book-free.openapps.xyz

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.
Owned app · rev f8f1b3a80195
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 7385a6c1c47153b1728160ff
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.
← All files
src/Home.tsx
// The landing page's live part: "Your pages" for returning owners.
import { useState } from "react";
import { navigate } from "./lib/router";
import { myPages } from "./lib/pages";

export function YourPages() {
  const [pages] = useState(myPages);
  const [all, setAll] = useState(false);
  if (!pages.length) return null;
  const shown = all ? pages : pages.slice(0, 4);
  return (
    <section className="your-pages" aria-label="Your pages">
      <h2 className="your-title">Your pages</h2>
      <ul className="your-list">
        {shown.map((p) => (
          <li key={p.handle}>
            <a href={`/e/${p.handle}`} onClick={(e) => { e.preventDefault(); navigate(`/e/${p.handle}`); }}>
              <strong>{p.title || p.handle}</strong>
              <span>/{p.handle}</span>
            </a>
          </li>
        ))}
      </ul>
      {pages.length > shown.length && <button className="link-btn" type="button" onClick={() => setAll(true)}>Show all {pages.length}</button>}
      <p className="hint">Listed on this device only.</p>
    </section>
  );
}

Change history

Add favicon.ico and link tag
f8f1b3a801 · 2 hours ago
Quality pass: guest reschedule, days off, calendar feed, API docs
c827e5d073 · 5 hours ago
Bounded source sync
68e67b4092 · 1 day ago
Bounded source sync
ab2e006f9b · 1 day ago
Bounded source sync
bb10824b54 · 1 day ago
Bounded source sync
d22f765fb7 · 1 day ago
Bounded source sync
30b4b06513 · 1 day ago
Bounded source sync
c3d297477a · 1 day ago
Bounded source sync
7b18317417 · 1 day ago