dialkit 1.0.0 → 1.1.0

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 (85) hide show
  1. package/README.md +123 -2
  2. package/dist/index.cjs +42 -39
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.d.cts +7 -5
  5. package/dist/index.d.ts +7 -5
  6. package/dist/index.js +42 -39
  7. package/dist/index.js.map +1 -1
  8. package/dist/solid/index.cjs +97 -54
  9. package/dist/solid/index.cjs.map +1 -1
  10. package/dist/solid/index.d.cts +4 -1
  11. package/dist/solid/index.d.ts +4 -1
  12. package/dist/solid/index.js +96 -53
  13. package/dist/solid/index.js.map +1 -1
  14. package/dist/store/index.cjs +450 -0
  15. package/dist/store/index.cjs.map +1 -0
  16. package/dist/store/index.d.cts +124 -0
  17. package/dist/store/index.d.ts +124 -0
  18. package/dist/store/index.js +425 -0
  19. package/dist/store/index.js.map +1 -0
  20. package/dist/styles.css +31 -0
  21. package/dist/svelte/Portal.svelte +30 -0
  22. package/dist/svelte/Portal.svelte.d.ts +9 -0
  23. package/dist/svelte/Portal.svelte.d.ts.map +1 -0
  24. package/dist/svelte/components/ButtonGroup.svelte +16 -0
  25. package/dist/svelte/components/ButtonGroup.svelte.d.ts +11 -0
  26. package/dist/svelte/components/ButtonGroup.svelte.d.ts.map +1 -0
  27. package/dist/svelte/components/ColorControl.svelte +81 -0
  28. package/dist/svelte/components/ColorControl.svelte.d.ts +9 -0
  29. package/dist/svelte/components/ColorControl.svelte.d.ts.map +1 -0
  30. package/dist/svelte/components/ControlRenderer.svelte +84 -0
  31. package/dist/svelte/components/ControlRenderer.svelte.d.ts +11 -0
  32. package/dist/svelte/components/ControlRenderer.svelte.d.ts.map +1 -0
  33. package/dist/svelte/components/DialRoot.svelte +65 -0
  34. package/dist/svelte/components/DialRoot.svelte.d.ts +11 -0
  35. package/dist/svelte/components/DialRoot.svelte.d.ts.map +1 -0
  36. package/dist/svelte/components/EasingVisualization.svelte +50 -0
  37. package/dist/svelte/components/EasingVisualization.svelte.d.ts +10 -0
  38. package/dist/svelte/components/EasingVisualization.svelte.d.ts.map +1 -0
  39. package/dist/svelte/components/Folder.svelte +204 -0
  40. package/dist/svelte/components/Folder.svelte.d.ts +14 -0
  41. package/dist/svelte/components/Folder.svelte.d.ts.map +1 -0
  42. package/dist/svelte/components/Panel.svelte +144 -0
  43. package/dist/svelte/components/Panel.svelte.d.ts +10 -0
  44. package/dist/svelte/components/Panel.svelte.d.ts.map +1 -0
  45. package/dist/svelte/components/PresetManager.svelte +156 -0
  46. package/dist/svelte/components/PresetManager.svelte.d.ts +10 -0
  47. package/dist/svelte/components/PresetManager.svelte.d.ts.map +1 -0
  48. package/dist/svelte/components/SegmentedControl.svelte +106 -0
  49. package/dist/svelte/components/SegmentedControl.svelte.d.ts +13 -0
  50. package/dist/svelte/components/SegmentedControl.svelte.d.ts.map +1 -0
  51. package/dist/svelte/components/SelectControl.svelte +151 -0
  52. package/dist/svelte/components/SelectControl.svelte.d.ts +14 -0
  53. package/dist/svelte/components/SelectControl.svelte.d.ts.map +1 -0
  54. package/dist/svelte/components/Slider.svelte +345 -0
  55. package/dist/svelte/components/Slider.svelte.d.ts +13 -0
  56. package/dist/svelte/components/Slider.svelte.d.ts.map +1 -0
  57. package/dist/svelte/components/SpringControl.svelte +124 -0
  58. package/dist/svelte/components/SpringControl.svelte.d.ts +12 -0
  59. package/dist/svelte/components/SpringControl.svelte.d.ts.map +1 -0
  60. package/dist/svelte/components/SpringVisualization.svelte +115 -0
  61. package/dist/svelte/components/SpringVisualization.svelte.d.ts +9 -0
  62. package/dist/svelte/components/SpringVisualization.svelte.d.ts.map +1 -0
  63. package/dist/svelte/components/TextControl.svelte +19 -0
  64. package/dist/svelte/components/TextControl.svelte.d.ts +10 -0
  65. package/dist/svelte/components/TextControl.svelte.d.ts.map +1 -0
  66. package/dist/svelte/components/Toggle.svelte +21 -0
  67. package/dist/svelte/components/Toggle.svelte.d.ts +9 -0
  68. package/dist/svelte/components/Toggle.svelte.d.ts.map +1 -0
  69. package/dist/svelte/components/TransitionControl.svelte +200 -0
  70. package/dist/svelte/components/TransitionControl.svelte.d.ts +12 -0
  71. package/dist/svelte/components/TransitionControl.svelte.d.ts.map +1 -0
  72. package/dist/svelte/components/transitions.d.ts +6 -0
  73. package/dist/svelte/components/transitions.d.ts.map +1 -0
  74. package/dist/svelte/components/transitions.js +14 -0
  75. package/dist/svelte/createDialKit.svelte.d.ts +7 -0
  76. package/dist/svelte/createDialKit.svelte.d.ts.map +1 -0
  77. package/dist/svelte/createDialKit.svelte.js +82 -0
  78. package/dist/svelte/index.d.ts +19 -0
  79. package/dist/svelte/index.d.ts.map +1 -0
  80. package/dist/svelte/index.js +19 -0
  81. package/dist/svelte/shims.d.ts +9 -0
  82. package/dist/svelte/theme-css.d.ts +2 -0
  83. package/dist/svelte/theme-css.d.ts.map +1 -0
  84. package/dist/svelte/theme-css.js +1097 -0
  85. package/package.json +29 -5
@@ -0,0 +1,1097 @@
1
+ // Auto-generated from src/styles/theme.css — do not edit
2
+ export const themeCSS = `/* Dialkit Theme - Dark glassmorphic design */
3
+ .dialkit-root {
4
+ /* Surfaces */
5
+ --dial-surface: rgba(255, 255, 255, 0.05);
6
+ --dial-surface-hover: rgba(255, 255, 255, 0.1);
7
+ --dial-surface-active: rgba(255, 255, 255, 0.11);
8
+
9
+ /* Text hierarchy - 3 levels */
10
+ --dial-text-root: #FFFFFF; /* Root title */
11
+ --dial-text-section: rgba(255, 255, 255, 0.7); /* Section titles + carets */
12
+ --dial-text-label: rgba(255, 255, 255, 0.7); /* Input labels */
13
+
14
+ /* Legacy aliases */
15
+ --dial-text-primary: rgba(255, 255, 255, 0.95);
16
+ --dial-text-secondary: rgba(255, 255, 255, 0.6);
17
+ --dial-text-tertiary: rgba(255, 255, 255, 0.4);
18
+
19
+ /* Borders */
20
+ --dial-border: rgba(255, 255, 255, 0.1);
21
+ --dial-border-hover: rgba(255, 255, 255, 0.15);
22
+
23
+ /* Glassmorphic panel */
24
+ --dial-glass-bg: #212121;
25
+ --dial-backdrop-blur: 20px;
26
+ --dial-radius: 8px;
27
+ --dial-row-height: 36px;
28
+ --dial-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);
29
+
30
+ /* Fonts */
31
+ font-family: system-ui, -apple-system, 'SF Pro Display', sans-serif;
32
+ -webkit-font-smoothing: antialiased;
33
+ -moz-osx-font-smoothing: grayscale;
34
+ }
35
+
36
+ .dialkit-panel {
37
+ position: fixed;
38
+ z-index: 9999;
39
+ max-height: calc(100vh - 32px);
40
+ overflow: visible;
41
+ }
42
+
43
+ /* Inline mode */
44
+ .dialkit-root[data-mode="inline"] {
45
+ height: 100%;
46
+ }
47
+
48
+ .dialkit-panel[data-mode="inline"] {
49
+ position: static;
50
+ z-index: auto;
51
+ max-height: 100%;
52
+ height: 100%;
53
+ overflow: hidden;
54
+ }
55
+
56
+ .dialkit-panel-inner {
57
+ background: var(--dial-glass-bg);
58
+ border: 1px solid var(--dial-border);
59
+ border-radius: 14px;
60
+ backdrop-filter: blur(var(--dial-backdrop-blur));
61
+ -webkit-backdrop-filter: blur(var(--dial-backdrop-blur));
62
+ padding: 10px 12px 12px 12px;
63
+ transform: translateZ(0);
64
+ transform-origin: top right;
65
+ max-height: calc(100vh - 80px);
66
+ overflow-y: auto;
67
+ }
68
+
69
+
70
+ .dialkit-panel-inner[data-collapsed="true"] {
71
+ border-radius: 50%;
72
+ padding: 12px;
73
+ }
74
+
75
+ .dialkit-panel-inner[data-collapsed="true"] .dialkit-panel-header {
76
+ padding-bottom: 0;
77
+ margin-bottom: 0;
78
+ border-bottom: none;
79
+ }
80
+
81
+ .dialkit-panel-inner[data-collapsed="true"] .dialkit-folder-title-row {
82
+ display: none;
83
+ }
84
+
85
+ .dialkit-panel-inner[data-collapsed="true"] .dialkit-folder-header-top {
86
+ justify-content: center;
87
+ padding: 0;
88
+ }
89
+
90
+ .dialkit-panel-inner::-webkit-scrollbar {
91
+ display: none;
92
+ }
93
+
94
+ .dialkit-panel-inner {
95
+ -ms-overflow-style: none;
96
+ scrollbar-width: none;
97
+ }
98
+
99
+ .dialkit-panel-inline {
100
+ width: 100%;
101
+ height: 100%;
102
+ max-height: none;
103
+ overflow-y: auto;
104
+ box-shadow: none;
105
+ border-radius: 0;
106
+ border: none;
107
+ box-sizing: border-box;
108
+ }
109
+
110
+ .dialkit-panel[data-mode="inline"] .dialkit-panel-wrapper {
111
+ display: flex;
112
+ flex-direction: column;
113
+ width: 100%;
114
+ height: 100%;
115
+ }
116
+
117
+ /* Position variants */
118
+ .dialkit-panel[data-position="top-right"] {
119
+ top: 16px;
120
+ right: 16px;
121
+ }
122
+
123
+ .dialkit-panel[data-position="top-left"] {
124
+ top: 16px;
125
+ left: 16px;
126
+ }
127
+
128
+ .dialkit-panel[data-position="bottom-right"] {
129
+ bottom: 16px;
130
+ right: 16px;
131
+ }
132
+
133
+ .dialkit-panel[data-position="bottom-left"] {
134
+ bottom: 16px;
135
+ left: 16px;
136
+ }
137
+
138
+ /* Folder */
139
+ .dialkit-folder {
140
+ padding-bottom: 8px;
141
+ margin-bottom: 8px;
142
+ border-bottom: 1px solid rgba(255, 255, 255, 0.06);
143
+ }
144
+
145
+ .dialkit-folder:last-child:not(.dialkit-folder-root) {
146
+ padding-bottom: 0;
147
+ margin-bottom: 0;
148
+ }
149
+
150
+ .dialkit-folder-root {
151
+ padding-bottom: 0;
152
+ margin-bottom: 0;
153
+ border-bottom: none;
154
+ }
155
+
156
+ .dialkit-panel-header {
157
+ padding-bottom: 6px;
158
+ margin-bottom: 12px;
159
+ border-bottom: 1px solid rgba(255, 255, 255, 0.06);
160
+ }
161
+
162
+ .dialkit-folder-header {
163
+ cursor: pointer;
164
+ user-select: none;
165
+ }
166
+
167
+ .dialkit-folder-header-top {
168
+ display: flex;
169
+ align-items: center;
170
+ justify-content: space-between;
171
+ padding: 0 0 8px 0;
172
+ }
173
+
174
+
175
+ .dialkit-folder-title {
176
+ font-size: 13px;
177
+ font-weight: 600;
178
+ color: var(--dial-text-section);
179
+ letter-spacing: -0.01em;
180
+ transform: translateY(-0.5px);
181
+ transition: color 0.15s;
182
+ }
183
+
184
+ .dialkit-folder-title-root {
185
+ font-size: 15px;
186
+ font-weight: 600;
187
+ color: var(--dial-text-root);
188
+ transform: translateZ(0);
189
+ }
190
+
191
+ .dialkit-folder-title-row {
192
+ display: flex;
193
+ align-items: center;
194
+ gap: 6px;
195
+ flex: 1;
196
+ white-space: nowrap;
197
+ overflow: hidden;
198
+ }
199
+
200
+ .dialkit-folder-copy {
201
+ display: flex;
202
+ align-items: center;
203
+ justify-content: center;
204
+ width: 20px;
205
+ height: 20px;
206
+ padding: 0;
207
+ background: transparent;
208
+ border: none;
209
+ cursor: pointer;
210
+ }
211
+
212
+ .dialkit-folder-copy svg {
213
+ width: 14px;
214
+ height: 14px;
215
+ color: var(--dial-text-section);
216
+ }
217
+
218
+ .dialkit-folder-icon {
219
+ width: 20px;
220
+ height: 20px;
221
+ padding: 2px;
222
+ box-sizing: border-box;
223
+ flex-shrink: 0;
224
+ color: var(--dial-text-label);
225
+ opacity: 0.6;
226
+ }
227
+
228
+ .dialkit-panel-icon {
229
+ position: absolute;
230
+ top: 12px;
231
+ right: 12px;
232
+ width: 16px;
233
+ height: 16px;
234
+ color: #fff;
235
+ z-index: 1;
236
+ }
237
+
238
+ .dialkit-folder-content {
239
+ will-change: transform;
240
+ }
241
+
242
+ .dialkit-folder-inner {
243
+ display: flex;
244
+ flex-direction: column;
245
+ gap: 6px;
246
+ padding-bottom: 10px;
247
+ }
248
+
249
+ /* Non-root folders - top & bottom HR dividers */
250
+ .dialkit-folder:not(.dialkit-folder-root) {
251
+ border-top: 1px solid rgba(255, 255, 255, 0.06);
252
+ border-bottom: 1px solid rgba(255, 255, 255, 0.06);
253
+ margin-top: 4px;
254
+ margin-bottom: 4px;
255
+ padding-bottom: 0;
256
+ }
257
+
258
+ /* Adjacent non-root folders collapse gap and share a single divider */
259
+ .dialkit-folder:not(.dialkit-folder-root) + .dialkit-folder:not(.dialkit-folder-root) {
260
+ margin-top: -10px;
261
+ border-top: none;
262
+ }
263
+
264
+ /* Non-root folder header - match row height */
265
+ .dialkit-folder:not(.dialkit-folder-root) > .dialkit-folder-header {
266
+ height: var(--dial-row-height);
267
+ padding: 0;
268
+ }
269
+
270
+ .dialkit-folder:not(.dialkit-folder-root) > .dialkit-folder-header > .dialkit-folder-header-top {
271
+ padding: 0;
272
+ height: 100%;
273
+ }
274
+
275
+ /* Root folder inner needs no extra bottom padding */
276
+ .dialkit-folder-root > .dialkit-folder-content > .dialkit-folder-inner {
277
+ padding-bottom: 0;
278
+ }
279
+
280
+ /* Content spacing handled by folder-inner gap */
281
+
282
+
283
+ /* Slider */
284
+ .dialkit-slider-wrapper {
285
+ position: relative;
286
+ height: var(--dial-row-height);
287
+ }
288
+
289
+ .dialkit-slider {
290
+ position: absolute;
291
+ top: 0;
292
+ left: 0;
293
+ width: 100%;
294
+ height: 100%;
295
+ cursor: pointer;
296
+ user-select: none;
297
+ overflow: hidden;
298
+ background: var(--dial-surface);
299
+ border-radius: var(--dial-radius);
300
+ touch-action: none;
301
+ }
302
+
303
+ .dialkit-slider-hashmarks {
304
+ position: absolute;
305
+ inset: 0;
306
+ pointer-events: none;
307
+ }
308
+
309
+ .dialkit-slider-hashmark {
310
+ position: absolute;
311
+ top: 50%;
312
+ width: 1px;
313
+ height: 8px;
314
+ border-radius: 999px;
315
+ transform: translateX(-50%) translateY(-50%);
316
+ background: rgba(255, 255, 255, 0);
317
+ transition: background 200ms;
318
+ }
319
+
320
+ .dialkit-slider-active .dialkit-slider-hashmark {
321
+ background: rgba(255, 255, 255, 0.15);
322
+ }
323
+
324
+ .dialkit-slider-active .dialkit-slider-value {
325
+ color: #fff;
326
+ }
327
+
328
+ .dialkit-slider-fill {
329
+ position: absolute;
330
+ top: 0;
331
+ bottom: 0;
332
+ left: 0;
333
+ transition: background 0.15s;
334
+ pointer-events: none;
335
+ }
336
+
337
+ .dialkit-slider-handle {
338
+ position: absolute;
339
+ top: 50%;
340
+ width: 3px;
341
+ height: 20px;
342
+ border-radius: 999px;
343
+ pointer-events: none;
344
+ }
345
+
346
+ .dialkit-slider-label {
347
+ position: absolute;
348
+ left: 10px;
349
+ top: 50%;
350
+ transform: translateY(calc(-50% - 0.5px));
351
+ font-size: 13px;
352
+ font-weight: 500;
353
+ color: var(--dial-text-label);
354
+ pointer-events: none;
355
+ transition: color 0.15s;
356
+ }
357
+
358
+ .dialkit-slider-value {
359
+ position: absolute;
360
+ right: 10px;
361
+ top: 50%;
362
+ transform: translateY(calc(-50% + 0.5px));
363
+ font-size: 13px;
364
+ font-weight: 500;
365
+ font-family: ui-monospace, 'SF Mono', 'Courier New', monospace;
366
+ color: var(--dial-text-label);
367
+ pointer-events: auto;
368
+ transition: color 0.15s, border-color 0.15s;
369
+ border-bottom: 1px solid transparent;
370
+ padding-bottom: 1px;
371
+ }
372
+
373
+ .dialkit-slider-value-editable {
374
+ border-bottom-color: var(--dial-text-label);
375
+ }
376
+
377
+ .dialkit-slider-input {
378
+ position: absolute;
379
+ right: 10px;
380
+ top: 50%;
381
+ transform: translateY(-50%);
382
+ width: 4ch;
383
+ min-width: 3ch;
384
+ max-width: 6ch;
385
+ font-size: 13px;
386
+ font-weight: 500;
387
+ font-family: ui-monospace, 'SF Mono', 'Courier New', monospace;
388
+ color: var(--dial-text-label);
389
+ background: transparent;
390
+ border: none;
391
+ border-bottom: 1px solid var(--dial-text-label);
392
+ padding: 0 0 1px 0;
393
+ outline: none;
394
+ text-align: right;
395
+ }
396
+
397
+ .dialkit-slider-input:focus {
398
+ color: #fff;
399
+ }
400
+
401
+ /* Segmented Control */
402
+ .dialkit-segmented {
403
+ position: relative;
404
+ display: flex;
405
+ padding: 2px;
406
+ background: transparent;
407
+ border-radius: var(--dial-radius);
408
+ }
409
+
410
+ .dialkit-segmented-pill {
411
+ position: absolute;
412
+ top: 2px;
413
+ bottom: 2px;
414
+ background: var(--dial-surface-active);
415
+ border-radius: 6px;
416
+ z-index: 0;
417
+ pointer-events: none;
418
+ }
419
+
420
+ .dialkit-segmented-button {
421
+ position: relative;
422
+ z-index: 1;
423
+ flex: 1;
424
+ padding: 8px 12px;
425
+ font-family: inherit;
426
+ font-size: 13px;
427
+ font-weight: 500;
428
+ background: transparent;
429
+ border: none;
430
+ cursor: pointer;
431
+ transition: color 0.15s;
432
+ }
433
+
434
+ .dialkit-segmented-button[data-active="true"] {
435
+ color: rgba(255, 255, 255, 0.8);
436
+ }
437
+
438
+ .dialkit-segmented-button[data-active="false"] {
439
+ color: var(--dial-text-label);
440
+ }
441
+
442
+ /* Toggle */
443
+ .dialkit-toggle {
444
+ display: flex;
445
+ align-items: center;
446
+ justify-content: space-between;
447
+ padding: 10px 16px;
448
+ background: var(--dial-surface);
449
+ border-radius: var(--dial-radius);
450
+ cursor: pointer;
451
+ user-select: none;
452
+ transition: background 0.15s;
453
+ }
454
+
455
+ .dialkit-toggle:hover {
456
+ background: var(--dial-surface-hover);
457
+ }
458
+
459
+ .dialkit-toggle-label {
460
+ font-size: 13px;
461
+ font-weight: 500;
462
+ color: var(--dial-text-label);
463
+ transition: color 0.15s;
464
+ }
465
+
466
+ .dialkit-toggle[data-checked="true"] .dialkit-toggle-label {
467
+ color: var(--dial-text-primary);
468
+ }
469
+
470
+ .dialkit-toggle-track {
471
+ width: 36px;
472
+ height: 20px;
473
+ border-radius: 10px;
474
+ background: var(--dial-surface-active);
475
+ transition: background 0.2s;
476
+ position: relative;
477
+ }
478
+
479
+ .dialkit-toggle[data-checked="true"] .dialkit-toggle-track {
480
+ background: rgba(255, 255, 255, 0.3);
481
+ }
482
+
483
+ .dialkit-toggle-thumb {
484
+ position: absolute;
485
+ top: 2px;
486
+ width: 16px;
487
+ height: 16px;
488
+ border-radius: 8px;
489
+ background: rgba(255, 255, 255, 0.8);
490
+ }
491
+
492
+ /* Button Group */
493
+ .dialkit-button-group {
494
+ display: flex;
495
+ flex-direction: column;
496
+ gap: 6px;
497
+ }
498
+
499
+ .dialkit-button {
500
+ flex: 1;
501
+ padding: 10px 16px;
502
+ font-family: inherit;
503
+ font-size: 13px;
504
+ font-weight: 500;
505
+ color: var(--dial-text-secondary);
506
+ background: var(--dial-surface);
507
+ border: none;
508
+ border-radius: var(--dial-radius);
509
+ cursor: pointer;
510
+ transition: background 0.15s, color 0.15s;
511
+ }
512
+
513
+ .dialkit-button:hover {
514
+ background: var(--dial-surface-hover);
515
+ color: var(--dial-text-primary);
516
+ }
517
+
518
+ .dialkit-button:active {
519
+ background: var(--dial-surface-active);
520
+ }
521
+
522
+ /* Labeled Control Row (label + control side by side) */
523
+ .dialkit-labeled-control {
524
+ display: flex;
525
+ align-items: center;
526
+ justify-content: space-between;
527
+ gap: 12px;
528
+ height: var(--dial-row-height);
529
+ padding: 2px 10px 2px 12px;
530
+ background: var(--dial-surface);
531
+ border-radius: var(--dial-radius);
532
+ }
533
+
534
+ .dialkit-labeled-control-label {
535
+ font-size: 13px;
536
+ font-weight: 500;
537
+ color: var(--dial-text-label);
538
+ flex-shrink: 0;
539
+ line-height: 17px;
540
+ }
541
+
542
+ .dialkit-labeled-control .dialkit-segmented {
543
+ flex-shrink: 0;
544
+ }
545
+
546
+ .dialkit-action-button {
547
+ width: 160px;
548
+ flex-shrink: 0;
549
+ padding: 10px 16px;
550
+ font-family: inherit;
551
+ font-size: 13px;
552
+ font-weight: 500;
553
+ color: var(--dial-text-secondary);
554
+ background: var(--dial-surface);
555
+ border: none;
556
+ border-radius: var(--dial-radius);
557
+ cursor: pointer;
558
+ transition: background 0.15s, color 0.15s;
559
+ }
560
+
561
+ .dialkit-action-button:hover {
562
+ background: var(--dial-surface-hover);
563
+ color: var(--dial-text-primary);
564
+ }
565
+
566
+ .dialkit-action-button:active {
567
+ background: var(--dial-surface-active);
568
+ }
569
+
570
+ .dialkit-actions-group {
571
+ align-items: flex-start;
572
+ }
573
+
574
+ .dialkit-actions-stack {
575
+ display: flex;
576
+ flex-direction: column;
577
+ gap: 6px;
578
+ width: 160px;
579
+ }
580
+
581
+ /* Spring Visualization */
582
+ .dialkit-spring-viz {
583
+ width: 100%;
584
+ border-radius: var(--dial-radius);
585
+ background: var(--dial-surface);
586
+ overflow: visible;
587
+ }
588
+
589
+ .dialkit-easing-viz {
590
+ width: 100%;
591
+ aspect-ratio: 256 / 140;
592
+ }
593
+
594
+ /* Panel Wrapper (contains panel + toolbar) */
595
+ .dialkit-panel-wrapper {
596
+ display: inline-flex;
597
+ flex-direction: column;
598
+ }
599
+
600
+ /* Panel Toolbar */
601
+ .dialkit-panel-toolbar {
602
+ display: flex;
603
+ align-items: center;
604
+ gap: 6px;
605
+ height: var(--dial-row-height);
606
+ margin-bottom: 6px;
607
+ }
608
+
609
+ .dialkit-toolbar-add {
610
+ display: flex;
611
+ align-items: center;
612
+ justify-content: center;
613
+ width: var(--dial-row-height);
614
+ height: var(--dial-row-height);
615
+ padding: 0;
616
+ flex-shrink: 0;
617
+ background: var(--dial-surface);
618
+ border: none;
619
+ border-radius: var(--dial-radius);
620
+ cursor: pointer;
621
+ transition: background 0.15s;
622
+ }
623
+
624
+ .dialkit-toolbar-add:hover {
625
+ background: var(--dial-surface-hover);
626
+ }
627
+
628
+ .dialkit-toolbar-add svg {
629
+ width: 16px;
630
+ height: 16px;
631
+ color: var(--dial-text-label);
632
+ }
633
+
634
+ .dialkit-toolbar-copy {
635
+ position: relative;
636
+ display: flex;
637
+ align-items: center;
638
+ gap: 6px;
639
+ height: var(--dial-row-height);
640
+ padding: 0 12px;
641
+ flex-shrink: 0;
642
+ font-family: inherit;
643
+ font-size: 13px;
644
+ font-weight: 500;
645
+ color: var(--dial-text-label);
646
+ background: var(--dial-surface);
647
+ border: none;
648
+ border-radius: var(--dial-radius);
649
+ cursor: pointer;
650
+ transition: background 0.15s;
651
+ }
652
+
653
+ .dialkit-toolbar-copy:hover {
654
+ background: var(--dial-surface-hover);
655
+ }
656
+
657
+ .dialkit-toolbar-copy-icon-wrap {
658
+ position: relative;
659
+ width: 16px;
660
+ height: 16px;
661
+ flex-shrink: 0;
662
+ }
663
+
664
+ .dialkit-toolbar-copy-icon {
665
+ position: absolute;
666
+ inset: 0;
667
+ width: 16px;
668
+ height: 16px;
669
+ }
670
+
671
+ /* Text Control */
672
+ .dialkit-text-control {
673
+ display: flex;
674
+ align-items: center;
675
+ justify-content: space-between;
676
+ gap: 12px;
677
+ height: var(--dial-row-height);
678
+ padding: 0 12px;
679
+ background: var(--dial-surface);
680
+ border-radius: var(--dial-radius);
681
+ }
682
+
683
+ .dialkit-text-label {
684
+ font-size: 13px;
685
+ font-weight: 500;
686
+ color: var(--dial-text-label);
687
+ flex-shrink: 0;
688
+ }
689
+
690
+ .dialkit-text-input {
691
+ flex: 1;
692
+ min-width: 0;
693
+ font-family: inherit;
694
+ font-size: 13px;
695
+ font-weight: 500;
696
+ color: var(--dial-text-label);
697
+ background: transparent;
698
+ border: none;
699
+ padding: 0;
700
+ outline: none;
701
+ text-align: right;
702
+ cursor: text;
703
+ }
704
+
705
+ .dialkit-text-input:focus {
706
+ color: #fff;
707
+ }
708
+
709
+ .dialkit-text-input::placeholder {
710
+ color: var(--dial-text-tertiary);
711
+ }
712
+
713
+ /* Select Control - Full-width row */
714
+ .dialkit-select-row {
715
+ }
716
+
717
+ .dialkit-select-trigger {
718
+ display: flex;
719
+ align-items: center;
720
+ justify-content: space-between;
721
+ width: 100%;
722
+ height: var(--dial-row-height);
723
+ padding: 0 12px;
724
+ font-family: inherit;
725
+ font-size: 13px;
726
+ font-weight: 500;
727
+ color: var(--dial-text-label);
728
+ background: var(--dial-surface);
729
+ border: none;
730
+ border-radius: var(--dial-radius);
731
+ cursor: pointer;
732
+ transition: background 0.15s;
733
+ }
734
+
735
+ .dialkit-select-trigger:hover {
736
+ background: var(--dial-surface-hover);
737
+ }
738
+
739
+ .dialkit-select-trigger[data-open="true"] {
740
+ background: var(--dial-surface-active);
741
+ }
742
+
743
+ .dialkit-select-label {
744
+ font-size: 13px;
745
+ font-weight: 500;
746
+ color: var(--dial-text-label);
747
+ flex-shrink: 0;
748
+ transform: translateY(-0.5px);
749
+ }
750
+
751
+ .dialkit-select-right {
752
+ display: flex;
753
+ align-items: center;
754
+ gap: 8px;
755
+ }
756
+
757
+ .dialkit-select-value {
758
+ font-size: 13px;
759
+ font-weight: 500;
760
+ color: var(--dial-text-label);
761
+ transform: translateY(-0.5px);
762
+ overflow: hidden;
763
+ text-overflow: ellipsis;
764
+ white-space: nowrap;
765
+ }
766
+
767
+ .dialkit-select-chevron {
768
+ width: 20px;
769
+ height: 20px;
770
+ padding: 2px;
771
+ box-sizing: border-box;
772
+ flex-shrink: 0;
773
+ opacity: 0.6;
774
+ }
775
+
776
+ /* Select Dropdown (portaled to body) */
777
+ .dialkit-select-dropdown {
778
+ background: var(--dial-glass-bg);
779
+ border: 1px solid var(--dial-border);
780
+ border-radius: var(--dial-radius);
781
+ padding: 4px;
782
+ z-index: 10000;
783
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
784
+ }
785
+
786
+ .dialkit-select-option {
787
+ display: block;
788
+ width: 100%;
789
+ padding: 8px 10px;
790
+ font-family: inherit;
791
+ font-size: 13px;
792
+ font-weight: 500;
793
+ color: var(--dial-text-label);
794
+ background: transparent;
795
+ border: none;
796
+ border-radius: 6px;
797
+ cursor: pointer;
798
+ text-align: left;
799
+ transition: background 0.15s, color 0.15s;
800
+ }
801
+
802
+ .dialkit-select-option:hover {
803
+ background: var(--dial-surface-hover);
804
+ }
805
+
806
+ .dialkit-select-option[data-selected="true"] {
807
+ color: var(--dial-text-primary);
808
+ background: var(--dial-surface-active);
809
+ }
810
+
811
+ /* Color Control */
812
+ .dialkit-color-control {
813
+ display: flex;
814
+ align-items: center;
815
+ justify-content: space-between;
816
+ gap: 12px;
817
+ height: var(--dial-row-height);
818
+ padding: 0 12px;
819
+ background: var(--dial-surface);
820
+ border-radius: var(--dial-radius);
821
+ }
822
+
823
+ .dialkit-color-label {
824
+ font-size: 13px;
825
+ font-weight: 500;
826
+ color: var(--dial-text-label);
827
+ flex-shrink: 0;
828
+ transform: translateY(-0.5px);
829
+ }
830
+
831
+ .dialkit-color-inputs {
832
+ display: flex;
833
+ align-items: center;
834
+ gap: 8px;
835
+ }
836
+
837
+ .dialkit-color-hex {
838
+ font-size: 13px;
839
+ font-weight: 500;
840
+ font-family: ui-monospace, 'SF Mono', 'Courier New', monospace;
841
+ color: var(--dial-text-label);
842
+ cursor: text;
843
+ transform: translateY(-0.5px);
844
+ }
845
+
846
+ .dialkit-color-hex-input {
847
+ width: 7ch;
848
+ font-size: 13px;
849
+ font-weight: 500;
850
+ font-family: ui-monospace, 'SF Mono', 'Courier New', monospace;
851
+ color: var(--dial-text-label);
852
+ background: transparent;
853
+ border: none;
854
+ padding: 0;
855
+ outline: none;
856
+ text-transform: uppercase;
857
+ transform: translateY(-0.5px);
858
+ }
859
+
860
+ .dialkit-color-hex-input:focus {
861
+ color: #fff;
862
+ }
863
+
864
+ .dialkit-color-swatch {
865
+ width: 20px;
866
+ height: 20px;
867
+ border-radius: 4px;
868
+ border: 1px solid rgba(255, 255, 255, 0.2);
869
+ cursor: pointer;
870
+ transition: transform 0.15s;
871
+ }
872
+
873
+ .dialkit-color-swatch:hover {
874
+ transform: scale(1.1);
875
+ }
876
+
877
+ .dialkit-color-picker-native {
878
+ position: absolute;
879
+ width: 0;
880
+ height: 0;
881
+ opacity: 0;
882
+ pointer-events: none;
883
+ }
884
+
885
+ /* Preset Manager */
886
+ .dialkit-preset-manager {
887
+ position: relative;
888
+ flex: 1;
889
+ }
890
+
891
+ .dialkit-preset-trigger {
892
+ display: flex;
893
+ align-items: center;
894
+ justify-content: space-between;
895
+ width: 100%;
896
+ height: var(--dial-row-height);
897
+ padding: 0 12px;
898
+ font-family: inherit;
899
+ font-size: 13px;
900
+ font-weight: 500;
901
+ color: var(--dial-text-label);
902
+ background: var(--dial-surface);
903
+ border: none;
904
+ border-radius: var(--dial-radius);
905
+ cursor: pointer;
906
+ transition: background 0.15s;
907
+ }
908
+
909
+ .dialkit-preset-trigger:hover {
910
+ background: var(--dial-surface-hover);
911
+ }
912
+
913
+ .dialkit-preset-trigger[data-disabled="true"] {
914
+ cursor: default;
915
+ }
916
+
917
+ .dialkit-preset-trigger[data-disabled="true"]:hover {
918
+ background: var(--dial-surface);
919
+ }
920
+
921
+ .dialkit-preset-trigger[data-open="true"] {
922
+ background: var(--dial-surface-active);
923
+ }
924
+
925
+ .dialkit-preset-label {
926
+ overflow: hidden;
927
+ text-overflow: ellipsis;
928
+ white-space: nowrap;
929
+ }
930
+
931
+
932
+ .dialkit-preset-dropdown {
933
+ width: max-content;
934
+ background: #2a2a2a;
935
+ border: 1px solid var(--dial-border);
936
+ border-radius: 12px;
937
+ padding: 4px;
938
+ z-index: 10000;
939
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.5);
940
+ }
941
+
942
+ .dialkit-preset-list {
943
+ display: flex;
944
+ flex-direction: column;
945
+ gap: 2px;
946
+ margin-bottom: 4px;
947
+ padding-bottom: 4px;
948
+ border-bottom: 1px solid var(--dial-border);
949
+ }
950
+
951
+ .dialkit-preset-item {
952
+ display: flex;
953
+ align-items: center;
954
+ justify-content: space-between;
955
+ padding: 8px 10px 8px 10px;
956
+ gap: 8px;
957
+ border-radius: 8px;
958
+ cursor: pointer;
959
+ transition: background 0.15s;
960
+ }
961
+
962
+ .dialkit-preset-item:hover {
963
+ background: var(--dial-surface-hover);
964
+ }
965
+
966
+ .dialkit-preset-item[data-active="true"] {
967
+ background: var(--dial-surface-active);
968
+ }
969
+
970
+ .dialkit-preset-name {
971
+ font-size: 13px;
972
+ font-weight: 500;
973
+ color: var(--dial-text-label);
974
+ overflow: hidden;
975
+ text-overflow: ellipsis;
976
+ white-space: nowrap;
977
+ }
978
+
979
+ .dialkit-preset-item[data-active="true"] .dialkit-preset-name {
980
+ color: var(--dial-text-primary);
981
+ }
982
+
983
+ .dialkit-preset-delete {
984
+ display: flex;
985
+ align-items: center;
986
+ justify-content: center;
987
+ width: 24px;
988
+ height: 24px;
989
+ padding: 0;
990
+ background: transparent;
991
+ border: none;
992
+ cursor: pointer;
993
+ opacity: 0;
994
+ transition: opacity 0.15s;
995
+ flex-shrink: 0;
996
+ }
997
+
998
+ .dialkit-preset-item:hover .dialkit-preset-delete {
999
+ opacity: 0.6;
1000
+ }
1001
+
1002
+ .dialkit-preset-delete:hover {
1003
+ opacity: 1 !important;
1004
+ }
1005
+
1006
+ .dialkit-preset-delete svg {
1007
+ width: 14px;
1008
+ height: 14px;
1009
+ color: #fff;
1010
+ pointer-events: none;
1011
+ }
1012
+
1013
+ .dialkit-preset-save-btn {
1014
+ display: flex;
1015
+ align-items: center;
1016
+ justify-content: center;
1017
+ gap: 6px;
1018
+ width: 100%;
1019
+ padding: 8px 10px;
1020
+ font-family: inherit;
1021
+ font-size: 13px;
1022
+ font-weight: 500;
1023
+ color: var(--dial-text-label);
1024
+ background: transparent;
1025
+ border: none;
1026
+ border-radius: 6px;
1027
+ cursor: pointer;
1028
+ transition: background 0.15s, color 0.15s;
1029
+ }
1030
+
1031
+ .dialkit-preset-save-btn:hover {
1032
+ background: var(--dial-surface-hover);
1033
+ color: var(--dial-text-primary);
1034
+ }
1035
+
1036
+ .dialkit-preset-save-btn svg {
1037
+ width: 12px;
1038
+ height: 12px;
1039
+ }
1040
+
1041
+ .dialkit-preset-save-row {
1042
+ display: flex;
1043
+ align-items: center;
1044
+ gap: 6px;
1045
+ padding: 4px;
1046
+ }
1047
+
1048
+ .dialkit-preset-input {
1049
+ flex: 1;
1050
+ min-width: 0;
1051
+ padding: 6px 8px;
1052
+ font-family: inherit;
1053
+ font-size: 13px;
1054
+ color: var(--dial-text-primary);
1055
+ background: var(--dial-surface);
1056
+ border: 1px solid var(--dial-border);
1057
+ border-radius: 6px;
1058
+ outline: none;
1059
+ }
1060
+
1061
+ .dialkit-preset-input:focus {
1062
+ border-color: var(--dial-text-label);
1063
+ }
1064
+
1065
+ .dialkit-preset-input::placeholder {
1066
+ color: var(--dial-text-tertiary);
1067
+ }
1068
+
1069
+ .dialkit-preset-confirm {
1070
+ display: flex;
1071
+ align-items: center;
1072
+ justify-content: center;
1073
+ width: 28px;
1074
+ height: 28px;
1075
+ padding: 0;
1076
+ background: var(--dial-surface);
1077
+ border: none;
1078
+ border-radius: 6px;
1079
+ cursor: pointer;
1080
+ transition: background 0.15s;
1081
+ }
1082
+
1083
+ .dialkit-preset-confirm:hover:not(:disabled) {
1084
+ background: var(--dial-surface-hover);
1085
+ }
1086
+
1087
+ .dialkit-preset-confirm:disabled {
1088
+ opacity: 0.4;
1089
+ cursor: not-allowed;
1090
+ }
1091
+
1092
+ .dialkit-preset-confirm svg {
1093
+ width: 14px;
1094
+ height: 14px;
1095
+ color: var(--dial-text-label);
1096
+ }
1097
+ `;