@flood-md/agent 0.2.9 → 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 +35 -4
- package/SKILL.md +31 -0
- 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 +41 -1
- package/package.json +7 -1
- package/references/flood-composition/SKILL.md +30 -0
- package/references/flood-data-display/SKILL.md +32 -0
- package/references/flood-feedback/SKILL.md +24 -3
- package/references/flood-forms/SKILL.md +51 -2
- package/references/flood-foundations/SKILL.md +7 -0
- package/references/flood-hierarchy/SKILL.md +87 -0
- package/references/flood-interface-content/SKILL.md +142 -0
- package/references/flood-overlays/SKILL.md +7 -0
- package/references/flood-records/SKILL.md +108 -0
- package/references/flood-spacing/SKILL.md +16 -0
- package/references/flood-verification/SKILL.md +52 -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 +152 -2
- package/workflows.json +146 -10
|
@@ -11,6 +11,12 @@ ownership. Read the matching DateField/DateTimePicker component guide for its
|
|
|
11
11
|
specific civil-value and draft contract; [accessibility](../accessibility.md)
|
|
12
12
|
documents associations and feedback.
|
|
13
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
|
+
|
|
14
20
|
## Assign ownership
|
|
15
21
|
|
|
16
22
|
- Field supplies label/description/error associations through its render props;
|
|
@@ -31,6 +37,47 @@ documents associations and feedback.
|
|
|
31
37
|
Host validation decides the error and useful message. Keep native constraints,
|
|
32
38
|
invalid focus and the accessible message association coherent.
|
|
33
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
|
+
|
|
34
81
|
## Exercise transitions, not just props
|
|
35
82
|
|
|
36
83
|
Check entry, clear, incomplete drafts, invalid input, accepted/refused controlled
|
|
@@ -41,5 +88,7 @@ representation genuinely requires it. Do not silently replace user edits.
|
|
|
41
88
|
FileInput cannot receive a fabricated FileList or ordinary controlled text value.
|
|
42
89
|
Separate selection from upload transport and progress. Calendar/date/time controls
|
|
43
90
|
represent their documented civil values; do not infer a timezone or server save.
|
|
44
|
-
Show a real success only after the host operation succeeds.
|
|
45
|
-
|
|
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.
|
|
@@ -27,6 +27,13 @@ applies the existing dark base; it does not start a palette, theme or motion red
|
|
|
27
27
|
owns explicit artwork dimensions; IconButton owns the accessible action/target.
|
|
28
28
|
A large control does not mean an unconstrained SVG or oversized supporting copy.
|
|
29
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
|
+
|
|
30
37
|
## Evidence
|
|
31
38
|
|
|
32
39
|
Trace a changed role to its consumers and compare resting, hover, selected,
|
|
@@ -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.
|
|
@@ -22,11 +22,18 @@ surface or remove a modal's background inertness. Escape dismisses the active
|
|
|
22
22
|
layer; a nested menu/select must not also close its parent dialog. Restore opener
|
|
23
23
|
focus unless the host intentionally moved it elsewhere.
|
|
24
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
|
+
|
|
25
29
|
## Inspect the actual host
|
|
26
30
|
|
|
27
31
|
Check placement at viewport edges, resize, narrow/enlarged text, RTL and parent
|
|
28
32
|
scrolling. Selection popups and calendar popups have distinct content geometry;
|
|
29
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.
|
|
30
37
|
Verify nested radii/insets, surface distinction over a parent Surface and that
|
|
31
38
|
essential content stays outside scrollbar rails. No clipping or noisy duplicate
|
|
32
39
|
contours should be concealed with extra wrappers.
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: flood-records
|
|
3
|
+
description: Compose record lists and detail views with a clear metadata hierarchy. Use for crowded status/category/priority/date rows, drifting scan positions or deciding between a list and a comparison table.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Select information for the current decision
|
|
7
|
+
|
|
8
|
+
Read the task and installed DataListItem, Table/DataTable, DescriptionList and
|
|
9
|
+
feedback contracts relevant to it. Start with what the user needs to recognize,
|
|
10
|
+
compare or act on before opening a record. A record's available schema is not the
|
|
11
|
+
content specification for every surface. Use the
|
|
12
|
+
[interface-content workflow](../flood-interface-content/SKILL.md) for wording and
|
|
13
|
+
[hierarchy workflow](../flood-hierarchy/SKILL.md) for visual relationships.
|
|
14
|
+
|
|
15
|
+
Before JSX, make a short field -> decision -> list/detail placement record in
|
|
16
|
+
development notes. Include the reason for an omitted field; do not place this
|
|
17
|
+
planning text in the interface. Read the
|
|
18
|
+
[decision examples](../record-decisions.md) when meanings or placement are unclear.
|
|
19
|
+
|
|
20
|
+
## Choose the record structure
|
|
21
|
+
|
|
22
|
+
- Use DataList/DataListItem when identity, a useful summary and opening the record
|
|
23
|
+
are primary. Keep the title and summary as one readable unit. Give secondary
|
|
24
|
+
attributes a subordinate relationship rather than filling every trailing slot.
|
|
25
|
+
- If users compare several independent attributes across records, use Table or
|
|
26
|
+
DataTable with actual named columns. A long Inline of unrelated values at each
|
|
27
|
+
row end is not a substitute for comparison columns.
|
|
28
|
+
- Use DescriptionList for named values in details. A detail view can expose more
|
|
29
|
+
information than a list; it does not need to repeat the list's chip arrangement.
|
|
30
|
+
- Selection is not navigation. A record list does not become ListBox merely
|
|
31
|
+
because users click its entries. Retain a real Link and independent actions.
|
|
32
|
+
|
|
33
|
+
When a scan signal is useful at the trailing edge, keep its position stable
|
|
34
|
+
across sibling records. Test the longest and missing values, not only equal sample
|
|
35
|
+
strings. Multiple right-justified values with variable lengths produce shifting
|
|
36
|
+
pseudo-columns even when their gaps match. Use an explicit common comparison
|
|
37
|
+
structure or move secondary attributes into the copy area.
|
|
38
|
+
|
|
39
|
+
## Distinguish metadata roles before styling
|
|
40
|
+
|
|
41
|
+
| Meaning | Existing owner / treatment |
|
|
42
|
+
| --- | --- |
|
|
43
|
+
| Lifecycle or operation state | StatusIndicator with accurate text; color is supplementary |
|
|
44
|
+
| Category, type or membership | Badge when a tag-shaped marker helps recognition; otherwise named/subordinate text |
|
|
45
|
+
| Priority or urgency | Keep visible when it drives triage/comparison; use an explicit column or named value if needed |
|
|
46
|
+
| Creation, update, due or event time | Identify the event and appropriate precision; do not treat every date as a status |
|
|
47
|
+
| An available operation | Button/IconButton/Menu; do not make an informational badge look actionable |
|
|
48
|
+
|
|
49
|
+
A category named Error is not necessarily a failed operation. Do not choose
|
|
50
|
+
error styling or an announcement from that word alone. Use clear labels in
|
|
51
|
+
ambiguous contexts, especially details with several similar-looking values.
|
|
52
|
+
A priority is not a second lifecycle status. Do not make all attributes colorful
|
|
53
|
+
chips or interchangeable status dots. Keep StatusIndicator rather than hand-drawing
|
|
54
|
+
its state text/dot to fit a preferred arrangement.
|
|
55
|
+
|
|
56
|
+
There is no universal badge limit. For a browsing list, start with identity and
|
|
57
|
+
one useful scan signal; admit further visible metadata when it changes selection
|
|
58
|
+
or action. For triage, priority may be essential even when every item is normal.
|
|
59
|
+
Do not hide necessary comparisons just to make a screenshot quieter. Conversely,
|
|
60
|
+
a default low/medium priority does not automatically need a separate visual accent.
|
|
61
|
+
|
|
62
|
+
## Distribute information between list and details
|
|
63
|
+
|
|
64
|
+
Protect enough width for the identity and useful summary. Category and recency
|
|
65
|
+
can read as secondary information near the title; status may stay in a stable
|
|
66
|
+
trailing position. This is one pattern, not a required arrangement. DataListItem
|
|
67
|
+
slots accept composition from supported Flood primitives; check their actual
|
|
68
|
+
content types before using them. Do not override private slot layout or wrap
|
|
69
|
+
ordinary metadata in invented semantics merely to silence an inspector.
|
|
70
|
+
|
|
71
|
+
In details, group named attributes by purpose. Place the principal state where it
|
|
72
|
+
informs action; avoid an unlabeled strip of state, category and priority that asks
|
|
73
|
+
the user to infer their meanings. User descriptions remain content, not interface
|
|
74
|
+
copy to shorten. A heading or Surface around a description must earn its role;
|
|
75
|
+
it is not mandatory for every text field.
|
|
76
|
+
|
|
77
|
+
Creation and modification describe different events. Keep both when history or
|
|
78
|
+
recency matters. If displayed values repeat and the distinction adds no current
|
|
79
|
+
value, one visible date may suffice; if exact time matters, use adequate precision
|
|
80
|
+
instead of suppressing the distinction based only on equal formatted dates.
|
|
81
|
+
|
|
82
|
+
## Compose collection states deliberately
|
|
83
|
+
|
|
84
|
+
First-use empty, filtered no-results, loading and read failure are different
|
|
85
|
+
states. Keep a relevant reset/action and meaningful feedback. A result count can
|
|
86
|
+
help filtering or pagination; do not automatically add Found: 0 beside an empty
|
|
87
|
+
collection message that already establishes there are no records. Never remove
|
|
88
|
+
an accessible update announcement merely to remove a duplicate visible sentence;
|
|
89
|
+
check announcement ownership in the feedback workflow.
|
|
90
|
+
|
|
91
|
+
A product header, page title and section heading must answer different questions.
|
|
92
|
+
Do not add a generic product/category eyebrow plus a title plus a sentence restating
|
|
93
|
+
it just because the shell has slots. Real branding and navigation context can
|
|
94
|
+
justify persistent chrome; preserve that purpose rather than applying a text ban.
|
|
95
|
+
|
|
96
|
+
## Verify across several records and states
|
|
97
|
+
|
|
98
|
+
Use isolated fixtures, not fictional records persisted into the user's app. Check
|
|
99
|
+
several short and long titles, every meaningful state, differing category/priority
|
|
100
|
+
lengths, missing metadata and long dates. Inspect scan positions and copy width
|
|
101
|
+
at normal and enlarged text, including 1280px/root24px for the desktop baseline.
|
|
102
|
+
No page overflow alone does not prove that the title has readable width.
|
|
103
|
+
|
|
104
|
+
Open details and return; exercise filters, no-results/reset and row actions.
|
|
105
|
+
Check reading order, Link names and action focus separately from visual alignment.
|
|
106
|
+
Review each visible attribute's decision value outside the product UI. An optional
|
|
107
|
+
observer may flag useful metadata or miss a crowded row; record the contextual
|
|
108
|
+
keep/move/name/omit decision rather than treating its output as editorial approval.
|
|
@@ -13,6 +13,11 @@ independent actions, sections, or nested surfaces. Do not propagate one gap to
|
|
|
13
13
|
every wrapper. Stack and Inline organize relationships; component padding and
|
|
14
14
|
line height still contribute to the visible distance.
|
|
15
15
|
|
|
16
|
+
Named fields use space-1 between label and control. This inner association
|
|
17
|
+
is distinct from the parent gap between fields: use the
|
|
18
|
+
[hierarchy workflow](../flood-hierarchy/SKILL.md) for task/group/field rhythm.
|
|
19
|
+
Do not stack a host spacer on top of the Dialog-owned body inset.
|
|
20
|
+
|
|
16
21
|
## Find the owner
|
|
17
22
|
|
|
18
23
|
Inspect bounding rectangles plus computed padding, margin, gap, minimum height
|
|
@@ -27,6 +32,17 @@ For a nested surface, compare its radius with the outer radius minus the actual
|
|
|
27
32
|
inset/stroke. Do not force unrelated actions to follow that formula. Compare
|
|
28
33
|
top/bottom and start/end insets around a nested InputGroup action optically.
|
|
29
34
|
|
|
35
|
+
Rounded cards need a content-safe inset as well as compatible nested radii.
|
|
36
|
+
Inspect the nearest curved edge around corner text and icons, not only distance
|
|
37
|
+
from the rectangular bounding box. Use supported surface padding and radius
|
|
38
|
+
choices together; increase the inset or reduce the radius when corners look
|
|
39
|
+
crowded. Do not impose a universal padding-equals-radius formula on all cards.
|
|
40
|
+
|
|
41
|
+
Give sibling sections an explicit parent-owned gap. An optional summary, message
|
|
42
|
+
or toolbar must not be the only source of separation between its neighbours.
|
|
43
|
+
For split panes, the full-height divider belongs to the stretching layout owner;
|
|
44
|
+
a shorter sticky or scrolling child must not determine the divider's length.
|
|
45
|
+
|
|
30
46
|
Distinguish a real component from its preview scene. Fixed preview height and
|
|
31
47
|
reserved feedback space can prevent a demo from jumping; they should not impose
|
|
32
48
|
an empty message row or fixed height on every production field.
|
|
@@ -16,6 +16,20 @@ Mark an inapplicable check with a reason rather than forcing keyboard behavior
|
|
|
16
16
|
onto decoration or readOnly onto every control. Distinguish existing test coverage
|
|
17
17
|
from checks actually run for this source revision.
|
|
18
18
|
|
|
19
|
+
Honor the task's declared evaluation scope. A desktop-only test host does not
|
|
20
|
+
require new mobile product work. Record excluded targets instead of quietly
|
|
21
|
+
expanding the task. When visible copy changes, apply the
|
|
22
|
+
[interface content workflow](../flood-interface-content/SKILL.md); type checks
|
|
23
|
+
and screenshots alone do not establish that its wording is necessary or accurate.
|
|
24
|
+
Desktop-only scope still includes enlarged text in the desktop viewport. Do not
|
|
25
|
+
freeze the whole application behind a rem-based minimum width and call resulting
|
|
26
|
+
page overflow a mobile limitation. Keep dense table overflow in its local owner
|
|
27
|
+
and let the surrounding desktop form use its available width.
|
|
28
|
+
For the Flood desktop baseline, include a 1280px viewport with a 24px root font
|
|
29
|
+
(150% of the usual 16px default), alongside normal 1280/1440px views. Testing only
|
|
30
|
+
20px does not cover that target. This is a text-enlargement check, not a request
|
|
31
|
+
to implement a mobile product. Report any deliberate host-specific exclusion.
|
|
32
|
+
|
|
19
33
|
Check the public contract at the boundary: installed exports/types, actual form
|
|
20
34
|
values, controlled acceptance/refusal, reset, names/focus and semantic state. For
|
|
21
35
|
visual changes inspect rendered geometry, long/optional content, narrow/wide,
|
|
@@ -33,12 +47,50 @@ candidate run npm run verify and the required applicable browser matrix; use the
|
|
|
33
47
|
host's equivalent gates in a consuming app. Do not continually repeat a full
|
|
34
48
|
release gate for every reversible visual adjustment.
|
|
35
49
|
|
|
50
|
+
When hierarchy changes, apply the [hierarchy workflow](../flood-hierarchy/SKILL.md)
|
|
51
|
+
and compare actual title/group/label roles and corresponding control edges. A
|
|
52
|
+
zero-overflow or zero-inspector result alone does not establish those relations.
|
|
53
|
+
|
|
54
|
+
For record composition, apply the [records workflow](../flood-records/SKILL.md):
|
|
55
|
+
compare several varied rows, their copy width and scan positions, then review the
|
|
56
|
+
detail and empty/filter states. Passing an overflow check or presenting valid
|
|
57
|
+
metadata is not evidence that all those values belong at the same visual level.
|
|
58
|
+
|
|
36
59
|
## Report a usable result
|
|
37
60
|
|
|
61
|
+
Use the [rendered review observer](../rendered-review.md) when local browser
|
|
62
|
+
tooling is available. Inspect findings and exceptions, then review hierarchy and
|
|
63
|
+
copy separately; no findings is not an editorial or visual-quality pass.
|
|
64
|
+
Review host JSX/CSS with inspectSourceUI from that entry too, then resolve the
|
|
65
|
+
actual owner at each candidate location. Include layout and cancel/confirmation
|
|
66
|
+
paths, not just fields. A native browser dialog can be absent from a DOM snapshot;
|
|
67
|
+
trigger its path. If a custom layout duplicates Grid, use the installed owner
|
|
68
|
+
instead of silencing a finding or declaring a missing capability without checking.
|
|
69
|
+
|
|
70
|
+
Keep a small coverage inventory outside the interface: route/view, visible state,
|
|
71
|
+
copy decision, geometry check and unverified limits. Review the initial/empty
|
|
72
|
+
surface before adding records, the populated surface, editor, preview and actual
|
|
73
|
+
error/recovery surfaces where present. Running the observer only in the editor
|
|
74
|
+
or an open popup leaves the other views unreviewed. Never extend a zero-findings
|
|
75
|
+
claim to states that were not inspected. Review optional empty-state descriptions
|
|
76
|
+
against the visible primary action too; they do not automatically need an
|
|
77
|
+
instruction restating that action.
|
|
78
|
+
For a newly composed screen, check two outcomes separately from build success:
|
|
79
|
+
the visible roles use the owners chosen from the installed catalog, and supporting
|
|
80
|
+
copy adds necessary information. Open the real date/selection popup to verify
|
|
81
|
+
that a native browser control was not mistaken for a Flood component. Inspect
|
|
82
|
+
mixed editable table rows, not only overflow. Report skipped applicable workflows
|
|
83
|
+
or unverified owner choices instead of treating a list of imports as proof.
|
|
84
|
+
|
|
38
85
|
For a failure preserve the source revision, affected state and actual trace or
|
|
39
86
|
measurement; distinguish library, host recipe, assertion and infrastructure causes.
|
|
40
87
|
Correct the responsible owner without weakening a meaningful assertion to get
|
|
41
88
|
green. Add regression coverage for demonstrated risks rather than mirroring CSS.
|
|
89
|
+
After exercising a failure, verify its exit paths as well as retry: explicitly
|
|
90
|
+
discard the affected draft, return to the list and open a saved record. Check that
|
|
91
|
+
record-scoped feedback ends with its operation while global unresolved failures
|
|
92
|
+
remain correctly represented. A screenshot of the error alone does not verify
|
|
93
|
+
its lifecycle; apply the feedback workflow.
|
|
42
94
|
|
|
43
95
|
State what ran, results, manual observations and remaining limits. A source scan,
|
|
44
96
|
agent instruction, screenshot or accessibility scanner cannot independently prove
|
|
@@ -0,0 +1,47 @@
|
|
|
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
|
+
|
|
28
|
+
## Contextual adaptation
|
|
29
|
+
|
|
30
|
+
A bill-processing reference may group records by draft, approval and payment.
|
|
31
|
+
An invoice generator with local draft/ready/archive state can reuse the idea of
|
|
32
|
+
state-based navigation. It cannot truthfully adopt “For payment”, an approval
|
|
33
|
+
queue or an OCR promise without implementing those capabilities.
|
|
34
|
+
|
|
35
|
+
Choose the host's action vocabulary deliberately. In a Russian invoice editor,
|
|
36
|
+
“Скачать PDF” names an export and “Подготовить счёт” names a readiness action.
|
|
37
|
+
“Готово” is ambiguous when the same toolbar can save, export, approve or send.
|
|
38
|
+
In a simple selection dialog, “Готово” may be sufficient. Do not apply one label
|
|
39
|
+
universally or translate English word order mechanically.
|
|
40
|
+
|
|
41
|
+
## A bounded review
|
|
42
|
+
|
|
43
|
+
For an interface-writing task, inspect the supplied surface and state the user's
|
|
44
|
+
task. Identify high-value decisions rather than reporting a count of deleted
|
|
45
|
+
words. Preserve one necessary constraint/error/consequence while removing nearby
|
|
46
|
+
filler. Check the affected action after editing. A smaller DOM or a green phrase
|
|
47
|
+
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.
|