@flowstack-ui/brick 0.1.9 → 0.1.11

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 (540) hide show
  1. package/README.md +9 -6
  2. package/dist/agents/accordion.json +8 -2
  3. package/dist/agents/accordion.md +3 -1
  4. package/dist/agents/alert-dialog.json +111 -0
  5. package/dist/agents/alert-dialog.md +53 -0
  6. package/dist/agents/app-bar.json +5 -4
  7. package/dist/agents/app-bar.md +4 -3
  8. package/dist/agents/aspect-ratio.json +80 -0
  9. package/dist/agents/aspect-ratio.md +45 -0
  10. package/dist/agents/avatar.json +92 -0
  11. package/dist/agents/avatar.md +49 -0
  12. package/dist/agents/badge.json +26 -8
  13. package/dist/agents/badge.md +11 -6
  14. package/dist/agents/bleed.json +54 -0
  15. package/dist/agents/bleed.md +39 -0
  16. package/dist/agents/button.json +7 -2
  17. package/dist/agents/button.md +1 -1
  18. package/dist/agents/card.json +21 -1
  19. package/dist/agents/card.md +7 -1
  20. package/dist/agents/checkbox-group.json +108 -0
  21. package/dist/agents/checkbox-group.md +56 -0
  22. package/dist/agents/checkbox.json +6 -1
  23. package/dist/agents/chip.json +73 -0
  24. package/dist/agents/chip.md +44 -0
  25. package/dist/agents/code-block.json +76 -0
  26. package/dist/agents/code-block.md +47 -0
  27. package/dist/agents/code.json +67 -0
  28. package/dist/agents/code.md +42 -0
  29. package/dist/agents/collapsible.json +34 -3
  30. package/dist/agents/collapsible.md +10 -3
  31. package/dist/agents/color-picker.json +78 -0
  32. package/dist/agents/color-picker.md +46 -0
  33. package/dist/agents/color-swatch.json +51 -0
  34. package/dist/agents/color-swatch.md +36 -0
  35. package/dist/agents/combobox.json +95 -0
  36. package/dist/agents/combobox.md +51 -0
  37. package/dist/agents/context-menu.json +109 -0
  38. package/dist/agents/context-menu.md +54 -0
  39. package/dist/agents/coverage.json +24579 -0
  40. package/dist/agents/data-grid.json +127 -0
  41. package/dist/agents/data-grid.md +61 -0
  42. package/dist/agents/data-list.json +63 -0
  43. package/dist/agents/data-list.md +41 -0
  44. package/dist/agents/dialog.json +112 -0
  45. package/dist/agents/dialog.md +53 -0
  46. package/dist/agents/dropdown-menu.json +112 -0
  47. package/dist/agents/dropdown-menu.md +56 -0
  48. package/dist/agents/feed.json +84 -0
  49. package/dist/agents/feed.md +48 -0
  50. package/dist/agents/field.json +6 -1
  51. package/dist/agents/fieldset.json +6 -1
  52. package/dist/agents/file-upload.json +93 -0
  53. package/dist/agents/file-upload.md +50 -0
  54. package/dist/agents/form.json +11 -2
  55. package/dist/agents/form.md +2 -1
  56. package/dist/agents/grid.json +18 -1
  57. package/dist/agents/grid.md +6 -0
  58. package/dist/agents/group.json +77 -0
  59. package/dist/agents/group.md +48 -0
  60. package/dist/agents/hide.json +14 -0
  61. package/dist/agents/hide.md +3 -0
  62. package/dist/agents/hover-card.json +94 -0
  63. package/dist/agents/hover-card.md +51 -0
  64. package/dist/agents/icon-button.json +23 -12
  65. package/dist/agents/icon-button.md +12 -8
  66. package/dist/agents/image.json +33 -7
  67. package/dist/agents/image.md +11 -4
  68. package/dist/agents/input.json +7 -2
  69. package/dist/agents/input.md +1 -1
  70. package/dist/agents/interface-composition.json +216 -17
  71. package/dist/agents/interface-composition.md +7 -0
  72. package/dist/agents/layer-selection.json +1174 -11
  73. package/dist/agents/layer-selection.md +84 -1
  74. package/dist/agents/link-box.json +97 -0
  75. package/dist/agents/link-box.md +53 -0
  76. package/dist/agents/link.json +34 -5
  77. package/dist/agents/link.md +12 -2
  78. package/dist/agents/list.json +1 -1
  79. package/dist/agents/list.md +1 -1
  80. package/dist/agents/manifest.json +291 -2
  81. package/dist/agents/menubar.json +109 -0
  82. package/dist/agents/menubar.md +54 -0
  83. package/dist/agents/multi-select.json +93 -0
  84. package/dist/agents/multi-select.md +49 -0
  85. package/dist/agents/nav-list.json +15 -5
  86. package/dist/agents/nav-list.md +6 -4
  87. package/dist/agents/notification-badge.json +88 -0
  88. package/dist/agents/notification-badge.md +49 -0
  89. package/dist/agents/number-input.json +89 -0
  90. package/dist/agents/number-input.md +50 -0
  91. package/dist/agents/otp-field.json +87 -0
  92. package/dist/agents/otp-field.md +48 -0
  93. package/dist/agents/pagination.json +26 -5
  94. package/dist/agents/pagination.md +11 -4
  95. package/dist/agents/password-toggle-field.json +87 -0
  96. package/dist/agents/password-toggle-field.md +48 -0
  97. package/dist/agents/popover.json +114 -0
  98. package/dist/agents/popover.md +56 -0
  99. package/dist/agents/progress-circle.json +85 -0
  100. package/dist/agents/progress-circle.md +46 -0
  101. package/dist/agents/progress.json +91 -0
  102. package/dist/agents/progress.md +48 -0
  103. package/dist/agents/radio-group.json +92 -0
  104. package/dist/agents/radio-group.md +49 -0
  105. package/dist/agents/rating.json +91 -0
  106. package/dist/agents/rating.md +49 -0
  107. package/dist/agents/reorderable-list.json +74 -0
  108. package/dist/agents/reorderable-list.md +45 -0
  109. package/dist/agents/segment-group.json +62 -0
  110. package/dist/agents/segment-group.md +43 -0
  111. package/dist/agents/select.json +95 -0
  112. package/dist/agents/select.md +51 -0
  113. package/dist/agents/show.json +14 -0
  114. package/dist/agents/show.md +3 -0
  115. package/dist/agents/sidebar.json +16 -3
  116. package/dist/agents/sidebar.md +6 -1
  117. package/dist/agents/skeleton.json +73 -0
  118. package/dist/agents/skeleton.md +43 -0
  119. package/dist/agents/slider.json +88 -0
  120. package/dist/agents/slider.md +48 -0
  121. package/dist/agents/stack.json +19 -1
  122. package/dist/agents/stack.md +7 -0
  123. package/dist/agents/status.json +59 -0
  124. package/dist/agents/status.md +40 -0
  125. package/dist/agents/surface.json +32 -3
  126. package/dist/agents/surface.md +9 -2
  127. package/dist/agents/swipeable-item.json +93 -0
  128. package/dist/agents/swipeable-item.md +50 -0
  129. package/dist/agents/switch.json +92 -0
  130. package/dist/agents/switch.md +49 -0
  131. package/dist/agents/table.json +113 -0
  132. package/dist/agents/table.md +59 -0
  133. package/dist/agents/tabs.json +9 -2
  134. package/dist/agents/tabs.md +4 -1
  135. package/dist/agents/text.json +23 -8
  136. package/dist/agents/text.md +10 -7
  137. package/dist/agents/textarea.json +6 -1
  138. package/dist/agents/toast.json +91 -0
  139. package/dist/agents/toast.md +48 -0
  140. package/dist/agents/toggle-group.json +89 -0
  141. package/dist/agents/toggle-group.md +49 -0
  142. package/dist/agents/toggle.json +82 -0
  143. package/dist/agents/toggle.md +47 -0
  144. package/dist/agents/toolbar.json +11 -1
  145. package/dist/agents/toolbar.md +3 -1
  146. package/dist/agents/tooltip.json +96 -0
  147. package/dist/agents/tooltip.md +49 -0
  148. package/dist/agents/tree-grid.json +98 -0
  149. package/dist/agents/tree-grid.md +51 -0
  150. package/dist/agents/tree.json +94 -0
  151. package/dist/agents/tree.md +51 -0
  152. package/dist/agents/visually-hidden.json +70 -0
  153. package/dist/agents/visually-hidden.md +42 -0
  154. package/dist/agents/z-stack.json +21 -1
  155. package/dist/agents/z-stack.md +5 -0
  156. package/dist/bleed.d.ts +2 -0
  157. package/dist/bleed.d.ts.map +1 -0
  158. package/dist/bleed.js +2 -0
  159. package/dist/bleed.js.map +1 -0
  160. package/dist/color-picker.d.ts +2 -0
  161. package/dist/color-picker.d.ts.map +1 -0
  162. package/dist/color-picker.js +2 -0
  163. package/dist/color-picker.js.map +1 -0
  164. package/dist/color-swatch.d.ts +2 -0
  165. package/dist/color-swatch.d.ts.map +1 -0
  166. package/dist/color-swatch.js +2 -0
  167. package/dist/color-swatch.js.map +1 -0
  168. package/dist/components/_responsive-value/ResponsiveValue.d.ts.map +1 -1
  169. package/dist/components/_responsive-value/ResponsiveValue.js +3 -1
  170. package/dist/components/_responsive-value/ResponsiveValue.js.map +1 -1
  171. package/dist/components/_spacing-value/SpacingValue.d.ts +8 -0
  172. package/dist/components/_spacing-value/SpacingValue.d.ts.map +1 -0
  173. package/dist/components/_spacing-value/SpacingValue.js +46 -0
  174. package/dist/components/_spacing-value/SpacingValue.js.map +1 -0
  175. package/dist/components/accordion/Accordion.js +1 -1
  176. package/dist/components/app-bar/AppBar.d.ts +7 -3
  177. package/dist/components/app-bar/AppBar.d.ts.map +1 -1
  178. package/dist/components/app-bar/AppBar.js +2 -2
  179. package/dist/components/app-bar/AppBar.js.map +1 -1
  180. package/dist/components/app-bar/index.d.ts +1 -1
  181. package/dist/components/app-bar/index.d.ts.map +1 -1
  182. package/dist/components/app-bar/index.js.map +1 -1
  183. package/dist/components/avatar/Avatar.d.ts +1 -1
  184. package/dist/components/avatar/Avatar.d.ts.map +1 -1
  185. package/dist/components/avatar/Avatar.js.map +1 -1
  186. package/dist/components/badge/Badge.d.ts +2 -2
  187. package/dist/components/badge/Badge.d.ts.map +1 -1
  188. package/dist/components/bleed/Bleed.d.ts +28 -0
  189. package/dist/components/bleed/Bleed.d.ts.map +1 -0
  190. package/dist/components/bleed/Bleed.js +92 -0
  191. package/dist/components/bleed/Bleed.js.map +1 -0
  192. package/dist/components/bleed/index.d.ts +2 -0
  193. package/dist/components/bleed/index.d.ts.map +1 -0
  194. package/dist/components/bleed/index.js +2 -0
  195. package/dist/components/bleed/index.js.map +1 -0
  196. package/dist/components/collapsible/Collapsible.d.ts +9 -3
  197. package/dist/components/collapsible/Collapsible.d.ts.map +1 -1
  198. package/dist/components/collapsible/Collapsible.js +3 -3
  199. package/dist/components/collapsible/Collapsible.js.map +1 -1
  200. package/dist/components/color-picker/ColorPicker.d.ts +42 -0
  201. package/dist/components/color-picker/ColorPicker.d.ts.map +1 -0
  202. package/dist/components/color-picker/ColorPicker.js +52 -0
  203. package/dist/components/color-picker/ColorPicker.js.map +1 -0
  204. package/dist/components/color-picker/index.d.ts +2 -0
  205. package/dist/components/color-picker/index.d.ts.map +1 -0
  206. package/dist/components/color-picker/index.js +2 -0
  207. package/dist/components/color-picker/index.js.map +1 -0
  208. package/dist/components/color-swatch/ColorSwatch.d.ts +21 -0
  209. package/dist/components/color-swatch/ColorSwatch.d.ts.map +1 -0
  210. package/dist/components/color-swatch/ColorSwatch.js +25 -0
  211. package/dist/components/color-swatch/ColorSwatch.js.map +1 -0
  212. package/dist/components/color-swatch/index.d.ts +2 -0
  213. package/dist/components/color-swatch/index.d.ts.map +1 -0
  214. package/dist/components/color-swatch/index.js +2 -0
  215. package/dist/components/color-swatch/index.js.map +1 -0
  216. package/dist/components/data-list/DataList.d.ts +48 -0
  217. package/dist/components/data-list/DataList.d.ts.map +1 -0
  218. package/dist/components/data-list/DataList.js +31 -0
  219. package/dist/components/data-list/DataList.js.map +1 -0
  220. package/dist/components/data-list/index.d.ts +2 -0
  221. package/dist/components/data-list/index.d.ts.map +1 -0
  222. package/dist/components/data-list/index.js +2 -0
  223. package/dist/components/data-list/index.js.map +1 -0
  224. package/dist/components/feed/Feed.d.ts +2 -0
  225. package/dist/components/feed/Feed.d.ts.map +1 -1
  226. package/dist/components/feed/Feed.js +2 -2
  227. package/dist/components/feed/Feed.js.map +1 -1
  228. package/dist/components/feed/index.d.ts +1 -1
  229. package/dist/components/feed/index.d.ts.map +1 -1
  230. package/dist/components/grid/Grid.d.ts +3 -1
  231. package/dist/components/grid/Grid.d.ts.map +1 -1
  232. package/dist/components/grid/Grid.js +11 -1
  233. package/dist/components/grid/Grid.js.map +1 -1
  234. package/dist/components/grid/index.d.ts +1 -1
  235. package/dist/components/grid/index.d.ts.map +1 -1
  236. package/dist/components/grid/index.js.map +1 -1
  237. package/dist/components/group/Group.d.ts +19 -0
  238. package/dist/components/group/Group.d.ts.map +1 -0
  239. package/dist/components/group/Group.js +23 -0
  240. package/dist/components/group/Group.js.map +1 -0
  241. package/dist/components/group/index.d.ts +2 -0
  242. package/dist/components/group/index.d.ts.map +1 -0
  243. package/dist/components/group/index.js +2 -0
  244. package/dist/components/group/index.js.map +1 -0
  245. package/dist/components/link/Link.d.ts +1 -1
  246. package/dist/components/link/Link.d.ts.map +1 -1
  247. package/dist/components/link/Link.js +1 -1
  248. package/dist/components/link/Link.js.map +1 -1
  249. package/dist/components/link-box/LinkBox.d.ts +22 -0
  250. package/dist/components/link-box/LinkBox.d.ts.map +1 -0
  251. package/dist/components/link-box/LinkBox.js +30 -0
  252. package/dist/components/link-box/LinkBox.js.map +1 -0
  253. package/dist/components/link-box/index.d.ts +2 -0
  254. package/dist/components/link-box/index.d.ts.map +1 -0
  255. package/dist/components/link-box/index.js +2 -0
  256. package/dist/components/link-box/index.js.map +1 -0
  257. package/dist/components/nav-list/NavList.d.ts +15 -2
  258. package/dist/components/nav-list/NavList.d.ts.map +1 -1
  259. package/dist/components/nav-list/NavList.js +4 -3
  260. package/dist/components/nav-list/NavList.js.map +1 -1
  261. package/dist/components/pagination/Pagination.d.ts +9 -6
  262. package/dist/components/pagination/Pagination.d.ts.map +1 -1
  263. package/dist/components/pagination/Pagination.js +2 -2
  264. package/dist/components/pagination/Pagination.js.map +1 -1
  265. package/dist/components/pagination/index.d.ts +1 -1
  266. package/dist/components/pagination/index.d.ts.map +1 -1
  267. package/dist/components/pagination/index.js.map +1 -1
  268. package/dist/components/popover/Popover.d.ts +3 -0
  269. package/dist/components/popover/Popover.d.ts.map +1 -1
  270. package/dist/components/popover/Popover.js +2 -2
  271. package/dist/components/popover/Popover.js.map +1 -1
  272. package/dist/components/popover/index.d.ts +1 -1
  273. package/dist/components/popover/index.d.ts.map +1 -1
  274. package/dist/components/popover/index.js.map +1 -1
  275. package/dist/components/rating/Rating.d.ts +37 -1
  276. package/dist/components/rating/Rating.d.ts.map +1 -1
  277. package/dist/components/rating/Rating.js +25 -2
  278. package/dist/components/rating/Rating.js.map +1 -1
  279. package/dist/components/rating/index.d.ts +1 -1
  280. package/dist/components/rating/index.d.ts.map +1 -1
  281. package/dist/components/rating/index.js +1 -1
  282. package/dist/components/rating/index.js.map +1 -1
  283. package/dist/components/reorderable-list/ReorderableList.d.ts +89 -0
  284. package/dist/components/reorderable-list/ReorderableList.d.ts.map +1 -0
  285. package/dist/components/reorderable-list/ReorderableList.js +54 -0
  286. package/dist/components/reorderable-list/ReorderableList.js.map +1 -0
  287. package/dist/components/reorderable-list/index.d.ts +2 -0
  288. package/dist/components/reorderable-list/index.d.ts.map +1 -0
  289. package/dist/components/reorderable-list/index.js +2 -0
  290. package/dist/components/reorderable-list/index.js.map +1 -0
  291. package/dist/components/segment-group/SegmentGroup.d.ts +30 -0
  292. package/dist/components/segment-group/SegmentGroup.d.ts.map +1 -0
  293. package/dist/components/segment-group/SegmentGroup.js +67 -0
  294. package/dist/components/segment-group/SegmentGroup.js.map +1 -0
  295. package/dist/components/segment-group/index.d.ts +2 -0
  296. package/dist/components/segment-group/index.d.ts.map +1 -0
  297. package/dist/components/segment-group/index.js +2 -0
  298. package/dist/components/segment-group/index.js.map +1 -0
  299. package/dist/components/show/Show.d.ts.map +1 -1
  300. package/dist/components/show/Show.js +7 -1
  301. package/dist/components/show/Show.js.map +1 -1
  302. package/dist/components/sidebar/Sidebar.d.ts +4 -0
  303. package/dist/components/sidebar/Sidebar.d.ts.map +1 -1
  304. package/dist/components/sidebar/Sidebar.js +3 -2
  305. package/dist/components/sidebar/Sidebar.js.map +1 -1
  306. package/dist/components/slider/Slider.d.ts.map +1 -1
  307. package/dist/components/slider/Slider.js +3 -1
  308. package/dist/components/slider/Slider.js.map +1 -1
  309. package/dist/components/stack/Stack.d.ts +3 -1
  310. package/dist/components/stack/Stack.d.ts.map +1 -1
  311. package/dist/components/stack/Stack.js +9 -1
  312. package/dist/components/stack/Stack.js.map +1 -1
  313. package/dist/components/stack/index.d.ts +1 -1
  314. package/dist/components/stack/index.d.ts.map +1 -1
  315. package/dist/components/stack/index.js.map +1 -1
  316. package/dist/components/status/Status.d.ts +22 -0
  317. package/dist/components/status/Status.d.ts.map +1 -0
  318. package/dist/components/status/Status.js +23 -0
  319. package/dist/components/status/Status.js.map +1 -0
  320. package/dist/components/status/index.d.ts +2 -0
  321. package/dist/components/status/index.d.ts.map +1 -0
  322. package/dist/components/status/index.js +2 -0
  323. package/dist/components/status/index.js.map +1 -0
  324. package/dist/components/surface/Surface.d.ts +5 -2
  325. package/dist/components/surface/Surface.d.ts.map +1 -1
  326. package/dist/components/surface/Surface.js +4 -2
  327. package/dist/components/surface/Surface.js.map +1 -1
  328. package/dist/components/surface/index.d.ts +1 -1
  329. package/dist/components/surface/index.d.ts.map +1 -1
  330. package/dist/components/surface/index.js.map +1 -1
  331. package/dist/components/text/Text.d.ts +25 -4
  332. package/dist/components/text/Text.d.ts.map +1 -1
  333. package/dist/components/text/Text.js +22 -3
  334. package/dist/components/text/Text.js.map +1 -1
  335. package/dist/components/text/index.d.ts +1 -1
  336. package/dist/components/text/index.d.ts.map +1 -1
  337. package/dist/components/text/index.js +1 -1
  338. package/dist/components/text/index.js.map +1 -1
  339. package/dist/components/toggle/Toggle.d.ts +5 -0
  340. package/dist/components/toggle/Toggle.d.ts.map +1 -1
  341. package/dist/components/toggle/Toggle.js +2 -2
  342. package/dist/components/toggle/Toggle.js.map +1 -1
  343. package/dist/components/toggle/index.d.ts +1 -1
  344. package/dist/components/toggle/index.d.ts.map +1 -1
  345. package/dist/components/toggle/index.js.map +1 -1
  346. package/dist/components/toggle-group/ToggleGroup.d.ts +3 -1
  347. package/dist/components/toggle-group/ToggleGroup.d.ts.map +1 -1
  348. package/dist/components/toggle-group/ToggleGroup.js +2 -1
  349. package/dist/components/toggle-group/ToggleGroup.js.map +1 -1
  350. package/dist/components/toolbar/Toolbar.d.ts +9 -2
  351. package/dist/components/toolbar/Toolbar.d.ts.map +1 -1
  352. package/dist/components/toolbar/Toolbar.js +2 -2
  353. package/dist/components/toolbar/Toolbar.js.map +1 -1
  354. package/dist/components/toolbar/index.d.ts +1 -1
  355. package/dist/components/toolbar/index.d.ts.map +1 -1
  356. package/dist/components/z-stack/ZStack.d.ts +7 -0
  357. package/dist/components/z-stack/ZStack.d.ts.map +1 -1
  358. package/dist/components/z-stack/ZStack.js +14 -3
  359. package/dist/components/z-stack/ZStack.js.map +1 -1
  360. package/dist/components/z-stack/index.d.ts +1 -1
  361. package/dist/components/z-stack/index.d.ts.map +1 -1
  362. package/dist/components/z-stack/index.js.map +1 -1
  363. package/dist/data-list.d.ts +2 -0
  364. package/dist/data-list.d.ts.map +1 -0
  365. package/dist/data-list.js +2 -0
  366. package/dist/data-list.js.map +1 -0
  367. package/dist/feed.d.ts +1 -1
  368. package/dist/feed.d.ts.map +1 -1
  369. package/dist/grid.d.ts +1 -1
  370. package/dist/grid.d.ts.map +1 -1
  371. package/dist/grid.js.map +1 -1
  372. package/dist/group.d.ts +2 -0
  373. package/dist/group.d.ts.map +1 -0
  374. package/dist/group.js +2 -0
  375. package/dist/group.js.map +1 -0
  376. package/dist/index.d.ts +18 -8
  377. package/dist/index.d.ts.map +1 -1
  378. package/dist/index.js +10 -1
  379. package/dist/index.js.map +1 -1
  380. package/dist/link-box.d.ts +2 -0
  381. package/dist/link-box.d.ts.map +1 -0
  382. package/dist/link-box.js +2 -0
  383. package/dist/link-box.js.map +1 -0
  384. package/dist/reorderable-list.d.ts +2 -0
  385. package/dist/reorderable-list.d.ts.map +1 -0
  386. package/dist/reorderable-list.js +2 -0
  387. package/dist/reorderable-list.js.map +1 -0
  388. package/dist/reset.css +1 -1
  389. package/dist/reset.css.map +1 -1
  390. package/dist/segment-group.d.ts +2 -0
  391. package/dist/segment-group.d.ts.map +1 -0
  392. package/dist/segment-group.js +2 -0
  393. package/dist/segment-group.js.map +1 -0
  394. package/dist/stack.d.ts +1 -1
  395. package/dist/stack.d.ts.map +1 -1
  396. package/dist/stack.js.map +1 -1
  397. package/dist/status.d.ts +2 -0
  398. package/dist/status.d.ts.map +1 -0
  399. package/dist/status.js +2 -0
  400. package/dist/status.js.map +1 -0
  401. package/dist/styles/accordion.css +1 -1
  402. package/dist/styles/accordion.css.map +1 -1
  403. package/dist/styles/alert-dialog.css +1 -1
  404. package/dist/styles/alert-dialog.css.map +1 -1
  405. package/dist/styles/app-bar.css +1 -1
  406. package/dist/styles/app-bar.css.map +1 -1
  407. package/dist/styles/avatar.css +1 -1
  408. package/dist/styles/avatar.css.map +1 -1
  409. package/dist/styles/badge.css +1 -1
  410. package/dist/styles/badge.css.map +1 -1
  411. package/dist/styles/bleed.css +2 -0
  412. package/dist/styles/bleed.css.map +1 -0
  413. package/dist/styles/bottom-navigation.css +1 -1
  414. package/dist/styles/bottom-navigation.css.map +1 -1
  415. package/dist/styles/button.css +1 -1
  416. package/dist/styles/button.css.map +1 -1
  417. package/dist/styles/card.css +1 -1
  418. package/dist/styles/card.css.map +1 -1
  419. package/dist/styles/checkbox-group.css +1 -1
  420. package/dist/styles/checkbox-group.css.map +1 -1
  421. package/dist/styles/checkbox.css +1 -1
  422. package/dist/styles/checkbox.css.map +1 -1
  423. package/dist/styles/code-block.css +1 -1
  424. package/dist/styles/code-block.css.map +1 -1
  425. package/dist/styles/collapsible.css +1 -1
  426. package/dist/styles/collapsible.css.map +1 -1
  427. package/dist/styles/color-picker.css +2 -0
  428. package/dist/styles/color-picker.css.map +1 -0
  429. package/dist/styles/color-swatch.css +2 -0
  430. package/dist/styles/color-swatch.css.map +1 -0
  431. package/dist/styles/combobox.css +1 -1
  432. package/dist/styles/combobox.css.map +1 -1
  433. package/dist/styles/context-menu.css +1 -1
  434. package/dist/styles/context-menu.css.map +1 -1
  435. package/dist/styles/core.css +1 -1
  436. package/dist/styles/core.css.map +1 -1
  437. package/dist/styles/data-grid.css +1 -1
  438. package/dist/styles/data-grid.css.map +1 -1
  439. package/dist/styles/data-list.css +2 -0
  440. package/dist/styles/data-list.css.map +1 -0
  441. package/dist/styles/dialog.css +1 -1
  442. package/dist/styles/dialog.css.map +1 -1
  443. package/dist/styles/divider.css +1 -1
  444. package/dist/styles/divider.css.map +1 -1
  445. package/dist/styles/drawer.css +1 -1
  446. package/dist/styles/drawer.css.map +1 -1
  447. package/dist/styles/dropdown-menu.css +1 -1
  448. package/dist/styles/dropdown-menu.css.map +1 -1
  449. package/dist/styles/feed.css +1 -1
  450. package/dist/styles/feed.css.map +1 -1
  451. package/dist/styles/grid.css +1 -1
  452. package/dist/styles/grid.css.map +1 -1
  453. package/dist/styles/group.css +2 -0
  454. package/dist/styles/group.css.map +1 -0
  455. package/dist/styles/hide.css +1 -1
  456. package/dist/styles/hide.css.map +1 -1
  457. package/dist/styles/icon-button.css +1 -1
  458. package/dist/styles/icon-button.css.map +1 -1
  459. package/dist/styles/input.css +1 -1
  460. package/dist/styles/input.css.map +1 -1
  461. package/dist/styles/link-box.css +2 -0
  462. package/dist/styles/link-box.css.map +1 -0
  463. package/dist/styles/link.css +1 -1
  464. package/dist/styles/link.css.map +1 -1
  465. package/dist/styles/list.css +1 -1
  466. package/dist/styles/list.css.map +1 -1
  467. package/dist/styles/menubar.css +1 -1
  468. package/dist/styles/menubar.css.map +1 -1
  469. package/dist/styles/multi-select.css +1 -1
  470. package/dist/styles/multi-select.css.map +1 -1
  471. package/dist/styles/nav-list.css +1 -1
  472. package/dist/styles/nav-list.css.map +1 -1
  473. package/dist/styles/navigation-menu.css +1 -1
  474. package/dist/styles/navigation-menu.css.map +1 -1
  475. package/dist/styles/pagination.css +1 -1
  476. package/dist/styles/pagination.css.map +1 -1
  477. package/dist/styles/password-toggle-field.css +1 -1
  478. package/dist/styles/password-toggle-field.css.map +1 -1
  479. package/dist/styles/popover.css +1 -1
  480. package/dist/styles/popover.css.map +1 -1
  481. package/dist/styles/rating.css +1 -1
  482. package/dist/styles/rating.css.map +1 -1
  483. package/dist/styles/reorderable-list.css +2 -0
  484. package/dist/styles/reorderable-list.css.map +1 -0
  485. package/dist/styles/segment-group.css +2 -0
  486. package/dist/styles/segment-group.css.map +1 -0
  487. package/dist/styles/select.css +1 -1
  488. package/dist/styles/select.css.map +1 -1
  489. package/dist/styles/show.css +1 -1
  490. package/dist/styles/show.css.map +1 -1
  491. package/dist/styles/sidebar.css +1 -1
  492. package/dist/styles/sidebar.css.map +1 -1
  493. package/dist/styles/skeleton.css +1 -1
  494. package/dist/styles/skeleton.css.map +1 -1
  495. package/dist/styles/slider.css +1 -1
  496. package/dist/styles/slider.css.map +1 -1
  497. package/dist/styles/stack.css +1 -1
  498. package/dist/styles/stack.css.map +1 -1
  499. package/dist/styles/status.css +2 -0
  500. package/dist/styles/status.css.map +1 -0
  501. package/dist/styles/surface.css +1 -1
  502. package/dist/styles/surface.css.map +1 -1
  503. package/dist/styles/table.css +1 -1
  504. package/dist/styles/table.css.map +1 -1
  505. package/dist/styles/tabs.css +1 -1
  506. package/dist/styles/tabs.css.map +1 -1
  507. package/dist/styles/text.css +1 -1
  508. package/dist/styles/text.css.map +1 -1
  509. package/dist/styles/toggle-group.css +1 -1
  510. package/dist/styles/toggle-group.css.map +1 -1
  511. package/dist/styles/toggle.css +1 -1
  512. package/dist/styles/toggle.css.map +1 -1
  513. package/dist/styles/toolbar.css +1 -1
  514. package/dist/styles/toolbar.css.map +1 -1
  515. package/dist/styles/z-stack.css +1 -1
  516. package/dist/styles/z-stack.css.map +1 -1
  517. package/dist/styles.css +1 -1
  518. package/dist/styles.css.map +1 -1
  519. package/dist/surface.d.ts +1 -1
  520. package/dist/surface.d.ts.map +1 -1
  521. package/dist/surface.js.map +1 -1
  522. package/dist/text.d.ts +1 -1
  523. package/dist/text.d.ts.map +1 -1
  524. package/dist/text.js +1 -1
  525. package/dist/text.js.map +1 -1
  526. package/dist/theme-contract.json +5288 -2105
  527. package/dist/toggle.d.ts +1 -1
  528. package/dist/toggle.d.ts.map +1 -1
  529. package/dist/toggle.js.map +1 -1
  530. package/dist/tokens.css +1 -1
  531. package/dist/tokens.css.map +1 -1
  532. package/dist/toolbar.d.ts +1 -1
  533. package/dist/toolbar.d.ts.map +1 -1
  534. package/docs/guides/agent-knowledge.md +19 -0
  535. package/docs/guides/appearance-and-tokens.md +5 -0
  536. package/docs/guides/browser-support.md +21 -0
  537. package/docs/guides/control-sizing.md +55 -0
  538. package/docs/guides/installation.md +5 -2
  539. package/docs/guides/theme-contract.md +26 -12
  540. package/package.json +45 -6
@@ -0,0 +1,59 @@
1
+ {
2
+ "schema": "flowstack.agent-component.v1",
3
+ "id": "status",
4
+ "name": "Status",
5
+ "package": "@flowstack-ui/brick",
6
+ "layer": "brick",
7
+ "kind": "component",
8
+ "purpose": "Present a compact passive state with a semantic indicator and readable label, or a decorative indicator beside text that already carries the state.",
9
+ "useWhen": [
10
+ "A process, entity, availability, health, or review state needs a dot-plus-label presentation."
11
+ ],
12
+ "avoidWhen": [
13
+ {
14
+ "condition": "The content is a category, accolade, count, progress value, consequential message, or avatar-only presence ring.",
15
+ "useInstead": "Badge, NotificationBadge, Progress, Alert, or Avatar status"
16
+ }
17
+ ],
18
+ "composition": [
19
+ "Compose Root with one decorative Indicator and one visible Label by default. Omit Label only when adjacent visible or visually hidden text already carries the complete state and the indicator-only Root is aria-hidden."
20
+ ],
21
+ "rules": [
22
+ {
23
+ "id": "status-visible-label",
24
+ "level": "must",
25
+ "statement": "Always provide state text. Render it through Label by default; indicator-only composition is allowed only when adjacent visible or visually hidden text already carries the complete meaning and the Root is decorative."
26
+ },
27
+ {
28
+ "id": "status-semantic-tone",
29
+ "level": "must",
30
+ "statement": "Choose success, warning, danger, info, accent, or neutral from the state meaning, not from decorative preference."
31
+ },
32
+ {
33
+ "id": "status-live-region",
34
+ "level": "must",
35
+ "statement": "Do not assume Status announces changes; author role=status or live-region attributes only when the application owns and validates that announcement policy."
36
+ },
37
+ {
38
+ "id": "status-css",
39
+ "level": "must",
40
+ "statement": "Load styles.css or core.css plus status.css."
41
+ }
42
+ ],
43
+ "commonMistakes": [
44
+ {
45
+ "mistake": "Using success for a Call button, warning for a gold accolade, or Badge merely to draw a status dot.",
46
+ "correction": "Use action hierarchy for operations, accent/neutral Badge for accolades, and Status for actual dot-plus-label state."
47
+ }
48
+ ],
49
+ "validation": [
50
+ "Check visible state text, semantic tone, decorative indicator, primary label color, light/dark, forced colors, zoom, RTL, and deliberate live-region ownership."
51
+ ],
52
+ "related": [
53
+ "badge",
54
+ "notification-badge",
55
+ "avatar",
56
+ "progress",
57
+ "toast"
58
+ ]
59
+ }
@@ -0,0 +1,40 @@
1
+ # Status agent guide
2
+
3
+ ## Purpose
4
+
5
+ Present a compact passive state with a semantic indicator and readable label, or a decorative indicator beside text that already carries the state.
6
+
7
+ ## Use when
8
+
9
+ - A process, entity, availability, health, or review state needs a dot-plus-label presentation.
10
+
11
+ ## Choose something else when
12
+
13
+ - The content is a category, accolade, count, progress value, consequential message, or avatar-only presence ring. Use Badge, NotificationBadge, Progress, Alert, or Avatar status.
14
+
15
+ ## Required composition
16
+
17
+ - Compose Root with one decorative Indicator and one visible Label by default. Omit Label only when adjacent visible or visually hidden text already carries the complete state and the indicator-only Root is aria-hidden.
18
+
19
+ ## Rules
20
+
21
+ - **MUST:** Always provide state text. Render it through Label by default; indicator-only composition is allowed only when adjacent visible or visually hidden text already carries the complete meaning and the Root is decorative.
22
+ - **MUST:** Choose success, warning, danger, info, accent, or neutral from the state meaning, not from decorative preference.
23
+ - **MUST:** Do not assume Status announces changes; author role=status or live-region attributes only when the application owns and validates that announcement policy.
24
+ - **MUST:** Load styles.css or core.css plus status.css.
25
+
26
+ ## Common mistakes
27
+
28
+ - **Avoid:** Using success for a Call button, warning for a gold accolade, or Badge merely to draw a status dot. **Instead:** Use action hierarchy for operations, accent/neutral Badge for accolades, and Status for actual dot-plus-label state.
29
+
30
+ ## Validation checklist
31
+
32
+ - Check visible state text, semantic tone, decorative indicator, primary label color, light/dark, forced colors, zoom, RTL, and deliberate live-region ownership.
33
+
34
+ ## Related guidance
35
+
36
+ - `badge`
37
+ - `notification-badge`
38
+ - `avatar`
39
+ - `progress`
40
+ - `toast`
@@ -5,7 +5,7 @@
5
5
  "package": "@flowstack-ui/brick",
6
6
  "layer": "brick",
7
7
  "kind": "component",
8
- "purpose": "Apply semantic background layers, boundaries, elevation, radius, inset, and optional decorative media layering without implying a specific content object.",
8
+ "purpose": "Apply semantic background tones and layers, boundaries, elevation, radius, inset, and optional decorative media layering without implying a specific content object.",
9
9
  "useWhen": [
10
10
  "A region needs a semantic visual plane but Card, Dialog, or another purposeful component would add the wrong anatomy.",
11
11
  "Decorative image, video, canvas, or authored artwork needs to sit behind foreground content with an optional contrast scrim."
@@ -17,7 +17,7 @@
17
17
  }
18
18
  ],
19
19
  "composition": [
20
- "Choose Surface level and boundary by hierarchy, then compose public layout and content components inside. Use asChild around Section when paint must cover the Section rhythm without another host. For background media, author Media, optional Scrim, and Content in that order. When layered foreground content needs four-sided breathing room, set inset on the Surface root; Content owns foreground layering, not padding."
20
+ "Choose Surface level and boundary by hierarchy, then compose public layout and content components inside. Use asChild around Section when paint must cover the Section rhythm without another host. For background media, author Media, optional Scrim, and Content in that order. When layered foreground content needs four-sided breathing room, set inset on the Surface root; Content owns foreground layering, not padding. Use xl and 2xl for page-sized panels or heroes, and the responsive value shape when that inset should grow with the viewport."
21
21
  ],
22
22
  "rules": [
23
23
  {
@@ -25,6 +25,11 @@
25
25
  "level": "should",
26
26
  "statement": "Choose surface level by information hierarchy, not decoration alone."
27
27
  },
28
+ {
29
+ "id": "surface-accent-tone",
30
+ "level": "should",
31
+ "statement": "Use accent tone only for a branded or conversion plane, never as a generic status surface."
32
+ },
28
33
  {
29
34
  "id": "surface-as-child",
30
35
  "level": "must",
@@ -40,6 +45,21 @@
40
45
  "level": "must",
41
46
  "statement": "Use the Surface inset recipe for four-sided internal spacing; Surface.Content provides z-order only, and Stack startSpacing/endSpacing remain axis-specific."
42
47
  },
48
+ {
49
+ "id": "surface-inset-scale",
50
+ "level": "should",
51
+ "statement": "Use sm through lg for local panels and reserve xl or 2xl for page-sized panels, heroes, and split layouts."
52
+ },
53
+ {
54
+ "id": "surface-responsive-inset",
55
+ "level": "must",
56
+ "statement": "Write responsive inset mobile first with a required initial value and only the breakpoint overrides that change; omit a scalar inset none because none is already the default."
57
+ },
58
+ {
59
+ "id": "surface-inset-measure",
60
+ "level": "must",
61
+ "statement": "Change a centered child's Frame or Container measure when the visible issue is line length or available width; Surface inset moves every child edge and does not replace content measure."
62
+ },
43
63
  {
44
64
  "id": "surface-media-decoration",
45
65
  "level": "must",
@@ -78,13 +98,22 @@
78
98
  {
79
99
  "mistake": "Expecting Surface.Content or Stack edge spacing to create padding on every foreground edge.",
80
100
  "correction": "Set inset on the Surface root, then use Stack only for child arrangement and primary-axis spacing."
101
+ },
102
+ {
103
+ "mistake": "Repeating page-panel padding in Block CSS.",
104
+ "correction": "Use a larger or responsive Surface inset; use the public padding token only for one deliberate asymmetric relationship that the closed recipe cannot express."
105
+ },
106
+ {
107
+ "mistake": "Increasing inset to make a narrow centered child look wider.",
108
+ "correction": "Adjust the child's Frame or Container measure independently."
81
109
  }
82
110
  ],
83
111
  "validation": [
84
112
  "Check foreground contrast against the selected surface in every appearance.",
85
113
  "Confirm nested surfaces communicate hierarchy without excessive borders or elevation.",
86
114
  "Confirm Media and Scrim fill the root, remain hidden from assistive technology and pointer input, and Content stays above both.",
87
- "Check that layered foreground content has intentional spacing on all four logical edges at narrow and wide sizes."
115
+ "Check that layered foreground content has intentional spacing on all four logical edges at narrow and wide sizes.",
116
+ "Check that responsive inset changes at the intended shared breakpoint while media and scrim remain edge-to-edge."
88
117
  ],
89
118
  "related": [
90
119
  "card",
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Purpose
4
4
 
5
- Apply semantic background layers, boundaries, elevation, radius, inset, and optional decorative media layering without implying a specific content object.
5
+ Apply semantic background tones and layers, boundaries, elevation, radius, inset, and optional decorative media layering without implying a specific content object.
6
6
 
7
7
  ## Use when
8
8
 
@@ -15,14 +15,18 @@ Apply semantic background layers, boundaries, elevation, radius, inset, and opti
15
15
 
16
16
  ## Required composition
17
17
 
18
- - Choose Surface level and boundary by hierarchy, then compose public layout and content components inside. Use asChild around Section when paint must cover the Section rhythm without another host. For background media, author Media, optional Scrim, and Content in that order. When layered foreground content needs four-sided breathing room, set inset on the Surface root; Content owns foreground layering, not padding.
18
+ - Choose Surface level and boundary by hierarchy, then compose public layout and content components inside. Use asChild around Section when paint must cover the Section rhythm without another host. For background media, author Media, optional Scrim, and Content in that order. When layered foreground content needs four-sided breathing room, set inset on the Surface root; Content owns foreground layering, not padding. Use xl and 2xl for page-sized panels or heroes, and the responsive value shape when that inset should grow with the viewport.
19
19
 
20
20
  ## Rules
21
21
 
22
22
  - **SHOULD:** Choose surface level by information hierarchy, not decoration alone.
23
+ - **SHOULD:** Use accent tone only for a branded or conversion plane, never as a generic status surface.
23
24
  - **MUST:** Use asChild only with one existing non-Fragment host that already owns the required semantics or layout; preserve that child's meaning and keep Surface responsible only for paint.
24
25
  - **MUST:** Load styles.css or core.css plus surface.css.
25
26
  - **MUST:** Use the Surface inset recipe for four-sided internal spacing; Surface.Content provides z-order only, and Stack startSpacing/endSpacing remain axis-specific.
27
+ - **SHOULD:** Use sm through lg for local panels and reserve xl or 2xl for page-sized panels, heroes, and split layouts.
28
+ - **MUST:** Write responsive inset mobile first with a required initial value and only the breakpoint overrides that change; omit a scalar inset none because none is already the default.
29
+ - **MUST:** Change a centered child's Frame or Container measure when the visible issue is line length or available width; Surface inset moves every child edge and does not replace content measure.
26
30
  - **MUST:** Treat Surface.Media as decorative and noninteractive; keep meaningful media and controls in Content or ordinary document flow.
27
31
  - **MUST:** Give Brick Image explicit fill inside Surface.Media so its actual Content and Fallback consume the complete media layer.
28
32
  - **MUST:** Put every foreground child inside Surface.Content when Media or Scrim is used.
@@ -34,6 +38,8 @@ Apply semantic background layers, boundaries, elevation, radius, inset, and opti
34
38
  - **Avoid:** Using arbitrary background colors to recreate a surface. **Instead:** Use Surface and theme its semantic tokens.
35
39
  - **Avoid:** Adding absolute-positioning and z-index CSS for ordinary background media. **Instead:** Use Surface.Media, Surface.Scrim, and Surface.Content.
36
40
  - **Avoid:** Expecting Surface.Content or Stack edge spacing to create padding on every foreground edge. **Instead:** Set inset on the Surface root, then use Stack only for child arrangement and primary-axis spacing.
41
+ - **Avoid:** Repeating page-panel padding in Block CSS. **Instead:** Use a larger or responsive Surface inset; use the public padding token only for one deliberate asymmetric relationship that the closed recipe cannot express.
42
+ - **Avoid:** Increasing inset to make a narrow centered child look wider. **Instead:** Adjust the child's Frame or Container measure independently.
37
43
 
38
44
  ## Validation checklist
39
45
 
@@ -41,6 +47,7 @@ Apply semantic background layers, boundaries, elevation, radius, inset, and opti
41
47
  - Confirm nested surfaces communicate hierarchy without excessive borders or elevation.
42
48
  - Confirm Media and Scrim fill the root, remain hidden from assistive technology and pointer input, and Content stays above both.
43
49
  - Check that layered foreground content has intentional spacing on all four logical edges at narrow and wide sizes.
50
+ - Check that responsive inset changes at the intended shared breakpoint while media and scrim remain edge-to-edge.
44
51
 
45
52
  ## Related guidance
46
53
 
@@ -0,0 +1,93 @@
1
+ {
2
+ "schema": "flowstack.agent-component.v1",
3
+ "id": "swipeable-item",
4
+ "name": "SwipeableItem",
5
+ "package": "@flowstack-ui/brick",
6
+ "layer": "brick",
7
+ "kind": "component",
8
+ "purpose": "Enhance a finished list-like row with logical start or end quick-action panels revealed by horizontal drag or keyboard while Atom owns state, measurement, gesture intent, scrolling preservation, and keyboard behavior.",
9
+ "useWhen": [
10
+ "A row has one or two frequent commands that benefit from touch reveal and every important command also remains available through an obvious tap or click route."
11
+ ],
12
+ "avoidWhen": [
13
+ {
14
+ "condition": "There are many commands, discovery is critical, the row navigates or selects, or swipe would be surprising or the only pointer path.",
15
+ "useInstead": "DropdownMenu, visible Button or IconButton controls, Link, or the appropriate selection component"
16
+ }
17
+ ],
18
+ "composition": [
19
+ "Compose Root with one focusable Content surface and a labelled Actions group for each supported logical start or end side. Put real named Button or Link controls inside Actions and keep an obvious non-swipe route, normally a visible overflow trigger, inside Content.",
20
+ "Choose plain inside an existing row boundary or outline for a standalone boundary. Preserve surrounding List or Feed semantics and keep confirmation, undo, persistence, and coordination between rows in the application."
21
+ ],
22
+ "rules": [
23
+ {
24
+ "id": "swipeable-enhancement",
25
+ "level": "must",
26
+ "statement": "Treat swipe and keyboard reveal as enhancements; neither replaces the required obvious tap or click route to every important action."
27
+ },
28
+ {
29
+ "id": "swipeable-actions",
30
+ "level": "must",
31
+ "statement": "Give every Actions panel a localized accessible group name and every child complete native semantics; keep closed panels inert and accessibility-hidden."
32
+ },
33
+ {
34
+ "id": "swipeable-scroll-gesture",
35
+ "level": "must",
36
+ "statement": "Preserve pan-y vertical scrolling, horizontal intent detection, pointer capture, cancellation rollback, measured logical-side widths, threshold settlement, and one owned pointer interaction."
37
+ },
38
+ {
39
+ "id": "swipeable-keyboard",
40
+ "level": "must",
41
+ "statement": "Keep Content focusable and preserve direction-aware Arrow reveal, opposite-Arrow close, and Escape close only when Content owns the key; nested controls retain their own keyboard behavior."
42
+ },
43
+ {
44
+ "id": "swipeable-no-full-swipe",
45
+ "level": "must",
46
+ "statement": "Do not implement gesture execution around Brick SwipeableItem: Brick intentionally omits Atom's onFullSwipe and fullSwipeThreshold props so destructive or consequential commands require an explicit control."
47
+ },
48
+ {
49
+ "id": "swipeable-state",
50
+ "level": "must",
51
+ "statement": "Use openSide with onOpenSideChange or defaultOpenSide, preserve disabled versus focusable read-only behavior, and treat start and end as logical sides that follow LTR and RTL."
52
+ },
53
+ {
54
+ "id": "swipeable-responsive",
55
+ "level": "must",
56
+ "statement": "Keep authored Content wrapping, visible alternatives reachable, actions measured, and the shared clipped radius intact at narrow widths, zoom, RTL, forced colors, and reduced motion."
57
+ },
58
+ {
59
+ "id": "swipeable-css",
60
+ "level": "must",
61
+ "statement": "Load styles.css or core.css plus swipeable-item.css and the CSS for every composed action or row component."
62
+ }
63
+ ],
64
+ "commonMistakes": [
65
+ {
66
+ "mistake": "Making swipe the only route to Delete, blocking vertical scroll, firing a destructive threshold gesture, or letting Arrow keys from nested controls reveal actions.",
67
+ "correction": "Provide an obvious explicit control, preserve pan-y and gesture intent, use Brick's no-full-swipe API, and retain keyboard target isolation."
68
+ },
69
+ {
70
+ "mistake": "Using SwipeableItem as List, Feed, navigation, selection, confirmation, or multi-row coordination ownership.",
71
+ "correction": "Keep semantic row ownership and application effects outside the three-part enhancement boundary."
72
+ }
73
+ ],
74
+ "validation": [
75
+ "Verify controlled/uncontrolled start/end/null state, LTR and RTL mapping, measured widths and offsets, pointer down/move/up settlement, threshold boundaries, cancellation, capture, vertical pan, disabled/read-only state, and action closeOnClick.",
76
+ "Verify Content focus, Arrow reveal/close, Escape, descendant keyboard isolation, inert hidden panels, group and control names, obvious pointer fallback, absence of full-swipe execution, native props, refs, and real-browser mouse/touch scrolling.",
77
+ "Verify plain and outline boundaries, long content, narrow widths, zoom, RTL, shared radii, focus, light/dark appearance, forced colors, reduced motion, and surrounding List or Feed semantics."
78
+ ],
79
+ "related": [
80
+ {
81
+ "kind": "package",
82
+ "package": "@flowstack-ui/atom",
83
+ "id": "swipeable-item",
84
+ "versionPolicy": "installed-exact"
85
+ },
86
+ "dropdown-menu",
87
+ "button",
88
+ "icon-button",
89
+ "link",
90
+ "list",
91
+ "feed"
92
+ ]
93
+ }
@@ -0,0 +1,50 @@
1
+ # SwipeableItem agent guide
2
+
3
+ ## Purpose
4
+
5
+ Enhance a finished list-like row with logical start or end quick-action panels revealed by horizontal drag or keyboard while Atom owns state, measurement, gesture intent, scrolling preservation, and keyboard behavior.
6
+
7
+ ## Use when
8
+
9
+ - A row has one or two frequent commands that benefit from touch reveal and every important command also remains available through an obvious tap or click route.
10
+
11
+ ## Choose something else when
12
+
13
+ - There are many commands, discovery is critical, the row navigates or selects, or swipe would be surprising or the only pointer path. Use DropdownMenu, visible Button or IconButton controls, Link, or the appropriate selection component.
14
+
15
+ ## Required composition
16
+
17
+ - Compose Root with one focusable Content surface and a labelled Actions group for each supported logical start or end side. Put real named Button or Link controls inside Actions and keep an obvious non-swipe route, normally a visible overflow trigger, inside Content.
18
+ - Choose plain inside an existing row boundary or outline for a standalone boundary. Preserve surrounding List or Feed semantics and keep confirmation, undo, persistence, and coordination between rows in the application.
19
+
20
+ ## Rules
21
+
22
+ - **MUST:** Treat swipe and keyboard reveal as enhancements; neither replaces the required obvious tap or click route to every important action.
23
+ - **MUST:** Give every Actions panel a localized accessible group name and every child complete native semantics; keep closed panels inert and accessibility-hidden.
24
+ - **MUST:** Preserve pan-y vertical scrolling, horizontal intent detection, pointer capture, cancellation rollback, measured logical-side widths, threshold settlement, and one owned pointer interaction.
25
+ - **MUST:** Keep Content focusable and preserve direction-aware Arrow reveal, opposite-Arrow close, and Escape close only when Content owns the key; nested controls retain their own keyboard behavior.
26
+ - **MUST:** Do not implement gesture execution around Brick SwipeableItem: Brick intentionally omits Atom's onFullSwipe and fullSwipeThreshold props so destructive or consequential commands require an explicit control.
27
+ - **MUST:** Use openSide with onOpenSideChange or defaultOpenSide, preserve disabled versus focusable read-only behavior, and treat start and end as logical sides that follow LTR and RTL.
28
+ - **MUST:** Keep authored Content wrapping, visible alternatives reachable, actions measured, and the shared clipped radius intact at narrow widths, zoom, RTL, forced colors, and reduced motion.
29
+ - **MUST:** Load styles.css or core.css plus swipeable-item.css and the CSS for every composed action or row component.
30
+
31
+ ## Common mistakes
32
+
33
+ - **Avoid:** Making swipe the only route to Delete, blocking vertical scroll, firing a destructive threshold gesture, or letting Arrow keys from nested controls reveal actions. **Instead:** Provide an obvious explicit control, preserve pan-y and gesture intent, use Brick's no-full-swipe API, and retain keyboard target isolation.
34
+ - **Avoid:** Using SwipeableItem as List, Feed, navigation, selection, confirmation, or multi-row coordination ownership. **Instead:** Keep semantic row ownership and application effects outside the three-part enhancement boundary.
35
+
36
+ ## Validation checklist
37
+
38
+ - Verify controlled/uncontrolled start/end/null state, LTR and RTL mapping, measured widths and offsets, pointer down/move/up settlement, threshold boundaries, cancellation, capture, vertical pan, disabled/read-only state, and action closeOnClick.
39
+ - Verify Content focus, Arrow reveal/close, Escape, descendant keyboard isolation, inert hidden panels, group and control names, obvious pointer fallback, absence of full-swipe execution, native props, refs, and real-browser mouse/touch scrolling.
40
+ - Verify plain and outline boundaries, long content, narrow widths, zoom, RTL, shared radii, focus, light/dark appearance, forced colors, reduced motion, and surrounding List or Feed semantics.
41
+
42
+ ## Related guidance
43
+
44
+ - `@flowstack-ui/atom/agents/swipeable-item`
45
+ - `dropdown-menu`
46
+ - `button`
47
+ - `icon-button`
48
+ - `link`
49
+ - `list`
50
+ - `feed`
@@ -0,0 +1,92 @@
1
+ {
2
+ "schema": "flowstack.agent-component.v1",
3
+ "id": "switch",
4
+ "name": "Switch",
5
+ "package": "@flowstack-ui/brick",
6
+ "layer": "brick",
7
+ "kind": "component",
8
+ "purpose": "Present a finished immediately applied on/off setting while Atom owns switch semantics, controlled or uncontrolled state, keyboard activation, validation, and optional form participation.",
9
+ "useWhen": [
10
+ "A setting becomes active or inactive immediately when the user operates it."
11
+ ],
12
+ "avoidWhen": [
13
+ {
14
+ "condition": "The choice is a form answer applied later, a command whose pressed state remains active, or one of several exclusive values.",
15
+ "useInstead": "Checkbox, Toggle, or RadioGroup"
16
+ }
17
+ ],
18
+ "composition": [
19
+ "Give Switch.Root a stable visible or native accessible setting name and add Switch.Thumb as its decorative movable part. Compose Root in Field when visible Label, Description, Error, required, or invalid context is needed; use name, value, and form when checked state must submit.",
20
+ "Choose Root size sm, md, or lg for the finished track, thumb, travel, and target geometry. Keep Thumb decorative and let Atom state attributes drive Brick paint."
21
+ ],
22
+ "rules": [
23
+ {
24
+ "id": "switch-immediate",
25
+ "level": "must",
26
+ "statement": "Use Switch only for an immediately applied on/off setting; use Checkbox for a deferred form answer and Toggle for a persistent pressed command."
27
+ },
28
+ {
29
+ "id": "switch-name",
30
+ "level": "must",
31
+ "statement": "Give Root a complete stable accessible setting name with visible Field Label, native labeling, aria-label, or aria-labelledby; Thumb remains decorative and aria-hidden."
32
+ },
33
+ {
34
+ "id": "switch-state",
35
+ "level": "must",
36
+ "statement": "Use checked with onCheckedChange for controlled state or defaultChecked for uncontrolled state and preserve role=switch with boolean aria-checked."
37
+ },
38
+ {
39
+ "id": "switch-readonly",
40
+ "level": "must",
41
+ "statement": "Use readOnly when the setting must stay focusable while Enter, Space, pointer, and custom-element activation cannot change state; do not replace it with disabled."
42
+ },
43
+ {
44
+ "id": "switch-form",
45
+ "level": "must",
46
+ "statement": "Preserve named checked-value submission, required validity, Field state and descriptions, validation focus, external form association, and uncontrolled reset when form behavior applies."
47
+ },
48
+ {
49
+ "id": "switch-state-paint",
50
+ "level": "must",
51
+ "statement": "Use Brick's canonical checked, unchecked, focus, disabled, read-only, and invalid paint; invalid changes the boundary without replacing the checked meaning, and mixed or loading state is unsupported."
52
+ },
53
+ {
54
+ "id": "switch-responsive",
55
+ "level": "should",
56
+ "statement": "Keep intrinsic geometry and complete target size, allow surrounding label text to reflow, and verify logical thumb travel in RTL without reversing on/off meaning."
57
+ },
58
+ {
59
+ "id": "switch-css",
60
+ "level": "must",
61
+ "statement": "Load styles.css or core.css plus switch.css and Field CSS when composed."
62
+ }
63
+ ],
64
+ "commonMistakes": [
65
+ {
66
+ "mistake": "Using Switch for a submit-later checkbox or pressed command, relying on Thumb as the accessible control, or changing the setting label between states.",
67
+ "correction": "Choose by timing and semantics, name Root directly, keep Thumb decorative, and preserve one stable setting name."
68
+ },
69
+ {
70
+ "mistake": "Using disabled when the value should remain discoverable and read-only or inventing mixed, loading, tone, or shape props.",
71
+ "correction": "Use readOnly for locked focusable state and stay within the canonical binary visual recipe."
72
+ }
73
+ ],
74
+ "validation": [
75
+ "Verify accessible name, role and aria-checked, controlled and uncontrolled updates, pointer, Enter, and Space activation, disabled and read-only behavior, Thumb state inheritance, and native, asChild, and render semantics.",
76
+ "Verify named checked-value submission, required validity with and without name, invalid and Field descriptions, validation focus, external form association, and uncontrolled reset.",
77
+ "Verify three sizes, checked and unchecked contrast, focus, disabled, read-only and invalid paint, intrinsic and narrow layout, mobile targets, 200% text and 400% zoom, RTL travel, reduced motion, forced colors, and complete CSS."
78
+ ],
79
+ "related": [
80
+ {
81
+ "kind": "package",
82
+ "package": "@flowstack-ui/atom",
83
+ "id": "switch",
84
+ "versionPolicy": "installed-exact"
85
+ },
86
+ "checkbox",
87
+ "toggle",
88
+ "radio-group",
89
+ "field",
90
+ "form"
91
+ ]
92
+ }
@@ -0,0 +1,49 @@
1
+ # Switch agent guide
2
+
3
+ ## Purpose
4
+
5
+ Present a finished immediately applied on/off setting while Atom owns switch semantics, controlled or uncontrolled state, keyboard activation, validation, and optional form participation.
6
+
7
+ ## Use when
8
+
9
+ - A setting becomes active or inactive immediately when the user operates it.
10
+
11
+ ## Choose something else when
12
+
13
+ - The choice is a form answer applied later, a command whose pressed state remains active, or one of several exclusive values. Use Checkbox, Toggle, or RadioGroup.
14
+
15
+ ## Required composition
16
+
17
+ - Give Switch.Root a stable visible or native accessible setting name and add Switch.Thumb as its decorative movable part. Compose Root in Field when visible Label, Description, Error, required, or invalid context is needed; use name, value, and form when checked state must submit.
18
+ - Choose Root size sm, md, or lg for the finished track, thumb, travel, and target geometry. Keep Thumb decorative and let Atom state attributes drive Brick paint.
19
+
20
+ ## Rules
21
+
22
+ - **MUST:** Use Switch only for an immediately applied on/off setting; use Checkbox for a deferred form answer and Toggle for a persistent pressed command.
23
+ - **MUST:** Give Root a complete stable accessible setting name with visible Field Label, native labeling, aria-label, or aria-labelledby; Thumb remains decorative and aria-hidden.
24
+ - **MUST:** Use checked with onCheckedChange for controlled state or defaultChecked for uncontrolled state and preserve role=switch with boolean aria-checked.
25
+ - **MUST:** Use readOnly when the setting must stay focusable while Enter, Space, pointer, and custom-element activation cannot change state; do not replace it with disabled.
26
+ - **MUST:** Preserve named checked-value submission, required validity, Field state and descriptions, validation focus, external form association, and uncontrolled reset when form behavior applies.
27
+ - **MUST:** Use Brick's canonical checked, unchecked, focus, disabled, read-only, and invalid paint; invalid changes the boundary without replacing the checked meaning, and mixed or loading state is unsupported.
28
+ - **SHOULD:** Keep intrinsic geometry and complete target size, allow surrounding label text to reflow, and verify logical thumb travel in RTL without reversing on/off meaning.
29
+ - **MUST:** Load styles.css or core.css plus switch.css and Field CSS when composed.
30
+
31
+ ## Common mistakes
32
+
33
+ - **Avoid:** Using Switch for a submit-later checkbox or pressed command, relying on Thumb as the accessible control, or changing the setting label between states. **Instead:** Choose by timing and semantics, name Root directly, keep Thumb decorative, and preserve one stable setting name.
34
+ - **Avoid:** Using disabled when the value should remain discoverable and read-only or inventing mixed, loading, tone, or shape props. **Instead:** Use readOnly for locked focusable state and stay within the canonical binary visual recipe.
35
+
36
+ ## Validation checklist
37
+
38
+ - Verify accessible name, role and aria-checked, controlled and uncontrolled updates, pointer, Enter, and Space activation, disabled and read-only behavior, Thumb state inheritance, and native, asChild, and render semantics.
39
+ - Verify named checked-value submission, required validity with and without name, invalid and Field descriptions, validation focus, external form association, and uncontrolled reset.
40
+ - Verify three sizes, checked and unchecked contrast, focus, disabled, read-only and invalid paint, intrinsic and narrow layout, mobile targets, 200% text and 400% zoom, RTL travel, reduced motion, forced colors, and complete CSS.
41
+
42
+ ## Related guidance
43
+
44
+ - `@flowstack-ui/atom/agents/switch`
45
+ - `checkbox`
46
+ - `toggle`
47
+ - `radio-group`
48
+ - `field`
49
+ - `form`
@@ -0,0 +1,113 @@
1
+ {
2
+ "schema": "flowstack.agent-component.v1",
3
+ "id": "table",
4
+ "name": "Table",
5
+ "package": "@flowstack-ui/brick",
6
+ "layer": "brick",
7
+ "kind": "component",
8
+ "purpose": "Present finished static row-and-column relationships with native table semantics while Atom owns the semantic parts and sort metadata.",
9
+ "useWhen": [
10
+ "People need to compare values across meaningful columns in pricing, reports, invoices, inventories, audit results, or compact summaries."
11
+ ],
12
+ "avoidWhen": [
13
+ {
14
+ "condition": "The region needs arrow-key cell navigation, row selection, editing, resizing, or another interactive composite model.",
15
+ "useInstead": "Data Grid or an application-owned data tool"
16
+ },
17
+ {
18
+ "condition": "The content is a sequence without meaningful column relationships or a label/value definition structure.",
19
+ "useInstead": "List, Grid, Stack, or a semantic definition-list composition"
20
+ },
21
+ {
22
+ "condition": "The narrow layout must convert rows into unrelated cards and no longer preserves column comparison.",
23
+ "useInstead": "An application-owned alternate view with an explicit responsive policy"
24
+ }
25
+ ],
26
+ "composition": [
27
+ "Compose optional Container > Root > Caption, Header, Body, and optional Footer; place Row inside each section and Head or Cell inside Row according to native table content rules.",
28
+ "Use Head with scope=\"row\" for body row labels and keep the default column scope for header cells; use id and headers for complex associations.",
29
+ "Author Container explicitly when honest comparison needs horizontal overflow, and set the public minimum-inline-size token to the smallest width that preserves the column relationships.",
30
+ "When Table moves vertically, put the visible border and radius on the stable labelled Scroll Area viewport, use Table variant=line inside it, and keep persistent naming outside the moving viewport with aria-labelledby.",
31
+ "Put an independently named Button and optional decorative SortIndicator inside the active Head when the application owns sorting."
32
+ ],
33
+ "rules": [
34
+ {
35
+ "id": "table-native-relationships",
36
+ "level": "must",
37
+ "statement": "Preserve native table anatomy and meaningful row and column headers; do not rebuild tabular comparison with generic Grid, Stack, div, or ARIA role substitutes."
38
+ },
39
+ {
40
+ "id": "table-static-boundary",
41
+ "level": "must",
42
+ "statement": "Keep Table static and readable; do not add row focus, whole-row activation, selection, arrow-key cell navigation, data mapping, filtering, pagination, editing, or virtualization to Table."
43
+ },
44
+ {
45
+ "id": "table-explicit-overflow",
46
+ "level": "must",
47
+ "statement": "Author Table.Container or a separately labelled Scroll Area when wide comparison needs overflow; Root never inserts a wrapper and Table never hides columns or converts them into cards."
48
+ },
49
+ {
50
+ "id": "table-responsive-comparison",
51
+ "level": "must",
52
+ "statement": "At narrow widths, preserve header-to-cell relationships, complete material values, and an understandable comparison path rather than merely stacking unrelated plan or record cards."
53
+ },
54
+ {
55
+ "id": "table-vertical-scroll-boundary",
56
+ "level": "must",
57
+ "statement": "For bounded vertical scrolling, let the stable Scroll Area viewport own the visible border and radius; do not use a moving Table outline as the scroll-frame boundary."
58
+ },
59
+ {
60
+ "id": "table-sort-ownership",
61
+ "level": "must",
62
+ "statement": "Let the application sort data and pass sortDirection only to the active header; SortIndicator is decorative and never supplies the control, name, or behavior."
63
+ },
64
+ {
65
+ "id": "table-css",
66
+ "level": "must",
67
+ "statement": "Load styles.css or core.css plus table.css."
68
+ }
69
+ ],
70
+ "commonMistakes": [
71
+ {
72
+ "mistake": "Using generic layout components for a pricing matrix because custom positioning feels easier.",
73
+ "correction": "Use Table's native Head and Cell relationships, then customize the closed recipes and public Table variables for the product-specific comparison."
74
+ },
75
+ {
76
+ "mistake": "Hiding material columns on mobile or visually cloning labels into card rows.",
77
+ "correction": "Contain honest horizontal overflow or provide a separately authored application view; do not destroy or fake the native column relationships."
78
+ },
79
+ {
80
+ "mistake": "Making rows hoverable or clickable without a complete interaction owner.",
81
+ "correction": "Keep rows structural and place independently named Brick links or buttons inside the appropriate cells."
82
+ },
83
+ {
84
+ "mistake": "Using Table variant=outline as the visible frame inside a vertically scrolling viewport.",
85
+ "correction": "Paint the stable Scroll Area viewport with Surface, use Table variant=line inside it, and connect a persistent external label with aria-labelledby."
86
+ },
87
+ {
88
+ "mistake": "Using a visible recommendation color as the only explanation for a preferred pricing column.",
89
+ "correction": "Keep the plan label and recommendation reason readable in ordinary text, then use Table paint only as supporting emphasis."
90
+ }
91
+ ],
92
+ "validation": [
93
+ "Check caption or surrounding naming, header scope, cell associations, source order, plan or record labels, and independently named controls.",
94
+ "Check Container overflow, the authored minimum comparison width, stable viewport corners during vertical scrolling, sticky header boundaries when used, 320 CSS pixels, zoom, long content, RTL, and no page-level horizontal overflow.",
95
+ "Check light and dark themes, forced colors, row and column boundaries, recommendation meaning without color, focus visibility for interactive descendants, and CSS delivery.",
96
+ "Check that sorting, selection, filtering, pagination, data services, and responsive alternate-view policy remain application owned."
97
+ ],
98
+ "related": [
99
+ {
100
+ "kind": "package",
101
+ "package": "@flowstack-ui/atom",
102
+ "id": "table",
103
+ "versionPolicy": "installed-exact"
104
+ },
105
+ "data-grid",
106
+ "tree-grid",
107
+ "scroll-area",
108
+ "button",
109
+ "badge",
110
+ "icon",
111
+ "text"
112
+ ]
113
+ }