@flood-md/agent 0.2.8 → 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 (376) hide show
  1. package/DESIGN.md +26 -4
  2. package/README.md +40 -1
  3. package/SKILL.md +46 -4
  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 +91 -1
  356. package/package.json +9 -1
  357. package/references/flood-accessibility/SKILL.md +40 -0
  358. package/references/flood-composition/SKILL.md +30 -0
  359. package/references/flood-data-display/SKILL.md +69 -0
  360. package/references/flood-feedback/SKILL.md +58 -0
  361. package/references/flood-forms/SKILL.md +94 -0
  362. package/references/flood-foundations/SKILL.md +44 -0
  363. package/references/flood-hierarchy/SKILL.md +87 -0
  364. package/references/flood-interface-content/SKILL.md +142 -0
  365. package/references/flood-navigation/SKILL.md +35 -0
  366. package/references/flood-overlays/SKILL.md +52 -0
  367. package/references/flood-records/SKILL.md +108 -0
  368. package/references/flood-spacing/SKILL.md +62 -0
  369. package/references/flood-verification/SKILL.md +99 -0
  370. package/references/interface-content-examples.md +47 -0
  371. package/references/knowledge.md +49 -0
  372. package/references/record-decisions.md +25 -0
  373. package/references/rendered-review.md +97 -0
  374. package/references/routing.md +1 -0
  375. package/rules.json +454 -2
  376. package/workflows.json +152 -0
@@ -0,0 +1,66 @@
1
+ # DatePicker
2
+
3
+ A segmented date field with an integrated calendar picker and shared form value.
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, DatePicker } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <DatePicker label="Start date" name="start" defaultValue="2026-10-26" today="2026-10-26" />
19
+ </FloodRoot>
20
+ );
21
+ }
22
+ ```
23
+
24
+ ## Design notes
25
+
26
+ - Composes Flood DateField, Calendar and Popover; text input and visual selection share one canonical value and form bridge.
27
+ - Activate the calendar icon or Alt+ArrowDown in a segment. Escape/outside dismissal returns or preserves intended focus through the existing overlay engine. Selecting a day closes the calendar.
28
+ - Read only and disabled prevent opening or date changes; native disabled fieldsets remain inert. Invalid/incomplete drafts retain native DateField validation.
29
+ - Controlled value and open state are independently host-owned. Native form reset restores the initial uncontrolled date and preserves cancelled resets. Translate calendarLabel/openCalendarLabel, month navigation, segment labels and messages.
30
+ - DateField remains the keyboard-entry primitive; Calendar remains independently usable. Introduced in the unpublished 0.2.7 source candidate.
31
+
32
+ ## API reference
33
+
34
+ | Prop | Values | Default |
35
+ | --- | --- | --- |
36
+ | `label` | `string` | `Required` |
37
+ | `hideLabel` | `boolean` | `—` |
38
+ | `value` | `string` | `—` |
39
+ | `defaultValue` | `string` | `—` |
40
+ | `onValueChange` | `(value: string) => void` | `—` |
41
+ | `min` | `string` | `—` |
42
+ | `max` | `string` | `—` |
43
+ | `required` | `boolean` | `—` |
44
+ | `readOnly` | `boolean` | `—` |
45
+ | `disabled` | `boolean` | `—` |
46
+ | `name` | `string` | `—` |
47
+ | `form` | `string` | `—` |
48
+ | `controlSize` | `"sm" \| "md" \| "lg" \| "xl"` | `"md"` |
49
+ | `invalid` | `boolean` | `—` |
50
+ | `status` | `"error" \| "warning" \| "success" \| "info"` | `—` |
51
+ | `description` | `string` | `—` |
52
+ | `order` | `"month-day-year" \| "day-month-year" \| "year-month-day"` | `—` |
53
+ | `segmentLabels` | `Partial<Record<"day" \| "month" \| "year", string>>` | `—` |
54
+ | `messages` | `{ required?: string; invalid?: string; outOfRange?: string }` | `—` |
55
+ | `validationMessage` | `string` | `—` |
56
+ | `open` | `boolean` | `—` |
57
+ | `defaultOpen` | `boolean` | `false` |
58
+ | `onOpenChange` | `(open: boolean) => void` | `—` |
59
+ | `calendarLabel` | `string` | `—` |
60
+ | `openCalendarLabel` | `string` | `—` |
61
+ | `locale` | `string` | `—` |
62
+ | `weekStartsOn` | `0 \| 1 \| 2 \| 3 \| 4 \| 5 \| 6` | `—` |
63
+ | `today` | `string` | `—` |
64
+ | `previousMonthLabel` | `string` | `—` |
65
+ | `nextMonthLabel` | `string` | `—` |
66
+ | `Native HTML props` | `Omit<Omit<HTMLAttributes<HTMLDivElement>, "defaultValue" \| "onChange" \| "children">, "end">` | `Forwarded` |
@@ -0,0 +1,62 @@
1
+ # DateRangeField
2
+
3
+ Two segmented date fields with one ordered range and atomic form values.
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, DateRangeField } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <DateRangeField label="Travel dates" startName="start" endName="end" defaultValue={{start:"2026-10-12",end:"2026-10-18"}} />
19
+ </FloodRoot>
20
+ );
21
+ }
22
+ ```
23
+
24
+ ## Design notes
25
+
26
+ - The value is {start,end}, with canonical YYYY-MM-DD dates or empty endpoints. Editable partial, reversed, unavailable and refused ranges block native submission. Readonly submits a complete ordered accepted pair despite current bounds/availability; partial, reversed and refused pairs stay atomic empty values.
27
+ - Both named bridges represent one range contract. The group owns relationship validation while each DateField preserves its calendar validity and keyboard behavior.
28
+ - Start/end names and labels are explicit; min/max, readonly/disabled, status and form reset follow the field contracts.
29
+ - Use DateRangePicker for visual interval selection. Introduced in 0.2.7.
30
+
31
+ ## API reference
32
+
33
+ | Prop | Values | Default |
34
+ | --- | --- | --- |
35
+ | `hideLabel` | `boolean` | `—` |
36
+ | `min` | `string` | `—` |
37
+ | `max` | `string` | `—` |
38
+ | `required` | `boolean` | `—` |
39
+ | `readOnly` | `boolean` | `—` |
40
+ | `disabled` | `boolean` | `—` |
41
+ | `form` | `string` | `—` |
42
+ | `controlSize` | `"sm" \| "md" \| "lg" \| "xl"` | `"md"` |
43
+ | `invalid` | `boolean` | `—` |
44
+ | `status` | `"error" \| "warning" \| "success" \| "info"` | `—` |
45
+ | `description` | `string` | `—` |
46
+ | `order` | `"month-day-year" \| "day-month-year" \| "year-month-day"` | `"month-day-year"` |
47
+ | `segmentLabels` | `Partial<Record<"day" \| "month" \| "year", string>>` | `—` |
48
+ | `messages` | `{ required?: string; invalid?: string; outOfRange?: string }` | `—` |
49
+ | `validationMessage` | `string` | `—` |
50
+ | `label` | `string` | `Required` |
51
+ | `value` | `DateRangeValue` | `—` |
52
+ | `defaultValue` | `DateRangeValue` | `—` |
53
+ | `onValueChange` | `(range: DateRangeValue) => void` | `—` |
54
+ | `startName` | `string` | `—` |
55
+ | `endName` | `string` | `—` |
56
+ | `startLabel` | `string` | `"Start date"` |
57
+ | `endLabel` | `string` | `"End date"` |
58
+ | `end` | `ReactNode` | `—` |
59
+ | `isDateDisabled` | `(date: string) => boolean` | `—` |
60
+ | `isRangeDisabled` | `(range: DateRangeValue) => boolean` | `—` |
61
+ | `rangeMessages` | `{ incomplete?: string; reversed?: string; unavailable?: string }` | `—` |
62
+ | `Native HTML props` | `Omit<Omit<HTMLAttributes<HTMLDivElement>, "defaultValue" \| "onChange" \| "children">, "value" \| "defaultValue" \| "onValueChange" \| "name" \| "label" \| "end">` | `Forwarded` |
@@ -0,0 +1,72 @@
1
+ # DateRangePicker
2
+
3
+ Paired date entry with one calendar popup for continuous interval selection.
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, DateRangePicker } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <DateRangePicker label="Travel dates" startName="start" endName="end" today="2026-10-26" defaultValue={{start:"2026-10-12",end:"2026-10-18"}} />
19
+ </FloodRoot>
20
+ );
21
+ }
22
+ ```
23
+
24
+ ## Design notes
25
+
26
+ - Composes DateRangeField, RangeCalendar and the existing Popover engine. One popup selects start and end; it closes after an enabled complete interval.
27
+ - The popup follows the whole fields region width and clamps to the viewport. Text and calendar editing share the same partial/complete range contract.
28
+ - Controlled range/open state and availability remain host-owned. Escape/outside dismissal does not turn an incomplete range into a valid submission.
29
+ - Translate endpoint, calendar and range instruction labels. Introduced in 0.2.7.
30
+
31
+ ## API reference
32
+
33
+ | Prop | Values | Default |
34
+ | --- | --- | --- |
35
+ | `hideLabel` | `boolean` | `—` |
36
+ | `min` | `string` | `—` |
37
+ | `max` | `string` | `—` |
38
+ | `required` | `boolean` | `—` |
39
+ | `readOnly` | `boolean` | `—` |
40
+ | `disabled` | `boolean` | `—` |
41
+ | `form` | `string` | `—` |
42
+ | `controlSize` | `"sm" \| "md" \| "lg" \| "xl"` | `"md"` |
43
+ | `invalid` | `boolean` | `—` |
44
+ | `status` | `"error" \| "warning" \| "success" \| "info"` | `—` |
45
+ | `description` | `string` | `—` |
46
+ | `order` | `"month-day-year" \| "day-month-year" \| "year-month-day"` | `—` |
47
+ | `segmentLabels` | `Partial<Record<"day" \| "month" \| "year", string>>` | `—` |
48
+ | `messages` | `{ required?: string; invalid?: string; outOfRange?: string }` | `—` |
49
+ | `validationMessage` | `string` | `—` |
50
+ | `label` | `string` | `Required` |
51
+ | `value` | `DateRangeValue` | `—` |
52
+ | `defaultValue` | `DateRangeValue` | `—` |
53
+ | `onValueChange` | `(range: DateRangeValue) => void` | `—` |
54
+ | `startName` | `string` | `—` |
55
+ | `endName` | `string` | `—` |
56
+ | `startLabel` | `string` | `—` |
57
+ | `endLabel` | `string` | `—` |
58
+ | `isDateDisabled` | `(date: string) => boolean` | `—` |
59
+ | `isRangeDisabled` | `(range: DateRangeValue) => boolean` | `—` |
60
+ | `rangeMessages` | `{ incomplete?: string; reversed?: string; unavailable?: string }` | `—` |
61
+ | `open` | `boolean` | `—` |
62
+ | `defaultOpen` | `boolean` | `false` |
63
+ | `onOpenChange` | `(open: boolean) => void` | `—` |
64
+ | `calendarLabel` | `string` | `—` |
65
+ | `openCalendarLabel` | `string` | `—` |
66
+ | `locale` | `string` | `—` |
67
+ | `weekStartsOn` | `0 \| 1 \| 2 \| 3 \| 4 \| 5 \| 6` | `—` |
68
+ | `today` | `string` | `—` |
69
+ | `previousMonthLabel` | `string` | `—` |
70
+ | `nextMonthLabel` | `string` | `—` |
71
+ | `rangeLabels` | `RangeCalendarProps["rangeLabels"]` | `—` |
72
+ | `Native HTML props` | `Omit<Omit<Omit<HTMLAttributes<HTMLDivElement>, "defaultValue" \| "onChange" \| "children">, "value" \| "defaultValue" \| "onValueChange" \| "name" \| "label" \| "end">, "end">` | `Forwarded` |
@@ -0,0 +1,60 @@
1
+ # DateTimePicker
2
+
3
+ A composed civil date and wall-clock time with separate form values.
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, DateTimePicker } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <DateTimePicker label="Schedule" dateName="date" timeName="time" defaultValue={{date:"2026-10-26",time:"09:30"}} />
19
+ </FloodRoot>
20
+ );
21
+ }
22
+ ```
23
+
24
+ ## Design notes
25
+
26
+ - Date and time submit as separate fields. No timezone, UTC conversion or instant is inferred.
27
+ - Date bounds and daily time bounds are independent. Use application validation for cross-field business rules.
28
+
29
+ ## API reference
30
+
31
+ | Prop | Values | Default |
32
+ | --- | --- | --- |
33
+ | `label` | `string` | `Required` |
34
+ | `validationMessage` | `string` | `—` |
35
+ | `timeInterval` | `number` | `—` |
36
+ | `hideLabel` | `boolean` | `—` |
37
+ | `hideFieldLabels` | `boolean` | `—` |
38
+ | `value` | `DateTimeValue` | `—` |
39
+ | `defaultValue` | `DateTimeValue` | `—` |
40
+ | `onValueChange` | `(value: DateTimeValue) => void` | `—` |
41
+ | `dateLabel` | `string` | `—` |
42
+ | `timeLabel` | `string` | `—` |
43
+ | `dateName` | `string` | `—` |
44
+ | `timeName` | `string` | `—` |
45
+ | `form` | `string` | `—` |
46
+ | `required` | `boolean` | `—` |
47
+ | `disabled` | `boolean` | `—` |
48
+ | `readOnly` | `boolean` | `—` |
49
+ | `controlSize` | `"sm" \| "md" \| "lg" \| "xl"` | `—` |
50
+ | `precision` | `"minute" \| "second"` | `—` |
51
+ | `order` | `DateFieldProps["order"]` | `—` |
52
+ | `locale` | `string` | `—` |
53
+ | `minDate` | `string` | `—` |
54
+ | `maxDate` | `string` | `—` |
55
+ | `minTime` | `string` | `—` |
56
+ | `maxTime` | `string` | `—` |
57
+ | `step` | `number` | `—` |
58
+ | `status` | `"error" \| "warning" \| "success" \| "info"` | `—` |
59
+ | `description` | `string` | `—` |
60
+ | `Native HTML props` | `Omit<HTMLAttributes<HTMLDivElement>, "children" \| "defaultValue" \| "onChange">` | `Forwarded` |
@@ -0,0 +1,66 @@
1
+ # DateTimeRangePicker
2
+
3
+ An ordered civil date/time range with four atomic form values.
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, DateTimeRangePicker } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <DateTimeRangePicker label="Booking" startDateName="startDate" startTimeName="startTime" endDateName="endDate" endTimeName="endTime"
19
+ defaultValue={{start:{date:"2026-10-27",time:"09:00"},end:{date:"2026-10-27",time:"18:00"}}} required />
20
+ </FloodRoot>
21
+ );
22
+ }
23
+ ```
24
+
25
+ ## Design notes
26
+
27
+ - Incomplete and reversed ranges do not contribute accepted values.
28
+ - No timezone or timestamp inference. Server availability remains host owned.
29
+ - Only range and endpoint headings are visible; individual field names remain accessible.
30
+
31
+ ## API reference
32
+
33
+ | Prop | Values | Default |
34
+ | --- | --- | --- |
35
+ | `label` | `string` | `Required` |
36
+ | `hideLabel` | `boolean` | `—` |
37
+ | `value` | `DateTimeRangeValue` | `—` |
38
+ | `defaultValue` | `DateTimeRangeValue` | `—` |
39
+ | `onValueChange` | `(range: DateTimeRangeValue) => void` | `—` |
40
+ | `startDateName` | `string` | `—` |
41
+ | `startTimeName` | `string` | `—` |
42
+ | `endDateName` | `string` | `—` |
43
+ | `endTimeName` | `string` | `—` |
44
+ | `startLabel` | `string` | `—` |
45
+ | `endLabel` | `string` | `—` |
46
+ | `startDateLabel` | `string` | `—` |
47
+ | `startTimeLabel` | `string` | `—` |
48
+ | `endDateLabel` | `string` | `—` |
49
+ | `endTimeLabel` | `string` | `—` |
50
+ | `form` | `string` | `—` |
51
+ | `required` | `boolean` | `—` |
52
+ | `disabled` | `boolean` | `—` |
53
+ | `readOnly` | `boolean` | `—` |
54
+ | `controlSize` | `"sm" \| "md" \| "lg" \| "xl"` | `—` |
55
+ | `precision` | `"minute" \| "second"` | `—` |
56
+ | `order` | `DateFieldProps["order"]` | `—` |
57
+ | `locale` | `string` | `—` |
58
+ | `minDate` | `string` | `—` |
59
+ | `maxDate` | `string` | `—` |
60
+ | `step` | `number` | `—` |
61
+ | `interval` | `number` | `—` |
62
+ | `status` | `"error" \| "warning" \| "success" \| "info"` | `—` |
63
+ | `description` | `string` | `—` |
64
+ | `incompleteMessage` | `string` | `—` |
65
+ | `reversedMessage` | `string` | `—` |
66
+ | `Native HTML props` | `Omit<HTMLAttributes<HTMLDivElement>, "children" \| "defaultValue" \| "onChange">` | `Forwarded` |
@@ -0,0 +1,42 @@
1
+ # DescriptionList
2
+
3
+ Related terms and descriptions with native list semantics and responsive grouping.
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, DescriptionList } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <DescriptionList items={[
19
+ {id:"project",term:"Project",description:"Flood"},
20
+ {id:"version",term:"Version",description:"0.2.4"},
21
+ ]} />
22
+ </FloodRoot>
23
+ );
24
+ }
25
+ ```
26
+
27
+ ## Design notes
28
+
29
+ - Renders native dl/dt/dd groups. IDs are stable React keys, not generated DOM anchors; require unique nonempty IDs.
30
+ - Inline layout becomes stacked when the component container is narrow. Stacked layout is always one column.
31
+ - Density and dividers affect presentation. Values may contain React content; the host owns formatting and missing-value text.
32
+ - Native dl props, className/style and HTMLDListElement ref target the list. Available in 0.2.4.
33
+
34
+ ## API reference
35
+
36
+ | Prop | Values | Default |
37
+ | --- | --- | --- |
38
+ | `items` | `readonly DescriptionItem[]` | `Required` |
39
+ | `layout` | `"inline" \| "stacked"` | `"inline"` |
40
+ | `density` | `"compact" \| "comfortable"` | `"compact"` |
41
+ | `dividers` | `boolean` | `false` |
42
+ | `Native HTML props` | `Omit<HTMLAttributes<HTMLDListElement>, "children">` | `Forwarded` |
@@ -0,0 +1,45 @@
1
+ # Dialog
2
+
3
+ A named native modal dialog with inert background and managed focus.
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, Dialog, Button } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <Dialog title="Create a project" trigger={trigger => <Button {...trigger}>Open dialog</Button>}>Project details.</Dialog>
19
+ </FloodRoot>
20
+ );
21
+ }
22
+ ```
23
+
24
+ ## Design notes
25
+
26
+ - Uses native showModal, not a simulated modal div.
27
+ - Escape closes the top layer; outside closing can be disabled independently. Tab remains inside the dialog.
28
+ - Closed content unmounts. Forward trigger props/ref; initialFocusRef can select a safe initial control. Modern native dialog support is required.
29
+
30
+ ## API reference
31
+
32
+ | Prop | Values | Default |
33
+ | --- | --- | --- |
34
+ | `title` | `string` | `Required` |
35
+ | `description` | `string` | `—` |
36
+ | `trigger` | `(props: OverlayTriggerProps) => ReactNode` | `Required` |
37
+ | `children` | `ReactNode` | `—` |
38
+ | `open` | `boolean` | `—` |
39
+ | `defaultOpen` | `boolean` | `false` |
40
+ | `onOpenChange` | `(open: boolean) => void` | `—` |
41
+ | `disabled` | `boolean` | `false` |
42
+ | `closeLabel` | `string` | `"Close"` |
43
+ | `closeOnOutsideClick` | `boolean` | `true` |
44
+ | `initialFocusRef` | `RefObject<HTMLElement \| null>` | `—` |
45
+ | `Native HTML props` | `Omit<HTMLAttributes<HTMLDialogElement>, "children" \| "title" \| "role">` | `Forwarded` |
@@ -0,0 +1,37 @@
1
+ # Divider
2
+
3
+ A semantic separator with a low-emphasis visual line.
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, Text, Divider } 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
+ <Text>Workspace</Text>
20
+ <Divider />
21
+ <Text>Account</Text>
22
+ </Stack>
23
+ </FloodRoot>
24
+ );
25
+ }
26
+ ```
27
+
28
+ ## Design notes
29
+
30
+ - The line is decorative in contrast terms: content grouping must remain understandable without seeing it.
31
+ - Divider renders a native hr; it has no orientation prop.
32
+
33
+ ## API reference
34
+
35
+ | Prop | Values | Default |
36
+ | --- | --- | --- |
37
+ | `Native HTML props` | `HTMLAttributes<HTMLHRElement>` | `Forwarded` |
@@ -0,0 +1,50 @@
1
+ # Drawer
2
+
3
+ A modal edge panel with a steady header, scrollable body and optional footer.
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, Drawer, Button, Field, Input } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <Drawer title="Project settings" description="Keep the details close." trigger={props => <Button {...props}>Open settings</Button>}>
19
+ <Field label="Project name">{control => <Input {...control} defaultValue="Flood" />}</Field>
20
+ </Drawer>
21
+ </FloodRoot>
22
+ );
23
+ }
24
+ ```
25
+
26
+ ## Design notes
27
+
28
+ - Uses Flood native Dialog focus containment, scroll lock, background inertness, nested layers and return focus. Escape and the named close IconButton dismiss it; closeOnOutsideClick defaults to true. Controlled open/onOpenChange and initialFocusRef match Dialog.
29
+ - side is logical start/end or physical top/bottom. size sets 20/26/34rem for sm/md/lg, capped to the viewport. Vertical drawers occupy the viewport height; horizontal drawers occupy its width. Entry motion respects reduced motion; closing is immediate.
30
+ - The body scrolls with Flood ScrollArea while the header and optional footer remain visible when space allows. Responsive padding and full-width narrow descriptions preserve the reading area at enlarged text; if the chrome cannot fit, the whole panel can scroll rather than clipping the body. Footer actions are host-owned, without implicit save or close. No swipe/drag gesture or nested navigation engine is included. Available in 0.2.5.
31
+
32
+ ## API reference
33
+
34
+ | Prop | Values | Default |
35
+ | --- | --- | --- |
36
+ | `title` | `string` | `Required` |
37
+ | `description` | `string` | `—` |
38
+ | `trigger` | `(props: OverlayTriggerProps) => ReactNode` | `Required` |
39
+ | `children` | `ReactNode` | `—` |
40
+ | `open` | `boolean` | `—` |
41
+ | `defaultOpen` | `boolean` | `false` |
42
+ | `onOpenChange` | `(open: boolean) => void` | `—` |
43
+ | `disabled` | `boolean` | `—` |
44
+ | `closeLabel` | `string` | `"Close"` |
45
+ | `closeOnOutsideClick` | `boolean` | `true` |
46
+ | `initialFocusRef` | `RefObject<HTMLElement \| null>` | `—` |
47
+ | `side` | `"start" \| "end" \| "top" \| "bottom"` | `"end"` |
48
+ | `size` | `"sm" \| "md" \| "lg"` | `"md"` |
49
+ | `footer` | `ReactNode` | `—` |
50
+ | `Native HTML props` | `Omit<HTMLAttributes<HTMLDialogElement>, "children" \| "title" \| "role">` | `Forwarded` |
@@ -0,0 +1,45 @@
1
+ # Dropzone
2
+
3
+ A file drop target composed with the native Flood FileInput.
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, Dropzone } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <Dropzone label="Project attachments" name="attachments" multiple accept=".pdf,image/*" />
19
+ </FloodRoot>
20
+ );
21
+ }
22
+ ```
23
+
24
+ ## Design notes
25
+
26
+ - The existing FileInput remains the real chooser and successful native form control. Dropping files dispatches the same selection flow: multiple appends and deduplicates; single selection keeps the first dropped file. Native form reset and per-file removal remain intact.
27
+ - The zone responds only to file drags and prevents navigation on file drop. Disabled fields reject drops. Translate label/description and FileInput action labels. The chooser remains keyboard accessible; dropping is an additional pointer workflow.
28
+ - accept guides the native chooser; the host must validate dropped file types, size and contents. Directories, remote transfer, progress, server upload and image processing are outside this control. No file contents are read. Available in 0.2.5.
29
+
30
+ ## API reference
31
+
32
+ | Prop | Values | Default |
33
+ | --- | --- | --- |
34
+ | `status` | `"error" \| "warning" \| "success" \| "info"` | `—` |
35
+ | `invalid` | `boolean` | `—` |
36
+ | `controlSize` | `"sm" \| "md" \| "lg" \| "xl"` | `—` |
37
+ | `clearable` | `boolean` | `—` |
38
+ | `clearLabel` | `string` | `—` |
39
+ | `selectionLabel` | `string` | `—` |
40
+ | `removeFileLabel` | `string` | `—` |
41
+ | `onFilesChange` | `(files: readonly File[]) => void` | `—` |
42
+ | `label` | `string` | `Required` |
43
+ | `description` | `string` | `"Drop files here or choose from your device."` |
44
+ | `multiple` | `Inherited native HTML prop` | `true` |
45
+ | `Native HTML props` | `Omit<Omit<InputHTMLAttributes<HTMLInputElement>, "type" \| "value" \| "defaultValue" \| "children" \| "readOnly">, "onDragEnter" \| "onDragLeave" \| "onDragOver" \| "onDrop">` | `Forwarded` |
@@ -0,0 +1,57 @@
1
+ # Editable
2
+
3
+ Inline editing with explicit save/cancel and a committed form value.
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, Editable } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <Editable label="Project name" defaultValue="Flood workspace" name="project" />
19
+ </FloodRoot>
20
+ );
21
+ }
22
+ ```
23
+
24
+ ## Design notes
25
+
26
+ - Preview and edit modes keep a separate draft. Enter commits and Escape cancels; IME composition does not submit.
27
+ - Use blurAction to commit, cancel or preserve the draft on outside focus. Moving focus to the save/cancel actions is internal to the editor.
28
+ - The host owns controlled value and editing props; callbacks request changes. The hidden named form field contains only the committed value.
29
+ - readOnly keeps a copyable field; disabled prevents editing. Localized action labels and inputRef are available. Introduced in 0.2.7.
30
+
31
+ ## API reference
32
+
33
+ | Prop | Values | Default |
34
+ | --- | --- | --- |
35
+ | `label` | `string` | `Required` |
36
+ | `hideLabel` | `boolean` | `—` |
37
+ | `value` | `string` | `—` |
38
+ | `defaultValue` | `string` | `—` |
39
+ | `onValueChange` | `(value: string) => void` | `—` |
40
+ | `editing` | `boolean` | `—` |
41
+ | `defaultEditing` | `boolean` | `—` |
42
+ | `onEditingChange` | `(editing: boolean) => void` | `—` |
43
+ | `onCommit` | `(value: string) => void` | `—` |
44
+ | `onCancel` | `() => void` | `—` |
45
+ | `blurAction` | `"commit" \| "cancel" \| "none"` | `"commit"` |
46
+ | `readOnly` | `boolean` | `—` |
47
+ | `disabled` | `boolean` | `—` |
48
+ | `placeholder` | `string` | `—` |
49
+ | `controlSize` | `"sm" \| "md" \| "lg" \| "xl"` | `"md"` |
50
+ | `showActions` | `boolean` | `true` |
51
+ | `editLabel` | `string` | `—` |
52
+ | `saveLabel` | `string` | `—` |
53
+ | `cancelLabel` | `string` | `—` |
54
+ | `inputRef` | `Ref<HTMLInputElement>` | `—` |
55
+ | `name` | `string` | `—` |
56
+ | `form` | `string` | `—` |
57
+ | `Native HTML props` | `Omit<HTMLAttributes<HTMLDivElement>, "defaultValue" \| "onChange" \| "children">` | `Forwarded` |
@@ -0,0 +1,41 @@
1
+ # EmptyState
2
+
3
+ A quiet explanation and optional next action when content is absent.
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, EmptyState, Button } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <EmptyState title="No projects yet" description="Create a project to get started." actions={<Button>Create project</Button>} />
19
+ </FloodRoot>
20
+ );
21
+ }
22
+ ```
23
+
24
+ ## Design notes
25
+
26
+ - Composes Stack, Heading, Text, IconSlot and Inline. Optional icon is decorative; title and description explain the missing content.
27
+ - Static by default, without status/alert announcements or automatic focus. Host owns whether a result change should be announced.
28
+ - Choose headingLevel for the page hierarchy. Density controls relative padding. Host actions remain ordinary named controls; no loading, fetching or error recovery engine is supplied.
29
+ - Available in 0.2.4; use matching installed declarations.
30
+
31
+ ## API reference
32
+
33
+ | Prop | Values | Default |
34
+ | --- | --- | --- |
35
+ | `title` | `string` | `Required` |
36
+ | `description` | `ReactNode` | `—` |
37
+ | `icon` | `ReactNode` | `—` |
38
+ | `actions` | `ReactNode` | `—` |
39
+ | `headingLevel` | `2 \| 3 \| 4 \| 5 \| 6` | `2` |
40
+ | `density` | `"compact" \| "comfortable"` | `"comfortable"` |
41
+ | `Native HTML props` | `Omit<HTMLAttributes<HTMLDivElement>, "title" \| "children">` | `Forwarded` |