@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,163 @@
1
+ ---
2
+ name: flood-interface-content
3
+ description: 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.
4
+ ---
5
+
6
+ # Edit the information, then the wording
7
+
8
+ Read the task, existing product vocabulary and the relevant component contracts.
9
+ Keep the requested audience, language, surface and scope. A test host is not an
10
+ invitation to add a product story, onboarding, promotional banners or new flows.
11
+ User-authored records and document bodies remain data; changing interface copy
12
+ does not authorize rewriting them.
13
+
14
+ ## Give every text element a job
15
+
16
+ Before adding copy, identify the user's current task and state. Each visible
17
+ string should identify an object or control, distinguish choices, supply needed
18
+ input guidance, explain a relevant consequence, report a real state or support
19
+ recovery in the current task/state. A fact being potentially useful someday is
20
+ not sufficient. If its removal changes none of those, remove the element rather than
21
+ replace it with another friendly sentence.
22
+
23
+ Make the decision in context:
24
+
25
+ - **Keep** a necessary label, distinction, constraint, consequence at the relevant decision or recovery step after a real failure.
26
+ - **Rewrite** an ambiguous or inaccurate message using the product's terms.
27
+ - **Move** secondary, occasionally needed information to a relevant help surface.
28
+ - **Remove** duplication, routine interface narration and filler added to fill space.
29
+
30
+ Do not turn this into a shortest-copy contest. A longer explanation can be the
31
+ correct choice for an unfamiliar decision, an exceptional state or a material
32
+ consequence of an action being considered here. An ordinary list/editor is not a
33
+ storage-selection or data-deletion decision: do not add a standing browser/storage
34
+ warning just because clearing browser data could lose records. Put implementation
35
+ limits in documentation/help; explain deletion/replacement consequences before
36
+ the applicable action and actual persistence failures when they occur.
37
+ Do not hide essential instructions or risks behind a tooltip merely
38
+ to make a screen quieter. Preserve accessible names and associations when reducing
39
+ visible copy; use the component's documented hideLabel API where appropriate.
40
+
41
+ ## Separate prototype provenance from product state
42
+
43
+ An explicitly requested local prototype or fixture-backed test app does not need
44
+ an always-visible Demo, Prototype, Local only or Test environment badge merely
45
+ because of its development context. Put that provenance and its implementation
46
+ limits in the project README, test brief or review handoff. Do not fill a sidebar
47
+ footer, header or empty region with a reminder, or replace a removed badge with
48
+ a differently worded banner.
49
+
50
+ Keep a visible distinction when it changes a decision on this surface: sample
51
+ records mixed with real records, a meaningful selectable simulation mode, or an
52
+ action whose effect/destination differs between environments. Place it beside the
53
+ affected record, choice or action. Do not invent a mode switch or warning flow to
54
+ justify an environment label. An isolated prototype is not a mixed live workspace.
55
+
56
+ Removing prototype chrome does not authorize claims of real live video, delivered
57
+ messages, production connectivity or other unimplemented capabilities. Keep
58
+ accurate object/media accessible names and action wording; document the simulation
59
+ in the handoff. Real Draft/Pending/Offline record states are not prototype labels
60
+ and must not be removed by a word-matching rule.
61
+
62
+ ## Keep one vocabulary and an honest hierarchy
63
+
64
+ Use the user's domain nouns and existing action terms. Name destinations by what
65
+ they contain and actions by the result they cause. Avoid vague completion labels
66
+ when several outcomes are possible. A validation check does not establish expert
67
+ review; preparing a document does not send it; exporting a PDF does not create a
68
+ restorable backup of editable records.
69
+
70
+ A page title identifies its task or object. Add an eyebrow or subtitle only when
71
+ it conveys another useful distinction. Do not automatically stack a category,
72
+ the same category in a title, and a sentence describing that title. Section titles
73
+ name actual groups; they do not each require an explanation. Semantic heading
74
+ levels reflect the document structure, independently of visual sizing.
75
+
76
+ Keep necessary repetition across different contexts: a dialog may need the
77
+ affected object named again, a long form may repeat its primary action at the end,
78
+ and a printed document has its own content hierarchy. Do not remove those merely
79
+ because similar words appear elsewhere on the screen.
80
+
81
+ Review shared context across the shell, page header, toolbar, list and open
82
+ record. A page title can carry the task, a section can name the collection, and
83
+ column labels can carry units or field meaning. Trace each repeated fact to its
84
+ visible owner. Temporarily remove optional subtitles, count captions and labels
85
+ beside values. Restore a string when its absence hides scope, changes a decision
86
+ or makes a pane ambiguous when it opens on its own. Keep names required by
87
+ assistive technology when the corresponding visible caption goes away.
88
+
89
+ ## Explain only what changes a decision
90
+
91
+ Prefer a clear label or unit to an added helper paragraph. Add a field hint for a
92
+ non-obvious format, source or choice; do not narrate typing or repeat its label.
93
+ Technical properties of the implementation belong in developer documentation
94
+ unless the user is making a decision about them. A document preview usually
95
+ does not need a caption about embedded fonts or selectable PDF text.
96
+
97
+ Check actual behavior before writing states:
98
+
99
+ - Errors say what failed and how the user can recover, without raw exception text
100
+ or unsupported assurances. Keep entered data and associate errors with controls.
101
+ - Success names an operation that actually completed. Avoid celebratory filler
102
+ and repeated announcements for routine edits. The feedback workflow owns timing.
103
+ - Empty results and a first-use empty collection are different states. Use the
104
+ shortest useful explanation and next action for the actual case.
105
+ - A sample-data label is justified when it prevents a real misunderstanding.
106
+ Put it where that distinction matters. Do not repeat demo disclaimers throughout
107
+ a test interface whose context is already established.
108
+
109
+ For list/detail metadata, apply the [records workflow](../flood-records/SKILL.md).
110
+ Use its decision examples to distinguish useful priority/recency from redundant
111
+ labels and counts; the right amount of information depends on the user task.
112
+
113
+ ## Adapt reference content by purpose
114
+
115
+ For each reference pattern, identify the question it answers and the capability
116
+ that makes its wording true. Transfer that relationship to the host's actual
117
+ objects, actions and states. Do not transplant a competitor's role names, approval
118
+ stages, promises, regulatory language or marketing line into a different product.
119
+ If the host has no equivalent capability, omit that element rather than invent one.
120
+
121
+ Borrowing a two-pane editor does not imply borrowing an OCR claim or a payment
122
+ workflow. Product references inform structure; user records and confirmed product
123
+ facts supply content. Keep unavailable capabilities explicit in guidance, not as
124
+ decorative warnings on every screen.
125
+
126
+ ## Review the composed surface
127
+
128
+ Default optional subtitles and descriptions to absent. A page title plus its
129
+ primary action normally needs no sentence narrating that action. An empty-state
130
+ title identifies the missing content; it is not a slogan. Add explanation only
131
+ when it changes the user's next decision or supplies a needed constraint.
132
+
133
+ After rendering, identify each supporting sentence's new information. If it only
134
+ restates the title, predicts obvious typing/calculation, or repeats another help
135
+ location, remove it. Read the decision examples when uncertain; reading this
136
+ workflow without applying that review does not satisfy it. Preserve essential
137
+ consequences and actionable errors rather than stripping every explanation.
138
+
139
+ Read the whole screen in task order, including navigation, heading, fields and
140
+ actions. For a collection, repeat with populated and empty results, then with the
141
+ record open. Compare count scope before dropping duplicates. An active filter
142
+ count and a footer range may differ when search or pagination is active. If all
143
+ receipts are already visible in their column, omit a routine completion caption;
144
+ keep a missing-receipt signal if it affects approval. Name totals when two
145
+ simultaneously visible amounts represent different scopes.
146
+
147
+ Review visible strings together with accessible names, placeholders and
148
+ announcements. Removing a subtitle should also remove its reserved space.
149
+
150
+ For a writing pass, report the consequential keep/rewrite/move/remove decisions
151
+ outside the product UI, and exercise the affected action or error. Automated
152
+ phrase scans cannot establish editorial quality. Use [decision examples](../interface-content-examples.md)
153
+ when a similar-looking string needs different treatment in another context.
154
+ Do not claim an independent agent evaluation when the author already knows the
155
+ implementation or corrected the initial output manually.
156
+
157
+ ## Make canonical examples teach the same standard
158
+
159
+ Apply these decisions to playground defaults and copied recipes. Optional
160
+ descriptions start absent. When demonstrating one, use a real distinction or
161
+ constraint, such as a plan's member limit, rather than a friendly sentence
162
+ repeating its title. Marketing prose belongs to a deliberate marketing surface,
163
+ not default field/dialog content. Review the printed example as well as its DOM.
@@ -0,0 +1,44 @@
1
+ ---
2
+ name: flood-motion
3
+ description: Design and verify motion for Flood controls, overlays, disclosure, feedback and loading states. Use for animation, transitions, reduced motion and component motion reviews.
4
+ ---
5
+
6
+ # Choose the event before the animation
7
+
8
+ Read the installed motion tokens and the component's behavior contract.
9
+ Choose motion by what changed and how far the eye needs to travel.
10
+
11
+ | Event | Flood recipe |
12
+ | --- | --- |
13
+ | Hover, press, current or checked | Brief paint transition. Standalone controls may compress slightly while held, then return to rest. Selection can move a glyph or thumb that represents the state. |
14
+ | Disclosure | Change content availability immediately. Rotate the indicator and reveal newly shown content only where the component owns that region. |
15
+ | Anchored popup, modal or drawer | Start from the anchor direction, a small opacity change, or the drawer edge. Larger layers get more time. Dismissal should be shorter where the lifecycle can preserve it safely. |
16
+ | Progress, loading or result | Animate the indicator or arriving message. Keep text and state legible during the motion. |
17
+ | Focus, validation, drag, resize, scrubbing or text input | Immediate focus, feedback and geometry. The pointer and selection own their position. |
18
+ | Typography, layout and static content | Inherit motion from the interactive owner. Avoid mount effects on structural wrappers and ordinary rows. |
19
+
20
+ Use Flood semantic timing roles and narrow transition-property lists. Prefer
21
+ opacity and transform on bounded visual parts. Keep an anchored overlay's
22
+ positioning root stable while a child moves. Animate color only where the old and
23
+ new colors keep required information legible. Keep focus outlines and error
24
+ messages immediate. Apply hover treatment only to devices that can hover.
25
+ Keep compression off disabled controls, text editors and joined control
26
+ surfaces. Verify release and cancellation without a layout shift.
27
+ Treat disclosure headers as part of their enclosing surface. Keep their
28
+ background flush during press and rotate the centered glyph around its own center.
29
+
30
+ Keep focus, ARIA, routing, scroll locks and form state independent from animation
31
+ completion. For native top-layer exits, verify that content, inertness and focus
32
+ all remain correct. Use an immediate close when an exit would keep an empty or
33
+ interactive shell visible. Rapid reversal must settle to the accepted state.
34
+
35
+ Honor `prefers-reduced-motion: reduce` with immediate state changes and static
36
+ loading indicators. Never require motion to distinguish two states. For infinite
37
+ motion, verify the activity ends with its actual loading state.
38
+
39
+ Review actual controls in the same screen and at their supported density. Verify
40
+ pointer, keyboard, touch, interrupted transitions and reduced motion. For
41
+ overlays, also check repeated open/close, focus restoration and nested dismissal
42
+ in Chromium, Firefox and WebKit. Record deliberately static behavior by family.
43
+ Use the Motion guide in the matching catalog for the component-by-component
44
+ contract. When adding a component, give its states an owner in that guide.
@@ -11,6 +11,13 @@ object selection; Tabs for associated panels; Accordion/Collapsible for disclosu
11
11
  SegmentedControl selects one value and is not a tab panel controller. Do not use
12
12
  Menu just because links appear vertically.
13
13
 
14
+ For the 0.2.11 source candidate, NavigationItem is the shared small row owner and
15
+ NavigationGroup owns an optional section heading/action, separator and independent
16
+ group disclosure. NavigationTree composes rows into a hierarchy; Sidebar owns
17
+ fixed regions and bounded scrolling. Consumers must discover these APIs in their
18
+ installed version before using them. Atomic composition separates responsibilities;
19
+ it does not require a new export for every wrapper or spacing token.
20
+
14
21
  ## Preserve browser and keyboard behavior
15
22
 
16
23
  - Links retain real href, modifier/open-in-new-tab behavior and current-page
@@ -23,6 +30,58 @@ Menu just because links appear vertically.
23
30
  Avoid adding generic arrow-key handlers around nested interactive content.
24
31
  - Disclosure state must match its trigger and panel. Check whether content remains
25
32
  mounted, and preserve any native form/focus consequences of the installed API.
33
+ - A branch with no destination can use one full-row disclosure button. A branch
34
+ with a destination uses a real link plus a separate sibling disclosure action.
35
+ Do not nest the toggle inside the link or make a normal link click also toggle
36
+ expansion. Command rows retain Button semantics; vertical navigation is not
37
+ automatically an application Menu.
38
+
39
+ ## Shared rows and configurable groups
40
+
41
+ Use AppShell for workspace regions and AppTopBar for shared application
42
+ context and actions. PageHeader belongs inside the main region. Sidebar and
43
+ NavigationTree own the destinations and expanded branches. Keep the selected
44
+ route, responsive presentation and a mobile Drawer's open state separate.
45
+ Use AppShell navigationDrawer for a single dock that needs to switch based on
46
+ container width. Verify the switch inside a narrow parent at a wide viewport,
47
+ including resizing while a navigation link or the Drawer has focus.
48
+
49
+ Hide the visible caption of a single group when its title repeats the app or
50
+ workspace context. Keep the group's accessible name with `hideLabel`. Align
51
+ visible captions with destination labels, and check both settled sidebar widths.
52
+
53
+ NavigationItem owns the complete row surface, including the visual relationship
54
+ between its primary control and disclosure. A shorter selected background behind
55
+ only the label/link makes the trailing action look unrelated. Keep distinct click
56
+ and focus targets within a coherent current/hover surface; current destination,
57
+ ancestor-current, expansion and focus remain separate. Budget actual trailing
58
+ anatomy once rather than adding another empty inset or column in the shell.
59
+ Align disclosure and badge centers on the trailing track. The disclosure target
60
+ already contributes half its width as clearance, so use the compact edge inset
61
+ there and preserve the full target.
62
+ Use trailing for noninteractive metadata and trailingAction for an independent
63
+ named action. Keep both visible on the trailing track at rest and during
64
+ interaction. On an already filled row, use a glyph-level hover response for a
65
+ ghost accessory and keep its keyboard focus visible. Use branchGuides for dense hierarchies where
66
+ indentation alone is hard to follow. Keep section separators optional and
67
+ distinct from branch guides.
68
+ Use Sidebar headerLayout inline when the expanded identity and toggle should
69
+ share a row. Use the stacked recipe when the toggle must stay on the same axis
70
+ through collapse and expansion.
71
+
72
+ NavigationGroup starts with optional presentation empty. Add a heading to name a
73
+ real group, headingAction for a real command, and separator for a relationship
74
+ that needs one. Do not fill every slot to make a demo look complete. A collapsible
75
+ group requires a label; hiding its visual label does not remove the disclosure's
76
+ accessible name. collapseDisabled disables that disclosure, not its child links.
77
+ Group expansion is not NavigationTree expandedValues and is not Sidebar compact
78
+ state. A proposal callback does not prove the host accepted the change.
79
+
80
+ Compact groups keep destinations available without requiring an invisible group
81
+ toggle. Preserve the accepted expanded choice for the return to expanded mode;
82
+ do not overwrite it merely to reveal compact destinations. Meaningful heading
83
+ actions remain available. Test headed/unheaded groups, actions present/absent,
84
+ separator on/off, accepted/refused collapse and compact transitions separately.
26
85
 
27
86
  ## Evidence
28
87
 
@@ -33,3 +92,139 @@ new line can indicate a sizing error rather than a legitimate responsive layout.
33
92
  For sidebar navigation, scroll/focus the final item and keep its selected surface
34
93
  clear of the scrollbar. Verify the actual navigation composition at narrow width
35
94
  and enlarged text; an isolated item's screenshot is insufficient.
95
+ Verify shared inline tracks from header through footer: leading glyph center,
96
+ text start and trailing badge/disclosure center. Group labels inherit the chosen
97
+ text track. Missing peer icons reserve their column; iconless nested links use
98
+ an intentional parent-text indent. Sidebar places its scrollbar in existing edge
99
+ spacing, without a permanent extra column or a shift when overflow appears.
100
+ Other scroll surfaces must still protect content that reaches their tracks.
101
+ In compact mode compare the actual brand, pane-toggle, destination and account
102
+ control centers against the full rail center. A balanced body or centered footer
103
+ container does not prove its Menu trigger is on the same axis. Adapt the fixed
104
+ identity/utility slots through the accepted compact state instead of inserting
105
+ an unrelated small button and assuming inherited alignment will fix it.
106
+
107
+ Use Sidebar for bounded workspace navigation: NavigationTree owns the destinations
108
+ and disclosure, ScrollArea owns the middle scroll viewport, and fixed header/footer
109
+ slots adapt through the collapsed render state. Give the host a meaningful height;
110
+ do not add several competing scroll owners. Route/current value, compact width and
111
+ branch expansion are independent controlled states. A callback is a proposal,
112
+ not acceptance. Keep groups and item IDs stable; item values are globally unique.
113
+ Collapsed branches open a full NavigationTree in Popover, not an application Menu.
114
+ Leaf links preserve href and modifier behavior. Do not claim an active ancestor
115
+ is the current page. Count metadata uses trailing with Badge; icons retain explicit
116
+ IconSlot sizing. Compact destinations use Flood Tooltip on hover and keyboard
117
+ focus while keeping their actual Link or disclosure button. Do not layer a
118
+ native title with the same text over the tooltip. Suppress the branch hint while
119
+ its flyout is open; tooltip behavior must not replace navigation or steal focus.
120
+ Sidebar owns no routing, preference persistence, mobile drawer or keyboard shortcut.
121
+ Add those in the host only for an explicit requirement. On a programmatic width
122
+ change, keep surviving focus or restore it within the navigation; do not move
123
+ unrelated outside focus. Verify footer reachability and flyout text at both widths.
124
+
125
+ ## Compose global and contextual navigation
126
+
127
+ For a multi-domain application, distinguish global module choice, contextual
128
+ page destination, branch expansion and context-pane visibility. A GlobalRail
129
+ profile can compose a flat, permanently compact Sidebar; the adjacent ContextBar
130
+ profile composes another Sidebar for the accepted module. Use distinct landmark
131
+ names and keep global utilities separate from contextual destinations.
132
+
133
+ Do not duplicate the context list in both an open ContextBar and a rail flyout.
134
+ Re-clicking the active module does not implicitly hide its context: give that
135
+ pane an explicit visibility control. Use currentKind="location" for a current
136
+ global module and the default page kind for an actual contextual destination.
137
+ Keep genuine hrefs and derive accepted routes from the host router. Modifier
138
+ clicks/open-in-new-tab must not change the current tab's accepted module.
139
+
140
+ Read recipe:navigation-workspace from the installed catalog for the full host
141
+ composition. Keep filters/search scoped to the accepted module; resetting one
142
+ module must not change another module's query. Validate complete route identities
143
+ before deriving titles and current state. If a focused row/pane/action disappears,
144
+ restore a stable host destination only after the previous focus was disconnected
145
+ and focus fell to the document body. Do not reset surviving focus on every render.
146
+ Include dialog-close after its original trigger disappeared in that check.
147
+
148
+ SidebarGroup.hideLabel omits a redundant visual heading while retaining the
149
+ named nav landmark. Start optional headings, captions, counters and helper slots
150
+ empty; add them only for information needed for recognition or a decision.
151
+ Group headingAction, separator and collapse configuration belong to the section;
152
+ Sidebar headerSeparator/footerSeparator are independent opt-in shell choices.
153
+ Do not equate every group boundary with a visible line.
154
+ Use the live workspace composition before introducing separate public aliases:
155
+ an identical wrapper name is not a new component responsibility.
156
+
157
+ Keep a shared top reading anchor across composed panes. A header without a
158
+ collapse action still needs the family header height; removing an optional button
159
+ must not shift its entire navigation above the neighboring rail.
160
+
161
+ Evaluate the navigation with its main workspace at real desktop width and height,
162
+ not only as a centered object in a docs column. Keep visible chrome subdued
163
+ relative to task content, expose current destinations clearly, and budget badges.
164
+ Record deliberate scoped semantic theme overrides rather than styling around
165
+ the reused primitives. Evidence from another product informs a decision; it does
166
+ not authorize copying implementation or presenting an undated page as a new release.
167
+
168
+ ## Give navigation a deliberate visual grammar
169
+
170
+ NavigationItem owns a row, not a hidden hierarchy. For a compact row that has
171
+ both a destination and children, use NavigationTree's branch composition: its
172
+ flyout retains the parent destination and the children. Do not hide one of two
173
+ actions merely to fit an icon target. Keep Tooltip mounted and disable its hint
174
+ while the interactive flyout is open; replacing that wrapper can remount the
175
+ trigger and break focus return.
176
+
177
+ Separate destination artwork from supporting disclosure. Use the IconButton
178
+ iconSize capability to reduce a chevron independently of its size/hit area;
179
+ never shrink the clickable target just to make the glyph quieter. Compare the
180
+ actual artwork, not merely its SVG box. Sidebar's sm/md disclosure uses 2xs
181
+ artwork, lg uses xs; these are the current family recipe, not universal pixel
182
+ requirements for every action. Keep the shared trailing action center.
183
+
184
+ A pane toggle depicts the pane, with distinct open/close directional states.
185
+ A multi-panel layout icon is not automatically a recognizable visibility action.
186
+ Keep its accessible name and aria-expanded synchronized with the accepted state;
187
+ resolve side and RTL before choosing the arrow direction. Check inherited
188
+ direction changes after mount too: panel edge, arrow and flyout side must update
189
+ together without requiring an unrelated interaction to refresh them.
190
+
191
+ Do not make every relationship a new pill, divider or group title. Peer items,
192
+ children, separate groups and fixed footer actions need distinct parent-owned
193
+ spacing. Start optional captions, counters and descriptions empty. Give each
194
+ visible addition a recognition, navigation or task purpose; remove decorative
195
+ status claims and labels that repeat their inherited context. Apply the content
196
+ workflow to the actual rendered navigation, including hidden and empty states.
197
+
198
+ A professional result requires both a coherent family and a working interaction.
199
+ Review expanded/compact side by side with real short/long labels and a populated
200
+ workspace. Check whether a user can identify destinations, discover hidden labels,
201
+ change the current route and reopen a pane. A generic "anti-slop" checklist or
202
+ passing build is not evidence that these rendered checks passed. Learn from
203
+ references without importing another product's branding or taste bans wholesale.
204
+
205
+ ## Coordinate actions and workspace anchors
206
+
207
+ For a persistent pane toggle, keep its viewport position while its pane changes
208
+ width or visibility and test consecutive clicks at the same coordinates. If a
209
+ compact rail swaps the service mark for the toggle, keep both in the same slot
210
+ and reveal the toggle on hover and keyboard focus. Keep the toggle visible on
211
+ devices without hover. When context is hidden, a rail module can open its
212
+ destinations in a compact NavigationTree flyout. Keep links and expansion state
213
+ shared with the docked context. Escape dismisses the flyout without changing the
214
+ route or pinning the pane.
215
+
216
+ For a rail hover preview, use the compact item's flyout options. Opening from
217
+ hover preserves focus and allows the pointer to cross the gap into the panel.
218
+ Explicit activation still opens the same destinations on keyboard and touch.
219
+ Anchor a tall context flyout to the rail so it shares the workspace top edge.
220
+
221
+ Menubar coordinates desktop commands and one open menu, not website destinations.
222
+ Reuse Menu for its child menus; native links still own destinations. OverflowActions
223
+ composes Toolbar/Button/Menu. Preserve command identity, disabled state and danger
224
+ tone when moving into More. Choose priorities by task, not label length. Exercise
225
+ focus when resize hides an action or removes the More trigger.
226
+
227
+ Keep a common top reading anchor across short/long workspace pages. Use logical
228
+ inline centering for content width: margin:auto on a grid child can also center
229
+ a short page vertically. Name each pane's scroll owner. Check short/long lists,
230
+ detail and editor at the same viewport; a Drawer/table cannot fix its parent.
@@ -10,6 +10,9 @@ Use the actual installed overlay and trigger contract; see
10
10
  noninteractive help; interactive content needs the appropriate Popover or dialog.
11
11
  Do not put an action inside a tooltip or apply application-menu roles to site links.
12
12
 
13
+ For a short Select trigger, verify that the open list can fit the longest
14
+ ordinary label, then repeat near the viewport edge with a very long label.
15
+
13
16
  ## Preserve trigger and state
14
17
 
15
18
  Forward trigger props/ref onto one mounted native action. Preserve its accessible
@@ -17,16 +20,55 @@ name and open/controls semantics. Choose host-controlled open state or a default
17
20
  and test a host refusing an open/close request. Do not claim control state changed
18
21
  merely because a callback ran. The host owns persistent values in unmounted panels.
19
22
 
23
+ Tooltip can attach to a real Link or Button through HTMLElement-safe trigger
24
+ props. Preserve the ref, hover/focus handlers and descriptions together with the
25
+ host handlers. Do not turn a navigation link into a button to add a hint. Raw
26
+ tooltip buttons in forms keep an explicit type="button". A control sharing Tooltip
27
+ and Popover composes both refs and suppresses its hint while the popover is open;
28
+ the interactive layer owns Escape and focus then.
29
+
20
30
  Modal and nonmodal focus are different: do not add a trap to every floating
21
31
  surface or remove a modal's background inertness. Escape dismisses the active
22
32
  layer; a nested menu/select must not also close its parent dialog. Restore opener
23
33
  focus unless the host intentionally moved it elsewhere.
24
34
 
35
+ Task Dialog titles and body insets use their own recipe; do not reuse compact
36
+ popup caption typography for the modal task. The
37
+ [hierarchy workflow](../flood-hierarchy/SKILL.md) owns title/group/field relations.
38
+
39
+ Use CommandPalette for modal search. Its search header and results share one
40
+ overlay surface. Forward the trigger and keep the modal title and input label
41
+ specific to the task. Use loading for an in-flight request, and let the host
42
+ control permissions, navigation and shortcuts.
43
+
25
44
  ## Inspect the actual host
26
45
 
46
+ Use a Drawer for a short record task that needs the list as context. Use a
47
+ route when the record needs a shareable address, substantial editing space, or
48
+ its own navigation and history. After a Drawer save, restore the initiating
49
+ control if it remains in the result set. Choose a stable list control when the
50
+ edit changes filter membership. See `recipe:record-management`.
51
+
52
+ Choose Drawer width using the longest real title, body copy and form controls.
53
+ Compare `md` and `lg` with a populated record. Use the description slot for
54
+ brief context and compose independent body sections with Section, Stack,
55
+ DescriptionList or Fieldset as appropriate. Put the next action in the footer
56
+ when it must stay reachable during scrolling. Avoid repeating the heading
57
+ as a section name or showing two equivalent dismiss actions in a clean state.
58
+
59
+ Overlay material establishes the nested neutral control context automatically.
60
+ Compare its fields, secondary actions, selection and supporting chips with their
61
+ canvas counterparts. Avoid opaque dark action islands or hiding the entire
62
+ surface distinction behind a strong border/shadow. Glass needs an opaque
63
+ fallback and a reduced-transparency path. A nested Surface resets its own
64
+ material; a nested chooser becomes a new floating owner. Verify both cases.
65
+
27
66
  Check placement at viewport edges, resize, narrow/enlarged text, RTL and parent
28
67
  scrolling. Selection popups and calendar popups have distinct content geometry;
29
68
  use the supported field/anchor sizing behavior, not a universal fixed width.
69
+ DatePicker calendar panels have a 20rem preferred minimum, bounded by available
70
+ viewport width; narrow anchors need not force cramped calendar content. Selection
71
+ lists and time lists retain their separate contracts.
30
72
  Verify nested radii/insets, surface distinction over a parent Surface and that
31
73
  essential content stays outside scrollbar rails. No clipping or noisy duplicate
32
74
  contours should be concealed with extra wrappers.
@@ -0,0 +1,148 @@
1
+ ---
2
+ name: flood-records
3
+ description: 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.
4
+ ---
5
+
6
+ # Select information for the current decision
7
+
8
+ Read the task and installed DataListItem, Table/DataTable, DescriptionList and
9
+ feedback contracts relevant to it. Start with what the user needs to recognize,
10
+ compare or act on before opening a record. A record's available schema is not the
11
+ content specification for every surface. Use the
12
+ [interface-content workflow](../flood-interface-content/SKILL.md) for wording and
13
+ [hierarchy workflow](../flood-hierarchy/SKILL.md) for visual relationships.
14
+
15
+ Before JSX, make a short field -> decision -> list/detail placement record in
16
+ development notes. Include the reason for an omitted field; do not place this
17
+ planning text in the interface. Read the
18
+ [decision examples](../record-decisions.md) when meanings or placement are unclear.
19
+
20
+ ## Choose the record structure
21
+
22
+ - Use DataList/DataListItem when identity, a useful summary and opening the record
23
+ are primary. Keep the title and summary as one readable unit. Give secondary
24
+ attributes a subordinate relationship rather than filling every trailing slot.
25
+ - If users compare several independent attributes across records, use Table or
26
+ DataTable with actual named columns. A long Inline of unrelated values at each
27
+ row end is not a substitute for comparison columns.
28
+ - Use DescriptionList for named values in details. Each item requires a unique,
29
+ stable string `id` alongside `term` and `description`. A detail view can expose
30
+ more information than a list; it does not need to repeat the list's chip arrangement.
31
+ - Selection is not navigation. A record list does not become ListBox merely
32
+ because users click its entries. Retain a real Link and independent actions.
33
+
34
+ When a scan signal is useful at the trailing edge, keep its position stable
35
+ across sibling records. Test the longest and missing values, not only equal sample
36
+ strings. Multiple right-justified values with variable lengths produce shifting
37
+ pseudo-columns even when their gaps match. Use an explicit common comparison
38
+ structure or move secondary attributes into the copy area.
39
+
40
+ ## Distinguish metadata roles before styling
41
+
42
+ | Meaning | Existing owner / treatment |
43
+ | --- | --- |
44
+ | Lifecycle or operation state | StatusIndicator with accurate text; color is supplementary |
45
+ | Category, type or membership | Badge when a tag-shaped marker helps recognition; otherwise named/subordinate text |
46
+ | Priority or urgency | Keep visible when it drives triage/comparison; use an explicit column or named value if needed |
47
+ | Creation, update, due or event time | Identify the event and appropriate precision; do not treat every date as a status |
48
+ | An available operation | Button/IconButton/Menu; do not make an informational badge look actionable |
49
+
50
+ A category named Error is not necessarily a failed operation. Do not choose
51
+ error styling or an announcement from that word alone. Use clear labels in
52
+ ambiguous contexts, especially details with several similar-looking values.
53
+ A priority is not a second lifecycle status. Do not make all attributes colorful
54
+ chips or interchangeable status dots. Keep StatusIndicator rather than hand-drawing
55
+ its state text/dot to fit a preferred arrangement.
56
+
57
+ There is no universal badge limit. For a browsing list, start with identity and
58
+ one useful scan signal; admit further visible metadata when it changes selection
59
+ or action. For triage, priority may be essential even when every item is normal.
60
+ Do not hide necessary comparisons just to make a screenshot quieter. Conversely,
61
+ a default low/medium priority does not automatically need a separate visual accent.
62
+
63
+ ## Distribute information between list and details
64
+
65
+ For a table row whose main action opens an in-place Drawer, use DataTable's
66
+ `primaryAction` when the installed version provides it. Title and metadata
67
+ share a compact cell, pointer activation extends across the row, and a native
68
+ button provides the keyboard entry. Keep checkbox, links and menus independent.
69
+ For a real destination, preserve a Link. Use the table toolbar and matching
70
+ edge inset when the heading, filters, cells and footer share one surface.
71
+
72
+ Give a queue's summaries only the prominence they earn in the task. If a
73
+ count changes which work to pick up, make the relevant scope clear. If the
74
+ table already exposes the decision, compare a quiet inline count with a
75
+ separate metric surface before spending the first viewport on summaries.
76
+
77
+ Classify a collection toolbar control by the thing it changes:
78
+
79
+ | What changes | Owner |
80
+ | --- | --- |
81
+ | One selected value filters the same table | SegmentedControl for a few visible choices, Select when the choices need a compact menu |
82
+ | The current panel and its associated content | Tabs |
83
+ | The current destination | Link |
84
+ | An operation runs | Button |
85
+
86
+ For example, Pending and Reviewed can filter one table even when each state shows
87
+ different columns. Use the installed SegmentedControl when its value model fits.
88
+ Read its component contract before composing the toolbar. Keep one table and
89
+ preserve applicable search and sorting; reset a page or close a detail only when
90
+ the new result invalidates it. Keep focus on the selected control. Exercise arrow
91
+ keys and check that the selected value updates the rows and accessible state.
92
+
93
+ Protect enough width for the identity and useful summary. Category and recency
94
+ can read as secondary information near the title; status may stay in a stable
95
+ trailing position. This is one pattern, not a required arrangement. DataListItem
96
+ slots accept composition from supported Flood primitives; check their actual
97
+ content types before using them. Do not override private slot layout or wrap
98
+ ordinary metadata in invented semantics merely to silence an inspector.
99
+
100
+ In details, group named attributes by purpose. Place the principal state where it
101
+ informs action; avoid an unlabeled strip of state, category and priority that asks
102
+ the user to infer their meanings. User descriptions remain content, not interface
103
+ copy to shorten. A heading or Surface around a description must earn its role;
104
+ it is not mandatory for every text field.
105
+
106
+ Creation and modification describe different events. Keep both when history or
107
+ recency matters. If displayed values repeat and the distinction adds no current
108
+ value, one visible date may suffice; if exact time matters, use adequate precision
109
+ instead of suppressing the distinction based only on equal formatted dates.
110
+
111
+ ## Compose collection states deliberately
112
+
113
+ Use the `recipe:record-management` material when users need to find a record,
114
+ edit it and continue working through the same list. Keep the applied query,
115
+ filters, ordering, page and scroll with the mounted collection. After saving,
116
+ reapply the current filter to the updated data. If the source row disappears,
117
+ return focus to a surviving list control such as search. In a long list, verify
118
+ the scroll position and focus separately after both Save and Cancel.
119
+
120
+ Keep search and a frequently used filter visible when there is room. Put
121
+ occasional or grouped criteria behind a named Filters action. Show applied
122
+ criteria at the list edge so users can tell why a record is missing.
123
+
124
+ First-use empty, filtered no-results, loading and read failure are different
125
+ states. Keep a relevant reset/action and meaningful feedback. A result count can
126
+ help filtering or pagination; do not automatically add Found: 0 beside an empty
127
+ collection message that already establishes there are no records. Never remove
128
+ an accessible update announcement merely to remove a duplicate visible sentence;
129
+ check announcement ownership in the feedback workflow.
130
+
131
+ A product header, page title and section heading must answer different questions.
132
+ Do not add a generic product/category eyebrow plus a title plus a sentence restating
133
+ it just because the shell has slots. Real branding and navigation context can
134
+ justify persistent chrome; preserve that purpose rather than applying a text ban.
135
+
136
+ ## Verify across several records and states
137
+
138
+ Use isolated fixtures, not fictional records persisted into the user's app. Check
139
+ several short and long titles, every meaningful state, differing category/priority
140
+ lengths, missing metadata and long dates. Inspect scan positions and copy width
141
+ at normal and enlarged text, including 1280px/root24px for the desktop baseline.
142
+ No page overflow alone does not prove that the title has readable width.
143
+
144
+ Open details and return; exercise filters, no-results/reset and row actions.
145
+ Check reading order, Link names and action focus separately from visual alignment.
146
+ Review each visible attribute's decision value outside the product UI. An optional
147
+ observer may flag useful metadata or miss a crowded row; record the contextual
148
+ keep/move/name/omit decision rather than treating its output as editorial approval.