@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,222 @@
1
+ # Layout and composition
2
+
3
+ Flood provides controls and small layout primitives. The application owns page
4
+ width, grouping and responsive composition. Use the rules below inside
5
+ `FloodRoot` instead of fixing each screen with unrelated spacing values.
6
+
7
+ ## Separate the three kinds of size
8
+
9
+ A control's `size` or `controlSize` selects its minimum height, typography and
10
+ internal padding. Its width is a separate layout decision. The root font size
11
+ is a user or host preference, not a density setting.
12
+
13
+ - Buttons normally fit their content. Put sibling actions in `Inline`; do not
14
+ make every action fill a form or grid cell. Flood 0.2.3 styles keep Button
15
+ width intrinsic and cap it at the available width.
16
+ - Input, Textarea and Select fill the width their parent assigns. Give their
17
+ form or Field a responsive width; do not size each field independently.
18
+ - Checkbox and Radio indicators keep a `1.125rem` square footprint and do not
19
+ shrink in a flex row. A long label wraps beside the indicator rather than
20
+ compressing it. Switch has its own track geometry.
21
+
22
+ For a deliberate full-width action, opt in at the application boundary:
23
+
24
+ ```tsx
25
+ <Button style={{ inlineSize: "100%" }}>Continue</Button>
26
+ ```
27
+
28
+ Use this for a specific layout, not as a global rule for all buttons. A long
29
+ translation may increase a control's height; do not hide overflowing labels.
30
+
31
+ ## Keep labels close and groups distinct
32
+
33
+ In a compact inline choice, keep the indicator and label together. The
34
+ component's default gap is `.5rem` at the reference root. In a settings list,
35
+ switches can share a trailing edge within a bounded column. Keep each label
36
+ and switch in one clickable row and check that the eye can follow the pair
37
+ across that row. See the [settings recipe](recipes/settings-workspace.md).
38
+
39
+ For separate horizontal choices, `gap="4"` is a starting point. In a vertical
40
+ list, inspect the pitch created by the existing hit areas before adding a gap:
41
+
42
+ ```tsx
43
+ <Inline gap="4" align="center">
44
+ <Checkbox label="Product updates" name="updates" value="yes" />
45
+ <Checkbox label="Weekly summary" name="summary" value="yes" />
46
+ </Inline>
47
+ ```
48
+
49
+ Keep row alignment centered. Do not align native indicators to the font baseline
50
+ or allow grid stretch to change their shape. A choice's complete label row is a
51
+ click target; its visible glyph and its target area are different dimensions.
52
+ Compact neighboring targets must remain distinct and usable.
53
+
54
+ For a radio group, the host provides a real fieldset, legend and shared name:
55
+
56
+ ```tsx
57
+ <fieldset className="preference-group">
58
+ <legend>Visibility</legend>
59
+ <Inline gap="4" align="center">
60
+ <Radio label="Private" name="visibility" value="private" defaultChecked />
61
+ <Radio label="Public" name="visibility" value="public" />
62
+ </Inline>
63
+ </fieldset>
64
+ ```
65
+
66
+ ```css
67
+ .preference-group {
68
+ min-inline-size: 0;
69
+ margin: 0;
70
+ padding: 0;
71
+ border: 0;
72
+ }
73
+ .preference-group legend {
74
+ margin-block-end: var(--flood-sys-space-2);
75
+ }
76
+ ```
77
+
78
+ ## Give forms a responsive parent width
79
+
80
+ Use rem for the preferred width and percentages for the available space. A
81
+ `26rem` form can become narrower on a small viewport and follows root scaling:
82
+
83
+ ```css
84
+ .profile-form {
85
+ inline-size: min(100%, 26rem);
86
+ min-inline-size: 0;
87
+ }
88
+ ```
89
+
90
+ Keep the width on the actual form/field container. Adding a wrapper changes
91
+ which element a direct-child selector reaches; check the rendered field after
92
+ introducing a scope, Surface or grid cell. Avoid a narrow intrinsic wrapper
93
+ around a full-width textarea.
94
+
95
+ ```tsx
96
+ "use client";
97
+
98
+ import { Button, Field, FloodRoot, Heading, Inline, Input, Stack, Text } from "@flood-md/react";
99
+
100
+ export function ProfileForm() {
101
+ return (
102
+ <FloodRoot>
103
+ <form className="profile-form" onSubmit={(event) => event.preventDefault()}>
104
+ <Stack gap="6">
105
+ <Stack gap="2">
106
+ <Heading level={1}>Profile</Heading>
107
+ <Text as="p" size="compact" tone="subtle">How your team sees you.</Text>
108
+ </Stack>
109
+ <Field label="Display name" hint="Visible to your team" required>
110
+ {(control) => <Input {...control} name="displayName" autoComplete="name" />}
111
+ </Field>
112
+ <Inline gap="2" align="center">
113
+ <Button type="submit">Save changes</Button>
114
+ <Button type="reset" variant="subtle">Reset</Button>
115
+ </Inline>
116
+ </Stack>
117
+ </form>
118
+ </FloodRoot>
119
+ );
120
+ }
121
+ ```
122
+
123
+ Import the package stylesheet once at the application entry. In Next.js, keep
124
+ Field's function child and event handlers in a client component. See
125
+ [Installation](installation.md) and [Components](components.md).
126
+
127
+ ## Establish hierarchy before adding containers
128
+
129
+ Use Heading for section semantics, compact body text for supporting explanations,
130
+ Field for the visible label and associations, and helper text for supplementary
131
+ details. Text's label appearance alone does not create a form label.
132
+
133
+ Start with `Stack gap="4"` within a group and `gap="6"` between related groups;
134
+ increase separation for independent sections. Use `Inline` with wrapping for
135
+ actions. Add Surface for an actual surface boundary, not around every field.
136
+ Prominence comes from solid/subtle variants, not from stretching one button.
137
+
138
+ For a responsive form grid, let CSS determine how many columns fit:
139
+
140
+ ```css
141
+ .profile-grid {
142
+ display: grid;
143
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
144
+ gap: var(--flood-sys-space-4);
145
+ }
146
+ ```
147
+
148
+ Do not impose `html { font-size: 16px }`, shrink type to hide overflow, or stretch
149
+ the indicator to make a row fit. Check narrow widths, root text scaling, user
150
+ text-spacing overrides and long translations. Preserve visible focus, native
151
+ form semantics, forced colors and reduced motion while changing composition.
152
+
153
+ ## Coordinate nested corners only where shapes share an inset
154
+
155
+ A menu's selected/hovered row follows the same outer contour as its popup. For
156
+ uniform padding, derive the inner radius from the outer border-box radius:
157
+
158
+ `inner radius = max(0, outer radius - padding - border width)`.
159
+
160
+ The Select popup uses its field-radius role, space-1 padding and stroke-width
161
+ role. At a 16px root these are 16px, 4px and 1px, so the option radius is 11px.
162
+ The relation follows root scaling and semantic overrides; do not reuse the
163
+ independent checkbox indicator radius for menu rows.
164
+
165
+ The recipe is local to the popup, not a global rule for every descendant.
166
+ Independent Buttons inside Surface or CodeSnippet keep their own action radius.
167
+ Pill tracks/thumbs and segmented controls already derive their curves from their
168
+ actual heights; do not subtract arbitrary padding from an effectively infinite
169
+ pill token. For unequal insets, derive each corner/axis from its actual inset.
170
+
171
+ ## Source additions and compatibility
172
+
173
+ Select's custom single-choice popup and the refined intrinsic sizing/custom choice appearance are
174
+ included in 0.2.3; older immutable npm releases are unchanged. Use the guide matching your installed declarations. The examples with
175
+ Input, Button, Inline and native form props also work without Select; wrapping
176
+ actions in Inline provides an explicit composition boundary for earlier installs.
177
+
178
+ ## Form hierarchy and rhythm
179
+
180
+ Use a task title once. Keep optional group titles absent when field labels already
181
+ explain a short form. For a necessary independent group use Fieldset with
182
+ legendSize="section"; the default label-sized legend remains appropriate for
183
+ choices. It preserves native fieldset semantics rather than adding a heading.
184
+
185
+ Named fields keep their component-owned label/control gap. Pick the parent
186
+ spacing by reading the rendered relationships. In a quiet form, compare how
187
+ strongly each legend belongs to its first control and how clearly the next
188
+ section begins. In a dense filter bar, control height and shared alignment
189
+ already organize most of the row. Dialog supplies its own body inset.
190
+
191
+ Place four related short fields in one Grid columns={2} so their row edges align.
192
+ A short numeric value alone does not justify a narrower column in only one row;
193
+ long text fields can use a separate full-width row. Verify actual control edges
194
+ with long labels, optional content and 24px root text, not just Grid boxes.
195
+ See [Skills](skills.md) for the shipped hierarchy workflow.
196
+
197
+ ## Review visible weight
198
+
199
+ Read the screen at its working size. Name the first thing to notice, the
200
+ content that belongs together, and the edges that should line up. Compare the
201
+ visible text and shapes alongside their boxes. A taller line box, a strong
202
+ divider, or a filled control can make two equal gaps read differently.
203
+
204
+ Choose the text role before its treatment. A short title may need more
205
+ weight or a wider measure. A paragraph that wraps poorly often needs a
206
+ different measure or line height. Review the actual script, digits and accents
207
+ before adjusting tracking. For comparisons, keep repeated values on shared
208
+ axes. [The Details of UI Typography](https://developer.apple.com/videos/play/wwdc2020/10175/)
209
+
210
+ Compare two treatments with the same content and viewport. Change one variable
211
+ at a time, then choose the closest existing token that preserves the reading
212
+ order. For example, in a Drawer compare a quieter description in the title
213
+ group with the same text given body weight. Then check the gap before the details
214
+ with a long title and with the description omitted.
215
+
216
+ The shared axes follow Müller-Brockmann's use of grids as a working tool. The
217
+ attention to letterforms and blank space draws on Ruder, and the comparison of
218
+ contrast and rhythm draws on Hofmann. These are Flood applications of those
219
+ principles. [Grid Systems in Graphic Design](https://niggli.ch/en/products/rastersysteme-fur-die-visuelle-gestaltung) · [The Typography of Order](https://www.neugraphic.com/ruder/ruder-text2.html) · [Graphic Design Manual](https://niggli.ch/en/products/methodik-der-form-und-bildgestaltung)
220
+
221
+ Recheck with wrapping, enlarged text, and the user's text spacing overrides.
222
+ Controls and content must stay usable when those values change. [W3C Text Spacing](https://www.w3.org/WAI/WCAG22/Understanding/text-spacing.html)
@@ -0,0 +1,69 @@
1
+ # Motion
2
+
3
+ `PageHeader` stays static. Its actions keep their own Flood interaction feedback,
4
+ and container reflow does not animate the title or move focus.
5
+ `AppShell` and `AppTopBar` do not animate layout or scroll position. Sidebar
6
+ and Drawer own their own transitions.
7
+
8
+ Flood uses short motion to show where an interface changed. Motion follows the
9
+ component's own state and respects the operating system's reduced-motion preference.
10
+
11
+ [Try motion and reduced motion](/playground/motion).
12
+
13
+ | Event | Typical duration | What moves |
14
+ | --- | --- | --- |
15
+ | Press and hover | 70–100 ms | Paint on actions, rows and options, plus a slight compression while holding a standalone control |
16
+ | Selection and disclosure | 100–160 ms | State paint, glyphs and revealed content |
17
+ | Menus and feedback arrivals | 180 ms | Opacity and small directional movement |
18
+ | Modal and drawer entrances | 240 ms | The arriving layer or its content |
19
+ | Brief dismissal where safe | 120 ms | A visual part with a reliable exit lifecycle |
20
+
21
+ Use `--flood-sys-motion-*` roles for Flood compositions. Set
22
+ `data-flood-motion="reduce"` on FloodRoot to also suppress component motion in
23
+ an application scope. This setting complements the system preference.
24
+
25
+ Focus, validation, semantics and state take effect immediately. Static content
26
+ and layout inherit behavior from their interactive owners. Sliders, drag,
27
+ resize and scrolling track input directly. Loading remains legible when its
28
+ indicator stops moving. Native layer dismissal is immediate where the browser
29
+ and React lifecycle remove its content together.
30
+ Floating toasts animate their message on arrival. Inline notices stay static
31
+ within the surrounding reading flow.
32
+
33
+ Use the versioned `workflow:motion` through the Flood CLI for implementation
34
+ and browser verification guidance.
35
+
36
+ ## Component states
37
+
38
+ Each row lists components that share a motion owner. Compositions inherit the
39
+ behavior of their children. State updates and focus take effect immediately.
40
+
41
+ | Components | Motion and state behavior |
42
+ | --- | --- |
43
+ | `FloodRoot` | Applies the motion preference to its scope. Preference changes are immediate. |
44
+ | `Text`, `Heading`, `Kbd`, `VisuallyHidden`, `Blockquote`, `InlineCode`, `IconSlot`, `Label` | Static text and artwork. The containing control owns feedback. |
45
+ | `Stack`, `Inline`, `Surface`, `Divider`, `Container`, `Grid`, `AspectRatio`, `Section`, `Split`, `Center`, `Fieldset` | Stable layout. Children own any appearance or interaction feedback. |
46
+ | `ScrollArea`, `ResizablePanels`, `Slider` | Direct pointer tracking. Only scrollbar hover paint eases. Resize, scroll and slider positions stay under the pointer. |
47
+ | `Button`, `IconButton`, `Toggle`, `CopyButton` | Hover paint and short press compression. Toggle holds selected paint. Copy shows its result glyph without resizing the button. |
48
+ | `ButtonGroup`, `ToggleGroup`, `Toolbar`, `OverflowActions`, `BulkActionBar`, `Menubar` | Actions inherit Button and Menu feedback. Joined button surfaces keep their geometry. Bulk actions fade in when available. |
49
+ | `CommandList`, `ListBox`, `Tree`, `NavigationItem`, `NavigationList`, `NavigationTree`, `NavigationGroup`, `Sidebar` | Row paint, disclosure glyphs and optional flyouts. NavigationTree fades in branch content in place and removes it immediately on collapse. Sidebar eases between expanded and rail widths. Focus, route and tree reflow update immediately. |
50
+ | `Link`, `Breadcrumb`, `Pagination`, `SkipLink`, `Steps` | Navigation is immediate. Button-style actions and step rows can ease their paint. Skip links appear immediately on focus. |
51
+ | `Tabs`, `SegmentedControl` | Selected paint and, for line tabs, an arriving indicator. Tabs reveal the visible panel with a short fade while selection and focus update immediately. |
52
+ | `Field`, `Input`, `Textarea`, `InputGroup`, `SearchInput`, `PasswordInput`, `NumberInput`, `PinInput`, `DateField`, `TimeField`, `DateRangeField`, `Editable`, `CharacterCount` | Field hover paint and inherited action feedback. Typing, caret, counts, validation and edit-mode focus are immediate. |
53
+ | `Checkbox`, `Radio`, `Switch`, `CheckboxGroup`, `RadioGroup`, `CheckCard`, `RadioCard`, `Rating` | Check and rating marks change paint, the switch thumb travels, and selectable cards ease selected paint. Values update immediately. |
54
+ | `Select`, `Combobox`, `Autocomplete`, `MultiSelect`, `TreeSelect`, `DatePicker`, `DateRangePicker`, `TimePicker`, `DateTimePicker`, `DateTimeRangePicker`, `ColorPicker` | Inherit control, active option and layer motion. Typing, range editing, swatch changes and pointer tracking are immediate. |
55
+ | `Calendar`, `RangeCalendar` | Day selection paint. Month and year changes keep the grid stable and respond immediately. |
56
+ | `FileInput`, `Dropzone`, `TagInput`, `Tag`, `FilterCondition`, `FilterGroup`, `CollectionToolbar`, `CollectionViewSwitcher` | Inherit button, field and layer feedback. Drag targets, file changes, chip removal and applied filters update immediately. |
57
+ | `Collapsible`, `Accordion` | Keep the header flush on press, rotate the centered disclosure mark and reveal panel content. Closing immediately hides the panel and restores focus where needed. |
58
+ | `CodeSnippet`, `Card`, `DataList`, `DataListItem`, `FileItem`, `FileList`, `AvatarGroup` | Embedded actions and avatars own motion. Reading order and record layout remain stable. |
59
+ | `Badge`, `DescriptionList`, `Table`, `Image`, `List`, `Figure`, `Metric`, `Timeline`, `ColorSwatch`, `FileMeta` | Static content. Changes to data, labels and supporting media render immediately. |
60
+ | `Avatar` | Loaded image eases in within a fixed frame. Fallback text is immediately available. |
61
+ | `DataTable` | Selected row paint and sort chevron rotation. Sorting, pagination and table geometry update immediately. |
62
+ | `Tooltip`, `Popover`, `Menu`, `ContextMenu`, `HoverCard`, `CommandPalette`, `Dialog`, `AlertDialog`, `Drawer`, `ImagePreview` | Anchored entrances follow placement. Modal and edge panels have their own timing. Controls, focus, close and positioning retain their native behavior. |
63
+
64
+ Menu, ContextMenu and title-only navigation flyouts fade in and out where
65
+ discrete top-layer transitions are supported. Dismissal releases focus and
66
+ pointer interaction immediately. When a sibling navigation flyout takes over
67
+ the same rail position, the outgoing panel yields immediately.
68
+ | `Spinner`, `Skeleton`, `Progress`, `Meter`, `ToastRegion`, `UploadItem`, `UploadList` | Busy indicators, value fill and floating toast arrivals. Upload compositions inherit the progress and action recipes. Announcements and final values are immediate. |
69
+ | `Alert`, `EmptyState`, `StatusIndicator`, `ErrorSummary` | State and message changes are immediate. Embedded actions keep Button feedback. |
@@ -0,0 +1,23 @@
1
+ # Website privacy
2
+
3
+ The footer on flood.md shows an approximate all-time count of unique browsers
4
+ since the counter was enabled. It is not a count of people or page views.
5
+
6
+ The website stores one random identifier in your browser's local storage under
7
+ `flood.visitor.v1`. It sends this identifier to a same-origin endpoint to avoid
8
+ counting repeat visits. The counter database stores only a SHA-256 hash of the
9
+ identifier, the aggregate total and the date counting began. It does not store
10
+ IP addresses, page history, referrers, account information or device fingerprints.
11
+ Hashed browser identifiers are retained for deduplication while the counter runs.
12
+
13
+ Clearing website storage, using private browsing or another browser/device can
14
+ count as another visitor. Known automated user agents are excluded, but the number
15
+ is not audited analytics or an abuse-proof measurement. If local storage is
16
+ unavailable, the site displays the total without registering a visitor. Requests
17
+ that only read HTML or Markdown do not increment the counter.
18
+
19
+ The hosting provider can maintain its own operational request logs. This counter
20
+ does not control those logs. No third-party analytics script is loaded.
21
+
22
+ This feature is specific to flood.md. Installing Flood's npm packages does not
23
+ add visitor tracking to your project.
@@ -0,0 +1,127 @@
1
+ # Project UI imports
2
+
3
+ Flood works with direct named package imports. If you prefer project-owned paths,
4
+ add a thin UI boundary such as `@/ui/button`:
5
+
6
+ ```tsx
7
+ import { Button } from "@/ui/button";
8
+ ```
9
+
10
+ The file name describes the UI responsibility. The package implementation remains
11
+ behind that boundary, so most application files do not need its vendor name.
12
+ This is optional. Both import styles use the same Flood component and receive
13
+ the same installed package updates.
14
+
15
+ ## Connect the package once
16
+
17
+ Follow [Installation](installation.md) for your React/TypeScript or Next.js project.
18
+ All base components ship together in `@flood-md/react`; there is no per-component
19
+ add command or component source-copy registry. Importing another component does
20
+ not require another installation.
21
+
22
+ The CLI creates package configuration and agent instructions. It does not create
23
+ these adapters, rewrite application imports or overwrite existing source files.
24
+ Create and review the small files below in your own project. Preserve any existing
25
+ UI wrappers and aliases instead of replacing them blindly.
26
+
27
+ ## Configure the project alias
28
+
29
+ For the `src/` structure used in this guide, merge the following into your existing
30
+ `tsconfig.json`. Keep the other compiler options and existing path mappings.
31
+
32
+ ```json
33
+ {
34
+ "compilerOptions": {
35
+ "paths": {
36
+ "@/*": ["./src/*"]
37
+ }
38
+ }
39
+ }
40
+ ```
41
+
42
+ Configure the same `@` alias in your bundler if it does not read TypeScript paths.
43
+ Next.js supports [TypeScript import aliases](https://nextjs.org/docs/app/getting-started/installation).
44
+ If your application uses another source folder or an existing alias, use the
45
+ matching paths consistently; adding this snippet alone does not move files.
46
+
47
+ ## Add thin adapters
48
+
49
+ Create `src/ui/button.ts`:
50
+
51
+ ```ts
52
+ export { Button } from "@flood-md/react";
53
+ ```
54
+
55
+ The value re-export already preserves the component's inferred props and ref
56
+ types. If your application also imports the named public props type, expose it
57
+ explicitly from the same file:
58
+
59
+ ```ts
60
+ export { Button } from "@flood-md/react";
61
+ export type { ButtonProps } from "@flood-md/react";
62
+ ```
63
+
64
+ Create `src/ui/flood-root.ts` for the scope used by this example:
65
+
66
+ ```ts
67
+ export { FloodRoot } from "@flood-md/react";
68
+ ```
69
+
70
+ Other adapters follow the explicit component name and slug shown in the catalog:
71
+ `Input` uses `src/ui/input.ts`, `IconButton` uses `src/ui/icon-button.ts`.
72
+ Create only the files your application uses. Adapters contain re-exports; they
73
+ do not copy Flood's component implementation into your project.
74
+
75
+ ## Import styles once
76
+
77
+ Create `src/ui/styles.css`:
78
+
79
+ ```css
80
+ @import "@flood-md/react/styles.css";
81
+ ```
82
+
83
+ Import that file once at the React application entry. In Next.js App Router, place
84
+ the import in `src/app/layout.tsx` (or `app/layout.tsx` if that is your structure):
85
+
86
+ ```tsx
87
+ import "@/ui/styles.css";
88
+ ```
89
+
90
+ Do not import both the adapter stylesheet and the package stylesheet throughout
91
+ individual component files. `FloodRoot` still explicitly selects neutral/dark;
92
+ the path name does not change the theme or styling contract.
93
+
94
+ ## Use the project imports
95
+
96
+ ```tsx
97
+ "use client";
98
+
99
+ import { Button } from "@/ui/button";
100
+ import { FloodRoot } from "@/ui/flood-root";
101
+
102
+ export function SaveAction() {
103
+ return (
104
+ <FloodRoot>
105
+ <Button onClick={() => console.log("Saved locally")}>Save</Button>
106
+ </FloodRoot>
107
+ );
108
+ }
109
+ ```
110
+
111
+ Use a client host component for state, callbacks or Field's function child.
112
+ The wrappers do not replace React, remove Next.js client boundaries or make the
113
+ components framework-independent. React 18.3/19 and Next.js support remain as
114
+ described in [Architecture](architecture.md).
115
+
116
+ ## Updates and customization
117
+
118
+ Keep the installed Flood packages on the same exact version and follow their
119
+ matching release guidance. A re-export automatically uses the installed version;
120
+ upgrades still require application builds and behavior checks. The adapter path
121
+ does not automatically update packages, migrate renamed props or repair breaking
122
+ changes.
123
+
124
+ Add project defaults in the adapter later if needed, while preserving accessible
125
+ names, native props and refs. This creates a deliberate application policy layer;
126
+ it should not become a second copy of the design system. Keep styles and component
127
+ API expectations aligned with the package version your project actually installs.
@@ -0,0 +1,117 @@
1
+ # Skills
2
+
3
+ Flood's agent package includes a lightweight `flood-ui` entry that routes work to
4
+ specialized skills. Start with the [agent guide](agents.md), the host instructions
5
+ and matching installed declarations. Load the skills relevant to the current task,
6
+ not the entire library of instructions.
7
+
8
+ [Interface content](interface-content.md) covers labels, wording and information
9
+ hierarchy. Its workflow removes unnecessary narration while keeping meaningful
10
+ constraints, consequences, recovery and accessible names.
11
+
12
+ The hierarchy workflow covers task/group/field roles, common control tracks and
13
+ relationship spacing. It complements editorial decisions and the spacing workflow;
14
+ it does not prescribe one screen template.
15
+
16
+ The records workflow covers list/detail information selection, stable scan
17
+ positions and the distinction between category, lifecycle state, priority and
18
+ time. It includes examples where those attributes should remain visible, rather
19
+ than a universal rule to hide metadata or limit badge counts.
20
+
21
+ Use [Agent knowledge](agent-knowledge.md) to discover these workflows by semantic
22
+ group and read the installed version. The catalog separates prerequisites from
23
+ optional related components; grouping is not a request to load every skill.
24
+
25
+ ## Foundations
26
+
27
+ Semantic colors, type, geometry, spacing and scoped customization.
28
+
29
+ | Workflow | Use when | Skill source |
30
+ | --- | --- | --- |
31
+ | flood-hierarchy | Establish visual hierarchy, shared form tracks and vertical rhythm in Flood screens, forms and overlays. Use when titles, groups and labels compete or a composed interface feels flat; not a fixed page template. | [Read skill](/agent/references/flood-hierarchy/SKILL.md) |
32
+ | flood-spacing | Diagnose Flood spacing, density, nested radii and alignment from rendered geometry. Use for large gaps, crowded rows or shifting compositions. | [Read skill](/agent/references/flood-spacing/SKILL.md) |
33
+ | flood-foundations | Apply Flood's existing dark semantic surfaces, typography, control sizing and icon geometry. Use for foundation consistency or token-consumer review. | [Read skill](/agent/references/flood-foundations/SKILL.md) |
34
+
35
+ ## Composition
36
+
37
+ Layout and task recipes assembled from existing primitives.
38
+
39
+ | Workflow | Use when | Skill source |
40
+ | --- | --- | --- |
41
+ | flood-composition | Build or review Flood UI from existing library primitives before adding composites. Use for component, website, playground and host-interface work, especially when a layout fix risks replacing a reusable element with custom markup. | [Read skill](/agent/references/flood-composition/SKILL.md) |
42
+ | flood-interface-content | Write or review Flood interface content with editorial decisions about copy, labels, hierarchy and states. Use for visible UI text and reference adaptation; not typography styling, campaigns or rewriting user documents. | [Read skill](/agent/references/flood-interface-content/SKILL.md) |
43
+ | flood-hierarchy | Establish visual hierarchy, shared form tracks and vertical rhythm in Flood screens, forms and overlays. Use when titles, groups and labels compete or a composed interface feels flat; not a fixed page template. | [Read skill](/agent/references/flood-hierarchy/SKILL.md) |
44
+ | flood-spacing | Diagnose Flood spacing, density, nested radii and alignment from rendered geometry. Use for large gaps, crowded rows or shifting compositions. | [Read skill](/agent/references/flood-spacing/SKILL.md) |
45
+ | flood-records | Compose record lists and detail views with a clear metadata hierarchy. Use for crowded status/category/priority/date rows, drifting scan positions or deciding between a list and a comparison table. | [Read skill](/agent/references/flood-records/SKILL.md) |
46
+
47
+ ## Interaction
48
+
49
+ Forms, selection, navigation and transient layers.
50
+
51
+ | Workflow | Use when | Skill source |
52
+ | --- | --- | --- |
53
+ | flood-forms | Compose and verify Flood form ownership, labels, values, validation and reset. Use for fields, selection controls or composed form inputs. | [Read skill](/agent/references/flood-forms/SKILL.md) |
54
+ | flood-overlays | Compose or review Flood dialogs, drawers, popovers, menus and anchored selection surfaces. Use for popup geometry, nested dismissal or focus ownership. | [Read skill](/agent/references/flood-overlays/SKILL.md) |
55
+ | flood-navigation | Choose and verify Flood links, tabs, disclosure and hierarchical navigation. Use when destination, selection and expansion semantics can be confused. | [Read skill](/agent/references/flood-navigation/SKILL.md) |
56
+
57
+ ## Data & feedback
58
+
59
+ Structured content, files and honest operation states.
60
+
61
+ | Workflow | Use when | Skill source |
62
+ | --- | --- | --- |
63
+ | flood-data-display | Assemble Flood tables, lists, cards and file records with long or changing data. Use for content hierarchy, overflow, row actions and data-state composition. | [Read skill](/agent/references/flood-data-display/SKILL.md) |
64
+ | flood-records | Compose record lists and detail views with a clear metadata hierarchy. Use for crowded status/category/priority/date rows, drifting scan positions or deciding between a list and a comparison table. | [Read skill](/agent/references/flood-records/SKILL.md) |
65
+ | flood-feedback | Choose Flood status, progress, alert, loading and empty-state feedback with honest operation state. Use for meaningful messages and announcement ownership. | [Read skill](/agent/references/flood-feedback/SKILL.md) |
66
+
67
+ ## Quality
68
+
69
+ Accessibility, evidence and regression checks.
70
+
71
+ | Workflow | Use when | Skill source |
72
+ | --- | --- | --- |
73
+ | flood-motion | Design and verify motion for Flood controls, overlays, disclosure, feedback and loading states. Use for animation, transitions, reduced motion and component motion reviews. | [Read skill](/agent/references/flood-motion/SKILL.md) |
74
+ | flood-interface-content | Write or review Flood interface content with editorial decisions about copy, labels, hierarchy and states. Use for visible UI text and reference adaptation; not typography styling, campaigns or rewriting user documents. | [Read skill](/agent/references/flood-interface-content/SKILL.md) |
75
+ | flood-accessibility | Review Flood interface names, keyboard flow, focus, perception and reflow in the actual host. Use for interaction or accessibility acceptance. | [Read skill](/agent/references/flood-accessibility/SKILL.md) |
76
+ | flood-verification | Verify Flood component or composed-interface changes against applicable contracts and actual evidence. Use for stabilization, regression or completion review. | [Read skill](/agent/references/flood-verification/SKILL.md) |
77
+
78
+ ## Motion
79
+
80
+ Component motion roles, transition recipes and reduced-motion verification.
81
+
82
+ | Workflow | Use when | Skill source |
83
+ | --- | --- | --- |
84
+ | flood-motion | Design and verify motion for Flood controls, overlays, disclosure, feedback and loading states. Use for animation, transitions, reduced motion and component motion reviews. | [Read skill](/agent/references/flood-motion/SKILL.md) |
85
+
86
+ See [Workspace review](/docs/recipes/workspace-review) for a runnable form and file
87
+ drawer assembled with these workflows. Its source, ownership choices and host
88
+ checks are documented together.
89
+
90
+ [Table bulk actions](/docs/recipes/table-bulk-actions) demonstrates controlled
91
+ cross-page selection, protected rows and an explicit confirmation using existing
92
+ Flood primitives. Its operation changes only the local in-memory example.
93
+
94
+ These skills use the existing dark base. They help apply and verify component
95
+ contracts; they do not imply new themes, animations, unavailable APIs or automatic
96
+ agent compliance. The component-family index describes applicability, not a test
97
+ report or an accessibility certification.
98
+
99
+ ## Use a skill
100
+
101
+ The matching CLI installs the full sources beneath
102
+ `.agents/skills/flood-ui/references/`. The root `flood-ui` router links the relevant
103
+ workflow. Independent automatic discovery of nested skill directories is not
104
+ assumed; an agent can also read the selected installed `SKILL.md` explicitly.
105
+
106
+ The same versioned sources are served under `/agent/`. Raw skill links above are
107
+ readable Markdown and can be saved directly. Existing projects should compare
108
+ and merge newer guidance rather than overwrite customized instruction files.
109
+
110
+ For example, a settings form needs composition and forms, with spacing when
111
+ geometry is being tuned. A drawer with a selection popup additionally needs the
112
+ overlay workflow. Before handing off, use verification and report actual checks,
113
+ failures and any behavior that remains unverified.
114
+
115
+ The shared [rules index](/agent/rules.json) provides stable rule IDs and observable
116
+ checks; the [workflow index](/agent/workflows.json) describes routing. Neither is
117
+ an executable policy engine or authority to change external systems.
@@ -0,0 +1,73 @@
1
+ # Customization · 0.2.5
2
+
3
+ Start with the neutral dark foundations profile. `FloodRoot` selects it locally;
4
+ version 0.2.5 does not provide a light foundations profile or a theme editor.
5
+ Use component props for everyday variations and semantic CSS roles for project
6
+ styling. Keep typography, spacing and finite geometry in relative units.
7
+
8
+ ## Scope your overrides
9
+
10
+ Import Flood before your own stylesheet and put a class on the same root:
11
+
12
+ ```tsx
13
+ import "@flood-md/react/styles.css";
14
+ import "./theme.css";
15
+ import { FloodRoot, Input, Field } from "@flood-md/react";
16
+
17
+ export function App() {
18
+ return (
19
+ <FloodRoot className="my-app">
20
+ <Field label="Workspace name">
21
+ {(props) => <Input {...props} />}
22
+ </Field>
23
+ </FloodRoot>
24
+ );
25
+ }
26
+ ```
27
+
28
+ This example uses Field's function child; in Next.js put it in a client component.
29
+ Import global styles once from the root layout.
30
+
31
+ ```css
32
+ /* theme.css: an opt-in project override, not a new Flood default. */
33
+ .my-app[data-flood-foundations="neutral"][data-flood-theme="dark"] {
34
+ --flood-sys-radius-field: 1.25rem;
35
+ --flood-sys-type-body-size: 1rem;
36
+ }
37
+ ```
38
+
39
+ The selector targets the same scope and has enough specificity to override the
40
+ profile declarations. A custom property set on an ancestor may be replaced by a
41
+ profile declaration on FloodRoot. Inspect computed values in the actual host app.
42
+
43
+ ## Choose semantic roles
44
+
45
+ Use public `sys.*` roles, exposed in CSS as `--flood-sys-*`. Families include
46
+ surface, content, actions, fields, feedback, focus, typography, spacing, radii,
47
+ control sizes and motion. The [foundations guide](foundations.md) explains the
48
+ typed lookup, manifest and scope rules.
49
+
50
+ Reference (`ref.*`) values are internal building blocks. Their IDs are not a
51
+ public customization contract. Existing props such as Button size/variant,
52
+ Input controlSize and Surface elevation handle many variations without overrides.
53
+
54
+ ## Preserve useful distinctions
55
+
56
+ Keep primary text readable, secondary text appropriate for its size, and necessary
57
+ field boundaries distinct from quiet decorative borders. Preserve visible keyboard
58
+ focus and native control behavior. Check text with WCAG and APCA guidance in the
59
+ actual composition; a token name or a screenshot does not certify accessibility.
60
+ Test narrow layouts, increased root text size, forced colors and reduced motion.
61
+
62
+ ## Legacy themes outside FloodRoot
63
+
64
+ Earlier controls outside FloodRoot retain the legacy `--flood-*` variables and
65
+ OS-following light/dark behavior. Explicit `data-flood-theme="light"` or `"dark"`
66
+ selects that legacy theme. These variables do not configure the new foundations
67
+ profile, and changing FloodRoot's theme attribute does not create a supported
68
+ light foundations theme.
69
+
70
+ For an existing 0.1.x project, follow its installed guide and compare the
71
+ [migration instructions](installation.md#updates-from-011) before adopting
72
+ FloodRoot. Keep the exact Flood package versions aligned and verify your app
73
+ after changing CSS scope or customization.