aeon-ui-engine 1.3.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.
- package/CHANGELOG.md +61 -0
- package/package.json +1 -1
- package/packages/cli/README.md +13 -1
- package/packages/cli/dist/bin.js +23 -5
- package/packages/cli/dist/chunk-5L47SLNV.js +247 -0
- package/packages/cli/dist/index.d.ts +17 -1
- package/packages/cli/dist/index.js +5 -3
- package/packages/cli/src/bin.ts +21 -3
- package/packages/cli/src/index.ts +1 -0
- package/packages/cli/src/migrate.ts +170 -0
- package/packages/core/dist/index.d.ts +35 -7
- package/packages/core/dist/index.js +102 -2
- package/packages/core/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
- package/packages/core/src/anatomy.ts +39 -3
- package/packages/core/src/identicon.test.ts +39 -0
- package/packages/core/src/identicon.ts +79 -0
- package/packages/core/src/index.ts +1 -0
- package/packages/panda/panda.config.ts +4 -0
- package/packages/panda/src/recipes/composer.ts +58 -4
- package/packages/panda/src/recipes/file-upload.ts +100 -0
- package/packages/panda/src/recipes/index.ts +2 -0
- package/packages/panda/src/recipes/range-slider.ts +59 -0
- package/packages/panda/src/recipes/thread.ts +77 -2
- package/packages/panda/styled-system/recipes/aeon-composer.d.ts +1 -1
- package/packages/panda/styled-system/recipes/aeon-composer.mjs +12 -0
- package/packages/panda/styled-system/recipes/aeon-file-upload.d.ts +31 -0
- package/packages/panda/styled-system/recipes/aeon-file-upload.mjs +61 -0
- package/packages/panda/styled-system/recipes/aeon-range-slider.d.ts +31 -0
- package/packages/panda/styled-system/recipes/aeon-range-slider.mjs +49 -0
- package/packages/panda/styled-system/recipes/aeon-thread.d.ts +1 -1
- package/packages/panda/styled-system/recipes/aeon-thread.mjs +20 -0
- package/packages/panda/styled-system/recipes/index.d.ts +2 -0
- package/packages/panda/styled-system/recipes/index.mjs +2 -0
- package/packages/panda/styled-system/styles.css +292 -0
- package/packages/primitives/dist/chunk-CV4UXXZF.js +44 -0
- package/packages/primitives/dist/chunk-IZKQSCYU.js +164 -0
- package/packages/primitives/dist/index.d.ts +2 -0
- package/packages/primitives/dist/index.js +22 -6
- package/packages/primitives/dist/machines/file-upload.d.ts +39 -0
- package/packages/primitives/dist/machines/file-upload.js +8 -0
- package/packages/primitives/dist/machines/range-slider.d.ts +129 -0
- package/packages/primitives/dist/machines/range-slider.js +12 -0
- package/packages/primitives/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
- package/packages/primitives/src/__tests__/file-upload.test.ts +25 -0
- package/packages/primitives/src/__tests__/range-slider.test.ts +39 -0
- package/packages/primitives/src/index.ts +2 -0
- package/packages/primitives/src/machines/file-upload.ts +55 -0
- package/packages/primitives/src/machines/range-slider.ts +209 -0
- package/packages/react/dist/index.d.ts +117 -25
- package/packages/react/dist/index.js +1731 -1006
- package/packages/react/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
- package/packages/react/src/button/index.tsx +50 -15
- package/packages/react/src/combobox/index.tsx +13 -8
- package/packages/react/src/composer/index.tsx +58 -3
- package/packages/react/src/file-upload/index.tsx +322 -0
- package/packages/react/src/index.ts +3 -0
- package/packages/react/src/prompt/index.tsx +45 -0
- package/packages/react/src/range-slider/index.tsx +322 -0
- package/packages/react/src/thread/index.tsx +74 -3
- package/packages/react/src/tooltip/index.tsx +48 -22
- package/packages/react/src/utils/slot.tsx +47 -0
- package/packages/schemas/dist/index.d.ts +73 -24
- package/packages/schemas/dist/index.js +514 -50
- package/packages/schemas/json/appNav.json +146 -0
- package/packages/schemas/json/appShell.json +151 -0
- package/packages/schemas/json/avatar.json +130 -0
- package/packages/schemas/json/bar.json +126 -0
- package/packages/schemas/json/button.json +6 -0
- package/packages/schemas/json/catalog.json +3496 -15
- package/packages/schemas/json/combobox.json +19 -7
- package/packages/schemas/json/composer.json +125 -0
- package/packages/schemas/json/content.json +167 -0
- package/packages/schemas/json/conversation.json +166 -0
- package/packages/schemas/json/entry.json +182 -0
- package/packages/schemas/json/fileUpload.json +168 -0
- package/packages/schemas/json/identity.json +147 -0
- package/packages/schemas/json/listRow.json +131 -0
- package/packages/schemas/json/metricStrip.json +132 -0
- package/packages/schemas/json/nav.json +136 -0
- package/packages/schemas/json/panel.json +143 -0
- package/packages/schemas/json/pinInput.json +112 -0
- package/packages/schemas/json/profileHeader.json +138 -0
- package/packages/schemas/json/prompt.json +155 -0
- package/packages/schemas/json/radioGroup.json +130 -0
- package/packages/schemas/json/rangeSlider.json +157 -0
- package/packages/schemas/json/separator.json +105 -0
- package/packages/schemas/json/slider.json +147 -0
- package/packages/schemas/json/statusBanner.json +149 -0
- package/packages/schemas/json/stickyBar.json +153 -0
- package/packages/schemas/json/thread.json +129 -0
- package/packages/schemas/json/tooltip.json +21 -7
- package/packages/schemas/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
- package/packages/schemas/prompts/cursorrules.md +6 -4
- package/packages/schemas/prompts/statecharts.md +23 -2
- package/packages/schemas/prompts/system.md +2 -2
- package/packages/schemas/registry/catalog.json +313 -4
- package/packages/schemas/registry/components/appNav.json +146 -0
- package/packages/schemas/registry/components/appShell.json +151 -0
- package/packages/schemas/registry/components/avatar.json +130 -0
- package/packages/schemas/registry/components/bar.json +126 -0
- package/packages/schemas/registry/components/button.json +6 -0
- package/packages/schemas/registry/components/combobox.json +19 -7
- package/packages/schemas/registry/components/composer.json +125 -0
- package/packages/schemas/registry/components/content.json +167 -0
- package/packages/schemas/registry/components/conversation.json +166 -0
- package/packages/schemas/registry/components/entry.json +182 -0
- package/packages/schemas/registry/components/fileUpload.json +168 -0
- package/packages/schemas/registry/components/identity.json +147 -0
- package/packages/schemas/registry/components/listRow.json +131 -0
- package/packages/schemas/registry/components/metricStrip.json +132 -0
- package/packages/schemas/registry/components/nav.json +136 -0
- package/packages/schemas/registry/components/panel.json +143 -0
- package/packages/schemas/registry/components/pinInput.json +112 -0
- package/packages/schemas/registry/components/profileHeader.json +138 -0
- package/packages/schemas/registry/components/prompt.json +155 -0
- package/packages/schemas/registry/components/radioGroup.json +130 -0
- package/packages/schemas/registry/components/rangeSlider.json +157 -0
- package/packages/schemas/registry/components/separator.json +105 -0
- package/packages/schemas/registry/components/slider.json +147 -0
- package/packages/schemas/registry/components/statusBanner.json +149 -0
- package/packages/schemas/registry/components/stickyBar.json +153 -0
- package/packages/schemas/registry/components/thread.json +129 -0
- package/packages/schemas/registry/components/tooltip.json +21 -7
- package/packages/schemas/registry/machines/accordion.json +58 -0
- package/packages/schemas/registry/machines/appNav.json +108 -0
- package/packages/schemas/registry/machines/appShell.json +128 -0
- package/packages/schemas/registry/machines/contentRegion.json +314 -0
- package/packages/schemas/registry/machines/fileUpload.json +182 -0
- package/packages/schemas/registry/machines/panel.json +131 -0
- package/packages/schemas/registry/machines/popover.json +143 -0
- package/packages/schemas/registry/machines/rangeSlider.json +201 -0
- package/packages/schemas/registry/machines/slider.json +151 -0
- package/packages/schemas/registry/machines/stickyBar.json +261 -0
- package/packages/schemas/registry/machines/tabs.json +58 -0
- package/packages/schemas/registry/machines/toast.json +89 -0
- package/packages/schemas/registry/machines/toggle.json +134 -0
- package/packages/schemas/scripts/emit.ts +27 -0
- package/packages/schemas/src/components.ts +499 -6
- package/packages/schemas/src/index.test.ts +83 -0
- package/packages/schemas/src/index.ts +1 -0
- package/packages/schemas/src/machine-id.ts +7 -0
- package/packages/schemas/src/prompts.ts +25 -4
- package/packages/schemas/src/registry.ts +28 -39
- package/packages/schemas/tsconfig.json +1 -1
- package/packages/ui/dist/index.d.ts +100 -46
- package/packages/ui/dist/index.js +463 -341
- package/packages/ui/src/composer.tsx +37 -11
- package/packages/ui/src/file-upload.tsx +36 -0
- package/packages/ui/src/index.ts +2 -0
- package/packages/ui/src/prompt.tsx +3 -0
- package/packages/ui/src/range-slider.tsx +24 -0
- package/packages/ui/src/thread.tsx +40 -0
- package/packages/cli/dist/chunk-IW5NT2Z2.js +0 -103
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://aeon-ui.com/schemas/stickyBar.json",
|
|
4
|
+
"title": "StickyBar",
|
|
5
|
+
"description": "Sticky/fixed chrome band via stickyBarMachine. DOM scope is bar (reuses bar anatomy zones).",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"component",
|
|
10
|
+
"scope"
|
|
11
|
+
],
|
|
12
|
+
"properties": {
|
|
13
|
+
"component": {
|
|
14
|
+
"const": "StickyBar"
|
|
15
|
+
},
|
|
16
|
+
"scope": {
|
|
17
|
+
"const": "bar"
|
|
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
|
+
"leading",
|
|
27
|
+
"center",
|
|
28
|
+
"trailing",
|
|
29
|
+
"seam"
|
|
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
|
+
"floating",
|
|
41
|
+
"docked",
|
|
42
|
+
"collapsed",
|
|
43
|
+
"hidden"
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
"uniqueItems": true
|
|
47
|
+
},
|
|
48
|
+
"props": {
|
|
49
|
+
"type": "object",
|
|
50
|
+
"additionalProperties": false,
|
|
51
|
+
"properties": {}
|
|
52
|
+
},
|
|
53
|
+
"slots": {
|
|
54
|
+
"type": "object",
|
|
55
|
+
"description": "Named composition slots / compound parts",
|
|
56
|
+
"additionalProperties": {
|
|
57
|
+
"type": "string"
|
|
58
|
+
},
|
|
59
|
+
"properties": {
|
|
60
|
+
"Root": {
|
|
61
|
+
"const": "bar.root",
|
|
62
|
+
"description": "bar.root"
|
|
63
|
+
},
|
|
64
|
+
"Leading": {
|
|
65
|
+
"const": "bar.leading",
|
|
66
|
+
"description": "bar.leading"
|
|
67
|
+
},
|
|
68
|
+
"Center": {
|
|
69
|
+
"const": "bar.center",
|
|
70
|
+
"description": "bar.center"
|
|
71
|
+
},
|
|
72
|
+
"Trailing": {
|
|
73
|
+
"const": "bar.trailing",
|
|
74
|
+
"description": "bar.trailing"
|
|
75
|
+
},
|
|
76
|
+
"Seam": {
|
|
77
|
+
"const": "bar.seam",
|
|
78
|
+
"description": "bar.seam"
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
"machine": {
|
|
83
|
+
"type": [
|
|
84
|
+
"string",
|
|
85
|
+
"null"
|
|
86
|
+
],
|
|
87
|
+
"description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
|
|
88
|
+
"const": "stickyBarMachine"
|
|
89
|
+
},
|
|
90
|
+
"runtime": {
|
|
91
|
+
"type": "string",
|
|
92
|
+
"description": "How headless state is driven at runtime",
|
|
93
|
+
"const": "useAeonMachine"
|
|
94
|
+
},
|
|
95
|
+
"events": {
|
|
96
|
+
"type": "array",
|
|
97
|
+
"items": {
|
|
98
|
+
"type": "string",
|
|
99
|
+
"enum": [
|
|
100
|
+
"DOCK",
|
|
101
|
+
"FLOAT",
|
|
102
|
+
"COLLAPSE",
|
|
103
|
+
"EXPAND",
|
|
104
|
+
"HIDE",
|
|
105
|
+
"SHOW",
|
|
106
|
+
"SET_OFFSET"
|
|
107
|
+
]
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
"examples": {
|
|
111
|
+
"type": "array",
|
|
112
|
+
"items": {
|
|
113
|
+
"type": "string"
|
|
114
|
+
},
|
|
115
|
+
"default": []
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
"x-aeon": {
|
|
119
|
+
"scope": "bar",
|
|
120
|
+
"parts": [
|
|
121
|
+
"root",
|
|
122
|
+
"leading",
|
|
123
|
+
"center",
|
|
124
|
+
"trailing",
|
|
125
|
+
"seam"
|
|
126
|
+
],
|
|
127
|
+
"states": [
|
|
128
|
+
"floating",
|
|
129
|
+
"docked",
|
|
130
|
+
"collapsed",
|
|
131
|
+
"hidden"
|
|
132
|
+
],
|
|
133
|
+
"machine": "stickyBarMachine",
|
|
134
|
+
"runtime": "useAeonMachine",
|
|
135
|
+
"events": [
|
|
136
|
+
"DOCK",
|
|
137
|
+
"FLOAT",
|
|
138
|
+
"COLLAPSE",
|
|
139
|
+
"EXPAND",
|
|
140
|
+
"HIDE",
|
|
141
|
+
"SHOW",
|
|
142
|
+
"SET_OFFSET"
|
|
143
|
+
],
|
|
144
|
+
"slots": {
|
|
145
|
+
"Root": "bar.root",
|
|
146
|
+
"Leading": "bar.leading",
|
|
147
|
+
"Center": "bar.center",
|
|
148
|
+
"Trailing": "bar.trailing",
|
|
149
|
+
"Seam": "bar.seam"
|
|
150
|
+
},
|
|
151
|
+
"examples": []
|
|
152
|
+
}
|
|
153
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://aeon-ui.com/schemas/thread.json",
|
|
4
|
+
"title": "Thread",
|
|
5
|
+
"description": "Message stream — item state prop mine | theirs | pending | failed.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"component",
|
|
10
|
+
"scope"
|
|
11
|
+
],
|
|
12
|
+
"properties": {
|
|
13
|
+
"component": {
|
|
14
|
+
"const": "Thread"
|
|
15
|
+
},
|
|
16
|
+
"scope": {
|
|
17
|
+
"const": "thread"
|
|
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
|
+
"list",
|
|
27
|
+
"item",
|
|
28
|
+
"bubble",
|
|
29
|
+
"meta",
|
|
30
|
+
"day"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
"uniqueItems": true
|
|
34
|
+
},
|
|
35
|
+
"states": {
|
|
36
|
+
"type": "array",
|
|
37
|
+
"description": "Allowed data-aeon-state values (stable states only)",
|
|
38
|
+
"items": {
|
|
39
|
+
"type": "string",
|
|
40
|
+
"enum": [
|
|
41
|
+
"mine",
|
|
42
|
+
"theirs",
|
|
43
|
+
"pending",
|
|
44
|
+
"failed"
|
|
45
|
+
]
|
|
46
|
+
},
|
|
47
|
+
"uniqueItems": true
|
|
48
|
+
},
|
|
49
|
+
"props": {
|
|
50
|
+
"type": "object",
|
|
51
|
+
"additionalProperties": false,
|
|
52
|
+
"properties": {}
|
|
53
|
+
},
|
|
54
|
+
"slots": {
|
|
55
|
+
"type": "object",
|
|
56
|
+
"description": "Named composition slots / compound parts",
|
|
57
|
+
"additionalProperties": {
|
|
58
|
+
"type": "string"
|
|
59
|
+
},
|
|
60
|
+
"properties": {
|
|
61
|
+
"Root": {
|
|
62
|
+
"const": "thread.root",
|
|
63
|
+
"description": "thread.root"
|
|
64
|
+
},
|
|
65
|
+
"Item": {
|
|
66
|
+
"const": "thread.item",
|
|
67
|
+
"description": "thread.item"
|
|
68
|
+
},
|
|
69
|
+
"Bubble": {
|
|
70
|
+
"const": "thread.bubble",
|
|
71
|
+
"description": "thread.bubble"
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"machine": {
|
|
76
|
+
"type": [
|
|
77
|
+
"string",
|
|
78
|
+
"null"
|
|
79
|
+
],
|
|
80
|
+
"description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
|
|
81
|
+
"const": null
|
|
82
|
+
},
|
|
83
|
+
"runtime": {
|
|
84
|
+
"type": "string",
|
|
85
|
+
"description": "How headless state is driven at runtime",
|
|
86
|
+
"const": "props"
|
|
87
|
+
},
|
|
88
|
+
"events": {
|
|
89
|
+
"type": "array",
|
|
90
|
+
"items": {
|
|
91
|
+
"type": "string",
|
|
92
|
+
"enum": []
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
"examples": {
|
|
96
|
+
"type": "array",
|
|
97
|
+
"items": {
|
|
98
|
+
"type": "string"
|
|
99
|
+
},
|
|
100
|
+
"default": []
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
"x-aeon": {
|
|
104
|
+
"scope": "thread",
|
|
105
|
+
"parts": [
|
|
106
|
+
"root",
|
|
107
|
+
"list",
|
|
108
|
+
"item",
|
|
109
|
+
"bubble",
|
|
110
|
+
"meta",
|
|
111
|
+
"day"
|
|
112
|
+
],
|
|
113
|
+
"states": [
|
|
114
|
+
"mine",
|
|
115
|
+
"theirs",
|
|
116
|
+
"pending",
|
|
117
|
+
"failed"
|
|
118
|
+
],
|
|
119
|
+
"machine": null,
|
|
120
|
+
"runtime": "props",
|
|
121
|
+
"events": [],
|
|
122
|
+
"slots": {
|
|
123
|
+
"Root": "thread.root",
|
|
124
|
+
"Item": "thread.item",
|
|
125
|
+
"Bubble": "thread.bubble"
|
|
126
|
+
},
|
|
127
|
+
"examples": []
|
|
128
|
+
}
|
|
129
|
+
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://aeon-ui.com/schemas/tooltip.json",
|
|
4
4
|
"title": "Tooltip",
|
|
5
|
-
"description": "Open via
|
|
5
|
+
"description": "Open/closed via popoverMachine (same family as Popover/Select/Combobox). openDelay / closeDelay / touchDuration stay React-local.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"additionalProperties": false,
|
|
8
8
|
"required": [
|
|
@@ -75,18 +75,25 @@
|
|
|
75
75
|
"null"
|
|
76
76
|
],
|
|
77
77
|
"description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
|
|
78
|
-
"const":
|
|
78
|
+
"const": "popoverMachine"
|
|
79
79
|
},
|
|
80
80
|
"runtime": {
|
|
81
81
|
"type": "string",
|
|
82
82
|
"description": "How headless state is driven at runtime",
|
|
83
|
-
"const": "
|
|
83
|
+
"const": "useAeonMachine"
|
|
84
84
|
},
|
|
85
85
|
"events": {
|
|
86
86
|
"type": "array",
|
|
87
87
|
"items": {
|
|
88
88
|
"type": "string",
|
|
89
|
-
"enum": [
|
|
89
|
+
"enum": [
|
|
90
|
+
"OPEN",
|
|
91
|
+
"CLOSE",
|
|
92
|
+
"TOGGLE",
|
|
93
|
+
"SET_OPEN",
|
|
94
|
+
"ESCAPE",
|
|
95
|
+
"POINTER_DOWN_OUTSIDE"
|
|
96
|
+
]
|
|
90
97
|
}
|
|
91
98
|
},
|
|
92
99
|
"examples": {
|
|
@@ -110,9 +117,16 @@
|
|
|
110
117
|
"open",
|
|
111
118
|
"closed"
|
|
112
119
|
],
|
|
113
|
-
"machine":
|
|
114
|
-
"runtime": "
|
|
115
|
-
"events": [
|
|
120
|
+
"machine": "popoverMachine",
|
|
121
|
+
"runtime": "useAeonMachine",
|
|
122
|
+
"events": [
|
|
123
|
+
"OPEN",
|
|
124
|
+
"CLOSE",
|
|
125
|
+
"TOGGLE",
|
|
126
|
+
"SET_OPEN",
|
|
127
|
+
"ESCAPE",
|
|
128
|
+
"POINTER_DOWN_OUTSIDE"
|
|
129
|
+
],
|
|
116
130
|
"slots": {
|
|
117
131
|
"Root": "tooltip.root",
|
|
118
132
|
"Trigger": "tooltip.trigger",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"4.1.8","results":[[":src/index.test.ts",{"duration":
|
|
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}]]}
|
|
@@ -10,8 +10,8 @@ You are building UI with **Aeon UI**, a React component library powered by finit
|
|
|
10
10
|
## Non-negotiable rules
|
|
11
11
|
1. Do not duplicate open/checked/lifecycle in `useState` when a machine exists in `@aeon-ui/primitives`.
|
|
12
12
|
2. **Button `status` is a prop** (`idle|pending|success|failure|disabled`). Optional: drive it from `buttonLifecycleMachine` via `useAeonMachine` in app code.
|
|
13
|
-
3. **Select / Menu / Popover** share `popoverMachine` — never fork another open/closed chart.
|
|
14
|
-
4. **
|
|
13
|
+
3. **Select / Menu / Popover / Combobox / Tooltip** share `popoverMachine` for open/closed — never fork another open/closed chart. Combobox keeps query/highlight in React; Tooltip keeps openDelay/closeDelay/touchDuration in React.
|
|
14
|
+
4. **PinInput** digit buffer is React-local today — do not invent a pin machine without the component checklist.
|
|
15
15
|
5. **Scroll** uses `getScrollSnapshot()` — no XState machine.
|
|
16
16
|
6. If a machine lists N stable states, the UI must represent all N (totality).
|
|
17
17
|
7. Prefer `@aeon-ui/react` (headless) or `@aeon-ui/ui` (styled). Relative TS imports use `.js` extensions inside the Aeon monorepo only.
|
|
@@ -59,6 +59,8 @@ Rule: Pending must set aria-busy. Do not use disabled alone to mean "saving".
|
|
|
59
59
|
States: open | closed. Events: OPEN, CLOSE, TOGGLE.
|
|
60
60
|
Rule: Backdrop click and Escape are CLOSE transitions. Title/Description are required for a11y when open.
|
|
61
61
|
|
|
62
|
-
## Popover family (Popover, Menu, Select open state)
|
|
62
|
+
## Popover family (Popover, Menu, Select, Combobox, Tooltip open state)
|
|
63
63
|
Machine: popoverMachine — states open | closed.
|
|
64
|
-
Rule: Reuse this chart. Never create selectOpenMachine / menuOpenMachine forks.
|
|
64
|
+
Rule: Reuse this chart. Never create selectOpenMachine / menuOpenMachine / comboboxOpenMachine / tooltipOpenMachine forks.
|
|
65
|
+
Combobox: query + highlight stay React-local; open/closed must still be popoverMachine.
|
|
66
|
+
Tooltip: openDelay / closeDelay / touchDuration stay React-local; open/closed must still be popoverMachine.
|
|
@@ -22,10 +22,31 @@ Rule: Pending must set aria-busy. Do not use disabled alone to mean "saving".
|
|
|
22
22
|
States: open | closed. Events: OPEN, CLOSE, TOGGLE.
|
|
23
23
|
Rule: Backdrop click and Escape are CLOSE transitions. Title/Description are required for a11y when open.
|
|
24
24
|
|
|
25
|
-
## Popover family (Popover, Menu, Select open state)
|
|
25
|
+
## Popover family (Popover, Menu, Select, Combobox, Tooltip open state)
|
|
26
26
|
Machine: popoverMachine — states open | closed.
|
|
27
|
-
Rule: Reuse this chart. Never create selectOpenMachine / menuOpenMachine forks.
|
|
27
|
+
Rule: Reuse this chart. Never create selectOpenMachine / menuOpenMachine / comboboxOpenMachine / tooltipOpenMachine forks.
|
|
28
|
+
Combobox: query + highlight stay React-local; open/closed must still be popoverMachine.
|
|
29
|
+
Tooltip: openDelay / closeDelay / touchDuration stay React-local; open/closed must still be popoverMachine.
|
|
28
30
|
|
|
29
31
|
## Switch / Checkbox
|
|
30
32
|
Machine: toggleMachine — checked | unchecked. Events: TOGGLE, CHECK, UNCHECK.
|
|
31
33
|
Rule: Hidden input stays in sync with snapshot for forms.
|
|
34
|
+
|
|
35
|
+
## Slider statechart
|
|
36
|
+
Machine: sliderMachine — idle | dragging; value/min/max/step in context.
|
|
37
|
+
Events: SET_VALUE, STEP, POINTER_DOWN, POINTER_UP, HOME, END.
|
|
38
|
+
Rule: Disabled blocks SET_VALUE / drag; project idle vs dragging on data-aeon-state.
|
|
39
|
+
|
|
40
|
+
## Content region statechart
|
|
41
|
+
Machine: contentRegionMachine — idle → pending → (empty | error | ready) → loadingMore | success.
|
|
42
|
+
Events: LOAD, RESOLVE, REJECT, RETRY, LOAD_MORE, MORE_DONE, SUCCEED, RESET.
|
|
43
|
+
Rule: Every stable state has a slot. Pair with Async for fetch; do not hide empty/error behind a spinner.
|
|
44
|
+
|
|
45
|
+
## Toast item statechart
|
|
46
|
+
Machine: toastMachine — hidden | visible. Events: SHOW, HIDE, DISMISS.
|
|
47
|
+
Rule: Provider list orchestration may use React; each toast item uses the machine.
|
|
48
|
+
|
|
49
|
+
## StickyBar statechart
|
|
50
|
+
Machine: stickyBarMachine — floating | docked | collapsed | hidden.
|
|
51
|
+
Events: DOCK, FLOAT, COLLAPSE, EXPAND, HIDE, SHOW, SET_OFFSET.
|
|
52
|
+
Rule: DOM scope is bar (bar anatomy zones). Do not invent a parallel sticky useState.
|
|
@@ -10,8 +10,8 @@ You are building UI with **Aeon UI**, a React component library powered by finit
|
|
|
10
10
|
## Non-negotiable rules
|
|
11
11
|
1. Do not duplicate open/checked/lifecycle in `useState` when a machine exists in `@aeon-ui/primitives`.
|
|
12
12
|
2. **Button `status` is a prop** (`idle|pending|success|failure|disabled`). Optional: drive it from `buttonLifecycleMachine` via `useAeonMachine` in app code.
|
|
13
|
-
3. **Select / Menu / Popover** share `popoverMachine` — never fork another open/closed chart.
|
|
14
|
-
4. **
|
|
13
|
+
3. **Select / Menu / Popover / Combobox / Tooltip** share `popoverMachine` for open/closed — never fork another open/closed chart. Combobox keeps query/highlight in React; Tooltip keeps openDelay/closeDelay/touchDuration in React.
|
|
14
|
+
4. **PinInput** digit buffer is React-local today — do not invent a pin machine without the component checklist.
|
|
15
15
|
5. **Scroll** uses `getScrollSnapshot()` — no XState machine.
|
|
16
16
|
6. If a machine lists N stable states, the UI must represent all N (totality).
|
|
17
17
|
7. Prefer `@aeon-ui/react` (headless) or `@aeon-ui/ui` (styled). Relative TS imports use `.js` extensions inside the Aeon monorepo only.
|