aeon-ui-engine 1.3.1 → 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 (78) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/package.json +1 -1
  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
@@ -0,0 +1,155 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://aeon-ui.com/schemas/prompt.json",
4
+ "title": "Prompt",
5
+ "description": "Confirm / permission dialog composed on Dialog. Open/closed via dialogMachine; face via status prop.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "component",
10
+ "scope"
11
+ ],
12
+ "properties": {
13
+ "component": {
14
+ "const": "Prompt"
15
+ },
16
+ "scope": {
17
+ "const": "prompt"
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
+ "eyebrow",
27
+ "meta",
28
+ "amount",
29
+ "actions",
30
+ "primary",
31
+ "secondary"
32
+ ]
33
+ },
34
+ "uniqueItems": true
35
+ },
36
+ "states": {
37
+ "type": "array",
38
+ "description": "Allowed data-aeon-state values (stable states only)",
39
+ "items": {
40
+ "type": "string",
41
+ "enum": [
42
+ "pending",
43
+ "confirming",
44
+ "dismissed",
45
+ "confirmed"
46
+ ]
47
+ },
48
+ "uniqueItems": true
49
+ },
50
+ "props": {
51
+ "type": "object",
52
+ "additionalProperties": false,
53
+ "properties": {
54
+ "status": {
55
+ "type": "string",
56
+ "enum": [
57
+ "pending",
58
+ "confirming",
59
+ "dismissed",
60
+ "confirmed"
61
+ ],
62
+ "default": "pending"
63
+ }
64
+ }
65
+ },
66
+ "slots": {
67
+ "type": "object",
68
+ "description": "Named composition slots / compound parts",
69
+ "additionalProperties": {
70
+ "type": "string"
71
+ },
72
+ "properties": {
73
+ "Root": {
74
+ "const": "prompt.root",
75
+ "description": "prompt.root"
76
+ },
77
+ "Primary": {
78
+ "const": "prompt.primary",
79
+ "description": "prompt.primary"
80
+ },
81
+ "Secondary": {
82
+ "const": "prompt.secondary",
83
+ "description": "prompt.secondary"
84
+ },
85
+ "Actions": {
86
+ "const": "prompt.actions",
87
+ "description": "prompt.actions"
88
+ }
89
+ }
90
+ },
91
+ "machine": {
92
+ "type": [
93
+ "string",
94
+ "null"
95
+ ],
96
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
97
+ "const": "dialogMachine"
98
+ },
99
+ "runtime": {
100
+ "type": "string",
101
+ "description": "How headless state is driven at runtime",
102
+ "const": "status prop"
103
+ },
104
+ "events": {
105
+ "type": "array",
106
+ "items": {
107
+ "type": "string",
108
+ "enum": [
109
+ "OPEN",
110
+ "CLOSE",
111
+ "TOGGLE"
112
+ ]
113
+ }
114
+ },
115
+ "examples": {
116
+ "type": "array",
117
+ "items": {
118
+ "type": "string"
119
+ },
120
+ "default": []
121
+ }
122
+ },
123
+ "x-aeon": {
124
+ "scope": "prompt",
125
+ "parts": [
126
+ "root",
127
+ "eyebrow",
128
+ "meta",
129
+ "amount",
130
+ "actions",
131
+ "primary",
132
+ "secondary"
133
+ ],
134
+ "states": [
135
+ "pending",
136
+ "confirming",
137
+ "dismissed",
138
+ "confirmed"
139
+ ],
140
+ "machine": "dialogMachine",
141
+ "runtime": "status prop",
142
+ "events": [
143
+ "OPEN",
144
+ "CLOSE",
145
+ "TOGGLE"
146
+ ],
147
+ "slots": {
148
+ "Root": "prompt.root",
149
+ "Primary": "prompt.primary",
150
+ "Secondary": "prompt.secondary",
151
+ "Actions": "prompt.actions"
152
+ },
153
+ "examples": []
154
+ }
155
+ }
@@ -0,0 +1,130 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://aeon-ui.com/schemas/radioGroup.json",
4
+ "title": "RadioGroup",
5
+ "description": "Single selection via tabsMachine (same chart family as Tabs/Nav).",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "component",
10
+ "scope"
11
+ ],
12
+ "properties": {
13
+ "component": {
14
+ "const": "RadioGroup"
15
+ },
16
+ "scope": {
17
+ "const": "radioGroup"
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
+ "itemControl",
28
+ "itemIndicator",
29
+ "itemLabel"
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
+ "selected"
41
+ ]
42
+ },
43
+ "uniqueItems": true
44
+ },
45
+ "props": {
46
+ "type": "object",
47
+ "additionalProperties": false,
48
+ "properties": {}
49
+ },
50
+ "slots": {
51
+ "type": "object",
52
+ "description": "Named composition slots / compound parts",
53
+ "additionalProperties": {
54
+ "type": "string"
55
+ },
56
+ "properties": {
57
+ "Root": {
58
+ "const": "radioGroup.root",
59
+ "description": "radioGroup.root"
60
+ },
61
+ "Item": {
62
+ "const": "radioGroup.item",
63
+ "description": "radioGroup.item"
64
+ },
65
+ "ItemControl": {
66
+ "const": "radioGroup.itemControl",
67
+ "description": "radioGroup.itemControl"
68
+ },
69
+ "ItemLabel": {
70
+ "const": "radioGroup.itemLabel",
71
+ "description": "radioGroup.itemLabel"
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": "tabsMachine"
82
+ },
83
+ "runtime": {
84
+ "type": "string",
85
+ "description": "How headless state is driven at runtime",
86
+ "const": "useAeonMachine"
87
+ },
88
+ "events": {
89
+ "type": "array",
90
+ "items": {
91
+ "type": "string",
92
+ "enum": [
93
+ "SELECT"
94
+ ]
95
+ }
96
+ },
97
+ "examples": {
98
+ "type": "array",
99
+ "items": {
100
+ "type": "string"
101
+ },
102
+ "default": []
103
+ }
104
+ },
105
+ "x-aeon": {
106
+ "scope": "radioGroup",
107
+ "parts": [
108
+ "root",
109
+ "item",
110
+ "itemControl",
111
+ "itemIndicator",
112
+ "itemLabel"
113
+ ],
114
+ "states": [
115
+ "selected"
116
+ ],
117
+ "machine": "tabsMachine",
118
+ "runtime": "useAeonMachine",
119
+ "events": [
120
+ "SELECT"
121
+ ],
122
+ "slots": {
123
+ "Root": "radioGroup.root",
124
+ "Item": "radioGroup.item",
125
+ "ItemControl": "radioGroup.itemControl",
126
+ "ItemLabel": "radioGroup.itemLabel"
127
+ },
128
+ "examples": []
129
+ }
130
+ }
@@ -0,0 +1,105 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://aeon-ui.com/schemas/separator.json",
4
+ "title": "Separator",
5
+ "description": "Static divider — orientation prop only.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "component",
10
+ "scope"
11
+ ],
12
+ "properties": {
13
+ "component": {
14
+ "const": "Separator"
15
+ },
16
+ "scope": {
17
+ "const": "separator"
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
+ ]
27
+ },
28
+ "uniqueItems": true
29
+ },
30
+ "states": {
31
+ "type": "array",
32
+ "description": "Allowed data-aeon-state values (stable states only)",
33
+ "items": {
34
+ "type": "string",
35
+ "enum": [
36
+ "horizontal",
37
+ "vertical"
38
+ ]
39
+ },
40
+ "uniqueItems": true
41
+ },
42
+ "props": {
43
+ "type": "object",
44
+ "additionalProperties": false,
45
+ "properties": {}
46
+ },
47
+ "slots": {
48
+ "type": "object",
49
+ "description": "Named composition slots / compound parts",
50
+ "additionalProperties": {
51
+ "type": "string"
52
+ },
53
+ "properties": {
54
+ "Root": {
55
+ "const": "separator.root",
56
+ "description": "separator.root"
57
+ }
58
+ }
59
+ },
60
+ "machine": {
61
+ "type": [
62
+ "string",
63
+ "null"
64
+ ],
65
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
66
+ "const": null
67
+ },
68
+ "runtime": {
69
+ "type": "string",
70
+ "description": "How headless state is driven at runtime",
71
+ "const": "props"
72
+ },
73
+ "events": {
74
+ "type": "array",
75
+ "items": {
76
+ "type": "string",
77
+ "enum": []
78
+ }
79
+ },
80
+ "examples": {
81
+ "type": "array",
82
+ "items": {
83
+ "type": "string"
84
+ },
85
+ "default": []
86
+ }
87
+ },
88
+ "x-aeon": {
89
+ "scope": "separator",
90
+ "parts": [
91
+ "root"
92
+ ],
93
+ "states": [
94
+ "horizontal",
95
+ "vertical"
96
+ ],
97
+ "machine": null,
98
+ "runtime": "props",
99
+ "events": [],
100
+ "slots": {
101
+ "Root": "separator.root"
102
+ },
103
+ "examples": []
104
+ }
105
+ }
@@ -0,0 +1,147 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://aeon-ui.com/schemas/slider.json",
4
+ "title": "Slider",
5
+ "description": "Range control via sliderMachine — idle | dragging plus numeric value in context.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "component",
10
+ "scope"
11
+ ],
12
+ "properties": {
13
+ "component": {
14
+ "const": "Slider"
15
+ },
16
+ "scope": {
17
+ "const": "slider"
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": "slider.root",
60
+ "description": "slider.root"
61
+ },
62
+ "Track": {
63
+ "const": "slider.track",
64
+ "description": "slider.track"
65
+ },
66
+ "Range": {
67
+ "const": "slider.range",
68
+ "description": "slider.range"
69
+ },
70
+ "Thumb": {
71
+ "const": "slider.thumb",
72
+ "description": "slider.thumb"
73
+ },
74
+ "ValueText": {
75
+ "const": "slider.valueText",
76
+ "description": "slider.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": "sliderMachine"
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_VALUE",
99
+ "STEP",
100
+ "POINTER_DOWN",
101
+ "POINTER_UP",
102
+ "HOME",
103
+ "END"
104
+ ]
105
+ }
106
+ },
107
+ "examples": {
108
+ "type": "array",
109
+ "items": {
110
+ "type": "string"
111
+ },
112
+ "default": []
113
+ }
114
+ },
115
+ "x-aeon": {
116
+ "scope": "slider",
117
+ "parts": [
118
+ "root",
119
+ "track",
120
+ "range",
121
+ "thumb",
122
+ "valueText"
123
+ ],
124
+ "states": [
125
+ "idle",
126
+ "dragging"
127
+ ],
128
+ "machine": "sliderMachine",
129
+ "runtime": "useAeonMachine",
130
+ "events": [
131
+ "SET_VALUE",
132
+ "STEP",
133
+ "POINTER_DOWN",
134
+ "POINTER_UP",
135
+ "HOME",
136
+ "END"
137
+ ],
138
+ "slots": {
139
+ "Root": "slider.root",
140
+ "Track": "slider.track",
141
+ "Range": "slider.range",
142
+ "Thumb": "slider.thumb",
143
+ "ValueText": "slider.valueText"
144
+ },
145
+ "examples": []
146
+ }
147
+ }
@@ -0,0 +1,149 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://aeon-ui.com/schemas/statusBanner.json",
4
+ "title": "StatusBanner",
5
+ "description": "Non-blocking top-of-app notice — tone + optional status props project to data-aeon-state.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "component",
10
+ "scope"
11
+ ],
12
+ "properties": {
13
+ "component": {
14
+ "const": "StatusBanner"
15
+ },
16
+ "scope": {
17
+ "const": "statusBanner"
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
+ "copy",
27
+ "title",
28
+ "body",
29
+ "actions"
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
+ "info",
41
+ "success",
42
+ "warning",
43
+ "danger",
44
+ "neutral"
45
+ ]
46
+ },
47
+ "uniqueItems": true
48
+ },
49
+ "props": {
50
+ "type": "object",
51
+ "additionalProperties": false,
52
+ "properties": {
53
+ "tone": {
54
+ "type": "string",
55
+ "enum": [
56
+ "info",
57
+ "success",
58
+ "warning",
59
+ "danger",
60
+ "neutral"
61
+ ]
62
+ },
63
+ "status": {
64
+ "type": "string",
65
+ "description": "Optional secondary token appended to data-aeon-state"
66
+ }
67
+ }
68
+ },
69
+ "slots": {
70
+ "type": "object",
71
+ "description": "Named composition slots / compound parts",
72
+ "additionalProperties": {
73
+ "type": "string"
74
+ },
75
+ "properties": {
76
+ "Root": {
77
+ "const": "statusBanner.root",
78
+ "description": "statusBanner.root"
79
+ },
80
+ "Title": {
81
+ "const": "statusBanner.title",
82
+ "description": "statusBanner.title"
83
+ },
84
+ "Body": {
85
+ "const": "statusBanner.body",
86
+ "description": "statusBanner.body"
87
+ },
88
+ "Actions": {
89
+ "const": "statusBanner.actions",
90
+ "description": "statusBanner.actions"
91
+ }
92
+ }
93
+ },
94
+ "machine": {
95
+ "type": [
96
+ "string",
97
+ "null"
98
+ ],
99
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
100
+ "const": null
101
+ },
102
+ "runtime": {
103
+ "type": "string",
104
+ "description": "How headless state is driven at runtime",
105
+ "const": "props"
106
+ },
107
+ "events": {
108
+ "type": "array",
109
+ "items": {
110
+ "type": "string",
111
+ "enum": []
112
+ }
113
+ },
114
+ "examples": {
115
+ "type": "array",
116
+ "items": {
117
+ "type": "string"
118
+ },
119
+ "default": []
120
+ }
121
+ },
122
+ "x-aeon": {
123
+ "scope": "statusBanner",
124
+ "parts": [
125
+ "root",
126
+ "copy",
127
+ "title",
128
+ "body",
129
+ "actions"
130
+ ],
131
+ "states": [
132
+ "info",
133
+ "success",
134
+ "warning",
135
+ "danger",
136
+ "neutral"
137
+ ],
138
+ "machine": null,
139
+ "runtime": "props",
140
+ "events": [],
141
+ "slots": {
142
+ "Root": "statusBanner.root",
143
+ "Title": "statusBanner.title",
144
+ "Body": "statusBanner.body",
145
+ "Actions": "statusBanner.actions"
146
+ },
147
+ "examples": []
148
+ }
149
+ }