dialkit 1.2.1 → 1.4.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 (88) hide show
  1. package/README.md +653 -6
  2. package/dist/dropdown-position.d.ts +15 -0
  3. package/dist/dropdown-position.js +22 -0
  4. package/dist/dropdown-position.js.map +1 -0
  5. package/dist/icons.d.ts +4 -1
  6. package/dist/icons.js +13 -0
  7. package/dist/icons.js.map +1 -1
  8. package/dist/index.cjs +3796 -768
  9. package/dist/index.cjs.map +1 -1
  10. package/dist/index.d.cts +315 -10
  11. package/dist/index.d.ts +315 -10
  12. package/dist/index.js +3733 -711
  13. package/dist/index.js.map +1 -1
  14. package/dist/panel-drag.d.ts +19 -0
  15. package/dist/panel-drag.js +72 -0
  16. package/dist/panel-drag.js.map +1 -0
  17. package/dist/solid/index.d.ts +264 -5
  18. package/dist/solid/index.js +5277 -1632
  19. package/dist/solid/index.js.map +1 -1
  20. package/dist/store/index.cjs +329 -57
  21. package/dist/store/index.cjs.map +1 -1
  22. package/dist/store/index.d.cts +43 -4
  23. package/dist/store/index.d.ts +43 -4
  24. package/dist/store/index.js +321 -56
  25. package/dist/store/index.js.map +1 -1
  26. package/dist/styles.css +809 -7
  27. package/dist/svelte/components/ControlRenderer.svelte +5 -2
  28. package/dist/svelte/components/ControlRenderer.svelte.d.ts +2 -0
  29. package/dist/svelte/components/ControlRenderer.svelte.d.ts.map +1 -1
  30. package/dist/svelte/components/DialRoot.svelte +218 -16
  31. package/dist/svelte/components/DialRoot.svelte.d.ts +1 -0
  32. package/dist/svelte/components/DialRoot.svelte.d.ts.map +1 -1
  33. package/dist/svelte/components/Folder.svelte +24 -13
  34. package/dist/svelte/components/Folder.svelte.d.ts +1 -0
  35. package/dist/svelte/components/Folder.svelte.d.ts.map +1 -1
  36. package/dist/svelte/components/Panel.svelte +104 -71
  37. package/dist/svelte/components/Panel.svelte.d.ts +4 -0
  38. package/dist/svelte/components/Panel.svelte.d.ts.map +1 -1
  39. package/dist/svelte/components/PresetManager.svelte +5 -5
  40. package/dist/svelte/components/PresetManager.svelte.d.ts.map +1 -1
  41. package/dist/svelte/components/SelectControl.svelte +6 -14
  42. package/dist/svelte/components/SelectControl.svelte.d.ts.map +1 -1
  43. package/dist/svelte/components/Timeline/ClipPopover.svelte +206 -0
  44. package/dist/svelte/components/Timeline/ClipPopover.svelte.d.ts +26 -0
  45. package/dist/svelte/components/Timeline/ClipPopover.svelte.d.ts.map +1 -0
  46. package/dist/svelte/components/Timeline/DialTimeline.svelte +76 -0
  47. package/dist/svelte/components/Timeline/DialTimeline.svelte.d.ts +13 -0
  48. package/dist/svelte/components/Timeline/DialTimeline.svelte.d.ts.map +1 -0
  49. package/dist/svelte/components/Timeline/TimelineClip.svelte +233 -0
  50. package/dist/svelte/components/Timeline/TimelineClip.svelte.d.ts +24 -0
  51. package/dist/svelte/components/Timeline/TimelineClip.svelte.d.ts.map +1 -0
  52. package/dist/svelte/components/Timeline/TimelineSection.svelte +756 -0
  53. package/dist/svelte/components/Timeline/TimelineSection.svelte.d.ts +12 -0
  54. package/dist/svelte/components/Timeline/TimelineSection.svelte.d.ts.map +1 -0
  55. package/dist/svelte/components/Timeline/TimelineToggleButton.svelte +25 -0
  56. package/dist/svelte/components/Timeline/TimelineToggleButton.svelte.d.ts +4 -0
  57. package/dist/svelte/components/Timeline/TimelineToggleButton.svelte.d.ts.map +1 -0
  58. package/dist/svelte/components/TransitionControl.svelte +26 -11
  59. package/dist/svelte/components/TransitionControl.svelte.d.ts +9 -0
  60. package/dist/svelte/components/TransitionControl.svelte.d.ts.map +1 -1
  61. package/dist/svelte/createDialKit.svelte.d.ts +11 -1
  62. package/dist/svelte/createDialKit.svelte.d.ts.map +1 -1
  63. package/dist/svelte/createDialKit.svelte.js +61 -34
  64. package/dist/svelte/createDialTimeline.svelte.d.ts +4 -0
  65. package/dist/svelte/createDialTimeline.svelte.d.ts.map +1 -0
  66. package/dist/svelte/createDialTimeline.svelte.js +73 -0
  67. package/dist/svelte/index.d.ts +7 -3
  68. package/dist/svelte/index.d.ts.map +1 -1
  69. package/dist/svelte/index.js +4 -1
  70. package/dist/svelte/theme-css.d.ts +1 -1
  71. package/dist/svelte/theme-css.d.ts.map +1 -1
  72. package/dist/svelte/theme-css.js +809 -7
  73. package/dist/timeline/index.cjs +1288 -0
  74. package/dist/timeline/index.cjs.map +1 -0
  75. package/dist/timeline/index.d.cts +443 -0
  76. package/dist/timeline/index.d.ts +443 -0
  77. package/dist/timeline/index.js +1233 -0
  78. package/dist/timeline/index.js.map +1 -0
  79. package/dist/vue/index.d.ts +325 -12
  80. package/dist/vue/index.js +3226 -280
  81. package/dist/vue/index.js.map +1 -1
  82. package/package.json +23 -13
  83. package/dist/solid/index.cjs +0 -3079
  84. package/dist/solid/index.cjs.map +0 -1
  85. package/dist/solid/index.d.cts +0 -258
  86. package/dist/vue/index.cjs +0 -3056
  87. package/dist/vue/index.cjs.map +0 -1
  88. package/dist/vue/index.d.cts +0 -675
@@ -1,5 +1,5 @@
1
1
  import * as vue from 'vue';
2
- import { ComputedRef, ObjectDirective, InjectionKey, Ref, PropType, h } from 'vue';
2
+ import { ComputedRef, ObjectDirective, PropType, InjectionKey, Ref, VNodeChild } from 'vue';
3
3
 
4
4
  type SpringConfig = {
5
5
  type: 'spring';
@@ -43,6 +43,9 @@ type DialConfig = {
43
43
  type ResolvedValues<T extends DialConfig> = {
44
44
  [K in keyof T]: T[K] extends [number, number, number, number?] ? number : T[K] extends SpringConfig ? TransitionConfig : T[K] extends EasingConfig ? TransitionConfig : T[K] extends SelectConfig ? string : T[K] extends ColorConfig ? string : T[K] extends TextConfig ? string : T[K] extends DialConfig ? ResolvedValues<T[K]> : T[K];
45
45
  };
46
+ type DialKitValueUpdates<T extends DialConfig> = {
47
+ [K in keyof T as K extends '_collapsed' ? never : K]?: T[K] extends [number, number, number, number?] ? number : T[K] extends SpringConfig | EasingConfig ? TransitionConfig : T[K] extends ActionConfig ? never : T[K] extends SelectConfig | ColorConfig | TextConfig ? string : T[K] extends DialConfig ? DialKitValueUpdates<T[K]> : T[K];
48
+ };
46
49
  type ShortcutMode = 'fine' | 'normal' | 'coarse';
47
50
  type ShortcutInteraction = 'scroll' | 'drag' | 'move' | 'scroll-only';
48
51
  type ShortcutConfig = {
@@ -73,6 +76,7 @@ type PanelConfig = {
73
76
  controls: ControlMeta[];
74
77
  values: Record<string, DialValue>;
75
78
  shortcuts: Record<string, ShortcutConfig>;
79
+ kind?: 'timeline';
76
80
  };
77
81
  type Listener = () => void;
78
82
  type ActionListener = (action: string) => void;
@@ -81,8 +85,21 @@ type Preset = {
81
85
  name: string;
82
86
  values: Record<string, DialValue>;
83
87
  };
88
+ type DialKitPersistOptions = boolean | {
89
+ key?: string;
90
+ storage?: 'localStorage' | 'sessionStorage';
91
+ presets?: boolean;
92
+ };
93
+ type DialStorePanelOptions = {
94
+ retainOnUnmount?: boolean;
95
+ persist?: DialKitPersistOptions;
96
+ kind?: 'timeline';
97
+ };
84
98
  declare class DialStoreClass {
85
99
  private panels;
100
+ private panelsSnapshot;
101
+ private standardPanelsSnapshot;
102
+ private timelinePanelsSnapshot;
86
103
  private listeners;
87
104
  private globalListeners;
88
105
  private snapshots;
@@ -90,17 +107,23 @@ declare class DialStoreClass {
90
107
  private presets;
91
108
  private activePreset;
92
109
  private baseValues;
93
- registerPanel(id: string, name: string, config: DialConfig, shortcuts?: Record<string, ShortcutConfig>): void;
94
- updatePanel(id: string, name: string, config: DialConfig, shortcuts?: Record<string, ShortcutConfig>): void;
110
+ private defaultValues;
111
+ private registrationCounts;
112
+ private retainedPanels;
113
+ private persistConfigs;
114
+ registerPanel(id: string, name: string, config: DialConfig, shortcuts?: Record<string, ShortcutConfig>, options?: DialStorePanelOptions): void;
115
+ updatePanel(id: string, name: string, config: DialConfig, shortcuts?: Record<string, ShortcutConfig>, options?: DialStorePanelOptions): void;
95
116
  unregisterPanel(id: string): void;
96
117
  updateValue(panelId: string, path: string, value: DialValue): void;
118
+ updateValues(panelId: string, updates: Record<string, DialValue>): void;
119
+ resetValues(panelId: string): void;
97
120
  updateSpringMode(panelId: string, path: string, mode: 'simple' | 'advanced'): void;
98
121
  getSpringMode(panelId: string, path: string): 'simple' | 'advanced';
99
122
  updateTransitionMode(panelId: string, path: string, mode: 'easing' | 'simple' | 'advanced'): void;
100
123
  getTransitionMode(panelId: string, path: string): 'easing' | 'simple' | 'advanced';
101
124
  getValue(panelId: string, path: string): DialValue | undefined;
102
125
  getValues(panelId: string): Record<string, DialValue>;
103
- getPanels(): PanelConfig[];
126
+ getPanels(kind?: 'panel' | 'timeline'): PanelConfig[];
104
127
  getPanel(id: string): PanelConfig | undefined;
105
128
  subscribe(panelId: string, listener: Listener): () => void;
106
129
  subscribeGlobal(listener: Listener): () => void;
@@ -123,6 +146,13 @@ declare class DialStoreClass {
123
146
  control: ControlMeta;
124
147
  shortcut: ShortcutConfig;
125
148
  }>;
149
+ private configurePanelRetention;
150
+ private reconcileValues;
151
+ private reconcilePresets;
152
+ private normalizePersistConfig;
153
+ private loadPersistedPanel;
154
+ private persistPanel;
155
+ private getStorage;
126
156
  private findControlByPath;
127
157
  private notify;
128
158
  private notifyGlobal;
@@ -147,10 +177,176 @@ declare class DialStoreClass {
147
177
  declare const DialStore: DialStoreClass;
148
178
 
149
179
  interface UseDialOptions {
180
+ id?: string;
181
+ persist?: DialKitPersistOptions;
150
182
  onAction?: (action: string) => void;
151
183
  shortcuts?: Record<string, ShortcutConfig>;
152
184
  }
185
+ interface DialKitController<T extends DialConfig> {
186
+ values: ComputedRef<ResolvedValues<T>>;
187
+ setValue: (path: string, value: DialValue) => void;
188
+ setValues: (values: DialKitValueUpdates<T>) => void;
189
+ resetValues: () => void;
190
+ getValues: () => ResolvedValues<T>;
191
+ }
153
192
  declare function useDialKit<T extends DialConfig>(name: string, config: T, options?: UseDialOptions): ComputedRef<ResolvedValues<T>>;
193
+ declare function useDialKitController<T extends DialConfig>(name: string, config: T, options?: UseDialOptions): DialKitController<T>;
194
+
195
+ type TimelineClipLoop = 'off' | 'repeat';
196
+ type TimelineStepValues = {
197
+ [key: string]: DialConfig[string] | undefined;
198
+ };
199
+ type TimelineStepConfig = {
200
+ duration?: number;
201
+ to?: TimelineStepValues;
202
+ transition?: TransitionConfig;
203
+ };
204
+ type TimelinePropStepConfig = {
205
+ duration?: number;
206
+ to?: number | string;
207
+ transition?: TransitionConfig;
208
+ };
209
+ type TimelinePropConfig = {
210
+ from?: number | string;
211
+ to?: number | string;
212
+ duration?: number;
213
+ /** Offset from the clip's `at` in seconds. */
214
+ delay?: number;
215
+ transition?: TransitionConfig;
216
+ steps?: TimelinePropStepConfig[];
217
+ };
218
+ type TimelineClipBase = {
219
+ at: number;
220
+ duration?: number;
221
+ transition?: TransitionConfig;
222
+ loop?: boolean | TimelineClipLoop;
223
+ };
224
+ type TimelineClipConfig = TimelineClipBase & ({
225
+ from?: DialConfig;
226
+ to?: DialConfig;
227
+ steps?: never;
228
+ props?: never;
229
+ } | {
230
+ from?: DialConfig;
231
+ to?: never;
232
+ /** Sequential legs on one row — a segmented bar; boundaries retime legs. */
233
+ steps: TimelineStepConfig[];
234
+ props?: never;
235
+ } | {
236
+ from?: never;
237
+ to?: never;
238
+ steps?: never;
239
+ /** Independent per-property tracks — mutually exclusive with from/to/steps. */
240
+ props: {
241
+ [prop: string]: TimelinePropConfig;
242
+ };
243
+ });
244
+ /** Nested keys group clips into a collapsible layer — purely presentational. */
245
+ type TimelineGroupConfig = {
246
+ [key: string]: TimelineClipConfig;
247
+ };
248
+ type TimelineConfig = {
249
+ /** Total timeline length in seconds. Inferred from the last clip when omitted. */
250
+ duration?: number;
251
+ } & {
252
+ [key: string]: TimelineClipConfig | TimelineGroupConfig | number | undefined;
253
+ };
254
+ /** CSS-friendly output for consumers not using Motion — spread into a style. */
255
+ type TimelineClipCss = {
256
+ transitionDuration: string;
257
+ transitionTimingFunction: string;
258
+ };
259
+ type TimelineClipValues<C extends TimelineClipConfig = TimelineClipConfig> = {
260
+ at: number;
261
+ duration: number;
262
+ /** Effective code-defined loop mode. */
263
+ loop: TimelineClipLoop;
264
+ /** Playhead is at or past the clip start. */
265
+ started: boolean;
266
+ /** Playhead is inside the clip — for looping clips, inside any cycle. */
267
+ active: boolean;
268
+ /** Playhead is past the clip end (for looping clips, past the timeline end). */
269
+ done: boolean;
270
+ /**
271
+ * 0–1 position of the playhead within the clip — cycle progress (a
272
+ * sawtooth) for looping clips, sequence progress for steps clips.
273
+ */
274
+ progress: number;
275
+ /** Index of the leg under the playhead, for sequence clips. */
276
+ step: C['steps'] extends TimelineStepConfig[] ? number : undefined;
277
+ from: C['props'] extends Record<string, TimelinePropConfig> ? {
278
+ [K in keyof C['props']]: number | string;
279
+ } : C['from'] extends DialConfig ? ResolvedValues<C['from']> : undefined;
280
+ to: C['props'] extends Record<string, TimelinePropConfig> ? {
281
+ [K in keyof C['props']]: number | string;
282
+ } : C['steps'] extends TimelineStepConfig[] ? C['from'] extends DialConfig ? ResolvedValues<C['from']> : Record<string, number | string> : C['to'] extends DialConfig ? ResolvedValues<C['to']> : undefined;
283
+ /** `to` once the clip has started, `from` before — hand it to Motion's animate.
284
+ * For sequences this is the final merged state; for props clips, per-track
285
+ * endpoint records. */
286
+ animate: C['props'] extends Record<string, TimelinePropConfig> ? {
287
+ [K in keyof C['props']]: number | string;
288
+ } : C['steps'] extends TimelineStepConfig[] ? C['from'] extends DialConfig ? ResolvedValues<C['from']> : Record<string, number | string> | undefined : C['to'] extends DialConfig ? C['from'] extends DialConfig ? ResolvedValues<C['from']> | ResolvedValues<C['to']> : ResolvedValues<C['to']> | undefined : undefined;
289
+ /** The clip's editable curve — single-curve clips only. */
290
+ transition: C['props'] extends Record<string, TimelinePropConfig> ? undefined : C['steps'] extends TimelineStepConfig[] ? undefined : C extends {
291
+ transition: TransitionConfig;
292
+ } | {
293
+ from: DialConfig;
294
+ } | {
295
+ to: DialConfig;
296
+ } ? TransitionConfig : undefined;
297
+ /** Duration + timing-function for native CSS transitions — single-curve clips only. */
298
+ css: C['props'] extends Record<string, TimelinePropConfig> ? undefined : C['steps'] extends TimelineStepConfig[] ? undefined : C extends {
299
+ transition: TransitionConfig;
300
+ } | {
301
+ from: DialConfig;
302
+ } | {
303
+ to: DialConfig;
304
+ } ? TimelineClipCss : undefined;
305
+ /**
306
+ * Values interpolated through the clip's curves at the current playhead —
307
+ * bind to style for true scrubbing: the element is exactly at this point
308
+ * in time whether playing, paused, or scrubbing. Sequence clips report the
309
+ * merged state of all legs (declare every animated property in `from`);
310
+ * props clips report every track's value.
311
+ */
312
+ current: C['props'] extends Record<string, TimelinePropConfig> ? {
313
+ [K in keyof C['props']]: number | string;
314
+ } : C['steps'] extends TimelineStepConfig[] ? C['from'] extends DialConfig ? ResolvedValues<C['from']> : Record<string, number | string> : C['to'] extends DialConfig ? C['from'] extends DialConfig ? ResolvedValues<C['from']> | ResolvedValues<C['to']> : undefined : undefined;
315
+ };
316
+ type TimelineGroupValues<G extends TimelineGroupConfig> = {
317
+ [K in keyof G as G[K] extends TimelineClipConfig ? K : never]: TimelineClipValues<Extract<G[K], TimelineClipConfig>>;
318
+ };
319
+ type DialTimelineValues<T extends TimelineConfig> = {
320
+ time: number;
321
+ playing: boolean;
322
+ duration: number;
323
+ play: () => void;
324
+ pause: () => void;
325
+ replay: () => void;
326
+ seek: (time: number) => void;
327
+ } & {
328
+ [K in keyof T as T[K] extends TimelineClipConfig ? K : never]: TimelineClipValues<Extract<T[K], TimelineClipConfig>>;
329
+ } & {
330
+ [K in keyof T as T[K] extends TimelineClipConfig ? never : T[K] extends TimelineGroupConfig ? K : never]: TimelineGroupValues<Extract<T[K], TimelineGroupConfig>>;
331
+ };
332
+
333
+ interface DialTimelineOptions {
334
+ id?: string;
335
+ persist?: DialKitPersistOptions;
336
+ /** Start playing on mount. Defaults to true. */
337
+ autoplay?: boolean;
338
+ /**
339
+ * Loop when the playhead reaches the end. `true` restarts the whole
340
+ * timeline; `{ from }` wraps back to that time instead, so clips before it
341
+ * play once and looping clips keep cycling forever. Defaults to false.
342
+ */
343
+ loop?: boolean | {
344
+ from: number;
345
+ };
346
+ }
347
+
348
+ type UseDialTimelineOptions = DialTimelineOptions;
349
+ declare function useDialTimeline<T extends TimelineConfig>(name: string, config: T, options?: UseDialTimelineOptions): ComputedRef<DialTimelineValues<T>>;
154
350
 
155
351
  type DialPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left';
156
352
  type DialMode = 'popover' | 'inline';
@@ -178,7 +374,7 @@ declare const DialRoot: vue.DefineComponent<vue.ExtractPropTypes<{
178
374
  };
179
375
  }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
180
376
  [key: string]: any;
181
- }> | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
377
+ }> | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, "openChange"[], "openChange", vue.PublicProps, Readonly<vue.ExtractPropTypes<{
182
378
  position: {
183
379
  type: () => DialPosition;
184
380
  default: string;
@@ -199,9 +395,11 @@ declare const DialRoot: vue.DefineComponent<vue.ExtractPropTypes<{
199
395
  type: BooleanConstructor;
200
396
  default: boolean;
201
397
  };
202
- }>> & Readonly<{}>, {
203
- mode: DialMode;
398
+ }>> & Readonly<{
399
+ onOpenChange?: ((...args: any[]) => any) | undefined;
400
+ }>, {
204
401
  defaultOpen: boolean;
402
+ mode: DialMode;
205
403
  position: DialPosition;
206
404
  theme: DialTheme;
207
405
  productionEnabled: boolean;
@@ -211,10 +409,65 @@ interface DialKitDirectiveOptions {
211
409
  position?: DialPosition;
212
410
  defaultOpen?: boolean;
213
411
  mode?: DialMode;
412
+ onOpenChange?: (open: boolean) => void;
214
413
  }
215
414
  type DialKitDirectiveValue = DialMode | DialKitDirectiveOptions | undefined;
216
415
  declare const vDialKit: ObjectDirective<HTMLElement, DialKitDirectiveValue>;
217
416
 
417
+ declare const DialTimeline: vue.DefineComponent<vue.ExtractPropTypes<{
418
+ theme: {
419
+ type: PropType<DialTheme>;
420
+ default: string;
421
+ };
422
+ defaultVisible: {
423
+ type: BooleanConstructor;
424
+ default: boolean;
425
+ };
426
+ visible: {
427
+ type: PropType<boolean | undefined>;
428
+ default: undefined;
429
+ };
430
+ onVisibilityChange: PropType<(visible: boolean) => void>;
431
+ defaultOpen: {
432
+ type: BooleanConstructor;
433
+ default: boolean;
434
+ };
435
+ productionEnabled: {
436
+ type: BooleanConstructor;
437
+ default: boolean;
438
+ };
439
+ }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
440
+ [key: string]: any;
441
+ }> | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
442
+ theme: {
443
+ type: PropType<DialTheme>;
444
+ default: string;
445
+ };
446
+ defaultVisible: {
447
+ type: BooleanConstructor;
448
+ default: boolean;
449
+ };
450
+ visible: {
451
+ type: PropType<boolean | undefined>;
452
+ default: undefined;
453
+ };
454
+ onVisibilityChange: PropType<(visible: boolean) => void>;
455
+ defaultOpen: {
456
+ type: BooleanConstructor;
457
+ default: boolean;
458
+ };
459
+ productionEnabled: {
460
+ type: BooleanConstructor;
461
+ default: boolean;
462
+ };
463
+ }>> & Readonly<{}>, {
464
+ defaultOpen: boolean;
465
+ visible: boolean | undefined;
466
+ theme: DialTheme;
467
+ productionEnabled: boolean;
468
+ defaultVisible: boolean;
469
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
470
+
218
471
  interface ShortcutState {
219
472
  activePanelId: Ref<string | null>;
220
473
  activePath: Ref<string | null>;
@@ -375,10 +628,14 @@ declare const Folder: vue.DefineComponent<vue.ExtractPropTypes<{
375
628
  default: boolean;
376
629
  };
377
630
  toolbar: {
378
- type: PropType<(() => ReturnType<typeof h>) | null>;
631
+ type: PropType<(() => VNodeChild) | null>;
379
632
  required: false;
380
633
  default: null;
381
634
  };
635
+ panelHeightOffset: {
636
+ type: NumberConstructor;
637
+ default: number;
638
+ };
382
639
  }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
383
640
  [key: string]: any;
384
641
  }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, "openChange"[], "openChange", vue.PublicProps, Readonly<vue.ExtractPropTypes<{
@@ -399,17 +656,22 @@ declare const Folder: vue.DefineComponent<vue.ExtractPropTypes<{
399
656
  default: boolean;
400
657
  };
401
658
  toolbar: {
402
- type: PropType<(() => ReturnType<typeof h>) | null>;
659
+ type: PropType<(() => VNodeChild) | null>;
403
660
  required: false;
404
661
  default: null;
405
662
  };
663
+ panelHeightOffset: {
664
+ type: NumberConstructor;
665
+ default: number;
666
+ };
406
667
  }>> & Readonly<{
407
668
  onOpenChange?: ((...args: any[]) => any) | undefined;
408
669
  }>, {
409
670
  defaultOpen: boolean;
410
671
  isRoot: boolean;
411
672
  inline: boolean;
412
- toolbar: (() => ReturnType<typeof h>) | null;
673
+ toolbar: (() => VNodeChild) | null;
674
+ panelHeightOffset: number;
413
675
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
414
676
 
415
677
  type ButtonGroupButton = {
@@ -492,6 +754,13 @@ declare const SpringVisualization: vue.DefineComponent<vue.ExtractPropTypes<{
492
754
  };
493
755
  }>> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
494
756
 
757
+ interface TransitionDurationControl {
758
+ value: number;
759
+ onChange: (value: number) => void;
760
+ min?: number;
761
+ max?: number;
762
+ step?: number;
763
+ }
495
764
  declare const TransitionControl: vue.DefineComponent<vue.ExtractPropTypes<{
496
765
  panelId: {
497
766
  type: StringConstructor;
@@ -509,6 +778,11 @@ declare const TransitionControl: vue.DefineComponent<vue.ExtractPropTypes<{
509
778
  type: PropType<TransitionConfig>;
510
779
  required: true;
511
780
  };
781
+ hideDuration: {
782
+ type: BooleanConstructor;
783
+ default: boolean;
784
+ };
785
+ durationControl: PropType<TransitionDurationControl>;
512
786
  }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
513
787
  [key: string]: any;
514
788
  }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, "change"[], "change", vue.PublicProps, Readonly<vue.ExtractPropTypes<{
@@ -528,9 +802,16 @@ declare const TransitionControl: vue.DefineComponent<vue.ExtractPropTypes<{
528
802
  type: PropType<TransitionConfig>;
529
803
  required: true;
530
804
  };
805
+ hideDuration: {
806
+ type: BooleanConstructor;
807
+ default: boolean;
808
+ };
809
+ durationControl: PropType<TransitionDurationControl>;
531
810
  }>> & Readonly<{
532
811
  onChange?: ((...args: any[]) => any) | undefined;
533
- }>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
812
+ }>, {
813
+ hideDuration: boolean;
814
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
534
815
 
535
816
  declare const EasingVisualization: vue.DefineComponent<vue.ExtractPropTypes<{
536
817
  easing: {
@@ -672,4 +953,36 @@ declare const PresetManager: vue.DefineComponent<vue.ExtractPropTypes<{
672
953
  activePresetId: string | null;
673
954
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
674
955
 
675
- export { type ActionConfig, ButtonGroup, type ColorConfig, ColorControl, type ControlMeta, type DialConfig, type DialKitDirectiveOptions, type DialKitDirectiveValue, type DialMode, type DialPosition, DialRoot, DialStore, type DialTheme, type DialValue, type EasingConfig, EasingVisualization, Folder, type PanelConfig, type Preset, PresetManager, type ResolvedValues, type SelectConfig, SelectControl, type ShortcutConfig, ShortcutKey, ShortcutListener, type ShortcutState, ShortcutsMenu, Slider, type SpringConfig, SpringControl, SpringVisualization, type TextConfig, TextControl, Toggle, type TransitionConfig, TransitionControl, type UseDialOptions, useDialKit, useShortcutContext, vDialKit };
956
+ declare const ControlRenderer: vue.DefineComponent<vue.ExtractPropTypes<{
957
+ panelId: {
958
+ type: StringConstructor;
959
+ required: true;
960
+ };
961
+ controls: {
962
+ type: PropType<ControlMeta[]>;
963
+ required: true;
964
+ };
965
+ values: {
966
+ type: PropType<Record<string, DialValue>>;
967
+ required: true;
968
+ };
969
+ transitionDuration: PropType<TransitionDurationControl>;
970
+ }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
971
+ [key: string]: any;
972
+ }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
973
+ panelId: {
974
+ type: StringConstructor;
975
+ required: true;
976
+ };
977
+ controls: {
978
+ type: PropType<ControlMeta[]>;
979
+ required: true;
980
+ };
981
+ values: {
982
+ type: PropType<Record<string, DialValue>>;
983
+ required: true;
984
+ };
985
+ transitionDuration: PropType<TransitionDurationControl>;
986
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
987
+
988
+ export { type ActionConfig, ButtonGroup, type ColorConfig, ColorControl, type ControlMeta, ControlRenderer, type DialConfig, type DialKitController, type DialKitDirectiveOptions, type DialKitDirectiveValue, type DialKitPersistOptions, type DialKitValueUpdates, type DialMode, type DialPosition, DialRoot, DialStore, type DialTheme, DialTimeline, type DialTimelineValues, type DialValue, type EasingConfig, EasingVisualization, Folder, type PanelConfig, type Preset, PresetManager, type ResolvedValues, type SelectConfig, SelectControl, type ShortcutConfig, ShortcutKey, ShortcutListener, type ShortcutState, ShortcutsMenu, Slider, type SpringConfig, SpringControl, SpringVisualization, type TextConfig, TextControl, type TimelineClipConfig, type TimelineClipCss, type TimelineClipLoop, type TimelineClipValues, type TimelineConfig, type TimelineGroupConfig, type TimelineGroupValues, type TimelinePropConfig, type TimelinePropStepConfig, type TimelineStepConfig, type TimelineStepValues, Toggle, type TransitionConfig, TransitionControl, type UseDialOptions, type UseDialTimelineOptions, useDialKit, useDialKitController, useDialTimeline, useShortcutContext, vDialKit };