@flowstack-ui/brick 0.1.6 → 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 (602) hide show
  1. package/README.md +13 -7
  2. package/dist/agents/accordion.json +17 -2
  3. package/dist/agents/accordion.md +5 -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 +42 -3
  126. package/dist/agents/surface.md +12 -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/appearance.css +1 -1
  408. package/dist/styles/appearance.css.map +1 -1
  409. package/dist/styles/aspect-ratio.css +1 -1
  410. package/dist/styles/aspect-ratio.css.map +1 -1
  411. package/dist/styles/avatar.css +1 -1
  412. package/dist/styles/avatar.css.map +1 -1
  413. package/dist/styles/badge.css +1 -1
  414. package/dist/styles/badge.css.map +1 -1
  415. package/dist/styles/bleed.css +2 -0
  416. package/dist/styles/bleed.css.map +1 -0
  417. package/dist/styles/bottom-navigation.css +1 -1
  418. package/dist/styles/bottom-navigation.css.map +1 -1
  419. package/dist/styles/breadcrumb.css +1 -1
  420. package/dist/styles/breadcrumb.css.map +1 -1
  421. package/dist/styles/button.css +1 -1
  422. package/dist/styles/button.css.map +1 -1
  423. package/dist/styles/card.css +1 -1
  424. package/dist/styles/card.css.map +1 -1
  425. package/dist/styles/carousel.css +1 -1
  426. package/dist/styles/carousel.css.map +1 -1
  427. package/dist/styles/checkbox-group.css +1 -1
  428. package/dist/styles/checkbox-group.css.map +1 -1
  429. package/dist/styles/checkbox.css +1 -1
  430. package/dist/styles/checkbox.css.map +1 -1
  431. package/dist/styles/chip.css +1 -1
  432. package/dist/styles/chip.css.map +1 -1
  433. package/dist/styles/code-block.css +1 -1
  434. package/dist/styles/code-block.css.map +1 -1
  435. package/dist/styles/code.css +1 -1
  436. package/dist/styles/code.css.map +1 -1
  437. package/dist/styles/collapsible.css +1 -1
  438. package/dist/styles/collapsible.css.map +1 -1
  439. package/dist/styles/color-picker.css +2 -0
  440. package/dist/styles/color-picker.css.map +1 -0
  441. package/dist/styles/color-swatch.css +2 -0
  442. package/dist/styles/color-swatch.css.map +1 -0
  443. package/dist/styles/combobox.css +1 -1
  444. package/dist/styles/combobox.css.map +1 -1
  445. package/dist/styles/container.css +1 -1
  446. package/dist/styles/container.css.map +1 -1
  447. package/dist/styles/context-menu.css +1 -1
  448. package/dist/styles/context-menu.css.map +1 -1
  449. package/dist/styles/core.css +1 -1
  450. package/dist/styles/core.css.map +1 -1
  451. package/dist/styles/data-grid.css +1 -1
  452. package/dist/styles/data-grid.css.map +1 -1
  453. package/dist/styles/data-list.css +2 -0
  454. package/dist/styles/data-list.css.map +1 -0
  455. package/dist/styles/dialog.css +1 -1
  456. package/dist/styles/dialog.css.map +1 -1
  457. package/dist/styles/divider.css +1 -1
  458. package/dist/styles/divider.css.map +1 -1
  459. package/dist/styles/drawer.css +1 -1
  460. package/dist/styles/drawer.css.map +1 -1
  461. package/dist/styles/dropdown-menu.css +1 -1
  462. package/dist/styles/dropdown-menu.css.map +1 -1
  463. package/dist/styles/feed.css +1 -1
  464. package/dist/styles/feed.css.map +1 -1
  465. package/dist/styles/field.css +1 -1
  466. package/dist/styles/field.css.map +1 -1
  467. package/dist/styles/fieldset.css +1 -1
  468. package/dist/styles/fieldset.css.map +1 -1
  469. package/dist/styles/file-upload.css +1 -1
  470. package/dist/styles/file-upload.css.map +1 -1
  471. package/dist/styles/form.css +1 -1
  472. package/dist/styles/form.css.map +1 -1
  473. package/dist/styles/frame.css +1 -1
  474. package/dist/styles/frame.css.map +1 -1
  475. package/dist/styles/grid.css +1 -1
  476. package/dist/styles/grid.css.map +1 -1
  477. package/dist/styles/group.css +2 -0
  478. package/dist/styles/group.css.map +1 -0
  479. package/dist/styles/hide.css +1 -1
  480. package/dist/styles/hide.css.map +1 -1
  481. package/dist/styles/hover-card.css +1 -1
  482. package/dist/styles/hover-card.css.map +1 -1
  483. package/dist/styles/icon-button.css +1 -1
  484. package/dist/styles/icon-button.css.map +1 -1
  485. package/dist/styles/icon.css +1 -1
  486. package/dist/styles/icon.css.map +1 -1
  487. package/dist/styles/image.css +1 -1
  488. package/dist/styles/image.css.map +1 -1
  489. package/dist/styles/input.css +1 -1
  490. package/dist/styles/input.css.map +1 -1
  491. package/dist/styles/link-box.css +2 -0
  492. package/dist/styles/link-box.css.map +1 -0
  493. package/dist/styles/link.css +1 -1
  494. package/dist/styles/link.css.map +1 -1
  495. package/dist/styles/list.css +1 -1
  496. package/dist/styles/list.css.map +1 -1
  497. package/dist/styles/menubar.css +1 -1
  498. package/dist/styles/menubar.css.map +1 -1
  499. package/dist/styles/multi-select.css +1 -1
  500. package/dist/styles/multi-select.css.map +1 -1
  501. package/dist/styles/nav-list.css +1 -1
  502. package/dist/styles/nav-list.css.map +1 -1
  503. package/dist/styles/navigation-menu.css +1 -1
  504. package/dist/styles/navigation-menu.css.map +1 -1
  505. package/dist/styles/number-input.css +1 -1
  506. package/dist/styles/number-input.css.map +1 -1
  507. package/dist/styles/otp-field.css +1 -1
  508. package/dist/styles/otp-field.css.map +1 -1
  509. package/dist/styles/pagination.css +1 -1
  510. package/dist/styles/pagination.css.map +1 -1
  511. package/dist/styles/password-toggle-field.css +1 -1
  512. package/dist/styles/password-toggle-field.css.map +1 -1
  513. package/dist/styles/popover.css +1 -1
  514. package/dist/styles/popover.css.map +1 -1
  515. package/dist/styles/progress-circle.css +1 -1
  516. package/dist/styles/progress-circle.css.map +1 -1
  517. package/dist/styles/progress.css +1 -1
  518. package/dist/styles/progress.css.map +1 -1
  519. package/dist/styles/radio-group.css +1 -1
  520. package/dist/styles/radio-group.css.map +1 -1
  521. package/dist/styles/rating.css +1 -1
  522. package/dist/styles/rating.css.map +1 -1
  523. package/dist/styles/reorderable-list.css +2 -0
  524. package/dist/styles/reorderable-list.css.map +1 -0
  525. package/dist/styles/scroll-area.css +1 -1
  526. package/dist/styles/scroll-area.css.map +1 -1
  527. package/dist/styles/section.css +1 -1
  528. package/dist/styles/section.css.map +1 -1
  529. package/dist/styles/segment-group.css +2 -0
  530. package/dist/styles/segment-group.css.map +1 -0
  531. package/dist/styles/select.css +1 -1
  532. package/dist/styles/select.css.map +1 -1
  533. package/dist/styles/show.css +1 -1
  534. package/dist/styles/show.css.map +1 -1
  535. package/dist/styles/sidebar.css +1 -1
  536. package/dist/styles/sidebar.css.map +1 -1
  537. package/dist/styles/skeleton.css +1 -1
  538. package/dist/styles/skeleton.css.map +1 -1
  539. package/dist/styles/skip-link.css +1 -1
  540. package/dist/styles/skip-link.css.map +1 -1
  541. package/dist/styles/slider.css +1 -1
  542. package/dist/styles/slider.css.map +1 -1
  543. package/dist/styles/stack.css +1 -1
  544. package/dist/styles/stack.css.map +1 -1
  545. package/dist/styles/status.css +2 -0
  546. package/dist/styles/status.css.map +1 -0
  547. package/dist/styles/surface.css +1 -1
  548. package/dist/styles/surface.css.map +1 -1
  549. package/dist/styles/swipeable-item.css +1 -1
  550. package/dist/styles/swipeable-item.css.map +1 -1
  551. package/dist/styles/switch.css +1 -1
  552. package/dist/styles/switch.css.map +1 -1
  553. package/dist/styles/table.css +1 -1
  554. package/dist/styles/table.css.map +1 -1
  555. package/dist/styles/tabs.css +1 -1
  556. package/dist/styles/tabs.css.map +1 -1
  557. package/dist/styles/text.css +1 -1
  558. package/dist/styles/text.css.map +1 -1
  559. package/dist/styles/textarea.css +1 -1
  560. package/dist/styles/textarea.css.map +1 -1
  561. package/dist/styles/toast.css +1 -1
  562. package/dist/styles/toast.css.map +1 -1
  563. package/dist/styles/toggle-group.css +1 -1
  564. package/dist/styles/toggle-group.css.map +1 -1
  565. package/dist/styles/toggle.css +1 -1
  566. package/dist/styles/toggle.css.map +1 -1
  567. package/dist/styles/toolbar.css +1 -1
  568. package/dist/styles/toolbar.css.map +1 -1
  569. package/dist/styles/tooltip.css +1 -1
  570. package/dist/styles/tooltip.css.map +1 -1
  571. package/dist/styles/tree-grid.css +1 -1
  572. package/dist/styles/tree-grid.css.map +1 -1
  573. package/dist/styles/tree.css +1 -1
  574. package/dist/styles/tree.css.map +1 -1
  575. package/dist/styles/visually-hidden.css +1 -1
  576. package/dist/styles/visually-hidden.css.map +1 -1
  577. package/dist/styles/z-stack.css +1 -1
  578. package/dist/styles/z-stack.css.map +1 -1
  579. package/dist/styles.css +1 -1
  580. package/dist/styles.css.map +1 -1
  581. package/dist/surface.d.ts +1 -1
  582. package/dist/surface.d.ts.map +1 -1
  583. package/dist/surface.js.map +1 -1
  584. package/dist/text.d.ts +1 -1
  585. package/dist/text.d.ts.map +1 -1
  586. package/dist/text.js +1 -1
  587. package/dist/text.js.map +1 -1
  588. package/dist/theme-contract.json +26846 -0
  589. package/dist/toggle.d.ts +1 -1
  590. package/dist/toggle.d.ts.map +1 -1
  591. package/dist/toggle.js.map +1 -1
  592. package/dist/tokens.css +1 -1
  593. package/dist/tokens.css.map +1 -1
  594. package/dist/toolbar.d.ts +1 -1
  595. package/dist/toolbar.d.ts.map +1 -1
  596. package/docs/guides/agent-knowledge.md +19 -0
  597. package/docs/guides/appearance-and-tokens.md +16 -5
  598. package/docs/guides/browser-support.md +21 -0
  599. package/docs/guides/control-sizing.md +55 -0
  600. package/docs/guides/installation.md +5 -2
  601. package/docs/guides/theme-contract.md +86 -0
  602. package/package.json +51 -7
package/README.md CHANGED
@@ -29,7 +29,8 @@ import "@flowstack-ui/brick/styles.css";
29
29
  ```
30
30
 
31
31
  New applications may opt into Brick's separate neutral reset for page sizing,
32
- margin removal, and browser normalization:
32
+ body, `figure`, and `blockquote` margin removal, and browser normalization.
33
+ Higher-level FLOWSTACK packs may require this complete two-import setup:
33
34
 
34
35
  ```ts
35
36
  import "@flowstack-ui/brick/reset.css";
@@ -139,25 +140,30 @@ Override public semantic variables with ordinary CSS:
139
140
  ```
140
141
 
141
142
  See [Appearance and tokens](docs/guides/appearance-and-tokens.md) for the full
142
- contract.
143
+ customization guide. Theme tooling can discover Brick's generated
144
+ [`flowstack.brick-theme-contract.v1`](docs/guides/theme-contract.md) artifact
145
+ through `@flowstack-ui/brick/theme-contract.json`.
143
146
 
144
147
  ## Documentation
145
148
 
146
149
  - [Installation and stylesheet setup](docs/guides/installation.md)
147
150
  - [Appearance and semantic tokens](docs/guides/appearance-and-tokens.md)
151
+ - [Generated theme contract](docs/guides/theme-contract.md)
152
+ - [Shared control sizing](docs/guides/control-sizing.md)
153
+ - [Browser support and progressive enhancement](docs/guides/browser-support.md)
148
154
 
149
155
  The complete component guides live with the source repository:
150
156
 
151
157
  | Family | Components |
152
158
  | --- | --- |
153
- | Actions and selection | [Button](https://github.com/flowstack-ui/brick/blob/main/docs/components/button/README.md), [Icon Button](https://github.com/flowstack-ui/brick/blob/main/docs/components/icon-button/README.md), [Toggle](https://github.com/flowstack-ui/brick/blob/main/docs/components/toggle/README.md), [Toggle Group](https://github.com/flowstack-ui/brick/blob/main/docs/components/toggle-group/README.md), [Toolbar](https://github.com/flowstack-ui/brick/blob/main/docs/components/toolbar/README.md), [Pagination](https://github.com/flowstack-ui/brick/blob/main/docs/components/pagination/README.md) |
159
+ | Actions and selection | [Button](https://github.com/flowstack-ui/brick/blob/main/docs/components/button/README.md), [Icon Button](https://github.com/flowstack-ui/brick/blob/main/docs/components/icon-button/README.md), [Toggle](https://github.com/flowstack-ui/brick/blob/main/docs/components/toggle/README.md), [Toggle Group](https://github.com/flowstack-ui/brick/blob/main/docs/components/toggle-group/README.md), [Segment Group](https://github.com/flowstack-ui/brick/blob/main/docs/components/segment-group/README.md), [Toolbar](https://github.com/flowstack-ui/brick/blob/main/docs/components/toolbar/README.md), [Pagination](https://github.com/flowstack-ui/brick/blob/main/docs/components/pagination/README.md), [Reorderable List](https://github.com/flowstack-ui/brick/blob/main/docs/components/reorderable-list/README.md) |
154
160
  | Accessibility | [Skip Link](https://github.com/flowstack-ui/brick/blob/main/docs/components/skip-link/README.md), [Visually Hidden](https://github.com/flowstack-ui/brick/blob/main/docs/components/visually-hidden/README.md) |
155
- | Data display | [Aspect Ratio](https://github.com/flowstack-ui/brick/blob/main/docs/components/aspect-ratio/README.md), [Data Grid](https://github.com/flowstack-ui/brick/blob/main/docs/components/data-grid/README.md), [Tree Grid](https://github.com/flowstack-ui/brick/blob/main/docs/components/tree-grid/README.md), [Tree](https://github.com/flowstack-ui/brick/blob/main/docs/components/tree/README.md), [Feed](https://github.com/flowstack-ui/brick/blob/main/docs/components/feed/README.md), [Swipeable Item](https://github.com/flowstack-ui/brick/blob/main/docs/components/swipeable-item/README.md), [Carousel](https://github.com/flowstack-ui/brick/blob/main/docs/components/carousel/README.md) |
156
- | Forms and choices | [Form](https://github.com/flowstack-ui/brick/blob/main/docs/components/form/README.md), [Field](https://github.com/flowstack-ui/brick/blob/main/docs/components/field/README.md), [Fieldset](https://github.com/flowstack-ui/brick/blob/main/docs/components/fieldset/README.md), [Input](https://github.com/flowstack-ui/brick/blob/main/docs/components/input/README.md), [Number Input](https://github.com/flowstack-ui/brick/blob/main/docs/components/number-input/README.md), [OTP Field](https://github.com/flowstack-ui/brick/blob/main/docs/components/otp-field/README.md), [Password Toggle Field](https://github.com/flowstack-ui/brick/blob/main/docs/components/password-toggle-field/README.md), [Textarea](https://github.com/flowstack-ui/brick/blob/main/docs/components/textarea/README.md), [Select](https://github.com/flowstack-ui/brick/blob/main/docs/components/select/README.md), [Combobox](https://github.com/flowstack-ui/brick/blob/main/docs/components/combobox/README.md), [Multi Select](https://github.com/flowstack-ui/brick/blob/main/docs/components/multi-select/README.md), [File Upload](https://github.com/flowstack-ui/brick/blob/main/docs/components/file-upload/README.md), [Checkbox](https://github.com/flowstack-ui/brick/blob/main/docs/components/checkbox/README.md), [Checkbox Group](https://github.com/flowstack-ui/brick/blob/main/docs/components/checkbox-group/README.md), [Radio Group](https://github.com/flowstack-ui/brick/blob/main/docs/components/radio-group/README.md), [Switch](https://github.com/flowstack-ui/brick/blob/main/docs/components/switch/README.md), [Slider](https://github.com/flowstack-ui/brick/blob/main/docs/components/slider/README.md), [Rating](https://github.com/flowstack-ui/brick/blob/main/docs/components/rating/README.md) |
157
- | Content and status | [Text](https://github.com/flowstack-ui/brick/blob/main/docs/components/text/README.md), [Icon](https://github.com/flowstack-ui/brick/blob/main/docs/components/icon/README.md), [Image](https://github.com/flowstack-ui/brick/blob/main/docs/components/image/README.md), [Code](https://github.com/flowstack-ui/brick/blob/main/docs/components/code/README.md), [Code Block](https://github.com/flowstack-ui/brick/blob/main/docs/components/code-block/README.md), [Avatar](https://github.com/flowstack-ui/brick/blob/main/docs/components/avatar/README.md), [Badge](https://github.com/flowstack-ui/brick/blob/main/docs/components/badge/README.md), [Chip](https://github.com/flowstack-ui/brick/blob/main/docs/components/chip/README.md), [Notification Badge](https://github.com/flowstack-ui/brick/blob/main/docs/components/notification-badge/README.md), [Card](https://github.com/flowstack-ui/brick/blob/main/docs/components/card/README.md), [List](https://github.com/flowstack-ui/brick/blob/main/docs/components/list/README.md), [Table](https://github.com/flowstack-ui/brick/blob/main/docs/components/table/README.md), [Divider](https://github.com/flowstack-ui/brick/blob/main/docs/components/divider/README.md), [Collapsible](https://github.com/flowstack-ui/brick/blob/main/docs/components/collapsible/README.md), [Accordion](https://github.com/flowstack-ui/brick/blob/main/docs/components/accordion/README.md), [Skeleton](https://github.com/flowstack-ui/brick/blob/main/docs/components/skeleton/README.md), [Progress](https://github.com/flowstack-ui/brick/blob/main/docs/components/progress/README.md), [Progress Circle](https://github.com/flowstack-ui/brick/blob/main/docs/components/progress-circle/README.md), [Toast](https://github.com/flowstack-ui/brick/blob/main/docs/components/toast/README.md) |
161
+ | Data display | [Aspect Ratio](https://github.com/flowstack-ui/brick/blob/main/docs/components/aspect-ratio/README.md), [Data List](https://github.com/flowstack-ui/brick/blob/main/docs/components/data-list/README.md), [Data Grid](https://github.com/flowstack-ui/brick/blob/main/docs/components/data-grid/README.md), [Tree Grid](https://github.com/flowstack-ui/brick/blob/main/docs/components/tree-grid/README.md), [Tree](https://github.com/flowstack-ui/brick/blob/main/docs/components/tree/README.md), [Feed](https://github.com/flowstack-ui/brick/blob/main/docs/components/feed/README.md), [Swipeable Item](https://github.com/flowstack-ui/brick/blob/main/docs/components/swipeable-item/README.md), [Carousel](https://github.com/flowstack-ui/brick/blob/main/docs/components/carousel/README.md) |
162
+ | Forms and choices | [Color Picker](https://github.com/flowstack-ui/brick/blob/main/docs/components/color-picker/README.md), [Form](https://github.com/flowstack-ui/brick/blob/main/docs/components/form/README.md), [Field](https://github.com/flowstack-ui/brick/blob/main/docs/components/field/README.md), [Fieldset](https://github.com/flowstack-ui/brick/blob/main/docs/components/fieldset/README.md), [Input](https://github.com/flowstack-ui/brick/blob/main/docs/components/input/README.md), [Number Input](https://github.com/flowstack-ui/brick/blob/main/docs/components/number-input/README.md), [OTP Field](https://github.com/flowstack-ui/brick/blob/main/docs/components/otp-field/README.md), [Password Toggle Field](https://github.com/flowstack-ui/brick/blob/main/docs/components/password-toggle-field/README.md), [Textarea](https://github.com/flowstack-ui/brick/blob/main/docs/components/textarea/README.md), [Select](https://github.com/flowstack-ui/brick/blob/main/docs/components/select/README.md), [Combobox](https://github.com/flowstack-ui/brick/blob/main/docs/components/combobox/README.md), [Multi Select](https://github.com/flowstack-ui/brick/blob/main/docs/components/multi-select/README.md), [File Upload](https://github.com/flowstack-ui/brick/blob/main/docs/components/file-upload/README.md), [Checkbox](https://github.com/flowstack-ui/brick/blob/main/docs/components/checkbox/README.md), [Checkbox Group](https://github.com/flowstack-ui/brick/blob/main/docs/components/checkbox-group/README.md), [Radio Group](https://github.com/flowstack-ui/brick/blob/main/docs/components/radio-group/README.md), [Switch](https://github.com/flowstack-ui/brick/blob/main/docs/components/switch/README.md), [Slider](https://github.com/flowstack-ui/brick/blob/main/docs/components/slider/README.md), [Rating](https://github.com/flowstack-ui/brick/blob/main/docs/components/rating/README.md) |
163
+ | Content and status | [Text](https://github.com/flowstack-ui/brick/blob/main/docs/components/text/README.md), [Icon](https://github.com/flowstack-ui/brick/blob/main/docs/components/icon/README.md), [Image](https://github.com/flowstack-ui/brick/blob/main/docs/components/image/README.md), [Code](https://github.com/flowstack-ui/brick/blob/main/docs/components/code/README.md), [Code Block](https://github.com/flowstack-ui/brick/blob/main/docs/components/code-block/README.md), [Avatar](https://github.com/flowstack-ui/brick/blob/main/docs/components/avatar/README.md), [Badge](https://github.com/flowstack-ui/brick/blob/main/docs/components/badge/README.md), [Chip](https://github.com/flowstack-ui/brick/blob/main/docs/components/chip/README.md), [Notification Badge](https://github.com/flowstack-ui/brick/blob/main/docs/components/notification-badge/README.md), [Status](https://github.com/flowstack-ui/brick/blob/main/docs/components/status/README.md), [Color Swatch](https://github.com/flowstack-ui/brick/blob/main/docs/components/color-swatch/README.md), [Card](https://github.com/flowstack-ui/brick/blob/main/docs/components/card/README.md), [List](https://github.com/flowstack-ui/brick/blob/main/docs/components/list/README.md), [Table](https://github.com/flowstack-ui/brick/blob/main/docs/components/table/README.md), [Divider](https://github.com/flowstack-ui/brick/blob/main/docs/components/divider/README.md), [Collapsible](https://github.com/flowstack-ui/brick/blob/main/docs/components/collapsible/README.md), [Accordion](https://github.com/flowstack-ui/brick/blob/main/docs/components/accordion/README.md), [Skeleton](https://github.com/flowstack-ui/brick/blob/main/docs/components/skeleton/README.md), [Progress](https://github.com/flowstack-ui/brick/blob/main/docs/components/progress/README.md), [Progress Circle](https://github.com/flowstack-ui/brick/blob/main/docs/components/progress-circle/README.md), [Toast](https://github.com/flowstack-ui/brick/blob/main/docs/components/toast/README.md) |
158
164
  | Contextual overlays | [Tooltip](https://github.com/flowstack-ui/brick/blob/main/docs/components/tooltip/README.md), [Hover Card](https://github.com/flowstack-ui/brick/blob/main/docs/components/hover-card/README.md), [Popover](https://github.com/flowstack-ui/brick/blob/main/docs/components/popover/README.md), [Dropdown Menu](https://github.com/flowstack-ui/brick/blob/main/docs/components/dropdown-menu/README.md), [Context Menu](https://github.com/flowstack-ui/brick/blob/main/docs/components/context-menu/README.md), [Menubar](https://github.com/flowstack-ui/brick/blob/main/docs/components/menubar/README.md) |
159
165
  | Modal surfaces | [Dialog](https://github.com/flowstack-ui/brick/blob/main/docs/components/dialog/README.md), [Alert Dialog](https://github.com/flowstack-ui/brick/blob/main/docs/components/alert-dialog/README.md), [Drawer](https://github.com/flowstack-ui/brick/blob/main/docs/components/drawer/README.md) |
160
- | Navigation and layout | [Appearance](https://github.com/flowstack-ui/brick/blob/main/docs/components/appearance/README.md), [Breadcrumb](https://github.com/flowstack-ui/brick/blob/main/docs/components/breadcrumb/README.md), [Tabs](https://github.com/flowstack-ui/brick/blob/main/docs/components/tabs/README.md), [Navigation Menu](https://github.com/flowstack-ui/brick/blob/main/docs/components/navigation-menu/README.md), [Bottom Navigation](https://github.com/flowstack-ui/brick/blob/main/docs/components/bottom-navigation/README.md), [Link](https://github.com/flowstack-ui/brick/blob/main/docs/components/link/README.md), [Nav List](https://github.com/flowstack-ui/brick/blob/main/docs/components/nav-list/README.md), [Sidebar](https://github.com/flowstack-ui/brick/blob/main/docs/components/sidebar/README.md), [App Bar](https://github.com/flowstack-ui/brick/blob/main/docs/components/app-bar/README.md), [Stack](https://github.com/flowstack-ui/brick/blob/main/docs/components/stack/README.md), [Grid](https://github.com/flowstack-ui/brick/blob/main/docs/components/grid/README.md), [Container](https://github.com/flowstack-ui/brick/blob/main/docs/components/container/README.md), [Section](https://github.com/flowstack-ui/brick/blob/main/docs/components/section/README.md), [Frame](https://github.com/flowstack-ui/brick/blob/main/docs/components/frame/README.md), [Show](https://github.com/flowstack-ui/brick/blob/main/docs/components/show/README.md), [Hide](https://github.com/flowstack-ui/brick/blob/main/docs/components/hide/README.md), [Surface](https://github.com/flowstack-ui/brick/blob/main/docs/components/surface/README.md), [Scroll Area](https://github.com/flowstack-ui/brick/blob/main/docs/components/scroll-area/README.md) |
166
+ | Navigation and layout | [Appearance](https://github.com/flowstack-ui/brick/blob/main/docs/components/appearance/README.md), [Breadcrumb](https://github.com/flowstack-ui/brick/blob/main/docs/components/breadcrumb/README.md), [Tabs](https://github.com/flowstack-ui/brick/blob/main/docs/components/tabs/README.md), [Navigation Menu](https://github.com/flowstack-ui/brick/blob/main/docs/components/navigation-menu/README.md), [Bottom Navigation](https://github.com/flowstack-ui/brick/blob/main/docs/components/bottom-navigation/README.md), [Link](https://github.com/flowstack-ui/brick/blob/main/docs/components/link/README.md), [Link Box](https://github.com/flowstack-ui/brick/blob/main/docs/components/link-box/README.md), [Nav List](https://github.com/flowstack-ui/brick/blob/main/docs/components/nav-list/README.md), [Sidebar](https://github.com/flowstack-ui/brick/blob/main/docs/components/sidebar/README.md), [App Bar](https://github.com/flowstack-ui/brick/blob/main/docs/components/app-bar/README.md), [Stack](https://github.com/flowstack-ui/brick/blob/main/docs/components/stack/README.md), [Group](https://github.com/flowstack-ui/brick/blob/main/docs/components/group/README.md), [Grid](https://github.com/flowstack-ui/brick/blob/main/docs/components/grid/README.md), [Container](https://github.com/flowstack-ui/brick/blob/main/docs/components/container/README.md), [Section](https://github.com/flowstack-ui/brick/blob/main/docs/components/section/README.md), [Frame](https://github.com/flowstack-ui/brick/blob/main/docs/components/frame/README.md), [Bleed](https://github.com/flowstack-ui/brick/blob/main/docs/components/bleed/README.md), [Show](https://github.com/flowstack-ui/brick/blob/main/docs/components/show/README.md), [Hide](https://github.com/flowstack-ui/brick/blob/main/docs/components/hide/README.md), [Surface](https://github.com/flowstack-ui/brick/blob/main/docs/components/surface/README.md), [Scroll Area](https://github.com/flowstack-ui/brick/blob/main/docs/components/scroll-area/README.md) |
161
167
  | Depth layout | [ZStack](https://github.com/flowstack-ui/brick/blob/main/docs/components/z-stack/README.md) |
162
168
 
163
169
  ## Package boundary
@@ -26,7 +26,8 @@
26
26
  "composition": [
27
27
  "Compose Root > Item > Header > Trigger with Indicator inside Trigger, then place Content > ContentInner as Header's sibling inside the same Item.",
28
28
  "Put visible panel padding and ordinary Brick layout in ContentInner so Content remains Atom's measured motion boundary.",
29
- "Choose Header levels from the host document and use Content landmark=false when many regions would make landmark navigation noisy."
29
+ "Choose Header levels from the host document and use Content landmark=false when many regions would make landmark navigation noisy.",
30
+ "Use the default decorative Indicator when the standard down-when-closed and up-when-open state cue fits; authored Indicator children may replace only the artwork."
30
31
  ],
31
32
  "rules": [
32
33
  {
@@ -53,6 +54,16 @@
53
54
  "id": "accordion-css",
54
55
  "level": "must",
55
56
  "statement": "Load styles.css or core.css plus accordion.css."
57
+ },
58
+ {
59
+ "id": "accordion-grouped-focus-geometry",
60
+ "level": "must",
61
+ "statement": "Keep grouped trigger corners continuous with the enclosing Root and verify that the complete focus ring remains visible at the first and last group edges."
62
+ },
63
+ {
64
+ "id": "accordion-indicator-direction",
65
+ "level": "must",
66
+ "statement": "Keep the default Indicator pointing down while closed and up while open in both LTR and RTL; use custom decorative artwork only for a deliberate alternate state language."
56
67
  }
57
68
  ],
58
69
  "commonMistakes": [
@@ -63,12 +74,16 @@
63
74
  {
64
75
  "mistake": "Accepting the default heading level or region landmark count without checking the host page.",
65
76
  "correction": "Set Header to the correct document level and use landmark=false when many open panels would create excessive landmarks."
77
+ },
78
+ {
79
+ "mistake": "Rounding every Trigger in one outlined group or clipping Root paint so the first and last Trigger focus rings are cut off.",
80
+ "correction": "Treat Root as the group silhouette, keep interior Trigger edges square, round only exposed group corners, and preserve visible focus outside the group boundary."
66
81
  }
67
82
  ],
68
83
  "validation": [
69
84
  "Check complete anatomy, unique values, heading order, Trigger names, linked panel relationships, landmark usefulness, and CSS delivery.",
70
85
  "Test Enter, Space, Home, End, orientation-aware arrows, RTL, disabled and locked-open state, single and multiple modes, and controlled and uncontrolled state.",
71
- "Test initial open, open and close motion, dynamic panel measurement, reduced motion, focus geometry, long labels, narrow widths, zoom, and forced colors."
86
+ "Test initial open, open and close motion, down/up Indicator state, dynamic panel measurement, reduced motion, complete first and last Trigger focus geometry, continuous grouped corners, long labels, narrow widths, zoom, and forced colors."
72
87
  ],
73
88
  "related": [
74
89
  "collapsible",
@@ -19,6 +19,7 @@ Present a finished group of related disclosure sections while Atom owns expanded
19
19
  - Compose Root > Item > Header > Trigger with Indicator inside Trigger, then place Content > ContentInner as Header's sibling inside the same Item.
20
20
  - Put visible panel padding and ordinary Brick layout in ContentInner so Content remains Atom's measured motion boundary.
21
21
  - Choose Header levels from the host document and use Content landmark=false when many regions would make landmark navigation noisy.
22
+ - Use the default decorative Indicator when the standard down-when-closed and up-when-open state cue fits; authored Indicator children may replace only the artwork.
22
23
 
23
24
  ## Rules
24
25
 
@@ -27,17 +28,20 @@ Present a finished group of related disclosure sections while Atom owns expanded
27
28
  - **MUST:** Keep visible padding and panel layout in ContentInner rather than Content so Atom can measure and animate the panel accurately.
28
29
  - **MUST:** Choose Header level from the page outline and opt out of optional Content landmarks when the resulting region count would be noisy.
29
30
  - **MUST:** Load styles.css or core.css plus accordion.css.
31
+ - **MUST:** Keep grouped trigger corners continuous with the enclosing Root and verify that the complete focus ring remains visible at the first and last group edges.
32
+ - **MUST:** Keep the default Indicator pointing down while closed and up while open in both LTR and RTL; use custom decorative artwork only for a deliberate alternate state language.
30
33
 
31
34
  ## Common mistakes
32
35
 
33
36
  - **Avoid:** Using Accordion for one disclosure, nesting a finished Button in Trigger, or placing padding directly on Content. **Instead:** Use Collapsible for one region, let Trigger own its visual recipe, and put panel spacing in ContentInner.
34
37
  - **Avoid:** Accepting the default heading level or region landmark count without checking the host page. **Instead:** Set Header to the correct document level and use landmark=false when many open panels would create excessive landmarks.
38
+ - **Avoid:** Rounding every Trigger in one outlined group or clipping Root paint so the first and last Trigger focus rings are cut off. **Instead:** Treat Root as the group silhouette, keep interior Trigger edges square, round only exposed group corners, and preserve visible focus outside the group boundary.
35
39
 
36
40
  ## Validation checklist
37
41
 
38
42
  - Check complete anatomy, unique values, heading order, Trigger names, linked panel relationships, landmark usefulness, and CSS delivery.
39
43
  - Test Enter, Space, Home, End, orientation-aware arrows, RTL, disabled and locked-open state, single and multiple modes, and controlled and uncontrolled state.
40
- - Test initial open, open and close motion, dynamic panel measurement, reduced motion, focus geometry, long labels, narrow widths, zoom, and forced colors.
44
+ - Test initial open, open and close motion, down/up Indicator state, dynamic panel measurement, reduced motion, complete first and last Trigger focus geometry, continuous grouped corners, long labels, narrow widths, zoom, and forced colors.
41
45
 
42
46
  ## Related guidance
43
47
 
@@ -0,0 +1,111 @@
1
+ {
2
+ "schema": "flowstack.agent-component.v1",
3
+ "id": "alert-dialog",
4
+ "name": "AlertDialog",
5
+ "package": "@flowstack-ui/brick",
6
+ "layer": "brick",
7
+ "kind": "component",
8
+ "purpose": "Present a finished urgent or consequential decision that requires an explicit response, safe initial focus, and non-dismissible backdrop behavior.",
9
+ "useWhen": [
10
+ "A destructive, irreversible, security-sensitive, unsaved-change, or otherwise consequential action requires a safe cancellation choice and an explicit response before continuing."
11
+ ],
12
+ "avoidWhen": [
13
+ {
14
+ "condition": "The surface presents an ordinary form, information, or multi-step task rather than one urgent decision.",
15
+ "useInstead": "Dialog"
16
+ },
17
+ {
18
+ "condition": "The content is an anchored utility panel or passive feedback that does not require a response.",
19
+ "useInstead": "Popover or Menu, or Toast or Status"
20
+ }
21
+ ],
22
+ "composition": [
23
+ "Compose AlertDialog.Root with AlertDialog.Trigger and AlertDialog.Portal; inside Portal keep AlertDialog.Overlay and AlertDialog.Content as siblings. Inside Content, arrange Header with the required Title and Description, use a short optional Body only when needed, and place Cancel before Action in Footer.",
24
+ "Compose Brick Button through Cancel and Action so each response keeps its visual and behavioral role. When a local Appearance scope owns the trigger, portal into that scope or apply the same Appearance to the portalled visual root."
25
+ ],
26
+ "rules": [
27
+ {
28
+ "id": "alert-dialog-consequential-only",
29
+ "level": "must",
30
+ "statement": "Reserve AlertDialog for one urgent or consequential decision; use Dialog for ordinary tasks, forms, or complex workflows."
31
+ },
32
+ {
33
+ "id": "alert-dialog-required-semantics",
34
+ "level": "must",
35
+ "statement": "Keep the alertdialog semantics and provide both an accessible name with visible Title or native labeling and an accessible description with Description or native aria-describedby."
36
+ },
37
+ {
38
+ "id": "alert-dialog-safe-cancel",
39
+ "level": "must",
40
+ "statement": "Place a visible enabled Cancel before Action and make Cancel the safe initial focus target for consequential actions unless an explicitly safer workflow target is supplied."
41
+ },
42
+ {
43
+ "id": "alert-dialog-no-backdrop-dismissal",
44
+ "level": "must",
45
+ "statement": "Do not add backdrop dismissal; require Cancel, Action, or an intentionally permitted Escape path to resolve the decision."
46
+ },
47
+ {
48
+ "id": "alert-dialog-overlay-content-siblings",
49
+ "level": "must",
50
+ "statement": "Render Overlay and Content as siblings inside Portal and rely on AlertDialog's inherited modal focus, isolation, scroll, and top-layer ownership."
51
+ },
52
+ {
53
+ "id": "alert-dialog-action-tone",
54
+ "level": "must",
55
+ "statement": "Apply destructive or cautionary tone to the Action Button, not to the entire dialog surface, and keep Cancel visually safe and unambiguous."
56
+ },
57
+ {
58
+ "id": "alert-dialog-controlled-action",
59
+ "level": "must",
60
+ "statement": "When an Action starts asynchronous validation or work, prevent its automatic close until the application confirms success, preserves errors, and intentionally updates open state."
61
+ },
62
+ {
63
+ "id": "alert-dialog-application-ownership",
64
+ "level": "must",
65
+ "statement": "Keep permissions, authorization, persistence, pending state, error recovery, and the actual destructive operation in application code; AlertDialog owns presentation and interaction semantics only."
66
+ },
67
+ {
68
+ "id": "alert-dialog-short-content",
69
+ "level": "should",
70
+ "statement": "Keep the decision concise; use the bounded Body only for essential supporting context and move complex forms or third-party interactive portals to Dialog."
71
+ },
72
+ {
73
+ "id": "alert-dialog-theme-scope",
74
+ "level": "must",
75
+ "statement": "When Portal leaves a local Appearance scope, reproduce that scope on the portalled visual root or target a portal container inside it."
76
+ },
77
+ {
78
+ "id": "alert-dialog-css",
79
+ "level": "must",
80
+ "statement": "Load styles.css or core.css plus alert-dialog.css."
81
+ }
82
+ ],
83
+ "commonMistakes": [
84
+ {
85
+ "mistake": "Using AlertDialog for an ordinary form, focusing the destructive Action first, omitting the description, or making the backdrop dismiss the choice.",
86
+ "correction": "Use Dialog for ordinary tasks; for consequential decisions provide Title, Description, safe Cancel focus, explicit Action, and no backdrop dismissal."
87
+ },
88
+ {
89
+ "mistake": "Closing immediately while an asynchronous destructive operation is still pending or styling the whole surface as destructive.",
90
+ "correction": "Prevent automatic close until application work succeeds and communicate danger through the Action Button and concise decision copy."
91
+ }
92
+ ],
93
+ "validation": [
94
+ "Verify alertdialog role, accessible name and description, visible Cancel before Action, safe Cancel initial focus for keyboard, pointer, touch, and programmatic opening, Tab containment, and that backdrop interaction cannot close the layer.",
95
+ "Verify Cancel and Action close reasons, prevented asynchronous Action behavior, pending and error recovery, controlled state, intentionally permitted Escape behavior, nested top-layer ownership, scroll lock, background isolation, exit presence, and focus restoration.",
96
+ "Verify long-label footer reflow, optional Body overflow, zoom, narrow and short viewports, reduced motion, forced colors, light and dark appearance on portalled Content, and required CSS."
97
+ ],
98
+ "related": [
99
+ {
100
+ "kind": "package",
101
+ "package": "@flowstack-ui/atom",
102
+ "id": "alert-dialog",
103
+ "versionPolicy": "installed-exact"
104
+ },
105
+ "dialog",
106
+ "button",
107
+ "popover",
108
+ "toast",
109
+ "appearance"
110
+ ]
111
+ }
@@ -0,0 +1,53 @@
1
+ # AlertDialog agent guide
2
+
3
+ ## Purpose
4
+
5
+ Present a finished urgent or consequential decision that requires an explicit response, safe initial focus, and non-dismissible backdrop behavior.
6
+
7
+ ## Use when
8
+
9
+ - A destructive, irreversible, security-sensitive, unsaved-change, or otherwise consequential action requires a safe cancellation choice and an explicit response before continuing.
10
+
11
+ ## Choose something else when
12
+
13
+ - The surface presents an ordinary form, information, or multi-step task rather than one urgent decision. Use Dialog.
14
+ - The content is an anchored utility panel or passive feedback that does not require a response. Use Popover or Menu, or Toast or Status.
15
+
16
+ ## Required composition
17
+
18
+ - Compose AlertDialog.Root with AlertDialog.Trigger and AlertDialog.Portal; inside Portal keep AlertDialog.Overlay and AlertDialog.Content as siblings. Inside Content, arrange Header with the required Title and Description, use a short optional Body only when needed, and place Cancel before Action in Footer.
19
+ - Compose Brick Button through Cancel and Action so each response keeps its visual and behavioral role. When a local Appearance scope owns the trigger, portal into that scope or apply the same Appearance to the portalled visual root.
20
+
21
+ ## Rules
22
+
23
+ - **MUST:** Reserve AlertDialog for one urgent or consequential decision; use Dialog for ordinary tasks, forms, or complex workflows.
24
+ - **MUST:** Keep the alertdialog semantics and provide both an accessible name with visible Title or native labeling and an accessible description with Description or native aria-describedby.
25
+ - **MUST:** Place a visible enabled Cancel before Action and make Cancel the safe initial focus target for consequential actions unless an explicitly safer workflow target is supplied.
26
+ - **MUST:** Do not add backdrop dismissal; require Cancel, Action, or an intentionally permitted Escape path to resolve the decision.
27
+ - **MUST:** Render Overlay and Content as siblings inside Portal and rely on AlertDialog's inherited modal focus, isolation, scroll, and top-layer ownership.
28
+ - **MUST:** Apply destructive or cautionary tone to the Action Button, not to the entire dialog surface, and keep Cancel visually safe and unambiguous.
29
+ - **MUST:** When an Action starts asynchronous validation or work, prevent its automatic close until the application confirms success, preserves errors, and intentionally updates open state.
30
+ - **MUST:** Keep permissions, authorization, persistence, pending state, error recovery, and the actual destructive operation in application code; AlertDialog owns presentation and interaction semantics only.
31
+ - **SHOULD:** Keep the decision concise; use the bounded Body only for essential supporting context and move complex forms or third-party interactive portals to Dialog.
32
+ - **MUST:** When Portal leaves a local Appearance scope, reproduce that scope on the portalled visual root or target a portal container inside it.
33
+ - **MUST:** Load styles.css or core.css plus alert-dialog.css.
34
+
35
+ ## Common mistakes
36
+
37
+ - **Avoid:** Using AlertDialog for an ordinary form, focusing the destructive Action first, omitting the description, or making the backdrop dismiss the choice. **Instead:** Use Dialog for ordinary tasks; for consequential decisions provide Title, Description, safe Cancel focus, explicit Action, and no backdrop dismissal.
38
+ - **Avoid:** Closing immediately while an asynchronous destructive operation is still pending or styling the whole surface as destructive. **Instead:** Prevent automatic close until application work succeeds and communicate danger through the Action Button and concise decision copy.
39
+
40
+ ## Validation checklist
41
+
42
+ - Verify alertdialog role, accessible name and description, visible Cancel before Action, safe Cancel initial focus for keyboard, pointer, touch, and programmatic opening, Tab containment, and that backdrop interaction cannot close the layer.
43
+ - Verify Cancel and Action close reasons, prevented asynchronous Action behavior, pending and error recovery, controlled state, intentionally permitted Escape behavior, nested top-layer ownership, scroll lock, background isolation, exit presence, and focus restoration.
44
+ - Verify long-label footer reflow, optional Body overflow, zoom, narrow and short viewports, reduced motion, forced colors, light and dark appearance on portalled Content, and required CSS.
45
+
46
+ ## Related guidance
47
+
48
+ - `@flowstack-ui/atom/agents/alert-dialog`
49
+ - `dialog`
50
+ - `button`
51
+ - `popover`
52
+ - `toast`
53
+ - `appearance`
@@ -16,7 +16,7 @@
16
16
  }
17
17
  ],
18
18
  "composition": [
19
- "Root renders a semantic header by default. For a contained full-bleed bar, compose Root > Container > Toolbar > Start, Center, and End; omit Container only when Toolbar should use the full available width."
19
+ "Root renders a semantic header by default. For a contained full-bleed bar, compose Root > Container > Toolbar inset=none > Start, Center, and End so Container alone owns the page gutter; omit Container only when Toolbar should use the full available width."
20
20
  ],
21
21
  "rules": [
22
22
  {
@@ -27,7 +27,7 @@
27
27
  {
28
28
  "id": "appbar-container-owner",
29
29
  "level": "must",
30
- "statement": "Place Container between Root and Toolbar when the AppBar surface should remain full bleed while its content uses a bounded measure; do not cap Root itself or recreate Toolbar geometry."
30
+ "statement": "Place Container between Root and Toolbar when the AppBar surface should remain full bleed while its content uses a bounded measure, and set Toolbar inset to none so Container alone owns the gutter; do not cap Root itself or recreate Toolbar geometry."
31
31
  },
32
32
  {
33
33
  "id": "appbar-structural-toolbar",
@@ -52,13 +52,14 @@
52
52
  ],
53
53
  "commonMistakes": [
54
54
  {
55
- "mistake": "Hand-building a header row with div and flex CSS, assuming Root defaults to div, capping the full AppBar surface with application width CSS, or expecting AppBar to create menus and breakpoints.",
56
- "correction": "Use Root's default header for banner content, place Container around Toolbar when content needs a measure, and compose the dedicated navigation, layout, and visibility owners inside it."
55
+ "mistake": "Hand-building a header row with div and flex CSS, assuming Root defaults to div, capping the full AppBar surface with application width CSS, double-insetting contained Toolbar content, or expecting AppBar to create menus and breakpoints.",
56
+ "correction": "Use Root's default header for banner content, place Container around Toolbar with Toolbar inset set to none when Container owns the gutter, and compose the dedicated navigation, layout, and visibility owners inside it."
57
57
  }
58
58
  ],
59
59
  "validation": [
60
60
  "Check the final Root element and landmark ownership, including non-banner composed hosts.",
61
61
  "Check geometric centering with unequal side content, truncation, zoom, narrow widths, and RTL.",
62
+ "Confirm contained App Bars have one page-gutter owner rather than stacked Container and Toolbar insets.",
62
63
  "Confirm landmark names, actions, navigation, and modular CSS are complete."
63
64
  ],
64
65
  "related": [
@@ -14,12 +14,12 @@ Provide a finished top surface and one-row start, geometrically centered, and en
14
14
 
15
15
  ## Required composition
16
16
 
17
- - Root renders a semantic header by default. For a contained full-bleed bar, compose Root > Container > Toolbar > Start, Center, and End; omit Container only when Toolbar should use the full available width.
17
+ - Root renders a semantic header by default. For a contained full-bleed bar, compose Root > Container > Toolbar inset=none > Start, Center, and End so Container alone owns the page gutter; omit Container only when Toolbar should use the full available width.
18
18
 
19
19
  ## Rules
20
20
 
21
21
  - **MUST:** Keep AppBar.Root's default header when it owns page or application banner content; use asChild or render only when another semantic or neutral host is intentionally required, such as non-banner chrome inside a Drawer.
22
- - **MUST:** Place Container between Root and Toolbar when the AppBar surface should remain full bleed while its content uses a bounded measure; do not cap Root itself or recreate Toolbar geometry.
22
+ - **MUST:** Place Container between Root and Toolbar when the AppBar surface should remain full bleed while its content uses a bounded measure, and set Toolbar inset to none so Container alone owns the gutter; do not cap Root itself or recreate Toolbar geometry.
23
23
  - **MUST:** Do not treat AppBar.Toolbar as an ARIA toolbar; compose Toolbar for grouped-control keyboard behavior.
24
24
  - **MUST:** Keep application-specific visibility and wrapping policy outside AppBar and implement it with Brick responsive/layout components.
25
25
  - **MUST:** When application layout references an App Bar density measurement, use the matching public comfortable or compact minimum block-size token instead of repeating Brick's value; allow the rendered bar and adjacent content to grow under zoom or enlarged content.
@@ -27,12 +27,13 @@ Provide a finished top surface and one-row start, geometrically centered, and en
27
27
 
28
28
  ## Common mistakes
29
29
 
30
- - **Avoid:** Hand-building a header row with div and flex CSS, assuming Root defaults to div, capping the full AppBar surface with application width CSS, or expecting AppBar to create menus and breakpoints. **Instead:** Use Root's default header for banner content, place Container around Toolbar when content needs a measure, and compose the dedicated navigation, layout, and visibility owners inside it.
30
+ - **Avoid:** Hand-building a header row with div and flex CSS, assuming Root defaults to div, capping the full AppBar surface with application width CSS, double-insetting contained Toolbar content, or expecting AppBar to create menus and breakpoints. **Instead:** Use Root's default header for banner content, place Container around Toolbar with Toolbar inset set to none when Container owns the gutter, and compose the dedicated navigation, layout, and visibility owners inside it.
31
31
 
32
32
  ## Validation checklist
33
33
 
34
34
  - Check the final Root element and landmark ownership, including non-banner composed hosts.
35
35
  - Check geometric centering with unequal side content, truncation, zoom, narrow widths, and RTL.
36
+ - Confirm contained App Bars have one page-gutter owner rather than stacked Container and Toolbar insets.
36
37
  - Confirm landmark names, actions, navigation, and modular CSS are complete.
37
38
 
38
39
  ## Related guidance
@@ -0,0 +1,80 @@
1
+ {
2
+ "schema": "flowstack.agent-component.v1",
3
+ "id": "aspect-ratio",
4
+ "name": "AspectRatio",
5
+ "package": "@flowstack-ui/brick",
6
+ "layer": "brick",
7
+ "kind": "component",
8
+ "purpose": "Reserve finished stable width-to-height geometry and optional neutral frame paint for media, embeds, or placeholders while Atom owns the authoritative ratio and children retain all semantics and interaction.",
9
+ "useWhen": [
10
+ "An image, video, iframe, preview, placeholder, or authored content region needs a predictable box before content loads or a consistent clipped frame."
11
+ ],
12
+ "avoidWhen": [
13
+ {
14
+ "condition": "Intrinsic dimensions already provide the intended layout, image loading and fallback behavior is needed, the content is a general panel, or a loading placeholder owns the job.",
15
+ "useInstead": "the semantic native media element, Image, Surface, or Skeleton"
16
+ }
17
+ ],
18
+ "composition": [
19
+ "Wrap one semantic content region in AspectRatio.Root, pass a finite positive width-divided-by-height ratio when 16/9 is not correct, and choose plain, subtle, or outline plus radius and overflow. Size a child explicitly when it should fill the reserved box.",
20
+ "Keep image alt text, iframe title, media controls and captions, focus, loading, and interaction on the child. Choose overflow=visible or an inset child focus treatment whenever clipping would hide focus."
21
+ ],
22
+ "rules": [
23
+ {
24
+ "id": "aspect-ratio-geometry-only",
25
+ "level": "must",
26
+ "statement": "Treat Root as geometry and optional frame paint only; do not assign it media roles, accessible names, loading state, focus, or interaction owned by its child."
27
+ },
28
+ {
29
+ "id": "aspect-ratio-value",
30
+ "level": "must",
31
+ "statement": "Express ratio as width divided by height and pass a finite positive number; understand that Atom normalizes zero, negative, NaN, and infinite values to 16/9."
32
+ },
33
+ {
34
+ "id": "aspect-ratio-semantics",
35
+ "level": "must",
36
+ "statement": "Give contained images appropriate alt text, iframes descriptive titles, and interactive media its native controls, keyboard behavior, captions, and visible focus."
37
+ },
38
+ {
39
+ "id": "aspect-ratio-authority",
40
+ "level": "must",
41
+ "statement": "Do not override style.aspectRatio because Atom's ratio prop remains authoritative; use Brick variant, radius, overflow, and public frame variables for visual customization."
42
+ },
43
+ {
44
+ "id": "aspect-ratio-responsive",
45
+ "level": "must",
46
+ "statement": "Keep Root contained at available inline size and author responsive ratio changes outside the scalar prop; verify clipped children, full radius, narrow widths, and focus at zoom rather than assuming Root stretches or crops them."
47
+ },
48
+ {
49
+ "id": "aspect-ratio-css",
50
+ "level": "must",
51
+ "statement": "Load styles.css or core.css plus aspect-ratio.css and the stylesheet for every rendered child component."
52
+ }
53
+ ],
54
+ "commonMistakes": [
55
+ {
56
+ "mistake": "Treating AspectRatio as Image or video, moving the child's name to Root, passing height divided by width, or relying on invalid ratio input.",
57
+ "correction": "Keep Root structural, retain semantic native children, and pass a deliberate positive width/height ratio."
58
+ },
59
+ {
60
+ "mistake": "Assuming Root sizes or object-fits the child or clipping a child's focus ring.",
61
+ "correction": "Size and fit the child explicitly and use visible overflow or inset focus when interaction reaches the frame edge."
62
+ }
63
+ ],
64
+ "validation": [
65
+ "Verify default, square, portrait, and wide ratios; invalid normalization; reserved layout before loading; all variants/radii/overflow modes; authoritative ratio with other consumer styles preserved; native props; refs; and composition.",
66
+ "Inspect final DOM for no Root role or ARIA and correct child image, iframe, video, keyboard, focus, captions, and loading semantics.",
67
+ "Verify narrow width, responsive external CSS, zoom, full-radius geometry, clipping, RTL neutrality, light/dark appearance, forced colors, and focus visibility for interactive children."
68
+ ],
69
+ "related": [
70
+ {
71
+ "kind": "package",
72
+ "package": "@flowstack-ui/atom",
73
+ "id": "aspect-ratio",
74
+ "versionPolicy": "installed-exact"
75
+ },
76
+ "image",
77
+ "surface",
78
+ "skeleton"
79
+ ]
80
+ }
@@ -0,0 +1,45 @@
1
+ # AspectRatio agent guide
2
+
3
+ ## Purpose
4
+
5
+ Reserve finished stable width-to-height geometry and optional neutral frame paint for media, embeds, or placeholders while Atom owns the authoritative ratio and children retain all semantics and interaction.
6
+
7
+ ## Use when
8
+
9
+ - An image, video, iframe, preview, placeholder, or authored content region needs a predictable box before content loads or a consistent clipped frame.
10
+
11
+ ## Choose something else when
12
+
13
+ - Intrinsic dimensions already provide the intended layout, image loading and fallback behavior is needed, the content is a general panel, or a loading placeholder owns the job. Use the semantic native media element, Image, Surface, or Skeleton.
14
+
15
+ ## Required composition
16
+
17
+ - Wrap one semantic content region in AspectRatio.Root, pass a finite positive width-divided-by-height ratio when 16/9 is not correct, and choose plain, subtle, or outline plus radius and overflow. Size a child explicitly when it should fill the reserved box.
18
+ - Keep image alt text, iframe title, media controls and captions, focus, loading, and interaction on the child. Choose overflow=visible or an inset child focus treatment whenever clipping would hide focus.
19
+
20
+ ## Rules
21
+
22
+ - **MUST:** Treat Root as geometry and optional frame paint only; do not assign it media roles, accessible names, loading state, focus, or interaction owned by its child.
23
+ - **MUST:** Express ratio as width divided by height and pass a finite positive number; understand that Atom normalizes zero, negative, NaN, and infinite values to 16/9.
24
+ - **MUST:** Give contained images appropriate alt text, iframes descriptive titles, and interactive media its native controls, keyboard behavior, captions, and visible focus.
25
+ - **MUST:** Do not override style.aspectRatio because Atom's ratio prop remains authoritative; use Brick variant, radius, overflow, and public frame variables for visual customization.
26
+ - **MUST:** Keep Root contained at available inline size and author responsive ratio changes outside the scalar prop; verify clipped children, full radius, narrow widths, and focus at zoom rather than assuming Root stretches or crops them.
27
+ - **MUST:** Load styles.css or core.css plus aspect-ratio.css and the stylesheet for every rendered child component.
28
+
29
+ ## Common mistakes
30
+
31
+ - **Avoid:** Treating AspectRatio as Image or video, moving the child's name to Root, passing height divided by width, or relying on invalid ratio input. **Instead:** Keep Root structural, retain semantic native children, and pass a deliberate positive width/height ratio.
32
+ - **Avoid:** Assuming Root sizes or object-fits the child or clipping a child's focus ring. **Instead:** Size and fit the child explicitly and use visible overflow or inset focus when interaction reaches the frame edge.
33
+
34
+ ## Validation checklist
35
+
36
+ - Verify default, square, portrait, and wide ratios; invalid normalization; reserved layout before loading; all variants/radii/overflow modes; authoritative ratio with other consumer styles preserved; native props; refs; and composition.
37
+ - Inspect final DOM for no Root role or ARIA and correct child image, iframe, video, keyboard, focus, captions, and loading semantics.
38
+ - Verify narrow width, responsive external CSS, zoom, full-radius geometry, clipping, RTL neutrality, light/dark appearance, forced colors, and focus visibility for interactive children.
39
+
40
+ ## Related guidance
41
+
42
+ - `@flowstack-ui/atom/agents/aspect-ratio`
43
+ - `image`
44
+ - `surface`
45
+ - `skeleton`
@@ -0,0 +1,92 @@
1
+ {
2
+ "schema": "flowstack.agent-component.v1",
3
+ "id": "avatar",
4
+ "name": "Avatar",
5
+ "package": "@flowstack-ui/brick",
6
+ "layer": "brick",
7
+ "kind": "component",
8
+ "purpose": "Present one compact person or entity identity with a finished fixed-square image/fallback recipe and optional visual status ring.",
9
+ "useWhen": [
10
+ "A person, organization, workspace, or other named entity needs a compact fixed-square identity token with explicit fallback content."
11
+ ],
12
+ "avoidWhen": [
13
+ {
14
+ "condition": "A larger editorial or profile portrait needs an authored aspect ratio, crop, focal position, or responsive measure.",
15
+ "useInstead": "Image"
16
+ },
17
+ {
18
+ "condition": "A count or dot must attach to an identity.",
19
+ "useInstead": "NotificationBadge composed around Avatar"
20
+ }
21
+ ],
22
+ "composition": [
23
+ "Provide explicit alt and fallback; keep Avatar passive and let an owning Button or Link provide interaction, focus, and the functional accessible name.",
24
+ "Keep visible identity or status text nearby when the image or status ring alone would be ambiguous or consequential."
25
+ ],
26
+ "rules": [
27
+ {
28
+ "id": "avatar-compact-identity",
29
+ "level": "must",
30
+ "statement": "Use Avatar for compact fixed-square identity presentation, not generic media or larger editorial portraits."
31
+ },
32
+ {
33
+ "id": "avatar-alt-context",
34
+ "level": "must",
35
+ "statement": "Decide alt from context: preserve meaningful identity when Avatar adds it, and use alt=\"\" only when adjacent text or the owning control already supplies the same identity."
36
+ },
37
+ {
38
+ "id": "avatar-source-state",
39
+ "level": "must",
40
+ "statement": "Pass the same source to the Atom-backed Root and Image path, preserve idle/loading/loaded/error state, and keep explicit fallback content durable through missing, changed, delayed, and failed images."
41
+ },
42
+ {
43
+ "id": "avatar-explicit-fallback",
44
+ "level": "must",
45
+ "statement": "Supply explicit localized fallback content; do not generate initials or infer identity from a filename."
46
+ },
47
+ {
48
+ "id": "avatar-passive",
49
+ "level": "must",
50
+ "statement": "Keep Avatar passive; wrap it with the public Button or Link that owns any action or destination."
51
+ },
52
+ {
53
+ "id": "avatar-status-text",
54
+ "level": "must",
55
+ "statement": "Provide separate accessible status text when a status ring communicates meaningful availability."
56
+ },
57
+ {
58
+ "id": "avatar-named-size",
59
+ "level": "must",
60
+ "statement": "Choose the nearest named Avatar size, including 2xl through 5xl for larger square profile identities, instead of overriding --brick-avatar-size inline; use Image for authored non-square portrait media."
61
+ },
62
+ {
63
+ "id": "avatar-css",
64
+ "level": "must",
65
+ "statement": "Load styles.css or core.css plus avatar.css."
66
+ }
67
+ ],
68
+ "commonMistakes": [
69
+ {
70
+ "mistake": "Forcing a large 4:5 profile portrait into Avatar, using alt=\"\" merely because a name appears somewhere nearby, generating fallback initials inside Brick, or treating the status ring as an announcement.",
71
+ "correction": "Use Image for authored portrait media, make the alt decision from the specific context, provide explicit fallback content, and keep meaningful status in text."
72
+ }
73
+ ],
74
+ "validation": [
75
+ "Check missing, idle, loading, loaded, changed-source, and error paths; delayed fallback timing; fixed square size; crop; informative and decorative naming; passive semantics; nearby identity/status text; light/dark/forced colors; zoom; and RTL.",
76
+ "Confirm a named Avatar size is used, CSS is loaded, and any owning Button, Link, or NotificationBadge preserves its own public contract."
77
+ ],
78
+ "related": [
79
+ {
80
+ "kind": "package",
81
+ "package": "@flowstack-ui/atom",
82
+ "id": "avatar",
83
+ "versionPolicy": "installed-exact"
84
+ },
85
+ "image",
86
+ "button",
87
+ "link",
88
+ "notification-badge",
89
+ "badge",
90
+ "status"
91
+ ]
92
+ }