@vibes.diy/prompts 2.2.9 → 2.2.11

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 (117) 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/fireproof.md +148 -0
  6. package/llms/image-gen.d.ts +2 -0
  7. package/llms/image-gen.js +9 -0
  8. package/llms/image-gen.js.map +1 -0
  9. package/llms/image-gen.md +102 -0
  10. package/llms/index.d.ts +1 -1
  11. package/llms/index.js +3 -3
  12. package/llms/types.d.ts +2 -2
  13. package/llms/web-audio.js +0 -2
  14. package/llms/web-audio.js.map +1 -1
  15. package/llms/web-audio.md +3 -0
  16. package/package.json +3 -3
  17. package/prompts.d.ts +6 -0
  18. package/prompts.js +37 -4
  19. package/prompts.js.map +1 -1
  20. package/settings.d.ts +1 -0
  21. package/system-prompt-initial.md +2 -2
  22. package/system-prompt.md +3 -3
  23. package/themes/aether.md +41 -0
  24. package/themes/archive.md +43 -0
  25. package/themes/atelier.md +42 -0
  26. package/themes/atlas.md +42 -0
  27. package/themes/broadsheet.md +20 -0
  28. package/themes/brutalist.md +208 -0
  29. package/themes/capsule.md +47 -0
  30. package/themes/carbon.md +42 -0
  31. package/themes/chrome.md +132 -0
  32. package/themes/chrono.md +33 -0
  33. package/themes/codex.md +45 -0
  34. package/themes/computer-angel-heaven.md +57 -0
  35. package/themes/console.md +46 -0
  36. package/themes/default.md +96 -0
  37. package/themes/desktop.md +49 -0
  38. package/themes/dial.md +46 -0
  39. package/themes/dossier.md +35 -0
  40. package/themes/edge.md +39 -0
  41. package/themes/exemplars/aether/App.jsx +224 -0
  42. package/themes/exemplars/archive/App.jsx +222 -0
  43. package/themes/exemplars/atelier/App.jsx +224 -0
  44. package/themes/exemplars/atlas/App.jsx +216 -0
  45. package/themes/exemplars/broadsheet/App.jsx +216 -0
  46. package/themes/exemplars/brutalist/App.jsx +290 -0
  47. package/themes/exemplars/capsule/App.jsx +216 -0
  48. package/themes/exemplars/carbon/App.jsx +216 -0
  49. package/themes/exemplars/chrome/App.jsx +253 -0
  50. package/themes/exemplars/chrono/App.jsx +222 -0
  51. package/themes/exemplars/codex/App.jsx +224 -0
  52. package/themes/exemplars/computer-angel-heaven/App.jsx +224 -0
  53. package/themes/exemplars/console/App.jsx +216 -0
  54. package/themes/exemplars/default/App.jsx +219 -0
  55. package/themes/exemplars/desktop/App.jsx +224 -0
  56. package/themes/exemplars/dial/App.jsx +216 -0
  57. package/themes/exemplars/dossier/App.jsx +224 -0
  58. package/themes/exemplars/edge/App.jsx +216 -0
  59. package/themes/exemplars/guild/App.jsx +224 -0
  60. package/themes/exemplars/hearth/App.jsx +224 -0
  61. package/themes/exemplars/industrial/App.jsx +224 -0
  62. package/themes/exemplars/matrix/App.jsx +224 -0
  63. package/themes/exemplars/mesh/App.jsx +222 -0
  64. package/themes/exemplars/neomario/App.jsx +222 -0
  65. package/themes/exemplars/neon/App.jsx +224 -0
  66. package/themes/exemplars/nexus/App.jsx +216 -0
  67. package/themes/exemplars/opus/App.jsx +224 -0
  68. package/themes/exemplars/orbit/App.jsx +224 -0
  69. package/themes/exemplars/palate/App.jsx +224 -0
  70. package/themes/exemplars/pitch/App.jsx +222 -0
  71. package/themes/exemplars/poster/App.jsx +222 -0
  72. package/themes/exemplars/proof/App.jsx +224 -0
  73. package/themes/exemplars/recon/App.jsx +216 -0
  74. package/themes/exemplars/rift/App.jsx +224 -0
  75. package/themes/exemplars/rune/App.jsx +224 -0
  76. package/themes/exemplars/scrapbook/App.jsx +222 -0
  77. package/themes/exemplars/sensor/App.jsx +224 -0
  78. package/themes/exemplars/signal/App.jsx +222 -0
  79. package/themes/exemplars/slab/App.jsx +224 -0
  80. package/themes/exemplars/specimen/App.jsx +222 -0
  81. package/themes/exemplars/terminal/App.jsx +224 -0
  82. package/themes/exemplars/vault/App.jsx +222 -0
  83. package/themes/exemplars/winter-sports/App.jsx +224 -0
  84. package/themes/exemplars/zine/App.jsx +214 -0
  85. package/themes/guild.md +44 -0
  86. package/themes/hearth.md +45 -0
  87. package/themes/index.d.ts +11 -0
  88. package/themes/index.js +272 -0
  89. package/themes/index.js.map +1 -0
  90. package/themes/industrial.md +37 -0
  91. package/themes/matrix.md +41 -0
  92. package/themes/mesh.md +42 -0
  93. package/themes/neomario.md +47 -0
  94. package/themes/neon.md +48 -0
  95. package/themes/nexus.md +40 -0
  96. package/themes/opus.md +61 -0
  97. package/themes/orbit.md +46 -0
  98. package/themes/palate.md +35 -0
  99. package/themes/pitch.md +39 -0
  100. package/themes/poster.md +39 -0
  101. package/themes/proof.md +41 -0
  102. package/themes/recon.md +39 -0
  103. package/themes/rift.md +45 -0
  104. package/themes/rune.md +44 -0
  105. package/themes/scrapbook.md +43 -0
  106. package/themes/sensor.md +42 -0
  107. package/themes/signal.md +37 -0
  108. package/themes/slab.md +35 -0
  109. package/themes/specimen.md +21 -0
  110. package/themes/terminal.md +39 -0
  111. package/themes/vault.md +41 -0
  112. package/themes/winter-sports.md +39 -0
  113. package/themes/zine.md +40 -0
  114. package/llms/img-vibes.d.ts +0 -2
  115. package/llms/img-vibes.js +0 -9
  116. package/llms/img-vibes.js.map +0 -1
  117. package/llms/img-vibes.md +0 -167
@@ -0,0 +1,224 @@
1
+ import React, { useEffect, useState } from "react";
2
+
3
+ // Theme: Winter Sports — auto-generated exemplar with prefers-color-scheme.
4
+ // Canonical palette: bg oklch(0.99 0.003 240), accent oklch(0.55 0.19 250).
5
+ // Inverse computed by flipping oklch/hex lightness; tune by hand if needed.
6
+
7
+ const THEME_CSS = `
8
+ :root {
9
+ --bg: oklch(0.99 0.003 240);
10
+ --accent: oklch(0.55 0.19 250);
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: oklch(0.06 0.003 240);
21
+ --accent: oklch(0.45 0.19 250);
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=Inter: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: "'Inter', sans-serif",
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: "ui-monospace, SFMono-Regular, Menlo, 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: "ui-monospace, SFMono-Regular, Menlo, 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: "ui-monospace, SFMono-Regular, Menlo, 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: "ui-monospace, SFMono-Regular, Menlo, 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}>Winter Sports</h1>
177
+ <p style={c.subtitle}>
178
+ An exemplar app on the Winter Sports 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
+ }
@@ -0,0 +1,214 @@
1
+ import React, { useEffect, useState } from "react";
2
+
3
+ // Theme: Zine Cut — auto-generated exemplar with prefers-color-scheme.
4
+ // Canonical palette: bg oklch(0.96 0.005 100), accent oklch(0.05 0 0).
5
+ // Inverse computed by flipping oklch/hex lightness; tune by hand if needed.
6
+
7
+ const THEME_CSS = `
8
+ :root {
9
+ --bg: oklch(0.96 0.005 100);
10
+ --accent: oklch(0.05 0 0);
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: oklch(0.06 0.005 100);
21
+ --accent: oklch(0.95 0 0);
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
+ const [draft, setDraft] = useState("");
35
+
36
+ const c = {
37
+ page: {
38
+ minHeight: "100vh",
39
+ background: "var(--bg)",
40
+ color: "var(--text)",
41
+ fontFamily: "var(--f-type)",
42
+ padding: "3rem 2rem 4rem",
43
+ },
44
+ container: { maxWidth: "56rem", margin: "0 auto" },
45
+ header: { display: "flex", flexDirection: "column", gap: "0.85rem", marginBottom: "2rem" },
46
+ eyebrow: {
47
+ fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace",
48
+ fontSize: "0.72rem",
49
+ letterSpacing: "0.25em",
50
+ textTransform: "uppercase",
51
+ color: "var(--muted)",
52
+ },
53
+ title: {
54
+ fontSize: "clamp(3rem, 13vw, 10rem)",
55
+ fontWeight: 800,
56
+ letterSpacing: "-0.04em",
57
+ lineHeight: 0.9,
58
+ color: "var(--accent)",
59
+ margin: 0,
60
+ },
61
+ subtitle: {
62
+ fontSize: "1.05rem",
63
+ color: "var(--muted)",
64
+ maxWidth: "32rem",
65
+ lineHeight: 1.5,
66
+ margin: 0,
67
+ },
68
+ modeNote: {
69
+ marginTop: "0.5rem",
70
+ fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace",
71
+ fontSize: "0.7rem",
72
+ letterSpacing: "0.2em",
73
+ textTransform: "uppercase",
74
+ color: "var(--muted)",
75
+ },
76
+ grid: {
77
+ display: "grid",
78
+ gridTemplateColumns: "repeat(auto-fit, minmax(18rem, 1fr))",
79
+ gap: "1.25rem",
80
+ marginTop: "2.5rem",
81
+ },
82
+ card: {
83
+ background: "var(--card-bg)",
84
+ border: "1px solid var(--border)",
85
+ borderRadius: 14,
86
+ padding: "1.5rem",
87
+ },
88
+ cardTitle: {
89
+ fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace",
90
+ fontSize: "0.7rem",
91
+ letterSpacing: "0.18em",
92
+ textTransform: "uppercase",
93
+ color: "var(--muted)",
94
+ margin: "0 0 1rem",
95
+ },
96
+ list: { listStyle: "none", margin: 0, padding: 0, display: "flex", flexDirection: "column", gap: "0.55rem" },
97
+ listItem: {
98
+ display: "flex",
99
+ alignItems: "center",
100
+ justifyContent: "space-between",
101
+ gap: "0.75rem",
102
+ padding: "0.7rem 0.85rem",
103
+ borderRadius: 10,
104
+ background: "var(--raised)",
105
+ border: "1px solid var(--border)",
106
+ fontSize: "0.95rem",
107
+ },
108
+ badge: {
109
+ fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace",
110
+ fontSize: "0.7rem",
111
+ padding: "0.18rem 0.6rem",
112
+ borderRadius: 999,
113
+ background: "var(--accent)",
114
+ color: "var(--accent-text)",
115
+ fontWeight: 600,
116
+ letterSpacing: "0.08em",
117
+ textTransform: "uppercase",
118
+ },
119
+ formRow: { display: "flex", gap: "0.5rem", marginTop: "0.5rem" },
120
+ input: {
121
+ flex: 1,
122
+ background: "var(--raised)",
123
+ color: "var(--text)",
124
+ border: "1px solid var(--border)",
125
+ borderRadius: 10,
126
+ padding: "0.7rem 0.9rem",
127
+ fontFamily: "inherit",
128
+ fontSize: "0.95rem",
129
+ outline: "none",
130
+ },
131
+ button: {
132
+ background: "var(--accent)",
133
+ color: "var(--accent-text)",
134
+ border: "none",
135
+ borderRadius: 10,
136
+ padding: "0.7rem 1.1rem",
137
+ fontFamily: "inherit",
138
+ fontSize: "0.95rem",
139
+ fontWeight: 600,
140
+ cursor: "pointer",
141
+ },
142
+ ghost: {
143
+ background: "transparent",
144
+ color: "var(--text)",
145
+ border: "1px solid var(--border)",
146
+ borderRadius: 10,
147
+ padding: "0.7rem 1.1rem",
148
+ fontFamily: "inherit",
149
+ fontSize: "0.95rem",
150
+ cursor: "pointer",
151
+ },
152
+ buttonRow: { display: "flex", gap: "0.6rem", marginTop: "1.25rem", flexWrap: "wrap" },
153
+ };
154
+
155
+ const items = [
156
+ { id: 1, title: "Daily standup notes", tag: "active" },
157
+ { id: 2, title: "Q3 launch checklist", tag: "draft" },
158
+ { id: 3, title: "Reading list", tag: "synced" },
159
+ ];
160
+
161
+ return (
162
+ <>
163
+ <style>{THEME_CSS}</style>
164
+ <main id="app" style={c.page}>
165
+ <div style={c.container}>
166
+ <header style={c.header}>
167
+ <span style={c.eyebrow}>vibes.diy theme</span>
168
+ <h1 style={c.title}>Zine Cut</h1>
169
+ <p style={c.subtitle}>An exemplar app on the Zine Cut theme — list, form, buttons rendered with the catalog tokens.</p>
170
+ <div style={c.modeNote}>auto · light + dark via prefers-color-scheme</div>
171
+ </header>
172
+
173
+ <div style={c.grid}>
174
+ <section style={c.card}>
175
+ <h2 style={c.cardTitle}>Recent</h2>
176
+ <ul style={c.list}>
177
+ {items.map((it) => (
178
+ <li key={it.id} style={c.listItem}>
179
+ <span>{it.title}</span>
180
+ <span style={c.badge}>{it.tag}</span>
181
+ </li>
182
+ ))}
183
+ </ul>
184
+ </section>
185
+
186
+ <section style={c.card}>
187
+ <h2 style={c.cardTitle}>New entry</h2>
188
+ <p style={{ ...c.subtitle, fontSize: "0.9rem", marginTop: "0.25rem" }}>Capture a quick thought.</p>
189
+ <div style={c.formRow}>
190
+ <input
191
+ style={c.input}
192
+ placeholder="What's on your mind?"
193
+ value={draft}
194
+ onChange={(e) => setDraft(e.target.value)}
195
+ />
196
+ <button style={c.button} type="button">
197
+ Save
198
+ </button>
199
+ </div>
200
+ <div style={c.buttonRow}>
201
+ <button style={c.button} type="button">
202
+ Primary
203
+ </button>
204
+ <button style={c.ghost} type="button">
205
+ Secondary
206
+ </button>
207
+ </div>
208
+ </section>
209
+ </div>
210
+ </div>
211
+ </main>
212
+ </>
213
+ );
214
+ }
@@ -0,0 +1,44 @@
1
+ ---
2
+ name: Guild Ledger
3
+ colors:
4
+ bg: "oklch(0.10 0.03 260)"
5
+ bg-highlight: "oklch(0.18 0.04 255)"
6
+ fg: "oklch(0.90 0.000 0)"
7
+ fg-muted: "oklch(0.67 0.04 240)"
8
+ gold-base: "oklch(0.60 0.13 80)"
9
+ gold-mid: "oklch(0.78 0.13 88)"
10
+ gold-light: "oklch(0.96 0.08 100)"
11
+ stone: "oklch(0.15 0.000 0)"
12
+ parchment: "oklch(0.84 0.03 75)"
13
+ wood: "oklch(0.27 0.04 30)"
14
+ iron: "oklch(0.27 0.02 220)"
15
+ typography:
16
+ body-md:
17
+ fontFamily: Cinzel
18
+ fontSize: 1rem
19
+ fontWeight: "400"
20
+ ---
21
+
22
+ ## Brand & Style
23
+
24
+ Guild Ledger design system. A dark, atmospheric theme with Cinzel 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.
25
+
26
+ ## Colors
27
+
28
+ - **bg** (oklch(0.10 0.03 260)): Use for backgrounds.
29
+ - **bg-highlight** (oklch(0.18 0.04 255)): Use for backgrounds.
30
+ - **fg** (oklch(0.90 0.000 0)): Use for text content.
31
+ - **fg-muted** (oklch(0.67 0.04 240)): Use for text content.
32
+ - **gold-base** (oklch(0.60 0.13 80)): Use for supporting UI elements.
33
+ - **gold-mid** (oklch(0.78 0.13 88)): Use for supporting UI elements.
34
+ - **gold-light** (oklch(0.96 0.08 100)): Use for supporting UI elements.
35
+ - **stone** (oklch(0.15 0.000 0)): Use for supporting UI elements.
36
+
37
+ ## Typography
38
+
39
+ Load fonts from Google Fonts: Cinzel. Use display=optional.
40
+ Primary body font: 'Cinzel', serif.
41
+
42
+ ## Components
43
+
44
+ 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,45 @@
1
+ ---
2
+ name: Hearth Sim
3
+ colors:
4
+ bg-start: "oklch(0.18 0.10 300)"
5
+ bg-end: "oklch(0.12 0.09 300)"
6
+ primary: "oklch(0.38 0.17 295)"
7
+ primary-dark: "oklch(0.30 0.15 295)"
8
+ primary-light: "oklch(0.47 0.18 295)"
9
+ accent-green: "oklch(0.70 0.15 155)"
10
+ accent-gold: "oklch(0.88 0.18 95)"
11
+ danger: "oklch(0.55 0.20 25)"
12
+ text: "oklch(1.00 0.000 0)"
13
+ text-purple: "oklch(0.25 0.16 295)"
14
+ card-bg: "oklch(0.38 0.17 295 / 0.4)"
15
+ border: "oklch(1.00 0.000 0 / 0.1)"
16
+ typography:
17
+ body-md:
18
+ fontFamily: Nunito
19
+ fontSize: 1rem
20
+ fontWeight: "400"
21
+ ---
22
+
23
+ ## Brand & Style
24
+
25
+ Hearth Sim design system. A clean, structured theme with Fredoka and Nunito 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.
26
+
27
+ ## Colors
28
+
29
+ - **bg-start** (oklch(0.18 0.10 300)): Use for backgrounds.
30
+ - **bg-end** (oklch(0.12 0.09 300)): Use for backgrounds.
31
+ - **primary** (oklch(0.38 0.17 295)): Use for primary actions and accents.
32
+ - **primary-dark** (oklch(0.30 0.15 295)): Use for primary actions and accents.
33
+ - **primary-light** (oklch(0.47 0.18 295)): Use for primary actions and accents.
34
+ - **accent-green** (oklch(0.70 0.15 155)): Use for primary actions and accents.
35
+ - **accent-gold** (oklch(0.88 0.18 95)): Use for primary actions and accents.
36
+ - **danger** (oklch(0.55 0.20 25)): Use for supporting UI elements.
37
+
38
+ ## Typography
39
+
40
+ Load fonts from Google Fonts: Fredoka, Nunito. Use display=optional.
41
+ Primary body font: 'Nunito', sans-serif.
42
+
43
+ ## Components
44
+
45
+ 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,11 @@
1
+ export interface VibesTheme {
2
+ slug: string;
3
+ name: string;
4
+ accentColor: string;
5
+ bgColor: string;
6
+ bodyFont?: string;
7
+ }
8
+ export declare const vibesThemes: VibesTheme[];
9
+ export declare function getThemeCatalogNames(): ReadonlySet<string>;
10
+ export declare function getThemeBySlug(slug: string): VibesTheme | undefined;
11
+ export declare function parseDesignMd(content: string, slug?: string): VibesTheme;