dialkit 0.2.2 → 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 +135 -2
  2. package/dist/index.cjs +512 -176
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.d.cts +40 -8
  5. package/dist/index.d.ts +40 -8
  6. package/dist/index.js +484 -150
  7. package/dist/index.js.map +1 -1
  8. package/dist/solid/index.cjs +2612 -0
  9. package/dist/solid/index.cjs.map +1 -0
  10. package/dist/solid/index.d.cts +228 -0
  11. package/dist/solid/index.d.ts +228 -0
  12. package/dist/solid/index.js +2573 -0
  13. package/dist/solid/index.js.map +1 -0
  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 +38 -1
  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 +56 -10
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # dialkit
2
2
 
3
- Real-time parameter tweaking for React + Motion.
3
+ Real-time parameter tweaking for React, Solid, and Svelte.
4
4
 
5
5
  ## Quick Start
6
6
 
@@ -206,6 +206,7 @@ const p = useDialKit('Controls', {
206
206
  ```
207
207
 
208
208
  Action buttons trigger callbacks without storing any value. The `label` defaults to the formatted key name (camelCase becomes Title Case). Multiple adjacent actions are grouped vertically.
209
+ Action buttons can be placed at the root or nested inside folders.
209
210
 
210
211
  ### Folder
211
212
 
@@ -233,6 +234,16 @@ shadow: {
233
234
  }
234
235
  ```
235
236
 
237
+ DialKit also supports dynamic config updates. If your config shape, defaults, options, or labels change over time, the panel updates while preserving current values where paths still exist.
238
+
239
+ Dynamic configs work with both inline objects and memoized configs — no special consumer action needed:
240
+
241
+ ```tsx
242
+ const values = useDialKit('Controls', {
243
+ style: { type: 'select', options: dynamicOptions },
244
+ });
245
+ ```
246
+
236
247
  ---
237
248
 
238
249
  ## DialRoot
@@ -244,8 +255,37 @@ shadow: {
244
255
  | Prop | Type | Default |
245
256
  |------|------|---------|
246
257
  | `position` | `'top-right' \| 'top-left' \| 'bottom-right' \| 'bottom-left'` | `'top-right'` |
258
+ | `defaultOpen` | `boolean` | `true` |
259
+ | `mode` | `'popover' \| 'inline'` | `'popover'` |
260
+
261
+ Mount once at your app root. In the default `popover` mode, the panel renders via a portal on `document.body`. It collapses to a small icon button and expands to 280px wide on click.
262
+
263
+ ### Inline mode
264
+
265
+ Use `mode="inline"` to render DialKit directly in your layout instead of as a floating popover. The panel fills its container and scrolls internally, which is useful for embedding in a sidebar or resizable panel. Inline mode works across all frameworks:
247
266
 
248
- Mount once at your app root. The panel renders via a portal on `document.body`. It collapses to a small icon button and expands to 280px wide on click.
267
+ **React:**
268
+ ```tsx
269
+ <aside style={{ width: 300, height: '100vh', overflow: 'hidden' }}>
270
+ <DialRoot mode="inline" />
271
+ </aside>
272
+ ```
273
+
274
+ **Solid:**
275
+ ```tsx
276
+ <aside style={{ width: '300px', height: '100vh', overflow: 'hidden' }}>
277
+ <DialRoot mode="inline" />
278
+ </aside>
279
+ ```
280
+
281
+ **Svelte:**
282
+ ```svelte
283
+ <aside style:width="300px" style:height="100vh" style:overflow="hidden">
284
+ <DialRoot mode="inline" />
285
+ </aside>
286
+ ```
287
+
288
+ In inline mode, the `position` prop is ignored and the collapse-to-icon behavior is disabled.
249
289
 
250
290
  ---
251
291
 
@@ -316,6 +356,99 @@ function PhotoStack() {
316
356
 
317
357
  ---
318
358
 
359
+ ## Solid
360
+
361
+ DialKit also works with Solid. Import from `dialkit/solid` instead of `dialkit` — the API mirrors the React version, with `createDialKit` replacing `useDialKit` and `DialRoot` as a Solid component.
362
+
363
+ ```bash
364
+ npm install dialkit solid-js
365
+ ```
366
+
367
+ ```tsx
368
+ // App.tsx
369
+ import { DialRoot } from 'dialkit/solid';
370
+ import 'dialkit/styles.css';
371
+
372
+ export default function App() {
373
+ return (
374
+ <>
375
+ <MyComponent />
376
+ <DialRoot />
377
+ </>
378
+ );
379
+ }
380
+ ```
381
+
382
+ ```tsx
383
+ // component.tsx
384
+ import { createDialKit } from 'dialkit/solid';
385
+
386
+ function Card() {
387
+ const params = createDialKit('Card', {
388
+ blur: [24, 0, 100],
389
+ scale: 1.2,
390
+ color: '#ff5500',
391
+ visible: true,
392
+ });
393
+
394
+ return (
395
+ <div style={{
396
+ filter: `blur(${params().blur}px)`,
397
+ transform: `scale(${params().scale})`,
398
+ color: params().color,
399
+ opacity: params().visible ? 1 : 0,
400
+ }}>
401
+ ...
402
+ </div>
403
+ );
404
+ }
405
+ ```
406
+
407
+ `createDialKit` returns an accessor — call `params()` to read the current values. All control types, config shapes, and panel features (presets, copy, folders) work identically to the React version.
408
+
409
+ ---
410
+
411
+ ## Svelte
412
+
413
+ DialKit works with Svelte 5 (≥5.8.0). Import from `dialkit/svelte` — no extra dependencies needed.
414
+
415
+ ```bash
416
+ npm install dialkit
417
+ ```
418
+
419
+ ```svelte
420
+ <!-- +layout.svelte -->
421
+ <script>
422
+ import { DialRoot } from 'dialkit/svelte';
423
+ let { children } = $props();
424
+ </script>
425
+
426
+ {@render children()}
427
+ <DialRoot />
428
+ ```
429
+
430
+ ```svelte
431
+ <!-- Card.svelte -->
432
+ <script>
433
+ import { createDialKit } from 'dialkit/svelte';
434
+
435
+ const params = createDialKit('Card', {
436
+ blur: [24, 0, 100],
437
+ scale: 1.2,
438
+ color: '#ff5500',
439
+ visible: true
440
+ });
441
+ </script>
442
+
443
+ <div style:filter={`blur(${params.blur}px)`} style:color={params.color}>
444
+ ...
445
+ </div>
446
+ ```
447
+
448
+ `createDialKit` returns a reactive object — access values directly (e.g. `params.blur`). Styles are injected automatically by `DialRoot` (no CSS import needed). Cleanup is automatic when the component unmounts. All control types, presets, folders, and transitions match the React/Solid entries.
449
+
450
+ ---
451
+
319
452
  ## Types
320
453
 
321
454
  All config and value types are exported: