@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,94 @@
1
+ {
2
+ "schema": "flowstack.agent-component.v1",
3
+ "id": "hover-card",
4
+ "name": "HoverCard",
5
+ "package": "@flowstack-ui/brick",
6
+ "layer": "brick",
7
+ "kind": "component",
8
+ "purpose": "Present a finished supplemental, nonessential, non-interactive preview from a genuine link or similarly meaningful trigger while Atom owns hover, focus-visible, dismissal, portal, and positioning behavior.",
9
+ "useWhen": [
10
+ "A genuine link or other focusable subject benefits from a richer passive preview whose information is redundant with the destination or visible page."
11
+ ],
12
+ "avoidWhen": [
13
+ {
14
+ "condition": "The content is a brief text hint, contains controls or required actions, must hold focus, or is essential on touch and non-hover input.",
15
+ "useInstead": "Tooltip, Popover, Dialog, or visible inline content"
16
+ }
17
+ ],
18
+ "composition": [
19
+ "Compose HoverCard.Root with HoverCard.Trigger asChild around a genuine semantic link, plus HoverCard.Portal and HoverCard.Content; add HoverCard.Arrow only when the styled preview needs a pointer. Content may contain passive Brick text, Avatar, Badge, and layout components but no interactive descendants.",
20
+ "Choose Content size sm, md, or lg from preview measure. Brick keeps non-Arrow children in its private scrolling viewport and Arrow as a direct Content child; do not target the private viewport. Reproduce any local Appearance scope on portalled Content."
21
+ ],
22
+ "rules": [
23
+ {
24
+ "id": "hover-card-supplemental",
25
+ "level": "must",
26
+ "statement": "Keep every essential fact and required action available outside Content because touch does not open HoverCard and the preview is not promised to assistive technology."
27
+ },
28
+ {
29
+ "id": "hover-card-noninteractive",
30
+ "level": "must",
31
+ "statement": "Do not put links, buttons, inputs, menus, or required interaction inside Content; use Popover for interactive floating content."
32
+ },
33
+ {
34
+ "id": "hover-card-trigger-native",
35
+ "level": "must",
36
+ "statement": "Preserve Trigger's genuine native destination, complete accessible name, action, and tab order through asChild or render; do not add popup, expanded, controls, or dialog semantics."
37
+ },
38
+ {
39
+ "id": "hover-card-input-contract",
40
+ "level": "must",
41
+ "statement": "Preserve Atom's mouse-capable hover, focus-visible opening, delays, safe pointer corridor, Escape handling, and touch and compatibility-event suppression; touch must retain the native Trigger action without opening the preview."
42
+ },
43
+ {
44
+ "id": "hover-card-content-anatomy",
45
+ "level": "must",
46
+ "statement": "Keep Content generic and nonsemantic, choose size only for bounded measure, let the private viewport own constrained scrolling, and keep optional Arrow as a direct Content child."
47
+ },
48
+ {
49
+ "id": "hover-card-positioning",
50
+ "level": "should",
51
+ "statement": "Style and validate from the collision-resolved data-side and available viewport bounds rather than assuming the requested placement always wins."
52
+ },
53
+ {
54
+ "id": "hover-card-theme-scope",
55
+ "level": "must",
56
+ "statement": "When Portal leaves a local Appearance scope, reproduce that scope on Content or target a portal container inside it."
57
+ },
58
+ {
59
+ "id": "hover-card-css",
60
+ "level": "must",
61
+ "statement": "Load styles.css or core.css plus hover-card.css and every composed child component stylesheet."
62
+ }
63
+ ],
64
+ "commonMistakes": [
65
+ {
66
+ "mistake": "Putting a profile action or essential fact only in HoverCard, expecting touch to open it, or adding popup ARIA relationships.",
67
+ "correction": "Keep the preview passive and redundant, preserve the trigger destination, and use Popover or visible content when users must interact or access the information."
68
+ },
69
+ {
70
+ "mistake": "Using HoverCard for a short label, targeting its private viewport, or assuming portalled Content inherits local Appearance.",
71
+ "correction": "Use Tooltip for brief hints, customize only public parts and tokens, and make the portal scope explicit."
72
+ }
73
+ ],
74
+ "validation": [
75
+ "Verify the genuine Trigger destination and name, controlled and disabled state, mouse hover and focus-visible opening, delays, Trigger-to-Content pointer corridor, Escape, focus stability, and that touch taps and long presses preserve native Trigger activation without opening.",
76
+ "Audit Content for no essential or interactive descendants and no popup ARIA; verify portal and render composition, three bounded sizes, private scrolling, direct optional Arrow, collision flips and shifts, and available-size containment.",
77
+ "Verify 256px containment, zoom, long localization, LTR and RTL, reduced motion, forced colors, light and dark portalled appearance, and complete CSS."
78
+ ],
79
+ "related": [
80
+ {
81
+ "kind": "package",
82
+ "package": "@flowstack-ui/atom",
83
+ "id": "hover-card",
84
+ "versionPolicy": "installed-exact"
85
+ },
86
+ "tooltip",
87
+ "popover",
88
+ "dialog",
89
+ "link",
90
+ "avatar",
91
+ "badge",
92
+ "appearance"
93
+ ]
94
+ }
@@ -0,0 +1,51 @@
1
+ # HoverCard agent guide
2
+
3
+ ## Purpose
4
+
5
+ Present a finished supplemental, nonessential, non-interactive preview from a genuine link or similarly meaningful trigger while Atom owns hover, focus-visible, dismissal, portal, and positioning behavior.
6
+
7
+ ## Use when
8
+
9
+ - A genuine link or other focusable subject benefits from a richer passive preview whose information is redundant with the destination or visible page.
10
+
11
+ ## Choose something else when
12
+
13
+ - The content is a brief text hint, contains controls or required actions, must hold focus, or is essential on touch and non-hover input. Use Tooltip, Popover, Dialog, or visible inline content.
14
+
15
+ ## Required composition
16
+
17
+ - Compose HoverCard.Root with HoverCard.Trigger asChild around a genuine semantic link, plus HoverCard.Portal and HoverCard.Content; add HoverCard.Arrow only when the styled preview needs a pointer. Content may contain passive Brick text, Avatar, Badge, and layout components but no interactive descendants.
18
+ - Choose Content size sm, md, or lg from preview measure. Brick keeps non-Arrow children in its private scrolling viewport and Arrow as a direct Content child; do not target the private viewport. Reproduce any local Appearance scope on portalled Content.
19
+
20
+ ## Rules
21
+
22
+ - **MUST:** Keep every essential fact and required action available outside Content because touch does not open HoverCard and the preview is not promised to assistive technology.
23
+ - **MUST:** Do not put links, buttons, inputs, menus, or required interaction inside Content; use Popover for interactive floating content.
24
+ - **MUST:** Preserve Trigger's genuine native destination, complete accessible name, action, and tab order through asChild or render; do not add popup, expanded, controls, or dialog semantics.
25
+ - **MUST:** Preserve Atom's mouse-capable hover, focus-visible opening, delays, safe pointer corridor, Escape handling, and touch and compatibility-event suppression; touch must retain the native Trigger action without opening the preview.
26
+ - **MUST:** Keep Content generic and nonsemantic, choose size only for bounded measure, let the private viewport own constrained scrolling, and keep optional Arrow as a direct Content child.
27
+ - **SHOULD:** Style and validate from the collision-resolved data-side and available viewport bounds rather than assuming the requested placement always wins.
28
+ - **MUST:** When Portal leaves a local Appearance scope, reproduce that scope on Content or target a portal container inside it.
29
+ - **MUST:** Load styles.css or core.css plus hover-card.css and every composed child component stylesheet.
30
+
31
+ ## Common mistakes
32
+
33
+ - **Avoid:** Putting a profile action or essential fact only in HoverCard, expecting touch to open it, or adding popup ARIA relationships. **Instead:** Keep the preview passive and redundant, preserve the trigger destination, and use Popover or visible content when users must interact or access the information.
34
+ - **Avoid:** Using HoverCard for a short label, targeting its private viewport, or assuming portalled Content inherits local Appearance. **Instead:** Use Tooltip for brief hints, customize only public parts and tokens, and make the portal scope explicit.
35
+
36
+ ## Validation checklist
37
+
38
+ - Verify the genuine Trigger destination and name, controlled and disabled state, mouse hover and focus-visible opening, delays, Trigger-to-Content pointer corridor, Escape, focus stability, and that touch taps and long presses preserve native Trigger activation without opening.
39
+ - Audit Content for no essential or interactive descendants and no popup ARIA; verify portal and render composition, three bounded sizes, private scrolling, direct optional Arrow, collision flips and shifts, and available-size containment.
40
+ - Verify 256px containment, zoom, long localization, LTR and RTL, reduced motion, forced colors, light and dark portalled appearance, and complete CSS.
41
+
42
+ ## Related guidance
43
+
44
+ - `@flowstack-ui/atom/agents/hover-card`
45
+ - `tooltip`
46
+ - `popover`
47
+ - `dialog`
48
+ - `link`
49
+ - `avatar`
50
+ - `badge`
51
+ - `appearance`
@@ -5,29 +5,39 @@
5
5
  "package": "@flowstack-ui/brick",
6
6
  "layer": "brick",
7
7
  "kind": "component",
8
- "purpose": "Provide a compact finished action control for a single recognizable icon with an explicit accessible name.",
8
+ "purpose": "Provide a compact finished icon-only action or deliberate icon-only navigation control with an explicit accessible name.",
9
9
  "useWhen": [
10
- "A familiar icon represents one action and visible button text would be redundant in the available space."
10
+ "A familiar icon represents one action and visible button text would be redundant in the available space.",
11
+ "A compact rail or similarly constrained navigation context deliberately uses a recognizable icon-only destination."
11
12
  ],
12
13
  "avoidWhen": [
13
14
  {
14
- "condition": "The control navigates, needs visible explanatory text, or is an arbitrary clickable surface.",
15
- "useInstead": "Link, Button, or another owning component"
15
+ "condition": "A destination needs persistent visible explanatory text or should read as an ordinary inline or standalone link.",
16
+ "useInstead": "Link or a navigation collection's Link part"
17
+ },
18
+ {
19
+ "condition": "The control represents a persistent pressed selection.",
20
+ "useInstead": "Toggle"
16
21
  }
17
22
  ],
18
23
  "composition": [
19
- "Place one decorative Icon or SVG inside IconButton and provide an accessible label through the component's naming API."
24
+ "Place one decorative Icon or SVG inside IconButton, provide an accessible label through the component's naming API, and supply href when the control is a destination. Tooltip may supplement an unfamiliar icon but never replaces the control name."
20
25
  ],
21
26
  "rules": [
22
27
  {
23
28
  "id": "icon-button-name",
24
29
  "level": "must",
25
- "statement": "Give every IconButton a concise discernible accessible name; the icon alone is not a name."
30
+ "statement": "Give every IconButton a concise discernible accessible name; the icon alone and a portalled Tooltip are not names."
31
+ },
32
+ {
33
+ "id": "icon-button-semantics",
34
+ "level": "must",
35
+ "statement": "Use the default button path for operations and supply href for a deliberate icon-only navigation destination so the final host remains a native anchor."
26
36
  },
27
37
  {
28
- "id": "icon-button-action",
38
+ "id": "icon-button-expanded-feedback",
29
39
  "level": "must",
30
- "statement": "Use IconButton for actions, not ordinary navigation."
40
+ "statement": "Keep temporary aria-expanded feedback distinct from a persistent pressed selection; use Toggle when the state itself is the user-controlled value."
31
41
  },
32
42
  {
33
43
  "id": "icon-button-css",
@@ -37,17 +47,18 @@
37
47
  ],
38
48
  "commonMistakes": [
39
49
  {
40
- "mistake": "Using a random glyph, code icon for GitHub, or unlabeled SVG inside a generic button.",
41
- "correction": "Use the correct icon asset in a named IconButton."
50
+ "mistake": "Using a random glyph, code icon for GitHub, an unlabeled SVG inside a generic button, a command button without href for a route, or Tooltip as the only name.",
51
+ "correction": "Use the correct icon asset in a named IconButton, supply href for navigation, and keep Tooltip supplemental."
42
52
  }
43
53
  ],
44
54
  "validation": [
45
- "Check accessible name, icon alignment, touch target, focus ring, disabled/loading states, contrast, and forced colors.",
46
- "Confirm component CSS is loaded."
55
+ "Check accessible name, button versus anchor semantics, href, icon alignment, touch target, focus ring, Tooltip discovery when present, expanded disclosure feedback, disabled/loading states, contrast, and forced colors.",
56
+ "Confirm component CSS and every composed Tooltip or Icon stylesheet are loaded."
47
57
  ],
48
58
  "related": [
49
59
  "button",
50
60
  "icon",
61
+ "link",
51
62
  "toolbar",
52
63
  "tooltip"
53
64
  ]
@@ -2,38 +2,42 @@
2
2
 
3
3
  ## Purpose
4
4
 
5
- Provide a compact finished action control for a single recognizable icon with an explicit accessible name.
5
+ Provide a compact finished icon-only action or deliberate icon-only navigation control with an explicit accessible name.
6
6
 
7
7
  ## Use when
8
8
 
9
9
  - A familiar icon represents one action and visible button text would be redundant in the available space.
10
+ - A compact rail or similarly constrained navigation context deliberately uses a recognizable icon-only destination.
10
11
 
11
12
  ## Choose something else when
12
13
 
13
- - The control navigates, needs visible explanatory text, or is an arbitrary clickable surface. Use Link, Button, or another owning component.
14
+ - A destination needs persistent visible explanatory text or should read as an ordinary inline or standalone link. Use Link or a navigation collection's Link part.
15
+ - The control represents a persistent pressed selection. Use Toggle.
14
16
 
15
17
  ## Required composition
16
18
 
17
- - Place one decorative Icon or SVG inside IconButton and provide an accessible label through the component's naming API.
19
+ - Place one decorative Icon or SVG inside IconButton, provide an accessible label through the component's naming API, and supply href when the control is a destination. Tooltip may supplement an unfamiliar icon but never replaces the control name.
18
20
 
19
21
  ## Rules
20
22
 
21
- - **MUST:** Give every IconButton a concise discernible accessible name; the icon alone is not a name.
22
- - **MUST:** Use IconButton for actions, not ordinary navigation.
23
+ - **MUST:** Give every IconButton a concise discernible accessible name; the icon alone and a portalled Tooltip are not names.
24
+ - **MUST:** Use the default button path for operations and supply href for a deliberate icon-only navigation destination so the final host remains a native anchor.
25
+ - **MUST:** Keep temporary aria-expanded feedback distinct from a persistent pressed selection; use Toggle when the state itself is the user-controlled value.
23
26
  - **MUST:** Load styles.css or core.css plus icon-button.css and icon.css when using Brick Icon.
24
27
 
25
28
  ## Common mistakes
26
29
 
27
- - **Avoid:** Using a random glyph, code icon for GitHub, or unlabeled SVG inside a generic button. **Instead:** Use the correct icon asset in a named IconButton.
30
+ - **Avoid:** Using a random glyph, code icon for GitHub, an unlabeled SVG inside a generic button, a command button without href for a route, or Tooltip as the only name. **Instead:** Use the correct icon asset in a named IconButton, supply href for navigation, and keep Tooltip supplemental.
28
31
 
29
32
  ## Validation checklist
30
33
 
31
- - Check accessible name, icon alignment, touch target, focus ring, disabled/loading states, contrast, and forced colors.
32
- - Confirm component CSS is loaded.
34
+ - Check accessible name, button versus anchor semantics, href, icon alignment, touch target, focus ring, Tooltip discovery when present, expanded disclosure feedback, disabled/loading states, contrast, and forced colors.
35
+ - Confirm component CSS and every composed Tooltip or Icon stylesheet are loaded.
33
36
 
34
37
  ## Related guidance
35
38
 
36
39
  - `button`
37
40
  - `icon`
41
+ - `link`
38
42
  - `toolbar`
39
43
  - `tooltip`
@@ -7,9 +7,13 @@
7
7
  "kind": "component",
8
8
  "purpose": "Provide styled resilient media with Atom loading/fallback behavior, sizing recipes, and accessible image semantics.",
9
9
  "useWhen": [
10
- "A product image, brand asset, illustration, or content image needs Brick sizing, fit, radius, loading, or fallback presentation."
10
+ "A product image, brand asset, illustration, content image, or larger editorial/profile portrait needs Brick sizing, authored aspect ratio, fit, focal position, radius, loading, or fallback presentation."
11
11
  ],
12
12
  "avoidWhen": [
13
+ {
14
+ "condition": "A person or entity needs a compact fixed-square identity token with explicit fallback content.",
15
+ "useInstead": "Avatar"
16
+ },
13
17
  {
14
18
  "condition": "A framework optimizer provides a required measured optimization Brick does not expose.",
15
19
  "useInstead": "a documented Image adapter that preserves semantics and reports the capability gap"
@@ -17,7 +21,8 @@
17
21
  ],
18
22
  "composition": [
19
23
  "Compose Image.Content and optional Image.Fallback inside Image.Root; use Brick Stack or layout components around it rather than wrapper spans for alignment.",
20
- "In a React Server Component, import ImageRoot, ImageContent, and ImageFallback directly; the compound Image namespace is intended for client module composition."
24
+ "In a React Server Component, import ImageRoot, ImageContent, and ImageFallback directly; the compound Image namespace is intended for client module composition.",
25
+ "Keep source state on Image.Root, then pass intrinsic width and height plus native responsive delivery props such as srcSet, sizes, loading, decoding, and fetchPriority to Image.Content."
21
26
  ],
22
27
  "rules": [
23
28
  {
@@ -30,10 +35,30 @@
30
35
  "level": "must",
31
36
  "statement": "Provide meaningful alt text, or alt=\"\" for a decorative image."
32
37
  },
38
+ {
39
+ "id": "image-portrait-alt",
40
+ "level": "must",
41
+ "statement": "For a profile portrait, preserve the person's name as alt when the portrait communicates identity; use alt=\"\" only when that specific portrait is intentionally decorative."
42
+ },
33
43
  {
34
44
  "id": "image-layout",
35
- "level": "should",
36
- "statement": "Reserve dimensions or aspect ratio to prevent layout shift."
45
+ "level": "must",
46
+ "statement": "Reserve intrinsic width and height or an authored parent aspect ratio so image arrival does not create layout shift."
47
+ },
48
+ {
49
+ "id": "image-responsive-delivery",
50
+ "level": "must",
51
+ "statement": "When a rendered slot changes materially by viewport or container, provide source candidates and an accurate sizes contract so the browser does not receive one oversized raster by default."
52
+ },
53
+ {
54
+ "id": "image-lcp-delivery",
55
+ "level": "must",
56
+ "statement": "Do not lazy-load a measured or strongly expected LCP image; keep it directly discoverable, load it eagerly, and use high fetch priority only for the small number of truly critical images."
57
+ },
58
+ {
59
+ "id": "image-deferred-delivery",
60
+ "level": "must",
61
+ "statement": "Use native lazy loading for ordinary deferred images; when an exact application proximity or intent boundary is required, let the application decide when to attach the source because loading=lazy remains a browser scheduling hint."
37
62
  },
38
63
  {
39
64
  "id": "image-parent-fill",
@@ -58,12 +83,13 @@
58
83
  ],
59
84
  "commonMistakes": [
60
85
  {
61
- "mistake": "Using next/image automatically, wrapping Image in spans for ordinary alignment, or duplicating the caption in alt text.",
62
- "correction": "Start with Brick Image, use Brick layout components, and adapt only for a measured missing optimizer capability."
86
+ "mistake": "Using next/image automatically, forcing a larger authored profile portrait into Avatar's compact square recipe, wrapping Image in spans for ordinary alignment, applying one blanket alt decision to all portraits, sending one desktop raster to every slot, or lazy-loading the likely LCP image.",
87
+ "correction": "Start with Brick Image for larger authored media, use Avatar for compact identity, decide alt from each image's context, reserve geometry, provide responsive candidates and accurate sizes, keep critical media discoverable, and adapt only for a measured missing optimizer capability."
63
88
  }
64
89
  ],
65
90
  "validation": [
66
- "Check loaded, loading, error, cached, responsive size, parent-fill geometry, crop, layout shift, alt text, contrast of fallback content, and RTL where relevant.",
91
+ "Check loaded, loading, error, cached, narrow and wide source selection, transferred bytes, priority, parent-fill geometry, crop, layout shift, contextual alt text—including identity-bearing and intentionally decorative portraits—contrast of fallback content, and RTL where relevant.",
92
+ "For delivery-sensitive media, verify cold, warm, constrained-network, blocked-image, first-viewport, and post-proximity behavior; keep localhost timing separate from production or field evidence.",
67
93
  "Confirm CSS and any adapter report are complete."
68
94
  ],
69
95
  "related": [
@@ -6,22 +6,28 @@ Provide styled resilient media with Atom loading/fallback behavior, sizing recip
6
6
 
7
7
  ## Use when
8
8
 
9
- - A product image, brand asset, illustration, or content image needs Brick sizing, fit, radius, loading, or fallback presentation.
9
+ - A product image, brand asset, illustration, content image, or larger editorial/profile portrait needs Brick sizing, authored aspect ratio, fit, focal position, radius, loading, or fallback presentation.
10
10
 
11
11
  ## Choose something else when
12
12
 
13
+ - A person or entity needs a compact fixed-square identity token with explicit fallback content. Use Avatar.
13
14
  - A framework optimizer provides a required measured optimization Brick does not expose. Use a documented Image adapter that preserves semantics and reports the capability gap.
14
15
 
15
16
  ## Required composition
16
17
 
17
18
  - Compose Image.Content and optional Image.Fallback inside Image.Root; use Brick Stack or layout components around it rather than wrapper spans for alignment.
18
19
  - In a React Server Component, import ImageRoot, ImageContent, and ImageFallback directly; the compound Image namespace is intended for client module composition.
20
+ - Keep source state on Image.Root, then pass intrinsic width and height plus native responsive delivery props such as srcSet, sizes, loading, decoding, and fetchPriority to Image.Content.
19
21
 
20
22
  ## Rules
21
23
 
22
24
  - **MUST:** Use Brick Image for ordinary interface media; document any native or framework image fallback and the missing capability.
23
25
  - **MUST:** Provide meaningful alt text, or alt="" for a decorative image.
24
- - **SHOULD:** Reserve dimensions or aspect ratio to prevent layout shift.
26
+ - **MUST:** For a profile portrait, preserve the person's name as alt when the portrait communicates identity; use alt="" only when that specific portrait is intentionally decorative.
27
+ - **MUST:** Reserve intrinsic width and height or an authored parent aspect ratio so image arrival does not create layout shift.
28
+ - **MUST:** When a rendered slot changes materially by viewport or container, provide source candidates and an accurate sizes contract so the browser does not receive one oversized raster by default.
29
+ - **MUST:** Do not lazy-load a measured or strongly expected LCP image; keep it directly discoverable, load it eagerly, and use high fetch priority only for the small number of truly critical images.
30
+ - **MUST:** Use native lazy loading for ordinary deferred images; when an exact application proximity or intent boundary is required, let the application decide when to attach the source because loading=lazy remains a browser scheduling hint.
25
31
  - **MUST:** Use explicit fill when Image must consume a parent-established block size, such as Surface.Media; retain fit and position for the intended crop.
26
32
  - **MUST:** Name and preserve the parent sizing box when fill is used; Image propagates into available geometry but does not create that geometry.
27
33
  - **MUST:** Load styles.css or core.css plus image.css.
@@ -29,11 +35,12 @@ Provide styled resilient media with Atom loading/fallback behavior, sizing recip
29
35
 
30
36
  ## Common mistakes
31
37
 
32
- - **Avoid:** Using next/image automatically, wrapping Image in spans for ordinary alignment, or duplicating the caption in alt text. **Instead:** Start with Brick Image, use Brick layout components, and adapt only for a measured missing optimizer capability.
38
+ - **Avoid:** Using next/image automatically, forcing a larger authored profile portrait into Avatar's compact square recipe, wrapping Image in spans for ordinary alignment, applying one blanket alt decision to all portraits, sending one desktop raster to every slot, or lazy-loading the likely LCP image. **Instead:** Start with Brick Image for larger authored media, use Avatar for compact identity, decide alt from each image's context, reserve geometry, provide responsive candidates and accurate sizes, keep critical media discoverable, and adapt only for a measured missing optimizer capability.
33
39
 
34
40
  ## Validation checklist
35
41
 
36
- - Check loaded, loading, error, cached, responsive size, parent-fill geometry, crop, layout shift, alt text, contrast of fallback content, and RTL where relevant.
42
+ - Check loaded, loading, error, cached, narrow and wide source selection, transferred bytes, priority, parent-fill geometry, crop, layout shift, contextual alt text—including identity-bearing and intentionally decorative portraits—contrast of fallback content, and RTL where relevant.
43
+ - For delivery-sensitive media, verify cold, warm, constrained-network, blocked-image, first-viewport, and post-proximity behavior; keep localhost timing separate from production or field evidence.
37
44
  - Confirm CSS and any adapter report are complete.
38
45
 
39
46
  ## Related guidance
@@ -16,7 +16,7 @@
16
16
  }
17
17
  ],
18
18
  "composition": [
19
- "Place Input inside one Field.Root after Field.Label; provide name, type, and autocomplete appropriate to the data."
19
+ "Place Input inside one Field.Root after Field.Label; provide name, type, and autocomplete appropriate to the data. Use outline when the containing surface should remain visible and soft when Input should own a filled plane."
20
20
  ],
21
21
  "rules": [
22
22
  {
@@ -41,7 +41,12 @@
41
41
  "Test focus, entry, autofill, invalid/disabled states, zoom, and both appearances."
42
42
  ],
43
43
  "related": [
44
- "@flowstack-ui/atom/agents/input",
44
+ {
45
+ "kind": "package",
46
+ "package": "@flowstack-ui/atom",
47
+ "id": "input",
48
+ "versionPolicy": "installed-exact"
49
+ },
45
50
  "field",
46
51
  "textarea"
47
52
  ]
@@ -14,7 +14,7 @@ Render finished native single-line text entry with Brick sizing, states, and Ato
14
14
 
15
15
  ## Required composition
16
16
 
17
- - Place Input inside one Field.Root after Field.Label; provide name, type, and autocomplete appropriate to the data.
17
+ - Place Input inside one Field.Root after Field.Label; provide name, type, and autocomplete appropriate to the data. Use outline when the containing surface should remain visible and soft when Input should own a filled plane.
18
18
 
19
19
  ## Rules
20
20