@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.
- package/DESIGN.md +33 -8
- package/README.md +35 -4
- package/SKILL.md +42 -0
- package/dist/catalog.json +8716 -0
- package/dist/materials/component-accordion.md +42 -0
- package/dist/materials/component-alert-dialog.md +46 -0
- package/dist/materials/component-alert.md +41 -0
- package/dist/materials/component-app-shell.md +47 -0
- package/dist/materials/component-app-top-bar.md +36 -0
- package/dist/materials/component-aspect-ratio.md +36 -0
- package/dist/materials/component-autocomplete.md +54 -0
- package/dist/materials/component-avatar-group.md +39 -0
- package/dist/materials/component-avatar.md +40 -0
- package/dist/materials/component-badge.md +37 -0
- package/dist/materials/component-blockquote.md +35 -0
- package/dist/materials/component-breadcrumb.md +36 -0
- package/dist/materials/component-bulk-action-bar.md +52 -0
- package/dist/materials/component-button-group.md +39 -0
- package/dist/materials/component-button.md +44 -0
- package/dist/materials/component-calendar.md +59 -0
- package/dist/materials/component-card.md +46 -0
- package/dist/materials/component-center.md +39 -0
- package/dist/materials/component-character-count.md +42 -0
- package/dist/materials/component-check-card.md +39 -0
- package/dist/materials/component-checkbox-group.md +48 -0
- package/dist/materials/component-checkbox.md +37 -0
- package/dist/materials/component-code-snippet.md +37 -0
- package/dist/materials/component-collapsible.md +41 -0
- package/dist/materials/component-collection-toolbar.md +68 -0
- package/dist/materials/component-collection-view-switcher.md +49 -0
- package/dist/materials/component-color-picker.md +49 -0
- package/dist/materials/component-color-swatch.md +35 -0
- package/dist/materials/component-combobox.md +60 -0
- package/dist/materials/component-command-list.md +48 -0
- package/dist/materials/component-command-palette.md +53 -0
- package/dist/materials/component-container.md +36 -0
- package/dist/materials/component-context-menu.md +43 -0
- package/dist/materials/component-copy-button.md +43 -0
- package/dist/materials/component-data-list-item.md +40 -0
- package/dist/materials/component-data-list.md +38 -0
- package/dist/materials/component-data-table.md +70 -0
- package/dist/materials/component-date-field.md +57 -0
- package/dist/materials/component-date-picker.md +67 -0
- package/dist/materials/component-date-range-field.md +62 -0
- package/dist/materials/component-date-range-picker.md +73 -0
- package/dist/materials/component-date-time-picker.md +62 -0
- package/dist/materials/component-date-time-range-picker.md +70 -0
- package/dist/materials/component-description-list.md +42 -0
- package/dist/materials/component-dialog.md +45 -0
- package/dist/materials/component-divider.md +37 -0
- package/dist/materials/component-drawer.md +51 -0
- package/dist/materials/component-dropzone.md +45 -0
- package/dist/materials/component-editable.md +57 -0
- package/dist/materials/component-empty-state.md +41 -0
- package/dist/materials/component-error-summary.md +40 -0
- package/dist/materials/component-field.md +46 -0
- package/dist/materials/component-fieldset.md +46 -0
- package/dist/materials/component-figure.md +36 -0
- package/dist/materials/component-file-input.md +45 -0
- package/dist/materials/component-file-item.md +48 -0
- package/dist/materials/component-file-list.md +39 -0
- package/dist/materials/component-file-meta.md +36 -0
- package/dist/materials/component-filter-condition.md +53 -0
- package/dist/materials/component-filter-group.md +55 -0
- package/dist/materials/component-flood-root.md +33 -0
- package/dist/materials/component-grid.md +38 -0
- package/dist/materials/component-heading.md +38 -0
- package/dist/materials/component-hover-card.md +48 -0
- package/dist/materials/component-icon-button.md +43 -0
- package/dist/materials/component-icon-slot.md +37 -0
- package/dist/materials/component-image-preview.md +50 -0
- package/dist/materials/component-image.md +37 -0
- package/dist/materials/component-inline-code.md +36 -0
- package/dist/materials/component-inline.md +39 -0
- package/dist/materials/component-input-group.md +43 -0
- package/dist/materials/component-input.md +39 -0
- package/dist/materials/component-kbd.md +34 -0
- package/dist/materials/component-label.md +37 -0
- package/dist/materials/component-link.md +35 -0
- package/dist/materials/component-list-box.md +57 -0
- package/dist/materials/component-list.md +40 -0
- package/dist/materials/component-menu.md +54 -0
- package/dist/materials/component-menubar.md +41 -0
- package/dist/materials/component-meter.md +43 -0
- package/dist/materials/component-metric.md +39 -0
- package/dist/materials/component-multi-select.md +62 -0
- package/dist/materials/component-navigation-group.md +51 -0
- package/dist/materials/component-navigation-item.md +59 -0
- package/dist/materials/component-navigation-list.md +38 -0
- package/dist/materials/component-navigation-tree.md +51 -0
- package/dist/materials/component-number-input.md +47 -0
- package/dist/materials/component-overflow-actions.md +47 -0
- package/dist/materials/component-page-header.md +40 -0
- package/dist/materials/component-pagination.md +44 -0
- package/dist/materials/component-password-input.md +43 -0
- package/dist/materials/component-pin-input.md +45 -0
- package/dist/materials/component-popover.md +48 -0
- package/dist/materials/component-progress.md +42 -0
- package/dist/materials/component-radio-card.md +43 -0
- package/dist/materials/component-radio-group.md +49 -0
- package/dist/materials/component-radio.md +39 -0
- package/dist/materials/component-range-calendar.md +58 -0
- package/dist/materials/component-rating.md +46 -0
- package/dist/materials/component-resizable-panels.md +48 -0
- package/dist/materials/component-scroll-area.md +42 -0
- package/dist/materials/component-search-input.md +40 -0
- package/dist/materials/component-section.md +42 -0
- package/dist/materials/component-segmented-control.md +53 -0
- package/dist/materials/component-select.md +45 -0
- package/dist/materials/component-sidebar.md +64 -0
- package/dist/materials/component-skeleton.md +42 -0
- package/dist/materials/component-skip-link.md +37 -0
- package/dist/materials/component-slider.md +51 -0
- package/dist/materials/component-spinner.md +37 -0
- package/dist/materials/component-split.md +40 -0
- package/dist/materials/component-stack.md +37 -0
- package/dist/materials/component-status-indicator.md +38 -0
- package/dist/materials/component-steps.md +40 -0
- package/dist/materials/component-surface.md +37 -0
- package/dist/materials/component-switch.md +35 -0
- package/dist/materials/component-table.md +46 -0
- package/dist/materials/component-tabs.md +45 -0
- package/dist/materials/component-tag-input.md +46 -0
- package/dist/materials/component-tag.md +40 -0
- package/dist/materials/component-text.md +39 -0
- package/dist/materials/component-textarea.md +38 -0
- package/dist/materials/component-time-field.md +56 -0
- package/dist/materials/component-time-picker.md +60 -0
- package/dist/materials/component-timeline.md +38 -0
- package/dist/materials/component-toast-region.md +42 -0
- package/dist/materials/component-toggle-group.md +44 -0
- package/dist/materials/component-toggle.md +40 -0
- package/dist/materials/component-toolbar.md +46 -0
- package/dist/materials/component-tooltip.md +40 -0
- package/dist/materials/component-tree-select.md +56 -0
- package/dist/materials/component-tree.md +52 -0
- package/dist/materials/component-upload-item.md +52 -0
- package/dist/materials/component-upload-list.md +40 -0
- package/dist/materials/component-visually-hidden.md +37 -0
- package/dist/materials/guide-agent-knowledge.md +95 -0
- package/dist/materials/guide-agents.md +103 -0
- package/dist/materials/guide-faq.md +84 -0
- package/dist/materials/guide-foundations.md +275 -0
- package/dist/materials/guide-installation.md +79 -0
- package/dist/materials/guide-interface-content.md +76 -0
- package/dist/materials/guide-introduction.md +42 -0
- package/dist/materials/guide-layout.md +222 -0
- package/dist/materials/guide-motion.md +69 -0
- package/dist/materials/guide-privacy.md +23 -0
- package/dist/materials/guide-project-ui.md +127 -0
- package/dist/materials/guide-skills.md +117 -0
- package/dist/materials/guide-theming.md +73 -0
- package/dist/materials/recipe-collection-views.md +648 -0
- package/dist/materials/recipe-command-palette.md +45 -0
- package/dist/materials/recipe-filter-bar.md +68 -0
- package/dist/materials/recipe-form-submission.md +39 -0
- package/dist/materials/recipe-grouped-form.md +71 -0
- package/dist/materials/recipe-navigation-workspace.md +222 -0
- package/dist/materials/recipe-record-management.md +296 -0
- package/dist/materials/recipe-record-workspace.md +207 -0
- package/dist/materials/recipe-select-all.md +31 -0
- package/dist/materials/recipe-settings-workspace.md +232 -0
- package/dist/materials/recipe-split-button.md +26 -0
- package/dist/materials/recipe-table-bulk-actions.md +88 -0
- package/dist/materials/recipe-workspace-review.md +134 -0
- package/dist/materials/token-sys.color.accent.content.json +41 -0
- package/dist/materials/token-sys.color.action.danger.content.json +42 -0
- package/dist/materials/token-sys.color.action.ghost.content.json +41 -0
- package/dist/materials/token-sys.color.action.ghost.disabled-content.json +41 -0
- package/dist/materials/token-sys.color.action.ghost.disabled.json +41 -0
- package/dist/materials/token-sys.color.action.ghost.hover.json +41 -0
- package/dist/materials/token-sys.color.action.ghost.pressed.json +41 -0
- package/dist/materials/token-sys.color.action.ghost.rest.json +41 -0
- package/dist/materials/token-sys.color.action.on-surface.content.json +39 -0
- package/dist/materials/token-sys.color.action.on-surface.disabled-content.json +39 -0
- package/dist/materials/token-sys.color.action.on-surface.disabled.json +39 -0
- package/dist/materials/token-sys.color.action.on-surface.hover.json +39 -0
- package/dist/materials/token-sys.color.action.on-surface.pressed.json +39 -0
- package/dist/materials/token-sys.color.action.on-surface.rest.json +39 -0
- package/dist/materials/token-sys.color.action.primary.content.json +39 -0
- package/dist/materials/token-sys.color.action.primary.disabled-content.json +39 -0
- package/dist/materials/token-sys.color.action.primary.disabled.json +39 -0
- package/dist/materials/token-sys.color.action.primary.hover.json +39 -0
- package/dist/materials/token-sys.color.action.primary.pressed.json +39 -0
- package/dist/materials/token-sys.color.action.primary.rest.json +39 -0
- package/dist/materials/token-sys.color.action.subtle.content.json +39 -0
- package/dist/materials/token-sys.color.action.subtle.disabled-content.json +39 -0
- package/dist/materials/token-sys.color.action.subtle.disabled.json +39 -0
- package/dist/materials/token-sys.color.action.subtle.hover.json +39 -0
- package/dist/materials/token-sys.color.action.subtle.pressed.json +39 -0
- package/dist/materials/token-sys.color.action.subtle.rest.json +39 -0
- package/dist/materials/token-sys.color.border.decorative.json +42 -0
- package/dist/materials/token-sys.color.border.default.json +39 -0
- package/dist/materials/token-sys.color.border.floating.json +39 -0
- package/dist/materials/token-sys.color.border.strong.json +39 -0
- package/dist/materials/token-sys.color.content.default.json +41 -0
- package/dist/materials/token-sys.color.content.helper.json +39 -0
- package/dist/materials/token-sys.color.content.subtle.json +43 -0
- package/dist/materials/token-sys.color.context.base.action-disabled.json +41 -0
- package/dist/materials/token-sys.color.context.base.action-hover.json +41 -0
- package/dist/materials/token-sys.color.context.base.action-pressed.json +41 -0
- package/dist/materials/token-sys.color.context.base.action-rest.json +41 -0
- package/dist/materials/token-sys.color.context.base.avatar-background.json +41 -0
- package/dist/materials/token-sys.color.context.base.border-decorative.json +41 -0
- package/dist/materials/token-sys.color.context.base.divider-decorative.json +41 -0
- package/dist/materials/token-sys.color.context.base.field-background.json +41 -0
- package/dist/materials/token-sys.color.context.base.field-border.json +41 -0
- package/dist/materials/token-sys.color.context.base.field-disabled.json +41 -0
- package/dist/materials/token-sys.color.context.base.field-readonly.json +41 -0
- package/dist/materials/token-sys.color.context.base.indicator-track.json +41 -0
- package/dist/materials/token-sys.color.context.base.loading-placeholder.json +41 -0
- package/dist/materials/token-sys.color.context.base.muted-background.json +41 -0
- package/dist/materials/token-sys.color.context.base.on-surface-action-disabled.json +41 -0
- package/dist/materials/token-sys.color.context.base.on-surface-action-hover.json +41 -0
- package/dist/materials/token-sys.color.context.base.on-surface-action-pressed.json +41 -0
- package/dist/materials/token-sys.color.context.base.on-surface-action-rest.json +41 -0
- package/dist/materials/token-sys.color.context.base.selection-background.json +41 -0
- package/dist/materials/token-sys.color.context.base.supporting-background.json +41 -0
- package/dist/materials/token-sys.color.context.filled.action-disabled.json +41 -0
- package/dist/materials/token-sys.color.context.filled.action-hover.json +41 -0
- package/dist/materials/token-sys.color.context.filled.action-pressed.json +41 -0
- package/dist/materials/token-sys.color.context.filled.action-rest.json +41 -0
- package/dist/materials/token-sys.color.context.filled.avatar-background.json +41 -0
- package/dist/materials/token-sys.color.context.filled.border-decorative.json +41 -0
- package/dist/materials/token-sys.color.context.filled.divider-decorative.json +41 -0
- package/dist/materials/token-sys.color.context.filled.field-background.json +41 -0
- package/dist/materials/token-sys.color.context.filled.field-border.json +41 -0
- package/dist/materials/token-sys.color.context.filled.field-disabled.json +41 -0
- package/dist/materials/token-sys.color.context.filled.field-readonly.json +41 -0
- package/dist/materials/token-sys.color.context.filled.indicator-track.json +41 -0
- package/dist/materials/token-sys.color.context.filled.loading-placeholder.json +41 -0
- package/dist/materials/token-sys.color.context.filled.muted-background.json +41 -0
- package/dist/materials/token-sys.color.context.filled.selection-background.json +41 -0
- package/dist/materials/token-sys.color.context.filled.supporting-background.json +41 -0
- package/dist/materials/token-sys.color.divider.decorative.json +41 -0
- package/dist/materials/token-sys.color.feedback.error.json +39 -0
- package/dist/materials/token-sys.color.feedback.info.json +39 -0
- package/dist/materials/token-sys.color.feedback.success.json +39 -0
- package/dist/materials/token-sys.color.feedback.warning.json +39 -0
- package/dist/materials/token-sys.color.field.background.json +39 -0
- package/dist/materials/token-sys.color.field.border.json +39 -0
- package/dist/materials/token-sys.color.field.boundary.json +39 -0
- package/dist/materials/token-sys.color.field.content.json +39 -0
- package/dist/materials/token-sys.color.field.disabled-content.json +39 -0
- package/dist/materials/token-sys.color.field.disabled.json +39 -0
- package/dist/materials/token-sys.color.field.placeholder.json +39 -0
- package/dist/materials/token-sys.color.field.readonly.json +41 -0
- package/dist/materials/token-sys.color.focus.ring.json +39 -0
- package/dist/materials/token-sys.color.indicator.accent.json +39 -0
- package/dist/materials/token-sys.color.indicator.fill.json +39 -0
- package/dist/materials/token-sys.color.indicator.track.json +39 -0
- package/dist/materials/token-sys.color.loading.placeholder.json +42 -0
- package/dist/materials/token-sys.color.scrollbar.thumb-hover.json +39 -0
- package/dist/materials/token-sys.color.scrollbar.thumb.json +39 -0
- package/dist/materials/token-sys.color.selection.background.json +39 -0
- package/dist/materials/token-sys.color.selection.content.json +39 -0
- package/dist/materials/token-sys.color.selection.floating.json +39 -0
- package/dist/materials/token-sys.color.shadow.floating.json +39 -0
- package/dist/materials/token-sys.color.surface.avatar.json +41 -0
- package/dist/materials/token-sys.color.surface.canvas.json +39 -0
- package/dist/materials/token-sys.color.surface.current.json +41 -0
- package/dist/materials/token-sys.color.surface.default.json +39 -0
- package/dist/materials/token-sys.color.surface.floating-translucent.json +39 -0
- package/dist/materials/token-sys.color.surface.floating.json +39 -0
- package/dist/materials/token-sys.color.surface.muted.json +41 -0
- package/dist/materials/token-sys.color.surface.overlay.json +39 -0
- package/dist/materials/token-sys.color.surface.raised.json +39 -0
- package/dist/materials/token-sys.color.surface.supporting.json +41 -0
- package/dist/materials/token-sys.control.2xl.gap.json +34 -0
- package/dist/materials/token-sys.control.2xl.height.json +34 -0
- package/dist/materials/token-sys.control.2xl.icon-size.json +34 -0
- package/dist/materials/token-sys.control.2xl.line-height.json +31 -0
- package/dist/materials/token-sys.control.2xl.padding-inline.json +34 -0
- package/dist/materials/token-sys.control.2xl.text-size.json +34 -0
- package/dist/materials/token-sys.control.2xs.gap.json +34 -0
- package/dist/materials/token-sys.control.2xs.height.json +34 -0
- package/dist/materials/token-sys.control.2xs.icon-size.json +34 -0
- package/dist/materials/token-sys.control.2xs.line-height.json +31 -0
- package/dist/materials/token-sys.control.2xs.padding-inline.json +34 -0
- package/dist/materials/token-sys.control.2xs.text-size.json +34 -0
- package/dist/materials/token-sys.control.lg.gap.json +34 -0
- package/dist/materials/token-sys.control.lg.height.json +34 -0
- package/dist/materials/token-sys.control.lg.icon-size.json +34 -0
- package/dist/materials/token-sys.control.lg.line-height.json +31 -0
- package/dist/materials/token-sys.control.lg.padding-inline.json +34 -0
- package/dist/materials/token-sys.control.lg.text-size.json +34 -0
- package/dist/materials/token-sys.control.md.gap.json +34 -0
- package/dist/materials/token-sys.control.md.height.json +34 -0
- package/dist/materials/token-sys.control.md.icon-size.json +34 -0
- package/dist/materials/token-sys.control.md.line-height.json +31 -0
- package/dist/materials/token-sys.control.md.padding-inline.json +34 -0
- package/dist/materials/token-sys.control.md.text-size.json +34 -0
- package/dist/materials/token-sys.control.sm.gap.json +34 -0
- package/dist/materials/token-sys.control.sm.height.json +34 -0
- package/dist/materials/token-sys.control.sm.icon-size.json +34 -0
- package/dist/materials/token-sys.control.sm.line-height.json +31 -0
- package/dist/materials/token-sys.control.sm.padding-inline.json +34 -0
- package/dist/materials/token-sys.control.sm.text-size.json +34 -0
- package/dist/materials/token-sys.control.xl.gap.json +34 -0
- package/dist/materials/token-sys.control.xl.height.json +34 -0
- package/dist/materials/token-sys.control.xl.icon-size.json +34 -0
- package/dist/materials/token-sys.control.xl.line-height.json +31 -0
- package/dist/materials/token-sys.control.xl.padding-inline.json +34 -0
- package/dist/materials/token-sys.control.xl.text-size.json +34 -0
- package/dist/materials/token-sys.control.xs.gap.json +34 -0
- package/dist/materials/token-sys.control.xs.height.json +34 -0
- package/dist/materials/token-sys.control.xs.icon-size.json +34 -0
- package/dist/materials/token-sys.control.xs.line-height.json +31 -0
- package/dist/materials/token-sys.control.xs.padding-inline.json +34 -0
- package/dist/materials/token-sys.control.xs.text-size.json +34 -0
- package/dist/materials/token-sys.effect.floating.blur.json +34 -0
- package/dist/materials/token-sys.effect.floating.saturation.json +31 -0
- package/dist/materials/token-sys.effect.floating.shadow-blur.json +34 -0
- package/dist/materials/token-sys.effect.floating.shadow-offset.json +34 -0
- package/dist/materials/token-sys.focus.offset.json +34 -0
- package/dist/materials/token-sys.focus.width.json +34 -0
- package/dist/materials/token-sys.font.mono.json +36 -0
- package/dist/materials/token-sys.font.sans.json +35 -0
- package/dist/materials/token-sys.layer.base.json +31 -0
- package/dist/materials/token-sys.layer.modal.json +31 -0
- package/dist/materials/token-sys.layer.popover.json +31 -0
- package/dist/materials/token-sys.layer.sticky.json +31 -0
- package/dist/materials/token-sys.layer.toast.json +31 -0
- package/dist/materials/token-sys.motion.distance-panel.json +36 -0
- package/dist/materials/token-sys.motion.distance-small.json +36 -0
- package/dist/materials/token-sys.motion.duration-enter.json +36 -0
- package/dist/materials/token-sys.motion.duration-exit.json +36 -0
- package/dist/materials/token-sys.motion.duration-fast.json +34 -0
- package/dist/materials/token-sys.motion.duration-layer.json +36 -0
- package/dist/materials/token-sys.motion.duration-loop.json +36 -0
- package/dist/materials/token-sys.motion.duration-normal.json +34 -0
- package/dist/materials/token-sys.motion.duration-press.json +36 -0
- package/dist/materials/token-sys.motion.duration-reduced.json +34 -0
- package/dist/materials/token-sys.motion.easing-enter.json +38 -0
- package/dist/materials/token-sys.motion.easing-exit.json +38 -0
- package/dist/materials/token-sys.motion.easing.json +36 -0
- package/dist/materials/token-sys.radius.action.json +34 -0
- package/dist/materials/token-sys.radius.block.json +34 -0
- package/dist/materials/token-sys.radius.field.json +34 -0
- package/dist/materials/token-sys.radius.indicator.json +34 -0
- package/dist/materials/token-sys.radius.surface.json +34 -0
- package/dist/materials/token-sys.scrollbar.inset.json +34 -0
- package/dist/materials/token-sys.scrollbar.min-thumb.json +34 -0
- package/dist/materials/token-sys.scrollbar.size.json +34 -0
- package/dist/materials/token-sys.size.choice.json +34 -0
- package/dist/materials/token-sys.size.container.lg.json +37 -0
- package/dist/materials/token-sys.size.container.md.json +37 -0
- package/dist/materials/token-sys.size.container.sm.json +37 -0
- package/dist/materials/token-sys.size.grid.min-item.json +37 -0
- package/dist/materials/token-sys.size.indicator.lg.json +34 -0
- package/dist/materials/token-sys.size.indicator.md.json +34 -0
- package/dist/materials/token-sys.size.indicator.sm.json +34 -0
- package/dist/materials/token-sys.size.keycap.lg.json +34 -0
- package/dist/materials/token-sys.size.keycap.md.json +34 -0
- package/dist/materials/token-sys.size.keycap.sm.json +34 -0
- package/dist/materials/token-sys.size.switch-height.json +34 -0
- package/dist/materials/token-sys.size.switch-thumb.json +34 -0
- package/dist/materials/token-sys.size.switch-width.json +34 -0
- package/dist/materials/token-sys.size.touch.json +34 -0
- package/dist/materials/token-sys.space.0.json +34 -0
- package/dist/materials/token-sys.space.1.json +34 -0
- package/dist/materials/token-sys.space.12.json +34 -0
- package/dist/materials/token-sys.space.2.json +34 -0
- package/dist/materials/token-sys.space.3.json +34 -0
- package/dist/materials/token-sys.space.4.json +34 -0
- package/dist/materials/token-sys.space.6.json +34 -0
- package/dist/materials/token-sys.space.8.json +34 -0
- package/dist/materials/token-sys.stroke.width.json +34 -0
- package/dist/materials/token-sys.type.body.line-height.json +31 -0
- package/dist/materials/token-sys.type.body.size.json +34 -0
- package/dist/materials/token-sys.type.body.tracking.json +34 -0
- package/dist/materials/token-sys.type.body.weight.json +31 -0
- package/dist/materials/token-sys.type.compact.line-height.json +31 -0
- package/dist/materials/token-sys.type.compact.size.json +34 -0
- package/dist/materials/token-sys.type.compact.tracking.json +34 -0
- package/dist/materials/token-sys.type.compact.weight.json +31 -0
- package/dist/materials/token-sys.type.control.line-height.json +31 -0
- package/dist/materials/token-sys.type.control.size.json +34 -0
- package/dist/materials/token-sys.type.control.tracking.json +34 -0
- package/dist/materials/token-sys.type.control.weight.json +31 -0
- package/dist/materials/token-sys.type.dialog-title.line-height.json +33 -0
- package/dist/materials/token-sys.type.dialog-title.size.json +36 -0
- package/dist/materials/token-sys.type.dialog-title.tracking.json +36 -0
- package/dist/materials/token-sys.type.dialog-title.weight.json +33 -0
- package/dist/materials/token-sys.type.display.line-height.json +31 -0
- package/dist/materials/token-sys.type.display.size.json +34 -0
- package/dist/materials/token-sys.type.display.tracking.json +34 -0
- package/dist/materials/token-sys.type.display.weight.json +31 -0
- package/dist/materials/token-sys.type.field-label.line-height.json +33 -0
- package/dist/materials/token-sys.type.field-label.size.json +36 -0
- package/dist/materials/token-sys.type.field-label.tracking.json +36 -0
- package/dist/materials/token-sys.type.field-label.weight.json +33 -0
- package/dist/materials/token-sys.type.group-title.line-height.json +33 -0
- package/dist/materials/token-sys.type.group-title.size.json +36 -0
- package/dist/materials/token-sys.type.group-title.tracking.json +36 -0
- package/dist/materials/token-sys.type.group-title.weight.json +33 -0
- package/dist/materials/token-sys.type.helper.line-height.json +31 -0
- package/dist/materials/token-sys.type.helper.size.json +34 -0
- package/dist/materials/token-sys.type.helper.tracking.json +34 -0
- package/dist/materials/token-sys.type.helper.weight.json +31 -0
- package/dist/materials/token-sys.type.label.line-height.json +31 -0
- package/dist/materials/token-sys.type.label.size.json +34 -0
- package/dist/materials/token-sys.type.label.tracking.json +34 -0
- package/dist/materials/token-sys.type.label.weight.json +31 -0
- package/dist/materials/token-sys.type.large.line-height.json +31 -0
- package/dist/materials/token-sys.type.large.size.json +34 -0
- package/dist/materials/token-sys.type.large.tracking.json +34 -0
- package/dist/materials/token-sys.type.large.weight.json +31 -0
- package/dist/materials/token-sys.type.lead.line-height.json +31 -0
- package/dist/materials/token-sys.type.lead.size.json +34 -0
- package/dist/materials/token-sys.type.lead.tracking.json +34 -0
- package/dist/materials/token-sys.type.lead.weight.json +31 -0
- package/dist/materials/token-sys.type.page.line-height.json +31 -0
- package/dist/materials/token-sys.type.page.size.json +34 -0
- package/dist/materials/token-sys.type.page.tracking.json +34 -0
- package/dist/materials/token-sys.type.page.weight.json +31 -0
- package/dist/materials/token-sys.type.section.line-height.json +31 -0
- package/dist/materials/token-sys.type.section.size.json +34 -0
- package/dist/materials/token-sys.type.section.tracking.json +34 -0
- package/dist/materials/token-sys.type.section.weight.json +31 -0
- package/knowledge.json +522 -0
- package/lib/index.d.ts +33 -0
- package/lib/index.mjs +144 -0
- package/lib/inspect.d.ts +12 -0
- package/lib/inspect.mjs +187 -0
- package/manifest.json +51 -1
- package/package.json +13 -1
- package/references/component-families.md +146 -0
- package/references/composition.md +4 -4
- package/references/customization.md +14 -0
- package/references/flood-composition/SKILL.md +34 -0
- package/references/flood-data-display/SKILL.md +149 -0
- package/references/flood-feedback/SKILL.md +49 -3
- package/references/flood-forms/SKILL.md +82 -2
- package/references/flood-foundations/SKILL.md +43 -0
- package/references/flood-hierarchy/SKILL.md +103 -0
- package/references/flood-interface-content/SKILL.md +163 -0
- package/references/flood-motion/SKILL.md +44 -0
- package/references/flood-navigation/SKILL.md +195 -0
- package/references/flood-overlays/SKILL.md +42 -0
- package/references/flood-records/SKILL.md +148 -0
- package/references/flood-spacing/SKILL.md +54 -0
- package/references/flood-verification/SKILL.md +72 -0
- package/references/interface-content-examples.md +51 -0
- package/references/knowledge.md +49 -0
- package/references/record-decisions.md +25 -0
- package/references/rendered-review.md +102 -0
- package/references/routing.md +1 -0
- package/references/spacing.md +30 -0
- package/rules.json +242 -6
- package/workflows.json +171 -10
|
@@ -7,12 +7,19 @@ description: Diagnose Flood spacing, density, nested radii and alignment from re
|
|
|
7
7
|
|
|
8
8
|
Read the [spacing reference](../spacing.md), installed component anatomy and
|
|
9
9
|
host content requirements. Existing user-approved geometry governs the task.
|
|
10
|
+
Use the [visible spacing review](../spacing.md#judge-the-space-you-can-see)
|
|
11
|
+
when a rendered relationship feels crowded or loose despite matching tokens.
|
|
10
12
|
|
|
11
13
|
Identify what a gap separates: indicator/text, title/description, related choices,
|
|
12
14
|
independent actions, sections, or nested surfaces. Do not propagate one gap to
|
|
13
15
|
every wrapper. Stack and Inline organize relationships; component padding and
|
|
14
16
|
line height still contribute to the visible distance.
|
|
15
17
|
|
|
18
|
+
Named fields use space-1 between label and control. This inner association
|
|
19
|
+
is distinct from the parent gap between fields: use the
|
|
20
|
+
[hierarchy workflow](../flood-hierarchy/SKILL.md) for task/group/field rhythm.
|
|
21
|
+
Do not stack a host spacer on top of the Dialog-owned body inset.
|
|
22
|
+
|
|
16
23
|
## Find the owner
|
|
17
24
|
|
|
18
25
|
Inspect bounding rectangles plus computed padding, margin, gap, minimum height
|
|
@@ -27,10 +34,52 @@ For a nested surface, compare its radius with the outer radius minus the actual
|
|
|
27
34
|
inset/stroke. Do not force unrelated actions to follow that formula. Compare
|
|
28
35
|
top/bottom and start/end insets around a nested InputGroup action optically.
|
|
29
36
|
|
|
37
|
+
Rounded cards need a content-safe inset as well as compatible nested radii.
|
|
38
|
+
Inspect the nearest curved edge around corner text and icons, not only distance
|
|
39
|
+
from the rectangular bounding box. Use supported surface padding and radius
|
|
40
|
+
choices together; increase the inset or reduce the radius when corners look
|
|
41
|
+
crowded. Do not impose a universal padding-equals-radius formula on all cards.
|
|
42
|
+
|
|
43
|
+
Give sibling sections an explicit parent-owned gap. An optional summary, message
|
|
44
|
+
or toolbar must not be the only source of separation between its neighbours.
|
|
45
|
+
For split panes, the full-height divider belongs to the stretching layout owner;
|
|
46
|
+
a shorter sticky or scrolling child must not determine the divider's length.
|
|
47
|
+
|
|
30
48
|
Distinguish a real component from its preview scene. Fixed preview height and
|
|
31
49
|
reserved feedback space can prevent a demo from jumping; they should not impose
|
|
32
50
|
an empty message row or fixed height on every production field.
|
|
33
51
|
|
|
52
|
+
## Establish shared alignment tracks
|
|
53
|
+
|
|
54
|
+
Before composing repeated rows, define the logical start inset, leading glyph
|
|
55
|
+
column, text start and trailing action center. Header, group label, body rows and
|
|
56
|
+
footer that belong to one navigation/record surface must inherit those tracks;
|
|
57
|
+
independent local padding on every row is not a shared grid. Reserve a missing
|
|
58
|
+
icon column when peer rows have icons. Align badges and disclosure controls by
|
|
59
|
+
their centers even when their visible shapes and hit areas differ.
|
|
60
|
+
|
|
61
|
+
Nested content needs a deliberate rule: an iconless child can begin on its
|
|
62
|
+
parent's text track; a deeper hierarchy may have another consistent indent.
|
|
63
|
+
Do not let a child start between the parent icon and label merely because a
|
|
64
|
+
generic padding token happened to fit. Larger brand art is an intentional size
|
|
65
|
+
exception, not permission to move its label off the shared text track.
|
|
66
|
+
|
|
67
|
+
Keep alignment stable when a scrollbar appears. Budget its clearance once at the
|
|
68
|
+
surface owner; use existing edge spacing when it safely contains the track rather
|
|
69
|
+
than adding a permanent empty column to every slot. Sidebar uses that edge lane.
|
|
70
|
+
Generic ScrollArea still needs contentInset="scrollbar" when content would reach
|
|
71
|
+
under its track. Do not disable that protection globally.
|
|
72
|
+
Compare outer start/end clearance against the actual container in both expanded
|
|
73
|
+
and compact states. Center an icon-only rail against the full rail, not the
|
|
74
|
+
remainder after a one-sided gutter. A scrollbar appearing must not shift body
|
|
75
|
+
tracks relative to the fixed header/footer. Full-viewport workspaces without
|
|
76
|
+
document overflow must not reserve a document scrollbar strip.
|
|
77
|
+
Test expanded/compact, missing icons, badges/disclosures, long labels, RTL and
|
|
78
|
+
enlarged text. Measure rendered glyph centers, text starts and action centers
|
|
79
|
+
across distant rows; include the header and footer. Correct the owning primitive
|
|
80
|
+
or parent track instead of adding per-item offsets, transforms or replacement UI.
|
|
81
|
+
A build, equal row height or zero overflow does not prove these axes align.
|
|
82
|
+
|
|
34
83
|
## Evidence
|
|
35
84
|
|
|
36
85
|
Check short/wrapping labels, optional descriptions/messages/actions, all relevant
|
|
@@ -44,3 +93,8 @@ remaining copy width and body height after padding, title/description, fixed
|
|
|
44
93
|
actions and scrollbar space. A thin scrolling slot or words broken into fragments
|
|
45
94
|
is a failure even when every rectangle technically fits. Correct the owning
|
|
46
95
|
container's responsive budget without shrinking the user's enlarged text.
|
|
96
|
+
For settings and detail drawers, measure title-to-description,
|
|
97
|
+
description-to-body, and the pitch between visible controls independently.
|
|
98
|
+
An optional description should sit in the header slot. Separate that group
|
|
99
|
+
from the body with more space than the gap inside it. For repeated switches,
|
|
100
|
+
count their existing hit-area height before adding row gaps.
|
|
@@ -11,34 +11,106 @@ rule IDs; it is an index of guidance, not an automatic pass/fail policy engine.
|
|
|
11
11
|
|
|
12
12
|
## Bound the coverage
|
|
13
13
|
|
|
14
|
+
Run the screen's task trace with real interactions. Check the starting state,
|
|
15
|
+
the accepted result and a relevant refusal or empty result. After rejection,
|
|
16
|
+
verify that the user can find the correction, keep their input and try again.
|
|
17
|
+
After success, inspect the updated data and the next focus target. For read-only
|
|
18
|
+
screens, use a reachable navigation or recovery path where one applies.
|
|
19
|
+
|
|
14
20
|
Record the affected primitive, its real consumers, supported states and ownership.
|
|
15
21
|
Mark an inapplicable check with a reason rather than forcing keyboard behavior
|
|
16
22
|
onto decoration or readOnly onto every control. Distinguish existing test coverage
|
|
17
23
|
from checks actually run for this source revision.
|
|
18
24
|
|
|
25
|
+
Honor the task's declared evaluation scope. A desktop-only test host does not
|
|
26
|
+
require new mobile product work. Record excluded targets instead of quietly
|
|
27
|
+
expanding the task. When visible copy changes, apply the
|
|
28
|
+
[interface content workflow](../flood-interface-content/SKILL.md); type checks
|
|
29
|
+
and screenshots alone do not establish that its wording is necessary or accurate.
|
|
30
|
+
Desktop-only scope still includes enlarged text in the desktop viewport. Do not
|
|
31
|
+
freeze the whole application behind a rem-based minimum width and call resulting
|
|
32
|
+
page overflow a mobile limitation. Keep dense table overflow in its local owner
|
|
33
|
+
and let the surrounding desktop form use its available width.
|
|
34
|
+
For the Flood desktop baseline, include a 1280px viewport with a 24px root font
|
|
35
|
+
(150% of the usual 16px default), alongside normal 1280/1440px views. Testing only
|
|
36
|
+
20px does not cover that target. This is a text-enlargement check, not a request
|
|
37
|
+
to implement a mobile product. Report any deliberate host-specific exclusion.
|
|
38
|
+
|
|
19
39
|
Check the public contract at the boundary: installed exports/types, actual form
|
|
20
40
|
values, controlled acceptance/refusal, reset, names/focus and semantic state. For
|
|
21
41
|
visual changes inspect rendered geometry, long/optional content, narrow/wide,
|
|
22
42
|
enlarged text and the relevant pointer/RTL/forced-color modes. A CSS declaration
|
|
23
43
|
or component count is not evidence that the user-visible relationship works.
|
|
24
44
|
|
|
45
|
+
Check that key controls have usable visible space. For search, read the
|
|
46
|
+
placeholder and enter a realistic query at each relevant layout breakpoint.
|
|
47
|
+
Inspect the field and text area width, including when a clear action appears.
|
|
48
|
+
Check computed layout if a host class changes an existing layout primitive.
|
|
49
|
+
|
|
25
50
|
For geometry and screenshots, wait for fonts, pending animations and a settled
|
|
26
51
|
rendering frame. A zero running-animation count alone may precede final
|
|
27
52
|
presentation. Preserve real motion and strict geometry tolerances; distinguish
|
|
28
53
|
an entry frame from the final layout rather than accepting either as proof.
|
|
29
54
|
|
|
55
|
+
For a spacing or typography decision, keep two settled renders of the same
|
|
56
|
+
state and compare them at the working size. State which visible relationship
|
|
57
|
+
improved and use measurements to explain why. Test enlarged text separately
|
|
58
|
+
from the user's line, paragraph, letter and word spacing overrides.
|
|
59
|
+
|
|
30
60
|
During local iteration run focused checks and show the result promptly. A shared
|
|
31
61
|
primitive correction also checks its consumers. At a consolidated Flood source
|
|
32
62
|
candidate run npm run verify and the required applicable browser matrix; use the
|
|
33
63
|
host's equivalent gates in a consuming app. Do not continually repeat a full
|
|
34
64
|
release gate for every reversible visual adjustment.
|
|
35
65
|
|
|
66
|
+
When hierarchy changes, apply the [hierarchy workflow](../flood-hierarchy/SKILL.md)
|
|
67
|
+
and compare actual title/group/label roles and corresponding control edges. A
|
|
68
|
+
zero-overflow or zero-inspector result alone does not establish those relations.
|
|
69
|
+
|
|
70
|
+
For record composition, apply the [records workflow](../flood-records/SKILL.md):
|
|
71
|
+
compare several varied rows, their copy width and scan positions, then review the
|
|
72
|
+
detail and empty/filter states. Passing an overflow check or presenting valid
|
|
73
|
+
metadata is not evidence that all those values belong at the same visual level.
|
|
74
|
+
When the same table has a view selector, use the keyboard to change its value.
|
|
75
|
+
Verify the selected state, matching rows, surviving query and focus. Read the
|
|
76
|
+
shell, toolbar, list and opened detail together and record one concrete decision
|
|
77
|
+
about repeated copy or metadata in the verification notes.
|
|
78
|
+
|
|
36
79
|
## Report a usable result
|
|
37
80
|
|
|
81
|
+
Use the [rendered review observer](../rendered-review.md) when local browser
|
|
82
|
+
tooling is available. Inspect findings and exceptions, then review hierarchy and
|
|
83
|
+
copy separately; no findings is not an editorial or visual-quality pass.
|
|
84
|
+
Review host JSX/CSS with inspectSourceUI from that entry too, then resolve the
|
|
85
|
+
actual owner at each candidate location. Include layout and cancel/confirmation
|
|
86
|
+
paths, not just fields. A native browser dialog can be absent from a DOM snapshot;
|
|
87
|
+
trigger its path. If a custom layout duplicates Grid, use the installed owner
|
|
88
|
+
instead of silencing a finding or declaring a missing capability without checking.
|
|
89
|
+
|
|
90
|
+
Keep a small coverage inventory outside the interface: route/view, visible state,
|
|
91
|
+
copy decision, geometry check and unverified limits. Review the initial/empty
|
|
92
|
+
surface before adding records, the populated surface, editor, preview and actual
|
|
93
|
+
error/recovery surfaces where present. Running the observer only in the editor
|
|
94
|
+
or an open popup leaves the other views unreviewed. Never extend a zero-findings
|
|
95
|
+
claim to states that were not inspected. Review optional empty-state descriptions
|
|
96
|
+
against the visible primary action too; they do not automatically need an
|
|
97
|
+
instruction restating that action.
|
|
98
|
+
For a newly composed screen, check two outcomes separately from build success:
|
|
99
|
+
the visible roles use the owners chosen from the installed catalog, and supporting
|
|
100
|
+
copy adds necessary information. Open the real date/selection popup to verify
|
|
101
|
+
that a native browser control was not mistaken for a Flood component. Inspect
|
|
102
|
+
mixed editable table rows, not only overflow. Report skipped applicable workflows
|
|
103
|
+
or unverified owner choices instead of treating a list of imports as proof.
|
|
104
|
+
|
|
38
105
|
For a failure preserve the source revision, affected state and actual trace or
|
|
39
106
|
measurement; distinguish library, host recipe, assertion and infrastructure causes.
|
|
40
107
|
Correct the responsible owner without weakening a meaningful assertion to get
|
|
41
108
|
green. Add regression coverage for demonstrated risks rather than mirroring CSS.
|
|
109
|
+
After exercising a failure, verify its exit paths as well as retry: explicitly
|
|
110
|
+
discard the affected draft, return to the list and open a saved record. Check that
|
|
111
|
+
record-scoped feedback ends with its operation while global unresolved failures
|
|
112
|
+
remain correctly represented. A screenshot of the error alone does not verify
|
|
113
|
+
its lifecycle; apply the feedback workflow.
|
|
42
114
|
|
|
43
115
|
State what ran, results, manual observations and remaining limits. A source scan,
|
|
44
116
|
agent instruction, screenshot or accessibility scanner cannot independently prove
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Interface content decisions
|
|
2
|
+
|
|
3
|
+
These examples explain context, not a forbidden-word list or fixed word budget.
|
|
4
|
+
Keep the user's language, task and domain vocabulary.
|
|
5
|
+
|
|
6
|
+
| Situation | Decision | Reason |
|
|
7
|
+
| --- | --- | --- |
|
|
8
|
+
| Invoice list begins with “DOCUMENTS”, “Invoices”, and “Create, check and save invoices in one place” | Keep the page title; remove the other layers unless one makes a real distinction | The repeated explanation adds no decision |
|
|
9
|
+
| The same heading pattern introduces documents from several departments | Keep a category or breadcrumb when it identifies that scope | Similar words can supply different navigation context |
|
|
10
|
+
| Invoice preview ends with “Selectable PDF text · embedded font” | Remove from the ordinary preview; describe it in export documentation if needed | Rendering details do not help edit the invoice |
|
|
11
|
+
| Export-format chooser compares scanned images with selectable text | Keep the meaningful format distinction beside the choices | It changes the export decision |
|
|
12
|
+
| Sidebar card says “Your documents, in your browser. Work without signup” | Remove promotional framing from a working editor | The sidebar is for destinations, not a product pitch |
|
|
13
|
+
| Clearing browser data would delete the only editable copy | Explain the consequence at the relevant storage/clearing decision | Concision must not conceal a loss of data |
|
|
14
|
+
| An ordinary record list permanently says “Stored only in this browser. Clearing site data deletes it” | Remove the standing caption; keep storage limits in documentation/help | No storage or clearing decision is being made on this screen |
|
|
15
|
+
| The user invokes “Clear saved records” | Keep the deletion consequence in that confirmation | The fact now changes an immediate decision; it is not interface narration |
|
|
16
|
+
| Every field has “Enter…” beneath its visible label | Remove repeated instructions; keep useful format or unit guidance | A required label is not an explanation slot to fill |
|
|
17
|
+
| “Tax included” changes the total without adding tax | Keep the choice and a needed distinction from “Add tax” | Similar short labels can conceal materially different calculations |
|
|
18
|
+
| “Something went wrong. Please try again” appears after storage is full | Name the failed save and a supported recovery action | The next step must fit the actual cause |
|
|
19
|
+
| “Verified and sent” appears after local syntax validation | Replace with the completed operation, such as “Invoice prepared” | Validation is not expert verification or delivery |
|
|
20
|
+
| Empty search says “Welcome! Start your journey…” | State that there are no matches and offer a relevant reset | The collection already exists; this is a filtered result |
|
|
21
|
+
| A test host repeatedly explains that its records are samples | Remove redundant disclaimers when the test context is already established | Test provenance can live in the test brief |
|
|
22
|
+
| An explicitly requested local prototype has a permanent Demo badge in its sidebar | Remove the badge and its otherwise empty wrapper; retain provenance in README/test handoff | Development context is not an operational state or decision |
|
|
23
|
+
| A working interface switches between simulated output and real external effects | Keep an accurate distinction at the choice or affected action, if this capability exists | The environment changes what the action does; do not invent a mode solely to justify a label |
|
|
24
|
+
| A record is Draft or a camera is Offline inside a prototype | Keep the meaningful record state | Removing prototype narration is not permission to strip operational information |
|
|
25
|
+
| A mixed production list includes sample records that could be mistaken for real ones | Keep a clear sample distinction on the affected records | It prevents a concrete misunderstanding |
|
|
26
|
+
| A printed invoice has a document title, number and party headings | Keep the meaningful document hierarchy | A document is not the application's decorative page header |
|
|
27
|
+
| An approval queue has a task title, an instruction to review the queue, and a workspace label that adds no scope | Keep the task title and remove the redundant supporting copy | The title, rows and available decisions already describe the task |
|
|
28
|
+
| The selected filter says “Reviewed 4” and the footer says “1–4 of 4” in an unpaginated list | Keep one count if useful; check both again when search or pagination changes their meaning | A total for all reviewed records and a range in the current results can serve different decisions |
|
|
29
|
+
| The detail pane repeats “3 receipts attached” beside three visible receipt rows | Omit the routine caption; surface a missing receipt when it affects approval | The ordinary state is visible, and the exception changes the decision |
|
|
30
|
+
| The page shows a queue-wide amount and the open record's amount | Keep short labels distinguishing the amounts | Nearby values alone cannot identify their scope |
|
|
31
|
+
|
|
32
|
+
## Contextual adaptation
|
|
33
|
+
|
|
34
|
+
A bill-processing reference may group records by draft, approval and payment.
|
|
35
|
+
An invoice generator with local draft/ready/archive state can reuse the idea of
|
|
36
|
+
state-based navigation. It cannot truthfully adopt “For payment”, an approval
|
|
37
|
+
queue or an OCR promise without implementing those capabilities.
|
|
38
|
+
|
|
39
|
+
Choose the host's action vocabulary deliberately. In a Russian invoice editor,
|
|
40
|
+
“Скачать PDF” names an export and “Подготовить счёт” names a readiness action.
|
|
41
|
+
“Готово” is ambiguous when the same toolbar can save, export, approve or send.
|
|
42
|
+
In a simple selection dialog, “Готово” may be sufficient. Do not apply one label
|
|
43
|
+
universally or translate English word order mechanically.
|
|
44
|
+
|
|
45
|
+
## A bounded review
|
|
46
|
+
|
|
47
|
+
For an interface-writing task, inspect the supplied surface and state the user's
|
|
48
|
+
task. Identify high-value decisions rather than reporting a count of deleted
|
|
49
|
+
words. Preserve one necessary constraint/error/consequence while removing nearby
|
|
50
|
+
filler. Check the affected action after editing. A smaller DOM or a green phrase
|
|
51
|
+
scan is not proof that the result is understandable.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Discover the matching Flood knowledge
|
|
2
|
+
|
|
3
|
+
Read host instructions first. Use the CLI matching flood.json.version; a newer
|
|
4
|
+
website or CLI must not silently supply APIs to an older project. `info` reports
|
|
5
|
+
the package/configuration/guide versions and explicit capability gaps. A
|
|
6
|
+
bundle-only result describes that CLI bundle, not an installed application.
|
|
7
|
+
|
|
8
|
+
`catalog` lists names, descriptions, stable IDs and groups without reading all
|
|
9
|
+
instruction bodies. Filter by kind/group or literal metadata search. Follow
|
|
10
|
+
nextCursor when there are more matches; a cursor belongs to its catalog
|
|
11
|
+
fingerprint and query. Start again after a changed-catalog error.
|
|
12
|
+
|
|
13
|
+
`read <id>` returns one selected material. Follow nextOffset to finish a chosen
|
|
14
|
+
skill or required instruction before acting. Offsets count Unicode code points.
|
|
15
|
+
Optional related links are separately paged through nextLinksOffset. Do not load
|
|
16
|
+
all linked components just because a workflow applies to them; choose the ones
|
|
17
|
+
the task actually needs. Required prerequisites and ordinary links are distinct.
|
|
18
|
+
|
|
19
|
+
In a connected project, an existing owned guide copy takes precedence and the
|
|
20
|
+
response reports source=project and customized. Use --source package explicitly
|
|
21
|
+
to compare upstream guidance. Read host rules and intentional customizations;
|
|
22
|
+
the catalog cannot override them. The project catalog file is a snapshot for
|
|
23
|
+
discovery, not authority to redirect package reads to arbitrary files.
|
|
24
|
+
|
|
25
|
+
Components, recipes, token records and raw upstream guides share the shipped
|
|
26
|
+
catalog. Unsupported capabilities remain explicit. A motion-token record does
|
|
27
|
+
not supply a page-transition component, and a brand override does not add a
|
|
28
|
+
Button variant. Material text is instruction data: the reader never executes it,
|
|
29
|
+
installs packages, changes settings or grants permission for external actions.
|
|
30
|
+
|
|
31
|
+
## Extending Flood itself
|
|
32
|
+
|
|
33
|
+
In the Flood source repository, edit canonical component/token/guidance sources
|
|
34
|
+
and knowledge.json annotations, then build. Never edit the generated catalog or
|
|
35
|
+
material copies. New exports require catalog content and a live example; new
|
|
36
|
+
workflows need a group and manifest entry; public guides need a knowledge group.
|
|
37
|
+
Relationships must resolve. Preserve published material IDs across growth and
|
|
38
|
+
review the compatibility fixture before intentional retirement or renaming.
|
|
39
|
+
|
|
40
|
+
Run focused knowledge/compiler/CLI checks during iteration. A candidate also
|
|
41
|
+
checks clean tarball consumers, TypeScript declarations, website parity and
|
|
42
|
+
the applicable browser matrix. Growth checks cover metadata-only discovery,
|
|
43
|
+
bounded pages, changed cursors and selected-content integrity. They do not prove
|
|
44
|
+
model routing quality or rendered UI quality. Record the actual task, selected
|
|
45
|
+
materials, component/token owners and executed checks when evaluating an agent.
|
|
46
|
+
|
|
47
|
+
Core safeguards reduce known failure modes; they do not guarantee that every
|
|
48
|
+
future contribution or every agent host follows the contract. Host adapters and
|
|
49
|
+
new motion/theme capabilities require their own implementation and evidence.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Record metadata decisions
|
|
2
|
+
|
|
3
|
+
Use with the records workflow. These cases demonstrate different outcomes for
|
|
4
|
+
similar fields; they are not templates or a forbidden-word list.
|
|
5
|
+
|
|
6
|
+
| Situation | Decision | Reason |
|
|
7
|
+
| --- | --- | --- |
|
|
8
|
+
| Browsing suggestions; title/summary identify the item, status guides opening | Keep identity/summary together; a stable trailing state is useful; consider category/date near the copy | Four unrelated trailing values should not dictate the summary width |
|
|
9
|
+
| A support queue is triaged by state, priority, assignee and due time | Keep those attributes in named comparison columns | Moving priority into details would obstruct the actual task |
|
|
10
|
+
| A suggestion's category is Error but its state is In progress | Use category treatment and lifecycle StatusIndicator; name category in ambiguous details | Classification is not a failed save or error announcement |
|
|
11
|
+
| A low-priority item and high-priority item have the same state | Preserve priority if comparing urgency matters; accent only the meaningful distinction | Urgency and lifecycle are separate dimensions, not competing dots |
|
|
12
|
+
| A file list must compare format, size and transfer progress | Reuse FileMeta, StatusIndicator and Progress within the file owners | Generic text or a row of handmade chips would duplicate existing primitives |
|
|
13
|
+
| An invoice register is used to compare due amounts and payment states | Use named columns, retain units and relevant dates | These fields are core comparisons rather than optional decoration |
|
|
14
|
+
| Created and updated render the same day in a casual browsing detail | Consider one date if the second event adds no decision value | A short screen need not repeat equivalent visible information |
|
|
15
|
+
| An audit detail needs exact creation and modification times on the same day | Keep both named events with sufficient precision/timezone context | Equal formatted dates do not establish identical events |
|
|
16
|
+
| A first-use collection has an empty-state title and a visible create action | Omit a redundant zero counter unless another task needs it | Repeating emptiness does not help the next action |
|
|
17
|
+
| Filters reduce an existing collection to zero | Show the no-results state and a relevant reset; preserve needed result announcements | This is a recoverable query state, not first-use onboarding |
|
|
18
|
+
| Several short records align in an example but long statuses shift other values | Establish shared columns or change the record composition | Equal Inline gaps do not create common scan positions |
|
|
19
|
+
| An inspector flags a priority/date as unowned supporting copy | Evaluate its selection, triage or history purpose | Neither automatic removal nor semantic wrappers prove useful content |
|
|
20
|
+
|
|
21
|
+
A compact browsing row might place category and recency with its copy and keep
|
|
22
|
+
one state at the trailing edge. A comparison table may need several such attributes
|
|
23
|
+
visible together. Decide from the task before choosing presentation. Do not fix
|
|
24
|
+
crowding by hiding a required field, replacing Flood components or modifying user
|
|
25
|
+
record content. Record these choices in development notes, not as extra UI captions.
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# Review the rendered interface
|
|
2
|
+
|
|
3
|
+
The optional `@flood-md/agent/inspect` export provides a self-contained, read-only
|
|
4
|
+
DOM observer for local browser tooling. It is separate from the Node knowledge
|
|
5
|
+
reader and is not an application dependency or an automatic policy engine.
|
|
6
|
+
|
|
7
|
+
With Playwright running against your local host:
|
|
8
|
+
|
|
9
|
+
```js
|
|
10
|
+
import {inspectRenderedUI} from '@flood-md/agent/inspect';
|
|
11
|
+
await page.evaluate(() => document.fonts.ready);
|
|
12
|
+
const observations = await page.evaluate(inspectRenderedUI, {});
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Before accepting owner selection, also review host-owned source with
|
|
16
|
+
`inspectSourceUI` from the same entry:
|
|
17
|
+
|
|
18
|
+
```js
|
|
19
|
+
import {inspectSourceUI} from '@flood-md/agent/inspect';
|
|
20
|
+
const jsxReview = inspectSourceUI(jsxText);
|
|
21
|
+
const cssReview = inspectSourceUI(cssText, {format: 'css'});
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
The caller supplies local text; the function performs no file access, execution
|
|
25
|
+
or network requests. It points at native dialog calls, selected raw JSX controls
|
|
26
|
+
and custom grid/flex layout declarations for owner review. Read each source
|
|
27
|
+
location: comments, strings, examples and legitimate shell CSS can match, while
|
|
28
|
+
aliases, dynamic types and indirect calls can be missed. This is not an AST,
|
|
29
|
+
import audit or automatic ban. Use it on host source, not the implementation of
|
|
30
|
+
Flood itself. Inputs are limited to 500000 UTF-16 units and maxFindings defaults
|
|
31
|
+
to 50 (maximum 500); split larger files deliberately. Retain contextual decisions
|
|
32
|
+
outside the product. An empty result does not establish component reuse.
|
|
33
|
+
Rem-based min-width/min-inline-size declarations are also surfaced for review:
|
|
34
|
+
a local dense table can need one, while a whole-page floor can defeat enlarged
|
|
35
|
+
text. Confirm the selector and actual 24px-root desktop geometry.
|
|
36
|
+
|
|
37
|
+
Inspect representative pages and actual interaction states, including a populated
|
|
38
|
+
editable row and an open date/selection popup. Set rootSelector only when that
|
|
39
|
+
scope is intended; a popup portalled elsewhere will then be excluded. The function
|
|
40
|
+
does not open controls or wait for layout on your behalf. It traverses the current
|
|
41
|
+
document, not iframes or shadow roots. It performs no network requests or writes.
|
|
42
|
+
Keep reports local: labels and copy inventories may contain the host's user data.
|
|
43
|
+
|
|
44
|
+
For a visual layout change, compare screenshots of the same content, viewport
|
|
45
|
+
and settled state. Name what should stand out and which elements should read
|
|
46
|
+
together. Use measured boxes to explain the difference. The observer cannot
|
|
47
|
+
judge painted glyph edges, perceived contrast or the balance of empty space.
|
|
48
|
+
|
|
49
|
+
Observations include likely text glyphs used as button icons, unslotted SVGs,
|
|
50
|
+
passive cells offset from neighbouring input centres and complete cell blocks in
|
|
51
|
+
record/action rows, supporting copy echoing a visible action label, a copy inventory
|
|
52
|
+
and field/group rectangles. They are review findings with selectors/labels and
|
|
53
|
+
measured offsets, not proof of a defect in every context. Arithmetic labels or
|
|
54
|
+
custom artwork can be intentional; explain exceptions rather than deleting data
|
|
55
|
+
to obtain an empty report. maxElements bounds each selected category (default 500,
|
|
56
|
+
maximum 2000) and the total findings list; truncated means coverage is incomplete.
|
|
57
|
+
|
|
58
|
+
forms.track-drift compares stacked multi-column form grids with the same outer
|
|
59
|
+
frame. Different gutters or track counts need review against the grouping plan;
|
|
60
|
+
some different contexts can legitimately use different tracks. Tables and nested
|
|
61
|
+
ancestor/descendant grids are excluded. It is an observable geometry check, not
|
|
62
|
+
an automatic judgement of semantic hierarchy.
|
|
63
|
+
|
|
64
|
+
forms.content-track-drift compares actual Flood field-owner rectangles across
|
|
65
|
+
stacked grids in the same form, even when nested Surface padding makes their
|
|
66
|
+
outer Grid frames differ. It requires matching overall content edges and one
|
|
67
|
+
consistent field width per track. Tables, ancestor/descendant grids and ambiguous
|
|
68
|
+
spanning arrangements are excluded; this is selected coverage, not proof that
|
|
69
|
+
all form alignment is correct. Review the reported offset in context.
|
|
70
|
+
|
|
71
|
+
copy.unowned-support asks for review of supporting text outside a field, actual
|
|
72
|
+
operation state, navigation or structured document. This intentionally includes
|
|
73
|
+
free-standing implementation captions. Potential usefulness is not a reason to
|
|
74
|
+
keep one: name the user's current decision or recovery need. Actual storage errors
|
|
75
|
+
and deletion confirmations are different contexts from a static storage footer.
|
|
76
|
+
Contextual exceptions are possible. Never change font size, ARIA roles or wrapper
|
|
77
|
+
markup just to hide a finding; review the information itself.
|
|
78
|
+
|
|
79
|
+
table.word-fragment uses Intl.Segmenter and rendered text ranges to identify
|
|
80
|
+
words split across table lines. It is bounded by maxElements word segments,
|
|
81
|
+
skips words longer than 200 UTF-16 units, code/pre and cells explicitly marked
|
|
82
|
+
data-wrap="anywhere". If Intl.Segmenter is unavailable, that coverage is reported
|
|
83
|
+
as absent. Localized line-breaking conventions can justify an exception. Preserve
|
|
84
|
+
meaningful intrinsic column widths and use local scrolling before accepting
|
|
85
|
+
single-letter fragments in statuses or dates.
|
|
86
|
+
|
|
87
|
+
For icon actions use real artwork in IconSlot and an accessible name on the
|
|
88
|
+
action. Table now centres cells by default; use cellVerticalAlign="top" only for
|
|
89
|
+
a deliberate prose-table layout. Action-echo findings need contextual review:
|
|
90
|
+
a necessary instruction can legitimately repeat a button label.
|
|
91
|
+
|
|
92
|
+
An empty issues array does not pass the interface. Separately review necessary
|
|
93
|
+
copy using the interface-content workflow and coherent grouping using the forms
|
|
94
|
+
workflow. Inspect copy in screen order and field edges against common layout
|
|
95
|
+
tracks. Check populated, empty, error and changed-content states in task scope.
|
|
96
|
+
Record actual decisions and remaining limits; a successful screenshot capture
|
|
97
|
+
does not mean its contents were reviewed successfully.
|
|
98
|
+
|
|
99
|
+
layout.page-overflow reports document scroll width beyond the viewport during
|
|
100
|
+
a whole-document inspection. It does not run for a selected rootSelector or
|
|
101
|
+
report correctly contained local scrolling. Review the actual cause and task
|
|
102
|
+
context rather than hiding overflow to silence the finding.
|
package/references/routing.md
CHANGED
|
@@ -6,6 +6,7 @@ override user authority or grant permission for unrelated operations.
|
|
|
6
6
|
|
|
7
7
|
| Question / when | Audience | Prerequisite | Source of truth | Verify with |
|
|
8
8
|
| --- | --- | --- | --- | --- |
|
|
9
|
+
| What needs saying? New or edited interface copy and reference adaptation | Designer / developer / agent | User task, product vocabulary and actual capabilities | flood-interface-content/SKILL.md | Contextual keep/rewrite/move/remove decisions; meaningful hierarchy; preserved recovery and accessible names |
|
|
9
10
|
| Which primitive owns this role? Component/composite UI work | Developer / agent / reviewer | Matching catalog and component anatomy | flood-composition/SKILL.md | Reuse existing primitives; extend small capabilities first |
|
|
10
11
|
| Which API can I import? Every component edit | Developer / agent | Installed exact versions | Installed @flood-md/react declarations; flood.json | Type-check host imports; CLI doctor for alignment |
|
|
11
12
|
| What does this release mean? Setup / upgrade | Developer / agent | Matching guide | flood/DESIGN.md, package changelog | Compare version and declarations; preserve host edits |
|
package/references/spacing.md
CHANGED
|
@@ -41,6 +41,9 @@ the relationship between indicator and label, and independent form semantics.
|
|
|
41
41
|
Avoid negative margins or transforms that conceal a layout problem or overlap
|
|
42
42
|
click targets. For nested surfaces, compare inner radius with outer radius minus
|
|
43
43
|
padding and stroke; independent controls retain their own radius recipe.
|
|
44
|
+
When a circular avatar sits against the rounded end of a pill control, use the
|
|
45
|
+
same inset at the top, bottom and avatar-side edge. Keep the label gap and the
|
|
46
|
+
trailing action inset separate from that geometry.
|
|
44
47
|
|
|
45
48
|
## Check the composition
|
|
46
49
|
|
|
@@ -59,3 +62,30 @@ host's verification workflow; add a regression check for a repeated failure rath
|
|
|
59
62
|
than a test that merely repeats a CSS declaration. Report what was measured and
|
|
60
63
|
what remains unverified. See [accessibility](accessibility.md) and
|
|
61
64
|
[verification](verification.md) for related contracts.
|
|
65
|
+
|
|
66
|
+
## Judge the space you can see
|
|
67
|
+
|
|
68
|
+
1. Name what should read together, what starts a new group, and what should
|
|
69
|
+
catch the eye first. Start with shared edges and the actual reading order.
|
|
70
|
+
2. Inspect the screen at its working size. Compare the painted edges of text,
|
|
71
|
+
icons, fills and rules as well as their layout boxes. Line boxes, internal
|
|
72
|
+
padding and hit areas already contribute space. A strong fill or divider
|
|
73
|
+
also changes how much separation the eye sees.
|
|
74
|
+
3. Compare two plausible treatments with the same content and viewport.
|
|
75
|
+
Change one lever at a time: space, measure, weight, tone or a boundary.
|
|
76
|
+
Pick the token that makes the intended grouping read clearly, then recheck
|
|
77
|
+
with the actual token applied. Keep stable alignment for repeated elements.
|
|
78
|
+
4. Compare short and wrapped content and the presence or absence of optional
|
|
79
|
+
content. Recheck narrow layouts, enlarged text and text spacing overrides.
|
|
80
|
+
Keep focus visible, hit areas usable and reading order intact.
|
|
81
|
+
|
|
82
|
+
For example, if a heading appears closer to the previous section than to its
|
|
83
|
+
own controls, inspect the heading line box and the first control's top inset
|
|
84
|
+
before increasing the section gap. If an icon looks off-center inside a
|
|
85
|
+
centered slot, compare its visible outline with a sibling icon before adjusting
|
|
86
|
+
the icon artwork. Keep the slot and click area on the shared track.
|
|
87
|
+
|
|
88
|
+
In review notes, name the visual problem, the competing treatments and the
|
|
89
|
+
reason one reads better. A passing geometry check supports that judgment.
|
|
90
|
+
For text beside an icon, inspect the actual baseline and visible glyphs,
|
|
91
|
+
including accents and wrapped labels. [CSS Inline Layout](https://www.w3.org/TR/css-inline-3/#leading-trim)
|