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.
Files changed (153) hide show
  1. package/CHANGELOG.md +61 -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/combobox/index.tsx +13 -8
  54. package/packages/react/src/composer/index.tsx +58 -3
  55. package/packages/react/src/file-upload/index.tsx +322 -0
  56. package/packages/react/src/index.ts +3 -0
  57. package/packages/react/src/prompt/index.tsx +45 -0
  58. package/packages/react/src/range-slider/index.tsx +322 -0
  59. package/packages/react/src/thread/index.tsx +74 -3
  60. package/packages/react/src/tooltip/index.tsx +48 -22
  61. package/packages/react/src/utils/slot.tsx +47 -0
  62. package/packages/schemas/dist/index.d.ts +73 -24
  63. package/packages/schemas/dist/index.js +514 -50
  64. package/packages/schemas/json/appNav.json +146 -0
  65. package/packages/schemas/json/appShell.json +151 -0
  66. package/packages/schemas/json/avatar.json +130 -0
  67. package/packages/schemas/json/bar.json +126 -0
  68. package/packages/schemas/json/button.json +6 -0
  69. package/packages/schemas/json/catalog.json +3496 -15
  70. package/packages/schemas/json/combobox.json +19 -7
  71. package/packages/schemas/json/composer.json +125 -0
  72. package/packages/schemas/json/content.json +167 -0
  73. package/packages/schemas/json/conversation.json +166 -0
  74. package/packages/schemas/json/entry.json +182 -0
  75. package/packages/schemas/json/fileUpload.json +168 -0
  76. package/packages/schemas/json/identity.json +147 -0
  77. package/packages/schemas/json/listRow.json +131 -0
  78. package/packages/schemas/json/metricStrip.json +132 -0
  79. package/packages/schemas/json/nav.json +136 -0
  80. package/packages/schemas/json/panel.json +143 -0
  81. package/packages/schemas/json/pinInput.json +112 -0
  82. package/packages/schemas/json/profileHeader.json +138 -0
  83. package/packages/schemas/json/prompt.json +155 -0
  84. package/packages/schemas/json/radioGroup.json +130 -0
  85. package/packages/schemas/json/rangeSlider.json +157 -0
  86. package/packages/schemas/json/separator.json +105 -0
  87. package/packages/schemas/json/slider.json +147 -0
  88. package/packages/schemas/json/statusBanner.json +149 -0
  89. package/packages/schemas/json/stickyBar.json +153 -0
  90. package/packages/schemas/json/thread.json +129 -0
  91. package/packages/schemas/json/tooltip.json +21 -7
  92. package/packages/schemas/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  93. package/packages/schemas/prompts/cursorrules.md +6 -4
  94. package/packages/schemas/prompts/statecharts.md +23 -2
  95. package/packages/schemas/prompts/system.md +2 -2
  96. package/packages/schemas/registry/catalog.json +313 -4
  97. package/packages/schemas/registry/components/appNav.json +146 -0
  98. package/packages/schemas/registry/components/appShell.json +151 -0
  99. package/packages/schemas/registry/components/avatar.json +130 -0
  100. package/packages/schemas/registry/components/bar.json +126 -0
  101. package/packages/schemas/registry/components/button.json +6 -0
  102. package/packages/schemas/registry/components/combobox.json +19 -7
  103. package/packages/schemas/registry/components/composer.json +125 -0
  104. package/packages/schemas/registry/components/content.json +167 -0
  105. package/packages/schemas/registry/components/conversation.json +166 -0
  106. package/packages/schemas/registry/components/entry.json +182 -0
  107. package/packages/schemas/registry/components/fileUpload.json +168 -0
  108. package/packages/schemas/registry/components/identity.json +147 -0
  109. package/packages/schemas/registry/components/listRow.json +131 -0
  110. package/packages/schemas/registry/components/metricStrip.json +132 -0
  111. package/packages/schemas/registry/components/nav.json +136 -0
  112. package/packages/schemas/registry/components/panel.json +143 -0
  113. package/packages/schemas/registry/components/pinInput.json +112 -0
  114. package/packages/schemas/registry/components/profileHeader.json +138 -0
  115. package/packages/schemas/registry/components/prompt.json +155 -0
  116. package/packages/schemas/registry/components/radioGroup.json +130 -0
  117. package/packages/schemas/registry/components/rangeSlider.json +157 -0
  118. package/packages/schemas/registry/components/separator.json +105 -0
  119. package/packages/schemas/registry/components/slider.json +147 -0
  120. package/packages/schemas/registry/components/statusBanner.json +149 -0
  121. package/packages/schemas/registry/components/stickyBar.json +153 -0
  122. package/packages/schemas/registry/components/thread.json +129 -0
  123. package/packages/schemas/registry/components/tooltip.json +21 -7
  124. package/packages/schemas/registry/machines/accordion.json +58 -0
  125. package/packages/schemas/registry/machines/appNav.json +108 -0
  126. package/packages/schemas/registry/machines/appShell.json +128 -0
  127. package/packages/schemas/registry/machines/contentRegion.json +314 -0
  128. package/packages/schemas/registry/machines/fileUpload.json +182 -0
  129. package/packages/schemas/registry/machines/panel.json +131 -0
  130. package/packages/schemas/registry/machines/popover.json +143 -0
  131. package/packages/schemas/registry/machines/rangeSlider.json +201 -0
  132. package/packages/schemas/registry/machines/slider.json +151 -0
  133. package/packages/schemas/registry/machines/stickyBar.json +261 -0
  134. package/packages/schemas/registry/machines/tabs.json +58 -0
  135. package/packages/schemas/registry/machines/toast.json +89 -0
  136. package/packages/schemas/registry/machines/toggle.json +134 -0
  137. package/packages/schemas/scripts/emit.ts +27 -0
  138. package/packages/schemas/src/components.ts +499 -6
  139. package/packages/schemas/src/index.test.ts +83 -0
  140. package/packages/schemas/src/index.ts +1 -0
  141. package/packages/schemas/src/machine-id.ts +7 -0
  142. package/packages/schemas/src/prompts.ts +25 -4
  143. package/packages/schemas/src/registry.ts +28 -39
  144. package/packages/schemas/tsconfig.json +1 -1
  145. package/packages/ui/dist/index.d.ts +100 -46
  146. package/packages/ui/dist/index.js +463 -341
  147. package/packages/ui/src/composer.tsx +37 -11
  148. package/packages/ui/src/file-upload.tsx +36 -0
  149. package/packages/ui/src/index.ts +2 -0
  150. package/packages/ui/src/prompt.tsx +3 -0
  151. package/packages/ui/src/range-slider.tsx +24 -0
  152. package/packages/ui/src/thread.tsx +40 -0
  153. package/packages/cli/dist/chunk-IW5NT2Z2.js +0 -103
@@ -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,147 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://aeon-ui.com/schemas/identity.json",
4
+ "title": "Identity",
5
+ "description": "Avatar + title + subtitle strip — presentational layout, not a niche product scope.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "component",
10
+ "scope"
11
+ ],
12
+ "properties": {
13
+ "component": {
14
+ "const": "Identity"
15
+ },
16
+ "scope": {
17
+ "const": "identity"
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
+ "avatar",
27
+ "title",
28
+ "subtitle",
29
+ "meta",
30
+ "trailing"
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
+ "idle"
42
+ ]
43
+ },
44
+ "uniqueItems": true
45
+ },
46
+ "props": {
47
+ "type": "object",
48
+ "additionalProperties": false,
49
+ "properties": {
50
+ "size": {
51
+ "type": "string",
52
+ "enum": [
53
+ "sm",
54
+ "md",
55
+ "lg"
56
+ ]
57
+ }
58
+ }
59
+ },
60
+ "slots": {
61
+ "type": "object",
62
+ "description": "Named composition slots / compound parts",
63
+ "additionalProperties": {
64
+ "type": "string"
65
+ },
66
+ "properties": {
67
+ "Root": {
68
+ "const": "identity.root",
69
+ "description": "identity.root"
70
+ },
71
+ "Avatar": {
72
+ "const": "identity.avatar",
73
+ "description": "identity.avatar"
74
+ },
75
+ "Title": {
76
+ "const": "identity.title",
77
+ "description": "identity.title"
78
+ },
79
+ "Subtitle": {
80
+ "const": "identity.subtitle",
81
+ "description": "identity.subtitle"
82
+ },
83
+ "Meta": {
84
+ "const": "identity.meta",
85
+ "description": "identity.meta"
86
+ },
87
+ "Trailing": {
88
+ "const": "identity.trailing",
89
+ "description": "identity.trailing"
90
+ }
91
+ }
92
+ },
93
+ "machine": {
94
+ "type": [
95
+ "string",
96
+ "null"
97
+ ],
98
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
99
+ "const": null
100
+ },
101
+ "runtime": {
102
+ "type": "string",
103
+ "description": "How headless state is driven at runtime",
104
+ "const": "layout"
105
+ },
106
+ "events": {
107
+ "type": "array",
108
+ "items": {
109
+ "type": "string",
110
+ "enum": []
111
+ }
112
+ },
113
+ "examples": {
114
+ "type": "array",
115
+ "items": {
116
+ "type": "string"
117
+ },
118
+ "default": []
119
+ }
120
+ },
121
+ "x-aeon": {
122
+ "scope": "identity",
123
+ "parts": [
124
+ "root",
125
+ "avatar",
126
+ "title",
127
+ "subtitle",
128
+ "meta",
129
+ "trailing"
130
+ ],
131
+ "states": [
132
+ "idle"
133
+ ],
134
+ "machine": null,
135
+ "runtime": "layout",
136
+ "events": [],
137
+ "slots": {
138
+ "Root": "identity.root",
139
+ "Avatar": "identity.avatar",
140
+ "Title": "identity.title",
141
+ "Subtitle": "identity.subtitle",
142
+ "Meta": "identity.meta",
143
+ "Trailing": "identity.trailing"
144
+ },
145
+ "examples": []
146
+ }
147
+ }
@@ -0,0 +1,131 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://aeon-ui.com/schemas/listRow.json",
4
+ "title": "ListRow",
5
+ "description": "Settings / menu row — leading · label · trailing. Layout only.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "component",
10
+ "scope"
11
+ ],
12
+ "properties": {
13
+ "component": {
14
+ "const": "ListRow"
15
+ },
16
+ "scope": {
17
+ "const": "listRow"
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
+ "label",
28
+ "description",
29
+ "trailing"
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
+ ]
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": "listRow.root",
59
+ "description": "listRow.root"
60
+ },
61
+ "Leading": {
62
+ "const": "listRow.leading",
63
+ "description": "listRow.leading"
64
+ },
65
+ "Label": {
66
+ "const": "listRow.label",
67
+ "description": "listRow.label"
68
+ },
69
+ "Description": {
70
+ "const": "listRow.description",
71
+ "description": "listRow.description"
72
+ },
73
+ "Trailing": {
74
+ "const": "listRow.trailing",
75
+ "description": "listRow.trailing"
76
+ }
77
+ }
78
+ },
79
+ "machine": {
80
+ "type": [
81
+ "string",
82
+ "null"
83
+ ],
84
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
85
+ "const": null
86
+ },
87
+ "runtime": {
88
+ "type": "string",
89
+ "description": "How headless state is driven at runtime",
90
+ "const": "layout"
91
+ },
92
+ "events": {
93
+ "type": "array",
94
+ "items": {
95
+ "type": "string",
96
+ "enum": []
97
+ }
98
+ },
99
+ "examples": {
100
+ "type": "array",
101
+ "items": {
102
+ "type": "string"
103
+ },
104
+ "default": []
105
+ }
106
+ },
107
+ "x-aeon": {
108
+ "scope": "listRow",
109
+ "parts": [
110
+ "root",
111
+ "leading",
112
+ "label",
113
+ "description",
114
+ "trailing"
115
+ ],
116
+ "states": [
117
+ "idle"
118
+ ],
119
+ "machine": null,
120
+ "runtime": "layout",
121
+ "events": [],
122
+ "slots": {
123
+ "Root": "listRow.root",
124
+ "Leading": "listRow.leading",
125
+ "Label": "listRow.label",
126
+ "Description": "listRow.description",
127
+ "Trailing": "listRow.trailing"
128
+ },
129
+ "examples": []
130
+ }
131
+ }
@@ -0,0 +1,132 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://aeon-ui.com/schemas/metricStrip.json",
4
+ "title": "MetricStrip",
5
+ "description": "Dense value|label chips — cluster or loose density. Generic stats only.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "component",
10
+ "scope"
11
+ ],
12
+ "properties": {
13
+ "component": {
14
+ "const": "MetricStrip"
15
+ },
16
+ "scope": {
17
+ "const": "metricStrip"
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
+ "chip",
27
+ "value",
28
+ "label"
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
+ ]
41
+ },
42
+ "uniqueItems": true
43
+ },
44
+ "props": {
45
+ "type": "object",
46
+ "additionalProperties": false,
47
+ "properties": {
48
+ "density": {
49
+ "type": "string",
50
+ "enum": [
51
+ "cluster",
52
+ "loose"
53
+ ]
54
+ }
55
+ }
56
+ },
57
+ "slots": {
58
+ "type": "object",
59
+ "description": "Named composition slots / compound parts",
60
+ "additionalProperties": {
61
+ "type": "string"
62
+ },
63
+ "properties": {
64
+ "Root": {
65
+ "const": "metricStrip.root",
66
+ "description": "metricStrip.root"
67
+ },
68
+ "Chip": {
69
+ "const": "metricStrip.chip",
70
+ "description": "metricStrip.chip"
71
+ },
72
+ "Value": {
73
+ "const": "metricStrip.value",
74
+ "description": "metricStrip.value"
75
+ },
76
+ "Label": {
77
+ "const": "metricStrip.label",
78
+ "description": "metricStrip.label"
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": null
89
+ },
90
+ "runtime": {
91
+ "type": "string",
92
+ "description": "How headless state is driven at runtime",
93
+ "const": "layout"
94
+ },
95
+ "events": {
96
+ "type": "array",
97
+ "items": {
98
+ "type": "string",
99
+ "enum": []
100
+ }
101
+ },
102
+ "examples": {
103
+ "type": "array",
104
+ "items": {
105
+ "type": "string"
106
+ },
107
+ "default": []
108
+ }
109
+ },
110
+ "x-aeon": {
111
+ "scope": "metricStrip",
112
+ "parts": [
113
+ "root",
114
+ "chip",
115
+ "value",
116
+ "label"
117
+ ],
118
+ "states": [
119
+ "idle"
120
+ ],
121
+ "machine": null,
122
+ "runtime": "layout",
123
+ "events": [],
124
+ "slots": {
125
+ "Root": "metricStrip.root",
126
+ "Chip": "metricStrip.chip",
127
+ "Value": "metricStrip.value",
128
+ "Label": "metricStrip.label"
129
+ },
130
+ "examples": []
131
+ }
132
+ }