@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,96 @@
1
+ # Fieldset
2
+
3
+ Source: @flowstack-ui/atom@0.24.0
4
+ Kind: component
5
+ ID: fieldset
6
+
7
+ # Fieldset agent guide
8
+
9
+ ## Purpose
10
+
11
+ Group related form controls under native fieldset and legend semantics while sharing group state and validation behavior.
12
+
13
+ ## Use when
14
+
15
+ - Multiple related controls need one group question or label, especially radio or checkbox choices.
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 controls.
24
+
25
+ ## Rules
26
+
27
+ - **MUST:** Group only controls that answer one related question.
28
+ - **MUST:** Provide a meaningful legend unless an equivalent documented accessible naming strategy is required.
29
+
30
+ ## Common mistakes
31
+
32
+ - **Avoid:** Using one Field to label a collection of controls. **Instead:** Use Fieldset for the group and Field for each independently labeled control.
33
+
34
+ ## Validation checklist
35
+
36
+ - Inspect fieldset and legend semantics.
37
+ - Confirm disabled, required, and invalid group state reaches descendants as documented.
38
+
39
+ ## Related guidance
40
+
41
+ - `form`
42
+ - `field`
43
+ - `checkbox`
44
+
45
+ ## Machine record
46
+
47
+ ```json
48
+ {
49
+ "schema": "flowstack.agent-component.v1",
50
+ "id": "fieldset",
51
+ "name": "Fieldset",
52
+ "package": "@flowstack-ui/atom",
53
+ "layer": "atom",
54
+ "kind": "component",
55
+ "purpose": "Group related form controls under native fieldset and legend semantics while sharing group state and validation behavior.",
56
+ "useWhen": [
57
+ "Multiple related controls need one group question or label, especially radio or checkbox choices."
58
+ ],
59
+ "avoidWhen": [
60
+ {
61
+ "condition": "Only one control needs a label.",
62
+ "useInstead": "Field"
63
+ }
64
+ ],
65
+ "composition": [
66
+ "Compose Fieldset.Root -> Fieldset.Legend -> optional description/error -> Fields or grouped controls."
67
+ ],
68
+ "rules": [
69
+ {
70
+ "id": "fieldset-related-controls",
71
+ "level": "must",
72
+ "statement": "Group only controls that answer one related question."
73
+ },
74
+ {
75
+ "id": "fieldset-visible-legend",
76
+ "level": "must",
77
+ "statement": "Provide a meaningful legend unless an equivalent documented accessible naming strategy is required."
78
+ }
79
+ ],
80
+ "commonMistakes": [
81
+ {
82
+ "mistake": "Using one Field to label a collection of controls.",
83
+ "correction": "Use Fieldset for the group and Field for each independently labeled control."
84
+ }
85
+ ],
86
+ "validation": [
87
+ "Inspect fieldset and legend semantics.",
88
+ "Confirm disabled, required, and invalid group state reaches descendants as documented."
89
+ ],
90
+ "related": [
91
+ "form",
92
+ "field",
93
+ "checkbox"
94
+ ]
95
+ }
96
+ ```
@@ -0,0 +1,120 @@
1
+ # FileUpload
2
+
3
+ Source: @flowstack-ui/atom@0.24.0
4
+ Kind: component
5
+ ID: file-upload
6
+
7
+ # FileUpload agent guide
8
+
9
+ ## Purpose
10
+
11
+ Coordinate native file picking, optional drag and drop, client-side acceptance feedback, selected-file state, removal, Field validation, and multipart form participation.
12
+
13
+ ## Use when
14
+
15
+ - Users choose local files and the experience needs a custom picker action, drop target, selected-file list, removal, or client-side rejection feedback.
16
+
17
+ ## Choose something else when
18
+
19
+ - The browser's native file input is sufficient or the task only receives an already-hosted URL or remote asset reference. Use a native input type=file or the application-owned remote-source workflow.
20
+
21
+ ## Required composition
22
+
23
+ - Compose Root with HiddenInput and an accessible Trigger for keyboard, touch, and pointer picker access. Add Dropzone as an enhancement, and use ItemGroup with Item, optional ItemName and ItemSize, and ItemDeleteTrigger when selected files must be reviewed or removed.
24
+
25
+ ## Rules
26
+
27
+ - **MUST:** Render HiddenInput when Trigger, native picker, required validity, name, form, accept, or multiple file semantics are needed; keep it aligned with the visible Trigger.
28
+ - **MUST:** Always provide a visible accessible Trigger for keyboard, touch, and single-pointer selection; Dropzone alone is not an equivalent accessible picker.
29
+ - **MUST:** Use accept, maxFiles, maxSize, and validateFile only for immediate client feedback and validate file type, size, content, authorization, and storage policy again on the server.
30
+ - **MUST:** Use files with onFilesChange for controlled state or defaultFiles for uncontrolled state, choose appendFiles intentionally in multiple mode, and expose rejected files as visible authored feedback.
31
+ - **MUST:** Preserve file-only drag acceptance, accept/reject preview, nested enter/leave handling, disabled/read-only behavior, and document-drop protection unless the application intentionally owns outside drops.
32
+ - **MUST:** Preserve HiddenInput name, form, multiple, selected FileList synchronization where supported, required validity, validation focus, Field relationships, deletion reset for same-file reselection, and uncontrolled form reset.
33
+
34
+ ## Common mistakes
35
+
36
+ - **Avoid:** Using Dropzone as the only picker, treating accept or client validation as a security boundary, hiding rejection reasons, or forgetting that selecting the same removed file requires native input reset. **Instead:** Include HiddenInput and Trigger, validate again on the server, present rejection feedback, and use ItemDeleteTrigger or Root behavior to keep native selection synchronized.
37
+
38
+ ## Validation checklist
39
+
40
+ - Verify picker opening by pointer, touch, Enter, and Space; controlled/uncontrolled files; single replace and multiple append/replace policy; accept extension/MIME/wildcard rules; max count and size; custom rejection; visible rejection feedback; disabled/read-only behavior; and same-file reselection after removal.
41
+ - Verify drag enter/over/leave/drop accept and reject state, non-file drags, nested targets, outside document file-drop protection, HiddenInput name/form/required/multiple/FileList behavior, Field labels and errors, native/inline validation focus, reset, ItemGroup rendering, metadata, delete labels, refs, and asChild/render composition.
42
+
43
+ ## Related guidance
44
+
45
+ - `input`
46
+ - `field`
47
+ - `form`
48
+
49
+ ## Machine record
50
+
51
+ ```json
52
+ {
53
+ "schema": "flowstack.agent-component.v1",
54
+ "id": "file-upload",
55
+ "name": "FileUpload",
56
+ "package": "@flowstack-ui/atom",
57
+ "layer": "atom",
58
+ "kind": "component",
59
+ "purpose": "Coordinate native file picking, optional drag and drop, client-side acceptance feedback, selected-file state, removal, Field validation, and multipart form participation.",
60
+ "useWhen": [
61
+ "Users choose local files and the experience needs a custom picker action, drop target, selected-file list, removal, or client-side rejection feedback."
62
+ ],
63
+ "avoidWhen": [
64
+ {
65
+ "condition": "The browser's native file input is sufficient or the task only receives an already-hosted URL or remote asset reference.",
66
+ "useInstead": "a native input type=file or the application-owned remote-source workflow"
67
+ }
68
+ ],
69
+ "composition": [
70
+ "Compose Root with HiddenInput and an accessible Trigger for keyboard, touch, and pointer picker access. Add Dropzone as an enhancement, and use ItemGroup with Item, optional ItemName and ItemSize, and ItemDeleteTrigger when selected files must be reviewed or removed."
71
+ ],
72
+ "rules": [
73
+ {
74
+ "id": "file-upload-native-input",
75
+ "level": "must",
76
+ "statement": "Render HiddenInput when Trigger, native picker, required validity, name, form, accept, or multiple file semantics are needed; keep it aligned with the visible Trigger."
77
+ },
78
+ {
79
+ "id": "file-upload-access-path",
80
+ "level": "must",
81
+ "statement": "Always provide a visible accessible Trigger for keyboard, touch, and single-pointer selection; Dropzone alone is not an equivalent accessible picker."
82
+ },
83
+ {
84
+ "id": "file-upload-validation",
85
+ "level": "must",
86
+ "statement": "Use accept, maxFiles, maxSize, and validateFile only for immediate client feedback and validate file type, size, content, authorization, and storage policy again on the server."
87
+ },
88
+ {
89
+ "id": "file-upload-state",
90
+ "level": "must",
91
+ "statement": "Use files with onFilesChange for controlled state or defaultFiles for uncontrolled state, choose appendFiles intentionally in multiple mode, and expose rejected files as visible authored feedback."
92
+ },
93
+ {
94
+ "id": "file-upload-drop",
95
+ "level": "must",
96
+ "statement": "Preserve file-only drag acceptance, accept/reject preview, nested enter/leave handling, disabled/read-only behavior, and document-drop protection unless the application intentionally owns outside drops."
97
+ },
98
+ {
99
+ "id": "file-upload-form",
100
+ "level": "must",
101
+ "statement": "Preserve HiddenInput name, form, multiple, selected FileList synchronization where supported, required validity, validation focus, Field relationships, deletion reset for same-file reselection, and uncontrolled form reset."
102
+ }
103
+ ],
104
+ "commonMistakes": [
105
+ {
106
+ "mistake": "Using Dropzone as the only picker, treating accept or client validation as a security boundary, hiding rejection reasons, or forgetting that selecting the same removed file requires native input reset.",
107
+ "correction": "Include HiddenInput and Trigger, validate again on the server, present rejection feedback, and use ItemDeleteTrigger or Root behavior to keep native selection synchronized."
108
+ }
109
+ ],
110
+ "validation": [
111
+ "Verify picker opening by pointer, touch, Enter, and Space; controlled/uncontrolled files; single replace and multiple append/replace policy; accept extension/MIME/wildcard rules; max count and size; custom rejection; visible rejection feedback; disabled/read-only behavior; and same-file reselection after removal.",
112
+ "Verify drag enter/over/leave/drop accept and reject state, non-file drags, nested targets, outside document file-drop protection, HiddenInput name/form/required/multiple/FileList behavior, Field labels and errors, native/inline validation focus, reset, ItemGroup rendering, metadata, delete labels, refs, and asChild/render composition."
113
+ ],
114
+ "related": [
115
+ "input",
116
+ "field",
117
+ "form"
118
+ ]
119
+ }
120
+ ```
@@ -0,0 +1,98 @@
1
+ # Form
2
+
3
+ Source: @flowstack-ui/atom@0.24.0
4
+ Kind: component
5
+ ID: form
6
+
7
+ # Form agent guide
8
+
9
+ ## Purpose
10
+
11
+ Provide the native form submission boundary and shared validation behavior for descendant fields and groups.
12
+
13
+ ## Use when
14
+
15
+ - A set of controls submits related user input.
16
+
17
+ ## Choose something else when
18
+
19
+ - Controls are unrelated or trigger immediate independent actions. Use Individual Field and Button compositions.
20
+
21
+ ## Required composition
22
+
23
+ - Compose Form around Fieldset for related groups and Field around each single control; finish with a named submit Button.
24
+
25
+ ## Rules
26
+
27
+ - **MUST:** Preserve native form submission and do not make click handling the only submit path.
28
+ - **MUST:** Give submitted controls stable names.
29
+
30
+ ## Common mistakes
31
+
32
+ - **Avoid:** Building a form-shaped div with click-only submission. **Instead:** Use Form and a submit Button so keyboard and platform behavior remain available.
33
+
34
+ ## Validation checklist
35
+
36
+ - Submit with Enter where appropriate.
37
+ - Inspect submitted names and values.
38
+ - Verify invalid fields expose their relationships.
39
+
40
+ ## Related guidance
41
+
42
+ - `field`
43
+ - `fieldset`
44
+ - `button`
45
+
46
+ ## Machine record
47
+
48
+ ```json
49
+ {
50
+ "schema": "flowstack.agent-component.v1",
51
+ "id": "form",
52
+ "name": "Form",
53
+ "package": "@flowstack-ui/atom",
54
+ "layer": "atom",
55
+ "kind": "component",
56
+ "purpose": "Provide the native form submission boundary and shared validation behavior for descendant fields and groups.",
57
+ "useWhen": [
58
+ "A set of controls submits related user input."
59
+ ],
60
+ "avoidWhen": [
61
+ {
62
+ "condition": "Controls are unrelated or trigger immediate independent actions.",
63
+ "useInstead": "Individual Field and Button compositions"
64
+ }
65
+ ],
66
+ "composition": [
67
+ "Compose Form around Fieldset for related groups and Field around each single control; finish with a named submit Button."
68
+ ],
69
+ "rules": [
70
+ {
71
+ "id": "form-native-submit",
72
+ "level": "must",
73
+ "statement": "Preserve native form submission and do not make click handling the only submit path."
74
+ },
75
+ {
76
+ "id": "form-control-names",
77
+ "level": "must",
78
+ "statement": "Give submitted controls stable names."
79
+ }
80
+ ],
81
+ "commonMistakes": [
82
+ {
83
+ "mistake": "Building a form-shaped div with click-only submission.",
84
+ "correction": "Use Form and a submit Button so keyboard and platform behavior remain available."
85
+ }
86
+ ],
87
+ "validation": [
88
+ "Submit with Enter where appropriate.",
89
+ "Inspect submitted names and values.",
90
+ "Verify invalid fields expose their relationships."
91
+ ],
92
+ "related": [
93
+ "field",
94
+ "fieldset",
95
+ "button"
96
+ ]
97
+ }
98
+ ```
@@ -0,0 +1,114 @@
1
+ # HoverCard
2
+
3
+ Source: @flowstack-ui/atom@0.24.0
4
+ Kind: component
5
+ ID: hover-card
6
+
7
+ # HoverCard agent guide
8
+
9
+ ## Purpose
10
+
11
+ Reveal supplemental, nonessential preview content from mouse-capable hover or focus-visible interaction without creating popup semantics or replacing the trigger's native action.
12
+
13
+ ## Use when
14
+
15
+ - A link or other focusable subject benefits from a richer passive preview that is supplemental, nonessential, and contains no required actions.
16
+
17
+ ## Choose something else when
18
+
19
+ - The content is a brief text hint, contains interactive controls, must hold focus, or is essential on touch and other non-hover input. Use Tooltip, Popover, Dialog, or visible inline content.
20
+
21
+ ## Required composition
22
+
23
+ - Compose Root with Trigger and Content; preserve the Trigger's native semantic element with asChild when it owns an action. Add Portal only when Content must leave its DOM location and Arrow only when the styled preview needs a pointer.
24
+
25
+ ## Rules
26
+
27
+ - **MUST:** Keep all essential information and required actions available outside Content because touch does not open HoverCard and Content has no popup relationship.
28
+ - **MUST:** Do not put buttons, links, inputs, or required interaction inside Content; use Popover for interactive floating content.
29
+ - **MUST:** Preserve Trigger's native action and tab order through asChild, and do not add aria-expanded, aria-controls, or dialog semantics to this preview pattern.
30
+ - **MUST:** Preserve mouse-capable hover, focus-visible opening, touch and compatibility-event suppression, delays, the safe pointer corridor, and top-layer Escape behavior.
31
+ - **SHOULD:** Style from resolved side and measured available-size data rather than assuming the requested placement remains unchanged after collision handling.
32
+
33
+ ## Common mistakes
34
+
35
+ - **Avoid:** Putting a profile action or essential fact only in HoverCard, expecting touch to open it, or adding popup ARIA relationships. **Instead:** Keep the preview passive and redundant, preserve the trigger action, and use Popover or visible content when users must interact or access the information.
36
+
37
+ ## Validation checklist
38
+
39
+ - Verify controlled state, disabled state, mouse hover and focus-visible opening, ordinary focus behavior, delays, Trigger-to-Content pointer corridor, Escape, exit presence, and that touch taps and long presses preserve the native Trigger action without opening.
40
+ - Verify no essential or interactive content is hidden in the preview, no popup ARIA is introduced, asChild semantics, portals, explicit and inherited direction, collision placement, available-size properties, and optional Arrow geometry.
41
+
42
+ ## Related guidance
43
+
44
+ - `tooltip`
45
+ - `popover`
46
+ - `dialog`
47
+
48
+ ## Machine record
49
+
50
+ ```json
51
+ {
52
+ "schema": "flowstack.agent-component.v1",
53
+ "id": "hover-card",
54
+ "name": "HoverCard",
55
+ "package": "@flowstack-ui/atom",
56
+ "layer": "atom",
57
+ "kind": "component",
58
+ "purpose": "Reveal supplemental, nonessential preview content from mouse-capable hover or focus-visible interaction without creating popup semantics or replacing the trigger's native action.",
59
+ "useWhen": [
60
+ "A link or other focusable subject benefits from a richer passive preview that is supplemental, nonessential, and contains no required actions."
61
+ ],
62
+ "avoidWhen": [
63
+ {
64
+ "condition": "The content is a brief text hint, contains interactive controls, must hold focus, or is essential on touch and other non-hover input.",
65
+ "useInstead": "Tooltip, Popover, Dialog, or visible inline content"
66
+ }
67
+ ],
68
+ "composition": [
69
+ "Compose Root with Trigger and Content; preserve the Trigger's native semantic element with asChild when it owns an action. Add Portal only when Content must leave its DOM location and Arrow only when the styled preview needs a pointer."
70
+ ],
71
+ "rules": [
72
+ {
73
+ "id": "hover-card-supplemental",
74
+ "level": "must",
75
+ "statement": "Keep all essential information and required actions available outside Content because touch does not open HoverCard and Content has no popup relationship."
76
+ },
77
+ {
78
+ "id": "hover-card-noninteractive",
79
+ "level": "must",
80
+ "statement": "Do not put buttons, links, inputs, or required interaction inside Content; use Popover for interactive floating content."
81
+ },
82
+ {
83
+ "id": "hover-card-trigger-native",
84
+ "level": "must",
85
+ "statement": "Preserve Trigger's native action and tab order through asChild, and do not add aria-expanded, aria-controls, or dialog semantics to this preview pattern."
86
+ },
87
+ {
88
+ "id": "hover-card-input-policy",
89
+ "level": "must",
90
+ "statement": "Preserve mouse-capable hover, focus-visible opening, touch and compatibility-event suppression, delays, the safe pointer corridor, and top-layer Escape behavior."
91
+ },
92
+ {
93
+ "id": "hover-card-positioning",
94
+ "level": "should",
95
+ "statement": "Style from resolved side and measured available-size data rather than assuming the requested placement remains unchanged after collision handling."
96
+ }
97
+ ],
98
+ "commonMistakes": [
99
+ {
100
+ "mistake": "Putting a profile action or essential fact only in HoverCard, expecting touch to open it, or adding popup ARIA relationships.",
101
+ "correction": "Keep the preview passive and redundant, preserve the trigger action, and use Popover or visible content when users must interact or access the information."
102
+ }
103
+ ],
104
+ "validation": [
105
+ "Verify controlled state, disabled state, mouse hover and focus-visible opening, ordinary focus behavior, delays, Trigger-to-Content pointer corridor, Escape, exit presence, and that touch taps and long presses preserve the native Trigger action without opening.",
106
+ "Verify no essential or interactive content is hidden in the preview, no popup ARIA is introduced, asChild semantics, portals, explicit and inherited direction, collision placement, available-size properties, and optional Arrow geometry."
107
+ ],
108
+ "related": [
109
+ "tooltip",
110
+ "popover",
111
+ "dialog"
112
+ ]
113
+ }
114
+ ```
@@ -0,0 +1,94 @@
1
+ # Image
2
+
3
+ Source: @flowstack-ui/atom@0.24.0
4
+ Kind: component
5
+ ID: image
6
+
7
+ # Image agent guide
8
+
9
+ ## Purpose
10
+
11
+ Coordinate image loading, fallback visibility, and accessible native image semantics.
12
+
13
+ ## Use when
14
+
15
+ - Media needs a fallback or loading-state composition that stays synchronized with the image.
16
+
17
+ ## Choose something else when
18
+
19
+ - A native image is sufficient or a framework optimizer owns a required measured capability. Use a native img or a documented framework adapter.
20
+
21
+ ## Required composition
22
+
23
+ - Compose Image.Content and Image.Fallback inside Image.Root; provide meaningful alt text or alt="" for decorative content.
24
+
25
+ ## Rules
26
+
27
+ - **MUST:** Give every Content a correct alt value based on the image's purpose.
28
+ - **MUST:** Do not let a visual fallback create a duplicate or misleading accessible name.
29
+
30
+ ## Common mistakes
31
+
32
+ - **Avoid:** Using CSS background images for meaningful content or omitting alt because a fallback exists. **Instead:** Use Content with intentional alt text and treat Fallback as loading or error presentation.
33
+
34
+ ## Validation checklist
35
+
36
+ - Verify loaded, loading, error, cached, and source-change states.
37
+ - Confirm the accessible name remains correct in every state.
38
+
39
+ ## Related guidance
40
+
41
+ - `avatar`
42
+ - `aspect-ratio`
43
+
44
+ ## Machine record
45
+
46
+ ```json
47
+ {
48
+ "schema": "flowstack.agent-component.v1",
49
+ "id": "image",
50
+ "name": "Image",
51
+ "package": "@flowstack-ui/atom",
52
+ "layer": "atom",
53
+ "kind": "component",
54
+ "purpose": "Coordinate image loading, fallback visibility, and accessible native image semantics.",
55
+ "useWhen": [
56
+ "Media needs a fallback or loading-state composition that stays synchronized with the image."
57
+ ],
58
+ "avoidWhen": [
59
+ {
60
+ "condition": "A native image is sufficient or a framework optimizer owns a required measured capability.",
61
+ "useInstead": "a native img or a documented framework adapter"
62
+ }
63
+ ],
64
+ "composition": [
65
+ "Compose Image.Content and Image.Fallback inside Image.Root; provide meaningful alt text or alt=\"\" for decorative content."
66
+ ],
67
+ "rules": [
68
+ {
69
+ "id": "image-alt",
70
+ "level": "must",
71
+ "statement": "Give every Content a correct alt value based on the image's purpose."
72
+ },
73
+ {
74
+ "id": "image-fallback-name",
75
+ "level": "must",
76
+ "statement": "Do not let a visual fallback create a duplicate or misleading accessible name."
77
+ }
78
+ ],
79
+ "commonMistakes": [
80
+ {
81
+ "mistake": "Using CSS background images for meaningful content or omitting alt because a fallback exists.",
82
+ "correction": "Use Content with intentional alt text and treat Fallback as loading or error presentation."
83
+ }
84
+ ],
85
+ "validation": [
86
+ "Verify loaded, loading, error, cached, and source-change states.",
87
+ "Confirm the accessible name remains correct in every state."
88
+ ],
89
+ "related": [
90
+ "avatar",
91
+ "aspect-ratio"
92
+ ]
93
+ }
94
+ ```
@@ -0,0 +1,96 @@
1
+ # Input
2
+
3
+ Source: @flowstack-ui/atom@0.24.0
4
+ Kind: component
5
+ ID: input
6
+
7
+ # Input agent guide
8
+
9
+ ## Purpose
10
+
11
+ Provide headless native single-line text entry that participates in Field relationships and controlled or uncontrolled value handling.
12
+
13
+ ## Use when
14
+
15
+ - The user enters one line of text, email, search, URL, telephone, or another supported native input value.
16
+
17
+ ## Choose something else when
18
+
19
+ - The value needs multiple lines. Use Textarea.
20
+
21
+ ## Required composition
22
+
23
+ - Place Input.Root inside one Field.Root with Field.Label; add a stable name when it participates in submission.
24
+
25
+ ## Rules
26
+
27
+ - **MUST:** Give every Input an accessible name, normally through Field.Label.
28
+ - **SHOULD:** Choose the narrowest correct native type and autocomplete value.
29
+
30
+ ## Common mistakes
31
+
32
+ - **Avoid:** Using placeholder text as the only label. **Instead:** Add a persistent Field.Label and keep placeholder text optional.
33
+
34
+ ## Validation checklist
35
+
36
+ - Inspect name, type, autocomplete, label, and description relationships.
37
+ - Test keyboard entry and browser autofill where relevant.
38
+
39
+ ## Related guidance
40
+
41
+ - `field`
42
+ - `form`
43
+ - `textarea`
44
+
45
+ ## Machine record
46
+
47
+ ```json
48
+ {
49
+ "schema": "flowstack.agent-component.v1",
50
+ "id": "input",
51
+ "name": "Input",
52
+ "package": "@flowstack-ui/atom",
53
+ "layer": "atom",
54
+ "kind": "component",
55
+ "purpose": "Provide headless native single-line text entry that participates in Field relationships and controlled or uncontrolled value handling.",
56
+ "useWhen": [
57
+ "The user enters one line of text, email, search, URL, telephone, or another supported native input value."
58
+ ],
59
+ "avoidWhen": [
60
+ {
61
+ "condition": "The value needs multiple lines.",
62
+ "useInstead": "Textarea"
63
+ }
64
+ ],
65
+ "composition": [
66
+ "Place Input.Root inside one Field.Root with Field.Label; add a stable name when it participates in submission."
67
+ ],
68
+ "rules": [
69
+ {
70
+ "id": "input-labeled",
71
+ "level": "must",
72
+ "statement": "Give every Input an accessible name, normally through Field.Label."
73
+ },
74
+ {
75
+ "id": "input-native-type",
76
+ "level": "should",
77
+ "statement": "Choose the narrowest correct native type and autocomplete value."
78
+ }
79
+ ],
80
+ "commonMistakes": [
81
+ {
82
+ "mistake": "Using placeholder text as the only label.",
83
+ "correction": "Add a persistent Field.Label and keep placeholder text optional."
84
+ }
85
+ ],
86
+ "validation": [
87
+ "Inspect name, type, autocomplete, label, and description relationships.",
88
+ "Test keyboard entry and browser autofill where relevant."
89
+ ],
90
+ "related": [
91
+ "field",
92
+ "form",
93
+ "textarea"
94
+ ]
95
+ }
96
+ ```