@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,179 @@
1
+ # Collapsible
2
+
3
+ Source: @flowstack-ui/brick@0.1.11
4
+ Kind: component
5
+ ID: collapsible
6
+
7
+ # Collapsible agent guide
8
+
9
+ ## Purpose
10
+
11
+ Reveal one independent in-flow region while Atom owns disclosure state, relationships, keyboard behavior, and measured mount lifecycle.
12
+
13
+ ## Use when
14
+
15
+ - One control should progressively reveal one related region without creating an overlay or modal interaction.
16
+
17
+ ## Choose something else when
18
+
19
+ - Several named peer sections form one coordinated set. Use Accordion.
20
+ - The temporary content must layer, dismiss outside, lock scroll, or contain focus. Use Dialog, Drawer, Popover, or Menu according to the interaction.
21
+
22
+ ## Required composition
23
+
24
+ - Compose Root with one Trigger and one Content; put ContentInner inside Content so visible padding does not corrupt measured animation geometry.
25
+ - Use Indicator inside Trigger for the canonical decorative state cue; the default points down while closed and up while open, and normal Brick layout and content components belong inside ContentInner.
26
+ - Use Trigger iconOnly for a square, centered disclosure control; give it a complete accessible name and let the Root size own its target.
27
+
28
+ ## Rules
29
+
30
+ - **MUST:** Use Root, Trigger, Content, and ContentInner rather than rebuilding disclosure state, ARIA relationships, measurement, or animation lifecycle.
31
+ - **MUST:** Let Collapsible Trigger own its finished control recipe; do not compose Button or Icon Button into Trigger because competing visual recipes would own one element.
32
+ - **MUST:** Keep visible padding in ContentInner rather than Content so Atom can measure and animate the region accurately.
33
+ - **MUST:** Use Collapsible for in-flow disclosure, not as a substitute for modal Drawer behavior or responsive Show/Hide policy.
34
+ - **MUST:** Leave keepMounted false unless retained DOM or exit animation is required; when enabled, preserve Atom's closed hidden state and never expose retained descendants to interaction.
35
+ - **MUST:** Consume Atom's live content width and height variables for Brick motion across responsive reflow and intrinsic content changes; never hard-code a stale measured dimension or animate a competing wrapper.
36
+ - **MUST:** Load styles.css or core.css plus collapsible.css.
37
+ - **MUST:** Keep the default Indicator pointing down while closed and up while open in both LTR and RTL; use custom decorative artwork only for a deliberate alternate state language.
38
+ - **MUST:** Use Trigger iconOnly instead of sizing a general Trigger with layout wrappers when the disclosure control contains only artwork.
39
+
40
+ ## Common mistakes
41
+
42
+ - **Avoid:** Using Collapsible Trigger asChild around a finished Button or Icon Button. **Instead:** Use Trigger as the only visual control owner and author its label, icon, and optional Indicator directly.
43
+ - **Avoid:** Forcing a normal Trigger into a square with Frame or local alignment CSS. **Instead:** Use Trigger iconOnly so its Root size supplies square geometry and centered artwork.
44
+ - **Avoid:** Putting padding on Content or animating an application wrapper independently. **Instead:** Keep Content as the measured motion boundary and put visible spacing in ContentInner.
45
+ - **Avoid:** Choosing Collapsible when the page must be inert behind the open panel. **Instead:** Use Drawer or Dialog so Atom can own modal isolation, focus, dismissal, and scroll locking.
46
+
47
+ ## Validation checklist
48
+
49
+ - Test the accessible Trigger name, aria-expanded/aria-controls relationship, Enter and Space, controlled and uncontrolled state, disabled behavior, focus retention, the default down/up Indicator state, and icon-only centering.
50
+ - Test default unmount, keepMounted hidden descendants, initial-open state, open/close measurement, dynamic and responsive width/height changes, exit presence, reduced motion, long labels, narrow widths, RTL, and horizontal overflow without unintended page-load entrance motion.
51
+ - When adapting Collapsible inside another surface, report any Root geometry override instead of silently treating plain as a behavior-only recipe.
52
+
53
+ ## Related guidance
54
+
55
+ - `@flowstack-ui/atom/agents/collapsible`
56
+ - `accordion`
57
+ - `drawer`
58
+ - `app-bar`
59
+ - `nav-list`
60
+ - `show`
61
+ - `hide`
62
+ - `stack`
63
+
64
+ ## Machine record
65
+
66
+ ```json
67
+ {
68
+ "schema": "flowstack.agent-component.v1",
69
+ "id": "collapsible",
70
+ "name": "Collapsible",
71
+ "package": "@flowstack-ui/brick",
72
+ "layer": "brick",
73
+ "kind": "component",
74
+ "purpose": "Reveal one independent in-flow region while Atom owns disclosure state, relationships, keyboard behavior, and measured mount lifecycle.",
75
+ "useWhen": [
76
+ "One control should progressively reveal one related region without creating an overlay or modal interaction."
77
+ ],
78
+ "avoidWhen": [
79
+ {
80
+ "condition": "Several named peer sections form one coordinated set.",
81
+ "useInstead": "Accordion"
82
+ },
83
+ {
84
+ "condition": "The temporary content must layer, dismiss outside, lock scroll, or contain focus.",
85
+ "useInstead": "Dialog, Drawer, Popover, or Menu according to the interaction"
86
+ }
87
+ ],
88
+ "composition": [
89
+ "Compose Root with one Trigger and one Content; put ContentInner inside Content so visible padding does not corrupt measured animation geometry.",
90
+ "Use Indicator inside Trigger for the canonical decorative state cue; the default points down while closed and up while open, and normal Brick layout and content components belong inside ContentInner.",
91
+ "Use Trigger iconOnly for a square, centered disclosure control; give it a complete accessible name and let the Root size own its target."
92
+ ],
93
+ "rules": [
94
+ {
95
+ "id": "collapsible-anatomy",
96
+ "level": "must",
97
+ "statement": "Use Root, Trigger, Content, and ContentInner rather than rebuilding disclosure state, ARIA relationships, measurement, or animation lifecycle."
98
+ },
99
+ {
100
+ "id": "collapsible-single-owner-trigger",
101
+ "level": "must",
102
+ "statement": "Let Collapsible Trigger own its finished control recipe; do not compose Button or Icon Button into Trigger because competing visual recipes would own one element."
103
+ },
104
+ {
105
+ "id": "collapsible-content-padding",
106
+ "level": "must",
107
+ "statement": "Keep visible padding in ContentInner rather than Content so Atom can measure and animate the region accurately."
108
+ },
109
+ {
110
+ "id": "collapsible-layout-role",
111
+ "level": "must",
112
+ "statement": "Use Collapsible for in-flow disclosure, not as a substitute for modal Drawer behavior or responsive Show/Hide policy."
113
+ },
114
+ {
115
+ "id": "collapsible-presence",
116
+ "level": "must",
117
+ "statement": "Leave keepMounted false unless retained DOM or exit animation is required; when enabled, preserve Atom's closed hidden state and never expose retained descendants to interaction."
118
+ },
119
+ {
120
+ "id": "collapsible-live-measurement",
121
+ "level": "must",
122
+ "statement": "Consume Atom's live content width and height variables for Brick motion across responsive reflow and intrinsic content changes; never hard-code a stale measured dimension or animate a competing wrapper."
123
+ },
124
+ {
125
+ "id": "collapsible-css",
126
+ "level": "must",
127
+ "statement": "Load styles.css or core.css plus collapsible.css."
128
+ },
129
+ {
130
+ "id": "collapsible-indicator-direction",
131
+ "level": "must",
132
+ "statement": "Keep the default Indicator pointing down while closed and up while open in both LTR and RTL; use custom decorative artwork only for a deliberate alternate state language."
133
+ },
134
+ {
135
+ "id": "collapsible-icon-only",
136
+ "level": "must",
137
+ "statement": "Use Trigger iconOnly instead of sizing a general Trigger with layout wrappers when the disclosure control contains only artwork."
138
+ }
139
+ ],
140
+ "commonMistakes": [
141
+ {
142
+ "mistake": "Using Collapsible Trigger asChild around a finished Button or Icon Button.",
143
+ "correction": "Use Trigger as the only visual control owner and author its label, icon, and optional Indicator directly."
144
+ },
145
+ {
146
+ "mistake": "Forcing a normal Trigger into a square with Frame or local alignment CSS.",
147
+ "correction": "Use Trigger iconOnly so its Root size supplies square geometry and centered artwork."
148
+ },
149
+ {
150
+ "mistake": "Putting padding on Content or animating an application wrapper independently.",
151
+ "correction": "Keep Content as the measured motion boundary and put visible spacing in ContentInner."
152
+ },
153
+ {
154
+ "mistake": "Choosing Collapsible when the page must be inert behind the open panel.",
155
+ "correction": "Use Drawer or Dialog so Atom can own modal isolation, focus, dismissal, and scroll locking."
156
+ }
157
+ ],
158
+ "validation": [
159
+ "Test the accessible Trigger name, aria-expanded/aria-controls relationship, Enter and Space, controlled and uncontrolled state, disabled behavior, focus retention, the default down/up Indicator state, and icon-only centering.",
160
+ "Test default unmount, keepMounted hidden descendants, initial-open state, open/close measurement, dynamic and responsive width/height changes, exit presence, reduced motion, long labels, narrow widths, RTL, and horizontal overflow without unintended page-load entrance motion.",
161
+ "When adapting Collapsible inside another surface, report any Root geometry override instead of silently treating plain as a behavior-only recipe."
162
+ ],
163
+ "related": [
164
+ {
165
+ "kind": "package",
166
+ "package": "@flowstack-ui/atom",
167
+ "id": "collapsible",
168
+ "versionPolicy": "installed-exact"
169
+ },
170
+ "accordion",
171
+ "drawer",
172
+ "app-bar",
173
+ "nav-list",
174
+ "show",
175
+ "hide",
176
+ "stack"
177
+ ]
178
+ }
179
+ ```
@@ -0,0 +1,135 @@
1
+ # Color Picker
2
+
3
+ Source: @flowstack-ui/brick@0.1.11
4
+ Kind: component
5
+ ID: color-picker
6
+
7
+ # Color Picker agent guide
8
+
9
+ ## Purpose
10
+
11
+ Edit, choose, and submit an opaque hexadecimal color through a finished text, native chooser, preset, or optional floating composition.
12
+
13
+ ## Use when
14
+
15
+ - A form needs one #rrggbb color value selected through editable text, the browser chooser, named presets, or a popover that combines them.
16
+
17
+ ## Choose something else when
18
+
19
+ - The interface only previews a color. Use Color Swatch.
20
+ - The task requires alpha, gradients, color-space conversion, channels, an eyedropper, or contrast analysis. Use an application-owned specialist until Atom releases that behavior.
21
+
22
+ ## Required composition
23
+
24
+ - Place Label and Control inside Root; include HiddenInput when the value participates in native form submission.
25
+ - Compose Trigger with Content for a floating picker, or omit both for inline editing.
26
+ - Put ColorSwatch.Root inside Trigger and SwatchTrigger for finished previews while the surrounding control carries the accessible name and selected state.
27
+
28
+ ## Rules
29
+
30
+ - **MUST:** Give Input and NativeInput accessible names through Label or explicit aria-label values.
31
+ - **MUST:** Provide name to Root and render exactly one HiddenInput when the color must submit.
32
+ - **MUST:** Use #rgb or #rrggbb; this release intentionally supports opaque hexadecimal values only.
33
+ - **MUST:** Load styles.css, or core.css plus both color-picker.css and color-swatch.css when swatches are composed.
34
+ - **SHOULD:** Give presets human-readable names; do not rely on color alone or a raw hex string when a product name exists.
35
+
36
+ ## Common mistakes
37
+
38
+ - **Avoid:** Reimplementing color parsing, picker state, or Popover behavior in Brick or application code. **Instead:** Use the Atom-backed ColorPicker parts and controlled props.
39
+ - **Avoid:** Naming both Input and HiddenInput for form submission. **Instead:** Put name on Root and render one HiddenInput.
40
+ - **Avoid:** Assuming Chakra's area, alpha, channel, format, or eyedropper parts exist. **Instead:** Stay within the released Brick anatomy and treat richer behavior as Atom-first future work.
41
+
42
+ ## Validation checklist
43
+
44
+ - Test text, native, preset, controlled, disabled, read-only, invalid, form submit/reset, Escape/focus restoration, light/dark, forced-colors, narrow/zoom, RTL, and non-color selection cues.
45
+
46
+ ## Related guidance
47
+
48
+ - `color-swatch`
49
+ - `field`
50
+ - `form`
51
+ - `input`
52
+ - `popover`
53
+
54
+ ## Machine record
55
+
56
+ ```json
57
+ {
58
+ "schema": "flowstack.agent-component.v1",
59
+ "id": "color-picker",
60
+ "name": "Color Picker",
61
+ "package": "@flowstack-ui/brick",
62
+ "layer": "brick",
63
+ "kind": "component",
64
+ "purpose": "Edit, choose, and submit an opaque hexadecimal color through a finished text, native chooser, preset, or optional floating composition.",
65
+ "useWhen": [
66
+ "A form needs one #rrggbb color value selected through editable text, the browser chooser, named presets, or a popover that combines them."
67
+ ],
68
+ "avoidWhen": [
69
+ {
70
+ "condition": "The interface only previews a color.",
71
+ "useInstead": "Color Swatch"
72
+ },
73
+ {
74
+ "condition": "The task requires alpha, gradients, color-space conversion, channels, an eyedropper, or contrast analysis.",
75
+ "useInstead": "an application-owned specialist until Atom releases that behavior"
76
+ }
77
+ ],
78
+ "composition": [
79
+ "Place Label and Control inside Root; include HiddenInput when the value participates in native form submission.",
80
+ "Compose Trigger with Content for a floating picker, or omit both for inline editing.",
81
+ "Put ColorSwatch.Root inside Trigger and SwatchTrigger for finished previews while the surrounding control carries the accessible name and selected state."
82
+ ],
83
+ "rules": [
84
+ {
85
+ "id": "color-picker-label",
86
+ "level": "must",
87
+ "statement": "Give Input and NativeInput accessible names through Label or explicit aria-label values."
88
+ },
89
+ {
90
+ "id": "color-picker-form",
91
+ "level": "must",
92
+ "statement": "Provide name to Root and render exactly one HiddenInput when the color must submit."
93
+ },
94
+ {
95
+ "id": "color-picker-hex",
96
+ "level": "must",
97
+ "statement": "Use #rgb or #rrggbb; this release intentionally supports opaque hexadecimal values only."
98
+ },
99
+ {
100
+ "id": "color-picker-css",
101
+ "level": "must",
102
+ "statement": "Load styles.css, or core.css plus both color-picker.css and color-swatch.css when swatches are composed."
103
+ },
104
+ {
105
+ "id": "color-picker-preset-name",
106
+ "level": "should",
107
+ "statement": "Give presets human-readable names; do not rely on color alone or a raw hex string when a product name exists."
108
+ }
109
+ ],
110
+ "commonMistakes": [
111
+ {
112
+ "mistake": "Reimplementing color parsing, picker state, or Popover behavior in Brick or application code.",
113
+ "correction": "Use the Atom-backed ColorPicker parts and controlled props."
114
+ },
115
+ {
116
+ "mistake": "Naming both Input and HiddenInput for form submission.",
117
+ "correction": "Put name on Root and render one HiddenInput."
118
+ },
119
+ {
120
+ "mistake": "Assuming Chakra's area, alpha, channel, format, or eyedropper parts exist.",
121
+ "correction": "Stay within the released Brick anatomy and treat richer behavior as Atom-first future work."
122
+ }
123
+ ],
124
+ "validation": [
125
+ "Test text, native, preset, controlled, disabled, read-only, invalid, form submit/reset, Escape/focus restoration, light/dark, forced-colors, narrow/zoom, RTL, and non-color selection cues."
126
+ ],
127
+ "related": [
128
+ "color-swatch",
129
+ "field",
130
+ "form",
131
+ "input",
132
+ "popover"
133
+ ]
134
+ }
135
+ ```
@@ -0,0 +1,98 @@
1
+ # Color Swatch
2
+
3
+ Source: @flowstack-ui/brick@0.1.11
4
+ Kind: component
5
+ ID: color-swatch
6
+
7
+ # Color Swatch agent guide
8
+
9
+ ## Purpose
10
+
11
+ Preview one color or a compact mix of colors with a finished alpha-aware visual treatment.
12
+
13
+ ## Use when
14
+
15
+ - A selected, available, saved, or documented color needs a compact visual preview.
16
+
17
+ ## Choose something else when
18
+
19
+ - The user must choose or edit a color. Use Color Picker.
20
+
21
+ ## Required composition
22
+
23
+ - Render Root for one color and Mix for two or more colors; place the swatch inside the owning control when it represents a selectable option.
24
+
25
+ ## Rules
26
+
27
+ - **MUST:** Do not use the swatch as the only carrier of a color name, selection state, validation state, or action.
28
+ - **MUST:** Leave decorative swatches unlabeled, or provide label when the swatch itself must be exposed as an image.
29
+ - **MUST:** Load styles.css or core.css plus color-swatch.css.
30
+
31
+ ## Common mistakes
32
+
33
+ - **Avoid:** Adding click handlers directly to ColorSwatch. **Instead:** Place the passive swatch inside Button, Color Picker preset behavior, or another semantic control.
34
+
35
+ ## Validation checklist
36
+
37
+ - Check solid, alpha, mixed, size, light/dark, forced-color, zoom, RTL, and decorative versus labeled semantics.
38
+
39
+ ## Related guidance
40
+
41
+ - `badge`
42
+ - `input`
43
+
44
+ ## Machine record
45
+
46
+ ```json
47
+ {
48
+ "schema": "flowstack.agent-component.v1",
49
+ "id": "color-swatch",
50
+ "name": "Color Swatch",
51
+ "package": "@flowstack-ui/brick",
52
+ "layer": "brick",
53
+ "kind": "component",
54
+ "purpose": "Preview one color or a compact mix of colors with a finished alpha-aware visual treatment.",
55
+ "useWhen": [
56
+ "A selected, available, saved, or documented color needs a compact visual preview."
57
+ ],
58
+ "avoidWhen": [
59
+ {
60
+ "condition": "The user must choose or edit a color.",
61
+ "useInstead": "Color Picker"
62
+ }
63
+ ],
64
+ "composition": [
65
+ "Render Root for one color and Mix for two or more colors; place the swatch inside the owning control when it represents a selectable option."
66
+ ],
67
+ "rules": [
68
+ {
69
+ "id": "color-swatch-meaning",
70
+ "level": "must",
71
+ "statement": "Do not use the swatch as the only carrier of a color name, selection state, validation state, or action."
72
+ },
73
+ {
74
+ "id": "color-swatch-semantics",
75
+ "level": "must",
76
+ "statement": "Leave decorative swatches unlabeled, or provide label when the swatch itself must be exposed as an image."
77
+ },
78
+ {
79
+ "id": "color-swatch-css",
80
+ "level": "must",
81
+ "statement": "Load styles.css or core.css plus color-swatch.css."
82
+ }
83
+ ],
84
+ "commonMistakes": [
85
+ {
86
+ "mistake": "Adding click handlers directly to ColorSwatch.",
87
+ "correction": "Place the passive swatch inside Button, Color Picker preset behavior, or another semantic control."
88
+ }
89
+ ],
90
+ "validation": [
91
+ "Check solid, alpha, mixed, size, light/dark, forced-color, zoom, RTL, and decorative versus labeled semantics."
92
+ ],
93
+ "related": [
94
+ "badge",
95
+ "input"
96
+ ]
97
+ }
98
+ ```
@@ -0,0 +1,157 @@
1
+ # Combobox
2
+
3
+ Source: @flowstack-ui/brick@0.1.11
4
+ Kind: component
5
+ ID: combobox
6
+
7
+ # Combobox agent guide
8
+
9
+ ## Purpose
10
+
11
+ Present finished editable filtering and single-value selection while Atom owns committed value, input text, open state, listbox focus, positioning, dismissal, validation, and form participation.
12
+
13
+ ## Use when
14
+
15
+ - A predefined option set benefits from editable filtering, including search-and-navigate interfaces whose selected result triggers an application-owned effect.
16
+
17
+ ## Choose something else when
18
+
19
+ - Any text is valid without options, one predefined value needs no filtering, several values must be selected, or the popup contains commands. Use Input, Select or RadioGroup, MultiSelect, or DropdownMenu.
20
+
21
+ ## Required composition
22
+
23
+ - Compose a persistent Field.Label, then Combobox.Root with the complete options -> Combobox.Control with Input and optional Clear and Trigger -> optional Portal -> Content -> Listbox -> one Item per available option, plus Empty, Loading, groups, and labels when required.
24
+ - Keep committed value, inputValue, and open as independent state axes. Keep rendered Items aligned with Root options and put noninteractive complete labels inside each Item.
25
+
26
+ ## Rules
27
+
28
+ - **MUST:** Keep committed value, editable input text, and popup open state independent and pair each controlled prop with its matching callback.
29
+ - **MUST:** Keep Root options, rendered Items, stable values, labels, disabled state, grouping, and custom filtering aligned as one authoritative collection.
30
+ - **MUST:** Keep Input as the named editable combobox focus owner, Content as positioning and dismissal owner, and Listbox as semantic option owner; never hand-position a Surface or put listbox role on Content.
31
+ - **MUST:** Preserve active-descendant focus, Arrow/Home/End, Enter, Escape close-then-clear, Tab, openOnFocus, pointer selection, disabled skipping, required committed-value validity, named hidden submission, external form, and reset.
32
+ - **MUST:** Enable freeSolo only when values outside the predefined collection are valid; display text alone must not satisfy required validity for a closed vocabulary.
33
+ - **MUST:** Keep routing, remote loading, analytics, persistence, and destination policy in application callbacks while Empty and Loading accurately reflect the current collection state.
34
+ - **MUST:** Load styles.css or core.css plus combobox.css and Field CSS when composed.
35
+
36
+ ## Common mistakes
37
+
38
+ - **Avoid:** Conflating input text with committed value, enabling freeSolo for closed vocabulary, omitting rendered Items, or putting listbox role on Content. **Instead:** Manage all three states, restrict freeSolo, align options with Items, and preserve Atom's compound semantic owners.
39
+ - **Avoid:** Putting Link, Button, or other controls inside Item or closing a hand-positioned result Surface with custom document listeners. **Instead:** Use noninteractive option labels and perform the selected value's application effect from onValueChange inside the complete Combobox popup anatomy.
40
+
41
+ ## Validation checklist
42
+
43
+ - Verify controlled and uncontrolled committed value, input text, and open state; default label initialization; filtering and grouping; disabled options; typing; Arrow/Home/End; Enter option and freeSolo commits; Escape; Tab; openOnFocus; Empty; Loading; Clear; Trigger; pointer selection; and clearOnSelect.
44
+ - Verify visible Field naming, required committed-value validity, inline/native validation focus, hidden named value, external form, reset, Control-sized collision positioning, Portal, outside dismissal and cancellation, and highlighted-item scrolling.
45
+ - Verify recipes and sizes, long labels, narrow widths, zoom, RTL, mobile focus, light and dark appearance, forced colors, and application-owned search-and-navigate effects.
46
+
47
+ ## Related guidance
48
+
49
+ - `@flowstack-ui/atom/agents/combobox`
50
+ - `@flowstack-ui/atom/agents/listbox`
51
+ - `field`
52
+ - `input`
53
+ - `select`
54
+ - `radio-group`
55
+ - `multi-select`
56
+ - `dropdown-menu`
57
+ - `popover`
58
+
59
+ ## Machine record
60
+
61
+ ```json
62
+ {
63
+ "schema": "flowstack.agent-component.v1",
64
+ "id": "combobox",
65
+ "name": "Combobox",
66
+ "package": "@flowstack-ui/brick",
67
+ "layer": "brick",
68
+ "kind": "component",
69
+ "purpose": "Present finished editable filtering and single-value selection while Atom owns committed value, input text, open state, listbox focus, positioning, dismissal, validation, and form participation.",
70
+ "useWhen": [
71
+ "A predefined option set benefits from editable filtering, including search-and-navigate interfaces whose selected result triggers an application-owned effect."
72
+ ],
73
+ "avoidWhen": [
74
+ {
75
+ "condition": "Any text is valid without options, one predefined value needs no filtering, several values must be selected, or the popup contains commands.",
76
+ "useInstead": "Input, Select or RadioGroup, MultiSelect, or DropdownMenu"
77
+ }
78
+ ],
79
+ "composition": [
80
+ "Compose a persistent Field.Label, then Combobox.Root with the complete options -> Combobox.Control with Input and optional Clear and Trigger -> optional Portal -> Content -> Listbox -> one Item per available option, plus Empty, Loading, groups, and labels when required.",
81
+ "Keep committed value, inputValue, and open as independent state axes. Keep rendered Items aligned with Root options and put noninteractive complete labels inside each Item."
82
+ ],
83
+ "rules": [
84
+ {
85
+ "id": "combobox-three-states",
86
+ "level": "must",
87
+ "statement": "Keep committed value, editable input text, and popup open state independent and pair each controlled prop with its matching callback."
88
+ },
89
+ {
90
+ "id": "combobox-one-collection",
91
+ "level": "must",
92
+ "statement": "Keep Root options, rendered Items, stable values, labels, disabled state, grouping, and custom filtering aligned as one authoritative collection."
93
+ },
94
+ {
95
+ "id": "combobox-semantic-owners",
96
+ "level": "must",
97
+ "statement": "Keep Input as the named editable combobox focus owner, Content as positioning and dismissal owner, and Listbox as semantic option owner; never hand-position a Surface or put listbox role on Content."
98
+ },
99
+ {
100
+ "id": "combobox-keyboard-form",
101
+ "level": "must",
102
+ "statement": "Preserve active-descendant focus, Arrow/Home/End, Enter, Escape close-then-clear, Tab, openOnFocus, pointer selection, disabled skipping, required committed-value validity, named hidden submission, external form, and reset."
103
+ },
104
+ {
105
+ "id": "combobox-free-solo",
106
+ "level": "must",
107
+ "statement": "Enable freeSolo only when values outside the predefined collection are valid; display text alone must not satisfy required validity for a closed vocabulary."
108
+ },
109
+ {
110
+ "id": "combobox-application-effect",
111
+ "level": "must",
112
+ "statement": "Keep routing, remote loading, analytics, persistence, and destination policy in application callbacks while Empty and Loading accurately reflect the current collection state."
113
+ },
114
+ {
115
+ "id": "combobox-css",
116
+ "level": "must",
117
+ "statement": "Load styles.css or core.css plus combobox.css and Field CSS when composed."
118
+ }
119
+ ],
120
+ "commonMistakes": [
121
+ {
122
+ "mistake": "Conflating input text with committed value, enabling freeSolo for closed vocabulary, omitting rendered Items, or putting listbox role on Content.",
123
+ "correction": "Manage all three states, restrict freeSolo, align options with Items, and preserve Atom's compound semantic owners."
124
+ },
125
+ {
126
+ "mistake": "Putting Link, Button, or other controls inside Item or closing a hand-positioned result Surface with custom document listeners.",
127
+ "correction": "Use noninteractive option labels and perform the selected value's application effect from onValueChange inside the complete Combobox popup anatomy."
128
+ }
129
+ ],
130
+ "validation": [
131
+ "Verify controlled and uncontrolled committed value, input text, and open state; default label initialization; filtering and grouping; disabled options; typing; Arrow/Home/End; Enter option and freeSolo commits; Escape; Tab; openOnFocus; Empty; Loading; Clear; Trigger; pointer selection; and clearOnSelect.",
132
+ "Verify visible Field naming, required committed-value validity, inline/native validation focus, hidden named value, external form, reset, Control-sized collision positioning, Portal, outside dismissal and cancellation, and highlighted-item scrolling.",
133
+ "Verify recipes and sizes, long labels, narrow widths, zoom, RTL, mobile focus, light and dark appearance, forced colors, and application-owned search-and-navigate effects."
134
+ ],
135
+ "related": [
136
+ {
137
+ "kind": "package",
138
+ "package": "@flowstack-ui/atom",
139
+ "id": "combobox",
140
+ "versionPolicy": "installed-exact"
141
+ },
142
+ {
143
+ "kind": "package",
144
+ "package": "@flowstack-ui/atom",
145
+ "id": "listbox",
146
+ "versionPolicy": "installed-exact"
147
+ },
148
+ "field",
149
+ "input",
150
+ "select",
151
+ "radio-group",
152
+ "multi-select",
153
+ "dropdown-menu",
154
+ "popover"
155
+ ]
156
+ }
157
+ ```