@flood-md/agent 0.2.9 → 0.2.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (451) hide show
  1. package/DESIGN.md +33 -8
  2. package/README.md +35 -4
  3. package/SKILL.md +42 -0
  4. package/dist/catalog.json +8716 -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-app-shell.md +47 -0
  9. package/dist/materials/component-app-top-bar.md +36 -0
  10. package/dist/materials/component-aspect-ratio.md +36 -0
  11. package/dist/materials/component-autocomplete.md +54 -0
  12. package/dist/materials/component-avatar-group.md +39 -0
  13. package/dist/materials/component-avatar.md +40 -0
  14. package/dist/materials/component-badge.md +37 -0
  15. package/dist/materials/component-blockquote.md +35 -0
  16. package/dist/materials/component-breadcrumb.md +36 -0
  17. package/dist/materials/component-bulk-action-bar.md +52 -0
  18. package/dist/materials/component-button-group.md +39 -0
  19. package/dist/materials/component-button.md +44 -0
  20. package/dist/materials/component-calendar.md +59 -0
  21. package/dist/materials/component-card.md +46 -0
  22. package/dist/materials/component-center.md +39 -0
  23. package/dist/materials/component-character-count.md +42 -0
  24. package/dist/materials/component-check-card.md +39 -0
  25. package/dist/materials/component-checkbox-group.md +48 -0
  26. package/dist/materials/component-checkbox.md +37 -0
  27. package/dist/materials/component-code-snippet.md +37 -0
  28. package/dist/materials/component-collapsible.md +41 -0
  29. package/dist/materials/component-collection-toolbar.md +68 -0
  30. package/dist/materials/component-collection-view-switcher.md +49 -0
  31. package/dist/materials/component-color-picker.md +49 -0
  32. package/dist/materials/component-color-swatch.md +35 -0
  33. package/dist/materials/component-combobox.md +60 -0
  34. package/dist/materials/component-command-list.md +48 -0
  35. package/dist/materials/component-command-palette.md +53 -0
  36. package/dist/materials/component-container.md +36 -0
  37. package/dist/materials/component-context-menu.md +43 -0
  38. package/dist/materials/component-copy-button.md +43 -0
  39. package/dist/materials/component-data-list-item.md +40 -0
  40. package/dist/materials/component-data-list.md +38 -0
  41. package/dist/materials/component-data-table.md +70 -0
  42. package/dist/materials/component-date-field.md +57 -0
  43. package/dist/materials/component-date-picker.md +67 -0
  44. package/dist/materials/component-date-range-field.md +62 -0
  45. package/dist/materials/component-date-range-picker.md +73 -0
  46. package/dist/materials/component-date-time-picker.md +62 -0
  47. package/dist/materials/component-date-time-range-picker.md +70 -0
  48. package/dist/materials/component-description-list.md +42 -0
  49. package/dist/materials/component-dialog.md +45 -0
  50. package/dist/materials/component-divider.md +37 -0
  51. package/dist/materials/component-drawer.md +51 -0
  52. package/dist/materials/component-dropzone.md +45 -0
  53. package/dist/materials/component-editable.md +57 -0
  54. package/dist/materials/component-empty-state.md +41 -0
  55. package/dist/materials/component-error-summary.md +40 -0
  56. package/dist/materials/component-field.md +46 -0
  57. package/dist/materials/component-fieldset.md +46 -0
  58. package/dist/materials/component-figure.md +36 -0
  59. package/dist/materials/component-file-input.md +45 -0
  60. package/dist/materials/component-file-item.md +48 -0
  61. package/dist/materials/component-file-list.md +39 -0
  62. package/dist/materials/component-file-meta.md +36 -0
  63. package/dist/materials/component-filter-condition.md +53 -0
  64. package/dist/materials/component-filter-group.md +55 -0
  65. package/dist/materials/component-flood-root.md +33 -0
  66. package/dist/materials/component-grid.md +38 -0
  67. package/dist/materials/component-heading.md +38 -0
  68. package/dist/materials/component-hover-card.md +48 -0
  69. package/dist/materials/component-icon-button.md +43 -0
  70. package/dist/materials/component-icon-slot.md +37 -0
  71. package/dist/materials/component-image-preview.md +50 -0
  72. package/dist/materials/component-image.md +37 -0
  73. package/dist/materials/component-inline-code.md +36 -0
  74. package/dist/materials/component-inline.md +39 -0
  75. package/dist/materials/component-input-group.md +43 -0
  76. package/dist/materials/component-input.md +39 -0
  77. package/dist/materials/component-kbd.md +34 -0
  78. package/dist/materials/component-label.md +37 -0
  79. package/dist/materials/component-link.md +35 -0
  80. package/dist/materials/component-list-box.md +57 -0
  81. package/dist/materials/component-list.md +40 -0
  82. package/dist/materials/component-menu.md +54 -0
  83. package/dist/materials/component-menubar.md +41 -0
  84. package/dist/materials/component-meter.md +43 -0
  85. package/dist/materials/component-metric.md +39 -0
  86. package/dist/materials/component-multi-select.md +62 -0
  87. package/dist/materials/component-navigation-group.md +51 -0
  88. package/dist/materials/component-navigation-item.md +59 -0
  89. package/dist/materials/component-navigation-list.md +38 -0
  90. package/dist/materials/component-navigation-tree.md +51 -0
  91. package/dist/materials/component-number-input.md +47 -0
  92. package/dist/materials/component-overflow-actions.md +47 -0
  93. package/dist/materials/component-page-header.md +40 -0
  94. package/dist/materials/component-pagination.md +44 -0
  95. package/dist/materials/component-password-input.md +43 -0
  96. package/dist/materials/component-pin-input.md +45 -0
  97. package/dist/materials/component-popover.md +48 -0
  98. package/dist/materials/component-progress.md +42 -0
  99. package/dist/materials/component-radio-card.md +43 -0
  100. package/dist/materials/component-radio-group.md +49 -0
  101. package/dist/materials/component-radio.md +39 -0
  102. package/dist/materials/component-range-calendar.md +58 -0
  103. package/dist/materials/component-rating.md +46 -0
  104. package/dist/materials/component-resizable-panels.md +48 -0
  105. package/dist/materials/component-scroll-area.md +42 -0
  106. package/dist/materials/component-search-input.md +40 -0
  107. package/dist/materials/component-section.md +42 -0
  108. package/dist/materials/component-segmented-control.md +53 -0
  109. package/dist/materials/component-select.md +45 -0
  110. package/dist/materials/component-sidebar.md +64 -0
  111. package/dist/materials/component-skeleton.md +42 -0
  112. package/dist/materials/component-skip-link.md +37 -0
  113. package/dist/materials/component-slider.md +51 -0
  114. package/dist/materials/component-spinner.md +37 -0
  115. package/dist/materials/component-split.md +40 -0
  116. package/dist/materials/component-stack.md +37 -0
  117. package/dist/materials/component-status-indicator.md +38 -0
  118. package/dist/materials/component-steps.md +40 -0
  119. package/dist/materials/component-surface.md +37 -0
  120. package/dist/materials/component-switch.md +35 -0
  121. package/dist/materials/component-table.md +46 -0
  122. package/dist/materials/component-tabs.md +45 -0
  123. package/dist/materials/component-tag-input.md +46 -0
  124. package/dist/materials/component-tag.md +40 -0
  125. package/dist/materials/component-text.md +39 -0
  126. package/dist/materials/component-textarea.md +38 -0
  127. package/dist/materials/component-time-field.md +56 -0
  128. package/dist/materials/component-time-picker.md +60 -0
  129. package/dist/materials/component-timeline.md +38 -0
  130. package/dist/materials/component-toast-region.md +42 -0
  131. package/dist/materials/component-toggle-group.md +44 -0
  132. package/dist/materials/component-toggle.md +40 -0
  133. package/dist/materials/component-toolbar.md +46 -0
  134. package/dist/materials/component-tooltip.md +40 -0
  135. package/dist/materials/component-tree-select.md +56 -0
  136. package/dist/materials/component-tree.md +52 -0
  137. package/dist/materials/component-upload-item.md +52 -0
  138. package/dist/materials/component-upload-list.md +40 -0
  139. package/dist/materials/component-visually-hidden.md +37 -0
  140. package/dist/materials/guide-agent-knowledge.md +95 -0
  141. package/dist/materials/guide-agents.md +103 -0
  142. package/dist/materials/guide-faq.md +84 -0
  143. package/dist/materials/guide-foundations.md +275 -0
  144. package/dist/materials/guide-installation.md +79 -0
  145. package/dist/materials/guide-interface-content.md +76 -0
  146. package/dist/materials/guide-introduction.md +42 -0
  147. package/dist/materials/guide-layout.md +222 -0
  148. package/dist/materials/guide-motion.md +69 -0
  149. package/dist/materials/guide-privacy.md +23 -0
  150. package/dist/materials/guide-project-ui.md +127 -0
  151. package/dist/materials/guide-skills.md +117 -0
  152. package/dist/materials/guide-theming.md +73 -0
  153. package/dist/materials/recipe-collection-views.md +648 -0
  154. package/dist/materials/recipe-command-palette.md +45 -0
  155. package/dist/materials/recipe-filter-bar.md +68 -0
  156. package/dist/materials/recipe-form-submission.md +39 -0
  157. package/dist/materials/recipe-grouped-form.md +71 -0
  158. package/dist/materials/recipe-navigation-workspace.md +222 -0
  159. package/dist/materials/recipe-record-management.md +296 -0
  160. package/dist/materials/recipe-record-workspace.md +207 -0
  161. package/dist/materials/recipe-select-all.md +31 -0
  162. package/dist/materials/recipe-settings-workspace.md +232 -0
  163. package/dist/materials/recipe-split-button.md +26 -0
  164. package/dist/materials/recipe-table-bulk-actions.md +88 -0
  165. package/dist/materials/recipe-workspace-review.md +134 -0
  166. package/dist/materials/token-sys.color.accent.content.json +41 -0
  167. package/dist/materials/token-sys.color.action.danger.content.json +42 -0
  168. package/dist/materials/token-sys.color.action.ghost.content.json +41 -0
  169. package/dist/materials/token-sys.color.action.ghost.disabled-content.json +41 -0
  170. package/dist/materials/token-sys.color.action.ghost.disabled.json +41 -0
  171. package/dist/materials/token-sys.color.action.ghost.hover.json +41 -0
  172. package/dist/materials/token-sys.color.action.ghost.pressed.json +41 -0
  173. package/dist/materials/token-sys.color.action.ghost.rest.json +41 -0
  174. package/dist/materials/token-sys.color.action.on-surface.content.json +39 -0
  175. package/dist/materials/token-sys.color.action.on-surface.disabled-content.json +39 -0
  176. package/dist/materials/token-sys.color.action.on-surface.disabled.json +39 -0
  177. package/dist/materials/token-sys.color.action.on-surface.hover.json +39 -0
  178. package/dist/materials/token-sys.color.action.on-surface.pressed.json +39 -0
  179. package/dist/materials/token-sys.color.action.on-surface.rest.json +39 -0
  180. package/dist/materials/token-sys.color.action.primary.content.json +39 -0
  181. package/dist/materials/token-sys.color.action.primary.disabled-content.json +39 -0
  182. package/dist/materials/token-sys.color.action.primary.disabled.json +39 -0
  183. package/dist/materials/token-sys.color.action.primary.hover.json +39 -0
  184. package/dist/materials/token-sys.color.action.primary.pressed.json +39 -0
  185. package/dist/materials/token-sys.color.action.primary.rest.json +39 -0
  186. package/dist/materials/token-sys.color.action.subtle.content.json +39 -0
  187. package/dist/materials/token-sys.color.action.subtle.disabled-content.json +39 -0
  188. package/dist/materials/token-sys.color.action.subtle.disabled.json +39 -0
  189. package/dist/materials/token-sys.color.action.subtle.hover.json +39 -0
  190. package/dist/materials/token-sys.color.action.subtle.pressed.json +39 -0
  191. package/dist/materials/token-sys.color.action.subtle.rest.json +39 -0
  192. package/dist/materials/token-sys.color.border.decorative.json +42 -0
  193. package/dist/materials/token-sys.color.border.default.json +39 -0
  194. package/dist/materials/token-sys.color.border.floating.json +39 -0
  195. package/dist/materials/token-sys.color.border.strong.json +39 -0
  196. package/dist/materials/token-sys.color.content.default.json +41 -0
  197. package/dist/materials/token-sys.color.content.helper.json +39 -0
  198. package/dist/materials/token-sys.color.content.subtle.json +43 -0
  199. package/dist/materials/token-sys.color.context.base.action-disabled.json +41 -0
  200. package/dist/materials/token-sys.color.context.base.action-hover.json +41 -0
  201. package/dist/materials/token-sys.color.context.base.action-pressed.json +41 -0
  202. package/dist/materials/token-sys.color.context.base.action-rest.json +41 -0
  203. package/dist/materials/token-sys.color.context.base.avatar-background.json +41 -0
  204. package/dist/materials/token-sys.color.context.base.border-decorative.json +41 -0
  205. package/dist/materials/token-sys.color.context.base.divider-decorative.json +41 -0
  206. package/dist/materials/token-sys.color.context.base.field-background.json +41 -0
  207. package/dist/materials/token-sys.color.context.base.field-border.json +41 -0
  208. package/dist/materials/token-sys.color.context.base.field-disabled.json +41 -0
  209. package/dist/materials/token-sys.color.context.base.field-readonly.json +41 -0
  210. package/dist/materials/token-sys.color.context.base.indicator-track.json +41 -0
  211. package/dist/materials/token-sys.color.context.base.loading-placeholder.json +41 -0
  212. package/dist/materials/token-sys.color.context.base.muted-background.json +41 -0
  213. package/dist/materials/token-sys.color.context.base.on-surface-action-disabled.json +41 -0
  214. package/dist/materials/token-sys.color.context.base.on-surface-action-hover.json +41 -0
  215. package/dist/materials/token-sys.color.context.base.on-surface-action-pressed.json +41 -0
  216. package/dist/materials/token-sys.color.context.base.on-surface-action-rest.json +41 -0
  217. package/dist/materials/token-sys.color.context.base.selection-background.json +41 -0
  218. package/dist/materials/token-sys.color.context.base.supporting-background.json +41 -0
  219. package/dist/materials/token-sys.color.context.filled.action-disabled.json +41 -0
  220. package/dist/materials/token-sys.color.context.filled.action-hover.json +41 -0
  221. package/dist/materials/token-sys.color.context.filled.action-pressed.json +41 -0
  222. package/dist/materials/token-sys.color.context.filled.action-rest.json +41 -0
  223. package/dist/materials/token-sys.color.context.filled.avatar-background.json +41 -0
  224. package/dist/materials/token-sys.color.context.filled.border-decorative.json +41 -0
  225. package/dist/materials/token-sys.color.context.filled.divider-decorative.json +41 -0
  226. package/dist/materials/token-sys.color.context.filled.field-background.json +41 -0
  227. package/dist/materials/token-sys.color.context.filled.field-border.json +41 -0
  228. package/dist/materials/token-sys.color.context.filled.field-disabled.json +41 -0
  229. package/dist/materials/token-sys.color.context.filled.field-readonly.json +41 -0
  230. package/dist/materials/token-sys.color.context.filled.indicator-track.json +41 -0
  231. package/dist/materials/token-sys.color.context.filled.loading-placeholder.json +41 -0
  232. package/dist/materials/token-sys.color.context.filled.muted-background.json +41 -0
  233. package/dist/materials/token-sys.color.context.filled.selection-background.json +41 -0
  234. package/dist/materials/token-sys.color.context.filled.supporting-background.json +41 -0
  235. package/dist/materials/token-sys.color.divider.decorative.json +41 -0
  236. package/dist/materials/token-sys.color.feedback.error.json +39 -0
  237. package/dist/materials/token-sys.color.feedback.info.json +39 -0
  238. package/dist/materials/token-sys.color.feedback.success.json +39 -0
  239. package/dist/materials/token-sys.color.feedback.warning.json +39 -0
  240. package/dist/materials/token-sys.color.field.background.json +39 -0
  241. package/dist/materials/token-sys.color.field.border.json +39 -0
  242. package/dist/materials/token-sys.color.field.boundary.json +39 -0
  243. package/dist/materials/token-sys.color.field.content.json +39 -0
  244. package/dist/materials/token-sys.color.field.disabled-content.json +39 -0
  245. package/dist/materials/token-sys.color.field.disabled.json +39 -0
  246. package/dist/materials/token-sys.color.field.placeholder.json +39 -0
  247. package/dist/materials/token-sys.color.field.readonly.json +41 -0
  248. package/dist/materials/token-sys.color.focus.ring.json +39 -0
  249. package/dist/materials/token-sys.color.indicator.accent.json +39 -0
  250. package/dist/materials/token-sys.color.indicator.fill.json +39 -0
  251. package/dist/materials/token-sys.color.indicator.track.json +39 -0
  252. package/dist/materials/token-sys.color.loading.placeholder.json +42 -0
  253. package/dist/materials/token-sys.color.scrollbar.thumb-hover.json +39 -0
  254. package/dist/materials/token-sys.color.scrollbar.thumb.json +39 -0
  255. package/dist/materials/token-sys.color.selection.background.json +39 -0
  256. package/dist/materials/token-sys.color.selection.content.json +39 -0
  257. package/dist/materials/token-sys.color.selection.floating.json +39 -0
  258. package/dist/materials/token-sys.color.shadow.floating.json +39 -0
  259. package/dist/materials/token-sys.color.surface.avatar.json +41 -0
  260. package/dist/materials/token-sys.color.surface.canvas.json +39 -0
  261. package/dist/materials/token-sys.color.surface.current.json +41 -0
  262. package/dist/materials/token-sys.color.surface.default.json +39 -0
  263. package/dist/materials/token-sys.color.surface.floating-translucent.json +39 -0
  264. package/dist/materials/token-sys.color.surface.floating.json +39 -0
  265. package/dist/materials/token-sys.color.surface.muted.json +41 -0
  266. package/dist/materials/token-sys.color.surface.overlay.json +39 -0
  267. package/dist/materials/token-sys.color.surface.raised.json +39 -0
  268. package/dist/materials/token-sys.color.surface.supporting.json +41 -0
  269. package/dist/materials/token-sys.control.2xl.gap.json +34 -0
  270. package/dist/materials/token-sys.control.2xl.height.json +34 -0
  271. package/dist/materials/token-sys.control.2xl.icon-size.json +34 -0
  272. package/dist/materials/token-sys.control.2xl.line-height.json +31 -0
  273. package/dist/materials/token-sys.control.2xl.padding-inline.json +34 -0
  274. package/dist/materials/token-sys.control.2xl.text-size.json +34 -0
  275. package/dist/materials/token-sys.control.2xs.gap.json +34 -0
  276. package/dist/materials/token-sys.control.2xs.height.json +34 -0
  277. package/dist/materials/token-sys.control.2xs.icon-size.json +34 -0
  278. package/dist/materials/token-sys.control.2xs.line-height.json +31 -0
  279. package/dist/materials/token-sys.control.2xs.padding-inline.json +34 -0
  280. package/dist/materials/token-sys.control.2xs.text-size.json +34 -0
  281. package/dist/materials/token-sys.control.lg.gap.json +34 -0
  282. package/dist/materials/token-sys.control.lg.height.json +34 -0
  283. package/dist/materials/token-sys.control.lg.icon-size.json +34 -0
  284. package/dist/materials/token-sys.control.lg.line-height.json +31 -0
  285. package/dist/materials/token-sys.control.lg.padding-inline.json +34 -0
  286. package/dist/materials/token-sys.control.lg.text-size.json +34 -0
  287. package/dist/materials/token-sys.control.md.gap.json +34 -0
  288. package/dist/materials/token-sys.control.md.height.json +34 -0
  289. package/dist/materials/token-sys.control.md.icon-size.json +34 -0
  290. package/dist/materials/token-sys.control.md.line-height.json +31 -0
  291. package/dist/materials/token-sys.control.md.padding-inline.json +34 -0
  292. package/dist/materials/token-sys.control.md.text-size.json +34 -0
  293. package/dist/materials/token-sys.control.sm.gap.json +34 -0
  294. package/dist/materials/token-sys.control.sm.height.json +34 -0
  295. package/dist/materials/token-sys.control.sm.icon-size.json +34 -0
  296. package/dist/materials/token-sys.control.sm.line-height.json +31 -0
  297. package/dist/materials/token-sys.control.sm.padding-inline.json +34 -0
  298. package/dist/materials/token-sys.control.sm.text-size.json +34 -0
  299. package/dist/materials/token-sys.control.xl.gap.json +34 -0
  300. package/dist/materials/token-sys.control.xl.height.json +34 -0
  301. package/dist/materials/token-sys.control.xl.icon-size.json +34 -0
  302. package/dist/materials/token-sys.control.xl.line-height.json +31 -0
  303. package/dist/materials/token-sys.control.xl.padding-inline.json +34 -0
  304. package/dist/materials/token-sys.control.xl.text-size.json +34 -0
  305. package/dist/materials/token-sys.control.xs.gap.json +34 -0
  306. package/dist/materials/token-sys.control.xs.height.json +34 -0
  307. package/dist/materials/token-sys.control.xs.icon-size.json +34 -0
  308. package/dist/materials/token-sys.control.xs.line-height.json +31 -0
  309. package/dist/materials/token-sys.control.xs.padding-inline.json +34 -0
  310. package/dist/materials/token-sys.control.xs.text-size.json +34 -0
  311. package/dist/materials/token-sys.effect.floating.blur.json +34 -0
  312. package/dist/materials/token-sys.effect.floating.saturation.json +31 -0
  313. package/dist/materials/token-sys.effect.floating.shadow-blur.json +34 -0
  314. package/dist/materials/token-sys.effect.floating.shadow-offset.json +34 -0
  315. package/dist/materials/token-sys.focus.offset.json +34 -0
  316. package/dist/materials/token-sys.focus.width.json +34 -0
  317. package/dist/materials/token-sys.font.mono.json +36 -0
  318. package/dist/materials/token-sys.font.sans.json +35 -0
  319. package/dist/materials/token-sys.layer.base.json +31 -0
  320. package/dist/materials/token-sys.layer.modal.json +31 -0
  321. package/dist/materials/token-sys.layer.popover.json +31 -0
  322. package/dist/materials/token-sys.layer.sticky.json +31 -0
  323. package/dist/materials/token-sys.layer.toast.json +31 -0
  324. package/dist/materials/token-sys.motion.distance-panel.json +36 -0
  325. package/dist/materials/token-sys.motion.distance-small.json +36 -0
  326. package/dist/materials/token-sys.motion.duration-enter.json +36 -0
  327. package/dist/materials/token-sys.motion.duration-exit.json +36 -0
  328. package/dist/materials/token-sys.motion.duration-fast.json +34 -0
  329. package/dist/materials/token-sys.motion.duration-layer.json +36 -0
  330. package/dist/materials/token-sys.motion.duration-loop.json +36 -0
  331. package/dist/materials/token-sys.motion.duration-normal.json +34 -0
  332. package/dist/materials/token-sys.motion.duration-press.json +36 -0
  333. package/dist/materials/token-sys.motion.duration-reduced.json +34 -0
  334. package/dist/materials/token-sys.motion.easing-enter.json +38 -0
  335. package/dist/materials/token-sys.motion.easing-exit.json +38 -0
  336. package/dist/materials/token-sys.motion.easing.json +36 -0
  337. package/dist/materials/token-sys.radius.action.json +34 -0
  338. package/dist/materials/token-sys.radius.block.json +34 -0
  339. package/dist/materials/token-sys.radius.field.json +34 -0
  340. package/dist/materials/token-sys.radius.indicator.json +34 -0
  341. package/dist/materials/token-sys.radius.surface.json +34 -0
  342. package/dist/materials/token-sys.scrollbar.inset.json +34 -0
  343. package/dist/materials/token-sys.scrollbar.min-thumb.json +34 -0
  344. package/dist/materials/token-sys.scrollbar.size.json +34 -0
  345. package/dist/materials/token-sys.size.choice.json +34 -0
  346. package/dist/materials/token-sys.size.container.lg.json +37 -0
  347. package/dist/materials/token-sys.size.container.md.json +37 -0
  348. package/dist/materials/token-sys.size.container.sm.json +37 -0
  349. package/dist/materials/token-sys.size.grid.min-item.json +37 -0
  350. package/dist/materials/token-sys.size.indicator.lg.json +34 -0
  351. package/dist/materials/token-sys.size.indicator.md.json +34 -0
  352. package/dist/materials/token-sys.size.indicator.sm.json +34 -0
  353. package/dist/materials/token-sys.size.keycap.lg.json +34 -0
  354. package/dist/materials/token-sys.size.keycap.md.json +34 -0
  355. package/dist/materials/token-sys.size.keycap.sm.json +34 -0
  356. package/dist/materials/token-sys.size.switch-height.json +34 -0
  357. package/dist/materials/token-sys.size.switch-thumb.json +34 -0
  358. package/dist/materials/token-sys.size.switch-width.json +34 -0
  359. package/dist/materials/token-sys.size.touch.json +34 -0
  360. package/dist/materials/token-sys.space.0.json +34 -0
  361. package/dist/materials/token-sys.space.1.json +34 -0
  362. package/dist/materials/token-sys.space.12.json +34 -0
  363. package/dist/materials/token-sys.space.2.json +34 -0
  364. package/dist/materials/token-sys.space.3.json +34 -0
  365. package/dist/materials/token-sys.space.4.json +34 -0
  366. package/dist/materials/token-sys.space.6.json +34 -0
  367. package/dist/materials/token-sys.space.8.json +34 -0
  368. package/dist/materials/token-sys.stroke.width.json +34 -0
  369. package/dist/materials/token-sys.type.body.line-height.json +31 -0
  370. package/dist/materials/token-sys.type.body.size.json +34 -0
  371. package/dist/materials/token-sys.type.body.tracking.json +34 -0
  372. package/dist/materials/token-sys.type.body.weight.json +31 -0
  373. package/dist/materials/token-sys.type.compact.line-height.json +31 -0
  374. package/dist/materials/token-sys.type.compact.size.json +34 -0
  375. package/dist/materials/token-sys.type.compact.tracking.json +34 -0
  376. package/dist/materials/token-sys.type.compact.weight.json +31 -0
  377. package/dist/materials/token-sys.type.control.line-height.json +31 -0
  378. package/dist/materials/token-sys.type.control.size.json +34 -0
  379. package/dist/materials/token-sys.type.control.tracking.json +34 -0
  380. package/dist/materials/token-sys.type.control.weight.json +31 -0
  381. package/dist/materials/token-sys.type.dialog-title.line-height.json +33 -0
  382. package/dist/materials/token-sys.type.dialog-title.size.json +36 -0
  383. package/dist/materials/token-sys.type.dialog-title.tracking.json +36 -0
  384. package/dist/materials/token-sys.type.dialog-title.weight.json +33 -0
  385. package/dist/materials/token-sys.type.display.line-height.json +31 -0
  386. package/dist/materials/token-sys.type.display.size.json +34 -0
  387. package/dist/materials/token-sys.type.display.tracking.json +34 -0
  388. package/dist/materials/token-sys.type.display.weight.json +31 -0
  389. package/dist/materials/token-sys.type.field-label.line-height.json +33 -0
  390. package/dist/materials/token-sys.type.field-label.size.json +36 -0
  391. package/dist/materials/token-sys.type.field-label.tracking.json +36 -0
  392. package/dist/materials/token-sys.type.field-label.weight.json +33 -0
  393. package/dist/materials/token-sys.type.group-title.line-height.json +33 -0
  394. package/dist/materials/token-sys.type.group-title.size.json +36 -0
  395. package/dist/materials/token-sys.type.group-title.tracking.json +36 -0
  396. package/dist/materials/token-sys.type.group-title.weight.json +33 -0
  397. package/dist/materials/token-sys.type.helper.line-height.json +31 -0
  398. package/dist/materials/token-sys.type.helper.size.json +34 -0
  399. package/dist/materials/token-sys.type.helper.tracking.json +34 -0
  400. package/dist/materials/token-sys.type.helper.weight.json +31 -0
  401. package/dist/materials/token-sys.type.label.line-height.json +31 -0
  402. package/dist/materials/token-sys.type.label.size.json +34 -0
  403. package/dist/materials/token-sys.type.label.tracking.json +34 -0
  404. package/dist/materials/token-sys.type.label.weight.json +31 -0
  405. package/dist/materials/token-sys.type.large.line-height.json +31 -0
  406. package/dist/materials/token-sys.type.large.size.json +34 -0
  407. package/dist/materials/token-sys.type.large.tracking.json +34 -0
  408. package/dist/materials/token-sys.type.large.weight.json +31 -0
  409. package/dist/materials/token-sys.type.lead.line-height.json +31 -0
  410. package/dist/materials/token-sys.type.lead.size.json +34 -0
  411. package/dist/materials/token-sys.type.lead.tracking.json +34 -0
  412. package/dist/materials/token-sys.type.lead.weight.json +31 -0
  413. package/dist/materials/token-sys.type.page.line-height.json +31 -0
  414. package/dist/materials/token-sys.type.page.size.json +34 -0
  415. package/dist/materials/token-sys.type.page.tracking.json +34 -0
  416. package/dist/materials/token-sys.type.page.weight.json +31 -0
  417. package/dist/materials/token-sys.type.section.line-height.json +31 -0
  418. package/dist/materials/token-sys.type.section.size.json +34 -0
  419. package/dist/materials/token-sys.type.section.tracking.json +34 -0
  420. package/dist/materials/token-sys.type.section.weight.json +31 -0
  421. package/knowledge.json +522 -0
  422. package/lib/index.d.ts +33 -0
  423. package/lib/index.mjs +144 -0
  424. package/lib/inspect.d.ts +12 -0
  425. package/lib/inspect.mjs +187 -0
  426. package/manifest.json +51 -1
  427. package/package.json +13 -1
  428. package/references/component-families.md +146 -0
  429. package/references/composition.md +4 -4
  430. package/references/customization.md +14 -0
  431. package/references/flood-composition/SKILL.md +34 -0
  432. package/references/flood-data-display/SKILL.md +149 -0
  433. package/references/flood-feedback/SKILL.md +49 -3
  434. package/references/flood-forms/SKILL.md +82 -2
  435. package/references/flood-foundations/SKILL.md +43 -0
  436. package/references/flood-hierarchy/SKILL.md +103 -0
  437. package/references/flood-interface-content/SKILL.md +163 -0
  438. package/references/flood-motion/SKILL.md +44 -0
  439. package/references/flood-navigation/SKILL.md +195 -0
  440. package/references/flood-overlays/SKILL.md +42 -0
  441. package/references/flood-records/SKILL.md +148 -0
  442. package/references/flood-spacing/SKILL.md +54 -0
  443. package/references/flood-verification/SKILL.md +72 -0
  444. package/references/interface-content-examples.md +51 -0
  445. package/references/knowledge.md +49 -0
  446. package/references/record-decisions.md +25 -0
  447. package/references/rendered-review.md +102 -0
  448. package/references/routing.md +1 -0
  449. package/references/spacing.md +30 -0
  450. package/rules.json +242 -6
  451. package/workflows.json +171 -10
@@ -0,0 +1,58 @@
1
+ # RangeCalendar
2
+
3
+ A Gregorian grid for selecting and previewing one continuous date interval.
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, RangeCalendar } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <RangeCalendar label="Choose travel dates" today="2026-10-26" defaultValue={{start:"2026-10-12",end:"2026-10-18"}} />
19
+ </FloodRoot>
20
+ );
21
+ }
22
+ ```
23
+
24
+ ## Design notes
25
+
26
+ - The first activation chooses a start; the second completes a normalized ordered interval. Hover and focus can preview an unfinished interval without committing.
27
+ - Controlled values include partial {start,end:""}; the host must accept that partial value to advance selection. onRangeSelect confirms an enabled completed interval.
28
+ - isDateDisabled controls endpoints. isRangeDisabled validates the entire interval; interior blocked dates are not inferred by scanning arbitrary date spans.
29
+ - Reuses the Calendar grid, month navigation, focus and localization contracts. Translate rangeLabels for instruction messages. Introduced in 0.2.7.
30
+
31
+ ## API reference
32
+
33
+ | Prop | Values | Default |
34
+ | --- | --- | --- |
35
+ | `label` | `string` | `Required` |
36
+ | `showViewControls` | `boolean` | `—` |
37
+ | `viewLabels` | `{month?:string;year?:string;previous?:string;next?:string}` | `—` |
38
+ | `visibleMonth` | `string` | `—` |
39
+ | `defaultVisibleMonth` | `string` | `—` |
40
+ | `onVisibleMonthChange` | `(month: string) => void` | `—` |
41
+ | `min` | `string` | `—` |
42
+ | `max` | `string` | `—` |
43
+ | `disabled` | `boolean` | `—` |
44
+ | `readOnly` | `boolean` | `—` |
45
+ | `isDateDisabled` | `(date: string) => boolean` | `—` |
46
+ | `weekStartsOn` | `0 \| 1 \| 2 \| 3 \| 4 \| 5 \| 6` | `0` |
47
+ | `locale` | `string` | `"en-US"` |
48
+ | `autoFocus` | `boolean` | `false` |
49
+ | `today` | `string` | `—` |
50
+ | `previousMonthLabel` | `string` | `—` |
51
+ | `nextMonthLabel` | `string` | `—` |
52
+ | `value` | `DateRangeValue` | `—` |
53
+ | `defaultValue` | `DateRangeValue` | `—` |
54
+ | `onValueChange` | `(range: DateRangeValue) => void` | `—` |
55
+ | `onRangeSelect` | `(range: DateRangeValue) => void` | `—` |
56
+ | `isRangeDisabled` | `(range: DateRangeValue) => boolean` | `—` |
57
+ | `rangeLabels` | `{ chooseStart?: string; chooseEnd?: string; unavailable?: string }` | `—` |
58
+ | `Native HTML props` | `Omit<Omit<HTMLAttributes<HTMLDivElement>, "defaultValue" \| "onChange" \| "children">, "value" \| "defaultValue" \| "onValueChange" \| "onDateSelect" \| "granularity">` | `Forwarded` |
@@ -0,0 +1,46 @@
1
+ # Rating
2
+
3
+ A compact star rating backed by a named native radio group.
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, Rating } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <Rating label="Your experience" name="experience" defaultValue={3} max={5} />
19
+ </FloodRoot>
20
+ );
21
+ }
22
+ ```
23
+
24
+ ## Design notes
25
+
26
+ - Provide a nonempty name for native radio grouping and form submission. value/defaultValue are integers from zero (unselected) to max; max is an integer from 1 to 10. Uncontrolled native reset restores defaultValue. required uses native group validation.
27
+ - Arrow keys follow logical direction, Home/End jump to the first/last value, and Space selects the focused radio. One radio is in Tab order. readOnly keeps the current selection focusable without allowing changes; disabled is native.
28
+ - Use getValueLabel to localize each radio name. The stars are decorative; native named radios carry the value. hideLabel preserves the legend for assistive technology. No fractional values or review submission engine is included. Available in 0.2.5.
29
+
30
+ ## API reference
31
+
32
+ | Prop | Values | Default |
33
+ | --- | --- | --- |
34
+ | `label` | `string` | `Required` |
35
+ | `hideLabel` | `boolean` | `false` |
36
+ | `value` | `number` | `—` |
37
+ | `defaultValue` | `number` | `0` |
38
+ | `max` | `number` | `5` |
39
+ | `onValueChange` | `(value: number) => void` | `—` |
40
+ | `getValueLabel` | `(value: number, max: number) => string` | `—` |
41
+ | `readOnly` | `boolean` | `false` |
42
+ | `required` | `boolean` | `—` |
43
+ | `name` | `string` | `Required` |
44
+ | `form` | `string` | `—` |
45
+ | `size` | `"sm" \| "md" \| "lg"` | `"md"` |
46
+ | `Native HTML props` | `Omit<FieldsetHTMLAttributes<HTMLFieldSetElement>, "children" \| "onChange" \| "defaultValue">` | `Forwarded` |
@@ -0,0 +1,48 @@
1
+ # ResizablePanels
2
+
3
+ Two panels separated by an accessible pointer and keyboard resize control.
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, ResizablePanels, Text } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <ResizablePanels label="Resize workspace" main={<Text>Navigation</Text>} secondary={<Text>Workspace</Text>} style={{height:"16rem"}} />
19
+ </FloodRoot>
20
+ );
21
+ }
22
+ ```
23
+
24
+ ## Design notes
25
+
26
+ - Percentages describe the main pane and exclude the dedicated separator track. The host supplies content and scrolling.
27
+ - Drag the separator or use logical arrow keys, Home/End and Shift for large steps. Horizontal resizing follows RTL direction.
28
+ - value/onValueChange keeps the host in control. onValueCommit reports an accepted completed interaction; pointer cancellation restores the initial uncontrolled size.
29
+ - The separator occupies space so its touch area does not overlap panel content. Persisting layout and larger panel graphs belong to the host. Introduced in 0.2.7.
30
+
31
+ ## API reference
32
+
33
+ | Prop | Values | Default |
34
+ | --- | --- | --- |
35
+ | `label` | `string` | `Required` |
36
+ | `main` | `ReactNode` | `Required` |
37
+ | `secondary` | `ReactNode` | `Required` |
38
+ | `orientation` | `"horizontal" \| "vertical"` | `"horizontal"` |
39
+ | `value` | `number` | `—` |
40
+ | `defaultValue` | `number` | `50` |
41
+ | `onValueChange` | `(percent: number) => void` | `—` |
42
+ | `onValueCommit` | `(percent: number) => void` | `—` |
43
+ | `min` | `number` | `10` |
44
+ | `max` | `number` | `90` |
45
+ | `step` | `number` | `1` |
46
+ | `largeStep` | `number` | `10` |
47
+ | `disabled` | `boolean` | `—` |
48
+ | `Native HTML props` | `Omit<HTMLAttributes<HTMLDivElement>, "children" \| "defaultValue" \| "onChange">` | `Forwarded` |
@@ -0,0 +1,42 @@
1
+ # ScrollArea
2
+
3
+ Native scrolling with inset overlay scrollbars that preserve content width.
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, ScrollArea, Stack, Text } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <ScrollArea aria-label="Recent activity" style={{ maxHeight: "12rem" }}>
19
+ <Stack gap="4">
20
+ <Text>Project created.</Text>
21
+ <Text>Workspace updated.</Text>
22
+ </Stack>
23
+ </ScrollArea>
24
+ </FloodRoot>
25
+ );
26
+ }
27
+ ```
28
+
29
+ ## Design notes
30
+
31
+ - Scrollbars overlay the viewport with an inset; they do not reserve a content gutter. Give the viewport an explicit height or maxHeight to produce vertical overflow.
32
+ - The forwarded ref, className, style and native div props belong to the scrollable viewport. Supply a visible context or accessible label for keyboard users.
33
+ - Wheel, touch and keyboard scrolling remain native. Default contentInset="scrollbar" keeps text and full-width rows clear of rails with inner padding, without shrinking the viewport. Explicit none allows edge-to-edge content when the host already provides safe padding. Rails automatically avoid rounded clipping corners.
34
+ - Forced colors restores native scrollbars as an accessibility fallback. Verify horizontal and RTL content, resizing and zoom in the host composition.
35
+
36
+ ## API reference
37
+
38
+ | Prop | Values | Default |
39
+ | --- | --- | --- |
40
+ | `orientation` | `"vertical" \| "horizontal" \| "both"` | `"vertical"` |
41
+ | `contentInset` | `"none" \| "scrollbar"` | `"scrollbar"` |
42
+ | `Native HTML props` | `HTMLAttributes<HTMLDivElement>` | `Forwarded` |
@@ -0,0 +1,40 @@
1
+ # SearchInput
2
+
3
+ A native search field with a leading search icon 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, SearchInput } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <Field label="Search">
19
+ {control => <SearchInput {...control} name="search-input" />}
20
+ </Field>
21
+ </FloodRoot>
22
+ );
23
+ }
24
+ ```
25
+
26
+ ## Design notes
27
+
28
+ - Native onChange, name, form, reset, ref and Field associations are preserved. clearable defaults to true; read-only hides the clear action. Translate clearLabel. Enter keeps native form submission; filtering belongs to the host.
29
+ - Composes Flood InputGroup, IconSlot and IconButton using existing semantic geometry and feedback states. Available in 0.2.5.
30
+
31
+ ## API reference
32
+
33
+ | Prop | Values | Default |
34
+ | --- | --- | --- |
35
+ | `status` | `"error" \| "warning" \| "success" \| "info"` | `—` |
36
+ | `invalid` | `boolean` | `—` |
37
+ | `controlSize` | `"sm" \| "md" \| "lg" \| "xl"` | `"md"` |
38
+ | `clearable` | `boolean` | `true` |
39
+ | `clearLabel` | `string` | `"Clear search"` |
40
+ | `Native HTML props` | `Omit<InputHTMLAttributes<HTMLInputElement>, "type" \| "children">` | `Forwarded` |
@@ -0,0 +1,42 @@
1
+ # Section
2
+
3
+ A named document section with a compact heading, supporting description and optional 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, Section, Text } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <Section title="Project settings" description="Manage details your team shares." headingLevel={2}>
19
+ <Text as="p">Section content.</Text>
20
+ </Section>
21
+ </FloodRoot>
22
+ );
23
+ }
24
+ ```
25
+
26
+ ## Design notes
27
+
28
+ - Section renders a native section and heading. A generated heading ID labels the region; explicit id creates a deterministic heading ID. headingLevel follows the host document hierarchy.
29
+ - The title and description share a close text column; actions align separately and wrap when necessary. It adds no surface or border. Compose Surface or another container inside when content needs its own background.
30
+ - Original compatible addition in the unpublished 0.2.5 source candidate.
31
+ - headingLevel chooses h2–h6 for the document outline; it does not set the visual scale. headingSize independently selects the existing Heading typography role (section by default).
32
+
33
+ ## API reference
34
+
35
+ | Prop | Values | Default |
36
+ | --- | --- | --- |
37
+ | `title` | `string` | `Required` |
38
+ | `description` | `ReactNode` | `—` |
39
+ | `actions` | `ReactNode` | `—` |
40
+ | `headingLevel` | `2 \| 3 \| 4 \| 5 \| 6` | `2` |
41
+ | `headingSize` | `"display" \| "large" \| "page" \| "section"` | `"section"` |
42
+ | `Native HTML props` | `Omit<HTMLAttributes<HTMLElement>, "title">` | `Forwarded` |
@@ -0,0 +1,53 @@
1
+ # SegmentedControl
2
+
3
+ A compact single-value choice or collection view switcher with native radio semantics.
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, SegmentedControl } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <SegmentedControl label="Claims view" name="claims-view" defaultValue="pending" options={[{value: "pending", label: "Pending", count: 2}, {value: "reviewed", label: "Reviewed"}]} />
19
+ </FloodRoot>
20
+ );
21
+ }
22
+ ```
23
+
24
+ ## Design notes
25
+
26
+ - Uses original RadioGroup behavior and native inputs.
27
+ - Arrow keys move focus and select; Home/End select endpoints, skipping disabled segments. Selecting the current value does not clear it.
28
+ - Use SegmentedControl to switch a shared collection between mutually exclusive views. Use Tabs for associated content panels and ToggleGroup for optional pressed actions.
29
+ - An option count can communicate workload without a nested badge or a second control. Counts are read with visible labels, preserve zero, and are omitted in icon-only mode. Format localized counts before passing them.
30
+ - Native name/form/required, reset and controlled values are preserved.
31
+
32
+ ## API reference
33
+
34
+ | Prop | Values | Default |
35
+ | --- | --- | --- |
36
+ | `legendSize · 0.2.10` | `"label" \| "section"` | `—` |
37
+ | `hideLabel · 0.2.3` | `boolean` | `—` |
38
+ | `hint` | `ReactNode` | `—` |
39
+ | `error` | `ReactNode` | `—` |
40
+ | `message` | `ReactNode` | `—` |
41
+ | `status` | `"error" \| "warning" \| "success" \| "info"` | `—` |
42
+ | `name` | `string` | `Required` |
43
+ | `value` | `string` | `—` |
44
+ | `defaultValue` | `string` | `—` |
45
+ | `onValueChange` | `(value: string) => void` | `—` |
46
+ | `orientation` | `"vertical" \| "horizontal"` | `"horizontal"` |
47
+ | `required` | `boolean` | `—` |
48
+ | `label` | `string` | `Required` |
49
+ | `options` | `readonly SegmentedControlOption[]` | `Required` |
50
+ | `controlSize` | `"sm" \| "md" \| "lg" \| "xl"` | `"md"` |
51
+ | `iconOnly` | `boolean` | `false` |
52
+ | `fullWidth` | `boolean` | `false` |
53
+ | `Native HTML props` | `Omit<Omit<FieldsetHTMLAttributes<HTMLFieldSetElement>, "children" \| "defaultValue" \| "role">, "legend" \| "options">` | `Forwarded` |
@@ -0,0 +1,45 @@
1
+ # Select
2
+
3
+ A Flood choice field with its own popup and native form integration.
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, Select } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <Field label="Visibility">
19
+ {(control) => (
20
+ <Select {...control} name="visibility" defaultValue="private">
21
+ <option value="private">Private</option>
22
+ <option value="team">Team</option>
23
+ </Select>
24
+ )}
25
+ </Field>
26
+ </FloodRoot>
27
+ );
28
+ }
29
+ ```
30
+
31
+ ## Design notes
32
+
33
+ - Single selection uses a Flood trigger and listbox, including the popup. Native options and optgroups supply the choices; disabled choices cannot be selected.
34
+ - Use arrows, Home/End and typing to navigate; Enter or Space confirms, Escape cancels. The popup scrolls active choices into view.
35
+ - Select fills its Field; constrain the form or field wrapper. Multiple and numeric size greater than one use a native inline listbox rather than a popup.
36
+ - A native form bridge preserves name, value/defaultValue, required, disabled, onChange and HTMLSelectElement ref. Inspect the matching guide for the visible focus contract.
37
+
38
+ ## API reference
39
+
40
+ | Prop | Values | Default |
41
+ | --- | --- | --- |
42
+ | `status` | `"error" \| "warning" \| "success" \| "info"` | `—` |
43
+ | `invalid` | `boolean` | `—` |
44
+ | `controlSize` | `"sm" \| "md" \| "lg" \| "xl"` | `"md"` |
45
+ | `Native HTML props` | `SelectHTMLAttributes<HTMLSelectElement>` | `Forwarded` |
@@ -0,0 +1,64 @@
1
+ # Sidebar
2
+
3
+ A bounded workspace sidebar with grouped destinations, a compact rail and nested navigation flyouts.
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, Sidebar } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <div style={{height:"32rem"}}><Sidebar label="Workspace navigation" groups={[{id:"workspace",label:"Workspace",items:[{value:"overview",label:"Overview",href:"#overview"},{value:"projects",label:"Projects",children:[{value:"design",label:"Design system",href:"#design"}]}]}]} currentValue="overview" /></div>
19
+ </FloodRoot>
20
+ );
21
+ }
22
+ ```
23
+
24
+ ## Design notes
25
+
26
+ - Composes NavigationTree, ScrollArea, IconButton, Stack and Text. Host controls height; header/footer remain fixed while the navigation body scrolls with reserved scrollbar clearance.
27
+ - collapsed/defaultCollapsed/onCollapsedChange control the full-width versus compact rail. Controlled refusals preserve accepted geometry. side supports logical start/end; width affects expanded mode only. collapsible=false omits the toggle.
28
+ - groups need unique IDs and globally unique item values. Destinations retain real links; expansion and currentValue are independent. Disabled items cannot navigate or open a branch.
29
+ - expandedValues/defaultExpandedValues/onExpandedValuesChange retain branch disclosure across width changes. In compact mode a top-level branch opens a Popover with full navigation; choosing a destination closes that flyout. No route is inferred or persisted.
30
+ - header/footer accept content or a ({collapsed}) render function. Adapt meaningful content using that state, rather than hiding arbitrary descendants with CSS. The host owns workspace/account menus and their actions.
31
+ - The inline headerLayout puts the expanded identity and toggle on one row. The stacked default keeps the toggle in its original place across states. Enable branchGuides per group for dense nesting.
32
+ - Item icons use IconSlot; trailing content can compose Badge or other meaningful metadata in expanded mode. Compact destinations retain accessible names and native title labels; missing icons have a neutral fallback glyph.
33
+ - No automatic mobile drawer, routing, resizing, keyboard shortcut or preference storage is added. Check the bounded host, enlarged text, RTL, final scroll item, real destinations and focus across collapse/flyout transitions.
34
+ - groups can hide a redundant visual label with hideLabel while preserving the navigation name. currentKind="location" marks a global module; page is the default contextual destination. The workspace playground composes Sidebar profiles into GlobalRail plus ContextBar without duplicate flyouts.
35
+ - variant defaults to quiet in the 0.2.11 candidate: muted inactive content, normal control weight and restrained rectangular selection through existing semantic roles. standard retains the stronger pill recipe. Both compose the same primitive anatomy and behavior; inspect them in the full-width navigation workspace.
36
+
37
+ ## API reference
38
+
39
+ | Prop | Values | Default |
40
+ | --- | --- | --- |
41
+ | `label` | `string` | `Required` |
42
+ | `groups` | `readonly SidebarGroup[]` | `Required` |
43
+ | `currentValue` | `string` | `—` |
44
+ | `currentKind` | `NavigationTreeProps["currentKind"]` | `—` |
45
+ | `collapsed` | `boolean` | `—` |
46
+ | `defaultCollapsed` | `boolean` | `—` |
47
+ | `onCollapsedChange` | `(collapsed:boolean)=>void` | `—` |
48
+ | `collapsible` | `boolean` | `—` |
49
+ | `collapseLabel` | `string` | `—` |
50
+ | `expandLabel` | `string` | `—` |
51
+ | `expandedValues` | `readonly string[]` | `—` |
52
+ | `defaultExpandedValues` | `readonly string[]` | `—` |
53
+ | `onExpandedValuesChange` | `(values:string[])=>void` | `—` |
54
+ | `expandItemLabel` | `NavigationTreeProps["expandLabel"]` | `—` |
55
+ | `size` | `"sm" \| "md" \| "lg"` | `—` |
56
+ | `variant` | `"quiet" \| "standard"` | `—` |
57
+ | `side` | `"start" \| "end"` | `—` |
58
+ | `width` | `CSSProperties["width"]` | `—` |
59
+ | `header` | `ReactNode \| (state:SidebarSlotState)=>ReactNode` | `—` |
60
+ | `headerLayout` | `"stacked" \| "inline"` | `—` |
61
+ | `footer` | `ReactNode \| (state:SidebarSlotState)=>ReactNode` | `—` |
62
+ | `footerSeparator` | `boolean` | `—` |
63
+ | `headerSeparator` | `boolean` | `—` |
64
+ | `Native HTML props` | `Omit<HTMLAttributes<HTMLElement>, "children" \| "onChange">` | `Forwarded` |
@@ -0,0 +1,42 @@
1
+ # Skeleton
2
+
3
+ A decorative placeholder that reserves space for loading content.
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, Skeleton } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <Stack gap="2">
19
+ <Skeleton width="65%" />
20
+ <Skeleton />
21
+ <Skeleton width="80%" />
22
+ </Stack>
23
+ </FloodRoot>
24
+ );
25
+ }
26
+ ```
27
+
28
+ ## Design notes
29
+
30
+ - Always hidden from assistive technology. The host owns loading announcements and aria-busy on the relevant region.
31
+ - Width and height accept CSS dimensions; style overrides them. Match the final content geometry.
32
+ - Animation can be disabled; reduced motion and forced colors disable the pulse. Available in 0.2.4.
33
+
34
+ ## API reference
35
+
36
+ | Prop | Values | Default |
37
+ | --- | --- | --- |
38
+ | `shape` | `"text" \| "rounded" \| "circle"` | `"text"` |
39
+ | `width` | `CSSProperties["width"]` | `—` |
40
+ | `height` | `CSSProperties["height"]` | `—` |
41
+ | `animate` | `boolean` | `true` |
42
+ | `Native HTML props` | `Omit<HTMLAttributes<HTMLSpanElement>, "children" \| "role" \| "tabIndex" \| "aria-label" \| "aria-hidden">` | `Forwarded` |
@@ -0,0 +1,37 @@
1
+ # SkipLink
2
+
3
+ A native skip-navigation link revealed on focus and aimed at a page content target.
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, SkipLink } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <SkipLink href="#main-content" />
19
+ <main id="main-content" tabIndex={-1}>Page content</main>
20
+ </FloodRoot>
21
+ );
22
+ }
23
+ ```
24
+
25
+ ## Design notes
26
+
27
+ - Place SkipLink early in DOM order and point href at a nonempty same-page fragment. The target should have tabIndex=-1 (or already be focusable). Native fragment navigation updates the URL; the component then focuses and reveals the target.
28
+ - It stays visually hidden until focused. The click handler respects prevented events, modifier navigation and new-window targets. Reduced motion uses immediate scrolling. It does not create a focus trap or change the target tabindex.
29
+ - Original compatible addition in the unpublished 0.2.5 source candidate.
30
+
31
+ ## API reference
32
+
33
+ | Prop | Values | Default |
34
+ | --- | --- | --- |
35
+ | `href` | `string` | `Required` |
36
+ | `children` | `Inherited native HTML prop` | `"Skip to content"` |
37
+ | `Native HTML props` | `Omit<AnchorHTMLAttributes<HTMLAnchorElement>, "href">` | `Forwarded` |
@@ -0,0 +1,51 @@
1
+ # Slider
2
+
3
+ One value or an ordered range with native keyboard controls on a shared rail.
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, Slider } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <Slider label="Price range" name="price" defaultValue={[25, 75]} min={0} max={100} />
19
+ </FloodRoot>
20
+ );
21
+ }
22
+ ```
23
+
24
+ ## Design notes
25
+
26
+ - value/defaultValue contain one number or an ordered pair. onValueChange returns a new array. Values snap to min-based steps and thumbs cannot cross; Tab order stays stable. Supply thumbLabels to translate or explain each handle.
27
+ - Horizontal only. Direction follows the host, including RTL. Native range inputs retain keyboard behavior; pointer selection chooses the nearest handle. Names submit one or two entries; uncontrolled reset restores defaults.
28
+ - hideLabel preserves the accessible legend; showValue only controls the visible numeric readout. Read-only prevents edits while keeping focus. Use hint/message/error for meaning beyond color. Touch assistive technology needs device testing. Available in 0.2.5.
29
+
30
+ ## API reference
31
+
32
+ | Prop | Values | Default |
33
+ | --- | --- | --- |
34
+ | `legendSize · 0.2.10` | `"label" \| "section"` | `—` |
35
+ | `hideLabel · 0.2.3` | `boolean` | `—` |
36
+ | `hint` | `ReactNode` | `—` |
37
+ | `error` | `ReactNode` | `—` |
38
+ | `message` | `ReactNode` | `—` |
39
+ | `status` | `"error" \| "warning" \| "success" \| "info"` | `—` |
40
+ | `label` | `string` | `Required` |
41
+ | `value` | `readonly number[]` | `—` |
42
+ | `defaultValue` | `readonly number[]` | `[50]` |
43
+ | `onValueChange` | `(value: number[]) => void` | `—` |
44
+ | `min` | `number` | `0` |
45
+ | `max` | `number` | `100` |
46
+ | `step` | `number` | `1` |
47
+ | `thumbLabels` | `readonly string[]` | `—` |
48
+ | `showValue` | `boolean` | `true` |
49
+ | `readOnly` | `boolean` | `false` |
50
+ | `controlSize` | `"sm" \| "md" \| "lg" \| "xl"` | `"md"` |
51
+ | `Native HTML props` | `Omit<FieldsetHTMLAttributes<HTMLFieldSetElement>, "legend" \| "children" \| "defaultValue" \| "onChange">` | `Forwarded` |
@@ -0,0 +1,37 @@
1
+ # Spinner
2
+
3
+ A sized loading indicator with an optional accessible status label.
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, Spinner } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <Spinner label="Loading workspace" />
19
+ </FloodRoot>
20
+ );
21
+ }
22
+ ```
23
+
24
+ ## Design notes
25
+
26
+ - Standalone indicators expose a status with a localizable label. Decorative indicators are hidden from assistive technology.
27
+ - Button loading uses this indicator decoratively and keeps the button name. Do not announce every spinner in a busy area.
28
+ - Use Progress when completion is measurable. Reduced motion stops rotation. Available in 0.2.4.
29
+
30
+ ## API reference
31
+
32
+ | Prop | Values | Default |
33
+ | --- | --- | --- |
34
+ | `size` | `"sm" \| "md" \| "lg"` | `"md"` |
35
+ | `label` | `string` | `"Loading"` |
36
+ | `decorative` | `boolean` | `false` |
37
+ | `Native HTML props` | `Omit<HTMLAttributes<HTMLSpanElement>, "children" \| "role" \| "aria-label" \| "aria-hidden">` | `Forwarded` |
@@ -0,0 +1,40 @@
1
+ # Split
2
+
3
+ A responsive main-and-supporting layout with logical pane placement and container-based collapse.
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, Split, Text } from "@flood-md/react";
13
+ import "@flood-md/react/styles.css";
14
+
15
+ export function Example() {
16
+ return (
17
+ <FloodRoot>
18
+ <Split side="end" ratio="main" collapseAt="md" main={<Text as="p">Main content</Text>} aside={<Text as="p">Supporting content</Text>} />
19
+ </FloodRoot>
20
+ );
21
+ }
22
+ ```
23
+
24
+ ## Design notes
25
+
26
+ - main and aside are content slots in generic div panes; they do not introduce duplicate main landmarks. side places the supporting pane at logical start/end and preserves the same DOM reading order. ratio chooses equal panes or a 2:1 emphasis on main/aside.
27
+ - Container queries collapse at sm=30rem, md=48rem or lg=64rem; never retains two columns. gap uses the spacing scale. This is layout composition, with no resizing gesture, saved pane sizes or splitter keyboard model.
28
+ - Original compatible addition in the unpublished 0.2.5 source candidate.
29
+
30
+ ## API reference
31
+
32
+ | Prop | Values | Default |
33
+ | --- | --- | --- |
34
+ | `main` | `ReactNode` | `Required` |
35
+ | `aside` | `ReactNode` | `Required` |
36
+ | `side` | `"start" \| "end"` | `"end"` |
37
+ | `ratio` | `"balanced" \| "main" \| "aside"` | `"main"` |
38
+ | `collapseAt` | `"sm" \| "md" \| "lg" \| "never"` | `"md"` |
39
+ | `gap` | `"0" \| "1" \| "2" \| "3" \| "4" \| "6" \| "8" \| "12"` | `"6"` |
40
+ | `Native HTML props` | `Omit<HTMLAttributes<HTMLDivElement>, "children">` | `Forwarded` |