aeon-ui-engine 1.3.5 → 1.5.1

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 (104) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/CONSUMER.md +67 -27
  3. package/INTEGRATION.md +1 -1
  4. package/README.md +17 -8
  5. package/package.json +4 -1
  6. package/packages/cli/README.md +13 -1
  7. package/packages/cli/dist/bin.js +50 -6
  8. package/packages/cli/dist/chunk-JMNRJCWF.js +301 -0
  9. package/packages/cli/dist/index.d.ts +31 -1
  10. package/packages/cli/dist/index.js +7 -3
  11. package/packages/cli/src/bin.ts +50 -4
  12. package/packages/cli/src/index.ts +2 -0
  13. package/packages/cli/src/init.ts +10 -4
  14. package/packages/cli/src/link.ts +61 -0
  15. package/packages/cli/src/migrate.ts +170 -0
  16. package/packages/core/dist/index.d.ts +35 -7
  17. package/packages/core/dist/index.js +102 -2
  18. package/packages/core/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  19. package/packages/core/src/anatomy.ts +39 -3
  20. package/packages/core/src/identicon.test.ts +39 -0
  21. package/packages/core/src/identicon.ts +79 -0
  22. package/packages/core/src/index.ts +1 -0
  23. package/packages/panda/panda.config.ts +4 -0
  24. package/packages/panda/src/recipes/composer.ts +58 -4
  25. package/packages/panda/src/recipes/file-upload.ts +100 -0
  26. package/packages/panda/src/recipes/index.ts +2 -0
  27. package/packages/panda/src/recipes/range-slider.ts +59 -0
  28. package/packages/panda/src/recipes/thread.ts +77 -2
  29. package/packages/panda/styled-system/recipes/aeon-composer.d.ts +1 -1
  30. package/packages/panda/styled-system/recipes/aeon-composer.mjs +12 -0
  31. package/packages/panda/styled-system/recipes/aeon-file-upload.d.ts +31 -0
  32. package/packages/panda/styled-system/recipes/aeon-file-upload.mjs +61 -0
  33. package/packages/panda/styled-system/recipes/aeon-range-slider.d.ts +31 -0
  34. package/packages/panda/styled-system/recipes/aeon-range-slider.mjs +49 -0
  35. package/packages/panda/styled-system/recipes/aeon-thread.d.ts +1 -1
  36. package/packages/panda/styled-system/recipes/aeon-thread.mjs +20 -0
  37. package/packages/panda/styled-system/recipes/index.d.ts +2 -0
  38. package/packages/panda/styled-system/recipes/index.mjs +2 -0
  39. package/packages/panda/styled-system/styles.css +292 -0
  40. package/packages/primitives/dist/chunk-CV4UXXZF.js +44 -0
  41. package/packages/primitives/dist/chunk-IZKQSCYU.js +164 -0
  42. package/packages/primitives/dist/{chunk-PB3LFHXU.js → chunk-VUPWYBGU.js} +14 -0
  43. package/packages/primitives/dist/index.d.ts +2 -0
  44. package/packages/primitives/dist/index.js +23 -7
  45. package/packages/primitives/dist/machines/file-upload.d.ts +39 -0
  46. package/packages/primitives/dist/machines/file-upload.js +8 -0
  47. package/packages/primitives/dist/machines/range-slider.d.ts +129 -0
  48. package/packages/primitives/dist/machines/range-slider.js +12 -0
  49. package/packages/primitives/dist/machines/slider.d.ts +22 -0
  50. package/packages/primitives/dist/machines/slider.js +1 -1
  51. package/packages/primitives/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  52. package/packages/primitives/src/__tests__/file-upload.test.ts +25 -0
  53. package/packages/primitives/src/__tests__/range-slider.test.ts +39 -0
  54. package/packages/primitives/src/index.ts +2 -0
  55. package/packages/primitives/src/machines/file-upload.ts +55 -0
  56. package/packages/primitives/src/machines/range-slider.ts +209 -0
  57. package/packages/primitives/src/machines/slider.ts +17 -0
  58. package/packages/react/dist/index.d.ts +132 -26
  59. package/packages/react/dist/index.js +1822 -1029
  60. package/packages/react/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  61. package/packages/react/src/button/index.tsx +50 -15
  62. package/packages/react/src/composer/index.tsx +58 -3
  63. package/packages/react/src/file-upload/index.tsx +322 -0
  64. package/packages/react/src/floating/FloatingPositioner.tsx +8 -0
  65. package/packages/react/src/hooks/use-anchor-position.ts +88 -17
  66. package/packages/react/src/index.ts +3 -0
  67. package/packages/react/src/menu/index.tsx +37 -3
  68. package/packages/react/src/popover/index.tsx +7 -1
  69. package/packages/react/src/prompt/index.tsx +45 -0
  70. package/packages/react/src/range-slider/index.tsx +322 -0
  71. package/packages/react/src/slider/index.tsx +54 -14
  72. package/packages/react/src/thread/index.tsx +74 -3
  73. package/packages/react/src/tooltip/index.tsx +7 -1
  74. package/packages/react/src/utils/slot.tsx +47 -0
  75. package/packages/schemas/dist/index.d.ts +4 -0
  76. package/packages/schemas/dist/index.js +67 -1
  77. package/packages/schemas/json/button.json +6 -0
  78. package/packages/schemas/json/catalog.json +333 -0
  79. package/packages/schemas/json/fileUpload.json +168 -0
  80. package/packages/schemas/json/rangeSlider.json +157 -0
  81. package/packages/schemas/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  82. package/packages/schemas/prompts/cursorrules.md +3 -1
  83. package/packages/schemas/prompts/statecharts.md +1 -1
  84. package/packages/schemas/registry/catalog.json +18 -0
  85. package/packages/schemas/registry/components/button.json +6 -0
  86. package/packages/schemas/registry/components/fileUpload.json +168 -0
  87. package/packages/schemas/registry/components/rangeSlider.json +157 -0
  88. package/packages/schemas/registry/machines/fileUpload.json +182 -0
  89. package/packages/schemas/registry/machines/rangeSlider.json +201 -0
  90. package/packages/schemas/scripts/emit.ts +4 -0
  91. package/packages/schemas/src/components.ts +70 -0
  92. package/packages/schemas/src/prompts.ts +3 -1
  93. package/packages/schemas/tsconfig.json +1 -1
  94. package/packages/ui/dist/index.d.ts +100 -46
  95. package/packages/ui/dist/index.js +463 -341
  96. package/packages/ui/src/composer.tsx +37 -11
  97. package/packages/ui/src/file-upload.tsx +36 -0
  98. package/packages/ui/src/index.ts +2 -0
  99. package/packages/ui/src/prompt.tsx +3 -0
  100. package/packages/ui/src/range-slider.tsx +24 -0
  101. package/packages/ui/src/thread.tsx +40 -0
  102. package/scripts/link-scoped-packages.mjs +206 -0
  103. package/scripts/vite-aliases.mjs +6 -8
  104. package/packages/cli/dist/chunk-IW5NT2Z2.js +0 -103
@@ -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
+ }
@@ -0,0 +1,182 @@
1
+ {
2
+ "id": "fileUpload",
3
+ "initial": "idle",
4
+ "events": [
5
+ "DRAG_OVER",
6
+ "DROP_REJECT",
7
+ "RESET",
8
+ "DRAG_LEAVE",
9
+ "DROP_ACCEPT"
10
+ ],
11
+ "tree": {
12
+ "key": "fileUpload",
13
+ "id": "fileUpload",
14
+ "type": "compound",
15
+ "events": [
16
+ "DRAG_OVER",
17
+ "DROP_REJECT",
18
+ "RESET",
19
+ "DRAG_LEAVE",
20
+ "DROP_ACCEPT"
21
+ ],
22
+ "transitions": [],
23
+ "children": [
24
+ {
25
+ "key": "idle",
26
+ "id": "fileUpload.idle",
27
+ "type": "atomic",
28
+ "events": [
29
+ "DRAG_OVER",
30
+ "DROP_REJECT",
31
+ "RESET"
32
+ ],
33
+ "transitions": [
34
+ {
35
+ "event": "DRAG_OVER",
36
+ "target": [
37
+ "dragging"
38
+ ],
39
+ "guarded": false
40
+ },
41
+ {
42
+ "event": "DROP_REJECT",
43
+ "target": [
44
+ "rejected"
45
+ ],
46
+ "guarded": false
47
+ },
48
+ {
49
+ "event": "RESET",
50
+ "target": [
51
+ "idle"
52
+ ],
53
+ "guarded": false
54
+ }
55
+ ],
56
+ "children": []
57
+ },
58
+ {
59
+ "key": "dragging",
60
+ "id": "fileUpload.dragging",
61
+ "type": "atomic",
62
+ "events": [
63
+ "DRAG_OVER",
64
+ "DRAG_LEAVE",
65
+ "DROP_ACCEPT",
66
+ "DROP_REJECT"
67
+ ],
68
+ "transitions": [
69
+ {
70
+ "event": "DRAG_OVER",
71
+ "target": [
72
+ "dragging"
73
+ ],
74
+ "guarded": false
75
+ },
76
+ {
77
+ "event": "DRAG_LEAVE",
78
+ "target": [
79
+ "idle"
80
+ ],
81
+ "guarded": false
82
+ },
83
+ {
84
+ "event": "DROP_ACCEPT",
85
+ "target": [
86
+ "idle"
87
+ ],
88
+ "guarded": false
89
+ },
90
+ {
91
+ "event": "DROP_REJECT",
92
+ "target": [
93
+ "rejected"
94
+ ],
95
+ "guarded": false
96
+ }
97
+ ],
98
+ "children": []
99
+ },
100
+ {
101
+ "key": "rejected",
102
+ "id": "fileUpload.rejected",
103
+ "type": "atomic",
104
+ "events": [
105
+ "DRAG_OVER",
106
+ "DROP_ACCEPT",
107
+ "DROP_REJECT",
108
+ "RESET"
109
+ ],
110
+ "transitions": [
111
+ {
112
+ "event": "DRAG_OVER",
113
+ "target": [
114
+ "dragging"
115
+ ],
116
+ "guarded": false
117
+ },
118
+ {
119
+ "event": "DROP_ACCEPT",
120
+ "target": [
121
+ "idle"
122
+ ],
123
+ "guarded": false
124
+ },
125
+ {
126
+ "event": "DROP_REJECT",
127
+ "target": [
128
+ "rejected"
129
+ ],
130
+ "guarded": false
131
+ },
132
+ {
133
+ "event": "RESET",
134
+ "target": [
135
+ "idle"
136
+ ],
137
+ "guarded": false
138
+ }
139
+ ],
140
+ "children": []
141
+ }
142
+ ]
143
+ },
144
+ "states": {
145
+ "fileUpload": {
146
+ "events": [
147
+ "DRAG_OVER",
148
+ "DROP_REJECT",
149
+ "RESET",
150
+ "DRAG_LEAVE",
151
+ "DROP_ACCEPT"
152
+ ],
153
+ "type": "compound"
154
+ },
155
+ "fileUpload.idle": {
156
+ "events": [
157
+ "DRAG_OVER",
158
+ "DROP_REJECT",
159
+ "RESET"
160
+ ],
161
+ "type": "atomic"
162
+ },
163
+ "fileUpload.dragging": {
164
+ "events": [
165
+ "DRAG_OVER",
166
+ "DRAG_LEAVE",
167
+ "DROP_ACCEPT",
168
+ "DROP_REJECT"
169
+ ],
170
+ "type": "atomic"
171
+ },
172
+ "fileUpload.rejected": {
173
+ "events": [
174
+ "DRAG_OVER",
175
+ "DROP_ACCEPT",
176
+ "DROP_REJECT",
177
+ "RESET"
178
+ ],
179
+ "type": "atomic"
180
+ }
181
+ }
182
+ }
@@ -0,0 +1,201 @@
1
+ {
2
+ "id": "rangeSlider",
3
+ "initial": "interaction",
4
+ "events": [
5
+ "SET_VALUES",
6
+ "SET_BOUNDS",
7
+ "SET_DISABLED",
8
+ "POINTER_DOWN",
9
+ "STEP",
10
+ "HOME",
11
+ "END",
12
+ "POINTER_MOVE",
13
+ "POINTER_UP"
14
+ ],
15
+ "tree": {
16
+ "key": "rangeSlider",
17
+ "id": "rangeSlider",
18
+ "type": "compound",
19
+ "events": [
20
+ "SET_VALUES",
21
+ "SET_BOUNDS",
22
+ "SET_DISABLED",
23
+ "POINTER_DOWN",
24
+ "STEP",
25
+ "HOME",
26
+ "END",
27
+ "POINTER_MOVE",
28
+ "POINTER_UP"
29
+ ],
30
+ "transitions": [],
31
+ "children": [
32
+ {
33
+ "key": "interaction",
34
+ "id": "rangeSlider.interaction",
35
+ "type": "compound",
36
+ "events": [
37
+ "SET_VALUES",
38
+ "SET_BOUNDS",
39
+ "SET_DISABLED",
40
+ "POINTER_DOWN",
41
+ "STEP",
42
+ "HOME",
43
+ "END",
44
+ "POINTER_MOVE",
45
+ "POINTER_UP"
46
+ ],
47
+ "transitions": [],
48
+ "children": [
49
+ {
50
+ "key": "idle",
51
+ "id": "rangeSlider.interaction.idle",
52
+ "type": "atomic",
53
+ "events": [
54
+ "SET_VALUES",
55
+ "SET_BOUNDS",
56
+ "SET_DISABLED",
57
+ "POINTER_DOWN",
58
+ "STEP",
59
+ "HOME",
60
+ "END"
61
+ ],
62
+ "transitions": [
63
+ {
64
+ "event": "SET_VALUES",
65
+ "target": [],
66
+ "guarded": true
67
+ },
68
+ {
69
+ "event": "SET_BOUNDS",
70
+ "target": [],
71
+ "guarded": false
72
+ },
73
+ {
74
+ "event": "SET_DISABLED",
75
+ "target": [],
76
+ "guarded": false
77
+ },
78
+ {
79
+ "event": "POINTER_DOWN",
80
+ "target": [
81
+ "dragging"
82
+ ],
83
+ "guarded": true
84
+ },
85
+ {
86
+ "event": "STEP",
87
+ "target": [],
88
+ "guarded": true
89
+ },
90
+ {
91
+ "event": "HOME",
92
+ "target": [],
93
+ "guarded": true
94
+ },
95
+ {
96
+ "event": "END",
97
+ "target": [],
98
+ "guarded": true
99
+ }
100
+ ],
101
+ "children": []
102
+ },
103
+ {
104
+ "key": "dragging",
105
+ "id": "rangeSlider.interaction.dragging",
106
+ "type": "atomic",
107
+ "events": [
108
+ "POINTER_MOVE",
109
+ "POINTER_UP",
110
+ "SET_VALUES",
111
+ "SET_BOUNDS",
112
+ "SET_DISABLED"
113
+ ],
114
+ "transitions": [
115
+ {
116
+ "event": "POINTER_MOVE",
117
+ "target": [],
118
+ "guarded": false
119
+ },
120
+ {
121
+ "event": "POINTER_UP",
122
+ "target": [
123
+ "idle"
124
+ ],
125
+ "guarded": false
126
+ },
127
+ {
128
+ "event": "SET_VALUES",
129
+ "target": [],
130
+ "guarded": false
131
+ },
132
+ {
133
+ "event": "SET_BOUNDS",
134
+ "target": [],
135
+ "guarded": false
136
+ },
137
+ {
138
+ "event": "SET_DISABLED",
139
+ "target": [],
140
+ "guarded": false
141
+ }
142
+ ],
143
+ "children": []
144
+ }
145
+ ]
146
+ }
147
+ ]
148
+ },
149
+ "states": {
150
+ "rangeSlider": {
151
+ "events": [
152
+ "SET_VALUES",
153
+ "SET_BOUNDS",
154
+ "SET_DISABLED",
155
+ "POINTER_DOWN",
156
+ "STEP",
157
+ "HOME",
158
+ "END",
159
+ "POINTER_MOVE",
160
+ "POINTER_UP"
161
+ ],
162
+ "type": "compound"
163
+ },
164
+ "rangeSlider.interaction": {
165
+ "events": [
166
+ "SET_VALUES",
167
+ "SET_BOUNDS",
168
+ "SET_DISABLED",
169
+ "POINTER_DOWN",
170
+ "STEP",
171
+ "HOME",
172
+ "END",
173
+ "POINTER_MOVE",
174
+ "POINTER_UP"
175
+ ],
176
+ "type": "compound"
177
+ },
178
+ "rangeSlider.interaction.idle": {
179
+ "events": [
180
+ "SET_VALUES",
181
+ "SET_BOUNDS",
182
+ "SET_DISABLED",
183
+ "POINTER_DOWN",
184
+ "STEP",
185
+ "HOME",
186
+ "END"
187
+ ],
188
+ "type": "atomic"
189
+ },
190
+ "rangeSlider.interaction.dragging": {
191
+ "events": [
192
+ "POINTER_MOVE",
193
+ "POINTER_UP",
194
+ "SET_VALUES",
195
+ "SET_BOUNDS",
196
+ "SET_DISABLED"
197
+ ],
198
+ "type": "atomic"
199
+ }
200
+ }
201
+ }
@@ -13,6 +13,8 @@ import {
13
13
  panelMachine,
14
14
  popoverMachine,
15
15
  sliderMachine,
16
+ rangeSliderMachine,
17
+ fileUploadMachine,
16
18
  stickyBarMachine,
17
19
  tabsMachine,
18
20
  toastMachine,
@@ -53,6 +55,8 @@ const machines = {
53
55
  accordion: accordionMachine,
54
56
  toast: toastMachine,
55
57
  slider: sliderMachine,
58
+ rangeSlider: rangeSliderMachine,
59
+ fileUpload: fileUploadMachine,
56
60
  panel: panelMachine,
57
61
  appShell: appShellMachine,
58
62
  appNav: appNavMachine,
@@ -21,10 +21,15 @@ export const componentSchemas = {
21
21
  variant: { type: 'string', enum: ['solid', 'outline', 'ghost', 'link'] },
22
22
  size: { type: 'string', enum: ['sm', 'md', 'lg'] },
23
23
  disabled: { type: 'boolean' },
24
+ asChild: {
25
+ type: 'boolean',
26
+ description: 'Merge button attrs onto a single child element (Link, a).',
27
+ },
24
28
  },
25
29
  slots: { Root: 'button.root', Group: 'button.group', Label: 'button.label', Icon: 'button.icon' },
26
30
  examples: [
27
31
  '<Button.Root status="pending" aria-busy>Saving…</Button.Root>',
32
+ '<Button.Root asChild variant="solid"><a href="/upload">Upload</a></Button.Root>',
28
33
  "const [snap, send] = useAeonMachine(buttonLifecycleMachine)\n<Button.Root status={snap.value as ButtonStatus} onClick={() => send({ type: 'PRESS' })} />",
29
34
  ],
30
35
  }),
@@ -331,6 +336,71 @@ export const componentSchemas = {
331
336
  },
332
337
  }),
333
338
 
339
+ rangeSlider: componentSchema({
340
+ id: 'https://aeon-ui.com/schemas/rangeSlider.json',
341
+ title: 'RangeSlider',
342
+ description:
343
+ 'Two-thumb range via rangeSliderMachine — idle | dragging with values pair and minStepsBetween gap.',
344
+ scope: 'rangeSlider',
345
+ parts: ['root', 'track', 'range', 'thumb', 'valueText'],
346
+ states: ['idle', 'dragging'],
347
+ machine: 'rangeSliderMachine',
348
+ runtime: 'useAeonMachine',
349
+ events: [
350
+ 'SET_VALUES',
351
+ 'SET_BOUNDS',
352
+ 'SET_DISABLED',
353
+ 'POINTER_DOWN',
354
+ 'POINTER_MOVE',
355
+ 'POINTER_UP',
356
+ 'STEP',
357
+ 'HOME',
358
+ 'END',
359
+ ],
360
+ slots: {
361
+ Root: 'rangeSlider.root',
362
+ Track: 'rangeSlider.track',
363
+ Range: 'rangeSlider.range',
364
+ Thumb: 'rangeSlider.thumb',
365
+ ValueText: 'rangeSlider.valueText',
366
+ },
367
+ examples: [
368
+ '<RangeSlider.Root defaultValue={[20, 80]} minStepsBetween={1}>\n <RangeSlider.Track /><RangeSlider.Range />\n <RangeSlider.Thumb index={0} /><RangeSlider.Thumb index={1} />\n</RangeSlider.Root>',
369
+ ],
370
+ }),
371
+
372
+ fileUpload: componentSchema({
373
+ id: 'https://aeon-ui.com/schemas/fileUpload.json',
374
+ title: 'FileUpload',
375
+ description:
376
+ 'Drag-drop surface via fileUploadMachine — idle | dragging | rejected. File bytes stay in React callbacks.',
377
+ scope: 'fileUpload',
378
+ parts: [
379
+ 'root',
380
+ 'dropzone',
381
+ 'input',
382
+ 'label',
383
+ 'hint',
384
+ 'preview',
385
+ 'clearTrigger',
386
+ 'rejectionMessage',
387
+ ],
388
+ states: ['idle', 'dragging', 'rejected'],
389
+ machine: 'fileUploadMachine',
390
+ runtime: 'useAeonMachine',
391
+ events: ['DRAG_OVER', 'DRAG_LEAVE', 'DROP_ACCEPT', 'DROP_REJECT', 'RESET'],
392
+ slots: {
393
+ Root: 'fileUpload.root',
394
+ Dropzone: 'fileUpload.dropzone',
395
+ Input: 'fileUpload.input',
396
+ Label: 'fileUpload.label',
397
+ Hint: 'fileUpload.hint',
398
+ Preview: 'fileUpload.preview',
399
+ ClearTrigger: 'fileUpload.clearTrigger',
400
+ RejectionMessage: 'fileUpload.rejectionMessage',
401
+ },
402
+ }),
403
+
334
404
  pinInput: componentSchema({
335
405
  id: 'https://aeon-ui.com/schemas/pinInput.json',
336
406
  title: 'PinInput',
@@ -128,7 +128,9 @@ When generating Aeon UI, constrain props/parts/states to @aeon-ui/schemas catalo
128
128
  Import headless from @aeon-ui/react or styled from @aeon-ui/ui.
129
129
  Install: npm install aeon-ui-engine react react-dom xstate @xstate/react
130
130
  CSS: import 'aeon-ui-engine/aeon.css'
131
- Vite: aeonUiVitePlugin() from aeon-ui-engine/vite
131
+ Link: postinstall + npx aeon-ui link (node_modules/@aeon-ui/*)
132
+ Next.js: transpilePackages for @aeon-ui/* + "use client"; Vite plugin optional
133
+ Vue/Solid/Svelte: thin adapters only — React is the full catalog
132
134
 
133
135
  ${STATECHART_PROMPTS.async}
134
136
 
@@ -5,5 +5,5 @@
5
5
  "rootDir": "src",
6
6
  "noEmit": true
7
7
  },
8
- "include": ["src", "scripts"]
8
+ "include": ["src"]
9
9
  }