@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,120 @@
1
+ # Menubar
2
+
3
+ Source: @flowstack-ui/atom@0.24.0
4
+ Kind: component
5
+ ID: menubar
6
+
7
+ # Menubar agent guide
8
+
9
+ ## Purpose
10
+
11
+ Coordinate a persistent application-style set of top-level menus with menubar semantics, roving trigger focus, adjacent-menu handoff, and shared Menu content behavior.
12
+
13
+ ## Use when
14
+
15
+ - A desktop-like application has several persistent command groups such as File, Edit, and View that must behave as one keyboard menubar.
16
+
17
+ ## Choose something else when
18
+
19
+ - There is one temporary command menu, ordinary website navigation, a normal link list, or only a few independent buttons. Use DropdownMenu, NavigationMenu, NavList, Toolbar, or Button.
20
+
21
+ ## Required composition
22
+
23
+ - Give Root an accessible name and compose one or more uniquely valued Menu scopes, each with Trigger and Content. Use shared Menu items and add Portal, Arrow, grouping, selection items, separators, or paired submenus only when required.
24
+
25
+ ## Rules
26
+
27
+ - **MUST:** Give the role=menubar Root an accessible name and keep each top-level Trigger as its role=menuitem child with one roving tab stop.
28
+ - **MUST:** Provide a unique value for every top-level Menu and keep its Trigger and Content inside that Menu scope.
29
+ - **MUST:** Match orientation to the rendered arrangement and preserve direction-aware top-level Arrow movement, adjacent open-menu handoff, and nested submenu keys in LTR and RTL.
30
+ - **MUST:** Preserve Menu's real item focus, typeahead, selection roles, disabled navigation, close policies, submenus, Tab exit across the complete Root, Escape stack, portals, and parent-modal ownership.
31
+ - **MUST:** When Root, Trigger, Content, or shared retained parts use asChild or render, preserve Atom roles, refs, handlers, native props, ARIA, data state, and children.
32
+
33
+ ## Common mistakes
34
+
35
+ - **Avoid:** Using Menubar as styled website navigation, omitting its accessible name, duplicating top-level values, or implementing each heading as an independent dropdown. **Instead:** Use Menubar only for application command groups and preserve its single roving, orientation-aware top-level ownership.
36
+
37
+ ## Validation checklist
38
+
39
+ - Verify Root naming and orientation, unique menu values, one top-level tab stop, Home/End, horizontal and vertical Arrow movement, LTR and RTL, pointer and touch opening, keyboard first/last opening, hover switching, controlled active value, disabled triggers, and adjacent-menu focus ownership.
40
+ - Verify shared item roles, typeahead, checkbox and radio state, submenus, selection close policy, whole-root Tab exit, top-layer Escape, focus return, portals, parent-modal focus registration, and asChild/render composition.
41
+
42
+ ## Related guidance
43
+
44
+ - `menu`
45
+ - `dropdown-menu`
46
+ - `context-menu`
47
+ - `navigation-menu`
48
+ - `nav-list`
49
+ - `toolbar`
50
+
51
+ ## Machine record
52
+
53
+ ```json
54
+ {
55
+ "schema": "flowstack.agent-component.v1",
56
+ "id": "menubar",
57
+ "name": "Menubar",
58
+ "package": "@flowstack-ui/atom",
59
+ "layer": "atom",
60
+ "kind": "component",
61
+ "purpose": "Coordinate a persistent application-style set of top-level menus with menubar semantics, roving trigger focus, adjacent-menu handoff, and shared Menu content behavior.",
62
+ "useWhen": [
63
+ "A desktop-like application has several persistent command groups such as File, Edit, and View that must behave as one keyboard menubar."
64
+ ],
65
+ "avoidWhen": [
66
+ {
67
+ "condition": "There is one temporary command menu, ordinary website navigation, a normal link list, or only a few independent buttons.",
68
+ "useInstead": "DropdownMenu, NavigationMenu, NavList, Toolbar, or Button"
69
+ }
70
+ ],
71
+ "composition": [
72
+ "Give Root an accessible name and compose one or more uniquely valued Menu scopes, each with Trigger and Content. Use shared Menu items and add Portal, Arrow, grouping, selection items, separators, or paired submenus only when required."
73
+ ],
74
+ "rules": [
75
+ {
76
+ "id": "menubar-root-semantics",
77
+ "level": "must",
78
+ "statement": "Give the role=menubar Root an accessible name and keep each top-level Trigger as its role=menuitem child with one roving tab stop."
79
+ },
80
+ {
81
+ "id": "menubar-unique-menu-values",
82
+ "level": "must",
83
+ "statement": "Provide a unique value for every top-level Menu and keep its Trigger and Content inside that Menu scope."
84
+ },
85
+ {
86
+ "id": "menubar-orientation-direction",
87
+ "level": "must",
88
+ "statement": "Match orientation to the rendered arrangement and preserve direction-aware top-level Arrow movement, adjacent open-menu handoff, and nested submenu keys in LTR and RTL."
89
+ },
90
+ {
91
+ "id": "menubar-shared-content",
92
+ "level": "must",
93
+ "statement": "Preserve Menu's real item focus, typeahead, selection roles, disabled navigation, close policies, submenus, Tab exit across the complete Root, Escape stack, portals, and parent-modal ownership."
94
+ },
95
+ {
96
+ "id": "menubar-composition-merge",
97
+ "level": "must",
98
+ "statement": "When Root, Trigger, Content, or shared retained parts use asChild or render, preserve Atom roles, refs, handlers, native props, ARIA, data state, and children."
99
+ }
100
+ ],
101
+ "commonMistakes": [
102
+ {
103
+ "mistake": "Using Menubar as styled website navigation, omitting its accessible name, duplicating top-level values, or implementing each heading as an independent dropdown.",
104
+ "correction": "Use Menubar only for application command groups and preserve its single roving, orientation-aware top-level ownership."
105
+ }
106
+ ],
107
+ "validation": [
108
+ "Verify Root naming and orientation, unique menu values, one top-level tab stop, Home/End, horizontal and vertical Arrow movement, LTR and RTL, pointer and touch opening, keyboard first/last opening, hover switching, controlled active value, disabled triggers, and adjacent-menu focus ownership.",
109
+ "Verify shared item roles, typeahead, checkbox and radio state, submenus, selection close policy, whole-root Tab exit, top-layer Escape, focus return, portals, parent-modal focus registration, and asChild/render composition."
110
+ ],
111
+ "related": [
112
+ "menu",
113
+ "dropdown-menu",
114
+ "context-menu",
115
+ "navigation-menu",
116
+ "nav-list",
117
+ "toolbar"
118
+ ]
119
+ }
120
+ ```
@@ -0,0 +1,118 @@
1
+ # Modal
2
+
3
+ Source: @flowstack-ui/atom@0.24.0
4
+ Kind: component
5
+ ID: modal
6
+
7
+ # Modal agent guide
8
+
9
+ ## Purpose
10
+
11
+ Provide the shared headless foundation for custom modal-family primitives, including state, layer ownership, focus containment and restoration, background isolation, scroll locking, dismissal, and portal branches.
12
+
13
+ ## Use when
14
+
15
+ - A primitive author must build a custom blocking layer whose behavior cannot be expressed by Dialog, AlertDialog, or Drawer and must reuse Atom's modal ownership contract.
16
+
17
+ ## Choose something else when
18
+
19
+ - An application needs an ordinary modal task, an urgent consequential decision, a modal side sheet, or a small attached interactive panel. Use Dialog, AlertDialog, Drawer, or Popover.
20
+
21
+ ## Required composition
22
+
23
+ - Compose Root around the custom content owner; add Trigger for local activation or omit it for controlled and triggerless workflows, and use Portal only when the content must leave its DOM location. Build the content owner with useModalContent, spread its contentProps onto the focusable content element, and compose the returned presenceRef with the content ref.
24
+ - Place Title when it supplies the accessible name, Description when descriptive context is needed, and Close when the surface needs an owned close control. Native labeling can replace Title, and controlled workflows can close without Close. Register consumer-owned third-party portals with Branch only when they cannot be mounted inside the content element.
25
+
26
+ ## Rules
27
+
28
+ - **MUST:** Use Modal as a primitive-authoring foundation, not as a shortcut around the purpose-built Dialog, AlertDialog, Drawer, or Popover contracts.
29
+ - **MUST:** Apply every useModalContent contentProp and the composed presenceRef to the real content element so role, ARIA, focus, presence, isolation, and layer ownership remain intact.
30
+ - **MUST:** Give the owned content an accessible name with one Title or native aria-label or aria-labelledby; add Description or a native description relationship when the contract requires one.
31
+ - **MUST:** Prefer mounting descendant portals inside the content; otherwise wrap only the same-document third-party portal owner with Branch so focus, isolation, and scrolling recognize it.
32
+ - **SHOULD:** Use initialFocus and finalFocus only for explicit workflow targets; preserve the built-in touch-safe initial focus, top-layer containment, and restoration fallbacks unless the workflow intentionally disables them.
33
+
34
+ ## Common mistakes
35
+
36
+ - **Avoid:** Rendering a custom role=dialog node while using only Root state, or treating an arbitrary portalled descendant as automatically inside the modal. **Instead:** Build the content through useModalContent and either mount descendant layers inside it or register an unavoidable third-party portal with Branch.
37
+
38
+ ## Validation checklist
39
+
40
+ - Verify controlled and uncontrolled state, accessible naming, initial focus for keyboard, pointer, touch, and programmatic opening, Tab containment, top-layer Escape and backdrop behavior, exit presence, scroll lock, and final-focus restoration.
41
+ - Verify nested modal ownership and every registered Branch with keyboard focus, wheel and touch scrolling, background isolation, unmount cleanup, and same-document portal containers.
42
+
43
+ ## Related guidance
44
+
45
+ - `dialog`
46
+ - `alert-dialog`
47
+ - `drawer`
48
+ - `popover`
49
+
50
+ ## Machine record
51
+
52
+ ```json
53
+ {
54
+ "schema": "flowstack.agent-component.v1",
55
+ "id": "modal",
56
+ "name": "Modal",
57
+ "package": "@flowstack-ui/atom",
58
+ "layer": "atom",
59
+ "kind": "component",
60
+ "purpose": "Provide the shared headless foundation for custom modal-family primitives, including state, layer ownership, focus containment and restoration, background isolation, scroll locking, dismissal, and portal branches.",
61
+ "useWhen": [
62
+ "A primitive author must build a custom blocking layer whose behavior cannot be expressed by Dialog, AlertDialog, or Drawer and must reuse Atom's modal ownership contract."
63
+ ],
64
+ "avoidWhen": [
65
+ {
66
+ "condition": "An application needs an ordinary modal task, an urgent consequential decision, a modal side sheet, or a small attached interactive panel.",
67
+ "useInstead": "Dialog, AlertDialog, Drawer, or Popover"
68
+ }
69
+ ],
70
+ "composition": [
71
+ "Compose Root around the custom content owner; add Trigger for local activation or omit it for controlled and triggerless workflows, and use Portal only when the content must leave its DOM location. Build the content owner with useModalContent, spread its contentProps onto the focusable content element, and compose the returned presenceRef with the content ref.",
72
+ "Place Title when it supplies the accessible name, Description when descriptive context is needed, and Close when the surface needs an owned close control. Native labeling can replace Title, and controlled workflows can close without Close. Register consumer-owned third-party portals with Branch only when they cannot be mounted inside the content element."
73
+ ],
74
+ "rules": [
75
+ {
76
+ "id": "modal-foundation-only",
77
+ "level": "must",
78
+ "statement": "Use Modal as a primitive-authoring foundation, not as a shortcut around the purpose-built Dialog, AlertDialog, Drawer, or Popover contracts."
79
+ },
80
+ {
81
+ "id": "modal-content-contract",
82
+ "level": "must",
83
+ "statement": "Apply every useModalContent contentProp and the composed presenceRef to the real content element so role, ARIA, focus, presence, isolation, and layer ownership remain intact."
84
+ },
85
+ {
86
+ "id": "modal-accessible-name",
87
+ "level": "must",
88
+ "statement": "Give the owned content an accessible name with one Title or native aria-label or aria-labelledby; add Description or a native description relationship when the contract requires one."
89
+ },
90
+ {
91
+ "id": "modal-branch-scope",
92
+ "level": "must",
93
+ "statement": "Prefer mounting descendant portals inside the content; otherwise wrap only the same-document third-party portal owner with Branch so focus, isolation, and scrolling recognize it."
94
+ },
95
+ {
96
+ "id": "modal-focus-policy",
97
+ "level": "should",
98
+ "statement": "Use initialFocus and finalFocus only for explicit workflow targets; preserve the built-in touch-safe initial focus, top-layer containment, and restoration fallbacks unless the workflow intentionally disables them."
99
+ }
100
+ ],
101
+ "commonMistakes": [
102
+ {
103
+ "mistake": "Rendering a custom role=dialog node while using only Root state, or treating an arbitrary portalled descendant as automatically inside the modal.",
104
+ "correction": "Build the content through useModalContent and either mount descendant layers inside it or register an unavoidable third-party portal with Branch."
105
+ }
106
+ ],
107
+ "validation": [
108
+ "Verify controlled and uncontrolled state, accessible naming, initial focus for keyboard, pointer, touch, and programmatic opening, Tab containment, top-layer Escape and backdrop behavior, exit presence, scroll lock, and final-focus restoration.",
109
+ "Verify nested modal ownership and every registered Branch with keyboard focus, wheel and touch scrolling, background isolation, unmount cleanup, and same-document portal containers."
110
+ ],
111
+ "related": [
112
+ "dialog",
113
+ "alert-dialog",
114
+ "drawer",
115
+ "popover"
116
+ ]
117
+ }
118
+ ```
@@ -0,0 +1,120 @@
1
+ # MultiSelect
2
+
3
+ Source: @flowstack-ui/atom@0.24.0
4
+ Kind: component
5
+ ID: multi-select
6
+
7
+ # MultiSelect agent guide
8
+
9
+ ## Purpose
10
+
11
+ Choose several predefined values from a compact button-owned popup listbox with persistent toggling, value summary, positioning, validation, and native multiple-select form behavior.
12
+
13
+ ## Use when
14
+
15
+ - Users choose several values from a predefined moderate collection and the options should remain collapsed until requested.
16
+
17
+ ## Choose something else when
18
+
19
+ - A short choice set should stay visible, the collection should remain visible, only one value is allowed, or editable filtering, arbitrary tags, creation, range selection, or virtualization is required. Use CheckboxGroup, Listbox, Select, Combobox, or a higher-layer specialized control.
20
+
21
+ ## Required composition
22
+
23
+ - Compose Root with an accessible Trigger containing optional Value and Icon, then one Content or Listbox with uniquely valued Items and ItemText. Add Portal, Viewport, groups and labels, separators, scroll buttons, indicators, and Arrow only as required by the popup.
24
+
25
+ ## Rules
26
+
27
+ - **MUST:** Keep Trigger as a named button rather than role=combobox, and keep Content as the focusable aria-multiselectable listbox that owns required and read-only semantics.
28
+ - **MUST:** Use deduplicated array state for value and defaultValue, route controlled changes through onValueChange, and keep Content open while Items toggle.
29
+ - **MUST:** Give every Item a stable unique value and ItemText or label so summaries, option names, typeahead, and native options exist while the popup is closed.
30
+ - **MUST:** Preserve popup focus, Arrow and Home/End movement, typeahead, Space/Enter toggling without close, Escape focus restoration, Tab dismissal, disabled skipping, and completed preventable outside dismissal.
31
+ - **MUST:** Preserve the hidden native multiple select's complete option set, repeated selected values, name, form, disabled state, required validity, reset, and invalid-focus redirection to Trigger.
32
+
33
+ ## Common mistakes
34
+
35
+ - **Avoid:** Giving Trigger combobox semantics, closing after every selection, using MultiSelect for arbitrary tag creation, or deriving form options only from an open popup. **Instead:** Keep the button/listbox model, persistent toggling, predefined scope, and statically registered native option contract.
36
+
37
+ ## Validation checklist
38
+
39
+ - Verify Trigger and listbox naming, controlled/uncontrolled arrays and open state, deduplication, zero/one/many Value summaries and renderValue, popup focus, Arrow/Home/End, typeahead, Space/Enter toggling without close, disabled Items, Escape, Tab, outside activation, and focus restoration.
40
+ - Verify read-only on listbox rather than Trigger, Field relationships, hidden multiple-select options and repeated submission, required inline/native validation, external form, reset, groups, indicators, Viewport and scroll buttons, portals, direction, collision placement, and nested-modal behavior.
41
+
42
+ ## Related guidance
43
+
44
+ - `select`
45
+ - `listbox`
46
+ - `combobox`
47
+ - `checkbox-group`
48
+ - `field`
49
+ - `form`
50
+
51
+ ## Machine record
52
+
53
+ ```json
54
+ {
55
+ "schema": "flowstack.agent-component.v1",
56
+ "id": "multi-select",
57
+ "name": "MultiSelect",
58
+ "package": "@flowstack-ui/atom",
59
+ "layer": "atom",
60
+ "kind": "component",
61
+ "purpose": "Choose several predefined values from a compact button-owned popup listbox with persistent toggling, value summary, positioning, validation, and native multiple-select form behavior.",
62
+ "useWhen": [
63
+ "Users choose several values from a predefined moderate collection and the options should remain collapsed until requested."
64
+ ],
65
+ "avoidWhen": [
66
+ {
67
+ "condition": "A short choice set should stay visible, the collection should remain visible, only one value is allowed, or editable filtering, arbitrary tags, creation, range selection, or virtualization is required.",
68
+ "useInstead": "CheckboxGroup, Listbox, Select, Combobox, or a higher-layer specialized control"
69
+ }
70
+ ],
71
+ "composition": [
72
+ "Compose Root with an accessible Trigger containing optional Value and Icon, then one Content or Listbox with uniquely valued Items and ItemText. Add Portal, Viewport, groups and labels, separators, scroll buttons, indicators, and Arrow only as required by the popup."
73
+ ],
74
+ "rules": [
75
+ {
76
+ "id": "multi-select-trigger-listbox",
77
+ "level": "must",
78
+ "statement": "Keep Trigger as a named button rather than role=combobox, and keep Content as the focusable aria-multiselectable listbox that owns required and read-only semantics."
79
+ },
80
+ {
81
+ "id": "multi-select-array-state",
82
+ "level": "must",
83
+ "statement": "Use deduplicated array state for value and defaultValue, route controlled changes through onValueChange, and keep Content open while Items toggle."
84
+ },
85
+ {
86
+ "id": "multi-select-item-text",
87
+ "level": "must",
88
+ "statement": "Give every Item a stable unique value and ItemText or label so summaries, option names, typeahead, and native options exist while the popup is closed."
89
+ },
90
+ {
91
+ "id": "multi-select-keyboard",
92
+ "level": "must",
93
+ "statement": "Preserve popup focus, Arrow and Home/End movement, typeahead, Space/Enter toggling without close, Escape focus restoration, Tab dismissal, disabled skipping, and completed preventable outside dismissal."
94
+ },
95
+ {
96
+ "id": "multi-select-form",
97
+ "level": "must",
98
+ "statement": "Preserve the hidden native multiple select's complete option set, repeated selected values, name, form, disabled state, required validity, reset, and invalid-focus redirection to Trigger."
99
+ }
100
+ ],
101
+ "commonMistakes": [
102
+ {
103
+ "mistake": "Giving Trigger combobox semantics, closing after every selection, using MultiSelect for arbitrary tag creation, or deriving form options only from an open popup.",
104
+ "correction": "Keep the button/listbox model, persistent toggling, predefined scope, and statically registered native option contract."
105
+ }
106
+ ],
107
+ "validation": [
108
+ "Verify Trigger and listbox naming, controlled/uncontrolled arrays and open state, deduplication, zero/one/many Value summaries and renderValue, popup focus, Arrow/Home/End, typeahead, Space/Enter toggling without close, disabled Items, Escape, Tab, outside activation, and focus restoration.",
109
+ "Verify read-only on listbox rather than Trigger, Field relationships, hidden multiple-select options and repeated submission, required inline/native validation, external form, reset, groups, indicators, Viewport and scroll buttons, portals, direction, collision placement, and nested-modal behavior."
110
+ ],
111
+ "related": [
112
+ "select",
113
+ "listbox",
114
+ "combobox",
115
+ "checkbox-group",
116
+ "field",
117
+ "form"
118
+ ]
119
+ }
120
+ ```
@@ -0,0 +1,104 @@
1
+ # NavList
2
+
3
+ Source: @flowstack-ui/atom@0.24.0
4
+ Kind: component
5
+ ID: nav-list
6
+
7
+ # NavList agent guide
8
+
9
+ ## Purpose
10
+
11
+ Structure persistent, optionally grouped and collapsible navigation lists with current-destination state.
12
+
13
+ ## Use when
14
+
15
+ - A sidebar, rail, drawer, or page region contains a persistent list of routes, optionally grouped into sections.
16
+
17
+ ## Choose something else when
18
+
19
+ - Navigation opens disclosure panels from a top bar or switches local tab panels. Use NavigationMenu or Tabs.
20
+
21
+ ## Required composition
22
+
23
+ - Compose Root > List > Item > Link; use Section with SectionLabel and SectionContent, adding SectionTrigger only when the section is actually collapsible.
24
+
25
+ ## Rules
26
+
27
+ - **MUST:** Use Link parts for destinations and expose the current destination through the component contract.
28
+ - **MUST:** Use a SectionTrigger only when it controls the associated SectionContent.
29
+ - **MUST:** Style collapsible SectionContent from its data-state and measured content-size hooks; Atom keeps exit content mounted through the animation lifecycle.
30
+
31
+ ## Common mistakes
32
+
33
+ - **Avoid:** Using generic clickable rows for routes or adding a disclosure trigger to a static heading. **Instead:** Use NavList.Link for routes and SectionLabel alone for non-collapsible groups.
34
+
35
+ ## Validation checklist
36
+
37
+ - Confirm navigation and section labels are meaningful and current state matches the route.
38
+ - Confirm collapsed content is not keyboard reachable and trigger state is announced.
39
+
40
+ ## Related guidance
41
+
42
+ - `navigation-menu`
43
+ - `sidebar`
44
+ - `drawer`
45
+ - `link`
46
+
47
+ ## Machine record
48
+
49
+ ```json
50
+ {
51
+ "schema": "flowstack.agent-component.v1",
52
+ "id": "nav-list",
53
+ "name": "NavList",
54
+ "package": "@flowstack-ui/atom",
55
+ "layer": "atom",
56
+ "kind": "component",
57
+ "purpose": "Structure persistent, optionally grouped and collapsible navigation lists with current-destination state.",
58
+ "useWhen": [
59
+ "A sidebar, rail, drawer, or page region contains a persistent list of routes, optionally grouped into sections."
60
+ ],
61
+ "avoidWhen": [
62
+ {
63
+ "condition": "Navigation opens disclosure panels from a top bar or switches local tab panels.",
64
+ "useInstead": "NavigationMenu or Tabs"
65
+ }
66
+ ],
67
+ "composition": [
68
+ "Compose Root > List > Item > Link; use Section with SectionLabel and SectionContent, adding SectionTrigger only when the section is actually collapsible."
69
+ ],
70
+ "rules": [
71
+ {
72
+ "id": "nav-list-links",
73
+ "level": "must",
74
+ "statement": "Use Link parts for destinations and expose the current destination through the component contract."
75
+ },
76
+ {
77
+ "id": "nav-list-section-trigger",
78
+ "level": "must",
79
+ "statement": "Use a SectionTrigger only when it controls the associated SectionContent."
80
+ },
81
+ {
82
+ "id": "nav-list-section-motion",
83
+ "level": "must",
84
+ "statement": "Style collapsible SectionContent from its data-state and measured content-size hooks; Atom keeps exit content mounted through the animation lifecycle."
85
+ }
86
+ ],
87
+ "commonMistakes": [
88
+ {
89
+ "mistake": "Using generic clickable rows for routes or adding a disclosure trigger to a static heading.",
90
+ "correction": "Use NavList.Link for routes and SectionLabel alone for non-collapsible groups."
91
+ }
92
+ ],
93
+ "validation": [
94
+ "Confirm navigation and section labels are meaningful and current state matches the route.",
95
+ "Confirm collapsed content is not keyboard reachable and trigger state is announced."
96
+ ],
97
+ "related": [
98
+ "navigation-menu",
99
+ "sidebar",
100
+ "drawer",
101
+ "link"
102
+ ]
103
+ }
104
+ ```
@@ -0,0 +1,104 @@
1
+ # NavigationMenu
2
+
3
+ Source: @flowstack-ui/atom@0.24.0
4
+ Kind: component
5
+ ID: navigation-menu
6
+
7
+ # NavigationMenu agent guide
8
+
9
+ ## Purpose
10
+
11
+ Provide disclosure navigation with coordinated triggers, links, content, viewport geometry, focus, keyboard, pointer, and dismissal behavior.
12
+
13
+ ## Use when
14
+
15
+ - Site or product navigation contains top-level links and disclosure panels of related destinations.
16
+
17
+ ## Choose something else when
18
+
19
+ - The interface is an action menu, persistent route list, or tab panel switcher. Use Menu, NavList, or Tabs.
20
+
21
+ ## Required composition
22
+
23
+ - Compose Root > List > Item containing Link or Trigger plus Content; use one Viewport for shared positioned content and Indicator when the styled layer needs trigger geometry.
24
+
25
+ ## Rules
26
+
27
+ - **MUST:** Use NavigationMenu for destinations, not commands, selections, or arbitrary popover content.
28
+ - **MUST:** Use the primitive's trigger, content, viewport, arrow, offset, focus, and dismissal contracts instead of manually positioning a competing overlay.
29
+ - **MUST:** Let Viewport's active-trigger and collision geometry position a horizontal panel; customize collisionPadding only when the surrounding layout needs a different visible-edge inset.
30
+
31
+ ## Common mistakes
32
+
33
+ - **Avoid:** Positioning content against the page or logo rather than its owning trigger/viewport, or using menuitem semantics. **Instead:** Keep the documented List/Item/Trigger/Content/Viewport composition and native link semantics.
34
+
35
+ ## Validation checklist
36
+
37
+ - Test pointer hover, click, keyboard opening, arrow navigation, focus transfer, outside dismissal, Escape, RTL geometry, narrow panels, and first/last-trigger viewport collisions.
38
+ - Confirm links navigate normally and action-menu roles are absent.
39
+
40
+ ## Related guidance
41
+
42
+ - `nav-list`
43
+ - `menubar`
44
+ - `dropdown-menu`
45
+ - `app-bar`
46
+
47
+ ## Machine record
48
+
49
+ ```json
50
+ {
51
+ "schema": "flowstack.agent-component.v1",
52
+ "id": "navigation-menu",
53
+ "name": "NavigationMenu",
54
+ "package": "@flowstack-ui/atom",
55
+ "layer": "atom",
56
+ "kind": "component",
57
+ "purpose": "Provide disclosure navigation with coordinated triggers, links, content, viewport geometry, focus, keyboard, pointer, and dismissal behavior.",
58
+ "useWhen": [
59
+ "Site or product navigation contains top-level links and disclosure panels of related destinations."
60
+ ],
61
+ "avoidWhen": [
62
+ {
63
+ "condition": "The interface is an action menu, persistent route list, or tab panel switcher.",
64
+ "useInstead": "Menu, NavList, or Tabs"
65
+ }
66
+ ],
67
+ "composition": [
68
+ "Compose Root > List > Item containing Link or Trigger plus Content; use one Viewport for shared positioned content and Indicator when the styled layer needs trigger geometry."
69
+ ],
70
+ "rules": [
71
+ {
72
+ "id": "navigation-menu-destinations",
73
+ "level": "must",
74
+ "statement": "Use NavigationMenu for destinations, not commands, selections, or arbitrary popover content."
75
+ },
76
+ {
77
+ "id": "navigation-menu-geometry",
78
+ "level": "must",
79
+ "statement": "Use the primitive's trigger, content, viewport, arrow, offset, focus, and dismissal contracts instead of manually positioning a competing overlay."
80
+ },
81
+ {
82
+ "id": "navigation-menu-viewport-position",
83
+ "level": "must",
84
+ "statement": "Let Viewport's active-trigger and collision geometry position a horizontal panel; customize collisionPadding only when the surrounding layout needs a different visible-edge inset."
85
+ }
86
+ ],
87
+ "commonMistakes": [
88
+ {
89
+ "mistake": "Positioning content against the page or logo rather than its owning trigger/viewport, or using menuitem semantics.",
90
+ "correction": "Keep the documented List/Item/Trigger/Content/Viewport composition and native link semantics."
91
+ }
92
+ ],
93
+ "validation": [
94
+ "Test pointer hover, click, keyboard opening, arrow navigation, focus transfer, outside dismissal, Escape, RTL geometry, narrow panels, and first/last-trigger viewport collisions.",
95
+ "Confirm links navigate normally and action-menu roles are absent."
96
+ ],
97
+ "related": [
98
+ "nav-list",
99
+ "menubar",
100
+ "dropdown-menu",
101
+ "app-bar"
102
+ ]
103
+ }
104
+ ```