create-quilltap-theme 2.0.2 → 2.0.3

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/README.md CHANGED
@@ -127,8 +127,8 @@ npx quilltap themes update # Check for updates
127
127
 
128
128
  For the latest online documentation:
129
129
 
130
- - [Theme Plugin Development Guide](https://github.com/foundry-9/quilltap/blob/main/docs/THEME_PLUGIN_DEVELOPMENT.md) (legacy plugin format)
131
- - [Plugin Manifest Reference](https://github.com/foundry-9/quilltap/blob/main/docs/PLUGIN_MANIFEST.md)
130
+ - [Theme Plugin Development Guide](https://github.com/foundry-9/quilltap/blob/main/docs/developer/THEME_PLUGIN_DEVELOPMENT.md) (legacy plugin format)
131
+ - [Plugin Manifest Reference](https://github.com/foundry-9/quilltap/blob/main/docs/developer/PLUGIN_MANIFEST.md)
132
132
  - [@quilltap/theme-storybook](https://www.npmjs.com/package/@quilltap/theme-storybook) (for plugin development with Storybook)
133
133
 
134
134
  ## License
package/dist/index.js CHANGED
@@ -213,7 +213,7 @@ async function scaffoldPlugin(config) {
213
213
  log(` ${colors.cyan}npm publish --access public${colors.reset}`);
214
214
  log("");
215
215
  info(`Local documentation: docs/THEME_PLUGIN_DEVELOPMENT.md`);
216
- info(`Online documentation: https://github.com/foundry-9/quilltap/blob/main/docs/THEME_PLUGIN_DEVELOPMENT.md`);
216
+ info(`Online documentation: https://github.com/foundry-9/quilltap/blob/main/docs/developer/THEME_PLUGIN_DEVELOPMENT.md`);
217
217
  log("");
218
218
  }
219
219
  function parseArgs() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-quilltap-theme",
3
- "version": "2.0.2",
3
+ "version": "2.0.3",
4
4
  "description": "Scaffold a new Quilltap theme plugin",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -4,18 +4,524 @@
4
4
  * Custom CSS overrides for the {{DISPLAY_NAME}} theme.
5
5
  * These styles are applied on top of the design tokens defined in tokens.json.
6
6
  *
7
- * Available CSS custom properties (set from tokens.json):
8
- * --qt-bg, --qt-fg, --qt-primary, --qt-accent, etc.
9
- * --qt-font-sans, --qt-font-serif, --qt-font-mono
10
- * --qt-radius-sm, --qt-radius-md, --qt-radius-lg
11
- * --qt-shadow-sm, --qt-shadow-md, --qt-shadow-lg
7
+ * How theming works:
8
+ * - All variables below have sensible defaults. You only need to uncomment
9
+ * and change the ones you want to customize.
10
+ * - Values shown are the Quilltap defaults — override only what you change.
11
+ * - Variables reference --color-* tokens set from your tokens.json file.
12
+ * - For dark mode differences, add overrides in the .dark selector block.
12
13
  *
13
14
  * Tips:
14
15
  * - Use qt-* CSS custom properties for theme-aware styling
15
16
  * - Override specific components by targeting their qt-* class names
16
17
  * - Keep overrides minimal; prefer tokens.json for color/spacing changes
18
+ * - A theme can be as simple as a single color change or background image
17
19
  */
18
20
 
21
+ [data-theme="{{ID}}"],
22
+ [data-theme="{{ID}}"].dark,
23
+ [data-theme="{{ID}}"].light {
24
+ /* ======================================================================
25
+ FONT STACKS
26
+ Define your theme's font families. These feed into --font-sans etc.
27
+ ====================================================================== */
28
+ /* --theme-font-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; */
29
+ /* --theme-font-serif: Georgia, Cambria, "Times New Roman", Times, serif; */
30
+ /* --theme-font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; */
31
+ /* --theme-font-brand: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; */
32
+ /* --theme-font-chat-user: var(--theme-font-sans); */
33
+
34
+ /* ======================================================================
35
+ BUTTON VARIABLES
36
+ ====================================================================== */
37
+ /* --qt-button-radius: var(--radius-md); */
38
+ /* --qt-button-padding-x: 0.875rem; */
39
+ /* --qt-button-padding-y: 0.4375rem; */
40
+ /* --qt-button-font-size: 0.875rem; */
41
+ /* --qt-button-font-weight: 500; */
42
+ /* --qt-button-transition: all 150ms cubic-bezier(0.4, 0, 0.2, 1); */
43
+ /* --qt-button-primary-bg: var(--color-primary); */
44
+ /* --qt-button-primary-fg: var(--color-primary-foreground); */
45
+ /* --qt-button-primary-hover-bg: color-mix(in srgb, var(--color-primary) 88%, black); */
46
+ /* --qt-button-primary-shadow: 0 1px 3px -1px rgb(0 0 0 / 0.12); */
47
+ /* --qt-button-secondary-bg: var(--color-secondary); */
48
+ /* --qt-button-secondary-fg: var(--color-secondary-foreground); */
49
+ /* --qt-button-secondary-border: var(--color-border); */
50
+ /* --qt-button-secondary-hover-bg: color-mix(in srgb, var(--color-secondary) 85%, black); */
51
+ /* --qt-button-ghost-bg: transparent; */
52
+ /* --qt-button-ghost-fg: var(--color-foreground); */
53
+ /* --qt-button-ghost-hover-bg: var(--color-muted); */
54
+ /* --qt-button-destructive-bg: var(--color-destructive); */
55
+ /* --qt-button-destructive-fg: var(--color-destructive-foreground); */
56
+ /* --qt-button-destructive-hover-bg: color-mix(in srgb, var(--color-destructive) 88%, black); */
57
+ /* --qt-button-success-bg: var(--color-success); */
58
+ /* --qt-button-success-fg: var(--color-success-foreground); */
59
+ /* --qt-button-success-hover-bg: color-mix(in srgb, var(--color-success) 85%, black); */
60
+ /* --qt-button-warning-bg: var(--color-warning); */
61
+ /* --qt-button-warning-fg: var(--color-warning-foreground); */
62
+ /* --qt-button-warning-hover-bg: color-mix(in srgb, var(--color-warning) 85%, black); */
63
+
64
+ /* ======================================================================
65
+ STATUS TOKENS
66
+ ====================================================================== */
67
+ /* --qt-status-success-bg: color-mix(in srgb, var(--color-success) 85%, transparent); */
68
+ /* --qt-status-success-fg: var(--color-success-foreground); */
69
+ /* --qt-status-success-border: var(--color-success); */
70
+ /* --qt-status-warning-bg: color-mix(in srgb, var(--color-warning) 85%, transparent); */
71
+ /* --qt-status-warning-fg: var(--color-warning-foreground); */
72
+ /* --qt-status-warning-border: var(--color-warning); */
73
+ /* --qt-status-info-bg: color-mix(in srgb, var(--color-info) 85%, transparent); */
74
+ /* --qt-status-info-fg: var(--color-info-foreground); */
75
+ /* --qt-status-info-border: var(--color-info); */
76
+ /* --qt-status-danger-bg: color-mix(in srgb, var(--color-destructive) 85%, transparent); */
77
+ /* --qt-status-danger-fg: var(--color-destructive-foreground); */
78
+ /* --qt-status-danger-border: var(--color-destructive); */
79
+
80
+ /* ======================================================================
81
+ ALERT TOKENS
82
+ ====================================================================== */
83
+ /* --qt-alert-success-bg: hsl(152 60% 38% / 0.08); */
84
+ /* --qt-alert-success-fg: hsl(152 60% 28%); */
85
+ /* --qt-alert-success-border: hsl(152 60% 38% / 0.25); */
86
+ /* --qt-alert-warning-bg: hsl(38 90% 46% / 0.08); */
87
+ /* --qt-alert-warning-fg: hsl(38 90% 28%); */
88
+ /* --qt-alert-warning-border: hsl(38 90% 46% / 0.25); */
89
+ /* --qt-alert-error-bg: hsl(0 68% 50% / 0.08); */
90
+ /* --qt-alert-error-fg: hsl(0 68% 35%); */
91
+ /* --qt-alert-error-border: hsl(0 68% 50% / 0.25); */
92
+ /* --qt-alert-info-bg: hsl(210 75% 48% / 0.08); */
93
+ /* --qt-alert-info-fg: hsl(210 75% 30%); */
94
+ /* --qt-alert-info-border: hsl(210 75% 48% / 0.25); */
95
+
96
+ /* ======================================================================
97
+ CARD VARIABLES
98
+ ====================================================================== */
99
+ /* --qt-card-radius: var(--radius-lg); */
100
+ /* --qt-card-padding: 1.25rem; */
101
+ /* --qt-card-bg: var(--color-card); */
102
+ /* --qt-card-fg: var(--color-card-foreground); */
103
+ /* --qt-card-border: var(--color-border); */
104
+ /* --qt-card-border-opacity: 0.6; */
105
+ /* --qt-card-shadow: 0 1px 3px hsl(225 18% 10% / 0.06), 0 1px 2px hsl(225 18% 10% / 0.04); */
106
+ /* --qt-card-shadow-hover: 0 4px 12px hsl(225 18% 10% / 0.1), 0 2px 4px hsl(225 18% 10% / 0.05); */
107
+ /* --qt-card-transition: all 150ms cubic-bezier(0.4, 0, 0.2, 1); */
108
+ /* --qt-entity-card-radius: var(--radius-lg); */
109
+ /* --qt-entity-card-bg: color-mix(in srgb, var(--color-card) 92%, transparent); */
110
+
111
+ /* ======================================================================
112
+ INPUT VARIABLES
113
+ ====================================================================== */
114
+ /* --qt-input-radius: var(--radius-md); */
115
+ /* --qt-input-padding-x: 0.75rem; */
116
+ /* --qt-input-padding-y: 0.5rem; */
117
+ /* --qt-input-bg: var(--color-background); */
118
+ /* --qt-input-fg: var(--color-foreground); */
119
+ /* --qt-input-border: var(--color-input); */
120
+ /* --qt-input-placeholder: var(--color-muted-foreground); */
121
+ /* --qt-input-focus-ring: var(--color-ring); */
122
+ /* --qt-input-transition: colors 150ms cubic-bezier(0.4, 0, 0.2, 1); */
123
+
124
+ /* ======================================================================
125
+ NAVBAR VARIABLES
126
+ ====================================================================== */
127
+ /* --qt-navbar-height: 3.5rem; */
128
+ /* --qt-navbar-bg: var(--color-background); */
129
+ /* --qt-navbar-border: var(--color-border); */
130
+ /* --qt-navbar-blur: blur(12px); */
131
+ /* --qt-navbar-shadow: none; */
132
+ /* --qt-navbar-link-padding-x: 0.625rem; */
133
+ /* --qt-navbar-link-padding-y: 0.375rem; */
134
+ /* --qt-navbar-link-radius: var(--radius-md); */
135
+ /* --qt-navbar-link-fg: var(--color-foreground); */
136
+ /* --qt-navbar-link-hover-bg: var(--color-muted); */
137
+ /* --qt-navbar-link-active-bg: var(--color-muted); */
138
+
139
+ /* ======================================================================
140
+ CONTENT AREA VARIABLES
141
+ ====================================================================== */
142
+ /* --qt-content-bg: var(--color-card); */
143
+ /* --qt-content-fg: var(--color-card-foreground); */
144
+ /* --qt-content-scroll-bg: var(--color-background); */
145
+
146
+ /* ======================================================================
147
+ TYPOGRAPHY VARIABLES
148
+ ====================================================================== */
149
+ /* --qt-heading-font: var(--font-sans); */
150
+ /* --qt-text-secondary-fg: var(--color-muted-foreground); */
151
+
152
+ /* ======================================================================
153
+ SIDEBAR VARIABLES
154
+ ====================================================================== */
155
+ /* --qt-sidebar-width: 15rem; */
156
+ /* --qt-sidebar-bg: var(--color-sidebar-background); */
157
+ /* --qt-sidebar-border: var(--color-sidebar-border); */
158
+ /* --qt-sidebar-fg: var(--color-sidebar-foreground); */
159
+ /* --qt-sidebar-muted: var(--color-sidebar-muted); */
160
+ /* --qt-sidebar-item-padding-x: 0.625rem; */
161
+ /* --qt-sidebar-item-padding-y: 0.375rem; */
162
+ /* --qt-sidebar-item-radius: var(--radius-md); */
163
+ /* --qt-sidebar-item-hover-bg: var(--color-sidebar-accent); */
164
+ /* --qt-sidebar-item-active-bg: color-mix(in srgb, var(--color-primary) 8%, transparent); */
165
+ /* --qt-sidebar-item-active-border: var(--color-primary); */
166
+
167
+ /* ======================================================================
168
+ LEFT SIDEBAR VARIABLES (App Navigation)
169
+ ====================================================================== */
170
+ /* --qt-left-sidebar-width: 15rem; */
171
+ /* --qt-left-sidebar-min-width: 15rem; */
172
+ /* --qt-left-sidebar-max-width: 28rem; */
173
+ /* --qt-left-sidebar-collapsed-width: 3.5rem; */
174
+ /* --qt-left-sidebar-resize-handle-width: 3px; */
175
+ /* --qt-left-sidebar-bg: var(--color-sidebar-background); */
176
+ /* --qt-left-sidebar-border: var(--color-sidebar-border); */
177
+ /* --qt-left-sidebar-transition: width 200ms ease, transform 300ms ease; */
178
+ /* --qt-left-sidebar-header-height: 3.5rem; */
179
+ /* --qt-left-sidebar-footer-height: auto; */
180
+ /* --qt-left-sidebar-section-padding: 0.625rem; */
181
+ /* --qt-left-sidebar-section-gap: 0.125rem; */
182
+ /* --qt-left-sidebar-section-title-fg: var(--color-sidebar-muted); */
183
+ /* --qt-left-sidebar-item-gap: 0.375rem; */
184
+ /* --qt-left-sidebar-item-icon-size: 1.125rem; */
185
+ /* --qt-left-sidebar-overlay-bg: rgb(0 0 0 / 0.4); */
186
+ /* --qt-left-sidebar-overlay-z: 40; */
187
+ /* --qt-left-sidebar-z: 50; */
188
+
189
+ /* ======================================================================
190
+ APP HEADER VARIABLES
191
+ ====================================================================== */
192
+ /* --qt-app-header-height: 3.5rem; */
193
+ /* --qt-app-header-bg: var(--color-background); */
194
+ /* --qt-app-header-border: var(--color-border); */
195
+ /* --qt-app-header-blur: blur(12px); */
196
+
197
+ /* ======================================================================
198
+ PANEL / DIALOG / POPOVER VARIABLES
199
+ ====================================================================== */
200
+ /* --qt-panel-radius: var(--radius-lg); */
201
+ /* --qt-panel-bg: var(--color-card); */
202
+ /* --qt-panel-border: var(--color-border); */
203
+ /* --qt-panel-shadow: 0 8px 24px -4px rgb(0 0 0 / 0.08); */
204
+ /* --qt-dialog-radius: var(--radius-lg); */
205
+ /* --qt-dialog-bg: var(--color-background); */
206
+ /* --qt-dialog-border: var(--color-border); */
207
+ /* --qt-dialog-shadow: 0 24px 48px -12px rgb(0 0 0 / 0.18); */
208
+ /* --qt-dialog-backdrop: rgb(0 0 0 / 0.45); */
209
+ /* --qt-popover-radius: var(--radius-md); */
210
+ /* --qt-popover-bg: var(--color-popover); */
211
+ /* --qt-popover-fg: var(--color-popover-foreground); */
212
+ /* --qt-popover-border: var(--color-border); */
213
+ /* --qt-popover-shadow: 0 8px 24px -4px rgb(0 0 0 / 0.1); */
214
+
215
+ /* ======================================================================
216
+ CHAT VARIABLES
217
+ ====================================================================== */
218
+ /* --qt-chat-message-radius: var(--radius-lg); */
219
+ /* --qt-chat-message-padding: 0.875rem; */
220
+ /* --qt-chat-message-shadow: 0 1px 4px -1px rgb(0 0 0 / 0.06); */
221
+ /* --qt-chat-user-bg: var(--color-chat-user); */
222
+ /* --qt-chat-user-fg: var(--color-chat-user-foreground); */
223
+ /* --qt-chat-user-border: transparent; */
224
+ /* --qt-chat-user-font: var(--font-sans); */
225
+ /* --qt-chat-assistant-bg: var(--color-muted); */
226
+ /* --qt-chat-assistant-fg: var(--color-foreground); */
227
+ /* --qt-chat-assistant-border: var(--color-border); */
228
+ /* --qt-chat-assistant-font: var(--font-sans); */
229
+ /* --qt-chat-assistant-font-weight: inherit; */
230
+ /* --qt-chat-whisper-bg: color-mix(in srgb, var(--qt-chat-assistant-bg) 60%, #9b8ec4 40%); */
231
+ /* --qt-chat-whisper-fg: var(--qt-chat-assistant-fg); */
232
+ /* --qt-chat-whisper-border: #9b8ec4; */
233
+ /* --qt-chat-whisper-label-fg: #7c6fa0; */
234
+ /* --qt-chat-silent-bg: color-mix(in srgb, var(--qt-chat-assistant-bg) 65%, #7a9e8e 35%); */
235
+ /* --qt-chat-silent-fg: var(--qt-chat-assistant-fg); */
236
+ /* --qt-chat-silent-border: #7a9e8e; */
237
+ /* --qt-chat-silent-label-fg: #5d7e6e; */
238
+ /* --qt-chat-composer-bg: var(--color-background); */
239
+ /* --qt-chat-composer-border: var(--color-border); */
240
+ /* --qt-chat-composer-radius: var(--radius-lg); */
241
+ /* --qt-chat-composer-padding-x: 1rem; */
242
+ /* --qt-chat-composer-padding-y: 0.75rem; */
243
+ /* --qt-chat-toolbar-gap: 0.375rem; */
244
+ /* --qt-chat-toolbar-button-bg: var(--color-muted); */
245
+ /* --qt-chat-toolbar-button-fg: var(--color-muted-foreground); */
246
+ /* --qt-chat-toolbar-button-hover-bg: color-mix(in srgb, var(--color-muted) 85%, transparent); */
247
+ /* --qt-chat-toolbar-button-border: var(--color-border); */
248
+ /* --qt-chat-attachment-border: var(--color-border); */
249
+ /* --qt-chat-attachment-hover-border: var(--color-primary); */
250
+ /* --qt-chat-attachment-overlay: rgb(0 0 0 / 0.2); */
251
+ /* --qt-chat-message-row-max-width: 900px; */
252
+ /* --qt-page-max-width: 72rem; */
253
+ /* --qt-card-grid-auto-min: 520px; */
254
+ /* --qt-chat-sidebar-width: 18rem; */
255
+ /* --qt-chat-sidebar-collapsed-width: 3.5rem; */
256
+ /* --qt-chat-sidebar-bg: var(--color-card); */
257
+ /* --qt-chat-sidebar-border: var(--color-border); */
258
+ /* --qt-chat-sidebar-header-border: var(--color-border); */
259
+ /* --qt-chat-sidebar-muted: var(--color-muted-foreground); */
260
+ /* --qt-chat-sidebar-heading: var(--color-foreground); */
261
+ /* --qt-response-status-bg: color-mix(in srgb, var(--color-muted) 60%, transparent); */
262
+ /* --qt-response-status-fg: var(--color-muted-foreground); */
263
+ /* --qt-response-status-border: var(--color-border); */
264
+ /* --qt-response-status-compressing-fg: var(--qt-status-info-fg); */
265
+ /* --qt-response-status-gathering-fg: hsl(270 55% 55%); */
266
+ /* --qt-response-status-building-fg: hsl(38 85% 48%); */
267
+ /* --qt-response-status-sending-fg: var(--qt-status-info-fg); */
268
+ /* --qt-response-status-streaming-fg: hsl(152 55% 38%); */
269
+ /* --qt-response-status-tool-fg: hsl(270 55% 55%); */
270
+ /* --qt-participant-card-radius: var(--radius-lg); */
271
+ /* --qt-participant-card-bg: var(--color-card); */
272
+ /* --qt-participant-card-border: var(--color-border); */
273
+ /* --qt-participant-card-active-border: var(--color-primary); */
274
+ /* --qt-participant-card-active-shadow: 0 0 8px rgb(var(--color-primary) / 0.2); */
275
+
276
+ /* ======================================================================
277
+ ROLEPLAY ANNOTATION VARIABLES
278
+ ====================================================================== */
279
+ /* --qt-rp-dialogue-color: var(--color-foreground); */
280
+ /* --qt-rp-dialogue-bg: transparent; */
281
+ /* --qt-rp-narration-color: hsl(225 10% 72%); */
282
+ /* --qt-rp-narration-bg: hsl(225 14% 12% / 0.8); */
283
+ /* --qt-rp-narration-style: normal; */
284
+ /* --qt-rp-narration-padding: 0.125rem 0.375rem; */
285
+ /* --qt-rp-narration-radius: 0.1875rem; */
286
+ /* --qt-rp-inner-monologue-color: hsl(270 50% 72%); */
287
+ /* --qt-rp-inner-monologue-bg: hsl(270 20% 12% / 0.8); */
288
+ /* --qt-rp-inner-monologue-style: italic; */
289
+ /* --qt-rp-inner-monologue-padding: 0.125rem 0.375rem; */
290
+ /* --qt-rp-inner-monologue-radius: 0.1875rem; */
291
+ /* --qt-rp-ooc-color: hsl(152 60% 58%); */
292
+ /* --qt-rp-ooc-bg: hsl(0 0% 6%); */
293
+ /* --qt-rp-ooc-font: var(--font-mono); */
294
+ /* --qt-rp-ooc-padding: 0.125rem 0.375rem; */
295
+ /* --qt-rp-ooc-radius: 0.1875rem; */
296
+ /* --qt-rp-button-narration-bg: hsl(225 10% 38%); */
297
+ /* --qt-rp-button-narration-fg: hsl(0 0% 100%); */
298
+ /* --qt-rp-button-internal-bg: hsl(270 45% 48%); */
299
+ /* --qt-rp-button-internal-fg: hsl(0 0% 100%); */
300
+ /* --qt-rp-button-ooc-bg: hsl(152 60% 28%); */
301
+ /* --qt-rp-button-ooc-fg: hsl(152 60% 80%); */
302
+
303
+ /* ======================================================================
304
+ BADGE VARIABLES
305
+ ====================================================================== */
306
+ /* --qt-badge-radius: 9999px; */
307
+ /* --qt-badge-padding-x: 0.625rem; */
308
+ /* --qt-badge-padding-y: 0.1875rem; */
309
+ /* --qt-badge-font-size: 0.75rem; */
310
+ /* --qt-badge-font-weight: 500; */
311
+ /* --qt-badge-primary-bg: var(--color-primary); */
312
+ /* --qt-badge-primary-fg: var(--color-primary-foreground); */
313
+ /* --qt-badge-secondary-bg: var(--color-secondary); */
314
+ /* --qt-badge-secondary-fg: var(--color-secondary-foreground); */
315
+ /* --qt-badge-outline-bg: transparent; */
316
+ /* --qt-badge-outline-fg: var(--color-foreground); */
317
+ /* --qt-badge-outline-border: var(--color-border); */
318
+ /* --qt-badge-character-bg: hsl(225 55% 55% / 0.12); */
319
+ /* --qt-badge-character-fg: hsl(225 55% 42%); */
320
+ /* --qt-badge-persona-bg: hsl(270 45% 55% / 0.12); */
321
+ /* --qt-badge-persona-fg: hsl(270 45% 42%); */
322
+ /* --qt-badge-chat-bg: hsl(152 50% 38% / 0.12); */
323
+ /* --qt-badge-chat-fg: hsl(152 50% 30%); */
324
+ /* --qt-badge-tag-bg: hsl(25 70% 48% / 0.12); */
325
+ /* --qt-badge-tag-fg: hsl(25 70% 38%); */
326
+ /* --qt-badge-memory-bg: hsl(330 55% 52% / 0.12); */
327
+ /* --qt-badge-memory-fg: hsl(330 55% 38%); */
328
+ /* --qt-badge-message-bg: hsl(45 70% 48% / 0.12); */
329
+ /* --qt-badge-message-fg: hsl(45 70% 35%); */
330
+ /* --qt-badge-project-bg: hsl(185 55% 38% / 0.12); */
331
+ /* --qt-badge-project-fg: hsl(185 55% 30%); */
332
+ /* --qt-badge-enabled-bg: hsl(152 50% 38% / 0.12); */
333
+ /* --qt-badge-enabled-fg: hsl(152 50% 30%); */
334
+ /* --qt-badge-disabled-bg: var(--color-muted); */
335
+ /* --qt-badge-disabled-fg: var(--color-muted-foreground); */
336
+ /* --qt-badge-related-bg: hsl(270 45% 55% / 0.12); */
337
+ /* --qt-badge-related-fg: hsl(270 45% 42%); */
338
+ /* --qt-badge-manual-bg: hsl(270 45% 55% / 0.12); */
339
+ /* --qt-badge-manual-fg: hsl(270 45% 42%); */
340
+ /* --qt-badge-auto-bg: var(--color-muted); */
341
+ /* --qt-badge-auto-fg: var(--color-muted-foreground); */
342
+ /* --qt-badge-source-included-bg: hsl(270 45% 55% / 0.12); */
343
+ /* --qt-badge-source-included-fg: hsl(270 45% 42%); */
344
+ /* --qt-badge-source-npm-bg: hsl(0 60% 50% / 0.12); */
345
+ /* --qt-badge-source-npm-fg: hsl(0 60% 38%); */
346
+ /* --qt-badge-source-git-bg: hsl(25 70% 48% / 0.12); */
347
+ /* --qt-badge-source-git-fg: hsl(25 70% 38%); */
348
+ /* --qt-badge-source-manual-bg: var(--color-muted); */
349
+ /* --qt-badge-source-manual-fg: var(--color-muted-foreground); */
350
+ /* --qt-badge-capability-bg: hsl(225 55% 55% / 0.08); */
351
+ /* --qt-badge-capability-fg: hsl(225 55% 42%); */
352
+
353
+ /* Queue status badges */
354
+ /* --qt-queue-badge-radius: var(--radius-sm); */
355
+ /* --qt-queue-badge-padding-x: 0.375rem; */
356
+ /* --qt-queue-badge-padding-y: 0.125rem; */
357
+ /* --qt-queue-badge-font-size: 0.6875rem; */
358
+ /* --qt-queue-badge-font-weight: 600; */
359
+ /* --qt-queue-badge-group-gap: 1px; */
360
+ /* --qt-queue-badge-group-radius: var(--radius-md); */
361
+ /* --qt-queue-badge-memory-bg: hsl(225 55% 48%); */
362
+ /* --qt-queue-badge-memory-fg: hsl(0 0% 100%); */
363
+ /* --qt-queue-badge-summary-bg: hsl(152 55% 38%); */
364
+ /* --qt-queue-badge-summary-fg: hsl(0 0% 100%); */
365
+ /* --qt-queue-badge-danger-bg: hsl(0 60% 48%); */
366
+ /* --qt-queue-badge-danger-fg: hsl(0 0% 100%); */
367
+ /* --qt-queue-badge-story-bg: hsl(225 12% 38%); */
368
+ /* --qt-queue-badge-story-fg: hsl(0 0% 100%); */
369
+ /* --qt-queue-badge-idle-opacity: 0.35; */
370
+
371
+ /* ======================================================================
372
+ AVATAR VARIABLES
373
+ ====================================================================== */
374
+ /* --qt-avatar-radius: 9999px; */
375
+ /* --qt-avatar-size: 2.25rem; */
376
+ /* --qt-avatar-size-sm: 1.75rem; */
377
+ /* --qt-avatar-size-lg: 2.75rem; */
378
+ /* --qt-avatar-size-xl: 3.5rem; */
379
+ /* --qt-avatar-bg: var(--color-muted); */
380
+ /* --qt-avatar-fg: var(--color-muted-foreground); */
381
+ /* --qt-avatar-border: var(--color-border); */
382
+
383
+ /* ======================================================================
384
+ CODE BLOCK VARIABLES
385
+ ====================================================================== */
386
+ /* --qt-code-radius: var(--radius-md); */
387
+ /* --qt-code-bg: var(--color-muted); */
388
+ /* --qt-code-fg: var(--color-foreground); */
389
+ /* --qt-code-border: var(--color-border); */
390
+ /* --qt-code-font: var(--font-mono); */
391
+
392
+ /* ======================================================================
393
+ LINK VARIABLES
394
+ ====================================================================== */
395
+ /* --qt-link-color: var(--color-primary); */
396
+ /* --qt-link-hover-color: color-mix(in srgb, var(--color-primary) 80%, black); */
397
+ /* --qt-link-decoration: none; */
398
+ /* --qt-link-decoration-hover: underline; */
399
+
400
+ /* ======================================================================
401
+ FOOTER VARIABLES
402
+ ====================================================================== */
403
+ /* --qt-footer-bg: var(--color-background); */
404
+ /* --qt-footer-border: var(--color-border); */
405
+ /* --qt-footer-fg: var(--color-muted-foreground); */
406
+ /* --qt-footer-link-hover: var(--color-primary); */
407
+
408
+ /* ======================================================================
409
+ BRAND VARIABLES
410
+ ====================================================================== */
411
+ /* --qt-brand-fg: var(--color-foreground); */
412
+
413
+ /* ======================================================================
414
+ AUTH PAGE VARIABLES
415
+ ====================================================================== */
416
+ /* --qt-auth-page-bg: linear-gradient(to bottom right, hsl(225 22% 8%), hsl(225 18% 14%)); */
417
+ /* --qt-auth-card-bg: var(--color-card); */
418
+ /* --qt-auth-card-fg: var(--color-card-foreground); */
419
+ /* --qt-auth-title-fg: var(--color-foreground); */
420
+ /* --qt-auth-subtitle-fg: var(--color-muted-foreground); */
421
+ /* --qt-auth-label-fg: var(--color-foreground); */
422
+ /* --qt-auth-hint-fg: var(--color-muted-foreground); */
423
+ /* --qt-auth-footer-fg: var(--color-muted-foreground); */
424
+ /* --qt-auth-divider-color: var(--color-border); */
425
+
426
+ /* ======================================================================
427
+ HIGHLIGHT VARIABLES (Search result highlighting)
428
+ ====================================================================== */
429
+ /* --qt-highlight-bg: hsl(48 100% 50%); */
430
+ /* --qt-highlight-fg: hsl(40 100% 10%); */
431
+ /* --qt-highlight-radius: 0.125rem; */
432
+ /* --qt-highlight-padding-x: 0.125rem; */
433
+ /* --qt-highlight-font-weight: 500; */
434
+
435
+ /* ======================================================================
436
+ OVERLAY VARIABLES
437
+ ====================================================================== */
438
+ /* --qt-overlay-bg: rgb(0 0 0 / 0.85); */
439
+ /* --qt-overlay-medium-bg: rgb(0 0 0 / 0.6); */
440
+ /* --qt-overlay-light-bg: rgb(0 0 0 / 0.2); */
441
+ /* --qt-overlay-caption-bg: rgb(0 0 0 / 0.5); */
442
+ /* --qt-overlay-btn-bg: rgb(255 255 255 / 0.1); */
443
+ /* --qt-overlay-btn-hover-bg: rgb(255 255 255 / 0.2); */
444
+ /* --qt-overlay-fg: rgb(255 255 255); */
445
+ /* --qt-overlay-muted-fg: rgb(255 255 255 / 0.7); */
446
+
447
+ /* ======================================================================
448
+ SPINNER VARIABLES
449
+ ====================================================================== */
450
+ /* --qt-spinner-track: color-mix(in srgb, var(--color-primary) 20%, transparent); */
451
+ /* --qt-spinner-indicator: var(--color-primary); */
452
+
453
+ /* ======================================================================
454
+ FAVORITE VARIABLES
455
+ ====================================================================== */
456
+ /* --qt-favorite-color: hsl(45 96% 58%); */
457
+
458
+ /* ======================================================================
459
+ TOGGLE VARIABLES
460
+ ====================================================================== */
461
+ /* --qt-toggle-knob-bg: white; */
462
+
463
+ /* ======================================================================
464
+ WARNING BOX VARIABLES
465
+ ====================================================================== */
466
+ /* --qt-warning-box-bg: color-mix(in srgb, var(--color-warning) 8%, transparent); */
467
+ /* --qt-warning-box-border: color-mix(in srgb, var(--color-warning) 30%, transparent); */
468
+ /* --qt-warning-box-fg: var(--color-warning); */
469
+
470
+ /* ======================================================================
471
+ FILTER CHIP VARIABLES
472
+ ====================================================================== */
473
+ /* --qt-filter-chip-radius: 9999px; */
474
+ /* --qt-filter-chip-padding-x: 0.5rem; */
475
+ /* --qt-filter-chip-padding-y: 0.1875rem; */
476
+ /* --qt-filter-chip-font-size: 0.75rem; */
477
+ /* --qt-filter-chip-font-weight: 500; */
478
+ /* --qt-filter-chip-transition: all 150ms ease; */
479
+ /* --qt-filter-chip-active-bg: var(--color-primary); */
480
+ /* --qt-filter-chip-active-fg: var(--color-primary-foreground); */
481
+ /* --qt-filter-chip-active-border: transparent; */
482
+ /* --qt-filter-chip-inactive-bg: var(--color-muted); */
483
+ /* --qt-filter-chip-inactive-fg: var(--color-muted-foreground); */
484
+ /* --qt-filter-chip-inactive-border: transparent; */
485
+ /* --qt-filter-chip-inactive-hover-bg: color-mix(in srgb, var(--color-muted) 82%, var(--color-foreground) 4%); */
486
+
487
+ /* ======================================================================
488
+ TAB VARIABLES
489
+ ====================================================================== */
490
+ /* --qt-tab-radius: var(--radius-md) var(--radius-md) 0 0; */
491
+ /* --qt-tab-padding-x: 0.875rem; */
492
+ /* --qt-tab-padding-y: 0.5rem; */
493
+ /* --qt-tab-font-size: 0.8125rem; */
494
+ /* --qt-tab-font-weight: 500; */
495
+ /* --qt-tab-gap: 0.375rem; */
496
+ /* --qt-tab-transition: all 150ms cubic-bezier(0.4, 0, 0.2, 1); */
497
+ /* --qt-tab-bg: var(--color-muted); */
498
+ /* --qt-tab-fg: var(--color-muted-foreground); */
499
+ /* --qt-tab-border: transparent; */
500
+ /* --qt-tab-hover-bg: color-mix(in srgb, var(--color-muted) 82%, var(--color-foreground) 4%); */
501
+ /* --qt-tab-hover-fg: var(--color-foreground); */
502
+ /* --qt-tab-active-bg: var(--color-card); */
503
+ /* --qt-tab-active-fg: var(--color-primary); */
504
+ /* --qt-tab-active-border: var(--color-border); */
505
+ /* --qt-tab-group-gap: 0.1875rem; */
506
+ /* --qt-tab-divider-color: var(--color-border); */
507
+ }
508
+
509
+ /* ========================================================================
510
+ DARK MODE OVERRIDES
511
+ Add variables here that should differ between light and dark mode.
512
+ Only override what changes — shared values belong in the block above.
513
+ ======================================================================== */
514
+ /*
515
+ [data-theme="{{ID}}"].dark {
516
+ }
517
+ */
518
+
519
+ /* ========================================================================
520
+ COMPONENT CLASS OVERRIDES
521
+ Target specific qt-* component classes for structural changes that
522
+ can't be achieved with variables alone.
523
+ ======================================================================== */
524
+
19
525
  /* Example: custom heading styles */
20
526
  /*
21
527
  .qt-heading {
@@ -26,8 +532,8 @@
26
532
 
27
533
  /* Example: custom card styling */
28
534
  /*
29
- .qt-card {
30
- border: 2px solid var(--qt-border);
31
- box-shadow: var(--qt-shadow-md);
535
+ [data-theme="{{ID}}"] .qt-card {
536
+ border: 2px solid var(--qt-card-border);
537
+ box-shadow: var(--qt-card-shadow);
32
538
  }
33
539
  */