Source
This app’s code and revision history are public. Download a copy or explore the files below.
Public
The app’s code and revision history are public.
Run it yourself
Take the whole tree and run it on your own machine. The download needs no account. Cloning needs a sign-in.
Download .zip
bounded clone 23e397d8a5d5bf7756362640
A copy you download is not bounded. The guarantees this app runs under - declared egress, proven invariants, writes that fail closed - live in the runtime serving this page, not in the files. What you get is auditable source you can read and run, with no runtime guarantees attached.
src/icons.tsx
// Line icons drawn for Lift (no icon font, no emoji).
type P = { size?: number; className?: string };
const svg = (size: number, className: string | undefined, children: React.ReactNode, fill = false) => (
<svg width={size} height={size} viewBox="0 0 24 24" aria-hidden="true" className={className}
fill={fill ? "currentColor" : "none"} stroke={fill ? "none" : "currentColor"} strokeWidth="1.9" strokeLinecap="round" strokeLinejoin="round">
{children}
</svg>
);
export const Check = ({ size = 20, className }: P) => svg(size, className, <path d="m5 12.5 4.5 4.5L19 7.5" />);
export const Plus = ({ size = 20, className }: P) => svg(size, className, <path d="M12 5v14M5 12h14" />);
export const Minus = ({ size = 20, className }: P) => svg(size, className, <path d="M5 12h14" />);
export const Close = ({ size = 20, className }: P) => svg(size, className, <path d="M6 6l12 12M18 6 6 18" />);
export const Back = ({ size = 18, className }: P) => svg(size, className, <path d="M15 5l-7 7 7 7" />);
export const Next = ({ size = 18, className }: P) => svg(size, className, <path d="M9 5l7 7-7 7" />);
export const Up = ({ size = 18, className }: P) => svg(size, className, <path d="M6 15l6-6 6 6" />);
export const Down = ({ size = 18, className }: P) => svg(size, className, <path d="M6 9l6 6 6-6" />);
export const More = ({ size = 20, className }: P) => svg(size, className, <><circle cx="5.5" cy="12" r="1.3" /><circle cx="12" cy="12" r="1.3" /><circle cx="18.5" cy="12" r="1.3" /></>);
export const Dumbbell = ({ size = 22, className }: P) => svg(size, className, <path d="M3 10v4M6 7.5v9M18 7.5v9M21 10v4M6 12h12" />);
export const Clock = ({ size = 22, className }: P) => svg(size, className, <><circle cx="12" cy="12" r="8.5" /><path d="M12 7.5V12l3 2" /></>);
export const Book = ({ size = 22, className }: P) => svg(size, className, <><path d="M5 4.5h11.5a2 2 0 0 1 2 2V20H7a2 2 0 0 1-2-2z" /><path d="M5 18a2 2 0 0 1 2-2h11.5M9 8.5h6" /></>);
export const Person = ({ size = 22, className }: P) => svg(size, className, <><circle cx="12" cy="8.5" r="3.6" /><path d="M5 20c1-3.6 3.7-5.5 7-5.5s6 1.9 7 5.5" /></>);
export const Trophy = ({ size = 16, className }: P) => svg(size, className, <><path d="M8 4.5h8v5a4 4 0 0 1-8 0zM8 6.5H5a3 3 0 0 0 3 4M16 6.5h3a3 3 0 0 1-3 4M12 13.5V17M8.5 20h7M9.5 17h5" /></>);
export const Timer = ({ size = 18, className }: P) => svg(size, className, <><circle cx="12" cy="13.5" r="7" /><path d="M12 10v3.5M9.5 3h5M18.5 6.5l1.2-1.2" /></>);
export const Pencil = ({ size = 18, className }: P) => svg(size, className, <path d="M4 20h4L19 9l-4-4L4 16v4ZM13.5 6.5l4 4" />);
export const Share = ({ size = 18, className }: P) => svg(size, className, <path d="M12 3v12M7 8l5-5 5 5M5 13v6h14v-6" />);
export const Download = ({ size = 18, className }: P) => svg(size, className, <path d="M12 3v12M7 10l5 5 5-5M5 20h14" />);
export const Play = ({ size = 16, className }: P) => svg(size, className, <path d="M8 5.5v13l10.5-6.5z" />, true);
export const Search = ({ size = 18, className }: P) => svg(size, className, <><circle cx="11" cy="11" r="6.5" /><path d="m16 16 4 4" /></>);
export const Link = ({ size = 18, className }: P) => svg(size, className, <path d="M10 14a4 4 0 0 0 5.7 0l3-3a4 4 0 0 0-5.7-5.7l-1 1M14 10a4 4 0 0 0-5.7 0l-3 3a4 4 0 0 0 5.7 5.7l1-1" />);
Change history
Point OpenApps store links to openapps.free
Add favicon.ico, local share image and openapi.json for links and guides
Bind agent address in policy constants
Add OpenApp contribution strip and OpenApps source links
Bounded source sync
Bounded source sync
Bounded source sync