@vibes.diy/prompts 2.2.10 → 2.2.12

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.
Files changed (112) hide show
  1. package/index.d.ts +1 -0
  2. package/index.js +1 -0
  3. package/index.js.map +1 -1
  4. package/json-docs.d.ts +1 -1
  5. package/llms/image-gen.d.ts +2 -0
  6. package/llms/image-gen.js +9 -0
  7. package/llms/image-gen.js.map +1 -0
  8. package/llms/image-gen.md +102 -0
  9. package/llms/index.d.ts +1 -1
  10. package/llms/index.js +3 -3
  11. package/package.json +3 -3
  12. package/prompts.d.ts +6 -0
  13. package/prompts.js +36 -3
  14. package/prompts.js.map +1 -1
  15. package/settings.d.ts +1 -0
  16. package/system-prompt-initial.md +2 -2
  17. package/system-prompt.md +86 -2
  18. package/themes/aether.md +41 -0
  19. package/themes/archive.md +43 -0
  20. package/themes/atelier.md +42 -0
  21. package/themes/atlas.md +42 -0
  22. package/themes/broadsheet.md +20 -0
  23. package/themes/brutalist.md +208 -0
  24. package/themes/capsule.md +47 -0
  25. package/themes/carbon.md +42 -0
  26. package/themes/chrome.md +132 -0
  27. package/themes/chrono.md +33 -0
  28. package/themes/codex.md +45 -0
  29. package/themes/computer-angel-heaven.md +57 -0
  30. package/themes/console.md +46 -0
  31. package/themes/default.md +96 -0
  32. package/themes/desktop.md +49 -0
  33. package/themes/dial.md +46 -0
  34. package/themes/dossier.md +35 -0
  35. package/themes/edge.md +39 -0
  36. package/themes/exemplars/aether/App.jsx +224 -0
  37. package/themes/exemplars/archive/App.jsx +222 -0
  38. package/themes/exemplars/atelier/App.jsx +224 -0
  39. package/themes/exemplars/atlas/App.jsx +216 -0
  40. package/themes/exemplars/broadsheet/App.jsx +216 -0
  41. package/themes/exemplars/brutalist/App.jsx +290 -0
  42. package/themes/exemplars/capsule/App.jsx +216 -0
  43. package/themes/exemplars/carbon/App.jsx +216 -0
  44. package/themes/exemplars/chrome/App.jsx +253 -0
  45. package/themes/exemplars/chrono/App.jsx +222 -0
  46. package/themes/exemplars/codex/App.jsx +224 -0
  47. package/themes/exemplars/computer-angel-heaven/App.jsx +224 -0
  48. package/themes/exemplars/console/App.jsx +216 -0
  49. package/themes/exemplars/default/App.jsx +219 -0
  50. package/themes/exemplars/desktop/App.jsx +224 -0
  51. package/themes/exemplars/dial/App.jsx +216 -0
  52. package/themes/exemplars/dossier/App.jsx +224 -0
  53. package/themes/exemplars/edge/App.jsx +216 -0
  54. package/themes/exemplars/guild/App.jsx +224 -0
  55. package/themes/exemplars/hearth/App.jsx +224 -0
  56. package/themes/exemplars/industrial/App.jsx +224 -0
  57. package/themes/exemplars/matrix/App.jsx +224 -0
  58. package/themes/exemplars/mesh/App.jsx +222 -0
  59. package/themes/exemplars/neomario/App.jsx +222 -0
  60. package/themes/exemplars/neon/App.jsx +224 -0
  61. package/themes/exemplars/nexus/App.jsx +216 -0
  62. package/themes/exemplars/opus/App.jsx +224 -0
  63. package/themes/exemplars/orbit/App.jsx +224 -0
  64. package/themes/exemplars/palate/App.jsx +224 -0
  65. package/themes/exemplars/pitch/App.jsx +222 -0
  66. package/themes/exemplars/poster/App.jsx +222 -0
  67. package/themes/exemplars/proof/App.jsx +224 -0
  68. package/themes/exemplars/recon/App.jsx +216 -0
  69. package/themes/exemplars/rift/App.jsx +224 -0
  70. package/themes/exemplars/rune/App.jsx +224 -0
  71. package/themes/exemplars/scrapbook/App.jsx +222 -0
  72. package/themes/exemplars/sensor/App.jsx +224 -0
  73. package/themes/exemplars/signal/App.jsx +222 -0
  74. package/themes/exemplars/slab/App.jsx +224 -0
  75. package/themes/exemplars/specimen/App.jsx +222 -0
  76. package/themes/exemplars/terminal/App.jsx +224 -0
  77. package/themes/exemplars/vault/App.jsx +222 -0
  78. package/themes/exemplars/winter-sports/App.jsx +224 -0
  79. package/themes/exemplars/zine/App.jsx +214 -0
  80. package/themes/guild.md +44 -0
  81. package/themes/hearth.md +45 -0
  82. package/themes/index.d.ts +11 -0
  83. package/themes/index.js +272 -0
  84. package/themes/index.js.map +1 -0
  85. package/themes/industrial.md +37 -0
  86. package/themes/matrix.md +41 -0
  87. package/themes/mesh.md +42 -0
  88. package/themes/neomario.md +47 -0
  89. package/themes/neon.md +48 -0
  90. package/themes/nexus.md +40 -0
  91. package/themes/opus.md +61 -0
  92. package/themes/orbit.md +46 -0
  93. package/themes/palate.md +35 -0
  94. package/themes/pitch.md +39 -0
  95. package/themes/poster.md +39 -0
  96. package/themes/proof.md +41 -0
  97. package/themes/recon.md +39 -0
  98. package/themes/rift.md +45 -0
  99. package/themes/rune.md +44 -0
  100. package/themes/scrapbook.md +43 -0
  101. package/themes/sensor.md +42 -0
  102. package/themes/signal.md +37 -0
  103. package/themes/slab.md +35 -0
  104. package/themes/specimen.md +21 -0
  105. package/themes/terminal.md +39 -0
  106. package/themes/vault.md +41 -0
  107. package/themes/winter-sports.md +39 -0
  108. package/themes/zine.md +40 -0
  109. package/llms/img-vibes.d.ts +0 -2
  110. package/llms/img-vibes.js +0 -9
  111. package/llms/img-vibes.js.map +0 -1
  112. package/llms/img-vibes.md +0 -167
@@ -0,0 +1,96 @@
1
+ ---
2
+ name: Default
3
+ colors:
4
+ # Light mode (the canonical "default" — calm warm canvas, dark ink, golden action color)
5
+ bg: "oklch(0.97 0.01 80)"
6
+ card-bg: "oklch(1.00 0 0)"
7
+ text: "oklch(0.20 0.02 60)"
8
+ accent: "oklch(0.62 0.18 65)"
9
+ accent-text: "oklch(1.00 0 0)"
10
+ muted: "oklch(0.50 0.02 60)"
11
+ border: "oklch(0.88 0.01 70)"
12
+ colorsDark:
13
+ # Dark mode (auto-applied via @media (prefers-color-scheme: dark))
14
+ bg: "oklch(0.18 0.04 60)"
15
+ card-bg: "oklch(0.22 0.04 60)"
16
+ text: "oklch(0.95 0.01 80)"
17
+ accent: "oklch(0.72 0.18 70)"
18
+ accent-text: "oklch(0.12 0.04 60)"
19
+ muted: "oklch(0.55 0.03 60)"
20
+ border: "oklch(0.35 0.04 60)"
21
+ typography:
22
+ body-md:
23
+ fontFamily: Inter
24
+ fontSize: 1rem
25
+ fontWeight: "400"
26
+ rounded:
27
+ DEFAULT: 14px
28
+ sm: 8px
29
+ ---
30
+
31
+ ## Brand & Style
32
+
33
+ Default design system. A calm, balanced theme with Inter typography that **respects the visitor's system color scheme** — light by default, dark when `prefers-color-scheme: dark`. Use this design system's color tokens, spacing, and typographic choices consistently across all generated components.
34
+
35
+ ## Colors
36
+
37
+ The default theme defines two color sets, light (top-level `colors`) and dark (`colorsDark`). Apply them via a `@media (prefers-color-scheme: dark)` block (in a `<style>` tag, in CSS variables, or in Tailwind dark-mode classes — whichever the surrounding code uses). Never hard-code one mode only — components must read correctly in both.
38
+
39
+ ### Light tokens
40
+
41
+ - **bg** (oklch(0.97 0.01 80)): Page background — warm off-white.
42
+ - **card-bg** (oklch(1.00 0 0)): Card / surface — pure white.
43
+ - **text** (oklch(0.20 0.02 60)): Primary text — near-black with warm undertone.
44
+ - **accent** (oklch(0.62 0.18 65)): Primary actions and accents — saturated golden.
45
+ - **accent-text** (oklch(1.00 0 0)): Text on accent fills — pure white.
46
+ - **muted** (oklch(0.50 0.02 60)): Secondary / muted content.
47
+ - **border** (oklch(0.88 0.01 70)): Borders and dividers — soft warm gray.
48
+
49
+ ### Dark tokens
50
+
51
+ - **bg** (oklch(0.18 0.04 60)): Page background — warm dark canvas.
52
+ - **card-bg** (oklch(0.22 0.04 60)): Card / surface — slightly lifted.
53
+ - **text** (oklch(0.95 0.01 80)): Primary text — warm off-white.
54
+ - **accent** (oklch(0.72 0.18 70)): Primary actions and accents — softer golden for dark.
55
+ - **accent-text** (oklch(0.12 0.04 60)): Text on accent fills — near-black.
56
+ - **muted** (oklch(0.55 0.03 60)): Secondary / muted content.
57
+ - **border** (oklch(0.35 0.04 60)): Borders and dividers.
58
+
59
+ ## Typography
60
+
61
+ Load fonts from Google Fonts: Inter. Use `display=optional`.
62
+ Primary body font: `'Inter', sans-serif`.
63
+
64
+ ## Components
65
+
66
+ Apply the color tokens and typography consistently to all interactive elements (buttons, inputs, cards, modals). Ensure sufficient contrast between text and background colors in **both modes**. The accent color is the same role in both modes (golden); only its lightness shifts.
67
+
68
+ The recommended pattern for inline-styled components:
69
+
70
+ ```js
71
+ // CSS variables that flip with prefers-color-scheme — set once on :root.
72
+ const themeStyle = `
73
+ :root {
74
+ --bg: oklch(0.97 0.01 80);
75
+ --card-bg: oklch(1.00 0 0);
76
+ --text: oklch(0.20 0.02 60);
77
+ --accent: oklch(0.62 0.18 65);
78
+ --accent-text: oklch(1.00 0 0);
79
+ --muted: oklch(0.50 0.02 60);
80
+ --border: oklch(0.88 0.01 70);
81
+ }
82
+ @media (prefers-color-scheme: dark) {
83
+ :root {
84
+ --bg: oklch(0.18 0.04 60);
85
+ --card-bg: oklch(0.22 0.04 60);
86
+ --text: oklch(0.95 0.01 80);
87
+ --accent: oklch(0.72 0.18 70);
88
+ --accent-text: oklch(0.12 0.04 60);
89
+ --muted: oklch(0.55 0.03 60);
90
+ --border: oklch(0.35 0.04 60);
91
+ }
92
+ }
93
+ `;
94
+ ```
95
+
96
+ Then reference `var(--bg)`, `var(--text)`, etc. in inline styles or className-driven CSS.
@@ -0,0 +1,49 @@
1
+ ---
2
+ name: Desktop Retro
3
+ colors:
4
+ editor-bg: "oklch(0.11 0.01 250)"
5
+ chrome: "oklch(0.18 0.000 0)"
6
+ gutter: "oklch(0.39 0.01 250)"
7
+ code-text: "oklch(0.75 0.02 240)"
8
+ code-comment: "oklch(0.59 0.000 0)"
9
+ syn-keyword: "oklch(0.62 0.14 55)"
10
+ syn-string: "oklch(0.57 0.08 140)"
11
+ syn-prop: "oklch(0.56 0.08 300)"
12
+ syn-def: "oklch(0.84 0.12 75)"
13
+ syn-num: "oklch(0.62 0.08 235)"
14
+ win-silver: "oklch(0.79 0.000 0)"
15
+ win-title-dk: "oklch(0.21 0.12 265)"
16
+ win-title-lt: "oklch(0.55 0.14 245)"
17
+ win-highlight: "oklch(1.00 0.000 0)"
18
+ win-text: "oklch(0.00 0.000 0)"
19
+ heart: "oklch(0.58 0.17 18)"
20
+ typography:
21
+ body-md:
22
+ fontFamily: JetBrains Mono
23
+ fontSize: 1rem
24
+ fontWeight: "400"
25
+ ---
26
+
27
+ ## Brand & Style
28
+
29
+ Desktop Retro design system. A clean, structured theme with JetBrains Mono typography. Use this design system\'s color tokens, spacing, and typographic choices consistently across all generated components. This theme **respects the visitor's system color scheme** — light by default, with a dark variant that auto-applies on `@media (prefers-color-scheme: dark)`. Apply both color sets via CSS variables in a `<style>` block; never hard-code one mode only.
30
+
31
+ ## Colors
32
+
33
+ - **editor-bg** (oklch(0.11 0.01 250)): Use for backgrounds.
34
+ - **chrome** (oklch(0.18 0.000 0)): Use for supporting UI elements.
35
+ - **gutter** (oklch(0.39 0.01 250)): Use for supporting UI elements.
36
+ - **code-text** (oklch(0.75 0.02 240)): Use for text content.
37
+ - **code-comment** (oklch(0.59 0.000 0)): Use for supporting UI elements.
38
+ - **syn-keyword** (oklch(0.62 0.14 55)): Use for supporting UI elements.
39
+ - **syn-string** (oklch(0.57 0.08 140)): Use for supporting UI elements.
40
+ - **syn-prop** (oklch(0.56 0.08 300)): Use for supporting UI elements.
41
+
42
+ ## Typography
43
+
44
+ Load fonts from Google Fonts: JetBrains Mono. Use display=optional.
45
+ Primary body font: 'JetBrains Mono', monospace.
46
+
47
+ ## Components
48
+
49
+ Apply the color tokens and typography consistently to all interactive elements (buttons, inputs, cards, modals). Ensure sufficient contrast between text and background colors for accessibility.
package/themes/dial.md ADDED
@@ -0,0 +1,46 @@
1
+ ---
2
+ name: Dial Apparatus
3
+ colors:
4
+ comp-bg: "oklch(0.24 0.01 260)"
5
+ comp-text: "oklch(0.64 0.02 250)"
6
+ comp-border: "oklch(0.19 0.01 260 / 0.5)"
7
+ comp-accent: "oklch(0.62 0.24 28)"
8
+ comp-accent-text: "oklch(0.10 0 0)"
9
+ comp-muted: "oklch(0.64 0.02 250 / 0.5)"
10
+ color-background: "oklch(0.00 0 0)"
11
+ dial-chassis: "oklch(0.24 0.01 260)"
12
+ dial-chassis-dark: "oklch(0.19 0.01 260)"
13
+ dial-surface-matte: "oklch(0.28 0.01 260)"
14
+ dial-screen-bg: "oklch(0.10 0 0)"
15
+ dial-screen-glass: "oklch(0.14 0.005 260)"
16
+ dial-led-active: "oklch(0.62 0.24 28)"
17
+ typography:
18
+ body-md:
19
+ fontFamily: var(--font-ui)
20
+ fontSize: 1rem
21
+ fontWeight: "400"
22
+ ---
23
+
24
+ ## Brand & Style
25
+
26
+ Dial Apparatus design system. A dark, atmospheric theme with Share Tech Mono and Inter typography. Use this design system\'s color tokens, spacing, and typographic choices consistently across all generated components. This theme **respects the visitor's system color scheme** — dark by default, with a light variant that auto-applies on `@media (prefers-color-scheme: light)`. Apply both color sets via CSS variables in a `<style>` block; never hard-code one mode only.
27
+
28
+ ## Colors
29
+
30
+ - **comp-bg** (oklch(0.24 0.01 260)): Use for backgrounds.
31
+ - **comp-text** (oklch(0.64 0.02 250)): Use for text content.
32
+ - **comp-border** (oklch(0.19 0.01 260 / 0.5)): Use for borders and dividers.
33
+ - **comp-accent** (oklch(0.62 0.24 28)): Use for primary actions and accents.
34
+ - **comp-accent-text** (oklch(0.10 0 0)): Use for text content.
35
+ - **comp-muted** (oklch(0.64 0.02 250 / 0.5)): Use for secondary/muted content.
36
+ - **color-background** (oklch(0.00 0 0)): Use for backgrounds.
37
+ - **dial-chassis** (oklch(0.24 0.01 260)): Use for supporting UI elements.
38
+
39
+ ## Typography
40
+
41
+ Load fonts from Google Fonts: Share Tech Mono, Inter. Use display=optional.
42
+ Primary body font: var(--font-ui).
43
+
44
+ ## Components
45
+
46
+ Apply the color tokens and typography consistently to all interactive elements (buttons, inputs, cards, modals). Ensure sufficient contrast between text and background colors for accessibility.
@@ -0,0 +1,35 @@
1
+ ---
2
+ name: Dossier Card
3
+ colors:
4
+ bg: "oklch(0.16 0.000 0)"
5
+ card: "oklch(0.00 0.000 0)"
6
+ fg: "oklch(1.00 0.000 0)"
7
+ border: "oklch(0.28 0.03 257)"
8
+ border-fg: "oklch(1.00 0.000 0)"
9
+ typography:
10
+ body-md:
11
+ fontFamily: Roboto Mono
12
+ fontSize: 1rem
13
+ fontWeight: "400"
14
+ ---
15
+
16
+ ## Brand & Style
17
+
18
+ Dossier Card design system. A dark, atmospheric theme with Archivo Black and Roboto Mono typography. Use this design system\'s color tokens, spacing, and typographic choices consistently across all generated components. This theme **respects the visitor's system color scheme** — dark by default, with a light variant that auto-applies on `@media (prefers-color-scheme: light)`. Apply both color sets via CSS variables in a `<style>` block; never hard-code one mode only.
19
+
20
+ ## Colors
21
+
22
+ - **bg** (oklch(0.16 0.000 0)): Use for backgrounds.
23
+ - **card** (oklch(0.00 0.000 0)): Use for supporting UI elements.
24
+ - **fg** (oklch(1.00 0.000 0)): Use for text content.
25
+ - **border** (oklch(0.28 0.03 257)): Use for borders and dividers.
26
+ - **border-fg** (oklch(1.00 0.000 0)): Use for text content.
27
+
28
+ ## Typography
29
+
30
+ Load fonts from Google Fonts: Archivo Black, Roboto Mono. Use display=optional.
31
+ Primary body font: 'Roboto Mono', monospace.
32
+
33
+ ## Components
34
+
35
+ Apply the color tokens and typography consistently to all interactive elements (buttons, inputs, cards, modals). Ensure sufficient contrast between text and background colors for accessibility.
package/themes/edge.md ADDED
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: EDGE INTERFACE
3
+ colors:
4
+ pink: "#ff0077"
5
+ yellow: "#fcee0a"
6
+ cyan: "#00f0ff"
7
+ void: "#0a0205"
8
+ vignette: "#2a0a2e"
9
+ panel-bg: "rgba(15, 5, 20, 0.85)"
10
+ panel-border: "rgba(255, 0, 119, 0.6)"
11
+ typography:
12
+ body-md:
13
+ fontFamily: var(--font-body)
14
+ fontSize: 1rem
15
+ fontWeight: "400"
16
+ ---
17
+
18
+ ## Brand & Style
19
+
20
+ EDGE INTERFACE design system. A clean, structured theme with Orbitron and Rajdhani and Share Tech Mono typography. Use this design system\'s color tokens, spacing, and typographic choices consistently across all generated components. This theme **respects the visitor's system color scheme** — light by default, with a dark variant that auto-applies on `@media (prefers-color-scheme: dark)`. Apply both color sets via CSS variables in a `<style>` block; never hard-code one mode only.
21
+
22
+ ## Colors
23
+
24
+ - **pink** (#ff0077): Use for text content.
25
+ - **yellow** (#fcee0a): Use for supporting UI elements.
26
+ - **cyan** (#00f0ff): Use for supporting UI elements.
27
+ - **void** (#0a0205): Use for supporting UI elements.
28
+ - **vignette** (#2a0a2e): Use for supporting UI elements.
29
+ - **panel-bg** (rgba(15, 5, 20, 0.85)): Use for backgrounds.
30
+ - **panel-border** (rgba(255, 0, 119, 0.6)): Use for borders and dividers.
31
+
32
+ ## Typography
33
+
34
+ Load fonts from Google Fonts: Orbitron, Rajdhani, Share Tech Mono. Use display=optional.
35
+ Primary body font: var(--font-body).
36
+
37
+ ## Components
38
+
39
+ Apply the color tokens and typography consistently to all interactive elements (buttons, inputs, cards, modals). Ensure sufficient contrast between text and background colors for accessibility.
@@ -0,0 +1,224 @@
1
+ import React, { useEffect, useState } from "react";
2
+
3
+ // Theme: Aether Brass — auto-generated exemplar with prefers-color-scheme.
4
+ // Canonical palette: bg #dcbfa6, accent #cfa562.
5
+ // Inverse computed by flipping oklch/hex lightness; tune by hand if needed.
6
+
7
+ const THEME_CSS = `
8
+ :root {
9
+ --bg: #dcbfa6;
10
+ --accent: #cfa562;
11
+ --text: rgba(20, 20, 20, 0.92);
12
+ --muted: rgba(20, 20, 20, 0.5);
13
+ --border: rgba(20, 20, 20, 0.14);
14
+ --raised: rgba(255, 255, 255, 0.55);
15
+ --card-bg: rgba(255, 255, 255, 0.85);
16
+ --accent-text: #fafafa;
17
+ }
18
+ @media (prefers-color-scheme: dark) {
19
+ :root {
20
+ --bg: #593c23;
21
+ --accent: #9d7330;
22
+ --text: rgba(255, 255, 255, 0.92);
23
+ --muted: rgba(255, 255, 255, 0.55);
24
+ --border: rgba(255, 255, 255, 0.18);
25
+ --raised: rgba(255, 255, 255, 0.06);
26
+ --card-bg: rgba(255, 255, 255, 0.04);
27
+ --accent-text: #0a0a0a;
28
+ }
29
+ }
30
+ body { margin: 0; }
31
+ `;
32
+
33
+ export default function App() {
34
+ useEffect(() => {
35
+ const link = document.createElement("link");
36
+ link.rel = "stylesheet";
37
+ link.href = "https://fonts.googleapis.com/css2?family=Special+Elite:wght@400;500;700&display=optional";
38
+ document.head.appendChild(link);
39
+ return () => link.remove();
40
+ }, []);
41
+
42
+ const [draft, setDraft] = useState("");
43
+
44
+ const c = {
45
+ page: {
46
+ minHeight: "100vh",
47
+ background: "var(--bg)",
48
+ color: "var(--text)",
49
+ fontFamily: "'Special Elite', monospace",
50
+ padding: "3rem 2rem 4rem",
51
+ },
52
+ container: { maxWidth: "56rem", margin: "0 auto" },
53
+ header: { display: "flex", flexDirection: "column", gap: "0.85rem", marginBottom: "2rem" },
54
+ eyebrow: {
55
+ fontFamily: "'Special Elite', monospace",
56
+ fontSize: "0.72rem",
57
+ letterSpacing: "0.25em",
58
+ textTransform: "uppercase",
59
+ color: "var(--muted)",
60
+ },
61
+ title: {
62
+ fontSize: "clamp(3rem, 13vw, 10rem)",
63
+ fontWeight: 800,
64
+ letterSpacing: "-0.04em",
65
+ lineHeight: 0.9,
66
+ color: "var(--accent)",
67
+ margin: 0,
68
+ },
69
+ subtitle: {
70
+ fontSize: "1.05rem",
71
+ color: "var(--muted)",
72
+ maxWidth: "32rem",
73
+ lineHeight: 1.5,
74
+ margin: 0,
75
+ },
76
+ modeNote: {
77
+ marginTop: "0.5rem",
78
+ fontFamily: "'Special Elite', monospace",
79
+ fontSize: "0.7rem",
80
+ letterSpacing: "0.2em",
81
+ textTransform: "uppercase",
82
+ color: "var(--muted)",
83
+ },
84
+ grid: {
85
+ display: "grid",
86
+ gridTemplateColumns: "repeat(auto-fit, minmax(18rem, 1fr))",
87
+ gap: "1.25rem",
88
+ marginTop: "2.5rem",
89
+ },
90
+ card: {
91
+ background: "var(--card-bg)",
92
+ border: "1px solid var(--border)",
93
+ borderRadius: 14,
94
+ padding: "1.5rem",
95
+ },
96
+ cardTitle: {
97
+ fontFamily: "'Special Elite', monospace",
98
+ fontSize: "0.7rem",
99
+ letterSpacing: "0.18em",
100
+ textTransform: "uppercase",
101
+ color: "var(--muted)",
102
+ margin: "0 0 1rem",
103
+ },
104
+ list: { listStyle: "none", margin: 0, padding: 0, display: "flex", flexDirection: "column", gap: "0.55rem" },
105
+ listItem: {
106
+ display: "flex",
107
+ alignItems: "center",
108
+ justifyContent: "space-between",
109
+ gap: "0.75rem",
110
+ padding: "0.7rem 0.85rem",
111
+ borderRadius: 10,
112
+ background: "var(--raised)",
113
+ border: "1px solid var(--border)",
114
+ fontSize: "0.95rem",
115
+ },
116
+ badge: {
117
+ fontFamily: "'Special Elite', monospace",
118
+ fontSize: "0.7rem",
119
+ padding: "0.18rem 0.6rem",
120
+ borderRadius: 999,
121
+ background: "var(--accent)",
122
+ color: "var(--accent-text)",
123
+ fontWeight: 600,
124
+ letterSpacing: "0.08em",
125
+ textTransform: "uppercase",
126
+ },
127
+ formRow: { display: "flex", gap: "0.5rem", marginTop: "0.5rem" },
128
+ input: {
129
+ flex: 1,
130
+ background: "var(--raised)",
131
+ color: "var(--text)",
132
+ border: "1px solid var(--border)",
133
+ borderRadius: 10,
134
+ padding: "0.7rem 0.9rem",
135
+ fontFamily: "inherit",
136
+ fontSize: "0.95rem",
137
+ outline: "none",
138
+ },
139
+ button: {
140
+ background: "var(--accent)",
141
+ color: "var(--accent-text)",
142
+ border: "none",
143
+ borderRadius: 10,
144
+ padding: "0.7rem 1.1rem",
145
+ fontFamily: "inherit",
146
+ fontSize: "0.95rem",
147
+ fontWeight: 600,
148
+ cursor: "pointer",
149
+ },
150
+ ghost: {
151
+ background: "transparent",
152
+ color: "var(--text)",
153
+ border: "1px solid var(--border)",
154
+ borderRadius: 10,
155
+ padding: "0.7rem 1.1rem",
156
+ fontFamily: "inherit",
157
+ fontSize: "0.95rem",
158
+ cursor: "pointer",
159
+ },
160
+ buttonRow: { display: "flex", gap: "0.6rem", marginTop: "1.25rem", flexWrap: "wrap" },
161
+ };
162
+
163
+ const items = [
164
+ { id: 1, title: "Daily standup notes", tag: "active" },
165
+ { id: 2, title: "Q3 launch checklist", tag: "draft" },
166
+ { id: 3, title: "Reading list", tag: "synced" },
167
+ ];
168
+
169
+ return (
170
+ <>
171
+ <style>{THEME_CSS}</style>
172
+ <main id="app" style={c.page}>
173
+ <div style={c.container}>
174
+ <header style={c.header}>
175
+ <span style={c.eyebrow}>vibes.diy theme</span>
176
+ <h1 style={c.title}>Aether Brass</h1>
177
+ <p style={c.subtitle}>
178
+ An exemplar app on the Aether Brass theme — list, form, buttons rendered with the catalog tokens.
179
+ </p>
180
+ <div style={c.modeNote}>auto · light + dark via prefers-color-scheme</div>
181
+ </header>
182
+
183
+ <div style={c.grid}>
184
+ <section style={c.card}>
185
+ <h2 style={c.cardTitle}>Recent</h2>
186
+ <ul style={c.list}>
187
+ {items.map((it) => (
188
+ <li key={it.id} style={c.listItem}>
189
+ <span>{it.title}</span>
190
+ <span style={c.badge}>{it.tag}</span>
191
+ </li>
192
+ ))}
193
+ </ul>
194
+ </section>
195
+
196
+ <section style={c.card}>
197
+ <h2 style={c.cardTitle}>New entry</h2>
198
+ <p style={{ ...c.subtitle, fontSize: "0.9rem", marginTop: "0.25rem" }}>Capture a quick thought.</p>
199
+ <div style={c.formRow}>
200
+ <input
201
+ style={c.input}
202
+ placeholder="What's on your mind?"
203
+ value={draft}
204
+ onChange={(e) => setDraft(e.target.value)}
205
+ />
206
+ <button style={c.button} type="button">
207
+ Save
208
+ </button>
209
+ </div>
210
+ <div style={c.buttonRow}>
211
+ <button style={c.button} type="button">
212
+ Primary
213
+ </button>
214
+ <button style={c.ghost} type="button">
215
+ Secondary
216
+ </button>
217
+ </div>
218
+ </section>
219
+ </div>
220
+ </div>
221
+ </main>
222
+ </>
223
+ );
224
+ }