@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
+ # ScrollArea
2
+
3
+ Source: @flowstack-ui/atom@0.24.0
4
+ Kind: component
5
+ ID: scroll-area
6
+
7
+ # ScrollArea agent guide
8
+
9
+ ## Purpose
10
+
11
+ Provide an owned scroll viewport and synchronized scrollbar anatomy without replacing native document scrolling.
12
+
13
+ ## Use when
14
+
15
+ - A bounded region needs explicit scroll viewport and scrollbar behavior or stable compound scrollbar anatomy.
16
+
17
+ ## Choose something else when
18
+
19
+ - The page or ordinary content region can use native overflow and browser scrollbars. Use native document or overflow scrolling.
20
+
21
+ ## Required composition
22
+
23
+ - Compose Viewport and the required Scrollbar/Thumb parts inside Root, adding Corner when both axes are present.
24
+
25
+ ## Rules
26
+
27
+ - **MUST:** Preserve wheel, touch, keyboard, and assistive-technology scrolling without hijacking page input.
28
+ - **SHOULD:** Make the viewport focusable and named only when keyboard access to an otherwise unreachable scrolling region requires it.
29
+
30
+ ## Common mistakes
31
+
32
+ - **Avoid:** Wrapping every overflow region in ScrollArea or removing visible focus to hide a focusable viewport. **Instead:** Use native overflow by default and add ScrollArea only for its owned behavior.
33
+
34
+ ## Validation checklist
35
+
36
+ - Test mouse, trackpad, touch, keyboard, zoom, nested scrolling, both axes, and RTL.
37
+ - Confirm focusability and accessible naming are intentional.
38
+
39
+ ## Related guidance
40
+
41
+ - `table`
42
+ - `data-grid`
43
+ - `sidebar`
44
+
45
+ ## Machine record
46
+
47
+ ```json
48
+ {
49
+ "schema": "flowstack.agent-component.v1",
50
+ "id": "scroll-area",
51
+ "name": "ScrollArea",
52
+ "package": "@flowstack-ui/atom",
53
+ "layer": "atom",
54
+ "kind": "component",
55
+ "purpose": "Provide an owned scroll viewport and synchronized scrollbar anatomy without replacing native document scrolling.",
56
+ "useWhen": [
57
+ "A bounded region needs explicit scroll viewport and scrollbar behavior or stable compound scrollbar anatomy."
58
+ ],
59
+ "avoidWhen": [
60
+ {
61
+ "condition": "The page or ordinary content region can use native overflow and browser scrollbars.",
62
+ "useInstead": "native document or overflow scrolling"
63
+ }
64
+ ],
65
+ "composition": [
66
+ "Compose Viewport and the required Scrollbar/Thumb parts inside Root, adding Corner when both axes are present."
67
+ ],
68
+ "rules": [
69
+ {
70
+ "id": "scroll-area-native-input",
71
+ "level": "must",
72
+ "statement": "Preserve wheel, touch, keyboard, and assistive-technology scrolling without hijacking page input."
73
+ },
74
+ {
75
+ "id": "scroll-area-focus",
76
+ "level": "should",
77
+ "statement": "Make the viewport focusable and named only when keyboard access to an otherwise unreachable scrolling region requires it."
78
+ }
79
+ ],
80
+ "commonMistakes": [
81
+ {
82
+ "mistake": "Wrapping every overflow region in ScrollArea or removing visible focus to hide a focusable viewport.",
83
+ "correction": "Use native overflow by default and add ScrollArea only for its owned behavior."
84
+ }
85
+ ],
86
+ "validation": [
87
+ "Test mouse, trackpad, touch, keyboard, zoom, nested scrolling, both axes, and RTL.",
88
+ "Confirm focusability and accessible naming are intentional."
89
+ ],
90
+ "related": [
91
+ "table",
92
+ "data-grid",
93
+ "sidebar"
94
+ ]
95
+ }
96
+ ```
@@ -0,0 +1,126 @@
1
+ # Select
2
+
3
+ Source: @flowstack-ui/atom@0.24.0
4
+ Kind: component
5
+ ID: select
6
+
7
+ # Select agent guide
8
+
9
+ ## Purpose
10
+
11
+ Choose one value from a compact trigger-owned popup listbox with typeahead, active-descendant focus, positioning, dismissal, Field integration, and native select form behavior.
12
+
13
+ ## Use when
14
+
15
+ - A user chooses one value from a predefined list whose options should stay collapsed until the control opens.
16
+
17
+ ## Choose something else when
18
+
19
+ - A short list should remain visible, several values may be chosen, or users need editable filtering or free-form entry. Use RadioGroup or Listbox, MultiSelect, or Combobox.
20
+
21
+ ## Required composition
22
+
23
+ - Compose Root with an accessible Trigger containing optional Value and Icon, then one Content or Listbox popup. Add Portal only when needed; place Items with stable values and ItemText inside optional Viewport, Group with Label, separators, scroll buttons, indicators, and a direct popup Arrow as required.
24
+
25
+ ## Rules
26
+
27
+ - **MUST:** Give Trigger an accessible name through native ARIA or Field labeling and preserve its combobox, expanded, controls, active-descendant, required, read-only, invalid, and disabled relationships.
28
+ - **MUST:** Use Select only for one predefined value and route controlled value and open state through their matching callbacks.
29
+ - **MUST:** Give every Item a stable unique value and ItemText or label so Trigger Value display, option naming, typeahead, and the hidden native select work even before the popup mounts.
30
+ - **MUST:** Preserve Trigger-owned Arrow, Home/End, printable typeahead, Enter/Space selection, Tab, Escape stack, disabled skipping, highlight, focus restoration, and completed outside-interaction behavior.
31
+ - **MUST:** Preserve the hidden native select's name, form, options, selected value, disabled state, required validity, reset, and validation-focus redirection to Trigger.
32
+ - **MUST:** Use either Content or Listbox once, keep Arrow inside it, and keep scroll buttons outside the registered Viewport so Atom can own positioning and overflow state.
33
+
34
+ ## Common mistakes
35
+
36
+ - **Avoid:** Using Select for multiple or editable choice, omitting ItemText from complex options, rendering both Content and Listbox, or rebuilding keyboard and form behavior around a styled button. **Instead:** Choose the correct selection model and preserve Select's single popup, registered option text, Trigger ownership, and native form mirror.
37
+
38
+ ## Validation checklist
39
+
40
+ - Verify Trigger naming and Field relationships, controlled/uncontrolled value and open state, placeholder and closed selected label, pointer/touch opening, Arrow and printable-key opening, active descendant, Home/End, typeahead, selection, disabled items, Tab, Escape, outside activation, and focus return.
41
+ - Verify native select options and submission, required inline/native validity, external form association, disabled/read-only/invalid state, reset, groups and labels, Viewport and scroll buttons, portal and non-portal paths, Arrow placement, direction, collision handling, and nested-modal ownership.
42
+
43
+ ## Related guidance
44
+
45
+ - `listbox`
46
+ - `multi-select`
47
+ - `combobox`
48
+ - `radio-group`
49
+ - `field`
50
+ - `form`
51
+
52
+ ## Machine record
53
+
54
+ ```json
55
+ {
56
+ "schema": "flowstack.agent-component.v1",
57
+ "id": "select",
58
+ "name": "Select",
59
+ "package": "@flowstack-ui/atom",
60
+ "layer": "atom",
61
+ "kind": "component",
62
+ "purpose": "Choose one value from a compact trigger-owned popup listbox with typeahead, active-descendant focus, positioning, dismissal, Field integration, and native select form behavior.",
63
+ "useWhen": [
64
+ "A user chooses one value from a predefined list whose options should stay collapsed until the control opens."
65
+ ],
66
+ "avoidWhen": [
67
+ {
68
+ "condition": "A short list should remain visible, several values may be chosen, or users need editable filtering or free-form entry.",
69
+ "useInstead": "RadioGroup or Listbox, MultiSelect, or Combobox"
70
+ }
71
+ ],
72
+ "composition": [
73
+ "Compose Root with an accessible Trigger containing optional Value and Icon, then one Content or Listbox popup. Add Portal only when needed; place Items with stable values and ItemText inside optional Viewport, Group with Label, separators, scroll buttons, indicators, and a direct popup Arrow as required."
74
+ ],
75
+ "rules": [
76
+ {
77
+ "id": "select-trigger-name",
78
+ "level": "must",
79
+ "statement": "Give Trigger an accessible name through native ARIA or Field labeling and preserve its combobox, expanded, controls, active-descendant, required, read-only, invalid, and disabled relationships."
80
+ },
81
+ {
82
+ "id": "select-single-value",
83
+ "level": "must",
84
+ "statement": "Use Select only for one predefined value and route controlled value and open state through their matching callbacks."
85
+ },
86
+ {
87
+ "id": "select-item-text",
88
+ "level": "must",
89
+ "statement": "Give every Item a stable unique value and ItemText or label so Trigger Value display, option naming, typeahead, and the hidden native select work even before the popup mounts."
90
+ },
91
+ {
92
+ "id": "select-owned-keyboard",
93
+ "level": "must",
94
+ "statement": "Preserve Trigger-owned Arrow, Home/End, printable typeahead, Enter/Space selection, Tab, Escape stack, disabled skipping, highlight, focus restoration, and completed outside-interaction behavior."
95
+ },
96
+ {
97
+ "id": "select-form",
98
+ "level": "must",
99
+ "statement": "Preserve the hidden native select's name, form, options, selected value, disabled state, required validity, reset, and validation-focus redirection to Trigger."
100
+ },
101
+ {
102
+ "id": "select-popup-anatomy",
103
+ "level": "must",
104
+ "statement": "Use either Content or Listbox once, keep Arrow inside it, and keep scroll buttons outside the registered Viewport so Atom can own positioning and overflow state."
105
+ }
106
+ ],
107
+ "commonMistakes": [
108
+ {
109
+ "mistake": "Using Select for multiple or editable choice, omitting ItemText from complex options, rendering both Content and Listbox, or rebuilding keyboard and form behavior around a styled button.",
110
+ "correction": "Choose the correct selection model and preserve Select's single popup, registered option text, Trigger ownership, and native form mirror."
111
+ }
112
+ ],
113
+ "validation": [
114
+ "Verify Trigger naming and Field relationships, controlled/uncontrolled value and open state, placeholder and closed selected label, pointer/touch opening, Arrow and printable-key opening, active descendant, Home/End, typeahead, selection, disabled items, Tab, Escape, outside activation, and focus return.",
115
+ "Verify native select options and submission, required inline/native validity, external form association, disabled/read-only/invalid state, reset, groups and labels, Viewport and scroll buttons, portal and non-portal paths, Arrow placement, direction, collision handling, and nested-modal ownership."
116
+ ],
117
+ "related": [
118
+ "listbox",
119
+ "multi-select",
120
+ "combobox",
121
+ "radio-group",
122
+ "field",
123
+ "form"
124
+ ]
125
+ }
126
+ ```
@@ -0,0 +1,96 @@
1
+ # Sidebar
2
+
3
+ Source: @flowstack-ui/atom@0.24.0
4
+ Kind: component
5
+ ID: sidebar
6
+
7
+ # Sidebar agent guide
8
+
9
+ ## Purpose
10
+
11
+ Coordinate expanded, rail, and offcanvas sidebar state across a trigger, complementary panel, and associated main region.
12
+
13
+ ## Use when
14
+
15
+ - An application shell has a persistent side region that can collapse to a rail or leave the layout offcanvas.
16
+
17
+ ## Choose something else when
18
+
19
+ - The side panel is a temporary modal overlay or ordinary static aside. Use Drawer or a native aside.
20
+
21
+ ## Required composition
22
+
23
+ - Compose Trigger, Panel, and Main inside Root; place persistent navigation such as NavList inside Panel.
24
+
25
+ ## Rules
26
+
27
+ - **MUST:** Use Sidebar.Main only when it is the page's single main landmark, or custom-render it without creating duplicate main landmarks.
28
+ - **MUST:** Keep offcanvas Panel content inert and outside the accessibility tree through the primitive contract.
29
+
30
+ ## Common mistakes
31
+
32
+ - **Avoid:** Using Sidebar as a modal drawer or placing another main landmark inside Sidebar.Main. **Instead:** Use Drawer for modal panels and preserve one main landmark.
33
+
34
+ ## Validation checklist
35
+
36
+ - Test controlled and uncontrolled expanded, rail, and offcanvas states and trigger announcements.
37
+ - Confirm offcanvas controls cannot receive focus and landmark names are unique.
38
+
39
+ ## Related guidance
40
+
41
+ - `nav-list`
42
+ - `drawer`
43
+ - `app-bar`
44
+
45
+ ## Machine record
46
+
47
+ ```json
48
+ {
49
+ "schema": "flowstack.agent-component.v1",
50
+ "id": "sidebar",
51
+ "name": "Sidebar",
52
+ "package": "@flowstack-ui/atom",
53
+ "layer": "atom",
54
+ "kind": "component",
55
+ "purpose": "Coordinate expanded, rail, and offcanvas sidebar state across a trigger, complementary panel, and associated main region.",
56
+ "useWhen": [
57
+ "An application shell has a persistent side region that can collapse to a rail or leave the layout offcanvas."
58
+ ],
59
+ "avoidWhen": [
60
+ {
61
+ "condition": "The side panel is a temporary modal overlay or ordinary static aside.",
62
+ "useInstead": "Drawer or a native aside"
63
+ }
64
+ ],
65
+ "composition": [
66
+ "Compose Trigger, Panel, and Main inside Root; place persistent navigation such as NavList inside Panel."
67
+ ],
68
+ "rules": [
69
+ {
70
+ "id": "sidebar-one-main",
71
+ "level": "must",
72
+ "statement": "Use Sidebar.Main only when it is the page's single main landmark, or custom-render it without creating duplicate main landmarks."
73
+ },
74
+ {
75
+ "id": "sidebar-offcanvas-inert",
76
+ "level": "must",
77
+ "statement": "Keep offcanvas Panel content inert and outside the accessibility tree through the primitive contract."
78
+ }
79
+ ],
80
+ "commonMistakes": [
81
+ {
82
+ "mistake": "Using Sidebar as a modal drawer or placing another main landmark inside Sidebar.Main.",
83
+ "correction": "Use Drawer for modal panels and preserve one main landmark."
84
+ }
85
+ ],
86
+ "validation": [
87
+ "Test controlled and uncontrolled expanded, rail, and offcanvas states and trigger announcements.",
88
+ "Confirm offcanvas controls cannot receive focus and landmark names are unique."
89
+ ],
90
+ "related": [
91
+ "nav-list",
92
+ "drawer",
93
+ "app-bar"
94
+ ]
95
+ }
96
+ ```
@@ -0,0 +1,96 @@
1
+ # SkipLink
2
+
3
+ Source: @flowstack-ui/atom@0.24.0
4
+ Kind: component
5
+ ID: skip-link
6
+
7
+ # SkipLink agent guide
8
+
9
+ ## Purpose
10
+
11
+ Let keyboard and assistive-technology users bypass repeated page navigation and move focus to main content.
12
+
13
+ ## Use when
14
+
15
+ - A page repeats navigation or controls before its main content.
16
+
17
+ ## Choose something else when
18
+
19
+ - There is no repeated content before the primary content target. Use the normal document focus order.
20
+
21
+ ## Required composition
22
+
23
+ - Place Root near the beginning of the page and provide one matching Target id at main content.
24
+
25
+ ## Rules
26
+
27
+ - **MUST:** Keep Root href and Target id identical and unique.
28
+ - **MUST:** Make Root the first useful focus target when it bypasses repeated navigation.
29
+
30
+ ## Common mistakes
31
+
32
+ - **Avoid:** Linking to a missing id or adding a second main landmark around Target. **Instead:** Use one matching Target as the page's main landmark.
33
+
34
+ ## Validation checklist
35
+
36
+ - Tab from the browser chrome, activate Root, and confirm Target receives visible focus and scrolls into view.
37
+ - Confirm the document contains one main landmark.
38
+
39
+ ## Related guidance
40
+
41
+ - `app-bar`
42
+ - `sidebar`
43
+ - `link`
44
+
45
+ ## Machine record
46
+
47
+ ```json
48
+ {
49
+ "schema": "flowstack.agent-component.v1",
50
+ "id": "skip-link",
51
+ "name": "SkipLink",
52
+ "package": "@flowstack-ui/atom",
53
+ "layer": "atom",
54
+ "kind": "component",
55
+ "purpose": "Let keyboard and assistive-technology users bypass repeated page navigation and move focus to main content.",
56
+ "useWhen": [
57
+ "A page repeats navigation or controls before its main content."
58
+ ],
59
+ "avoidWhen": [
60
+ {
61
+ "condition": "There is no repeated content before the primary content target.",
62
+ "useInstead": "the normal document focus order"
63
+ }
64
+ ],
65
+ "composition": [
66
+ "Place Root near the beginning of the page and provide one matching Target id at main content."
67
+ ],
68
+ "rules": [
69
+ {
70
+ "id": "skip-link-match",
71
+ "level": "must",
72
+ "statement": "Keep Root href and Target id identical and unique."
73
+ },
74
+ {
75
+ "id": "skip-link-first",
76
+ "level": "must",
77
+ "statement": "Make Root the first useful focus target when it bypasses repeated navigation."
78
+ }
79
+ ],
80
+ "commonMistakes": [
81
+ {
82
+ "mistake": "Linking to a missing id or adding a second main landmark around Target.",
83
+ "correction": "Use one matching Target as the page's main landmark."
84
+ }
85
+ ],
86
+ "validation": [
87
+ "Tab from the browser chrome, activate Root, and confirm Target receives visible focus and scrolls into view.",
88
+ "Confirm the document contains one main landmark."
89
+ ],
90
+ "related": [
91
+ "app-bar",
92
+ "sidebar",
93
+ "link"
94
+ ]
95
+ }
96
+ ```
@@ -0,0 +1,124 @@
1
+ # Slider
2
+
3
+ Source: @flowstack-ui/atom@0.24.0
4
+ Kind: component
5
+ ID: slider
6
+
7
+ # Slider agent guide
8
+
9
+ ## Purpose
10
+
11
+ Adjust one numeric value or an ordered numeric range by pointer, touch, or keyboard with slider semantics, snapping, commit events, and optional form submission.
12
+
13
+ ## Use when
14
+
15
+ - A user adjusts a number or range by feel and continuous spatial manipulation is more useful than exact text entry.
16
+
17
+ ## Choose something else when
18
+
19
+ - An exact typed number matters, the value is read-only progress, or the ordered scale is specifically a small rating. Use NumberInput, Progress, or Rating.
20
+
21
+ ## Required composition
22
+
23
+ - Give Root an accessible name and compose Track with one Thumb for a scalar value or one indexed Thumb per range value; add Range only when the styled layer needs decorative selected geometry. Use ariaValueText for values whose meaning is not obvious from the number.
24
+
25
+ ## Rules
26
+
27
+ - **MUST:** Match Thumb count and indices to Root's scalar or array values; every Thumb is a focusable slider and Range remains decorative.
28
+ - **MUST:** Give every Thumb an accessible name through Root native ARIA or Field labeling and provide ariaValueText when numeric values need human meaning.
29
+ - **MUST:** Choose valid min, max, positive step, largeStep, and minStepsBetweenThumbs values and preserve each range Thumb's effective adjacent bounds.
30
+ - **MUST:** Use onValueChange for live updates and onValueCommit for completed interactions; true pointer cancellation restores the pointer-down value without commit while lost capture commits the latest value.
31
+ - **MUST:** Preserve one active pointer session, non-slider-axis page scrolling, orientation-aware keys, and horizontal LTR and RTL pointer and Arrow behavior.
32
+ - **MUST:** Preserve disabled, read-only, invalid, required, Field, form submission, and uncontrolled reset behavior across every Thumb.
33
+
34
+ ## Common mistakes
35
+
36
+ - **Avoid:** Using Slider when exact entry is required, rendering fewer Thumbs than range values, labeling only the decorative Track, or treating every live drag update as a committed value. **Instead:** Use NumberInput for exact entry, align values and Thumbs, label the slider controls through Root, and separate change from commit effects.
37
+
38
+ ## Validation checklist
39
+
40
+ - Verify scalar and range controlled/uncontrolled values, Thumb indices and names, min/max/step snapping, effective dependent bounds, minimum gaps, Arrow, PageUp/PageDown, Home/End, orientation, disabled/read-only state, and LTR/RTL.
41
+ - Verify track click, mouse, touch and pen dragging, nearest Thumb, one-pointer ownership, preserved cross-axis scrolling, true cancellation rollback without commit, lost-capture commit, onValueChange/onValueCommit timing, form values, Field relationships, and reset.
42
+
43
+ ## Related guidance
44
+
45
+ - `number-input`
46
+ - `progress`
47
+ - `rating`
48
+ - `field`
49
+ - `form`
50
+
51
+ ## Machine record
52
+
53
+ ```json
54
+ {
55
+ "schema": "flowstack.agent-component.v1",
56
+ "id": "slider",
57
+ "name": "Slider",
58
+ "package": "@flowstack-ui/atom",
59
+ "layer": "atom",
60
+ "kind": "component",
61
+ "purpose": "Adjust one numeric value or an ordered numeric range by pointer, touch, or keyboard with slider semantics, snapping, commit events, and optional form submission.",
62
+ "useWhen": [
63
+ "A user adjusts a number or range by feel and continuous spatial manipulation is more useful than exact text entry."
64
+ ],
65
+ "avoidWhen": [
66
+ {
67
+ "condition": "An exact typed number matters, the value is read-only progress, or the ordered scale is specifically a small rating.",
68
+ "useInstead": "NumberInput, Progress, or Rating"
69
+ }
70
+ ],
71
+ "composition": [
72
+ "Give Root an accessible name and compose Track with one Thumb for a scalar value or one indexed Thumb per range value; add Range only when the styled layer needs decorative selected geometry. Use ariaValueText for values whose meaning is not obvious from the number."
73
+ ],
74
+ "rules": [
75
+ {
76
+ "id": "slider-thumb-count",
77
+ "level": "must",
78
+ "statement": "Match Thumb count and indices to Root's scalar or array values; every Thumb is a focusable slider and Range remains decorative."
79
+ },
80
+ {
81
+ "id": "slider-name",
82
+ "level": "must",
83
+ "statement": "Give every Thumb an accessible name through Root native ARIA or Field labeling and provide ariaValueText when numeric values need human meaning."
84
+ },
85
+ {
86
+ "id": "slider-range",
87
+ "level": "must",
88
+ "statement": "Choose valid min, max, positive step, largeStep, and minStepsBetweenThumbs values and preserve each range Thumb's effective adjacent bounds."
89
+ },
90
+ {
91
+ "id": "slider-change-commit",
92
+ "level": "must",
93
+ "statement": "Use onValueChange for live updates and onValueCommit for completed interactions; true pointer cancellation restores the pointer-down value without commit while lost capture commits the latest value."
94
+ },
95
+ {
96
+ "id": "slider-input-direction",
97
+ "level": "must",
98
+ "statement": "Preserve one active pointer session, non-slider-axis page scrolling, orientation-aware keys, and horizontal LTR and RTL pointer and Arrow behavior."
99
+ },
100
+ {
101
+ "id": "slider-state-form",
102
+ "level": "must",
103
+ "statement": "Preserve disabled, read-only, invalid, required, Field, form submission, and uncontrolled reset behavior across every Thumb."
104
+ }
105
+ ],
106
+ "commonMistakes": [
107
+ {
108
+ "mistake": "Using Slider when exact entry is required, rendering fewer Thumbs than range values, labeling only the decorative Track, or treating every live drag update as a committed value.",
109
+ "correction": "Use NumberInput for exact entry, align values and Thumbs, label the slider controls through Root, and separate change from commit effects."
110
+ }
111
+ ],
112
+ "validation": [
113
+ "Verify scalar and range controlled/uncontrolled values, Thumb indices and names, min/max/step snapping, effective dependent bounds, minimum gaps, Arrow, PageUp/PageDown, Home/End, orientation, disabled/read-only state, and LTR/RTL.",
114
+ "Verify track click, mouse, touch and pen dragging, nearest Thumb, one-pointer ownership, preserved cross-axis scrolling, true cancellation rollback without commit, lost-capture commit, onValueChange/onValueCommit timing, form values, Field relationships, and reset."
115
+ ],
116
+ "related": [
117
+ "number-input",
118
+ "progress",
119
+ "rating",
120
+ "field",
121
+ "form"
122
+ ]
123
+ }
124
+ ```
@@ -0,0 +1,118 @@
1
+ # SwipeableItem
2
+
3
+ Source: @flowstack-ui/atom@0.24.0
4
+ Kind: component
5
+ ID: swipeable-item
6
+
7
+ # SwipeableItem agent guide
8
+
9
+ ## Purpose
10
+
11
+ Enhance a list-like row with direction-aware start or end action panels revealed by horizontal drag or equivalent keyboard commands while preserving vertical scrolling.
12
+
13
+ ## Use when
14
+
15
+ - A row has a few quick actions that benefit from touch swipe reveal and the same actions remain available through an obvious tap or click route and keyboard reveal.
16
+
17
+ ## Choose something else when
18
+
19
+ - There are many actions, discovery is critical, or swipe would be surprising or the only single-pointer path. Use Menu, visible actions, or another explicit application control.
20
+
21
+ ## Required composition
22
+
23
+ - Compose Root with one focusable Content surface and an Actions group for each supported logical start or end side. Put real accessible buttons or links inside Actions and provide an obvious non-swipe route to every important command.
24
+
25
+ ## Rules
26
+
27
+ - **MUST:** Treat swipe as enhancement only; keyboard reveal does not replace the required obvious tap or click alternative for important actions.
28
+ - **MUST:** Give every Actions panel an accessible group name and its child controls complete semantics; keep closed panels inert and accessibility-hidden.
29
+ - **MUST:** Preserve vertical pan, horizontal intent detection, pointer capture, cancellation rollback, measured side sizes, threshold settlement, and one owned pointer interaction rather than blocking page scrolling.
30
+ - **MUST:** Keep Content focusable and preserve direction-aware Arrow reveal, opposite-Arrow close, same-Arrow full swipe, and Escape close only when Content itself owns the key; descendant controls retain their keys.
31
+ - **MUST:** Enable onFullSwipe only for an action safe to invoke from a threshold gesture and retain an explicit equivalent control; choose thresholds deliberately.
32
+ - **MUST:** Use openSide with onOpenSideChange for controlled state or defaultOpenSide for uncontrolled state and preserve disabled versus focusable read-only behavior and logical LTR/RTL sides.
33
+
34
+ ## Common mistakes
35
+
36
+ - **Avoid:** Making swipe the only route to Delete, preventing vertical page scroll, firing a destructive full swipe too easily, or letting Arrow keys from nested controls reveal actions. **Instead:** Provide an explicit action route, retain pan-y behavior and intent thresholds, reserve full swipe for deliberate safe policy, and preserve keyboard target isolation.
37
+
38
+ ## Validation checklist
39
+
40
+ - Verify controlled/uncontrolled start/end/null state, LTR and RTL logical side mapping, measured widths and offsets, pointer down/move/up settlement, threshold boundaries, cancellation rollback, capture, vertical pan, disabled/read-only state, and action closeOnClick.
41
+ - Verify Content focus, Arrow reveal and close, same-Arrow full swipe, Escape, descendant keyboard isolation, hidden/inert closed panels, accessible action group and controls, obvious pointer fallback, full-swipe equivalent action, asChild/render composition, and real-browser mouse/touch scrolling behavior.
42
+
43
+ ## Related guidance
44
+
45
+ - `menu`
46
+ - `list`
47
+
48
+ ## Machine record
49
+
50
+ ```json
51
+ {
52
+ "schema": "flowstack.agent-component.v1",
53
+ "id": "swipeable-item",
54
+ "name": "SwipeableItem",
55
+ "package": "@flowstack-ui/atom",
56
+ "layer": "atom",
57
+ "kind": "component",
58
+ "purpose": "Enhance a list-like row with direction-aware start or end action panels revealed by horizontal drag or equivalent keyboard commands while preserving vertical scrolling.",
59
+ "useWhen": [
60
+ "A row has a few quick actions that benefit from touch swipe reveal and the same actions remain available through an obvious tap or click route and keyboard reveal."
61
+ ],
62
+ "avoidWhen": [
63
+ {
64
+ "condition": "There are many actions, discovery is critical, or swipe would be surprising or the only single-pointer path.",
65
+ "useInstead": "Menu, visible actions, or another explicit application control"
66
+ }
67
+ ],
68
+ "composition": [
69
+ "Compose Root with one focusable Content surface and an Actions group for each supported logical start or end side. Put real accessible buttons or links inside Actions and provide an obvious non-swipe route to every important command."
70
+ ],
71
+ "rules": [
72
+ {
73
+ "id": "swipeable-enhancement",
74
+ "level": "must",
75
+ "statement": "Treat swipe as enhancement only; keyboard reveal does not replace the required obvious tap or click alternative for important actions."
76
+ },
77
+ {
78
+ "id": "swipeable-actions",
79
+ "level": "must",
80
+ "statement": "Give every Actions panel an accessible group name and its child controls complete semantics; keep closed panels inert and accessibility-hidden."
81
+ },
82
+ {
83
+ "id": "swipeable-scroll-gesture",
84
+ "level": "must",
85
+ "statement": "Preserve vertical pan, horizontal intent detection, pointer capture, cancellation rollback, measured side sizes, threshold settlement, and one owned pointer interaction rather than blocking page scrolling."
86
+ },
87
+ {
88
+ "id": "swipeable-keyboard",
89
+ "level": "must",
90
+ "statement": "Keep Content focusable and preserve direction-aware Arrow reveal, opposite-Arrow close, same-Arrow full swipe, and Escape close only when Content itself owns the key; descendant controls retain their keys."
91
+ },
92
+ {
93
+ "id": "swipeable-full-swipe",
94
+ "level": "must",
95
+ "statement": "Enable onFullSwipe only for an action safe to invoke from a threshold gesture and retain an explicit equivalent control; choose thresholds deliberately."
96
+ },
97
+ {
98
+ "id": "swipeable-state",
99
+ "level": "must",
100
+ "statement": "Use openSide with onOpenSideChange for controlled state or defaultOpenSide for uncontrolled state and preserve disabled versus focusable read-only behavior and logical LTR/RTL sides."
101
+ }
102
+ ],
103
+ "commonMistakes": [
104
+ {
105
+ "mistake": "Making swipe the only route to Delete, preventing vertical page scroll, firing a destructive full swipe too easily, or letting Arrow keys from nested controls reveal actions.",
106
+ "correction": "Provide an explicit action route, retain pan-y behavior and intent thresholds, reserve full swipe for deliberate safe policy, and preserve keyboard target isolation."
107
+ }
108
+ ],
109
+ "validation": [
110
+ "Verify controlled/uncontrolled start/end/null state, LTR and RTL logical side mapping, measured widths and offsets, pointer down/move/up settlement, threshold boundaries, cancellation rollback, capture, vertical pan, disabled/read-only state, and action closeOnClick.",
111
+ "Verify Content focus, Arrow reveal and close, same-Arrow full swipe, Escape, descendant keyboard isolation, hidden/inert closed panels, accessible action group and controls, obvious pointer fallback, full-swipe equivalent action, asChild/render composition, and real-browser mouse/touch scrolling behavior."
112
+ ],
113
+ "related": [
114
+ "menu",
115
+ "list"
116
+ ]
117
+ }
118
+ ```