@flowstack-ui/agent-tools 0.1.0-bootstrap.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 (239) hide show
  1. package/.codex-plugin/plugin.json +37 -0
  2. package/CHANGELOG.md +21 -0
  3. package/LICENSE +21 -0
  4. package/README.md +125 -0
  5. package/docs/architecture.md +77 -0
  6. package/docs/releasing.md +26 -0
  7. package/docs/testing.md +32 -0
  8. package/package.json +63 -0
  9. package/public/index.json +2073 -0
  10. package/public/llms.txt +19 -0
  11. package/public/packages/atom/0.24.0/components/accordion.txt +131 -0
  12. package/public/packages/atom/0.24.0/components/alert-dialog.txt +112 -0
  13. package/public/packages/atom/0.24.0/components/app-bar.txt +96 -0
  14. package/public/packages/atom/0.24.0/components/aspect-ratio.txt +111 -0
  15. package/public/packages/atom/0.24.0/components/avatar.txt +119 -0
  16. package/public/packages/atom/0.24.0/components/badge.txt +123 -0
  17. package/public/packages/atom/0.24.0/components/bottom-navigation.txt +96 -0
  18. package/public/packages/atom/0.24.0/components/breadcrumb.txt +96 -0
  19. package/public/packages/atom/0.24.0/components/button.txt +98 -0
  20. package/public/packages/atom/0.24.0/components/carousel.txt +128 -0
  21. package/public/packages/atom/0.24.0/components/checkbox-group.txt +118 -0
  22. package/public/packages/atom/0.24.0/components/checkbox.txt +100 -0
  23. package/public/packages/atom/0.24.0/components/clipboard.txt +112 -0
  24. package/public/packages/atom/0.24.0/components/collapsible.txt +112 -0
  25. package/public/packages/atom/0.24.0/components/color-picker.txt +117 -0
  26. package/public/packages/atom/0.24.0/components/combobox.txt +126 -0
  27. package/public/packages/atom/0.24.0/components/context-menu.txt +114 -0
  28. package/public/packages/atom/0.24.0/components/data-grid.txt +136 -0
  29. package/public/packages/atom/0.24.0/components/dialog.txt +116 -0
  30. package/public/packages/atom/0.24.0/components/direction.txt +132 -0
  31. package/public/packages/atom/0.24.0/components/divider.txt +94 -0
  32. package/public/packages/atom/0.24.0/components/drag-drop.txt +141 -0
  33. package/public/packages/atom/0.24.0/components/drawer.txt +96 -0
  34. package/public/packages/atom/0.24.0/components/dropdown-menu.txt +112 -0
  35. package/public/packages/atom/0.24.0/components/feed.txt +132 -0
  36. package/public/packages/atom/0.24.0/components/field.txt +108 -0
  37. package/public/packages/atom/0.24.0/components/fieldset.txt +96 -0
  38. package/public/packages/atom/0.24.0/components/file-upload.txt +120 -0
  39. package/public/packages/atom/0.24.0/components/form.txt +98 -0
  40. package/public/packages/atom/0.24.0/components/hover-card.txt +114 -0
  41. package/public/packages/atom/0.24.0/components/image.txt +94 -0
  42. package/public/packages/atom/0.24.0/components/input.txt +96 -0
  43. package/public/packages/atom/0.24.0/components/label.txt +121 -0
  44. package/public/packages/atom/0.24.0/components/link.txt +100 -0
  45. package/public/packages/atom/0.24.0/components/list.txt +131 -0
  46. package/public/packages/atom/0.24.0/components/listbox.txt +120 -0
  47. package/public/packages/atom/0.24.0/components/menu.txt +126 -0
  48. package/public/packages/atom/0.24.0/components/menubar.txt +120 -0
  49. package/public/packages/atom/0.24.0/components/modal.txt +118 -0
  50. package/public/packages/atom/0.24.0/components/multi-select.txt +120 -0
  51. package/public/packages/atom/0.24.0/components/nav-list.txt +104 -0
  52. package/public/packages/atom/0.24.0/components/navigation-menu.txt +104 -0
  53. package/public/packages/atom/0.24.0/components/number-input.txt +124 -0
  54. package/public/packages/atom/0.24.0/components/otp-field.txt +122 -0
  55. package/public/packages/atom/0.24.0/components/pagination.txt +111 -0
  56. package/public/packages/atom/0.24.0/components/password-toggle-field.txt +116 -0
  57. package/public/packages/atom/0.24.0/components/popover.txt +122 -0
  58. package/public/packages/atom/0.24.0/components/pressable.txt +94 -0
  59. package/public/packages/atom/0.24.0/components/progress.txt +130 -0
  60. package/public/packages/atom/0.24.0/components/radio-group.txt +118 -0
  61. package/public/packages/atom/0.24.0/components/rating.txt +122 -0
  62. package/public/packages/atom/0.24.0/components/reorder.txt +141 -0
  63. package/public/packages/atom/0.24.0/components/scroll-area.txt +96 -0
  64. package/public/packages/atom/0.24.0/components/select.txt +126 -0
  65. package/public/packages/atom/0.24.0/components/sidebar.txt +96 -0
  66. package/public/packages/atom/0.24.0/components/skip-link.txt +96 -0
  67. package/public/packages/atom/0.24.0/components/slider.txt +124 -0
  68. package/public/packages/atom/0.24.0/components/swipeable-item.txt +118 -0
  69. package/public/packages/atom/0.24.0/components/switch.txt +116 -0
  70. package/public/packages/atom/0.24.0/components/table.txt +128 -0
  71. package/public/packages/atom/0.24.0/components/tabs.txt +96 -0
  72. package/public/packages/atom/0.24.0/components/textarea.txt +96 -0
  73. package/public/packages/atom/0.24.0/components/toast.txt +124 -0
  74. package/public/packages/atom/0.24.0/components/toggle-group.txt +118 -0
  75. package/public/packages/atom/0.24.0/components/toggle.txt +110 -0
  76. package/public/packages/atom/0.24.0/components/toolbar.txt +98 -0
  77. package/public/packages/atom/0.24.0/components/tooltip.txt +112 -0
  78. package/public/packages/atom/0.24.0/components/tree-grid.txt +138 -0
  79. package/public/packages/atom/0.24.0/components/tree.txt +138 -0
  80. package/public/packages/atom/0.24.0/components/visually-hidden.txt +119 -0
  81. package/public/packages/atom/0.24.0/docs/guides/agent-knowledge.txt +55 -0
  82. package/public/packages/atom/0.24.0/docs/guides/getting-started.txt +65 -0
  83. package/public/packages/atom/0.24.0/docs/guides/imports.txt +26 -0
  84. package/public/packages/atom/0.24.0/docs/guides/public-api.txt +100 -0
  85. package/public/packages/atom/0.24.0/guides/behavior-composition.txt +277 -0
  86. package/public/packages/atom/0.24.0/guides/layer-selection.txt +807 -0
  87. package/public/packages/atom/0.24.0/index.txt +89 -0
  88. package/public/packages/brick/0.1.11/components/accordion.txt +158 -0
  89. package/public/packages/brick/0.1.11/components/alert-dialog.txt +175 -0
  90. package/public/packages/brick/0.1.11/components/app-bar.txt +134 -0
  91. package/public/packages/brick/0.1.11/components/appearance.txt +143 -0
  92. package/public/packages/brick/0.1.11/components/aspect-ratio.txt +136 -0
  93. package/public/packages/brick/0.1.11/components/avatar.txt +152 -0
  94. package/public/packages/brick/0.1.11/components/badge.txt +139 -0
  95. package/public/packages/brick/0.1.11/components/bleed.txt +104 -0
  96. package/public/packages/brick/0.1.11/components/bottom-navigation.txt +106 -0
  97. package/public/packages/brick/0.1.11/components/breadcrumb.txt +96 -0
  98. package/public/packages/brick/0.1.11/components/button.txt +103 -0
  99. package/public/packages/brick/0.1.11/components/card.txt +132 -0
  100. package/public/packages/brick/0.1.11/components/carousel.txt +206 -0
  101. package/public/packages/brick/0.1.11/components/checkbox-group.txt +175 -0
  102. package/public/packages/brick/0.1.11/components/checkbox.txt +103 -0
  103. package/public/packages/brick/0.1.11/components/chip.txt +128 -0
  104. package/public/packages/brick/0.1.11/components/code-block.txt +134 -0
  105. package/public/packages/brick/0.1.11/components/code.txt +120 -0
  106. package/public/packages/brick/0.1.11/components/collapsible.txt +179 -0
  107. package/public/packages/brick/0.1.11/components/color-picker.txt +135 -0
  108. package/public/packages/brick/0.1.11/components/color-swatch.txt +98 -0
  109. package/public/packages/brick/0.1.11/components/combobox.txt +157 -0
  110. package/public/packages/brick/0.1.11/components/container.txt +112 -0
  111. package/public/packages/brick/0.1.11/components/context-menu.txt +174 -0
  112. package/public/packages/brick/0.1.11/components/data-grid.txt +199 -0
  113. package/public/packages/brick/0.1.11/components/data-list.txt +115 -0
  114. package/public/packages/brick/0.1.11/components/dialog.txt +176 -0
  115. package/public/packages/brick/0.1.11/components/divider.txt +104 -0
  116. package/public/packages/brick/0.1.11/components/drawer.txt +146 -0
  117. package/public/packages/brick/0.1.11/components/dropdown-menu.txt +179 -0
  118. package/public/packages/brick/0.1.11/components/feed.txt +143 -0
  119. package/public/packages/brick/0.1.11/components/field.txt +115 -0
  120. package/public/packages/brick/0.1.11/components/fieldset.txt +103 -0
  121. package/public/packages/brick/0.1.11/components/file-upload.txt +154 -0
  122. package/public/packages/brick/0.1.11/components/form.txt +108 -0
  123. package/public/packages/brick/0.1.11/components/frame.txt +132 -0
  124. package/public/packages/brick/0.1.11/components/grid.txt +141 -0
  125. package/public/packages/brick/0.1.11/components/group.txt +136 -0
  126. package/public/packages/brick/0.1.11/components/hide.txt +121 -0
  127. package/public/packages/brick/0.1.11/components/hover-card.txt +156 -0
  128. package/public/packages/brick/0.1.11/components/icon-button.txt +119 -0
  129. package/public/packages/brick/0.1.11/components/icon.txt +160 -0
  130. package/public/packages/brick/0.1.11/components/image.txt +163 -0
  131. package/public/packages/brick/0.1.11/components/input.txt +101 -0
  132. package/public/packages/brick/0.1.11/components/link-box.txt +161 -0
  133. package/public/packages/brick/0.1.11/components/link.txt +133 -0
  134. package/public/packages/brick/0.1.11/components/list.txt +139 -0
  135. package/public/packages/brick/0.1.11/components/menubar.txt +174 -0
  136. package/public/packages/brick/0.1.11/components/multi-select.txt +153 -0
  137. package/public/packages/brick/0.1.11/components/nav-list.txt +130 -0
  138. package/public/packages/brick/0.1.11/components/navigation-menu.txt +150 -0
  139. package/public/packages/brick/0.1.11/components/notification-badge.txt +148 -0
  140. package/public/packages/brick/0.1.11/components/number-input.txt +150 -0
  141. package/public/packages/brick/0.1.11/components/otp-field.txt +146 -0
  142. package/public/packages/brick/0.1.11/components/pagination.txt +124 -0
  143. package/public/packages/brick/0.1.11/components/password-toggle-field.txt +146 -0
  144. package/public/packages/brick/0.1.11/components/popover.txt +181 -0
  145. package/public/packages/brick/0.1.11/components/progress-circle.txt +142 -0
  146. package/public/packages/brick/0.1.11/components/progress.txt +150 -0
  147. package/public/packages/brick/0.1.11/components/radio-group.txt +152 -0
  148. package/public/packages/brick/0.1.11/components/rating.txt +151 -0
  149. package/public/packages/brick/0.1.11/components/reorderable-list.txt +130 -0
  150. package/public/packages/brick/0.1.11/components/scroll-area.txt +110 -0
  151. package/public/packages/brick/0.1.11/components/section.txt +118 -0
  152. package/public/packages/brick/0.1.11/components/segment-group.txt +116 -0
  153. package/public/packages/brick/0.1.11/components/select.txt +157 -0
  154. package/public/packages/brick/0.1.11/components/show.txt +121 -0
  155. package/public/packages/brick/0.1.11/components/sidebar.txt +126 -0
  156. package/public/packages/brick/0.1.11/components/skeleton.txt +127 -0
  157. package/public/packages/brick/0.1.11/components/skip-link.txt +102 -0
  158. package/public/packages/brick/0.1.11/components/slider.txt +147 -0
  159. package/public/packages/brick/0.1.11/components/stack.txt +155 -0
  160. package/public/packages/brick/0.1.11/components/status.txt +110 -0
  161. package/public/packages/brick/0.1.11/components/surface.txt +194 -0
  162. package/public/packages/brick/0.1.11/components/swipeable-item.txt +154 -0
  163. package/public/packages/brick/0.1.11/components/switch.txt +152 -0
  164. package/public/packages/brick/0.1.11/components/table.txt +183 -0
  165. package/public/packages/brick/0.1.11/components/tabs.txt +136 -0
  166. package/public/packages/brick/0.1.11/components/text.txt +148 -0
  167. package/public/packages/brick/0.1.11/components/textarea.txt +101 -0
  168. package/public/packages/brick/0.1.11/components/toast.txt +150 -0
  169. package/public/packages/brick/0.1.11/components/toggle-group.txt +149 -0
  170. package/public/packages/brick/0.1.11/components/toggle.txt +140 -0
  171. package/public/packages/brick/0.1.11/components/toolbar.txt +118 -0
  172. package/public/packages/brick/0.1.11/components/tooltip.txt +156 -0
  173. package/public/packages/brick/0.1.11/components/tree-grid.txt +160 -0
  174. package/public/packages/brick/0.1.11/components/tree.txt +156 -0
  175. package/public/packages/brick/0.1.11/components/visually-hidden.txt +123 -0
  176. package/public/packages/brick/0.1.11/components/z-stack.txt +143 -0
  177. package/public/packages/brick/0.1.11/docs/guides/agent-knowledge.txt +67 -0
  178. package/public/packages/brick/0.1.11/docs/guides/appearance-and-tokens.txt +179 -0
  179. package/public/packages/brick/0.1.11/docs/guides/browser-support.txt +25 -0
  180. package/public/packages/brick/0.1.11/docs/guides/control-sizing.txt +59 -0
  181. package/public/packages/brick/0.1.11/docs/guides/installation.txt +79 -0
  182. package/public/packages/brick/0.1.11/docs/guides/theme-contract.txt +90 -0
  183. package/public/packages/brick/0.1.11/guides/interface-composition.txt +665 -0
  184. package/public/packages/brick/0.1.11/guides/layer-selection.txt +1437 -0
  185. package/public/packages/brick/0.1.11/index.txt +110 -0
  186. package/public/packages/colors/0.1.1/docs/agent-knowledge.txt +63 -0
  187. package/public/packages/colors/0.1.1/docs/architecture.txt +74 -0
  188. package/public/packages/colors/0.1.1/docs/color-foundations.txt +128 -0
  189. package/public/packages/colors/0.1.1/docs/compatibility.txt +75 -0
  190. package/public/packages/colors/0.1.1/docs/dependency-qualification.txt +117 -0
  191. package/public/packages/colors/0.1.1/docs/installation.txt +48 -0
  192. package/public/packages/colors/0.1.1/docs/palette-generation.txt +151 -0
  193. package/public/packages/colors/0.1.1/docs/releasing.txt +34 -0
  194. package/public/packages/colors/0.1.1/docs/testing.txt +51 -0
  195. package/public/packages/colors/0.1.1/guides/colors-system.txt +282 -0
  196. package/public/packages/colors/0.1.1/index.txt +29 -0
  197. package/public/packages/colors/0.1.1/operations/color-conversion.txt +14 -0
  198. package/public/packages/colors/0.1.1/operations/color-inspection.txt +23 -0
  199. package/public/packages/colors/0.1.1/operations/color-measurement.txt +18 -0
  200. package/public/packages/colors/0.1.1/operations/color-provenance.txt +14 -0
  201. package/public/packages/colors/0.1.1/operations/named-palette-reference.txt +15 -0
  202. package/public/packages/colors/0.1.1/operations/palette-candidate.txt +37 -0
  203. package/public/packages/theme/0.1.1/docs/agent-knowledge.txt +44 -0
  204. package/public/packages/theme/0.1.1/docs/appearances-and-portals.txt +41 -0
  205. package/public/packages/theme/0.1.1/docs/architecture.txt +121 -0
  206. package/public/packages/theme/0.1.1/docs/authoring.txt +141 -0
  207. package/public/packages/theme/0.1.1/docs/colors-interchange.txt +82 -0
  208. package/public/packages/theme/0.1.1/docs/fonts.txt +40 -0
  209. package/public/packages/theme/0.1.1/docs/installation.txt +45 -0
  210. package/public/packages/theme/0.1.1/docs/migration.txt +40 -0
  211. package/public/packages/theme/0.1.1/docs/testing.txt +64 -0
  212. package/public/packages/theme/0.1.1/docs/troubleshooting.txt +53 -0
  213. package/public/packages/theme/0.1.1/guides/theme-system.txt +340 -0
  214. package/public/packages/theme/0.1.1/index.txt +31 -0
  215. package/public/packages/theme/0.1.1/operations/brick-contract-compatibility.txt +35 -0
  216. package/public/packages/theme/0.1.1/operations/colors-interchange.txt +35 -0
  217. package/public/packages/theme/0.1.1/operations/theme-artifacts.txt +19 -0
  218. package/public/packages/theme/0.1.1/operations/theme-cli.txt +10 -0
  219. package/public/packages/theme/0.1.1/operations/theme-compilation.txt +23 -0
  220. package/public/packages/theme/0.1.1/operations/theme-definition.txt +36 -0
  221. package/public/packages/theme/0.1.1/operations/theme-validation.txt +19 -0
  222. package/public/tasks/data.txt +39 -0
  223. package/public/tasks/forms.txt +65 -0
  224. package/public/tasks/layout.txt +37 -0
  225. package/public/tasks/navigation.txt +51 -0
  226. package/public/tasks/overlays.txt +39 -0
  227. package/public/tasks/theming.txt +37 -0
  228. package/skills/flowstack-ui-builder/SKILL.md +35 -0
  229. package/skills/flowstack-ui-builder/agents/openai.yaml +4 -0
  230. package/skills/flowstack-ui-builder/scripts/resolve-agent-knowledge.mjs +399 -0
  231. package/skills/flowstack-ui-compose/SKILL.md +32 -0
  232. package/skills/flowstack-ui-compose/agents/openai.yaml +4 -0
  233. package/skills/flowstack-ui-compose/scripts/resolve-agent-knowledge.mjs +399 -0
  234. package/skills/flowstack-ui-maintainer/SKILL.md +40 -0
  235. package/skills/flowstack-ui-maintainer/agents/openai.yaml +4 -0
  236. package/skills/flowstack-ui-maintainer/scripts/resolve-agent-knowledge.mjs +399 -0
  237. package/skills/flowstack-ui-review/SKILL.md +29 -0
  238. package/skills/flowstack-ui-review/agents/openai.yaml +4 -0
  239. package/skills/flowstack-ui-review/scripts/resolve-agent-knowledge.mjs +399 -0
@@ -0,0 +1,94 @@
1
+ # Pressable
2
+
3
+ Source: @flowstack-ui/atom@0.24.0
4
+ Kind: component
5
+ ID: pressable
6
+
7
+ # Pressable agent guide
8
+
9
+ ## Purpose
10
+
11
+ Add normalized press interaction to a deliberately chosen semantic element without deciding that element's visual design.
12
+
13
+ ## Use when
14
+
15
+ - A semantic surface needs unified keyboard, pointer, and press handling and neither Button nor Link alone expresses the composition.
16
+
17
+ ## Choose something else when
18
+
19
+ - A normal action or destination needs no custom semantic surface. Use Button or Link.
20
+
21
+ ## Required composition
22
+
23
+ - Choose the correct rendered semantic element first, then attach Pressable behavior without nesting interactive controls.
24
+
25
+ ## Rules
26
+
27
+ - **MUST:** Pressable does not supply missing semantics; the rendered element must already express the interaction.
28
+ - **MUST:** Do not create nested interactive elements.
29
+
30
+ ## Common mistakes
31
+
32
+ - **Avoid:** Using Pressable as a generic clickable div. **Instead:** Prefer Button or Link; use Pressable only for a justified semantic composition.
33
+
34
+ ## Validation checklist
35
+
36
+ - Verify the rendered role and accessible name.
37
+ - Test keyboard, pointer, touch, focus, and disabled behavior.
38
+
39
+ ## Related guidance
40
+
41
+ - `button`
42
+ - `link`
43
+
44
+ ## Machine record
45
+
46
+ ```json
47
+ {
48
+ "schema": "flowstack.agent-component.v1",
49
+ "id": "pressable",
50
+ "name": "Pressable",
51
+ "package": "@flowstack-ui/atom",
52
+ "layer": "atom",
53
+ "kind": "component",
54
+ "purpose": "Add normalized press interaction to a deliberately chosen semantic element without deciding that element's visual design.",
55
+ "useWhen": [
56
+ "A semantic surface needs unified keyboard, pointer, and press handling and neither Button nor Link alone expresses the composition."
57
+ ],
58
+ "avoidWhen": [
59
+ {
60
+ "condition": "A normal action or destination needs no custom semantic surface.",
61
+ "useInstead": "Button or Link"
62
+ }
63
+ ],
64
+ "composition": [
65
+ "Choose the correct rendered semantic element first, then attach Pressable behavior without nesting interactive controls."
66
+ ],
67
+ "rules": [
68
+ {
69
+ "id": "pressable-semantics-first",
70
+ "level": "must",
71
+ "statement": "Pressable does not supply missing semantics; the rendered element must already express the interaction."
72
+ },
73
+ {
74
+ "id": "pressable-no-nesting",
75
+ "level": "must",
76
+ "statement": "Do not create nested interactive elements."
77
+ }
78
+ ],
79
+ "commonMistakes": [
80
+ {
81
+ "mistake": "Using Pressable as a generic clickable div.",
82
+ "correction": "Prefer Button or Link; use Pressable only for a justified semantic composition."
83
+ }
84
+ ],
85
+ "validation": [
86
+ "Verify the rendered role and accessible name.",
87
+ "Test keyboard, pointer, touch, focus, and disabled behavior."
88
+ ],
89
+ "related": [
90
+ "button",
91
+ "link"
92
+ ]
93
+ }
94
+ ```
@@ -0,0 +1,130 @@
1
+ # Progress
2
+
3
+ Source: @flowstack-ui/atom@0.24.0
4
+ Kind: component
5
+ ID: progress
6
+
7
+ # Progress agent guide
8
+
9
+ ## Purpose
10
+
11
+ Communicate determinate or indeterminate completion of ongoing work with progressbar semantics, normalized range state, and a presentation-only Indicator.
12
+
13
+ ## Use when
14
+
15
+ - Work is ongoing and users should know either how much is complete or that completion is still indeterminate.
16
+
17
+ ## Choose something else when
18
+
19
+ - The value is a stable measurement rather than ongoing work, users manipulate the value, or only a short transient completion message is needed. Use the native meter element, Slider, or Toast.
20
+
21
+ ## Required composition
22
+
23
+ - Give Root a concise accessible name, pass a measurable value for determinate work or null/omit value for indeterminate work, set a truthful range, and add Indicator only as the visual fill. Provide aria-valuetext or getValueLabel when the numeric value needs domain-specific wording.
24
+
25
+ ## Rules
26
+
27
+ - **MUST:** Give Root an accessible name that identifies the ongoing task, through visible labeling or native ARIA.
28
+ - **MUST:** Use a current numeric value only when progress is measurable; omit it or pass null when indeterminate so aria-valuenow is absent.
29
+ - **MUST:** Supply truthful min and max values and understand that Atom clamps the value and normalizes an invalid max to min plus 100 before exposing ARIA and percent state.
30
+ - **SHOULD:** Provide concise human-readable value text when the numeric range alone does not communicate meaningful completion.
31
+ - **MUST:** Keep Indicator presentation-only and aria-hidden because Root is the sole semantic value owner; do not create a duplicate progressbar or live announcement path.
32
+ - **MUST:** Do not make Progress interactive or keyboard adjustable; use Slider or another input when users control the value.
33
+
34
+ ## Common mistakes
35
+
36
+ - **Avoid:** Passing zero as a stand-in for unknown progress or using Progress for storage capacity or another static quantity. **Instead:** Use null or omit value for indeterminate work and use the native meter element for a stable measurement.
37
+ - **Avoid:** Putting progressbar semantics on Indicator or announcing every value update through another live region. **Instead:** Keep Root as the single semantic owner and add announcements only when independently justified.
38
+
39
+ ## Validation checklist
40
+
41
+ - Verify accessible naming, determinate loading and complete states, indeterminate state without aria-valuenow, clamping, invalid-range normalization, data attributes, and percent calculations.
42
+ - Verify explicit aria-valuetext precedence and getValueLabel argument order and output for domain-specific ranges.
43
+ - Confirm Indicator remains aria-hidden, Root owns the only progressbar role, no keyboard interaction is introduced, and asChild or render composition preserves semantics and refs.
44
+
45
+ ## Related guidance
46
+
47
+ - `native-element (native-application)`
48
+ - `slider`
49
+ - `toast`
50
+
51
+ ## Machine record
52
+
53
+ ```json
54
+ {
55
+ "schema": "flowstack.agent-component.v1",
56
+ "id": "progress",
57
+ "name": "Progress",
58
+ "package": "@flowstack-ui/atom",
59
+ "layer": "atom",
60
+ "kind": "component",
61
+ "purpose": "Communicate determinate or indeterminate completion of ongoing work with progressbar semantics, normalized range state, and a presentation-only Indicator.",
62
+ "useWhen": [
63
+ "Work is ongoing and users should know either how much is complete or that completion is still indeterminate."
64
+ ],
65
+ "avoidWhen": [
66
+ {
67
+ "condition": "The value is a stable measurement rather than ongoing work, users manipulate the value, or only a short transient completion message is needed.",
68
+ "useInstead": "the native meter element, Slider, or Toast"
69
+ }
70
+ ],
71
+ "composition": [
72
+ "Give Root a concise accessible name, pass a measurable value for determinate work or null/omit value for indeterminate work, set a truthful range, and add Indicator only as the visual fill. Provide aria-valuetext or getValueLabel when the numeric value needs domain-specific wording."
73
+ ],
74
+ "rules": [
75
+ {
76
+ "id": "progress-name",
77
+ "level": "must",
78
+ "statement": "Give Root an accessible name that identifies the ongoing task, through visible labeling or native ARIA."
79
+ },
80
+ {
81
+ "id": "progress-determinate",
82
+ "level": "must",
83
+ "statement": "Use a current numeric value only when progress is measurable; omit it or pass null when indeterminate so aria-valuenow is absent."
84
+ },
85
+ {
86
+ "id": "progress-range",
87
+ "level": "must",
88
+ "statement": "Supply truthful min and max values and understand that Atom clamps the value and normalizes an invalid max to min plus 100 before exposing ARIA and percent state."
89
+ },
90
+ {
91
+ "id": "progress-value-text",
92
+ "level": "should",
93
+ "statement": "Provide concise human-readable value text when the numeric range alone does not communicate meaningful completion."
94
+ },
95
+ {
96
+ "id": "progress-indicator",
97
+ "level": "must",
98
+ "statement": "Keep Indicator presentation-only and aria-hidden because Root is the sole semantic value owner; do not create a duplicate progressbar or live announcement path."
99
+ },
100
+ {
101
+ "id": "progress-readonly",
102
+ "level": "must",
103
+ "statement": "Do not make Progress interactive or keyboard adjustable; use Slider or another input when users control the value."
104
+ }
105
+ ],
106
+ "commonMistakes": [
107
+ {
108
+ "mistake": "Passing zero as a stand-in for unknown progress or using Progress for storage capacity or another static quantity.",
109
+ "correction": "Use null or omit value for indeterminate work and use the native meter element for a stable measurement."
110
+ },
111
+ {
112
+ "mistake": "Putting progressbar semantics on Indicator or announcing every value update through another live region.",
113
+ "correction": "Keep Root as the single semantic owner and add announcements only when independently justified."
114
+ }
115
+ ],
116
+ "validation": [
117
+ "Verify accessible naming, determinate loading and complete states, indeterminate state without aria-valuenow, clamping, invalid-range normalization, data attributes, and percent calculations.",
118
+ "Verify explicit aria-valuetext precedence and getValueLabel argument order and output for domain-specific ranges.",
119
+ "Confirm Indicator remains aria-hidden, Root owns the only progressbar role, no keyboard interaction is introduced, and asChild or render composition preserves semantics and refs."
120
+ ],
121
+ "related": [
122
+ {
123
+ "kind": "native-application",
124
+ "id": "native-element"
125
+ },
126
+ "slider",
127
+ "toast"
128
+ ]
129
+ }
130
+ ```
@@ -0,0 +1,118 @@
1
+ # RadioGroup
2
+
3
+ Source: @flowstack-ui/atom@0.24.0
4
+ Kind: component
5
+ ID: radio-group
6
+
7
+ # RadioGroup agent guide
8
+
9
+ ## Purpose
10
+
11
+ Manage one selected form option with radiogroup semantics, roving focus, orientation-aware keyboard navigation, validation, and optional native submission.
12
+
13
+ ## Use when
14
+
15
+ - A user must choose exactly one option from a short visible list whose choices are best compared together.
16
+
17
+ ## Choose something else when
18
+
19
+ - Several choices may be selected, the list is long and should stay compact, or the controls are pressed commands rather than form answers. Use CheckboxGroup, Select, or ToggleGroup.
20
+
21
+ ## Required composition
22
+
23
+ - Give Root an accessible group name and compose uniquely valued Radio parts with visible or native accessible names. Use name and form for native submission and a Fieldset Legend when the option set needs a visible legend.
24
+
25
+ ## Rules
26
+
27
+ - **MUST:** Give Root an accessible name with native ARIA or an inherited Fieldset Legend and give every Radio an accessible option name.
28
+ - **MUST:** Use value with onValueChange for controlled state or defaultValue for uncontrolled state, and provide stable unique Radio values.
29
+ - **MUST:** Preserve the selected or first enabled Radio as the single Tab stop, skip disabled Radios, and use Root orientation and direction for Arrow, Home, and End focus and selection behavior.
30
+ - **MUST:** Keep read-only groups focusable and submitted while preventing pointer, Space, and navigation-driven value changes; Arrow navigation may still expose every option by focus.
31
+ - **MUST:** Preserve group-level required validity, first-enabled validation focus, named hidden radio submission, Fieldset integration, and uncontrolled form reset.
32
+
33
+ ## Common mistakes
34
+
35
+ - **Avoid:** Giving every Radio a Tab stop, omitting the group name, using RadioGroup for independent choices, or disabling a read-only group and losing focus and submission. **Instead:** Use the owned roving radiogroup model, choose CheckboxGroup for independent choices, and use readOnly when the selected value must remain discoverable and submitted.
36
+
37
+ ## Validation checklist
38
+
39
+ - Verify controlled and uncontrolled selection, Root and Radio naming, one roving Tab stop, disabled skipping, orientation-specific Arrow keys, Home/End, Space, looping, explicit and inherited LTR/RTL, pointer activation, and asChild/render semantics.
40
+ - Verify read-only focus without value changes, required validation with and without a submission name, first-enabled validation focus, inline/native behavior, Fieldset state and descriptions, hidden radio values, and form reset.
41
+
42
+ ## Related guidance
43
+
44
+ - `checkbox-group`
45
+ - `select`
46
+ - `toggle-group`
47
+ - `fieldset`
48
+ - `form`
49
+
50
+ ## Machine record
51
+
52
+ ```json
53
+ {
54
+ "schema": "flowstack.agent-component.v1",
55
+ "id": "radio-group",
56
+ "name": "RadioGroup",
57
+ "package": "@flowstack-ui/atom",
58
+ "layer": "atom",
59
+ "kind": "component",
60
+ "purpose": "Manage one selected form option with radiogroup semantics, roving focus, orientation-aware keyboard navigation, validation, and optional native submission.",
61
+ "useWhen": [
62
+ "A user must choose exactly one option from a short visible list whose choices are best compared together."
63
+ ],
64
+ "avoidWhen": [
65
+ {
66
+ "condition": "Several choices may be selected, the list is long and should stay compact, or the controls are pressed commands rather than form answers.",
67
+ "useInstead": "CheckboxGroup, Select, or ToggleGroup"
68
+ }
69
+ ],
70
+ "composition": [
71
+ "Give Root an accessible group name and compose uniquely valued Radio parts with visible or native accessible names. Use name and form for native submission and a Fieldset Legend when the option set needs a visible legend."
72
+ ],
73
+ "rules": [
74
+ {
75
+ "id": "radio-group-name",
76
+ "level": "must",
77
+ "statement": "Give Root an accessible name with native ARIA or an inherited Fieldset Legend and give every Radio an accessible option name."
78
+ },
79
+ {
80
+ "id": "radio-group-state",
81
+ "level": "must",
82
+ "statement": "Use value with onValueChange for controlled state or defaultValue for uncontrolled state, and provide stable unique Radio values."
83
+ },
84
+ {
85
+ "id": "radio-group-roving",
86
+ "level": "must",
87
+ "statement": "Preserve the selected or first enabled Radio as the single Tab stop, skip disabled Radios, and use Root orientation and direction for Arrow, Home, and End focus and selection behavior."
88
+ },
89
+ {
90
+ "id": "radio-group-readonly",
91
+ "level": "must",
92
+ "statement": "Keep read-only groups focusable and submitted while preventing pointer, Space, and navigation-driven value changes; Arrow navigation may still expose every option by focus."
93
+ },
94
+ {
95
+ "id": "radio-group-form",
96
+ "level": "must",
97
+ "statement": "Preserve group-level required validity, first-enabled validation focus, named hidden radio submission, Fieldset integration, and uncontrolled form reset."
98
+ }
99
+ ],
100
+ "commonMistakes": [
101
+ {
102
+ "mistake": "Giving every Radio a Tab stop, omitting the group name, using RadioGroup for independent choices, or disabling a read-only group and losing focus and submission.",
103
+ "correction": "Use the owned roving radiogroup model, choose CheckboxGroup for independent choices, and use readOnly when the selected value must remain discoverable and submitted."
104
+ }
105
+ ],
106
+ "validation": [
107
+ "Verify controlled and uncontrolled selection, Root and Radio naming, one roving Tab stop, disabled skipping, orientation-specific Arrow keys, Home/End, Space, looping, explicit and inherited LTR/RTL, pointer activation, and asChild/render semantics.",
108
+ "Verify read-only focus without value changes, required validation with and without a submission name, first-enabled validation focus, inline/native behavior, Fieldset state and descriptions, hidden radio values, and form reset."
109
+ ],
110
+ "related": [
111
+ "checkbox-group",
112
+ "select",
113
+ "toggle-group",
114
+ "fieldset",
115
+ "form"
116
+ ]
117
+ }
118
+ ```
@@ -0,0 +1,122 @@
1
+ # Rating
2
+
3
+ Source: @flowstack-ui/atom@0.24.0
4
+ Kind: component
5
+ ID: rating
6
+
7
+ # Rating agent guide
8
+
9
+ ## Purpose
10
+
11
+ Choose a value on a small ordered rating scale through one slider-semantic control with decorative whole or fractional item targets.
12
+
13
+ ## Use when
14
+
15
+ - A user chooses a score on a short ordered scale where each successive item means more of the same quality.
16
+
17
+ ## Choose something else when
18
+
19
+ - The numeric setting is general-purpose or every choice has a distinct categorical meaning. Use Slider or RadioGroup.
20
+
21
+ ## Required composition
22
+
23
+ - Give Root an accessible name and render an ordered Item for each visual scale segment with its numeric upper value. Use step and getValueLabel or aria-valuetext for fractional or domain-specific meaning; Items remain decorative while Root is the single control.
24
+
25
+ ## Rules
26
+
27
+ - **MUST:** Keep Root as the only focusable role=slider control and every Item aria-hidden; do not turn rating symbols into separate radio or button stops.
28
+ - **MUST:** Give Root an accessible name and meaningful aria-valuetext, using getValueLabel when the default value-out-of-maximum wording is insufficient.
29
+ - **MUST:** Use a valid ordered min/max range, positive step, and Item values that represent the visual segments; preserve snapping and partial-fill state for fractional ratings.
30
+ - **MUST:** Keep repeated selection stable by default and enable allowClear only when clearing back to the minimum is an intentional product action.
31
+ - **MUST:** Preserve one-pointer capture, cross-item dragging, vertical page scrolling, cancellation rollback, lost-capture finalization, keyboard steps, and horizontal LTR and RTL behavior.
32
+ - **MUST:** Preserve disabled, read-only, invalid, required-above-minimum validity, Field relationships, named hidden submission, validation focus, and uncontrolled form reset.
33
+
34
+ ## Common mistakes
35
+
36
+ - **Avoid:** Giving each star a Tab stop, using Rating for unrelated categorical choices, clearing on repeated selection without product intent, or exposing only the numeric value without a meaningful label. **Instead:** Keep one slider control with decorative Items, use RadioGroup for categories, opt into clearing deliberately, and expose understandable value text.
37
+
38
+ ## Validation checklist
39
+
40
+ - Verify Root name and slider ARIA, whole and fractional controlled/uncontrolled values, snapping, generated and custom value text, decorative Item empty/partial/full fill, Arrow, PageUp/PageDown, Home/End, disabled/read-only state, and LTR/RTL.
41
+ - Verify pointer selection within each segment and across gaps, drag capture, one-pointer ownership, vertical scroll preservation, true cancellation rollback, lost-capture finalization, repeated selection with and without allowClear, required-above-minimum validation, Field integration, hidden form value, and reset.
42
+
43
+ ## Related guidance
44
+
45
+ - `slider`
46
+ - `radio-group`
47
+ - `field`
48
+ - `form`
49
+
50
+ ## Machine record
51
+
52
+ ```json
53
+ {
54
+ "schema": "flowstack.agent-component.v1",
55
+ "id": "rating",
56
+ "name": "Rating",
57
+ "package": "@flowstack-ui/atom",
58
+ "layer": "atom",
59
+ "kind": "component",
60
+ "purpose": "Choose a value on a small ordered rating scale through one slider-semantic control with decorative whole or fractional item targets.",
61
+ "useWhen": [
62
+ "A user chooses a score on a short ordered scale where each successive item means more of the same quality."
63
+ ],
64
+ "avoidWhen": [
65
+ {
66
+ "condition": "The numeric setting is general-purpose or every choice has a distinct categorical meaning.",
67
+ "useInstead": "Slider or RadioGroup"
68
+ }
69
+ ],
70
+ "composition": [
71
+ "Give Root an accessible name and render an ordered Item for each visual scale segment with its numeric upper value. Use step and getValueLabel or aria-valuetext for fractional or domain-specific meaning; Items remain decorative while Root is the single control."
72
+ ],
73
+ "rules": [
74
+ {
75
+ "id": "rating-single-control",
76
+ "level": "must",
77
+ "statement": "Keep Root as the only focusable role=slider control and every Item aria-hidden; do not turn rating symbols into separate radio or button stops."
78
+ },
79
+ {
80
+ "id": "rating-name-value",
81
+ "level": "must",
82
+ "statement": "Give Root an accessible name and meaningful aria-valuetext, using getValueLabel when the default value-out-of-maximum wording is insufficient."
83
+ },
84
+ {
85
+ "id": "rating-scale",
86
+ "level": "must",
87
+ "statement": "Use a valid ordered min/max range, positive step, and Item values that represent the visual segments; preserve snapping and partial-fill state for fractional ratings."
88
+ },
89
+ {
90
+ "id": "rating-clear",
91
+ "level": "must",
92
+ "statement": "Keep repeated selection stable by default and enable allowClear only when clearing back to the minimum is an intentional product action."
93
+ },
94
+ {
95
+ "id": "rating-pointer-keyboard",
96
+ "level": "must",
97
+ "statement": "Preserve one-pointer capture, cross-item dragging, vertical page scrolling, cancellation rollback, lost-capture finalization, keyboard steps, and horizontal LTR and RTL behavior."
98
+ },
99
+ {
100
+ "id": "rating-state-form",
101
+ "level": "must",
102
+ "statement": "Preserve disabled, read-only, invalid, required-above-minimum validity, Field relationships, named hidden submission, validation focus, and uncontrolled form reset."
103
+ }
104
+ ],
105
+ "commonMistakes": [
106
+ {
107
+ "mistake": "Giving each star a Tab stop, using Rating for unrelated categorical choices, clearing on repeated selection without product intent, or exposing only the numeric value without a meaningful label.",
108
+ "correction": "Keep one slider control with decorative Items, use RadioGroup for categories, opt into clearing deliberately, and expose understandable value text."
109
+ }
110
+ ],
111
+ "validation": [
112
+ "Verify Root name and slider ARIA, whole and fractional controlled/uncontrolled values, snapping, generated and custom value text, decorative Item empty/partial/full fill, Arrow, PageUp/PageDown, Home/End, disabled/read-only state, and LTR/RTL.",
113
+ "Verify pointer selection within each segment and across gaps, drag capture, one-pointer ownership, vertical scroll preservation, true cancellation rollback, lost-capture finalization, repeated selection with and without allowClear, required-above-minimum validation, Field integration, hidden form value, and reset."
114
+ ],
115
+ "related": [
116
+ "slider",
117
+ "radio-group",
118
+ "field",
119
+ "form"
120
+ ]
121
+ }
122
+ ```
@@ -0,0 +1,141 @@
1
+ # Reorder
2
+
3
+ Source: @flowstack-ui/atom@0.24.0
4
+ Kind: component
5
+ ID: reorder
6
+
7
+ # Reorder agent guide
8
+
9
+ ## Purpose
10
+
11
+ Provide accessible manual reordering for one controlled linear collection through drag, keyboard movement, and direct movement controls.
12
+
13
+ ## Use when
14
+
15
+ - A user deliberately controls the saved order of items in one vertical or horizontal list.
16
+
17
+ ## Choose something else when
18
+
19
+ - Items are ordered automatically by a data field, query, table header, or server sort rule. Use the collection's sorting API.
20
+ - Movement changes tree parents, table row semantics, Kanban containers, or freeform coordinates. Use a component-specific adapter built on DragDrop.
21
+
22
+ ## Required composition
23
+
24
+ - Provide Root with stable item identities, getItemLabel, controlled onItemsChange, and one keyed Item for each identity in the same order.
25
+ - Place a labelled Handle and visible MoveBefore/MoveAfter or equivalent movement controls inside every movable Item.
26
+ - Optionally render DropIndicator for styled insertion feedback; keep application content and controls inside each Item.
27
+
28
+ ## Rules
29
+
30
+ - **MUST:** Treat Root items as the canonical controlled identity order and render Items in that same order.
31
+ - **MUST:** Provide stable identities and human getItemLabel output for instructions and announcements.
32
+ - **MUST:** Include visible direct movement controls so the operation does not require a dragging path.
33
+ - **MUST:** Do not combine active automatic sorting with manual reordering unless the application clearly disables or reconciles one behavior.
34
+ - **SHOULD:** Keep persistence, optimistic updates, Undo, conflicts, validation, and error recovery in the application.
35
+
36
+ ## Common mistakes
37
+
38
+ - **Avoid:** Using the rendered index as Item value or rendering Items in an order different from Root items. **Instead:** Use durable record IDs and render the controlled identity order exactly.
39
+ - **Avoid:** Showing only a drag handle because keyboard users can also move it. **Instead:** Keep the handle and add visible MoveBefore/MoveAfter or an equally direct simple-pointer alternative.
40
+ - **Avoid:** Using Reorder to change a sorted result set while its sort remains active. **Instead:** Disable reordering or switch the collection to a documented manual-order mode first.
41
+
42
+ ## Validation checklist
43
+
44
+ - Verify drag, keyboard, and direct-control changes emit the same final identity order and accurate previous/next indices.
45
+ - Verify boundary controls disable correctly and disabled/read-only Items cannot move.
46
+ - Verify focus remains on the same keyed control after re-render, including first/last movement and RTL horizontal order.
47
+ - Verify application persistence failures can be recovered without Atom owning remote state.
48
+
49
+ ## Related guidance
50
+
51
+ - `drag-drop`
52
+ - `list`
53
+ - `collection`
54
+ - `data-grid`
55
+ - `tree`
56
+
57
+ ## Machine record
58
+
59
+ ```json
60
+ {
61
+ "schema": "flowstack.agent-component.v1",
62
+ "id": "reorder",
63
+ "name": "Reorder",
64
+ "package": "@flowstack-ui/atom",
65
+ "layer": "atom",
66
+ "kind": "component",
67
+ "purpose": "Provide accessible manual reordering for one controlled linear collection through drag, keyboard movement, and direct movement controls.",
68
+ "useWhen": [
69
+ "A user deliberately controls the saved order of items in one vertical or horizontal list."
70
+ ],
71
+ "avoidWhen": [
72
+ {
73
+ "condition": "Items are ordered automatically by a data field, query, table header, or server sort rule.",
74
+ "useInstead": "the collection's sorting API"
75
+ },
76
+ {
77
+ "condition": "Movement changes tree parents, table row semantics, Kanban containers, or freeform coordinates.",
78
+ "useInstead": "a component-specific adapter built on DragDrop"
79
+ }
80
+ ],
81
+ "composition": [
82
+ "Provide Root with stable item identities, getItemLabel, controlled onItemsChange, and one keyed Item for each identity in the same order.",
83
+ "Place a labelled Handle and visible MoveBefore/MoveAfter or equivalent movement controls inside every movable Item.",
84
+ "Optionally render DropIndicator for styled insertion feedback; keep application content and controls inside each Item."
85
+ ],
86
+ "rules": [
87
+ {
88
+ "id": "reorder-controlled-order",
89
+ "level": "must",
90
+ "statement": "Treat Root items as the canonical controlled identity order and render Items in that same order."
91
+ },
92
+ {
93
+ "id": "reorder-stable-labels",
94
+ "level": "must",
95
+ "statement": "Provide stable identities and human getItemLabel output for instructions and announcements."
96
+ },
97
+ {
98
+ "id": "reorder-visible-controls",
99
+ "level": "must",
100
+ "statement": "Include visible direct movement controls so the operation does not require a dragging path."
101
+ },
102
+ {
103
+ "id": "reorder-sort-boundary",
104
+ "level": "must",
105
+ "statement": "Do not combine active automatic sorting with manual reordering unless the application clearly disables or reconciles one behavior."
106
+ },
107
+ {
108
+ "id": "reorder-application-ownership",
109
+ "level": "should",
110
+ "statement": "Keep persistence, optimistic updates, Undo, conflicts, validation, and error recovery in the application."
111
+ }
112
+ ],
113
+ "commonMistakes": [
114
+ {
115
+ "mistake": "Using the rendered index as Item value or rendering Items in an order different from Root items.",
116
+ "correction": "Use durable record IDs and render the controlled identity order exactly."
117
+ },
118
+ {
119
+ "mistake": "Showing only a drag handle because keyboard users can also move it.",
120
+ "correction": "Keep the handle and add visible MoveBefore/MoveAfter or an equally direct simple-pointer alternative."
121
+ },
122
+ {
123
+ "mistake": "Using Reorder to change a sorted result set while its sort remains active.",
124
+ "correction": "Disable reordering or switch the collection to a documented manual-order mode first."
125
+ }
126
+ ],
127
+ "validation": [
128
+ "Verify drag, keyboard, and direct-control changes emit the same final identity order and accurate previous/next indices.",
129
+ "Verify boundary controls disable correctly and disabled/read-only Items cannot move.",
130
+ "Verify focus remains on the same keyed control after re-render, including first/last movement and RTL horizontal order.",
131
+ "Verify application persistence failures can be recovered without Atom owning remote state."
132
+ ],
133
+ "related": [
134
+ "drag-drop",
135
+ "list",
136
+ "collection",
137
+ "data-grid",
138
+ "tree"
139
+ ]
140
+ }
141
+ ```