aeon-ui-engine 1.3.5 → 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 (84) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/package.json +1 -1
  3. package/packages/cli/README.md +13 -1
  4. package/packages/cli/dist/bin.js +23 -5
  5. package/packages/cli/dist/chunk-5L47SLNV.js +247 -0
  6. package/packages/cli/dist/index.d.ts +17 -1
  7. package/packages/cli/dist/index.js +5 -3
  8. package/packages/cli/src/bin.ts +21 -3
  9. package/packages/cli/src/index.ts +1 -0
  10. package/packages/cli/src/migrate.ts +170 -0
  11. package/packages/core/dist/index.d.ts +35 -7
  12. package/packages/core/dist/index.js +102 -2
  13. package/packages/core/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  14. package/packages/core/src/anatomy.ts +39 -3
  15. package/packages/core/src/identicon.test.ts +39 -0
  16. package/packages/core/src/identicon.ts +79 -0
  17. package/packages/core/src/index.ts +1 -0
  18. package/packages/panda/panda.config.ts +4 -0
  19. package/packages/panda/src/recipes/composer.ts +58 -4
  20. package/packages/panda/src/recipes/file-upload.ts +100 -0
  21. package/packages/panda/src/recipes/index.ts +2 -0
  22. package/packages/panda/src/recipes/range-slider.ts +59 -0
  23. package/packages/panda/src/recipes/thread.ts +77 -2
  24. package/packages/panda/styled-system/recipes/aeon-composer.d.ts +1 -1
  25. package/packages/panda/styled-system/recipes/aeon-composer.mjs +12 -0
  26. package/packages/panda/styled-system/recipes/aeon-file-upload.d.ts +31 -0
  27. package/packages/panda/styled-system/recipes/aeon-file-upload.mjs +61 -0
  28. package/packages/panda/styled-system/recipes/aeon-range-slider.d.ts +31 -0
  29. package/packages/panda/styled-system/recipes/aeon-range-slider.mjs +49 -0
  30. package/packages/panda/styled-system/recipes/aeon-thread.d.ts +1 -1
  31. package/packages/panda/styled-system/recipes/aeon-thread.mjs +20 -0
  32. package/packages/panda/styled-system/recipes/index.d.ts +2 -0
  33. package/packages/panda/styled-system/recipes/index.mjs +2 -0
  34. package/packages/panda/styled-system/styles.css +292 -0
  35. package/packages/primitives/dist/chunk-CV4UXXZF.js +44 -0
  36. package/packages/primitives/dist/chunk-IZKQSCYU.js +164 -0
  37. package/packages/primitives/dist/index.d.ts +2 -0
  38. package/packages/primitives/dist/index.js +22 -6
  39. package/packages/primitives/dist/machines/file-upload.d.ts +39 -0
  40. package/packages/primitives/dist/machines/file-upload.js +8 -0
  41. package/packages/primitives/dist/machines/range-slider.d.ts +129 -0
  42. package/packages/primitives/dist/machines/range-slider.js +12 -0
  43. package/packages/primitives/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  44. package/packages/primitives/src/__tests__/file-upload.test.ts +25 -0
  45. package/packages/primitives/src/__tests__/range-slider.test.ts +39 -0
  46. package/packages/primitives/src/index.ts +2 -0
  47. package/packages/primitives/src/machines/file-upload.ts +55 -0
  48. package/packages/primitives/src/machines/range-slider.ts +209 -0
  49. package/packages/react/dist/index.d.ts +117 -25
  50. package/packages/react/dist/index.js +1731 -1006
  51. package/packages/react/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  52. package/packages/react/src/button/index.tsx +50 -15
  53. package/packages/react/src/composer/index.tsx +58 -3
  54. package/packages/react/src/file-upload/index.tsx +322 -0
  55. package/packages/react/src/index.ts +3 -0
  56. package/packages/react/src/prompt/index.tsx +45 -0
  57. package/packages/react/src/range-slider/index.tsx +322 -0
  58. package/packages/react/src/thread/index.tsx +74 -3
  59. package/packages/react/src/utils/slot.tsx +47 -0
  60. package/packages/schemas/dist/index.d.ts +4 -0
  61. package/packages/schemas/dist/index.js +67 -1
  62. package/packages/schemas/json/button.json +6 -0
  63. package/packages/schemas/json/catalog.json +333 -0
  64. package/packages/schemas/json/fileUpload.json +168 -0
  65. package/packages/schemas/json/rangeSlider.json +157 -0
  66. package/packages/schemas/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  67. package/packages/schemas/registry/catalog.json +18 -0
  68. package/packages/schemas/registry/components/button.json +6 -0
  69. package/packages/schemas/registry/components/fileUpload.json +168 -0
  70. package/packages/schemas/registry/components/rangeSlider.json +157 -0
  71. package/packages/schemas/registry/machines/fileUpload.json +182 -0
  72. package/packages/schemas/registry/machines/rangeSlider.json +201 -0
  73. package/packages/schemas/scripts/emit.ts +4 -0
  74. package/packages/schemas/src/components.ts +70 -0
  75. package/packages/schemas/tsconfig.json +1 -1
  76. package/packages/ui/dist/index.d.ts +100 -46
  77. package/packages/ui/dist/index.js +463 -341
  78. package/packages/ui/src/composer.tsx +37 -11
  79. package/packages/ui/src/file-upload.tsx +36 -0
  80. package/packages/ui/src/index.ts +2 -0
  81. package/packages/ui/src/prompt.tsx +3 -0
  82. package/packages/ui/src/range-slider.tsx +24 -0
  83. package/packages/ui/src/thread.tsx +40 -0
  84. package/packages/cli/dist/chunk-IW5NT2Z2.js +0 -103
@@ -29,6 +29,8 @@
29
29
  "progress",
30
30
  "radioGroup",
31
31
  "slider",
32
+ "rangeSlider",
33
+ "fileUpload",
32
34
  "pinInput",
33
35
  "avatar",
34
36
  "content",
@@ -132,6 +134,10 @@
132
134
  },
133
135
  "disabled": {
134
136
  "type": "boolean"
137
+ },
138
+ "asChild": {
139
+ "type": "boolean",
140
+ "description": "Merge button attrs onto a single child element (Link, a)."
135
141
  }
136
142
  }
137
143
  },
@@ -187,6 +193,7 @@
187
193
  },
188
194
  "default": [
189
195
  "<Button.Root status=\"pending\" aria-busy>Saving…</Button.Root>",
196
+ "<Button.Root asChild variant=\"solid\"><a href=\"/upload\">Upload</a></Button.Root>",
190
197
  "const [snap, send] = useAeonMachine(buttonLifecycleMachine)\n<Button.Root status={snap.value as ButtonStatus} onClick={() => send({ type: 'PRESS' })} />"
191
198
  ]
192
199
  }
@@ -217,6 +224,7 @@
217
224
  },
218
225
  "examples": [
219
226
  "<Button.Root status=\"pending\" aria-busy>Saving…</Button.Root>",
227
+ "<Button.Root asChild variant=\"solid\"><a href=\"/upload\">Upload</a></Button.Root>",
220
228
  "const [snap, send] = useAeonMachine(buttonLifecycleMachine)\n<Button.Root status={snap.value as ButtonStatus} onClick={() => send({ type: 'PRESS' })} />"
221
229
  ]
222
230
  }
@@ -2620,6 +2628,331 @@
2620
2628
  "examples": []
2621
2629
  }
2622
2630
  },
2631
+ "rangeSlider": {
2632
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2633
+ "$id": "https://aeon-ui.com/schemas/rangeSlider.json",
2634
+ "title": "RangeSlider",
2635
+ "description": "Two-thumb range via rangeSliderMachine — idle | dragging with values pair and minStepsBetween gap.",
2636
+ "type": "object",
2637
+ "additionalProperties": false,
2638
+ "required": [
2639
+ "component",
2640
+ "scope"
2641
+ ],
2642
+ "properties": {
2643
+ "component": {
2644
+ "const": "RangeSlider"
2645
+ },
2646
+ "scope": {
2647
+ "const": "rangeSlider"
2648
+ },
2649
+ "parts": {
2650
+ "type": "array",
2651
+ "description": "Anatomy part keys — map to data-aeon-part",
2652
+ "items": {
2653
+ "type": "string",
2654
+ "enum": [
2655
+ "root",
2656
+ "track",
2657
+ "range",
2658
+ "thumb",
2659
+ "valueText"
2660
+ ]
2661
+ },
2662
+ "uniqueItems": true
2663
+ },
2664
+ "states": {
2665
+ "type": "array",
2666
+ "description": "Allowed data-aeon-state values (stable states only)",
2667
+ "items": {
2668
+ "type": "string",
2669
+ "enum": [
2670
+ "idle",
2671
+ "dragging"
2672
+ ]
2673
+ },
2674
+ "uniqueItems": true
2675
+ },
2676
+ "props": {
2677
+ "type": "object",
2678
+ "additionalProperties": false,
2679
+ "properties": {}
2680
+ },
2681
+ "slots": {
2682
+ "type": "object",
2683
+ "description": "Named composition slots / compound parts",
2684
+ "additionalProperties": {
2685
+ "type": "string"
2686
+ },
2687
+ "properties": {
2688
+ "Root": {
2689
+ "const": "rangeSlider.root",
2690
+ "description": "rangeSlider.root"
2691
+ },
2692
+ "Track": {
2693
+ "const": "rangeSlider.track",
2694
+ "description": "rangeSlider.track"
2695
+ },
2696
+ "Range": {
2697
+ "const": "rangeSlider.range",
2698
+ "description": "rangeSlider.range"
2699
+ },
2700
+ "Thumb": {
2701
+ "const": "rangeSlider.thumb",
2702
+ "description": "rangeSlider.thumb"
2703
+ },
2704
+ "ValueText": {
2705
+ "const": "rangeSlider.valueText",
2706
+ "description": "rangeSlider.valueText"
2707
+ }
2708
+ }
2709
+ },
2710
+ "machine": {
2711
+ "type": [
2712
+ "string",
2713
+ "null"
2714
+ ],
2715
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
2716
+ "const": "rangeSliderMachine"
2717
+ },
2718
+ "runtime": {
2719
+ "type": "string",
2720
+ "description": "How headless state is driven at runtime",
2721
+ "const": "useAeonMachine"
2722
+ },
2723
+ "events": {
2724
+ "type": "array",
2725
+ "items": {
2726
+ "type": "string",
2727
+ "enum": [
2728
+ "SET_VALUES",
2729
+ "SET_BOUNDS",
2730
+ "SET_DISABLED",
2731
+ "POINTER_DOWN",
2732
+ "POINTER_MOVE",
2733
+ "POINTER_UP",
2734
+ "STEP",
2735
+ "HOME",
2736
+ "END"
2737
+ ]
2738
+ }
2739
+ },
2740
+ "examples": {
2741
+ "type": "array",
2742
+ "items": {
2743
+ "type": "string"
2744
+ },
2745
+ "default": [
2746
+ "<RangeSlider.Root defaultValue={[20, 80]} minStepsBetween={1}>\n <RangeSlider.Track /><RangeSlider.Range />\n <RangeSlider.Thumb index={0} /><RangeSlider.Thumb index={1} />\n</RangeSlider.Root>"
2747
+ ]
2748
+ }
2749
+ },
2750
+ "x-aeon": {
2751
+ "scope": "rangeSlider",
2752
+ "parts": [
2753
+ "root",
2754
+ "track",
2755
+ "range",
2756
+ "thumb",
2757
+ "valueText"
2758
+ ],
2759
+ "states": [
2760
+ "idle",
2761
+ "dragging"
2762
+ ],
2763
+ "machine": "rangeSliderMachine",
2764
+ "runtime": "useAeonMachine",
2765
+ "events": [
2766
+ "SET_VALUES",
2767
+ "SET_BOUNDS",
2768
+ "SET_DISABLED",
2769
+ "POINTER_DOWN",
2770
+ "POINTER_MOVE",
2771
+ "POINTER_UP",
2772
+ "STEP",
2773
+ "HOME",
2774
+ "END"
2775
+ ],
2776
+ "slots": {
2777
+ "Root": "rangeSlider.root",
2778
+ "Track": "rangeSlider.track",
2779
+ "Range": "rangeSlider.range",
2780
+ "Thumb": "rangeSlider.thumb",
2781
+ "ValueText": "rangeSlider.valueText"
2782
+ },
2783
+ "examples": [
2784
+ "<RangeSlider.Root defaultValue={[20, 80]} minStepsBetween={1}>\n <RangeSlider.Track /><RangeSlider.Range />\n <RangeSlider.Thumb index={0} /><RangeSlider.Thumb index={1} />\n</RangeSlider.Root>"
2785
+ ]
2786
+ }
2787
+ },
2788
+ "fileUpload": {
2789
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2790
+ "$id": "https://aeon-ui.com/schemas/fileUpload.json",
2791
+ "title": "FileUpload",
2792
+ "description": "Drag-drop surface via fileUploadMachine — idle | dragging | rejected. File bytes stay in React callbacks.",
2793
+ "type": "object",
2794
+ "additionalProperties": false,
2795
+ "required": [
2796
+ "component",
2797
+ "scope"
2798
+ ],
2799
+ "properties": {
2800
+ "component": {
2801
+ "const": "FileUpload"
2802
+ },
2803
+ "scope": {
2804
+ "const": "fileUpload"
2805
+ },
2806
+ "parts": {
2807
+ "type": "array",
2808
+ "description": "Anatomy part keys — map to data-aeon-part",
2809
+ "items": {
2810
+ "type": "string",
2811
+ "enum": [
2812
+ "root",
2813
+ "dropzone",
2814
+ "input",
2815
+ "label",
2816
+ "hint",
2817
+ "preview",
2818
+ "clearTrigger",
2819
+ "rejectionMessage"
2820
+ ]
2821
+ },
2822
+ "uniqueItems": true
2823
+ },
2824
+ "states": {
2825
+ "type": "array",
2826
+ "description": "Allowed data-aeon-state values (stable states only)",
2827
+ "items": {
2828
+ "type": "string",
2829
+ "enum": [
2830
+ "idle",
2831
+ "dragging",
2832
+ "rejected"
2833
+ ]
2834
+ },
2835
+ "uniqueItems": true
2836
+ },
2837
+ "props": {
2838
+ "type": "object",
2839
+ "additionalProperties": false,
2840
+ "properties": {}
2841
+ },
2842
+ "slots": {
2843
+ "type": "object",
2844
+ "description": "Named composition slots / compound parts",
2845
+ "additionalProperties": {
2846
+ "type": "string"
2847
+ },
2848
+ "properties": {
2849
+ "Root": {
2850
+ "const": "fileUpload.root",
2851
+ "description": "fileUpload.root"
2852
+ },
2853
+ "Dropzone": {
2854
+ "const": "fileUpload.dropzone",
2855
+ "description": "fileUpload.dropzone"
2856
+ },
2857
+ "Input": {
2858
+ "const": "fileUpload.input",
2859
+ "description": "fileUpload.input"
2860
+ },
2861
+ "Label": {
2862
+ "const": "fileUpload.label",
2863
+ "description": "fileUpload.label"
2864
+ },
2865
+ "Hint": {
2866
+ "const": "fileUpload.hint",
2867
+ "description": "fileUpload.hint"
2868
+ },
2869
+ "Preview": {
2870
+ "const": "fileUpload.preview",
2871
+ "description": "fileUpload.preview"
2872
+ },
2873
+ "ClearTrigger": {
2874
+ "const": "fileUpload.clearTrigger",
2875
+ "description": "fileUpload.clearTrigger"
2876
+ },
2877
+ "RejectionMessage": {
2878
+ "const": "fileUpload.rejectionMessage",
2879
+ "description": "fileUpload.rejectionMessage"
2880
+ }
2881
+ }
2882
+ },
2883
+ "machine": {
2884
+ "type": [
2885
+ "string",
2886
+ "null"
2887
+ ],
2888
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
2889
+ "const": "fileUploadMachine"
2890
+ },
2891
+ "runtime": {
2892
+ "type": "string",
2893
+ "description": "How headless state is driven at runtime",
2894
+ "const": "useAeonMachine"
2895
+ },
2896
+ "events": {
2897
+ "type": "array",
2898
+ "items": {
2899
+ "type": "string",
2900
+ "enum": [
2901
+ "DRAG_OVER",
2902
+ "DRAG_LEAVE",
2903
+ "DROP_ACCEPT",
2904
+ "DROP_REJECT",
2905
+ "RESET"
2906
+ ]
2907
+ }
2908
+ },
2909
+ "examples": {
2910
+ "type": "array",
2911
+ "items": {
2912
+ "type": "string"
2913
+ },
2914
+ "default": []
2915
+ }
2916
+ },
2917
+ "x-aeon": {
2918
+ "scope": "fileUpload",
2919
+ "parts": [
2920
+ "root",
2921
+ "dropzone",
2922
+ "input",
2923
+ "label",
2924
+ "hint",
2925
+ "preview",
2926
+ "clearTrigger",
2927
+ "rejectionMessage"
2928
+ ],
2929
+ "states": [
2930
+ "idle",
2931
+ "dragging",
2932
+ "rejected"
2933
+ ],
2934
+ "machine": "fileUploadMachine",
2935
+ "runtime": "useAeonMachine",
2936
+ "events": [
2937
+ "DRAG_OVER",
2938
+ "DRAG_LEAVE",
2939
+ "DROP_ACCEPT",
2940
+ "DROP_REJECT",
2941
+ "RESET"
2942
+ ],
2943
+ "slots": {
2944
+ "Root": "fileUpload.root",
2945
+ "Dropzone": "fileUpload.dropzone",
2946
+ "Input": "fileUpload.input",
2947
+ "Label": "fileUpload.label",
2948
+ "Hint": "fileUpload.hint",
2949
+ "Preview": "fileUpload.preview",
2950
+ "ClearTrigger": "fileUpload.clearTrigger",
2951
+ "RejectionMessage": "fileUpload.rejectionMessage"
2952
+ },
2953
+ "examples": []
2954
+ }
2955
+ },
2623
2956
  "pinInput": {
2624
2957
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2625
2958
  "$id": "https://aeon-ui.com/schemas/pinInput.json",
@@ -0,0 +1,168 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://aeon-ui.com/schemas/fileUpload.json",
4
+ "title": "FileUpload",
5
+ "description": "Drag-drop surface via fileUploadMachine — idle | dragging | rejected. File bytes stay in React callbacks.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "component",
10
+ "scope"
11
+ ],
12
+ "properties": {
13
+ "component": {
14
+ "const": "FileUpload"
15
+ },
16
+ "scope": {
17
+ "const": "fileUpload"
18
+ },
19
+ "parts": {
20
+ "type": "array",
21
+ "description": "Anatomy part keys — map to data-aeon-part",
22
+ "items": {
23
+ "type": "string",
24
+ "enum": [
25
+ "root",
26
+ "dropzone",
27
+ "input",
28
+ "label",
29
+ "hint",
30
+ "preview",
31
+ "clearTrigger",
32
+ "rejectionMessage"
33
+ ]
34
+ },
35
+ "uniqueItems": true
36
+ },
37
+ "states": {
38
+ "type": "array",
39
+ "description": "Allowed data-aeon-state values (stable states only)",
40
+ "items": {
41
+ "type": "string",
42
+ "enum": [
43
+ "idle",
44
+ "dragging",
45
+ "rejected"
46
+ ]
47
+ },
48
+ "uniqueItems": true
49
+ },
50
+ "props": {
51
+ "type": "object",
52
+ "additionalProperties": false,
53
+ "properties": {}
54
+ },
55
+ "slots": {
56
+ "type": "object",
57
+ "description": "Named composition slots / compound parts",
58
+ "additionalProperties": {
59
+ "type": "string"
60
+ },
61
+ "properties": {
62
+ "Root": {
63
+ "const": "fileUpload.root",
64
+ "description": "fileUpload.root"
65
+ },
66
+ "Dropzone": {
67
+ "const": "fileUpload.dropzone",
68
+ "description": "fileUpload.dropzone"
69
+ },
70
+ "Input": {
71
+ "const": "fileUpload.input",
72
+ "description": "fileUpload.input"
73
+ },
74
+ "Label": {
75
+ "const": "fileUpload.label",
76
+ "description": "fileUpload.label"
77
+ },
78
+ "Hint": {
79
+ "const": "fileUpload.hint",
80
+ "description": "fileUpload.hint"
81
+ },
82
+ "Preview": {
83
+ "const": "fileUpload.preview",
84
+ "description": "fileUpload.preview"
85
+ },
86
+ "ClearTrigger": {
87
+ "const": "fileUpload.clearTrigger",
88
+ "description": "fileUpload.clearTrigger"
89
+ },
90
+ "RejectionMessage": {
91
+ "const": "fileUpload.rejectionMessage",
92
+ "description": "fileUpload.rejectionMessage"
93
+ }
94
+ }
95
+ },
96
+ "machine": {
97
+ "type": [
98
+ "string",
99
+ "null"
100
+ ],
101
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
102
+ "const": "fileUploadMachine"
103
+ },
104
+ "runtime": {
105
+ "type": "string",
106
+ "description": "How headless state is driven at runtime",
107
+ "const": "useAeonMachine"
108
+ },
109
+ "events": {
110
+ "type": "array",
111
+ "items": {
112
+ "type": "string",
113
+ "enum": [
114
+ "DRAG_OVER",
115
+ "DRAG_LEAVE",
116
+ "DROP_ACCEPT",
117
+ "DROP_REJECT",
118
+ "RESET"
119
+ ]
120
+ }
121
+ },
122
+ "examples": {
123
+ "type": "array",
124
+ "items": {
125
+ "type": "string"
126
+ },
127
+ "default": []
128
+ }
129
+ },
130
+ "x-aeon": {
131
+ "scope": "fileUpload",
132
+ "parts": [
133
+ "root",
134
+ "dropzone",
135
+ "input",
136
+ "label",
137
+ "hint",
138
+ "preview",
139
+ "clearTrigger",
140
+ "rejectionMessage"
141
+ ],
142
+ "states": [
143
+ "idle",
144
+ "dragging",
145
+ "rejected"
146
+ ],
147
+ "machine": "fileUploadMachine",
148
+ "runtime": "useAeonMachine",
149
+ "events": [
150
+ "DRAG_OVER",
151
+ "DRAG_LEAVE",
152
+ "DROP_ACCEPT",
153
+ "DROP_REJECT",
154
+ "RESET"
155
+ ],
156
+ "slots": {
157
+ "Root": "fileUpload.root",
158
+ "Dropzone": "fileUpload.dropzone",
159
+ "Input": "fileUpload.input",
160
+ "Label": "fileUpload.label",
161
+ "Hint": "fileUpload.hint",
162
+ "Preview": "fileUpload.preview",
163
+ "ClearTrigger": "fileUpload.clearTrigger",
164
+ "RejectionMessage": "fileUpload.rejectionMessage"
165
+ },
166
+ "examples": []
167
+ }
168
+ }
@@ -0,0 +1,157 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://aeon-ui.com/schemas/rangeSlider.json",
4
+ "title": "RangeSlider",
5
+ "description": "Two-thumb range via rangeSliderMachine — idle | dragging with values pair and minStepsBetween gap.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "component",
10
+ "scope"
11
+ ],
12
+ "properties": {
13
+ "component": {
14
+ "const": "RangeSlider"
15
+ },
16
+ "scope": {
17
+ "const": "rangeSlider"
18
+ },
19
+ "parts": {
20
+ "type": "array",
21
+ "description": "Anatomy part keys — map to data-aeon-part",
22
+ "items": {
23
+ "type": "string",
24
+ "enum": [
25
+ "root",
26
+ "track",
27
+ "range",
28
+ "thumb",
29
+ "valueText"
30
+ ]
31
+ },
32
+ "uniqueItems": true
33
+ },
34
+ "states": {
35
+ "type": "array",
36
+ "description": "Allowed data-aeon-state values (stable states only)",
37
+ "items": {
38
+ "type": "string",
39
+ "enum": [
40
+ "idle",
41
+ "dragging"
42
+ ]
43
+ },
44
+ "uniqueItems": true
45
+ },
46
+ "props": {
47
+ "type": "object",
48
+ "additionalProperties": false,
49
+ "properties": {}
50
+ },
51
+ "slots": {
52
+ "type": "object",
53
+ "description": "Named composition slots / compound parts",
54
+ "additionalProperties": {
55
+ "type": "string"
56
+ },
57
+ "properties": {
58
+ "Root": {
59
+ "const": "rangeSlider.root",
60
+ "description": "rangeSlider.root"
61
+ },
62
+ "Track": {
63
+ "const": "rangeSlider.track",
64
+ "description": "rangeSlider.track"
65
+ },
66
+ "Range": {
67
+ "const": "rangeSlider.range",
68
+ "description": "rangeSlider.range"
69
+ },
70
+ "Thumb": {
71
+ "const": "rangeSlider.thumb",
72
+ "description": "rangeSlider.thumb"
73
+ },
74
+ "ValueText": {
75
+ "const": "rangeSlider.valueText",
76
+ "description": "rangeSlider.valueText"
77
+ }
78
+ }
79
+ },
80
+ "machine": {
81
+ "type": [
82
+ "string",
83
+ "null"
84
+ ],
85
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
86
+ "const": "rangeSliderMachine"
87
+ },
88
+ "runtime": {
89
+ "type": "string",
90
+ "description": "How headless state is driven at runtime",
91
+ "const": "useAeonMachine"
92
+ },
93
+ "events": {
94
+ "type": "array",
95
+ "items": {
96
+ "type": "string",
97
+ "enum": [
98
+ "SET_VALUES",
99
+ "SET_BOUNDS",
100
+ "SET_DISABLED",
101
+ "POINTER_DOWN",
102
+ "POINTER_MOVE",
103
+ "POINTER_UP",
104
+ "STEP",
105
+ "HOME",
106
+ "END"
107
+ ]
108
+ }
109
+ },
110
+ "examples": {
111
+ "type": "array",
112
+ "items": {
113
+ "type": "string"
114
+ },
115
+ "default": [
116
+ "<RangeSlider.Root defaultValue={[20, 80]} minStepsBetween={1}>\n <RangeSlider.Track /><RangeSlider.Range />\n <RangeSlider.Thumb index={0} /><RangeSlider.Thumb index={1} />\n</RangeSlider.Root>"
117
+ ]
118
+ }
119
+ },
120
+ "x-aeon": {
121
+ "scope": "rangeSlider",
122
+ "parts": [
123
+ "root",
124
+ "track",
125
+ "range",
126
+ "thumb",
127
+ "valueText"
128
+ ],
129
+ "states": [
130
+ "idle",
131
+ "dragging"
132
+ ],
133
+ "machine": "rangeSliderMachine",
134
+ "runtime": "useAeonMachine",
135
+ "events": [
136
+ "SET_VALUES",
137
+ "SET_BOUNDS",
138
+ "SET_DISABLED",
139
+ "POINTER_DOWN",
140
+ "POINTER_MOVE",
141
+ "POINTER_UP",
142
+ "STEP",
143
+ "HOME",
144
+ "END"
145
+ ],
146
+ "slots": {
147
+ "Root": "rangeSlider.root",
148
+ "Track": "rangeSlider.track",
149
+ "Range": "rangeSlider.range",
150
+ "Thumb": "rangeSlider.thumb",
151
+ "ValueText": "rangeSlider.valueText"
152
+ },
153
+ "examples": [
154
+ "<RangeSlider.Root defaultValue={[20, 80]} minStepsBetween={1}>\n <RangeSlider.Track /><RangeSlider.Range />\n <RangeSlider.Thumb index={0} /><RangeSlider.Thumb index={1} />\n</RangeSlider.Root>"
155
+ ]
156
+ }
157
+ }
@@ -1 +1 @@
1
- {"version":"4.1.8","results":[[":src/index.test.ts",{"duration":4.204667000000001,"failed":false}],[":src/aeon-to-schema.test.ts",{"duration":5.697332999999986,"failed":false}]]}
1
+ {"version":"4.1.8","results":[[":src/index.test.ts",{"duration":5.161209000000014,"failed":false}],[":src/aeon-to-schema.test.ts",{"duration":5.569166999999993,"failed":false}]]}