@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,19 @@
1
+ # FLOWSTACK UI
2
+
3
+ Version-aware public Agent Knowledge. Start with a task or exact package; then load only the linked narrow owner routes.
4
+
5
+ ## Packages
6
+
7
+ - [@flowstack-ui/atom@0.24.0](/packages/atom/0.24.0/index.txt) — 70 components, 0 operations
8
+ - [@flowstack-ui/brick@0.1.11](/packages/brick/0.1.11/index.txt) — 89 components, 0 operations
9
+ - [@flowstack-ui/colors@0.1.1](/packages/colors/0.1.1/index.txt) — 0 components, 6 operations
10
+ - [@flowstack-ui/theme@0.1.1](/packages/theme/0.1.1/index.txt) — 0 components, 7 operations
11
+
12
+ ## Tasks
13
+
14
+ - [layout](/tasks/layout.txt) — Select layout, surface, spacing, responsive visibility, and structural owners.
15
+ - [forms](/tasks/forms.txt) — Select forms, fields, labels, validation, and input controls.
16
+ - [navigation](/tasks/navigation.txt) — Select navigation landmarks, menus, tabs, pagination, and route affordances.
17
+ - [overlays](/tasks/overlays.txt) — Select dialogs, popovers, transient surfaces, and feedback owners.
18
+ - [data](/tasks/data.txt) — Select tables, grids, lists, trees, feeds, status, and technical-data owners.
19
+ - [theming](/tasks/theming.txt) — Route color operations through Colors and semantic compilation through Theme.
@@ -0,0 +1,131 @@
1
+ # Accordion
2
+
3
+ Source: @flowstack-ui/atom@0.24.0
4
+ Kind: component
5
+ ID: accordion
6
+
7
+ # Accordion agent guide
8
+
9
+ ## Purpose
10
+
11
+ Coordinate a group of related disclosure sections with linked headings, triggers, panels, expanded state, and keyboard navigation.
12
+
13
+ ## Use when
14
+
15
+ - Several related sections form one scannable disclosure group and readers should reveal only the details they need.
16
+
17
+ ## Choose something else when
18
+
19
+ - Only one independent in-flow region needs disclosure. Use Collapsible.
20
+ - Peer controls switch one shared content view rather than independently revealing sections. Use Tabs.
21
+ - Content must layer, dismiss outside, contain focus, or lock document scrolling. Use Dialog, Drawer, or another matching overlay primitive.
22
+
23
+ ## Required composition
24
+
25
+ - Compose Root > Item > Header > Trigger and place the matching Content as a sibling of Header inside the same Item.
26
+ - Give every Item a stable unique value and choose the Header level from the surrounding document outline.
27
+ - Use landmark=false on Content when many simultaneous regions would make landmark navigation noisy.
28
+
29
+ ## Rules
30
+
31
+ - **MUST:** Keep each Trigger and Content inside one Item so Atom can own their IDs, expanded state, labeling, and focus navigation.
32
+ - **MUST:** Set Header to the heading level required by the host document; do not rely on the default when it would skip or duplicate the page outline.
33
+ - **MUST:** Use Root controlled or uncontrolled props for expanded state instead of adding competing click handlers or manual ARIA attributes.
34
+ - **MUST:** Treat Accordion as interactive client behavior and keep the client boundary at the smallest composition that owns its state or handlers.
35
+
36
+ ## Common mistakes
37
+
38
+ - **Avoid:** Using Accordion for one disclosure, placing Trigger outside Header, or writing aria-expanded and aria-controls manually. **Instead:** Use Collapsible for one region and preserve Accordion's complete Item, Header, Trigger, and Content anatomy.
39
+ - **Avoid:** Leaving every Content as a region in a large or multiple-open Accordion. **Instead:** Use landmark=false when the number of regions would make assistive-technology landmark navigation noisy.
40
+
41
+ ## Validation checklist
42
+
43
+ - Check unique Item values, heading order, Trigger accessible names, aria-expanded and aria-controls relationships, and Content labeling.
44
+ - Test Enter, Space, Home, End, orientation-aware arrow navigation, RTL, disabled items, single and multiple state, and controlled and uncontrolled use.
45
+ - Check mounted and unmounted closed content, focus retention, reduced motion integration, and whether region landmarks remain useful.
46
+
47
+ ## Related guidance
48
+
49
+ - `collapsible`
50
+ - `tabs`
51
+ - `drawer`
52
+ - `dialog`
53
+
54
+ ## Machine record
55
+
56
+ ```json
57
+ {
58
+ "schema": "flowstack.agent-component.v1",
59
+ "id": "accordion",
60
+ "name": "Accordion",
61
+ "package": "@flowstack-ui/atom",
62
+ "layer": "atom",
63
+ "kind": "component",
64
+ "purpose": "Coordinate a group of related disclosure sections with linked headings, triggers, panels, expanded state, and keyboard navigation.",
65
+ "useWhen": [
66
+ "Several related sections form one scannable disclosure group and readers should reveal only the details they need."
67
+ ],
68
+ "avoidWhen": [
69
+ {
70
+ "condition": "Only one independent in-flow region needs disclosure.",
71
+ "useInstead": "Collapsible"
72
+ },
73
+ {
74
+ "condition": "Peer controls switch one shared content view rather than independently revealing sections.",
75
+ "useInstead": "Tabs"
76
+ },
77
+ {
78
+ "condition": "Content must layer, dismiss outside, contain focus, or lock document scrolling.",
79
+ "useInstead": "Dialog, Drawer, or another matching overlay primitive"
80
+ }
81
+ ],
82
+ "composition": [
83
+ "Compose Root > Item > Header > Trigger and place the matching Content as a sibling of Header inside the same Item.",
84
+ "Give every Item a stable unique value and choose the Header level from the surrounding document outline.",
85
+ "Use landmark=false on Content when many simultaneous regions would make landmark navigation noisy."
86
+ ],
87
+ "rules": [
88
+ {
89
+ "id": "accordion-anatomy",
90
+ "level": "must",
91
+ "statement": "Keep each Trigger and Content inside one Item so Atom can own their IDs, expanded state, labeling, and focus navigation."
92
+ },
93
+ {
94
+ "id": "accordion-heading-level",
95
+ "level": "must",
96
+ "statement": "Set Header to the heading level required by the host document; do not rely on the default when it would skip or duplicate the page outline."
97
+ },
98
+ {
99
+ "id": "accordion-state-owner",
100
+ "level": "must",
101
+ "statement": "Use Root controlled or uncontrolled props for expanded state instead of adding competing click handlers or manual ARIA attributes."
102
+ },
103
+ {
104
+ "id": "accordion-client-boundary",
105
+ "level": "must",
106
+ "statement": "Treat Accordion as interactive client behavior and keep the client boundary at the smallest composition that owns its state or handlers."
107
+ }
108
+ ],
109
+ "commonMistakes": [
110
+ {
111
+ "mistake": "Using Accordion for one disclosure, placing Trigger outside Header, or writing aria-expanded and aria-controls manually.",
112
+ "correction": "Use Collapsible for one region and preserve Accordion's complete Item, Header, Trigger, and Content anatomy."
113
+ },
114
+ {
115
+ "mistake": "Leaving every Content as a region in a large or multiple-open Accordion.",
116
+ "correction": "Use landmark=false when the number of regions would make assistive-technology landmark navigation noisy."
117
+ }
118
+ ],
119
+ "validation": [
120
+ "Check unique Item values, heading order, Trigger accessible names, aria-expanded and aria-controls relationships, and Content labeling.",
121
+ "Test Enter, Space, Home, End, orientation-aware arrow navigation, RTL, disabled items, single and multiple state, and controlled and uncontrolled use.",
122
+ "Check mounted and unmounted closed content, focus retention, reduced motion integration, and whether region landmarks remain useful."
123
+ ],
124
+ "related": [
125
+ "collapsible",
126
+ "tabs",
127
+ "drawer",
128
+ "dialog"
129
+ ]
130
+ }
131
+ ```
@@ -0,0 +1,112 @@
1
+ # AlertDialog
2
+
3
+ Source: @flowstack-ui/atom@0.24.0
4
+ Kind: component
5
+ ID: alert-dialog
6
+
7
+ # AlertDialog agent guide
8
+
9
+ ## Purpose
10
+
11
+ Require an explicit response to an urgent or consequential decision with alertdialog semantics, safe initial focus, and non-dismissible backdrop behavior.
12
+
13
+ ## Use when
14
+
15
+ - A destructive, irreversible, security-sensitive, or otherwise consequential action requires the user to choose a safe cancellation or explicit action before continuing.
16
+
17
+ ## Choose something else when
18
+
19
+ - The surface presents ordinary information, a form, or a task that is not an urgent consequential decision. Use Dialog.
20
+
21
+ ## Required composition
22
+
23
+ - Compose Root around Content; add Trigger for local activation or omit it for controlled and triggerless workflows, and use Portal only when the layer must leave its DOM location. When Overlay is rendered, keep it as a sibling of Content. Inside Content, supply the required accessible name and description with Title and Description or native ARIA relationships, and use Cancel and Action when the decision needs those owned controls.
24
+
25
+ ## Rules
26
+
27
+ - **MUST:** Keep the fixed alertdialog role and provide both an accessible name with Title or native labeling and an accessible description with Description or native aria-describedby.
28
+ - **MUST:** Make Cancel the safe initial focus target for consequential actions unless an explicitly safer workflow target is supplied.
29
+ - **MUST:** Do not add backdrop dismissal; require Cancel, Action, or an intentional permitted Escape path to resolve the decision.
30
+ - **MUST:** Render Overlay and Content as siblings inside Portal and rely on AlertDialog's inherited modal focus, isolation, scroll, and top-layer ownership.
31
+ - **MUST:** Use Cancel and Action for the decision controls so close reasons and interaction details remain available to controlled workflows.
32
+
33
+ ## Common mistakes
34
+
35
+ - **Avoid:** Using AlertDialog for ordinary forms, focusing the destructive Action first, omitting Description, or making the backdrop dismiss the decision. **Instead:** Use Dialog for ordinary tasks; for consequential decisions provide Title, Description, safe Cancel focus, explicit Action, and no backdrop dismissal.
36
+
37
+ ## Validation checklist
38
+
39
+ - Verify alertdialog role, accessible name and description, safe Cancel initial focus for keyboard, pointer, touch, and programmatic opening, Tab containment, and that backdrop interaction cannot close the layer.
40
+ - Verify Cancel and Action close reasons, controlled state, permitted Escape behavior, nested top-layer ownership, document scroll lock, background isolation, exit presence, and focus restoration.
41
+
42
+ ## Related guidance
43
+
44
+ - `dialog`
45
+ - `modal`
46
+
47
+ ## Machine record
48
+
49
+ ```json
50
+ {
51
+ "schema": "flowstack.agent-component.v1",
52
+ "id": "alert-dialog",
53
+ "name": "AlertDialog",
54
+ "package": "@flowstack-ui/atom",
55
+ "layer": "atom",
56
+ "kind": "component",
57
+ "purpose": "Require an explicit response to an urgent or consequential decision with alertdialog semantics, safe initial focus, and non-dismissible backdrop behavior.",
58
+ "useWhen": [
59
+ "A destructive, irreversible, security-sensitive, or otherwise consequential action requires the user to choose a safe cancellation or explicit action before continuing."
60
+ ],
61
+ "avoidWhen": [
62
+ {
63
+ "condition": "The surface presents ordinary information, a form, or a task that is not an urgent consequential decision.",
64
+ "useInstead": "Dialog"
65
+ }
66
+ ],
67
+ "composition": [
68
+ "Compose Root around Content; add Trigger for local activation or omit it for controlled and triggerless workflows, and use Portal only when the layer must leave its DOM location. When Overlay is rendered, keep it as a sibling of Content. Inside Content, supply the required accessible name and description with Title and Description or native ARIA relationships, and use Cancel and Action when the decision needs those owned controls."
69
+ ],
70
+ "rules": [
71
+ {
72
+ "id": "alert-dialog-required-semantics",
73
+ "level": "must",
74
+ "statement": "Keep the fixed alertdialog role and provide both an accessible name with Title or native labeling and an accessible description with Description or native aria-describedby."
75
+ },
76
+ {
77
+ "id": "alert-dialog-safe-focus",
78
+ "level": "must",
79
+ "statement": "Make Cancel the safe initial focus target for consequential actions unless an explicitly safer workflow target is supplied."
80
+ },
81
+ {
82
+ "id": "alert-dialog-no-backdrop-dismissal",
83
+ "level": "must",
84
+ "statement": "Do not add backdrop dismissal; require Cancel, Action, or an intentional permitted Escape path to resolve the decision."
85
+ },
86
+ {
87
+ "id": "alert-dialog-sibling-overlay",
88
+ "level": "must",
89
+ "statement": "Render Overlay and Content as siblings inside Portal and rely on AlertDialog's inherited modal focus, isolation, scroll, and top-layer ownership."
90
+ },
91
+ {
92
+ "id": "alert-dialog-owned-actions",
93
+ "level": "must",
94
+ "statement": "Use Cancel and Action for the decision controls so close reasons and interaction details remain available to controlled workflows."
95
+ }
96
+ ],
97
+ "commonMistakes": [
98
+ {
99
+ "mistake": "Using AlertDialog for ordinary forms, focusing the destructive Action first, omitting Description, or making the backdrop dismiss the decision.",
100
+ "correction": "Use Dialog for ordinary tasks; for consequential decisions provide Title, Description, safe Cancel focus, explicit Action, and no backdrop dismissal."
101
+ }
102
+ ],
103
+ "validation": [
104
+ "Verify alertdialog role, accessible name and description, safe Cancel initial focus for keyboard, pointer, touch, and programmatic opening, Tab containment, and that backdrop interaction cannot close the layer.",
105
+ "Verify Cancel and Action close reasons, controlled state, permitted Escape behavior, nested top-layer ownership, document scroll lock, background isolation, exit presence, and focus restoration."
106
+ ],
107
+ "related": [
108
+ "dialog",
109
+ "modal"
110
+ ]
111
+ }
112
+ ```
@@ -0,0 +1,96 @@
1
+ # AppBar
2
+
3
+ Source: @flowstack-ui/atom@0.24.0
4
+ Kind: component
5
+ ID: app-bar
6
+
7
+ # AppBar agent guide
8
+
9
+ ## Purpose
10
+
11
+ Provide semantic header structure with start, center, and end regions without inventing navigation or toolbar behavior.
12
+
13
+ ## Use when
14
+
15
+ - A page or application header needs stable start, center, and end structural regions.
16
+
17
+ ## Choose something else when
18
+
19
+ - A group of controls needs arrow-key navigation. Use Toolbar inside AppBar.
20
+
21
+ ## Required composition
22
+
23
+ - Compose AppBar.Root > AppBar.Toolbar > AppBar.Start, AppBar.Center, and AppBar.End; place actual navigation or Toolbar primitives inside the structural sections.
24
+
25
+ ## Rules
26
+
27
+ - **MUST:** Treat AppBar.Toolbar as structural layout, not an ARIA toolbar.
28
+ - **SHOULD:** Name comparable header landmarks when more than one exists.
29
+
30
+ ## Common mistakes
31
+
32
+ - **Avoid:** Using AppBar.Toolbar to imply grouped-control keyboard behavior. **Instead:** Compose Toolbar.Root for controls or NavList and NavigationMenu for navigation.
33
+
34
+ ## Validation checklist
35
+
36
+ - Confirm the root header landmark is appropriate in its page context.
37
+ - Confirm content remains in logical start, center, and end order at zoom and in RTL.
38
+
39
+ ## Related guidance
40
+
41
+ - `toolbar`
42
+ - `nav-list`
43
+ - `navigation-menu`
44
+
45
+ ## Machine record
46
+
47
+ ```json
48
+ {
49
+ "schema": "flowstack.agent-component.v1",
50
+ "id": "app-bar",
51
+ "name": "AppBar",
52
+ "package": "@flowstack-ui/atom",
53
+ "layer": "atom",
54
+ "kind": "component",
55
+ "purpose": "Provide semantic header structure with start, center, and end regions without inventing navigation or toolbar behavior.",
56
+ "useWhen": [
57
+ "A page or application header needs stable start, center, and end structural regions."
58
+ ],
59
+ "avoidWhen": [
60
+ {
61
+ "condition": "A group of controls needs arrow-key navigation.",
62
+ "useInstead": "Toolbar inside AppBar"
63
+ }
64
+ ],
65
+ "composition": [
66
+ "Compose AppBar.Root > AppBar.Toolbar > AppBar.Start, AppBar.Center, and AppBar.End; place actual navigation or Toolbar primitives inside the structural sections."
67
+ ],
68
+ "rules": [
69
+ {
70
+ "id": "appbar-toolbar-structure",
71
+ "level": "must",
72
+ "statement": "Treat AppBar.Toolbar as structural layout, not an ARIA toolbar."
73
+ },
74
+ {
75
+ "id": "appbar-landmark-name",
76
+ "level": "should",
77
+ "statement": "Name comparable header landmarks when more than one exists."
78
+ }
79
+ ],
80
+ "commonMistakes": [
81
+ {
82
+ "mistake": "Using AppBar.Toolbar to imply grouped-control keyboard behavior.",
83
+ "correction": "Compose Toolbar.Root for controls or NavList and NavigationMenu for navigation."
84
+ }
85
+ ],
86
+ "validation": [
87
+ "Confirm the root header landmark is appropriate in its page context.",
88
+ "Confirm content remains in logical start, center, and end order at zoom and in RTL."
89
+ ],
90
+ "related": [
91
+ "toolbar",
92
+ "nav-list",
93
+ "navigation-menu"
94
+ ]
95
+ }
96
+ ```
@@ -0,0 +1,111 @@
1
+ # AspectRatio
2
+
3
+ Source: @flowstack-ui/atom@0.24.0
4
+ Kind: component
5
+ ID: aspect-ratio
6
+
7
+ # AspectRatio agent guide
8
+
9
+ ## Purpose
10
+
11
+ Reserve stable width-to-height geometry for media, embeds, and placeholders while leaving all content semantics and interaction to the child.
12
+
13
+ ## Use when
14
+
15
+ - An image, video, iframe, preview, or placeholder needs a predictable box before its content loads.
16
+
17
+ ## Choose something else when
18
+
19
+ - The content's intrinsic dimensions already provide the intended stable layout or the task needs media loading fallback behavior rather than geometry alone. Use the semantic native media element or Image.
20
+
21
+ ## Required composition
22
+
23
+ - Wrap one semantic content region in Root, provide a positive finite width-divided-by-height ratio when 16/9 is not correct, and put all image alt text, iframe titles, playback controls, and interactive semantics on the child itself.
24
+
25
+ ## Rules
26
+
27
+ - **MUST:** Treat Root as geometry only; do not assign it media roles, accessible names, loading state, or interaction that belongs to its child.
28
+ - **MUST:** Express ratio as width divided by height and provide a finite positive number; invalid values normalize to 16/9.
29
+ - **MUST:** Give contained images suitable alt text, iframes descriptive titles, and interactive media its native keyboard and focus behavior.
30
+ - **MUST:** Do not try to override the resolved aspectRatio through consumer style; Atom preserves other style properties but owns the ratio value.
31
+
32
+ ## Common mistakes
33
+
34
+ - **Avoid:** Treating AspectRatio as an image or video component or moving the child's accessible name to the wrapper. **Instead:** Keep Root structural and retain the native child element with its own semantics and accessible name.
35
+ - **Avoid:** Passing height divided by width or relying on zero, negative, or non-finite input. **Instead:** Pass the intended width divided by height as a finite positive number.
36
+
37
+ ## Validation checklist
38
+
39
+ - Verify default, square, portrait, and wide ratios; invalid-ratio normalization; reserved layout before loading; and preservation of consumer styles outside aspectRatio.
40
+ - Inspect the final DOM to confirm Root adds no role or ARIA and the child retains correct image, iframe, media, keyboard, and focus semantics.
41
+ - Verify asChild and render composition preserve the authoritative ratio, native props, content, and ref.
42
+
43
+ ## Related guidance
44
+
45
+ - `image`
46
+
47
+ ## Machine record
48
+
49
+ ```json
50
+ {
51
+ "schema": "flowstack.agent-component.v1",
52
+ "id": "aspect-ratio",
53
+ "name": "AspectRatio",
54
+ "package": "@flowstack-ui/atom",
55
+ "layer": "atom",
56
+ "kind": "component",
57
+ "purpose": "Reserve stable width-to-height geometry for media, embeds, and placeholders while leaving all content semantics and interaction to the child.",
58
+ "useWhen": [
59
+ "An image, video, iframe, preview, or placeholder needs a predictable box before its content loads."
60
+ ],
61
+ "avoidWhen": [
62
+ {
63
+ "condition": "The content's intrinsic dimensions already provide the intended stable layout or the task needs media loading fallback behavior rather than geometry alone.",
64
+ "useInstead": "the semantic native media element or Image"
65
+ }
66
+ ],
67
+ "composition": [
68
+ "Wrap one semantic content region in Root, provide a positive finite width-divided-by-height ratio when 16/9 is not correct, and put all image alt text, iframe titles, playback controls, and interactive semantics on the child itself."
69
+ ],
70
+ "rules": [
71
+ {
72
+ "id": "aspect-ratio-geometry-only",
73
+ "level": "must",
74
+ "statement": "Treat Root as geometry only; do not assign it media roles, accessible names, loading state, or interaction that belongs to its child."
75
+ },
76
+ {
77
+ "id": "aspect-ratio-value",
78
+ "level": "must",
79
+ "statement": "Express ratio as width divided by height and provide a finite positive number; invalid values normalize to 16/9."
80
+ },
81
+ {
82
+ "id": "aspect-ratio-semantics",
83
+ "level": "must",
84
+ "statement": "Give contained images suitable alt text, iframes descriptive titles, and interactive media its native keyboard and focus behavior."
85
+ },
86
+ {
87
+ "id": "aspect-ratio-authority",
88
+ "level": "must",
89
+ "statement": "Do not try to override the resolved aspectRatio through consumer style; Atom preserves other style properties but owns the ratio value."
90
+ }
91
+ ],
92
+ "commonMistakes": [
93
+ {
94
+ "mistake": "Treating AspectRatio as an image or video component or moving the child's accessible name to the wrapper.",
95
+ "correction": "Keep Root structural and retain the native child element with its own semantics and accessible name."
96
+ },
97
+ {
98
+ "mistake": "Passing height divided by width or relying on zero, negative, or non-finite input.",
99
+ "correction": "Pass the intended width divided by height as a finite positive number."
100
+ }
101
+ ],
102
+ "validation": [
103
+ "Verify default, square, portrait, and wide ratios; invalid-ratio normalization; reserved layout before loading; and preservation of consumer styles outside aspectRatio.",
104
+ "Inspect the final DOM to confirm Root adds no role or ARIA and the child retains correct image, iframe, media, keyboard, and focus semantics.",
105
+ "Verify asChild and render composition preserve the authoritative ratio, native props, content, and ref."
106
+ ],
107
+ "related": [
108
+ "image"
109
+ ]
110
+ }
111
+ ```
@@ -0,0 +1,119 @@
1
+ # Avatar
2
+
3
+ Source: @flowstack-ui/atom@0.24.0
4
+ Kind: component
5
+ ID: avatar
6
+
7
+ # Avatar agent guide
8
+
9
+ ## Purpose
10
+
11
+ Represent a person, team, organization, or other named entity with a tracked image, loading or error fallback, and optional nonsemantic grouping.
12
+
13
+ ## Use when
14
+
15
+ - A picture or short fallback helps users recognize a named entity and the interface can provide sufficient identity context.
16
+
17
+ ## Choose something else when
18
+
19
+ - The content is a status, count, arbitrary image, or the avatar would be the only source of essential identity. Use Badge, Image, or visible identity text paired with the appropriate content.
20
+
21
+ ## Required composition
22
+
23
+ - Compose Root with the tracked src, an Image using the same src, and a Fallback that is meaningful while idle, loading, or errored. Add delayMs only to avoid brief fallback flashes. Use Group only for several Avatars and add group semantics explicitly only when the collection needs an announced name.
24
+
25
+ ## Rules
26
+
27
+ - **MUST:** Pass the source to Root for preloading and use the same source on Image so rendered content matches the tracked loading status.
28
+ - **MUST:** Keep visible identifying text nearby whenever identity is important; do not make an image or initials the sole source of essential identity.
29
+ - **MUST:** Use meaningful Image alt text only when the image communicates identity not already stated nearby; otherwise use alt empty and hide redundant Fallback text from assistive technology.
30
+ - **MUST:** Provide a fallback that remains understandable for missing, loading, and failed images, and choose any loading delay without leaving essential identity temporarily unavailable.
31
+ - **SHOULD:** Keep Group structural by default; add role group and an accessible name only when users benefit from the avatars being announced as one collection.
32
+
33
+ ## Common mistakes
34
+
35
+ - **Avoid:** Using different Root and Image sources or treating onLoadingStatusChange as proof that an image remains available indefinitely. **Instead:** Keep sources aligned and treat loading status as current rendering state, with a durable fallback.
36
+ - **Avoid:** Repeating an adjacent person's name in Image alt and visible Fallback text. **Instead:** Use a decorative image and aria-hidden fallback when nearby text already supplies the identity.
37
+
38
+ ## Validation checklist
39
+
40
+ - Verify missing, idle, loading, loaded, changed-source, and error paths; callback status; delayed fallback timing and cleanup; and that Image and Fallback never render as competing identity output.
41
+ - Check meaningful and decorative variants with nearby visible identity text, appropriate alt text, fallback accessibility, and no color- or image-only essential meaning.
42
+ - Verify Group remains nonsemantic unless deliberately labelled and all parts preserve native props, asChild or render composition, and refs.
43
+
44
+ ## Related guidance
45
+
46
+ - `image`
47
+ - `badge`
48
+
49
+ ## Machine record
50
+
51
+ ```json
52
+ {
53
+ "schema": "flowstack.agent-component.v1",
54
+ "id": "avatar",
55
+ "name": "Avatar",
56
+ "package": "@flowstack-ui/atom",
57
+ "layer": "atom",
58
+ "kind": "component",
59
+ "purpose": "Represent a person, team, organization, or other named entity with a tracked image, loading or error fallback, and optional nonsemantic grouping.",
60
+ "useWhen": [
61
+ "A picture or short fallback helps users recognize a named entity and the interface can provide sufficient identity context."
62
+ ],
63
+ "avoidWhen": [
64
+ {
65
+ "condition": "The content is a status, count, arbitrary image, or the avatar would be the only source of essential identity.",
66
+ "useInstead": "Badge, Image, or visible identity text paired with the appropriate content"
67
+ }
68
+ ],
69
+ "composition": [
70
+ "Compose Root with the tracked src, an Image using the same src, and a Fallback that is meaningful while idle, loading, or errored. Add delayMs only to avoid brief fallback flashes. Use Group only for several Avatars and add group semantics explicitly only when the collection needs an announced name."
71
+ ],
72
+ "rules": [
73
+ {
74
+ "id": "avatar-source",
75
+ "level": "must",
76
+ "statement": "Pass the source to Root for preloading and use the same source on Image so rendered content matches the tracked loading status."
77
+ },
78
+ {
79
+ "id": "avatar-identity",
80
+ "level": "must",
81
+ "statement": "Keep visible identifying text nearby whenever identity is important; do not make an image or initials the sole source of essential identity."
82
+ },
83
+ {
84
+ "id": "avatar-alt",
85
+ "level": "must",
86
+ "statement": "Use meaningful Image alt text only when the image communicates identity not already stated nearby; otherwise use alt empty and hide redundant Fallback text from assistive technology."
87
+ },
88
+ {
89
+ "id": "avatar-fallback",
90
+ "level": "must",
91
+ "statement": "Provide a fallback that remains understandable for missing, loading, and failed images, and choose any loading delay without leaving essential identity temporarily unavailable."
92
+ },
93
+ {
94
+ "id": "avatar-group",
95
+ "level": "should",
96
+ "statement": "Keep Group structural by default; add role group and an accessible name only when users benefit from the avatars being announced as one collection."
97
+ }
98
+ ],
99
+ "commonMistakes": [
100
+ {
101
+ "mistake": "Using different Root and Image sources or treating onLoadingStatusChange as proof that an image remains available indefinitely.",
102
+ "correction": "Keep sources aligned and treat loading status as current rendering state, with a durable fallback."
103
+ },
104
+ {
105
+ "mistake": "Repeating an adjacent person's name in Image alt and visible Fallback text.",
106
+ "correction": "Use a decorative image and aria-hidden fallback when nearby text already supplies the identity."
107
+ }
108
+ ],
109
+ "validation": [
110
+ "Verify missing, idle, loading, loaded, changed-source, and error paths; callback status; delayed fallback timing and cleanup; and that Image and Fallback never render as competing identity output.",
111
+ "Check meaningful and decorative variants with nearby visible identity text, appropriate alt text, fallback accessibility, and no color- or image-only essential meaning.",
112
+ "Verify Group remains nonsemantic unless deliberately labelled and all parts preserve native props, asChild or render composition, and refs."
113
+ ],
114
+ "related": [
115
+ "image",
116
+ "badge"
117
+ ]
118
+ }
119
+ ```