@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,143 @@
1
+ # Feed
2
+
3
+ Source: @flowstack-ui/brick@0.1.11
4
+ Kind: component
5
+ ID: feed
6
+
7
+ # Feed agent guide
8
+
9
+ ## Purpose
10
+
11
+ Present a styled dynamic stream of rich focusable articles while Atom owns feed semantics, busy state, positions, and keyboard movement.
12
+
13
+ ## Use when
14
+
15
+ - Activity, news, social posts, or rich notifications may change while a person reads and article-by-article keyboard movement is useful.
16
+
17
+ ## Choose something else when
18
+
19
+ - The sequence is static or has tabular, hierarchical, or purely visual relationships. Use List, Table/DataGrid, Tree, or Stack/Grid according to the relationship.
20
+
21
+ ## Required composition
22
+
23
+ - Compose direct Feed.Item articles inside one named Feed.Root; give every Item a useful heading or other accessible name, accurate position metadata, and item-local actions that do not turn the article into one whole-row control.
24
+ - Compose ScrollArea outside Root only when a Frame or another parent supplies a definite bounded size.
25
+ - Use dividerStrength=default only when a compact utility feed needs clearer row separation; preserve the subtle default for ordinary continuous reading.
26
+
27
+ ## Rules
28
+
29
+ - **MUST:** Use Feed only for a dynamic rich article stream where feed semantics and article keyboard movement improve the experience.
30
+ - **MUST:** Keep Feed.Item articles as direct Root children with useful accessible names and accurate positions and totals.
31
+ - **MUST:** Set busy only while adding or replacing Feed DOM; do not make a passive feed a live region or treat busy paint as an announcement.
32
+ - **MUST:** Keep links, buttons, and menus as independently named descendants; do not make the entire Feed Item a hover or activation target.
33
+ - **MUST:** When the stream is bounded, let Frame own the definite size and ScrollArea own overflow outside Feed.Root.
34
+ - **MUST:** When an application windows articles, preserve stable identities and full logical positions, keep the focused and next keyboard target articles mounted or materialize them before focus moves, and remember that geometry utilities do not own feed loading or semantics.
35
+ - **MUST:** Load styles.css or core.css plus feed.css and every composed child stylesheet.
36
+
37
+ ## Common mistakes
38
+
39
+ - **Avoid:** Using Feed for any repeated row, putting non-article children directly in Root, or adding aria-live to a passive notification tray. **Instead:** Choose Feed only for a dynamic article stream, keep direct Item anatomy, and reserve live announcements for application-owned asynchronous feedback.
40
+
41
+ ## Validation checklist
42
+
43
+ - Check Root naming, Item headings, direct article children, positions and totals, busy state, PageUp/PageDown, Control/Command+Home/End, nested control focus, and scroll reveal.
44
+ - Check divided, plain, and outline boundaries at narrow widths, zoom, RTL, forced colors, reduced motion, and light/dark appearance.
45
+ - For paged or windowed feeds, verify stable keys and full logical metadata and ensure the focused and next PageUp/PageDown target articles exist before focus moves.
46
+
47
+ ## Related guidance
48
+
49
+ - `@flowstack-ui/atom/agents/feed`
50
+ - `list`
51
+ - `scroll-area`
52
+ - `frame`
53
+ - `button`
54
+ - `dropdown-menu`
55
+
56
+ ## Machine record
57
+
58
+ ```json
59
+ {
60
+ "schema": "flowstack.agent-component.v1",
61
+ "id": "feed",
62
+ "name": "Feed",
63
+ "package": "@flowstack-ui/brick",
64
+ "layer": "brick",
65
+ "kind": "component",
66
+ "purpose": "Present a styled dynamic stream of rich focusable articles while Atom owns feed semantics, busy state, positions, and keyboard movement.",
67
+ "useWhen": [
68
+ "Activity, news, social posts, or rich notifications may change while a person reads and article-by-article keyboard movement is useful."
69
+ ],
70
+ "avoidWhen": [
71
+ {
72
+ "condition": "The sequence is static or has tabular, hierarchical, or purely visual relationships.",
73
+ "useInstead": "List, Table/DataGrid, Tree, or Stack/Grid according to the relationship"
74
+ }
75
+ ],
76
+ "composition": [
77
+ "Compose direct Feed.Item articles inside one named Feed.Root; give every Item a useful heading or other accessible name, accurate position metadata, and item-local actions that do not turn the article into one whole-row control.",
78
+ "Compose ScrollArea outside Root only when a Frame or another parent supplies a definite bounded size.",
79
+ "Use dividerStrength=default only when a compact utility feed needs clearer row separation; preserve the subtle default for ordinary continuous reading."
80
+ ],
81
+ "rules": [
82
+ {
83
+ "id": "feed-dynamic-owner",
84
+ "level": "must",
85
+ "statement": "Use Feed only for a dynamic rich article stream where feed semantics and article keyboard movement improve the experience."
86
+ },
87
+ {
88
+ "id": "feed-direct-items",
89
+ "level": "must",
90
+ "statement": "Keep Feed.Item articles as direct Root children with useful accessible names and accurate positions and totals."
91
+ },
92
+ {
93
+ "id": "feed-busy",
94
+ "level": "must",
95
+ "statement": "Set busy only while adding or replacing Feed DOM; do not make a passive feed a live region or treat busy paint as an announcement."
96
+ },
97
+ {
98
+ "id": "feed-actions",
99
+ "level": "must",
100
+ "statement": "Keep links, buttons, and menus as independently named descendants; do not make the entire Feed Item a hover or activation target."
101
+ },
102
+ {
103
+ "id": "feed-scroll",
104
+ "level": "must",
105
+ "statement": "When the stream is bounded, let Frame own the definite size and ScrollArea own overflow outside Feed.Root."
106
+ },
107
+ {
108
+ "id": "feed-virtualization",
109
+ "level": "must",
110
+ "statement": "When an application windows articles, preserve stable identities and full logical positions, keep the focused and next keyboard target articles mounted or materialize them before focus moves, and remember that geometry utilities do not own feed loading or semantics."
111
+ },
112
+ {
113
+ "id": "feed-css",
114
+ "level": "must",
115
+ "statement": "Load styles.css or core.css plus feed.css and every composed child stylesheet."
116
+ }
117
+ ],
118
+ "commonMistakes": [
119
+ {
120
+ "mistake": "Using Feed for any repeated row, putting non-article children directly in Root, or adding aria-live to a passive notification tray.",
121
+ "correction": "Choose Feed only for a dynamic article stream, keep direct Item anatomy, and reserve live announcements for application-owned asynchronous feedback."
122
+ }
123
+ ],
124
+ "validation": [
125
+ "Check Root naming, Item headings, direct article children, positions and totals, busy state, PageUp/PageDown, Control/Command+Home/End, nested control focus, and scroll reveal.",
126
+ "Check divided, plain, and outline boundaries at narrow widths, zoom, RTL, forced colors, reduced motion, and light/dark appearance.",
127
+ "For paged or windowed feeds, verify stable keys and full logical metadata and ensure the focused and next PageUp/PageDown target articles exist before focus moves."
128
+ ],
129
+ "related": [
130
+ {
131
+ "kind": "package",
132
+ "package": "@flowstack-ui/atom",
133
+ "id": "feed",
134
+ "versionPolicy": "installed-exact"
135
+ },
136
+ "list",
137
+ "scroll-area",
138
+ "frame",
139
+ "button",
140
+ "dropdown-menu"
141
+ ]
142
+ }
143
+ ```
@@ -0,0 +1,115 @@
1
+ # Field
2
+
3
+ Source: @flowstack-ui/brick@0.1.11
4
+ Kind: component
5
+ ID: field
6
+
7
+ # Field agent guide
8
+
9
+ ## Purpose
10
+
11
+ Visually arrange one control with its label, description, error, and inherited Atom field relationships.
12
+
13
+ ## Use when
14
+
15
+ - One finished control needs a visible label and may need help or error text.
16
+
17
+ ## Choose something else when
18
+
19
+ - Several related controls share one group label. Use Fieldset, with Field inside when individual controls also need labels.
20
+
21
+ ## Required composition
22
+
23
+ - Compose Field.Root -> Field.Label -> one control -> optional Field.Description -> optional Field.Error.
24
+
25
+ ## Rules
26
+
27
+ - **MUST:** Associate one Field with one control.
28
+ - **MUST:** Field.Label already renders the default required marker; never add a second asterisk or RequiredIndicator unless the default is disabled.
29
+ - **MUST:** Load styles.css or core.css plus field.css and the owned control stylesheet.
30
+
31
+ ## Common mistakes
32
+
33
+ - **Avoid:** Adding a manual required asterisk beside a required Field.Label. **Instead:** Set required on Field.Root and use the built-in Label marker, or explicitly replace it once.
34
+
35
+ ## Validation checklist
36
+
37
+ - Confirm label, description, and error relationships.
38
+ - Confirm exactly one required marker.
39
+ - Check vertical and horizontal layouts at narrow widths.
40
+
41
+ ## Related guidance
42
+
43
+ - `@flowstack-ui/atom/agents/field`
44
+ - `form`
45
+ - `fieldset`
46
+ - `input`
47
+ - `textarea`
48
+ - `checkbox`
49
+
50
+ ## Machine record
51
+
52
+ ```json
53
+ {
54
+ "schema": "flowstack.agent-component.v1",
55
+ "id": "field",
56
+ "name": "Field",
57
+ "package": "@flowstack-ui/brick",
58
+ "layer": "brick",
59
+ "kind": "component",
60
+ "purpose": "Visually arrange one control with its label, description, error, and inherited Atom field relationships.",
61
+ "useWhen": [
62
+ "One finished control needs a visible label and may need help or error text."
63
+ ],
64
+ "avoidWhen": [
65
+ {
66
+ "condition": "Several related controls share one group label.",
67
+ "useInstead": "Fieldset, with Field inside when individual controls also need labels"
68
+ }
69
+ ],
70
+ "composition": [
71
+ "Compose Field.Root -> Field.Label -> one control -> optional Field.Description -> optional Field.Error."
72
+ ],
73
+ "rules": [
74
+ {
75
+ "id": "field-one-control",
76
+ "level": "must",
77
+ "statement": "Associate one Field with one control."
78
+ },
79
+ {
80
+ "id": "field-marker",
81
+ "level": "must",
82
+ "statement": "Field.Label already renders the default required marker; never add a second asterisk or RequiredIndicator unless the default is disabled."
83
+ },
84
+ {
85
+ "id": "field-css",
86
+ "level": "must",
87
+ "statement": "Load styles.css or core.css plus field.css and the owned control stylesheet."
88
+ }
89
+ ],
90
+ "commonMistakes": [
91
+ {
92
+ "mistake": "Adding a manual required asterisk beside a required Field.Label.",
93
+ "correction": "Set required on Field.Root and use the built-in Label marker, or explicitly replace it once."
94
+ }
95
+ ],
96
+ "validation": [
97
+ "Confirm label, description, and error relationships.",
98
+ "Confirm exactly one required marker.",
99
+ "Check vertical and horizontal layouts at narrow widths."
100
+ ],
101
+ "related": [
102
+ {
103
+ "kind": "package",
104
+ "package": "@flowstack-ui/atom",
105
+ "id": "field",
106
+ "versionPolicy": "installed-exact"
107
+ },
108
+ "form",
109
+ "fieldset",
110
+ "input",
111
+ "textarea",
112
+ "checkbox"
113
+ ]
114
+ }
115
+ ```
@@ -0,0 +1,103 @@
1
+ # Fieldset
2
+
3
+ Source: @flowstack-ui/brick@0.1.11
4
+ Kind: component
5
+ ID: fieldset
6
+
7
+ # Fieldset agent guide
8
+
9
+ ## Purpose
10
+
11
+ Render a finished native group for related controls with a legend, group messaging, and inherited Atom state.
12
+
13
+ ## Use when
14
+
15
+ - Multiple related controls answer one group question.
16
+
17
+ ## Choose something else when
18
+
19
+ - Only one control needs a label. Use Field.
20
+
21
+ ## Required composition
22
+
23
+ - Compose Fieldset.Root -> Fieldset.Legend -> optional description/error -> Fields or grouped choices.
24
+
25
+ ## Rules
26
+
27
+ - **MUST:** Give the related group a meaningful legend.
28
+ - **MUST:** Load styles.css or core.css plus fieldset.css and child component styles.
29
+
30
+ ## Common mistakes
31
+
32
+ - **Avoid:** Using visual heading and div wrappers for a related choice group. **Instead:** Use Fieldset so the group label and state remain semantic.
33
+
34
+ ## Validation checklist
35
+
36
+ - Inspect fieldset and legend semantics.
37
+ - Check group messaging, state propagation, spacing, and responsive layout.
38
+
39
+ ## Related guidance
40
+
41
+ - `@flowstack-ui/atom/agents/fieldset`
42
+ - `form`
43
+ - `field`
44
+ - `checkbox`
45
+
46
+ ## Machine record
47
+
48
+ ```json
49
+ {
50
+ "schema": "flowstack.agent-component.v1",
51
+ "id": "fieldset",
52
+ "name": "Fieldset",
53
+ "package": "@flowstack-ui/brick",
54
+ "layer": "brick",
55
+ "kind": "component",
56
+ "purpose": "Render a finished native group for related controls with a legend, group messaging, and inherited Atom state.",
57
+ "useWhen": [
58
+ "Multiple related controls answer one group question."
59
+ ],
60
+ "avoidWhen": [
61
+ {
62
+ "condition": "Only one control needs a label.",
63
+ "useInstead": "Field"
64
+ }
65
+ ],
66
+ "composition": [
67
+ "Compose Fieldset.Root -> Fieldset.Legend -> optional description/error -> Fields or grouped choices."
68
+ ],
69
+ "rules": [
70
+ {
71
+ "id": "fieldset-legend",
72
+ "level": "must",
73
+ "statement": "Give the related group a meaningful legend."
74
+ },
75
+ {
76
+ "id": "fieldset-css",
77
+ "level": "must",
78
+ "statement": "Load styles.css or core.css plus fieldset.css and child component styles."
79
+ }
80
+ ],
81
+ "commonMistakes": [
82
+ {
83
+ "mistake": "Using visual heading and div wrappers for a related choice group.",
84
+ "correction": "Use Fieldset so the group label and state remain semantic."
85
+ }
86
+ ],
87
+ "validation": [
88
+ "Inspect fieldset and legend semantics.",
89
+ "Check group messaging, state propagation, spacing, and responsive layout."
90
+ ],
91
+ "related": [
92
+ {
93
+ "kind": "package",
94
+ "package": "@flowstack-ui/atom",
95
+ "id": "fieldset",
96
+ "versionPolicy": "installed-exact"
97
+ },
98
+ "form",
99
+ "field",
100
+ "checkbox"
101
+ ]
102
+ }
103
+ ```
@@ -0,0 +1,154 @@
1
+ # FileUpload
2
+
3
+ Source: @flowstack-ui/brick@0.1.11
4
+ Kind: component
5
+ ID: file-upload
6
+
7
+ # FileUpload agent guide
8
+
9
+ ## Purpose
10
+
11
+ Present a finished local-file picker, optional drop target, and removable selected-file list while Atom owns native picking, file state, client acceptance, Field validation, reset, and multipart form participation.
12
+
13
+ ## Use when
14
+
15
+ - A form needs one or more local files selected through the native picker, optional drag and drop, review, removal, or visible client-side rejection feedback before application processing.
16
+
17
+ ## Choose something else when
18
+
19
+ - A native file input is sufficient, the value is a textual path or URL, the asset is already remote, or the job is transfer progress, retry, persistence, preview editing, or server policy. Use a native input type=file, Input, Progress, Toast, Image, or an application-owned upload workflow.
20
+
21
+ ## Required composition
22
+
23
+ - Compose one Field with FileUpload.Root, exactly one HiddenInput, and an accessible Trigger. Add Dropzone only as an enhancement; use ItemGroup with one Item per accepted file and optional ItemName, ItemSize, and file-specific ItemDeleteTrigger.
24
+ - State both browse and drop paths plus material constraints in visible copy. Use Root's outline or soft recipe, size, shape, and width while keeping upload transport, progress, rejection copy, and server policy outside FileUpload.
25
+
26
+ ## Rules
27
+
28
+ - **MUST:** Render exactly one HiddenInput whenever picker, Trigger, required validity, name, form, accept, or multiple semantics are needed and keep it aligned with the visible control.
29
+ - **MUST:** Always provide a visible accessible Trigger for keyboard, touch, and pointer selection; Dropzone alone is not an equivalent picker, and Trigger already owns its button recipe rather than nesting Button.
30
+ - **MUST:** Use accept, maxFiles, maxSize, and validateFile only for immediate client feedback, show authored localized rejection reasons, and validate type, size, content, authorization, and storage policy again on the server.
31
+ - **MUST:** Use files with onFilesChange or defaultFiles, choose appendFiles deliberately for multiple selection, and distinguish rejected candidates from the validity of the currently selected files.
32
+ - **MUST:** Preserve file-only drag state, nested drag handling, document-drop protection, disabled/read-only behavior, native FileList synchronization, required focus, Field relationships, external form, same-file reselection after deletion, and uncontrolled reset.
33
+ - **MUST:** Keep ItemGroup and Item native list semantics, preserve each complete filename despite visual truncation, give every removal action a file-specific name, and do not nest Brick List or IconButton into the owning parts.
34
+ - **MUST:** Keep drop copy and selected-file metadata contained under long filenames, localization, narrow widths, zoom, and RTL while retaining visible focus, non-color accept/reject cues, and effective action targets.
35
+ - **MUST:** Load styles.css or core.css plus file-upload.css and Field CSS when composed.
36
+
37
+ ## Common mistakes
38
+
39
+ - **Avoid:** Using Dropzone as the only picker, treating accept as security, hiding rejection reasons, wrapping Trigger in Button, or forgetting same-file reselection after removal. **Instead:** Include HiddenInput and Trigger, validate again on the server, present rejection feedback, preserve the owning interactive parts, and let Atom synchronize native selection.
40
+ - **Avoid:** Turning local file selection into an upload transport with progress, retry, preview lifecycle, storage, or malware claims. **Instead:** Keep FileUpload responsible for local selection and compose application-owned transfer status and durable results beside it.
41
+
42
+ ## Validation checklist
43
+
44
+ - Verify picker opening by pointer, touch, Enter, and Space; controlled/uncontrolled files; single replacement and multiple append/replace policy; accept rules; maximum count and size; custom rejection; visible rejection feedback; disabled/read-only state; and same-file reselection.
45
+ - Verify accepted/rejected and nested drag behavior, non-file drags, document-drop protection, HiddenInput name/form/required/multiple/FileList behavior, Field labels/errors, inline/native focus, reset, ItemGroup metadata, delete labels, native props, refs, and composition.
46
+ - Verify both recipes, all sizes/shapes/widths, long filenames and localized copy, narrow width, zoom, RTL, touch targets, light/dark appearance, forced colors, focus, invalid, disabled, read-only, accept, and reject paint.
47
+
48
+ ## Related guidance
49
+
50
+ - `@flowstack-ui/atom/agents/file-upload`
51
+ - `input`
52
+ - `field`
53
+ - `form`
54
+ - `progress`
55
+ - `toast`
56
+ - `image`
57
+
58
+ ## Machine record
59
+
60
+ ```json
61
+ {
62
+ "schema": "flowstack.agent-component.v1",
63
+ "id": "file-upload",
64
+ "name": "FileUpload",
65
+ "package": "@flowstack-ui/brick",
66
+ "layer": "brick",
67
+ "kind": "component",
68
+ "purpose": "Present a finished local-file picker, optional drop target, and removable selected-file list while Atom owns native picking, file state, client acceptance, Field validation, reset, and multipart form participation.",
69
+ "useWhen": [
70
+ "A form needs one or more local files selected through the native picker, optional drag and drop, review, removal, or visible client-side rejection feedback before application processing."
71
+ ],
72
+ "avoidWhen": [
73
+ {
74
+ "condition": "A native file input is sufficient, the value is a textual path or URL, the asset is already remote, or the job is transfer progress, retry, persistence, preview editing, or server policy.",
75
+ "useInstead": "a native input type=file, Input, Progress, Toast, Image, or an application-owned upload workflow"
76
+ }
77
+ ],
78
+ "composition": [
79
+ "Compose one Field with FileUpload.Root, exactly one HiddenInput, and an accessible Trigger. Add Dropzone only as an enhancement; use ItemGroup with one Item per accepted file and optional ItemName, ItemSize, and file-specific ItemDeleteTrigger.",
80
+ "State both browse and drop paths plus material constraints in visible copy. Use Root's outline or soft recipe, size, shape, and width while keeping upload transport, progress, rejection copy, and server policy outside FileUpload."
81
+ ],
82
+ "rules": [
83
+ {
84
+ "id": "file-upload-native-input",
85
+ "level": "must",
86
+ "statement": "Render exactly one HiddenInput whenever picker, Trigger, required validity, name, form, accept, or multiple semantics are needed and keep it aligned with the visible control."
87
+ },
88
+ {
89
+ "id": "file-upload-access-path",
90
+ "level": "must",
91
+ "statement": "Always provide a visible accessible Trigger for keyboard, touch, and pointer selection; Dropzone alone is not an equivalent picker, and Trigger already owns its button recipe rather than nesting Button."
92
+ },
93
+ {
94
+ "id": "file-upload-validation",
95
+ "level": "must",
96
+ "statement": "Use accept, maxFiles, maxSize, and validateFile only for immediate client feedback, show authored localized rejection reasons, and validate type, size, content, authorization, and storage policy again on the server."
97
+ },
98
+ {
99
+ "id": "file-upload-state",
100
+ "level": "must",
101
+ "statement": "Use files with onFilesChange or defaultFiles, choose appendFiles deliberately for multiple selection, and distinguish rejected candidates from the validity of the currently selected files."
102
+ },
103
+ {
104
+ "id": "file-upload-drop-form",
105
+ "level": "must",
106
+ "statement": "Preserve file-only drag state, nested drag handling, document-drop protection, disabled/read-only behavior, native FileList synchronization, required focus, Field relationships, external form, same-file reselection after deletion, and uncontrolled reset."
107
+ },
108
+ {
109
+ "id": "file-upload-items",
110
+ "level": "must",
111
+ "statement": "Keep ItemGroup and Item native list semantics, preserve each complete filename despite visual truncation, give every removal action a file-specific name, and do not nest Brick List or IconButton into the owning parts."
112
+ },
113
+ {
114
+ "id": "file-upload-responsive",
115
+ "level": "must",
116
+ "statement": "Keep drop copy and selected-file metadata contained under long filenames, localization, narrow widths, zoom, and RTL while retaining visible focus, non-color accept/reject cues, and effective action targets."
117
+ },
118
+ {
119
+ "id": "file-upload-css",
120
+ "level": "must",
121
+ "statement": "Load styles.css or core.css plus file-upload.css and Field CSS when composed."
122
+ }
123
+ ],
124
+ "commonMistakes": [
125
+ {
126
+ "mistake": "Using Dropzone as the only picker, treating accept as security, hiding rejection reasons, wrapping Trigger in Button, or forgetting same-file reselection after removal.",
127
+ "correction": "Include HiddenInput and Trigger, validate again on the server, present rejection feedback, preserve the owning interactive parts, and let Atom synchronize native selection."
128
+ },
129
+ {
130
+ "mistake": "Turning local file selection into an upload transport with progress, retry, preview lifecycle, storage, or malware claims.",
131
+ "correction": "Keep FileUpload responsible for local selection and compose application-owned transfer status and durable results beside it."
132
+ }
133
+ ],
134
+ "validation": [
135
+ "Verify picker opening by pointer, touch, Enter, and Space; controlled/uncontrolled files; single replacement and multiple append/replace policy; accept rules; maximum count and size; custom rejection; visible rejection feedback; disabled/read-only state; and same-file reselection.",
136
+ "Verify accepted/rejected and nested drag behavior, non-file drags, document-drop protection, HiddenInput name/form/required/multiple/FileList behavior, Field labels/errors, inline/native focus, reset, ItemGroup metadata, delete labels, native props, refs, and composition.",
137
+ "Verify both recipes, all sizes/shapes/widths, long filenames and localized copy, narrow width, zoom, RTL, touch targets, light/dark appearance, forced colors, focus, invalid, disabled, read-only, accept, and reject paint."
138
+ ],
139
+ "related": [
140
+ {
141
+ "kind": "package",
142
+ "package": "@flowstack-ui/atom",
143
+ "id": "file-upload",
144
+ "versionPolicy": "installed-exact"
145
+ },
146
+ "input",
147
+ "field",
148
+ "form",
149
+ "progress",
150
+ "toast",
151
+ "image"
152
+ ]
153
+ }
154
+ ```
@@ -0,0 +1,108 @@
1
+ # Form
2
+
3
+ Source: @flowstack-ui/brick@0.1.11
4
+ Kind: component
5
+ ID: form
6
+
7
+ # Form agent guide
8
+
9
+ ## Purpose
10
+
11
+ Provide a finished native submission boundary and consistent form rhythm while Atom owns submission and validation behavior.
12
+
13
+ ## Use when
14
+
15
+ - Related controls submit user input as one operation.
16
+
17
+ ## Choose something else when
18
+
19
+ - Controls are unrelated immediate settings or actions. Use Individual Field and Button compositions.
20
+
21
+ ## Required composition
22
+
23
+ - Compose Form -> Field for each independently labelled control -> a named submit Button; add Fieldset only when multiple controls answer one meaningful group question.
24
+
25
+ ## Rules
26
+
27
+ - **MUST:** Keep native submission available and give submitted controls names.
28
+ - **MUST:** Load styles.css or core.css plus form.css and every rendered child component stylesheet.
29
+
30
+ ## Common mistakes
31
+
32
+ - **Avoid:** Treating Form as a complete login or contact workflow. **Instead:** Keep business workflow in the application or a future Block; Form owns the generic visual boundary.
33
+ - **Avoid:** Wrapping the entire form in Fieldset only to obtain spacing, then repeating the page heading as its legend. **Instead:** Let Form own ordinary field rhythm and reserve Fieldset for a real labelled subgroup.
34
+
35
+ ## Validation checklist
36
+
37
+ - Submit with keyboard and pointer.
38
+ - Inspect submitted values, invalid relationships, spacing, and narrow-layout behavior.
39
+
40
+ ## Related guidance
41
+
42
+ - `@flowstack-ui/atom/agents/form`
43
+ - `field`
44
+ - `fieldset`
45
+ - `button`
46
+
47
+ ## Machine record
48
+
49
+ ```json
50
+ {
51
+ "schema": "flowstack.agent-component.v1",
52
+ "id": "form",
53
+ "name": "Form",
54
+ "package": "@flowstack-ui/brick",
55
+ "layer": "brick",
56
+ "kind": "component",
57
+ "purpose": "Provide a finished native submission boundary and consistent form rhythm while Atom owns submission and validation behavior.",
58
+ "useWhen": [
59
+ "Related controls submit user input as one operation."
60
+ ],
61
+ "avoidWhen": [
62
+ {
63
+ "condition": "Controls are unrelated immediate settings or actions.",
64
+ "useInstead": "Individual Field and Button compositions"
65
+ }
66
+ ],
67
+ "composition": [
68
+ "Compose Form -> Field for each independently labelled control -> a named submit Button; add Fieldset only when multiple controls answer one meaningful group question."
69
+ ],
70
+ "rules": [
71
+ {
72
+ "id": "form-native",
73
+ "level": "must",
74
+ "statement": "Keep native submission available and give submitted controls names."
75
+ },
76
+ {
77
+ "id": "form-css",
78
+ "level": "must",
79
+ "statement": "Load styles.css or core.css plus form.css and every rendered child component stylesheet."
80
+ }
81
+ ],
82
+ "commonMistakes": [
83
+ {
84
+ "mistake": "Treating Form as a complete login or contact workflow.",
85
+ "correction": "Keep business workflow in the application or a future Block; Form owns the generic visual boundary."
86
+ },
87
+ {
88
+ "mistake": "Wrapping the entire form in Fieldset only to obtain spacing, then repeating the page heading as its legend.",
89
+ "correction": "Let Form own ordinary field rhythm and reserve Fieldset for a real labelled subgroup."
90
+ }
91
+ ],
92
+ "validation": [
93
+ "Submit with keyboard and pointer.",
94
+ "Inspect submitted values, invalid relationships, spacing, and narrow-layout behavior."
95
+ ],
96
+ "related": [
97
+ {
98
+ "kind": "package",
99
+ "package": "@flowstack-ui/atom",
100
+ "id": "form",
101
+ "versionPolicy": "installed-exact"
102
+ },
103
+ "field",
104
+ "fieldset",
105
+ "button"
106
+ ]
107
+ }
108
+ ```