@flood-md/agent 0.2.9 → 0.2.10

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 (374) hide show
  1. package/DESIGN.md +26 -4
  2. package/README.md +35 -4
  3. package/SKILL.md +31 -0
  4. package/dist/catalog.json +7136 -0
  5. package/dist/materials/component-accordion.md +42 -0
  6. package/dist/materials/component-alert-dialog.md +46 -0
  7. package/dist/materials/component-alert.md +41 -0
  8. package/dist/materials/component-aspect-ratio.md +36 -0
  9. package/dist/materials/component-avatar-group.md +39 -0
  10. package/dist/materials/component-avatar.md +40 -0
  11. package/dist/materials/component-badge.md +37 -0
  12. package/dist/materials/component-blockquote.md +35 -0
  13. package/dist/materials/component-breadcrumb.md +36 -0
  14. package/dist/materials/component-button-group.md +39 -0
  15. package/dist/materials/component-button.md +43 -0
  16. package/dist/materials/component-calendar.md +59 -0
  17. package/dist/materials/component-card.md +46 -0
  18. package/dist/materials/component-center.md +39 -0
  19. package/dist/materials/component-character-count.md +42 -0
  20. package/dist/materials/component-check-card.md +39 -0
  21. package/dist/materials/component-checkbox-group.md +48 -0
  22. package/dist/materials/component-checkbox.md +37 -0
  23. package/dist/materials/component-code-snippet.md +37 -0
  24. package/dist/materials/component-collapsible.md +40 -0
  25. package/dist/materials/component-color-picker.md +49 -0
  26. package/dist/materials/component-color-swatch.md +35 -0
  27. package/dist/materials/component-combobox.md +50 -0
  28. package/dist/materials/component-command-list.md +48 -0
  29. package/dist/materials/component-container.md +36 -0
  30. package/dist/materials/component-context-menu.md +43 -0
  31. package/dist/materials/component-copy-button.md +42 -0
  32. package/dist/materials/component-data-list-item.md +40 -0
  33. package/dist/materials/component-data-list.md +38 -0
  34. package/dist/materials/component-data-table.md +58 -0
  35. package/dist/materials/component-date-field.md +57 -0
  36. package/dist/materials/component-date-picker.md +66 -0
  37. package/dist/materials/component-date-range-field.md +62 -0
  38. package/dist/materials/component-date-range-picker.md +72 -0
  39. package/dist/materials/component-date-time-picker.md +60 -0
  40. package/dist/materials/component-date-time-range-picker.md +66 -0
  41. package/dist/materials/component-description-list.md +42 -0
  42. package/dist/materials/component-dialog.md +45 -0
  43. package/dist/materials/component-divider.md +37 -0
  44. package/dist/materials/component-drawer.md +50 -0
  45. package/dist/materials/component-dropzone.md +45 -0
  46. package/dist/materials/component-editable.md +57 -0
  47. package/dist/materials/component-empty-state.md +41 -0
  48. package/dist/materials/component-error-summary.md +40 -0
  49. package/dist/materials/component-field.md +46 -0
  50. package/dist/materials/component-fieldset.md +46 -0
  51. package/dist/materials/component-figure.md +36 -0
  52. package/dist/materials/component-file-input.md +45 -0
  53. package/dist/materials/component-file-item.md +48 -0
  54. package/dist/materials/component-file-list.md +39 -0
  55. package/dist/materials/component-file-meta.md +36 -0
  56. package/dist/materials/component-flood-root.md +33 -0
  57. package/dist/materials/component-grid.md +38 -0
  58. package/dist/materials/component-heading.md +38 -0
  59. package/dist/materials/component-hover-card.md +48 -0
  60. package/dist/materials/component-icon-button.md +41 -0
  61. package/dist/materials/component-icon-slot.md +37 -0
  62. package/dist/materials/component-image-preview.md +50 -0
  63. package/dist/materials/component-image.md +37 -0
  64. package/dist/materials/component-inline-code.md +36 -0
  65. package/dist/materials/component-inline.md +39 -0
  66. package/dist/materials/component-input-group.md +43 -0
  67. package/dist/materials/component-input.md +39 -0
  68. package/dist/materials/component-kbd.md +34 -0
  69. package/dist/materials/component-label.md +37 -0
  70. package/dist/materials/component-link.md +35 -0
  71. package/dist/materials/component-list-box.md +57 -0
  72. package/dist/materials/component-list.md +40 -0
  73. package/dist/materials/component-menu.md +54 -0
  74. package/dist/materials/component-meter.md +43 -0
  75. package/dist/materials/component-metric.md +39 -0
  76. package/dist/materials/component-multi-select.md +52 -0
  77. package/dist/materials/component-navigation-list.md +38 -0
  78. package/dist/materials/component-navigation-tree.md +43 -0
  79. package/dist/materials/component-number-input.md +47 -0
  80. package/dist/materials/component-pagination.md +44 -0
  81. package/dist/materials/component-password-input.md +43 -0
  82. package/dist/materials/component-pin-input.md +45 -0
  83. package/dist/materials/component-popover.md +47 -0
  84. package/dist/materials/component-progress.md +42 -0
  85. package/dist/materials/component-radio-card.md +43 -0
  86. package/dist/materials/component-radio-group.md +49 -0
  87. package/dist/materials/component-radio.md +39 -0
  88. package/dist/materials/component-range-calendar.md +58 -0
  89. package/dist/materials/component-rating.md +46 -0
  90. package/dist/materials/component-resizable-panels.md +48 -0
  91. package/dist/materials/component-scroll-area.md +42 -0
  92. package/dist/materials/component-search-input.md +40 -0
  93. package/dist/materials/component-section.md +42 -0
  94. package/dist/materials/component-segmented-control.md +51 -0
  95. package/dist/materials/component-select.md +45 -0
  96. package/dist/materials/component-skeleton.md +42 -0
  97. package/dist/materials/component-skip-link.md +37 -0
  98. package/dist/materials/component-slider.md +51 -0
  99. package/dist/materials/component-spinner.md +37 -0
  100. package/dist/materials/component-split.md +40 -0
  101. package/dist/materials/component-stack.md +37 -0
  102. package/dist/materials/component-status-indicator.md +38 -0
  103. package/dist/materials/component-steps.md +40 -0
  104. package/dist/materials/component-surface.md +37 -0
  105. package/dist/materials/component-switch.md +35 -0
  106. package/dist/materials/component-table.md +46 -0
  107. package/dist/materials/component-tabs.md +43 -0
  108. package/dist/materials/component-tag-input.md +46 -0
  109. package/dist/materials/component-tag.md +40 -0
  110. package/dist/materials/component-text.md +39 -0
  111. package/dist/materials/component-textarea.md +38 -0
  112. package/dist/materials/component-time-field.md +56 -0
  113. package/dist/materials/component-time-picker.md +60 -0
  114. package/dist/materials/component-timeline.md +38 -0
  115. package/dist/materials/component-toast-region.md +42 -0
  116. package/dist/materials/component-toggle-group.md +44 -0
  117. package/dist/materials/component-toggle.md +39 -0
  118. package/dist/materials/component-toolbar.md +42 -0
  119. package/dist/materials/component-tooltip.md +40 -0
  120. package/dist/materials/component-tree-select.md +56 -0
  121. package/dist/materials/component-tree.md +52 -0
  122. package/dist/materials/component-upload-item.md +52 -0
  123. package/dist/materials/component-upload-list.md +40 -0
  124. package/dist/materials/component-visually-hidden.md +37 -0
  125. package/dist/materials/guide-agent-knowledge.md +88 -0
  126. package/dist/materials/guide-agents.md +96 -0
  127. package/dist/materials/guide-faq.md +84 -0
  128. package/dist/materials/guide-foundations.md +232 -0
  129. package/dist/materials/guide-installation.md +79 -0
  130. package/dist/materials/guide-interface-content.md +76 -0
  131. package/dist/materials/guide-introduction.md +40 -0
  132. package/dist/materials/guide-layout.md +193 -0
  133. package/dist/materials/guide-privacy.md +23 -0
  134. package/dist/materials/guide-project-ui.md +127 -0
  135. package/dist/materials/guide-skills.md +108 -0
  136. package/dist/materials/guide-theming.md +73 -0
  137. package/dist/materials/recipe-command-palette.md +66 -0
  138. package/dist/materials/recipe-filter-bar.md +59 -0
  139. package/dist/materials/recipe-form-submission.md +39 -0
  140. package/dist/materials/recipe-grouped-form.md +66 -0
  141. package/dist/materials/recipe-select-all.md +31 -0
  142. package/dist/materials/recipe-split-button.md +26 -0
  143. package/dist/materials/recipe-table-bulk-actions.md +88 -0
  144. package/dist/materials/recipe-workspace-review.md +134 -0
  145. package/dist/materials/token-sys.color.accent.content.json +41 -0
  146. package/dist/materials/token-sys.color.action.danger.content.json +42 -0
  147. package/dist/materials/token-sys.color.action.ghost.content.json +41 -0
  148. package/dist/materials/token-sys.color.action.ghost.disabled-content.json +41 -0
  149. package/dist/materials/token-sys.color.action.ghost.disabled.json +41 -0
  150. package/dist/materials/token-sys.color.action.ghost.hover.json +41 -0
  151. package/dist/materials/token-sys.color.action.ghost.pressed.json +41 -0
  152. package/dist/materials/token-sys.color.action.ghost.rest.json +41 -0
  153. package/dist/materials/token-sys.color.action.on-surface.content.json +39 -0
  154. package/dist/materials/token-sys.color.action.on-surface.disabled-content.json +39 -0
  155. package/dist/materials/token-sys.color.action.on-surface.disabled.json +39 -0
  156. package/dist/materials/token-sys.color.action.on-surface.hover.json +39 -0
  157. package/dist/materials/token-sys.color.action.on-surface.pressed.json +39 -0
  158. package/dist/materials/token-sys.color.action.on-surface.rest.json +39 -0
  159. package/dist/materials/token-sys.color.action.primary.content.json +39 -0
  160. package/dist/materials/token-sys.color.action.primary.disabled-content.json +39 -0
  161. package/dist/materials/token-sys.color.action.primary.disabled.json +39 -0
  162. package/dist/materials/token-sys.color.action.primary.hover.json +39 -0
  163. package/dist/materials/token-sys.color.action.primary.pressed.json +39 -0
  164. package/dist/materials/token-sys.color.action.primary.rest.json +39 -0
  165. package/dist/materials/token-sys.color.action.subtle.content.json +39 -0
  166. package/dist/materials/token-sys.color.action.subtle.disabled-content.json +39 -0
  167. package/dist/materials/token-sys.color.action.subtle.disabled.json +39 -0
  168. package/dist/materials/token-sys.color.action.subtle.hover.json +39 -0
  169. package/dist/materials/token-sys.color.action.subtle.pressed.json +39 -0
  170. package/dist/materials/token-sys.color.action.subtle.rest.json +39 -0
  171. package/dist/materials/token-sys.color.border.decorative.json +42 -0
  172. package/dist/materials/token-sys.color.border.default.json +39 -0
  173. package/dist/materials/token-sys.color.border.floating.json +39 -0
  174. package/dist/materials/token-sys.color.border.strong.json +39 -0
  175. package/dist/materials/token-sys.color.content.default.json +41 -0
  176. package/dist/materials/token-sys.color.content.helper.json +39 -0
  177. package/dist/materials/token-sys.color.content.subtle.json +43 -0
  178. package/dist/materials/token-sys.color.divider.decorative.json +41 -0
  179. package/dist/materials/token-sys.color.feedback.error.json +39 -0
  180. package/dist/materials/token-sys.color.feedback.info.json +39 -0
  181. package/dist/materials/token-sys.color.feedback.success.json +39 -0
  182. package/dist/materials/token-sys.color.feedback.warning.json +39 -0
  183. package/dist/materials/token-sys.color.field.background.json +39 -0
  184. package/dist/materials/token-sys.color.field.border.json +39 -0
  185. package/dist/materials/token-sys.color.field.boundary.json +39 -0
  186. package/dist/materials/token-sys.color.field.content.json +39 -0
  187. package/dist/materials/token-sys.color.field.disabled-content.json +39 -0
  188. package/dist/materials/token-sys.color.field.disabled.json +39 -0
  189. package/dist/materials/token-sys.color.field.placeholder.json +39 -0
  190. package/dist/materials/token-sys.color.focus.ring.json +39 -0
  191. package/dist/materials/token-sys.color.indicator.accent.json +39 -0
  192. package/dist/materials/token-sys.color.indicator.fill.json +39 -0
  193. package/dist/materials/token-sys.color.indicator.track.json +39 -0
  194. package/dist/materials/token-sys.color.loading.placeholder.json +42 -0
  195. package/dist/materials/token-sys.color.scrollbar.thumb-hover.json +39 -0
  196. package/dist/materials/token-sys.color.scrollbar.thumb.json +39 -0
  197. package/dist/materials/token-sys.color.selection.background.json +39 -0
  198. package/dist/materials/token-sys.color.selection.content.json +39 -0
  199. package/dist/materials/token-sys.color.selection.floating.json +39 -0
  200. package/dist/materials/token-sys.color.shadow.floating.json +39 -0
  201. package/dist/materials/token-sys.color.surface.canvas.json +39 -0
  202. package/dist/materials/token-sys.color.surface.default.json +39 -0
  203. package/dist/materials/token-sys.color.surface.floating-translucent.json +39 -0
  204. package/dist/materials/token-sys.color.surface.floating.json +39 -0
  205. package/dist/materials/token-sys.color.surface.overlay.json +39 -0
  206. package/dist/materials/token-sys.color.surface.raised.json +39 -0
  207. package/dist/materials/token-sys.control.2xl.gap.json +34 -0
  208. package/dist/materials/token-sys.control.2xl.height.json +34 -0
  209. package/dist/materials/token-sys.control.2xl.icon-size.json +34 -0
  210. package/dist/materials/token-sys.control.2xl.line-height.json +31 -0
  211. package/dist/materials/token-sys.control.2xl.padding-inline.json +34 -0
  212. package/dist/materials/token-sys.control.2xl.text-size.json +34 -0
  213. package/dist/materials/token-sys.control.2xs.gap.json +34 -0
  214. package/dist/materials/token-sys.control.2xs.height.json +34 -0
  215. package/dist/materials/token-sys.control.2xs.icon-size.json +34 -0
  216. package/dist/materials/token-sys.control.2xs.line-height.json +31 -0
  217. package/dist/materials/token-sys.control.2xs.padding-inline.json +34 -0
  218. package/dist/materials/token-sys.control.2xs.text-size.json +34 -0
  219. package/dist/materials/token-sys.control.lg.gap.json +34 -0
  220. package/dist/materials/token-sys.control.lg.height.json +34 -0
  221. package/dist/materials/token-sys.control.lg.icon-size.json +34 -0
  222. package/dist/materials/token-sys.control.lg.line-height.json +31 -0
  223. package/dist/materials/token-sys.control.lg.padding-inline.json +34 -0
  224. package/dist/materials/token-sys.control.lg.text-size.json +34 -0
  225. package/dist/materials/token-sys.control.md.gap.json +34 -0
  226. package/dist/materials/token-sys.control.md.height.json +34 -0
  227. package/dist/materials/token-sys.control.md.icon-size.json +34 -0
  228. package/dist/materials/token-sys.control.md.line-height.json +31 -0
  229. package/dist/materials/token-sys.control.md.padding-inline.json +34 -0
  230. package/dist/materials/token-sys.control.md.text-size.json +34 -0
  231. package/dist/materials/token-sys.control.sm.gap.json +34 -0
  232. package/dist/materials/token-sys.control.sm.height.json +34 -0
  233. package/dist/materials/token-sys.control.sm.icon-size.json +34 -0
  234. package/dist/materials/token-sys.control.sm.line-height.json +31 -0
  235. package/dist/materials/token-sys.control.sm.padding-inline.json +34 -0
  236. package/dist/materials/token-sys.control.sm.text-size.json +34 -0
  237. package/dist/materials/token-sys.control.xl.gap.json +34 -0
  238. package/dist/materials/token-sys.control.xl.height.json +34 -0
  239. package/dist/materials/token-sys.control.xl.icon-size.json +34 -0
  240. package/dist/materials/token-sys.control.xl.line-height.json +31 -0
  241. package/dist/materials/token-sys.control.xl.padding-inline.json +34 -0
  242. package/dist/materials/token-sys.control.xl.text-size.json +34 -0
  243. package/dist/materials/token-sys.control.xs.gap.json +34 -0
  244. package/dist/materials/token-sys.control.xs.height.json +34 -0
  245. package/dist/materials/token-sys.control.xs.icon-size.json +34 -0
  246. package/dist/materials/token-sys.control.xs.line-height.json +31 -0
  247. package/dist/materials/token-sys.control.xs.padding-inline.json +34 -0
  248. package/dist/materials/token-sys.control.xs.text-size.json +34 -0
  249. package/dist/materials/token-sys.effect.floating.blur.json +34 -0
  250. package/dist/materials/token-sys.effect.floating.saturation.json +31 -0
  251. package/dist/materials/token-sys.effect.floating.shadow-blur.json +34 -0
  252. package/dist/materials/token-sys.effect.floating.shadow-offset.json +34 -0
  253. package/dist/materials/token-sys.focus.offset.json +34 -0
  254. package/dist/materials/token-sys.focus.width.json +34 -0
  255. package/dist/materials/token-sys.font.mono.json +36 -0
  256. package/dist/materials/token-sys.font.sans.json +35 -0
  257. package/dist/materials/token-sys.layer.base.json +31 -0
  258. package/dist/materials/token-sys.layer.modal.json +31 -0
  259. package/dist/materials/token-sys.layer.popover.json +31 -0
  260. package/dist/materials/token-sys.layer.sticky.json +31 -0
  261. package/dist/materials/token-sys.layer.toast.json +31 -0
  262. package/dist/materials/token-sys.motion.duration-fast.json +34 -0
  263. package/dist/materials/token-sys.motion.duration-normal.json +34 -0
  264. package/dist/materials/token-sys.motion.duration-reduced.json +34 -0
  265. package/dist/materials/token-sys.motion.easing.json +36 -0
  266. package/dist/materials/token-sys.radius.action.json +34 -0
  267. package/dist/materials/token-sys.radius.block.json +34 -0
  268. package/dist/materials/token-sys.radius.field.json +34 -0
  269. package/dist/materials/token-sys.radius.indicator.json +34 -0
  270. package/dist/materials/token-sys.radius.surface.json +34 -0
  271. package/dist/materials/token-sys.scrollbar.inset.json +34 -0
  272. package/dist/materials/token-sys.scrollbar.min-thumb.json +34 -0
  273. package/dist/materials/token-sys.scrollbar.size.json +34 -0
  274. package/dist/materials/token-sys.size.choice.json +34 -0
  275. package/dist/materials/token-sys.size.container.lg.json +37 -0
  276. package/dist/materials/token-sys.size.container.md.json +37 -0
  277. package/dist/materials/token-sys.size.container.sm.json +37 -0
  278. package/dist/materials/token-sys.size.grid.min-item.json +37 -0
  279. package/dist/materials/token-sys.size.indicator.lg.json +34 -0
  280. package/dist/materials/token-sys.size.indicator.md.json +34 -0
  281. package/dist/materials/token-sys.size.indicator.sm.json +34 -0
  282. package/dist/materials/token-sys.size.keycap.lg.json +34 -0
  283. package/dist/materials/token-sys.size.keycap.md.json +34 -0
  284. package/dist/materials/token-sys.size.keycap.sm.json +34 -0
  285. package/dist/materials/token-sys.size.switch-height.json +34 -0
  286. package/dist/materials/token-sys.size.switch-thumb.json +34 -0
  287. package/dist/materials/token-sys.size.switch-width.json +34 -0
  288. package/dist/materials/token-sys.size.touch.json +34 -0
  289. package/dist/materials/token-sys.space.0.json +34 -0
  290. package/dist/materials/token-sys.space.1.json +34 -0
  291. package/dist/materials/token-sys.space.12.json +34 -0
  292. package/dist/materials/token-sys.space.2.json +34 -0
  293. package/dist/materials/token-sys.space.3.json +34 -0
  294. package/dist/materials/token-sys.space.4.json +34 -0
  295. package/dist/materials/token-sys.space.6.json +34 -0
  296. package/dist/materials/token-sys.space.8.json +34 -0
  297. package/dist/materials/token-sys.stroke.width.json +34 -0
  298. package/dist/materials/token-sys.type.body.line-height.json +31 -0
  299. package/dist/materials/token-sys.type.body.size.json +34 -0
  300. package/dist/materials/token-sys.type.body.tracking.json +34 -0
  301. package/dist/materials/token-sys.type.body.weight.json +31 -0
  302. package/dist/materials/token-sys.type.compact.line-height.json +31 -0
  303. package/dist/materials/token-sys.type.compact.size.json +34 -0
  304. package/dist/materials/token-sys.type.compact.tracking.json +34 -0
  305. package/dist/materials/token-sys.type.compact.weight.json +31 -0
  306. package/dist/materials/token-sys.type.control.line-height.json +31 -0
  307. package/dist/materials/token-sys.type.control.size.json +34 -0
  308. package/dist/materials/token-sys.type.control.tracking.json +34 -0
  309. package/dist/materials/token-sys.type.control.weight.json +31 -0
  310. package/dist/materials/token-sys.type.dialog-title.line-height.json +33 -0
  311. package/dist/materials/token-sys.type.dialog-title.size.json +36 -0
  312. package/dist/materials/token-sys.type.dialog-title.tracking.json +36 -0
  313. package/dist/materials/token-sys.type.dialog-title.weight.json +33 -0
  314. package/dist/materials/token-sys.type.display.line-height.json +31 -0
  315. package/dist/materials/token-sys.type.display.size.json +34 -0
  316. package/dist/materials/token-sys.type.display.tracking.json +34 -0
  317. package/dist/materials/token-sys.type.display.weight.json +31 -0
  318. package/dist/materials/token-sys.type.field-label.line-height.json +33 -0
  319. package/dist/materials/token-sys.type.field-label.size.json +36 -0
  320. package/dist/materials/token-sys.type.field-label.tracking.json +36 -0
  321. package/dist/materials/token-sys.type.field-label.weight.json +33 -0
  322. package/dist/materials/token-sys.type.group-title.line-height.json +33 -0
  323. package/dist/materials/token-sys.type.group-title.size.json +36 -0
  324. package/dist/materials/token-sys.type.group-title.tracking.json +36 -0
  325. package/dist/materials/token-sys.type.group-title.weight.json +33 -0
  326. package/dist/materials/token-sys.type.helper.line-height.json +31 -0
  327. package/dist/materials/token-sys.type.helper.size.json +34 -0
  328. package/dist/materials/token-sys.type.helper.tracking.json +34 -0
  329. package/dist/materials/token-sys.type.helper.weight.json +31 -0
  330. package/dist/materials/token-sys.type.label.line-height.json +31 -0
  331. package/dist/materials/token-sys.type.label.size.json +34 -0
  332. package/dist/materials/token-sys.type.label.tracking.json +34 -0
  333. package/dist/materials/token-sys.type.label.weight.json +31 -0
  334. package/dist/materials/token-sys.type.large.line-height.json +31 -0
  335. package/dist/materials/token-sys.type.large.size.json +34 -0
  336. package/dist/materials/token-sys.type.large.tracking.json +34 -0
  337. package/dist/materials/token-sys.type.large.weight.json +31 -0
  338. package/dist/materials/token-sys.type.lead.line-height.json +31 -0
  339. package/dist/materials/token-sys.type.lead.size.json +34 -0
  340. package/dist/materials/token-sys.type.lead.tracking.json +34 -0
  341. package/dist/materials/token-sys.type.lead.weight.json +31 -0
  342. package/dist/materials/token-sys.type.page.line-height.json +31 -0
  343. package/dist/materials/token-sys.type.page.size.json +34 -0
  344. package/dist/materials/token-sys.type.page.tracking.json +34 -0
  345. package/dist/materials/token-sys.type.page.weight.json +31 -0
  346. package/dist/materials/token-sys.type.section.line-height.json +31 -0
  347. package/dist/materials/token-sys.type.section.size.json +34 -0
  348. package/dist/materials/token-sys.type.section.tracking.json +34 -0
  349. package/dist/materials/token-sys.type.section.weight.json +31 -0
  350. package/knowledge.json +409 -0
  351. package/lib/index.d.ts +33 -0
  352. package/lib/index.mjs +144 -0
  353. package/lib/inspect.d.ts +12 -0
  354. package/lib/inspect.mjs +187 -0
  355. package/manifest.json +41 -1
  356. package/package.json +7 -1
  357. package/references/flood-composition/SKILL.md +30 -0
  358. package/references/flood-data-display/SKILL.md +32 -0
  359. package/references/flood-feedback/SKILL.md +24 -3
  360. package/references/flood-forms/SKILL.md +51 -2
  361. package/references/flood-foundations/SKILL.md +7 -0
  362. package/references/flood-hierarchy/SKILL.md +87 -0
  363. package/references/flood-interface-content/SKILL.md +142 -0
  364. package/references/flood-overlays/SKILL.md +7 -0
  365. package/references/flood-records/SKILL.md +108 -0
  366. package/references/flood-spacing/SKILL.md +16 -0
  367. package/references/flood-verification/SKILL.md +52 -0
  368. package/references/interface-content-examples.md +47 -0
  369. package/references/knowledge.md +49 -0
  370. package/references/record-decisions.md +25 -0
  371. package/references/rendered-review.md +97 -0
  372. package/references/routing.md +1 -0
  373. package/rules.json +152 -2
  374. package/workflows.json +146 -10
@@ -0,0 +1,40 @@
1
+ # ErrorSummary
2
+
3
+ A linked validation summary that focuses host-owned invalid fields.
4
+
5
+ Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
6
+
7
+ ## Example
8
+
9
+ ```tsx
10
+ "use client";
11
+
12
+ import { FloodRoot, ErrorSummary } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <ErrorSummary title="Review the form" errors={[{id:"project",fieldId:"project",message:"Enter a project name."}]} />
19
+ </FloodRoot>
20
+ );
21
+ }
22
+ ```
23
+
24
+ ## Design notes
25
+
26
+ - The host supplies errors; ErrorSummary does not infer validation or submit a form. Each entry links to an exact field ID.
27
+ - Normal activation focuses the target while modifier navigation remains native. onSelect can cancel the action before focus moves.
28
+ - announcement defaults to off. autoFocus opts into focus on appearance, not on every error update, and suppresses duplicate live announcements. Empty errors render nothing. Introduced in 0.2.7.
29
+
30
+ ## API reference
31
+
32
+ | Prop | Values | Default |
33
+ | --- | --- | --- |
34
+ | `title` | `string` | `Required` |
35
+ | `errors` | `readonly ErrorSummaryItem[]` | `Required` |
36
+ | `description` | `ReactNode` | `—` |
37
+ | `announcement` | `"off" \| "polite" \| "assertive"` | `"off"` |
38
+ | `autoFocus` | `boolean` | `false` |
39
+ | `onSelect` | `(error: ErrorSummaryItem, event: ReactMouseEvent<HTMLAnchorElement>) => void` | `—` |
40
+ | `Native HTML props` | `Omit<HTMLAttributes<HTMLDivElement>, "children" \| "title" \| "onSelect" \| "role" \| "aria-live">` | `Forwarded` |
@@ -0,0 +1,46 @@
1
+ # Field
2
+
3
+ The association between a visible label, its input and supporting messages.
4
+
5
+ Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
6
+
7
+ ## Example
8
+
9
+ ```tsx
10
+ "use client";
11
+
12
+ import { FloodRoot, Field, Input } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <Field label="Project name" required hint="Visible to your team.">
19
+ {(control) => <Input {...control} name="project" />}
20
+ </Field>
21
+ </FloodRoot>
22
+ );
23
+ }
24
+ ```
25
+
26
+ ## Design notes
27
+
28
+ - Spread the supplied control props onto one Input or Textarea.
29
+ - Field merges describedBy with hint/error IDs and forwards native required through its function child.
30
+ - The host owns validation rules. Compose Field in a client component in Next.js.
31
+ - Field is not a generic native div wrapper and does not forward a ref.
32
+
33
+ ## API reference
34
+
35
+ | Prop | Values | Default |
36
+ | --- | --- | --- |
37
+ | `status` | `"error" \| "warning" \| "success" \| "info"` | `—` |
38
+ | `message` | `ReactNode` | `—` |
39
+ | `id` | `string` | `—` |
40
+ | `label` | `ReactNode` | `Required` |
41
+ | `hideLabel · 0.2.3` | `boolean` | `false` |
42
+ | `hint` | `ReactNode` | `—` |
43
+ | `error` | `ReactNode` | `—` |
44
+ | `required` | `boolean` | `—` |
45
+ | `describedBy` | `string` | `—` |
46
+ | `children` | `(props: FieldControlProps) => ReactNode` | `Required` |
@@ -0,0 +1,46 @@
1
+ # Fieldset
2
+
3
+ A native group with a legend, shared descriptions and disabled form behavior.
4
+
5
+ Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
6
+
7
+ ## Example
8
+
9
+ ```tsx
10
+ "use client";
11
+
12
+ import { FloodRoot, Fieldset, Checkbox } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <Fieldset legend="Notifications" hint="Choose the updates you want.">
19
+ <Checkbox label="Product updates" name="updates" defaultChecked />
20
+ <Checkbox label="Release notes" name="releases" />
21
+ </Fieldset>
22
+ </FloodRoot>
23
+ );
24
+ }
25
+ ```
26
+
27
+ ## Design notes
28
+
29
+ - Uses a real fieldset and legend, with a ref to HTMLFieldSetElement. Disabled descendants retain native form semantics.
30
+ - The browser exempts controls in the first legend from inherited disabling. Avoid interactive legend contents unless this is intentional.
31
+ - hint, message, error and external aria-describedby IDs are merged without duplicates. Error takes precedence over an advisory status.
32
+ - Group status describes the group; it does not mark every child invalid, manage selected values or implement a RadioGroup/CheckboxGroup.
33
+ - legendSize="section" gives an independent form section a 1rem semibold title and a 1rem body inset. The default "label" remains a compact choice caption; neither option changes native group semantics.
34
+
35
+ ## API reference
36
+
37
+ | Prop | Values | Default |
38
+ | --- | --- | --- |
39
+ | `legend` | `ReactNode` | `Required` |
40
+ | `legendSize · 0.2.10` | `"label" \| "section"` | `"label"` |
41
+ | `hideLabel · 0.2.3` | `boolean` | `false` |
42
+ | `hint` | `ReactNode` | `—` |
43
+ | `error` | `ReactNode` | `—` |
44
+ | `message` | `ReactNode` | `—` |
45
+ | `status` | `"error" \| "warning" \| "success" \| "info"` | `—` |
46
+ | `Native HTML props` | `FieldsetHTMLAttributes<HTMLFieldSetElement>` | `Forwarded` |
@@ -0,0 +1,36 @@
1
+ # Figure
2
+
3
+ A native figure that keeps media and its caption together.
4
+
5
+ Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
6
+
7
+ ## Example
8
+
9
+ ```tsx
10
+ "use client";
11
+
12
+ import { FloodRoot, Figure, Surface } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <Figure caption="A calm foundation for the next idea."><Surface padding="6">Project preview</Surface></Figure>
19
+ </FloodRoot>
20
+ );
21
+ }
22
+ ```
23
+
24
+ ## Design notes
25
+
26
+ - Composes native figure and figcaption. The host supplies the image, chart, code or other self-contained content, including its own alt text or accessible name.
27
+ - captionPosition controls DOM reading order as well as placement. Caption content may contain links. Native hidden, dir, lang, style and ref target the figure.
28
+ - Compatible addition in 0.2.5. Uses existing Flood semantic tokens and relative geometry.
29
+
30
+ ## API reference
31
+
32
+ | Prop | Values | Default |
33
+ | --- | --- | --- |
34
+ | `caption` | `ReactNode` | `—` |
35
+ | `captionPosition` | `"before" \| "after"` | `"after"` |
36
+ | `Native HTML props` | `HTMLAttributes<HTMLElement>` | `Forwarded` |
@@ -0,0 +1,45 @@
1
+ # FileInput
2
+
3
+ A native file picker with a compact selection summary and one clear action.
4
+
5
+ Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
6
+
7
+ ## Example
8
+
9
+ ```tsx
10
+ "use client";
11
+
12
+ import { FloodRoot, Field, FileInput } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <Field label="Attachments" hint="Choose files from your device.">
19
+ {control => <FileInput {...control} name="attachments" multiple />}
20
+ </Field>
21
+ </FloodRoot>
22
+ );
23
+ }
24
+ ```
25
+
26
+ ## Design notes
27
+
28
+ - The browser owns FileList, native name/form/required/accept/multiple/capture behavior and the input ref. onChange retains the native event; onFilesChange receives a fresh array after selection or clear. No controlled value/defaultValue or readOnly mode is supplied.
29
+ - clearable defaults to true. Localize placeholder and clearLabel. Clear restores input focus and empties the native selection; form reset clears the summary without emitting a change. Disabled includes inherited fieldset behavior. Cancelling the chooser preserves selection.
30
+ - File names are shown as text, shortened visually when needed. This component only selects files; the host owns upload, progress and validation. accept is a chooser hint, not file validation. Available in 0.2.5.
31
+ - Multiple selection shows a compact count and a collapsible list with full file names and localized sizes. Removing one file updates the native FileList and preserves keyboard focus; clearable=false hides both individual and global removal. Translate selectionLabel/removeFileLabel. In multiple mode, choosing again appends files. Repeated files are deduplicated by name, size, type, lastModified and relative path. Single mode replaces its selection.
32
+
33
+ ## API reference
34
+
35
+ | Prop | Values | Default |
36
+ | --- | --- | --- |
37
+ | `status` | `"error" \| "warning" \| "success" \| "info"` | `—` |
38
+ | `invalid` | `boolean` | `—` |
39
+ | `controlSize` | `"sm" \| "md" \| "lg" \| "xl"` | `"md"` |
40
+ | `clearable` | `boolean` | `true` |
41
+ | `clearLabel` | `string` | `"Clear files"` |
42
+ | `selectionLabel` | `string` | `—` |
43
+ | `removeFileLabel` | `string` | `—` |
44
+ | `onFilesChange` | `(files: readonly File[]) => void` | `—` |
45
+ | `Native HTML props` | `Omit<InputHTMLAttributes<HTMLInputElement>, "type" \| "value" \| "defaultValue" \| "children" \| "readOnly">` | `Forwarded` |
@@ -0,0 +1,48 @@
1
+ # FileItem
2
+
3
+ A named file row with size, type, thumbnail and independent actions.
4
+
5
+ Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
6
+
7
+ ## Example
8
+
9
+ ```tsx
10
+ "use client";
11
+
12
+ import { FloodRoot, FileList, FileItem } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <FileList label="Attachments">
19
+ <FileItem name="Brand guidelines.pdf" size={2400000} mimeType="PDF" />
20
+ </FileList>
21
+ </FloodRoot>
22
+ );
23
+ }
24
+ ```
25
+
26
+ ## Design notes
27
+
28
+ - Render inside FileList or another native list.
29
+ - No file reading, object URL creation or uploading is performed.
30
+
31
+ ## API reference
32
+
33
+ | Prop | Values | Default |
34
+ | --- | --- | --- |
35
+ | `name` | `string` | `Required` |
36
+ | `size` | `number` | `—` |
37
+ | `mimeType` | `string` | `—` |
38
+ | `format` | `string \| null` | `—` |
39
+ | `thumbnail` | `ReactNode` | `—` |
40
+ | `description` | `ReactNode` | `—` |
41
+ | `href` | `string` | `—` |
42
+ | `download` | `boolean` | `—` |
43
+ | `onPreview` | `() => void` | `—` |
44
+ | `onRemove` | `() => void` | `—` |
45
+ | `disabled` | `boolean` | `—` |
46
+ | `labels` | `FileActionLabels` | `—` |
47
+ | `formatSize` | `(bytes: number) => string` | `—` |
48
+ | `Native HTML props` | `Omit<HTMLAttributes<HTMLLIElement>, "children" \| "title">` | `Forwarded` |
@@ -0,0 +1,39 @@
1
+ # FileList
2
+
3
+ A named native list of file rows.
4
+
5
+ Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
6
+
7
+ ## Example
8
+
9
+ ```tsx
10
+ "use client";
11
+
12
+ import { FloodRoot, FileList, FileItem } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <FileList label="Attachments">
19
+ <FileItem name="Brand guidelines.pdf" size={2400000} mimeType="PDF" />
20
+ <FileItem name="Logo.svg" size={18400} mimeType="SVG" />
21
+ </FileList>
22
+ </FloodRoot>
23
+ );
24
+ }
25
+ ```
26
+
27
+ ## Design notes
28
+
29
+ - List contents and file identities are host owned. Narrow list containers adapt media, copy and actions without hiding primitive anatomy, including on a wide screen.
30
+ - Use stable host IDs for React keys; a name is not a unique file identity.
31
+
32
+ ## API reference
33
+
34
+ | Prop | Values | Default |
35
+ | --- | --- | --- |
36
+ | `density` | `"compact" \| "comfortable"` | `—` |
37
+ | `dividers` | `boolean` | `—` |
38
+ | `label` | `string` | `Required` |
39
+ | `Native HTML props` | `Omit<HTMLAttributes<HTMLUListElement>, "role">` | `Forwarded` |
@@ -0,0 +1,36 @@
1
+ # FileMeta
2
+
3
+ A compact combined file-format and byte-size chip.
4
+
5
+ Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
6
+
7
+ ## Example
8
+
9
+ ```tsx
10
+ "use client";
11
+
12
+ import { FloodRoot, FileMeta } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <FileMeta format="PDF" size={2400000} />
19
+ </FloodRoot>
20
+ );
21
+ }
22
+ ```
23
+
24
+ ## Design notes
25
+
26
+ - The format label is display metadata, not validated MIME detection.
27
+ - Size uses SI units; formatSize customizes the text. Missing values do not create empty chip slots. Long metadata may wrap inside its single Badge at enlarged or constrained widths.
28
+
29
+ ## API reference
30
+
31
+ | Prop | Values | Default |
32
+ | --- | --- | --- |
33
+ | `format` | `string` | `—` |
34
+ | `size` | `number` | `—` |
35
+ | `formatSize` | `(bytes: number) => string` | `—` |
36
+ | `Native HTML props` | `Omit<HTMLAttributes<HTMLSpanElement>, "children">` | `Forwarded` |
@@ -0,0 +1,33 @@
1
+ # FloodRoot
2
+
3
+ An explicit scope for the neutral dark foundations profile.
4
+
5
+ Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
6
+
7
+ ## Example
8
+
9
+ ```tsx
10
+ "use client";
11
+
12
+ import { FloodRoot, Text } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <Text>Your workspace starts here.</Text>
19
+ </FloodRoot>
20
+ );
21
+ }
22
+ ```
23
+
24
+ ## Design notes
25
+
26
+ - Import @flood-md/react/styles.css once at the application entry.
27
+ - This root selects neutral/dark locally. Legacy controls outside it keep their earlier theme behavior.
28
+
29
+ ## API reference
30
+
31
+ | Prop | Values | Default |
32
+ | --- | --- | --- |
33
+ | `Native HTML props` | `HTMLAttributes<HTMLDivElement>` | `Forwarded` |
@@ -0,0 +1,38 @@
1
+ # Grid
2
+
3
+ An adaptive content grid with optional fixed columns.
4
+
5
+ Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
6
+
7
+ ## Example
8
+
9
+ ```tsx
10
+ "use client";
11
+
12
+ import { FloodRoot, Grid, Surface } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <Grid minItemWidth="16rem" gap="4"><Surface>First</Surface><Surface>Second</Surface></Grid>
19
+ </FloodRoot>
20
+ );
21
+ }
22
+ ```
23
+
24
+ ## Design notes
25
+
26
+ - Default auto-fit columns clamp their minimum to available width, so narrow parents retain a single column.
27
+ - Explicit columns retain their count; choose this deliberately. minItemWidth applies only to automatic columns and accepts a CSS length.
28
+ - Cells remain ordinary content, not an ARIA grid. Use native tables for tabular relationships and host media/container queries for deliberate breakpoints.
29
+ - Available in 0.2.4; use matching installed declarations.
30
+
31
+ ## API reference
32
+
33
+ | Prop | Values | Default |
34
+ | --- | --- | --- |
35
+ | `columns` | `1 \| 2 \| 3 \| 4 \| 6 \| 12` | `—` |
36
+ | `minItemWidth` | `string` | `—` |
37
+ | `gap` | `"0" \| "1" \| "2" \| "3" \| "4" \| "6" \| "8" \| "12"` | `"4"` |
38
+ | `Native HTML props` | `HTMLAttributes<HTMLDivElement>` | `Forwarded` |
@@ -0,0 +1,38 @@
1
+ # Heading
2
+
3
+ Semantic heading levels with an independent visual scale.
4
+
5
+ Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
6
+
7
+ ## Example
8
+
9
+ ```tsx
10
+ "use client";
11
+
12
+ import { FloodRoot, Stack, Heading } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <Stack gap="4">
19
+ <Heading level={2} size="page">Workspace settings</Heading>
20
+ <Heading level={3} size="section">Notifications</Heading>
21
+ </Stack>
22
+ </FloodRoot>
23
+ );
24
+ }
25
+ ```
26
+
27
+ ## Design notes
28
+
29
+ - Choose level for document structure and size for appearance.
30
+ - Display is a large marketing role. Keep page and section sizes for ordinary product interfaces.
31
+
32
+ ## API reference
33
+
34
+ | Prop | Values | Default |
35
+ | --- | --- | --- |
36
+ | `level` | `1 \| 2 \| 3 \| 4 \| 5 \| 6` | `2` |
37
+ | `size` | `"display" \| "large" \| "page" \| "section"` | `"page"` |
38
+ | `Native HTML props` | `HTMLAttributes<HTMLHeadingElement>` | `Forwarded` |
@@ -0,0 +1,48 @@
1
+ # HoverCard
2
+
3
+ A focusable preview that opens on hover, keyboard focus or explicit activation.
4
+
5
+ Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
6
+
7
+ ## Example
8
+
9
+ ```tsx
10
+ "use client";
11
+
12
+ import { FloodRoot, HoverCard, Button, Text, Link } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <HoverCard title="Alex Morgan" trigger={props => <Button {...props} variant="subtle">Alex Morgan</Button>}>
19
+ <Text as="p" size="compact">Designer at Flood.</Text>
20
+ <Link href="https://github.com/tillwithered">View profile</Link>
21
+ </HoverCard>
22
+ </FloodRoot>
23
+ );
24
+ }
25
+ ```
26
+
27
+ ## Design notes
28
+
29
+ - Interactive content belongs to a named dialog preview, not a tooltip.
30
+ - Click pins the preview; keyboard and touch users can activate the trigger.
31
+
32
+ ## API reference
33
+
34
+ | Prop | Values | Default |
35
+ | --- | --- | --- |
36
+ | `title` | `ReactNode` | `Required` |
37
+ | `trigger` | `(props: OverlayTriggerProps) => ReactNode` | `Required` |
38
+ | `children` | `ReactNode` | `Required` |
39
+ | `side` | `"top" \| "bottom" \| "left" \| "right"` | `—` |
40
+ | `align` | `"start" \| "center" \| "end"` | `—` |
41
+ | `open` | `boolean` | `—` |
42
+ | `defaultOpen` | `boolean` | `—` |
43
+ | `onOpenChange` | `(open: boolean) => void` | `—` |
44
+ | `openDelay` | `number` | `—` |
45
+ | `closeDelay` | `number` | `—` |
46
+ | `disabled` | `boolean` | `—` |
47
+ | `closeLabel` | `string` | `—` |
48
+ | `Native HTML props` | `Omit<HTMLAttributes<HTMLDivElement>, "children" \| "title" \| "role">` | `Forwarded` |
@@ -0,0 +1,41 @@
1
+ # IconButton
2
+
3
+ An icon-only action with a required accessible name.
4
+
5
+ Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
6
+
7
+ ## Example
8
+
9
+ ```tsx
10
+ "use client";
11
+
12
+ import { FloodRoot, IconButton } from "@flood-md/react";
13
+ import { Plus } from "lucide-react";
14
+ import "@flood-md/react/styles.css";
15
+
16
+ export function Example() {
17
+ return (
18
+ <FloodRoot>
19
+ <IconButton label="Add idea">
20
+ <Plus />
21
+ </IconButton>
22
+ </FloodRoot>
23
+ );
24
+ }
25
+ ```
26
+
27
+ ## Design notes
28
+
29
+ - Provide a meaningful action label, rather than the name of the glyph.
30
+ - Supply a licensed SVG. IconButton wraps it in a decorative IconSlot sized to the control.
31
+ - Connect onClick to your host action. The interactive preview adds a local count; the basic usage snippet only shows composition.
32
+
33
+ ## API reference
34
+
35
+ | Prop | Values | Default |
36
+ | --- | --- | --- |
37
+ | `variant` | `"solid" \| "subtle" \| "outline" \| "ghost"` | `"subtle"` |
38
+ | `size` | `"2xs" \| "xs" \| "sm" \| "md" \| "lg" \| "xl" \| "2xl"` | `"md"` |
39
+ | `loading` | `boolean` | `—` |
40
+ | `label` | `string` | `Required` |
41
+ | `Native HTML props` | `Omit<ButtonHTMLAttributes<HTMLButtonElement>, "aria-label">` | `Forwarded` |
@@ -0,0 +1,37 @@
1
+ # IconSlot
2
+
3
+ Consistent geometry for a host-supplied SVG icon.
4
+
5
+ Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
6
+
7
+ ## Example
8
+
9
+ ```tsx
10
+ "use client";
11
+
12
+ import { FloodRoot, IconSlot } from "@flood-md/react";
13
+ import { ArrowRight } from "lucide-react";
14
+ import "@flood-md/react/styles.css";
15
+
16
+ export function Example() {
17
+ return (
18
+ <FloodRoot>
19
+ <IconSlot size="md"><ArrowRight /></IconSlot>
20
+ </FloodRoot>
21
+ );
22
+ }
23
+ ```
24
+
25
+ ## Design notes
26
+
27
+ - No glyph pack ships in the React package. Keep the license of the host's icon artwork.
28
+ - Without label the slot is decorative. With label it exposes role="img" and an accessible name.
29
+ - Use an SVG rather than a text character. Avoid inline SVG sizing styles that override the slot.
30
+
31
+ ## API reference
32
+
33
+ | Prop | Values | Default |
34
+ | --- | --- | --- |
35
+ | `size` | `"2xs" \| "xs" \| "sm" \| "md" \| "lg" \| "xl" \| "2xl"` | `"md"` |
36
+ | `label` | `string` | `—` |
37
+ | `Native HTML props` | `HTMLAttributes<HTMLSpanElement>` | `Forwarded` |
@@ -0,0 +1,50 @@
1
+ # ImagePreview
2
+
3
+ A single-image preview in Flood Dialog with loading and failure feedback.
4
+
5
+ Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
6
+
7
+ ## Example
8
+
9
+ ```tsx
10
+ "use client";
11
+
12
+ import { FloodRoot, ImagePreview, Button } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <ImagePreview title="Flood mark" src="/flood-mark.png" alt="Pink Flood mark"
19
+ trigger={props => <Button {...props} variant="subtle">Preview image</Button>} />
20
+ </FloodRoot>
21
+ );
22
+ }
23
+ ```
24
+
25
+ ## Design notes
26
+
27
+ - Loads the image only while its dialog content is mounted.
28
+ - The host owns trusted URLs, object URL lifetime and download permissions.
29
+
30
+ ## API reference
31
+
32
+ | Prop | Values | Default |
33
+ | --- | --- | --- |
34
+ | `title` | `string` | `Required` |
35
+ | `trigger` | `(props: OverlayTriggerProps) => ReactNode` | `Required` |
36
+ | `open` | `boolean` | `—` |
37
+ | `defaultOpen` | `boolean` | `—` |
38
+ | `onOpenChange` | `(open: boolean) => void` | `—` |
39
+ | `disabled` | `boolean` | `—` |
40
+ | `closeLabel` | `string` | `—` |
41
+ | `closeOnOutsideClick` | `boolean` | `—` |
42
+ | `initialFocusRef` | `RefObject<HTMLElement \| null>` | `—` |
43
+ | `src` | `string` | `Required` |
44
+ | `alt` | `string` | `Required` |
45
+ | `caption` | `ReactNode` | `—` |
46
+ | `downloadHref` | `string` | `—` |
47
+ | `downloadLabel` | `string` | `—` |
48
+ | `loadingLabel` | `string` | `—` |
49
+ | `errorLabel` | `string` | `—` |
50
+ | `Native HTML props` | `Omit<Omit<HTMLAttributes<HTMLDialogElement>, "children" \| "title" \| "role">, "children" \| "description">` | `Forwarded` |
@@ -0,0 +1,37 @@
1
+ # Image
2
+
3
+ A native responsive image with explicit alternative text and media fitting.
4
+
5
+ Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
6
+
7
+ ## Example
8
+
9
+ ```tsx
10
+ "use client";
11
+
12
+ import { FloodRoot, Image } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <Image src="/flood-mark.png" alt="Flood logo" width={160} height={160} fit="contain" />
19
+ </FloodRoot>
20
+ );
21
+ }
22
+ ```
23
+
24
+ ## Design notes
25
+
26
+ - alt is required; an empty string is appropriate for decorative imagery beside equivalent visible content.
27
+ - Native src/srcSet/sizes/loading/decoding/dimensions, handlers and HTMLImageElement ref are preserved. Supply width/height or AspectRatio to reserve geometry.
28
+ - fit cover/contain changes object-fit, not fetching, optimization or fallback behavior. Avatar composes Image with its own load/fallback lifecycle.
29
+ - Available in 0.2.4; use matching installed declarations.
30
+
31
+ ## API reference
32
+
33
+ | Prop | Values | Default |
34
+ | --- | --- | --- |
35
+ | `alt` | `string` | `Required` |
36
+ | `fit` | `"cover" \| "contain"` | `"cover"` |
37
+ | `Native HTML props` | `Omit<ImgHTMLAttributes<HTMLImageElement>, "alt">` | `Forwarded` |