@flood-md/agent 0.2.8 → 0.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DESIGN.md +26 -4
- package/README.md +40 -1
- package/SKILL.md +46 -4
- package/dist/catalog.json +7136 -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-aspect-ratio.md +36 -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-button-group.md +39 -0
- package/dist/materials/component-button.md +43 -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 +40 -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 +50 -0
- package/dist/materials/component-command-list.md +48 -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 +42 -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 +58 -0
- package/dist/materials/component-date-field.md +57 -0
- package/dist/materials/component-date-picker.md +66 -0
- package/dist/materials/component-date-range-field.md +62 -0
- package/dist/materials/component-date-range-picker.md +72 -0
- package/dist/materials/component-date-time-picker.md +60 -0
- package/dist/materials/component-date-time-range-picker.md +66 -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 +50 -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-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 +41 -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-meter.md +43 -0
- package/dist/materials/component-metric.md +39 -0
- package/dist/materials/component-multi-select.md +52 -0
- package/dist/materials/component-navigation-list.md +38 -0
- package/dist/materials/component-navigation-tree.md +43 -0
- package/dist/materials/component-number-input.md +47 -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 +47 -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 +51 -0
- package/dist/materials/component-select.md +45 -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 +43 -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 +39 -0
- package/dist/materials/component-toolbar.md +42 -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 +88 -0
- package/dist/materials/guide-agents.md +96 -0
- package/dist/materials/guide-faq.md +84 -0
- package/dist/materials/guide-foundations.md +232 -0
- package/dist/materials/guide-installation.md +79 -0
- package/dist/materials/guide-interface-content.md +76 -0
- package/dist/materials/guide-introduction.md +40 -0
- package/dist/materials/guide-layout.md +193 -0
- package/dist/materials/guide-privacy.md +23 -0
- package/dist/materials/guide-project-ui.md +127 -0
- package/dist/materials/guide-skills.md +108 -0
- package/dist/materials/guide-theming.md +73 -0
- package/dist/materials/recipe-command-palette.md +66 -0
- package/dist/materials/recipe-filter-bar.md +59 -0
- package/dist/materials/recipe-form-submission.md +39 -0
- package/dist/materials/recipe-grouped-form.md +66 -0
- package/dist/materials/recipe-select-all.md +31 -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.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.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.canvas.json +39 -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.overlay.json +39 -0
- package/dist/materials/token-sys.color.surface.raised.json +39 -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.duration-fast.json +34 -0
- package/dist/materials/token-sys.motion.duration-normal.json +34 -0
- package/dist/materials/token-sys.motion.duration-reduced.json +34 -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 +409 -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 +91 -1
- package/package.json +9 -1
- package/references/flood-accessibility/SKILL.md +40 -0
- package/references/flood-composition/SKILL.md +30 -0
- package/references/flood-data-display/SKILL.md +69 -0
- package/references/flood-feedback/SKILL.md +58 -0
- package/references/flood-forms/SKILL.md +94 -0
- package/references/flood-foundations/SKILL.md +44 -0
- package/references/flood-hierarchy/SKILL.md +87 -0
- package/references/flood-interface-content/SKILL.md +142 -0
- package/references/flood-navigation/SKILL.md +35 -0
- package/references/flood-overlays/SKILL.md +52 -0
- package/references/flood-records/SKILL.md +108 -0
- package/references/flood-spacing/SKILL.md +62 -0
- package/references/flood-verification/SKILL.md +99 -0
- package/references/interface-content-examples.md +47 -0
- package/references/knowledge.md +49 -0
- package/references/record-decisions.md +25 -0
- package/references/rendered-review.md +97 -0
- package/references/routing.md +1 -0
- package/rules.json +454 -2
- package/workflows.json +152 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: flood-data-display
|
|
3
|
+
description: Assemble Flood tables, lists, cards and file records with long or changing data. Use for content hierarchy, overflow, row actions and data-state composition.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Compose meaningful data structures
|
|
7
|
+
|
|
8
|
+
Use the installed component contracts and
|
|
9
|
+
[composition workflow](../flood-composition/SKILL.md). Start with the content's
|
|
10
|
+
relationships, not a wrapper around every piece of text.
|
|
11
|
+
|
|
12
|
+
Keep visual/test fixtures separate from the host's working records unless sample
|
|
13
|
+
data is explicitly part of the task. Do not seed a new user's persisted list with
|
|
14
|
+
fictional business records just to fill a screen. Use isolated test state for
|
|
15
|
+
populated screenshots and exercise the real empty state. When samples are required, identify their provenance in the test brief/README.
|
|
16
|
+
A visible distinction is needed where it changes interpretation or action, such
|
|
17
|
+
as sample records mixed with real records. Do not automatically add a permanent
|
|
18
|
+
Demo badge to the shell of an explicitly requested isolated prototype; follow
|
|
19
|
+
the interface-content workflow for contextual placement.
|
|
20
|
+
|
|
21
|
+
- Table/DataTable preserve caption, headers, cell relationships and documented
|
|
22
|
+
sorting/selection behavior. A footer represents a summary and should be
|
|
23
|
+
visually distinguishable without relying on a heavy border everywhere.
|
|
24
|
+
- DescriptionList expresses named values; DataList/DataListItem express records.
|
|
25
|
+
Card/Section/Surface organize groups without inventing a second typography or
|
|
26
|
+
spacing system. A heading's semantic level does not prescribe its visual size.
|
|
27
|
+
- Keep row actions as named Flood Button/IconButton/Menu controls. Do not turn
|
|
28
|
+
a whole row into a competing clickable wrapper around its nested actions.
|
|
29
|
+
- FileItem/FileMeta/UploadItem and their list owners compose file presentation;
|
|
30
|
+
use their existing format/size/status/progress primitives. Selection, transport
|
|
31
|
+
and preview are separate host operations. Do not manufacture upload completion.
|
|
32
|
+
- Preserve native image alt/fallback semantics and aspect constraints. Decorative
|
|
33
|
+
artwork should not duplicate an adjacent accessible identity.
|
|
34
|
+
|
|
35
|
+
## Choose the information, not all available slots
|
|
36
|
+
|
|
37
|
+
For record lists/details, apply the [records skill](../flood-records/SKILL.md)
|
|
38
|
+
before filling metadata and actions. Identity, supporting context, lifecycle state,
|
|
39
|
+
priority and timestamps have different purposes. Use Table/DataTable when users
|
|
40
|
+
need several named comparisons; a trailing Inline of values is not a column model.
|
|
41
|
+
|
|
42
|
+
## Exercise data and geometry
|
|
43
|
+
|
|
44
|
+
Test no records, one record, long/wrapping names, absent optional media/actions,
|
|
45
|
+
loading, error/retry and selection/sorting where available. Keep error text useful
|
|
46
|
+
without inserting a second empty-state design or moving unrelated controls.
|
|
47
|
+
Align file title/metadata and status/progress by their intended row relationship;
|
|
48
|
+
do not hide a StatusIndicator dot or replace Progress with a custom track.
|
|
49
|
+
|
|
50
|
+
For an editable table, compare the centre of plain amounts and row actions with
|
|
51
|
+
the neighbouring input controls. Table centres record/action and editable rows
|
|
52
|
+
by default; opt into cellVerticalAlign="top" only for deliberate prose alignment.
|
|
53
|
+
Use the shared cellVerticalAlign contract rather than
|
|
54
|
+
moving text with transforms or overriding Input, NumberInput or Button internals.
|
|
55
|
+
Native style on an individual host-owned td/th can express an exceptional cell.
|
|
56
|
+
Do not depend on a low-specificity descendant CSS override. Check the rendered
|
|
57
|
+
centres; equal cell padding alone does not establish alignment.
|
|
58
|
+
|
|
59
|
+
Also inspect readable column widths with long neighbouring records. A centred
|
|
60
|
+
cell can still be wrong when a status or date is fragmented into single letters.
|
|
61
|
+
Table and StatusIndicator preserve word-based intrinsic width by default; keep
|
|
62
|
+
that recipe rather than applying global overflow-wrap:anywhere. Deliberate
|
|
63
|
+
technical identifier cells can opt into data-wrap="anywhere". Otherwise use
|
|
64
|
+
local scrolling or appropriate column budgets, not an empty no-overflow claim.
|
|
65
|
+
|
|
66
|
+
Use the documented local overflow owner, with a meaningful accessible name. Focus
|
|
67
|
+
the last action/cell and check that a rail or rounded corner does not cover it.
|
|
68
|
+
Compare narrow/wide, enlarged text and RTL. Locale-sensitive text in prerendered
|
|
69
|
+
examples needs consistent server/client locale to avoid hydration differences.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: flood-feedback
|
|
3
|
+
description: Choose Flood status, progress, alert, loading and empty-state feedback with honest operation state. Use for meaningful messages and announcement ownership.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Describe what actually happened
|
|
7
|
+
|
|
8
|
+
Use installed declarations and [accessibility](../accessibility.md). Assign the
|
|
9
|
+
visible role before choosing color: StatusIndicator names a state, Badge marks
|
|
10
|
+
metadata, Progress describes task progress, Meter describes a bounded measurement,
|
|
11
|
+
Alert gives contextual feedback and EmptyState explains missing content.
|
|
12
|
+
|
|
13
|
+
For several record attributes, use the [records skill](../flood-records/SKILL.md).
|
|
14
|
+
A category called Error is not a failed operation; priority is not lifecycle state.
|
|
15
|
+
Choose the semantic owner before its appearance, and keep essential triage data
|
|
16
|
+
visible even when reducing decorative emphasis.
|
|
17
|
+
|
|
18
|
+
## Keep one owner for each message
|
|
19
|
+
|
|
20
|
+
- Status text must distinguish pending, success, failure, cancellation and local
|
|
21
|
+
preview state. A callback firing or elapsed timer is not a completed backend
|
|
22
|
+
operation. Do not display a success count, upload or save that did not occur.
|
|
23
|
+
- Unknown Progress has no known percentage; Meter has no unknown state. A useful
|
|
24
|
+
label/valueText explains units when a percentage would be misleading.
|
|
25
|
+
- Alert/Toast/live-region choices depend on urgency. Keep static explanation
|
|
26
|
+
silent unless a change requires announcement; do not add multiple live regions
|
|
27
|
+
around a composite's existing announcement. Announce does not imply a visible
|
|
28
|
+
style change or guarantee speech from every assistive technology.
|
|
29
|
+
- Spinner retains a meaningful accessible label where standalone. Skeleton is
|
|
30
|
+
decoration, not another announced task. Preserve the existing reduced-motion
|
|
31
|
+
behavior without introducing a new animation system.
|
|
32
|
+
- EmptyState identifies the actual condition. A title can be enough; add a
|
|
33
|
+
description only for new decision-relevant information, not an instruction
|
|
34
|
+
repeating a visible action. Its icon/action use existing primitives.
|
|
35
|
+
|
|
36
|
+
## Scope feedback to its operation
|
|
37
|
+
|
|
38
|
+
Associate a message with the operation and record that produced it. Preserve
|
|
39
|
+
entered data after refusal and keep a useful error while that operation remains
|
|
40
|
+
unresolved. A successful retry clears/replaces its failure. Explicitly discarding
|
|
41
|
+
the draft ends that draft's save error; it must not follow the user to a list or
|
|
42
|
+
another record. Ignore late results belonging to an abandoned operation.
|
|
43
|
+
|
|
44
|
+
Do not solve this with an automatic timer inside Alert or by clearing every
|
|
45
|
+
message on navigation. A collection-wide read failure can still block editing
|
|
46
|
+
after changing views and must remain until resolved. The host's state model owns
|
|
47
|
+
that distinction; the feedback primitive only presents the supplied state.
|
|
48
|
+
|
|
49
|
+
## Evidence
|
|
50
|
+
|
|
51
|
+
Trigger the operation and observe each applicable transition, including failure
|
|
52
|
+
and retry. Also follow failure → explicit discard → list → reopen a saved record;
|
|
53
|
+
the abandoned draft's failure must be gone and the saved data unchanged. Distinguish
|
|
54
|
+
that from a still-unresolved collection-wide error. Check optional description/action/icon slots, long messages and text
|
|
55
|
+
enlargement. Keep content visible without stealing focus merely to announce it.
|
|
56
|
+
Reserve feedback space in a demo when needed for a stable sample, not universally
|
|
57
|
+
inside every production component. Report audible announcement behavior only
|
|
58
|
+
when it was actually tested with the relevant assistive technology.
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: flood-forms
|
|
3
|
+
description: Compose and verify Flood form ownership, labels, values, validation and reset. Use for fields, selection controls or composed form inputs.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Preserve the form contract
|
|
7
|
+
|
|
8
|
+
Consult installed declarations and the matching component guide before choosing
|
|
9
|
+
props. The [composition reference](../composition.md) documents selection and file
|
|
10
|
+
ownership. Read the matching DateField/DateTimePicker component guide for its
|
|
11
|
+
specific civil-value and draft contract; [accessibility](../accessibility.md)
|
|
12
|
+
documents associations and feedback.
|
|
13
|
+
|
|
14
|
+
For an ordinary business date field, prefer DatePicker so users can both type and
|
|
15
|
+
choose visually. DateField is the lower-level segmented editor without a popup;
|
|
16
|
+
choose it for an explicit entry-only interaction or inside a composition that
|
|
17
|
+
already supplies Calendar. Do not silently omit the calendar just because the
|
|
18
|
+
brief did not enumerate every affordance of choosing a date.
|
|
19
|
+
|
|
20
|
+
## Assign ownership
|
|
21
|
+
|
|
22
|
+
- Field supplies label/description/error associations through its render props;
|
|
23
|
+
spread those props onto the actual Flood control. Fieldset groups related
|
|
24
|
+
controls with a legend; each choice still needs its own meaningful label.
|
|
25
|
+
- Decide controlled value/onValueChange versus uncontrolled defaultValue. A
|
|
26
|
+
default initializes; changing it is not an update contract. Handle host refusal
|
|
27
|
+
of a requested value without reporting that it was saved or losing focus.
|
|
28
|
+
- Set native name/form/required and submit/reset button types deliberately.
|
|
29
|
+
Inspect FormData, including repeated checkbox names with getAll and the
|
|
30
|
+
component's documented submission shape. Visible prefixes are not submitted
|
|
31
|
+
values; Token/Tag/Toggle actions are not automatically native form inputs.
|
|
32
|
+
- Read-only and disabled are different. Use readOnly only where the installed
|
|
33
|
+
API supports it; retain copy/focus/submission as documented. Disabled values
|
|
34
|
+
are excluded from native submission. Do not synthesize read-only behavior by
|
|
35
|
+
disabling unrelated controls or hiding a field's value.
|
|
36
|
+
- Error is invalid; warning/success/info are advisory, not validation algorithms.
|
|
37
|
+
Host validation decides the error and useful message. Keep native constraints,
|
|
38
|
+
invalid focus and the accessible message association coherent.
|
|
39
|
+
|
|
40
|
+
For visual roles and rhythm, read the [hierarchy skill](../flood-hierarchy/SKILL.md).
|
|
41
|
+
Fieldset legendSize="section" is for an independent section; a short form may
|
|
42
|
+
need no inner heading. Field labels and values keep their documented sizes.
|
|
43
|
+
|
|
44
|
+
## Group before laying out fields
|
|
45
|
+
|
|
46
|
+
Choose the form's reading order and semantic groups before placing controls in
|
|
47
|
+
columns. Establish shared outer tracks, gap and group padding. Use a single Grid for
|
|
48
|
+
related rows; do not narrow one numeric field in only one row merely because its
|
|
49
|
+
value is short. Preserve corresponding vertical edges before optimizing widths. Related groups
|
|
50
|
+
should share those tracks: do not independently choose a four-column grid above
|
|
51
|
+
two columns below and assume their edges align. A group may span the whole layout
|
|
52
|
+
when its content needs it; not every field should have the same width.
|
|
53
|
+
|
|
54
|
+
For Flood record/settings forms without a denser host requirement, start with
|
|
55
|
+
at most two field tracks per semantic group. Four metadata fields become two
|
|
56
|
+
pairs rather than an automatic four-field strip. Use one track for a narrow group
|
|
57
|
+
or long field. A denser table editor, filter toolbar or explicit host design is
|
|
58
|
+
a different context; record why its structure needs more tracks.
|
|
59
|
+
|
|
60
|
+
For two peer groups, use two equal outer tracks and subdivide each consistently
|
|
61
|
+
when a group contains short related fields. A pair of two-field groups can read
|
|
62
|
+
more clearly than four unrelated columns. This is a pattern to evaluate, not a
|
|
63
|
+
rule that every form has two columns or an invoice-specific template.
|
|
64
|
+
|
|
65
|
+
Keep a group's title, controls and supporting message together in reading and DOM
|
|
66
|
+
order. Distinguish page, group and field roles without adding headings merely to
|
|
67
|
+
fill containers. Compare shared leading/trailing edges and gutters in the rendered
|
|
68
|
+
form, including absent descriptions, long labels and changed field values.
|
|
69
|
+
|
|
70
|
+
Measure the controls' content edges, not only the Grid boxes. A full-width padded
|
|
71
|
+
Surface containing two tracks and two separately padded Surfaces can use identical
|
|
72
|
+
Grid props while their actual controls differ by one surface inset. Nested padding
|
|
73
|
+
must participate in the same track budget. Compare corresponding first/second
|
|
74
|
+
control starts and widths across those groups; matching outer containers is not
|
|
75
|
+
sufficient. Do not insert an empty grid child merely to occupy an unexplained gap.
|
|
76
|
+
For a concrete starting structure, discover recipe:grouped-form in the installed
|
|
77
|
+
catalog. It demonstrates shared tracks and two-field peer groups in a workspace
|
|
78
|
+
form. Adapt its grouping to the host; do not copy its business content or add
|
|
79
|
+
unrequested sample records.
|
|
80
|
+
|
|
81
|
+
## Exercise transitions, not just props
|
|
82
|
+
|
|
83
|
+
Check entry, clear, incomplete drafts, invalid input, accepted/refused controlled
|
|
84
|
+
updates, submit and normal/cancelled reset where supported. Match date/time
|
|
85
|
+
default values to the selected precision and remount only the demo when a changed
|
|
86
|
+
representation genuinely requires it. Do not silently replace user edits.
|
|
87
|
+
|
|
88
|
+
FileInput cannot receive a fabricated FileList or ordinary controlled text value.
|
|
89
|
+
Separate selection from upload transport and progress. Calendar/date/time controls
|
|
90
|
+
represent their documented civil values; do not infer a timezone or server save.
|
|
91
|
+
Show a real success only after the host operation succeeds. Explain consequential
|
|
92
|
+
storage limits once where they matter; a local example does not require a banner
|
|
93
|
+
or repeated captions about its implementation. Follow the interface-content
|
|
94
|
+
workflow for placement and wording.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: flood-foundations
|
|
3
|
+
description: Apply Flood's existing dark semantic surfaces, typography, control sizing and icon geometry. Use for foundation consistency or token-consumer review.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Apply the dark foundations
|
|
7
|
+
|
|
8
|
+
Use the installed declarations, token manifest and DESIGN contract. This workflow
|
|
9
|
+
applies the existing dark base; it does not start a palette, theme or motion redesign.
|
|
10
|
+
|
|
11
|
+
## Decide the role before the value
|
|
12
|
+
|
|
13
|
+
- FloodRoot owns the dark profile; import the shared stylesheet once in the host.
|
|
14
|
+
A legacy light control outside it is not evidence of a supported new theme.
|
|
15
|
+
- Distinguish reference values, semantic roles, component recipes and host layout.
|
|
16
|
+
In a consumer override an existing semantic role on a deliberate scope; never
|
|
17
|
+
edit node_modules. In Flood source, author tokens only in tokens.json.
|
|
18
|
+
- Choose canvas, container, field and floating-surface roles from their actual
|
|
19
|
+
context. A floating surface must remain legible over its parent; inspect alpha
|
|
20
|
+
compositing, its perimeter and shadow together rather than darkening everything.
|
|
21
|
+
- Decorative dividers, necessary control boundaries, selection and keyboard focus
|
|
22
|
+
have different jobs. Do not substitute an emphasized border for a quiet divider
|
|
23
|
+
or mute an entire control to soften one line. Focus remains a clear accent.
|
|
24
|
+
- Heading level expresses document structure; visual size is a separate decision.
|
|
25
|
+
Supporting labels/descriptions stay subordinate without becoming unreadable.
|
|
26
|
+
- Preserve rem sizing, the host root font, role line height and tracking. IconSlot
|
|
27
|
+
owns explicit artwork dimensions; IconButton owns the accessible action/target.
|
|
28
|
+
A large control does not mean an unconstrained SVG or oversized supporting copy.
|
|
29
|
+
|
|
30
|
+
Action icons are artwork with an explicit IconSlot size, not a plus, arrow or
|
|
31
|
+
cross typed into the label. Font glyph bounds vary even at the same font size.
|
|
32
|
+
Use the project's licensed icon pack or an original SVG in IconSlot; text-only
|
|
33
|
+
actions can omit the icon. Keep real symbols that are content, such as currency,
|
|
34
|
+
phone prefixes or mathematical expressions, as text. Inspect the actual artwork
|
|
35
|
+
and its centre relative to the label at the chosen Button size.
|
|
36
|
+
|
|
37
|
+
## Evidence
|
|
38
|
+
|
|
39
|
+
Trace a changed role to its consumers and compare resting, hover, selected,
|
|
40
|
+
focused, disabled and advisory/error states where applicable. Inspect a field on
|
|
41
|
+
a Surface and a popup over that field; inspect long text and enlarged root text.
|
|
42
|
+
Do not claim visual consistency from token names or matching hex values alone.
|
|
43
|
+
See [customization](../customization.md) and
|
|
44
|
+
[accessibility](../accessibility.md) for perception/override details.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: flood-hierarchy
|
|
3
|
+
description: Establish visual hierarchy, shared form tracks and vertical rhythm in Flood screens, forms and overlays. Use when titles, groups and labels compete or a composed interface feels flat; not a fixed page template.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Structure before emphasis
|
|
7
|
+
|
|
8
|
+
Start with the user's task, reading order and installed component contracts.
|
|
9
|
+
Distinguish the task title, genuinely independent groups, field labels, input
|
|
10
|
+
values and actions before choosing their size or color. A short form may need
|
|
11
|
+
only its task title and labels. Do not add a legend, subtitle, card or divider
|
|
12
|
+
merely to create visual levels. Meaning comes from the interface-content workflow;
|
|
13
|
+
this workflow makes that meaning visible.
|
|
14
|
+
|
|
15
|
+
## Assign each relationship to its owner
|
|
16
|
+
|
|
17
|
+
- Dialog owns its task heading and the body inset. Its dark title uses the
|
|
18
|
+
dialog-title role (1.25rem / 600); it is distinct from compact popup captions.
|
|
19
|
+
- Field owns the label-to-control relationship: space-1 (.25rem) in the dark
|
|
20
|
+
profile. DateField/TimeField already use that relationship. Leave room between
|
|
21
|
+
independent fields instead of increasing the gap inside every label/control pair.
|
|
22
|
+
- Field labels use field-label typography (.8125rem / 500) and readable primary
|
|
23
|
+
content color. Do not shrink every label or fade necessary labels to manufacture
|
|
24
|
+
hierarchy; units, required markers, errors and accessible associations remain.
|
|
25
|
+
- Fieldset defaults to a compact label-sized legend for related choices. Use
|
|
26
|
+
legendSize="section" for a necessary independent form section: group-title
|
|
27
|
+
typography (1rem / 600) and space-4 before its fields. A legend is still a native
|
|
28
|
+
group label, not a new document heading level. Optional hint/choice relationships
|
|
29
|
+
keep their compact component-owned spacing.
|
|
30
|
+
- Grid owns common tracks; Stack and Inline own relationships between fields,
|
|
31
|
+
groups and actions. Never duplicate component anatomy with styled text.
|
|
32
|
+
|
|
33
|
+
These are installed recipe defaults, not permission to use missing APIs in an
|
|
34
|
+
older package or to override private selectors in a host stylesheet.
|
|
35
|
+
|
|
36
|
+
## Establish a shared frame
|
|
37
|
+
|
|
38
|
+
Use one Grid for related rows that should share vertical edges. Two equal tracks
|
|
39
|
+
are a useful starting point for four short fields; long names and descriptions
|
|
40
|
+
can span the width. Numeric content being short does not by itself justify a
|
|
41
|
+
narrower track in only one row. If a specialized width is necessary, preserve the
|
|
42
|
+
common grid or deliberately separate that group and check its visual relationship.
|
|
43
|
+
Do not repair a whole-frame mismatch with manual widths on individual controls.
|
|
44
|
+
|
|
45
|
+
Choose the user's reading order first. In an ordinary date/time form, a pair of
|
|
46
|
+
calendar and time controls can share tracks with a later pair of duration/status
|
|
47
|
+
controls. This is an example, not an appointment-specific template. Independent
|
|
48
|
+
semantic grouping can justify another order. Do not turn every group into a box.
|
|
49
|
+
|
|
50
|
+
## Choose a rhythm, not a uniform gap
|
|
51
|
+
|
|
52
|
+
For an ordinary desktop form, start with space-6 between field rows and space-8
|
|
53
|
+
between independent groups or before the closing action row. The Dialog body
|
|
54
|
+
inset is already space-6: do not add the same inset again to the first child.
|
|
55
|
+
Keep a label nearer its control than the next field and a group title nearer
|
|
56
|
+
its own fields than the next group. Dense filters, table editors and choice lists
|
|
57
|
+
have different budgets; apply their component recipes instead of spreading this
|
|
58
|
+
form rhythm everywhere.
|
|
59
|
+
|
|
60
|
+
Treat action order/alignment as part of the task. An end-aligned cancel/primary
|
|
61
|
+
pair can finish a short desktop dialog clearly. This is not a universal order:
|
|
62
|
+
respect host conventions, direction, destructive confirmation and keyboard flow.
|
|
63
|
+
Do not add a footer surface or separator unless it resolves a real boundary.
|
|
64
|
+
|
|
65
|
+
Record lists and details need an information budget as well as type hierarchy.
|
|
66
|
+
Use the [records workflow](../flood-records/SKILL.md) for metadata placement,
|
|
67
|
+
comparison columns and status/category/priority meanings; do not give every
|
|
68
|
+
attribute equal visual emphasis.
|
|
69
|
+
|
|
70
|
+
## Verify the relationships
|
|
71
|
+
|
|
72
|
+
Read the actual title/group/label styles; inspect the rendered result rather
|
|
73
|
+
than comparing font-size declarations alone. Check complete text and long values,
|
|
74
|
+
not only empty inputs. Measure the left/right edges of corresponding controls
|
|
75
|
+
across rows, including nested padding and optional fields. A shared outer Grid
|
|
76
|
+
alone is not proof that the input edges align.
|
|
77
|
+
|
|
78
|
+
At the host's desktop baseline include 1280px with 24px root text as well as
|
|
79
|
+
normal 1280/1440px views. Ensure the final action remains reachable if the dialog
|
|
80
|
+
needs to scroll. Open actual date/selection popups: a calendar needs readable
|
|
81
|
+
content width even when its anchor is narrow; a selection list has a different
|
|
82
|
+
width contract. Keep viewport collision limits and nested Escape/focus ownership.
|
|
83
|
+
|
|
84
|
+
Report the consequential choices and actual evidence outside the product UI.
|
|
85
|
+
An empty inspector result does not establish hierarchy, necessary copy or visual
|
|
86
|
+
quality. Preserve a failed clean run; improve the library/guidance owner before
|
|
87
|
+
starting a fresh evaluation, rather than editing the historical result.
|
|
@@ -0,0 +1,142 @@
|
|
|
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
|
+
## Explain only what changes a decision
|
|
82
|
+
|
|
83
|
+
Prefer a clear label or unit to an added helper paragraph. Add a field hint for a
|
|
84
|
+
non-obvious format, source or choice; do not narrate typing or repeat its label.
|
|
85
|
+
Technical properties of the implementation belong in developer documentation
|
|
86
|
+
unless the user is making a decision about them. A document preview usually
|
|
87
|
+
does not need a caption about embedded fonts or selectable PDF text.
|
|
88
|
+
|
|
89
|
+
Check actual behavior before writing states:
|
|
90
|
+
|
|
91
|
+
- Errors say what failed and how the user can recover, without raw exception text
|
|
92
|
+
or unsupported assurances. Keep entered data and associate errors with controls.
|
|
93
|
+
- Success names an operation that actually completed. Avoid celebratory filler
|
|
94
|
+
and repeated announcements for routine edits. The feedback workflow owns timing.
|
|
95
|
+
- Empty results and a first-use empty collection are different states. Use the
|
|
96
|
+
shortest useful explanation and next action for the actual case.
|
|
97
|
+
- A sample-data label is justified when it prevents a real misunderstanding.
|
|
98
|
+
Put it where that distinction matters. Do not repeat demo disclaimers throughout
|
|
99
|
+
a test interface whose context is already established.
|
|
100
|
+
|
|
101
|
+
For list/detail metadata, apply the [records workflow](../flood-records/SKILL.md).
|
|
102
|
+
Use its decision examples to distinguish useful priority/recency from redundant
|
|
103
|
+
labels and counts; the right amount of information depends on the user task.
|
|
104
|
+
|
|
105
|
+
## Adapt reference content by purpose
|
|
106
|
+
|
|
107
|
+
For each reference pattern, identify the question it answers and the capability
|
|
108
|
+
that makes its wording true. Transfer that relationship to the host's actual
|
|
109
|
+
objects, actions and states. Do not transplant a competitor's role names, approval
|
|
110
|
+
stages, promises, regulatory language or marketing line into a different product.
|
|
111
|
+
If the host has no equivalent capability, omit that element rather than invent one.
|
|
112
|
+
|
|
113
|
+
Borrowing a two-pane editor does not imply borrowing an OCR claim or a payment
|
|
114
|
+
workflow. Product references inform structure; user records and confirmed product
|
|
115
|
+
facts supply content. Keep unavailable capabilities explicit in guidance, not as
|
|
116
|
+
decorative warnings on every screen.
|
|
117
|
+
|
|
118
|
+
## Review the composed surface
|
|
119
|
+
|
|
120
|
+
Default optional subtitles and descriptions to absent. A page title plus its
|
|
121
|
+
primary action normally needs no sentence narrating that action. An empty-state
|
|
122
|
+
title identifies the missing content; it is not a slogan. Add explanation only
|
|
123
|
+
when it changes the user's next decision or supplies a needed constraint.
|
|
124
|
+
|
|
125
|
+
After rendering, identify each supporting sentence's new information. If it only
|
|
126
|
+
restates the title, predicts obvious typing/calculation, or repeats another help
|
|
127
|
+
location, remove it. Read the decision examples when uncertain; reading this
|
|
128
|
+
workflow without applying that review does not satisfy it. Preserve essential
|
|
129
|
+
consequences and actionable errors rather than stripping every explanation.
|
|
130
|
+
|
|
131
|
+
Read the whole screen in task order, including navigation, heading, fields,
|
|
132
|
+
actions and the state after an action. Review visible strings together with
|
|
133
|
+
accessible names, placeholders and announcements. Check repeated meaning across
|
|
134
|
+
locations, not just repeated words in one file. Removing a subtitle should not
|
|
135
|
+
leave its reserved space or an empty banner behind.
|
|
136
|
+
|
|
137
|
+
For a writing pass, report the consequential keep/rewrite/move/remove decisions
|
|
138
|
+
outside the product UI, and exercise the affected action or error. Automated
|
|
139
|
+
phrase scans cannot establish editorial quality. Use [decision examples](../interface-content-examples.md)
|
|
140
|
+
when a similar-looking string needs different treatment in another context.
|
|
141
|
+
Do not claim an independent agent evaluation when the author already knows the
|
|
142
|
+
implementation or corrected the initial output manually.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: flood-navigation
|
|
3
|
+
description: Choose and verify Flood links, tabs, disclosure and hierarchical navigation. Use when destination, selection and expansion semantics can be confused.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Separate destination, selection and disclosure
|
|
7
|
+
|
|
8
|
+
Use installed declarations and the [composition reference](../composition.md).
|
|
9
|
+
Choose Link/NavigationList/NavigationTree for destinations; Tree for application
|
|
10
|
+
object selection; Tabs for associated panels; Accordion/Collapsible for disclosure.
|
|
11
|
+
SegmentedControl selects one value and is not a tab panel controller. Do not use
|
|
12
|
+
Menu just because links appear vertically.
|
|
13
|
+
|
|
14
|
+
## Preserve browser and keyboard behavior
|
|
15
|
+
|
|
16
|
+
- Links retain real href, modifier/open-in-new-tab behavior and current-page
|
|
17
|
+
indication. A route change and a selection change are not interchangeable.
|
|
18
|
+
- Hierarchical items need stable unique values and readable labels. Expansion,
|
|
19
|
+
current destination, selection and keyboard focus have separate owners. Do not
|
|
20
|
+
infer cascading selection, automatic fetching or ancestor expansion.
|
|
21
|
+
- Apply each component's keyboard contract. ButtonGroup keeps ordinary Tab
|
|
22
|
+
navigation; Toolbar, Tabs and selection widgets have their own focus models.
|
|
23
|
+
Avoid adding generic arrow-key handlers around nested interactive content.
|
|
24
|
+
- Disclosure state must match its trigger and panel. Check whether content remains
|
|
25
|
+
mounted, and preserve any native form/focus consequences of the installed API.
|
|
26
|
+
|
|
27
|
+
## Evidence
|
|
28
|
+
|
|
29
|
+
Exercise forward/back navigation, current state, disabled/empty items, long labels,
|
|
30
|
+
both orientations when supported and keyboard entry/exit. For breadcrumbs, check
|
|
31
|
+
intrinsic text width and wrapping in each supported browser: a final letter on a
|
|
32
|
+
new line can indicate a sizing error rather than a legitimate responsive layout.
|
|
33
|
+
For sidebar navigation, scroll/focus the final item and keep its selected surface
|
|
34
|
+
clear of the scrollbar. Verify the actual navigation composition at narrow width
|
|
35
|
+
and enlarged text; an isolated item's screenshot is insufficient.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: flood-overlays
|
|
3
|
+
description: Compose or review Flood dialogs, drawers, popovers, menus and anchored selection surfaces. Use for popup geometry, nested dismissal or focus ownership.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Give each layer an owner
|
|
7
|
+
|
|
8
|
+
Use the actual installed overlay and trigger contract; see
|
|
9
|
+
[accessibility](../accessibility.md) for native/dialog/menu behavior. Tooltip is
|
|
10
|
+
noninteractive help; interactive content needs the appropriate Popover or dialog.
|
|
11
|
+
Do not put an action inside a tooltip or apply application-menu roles to site links.
|
|
12
|
+
|
|
13
|
+
## Preserve trigger and state
|
|
14
|
+
|
|
15
|
+
Forward trigger props/ref onto one mounted native action. Preserve its accessible
|
|
16
|
+
name and open/controls semantics. Choose host-controlled open state or a default,
|
|
17
|
+
and test a host refusing an open/close request. Do not claim control state changed
|
|
18
|
+
merely because a callback ran. The host owns persistent values in unmounted panels.
|
|
19
|
+
|
|
20
|
+
Modal and nonmodal focus are different: do not add a trap to every floating
|
|
21
|
+
surface or remove a modal's background inertness. Escape dismisses the active
|
|
22
|
+
layer; a nested menu/select must not also close its parent dialog. Restore opener
|
|
23
|
+
focus unless the host intentionally moved it elsewhere.
|
|
24
|
+
|
|
25
|
+
Task Dialog titles and body insets use their own recipe; do not reuse compact
|
|
26
|
+
popup caption typography for the modal task. The
|
|
27
|
+
[hierarchy workflow](../flood-hierarchy/SKILL.md) owns title/group/field relations.
|
|
28
|
+
|
|
29
|
+
## Inspect the actual host
|
|
30
|
+
|
|
31
|
+
Check placement at viewport edges, resize, narrow/enlarged text, RTL and parent
|
|
32
|
+
scrolling. Selection popups and calendar popups have distinct content geometry;
|
|
33
|
+
use the supported field/anchor sizing behavior, not a universal fixed width.
|
|
34
|
+
DatePicker calendar panels have a 20rem preferred minimum, bounded by available
|
|
35
|
+
viewport width; narrow anchors need not force cramped calendar content. Selection
|
|
36
|
+
lists and time lists retain their separate contracts.
|
|
37
|
+
Verify nested radii/insets, surface distinction over a parent Surface and that
|
|
38
|
+
essential content stays outside scrollbar rails. No clipping or noisy duplicate
|
|
39
|
+
contours should be concealed with extra wrappers.
|
|
40
|
+
|
|
41
|
+
Drawers must reach the selected viewport edge even with a page scrollbar gutter.
|
|
42
|
+
For a shared Drawer correction check all supported sides; in a host composition
|
|
43
|
+
check the sides that host actually uses. Check long scrollable content, title/description spacing
|
|
44
|
+
and the close IconButton. Verify scroll locking/restoration and nested focus in
|
|
45
|
+
the real composition. CSS elevation tokens alone do not implement these behaviors.
|
|
46
|
+
|
|
47
|
+
Inspect the useful reading area, not only whether the panel fits the viewport.
|
|
48
|
+
At enlarged text, inherited padding and a long fixed header/footer can consume
|
|
49
|
+
the body. Keep enough width for readable text and enough height to review it;
|
|
50
|
+
allow a reachable whole-panel scroll fallback when fixed chrome cannot fit.
|
|
51
|
+
Do not shorten every host title or reduce the user's font size to conceal a
|
|
52
|
+
shared Drawer sizing problem.
|