@inkandswitch/patchwork-pkg-base 0.0.101 → 0.0.103

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 (94) hide show
  1. package/module-settings-url +1 -1
  2. package/package.json +1 -1
  3. package/packages/account/dist/{AccountPicker-A2PAS5CG.js → AccountPicker-DCX77HQI.js} +7 -3
  4. package/packages/account/dist/AccountPicker-DCX77HQI.js.map +7 -0
  5. package/packages/account/dist/index.css +70 -34
  6. package/packages/account/dist/index.css.map +2 -2
  7. package/packages/account/dist/index.js +1 -1
  8. package/packages/account-history/dist/assets/HistoryRecorder-_3PrVW6n.js +1 -1
  9. package/packages/account-history/dist/assets/HistoryViewer-BmG0rAfK.js +1 -1
  10. package/packages/account-history/dist/assets/NotebookViewer-DZ_ZQU5x.js +37 -37
  11. package/packages/add-doc-to-sidebar-button/styles.css +2 -2
  12. package/packages/chat/dist/{ChatRoot-BYmq4SXi.js → ChatRoot-1d-658Rr.js} +2 -2
  13. package/packages/chat/dist/{context-tool-Bob-FZ_T.js → context-tool-iP64Oz6H.js} +2 -2
  14. package/packages/chat/dist/{index-wkaHcVCz.js → index-Dm_2jZcu.js} +3 -3
  15. package/packages/chat/dist/index.js +2 -2
  16. package/packages/chat/dist/{tool-DCOdh_fx.js → tool-BmNd5mrj.js} +1 -1
  17. package/packages/codemirror-base/dist/{chunk-QRT4ZVQ4.js → chunk-A2WBDY3J.js} +5 -5
  18. package/packages/codemirror-base/dist/{chunk-QRT4ZVQ4.js.map → chunk-A2WBDY3J.js.map} +1 -1
  19. package/packages/codemirror-base/dist/lib/codemirror.js +1 -1
  20. package/packages/codemirror-base/dist/tool.js +3 -3
  21. package/packages/codemirror-base/dist/tool.js.map +1 -1
  22. package/packages/codemirror-markdown/dist/extensions/embed.js +1 -1
  23. package/packages/codemirror-markdown/dist/extensions/embed.js.map +1 -1
  24. package/packages/codemirror-markdown/dist/extensions/links.js +1 -1
  25. package/packages/codemirror-markdown/dist/extensions/links.js.map +1 -1
  26. package/packages/codemirror-markdown/dist/extensions/markdown.js +6 -6
  27. package/packages/codemirror-markdown/dist/extensions/markdown.js.map +1 -1
  28. package/packages/commands/dist/main.js +1 -1
  29. package/packages/commands/dist/main.js.map +1 -1
  30. package/packages/comments-view/dist/assets/main-wSSvAVfi.js +1 -1
  31. package/packages/doc-openwith/doc-openwith.js +5 -5
  32. package/packages/doc-presence/doc-presence.js +1 -1
  33. package/packages/drafts/dist/assets/main-CG9HOCai.js +31 -31
  34. package/packages/embed/dist/assets/tool-D58NGTZ7.js +1 -1
  35. package/packages/file/dist/index.js +2 -2
  36. package/packages/file/dist/{new-file-tool-DGKllnzw.js → new-file-tool-BolBDUrL.js} +27 -27
  37. package/packages/file/dist/new-file-tool-BolBDUrL.js.map +1 -0
  38. package/packages/file/dist/{tool-UKWDK93W.js → tool-Bt8I8T2-.js} +4 -4
  39. package/packages/file/dist/tool-Bt8I8T2-.js.map +1 -0
  40. package/packages/file/dist/{typescript-language-server-BgBx0vSF.js → typescript-language-server-Db4173Y5.js} +2 -2
  41. package/packages/file/dist/{typescript-language-server-BgBx0vSF.js.map → typescript-language-server-Db4173Y5.js.map} +1 -1
  42. package/packages/folder/dist/index.js +1 -1
  43. package/packages/folder/dist/{tool-WAWTPB4A.js → tool-5E3YPGES.js} +2 -2
  44. package/packages/folder/dist/{tool-WAWTPB4A.js.map → tool-5E3YPGES.js.map} +1 -1
  45. package/packages/history-view/dist/assets/{HistoryTimeline-COYNGORP.js → HistoryTimeline-Bo-BTf2A.js} +6 -6
  46. package/packages/history-view/dist/assets/{HistoryTimeline-COYNGORP.js.map → HistoryTimeline-Bo-BTf2A.js.map} +1 -1
  47. package/packages/history-view/dist/assets/{index-C1gYt7m5.js → index-B5Afrk9Y.js} +2 -2
  48. package/packages/history-view/dist/assets/{index-C1gYt7m5.js.map → index-B5Afrk9Y.js.map} +1 -1
  49. package/packages/history-view/dist/index.js +1 -1
  50. package/packages/llm-host/dist/{LlmConfigTray-DdZHZT4F.js → LlmConfigTray-CjW04jeT.js} +108 -108
  51. package/packages/llm-host/dist/index.js +1 -1
  52. package/packages/packages/dist/index.js +46 -46
  53. package/packages/raw/raw-editor.js +22 -22
  54. package/packages/settings/dist/assets/FrameConfigurator-DVRBzIR-.js +1 -1
  55. package/packages/sideboard/dist/index.css +1 -1
  56. package/packages/sideboard/dist/index.css.map +2 -2
  57. package/packages/sideboard/dist/index.js +1 -1
  58. package/packages/sync-indicator/dist/assets/{SyncIndicator-B2ag1OoZ.js → SyncIndicator-oVMcVRXg.js} +3 -3
  59. package/packages/sync-indicator/dist/assets/{SyncIndicator-B2ag1OoZ.js.map → SyncIndicator-oVMcVRXg.js.map} +1 -1
  60. package/packages/sync-indicator/dist/index.js +1 -1
  61. package/packages/tasks/dist/assets/index-BbuRtBN3.js +1 -1
  62. package/packages/theming/dist/{active-theme-BMSIQXBV.js → active-theme-CC3CS64F.js} +2 -2
  63. package/packages/theming/dist/{chunk-Z3JB7ERH.js → chunk-DH4YUYFJ.js} +2 -2
  64. package/packages/theming/dist/chunk-VJZ4NPK4.js +136 -0
  65. package/packages/theming/dist/chunk-VJZ4NPK4.js.map +7 -0
  66. package/packages/theming/dist/main.js +4 -4
  67. package/packages/theming/dist/{theme-7OG2K56L.css → theme-HE7ECLIW.css} +212 -58
  68. package/packages/theming/dist/{theme-editor-datatype-TMYH7U2S.js → theme-editor-datatype-TJ6LYT2U.js} +2 -2
  69. package/packages/theming/dist/theme-editor.js +35 -25
  70. package/packages/theming/dist/theme-editor.js.map +2 -2
  71. package/packages/theming/dist/{theme-titlebar-YIFJINPJ.js → theme-titlebar-BO2Y2GRN.js} +2 -2
  72. package/packages/theming/dist/{theme-tray-7J247NRY.js → theme-tray-V6BEXQWR.js} +15 -15
  73. package/packages/theming/dist/theme-tray-V6BEXQWR.js.map +7 -0
  74. package/packages/theming/dist/tool.js +9 -9
  75. package/packages/theming/dist/tool.js.map +1 -1
  76. package/packages/threepane/dist/IsolatedDocumentArea-IZWZ74TV.js +2 -0
  77. package/packages/threepane/dist/{PatchworkFrame-GEEBBGCS.js → PatchworkFrame-UNWWAISP.js} +2 -2
  78. package/packages/threepane/dist/{chunk-YC5AHP5G.js → chunk-MSZ7JVNB.js} +31 -31
  79. package/packages/threepane/dist/{chunk-YC5AHP5G.js.map → chunk-MSZ7JVNB.js.map} +3 -3
  80. package/packages/threepane/dist/index.js +1 -1
  81. package/plugin-registry-url +1 -1
  82. package/packages/account/dist/AccountPicker-A2PAS5CG.js.map +0 -7
  83. package/packages/file/dist/new-file-tool-DGKllnzw.js.map +0 -1
  84. package/packages/file/dist/tool-UKWDK93W.js.map +0 -1
  85. package/packages/theming/dist/chunk-GIPQLUDU.js +0 -86
  86. package/packages/theming/dist/chunk-GIPQLUDU.js.map +0 -7
  87. package/packages/theming/dist/theme-tray-7J247NRY.js.map +0 -7
  88. package/packages/threepane/dist/IsolatedDocumentArea-G3V7KYHJ.js +0 -2
  89. /package/packages/theming/dist/{active-theme-BMSIQXBV.js.map → active-theme-CC3CS64F.js.map} +0 -0
  90. /package/packages/theming/dist/{chunk-Z3JB7ERH.js.map → chunk-DH4YUYFJ.js.map} +0 -0
  91. /package/packages/theming/dist/{theme-editor-datatype-TMYH7U2S.js.map → theme-editor-datatype-TJ6LYT2U.js.map} +0 -0
  92. /package/packages/theming/dist/{theme-titlebar-YIFJINPJ.js.map → theme-titlebar-BO2Y2GRN.js.map} +0 -0
  93. /package/packages/threepane/dist/{IsolatedDocumentArea-G3V7KYHJ.js.map → IsolatedDocumentArea-IZWZ74TV.js.map} +0 -0
  94. /package/packages/threepane/dist/{PatchworkFrame-GEEBBGCS.js.map → PatchworkFrame-UNWWAISP.js.map} +0 -0
@@ -5,7 +5,7 @@ import {
5
5
 
6
6
  // src/main.ts
7
7
  (async function() {
8
- (await import("./active-theme-BMSIQXBV.js")).startActiveTheme();
8
+ (await import("./active-theme-CC3CS64F.js")).startActiveTheme();
9
9
  })();
10
10
  var plugins = [
11
11
  {
@@ -57,7 +57,7 @@ var plugins = [
57
57
  unlisted: true,
58
58
  forTitleBar: true,
59
59
  async load() {
60
- const { ThemeTitlebarTool } = await import("./theme-titlebar-YIFJINPJ.js");
60
+ const { ThemeTitlebarTool } = await import("./theme-titlebar-BO2Y2GRN.js");
61
61
  return ThemeTitlebarTool;
62
62
  }
63
63
  },
@@ -68,7 +68,7 @@ var plugins = [
68
68
  icon: "Palette",
69
69
  tags: ["system-tray"],
70
70
  async load() {
71
- const { ThemeTray } = await import("./theme-tray-7J247NRY.js");
71
+ const { ThemeTray } = await import("./theme-tray-V6BEXQWR.js");
72
72
  return ThemeTray;
73
73
  }
74
74
  },
@@ -90,7 +90,7 @@ var plugins = [
90
90
  unlisted: true,
91
91
  icon: "Paintbrush",
92
92
  async load() {
93
- const { CustomThemeDatatype } = await import("./theme-editor-datatype-TMYH7U2S.js");
93
+ const { CustomThemeDatatype } = await import("./theme-editor-datatype-TJ6LYT2U.js");
94
94
  return CustomThemeDatatype;
95
95
  }
96
96
  },
@@ -162,8 +162,13 @@
162
162
  --studio-link: #36e;
163
163
  --studio-danger: #ff6a90;
164
164
  --studio-warning: #f8c43b;
165
+ /* success/info default to existing palette colours so every theme gets
166
+ sensible ones without defining them: success rides --studio-added (the
167
+ "good change" colour), info rides the secondary. */
168
+ --studio-success: var(--studio-added);
169
+ --studio-info: var(--studio-secondary);
165
170
 
166
- /* Accent surfaces. Each accent (primary/secondary/danger/warning) ships as a
171
+ /* Accent surfaces. Each accent (primary/secondary/danger/warning/success/info) ships as a
167
172
  Bulma-style contrast pair — the same fill/line shape as --studio-chrome:
168
173
 
169
174
  --studio-{accent}-fill the accent used AS A SURFACE (button/pill background).
@@ -216,6 +221,22 @@
216
221
  --studio-warning-fill-offset-40: color-mix(in oklch, var(--studio-warning-fill), var(--studio-warning-line) 32%);
217
222
  --studio-warning-fill-offset-50: color-mix(in oklch, var(--studio-warning-fill), var(--studio-warning-line) 50%);
218
223
 
224
+ --studio-success-fill: var(--studio-success);
225
+ --studio-success-line: oklch(from var(--studio-success) clamp(0, (0.62 - l) * 1000, 1) 0 0);
226
+ --studio-success-fill-offset-10: color-mix(in oklch, var(--studio-success-fill), var(--studio-success-line) 0%);
227
+ --studio-success-fill-offset-20: color-mix(in oklch, var(--studio-success-fill), var(--studio-success-line) 7%);
228
+ --studio-success-fill-offset-30: color-mix(in oklch, var(--studio-success-fill), var(--studio-success-line) 18%);
229
+ --studio-success-fill-offset-40: color-mix(in oklch, var(--studio-success-fill), var(--studio-success-line) 32%);
230
+ --studio-success-fill-offset-50: color-mix(in oklch, var(--studio-success-fill), var(--studio-success-line) 50%);
231
+
232
+ --studio-info-fill: var(--studio-info);
233
+ --studio-info-line: oklch(from var(--studio-info) clamp(0, (0.62 - l) * 1000, 1) 0 0);
234
+ --studio-info-fill-offset-10: color-mix(in oklch, var(--studio-info-fill), var(--studio-info-line) 0%);
235
+ --studio-info-fill-offset-20: color-mix(in oklch, var(--studio-info-fill), var(--studio-info-line) 7%);
236
+ --studio-info-fill-offset-30: color-mix(in oklch, var(--studio-info-fill), var(--studio-info-line) 18%);
237
+ --studio-info-fill-offset-40: color-mix(in oklch, var(--studio-info-fill), var(--studio-info-line) 32%);
238
+ --studio-info-fill-offset-50: color-mix(in oklch, var(--studio-info-fill), var(--studio-info-line) 50%);
239
+
219
240
  /* The link accent is built on the --studio-link color. Everything else derives
220
241
  from --studio-link-fill — the invert ink, hover/border ramp, and all three
221
242
  -text variants — so retinting links is a single override of --studio-link. */
@@ -236,6 +257,8 @@
236
257
  --studio-secondary-text: color-mix(in oklch, var(--studio-secondary), var(--studio-line) 35%);
237
258
  --studio-danger-text: color-mix(in oklch, var(--studio-danger), var(--studio-line) 35%);
238
259
  --studio-warning-text: color-mix(in oklch, var(--studio-warning), var(--studio-line) 35%);
260
+ --studio-success-text: color-mix(in oklch, var(--studio-success), var(--studio-line) 35%);
261
+ --studio-info-text: color-mix(in oklch, var(--studio-info), var(--studio-line) 35%);
239
262
  --studio-link-text: color-mix(in oklch, var(--studio-link-fill), var(--studio-line) 35%);
240
263
 
241
264
  --studio-family-sans: "Jost*", "Jost", system-ui, -apple-system, sans-serif;
@@ -246,31 +269,64 @@
246
269
  controls/chrome; both track the sans family by default. */
247
270
  --studio-family: var(--studio-family-sans);
248
271
  --studio-family-ui: var(--studio-family-sans);
272
+ --studio-family-serif:
273
+ "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, ui-serif, serif;
249
274
  --studio-font-size: 16px;
275
+
276
+ /* Opt-in typography. all of these are left unset so nothing changes until a
277
+ theme sets them:
278
+ --studio-letter-spacing tracking for content (applied on :root)
279
+ --studio-chrome-letter-spacing tracking for small chrome labels; tools
280
+ read var(--studio-chrome-letter-spacing, <theirs>)
281
+ --studio-font-features font-feature-settings, e.g. "ss01", "zero"
282
+ --studio-font-variation font-variation-settings, e.g. "wght" 420
283
+ --studio-heading-family a display face for headings
284
+ --studio-heading-weight heading weight
285
+ --studio-font-scale a modular ratio for headings, e.g. 1.25.
286
+ when set, --studio-heading-size-1..6 become
287
+ ratio^4, ^3, ^2, ^1, 1em and 1/ratio. they
288
+ reference the unset ratio, so they stay
289
+ invalid (and tools' var(--studio-heading-size-N,
290
+ <theirs>) fallbacks win) until it's set. */
291
+ --studio-heading-size-1: calc(1em * pow(var(--studio-font-scale), 4));
292
+ --studio-heading-size-2: calc(1em * pow(var(--studio-font-scale), 3));
293
+ --studio-heading-size-3: calc(1em * pow(var(--studio-font-scale), 2));
294
+ --studio-heading-size-4: calc(1em * var(--studio-font-scale));
295
+ --studio-heading-size-5: calc(1em * pow(var(--studio-font-scale), 0));
296
+ --studio-heading-size-6: calc(1em / var(--studio-font-scale));
250
297
  --studio-font-weight: 400;
251
298
  --studio-selection-fill: #ffee8888;
252
299
  --studio-selection-line: var(--studio-line);
253
300
  --studio-line-height: 1.5;
254
301
 
255
- /* Border radius */
256
- --studio-radius-xs: 2px;
257
- --studio-radius-sm: 4px;
258
- --studio-radius: 6px;
259
- --studio-radius-md: 8px;
260
- --studio-radius-lg: 12px;
261
- --studio-radius-xl: 16px;
262
- --studio-radius-round: 9999px;
263
-
264
- /* Spacing scale */
265
- --studio-space-3xs: 0.125rem; /* 2px */
266
- --studio-space-2xs: 0.25rem; /* 4px */
267
- --studio-space-xs: 0.375rem; /* 6px */
268
- --studio-space-sm: 0.5rem; /* 8px */
269
- --studio-space: 0.75rem; /* 12px */
270
- --studio-space-md: 1rem; /* 16px */
271
- --studio-space-lg: 1.5rem; /* 24px */
272
- --studio-space-xl: 2rem; /* 32px */
273
- --studio-space-2xl: 3rem; /* 48px */
302
+ /* Border radius. --studio-radius-scale multiplies the whole scale: 0 gives a
303
+ square theme, 1.5 a soft one. round stays round at any positive scale. */
304
+ --studio-radius-scale: 1;
305
+ --studio-radius-xs: calc(2px * var(--studio-radius-scale));
306
+ --studio-radius-sm: calc(4px * var(--studio-radius-scale));
307
+ --studio-radius: calc(6px * var(--studio-radius-scale));
308
+ --studio-radius-md: calc(8px * var(--studio-radius-scale));
309
+ --studio-radius-lg: calc(12px * var(--studio-radius-scale));
310
+ --studio-radius-xl: calc(16px * var(--studio-radius-scale));
311
+ --studio-radius-round: calc(9999px * var(--studio-radius-scale));
312
+
313
+ /* Spacing scale. --studio-density multiplies the whole scale: ~0.75 is
314
+ compact, ~1.25 roomy. */
315
+ --studio-density: 1;
316
+ --studio-space-3xs: calc(0.125rem * var(--studio-density)); /* 2px */
317
+ --studio-space-2xs: calc(0.25rem * var(--studio-density)); /* 4px */
318
+ --studio-space-xs: calc(0.375rem * var(--studio-density)); /* 6px */
319
+ --studio-space-sm: calc(0.5rem * var(--studio-density)); /* 8px */
320
+ --studio-space: calc(0.75rem * var(--studio-density)); /* 12px */
321
+ --studio-space-md: calc(1rem * var(--studio-density)); /* 16px */
322
+ --studio-space-lg: calc(1.5rem * var(--studio-density)); /* 24px */
323
+ --studio-space-xl: calc(2rem * var(--studio-density)); /* 32px */
324
+ --studio-space-2xl: calc(3rem * var(--studio-density)); /* 48px */
325
+
326
+ /* Borders. width and style for ordinary ui borders (dividers, inputs,
327
+ cards); a theme can go chunky (2px) or sketchy (dashed). */
328
+ --studio-border-width: 1px;
329
+ --studio-border-style: solid;
274
330
 
275
331
  /* Shadows. the shadow colour is the line pulled toward the offset tint by
276
332
  the same amount as the rest of the ramp, so shadows read as part of the
@@ -280,24 +336,108 @@
280
336
  var(--studio-line),
281
337
  var(--studio-offset-tint) var(--studio-offset-tint-amount)
282
338
  );
339
+ /* --studio-shadow-strength multiplies every shadow's opacity: 0 is a flat
340
+ theme, 2-3 a heavy one. each layer keeps its own base alpha (5/6/10%). */
341
+ --studio-shadow-strength: 1;
342
+ --studio-shadow-a5: clamp(0%, calc(100% - 5% * var(--studio-shadow-strength)), 100%);
343
+ --studio-shadow-a6: clamp(0%, calc(100% - 6% * var(--studio-shadow-strength)), 100%);
344
+ --studio-shadow-a10: clamp(0%, calc(100% - 10% * var(--studio-shadow-strength)), 100%);
283
345
  --studio-shadow-sm: 0 1px 2px
284
- color-mix(in oklch, var(--studio-shadow-color), transparent 95%);
346
+ color-mix(in oklch, var(--studio-shadow-color), transparent var(--studio-shadow-a5));
285
347
  --studio-shadow: 0 1px 3px
286
- color-mix(in oklch, var(--studio-shadow-color), transparent 90%),
287
- 0 1px 2px color-mix(in oklch, var(--studio-shadow-color), transparent 94%);
348
+ color-mix(in oklch, var(--studio-shadow-color), transparent var(--studio-shadow-a10)),
349
+ 0 1px 2px color-mix(in oklch, var(--studio-shadow-color), transparent var(--studio-shadow-a6));
288
350
  --studio-shadow-md: 0 4px 6px -1px
289
- color-mix(in oklch, var(--studio-shadow-color), transparent 90%),
290
- 0 2px 4px -2px color-mix(in oklch, var(--studio-shadow-color), transparent 90%);
351
+ color-mix(in oklch, var(--studio-shadow-color), transparent var(--studio-shadow-a10)),
352
+ 0 2px 4px -2px color-mix(in oklch, var(--studio-shadow-color), transparent var(--studio-shadow-a10));
291
353
  --studio-shadow-lg: 0 10px 15px -3px
292
- color-mix(in oklch, var(--studio-shadow-color), transparent 90%),
293
- 0 4px 6px -4px color-mix(in oklch, var(--studio-shadow-color), transparent 90%);
294
-
295
- /* Transitions */
296
- --studio-transition-fast: 0.1s ease;
297
- --studio-transition: 0.15s ease;
298
- --studio-transition-slow: 0.25s ease;
354
+ color-mix(in oklch, var(--studio-shadow-color), transparent var(--studio-shadow-a10)),
355
+ 0 4px 6px -4px color-mix(in oklch, var(--studio-shadow-color), transparent var(--studio-shadow-a10));
356
+
357
+ /* Motion. --studio-motion-scale multiplies every duration: 0 turns motion
358
+ off, 2 is slow and dreamy. --studio-motion-preference is the user's OS
359
+ setting (0 under prefers-reduced-motion, see below) and multiplies on top,
360
+ so a theme can't override it. durations never go below 1ms so
361
+ transitionend/animationend still fire for code waiting on them. */
362
+ --studio-motion-scale: 1;
363
+ --studio-motion-preference: 1;
364
+ --studio-duration-fast: max(1ms, calc(100ms * var(--studio-motion-scale) * var(--studio-motion-preference)));
365
+ --studio-duration: max(1ms, calc(150ms * var(--studio-motion-scale) * var(--studio-motion-preference)));
366
+ --studio-duration-slow: max(1ms, calc(250ms * var(--studio-motion-scale) * var(--studio-motion-preference)));
367
+ --studio-ease: ease;
299
368
  /* Strong ease-out for things entering: fast start, long gentle settle. */
300
369
  --studio-ease-out: cubic-bezier(0.23, 1, 0.32, 1);
370
+ /* ease-in for things leaving; spring overshoots a little for playful entrances. */
371
+ --studio-ease-in: cubic-bezier(0.55, 0, 1, 0.45);
372
+ --studio-ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
373
+ --studio-transition-fast: var(--studio-duration-fast) var(--studio-ease);
374
+ --studio-transition: var(--studio-duration) var(--studio-ease);
375
+ --studio-transition-slow: var(--studio-duration-slow) var(--studio-ease);
376
+
377
+ /* Focus. --studio-focus-ring is the outline shorthand for keyboard focus;
378
+ tools read it as var(--studio-focus-ring, <their own ring>), so it is
379
+ deliberately left undefined here (opt-in): set it in a theme to make every
380
+ focus ring match, e.g. `3px dashed hotpink`. same for the offset. */
381
+ /* --studio-focus-ring: <unset>; */
382
+ /* --studio-focus-ring-offset: <unset>; */
383
+
384
+ /* Interaction states. */
385
+ --studio-disabled-opacity: 0.5;
386
+ /* hover/pressed surfaces are opt-in like the focus ring: tools fall back to
387
+ their own offset step. set these to pick one step for everything, e.g.
388
+ `var(--studio-fill-offset-30)` for a stronger hover. */
389
+ /* --studio-hover-fill / --studio-active-fill: <unset>; (content surfaces) */
390
+ /* --studio-chrome-hover-fill / --studio-chrome-active-fill: <unset>; (chrome) */
391
+
392
+ /* Cursors. a theme can ship its own, e.g.
393
+ --studio-cursor-pointer: url(hand.svg) 4 0, pointer; */
394
+ --studio-cursor-default: default;
395
+ --studio-cursor-pointer: pointer;
396
+ --studio-cursor-text: text;
397
+ --studio-cursor-grab: grab;
398
+ --studio-cursor-grabbing: grabbing;
399
+ --studio-cursor-move: move;
400
+ --studio-cursor-crosshair: crosshair;
401
+ --studio-cursor-not-allowed: not-allowed;
402
+ --studio-cursor-resize-col: col-resize;
403
+ --studio-cursor-resize-row: row-resize;
404
+
405
+ /* Layers. a shared z-index scale so tools' overlays stack predictably.
406
+ opt-in for now: tools read var(--studio-layer-*, <their own z>), so
407
+ nothing moves until a theme or a future pass defines the scale. the
408
+ intended values are:
409
+ --studio-layer-raised: 1; sticky headers, floating bits inside a view
410
+ --studio-layer-dropdown: 1000;
411
+ --studio-layer-overlay: 2000; scrims, drawers
412
+ --studio-layer-modal: 3000;
413
+ --studio-layer-popover: 4000; menus/popovers that can sit over a modal
414
+ --studio-layer-toast: 5000;
415
+ --studio-layer-tooltip: 6000; */
416
+
417
+ /* Backdrops behind modals/menus. opt-in: tools read
418
+ var(--studio-backdrop, <theirs>) and var(--studio-backdrop-blur, <theirs>). */
419
+ /* --studio-backdrop: <unset>; e.g. color-mix(in oklch, var(--studio-line), transparent 70%) */
420
+ /* --studio-backdrop-blur: <unset>; e.g. blur(8px) */
421
+
422
+ /* Scrollbars. opt-in: unset means the browser default.
423
+ --studio-scrollbar-color takes the scrollbar-color pair (thumb track),
424
+ e.g. `var(--studio-fill-offset-40) transparent`;
425
+ --studio-scrollbar-width takes auto | thin | none. */
426
+
427
+ /* Categorical swatches: 8 distinct colours that belong to the theme, for
428
+ cursors, collaborators, tags and charts. walked round the hue wheel from
429
+ the primary, with lightness/chroma pinned to a band that reads on both
430
+ light and dark fills. override any of them individually. */
431
+ --studio-swatch-lightness: 0.7;
432
+ --studio-swatch-chroma: 0.15;
433
+ --studio-swatch-1: oklch(from var(--studio-primary) var(--studio-swatch-lightness) var(--studio-swatch-chroma) h);
434
+ --studio-swatch-2: oklch(from var(--studio-primary) var(--studio-swatch-lightness) var(--studio-swatch-chroma) calc(h + 45));
435
+ --studio-swatch-3: oklch(from var(--studio-primary) var(--studio-swatch-lightness) var(--studio-swatch-chroma) calc(h + 90));
436
+ --studio-swatch-4: oklch(from var(--studio-primary) var(--studio-swatch-lightness) var(--studio-swatch-chroma) calc(h + 135));
437
+ --studio-swatch-5: oklch(from var(--studio-primary) var(--studio-swatch-lightness) var(--studio-swatch-chroma) calc(h + 180));
438
+ --studio-swatch-6: oklch(from var(--studio-primary) var(--studio-swatch-lightness) var(--studio-swatch-chroma) calc(h + 225));
439
+ --studio-swatch-7: oklch(from var(--studio-primary) var(--studio-swatch-lightness) var(--studio-swatch-chroma) calc(h + 270));
440
+ --studio-swatch-8: oklch(from var(--studio-primary) var(--studio-swatch-lightness) var(--studio-swatch-chroma) calc(h + 315));
301
441
 
302
442
  --editor-line: var(--studio-line);
303
443
  --editor-fill: var(--studio-fill);
@@ -357,23 +497,20 @@
357
497
  --editor-secondary-text: color-mix(in oklch, var(--studio-secondary), var(--editor-line) 35%);
358
498
  --editor-danger-text: color-mix(in oklch, var(--studio-danger), var(--editor-line) 35%);
359
499
  --editor-warning-text: color-mix(in oklch, var(--studio-warning), var(--editor-line) 35%);
500
+ --editor-success-text: color-mix(in oklch, var(--studio-success), var(--editor-line) 35%);
501
+ --editor-info-text: color-mix(in oklch, var(--studio-info), var(--editor-line) 35%);
360
502
  --editor-link-text: color-mix(in oklch, var(--studio-link-fill), var(--editor-line) 35%);
361
503
 
362
504
  --editor-family-code: var(--studio-family-code);
363
505
  --editor-family-sans: var(--studio-family-sans);
364
506
  --editor-family: var(--editor-family-sans);
365
507
  --editor-font-size: var(--studio-font-size);
366
- --editor-font-weight: var(--editor-font-weight);
508
+ --editor-font-weight: var(--studio-font-weight);
367
509
  --editor-selection-fill: var(--studio-selection-fill);
368
510
  --editor-selection-line: var(--studio-selection-line);
369
511
  --editor-line-height: var(--studio-line-height);
370
512
  --editor-cursor-fill: var(--editor-line);
371
513
  --text-editor-fill: var(--editor-fill);
372
- --text-editor-fill-offset-10: var(--editor-fill-offset-10);
373
- --text-editor-fill-offset-20: var(--editor-fill-offset-20);
374
- --text-editor-fill-offset-30: var(--editor-fill-offset-30);
375
- --text-editor-fill-offset-40: var(--editor-fill-offset-40);
376
- --text-editor-fill-offset-50: var(--editor-fill-offset-50);
377
514
  --text-editor-fill-offset-10: color-mix(
378
515
  in oklch,
379
516
  color-mix(in oklch, var(--text-editor-fill), var(--text-editor-line) 0%),
@@ -430,6 +567,8 @@
430
567
  --text-editor-secondary-text: color-mix(in oklch, var(--studio-secondary), var(--text-editor-line) 35%);
431
568
  --text-editor-danger-text: color-mix(in oklch, var(--studio-danger), var(--text-editor-line) 35%);
432
569
  --text-editor-warning-text: color-mix(in oklch, var(--studio-warning), var(--text-editor-line) 35%);
570
+ --text-editor-success-text: color-mix(in oklch, var(--studio-success), var(--text-editor-line) 35%);
571
+ --text-editor-info-text: color-mix(in oklch, var(--studio-info), var(--text-editor-line) 35%);
433
572
  --text-editor-link-text: color-mix(in oklch, var(--studio-link-fill), var(--text-editor-line) 35%);
434
573
 
435
574
  --text-editor-family-code: var(--editor-family-code);
@@ -466,7 +605,7 @@
466
605
  --syntax-weight-comment: var(--text-editor-text-weight);
467
606
 
468
607
  --syntax-line-comment: var(--syntax-comment);
469
- --syntax-style-line-comment: var(--syntax-style-line-comment);
608
+ --syntax-style-line-comment: var(--syntax-style-comment);
470
609
  --syntax-fill-line-comment: var(--syntax-fill-comment);
471
610
  --syntax-weight-line-comment: var(--syntax-weight-comment);
472
611
 
@@ -566,13 +705,13 @@
566
705
  --syntax-weight-function--property-name: var(--syntax-weight-variable-name);
567
706
 
568
707
  --syntax-string: var(--text-editor-line);
569
- --syntax-fill-string: var(--text-editor-text-style);
570
- --syntax-style-string: var(--text-editor-text-fill);
708
+ --syntax-fill-string: var(--text-editor-text-fill);
709
+ --syntax-style-string: var(--text-editor-text-style);
571
710
  --syntax-weight-string: var(--text-editor-text-weight);
572
711
 
573
712
  --syntax-number: var(--text-editor-line);
574
- --syntax-fill-number: var(--text-editor-text-style);
575
- --syntax-style-number: var(--text-editor-text-fill);
713
+ --syntax-fill-number: var(--text-editor-text-fill);
714
+ --syntax-style-number: var(--text-editor-text-style);
576
715
  --syntax-weight-number: var(--text-editor-text-weight);
577
716
 
578
717
  --syntax-integer: var(--syntax-number);
@@ -601,8 +740,8 @@
601
740
  --syntax-weight-special--string: var(--syntax-weight-string);
602
741
 
603
742
  --syntax-tag-name: var(--text-editor-line);
604
- --syntax-fill-tag-name: var(--text-editor-text-style);
605
- --syntax-style-tag-name: var(--text-editor-text-fill);
743
+ --syntax-fill-tag-name: var(--text-editor-text-fill);
744
+ --syntax-style-tag-name: var(--text-editor-text-style);
606
745
  --syntax-weight-tag-name: var(--text-editor-text-weight);
607
746
 
608
747
  --syntax-angle-bracket: var(--syntax-punctuation);
@@ -611,33 +750,33 @@
611
750
  --syntax-weight-angle-bracket: var(--syntax-weight-punctuation);
612
751
 
613
752
  --syntax-attribute-name: var(--text-editor-line);
614
- --syntax-fill-attribute-name: var(--text-editor-text-style);
615
- --syntax-style-attribute-name: var(--text-editor-text-fill);
753
+ --syntax-fill-attribute-name: var(--text-editor-text-fill);
754
+ --syntax-style-attribute-name: var(--text-editor-text-style);
616
755
  --syntax-weight-attribute-name: var(--text-editor-text-weight);
617
756
 
618
757
  --syntax-namespace: var(--text-editor-line);
619
- --syntax-fill-namespace: var(--text-editor-text-style);
620
- --syntax-style-namespace: var(--text-editor-text-fill);
758
+ --syntax-fill-namespace: var(--text-editor-text-fill);
759
+ --syntax-style-namespace: var(--text-editor-text-style);
621
760
  --syntax-weight-namespace: var(--text-editor-text-weight);
622
761
 
623
762
  --syntax-strong: var(--text-editor-line);
624
- --syntax-fill-strong: var(--text-editor-text-style);
625
- --syntax-style-strong: var(--text-editor-text-fill);
763
+ --syntax-fill-strong: var(--text-editor-text-fill);
764
+ --syntax-style-strong: var(--text-editor-text-style);
626
765
  --syntax-weight-strong: bold;
627
766
 
628
767
  --syntax-emphasis: var(--text-editor-line);
629
- --syntax-fill-emphasis: var(--text-editor-text-style);
768
+ --syntax-fill-emphasis: var(--text-editor-text-fill);
630
769
  --syntax-style-emphasis: italic;
631
770
  --syntax-weight-emphasis: var(--text-editor-text-weight);
632
771
 
633
772
  --syntax-heading: var(--text-editor-line);
634
- --syntax-fill-heading: var(--text-editor-text-style);
635
- --syntax-style-heading: var(--text-editor-text-fill);
773
+ --syntax-fill-heading: var(--text-editor-text-fill);
774
+ --syntax-style-heading: var(--text-editor-text-style);
636
775
  --syntax-weight-heading: bold;
637
776
 
638
777
  --syntax-link: var(--studio-link);
639
- --syntax-fill-link: var(--text-editor-text-style);
640
- --syntax-style-link: var(--text-editor-text-fill);
778
+ --syntax-fill-link: var(--text-editor-text-fill);
779
+ --syntax-style-link: var(--text-editor-text-style);
641
780
  --syntax-weight-link: var(--text-editor-text-weight);
642
781
 
643
782
  --syntax-quote: var(--syntax-punctuation);
@@ -646,8 +785,8 @@
646
785
  --syntax-weight-quote: var(--syntax-weight-punctuation);
647
786
 
648
787
  --syntax-list: var(--text-editor-line);
649
- --syntax-fill-list: var(--text-editor-text-style);
650
- --syntax-style-list: var(--text-editor-text-fill);
788
+ --syntax-fill-list: var(--text-editor-text-fill);
789
+ --syntax-style-list: var(--text-editor-text-style);
651
790
  --syntax-weight-list: var(--text-editor-text-weight);
652
791
 
653
792
  --syntax-inserted: var(--studio-added);
@@ -671,8 +810,23 @@
671
810
  --syntax-weight-content-separator: var(--text-editor-text-weight);
672
811
  }
673
812
 
813
+ @media (prefers-reduced-motion: reduce) {
814
+ :root,
815
+ :host,
816
+ [theme] {
817
+ --studio-motion-preference: 0;
818
+ }
819
+ }
820
+
674
821
  :root {
675
822
  background-color: var(--studio-chrome-fill);
823
+ /* opt-in, inherited knobs. every fallback is the property's initial value,
824
+ and anything a tool sets on its own elements still wins over inheritance. */
825
+ letter-spacing: var(--studio-letter-spacing, normal);
826
+ font-feature-settings: var(--studio-font-features, normal);
827
+ font-variation-settings: var(--studio-font-variation, normal);
828
+ scrollbar-color: var(--studio-scrollbar-color, auto);
829
+ scrollbar-width: var(--studio-scrollbar-width, auto);
676
830
  }
677
831
 
678
832
  ::selection {
@@ -2,10 +2,10 @@ import {
2
2
  CustomThemeDatatype,
3
3
  DEFAULT_VALUES,
4
4
  EDITABLE_VARIABLES
5
- } from "./chunk-GIPQLUDU.js";
5
+ } from "./chunk-VJZ4NPK4.js";
6
6
  export {
7
7
  CustomThemeDatatype,
8
8
  DEFAULT_VALUES,
9
9
  EDITABLE_VARIABLES
10
10
  };
11
- //# sourceMappingURL=theme-editor-datatype-TMYH7U2S.js.map
11
+ //# sourceMappingURL=theme-editor-datatype-TJ6LYT2U.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  DEFAULT_VALUES,
3
3
  EDITABLE_VARIABLES
4
- } from "./chunk-GIPQLUDU.js";
4
+ } from "./chunk-VJZ4NPK4.js";
5
5
 
6
6
  // src/theme-editor.tsx
7
7
  import { template as _$template } from "solid-js/web";
@@ -34,6 +34,7 @@ function generateThemeCss(name, mode, vars, customCss) {
34
34
  css += ` color-scheme: ${mode};
35
35
  `;
36
36
  for (const [key, value] of Object.entries(vars)) {
37
+ if (!value?.trim()) continue;
37
38
  css += ` ${key}: ${value};
38
39
  `;
39
40
  }
@@ -96,7 +97,8 @@ function ThemeEditorTool(handle, element) {
96
97
  if (!d?.variables) return;
97
98
  const root = document.documentElement;
98
99
  for (const [key, value] of Object.entries(d.variables)) {
99
- root.style.setProperty(key, value);
100
+ if (value?.trim()) root.style.setProperty(key, value);
101
+ else root.style.removeProperty(key);
100
102
  }
101
103
  for (const [label, amount] of FILL_OFFSET_RAMP) {
102
104
  root.style.setProperty(`--studio-fill-offset-${label}`, `color-mix(in oklch, color-mix(in oklch, var(--studio-fill), var(--studio-line) ${amount}%), var(--studio-offset-tint, var(--studio-secondary)) var(--studio-offset-tint-amount, 10%))`);
@@ -119,6 +121,13 @@ function ThemeEditorTool(handle, element) {
119
121
  }
120
122
  });
121
123
  function setVar(key, value) {
124
+ if (!value.trim()) {
125
+ document.documentElement.style.removeProperty(key);
126
+ handle.change((d) => {
127
+ if (d.variables) delete d.variables[key];
128
+ });
129
+ return;
130
+ }
122
131
  handle.change((d) => {
123
132
  if (!d.variables) d.variables = {};
124
133
  d.variables[key] = value;
@@ -207,15 +216,15 @@ function ThemeEditorTool(handle, element) {
207
216
  .theme-editor .btn {
208
217
  padding: var(--studio-space-2xs, 0.25rem) var(--studio-space-sm, 0.5rem);
209
218
  border-radius: var(--studio-radius-sm, 4px);
210
- border: 1px solid color-mix(in oklch, var(--studio-line, black), transparent 80%);
219
+ border: var(--studio-border-width, 1px) var(--studio-border-style, solid) color-mix(in oklch, var(--studio-line, black), transparent 80%);
211
220
  background: var(--studio-fill, white);
212
221
  color: var(--studio-line, black);
213
222
  font-size: 0.8rem;
214
223
  font-family: inherit;
215
- cursor: pointer;
224
+ cursor: var(--studio-cursor-pointer, pointer);
216
225
  }
217
226
  .theme-editor .btn:hover {
218
- background: color-mix(in oklch, var(--studio-fill, white), var(--studio-line, black) 5%);
227
+ background: var(--studio-hover-fill, color-mix(in oklch, var(--studio-fill, white), var(--studio-line, black) 5%));
219
228
  }
220
229
  .theme-editor .btn[data-active] {
221
230
  background: var(--studio-primary-fill, var(--studio-primary, #35f7ca));
@@ -228,15 +237,15 @@ function ThemeEditorTool(handle, element) {
228
237
  gap: var(--studio-space-2xs, 0.25rem);
229
238
  padding: var(--studio-space-2xs, 0.25rem) var(--studio-space-sm, 0.5rem);
230
239
  border-radius: var(--studio-radius-sm, 4px);
231
- border: 1px solid color-mix(in oklch, var(--studio-line, black), transparent 80%);
240
+ border: var(--studio-border-width, 1px) var(--studio-border-style, solid) color-mix(in oklch, var(--studio-line, black), transparent 80%);
232
241
  background: var(--studio-fill, white);
233
242
  color: var(--studio-line, black);
234
243
  font-size: 0.8rem;
235
244
  font-family: inherit;
236
- cursor: pointer;
245
+ cursor: var(--studio-cursor-pointer, pointer);
237
246
  }
238
247
  .theme-editor .mode-toggle:hover {
239
- background: color-mix(in oklch, var(--studio-fill, white), var(--studio-line, black) 5%);
248
+ background: var(--studio-hover-fill, color-mix(in oklch, var(--studio-fill, white), var(--studio-line, black) 5%));
240
249
  }
241
250
  .theme-editor .mode-icon {
242
251
  font-size: 1em;
@@ -251,7 +260,7 @@ function ThemeEditorTool(handle, element) {
251
260
  font-size: 0.75rem;
252
261
  font-weight: 600;
253
262
  text-transform: uppercase;
254
- letter-spacing: 0.05em;
263
+ letter-spacing: var(--studio-chrome-letter-spacing, 0.05em);
255
264
  color: color-mix(in oklch, var(--studio-line, black), transparent 50%);
256
265
  }
257
266
  .theme-editor .var-row {
@@ -267,17 +276,17 @@ function ThemeEditorTool(handle, element) {
267
276
  .theme-editor .color-input {
268
277
  width: 2.5rem;
269
278
  height: 2rem;
270
- border: 1px solid color-mix(in oklch, var(--studio-line, black), transparent 80%);
279
+ border: var(--studio-border-width, 1px) var(--studio-border-style, solid) color-mix(in oklch, var(--studio-line, black), transparent 80%);
271
280
  border-radius: var(--studio-radius-sm, 4px);
272
281
  padding: 2px;
273
- cursor: pointer;
282
+ cursor: var(--studio-cursor-pointer, pointer);
274
283
  background: none;
275
284
  }
276
285
  .theme-editor .text-input {
277
286
  flex: 1;
278
287
  min-width: 0;
279
288
  padding: var(--studio-space-2xs, 0.25rem) var(--studio-space-xs, 0.375rem);
280
- border: 1px solid color-mix(in oklch, var(--studio-line, black), transparent 80%);
289
+ border: var(--studio-border-width, 1px) var(--studio-border-style, solid) color-mix(in oklch, var(--studio-line, black), transparent 80%);
281
290
  border-radius: var(--studio-radius-sm, 4px);
282
291
  background: var(--studio-fill, white);
283
292
  color: var(--studio-line, black);
@@ -285,8 +294,8 @@ function ThemeEditorTool(handle, element) {
285
294
  font-family: inherit;
286
295
  }
287
296
  .theme-editor .text-input:focus {
288
- outline: 2px solid var(--studio-primary-line, var(--studio-primary, #35f7ca));
289
- outline-offset: 1px;
297
+ outline: var(--studio-focus-ring, 2px solid var(--studio-primary-line, var(--studio-primary, #35f7ca)));
298
+ outline-offset: var(--studio-focus-ring-offset, 1px);
290
299
  }
291
300
  .theme-editor .hex-display {
292
301
  font-family: var(--studio-family-code, ui-monospace, monospace);
@@ -295,7 +304,7 @@ function ThemeEditorTool(handle, element) {
295
304
  min-width: 5rem;
296
305
  }
297
306
  .theme-editor .preview {
298
- border: 1px solid color-mix(in oklch, var(--studio-line, black), transparent 80%);
307
+ border: var(--studio-border-width, 1px) var(--studio-border-style, solid) color-mix(in oklch, var(--studio-line, black), transparent 80%);
299
308
  border-radius: var(--studio-radius-md, 8px);
300
309
  padding: var(--studio-space-md, 1rem);
301
310
  display: flex;
@@ -306,7 +315,7 @@ function ThemeEditorTool(handle, element) {
306
315
  font-size: 0.75rem;
307
316
  font-weight: 600;
308
317
  text-transform: uppercase;
309
- letter-spacing: 0.05em;
318
+ letter-spacing: var(--studio-chrome-letter-spacing, 0.05em);
310
319
  color: color-mix(in oklch, var(--studio-line, black), transparent 50%);
311
320
  margin-bottom: var(--studio-space-2xs, 0.25rem);
312
321
  }
@@ -319,14 +328,14 @@ function ThemeEditorTool(handle, element) {
319
328
  width: 2rem;
320
329
  height: 2rem;
321
330
  border-radius: var(--studio-radius-sm, 4px);
322
- border: 1px solid color-mix(in oklch, var(--studio-line, black), transparent 85%);
331
+ border: var(--studio-border-width, 1px) var(--studio-border-style, solid) color-mix(in oklch, var(--studio-line, black), transparent 85%);
323
332
  }
324
333
  .theme-editor .offset-strip {
325
334
  display: flex;
326
335
  height: 1.5rem;
327
336
  border-radius: var(--studio-radius-sm, 4px);
328
337
  overflow: hidden;
329
- border: 1px solid color-mix(in oklch, var(--studio-line, black), transparent 85%);
338
+ border: var(--studio-border-width, 1px) var(--studio-border-style, solid) color-mix(in oklch, var(--studio-line, black), transparent 85%);
330
339
  }
331
340
  .theme-editor .offset-strip > div {
332
341
  flex: 1;
@@ -337,7 +346,7 @@ function ThemeEditorTool(handle, element) {
337
346
  white-space: pre;
338
347
  overflow-x: auto;
339
348
  background: color-mix(in oklch, var(--studio-fill, white), var(--studio-line, black) 3%);
340
- border: 1px solid color-mix(in oklch, var(--studio-line, black), transparent 85%);
349
+ border: var(--studio-border-width, 1px) var(--studio-border-style, solid) color-mix(in oklch, var(--studio-line, black), transparent 85%);
341
350
  border-radius: var(--studio-radius-sm, 4px);
342
351
  padding: var(--studio-space-sm, 0.5rem);
343
352
  max-height: 200px;
@@ -349,7 +358,7 @@ function ThemeEditorTool(handle, element) {
349
358
  min-height: 6rem;
350
359
  resize: vertical;
351
360
  padding: var(--studio-space-sm, 0.5rem);
352
- border: 1px solid color-mix(in oklch, var(--studio-line, black), transparent 80%);
361
+ border: var(--studio-border-width, 1px) var(--studio-border-style, solid) color-mix(in oklch, var(--studio-line, black), transparent 80%);
353
362
  border-radius: var(--studio-radius-sm, 4px);
354
363
  background: var(--studio-fill, white);
355
364
  color: var(--studio-line, black);
@@ -358,8 +367,8 @@ function ThemeEditorTool(handle, element) {
358
367
  overflow-x: auto;
359
368
  }
360
369
  .theme-editor .css-textarea:focus {
361
- outline: 2px solid var(--studio-primary-line, var(--studio-primary, #35f7ca));
362
- outline-offset: 1px;
370
+ outline: var(--studio-focus-ring, 2px solid var(--studio-primary-line, var(--studio-primary, #35f7ca)));
371
+ outline-offset: var(--studio-focus-ring-offset, 1px);
363
372
  }
364
373
  .theme-editor .discovered-label {
365
374
  font-family: var(--studio-family-code, ui-monospace, monospace);
@@ -371,15 +380,15 @@ function ThemeEditorTool(handle, element) {
371
380
  .theme-editor .btn-sm {
372
381
  padding: 2px var(--studio-space-xs, 0.375rem);
373
382
  border-radius: var(--studio-radius-sm, 4px);
374
- border: 1px solid color-mix(in oklch, var(--studio-line, black), transparent 80%);
383
+ border: var(--studio-border-width, 1px) var(--studio-border-style, solid) color-mix(in oklch, var(--studio-line, black), transparent 80%);
375
384
  background: var(--studio-fill, white);
376
385
  color: var(--studio-line, black);
377
386
  font-size: 0.7rem;
378
387
  font-family: inherit;
379
- cursor: pointer;
388
+ cursor: var(--studio-cursor-pointer, pointer);
380
389
  }
381
390
  .theme-editor .btn-sm:hover {
382
- background: color-mix(in oklch, var(--studio-fill, white), var(--studio-line, black) 5%);
391
+ background: var(--studio-hover-fill, color-mix(in oklch, var(--studio-fill, white), var(--studio-line, black) 5%));
383
392
  }
384
393
  `;
385
394
  element.appendChild(style);
@@ -431,6 +440,7 @@ function ThemeEditorTool(handle, element) {
431
440
  get children() {
432
441
  var _el$49 = _tmpl$6();
433
442
  _el$49.$$input = (e) => setVar(v.key, e.currentTarget.value);
443
+ _$effect(() => _$setAttribute(_el$49, "placeholder", v.placeholder));
434
444
  _$effect(() => _el$49.value = vars()[v.key] || DEFAULT_VALUES[v.key] || "");
435
445
  return _el$49;
436
446
  }