aeon-ui-engine 1.3.0 → 1.3.5

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 (80) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/package.json +7 -2
  3. package/packages/react/src/combobox/index.tsx +13 -8
  4. package/packages/react/src/tooltip/index.tsx +48 -22
  5. package/packages/schemas/dist/index.d.ts +69 -24
  6. package/packages/schemas/dist/index.js +447 -49
  7. package/packages/schemas/json/appNav.json +146 -0
  8. package/packages/schemas/json/appShell.json +151 -0
  9. package/packages/schemas/json/avatar.json +130 -0
  10. package/packages/schemas/json/bar.json +126 -0
  11. package/packages/schemas/json/catalog.json +3163 -15
  12. package/packages/schemas/json/combobox.json +19 -7
  13. package/packages/schemas/json/composer.json +125 -0
  14. package/packages/schemas/json/content.json +167 -0
  15. package/packages/schemas/json/conversation.json +166 -0
  16. package/packages/schemas/json/entry.json +182 -0
  17. package/packages/schemas/json/identity.json +147 -0
  18. package/packages/schemas/json/listRow.json +131 -0
  19. package/packages/schemas/json/metricStrip.json +132 -0
  20. package/packages/schemas/json/nav.json +136 -0
  21. package/packages/schemas/json/panel.json +143 -0
  22. package/packages/schemas/json/pinInput.json +112 -0
  23. package/packages/schemas/json/profileHeader.json +138 -0
  24. package/packages/schemas/json/prompt.json +155 -0
  25. package/packages/schemas/json/radioGroup.json +130 -0
  26. package/packages/schemas/json/separator.json +105 -0
  27. package/packages/schemas/json/slider.json +147 -0
  28. package/packages/schemas/json/statusBanner.json +149 -0
  29. package/packages/schemas/json/stickyBar.json +153 -0
  30. package/packages/schemas/json/thread.json +129 -0
  31. package/packages/schemas/json/tooltip.json +21 -7
  32. package/packages/schemas/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  33. package/packages/schemas/prompts/cursorrules.md +6 -4
  34. package/packages/schemas/prompts/statecharts.md +23 -2
  35. package/packages/schemas/prompts/system.md +2 -2
  36. package/packages/schemas/registry/catalog.json +295 -4
  37. package/packages/schemas/registry/components/appNav.json +146 -0
  38. package/packages/schemas/registry/components/appShell.json +151 -0
  39. package/packages/schemas/registry/components/avatar.json +130 -0
  40. package/packages/schemas/registry/components/bar.json +126 -0
  41. package/packages/schemas/registry/components/combobox.json +19 -7
  42. package/packages/schemas/registry/components/composer.json +125 -0
  43. package/packages/schemas/registry/components/content.json +167 -0
  44. package/packages/schemas/registry/components/conversation.json +166 -0
  45. package/packages/schemas/registry/components/entry.json +182 -0
  46. package/packages/schemas/registry/components/identity.json +147 -0
  47. package/packages/schemas/registry/components/listRow.json +131 -0
  48. package/packages/schemas/registry/components/metricStrip.json +132 -0
  49. package/packages/schemas/registry/components/nav.json +136 -0
  50. package/packages/schemas/registry/components/panel.json +143 -0
  51. package/packages/schemas/registry/components/pinInput.json +112 -0
  52. package/packages/schemas/registry/components/profileHeader.json +138 -0
  53. package/packages/schemas/registry/components/prompt.json +155 -0
  54. package/packages/schemas/registry/components/radioGroup.json +130 -0
  55. package/packages/schemas/registry/components/separator.json +105 -0
  56. package/packages/schemas/registry/components/slider.json +147 -0
  57. package/packages/schemas/registry/components/statusBanner.json +149 -0
  58. package/packages/schemas/registry/components/stickyBar.json +153 -0
  59. package/packages/schemas/registry/components/thread.json +129 -0
  60. package/packages/schemas/registry/components/tooltip.json +21 -7
  61. package/packages/schemas/registry/machines/accordion.json +58 -0
  62. package/packages/schemas/registry/machines/appNav.json +108 -0
  63. package/packages/schemas/registry/machines/appShell.json +128 -0
  64. package/packages/schemas/registry/machines/contentRegion.json +314 -0
  65. package/packages/schemas/registry/machines/panel.json +131 -0
  66. package/packages/schemas/registry/machines/popover.json +143 -0
  67. package/packages/schemas/registry/machines/slider.json +151 -0
  68. package/packages/schemas/registry/machines/stickyBar.json +261 -0
  69. package/packages/schemas/registry/machines/tabs.json +58 -0
  70. package/packages/schemas/registry/machines/toast.json +89 -0
  71. package/packages/schemas/registry/machines/toggle.json +134 -0
  72. package/packages/schemas/scripts/emit.ts +23 -0
  73. package/packages/schemas/src/components.ts +429 -6
  74. package/packages/schemas/src/index.test.ts +83 -0
  75. package/packages/schemas/src/index.ts +1 -0
  76. package/packages/schemas/src/machine-id.ts +7 -0
  77. package/packages/schemas/src/prompts.ts +25 -4
  78. package/packages/schemas/src/registry.ts +28 -39
  79. package/scripts/bump-version.mjs +93 -0
  80. package/scripts/require-version-bump.mjs +70 -0
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://aeon-ui.com/schemas/combobox.json",
4
4
  "title": "Combobox",
5
- "description": "Typeahead — React useState for open/query/highlight today. Do not add a duplicate floating machine without COMPONENT_CHECKLIST.",
5
+ "description": "Open/closed via popoverMachine (same family as Select/Menu/Popover). Query, highlight, and item registry stay React-local for typeahead.",
6
6
  "type": "object",
7
7
  "additionalProperties": false,
8
8
  "required": [
@@ -80,18 +80,24 @@
80
80
  "null"
81
81
  ],
82
82
  "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
83
- "const": null
83
+ "const": "popoverMachine"
84
84
  },
85
85
  "runtime": {
86
86
  "type": "string",
87
87
  "description": "How headless state is driven at runtime",
88
- "const": "useState"
88
+ "const": "useAeonMachine"
89
89
  },
90
90
  "events": {
91
91
  "type": "array",
92
92
  "items": {
93
93
  "type": "string",
94
- "enum": []
94
+ "enum": [
95
+ "OPEN",
96
+ "CLOSE",
97
+ "TOGGLE",
98
+ "ESCAPE",
99
+ "POINTER_DOWN_OUTSIDE"
100
+ ]
95
101
  }
96
102
  },
97
103
  "examples": {
@@ -116,9 +122,15 @@
116
122
  "open",
117
123
  "closed"
118
124
  ],
119
- "machine": null,
120
- "runtime": "useState",
121
- "events": [],
125
+ "machine": "popoverMachine",
126
+ "runtime": "useAeonMachine",
127
+ "events": [
128
+ "OPEN",
129
+ "CLOSE",
130
+ "TOGGLE",
131
+ "ESCAPE",
132
+ "POINTER_DOWN_OUTSIDE"
133
+ ],
122
134
  "slots": {
123
135
  "Root": "combobox.root",
124
136
  "Input": "combobox.input",
@@ -0,0 +1,125 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://aeon-ui.com/schemas/composer.json",
4
+ "title": "Composer",
5
+ "description": "Compose chrome — root state prop idle | sending | disabled | error.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "component",
10
+ "scope"
11
+ ],
12
+ "properties": {
13
+ "component": {
14
+ "const": "Composer"
15
+ },
16
+ "scope": {
17
+ "const": "composer"
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
+ "input",
27
+ "actions",
28
+ "send"
29
+ ]
30
+ },
31
+ "uniqueItems": true
32
+ },
33
+ "states": {
34
+ "type": "array",
35
+ "description": "Allowed data-aeon-state values (stable states only)",
36
+ "items": {
37
+ "type": "string",
38
+ "enum": [
39
+ "idle",
40
+ "sending",
41
+ "disabled",
42
+ "error"
43
+ ]
44
+ },
45
+ "uniqueItems": true
46
+ },
47
+ "props": {
48
+ "type": "object",
49
+ "additionalProperties": false,
50
+ "properties": {}
51
+ },
52
+ "slots": {
53
+ "type": "object",
54
+ "description": "Named composition slots / compound parts",
55
+ "additionalProperties": {
56
+ "type": "string"
57
+ },
58
+ "properties": {
59
+ "Root": {
60
+ "const": "composer.root",
61
+ "description": "composer.root"
62
+ },
63
+ "Input": {
64
+ "const": "composer.input",
65
+ "description": "composer.input"
66
+ },
67
+ "Send": {
68
+ "const": "composer.send",
69
+ "description": "composer.send"
70
+ }
71
+ }
72
+ },
73
+ "machine": {
74
+ "type": [
75
+ "string",
76
+ "null"
77
+ ],
78
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
79
+ "const": null
80
+ },
81
+ "runtime": {
82
+ "type": "string",
83
+ "description": "How headless state is driven at runtime",
84
+ "const": "props"
85
+ },
86
+ "events": {
87
+ "type": "array",
88
+ "items": {
89
+ "type": "string",
90
+ "enum": []
91
+ }
92
+ },
93
+ "examples": {
94
+ "type": "array",
95
+ "items": {
96
+ "type": "string"
97
+ },
98
+ "default": []
99
+ }
100
+ },
101
+ "x-aeon": {
102
+ "scope": "composer",
103
+ "parts": [
104
+ "root",
105
+ "input",
106
+ "actions",
107
+ "send"
108
+ ],
109
+ "states": [
110
+ "idle",
111
+ "sending",
112
+ "disabled",
113
+ "error"
114
+ ],
115
+ "machine": null,
116
+ "runtime": "props",
117
+ "events": [],
118
+ "slots": {
119
+ "Root": "composer.root",
120
+ "Input": "composer.input",
121
+ "Send": "composer.send"
122
+ },
123
+ "examples": []
124
+ }
125
+ }
@@ -0,0 +1,167 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://aeon-ui.com/schemas/content.json",
4
+ "title": "Content",
5
+ "description": "Status-slotted body via contentRegionMachine (or Root state prop projection). Pair with Async for fetch.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "component",
10
+ "scope"
11
+ ],
12
+ "properties": {
13
+ "component": {
14
+ "const": "Content"
15
+ },
16
+ "scope": {
17
+ "const": "content"
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
+ "toolbar",
27
+ "body",
28
+ "pending",
29
+ "empty",
30
+ "error",
31
+ "success",
32
+ "sentinel"
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
+ "pending",
45
+ "empty",
46
+ "error",
47
+ "ready",
48
+ "loadingMore",
49
+ "success"
50
+ ]
51
+ },
52
+ "uniqueItems": true
53
+ },
54
+ "props": {
55
+ "type": "object",
56
+ "additionalProperties": false,
57
+ "properties": {}
58
+ },
59
+ "slots": {
60
+ "type": "object",
61
+ "description": "Named composition slots / compound parts",
62
+ "additionalProperties": {
63
+ "type": "string"
64
+ },
65
+ "properties": {
66
+ "Root": {
67
+ "const": "content.root",
68
+ "description": "content.root"
69
+ },
70
+ "Pending": {
71
+ "const": "content.pending",
72
+ "description": "content.pending"
73
+ },
74
+ "Empty": {
75
+ "const": "content.empty",
76
+ "description": "content.empty"
77
+ },
78
+ "Error": {
79
+ "const": "content.error",
80
+ "description": "content.error"
81
+ },
82
+ "Success": {
83
+ "const": "content.success",
84
+ "description": "content.success"
85
+ }
86
+ }
87
+ },
88
+ "machine": {
89
+ "type": [
90
+ "string",
91
+ "null"
92
+ ],
93
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
94
+ "const": "contentRegionMachine"
95
+ },
96
+ "runtime": {
97
+ "type": "string",
98
+ "description": "How headless state is driven at runtime",
99
+ "const": "useAeonMachine"
100
+ },
101
+ "events": {
102
+ "type": "array",
103
+ "items": {
104
+ "type": "string",
105
+ "enum": [
106
+ "LOAD",
107
+ "RESOLVE",
108
+ "REJECT",
109
+ "RETRY",
110
+ "LOAD_MORE",
111
+ "MORE_DONE",
112
+ "SUCCEED",
113
+ "RESET"
114
+ ]
115
+ }
116
+ },
117
+ "examples": {
118
+ "type": "array",
119
+ "items": {
120
+ "type": "string"
121
+ },
122
+ "default": []
123
+ }
124
+ },
125
+ "x-aeon": {
126
+ "scope": "content",
127
+ "parts": [
128
+ "root",
129
+ "toolbar",
130
+ "body",
131
+ "pending",
132
+ "empty",
133
+ "error",
134
+ "success",
135
+ "sentinel"
136
+ ],
137
+ "states": [
138
+ "idle",
139
+ "pending",
140
+ "empty",
141
+ "error",
142
+ "ready",
143
+ "loadingMore",
144
+ "success"
145
+ ],
146
+ "machine": "contentRegionMachine",
147
+ "runtime": "useAeonMachine",
148
+ "events": [
149
+ "LOAD",
150
+ "RESOLVE",
151
+ "REJECT",
152
+ "RETRY",
153
+ "LOAD_MORE",
154
+ "MORE_DONE",
155
+ "SUCCEED",
156
+ "RESET"
157
+ ],
158
+ "slots": {
159
+ "Root": "content.root",
160
+ "Pending": "content.pending",
161
+ "Empty": "content.empty",
162
+ "Error": "content.error",
163
+ "Success": "content.success"
164
+ },
165
+ "examples": []
166
+ }
167
+ }
@@ -0,0 +1,166 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://aeon-ui.com/schemas/conversation.json",
4
+ "title": "Conversation",
5
+ "description": "Inbox / DM list — item state prop idle | unread | selected. Universal messaging chrome.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "component",
10
+ "scope"
11
+ ],
12
+ "properties": {
13
+ "component": {
14
+ "const": "Conversation"
15
+ },
16
+ "scope": {
17
+ "const": "conversation"
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
+ "item",
27
+ "leading",
28
+ "body",
29
+ "title",
30
+ "preview",
31
+ "meta",
32
+ "badge"
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
+ "unread",
45
+ "selected"
46
+ ]
47
+ },
48
+ "uniqueItems": true
49
+ },
50
+ "props": {
51
+ "type": "object",
52
+ "additionalProperties": false,
53
+ "properties": {
54
+ "state": {
55
+ "type": "string",
56
+ "enum": [
57
+ "idle",
58
+ "unread",
59
+ "selected"
60
+ ],
61
+ "default": "idle"
62
+ }
63
+ }
64
+ },
65
+ "slots": {
66
+ "type": "object",
67
+ "description": "Named composition slots / compound parts",
68
+ "additionalProperties": {
69
+ "type": "string"
70
+ },
71
+ "properties": {
72
+ "Root": {
73
+ "const": "conversation.root",
74
+ "description": "conversation.root"
75
+ },
76
+ "Item": {
77
+ "const": "conversation.item",
78
+ "description": "conversation.item"
79
+ },
80
+ "Leading": {
81
+ "const": "conversation.leading",
82
+ "description": "conversation.leading"
83
+ },
84
+ "Body": {
85
+ "const": "conversation.body",
86
+ "description": "conversation.body"
87
+ },
88
+ "Title": {
89
+ "const": "conversation.title",
90
+ "description": "conversation.title"
91
+ },
92
+ "Preview": {
93
+ "const": "conversation.preview",
94
+ "description": "conversation.preview"
95
+ },
96
+ "Meta": {
97
+ "const": "conversation.meta",
98
+ "description": "conversation.meta"
99
+ },
100
+ "Badge": {
101
+ "const": "conversation.badge",
102
+ "description": "conversation.badge"
103
+ }
104
+ }
105
+ },
106
+ "machine": {
107
+ "type": [
108
+ "string",
109
+ "null"
110
+ ],
111
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
112
+ "const": null
113
+ },
114
+ "runtime": {
115
+ "type": "string",
116
+ "description": "How headless state is driven at runtime",
117
+ "const": "props"
118
+ },
119
+ "events": {
120
+ "type": "array",
121
+ "items": {
122
+ "type": "string",
123
+ "enum": []
124
+ }
125
+ },
126
+ "examples": {
127
+ "type": "array",
128
+ "items": {
129
+ "type": "string"
130
+ },
131
+ "default": []
132
+ }
133
+ },
134
+ "x-aeon": {
135
+ "scope": "conversation",
136
+ "parts": [
137
+ "root",
138
+ "item",
139
+ "leading",
140
+ "body",
141
+ "title",
142
+ "preview",
143
+ "meta",
144
+ "badge"
145
+ ],
146
+ "states": [
147
+ "idle",
148
+ "unread",
149
+ "selected"
150
+ ],
151
+ "machine": null,
152
+ "runtime": "props",
153
+ "events": [],
154
+ "slots": {
155
+ "Root": "conversation.root",
156
+ "Item": "conversation.item",
157
+ "Leading": "conversation.leading",
158
+ "Body": "conversation.body",
159
+ "Title": "conversation.title",
160
+ "Preview": "conversation.preview",
161
+ "Meta": "conversation.meta",
162
+ "Badge": "conversation.badge"
163
+ },
164
+ "examples": []
165
+ }
166
+ }
@@ -0,0 +1,182 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://aeon-ui.com/schemas/entry.json",
4
+ "title": "Entry",
5
+ "description": "Universal multi-value card (feed stack or listing split). Root state idle | selected | muted — never invent niche scopes.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "component",
10
+ "scope"
11
+ ],
12
+ "properties": {
13
+ "component": {
14
+ "const": "Entry"
15
+ },
16
+ "scope": {
17
+ "const": "entry"
18
+ },
19
+ "parts": {
20
+ "type": "array",
21
+ "description": "Anatomy part keys — map to data-aeon-part",
22
+ "items": {
23
+ "type": "string",
24
+ "enum": [
25
+ "list",
26
+ "root",
27
+ "header",
28
+ "leading",
29
+ "heading",
30
+ "title",
31
+ "subtitle",
32
+ "meta",
33
+ "media",
34
+ "body",
35
+ "values",
36
+ "value",
37
+ "actions",
38
+ "footer"
39
+ ]
40
+ },
41
+ "uniqueItems": true
42
+ },
43
+ "states": {
44
+ "type": "array",
45
+ "description": "Allowed data-aeon-state values (stable states only)",
46
+ "items": {
47
+ "type": "string",
48
+ "enum": [
49
+ "idle",
50
+ "selected",
51
+ "muted"
52
+ ]
53
+ },
54
+ "uniqueItems": true
55
+ },
56
+ "props": {
57
+ "type": "object",
58
+ "additionalProperties": false,
59
+ "properties": {
60
+ "state": {
61
+ "type": "string",
62
+ "enum": [
63
+ "idle",
64
+ "selected",
65
+ "muted"
66
+ ],
67
+ "default": "idle"
68
+ },
69
+ "density": {
70
+ "type": "string",
71
+ "enum": [
72
+ "compact",
73
+ "cozy"
74
+ ]
75
+ },
76
+ "layout": {
77
+ "type": "string",
78
+ "enum": [
79
+ "stack",
80
+ "split"
81
+ ]
82
+ }
83
+ }
84
+ },
85
+ "slots": {
86
+ "type": "object",
87
+ "description": "Named composition slots / compound parts",
88
+ "additionalProperties": {
89
+ "type": "string"
90
+ },
91
+ "properties": {
92
+ "List": {
93
+ "const": "entry.list",
94
+ "description": "entry.list"
95
+ },
96
+ "Root": {
97
+ "const": "entry.root",
98
+ "description": "entry.root"
99
+ },
100
+ "Header": {
101
+ "const": "entry.header",
102
+ "description": "entry.header"
103
+ },
104
+ "Body": {
105
+ "const": "entry.body",
106
+ "description": "entry.body"
107
+ },
108
+ "Actions": {
109
+ "const": "entry.actions",
110
+ "description": "entry.actions"
111
+ },
112
+ "Footer": {
113
+ "const": "entry.footer",
114
+ "description": "entry.footer"
115
+ }
116
+ }
117
+ },
118
+ "machine": {
119
+ "type": [
120
+ "string",
121
+ "null"
122
+ ],
123
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
124
+ "const": null
125
+ },
126
+ "runtime": {
127
+ "type": "string",
128
+ "description": "How headless state is driven at runtime",
129
+ "const": "props"
130
+ },
131
+ "events": {
132
+ "type": "array",
133
+ "items": {
134
+ "type": "string",
135
+ "enum": []
136
+ }
137
+ },
138
+ "examples": {
139
+ "type": "array",
140
+ "items": {
141
+ "type": "string"
142
+ },
143
+ "default": []
144
+ }
145
+ },
146
+ "x-aeon": {
147
+ "scope": "entry",
148
+ "parts": [
149
+ "list",
150
+ "root",
151
+ "header",
152
+ "leading",
153
+ "heading",
154
+ "title",
155
+ "subtitle",
156
+ "meta",
157
+ "media",
158
+ "body",
159
+ "values",
160
+ "value",
161
+ "actions",
162
+ "footer"
163
+ ],
164
+ "states": [
165
+ "idle",
166
+ "selected",
167
+ "muted"
168
+ ],
169
+ "machine": null,
170
+ "runtime": "props",
171
+ "events": [],
172
+ "slots": {
173
+ "List": "entry.list",
174
+ "Root": "entry.root",
175
+ "Header": "entry.header",
176
+ "Body": "entry.body",
177
+ "Actions": "entry.actions",
178
+ "Footer": "entry.footer"
179
+ },
180
+ "examples": []
181
+ }
182
+ }