@flood-md/agent 0.2.9 → 0.2.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DESIGN.md +33 -8
- package/README.md +35 -4
- package/SKILL.md +42 -0
- package/dist/catalog.json +8716 -0
- package/dist/materials/component-accordion.md +42 -0
- package/dist/materials/component-alert-dialog.md +46 -0
- package/dist/materials/component-alert.md +41 -0
- package/dist/materials/component-app-shell.md +47 -0
- package/dist/materials/component-app-top-bar.md +36 -0
- package/dist/materials/component-aspect-ratio.md +36 -0
- package/dist/materials/component-autocomplete.md +54 -0
- package/dist/materials/component-avatar-group.md +39 -0
- package/dist/materials/component-avatar.md +40 -0
- package/dist/materials/component-badge.md +37 -0
- package/dist/materials/component-blockquote.md +35 -0
- package/dist/materials/component-breadcrumb.md +36 -0
- package/dist/materials/component-bulk-action-bar.md +52 -0
- package/dist/materials/component-button-group.md +39 -0
- package/dist/materials/component-button.md +44 -0
- package/dist/materials/component-calendar.md +59 -0
- package/dist/materials/component-card.md +46 -0
- package/dist/materials/component-center.md +39 -0
- package/dist/materials/component-character-count.md +42 -0
- package/dist/materials/component-check-card.md +39 -0
- package/dist/materials/component-checkbox-group.md +48 -0
- package/dist/materials/component-checkbox.md +37 -0
- package/dist/materials/component-code-snippet.md +37 -0
- package/dist/materials/component-collapsible.md +41 -0
- package/dist/materials/component-collection-toolbar.md +68 -0
- package/dist/materials/component-collection-view-switcher.md +49 -0
- package/dist/materials/component-color-picker.md +49 -0
- package/dist/materials/component-color-swatch.md +35 -0
- package/dist/materials/component-combobox.md +60 -0
- package/dist/materials/component-command-list.md +48 -0
- package/dist/materials/component-command-palette.md +53 -0
- package/dist/materials/component-container.md +36 -0
- package/dist/materials/component-context-menu.md +43 -0
- package/dist/materials/component-copy-button.md +43 -0
- package/dist/materials/component-data-list-item.md +40 -0
- package/dist/materials/component-data-list.md +38 -0
- package/dist/materials/component-data-table.md +70 -0
- package/dist/materials/component-date-field.md +57 -0
- package/dist/materials/component-date-picker.md +67 -0
- package/dist/materials/component-date-range-field.md +62 -0
- package/dist/materials/component-date-range-picker.md +73 -0
- package/dist/materials/component-date-time-picker.md +62 -0
- package/dist/materials/component-date-time-range-picker.md +70 -0
- package/dist/materials/component-description-list.md +42 -0
- package/dist/materials/component-dialog.md +45 -0
- package/dist/materials/component-divider.md +37 -0
- package/dist/materials/component-drawer.md +51 -0
- package/dist/materials/component-dropzone.md +45 -0
- package/dist/materials/component-editable.md +57 -0
- package/dist/materials/component-empty-state.md +41 -0
- package/dist/materials/component-error-summary.md +40 -0
- package/dist/materials/component-field.md +46 -0
- package/dist/materials/component-fieldset.md +46 -0
- package/dist/materials/component-figure.md +36 -0
- package/dist/materials/component-file-input.md +45 -0
- package/dist/materials/component-file-item.md +48 -0
- package/dist/materials/component-file-list.md +39 -0
- package/dist/materials/component-file-meta.md +36 -0
- package/dist/materials/component-filter-condition.md +53 -0
- package/dist/materials/component-filter-group.md +55 -0
- package/dist/materials/component-flood-root.md +33 -0
- package/dist/materials/component-grid.md +38 -0
- package/dist/materials/component-heading.md +38 -0
- package/dist/materials/component-hover-card.md +48 -0
- package/dist/materials/component-icon-button.md +43 -0
- package/dist/materials/component-icon-slot.md +37 -0
- package/dist/materials/component-image-preview.md +50 -0
- package/dist/materials/component-image.md +37 -0
- package/dist/materials/component-inline-code.md +36 -0
- package/dist/materials/component-inline.md +39 -0
- package/dist/materials/component-input-group.md +43 -0
- package/dist/materials/component-input.md +39 -0
- package/dist/materials/component-kbd.md +34 -0
- package/dist/materials/component-label.md +37 -0
- package/dist/materials/component-link.md +35 -0
- package/dist/materials/component-list-box.md +57 -0
- package/dist/materials/component-list.md +40 -0
- package/dist/materials/component-menu.md +54 -0
- package/dist/materials/component-menubar.md +41 -0
- package/dist/materials/component-meter.md +43 -0
- package/dist/materials/component-metric.md +39 -0
- package/dist/materials/component-multi-select.md +62 -0
- package/dist/materials/component-navigation-group.md +51 -0
- package/dist/materials/component-navigation-item.md +59 -0
- package/dist/materials/component-navigation-list.md +38 -0
- package/dist/materials/component-navigation-tree.md +51 -0
- package/dist/materials/component-number-input.md +47 -0
- package/dist/materials/component-overflow-actions.md +47 -0
- package/dist/materials/component-page-header.md +40 -0
- package/dist/materials/component-pagination.md +44 -0
- package/dist/materials/component-password-input.md +43 -0
- package/dist/materials/component-pin-input.md +45 -0
- package/dist/materials/component-popover.md +48 -0
- package/dist/materials/component-progress.md +42 -0
- package/dist/materials/component-radio-card.md +43 -0
- package/dist/materials/component-radio-group.md +49 -0
- package/dist/materials/component-radio.md +39 -0
- package/dist/materials/component-range-calendar.md +58 -0
- package/dist/materials/component-rating.md +46 -0
- package/dist/materials/component-resizable-panels.md +48 -0
- package/dist/materials/component-scroll-area.md +42 -0
- package/dist/materials/component-search-input.md +40 -0
- package/dist/materials/component-section.md +42 -0
- package/dist/materials/component-segmented-control.md +53 -0
- package/dist/materials/component-select.md +45 -0
- package/dist/materials/component-sidebar.md +64 -0
- package/dist/materials/component-skeleton.md +42 -0
- package/dist/materials/component-skip-link.md +37 -0
- package/dist/materials/component-slider.md +51 -0
- package/dist/materials/component-spinner.md +37 -0
- package/dist/materials/component-split.md +40 -0
- package/dist/materials/component-stack.md +37 -0
- package/dist/materials/component-status-indicator.md +38 -0
- package/dist/materials/component-steps.md +40 -0
- package/dist/materials/component-surface.md +37 -0
- package/dist/materials/component-switch.md +35 -0
- package/dist/materials/component-table.md +46 -0
- package/dist/materials/component-tabs.md +45 -0
- package/dist/materials/component-tag-input.md +46 -0
- package/dist/materials/component-tag.md +40 -0
- package/dist/materials/component-text.md +39 -0
- package/dist/materials/component-textarea.md +38 -0
- package/dist/materials/component-time-field.md +56 -0
- package/dist/materials/component-time-picker.md +60 -0
- package/dist/materials/component-timeline.md +38 -0
- package/dist/materials/component-toast-region.md +42 -0
- package/dist/materials/component-toggle-group.md +44 -0
- package/dist/materials/component-toggle.md +40 -0
- package/dist/materials/component-toolbar.md +46 -0
- package/dist/materials/component-tooltip.md +40 -0
- package/dist/materials/component-tree-select.md +56 -0
- package/dist/materials/component-tree.md +52 -0
- package/dist/materials/component-upload-item.md +52 -0
- package/dist/materials/component-upload-list.md +40 -0
- package/dist/materials/component-visually-hidden.md +37 -0
- package/dist/materials/guide-agent-knowledge.md +95 -0
- package/dist/materials/guide-agents.md +103 -0
- package/dist/materials/guide-faq.md +84 -0
- package/dist/materials/guide-foundations.md +275 -0
- package/dist/materials/guide-installation.md +79 -0
- package/dist/materials/guide-interface-content.md +76 -0
- package/dist/materials/guide-introduction.md +42 -0
- package/dist/materials/guide-layout.md +222 -0
- package/dist/materials/guide-motion.md +69 -0
- package/dist/materials/guide-privacy.md +23 -0
- package/dist/materials/guide-project-ui.md +127 -0
- package/dist/materials/guide-skills.md +117 -0
- package/dist/materials/guide-theming.md +73 -0
- package/dist/materials/recipe-collection-views.md +648 -0
- package/dist/materials/recipe-command-palette.md +45 -0
- package/dist/materials/recipe-filter-bar.md +68 -0
- package/dist/materials/recipe-form-submission.md +39 -0
- package/dist/materials/recipe-grouped-form.md +71 -0
- package/dist/materials/recipe-navigation-workspace.md +222 -0
- package/dist/materials/recipe-record-management.md +296 -0
- package/dist/materials/recipe-record-workspace.md +207 -0
- package/dist/materials/recipe-select-all.md +31 -0
- package/dist/materials/recipe-settings-workspace.md +232 -0
- package/dist/materials/recipe-split-button.md +26 -0
- package/dist/materials/recipe-table-bulk-actions.md +88 -0
- package/dist/materials/recipe-workspace-review.md +134 -0
- package/dist/materials/token-sys.color.accent.content.json +41 -0
- package/dist/materials/token-sys.color.action.danger.content.json +42 -0
- package/dist/materials/token-sys.color.action.ghost.content.json +41 -0
- package/dist/materials/token-sys.color.action.ghost.disabled-content.json +41 -0
- package/dist/materials/token-sys.color.action.ghost.disabled.json +41 -0
- package/dist/materials/token-sys.color.action.ghost.hover.json +41 -0
- package/dist/materials/token-sys.color.action.ghost.pressed.json +41 -0
- package/dist/materials/token-sys.color.action.ghost.rest.json +41 -0
- package/dist/materials/token-sys.color.action.on-surface.content.json +39 -0
- package/dist/materials/token-sys.color.action.on-surface.disabled-content.json +39 -0
- package/dist/materials/token-sys.color.action.on-surface.disabled.json +39 -0
- package/dist/materials/token-sys.color.action.on-surface.hover.json +39 -0
- package/dist/materials/token-sys.color.action.on-surface.pressed.json +39 -0
- package/dist/materials/token-sys.color.action.on-surface.rest.json +39 -0
- package/dist/materials/token-sys.color.action.primary.content.json +39 -0
- package/dist/materials/token-sys.color.action.primary.disabled-content.json +39 -0
- package/dist/materials/token-sys.color.action.primary.disabled.json +39 -0
- package/dist/materials/token-sys.color.action.primary.hover.json +39 -0
- package/dist/materials/token-sys.color.action.primary.pressed.json +39 -0
- package/dist/materials/token-sys.color.action.primary.rest.json +39 -0
- package/dist/materials/token-sys.color.action.subtle.content.json +39 -0
- package/dist/materials/token-sys.color.action.subtle.disabled-content.json +39 -0
- package/dist/materials/token-sys.color.action.subtle.disabled.json +39 -0
- package/dist/materials/token-sys.color.action.subtle.hover.json +39 -0
- package/dist/materials/token-sys.color.action.subtle.pressed.json +39 -0
- package/dist/materials/token-sys.color.action.subtle.rest.json +39 -0
- package/dist/materials/token-sys.color.border.decorative.json +42 -0
- package/dist/materials/token-sys.color.border.default.json +39 -0
- package/dist/materials/token-sys.color.border.floating.json +39 -0
- package/dist/materials/token-sys.color.border.strong.json +39 -0
- package/dist/materials/token-sys.color.content.default.json +41 -0
- package/dist/materials/token-sys.color.content.helper.json +39 -0
- package/dist/materials/token-sys.color.content.subtle.json +43 -0
- package/dist/materials/token-sys.color.context.base.action-disabled.json +41 -0
- package/dist/materials/token-sys.color.context.base.action-hover.json +41 -0
- package/dist/materials/token-sys.color.context.base.action-pressed.json +41 -0
- package/dist/materials/token-sys.color.context.base.action-rest.json +41 -0
- package/dist/materials/token-sys.color.context.base.avatar-background.json +41 -0
- package/dist/materials/token-sys.color.context.base.border-decorative.json +41 -0
- package/dist/materials/token-sys.color.context.base.divider-decorative.json +41 -0
- package/dist/materials/token-sys.color.context.base.field-background.json +41 -0
- package/dist/materials/token-sys.color.context.base.field-border.json +41 -0
- package/dist/materials/token-sys.color.context.base.field-disabled.json +41 -0
- package/dist/materials/token-sys.color.context.base.field-readonly.json +41 -0
- package/dist/materials/token-sys.color.context.base.indicator-track.json +41 -0
- package/dist/materials/token-sys.color.context.base.loading-placeholder.json +41 -0
- package/dist/materials/token-sys.color.context.base.muted-background.json +41 -0
- package/dist/materials/token-sys.color.context.base.on-surface-action-disabled.json +41 -0
- package/dist/materials/token-sys.color.context.base.on-surface-action-hover.json +41 -0
- package/dist/materials/token-sys.color.context.base.on-surface-action-pressed.json +41 -0
- package/dist/materials/token-sys.color.context.base.on-surface-action-rest.json +41 -0
- package/dist/materials/token-sys.color.context.base.selection-background.json +41 -0
- package/dist/materials/token-sys.color.context.base.supporting-background.json +41 -0
- package/dist/materials/token-sys.color.context.filled.action-disabled.json +41 -0
- package/dist/materials/token-sys.color.context.filled.action-hover.json +41 -0
- package/dist/materials/token-sys.color.context.filled.action-pressed.json +41 -0
- package/dist/materials/token-sys.color.context.filled.action-rest.json +41 -0
- package/dist/materials/token-sys.color.context.filled.avatar-background.json +41 -0
- package/dist/materials/token-sys.color.context.filled.border-decorative.json +41 -0
- package/dist/materials/token-sys.color.context.filled.divider-decorative.json +41 -0
- package/dist/materials/token-sys.color.context.filled.field-background.json +41 -0
- package/dist/materials/token-sys.color.context.filled.field-border.json +41 -0
- package/dist/materials/token-sys.color.context.filled.field-disabled.json +41 -0
- package/dist/materials/token-sys.color.context.filled.field-readonly.json +41 -0
- package/dist/materials/token-sys.color.context.filled.indicator-track.json +41 -0
- package/dist/materials/token-sys.color.context.filled.loading-placeholder.json +41 -0
- package/dist/materials/token-sys.color.context.filled.muted-background.json +41 -0
- package/dist/materials/token-sys.color.context.filled.selection-background.json +41 -0
- package/dist/materials/token-sys.color.context.filled.supporting-background.json +41 -0
- package/dist/materials/token-sys.color.divider.decorative.json +41 -0
- package/dist/materials/token-sys.color.feedback.error.json +39 -0
- package/dist/materials/token-sys.color.feedback.info.json +39 -0
- package/dist/materials/token-sys.color.feedback.success.json +39 -0
- package/dist/materials/token-sys.color.feedback.warning.json +39 -0
- package/dist/materials/token-sys.color.field.background.json +39 -0
- package/dist/materials/token-sys.color.field.border.json +39 -0
- package/dist/materials/token-sys.color.field.boundary.json +39 -0
- package/dist/materials/token-sys.color.field.content.json +39 -0
- package/dist/materials/token-sys.color.field.disabled-content.json +39 -0
- package/dist/materials/token-sys.color.field.disabled.json +39 -0
- package/dist/materials/token-sys.color.field.placeholder.json +39 -0
- package/dist/materials/token-sys.color.field.readonly.json +41 -0
- package/dist/materials/token-sys.color.focus.ring.json +39 -0
- package/dist/materials/token-sys.color.indicator.accent.json +39 -0
- package/dist/materials/token-sys.color.indicator.fill.json +39 -0
- package/dist/materials/token-sys.color.indicator.track.json +39 -0
- package/dist/materials/token-sys.color.loading.placeholder.json +42 -0
- package/dist/materials/token-sys.color.scrollbar.thumb-hover.json +39 -0
- package/dist/materials/token-sys.color.scrollbar.thumb.json +39 -0
- package/dist/materials/token-sys.color.selection.background.json +39 -0
- package/dist/materials/token-sys.color.selection.content.json +39 -0
- package/dist/materials/token-sys.color.selection.floating.json +39 -0
- package/dist/materials/token-sys.color.shadow.floating.json +39 -0
- package/dist/materials/token-sys.color.surface.avatar.json +41 -0
- package/dist/materials/token-sys.color.surface.canvas.json +39 -0
- package/dist/materials/token-sys.color.surface.current.json +41 -0
- package/dist/materials/token-sys.color.surface.default.json +39 -0
- package/dist/materials/token-sys.color.surface.floating-translucent.json +39 -0
- package/dist/materials/token-sys.color.surface.floating.json +39 -0
- package/dist/materials/token-sys.color.surface.muted.json +41 -0
- package/dist/materials/token-sys.color.surface.overlay.json +39 -0
- package/dist/materials/token-sys.color.surface.raised.json +39 -0
- package/dist/materials/token-sys.color.surface.supporting.json +41 -0
- package/dist/materials/token-sys.control.2xl.gap.json +34 -0
- package/dist/materials/token-sys.control.2xl.height.json +34 -0
- package/dist/materials/token-sys.control.2xl.icon-size.json +34 -0
- package/dist/materials/token-sys.control.2xl.line-height.json +31 -0
- package/dist/materials/token-sys.control.2xl.padding-inline.json +34 -0
- package/dist/materials/token-sys.control.2xl.text-size.json +34 -0
- package/dist/materials/token-sys.control.2xs.gap.json +34 -0
- package/dist/materials/token-sys.control.2xs.height.json +34 -0
- package/dist/materials/token-sys.control.2xs.icon-size.json +34 -0
- package/dist/materials/token-sys.control.2xs.line-height.json +31 -0
- package/dist/materials/token-sys.control.2xs.padding-inline.json +34 -0
- package/dist/materials/token-sys.control.2xs.text-size.json +34 -0
- package/dist/materials/token-sys.control.lg.gap.json +34 -0
- package/dist/materials/token-sys.control.lg.height.json +34 -0
- package/dist/materials/token-sys.control.lg.icon-size.json +34 -0
- package/dist/materials/token-sys.control.lg.line-height.json +31 -0
- package/dist/materials/token-sys.control.lg.padding-inline.json +34 -0
- package/dist/materials/token-sys.control.lg.text-size.json +34 -0
- package/dist/materials/token-sys.control.md.gap.json +34 -0
- package/dist/materials/token-sys.control.md.height.json +34 -0
- package/dist/materials/token-sys.control.md.icon-size.json +34 -0
- package/dist/materials/token-sys.control.md.line-height.json +31 -0
- package/dist/materials/token-sys.control.md.padding-inline.json +34 -0
- package/dist/materials/token-sys.control.md.text-size.json +34 -0
- package/dist/materials/token-sys.control.sm.gap.json +34 -0
- package/dist/materials/token-sys.control.sm.height.json +34 -0
- package/dist/materials/token-sys.control.sm.icon-size.json +34 -0
- package/dist/materials/token-sys.control.sm.line-height.json +31 -0
- package/dist/materials/token-sys.control.sm.padding-inline.json +34 -0
- package/dist/materials/token-sys.control.sm.text-size.json +34 -0
- package/dist/materials/token-sys.control.xl.gap.json +34 -0
- package/dist/materials/token-sys.control.xl.height.json +34 -0
- package/dist/materials/token-sys.control.xl.icon-size.json +34 -0
- package/dist/materials/token-sys.control.xl.line-height.json +31 -0
- package/dist/materials/token-sys.control.xl.padding-inline.json +34 -0
- package/dist/materials/token-sys.control.xl.text-size.json +34 -0
- package/dist/materials/token-sys.control.xs.gap.json +34 -0
- package/dist/materials/token-sys.control.xs.height.json +34 -0
- package/dist/materials/token-sys.control.xs.icon-size.json +34 -0
- package/dist/materials/token-sys.control.xs.line-height.json +31 -0
- package/dist/materials/token-sys.control.xs.padding-inline.json +34 -0
- package/dist/materials/token-sys.control.xs.text-size.json +34 -0
- package/dist/materials/token-sys.effect.floating.blur.json +34 -0
- package/dist/materials/token-sys.effect.floating.saturation.json +31 -0
- package/dist/materials/token-sys.effect.floating.shadow-blur.json +34 -0
- package/dist/materials/token-sys.effect.floating.shadow-offset.json +34 -0
- package/dist/materials/token-sys.focus.offset.json +34 -0
- package/dist/materials/token-sys.focus.width.json +34 -0
- package/dist/materials/token-sys.font.mono.json +36 -0
- package/dist/materials/token-sys.font.sans.json +35 -0
- package/dist/materials/token-sys.layer.base.json +31 -0
- package/dist/materials/token-sys.layer.modal.json +31 -0
- package/dist/materials/token-sys.layer.popover.json +31 -0
- package/dist/materials/token-sys.layer.sticky.json +31 -0
- package/dist/materials/token-sys.layer.toast.json +31 -0
- package/dist/materials/token-sys.motion.distance-panel.json +36 -0
- package/dist/materials/token-sys.motion.distance-small.json +36 -0
- package/dist/materials/token-sys.motion.duration-enter.json +36 -0
- package/dist/materials/token-sys.motion.duration-exit.json +36 -0
- package/dist/materials/token-sys.motion.duration-fast.json +34 -0
- package/dist/materials/token-sys.motion.duration-layer.json +36 -0
- package/dist/materials/token-sys.motion.duration-loop.json +36 -0
- package/dist/materials/token-sys.motion.duration-normal.json +34 -0
- package/dist/materials/token-sys.motion.duration-press.json +36 -0
- package/dist/materials/token-sys.motion.duration-reduced.json +34 -0
- package/dist/materials/token-sys.motion.easing-enter.json +38 -0
- package/dist/materials/token-sys.motion.easing-exit.json +38 -0
- package/dist/materials/token-sys.motion.easing.json +36 -0
- package/dist/materials/token-sys.radius.action.json +34 -0
- package/dist/materials/token-sys.radius.block.json +34 -0
- package/dist/materials/token-sys.radius.field.json +34 -0
- package/dist/materials/token-sys.radius.indicator.json +34 -0
- package/dist/materials/token-sys.radius.surface.json +34 -0
- package/dist/materials/token-sys.scrollbar.inset.json +34 -0
- package/dist/materials/token-sys.scrollbar.min-thumb.json +34 -0
- package/dist/materials/token-sys.scrollbar.size.json +34 -0
- package/dist/materials/token-sys.size.choice.json +34 -0
- package/dist/materials/token-sys.size.container.lg.json +37 -0
- package/dist/materials/token-sys.size.container.md.json +37 -0
- package/dist/materials/token-sys.size.container.sm.json +37 -0
- package/dist/materials/token-sys.size.grid.min-item.json +37 -0
- package/dist/materials/token-sys.size.indicator.lg.json +34 -0
- package/dist/materials/token-sys.size.indicator.md.json +34 -0
- package/dist/materials/token-sys.size.indicator.sm.json +34 -0
- package/dist/materials/token-sys.size.keycap.lg.json +34 -0
- package/dist/materials/token-sys.size.keycap.md.json +34 -0
- package/dist/materials/token-sys.size.keycap.sm.json +34 -0
- package/dist/materials/token-sys.size.switch-height.json +34 -0
- package/dist/materials/token-sys.size.switch-thumb.json +34 -0
- package/dist/materials/token-sys.size.switch-width.json +34 -0
- package/dist/materials/token-sys.size.touch.json +34 -0
- package/dist/materials/token-sys.space.0.json +34 -0
- package/dist/materials/token-sys.space.1.json +34 -0
- package/dist/materials/token-sys.space.12.json +34 -0
- package/dist/materials/token-sys.space.2.json +34 -0
- package/dist/materials/token-sys.space.3.json +34 -0
- package/dist/materials/token-sys.space.4.json +34 -0
- package/dist/materials/token-sys.space.6.json +34 -0
- package/dist/materials/token-sys.space.8.json +34 -0
- package/dist/materials/token-sys.stroke.width.json +34 -0
- package/dist/materials/token-sys.type.body.line-height.json +31 -0
- package/dist/materials/token-sys.type.body.size.json +34 -0
- package/dist/materials/token-sys.type.body.tracking.json +34 -0
- package/dist/materials/token-sys.type.body.weight.json +31 -0
- package/dist/materials/token-sys.type.compact.line-height.json +31 -0
- package/dist/materials/token-sys.type.compact.size.json +34 -0
- package/dist/materials/token-sys.type.compact.tracking.json +34 -0
- package/dist/materials/token-sys.type.compact.weight.json +31 -0
- package/dist/materials/token-sys.type.control.line-height.json +31 -0
- package/dist/materials/token-sys.type.control.size.json +34 -0
- package/dist/materials/token-sys.type.control.tracking.json +34 -0
- package/dist/materials/token-sys.type.control.weight.json +31 -0
- package/dist/materials/token-sys.type.dialog-title.line-height.json +33 -0
- package/dist/materials/token-sys.type.dialog-title.size.json +36 -0
- package/dist/materials/token-sys.type.dialog-title.tracking.json +36 -0
- package/dist/materials/token-sys.type.dialog-title.weight.json +33 -0
- package/dist/materials/token-sys.type.display.line-height.json +31 -0
- package/dist/materials/token-sys.type.display.size.json +34 -0
- package/dist/materials/token-sys.type.display.tracking.json +34 -0
- package/dist/materials/token-sys.type.display.weight.json +31 -0
- package/dist/materials/token-sys.type.field-label.line-height.json +33 -0
- package/dist/materials/token-sys.type.field-label.size.json +36 -0
- package/dist/materials/token-sys.type.field-label.tracking.json +36 -0
- package/dist/materials/token-sys.type.field-label.weight.json +33 -0
- package/dist/materials/token-sys.type.group-title.line-height.json +33 -0
- package/dist/materials/token-sys.type.group-title.size.json +36 -0
- package/dist/materials/token-sys.type.group-title.tracking.json +36 -0
- package/dist/materials/token-sys.type.group-title.weight.json +33 -0
- package/dist/materials/token-sys.type.helper.line-height.json +31 -0
- package/dist/materials/token-sys.type.helper.size.json +34 -0
- package/dist/materials/token-sys.type.helper.tracking.json +34 -0
- package/dist/materials/token-sys.type.helper.weight.json +31 -0
- package/dist/materials/token-sys.type.label.line-height.json +31 -0
- package/dist/materials/token-sys.type.label.size.json +34 -0
- package/dist/materials/token-sys.type.label.tracking.json +34 -0
- package/dist/materials/token-sys.type.label.weight.json +31 -0
- package/dist/materials/token-sys.type.large.line-height.json +31 -0
- package/dist/materials/token-sys.type.large.size.json +34 -0
- package/dist/materials/token-sys.type.large.tracking.json +34 -0
- package/dist/materials/token-sys.type.large.weight.json +31 -0
- package/dist/materials/token-sys.type.lead.line-height.json +31 -0
- package/dist/materials/token-sys.type.lead.size.json +34 -0
- package/dist/materials/token-sys.type.lead.tracking.json +34 -0
- package/dist/materials/token-sys.type.lead.weight.json +31 -0
- package/dist/materials/token-sys.type.page.line-height.json +31 -0
- package/dist/materials/token-sys.type.page.size.json +34 -0
- package/dist/materials/token-sys.type.page.tracking.json +34 -0
- package/dist/materials/token-sys.type.page.weight.json +31 -0
- package/dist/materials/token-sys.type.section.line-height.json +31 -0
- package/dist/materials/token-sys.type.section.size.json +34 -0
- package/dist/materials/token-sys.type.section.tracking.json +34 -0
- package/dist/materials/token-sys.type.section.weight.json +31 -0
- package/knowledge.json +522 -0
- package/lib/index.d.ts +33 -0
- package/lib/index.mjs +144 -0
- package/lib/inspect.d.ts +12 -0
- package/lib/inspect.mjs +187 -0
- package/manifest.json +51 -1
- package/package.json +13 -1
- package/references/component-families.md +146 -0
- package/references/composition.md +4 -4
- package/references/customization.md +14 -0
- package/references/flood-composition/SKILL.md +34 -0
- package/references/flood-data-display/SKILL.md +149 -0
- package/references/flood-feedback/SKILL.md +49 -3
- package/references/flood-forms/SKILL.md +82 -2
- package/references/flood-foundations/SKILL.md +43 -0
- package/references/flood-hierarchy/SKILL.md +103 -0
- package/references/flood-interface-content/SKILL.md +163 -0
- package/references/flood-motion/SKILL.md +44 -0
- package/references/flood-navigation/SKILL.md +195 -0
- package/references/flood-overlays/SKILL.md +42 -0
- package/references/flood-records/SKILL.md +148 -0
- package/references/flood-spacing/SKILL.md +54 -0
- package/references/flood-verification/SKILL.md +72 -0
- package/references/interface-content-examples.md +51 -0
- package/references/knowledge.md +49 -0
- package/references/record-decisions.md +25 -0
- package/references/rendered-review.md +102 -0
- package/references/routing.md +1 -0
- package/references/spacing.md +30 -0
- package/rules.json +242 -6
- package/workflows.json +171 -10
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# DateTimePicker
|
|
2
|
+
|
|
3
|
+
A composed civil date and wall-clock time with separate form values.
|
|
4
|
+
|
|
5
|
+
Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
|
|
6
|
+
|
|
7
|
+
## Example
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
"use client";
|
|
11
|
+
|
|
12
|
+
import { FloodRoot, DateTimePicker } from "@flood-md/react";
|
|
13
|
+
import "@flood-md/react/styles.css";
|
|
14
|
+
|
|
15
|
+
export function Example() {
|
|
16
|
+
return (
|
|
17
|
+
<FloodRoot>
|
|
18
|
+
<DateTimePicker label="Schedule" dateName="date" timeName="time" defaultValue={{date:"2026-10-26",time:"09:30"}} />
|
|
19
|
+
</FloodRoot>
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Design notes
|
|
25
|
+
|
|
26
|
+
- Date and time submit as separate fields. No timezone, UTC conversion or instant is inferred.
|
|
27
|
+
- Date bounds and daily time bounds are independent. Use application validation for cross-field business rules.
|
|
28
|
+
|
|
29
|
+
## API reference
|
|
30
|
+
|
|
31
|
+
| Prop | Values | Default |
|
|
32
|
+
| --- | --- | --- |
|
|
33
|
+
| `label` | `string` | `Required` |
|
|
34
|
+
| `validationMessage` | `string` | `—` |
|
|
35
|
+
| `timeInterval` | `number` | `—` |
|
|
36
|
+
| `hideLabel` | `boolean` | `—` |
|
|
37
|
+
| `hideFieldLabels` | `boolean` | `—` |
|
|
38
|
+
| `value` | `DateTimeValue` | `—` |
|
|
39
|
+
| `defaultValue` | `DateTimeValue` | `—` |
|
|
40
|
+
| `onValueChange` | `(value: DateTimeValue) => void` | `—` |
|
|
41
|
+
| `dateLabel` | `string` | `—` |
|
|
42
|
+
| `timeLabel` | `string` | `—` |
|
|
43
|
+
| `datePickerLabels` | `Pick<DatePickerProps, "calendarLabel" \| "openCalendarLabel" \| "previousMonthLabel" \| "nextMonthLabel" \| "viewLabels" \| "segmentLabels" \| "messages">` | `—` |
|
|
44
|
+
| `timePickerLabels` | `Pick<TimePickerProps, "panelLabel" \| "openTimeLabel" \| "segmentLabels" \| "messages">` | `—` |
|
|
45
|
+
| `dateName` | `string` | `—` |
|
|
46
|
+
| `timeName` | `string` | `—` |
|
|
47
|
+
| `form` | `string` | `—` |
|
|
48
|
+
| `required` | `boolean` | `—` |
|
|
49
|
+
| `disabled` | `boolean` | `—` |
|
|
50
|
+
| `readOnly` | `boolean` | `—` |
|
|
51
|
+
| `controlSize` | `"sm" \| "md" \| "lg" \| "xl"` | `—` |
|
|
52
|
+
| `precision` | `"minute" \| "second"` | `—` |
|
|
53
|
+
| `order` | `DateFieldProps["order"]` | `—` |
|
|
54
|
+
| `locale` | `string` | `—` |
|
|
55
|
+
| `minDate` | `string` | `—` |
|
|
56
|
+
| `maxDate` | `string` | `—` |
|
|
57
|
+
| `minTime` | `string` | `—` |
|
|
58
|
+
| `maxTime` | `string` | `—` |
|
|
59
|
+
| `step` | `number` | `—` |
|
|
60
|
+
| `status` | `"error" \| "warning" \| "success" \| "info"` | `—` |
|
|
61
|
+
| `description` | `string` | `—` |
|
|
62
|
+
| `Native HTML props` | `Omit<HTMLAttributes<HTMLDivElement>, "children" \| "defaultValue" \| "onChange">` | `Forwarded` |
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# DateTimeRangePicker
|
|
2
|
+
|
|
3
|
+
An ordered civil date/time range with four atomic form values.
|
|
4
|
+
|
|
5
|
+
Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
|
|
6
|
+
|
|
7
|
+
## Example
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
"use client";
|
|
11
|
+
|
|
12
|
+
import { FloodRoot, DateTimeRangePicker } from "@flood-md/react";
|
|
13
|
+
import "@flood-md/react/styles.css";
|
|
14
|
+
|
|
15
|
+
export function Example() {
|
|
16
|
+
return (
|
|
17
|
+
<FloodRoot>
|
|
18
|
+
<DateTimeRangePicker label="Booking" startDateName="startDate" startTimeName="startTime" endDateName="endDate" endTimeName="endTime"
|
|
19
|
+
defaultValue={{start:{date:"2026-10-27",time:"09:00"},end:{date:"2026-10-27",time:"18:00"}}} required />
|
|
20
|
+
</FloodRoot>
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Design notes
|
|
26
|
+
|
|
27
|
+
- Incomplete and reversed ranges do not contribute accepted values.
|
|
28
|
+
- No timezone or timestamp inference. Server availability remains host owned.
|
|
29
|
+
- Only range and endpoint headings are visible; individual field names remain accessible.
|
|
30
|
+
|
|
31
|
+
## API reference
|
|
32
|
+
|
|
33
|
+
| Prop | Values | Default |
|
|
34
|
+
| --- | --- | --- |
|
|
35
|
+
| `label` | `string` | `Required` |
|
|
36
|
+
| `hideLabel` | `boolean` | `—` |
|
|
37
|
+
| `value` | `DateTimeRangeValue` | `—` |
|
|
38
|
+
| `defaultValue` | `DateTimeRangeValue` | `—` |
|
|
39
|
+
| `onValueChange` | `(range: DateTimeRangeValue) => void` | `—` |
|
|
40
|
+
| `startDateName` | `string` | `—` |
|
|
41
|
+
| `startTimeName` | `string` | `—` |
|
|
42
|
+
| `endDateName` | `string` | `—` |
|
|
43
|
+
| `endTimeName` | `string` | `—` |
|
|
44
|
+
| `startLabel` | `string` | `—` |
|
|
45
|
+
| `endLabel` | `string` | `—` |
|
|
46
|
+
| `startDateLabel` | `string` | `—` |
|
|
47
|
+
| `startTimeLabel` | `string` | `—` |
|
|
48
|
+
| `endDateLabel` | `string` | `—` |
|
|
49
|
+
| `endTimeLabel` | `string` | `—` |
|
|
50
|
+
| `startDatePickerLabels` | `DateTimePickerProps["datePickerLabels"]` | `—` |
|
|
51
|
+
| `endDatePickerLabels` | `DateTimePickerProps["datePickerLabels"]` | `—` |
|
|
52
|
+
| `startTimePickerLabels` | `DateTimePickerProps["timePickerLabels"]` | `—` |
|
|
53
|
+
| `endTimePickerLabels` | `DateTimePickerProps["timePickerLabels"]` | `—` |
|
|
54
|
+
| `form` | `string` | `—` |
|
|
55
|
+
| `required` | `boolean` | `—` |
|
|
56
|
+
| `disabled` | `boolean` | `—` |
|
|
57
|
+
| `readOnly` | `boolean` | `—` |
|
|
58
|
+
| `controlSize` | `"sm" \| "md" \| "lg" \| "xl"` | `—` |
|
|
59
|
+
| `precision` | `"minute" \| "second"` | `—` |
|
|
60
|
+
| `order` | `DateFieldProps["order"]` | `—` |
|
|
61
|
+
| `locale` | `string` | `—` |
|
|
62
|
+
| `minDate` | `string` | `—` |
|
|
63
|
+
| `maxDate` | `string` | `—` |
|
|
64
|
+
| `step` | `number` | `—` |
|
|
65
|
+
| `interval` | `number` | `—` |
|
|
66
|
+
| `status` | `"error" \| "warning" \| "success" \| "info"` | `—` |
|
|
67
|
+
| `description` | `string` | `—` |
|
|
68
|
+
| `incompleteMessage` | `string` | `—` |
|
|
69
|
+
| `reversedMessage` | `string` | `—` |
|
|
70
|
+
| `Native HTML props` | `Omit<HTMLAttributes<HTMLDivElement>, "children" \| "defaultValue" \| "onChange">` | `Forwarded` |
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# DescriptionList
|
|
2
|
+
|
|
3
|
+
Related terms and descriptions with native list semantics and responsive grouping.
|
|
4
|
+
|
|
5
|
+
Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
|
|
6
|
+
|
|
7
|
+
## Example
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
"use client";
|
|
11
|
+
|
|
12
|
+
import { FloodRoot, DescriptionList } from "@flood-md/react";
|
|
13
|
+
import "@flood-md/react/styles.css";
|
|
14
|
+
|
|
15
|
+
export function Example() {
|
|
16
|
+
return (
|
|
17
|
+
<FloodRoot>
|
|
18
|
+
<DescriptionList items={[
|
|
19
|
+
{id:"project",term:"Project",description:"Flood"},
|
|
20
|
+
{id:"version",term:"Version",description:"0.2.4"},
|
|
21
|
+
]} />
|
|
22
|
+
</FloodRoot>
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Design notes
|
|
28
|
+
|
|
29
|
+
- Renders native dl/dt/dd groups. IDs are stable React keys, not generated DOM anchors; require unique nonempty IDs.
|
|
30
|
+
- Inline layout becomes stacked when the component container is narrow. Stacked layout is always one column.
|
|
31
|
+
- Density and dividers affect presentation. Values may contain React content; the host owns formatting and missing-value text.
|
|
32
|
+
- Native dl props, className/style and HTMLDListElement ref target the list. Available in 0.2.4.
|
|
33
|
+
|
|
34
|
+
## API reference
|
|
35
|
+
|
|
36
|
+
| Prop | Values | Default |
|
|
37
|
+
| --- | --- | --- |
|
|
38
|
+
| `items` | `readonly DescriptionItem[]` | `Required` |
|
|
39
|
+
| `layout` | `"inline" \| "stacked"` | `"inline"` |
|
|
40
|
+
| `density` | `"compact" \| "comfortable"` | `"compact"` |
|
|
41
|
+
| `dividers` | `boolean` | `false` |
|
|
42
|
+
| `Native HTML props` | `Omit<HTMLAttributes<HTMLDListElement>, "children">` | `Forwarded` |
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Dialog
|
|
2
|
+
|
|
3
|
+
A named native modal dialog with inert background and managed focus.
|
|
4
|
+
|
|
5
|
+
Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
|
|
6
|
+
|
|
7
|
+
## Example
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
"use client";
|
|
11
|
+
|
|
12
|
+
import { FloodRoot, Dialog, Button } from "@flood-md/react";
|
|
13
|
+
import "@flood-md/react/styles.css";
|
|
14
|
+
|
|
15
|
+
export function Example() {
|
|
16
|
+
return (
|
|
17
|
+
<FloodRoot>
|
|
18
|
+
<Dialog title="Create a project" trigger={trigger => <Button {...trigger}>Open dialog</Button>}>Project details.</Dialog>
|
|
19
|
+
</FloodRoot>
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Design notes
|
|
25
|
+
|
|
26
|
+
- Uses native showModal, not a simulated modal div.
|
|
27
|
+
- Escape closes the top layer; outside closing can be disabled independently. Tab remains inside the dialog.
|
|
28
|
+
- Closed content unmounts. Forward trigger props/ref; initialFocusRef can select a safe initial control. Modern native dialog support is required.
|
|
29
|
+
|
|
30
|
+
## API reference
|
|
31
|
+
|
|
32
|
+
| Prop | Values | Default |
|
|
33
|
+
| --- | --- | --- |
|
|
34
|
+
| `title` | `string` | `Required` |
|
|
35
|
+
| `description` | `string` | `—` |
|
|
36
|
+
| `trigger` | `(props: OverlayTriggerProps) => ReactNode` | `Required` |
|
|
37
|
+
| `children` | `ReactNode` | `—` |
|
|
38
|
+
| `open` | `boolean` | `—` |
|
|
39
|
+
| `defaultOpen` | `boolean` | `false` |
|
|
40
|
+
| `onOpenChange` | `(open: boolean) => void` | `—` |
|
|
41
|
+
| `disabled` | `boolean` | `false` |
|
|
42
|
+
| `closeLabel` | `string` | `"Close"` |
|
|
43
|
+
| `closeOnOutsideClick` | `boolean` | `true` |
|
|
44
|
+
| `initialFocusRef` | `RefObject<HTMLElement \| null>` | `—` |
|
|
45
|
+
| `Native HTML props` | `Omit<HTMLAttributes<HTMLDialogElement>, "children" \| "title" \| "role">` | `Forwarded` |
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Divider
|
|
2
|
+
|
|
3
|
+
A semantic separator with a low-emphasis visual line.
|
|
4
|
+
|
|
5
|
+
Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
|
|
6
|
+
|
|
7
|
+
## Example
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
"use client";
|
|
11
|
+
|
|
12
|
+
import { FloodRoot, Stack, Text, Divider } from "@flood-md/react";
|
|
13
|
+
import "@flood-md/react/styles.css";
|
|
14
|
+
|
|
15
|
+
export function Example() {
|
|
16
|
+
return (
|
|
17
|
+
<FloodRoot>
|
|
18
|
+
<Stack gap="4">
|
|
19
|
+
<Text>Workspace</Text>
|
|
20
|
+
<Divider />
|
|
21
|
+
<Text>Account</Text>
|
|
22
|
+
</Stack>
|
|
23
|
+
</FloodRoot>
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Design notes
|
|
29
|
+
|
|
30
|
+
- The line is decorative in contrast terms: content grouping must remain understandable without seeing it.
|
|
31
|
+
- Divider renders a native hr; it has no orientation prop.
|
|
32
|
+
|
|
33
|
+
## API reference
|
|
34
|
+
|
|
35
|
+
| Prop | Values | Default |
|
|
36
|
+
| --- | --- | --- |
|
|
37
|
+
| `Native HTML props` | `HTMLAttributes<HTMLHRElement>` | `Forwarded` |
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Drawer
|
|
2
|
+
|
|
3
|
+
A modal edge panel with a steady header, scrollable body and optional footer.
|
|
4
|
+
|
|
5
|
+
Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
|
|
6
|
+
|
|
7
|
+
## Example
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
"use client";
|
|
11
|
+
|
|
12
|
+
import { FloodRoot, Drawer, Button, Field, Input } from "@flood-md/react";
|
|
13
|
+
import "@flood-md/react/styles.css";
|
|
14
|
+
|
|
15
|
+
export function Example() {
|
|
16
|
+
return (
|
|
17
|
+
<FloodRoot>
|
|
18
|
+
<Drawer title="Project settings" description="Keep the details close." trigger={props => <Button {...props}>Open settings</Button>}>
|
|
19
|
+
<Field label="Project name">{control => <Input {...control} defaultValue="Flood" />}</Field>
|
|
20
|
+
</Drawer>
|
|
21
|
+
</FloodRoot>
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Design notes
|
|
27
|
+
|
|
28
|
+
- Uses Flood native Dialog focus containment, scroll lock, background inertness, nested layers and return focus. Escape and the named close IconButton dismiss it; closeOnOutsideClick defaults to true. Controlled open/onOpenChange and initialFocusRef match Dialog.
|
|
29
|
+
- side is logical start/end or physical top/bottom. size sets 20/26/34rem for sm/md/lg, capped to the viewport. Vertical drawers occupy the viewport height; horizontal drawers occupy its width. Entry motion respects reduced motion; closing is immediate.
|
|
30
|
+
- Choose width against a populated record. For longer messages and several controls, compare md and lg. Use the description slot for short context and compose independent body groups with Section or Fieldset. Keep persistent actions in footer.
|
|
31
|
+
- The body scrolls with Flood ScrollArea while the header and optional footer remain visible when space allows. Responsive padding and full-width narrow descriptions preserve the reading area at enlarged text; if the chrome cannot fit, the whole panel can scroll rather than clipping the body. Footer actions are host-owned, without implicit save or close. No swipe/drag gesture or nested navigation engine is included. Available in 0.2.5.
|
|
32
|
+
|
|
33
|
+
## API reference
|
|
34
|
+
|
|
35
|
+
| Prop | Values | Default |
|
|
36
|
+
| --- | --- | --- |
|
|
37
|
+
| `title` | `string` | `Required` |
|
|
38
|
+
| `description` | `string` | `—` |
|
|
39
|
+
| `trigger` | `(props: OverlayTriggerProps) => ReactNode` | `Required` |
|
|
40
|
+
| `children` | `ReactNode` | `—` |
|
|
41
|
+
| `open` | `boolean` | `—` |
|
|
42
|
+
| `defaultOpen` | `boolean` | `false` |
|
|
43
|
+
| `onOpenChange` | `(open: boolean) => void` | `—` |
|
|
44
|
+
| `disabled` | `boolean` | `—` |
|
|
45
|
+
| `closeLabel` | `string` | `"Close"` |
|
|
46
|
+
| `closeOnOutsideClick` | `boolean` | `true` |
|
|
47
|
+
| `initialFocusRef` | `RefObject<HTMLElement \| null>` | `—` |
|
|
48
|
+
| `side` | `"start" \| "end" \| "top" \| "bottom"` | `"end"` |
|
|
49
|
+
| `size` | `"sm" \| "md" \| "lg"` | `"md"` |
|
|
50
|
+
| `footer` | `ReactNode` | `—` |
|
|
51
|
+
| `Native HTML props` | `Omit<HTMLAttributes<HTMLDialogElement>, "children" \| "title" \| "role">` | `Forwarded` |
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Dropzone
|
|
2
|
+
|
|
3
|
+
A file drop target composed with the native Flood FileInput.
|
|
4
|
+
|
|
5
|
+
Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
|
|
6
|
+
|
|
7
|
+
## Example
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
"use client";
|
|
11
|
+
|
|
12
|
+
import { FloodRoot, Dropzone } from "@flood-md/react";
|
|
13
|
+
import "@flood-md/react/styles.css";
|
|
14
|
+
|
|
15
|
+
export function Example() {
|
|
16
|
+
return (
|
|
17
|
+
<FloodRoot>
|
|
18
|
+
<Dropzone label="Project attachments" name="attachments" multiple accept=".pdf,image/*" />
|
|
19
|
+
</FloodRoot>
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Design notes
|
|
25
|
+
|
|
26
|
+
- The existing FileInput remains the real chooser and successful native form control. Dropping files dispatches the same selection flow: multiple appends and deduplicates; single selection keeps the first dropped file. Native form reset and per-file removal remain intact.
|
|
27
|
+
- The zone responds only to file drags and prevents navigation on file drop. Disabled fields reject drops. Translate label/description and FileInput action labels. The chooser remains keyboard accessible; dropping is an additional pointer workflow.
|
|
28
|
+
- accept guides the native chooser; the host must validate dropped file types, size and contents. Directories, remote transfer, progress, server upload and image processing are outside this control. No file contents are read. Available in 0.2.5.
|
|
29
|
+
|
|
30
|
+
## API reference
|
|
31
|
+
|
|
32
|
+
| Prop | Values | Default |
|
|
33
|
+
| --- | --- | --- |
|
|
34
|
+
| `status` | `"error" \| "warning" \| "success" \| "info"` | `—` |
|
|
35
|
+
| `invalid` | `boolean` | `—` |
|
|
36
|
+
| `controlSize` | `"sm" \| "md" \| "lg" \| "xl"` | `—` |
|
|
37
|
+
| `clearable` | `boolean` | `—` |
|
|
38
|
+
| `clearLabel` | `string` | `—` |
|
|
39
|
+
| `selectionLabel` | `string` | `—` |
|
|
40
|
+
| `removeFileLabel` | `string` | `—` |
|
|
41
|
+
| `onFilesChange` | `(files: readonly File[]) => void` | `—` |
|
|
42
|
+
| `label` | `string` | `Required` |
|
|
43
|
+
| `description` | `string` | `"Drop files here or choose from your device."` |
|
|
44
|
+
| `multiple` | `Inherited native HTML prop` | `true` |
|
|
45
|
+
| `Native HTML props` | `Omit<Omit<InputHTMLAttributes<HTMLInputElement>, "type" \| "value" \| "defaultValue" \| "children" \| "readOnly">, "onDragEnter" \| "onDragLeave" \| "onDragOver" \| "onDrop">` | `Forwarded` |
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Editable
|
|
2
|
+
|
|
3
|
+
Inline editing with explicit save/cancel and a committed form value.
|
|
4
|
+
|
|
5
|
+
Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
|
|
6
|
+
|
|
7
|
+
## Example
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
"use client";
|
|
11
|
+
|
|
12
|
+
import { FloodRoot, Editable } from "@flood-md/react";
|
|
13
|
+
import "@flood-md/react/styles.css";
|
|
14
|
+
|
|
15
|
+
export function Example() {
|
|
16
|
+
return (
|
|
17
|
+
<FloodRoot>
|
|
18
|
+
<Editable label="Project name" defaultValue="Flood workspace" name="project" />
|
|
19
|
+
</FloodRoot>
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Design notes
|
|
25
|
+
|
|
26
|
+
- Preview and edit modes keep a separate draft. Enter commits and Escape cancels; IME composition does not submit.
|
|
27
|
+
- Use blurAction to commit, cancel or preserve the draft on outside focus. Moving focus to the save/cancel actions is internal to the editor.
|
|
28
|
+
- The host owns controlled value and editing props; callbacks request changes. The hidden named form field contains only the committed value.
|
|
29
|
+
- readOnly keeps a copyable field; disabled prevents editing. Localized action labels and inputRef are available. Introduced in 0.2.7.
|
|
30
|
+
|
|
31
|
+
## API reference
|
|
32
|
+
|
|
33
|
+
| Prop | Values | Default |
|
|
34
|
+
| --- | --- | --- |
|
|
35
|
+
| `label` | `string` | `Required` |
|
|
36
|
+
| `hideLabel` | `boolean` | `—` |
|
|
37
|
+
| `value` | `string` | `—` |
|
|
38
|
+
| `defaultValue` | `string` | `—` |
|
|
39
|
+
| `onValueChange` | `(value: string) => void` | `—` |
|
|
40
|
+
| `editing` | `boolean` | `—` |
|
|
41
|
+
| `defaultEditing` | `boolean` | `—` |
|
|
42
|
+
| `onEditingChange` | `(editing: boolean) => void` | `—` |
|
|
43
|
+
| `onCommit` | `(value: string) => void` | `—` |
|
|
44
|
+
| `onCancel` | `() => void` | `—` |
|
|
45
|
+
| `blurAction` | `"commit" \| "cancel" \| "none"` | `"commit"` |
|
|
46
|
+
| `readOnly` | `boolean` | `—` |
|
|
47
|
+
| `disabled` | `boolean` | `—` |
|
|
48
|
+
| `placeholder` | `string` | `—` |
|
|
49
|
+
| `controlSize` | `"sm" \| "md" \| "lg" \| "xl"` | `"md"` |
|
|
50
|
+
| `showActions` | `boolean` | `true` |
|
|
51
|
+
| `editLabel` | `string` | `—` |
|
|
52
|
+
| `saveLabel` | `string` | `—` |
|
|
53
|
+
| `cancelLabel` | `string` | `—` |
|
|
54
|
+
| `inputRef` | `Ref<HTMLInputElement>` | `—` |
|
|
55
|
+
| `name` | `string` | `—` |
|
|
56
|
+
| `form` | `string` | `—` |
|
|
57
|
+
| `Native HTML props` | `Omit<HTMLAttributes<HTMLDivElement>, "defaultValue" \| "onChange" \| "children">` | `Forwarded` |
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# EmptyState
|
|
2
|
+
|
|
3
|
+
A quiet explanation and optional next action when content is absent.
|
|
4
|
+
|
|
5
|
+
Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
|
|
6
|
+
|
|
7
|
+
## Example
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
"use client";
|
|
11
|
+
|
|
12
|
+
import { FloodRoot, EmptyState, Button } from "@flood-md/react";
|
|
13
|
+
import "@flood-md/react/styles.css";
|
|
14
|
+
|
|
15
|
+
export function Example() {
|
|
16
|
+
return (
|
|
17
|
+
<FloodRoot>
|
|
18
|
+
<EmptyState title="No projects yet" description="Create a project to get started." actions={<Button>Create project</Button>} />
|
|
19
|
+
</FloodRoot>
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Design notes
|
|
25
|
+
|
|
26
|
+
- Composes Stack, Heading, Text, IconSlot and Inline. Optional icon is decorative; title and description explain the missing content.
|
|
27
|
+
- Static by default, without status/alert announcements or automatic focus. Host owns whether a result change should be announced.
|
|
28
|
+
- Choose headingLevel for the page hierarchy. Density controls relative padding. Host actions remain ordinary named controls; no loading, fetching or error recovery engine is supplied.
|
|
29
|
+
- Available in 0.2.4; use matching installed declarations.
|
|
30
|
+
|
|
31
|
+
## API reference
|
|
32
|
+
|
|
33
|
+
| Prop | Values | Default |
|
|
34
|
+
| --- | --- | --- |
|
|
35
|
+
| `title` | `string` | `Required` |
|
|
36
|
+
| `description` | `ReactNode` | `—` |
|
|
37
|
+
| `icon` | `ReactNode` | `—` |
|
|
38
|
+
| `actions` | `ReactNode` | `—` |
|
|
39
|
+
| `headingLevel` | `2 \| 3 \| 4 \| 5 \| 6` | `2` |
|
|
40
|
+
| `density` | `"compact" \| "comfortable"` | `"comfortable"` |
|
|
41
|
+
| `Native HTML props` | `Omit<HTMLAttributes<HTMLDivElement>, "title" \| "children">` | `Forwarded` |
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# ErrorSummary
|
|
2
|
+
|
|
3
|
+
A linked validation summary that focuses host-owned invalid fields.
|
|
4
|
+
|
|
5
|
+
Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
|
|
6
|
+
|
|
7
|
+
## Example
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
"use client";
|
|
11
|
+
|
|
12
|
+
import { FloodRoot, ErrorSummary } from "@flood-md/react";
|
|
13
|
+
import "@flood-md/react/styles.css";
|
|
14
|
+
|
|
15
|
+
export function Example() {
|
|
16
|
+
return (
|
|
17
|
+
<FloodRoot>
|
|
18
|
+
<ErrorSummary title="Review the form" errors={[{id:"project",fieldId:"project",message:"Enter a project name."}]} />
|
|
19
|
+
</FloodRoot>
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Design notes
|
|
25
|
+
|
|
26
|
+
- The host supplies errors; ErrorSummary does not infer validation or submit a form. Each entry links to an exact field ID.
|
|
27
|
+
- Normal activation focuses the target while modifier navigation remains native. onSelect can cancel the action before focus moves.
|
|
28
|
+
- announcement defaults to off. autoFocus opts into focus on appearance, not on every error update, and suppresses duplicate live announcements. Empty errors render nothing. Introduced in 0.2.7.
|
|
29
|
+
|
|
30
|
+
## API reference
|
|
31
|
+
|
|
32
|
+
| Prop | Values | Default |
|
|
33
|
+
| --- | --- | --- |
|
|
34
|
+
| `title` | `string` | `Required` |
|
|
35
|
+
| `errors` | `readonly ErrorSummaryItem[]` | `Required` |
|
|
36
|
+
| `description` | `ReactNode` | `—` |
|
|
37
|
+
| `announcement` | `"off" \| "polite" \| "assertive"` | `"off"` |
|
|
38
|
+
| `autoFocus` | `boolean` | `false` |
|
|
39
|
+
| `onSelect` | `(error: ErrorSummaryItem, event: ReactMouseEvent<HTMLAnchorElement>) => void` | `—` |
|
|
40
|
+
| `Native HTML props` | `Omit<HTMLAttributes<HTMLDivElement>, "children" \| "title" \| "onSelect" \| "role" \| "aria-live">` | `Forwarded` |
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Field
|
|
2
|
+
|
|
3
|
+
The association between a visible label, its input and supporting messages.
|
|
4
|
+
|
|
5
|
+
Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
|
|
6
|
+
|
|
7
|
+
## Example
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
"use client";
|
|
11
|
+
|
|
12
|
+
import { FloodRoot, Field, Input } from "@flood-md/react";
|
|
13
|
+
import "@flood-md/react/styles.css";
|
|
14
|
+
|
|
15
|
+
export function Example() {
|
|
16
|
+
return (
|
|
17
|
+
<FloodRoot>
|
|
18
|
+
<Field label="Project name" required hint="Visible to your team.">
|
|
19
|
+
{(control) => <Input {...control} name="project" />}
|
|
20
|
+
</Field>
|
|
21
|
+
</FloodRoot>
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Design notes
|
|
27
|
+
|
|
28
|
+
- Spread the supplied control props onto one Input or Textarea.
|
|
29
|
+
- Field merges describedBy with hint/error IDs and forwards native required through its function child.
|
|
30
|
+
- The host owns validation rules. Compose Field in a client component in Next.js.
|
|
31
|
+
- Field is not a generic native div wrapper and does not forward a ref.
|
|
32
|
+
|
|
33
|
+
## API reference
|
|
34
|
+
|
|
35
|
+
| Prop | Values | Default |
|
|
36
|
+
| --- | --- | --- |
|
|
37
|
+
| `status` | `"error" \| "warning" \| "success" \| "info"` | `—` |
|
|
38
|
+
| `message` | `ReactNode` | `—` |
|
|
39
|
+
| `id` | `string` | `—` |
|
|
40
|
+
| `label` | `ReactNode` | `Required` |
|
|
41
|
+
| `hideLabel · 0.2.3` | `boolean` | `false` |
|
|
42
|
+
| `hint` | `ReactNode` | `—` |
|
|
43
|
+
| `error` | `ReactNode` | `—` |
|
|
44
|
+
| `required` | `boolean` | `—` |
|
|
45
|
+
| `describedBy` | `string` | `—` |
|
|
46
|
+
| `children` | `(props: FieldControlProps) => ReactNode` | `Required` |
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Fieldset
|
|
2
|
+
|
|
3
|
+
A native group with a legend, shared descriptions and disabled form behavior.
|
|
4
|
+
|
|
5
|
+
Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
|
|
6
|
+
|
|
7
|
+
## Example
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
"use client";
|
|
11
|
+
|
|
12
|
+
import { FloodRoot, Fieldset, Checkbox } from "@flood-md/react";
|
|
13
|
+
import "@flood-md/react/styles.css";
|
|
14
|
+
|
|
15
|
+
export function Example() {
|
|
16
|
+
return (
|
|
17
|
+
<FloodRoot>
|
|
18
|
+
<Fieldset legend="Notifications" hint="Choose the updates you want.">
|
|
19
|
+
<Checkbox label="Product updates" name="updates" defaultChecked />
|
|
20
|
+
<Checkbox label="Release notes" name="releases" />
|
|
21
|
+
</Fieldset>
|
|
22
|
+
</FloodRoot>
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Design notes
|
|
28
|
+
|
|
29
|
+
- Uses a real fieldset and legend, with a ref to HTMLFieldSetElement. Disabled descendants retain native form semantics.
|
|
30
|
+
- The browser exempts controls in the first legend from inherited disabling. Avoid interactive legend contents unless this is intentional.
|
|
31
|
+
- hint, message, error and external aria-describedby IDs are merged without duplicates. Error takes precedence over an advisory status.
|
|
32
|
+
- Group status describes the group; it does not mark every child invalid, manage selected values or implement a RadioGroup/CheckboxGroup.
|
|
33
|
+
- legendSize="section" gives an independent form section a 1rem semibold title and a 1rem body inset. The default "label" remains a compact choice caption; neither option changes native group semantics.
|
|
34
|
+
|
|
35
|
+
## API reference
|
|
36
|
+
|
|
37
|
+
| Prop | Values | Default |
|
|
38
|
+
| --- | --- | --- |
|
|
39
|
+
| `legend` | `ReactNode` | `Required` |
|
|
40
|
+
| `legendSize · 0.2.10` | `"label" \| "section"` | `"label"` |
|
|
41
|
+
| `hideLabel · 0.2.3` | `boolean` | `false` |
|
|
42
|
+
| `hint` | `ReactNode` | `—` |
|
|
43
|
+
| `error` | `ReactNode` | `—` |
|
|
44
|
+
| `message` | `ReactNode` | `—` |
|
|
45
|
+
| `status` | `"error" \| "warning" \| "success" \| "info"` | `—` |
|
|
46
|
+
| `Native HTML props` | `FieldsetHTMLAttributes<HTMLFieldSetElement>` | `Forwarded` |
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Figure
|
|
2
|
+
|
|
3
|
+
A native figure that keeps media and its caption together.
|
|
4
|
+
|
|
5
|
+
Connect Flood once using [the installation guide](https://flood.md/docs/installation). Then import the components you use; no per-component add command is needed.
|
|
6
|
+
|
|
7
|
+
## Example
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
"use client";
|
|
11
|
+
|
|
12
|
+
import { FloodRoot, Figure, Surface } from "@flood-md/react";
|
|
13
|
+
import "@flood-md/react/styles.css";
|
|
14
|
+
|
|
15
|
+
export function Example() {
|
|
16
|
+
return (
|
|
17
|
+
<FloodRoot>
|
|
18
|
+
<Figure caption="Homepage, desktop layout"><Surface padding="6">Project preview</Surface></Figure>
|
|
19
|
+
</FloodRoot>
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Design notes
|
|
25
|
+
|
|
26
|
+
- Composes native figure and figcaption. The host supplies the image, chart, code or other self-contained content, including its own alt text or accessible name.
|
|
27
|
+
- captionPosition controls DOM reading order as well as placement. Caption content may contain links. Native hidden, dir, lang, style and ref target the figure.
|
|
28
|
+
- Compatible addition in 0.2.5. Uses existing Flood semantic tokens and relative geometry.
|
|
29
|
+
|
|
30
|
+
## API reference
|
|
31
|
+
|
|
32
|
+
| Prop | Values | Default |
|
|
33
|
+
| --- | --- | --- |
|
|
34
|
+
| `caption` | `ReactNode` | `—` |
|
|
35
|
+
| `captionPosition` | `"before" \| "after"` | `"after"` |
|
|
36
|
+
| `Native HTML props` | `HTMLAttributes<HTMLElement>` | `Forwarded` |
|