@vibes.diy/prompts 14.3.8 → 14.3.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/llms/backend.md CHANGED
@@ -675,10 +675,24 @@ upstream that can be down, input that can be malformed — catches it and answer
675
675
  `{ ok: false, reason }` with a status the app can show, and the platform's 500
676
676
  stays the signal for a bug to fix.
677
677
 
678
+ `/_api` opens to every caller once the app is published. Before its first
679
+ publish, and after the owner unpublishes it, the routes answer the app's own
680
+ people — its owner, its developers, and anyone it is shared with — and
681
+ everyone else gets `404 backend.js _api: not found` without the handler
682
+ running. The page reaches its own routes in every state through `apiFetch`
683
+ (below), which arrives as the signed-in visitor. `call_own_api`, `onChange`
684
+ and `scheduled` keep running, and a connected GitHub webhook runs until the
685
+ owner unpublishes.
686
+
678
687
  ### Who is calling: `ctx.userInfo` comes from the request, never a cookie
679
688
 
680
- Cookies are not read. `ctx.userInfo` is filled in two ways:
689
+ Cookies are not read. `ctx.userInfo` is filled in three ways:
681
690
 
691
+ - **The app's own page, through `apiFetch`** from `use-vibes`. The platform
692
+ makes the call for the signed-in visitor, so the handler runs as them:
693
+ `ctx.userInfo` is that visitor, their `ctx.db` writes pass `access.js` as
694
+ them, and `ctx.connections` spends their connection. A visitor who is not
695
+ signed in arrives as `ctx.userInfo === null`.
682
696
  - **A caller outside the app** — a script, another agent, a server — sends the
683
697
  person's vibes.diy token as `Authorization: Bearer <token>`. A missing,
684
698
  expired or unrecognised token is not an error: the handler runs with
@@ -686,13 +700,29 @@ Cookies are not read. `ctx.userInfo` is filled in two ways:
686
700
  - **The builder's own `call_own_api` check** (see the debugging skill) arrives
687
701
  already verified, as the app's owner, with no bearer header.
688
702
 
689
- A plain `fetch("/_api/...")` from `App.jsx` sends neither, so for that call the
690
- handler sees `ctx.userInfo === null`. That is exactly right for the routes the
691
- app calls for server work — reading a page, calling a service with a secret —
692
- which should not depend on who is asking. For anything that depends on the
693
- signed-in person (their own records, their permissions), build the screen on
694
- the database hooks, which already know who is signed in; a button that "tests
695
- the API" from inside the app is testing the anonymous path.
703
+ A plain `fetch("/_api/...")` from `App.jsx` carries no visitor, so the handler
704
+ sees `ctx.userInfo === null`. That suits routes that should not depend on who
705
+ is asking — reading a page, calling a service with a secret. **When a route
706
+ needs to know the visitor — their own records, their connection, their
707
+ permissions — the page calls it with `apiFetch`.** The path is the route under
708
+ `/_api`, and the answer reads like a `Response`:
709
+
710
+ ```jsx file=App.jsx partial
711
+ import { apiFetch } from "use-vibes";
712
+
713
+ const res = await apiFetch("/my-rsvp", {
714
+ method: "POST",
715
+ headers: { "content-type": "application/json" },
716
+ body: JSON.stringify({ going: true }),
717
+ });
718
+ const mine = res.ok ? await res.json() : null;
719
+ ```
720
+
721
+ A route's own error status resolves with `ok: false`; `apiFetch` rejects only
722
+ when the route could not be reached. Bodies are strings, and answers are for
723
+ JSON-sized results rather than exports. Screens that simply list the visitor's
724
+ own records still read best from the database hooks, which already know who is
725
+ signed in.
696
726
 
697
727
  Writes a handler makes with `ctx.db.put` still pass through `access.js` as the
698
728
  caller, so the app's rules hold for API writes too.
@@ -88,7 +88,7 @@ function TaskCard({ task, database, can, onCorrect, onSaved, disabled }) {
88
88
  }
89
89
 
90
90
  export default function App() {
91
- const { database, useLiveQuery } = useFireproof("tasks");
91
+ const { database, useLiveQuery, writeRejection, clearWriteRejection } = useFireproof("tasks");
92
92
  const { me, can, ready } = useVibe("tasks");
93
93
  const { docs } = useLiveQuery("type", { key: "task" });
94
94
  const [sentence, setSentence] = useState("");
@@ -170,6 +170,7 @@ export default function App() {
170
170
  </form>
171
171
  <p>{answer}</p>
172
172
  <p role="status">{message}</p>
173
+ {writeRejection && <p role="status">{writeRejection.message} <button type="button" onClick={clearWriteRejection}>Dismiss</button></p>}
173
174
  {lastWrite !== undefined && <button type="button" disabled={busy} onClick={undoLast}>Undo</button>}
174
175
  {pending !== undefined && !busy && <button type="button" onClick={() => { setPending(undefined); setSentence(""); setCurrent(undefined); }}>Discard unsaved tasks</button>}
175
176
  {docs.map((task) => <TaskCard key={task._id} task={task} database={database} can={can} disabled={busy || pending !== undefined} onSaved={(previous) => setLastWrite({ created: [], replaced: previous })} onCorrect={(doc) => { if (busy || pending !== undefined) return; setCurrent(doc); setSentence(""); }} />)}
package/llms/callai.md CHANGED
@@ -88,7 +88,7 @@ function TaskCard({ task, database, can, onCorrect, onSaved, disabled }) {
88
88
  }
89
89
 
90
90
  export default function App() {
91
- const { database, useLiveQuery } = useFireproof("tasks");
91
+ const { database, useLiveQuery, writeRejection, clearWriteRejection } = useFireproof("tasks");
92
92
  const { me, can, ready } = useVibe("tasks");
93
93
  const { docs } = useLiveQuery("type", { key: "task" });
94
94
  const [sentence, setSentence] = useState("");
@@ -170,6 +170,7 @@ export default function App() {
170
170
  </form>
171
171
  <p>{answer}</p>
172
172
  <p role="status">{message}</p>
173
+ {writeRejection && <p role="status">{writeRejection.message} <button type="button" onClick={clearWriteRejection}>Dismiss</button></p>}
173
174
  {lastWrite !== undefined && <button type="button" disabled={busy} onClick={undoLast}>Undo</button>}
174
175
  {pending !== undefined && !busy && <button type="button" onClick={() => { setPending(undefined); setSentence(""); setCurrent(undefined); }}>Discard unsaved tasks</button>}
175
176
  {docs.map((task) => <TaskCard key={task._id} task={task} database={database} can={can} disabled={busy || pending !== undefined} onSaved={(previous) => setLastWrite({ created: [], replaced: previous })} onCorrect={(doc) => { if (busy || pending !== undefined) return; setCurrent(doc); setSentence(""); }} />)}
@@ -27,7 +27,8 @@ a public profile) is an ordinary `ctx.fetch` and needs no connection.
27
27
 
28
28
  **Declare the provider in `config.connections`, render the Connect button from
29
29
  `useConnection`, and read the account through `@vibes.diy/social` or
30
- `ctx.connections` in `backend.js`.** All three, every time.
30
+ `ctx.connections` in `backend.js`.** All three, every time — and the page
31
+ reaches the third with `apiFetch` (section 4), so it runs as the visitor.
31
32
 
32
33
  ### 1. Declare it — `backend.js`
33
34
 
@@ -172,10 +173,63 @@ with the credential attached by the platform, and
172
173
  `await ctx.connections.status(provider)` returns
173
174
  `{ state, consented, expiresAt?, accountLabel? }` without spending a call.
174
175
 
175
- **Whose account?** In a `fetch` handler it is the signed-in visitor who called
176
- the route; in `scheduled` it is the app owner's. A `scheduled` tick can only
177
- ever read the owner's connection — an app that ranks _each visitor's_ posts
178
- does that work in `fetch`, when they are there.
176
+ **Whose account?** In a `fetch` handler it is the signed-in visitor the page
177
+ called the route for with `apiFetch` (section 4); in `scheduled` it is the app
178
+ owner's. A `scheduled` tick can only ever read the owner's connection — an app
179
+ that ranks _each visitor's_ posts does that work in `fetch`, when they are there.
180
+
181
+ ### 4. Call it from the page — `apiFetch`
182
+
183
+ **The page calls its connection-backed routes with `apiFetch` from `use-vibes`, so the
184
+ backend runs as the visitor who connected.** `apiFetch` asks the platform to make
185
+ the call for the signed-in visitor: the handler's `ctx.userInfo` is that
186
+ visitor, and `ctx.connections` and `@vibes.diy/social` spend _their_
187
+ connection. The path is the route under `/_api`, so `apiFetch("/top-posts")`
188
+ reaches the `/top-posts` branch above. Wait for the connection before calling,
189
+ so the first answer is the real one.
190
+
191
+ ```jsx file=App.jsx app=instagram-connection
192
+ import React, { useEffect, useState } from "react";
193
+ import { useConnection, apiFetch } from "use-vibes";
194
+
195
+ function TopPosts() {
196
+ const { state, consented } = useConnection("instagram");
197
+ const connected = consented && (state === "live" || state === "expiring");
198
+ const [posts, setPosts] = useState([]);
199
+ const [problem, setProblem] = useState(null);
200
+ useEffect(() => {
201
+ if (!connected) return;
202
+ apiFetch("/top-posts")
203
+ .then(async (res) => {
204
+ const data = await res.json();
205
+ if (res.ok) setPosts(data.posts);
206
+ else setProblem(`Instagram is ${data.connection ?? "not ready"} — try again in a moment.`);
207
+ })
208
+ .catch(() => setProblem("Could not reach the app just now."));
209
+ }, [connected]);
210
+ if (!connected) return null;
211
+ if (problem) return <p>{problem}</p>;
212
+ return (
213
+ <ol>
214
+ {posts.map((p) => (
215
+ <li key={p.id}>
216
+ <a href={p.permalink}>{p.caption}</a> — {p.likeCount ?? "hidden"} likes
217
+ </li>
218
+ ))}
219
+ </ol>
220
+ );
221
+ }
222
+ ```
223
+
224
+ `apiFetch(path, { method, headers, body })` answers like `fetch`: `status`,
225
+ `ok`, `headers`, `text()` and `json()`. The route's own status comes back as
226
+ an answer — a `409` with `{ connection: "needs_consent" }` resolves with
227
+ `ok: false` — and the promise rejects only when the route could not be reached.
228
+ Send JSON as `body: JSON.stringify(data)` with a `content-type:
229
+ application/json` header. A visitor who is not signed in still reaches the
230
+ route, with `ctx.userInfo` set to `null`. The platform keeps the visitor's
231
+ sign-in to itself: `apiFetch` carries who they are, and your code never handles
232
+ a token.
179
233
 
180
234
  ## Ticks that have nothing to do
181
235
 
@@ -21,7 +21,25 @@ Each document has an `_id`, which can be auto-generated or set explicitly. Auto-
21
21
 
22
22
  Use granular documents, e.g. one document per user action, so saving a form or clicking a button should typically create or update a single document, or just a few documents. Avoid patterns that require a single document to grow without bound.
23
23
 
24
- `useLiveQuery` populates and refreshes the UI reactively as data arrives, so you usually render empty states rather than loading spinners. Writes are optimistic and local: `put()`/`save()`/`del()` land in the local replica instantly, and transport or offline failures queue and retry automatically. If the server rejects a synced write, the local optimistic revision converges **server-wins** (it is overwritten by the server's version) — and the **platform** surfaces the reason in a write-fail toast only when it has one; a reason-less rejection converges silently. So do **not** wrap plain writes in `try/catch` to show denial errors to the user (a save carrying `_files` is the one exception, covered with the image uploader below); keep the UI reactive to the store (`useLiveQuery`/`useDocument`) so the converged state is the feedback, and gate write surfaces up front with `useVibe(dbName).can.create/edit/delete` so a disallowed action never renders in the first place.
24
+ `useLiveQuery` populates and refreshes the UI reactively as data arrives, so you usually render empty states rather than loading spinners. Writes are optimistic and local: `put()`/`save()`/`del()` land in the local replica instantly, and transport or offline failures queue and retry automatically. If the server rejects a synced write, the local optimistic revision converges **server-wins** (it is overwritten by the server's version) — and the **platform** surfaces the reason in a write-fail toast whenever it has one: the app's own `forbidden("…")` text, or the platform's message when a signed-in visitor has no write access to the app (both also reach the app as `writeRejection`, below); a reason-less rejection converges silently. So do **not** wrap plain writes in `try/catch` to show denial errors to the user (a save carrying `_files` is the one exception, covered with the image uploader below); keep the UI reactive to the store (`useLiveQuery`/`useDocument`) so the converged state is the feedback, and gate write surfaces up front with `useVibe(dbName).can.create/edit/delete` so a disallowed action never renders in the first place.
25
+
26
+ When the server later refuses a write the visitor can act on — a signed-in visitor saving to a private app, say — the platform shows a notice and `useFireproof` hands the app the same reason as `writeRejection` (`{ docId, message }`, or `null` until a save is refused). Render `writeRejection.message` beside the form it came from and call `clearWriteRejection()` when the visitor dismisses it:
27
+
28
+ ```jsx
29
+ function NoteForm({ text }) {
30
+ const { database, writeRejection, clearWriteRejection } = useFireproof("notes");
31
+ return (
32
+ <div>
33
+ <button onClick={() => database.put({ type: "note", text })}>Save</button>
34
+ {writeRejection && (
35
+ <p role="status">
36
+ {writeRejection.message} <button onClick={clearWriteRejection}>Dismiss</button>
37
+ </p>
38
+ )}
39
+ </div>
40
+ );
41
+ }
42
+ ```
25
43
 
26
44
  ### Basic Example
27
45
 
@@ -97,7 +115,7 @@ function TaskCard({ task, database, can, onCorrect, onSaved, disabled }) {
97
115
  }
98
116
 
99
117
  export default function App() {
100
- const { database, useLiveQuery } = useFireproof("tasks");
118
+ const { database, useLiveQuery, writeRejection, clearWriteRejection } = useFireproof("tasks");
101
119
  const { me, can, ready } = useVibe("tasks");
102
120
  const { docs } = useLiveQuery("type", { key: "task" });
103
121
  const [sentence, setSentence] = useState("");
@@ -179,6 +197,7 @@ export default function App() {
179
197
  </form>
180
198
  <p>{answer}</p>
181
199
  <p role="status">{message}</p>
200
+ {writeRejection && <p role="status">{writeRejection.message} <button type="button" onClick={clearWriteRejection}>Dismiss</button></p>}
182
201
  {lastWrite !== undefined && <button type="button" disabled={busy} onClick={undoLast}>Undo</button>}
183
202
  {pending !== undefined && !busy && <button type="button" onClick={() => { setPending(undefined); setSentence(""); setCurrent(undefined); }}>Discard unsaved tasks</button>}
184
203
  {docs.map((task) => <TaskCard key={task._id} task={task} database={database} can={can} disabled={busy || pending !== undefined} onSaved={(previous) => setLastWrite({ created: [], replaced: previous })} onCorrect={(doc) => { if (busy || pending !== undefined) return; setCurrent(doc); setSentence(""); }} />)}
package/llms/fireproof.md CHANGED
@@ -5,7 +5,7 @@ Fireproof is a document database with live sync, designed to make browser apps e
5
5
  ## Key Features
6
6
 
7
7
  - **Apps run anywhere:** Bundle UI, data, and logic together.
8
- - **Real-Time, local-first:** Writes land in the local replica instantly and sync in the background; the server validates each on ingest and streams the accepted ones live to every viewer. `useLiveQuery` keeps the UI in sync as data arrives, so you render empty states rather than loading spinners — but a synced write can still be rejected on ingest (access denied, conflicts): the local optimistic revision converges **server-wins** — and the platform surfaces the reason **only when the app's access rules provide one**; a reason-less rejection converges silently. Keep the UI reactive to the store rather than depending on a toast; don't assume every write lands, but don't hand-roll denial errors either.
8
+ - **Real-Time, local-first:** Writes land in the local replica instantly and sync in the background; the server validates each on ingest and streams the accepted ones live to every viewer. `useLiveQuery` keeps the UI in sync as data arrives, so you render empty states rather than loading spinners — but a synced write can still be rejected on ingest (access denied, conflicts): the local optimistic revision converges **server-wins** — and the platform surfaces the reason whenever there is one (an access-rule `forbidden("…")`, or no write access for a signed-in visitor); a reason-less rejection converges silently. Keep the UI reactive to the store rather than depending on a toast; don't assume every write lands, but don't hand-roll denial errors either.
9
9
  - **Unified API:** TypeScript works with Deno, Bun, Node.js, and the browser.
10
10
  - **React Hooks:** Leverage `useLiveQuery` and `useDocument` for live collaboration. Note: these are NOT top-level exports — they are returned by the `useFireproof()` hook. Always destructure from `const { useLiveQuery, useDocument, database } = useFireproof("dbName")`. A child component that was handed `database` may call `useFireproof(database)` instead of repeating the name; it is the same database.
11
11
 
@@ -21,7 +21,25 @@ Each document has an `_id`, which can be auto-generated or set explicitly. Auto-
21
21
 
22
22
  Use granular documents, e.g. one document per user action, so saving a form or clicking a button should typically create or update a single document, or just a few documents. Avoid patterns that require a single document to grow without bound.
23
23
 
24
- `useLiveQuery` populates and refreshes the UI reactively as data arrives, so you usually render empty states rather than loading spinners. Writes are optimistic and local: `put()`/`save()`/`del()` land in the local replica instantly, and transport or offline failures queue and retry automatically. If the server's access rules reject a synced write, the local optimistic revision converges **server-wins** (it is overwritten by the server's version) — and the **platform** surfaces the reason in a write-fail toast **only when the app's access rules provide one** (`forbidden("…")`); a reason-less rejection converges silently. So do **not** wrap plain writes in `try/catch` to show denial errors to the user (a save carrying `_files` is the one exception, covered with the image uploader below); keep the UI reactive to the store (`useLiveQuery`/`useDocument`) so the converged state is the feedback, and gate write surfaces up front with `useVibe(dbName).can.create/edit/delete` so a disallowed action never renders in the first place.
24
+ `useLiveQuery` populates and refreshes the UI reactively as data arrives, so you usually render empty states rather than loading spinners. Writes are optimistic and local: `put()`/`save()`/`del()` land in the local replica instantly, and transport or offline failures queue and retry automatically. If the server's access rules reject a synced write, the local optimistic revision converges **server-wins** (it is overwritten by the server's version) — and the **platform** surfaces the reason in a write-fail toast whenever there is one: the app's own `forbidden("…")` text, or the platform's message when a signed-in visitor has no write access to the app (both also reach the app as `writeRejection`, below); a reason-less rejection converges silently. So do **not** wrap plain writes in `try/catch` to show denial errors to the user (a save carrying `_files` is the one exception, covered with the image uploader below); keep the UI reactive to the store (`useLiveQuery`/`useDocument`) so the converged state is the feedback, and gate write surfaces up front with `useVibe(dbName).can.create/edit/delete` so a disallowed action never renders in the first place.
25
+
26
+ When the server later refuses a write the visitor can act on — a signed-in visitor saving to a private app, say — the platform shows a notice and `useFireproof` hands the app the same reason as `writeRejection` (`{ docId, message }`, or `null` until a save is refused). Render `writeRejection.message` beside the form it came from and call `clearWriteRejection()` when the visitor dismisses it:
27
+
28
+ ```jsx
29
+ function NoteForm({ text }) {
30
+ const { database, writeRejection, clearWriteRejection } = useFireproof("notes");
31
+ return (
32
+ <div>
33
+ <button onClick={() => database.put({ type: "note", text })}>Save</button>
34
+ {writeRejection && (
35
+ <p role="status">
36
+ {writeRejection.message} <button onClick={clearWriteRejection}>Dismiss</button>
37
+ </p>
38
+ )}
39
+ </div>
40
+ );
41
+ }
42
+ ```
25
43
 
26
44
  ### Basic Example
27
45
 
@@ -97,7 +115,7 @@ function TaskCard({ task, database, can, onCorrect, onSaved, disabled }) {
97
115
  }
98
116
 
99
117
  export default function App() {
100
- const { database, useLiveQuery } = useFireproof("tasks");
118
+ const { database, useLiveQuery, writeRejection, clearWriteRejection } = useFireproof("tasks");
101
119
  const { me, can, ready } = useVibe("tasks");
102
120
  const { docs } = useLiveQuery("type", { key: "task" });
103
121
  const [sentence, setSentence] = useState("");
@@ -179,6 +197,7 @@ export default function App() {
179
197
  </form>
180
198
  <p>{answer}</p>
181
199
  <p role="status">{message}</p>
200
+ {writeRejection && <p role="status">{writeRejection.message} <button type="button" onClick={clearWriteRejection}>Dismiss</button></p>}
182
201
  {lastWrite !== undefined && <button type="button" disabled={busy} onClick={undoLast}>Undo</button>}
183
202
  {pending !== undefined && !busy && <button type="button" onClick={() => { setPending(undefined); setSentence(""); setCurrent(undefined); }}>Discard unsaved tasks</button>}
184
203
  {docs.map((task) => <TaskCard key={task._id} task={task} database={database} can={can} disabled={busy || pending !== undefined} onSaved={(previous) => setLastWrite({ created: [], replaced: previous })} onCorrect={(doc) => { if (busy || pending !== undefined) return; setCurrent(doc); setSentence(""); }} />)}
@@ -506,7 +525,7 @@ App.jsx
506
525
 
507
526
  ## Offline writes are on by default (`offlineQueue`)
508
527
 
509
- For signed-in users, writes are **local-first by default**: a `put`/`del` that fails on the network is durably queued on the device (it resolves, stays visible, and syncs to the cloud when you're back online) instead of rolling back. You don't opt in — every signed-in vibe gets this. An access-denied/validation rejection is **not** queued: it converges **server-wins** (the local optimistic revision is overwritten by the server's version); the platform surfaces the reason only when the app's access rules provide one, and a reason-less rejection converges silently — so keep the UI reactive to the store rather than depending on a toast. Only transport failures queue and retry.
528
+ For signed-in users, writes are **local-first by default**: a `put`/`del` that fails on the network is durably queued on the device (it resolves, stays visible, and syncs to the cloud when you're back online) instead of rolling back. You don't opt in — every signed-in vibe gets this. An access-denied/validation rejection is **not** queued: it converges **server-wins** (the local optimistic revision is overwritten by the server's version); the platform surfaces the reason whenever there is one, and a reason-less rejection converges silently — so keep the UI reactive to the store rather than depending on a toast. Only transport failures queue and retry.
510
529
 
511
530
  Pass `{ offlineQueue: false }` for **server-first, fail-fast** writes: a `put` resolves only when the server accepts it, and a network failure rejects immediately with nothing queued. Choose this for **collaborative multi-writer apps** where two people may edit the same doc — sync is blind last-arrival-wins (Firefly has no `_rev`), so a stale write replayed on reconnect can silently overwrite a newer one. When a lost write is safer than a surprise overwrite, opt out.
512
531
 
@@ -532,7 +551,7 @@ The old `{ anonymousLocal: true }` option (and its `migrate` hook) is **deprecat
532
551
 
533
552
  ## Architecture: Where's My Data?
534
553
 
535
- Data lives in a local replica (IndexedDB) that the app reads and writes instantly; that replica syncs to the Firefly server in the background. The server is the authority on acceptance — each synced write is validated by the app's access rules on ingest, persisted, and then synced to all users who have read access. A write that fails validation or hits a conflict is rejected on ingest: the local optimistic revision converges **server-wins**, and the platform surfaces the reason **only when the app's access rules provide one** — a reason-less rejection converges silently, so keep the UI reactive to the store rather than depending on a toast. Don't assume the write always lands, but don't hand-roll your own denial error UI — let it converge.
554
+ Data lives in a local replica (IndexedDB) that the app reads and writes instantly; that replica syncs to the Firefly server in the background. The server is the authority on acceptance — each synced write is validated by the app's access rules on ingest, persisted, and then synced to all users who have read access. A write that fails validation or hits a conflict is rejected on ingest: the local optimistic revision converges **server-wins**, and the platform surfaces the reason whenever there is one — a reason-less rejection converges silently, so keep the UI reactive to the store rather than depending on a toast. Don't assume the write always lands, but don't hand-roll your own denial error UI — let it converge.
536
555
 
537
556
  ## Using Fireproof in JavaScript
538
557
 
package/llms/three-js.md CHANGED
@@ -2011,7 +2011,7 @@ export default function HalftoneArtStudio() {
2011
2011
  <CardHeader>
2012
2012
  <CardTitle>RGB Halftone Studio</CardTitle>
2013
2013
  </CardHeader>
2014
- <CardContent className="space-y-4">
2014
+ <CardContent>
2015
2015
  <Button className="w-full" onClick={generateRandomScene} disabled={isGenerating}>
2016
2016
  {isGenerating ? "Generating…" : "🎲 Random Art"}
2017
2017
  </Button>
@@ -2090,14 +2090,14 @@ export default function HalftoneArtStudio() {
2090
2090
  </Select>
2091
2091
  </div>
2092
2092
 
2093
- <Label className="flex items-center gap-2">
2094
- <input type="checkbox" checked={parameters.greyscale} onChange={(e) => setParameters((prev) => ({ ...prev, greyscale: e.target.checked }))} />
2095
- Greyscale
2096
- </Label>
2097
- <Label className="flex items-center gap-2">
2098
- <input type="checkbox" checked={parameters.disable} onChange={(e) => setParameters((prev) => ({ ...prev, disable: e.target.checked }))} />
2099
- Disable Effect
2100
- </Label>
2093
+ <div className="flex items-center gap-2">
2094
+ <input id="greyscale" type="checkbox" checked={parameters.greyscale} onChange={(e) => setParameters((prev) => ({ ...prev, greyscale: e.target.checked }))} />
2095
+ <Label htmlFor="greyscale">Greyscale</Label>
2096
+ </div>
2097
+ <div className="flex items-center gap-2">
2098
+ <input id="disable" type="checkbox" checked={parameters.disable} onChange={(e) => setParameters((prev) => ({ ...prev, disable: e.target.checked }))} />
2099
+ <Label htmlFor="disable">Disable Effect</Label>
2100
+ </div>
2101
2101
 
2102
2102
  <div className="space-y-2">
2103
2103
  <Label htmlFor="preset-name">Preset name</Label>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibes.diy/prompts",
3
- "version": "14.3.8",
3
+ "version": "14.3.10",
4
4
  "type": "module",
5
5
  "main": "./index.js",
6
6
  "exports": {
@@ -37,9 +37,9 @@
37
37
  "license": "Apache-2.0",
38
38
  "dependencies": {
39
39
  "@adviser/cement": "~0.5.34",
40
- "@vibes.diy/call-ai-v2": "14.3.8",
41
- "@vibes.diy/identity": "14.3.8",
42
- "@vibes.diy/use-vibes-types": "14.3.8",
40
+ "@vibes.diy/call-ai-v2": "14.3.10",
41
+ "@vibes.diy/identity": "14.3.10",
42
+ "@vibes.diy/use-vibes-types": "14.3.10",
43
43
  "arktype": "~2.2.3",
44
44
  "json-schema-faker": "~0.6.3"
45
45
  },
@@ -17,11 +17,11 @@ You are an AI assistant tasked with creating React components. You should create
17
17
  - Don't use any TypeScript, just use JavaScript
18
18
  - Use Tailwind CSS for mobile-first accessible styling. Every class is a plain utility the theme already backs — `bg-background`, `text-foreground`, `bg-card`, `rounded-lg`, `shadow-md`, `p-6`. Never an arbitrary value: no `bg-[var(--surface)]`, no `rounded-[12px]`, no `min-h-[44px]`, no literal hex, and no literal palette color such as `bg-white` or `text-gray-700`. Every canonical token has a utility name, so there is nothing the bracket form can reach that a utility cannot — including the structural ones: `border` is the theme's border width, `p-*`/`gap-*` its spacing step, `tracking-tight`/`tracking-wide` its two letter-spacings, `font-bold` its emphasis weight, `font-mono` its mono face. ONE exception, and only this one: a modal scrim is a plain black alpha (`bg-black/60`), because a scrim is deliberately not a themed surface — see the overlay rule below.
19
19
  - The platform injects the theme's design tokens at runtime — never restate a `:root` design-token block, just build on the utilities it backs. EXCEPTION: only when the user explicitly asks for a custom look (a bespoke palette of their own) do you define your own `:root` block, using the same canonical token names the utilities below resolve to — your block then wins the cascade.
20
- - The utility vocabulary is identical across every theme, so this list IS the contract. Page: `bg-background` with `text-foreground`. Raised surfaces: `bg-card` with `text-card-foreground`. Anything floating: `bg-popover` with `text-popover-foreground`. Genuine metadata — a timestamp, a count, a helper line — is `text-muted-foreground`, and `bg-muted` is the quiet fill beneath it. Every fill carries its own ink: `bg-primary text-primary-foreground`, `bg-secondary text-secondary-foreground`, `bg-accent text-accent-foreground`, and `bg-destructive` for a destructive action. Edges and focus: `border-border` between two surfaces that would otherwise blur together, `border-input` on a field, `ring-ring` on focus. Shape and face: `rounded-sm` / `rounded-md` / `rounded-lg`, `shadow-sm` / `shadow-md` / `shadow-lg`, and `font-sans` written ONCE on the app's root element so every child inherits it. Each of those utilities resolves to this theme's own token at paint time, so you never spell a token yourself.
21
- - **Anything that floats above a scrim uses `bg-popover text-popover-foreground`, never `bg-card`** — modals, dialogs, dropdowns, popovers, menus, toasts, command palettes. A card surface is often deliberately translucent (a card is meant to let the page show through), so a panel painted with it over a `bg-black/60` backdrop renders as almost nothing and its text is unreadable in dark mode. The popover pair is the same color pre-composited to opaque for exactly this. Reach for the component package's floating components rather than building a panel out of a `div`, and where you do paint one yourself, paint it `bg-popover text-popover-foreground`; the scrim behind it stays a plain black alpha.
20
+ - The utility vocabulary is identical across every theme, so this list IS the contract. Page: `bg-background` with `text-foreground`. Raised surfaces: `bg-card` with `text-card-foreground`. Anything floating: `bg-popover` with `text-popover-foreground`. Genuine metadata — a timestamp, a count, a helper line — is `text-muted-foreground`, and `bg-muted` is the quiet fill beneath it. Every fill carries its own ink: `bg-primary text-primary-foreground`, `bg-secondary text-secondary-foreground`, `bg-accent text-accent-foreground`, and `bg-destructive` for a destructive action. Edges and focus: `border-border` between two surfaces that would otherwise blur together, and `border-input` with `ring-ring` on a plain control you draw yourself, such as a checkbox or a range — the package's `Input`, `Textarea` and `Button` already carry their own edge and focus ring. Shape and face: `rounded-sm` / `rounded-md` / `rounded-lg`, `shadow-sm` / `shadow-md` / `shadow-lg`, and `font-sans` written ONCE on the app's root element so every child inherits it. Each of those utilities resolves to this theme's own token at paint time, so you never spell a token yourself.
21
+ - **Anything that floats above a scrim uses `bg-popover text-popover-foreground`, never `bg-card`** — modals, dialogs, dropdowns, popovers, menus, toasts, command palettes. A card surface is often deliberately translucent (a card is meant to let the page show through), so a panel painted with it over a `bg-black/60` backdrop renders as almost nothing and its text is unreadable in dark mode. The popover pair is the same color pre-composited to opaque for exactly this. Reach for the component package's floating components rather than building a panel out of a `div` — `DialogContent`, `SheetContent` and `PopoverContent` already wear the popover pair, so they go in bare — and where you do paint one yourself, paint it `bg-popover text-popover-foreground`; the scrim behind it stays a plain black alpha.
22
22
  - Define a classNames object for the PLAIN elements you write yourself (e.g. `const c = { page: 'min-h-screen bg-background text-foreground font-sans p-6', section: 'flex flex-col gap-6', meta: 'text-muted-foreground' }`) just before the JSX return, then use them like `className={c.page}`. Never put raw bracket colors directly in JSX — always go through the object, and put only the utilities above in it. It is a bag for the page, its sections and its prose, NOT a place to rebuild the app's chrome: a card, a button, a field, a badge and anything that floats come from the component package with their surface, ink, corner and shadow already on them, so a `c.card` or `c.action` entry is a hand-rolled copy of something you were given.
23
23
  - Give custom semantic CSS hooks app-specific names, such as `peal-ring` or `ringcol` for a bell-rope column. Tailwind scans the app source, so a hook named `ring` also receives the `ring` utility’s box-shadow ring. Keep intentional utilities such as `grid` for a grid layout; use prefixed or compound names for custom hooks.
24
- - Spend ONE `bg-primary` action per view and let it mark the thing that matters most; keep `bg-secondary` and `bg-accent` rare. Headings are short and bold (`text-2xl` or `text-3xl font-bold`), body copy stays at `text-base` or larger, spacing comes off the scale (`p-3`, `p-6`, `gap-4`, `gap-6`, `space-y-6`, `mt-8`), list rows stay separate raised objects (`rounded-md p-3 shadow-sm`) rather than a strip cut by dividers, and controls answer a press by sinking with `active:translate-y-px active:shadow-sm`.
24
+ - Spend ONE `bg-primary` action per view and let it mark the thing that matters most; keep `bg-secondary` and `bg-accent` rare. Headings are short and bold (`text-2xl` or `text-3xl font-bold` on a plain heading; a `CardTitle` already is), body copy stays at `text-base` or larger, spacing comes off the scale (`p-3`, `p-6`, `gap-4`, `gap-6`, `space-y-6`, `mt-8`), list rows stay separate raised objects (`rounded-md p-3 shadow-sm`) rather than a strip cut by dividers, and controls answer a press by sinking: a `Button` already does, and a plain pressable element you draw yourself (a tile, a list row) sinks with `active:translate-y-px active:shadow-sm`.
25
25
  - The sandbox serves raw ES modules, so local `.css` file imports are unsupported in multi-file apps. Keep styling in `App.jsx`: Tailwind utility classes and your `classNames` object carry all of it, so you never need inline `style={{ ... }}` or a `<style>` tag.
26
26
  - A theme or palette change restyles the app — it never rewrites it. When the request is to update/change the theme, edit ONLY styling (the classNames/`c` object, the `:root` token block *if the app has one*, colors, typography, spacing, borders) and leave the app's copy, wording, labels, headings, features, and behavior unchanged. Never put the theme's name (or any palette/design-system name) into the app's copy or UI.
27
27
  - For dynamic components, like autocomplete, don't use external libraries, implement your own
@@ -17,11 +17,11 @@ You are an AI assistant tasked with creating React components. You should create
17
17
  - Don't use any TypeScript, just use JavaScript
18
18
  - Use Tailwind CSS for mobile-first accessible styling. Every class is a plain utility the theme already backs — `bg-background`, `text-foreground`, `bg-card`, `rounded-lg`, `shadow-md`, `p-6`. Never an arbitrary value: no `bg-[var(--surface)]`, no `rounded-[12px]`, no `min-h-[44px]`, no literal hex, and no literal palette color such as `bg-white` or `text-gray-700`. Every canonical token has a utility name, so there is nothing the bracket form can reach that a utility cannot — including the structural ones: `border` is the theme's border width, `p-*`/`gap-*` its spacing step, `tracking-tight`/`tracking-wide` its two letter-spacings, `font-bold` its emphasis weight, `font-mono` its mono face. ONE exception, and only this one: a modal scrim is a plain black alpha (`bg-black/60`), because a scrim is deliberately not a themed surface — see the overlay rule below.
19
19
  - The platform injects the theme's design tokens at runtime — never restate a `:root` design-token block, just build on the utilities it backs. EXCEPTION: only when the user explicitly asks for a custom look (a bespoke palette of their own) do you define your own `:root` block, using the same canonical token names the utilities below resolve to — your block then wins the cascade.
20
- - The utility vocabulary is identical across every theme, so this list IS the contract. Page: `bg-background` with `text-foreground`. Raised surfaces: `bg-card` with `text-card-foreground`. Anything floating: `bg-popover` with `text-popover-foreground`. Genuine metadata — a timestamp, a count, a helper line — is `text-muted-foreground`, and `bg-muted` is the quiet fill beneath it. Every fill carries its own ink: `bg-primary text-primary-foreground`, `bg-secondary text-secondary-foreground`, `bg-accent text-accent-foreground`, and `bg-destructive` for a destructive action. Edges and focus: `border-border` between two surfaces that would otherwise blur together, `border-input` on a field, `ring-ring` on focus. Shape and face: `rounded-sm` / `rounded-md` / `rounded-lg`, `shadow-sm` / `shadow-md` / `shadow-lg`, and `font-sans` written ONCE on the app's root element so every child inherits it. Each of those utilities resolves to this theme's own token at paint time, so you never spell a token yourself.
21
- - **Anything that floats above a scrim uses `bg-popover text-popover-foreground`, never `bg-card`** — modals, dialogs, dropdowns, popovers, menus, toasts, command palettes. A card surface is often deliberately translucent (a card is meant to let the page show through), so a panel painted with it over a `bg-black/60` backdrop renders as almost nothing and its text is unreadable in dark mode. The popover pair is the same color pre-composited to opaque for exactly this. Reach for the component package's floating components rather than building a panel out of a `div`, and where you do paint one yourself, paint it `bg-popover text-popover-foreground`; the scrim behind it stays a plain black alpha.
20
+ - The utility vocabulary is identical across every theme, so this list IS the contract. Page: `bg-background` with `text-foreground`. Raised surfaces: `bg-card` with `text-card-foreground`. Anything floating: `bg-popover` with `text-popover-foreground`. Genuine metadata — a timestamp, a count, a helper line — is `text-muted-foreground`, and `bg-muted` is the quiet fill beneath it. Every fill carries its own ink: `bg-primary text-primary-foreground`, `bg-secondary text-secondary-foreground`, `bg-accent text-accent-foreground`, and `bg-destructive` for a destructive action. Edges and focus: `border-border` between two surfaces that would otherwise blur together, and `border-input` with `ring-ring` on a plain control you draw yourself, such as a checkbox or a range — the package's `Input`, `Textarea` and `Button` already carry their own edge and focus ring. Shape and face: `rounded-sm` / `rounded-md` / `rounded-lg`, `shadow-sm` / `shadow-md` / `shadow-lg`, and `font-sans` written ONCE on the app's root element so every child inherits it. Each of those utilities resolves to this theme's own token at paint time, so you never spell a token yourself.
21
+ - **Anything that floats above a scrim uses `bg-popover text-popover-foreground`, never `bg-card`** — modals, dialogs, dropdowns, popovers, menus, toasts, command palettes. A card surface is often deliberately translucent (a card is meant to let the page show through), so a panel painted with it over a `bg-black/60` backdrop renders as almost nothing and its text is unreadable in dark mode. The popover pair is the same color pre-composited to opaque for exactly this. Reach for the component package's floating components rather than building a panel out of a `div` — `DialogContent`, `SheetContent` and `PopoverContent` already wear the popover pair, so they go in bare — and where you do paint one yourself, paint it `bg-popover text-popover-foreground`; the scrim behind it stays a plain black alpha.
22
22
  - Define a classNames object for the PLAIN elements you write yourself (e.g. `const c = { page: 'min-h-screen bg-background text-foreground font-sans p-6', section: 'flex flex-col gap-6', meta: 'text-muted-foreground' }`) just before the JSX return, then use them like `className={c.page}`. Never put raw bracket colors directly in JSX — always go through the object, and put only the utilities above in it. It is a bag for the page, its sections and its prose, NOT a place to rebuild the app's chrome: a card, a button, a field, a badge and anything that floats come from the component package with their surface, ink, corner and shadow already on them, so a `c.card` or `c.action` entry is a hand-rolled copy of something you were given.
23
23
  - Give custom semantic CSS hooks app-specific names, such as `peal-ring` or `ringcol` for a bell-rope column. Tailwind scans the app source, so a hook named `ring` also receives the `ring` utility’s box-shadow ring. Keep intentional utilities such as `grid` for a grid layout; use prefixed or compound names for custom hooks.
24
- - Spend ONE `bg-primary` action per view and let it mark the thing that matters most; keep `bg-secondary` and `bg-accent` rare. Headings are short and bold (`text-2xl` or `text-3xl font-bold`), body copy stays at `text-base` or larger, spacing comes off the scale (`p-3`, `p-6`, `gap-4`, `gap-6`, `space-y-6`, `mt-8`), list rows stay separate raised objects (`rounded-md p-3 shadow-sm`) rather than a strip cut by dividers, and controls answer a press by sinking with `active:translate-y-px active:shadow-sm`.
24
+ - Spend ONE `bg-primary` action per view and let it mark the thing that matters most; keep `bg-secondary` and `bg-accent` rare. Headings are short and bold (`text-2xl` or `text-3xl font-bold` on a plain heading; a `CardTitle` already is), body copy stays at `text-base` or larger, spacing comes off the scale (`p-3`, `p-6`, `gap-4`, `gap-6`, `space-y-6`, `mt-8`), list rows stay separate raised objects (`rounded-md p-3 shadow-sm`) rather than a strip cut by dividers, and controls answer a press by sinking: a `Button` already does, and a plain pressable element you draw yourself (a tile, a list row) sinks with `active:translate-y-px active:shadow-sm`.
25
25
  - The sandbox serves raw ES modules, so local `.css` file imports are unsupported in multi-file apps. Keep styling in `App.jsx`: Tailwind utility classes and your `classNames` object carry all of it, so you never need inline `style={{ ... }}` or a `<style>` tag.
26
26
  - A theme or palette change restyles the app — it never rewrites it. When the request is to update/change the theme, edit ONLY styling (the classNames/`c` object, the `:root` token block *if the app has one*, colors, typography, spacing, borders) and leave the app's copy, wording, labels, headings, features, and behavior unchanged. Never put the theme's name (or any palette/design-system name) into the app's copy or UI.
27
27
  - For dynamic components, like autocomplete, don't use external libraries, implement your own
package/system-prompt.md CHANGED
@@ -17,11 +17,11 @@ You are an AI assistant tasked with creating React components. You should create
17
17
  - Don't use any TypeScript, just use JavaScript
18
18
  - Use Tailwind CSS for mobile-first accessible styling. Every class is a plain utility the theme already backs — `bg-background`, `text-foreground`, `bg-card`, `rounded-lg`, `shadow-md`, `p-6`. Never an arbitrary value: no `bg-[var(--surface)]`, no `rounded-[12px]`, no `min-h-[44px]`, no literal hex, and no literal palette color such as `bg-white` or `text-gray-700`. Every canonical token has a utility name, so there is nothing the bracket form can reach that a utility cannot — including the structural ones: `border` is the theme's border width, `p-*`/`gap-*` its spacing step, `tracking-tight`/`tracking-wide` its two letter-spacings, `font-bold` its emphasis weight, `font-mono` its mono face. ONE exception, and only this one: a modal scrim is a plain black alpha (`bg-black/60`), because a scrim is deliberately not a themed surface — see the overlay rule below.
19
19
  - The platform injects the theme's design tokens at runtime — never restate a `:root` design-token block, just build on the utilities it backs. EXCEPTION: only when the user explicitly asks for a custom look (a bespoke palette of their own) do you define your own `:root` block, using the same canonical token names the utilities below resolve to — your block then wins the cascade.
20
- - The utility vocabulary is identical across every theme, so this list IS the contract. Page: `bg-background` with `text-foreground`. Raised surfaces: `bg-card` with `text-card-foreground`. Anything floating: `bg-popover` with `text-popover-foreground`. Genuine metadata — a timestamp, a count, a helper line — is `text-muted-foreground`, and `bg-muted` is the quiet fill beneath it. Every fill carries its own ink: `bg-primary text-primary-foreground`, `bg-secondary text-secondary-foreground`, `bg-accent text-accent-foreground`, and `bg-destructive` for a destructive action. Edges and focus: `border-border` between two surfaces that would otherwise blur together, `border-input` on a field, `ring-ring` on focus. Shape and face: `rounded-sm` / `rounded-md` / `rounded-lg`, `shadow-sm` / `shadow-md` / `shadow-lg`, and `font-sans` written ONCE on the app's root element so every child inherits it. Each of those utilities resolves to this theme's own token at paint time, so you never spell a token yourself.
21
- - **Anything that floats above a scrim uses `bg-popover text-popover-foreground`, never `bg-card`** — modals, dialogs, dropdowns, popovers, menus, toasts, command palettes. A card surface is often deliberately translucent (a card is meant to let the page show through), so a panel painted with it over a `bg-black/60` backdrop renders as almost nothing and its text is unreadable in dark mode. The popover pair is the same color pre-composited to opaque for exactly this. Reach for the component package's floating components rather than building a panel out of a `div`, and where you do paint one yourself, paint it `bg-popover text-popover-foreground`; the scrim behind it stays a plain black alpha.
20
+ - The utility vocabulary is identical across every theme, so this list IS the contract. Page: `bg-background` with `text-foreground`. Raised surfaces: `bg-card` with `text-card-foreground`. Anything floating: `bg-popover` with `text-popover-foreground`. Genuine metadata — a timestamp, a count, a helper line — is `text-muted-foreground`, and `bg-muted` is the quiet fill beneath it. Every fill carries its own ink: `bg-primary text-primary-foreground`, `bg-secondary text-secondary-foreground`, `bg-accent text-accent-foreground`, and `bg-destructive` for a destructive action. Edges and focus: `border-border` between two surfaces that would otherwise blur together, and `border-input` with `ring-ring` on a plain control you draw yourself, such as a checkbox or a range — the package's `Input`, `Textarea` and `Button` already carry their own edge and focus ring. Shape and face: `rounded-sm` / `rounded-md` / `rounded-lg`, `shadow-sm` / `shadow-md` / `shadow-lg`, and `font-sans` written ONCE on the app's root element so every child inherits it. Each of those utilities resolves to this theme's own token at paint time, so you never spell a token yourself.
21
+ - **Anything that floats above a scrim uses `bg-popover text-popover-foreground`, never `bg-card`** — modals, dialogs, dropdowns, popovers, menus, toasts, command palettes. A card surface is often deliberately translucent (a card is meant to let the page show through), so a panel painted with it over a `bg-black/60` backdrop renders as almost nothing and its text is unreadable in dark mode. The popover pair is the same color pre-composited to opaque for exactly this. Reach for the component package's floating components rather than building a panel out of a `div` — `DialogContent`, `SheetContent` and `PopoverContent` already wear the popover pair, so they go in bare — and where you do paint one yourself, paint it `bg-popover text-popover-foreground`; the scrim behind it stays a plain black alpha.
22
22
  - Define a classNames object for the PLAIN elements you write yourself (e.g. `const c = { page: 'min-h-screen bg-background text-foreground font-sans p-6', section: 'flex flex-col gap-6', meta: 'text-muted-foreground' }`) just before the JSX return, then use them like `className={c.page}`. Never put raw bracket colors directly in JSX — always go through the object, and put only the utilities above in it. It is a bag for the page, its sections and its prose, NOT a place to rebuild the app's chrome: a card, a button, a field, a badge and anything that floats come from the component package with their surface, ink, corner and shadow already on them, so a `c.card` or `c.action` entry is a hand-rolled copy of something you were given.
23
23
  - Give custom semantic CSS hooks app-specific names, such as `peal-ring` or `ringcol` for a bell-rope column. Tailwind scans the app source, so a hook named `ring` also receives the `ring` utility’s box-shadow ring. Keep intentional utilities such as `grid` for a grid layout; use prefixed or compound names for custom hooks.
24
- - Spend ONE `bg-primary` action per view and let it mark the thing that matters most; keep `bg-secondary` and `bg-accent` rare. Headings are short and bold (`text-2xl` or `text-3xl font-bold`), body copy stays at `text-base` or larger, spacing comes off the scale (`p-3`, `p-6`, `gap-4`, `gap-6`, `space-y-6`, `mt-8`), list rows stay separate raised objects (`rounded-md p-3 shadow-sm`) rather than a strip cut by dividers, and controls answer a press by sinking with `active:translate-y-px active:shadow-sm`.
24
+ - Spend ONE `bg-primary` action per view and let it mark the thing that matters most; keep `bg-secondary` and `bg-accent` rare. Headings are short and bold (`text-2xl` or `text-3xl font-bold` on a plain heading; a `CardTitle` already is), body copy stays at `text-base` or larger, spacing comes off the scale (`p-3`, `p-6`, `gap-4`, `gap-6`, `space-y-6`, `mt-8`), list rows stay separate raised objects (`rounded-md p-3 shadow-sm`) rather than a strip cut by dividers, and controls answer a press by sinking: a `Button` already does, and a plain pressable element you draw yourself (a tile, a list row) sinks with `active:translate-y-px active:shadow-sm`.
25
25
  - The sandbox serves raw ES modules, so local `.css` file imports are unsupported in multi-file apps. Keep styling in `App.jsx`: Tailwind utility classes and your `classNames` object carry all of it, so you never need inline `style={{ ... }}` or a `<style>` tag.
26
26
  - A theme or palette change restyles the app — it never rewrites it. When the request is to update/change the theme, edit ONLY styling (the classNames/`c` object, the `:root` token block *if the app has one*, colors, typography, spacing, borders) and leave the app's copy, wording, labels, headings, features, and behavior unchanged. Never put the theme's name (or any palette/design-system name) into the app's copy or UI.
27
27
  - For dynamic components, like autocomplete, don't use external libraries, implement your own
@@ -300,7 +300,7 @@ Below is a tiny worked example showing the format end-to-end. Description → sc
300
300
  > <CardHeader>
301
301
  > <CardTitle>New Note</CardTitle>
302
302
  > </CardHeader>
303
- > <CardContent className="space-y-2">
303
+ > <CardContent>
304
304
  > <Input placeholder="Write a note in your own words" className="w-full" />
305
305
  > <Button>Save</Button>
306
306
  > </CardContent>
@@ -398,6 +398,12 @@ colour and type size (\`bg-*\`, \`text-*\`), border (\`border-*\`), radius
398
398
  \`outline\`) — or wrap it in a plain \`div\` that carries the
399
399
  styling.
400
400
 
401
+ Each component already owns its inside: \`CardContent\` and \`CardHeader\` own
402
+ their padding and the gap between their children, \`CardTitle\` and \`Label\` own
403
+ their type size and weight, a bare \`<Card>\` is already the raised surface, and
404
+ \`Input\` already has its border and focus ring — so \`className\` on a house
405
+ component is for layout only: its placement, its width, its grid cell.
406
+
401
407
  Write \`<Button size="lg" variant="secondary" className="w-full">Save</Button>\`,
402
408
  not \`<Button className="px-6 py-3 bg-accent text-lg">Save</Button>\`.`;
403
409
  return `<theme-tokens>
@@ -1 +1 @@
1
- {"version":3,"file":"colorsets.js","sourceRoot":"","sources":["../../jsr/themes/colorsets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"colorsets.js","sourceRoot":"","sources":["../../jsr/themes/colorsets.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAExG,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,YAAY;IACZ,SAAS;IACT,SAAS;IACT,WAAW;IACX,QAAQ;IACR,cAAc;IACd,gBAAgB;IAChB,eAAe;IACf,QAAQ;IACR,SAAS;IACT,SAAS;IACT,OAAO;IACP,SAAS;CACD,CAAC;AAIX,MAAM,aAAa,GAAwB,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAwBrE,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,aAAa;IACb,kBAAkB;IAClB,gBAAgB;IAChB,QAAQ;IACR,WAAW;IACX,WAAW;IACX,SAAS;IACT,cAAc;IACd,QAAQ;IACR,WAAW;IACX,WAAW;IACX,gBAAgB;IAChB,qBAAqB;IACrB,aAAa;IACb,gBAAgB;CACR,CAAC;AAIX,MAAM,cAAc,GAAwB,IAAI,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAY1E,MAAM,mBAAmB,GAAqC;IAC5D,aAAa,EAAE,0DAA0D;IACzE,kBAAkB,EAAE,kDAAkD;IACtE,gBAAgB,EAAE,MAAM;IACxB,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,MAAM;IACnB,OAAO,EAAE,MAAM;IACf,cAAc,EAAE,KAAK;IAErB,MAAM,EAAE,+DAA+D;IACvE,WAAW,EAAE,+BAA+B;IAC5C,WAAW,EAAE,oEAAoE;IAEjF,gBAAgB,EAAE,UAAU;IAC5B,qBAAqB,EAAE,SAAS;IAEhC,aAAa,EAAE,KAAK;IAIpB,gBAAgB,EAAE,MAAM;CACzB,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,UAAmC;IAClE,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;IACtC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACzD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAMD,MAAM,CAAC,MAAM,aAAa,GAAqC;IAE7D,EAAE,EAAE,YAAY;IAChB,SAAS,EAAE,YAAY;IACvB,kBAAkB,EAAE,YAAY;IAChC,SAAS,EAAE,YAAY;IAGvB,IAAI,EAAE,SAAS;IACf,SAAS,EAAE,SAAS;IACpB,iBAAiB,EAAE,SAAS;IAC5B,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,YAAY,EAAE,SAAS;IACvB,UAAU,EAAE,SAAS;IACrB,KAAK,EAAE,SAAS;IAChB,UAAU,EAAE,SAAS;IAGrB,aAAa,EAAE,SAAS;IAGxB,gBAAgB,EAAE,WAAW;IAC7B,uBAAuB,EAAE,WAAW;IAGpC,EAAE,EAAE,cAAc;IAClB,IAAI,EAAE,cAAc;IACpB,GAAG,EAAE,cAAc;IACnB,WAAW,EAAE,cAAc;IAG3B,KAAK,EAAE,gBAAgB;IACvB,UAAU,EAAE,gBAAgB;IAC5B,QAAQ,EAAE,gBAAgB;IAC1B,YAAY,EAAE,gBAAgB;IAC9B,YAAY,EAAE,gBAAgB;IAC9B,UAAU,EAAE,gBAAgB;IAC5B,qBAAqB,EAAE,gBAAgB;IAGvC,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,QAAQ;IACnB,aAAa,EAAE,QAAQ;IAGvB,cAAc,EAAE,SAAS;IACzB,MAAM,EAAE,OAAO;IACf,aAAa,EAAE,OAAO;CACvB,CAAC;AA0BF,MAAM,eAAe,GAAqC;IACxD,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,SAAS;IAClB,eAAe,EAAE,SAAS;CAC3B,CAAC;AAcF,MAAM,UAAU,eAAe,CAAC,MAA8B;IAC5D,MAAM,GAAG,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAE1B,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,MAAM;QAAE,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC;IACzD,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO;QAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IAKzD,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAChC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC;QAC1E,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC;IAC3B,CAAC;IAGD,IAAI,CAAC,GAAG,CAAC,SAAS;QAAE,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC;IAIzF,IAAI,CAAC,GAAG,CAAC,UAAU;QAAE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC;IAC/D,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;QAAE,GAAG,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;IAE1D,IAAI,CAAC,GAAG,CAAC,OAAO;QAAE,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC;IAC/C,IAAI,CAAC,GAAG,CAAC,MAAM;QAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,cAAc,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC;IAY7E,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC3B,GAAG,CAAC,gBAAgB,CAAC,GAAG,gEAAgE,CAAC;IAC3F,CAAC;IAKD,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACnD,GAAG,CAAC,eAAe,CAAC,GAAG,gEAAgE,CAAC;IAC1F,CAAC;IACD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAKD,MAAM,UAAU,cAAc,CAAC,GAA2B;IAIxD,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAClD,CAAC;IAID,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QACrC,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,KAAK,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACxD,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5B,CAAC;AASD,SAAS,eAAe,CAAC,GAA2B;IAIlD,MAAM,UAAU,GAA2B,EAAE,CAAC;IAC9C,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;IAE1D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACzC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnF,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvF,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,MAAM,wBAAwB,GAAG,MAAM,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzG,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,cAAc,EAAE,CAAC;IAE3D,MAAM,MAAM,GAAa,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;IACxD,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC;IAErE,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAAC;QAC7D,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;QAChC,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;IACzE,CAAC;IAED,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;QAC9C,MAAM,YAAY,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,wBAAwB,EAAE,CAAC;QACvE,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACrF,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,gBAAgB,GAAG,YAAY,CAAC;IACnF,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5D,MAAM,CAAC,gBAAgB,GAAG,wBAAwB,CAAC;IACrD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,MAAM,CAAC,GAAW,EAAE,GAAW;IACtC,OAAO,IAAI,MAAM,CAAC,IAAI,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,OAAO,CAAC,GAAW,EAAE,GAAW;IACvC,MAAM,GAAG,GAA2B,EAAE,CAAC;IAGvC,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,iCAAiC,EAAE,GAAG,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5B,IAAI,CAAC,KAAK;QAAE,OAAO,GAAG,CAAC;IACvB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAI1D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC1D,IAAI,MAAM,EAAE,CAAC;YACX,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3B,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;QACzE,IAAI,QAAQ;YAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAmBD,MAAM,UAAU,eAAe,CAAC,YAAoB,EAAE,QAAkB;IAGtE,MAAM,MAAM,GAAa;QACvB,GAAG,QAAQ;QACX,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC;QACxC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;QAClF,UAAU,EAAE,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC;KAClD,CAAC;IAOF,MAAM,QAAQ,GAAG,wBAAwB,CAAC,YAAY,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,2BAA2B,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAKzD,OAAO,WAAW,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;AAC1D,CAAC;AAMD,SAAS,wBAAwB,CAAC,EAAU;IAC1C,OAAO,EAAE,CAAC,OAAO,CAAC,yCAAyC,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAChG,CAAC;AAqCD,MAAM,eAAe,GAAqC;IACxD,OAAO,EAAE,eAAe;IACxB,MAAM,EAAE,cAAc;IACtB,WAAW,EAAE,iBAAiB;IAC9B,WAAW,EAAE,iBAAiB;CAC/B,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,eAAe,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;AACzC,CAAC;AAiED,MAAM,SAAS,GAAG,4DAA4D,CAAC;AAQ/E,MAAM,UAAU,SAAS,CAAC,SAAuD;IAC/E,MAAM,QAAQ,GAAG,SAAS,EAAE,OAAO,CAAC;IACpC,OAAO,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC;AAClF,CAAC;AAuCD,MAAM,mBAAmB,GAA6B;IACpD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE;IACjE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,qBAAqB,EAAE;IACvF,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE;IACxD,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE;IACtF,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,wCAAwC,EAAE;IACnF,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,qBAAqB,EAAE;IAC5F,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE;IAC3D,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE;IAC1F,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE;IAC/D,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,qBAAqB,EAAE;IAChG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE;IAC5D,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,uBAAuB,EAAE;IAC1F,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE;IACzD,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,kBAAkB,EAAE;IACvF,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE;IAC7D,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,iBAAiB,EAAE;IAChG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE;IACzD,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE;IACxD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE;CACzD,CAAC;AAUF,MAAM,qBAAqB,GAAwB,IAAI,GAAG,CAAC;IACzD,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAClF,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACtH,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CACrB;CACF,CAAC,CAAC;AAwBH,MAAM,kBAAkB,GAAuD;IAC7E,eAAe,EAAE,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;CACrH,CAAC;AAmBF,MAAM,SAAS,GAA6B,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAC/G,CAAC,KAAK,EAA4B,EAAE,CAClC,kBAAkB,CAAC,KAAK,CAAC,IAAI;IAC3B,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,KAAK,GAAG,EAAE;IACxD,EAAE,IAAI,EAAE,GAAG,KAAK,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,KAAK,GAAG,EAAE;CACzF,CACJ,CAAC;AA2BF,MAAM,CAAC,MAAM,YAAY,GAA6B,CAAC,GAAG,mBAAmB,EAAE,GAAG,SAAS,CAAC,CAAC;AAM7F,MAAM,CAAC,MAAM,cAAc,GAA2C,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAC9H,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAU,CACnC,CAAC;AAaF,MAAM,CAAC,MAAM,SAAS,GAAsB;IAC1C,GAAG,IAAI,GAAG,CACR,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC;SACzC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAC5D,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAC/C;CACF,CAAC;AAcF,MAAM,UAAU,UAAU,CACxB,MAAwC,EACxC,OAAO,GAAqC,EAAE;IAE9C,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,IAAI,EAAE,CAAC;QAC1B,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,SAAS;YAAE,SAAS;QAC1C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;YAAE,SAAS;QAC9C,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,MAAM,IAAI,iBAAiB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACtE,IAAI,GAAG,KAAK,SAAS;YAAE,SAAS;QAChC,GAAG,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,QAAkB,EAClB,OAAO,GAA8F,EAAE;IAEvG,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,KAAK,KAAK,CAAC;IACtD,MAAM,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,KAAK,KAAK,CAAC;IAOpE,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,KAAK,KAAK,CAAC;IAChE,MAAM,WAAW,GAAG,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1F,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAEzD,MAAM,OAAO,GAAG,CAAC,MAA8B,EAAE,EAAE,CACjD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SACnB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;SAC9C,IAAI,CAAC,IAAI,CAAC,CAAC;IAKhB,MAAM,QAAQ,GAAG;QACf,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,GAAG,WAAW;QACd,GAAG,UAAU;QACb,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5D,CAAC;IACF,MAAM,OAAO,GACX,UAAU,IAAI,CAAC,aAAa,IAAI,QAAQ,CAAC,UAAU,CAAC;QAClD,CAAC,CAAC;YACE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;SACtB;QACH,CAAC,CAAC,SAAS,CAAC;IAOhB,MAAM,SAAS,GAAG,oBAAoB,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,MAAM,QAAQ,GAAG,oBAAoB,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAOjG,IAAI,oBAAoB;QAAE,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/E,IAAI,oBAAoB,IAAI,UAAU;QAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAEhG,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAMnE,MAAM,UAAU,GAAG,CAAC,UAA8B,EAAU,EAAE;QAC5D,IAAI,CAAC,kBAAkB;YAAE,OAAO,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;QAC1C,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,MAAM,KAAK,CAAC;IACpE,CAAC,CAAC;IACF,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE1F,MAAM,SAAS,GAAG,QAAQ;QACxB,CAAC,CAAC,uDAAuD,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU;QAChJ,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAKpF,MAAM,UAAU,GAAG,oBAAoB,CAAC,CAAC,CAAC,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEjI,OAAO,YAAY,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,UAAU,MAAM,SAAS,EAAE,CAAC;AAC9F,CAAC;AAaD,MAAM,UAAU,8BAA8B;IAY5C,MAAM,YAAY,GAAG;QACnB,iEAAiE;QACjE,qBAAqB;QACrB,mCAAmC;QACnC,kEAAkE;QAClE,oCAAoC;KACrC;SACE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC;SAC1B,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uEA0C6C,CAAC;IAEtE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;EAyBP,YAAY;QACN,eAAe;;;;;;;;;gBASP,CAAC;AACjB,CAAC;AAKD,SAAS,0BAA0B,CAAC,QAAkB;IAWpD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC;IAChI,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,KAAK,SAAS,CAAC;IAKlD,MAAM,SAAS,GAAG;QAChB,qEAAqE;QACrE,kEAAkE;QAClE,iEAAiE;QACjE,2EAA2E;QAC3E,uHAAuH;QACvH,yEAAyE;QACzE,kCAAkC;QAClC,mFAAmF;KACpF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,QAAQ,GAAG,OAAO;QACtB,CAAC,CAAC,qEAAqE;QACvE,CAAC,CAAC,8EAA8E,CAAC;IAEnF,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqDP,QAAQ;;;;EAIR,QAAQ;;;;;;;;;EASR,SAAS;;;;;CAKV,CAAC;AACF,CAAC;AAED,SAAS,2BAA2B,CAAC,EAAU,EAAE,QAAkB;IACjE,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAClD,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAI5B,MAAM,QAAQ,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,YAAY,CAAC,CAAC,MAAM,CACxG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,EAClC,QAAQ,CACT,CAAC;IAEF,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACzD,IAAI,QAAQ,CAAC,UAAU;QAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IAC1F,IAAI,QAAQ,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/D,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,QAAQ,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IACnE,CAAC;IAGD,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACnF,IAAI,QAAQ,CAAC,gBAAgB,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnF,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAInC,IAAI,MAAc,CAAC;IACnB,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC9C,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/D,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5E,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;IACjC,CAAC;IAED,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC/D,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,MAAM,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,UAAU,CAAC,EAAU,EAAE,GAAW;IACzC,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,8BAA8B,EAAE,GAAG,CAAC,CAAC;IAClE,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAW,EAAE,MAA8B;IACnE,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC1B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACjC,CAAC;AAUD,SAAS,gBAAgB,CAAC,EAAU,EAAE,QAAkB;IACtD,MAAM,MAAM,GAA2B;QACrC,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;QAC1B,GAAG,QAAQ,CAAC,MAAM;QAClB,GAAG,CAAC,QAAQ,CAAC,gBAAgB,IAAI,EAAE,CAAC;QACpC,GAAG,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC;KAC/B,CAAC;IACF,OAAO,EAAE,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACpD,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3E,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -10,7 +10,7 @@ Put `font-sans` once on the app's root element and never name a face again — e
10
10
 
11
11
  ## Surfaces and tone
12
12
 
13
- A cushion is three things at once: an inner highlight along its top edge, an inner shadow along its floor, and a soft cast beneath it onto the page. `shadow-md` already carries that whole recipe — put it on every raised surface and let it do the work. `shadow-lg` is for the one object that must float above everything else, `shadow-sm` for chips and rows. Cards are `bg-card` and stay untinted. The pastel roles are FILLS, not text colours: a filled control, a badge, a selected tab, a progress bar. Whatever the fill, its label is ink: every `bg-*` in this theme has a matching `text-*-foreground`, states included, because a pale foreground on a pastel fill is the fastest way to fail contrast in this palette. Spend one accent per view: let `bg-primary` mark the action that matters and keep `bg-secondary` and `bg-accent` rare. Controls are chunky and answer a press by sinking — `active:translate-y-px active:shadow-sm` — fast enough to feel like a key bottoming out rather than a fade.
13
+ A cushion is three things at once: an inner highlight along its top edge, an inner shadow along its floor, and a soft cast beneath it onto the page. `shadow-md` carries that whole recipe, and a `Card` already wears it. `shadow-lg` is for the one object that must float above everything else, `shadow-sm` for chips and rows. Cards stay untinted. The pastel roles are FILLS, not text colours: a filled control, a badge, a selected tab, a progress bar. Whatever the fill, its label is ink: every `bg-*` in this theme has a matching `text-*-foreground`, states included, because a pale foreground on a pastel fill is the fastest way to fail contrast in this palette. Spend one accent per view: let `bg-primary` mark the action that matters and keep `bg-secondary` and `bg-accent` rare. Controls are chunky and answer a press by sinking, fast enough to feel like a key bottoming out rather than a fade.
14
14
 
15
15
  ## Components
16
16
 
@@ -22,11 +22,11 @@ A look component never takes a `c.*` entry and never a styling utility: its `cla
22
22
 
23
23
  ## DO
24
24
 
25
- - Float every card on `bg-card text-card-foreground` and let the `bg-background` page carry the colour underneath it.
26
- - Give each raised object `shadow-md` and `rounded-lg` so it reads as a cushion and not a panel.
25
+ - Float every card as a bare `<Card>` — already the `bg-card text-card-foreground` surface — over the `bg-background` page.
26
+ - Raise every object as a cushion, not a panel: a `Card` already wears `shadow-md rounded-lg`; give a plain raised `div` the same pair.
27
27
  - Pair every pastel fill with its ink — `bg-primary text-primary-foreground`, and the same shape for `secondary`, `accent`, `destructive`, `success`, `warning` and `neutral`; a switched-off word is `text-disabled-foreground`.
28
28
  - Spend one accent per view and let `bg-primary` mark the single action that matters most.
29
- - Make controls chunky and let them sink on press with `active:translate-y-px active:shadow-sm`.
29
+ - Make controls chunky: `Button` already sinks on press; a plain pressable `div` sinks with `active:translate-y-px active:shadow-sm`.
30
30
  - Keep metadata in `text-muted-foreground` and leave every other word in `text-foreground` or `text-card-foreground`.
31
31
  - Scale list rows down with `rounded-md`, `p-3` and `shadow-sm` while keeping them raised, separate objects.
32
32
  - Set `font-sans` once on the root element and let every child inherit the face.
@@ -1 +1 @@
1
- {"version":3,"file":"variety.js","sourceRoot":"","sources":["../../../../jsr/themes/looks/house/variety.ts"],"names":[],"mappings":"AA+FA,MAAM,CAAC,MAAM,yBAAyB,GAAsB;IAC1D,YAAY;IACZ,eAAe;IACf,aAAa;IACb,YAAY;IACZ,eAAe;IACf,YAAY;CACb,CAAC;AAEF,MAAM,UAAU,GAAqC;IACnD,oBAAoB,EAClB,8XAA8X;IAChY,WAAW,EACT,sVAAsV;IACxV,kBAAkB,EAChB,iWAAiW;IACnW,mBAAmB,EACjB,2fAA2f;IAC7f,WAAW,EACT,gcAAgc;CACnc,CAAC;AAEF,MAAM,UAAU,GAAqC;IACnD,YAAY,EACV,2ZAA2Z;IAC7Z,aAAa,EACX,2fAA2f;IAC7f,eAAe,EACb,i8BAAi8B;IACn8B,cAAc,EACZ,0gBAA0gB;IAC5gB,YAAY,EACV,8XAA8X;IAChY,cAAc,EACZ,iyBAAiyB;IACnyB,gBAAgB,EACd,2lBAA2lB;CAC9lB,CAAC;AAOF,MAAM,CAAC,MAAM,aAAa,GAAuB;IAC/C,kBAAkB,EAAE,yBAAyB;IAC7C,iBAAiB,EAAE,UAAU;IAC7B,gBAAgB,EAAE,UAAU;IAC5B,OAAO,EAAE;QACP,aAAa,EACX,yRAAyR;QAC3R,aAAa,EACX,8QAA8Q;QAChR,YAAY,EACV,mzBAAmzB;KACtzB;CACF,CAAC"}
1
+ {"version":3,"file":"variety.js","sourceRoot":"","sources":["../../../../jsr/themes/looks/house/variety.ts"],"names":[],"mappings":"AAgGA,MAAM,CAAC,MAAM,yBAAyB,GAAsB;IAC1D,YAAY;IACZ,eAAe;IACf,aAAa;IACb,YAAY;IACZ,eAAe;IACf,YAAY;CACb,CAAC;AAEF,MAAM,UAAU,GAAqC;IACnD,oBAAoB,EAClB,8XAA8X;IAChY,WAAW,EACT,sVAAsV;IACxV,kBAAkB,EAChB,iWAAiW;IACnW,mBAAmB,EACjB,2fAA2f;IAC7f,WAAW,EACT,gcAAgc;CACnc,CAAC;AAEF,MAAM,UAAU,GAAqC;IACnD,YAAY,EACV,2ZAA2Z;IAC7Z,aAAa,EACX,2fAA2f;IAC7f,eAAe,EACb,i8BAAi8B;IACn8B,cAAc,EACZ,0gBAA0gB;IAC5gB,YAAY,EACV,8XAA8X;IAChY,cAAc,EACZ,iyBAAiyB;IACnyB,gBAAgB,EACd,2lBAA2lB;CAC9lB,CAAC;AAOF,MAAM,CAAC,MAAM,aAAa,GAAuB;IAC/C,kBAAkB,EAAE,yBAAyB;IAC7C,iBAAiB,EAAE,UAAU;IAC7B,gBAAgB,EAAE,UAAU;IAC5B,OAAO,EAAE;QACP,aAAa,EACX,yRAAyR;QAC3R,aAAa,EACX,8QAA8Q;QAChR,YAAY,EACV,mzBAAmzB;KACtzB;CACF,CAAC"}