@flowstack-ui/brick 0.1.9 → 0.1.12
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/README.md +9 -6
- package/dist/agents/accordion.json +8 -2
- package/dist/agents/accordion.md +3 -1
- package/dist/agents/alert-dialog.json +111 -0
- package/dist/agents/alert-dialog.md +53 -0
- package/dist/agents/app-bar.json +5 -4
- package/dist/agents/app-bar.md +4 -3
- package/dist/agents/aspect-ratio.json +80 -0
- package/dist/agents/aspect-ratio.md +45 -0
- package/dist/agents/avatar.json +92 -0
- package/dist/agents/avatar.md +49 -0
- package/dist/agents/badge.json +26 -8
- package/dist/agents/badge.md +11 -6
- package/dist/agents/bleed.json +54 -0
- package/dist/agents/bleed.md +39 -0
- package/dist/agents/blockquote.json +68 -0
- package/dist/agents/blockquote.md +42 -0
- package/dist/agents/button.json +7 -2
- package/dist/agents/button.md +1 -1
- package/dist/agents/card.json +21 -1
- package/dist/agents/card.md +7 -1
- package/dist/agents/checkbox-group.json +108 -0
- package/dist/agents/checkbox-group.md +56 -0
- package/dist/agents/checkbox.json +6 -1
- package/dist/agents/chip.json +73 -0
- package/dist/agents/chip.md +44 -0
- package/dist/agents/code-block.json +92 -0
- package/dist/agents/code-block.md +52 -0
- package/dist/agents/code.json +67 -0
- package/dist/agents/code.md +42 -0
- package/dist/agents/collapsible.json +34 -3
- package/dist/agents/collapsible.md +10 -3
- package/dist/agents/color-picker.json +78 -0
- package/dist/agents/color-picker.md +46 -0
- package/dist/agents/color-swatch.json +51 -0
- package/dist/agents/color-swatch.md +36 -0
- package/dist/agents/combobox.json +95 -0
- package/dist/agents/combobox.md +51 -0
- package/dist/agents/context-menu.json +109 -0
- package/dist/agents/context-menu.md +54 -0
- package/dist/agents/coverage.json +25591 -0
- package/dist/agents/data-grid.json +127 -0
- package/dist/agents/data-grid.md +61 -0
- package/dist/agents/data-list.json +63 -0
- package/dist/agents/data-list.md +41 -0
- package/dist/agents/dialog.json +112 -0
- package/dist/agents/dialog.md +53 -0
- package/dist/agents/dropdown-menu.json +112 -0
- package/dist/agents/dropdown-menu.md +56 -0
- package/dist/agents/em.json +57 -0
- package/dist/agents/em.md +39 -0
- package/dist/agents/feed.json +84 -0
- package/dist/agents/feed.md +48 -0
- package/dist/agents/field.json +6 -1
- package/dist/agents/fieldset.json +6 -1
- package/dist/agents/file-upload.json +93 -0
- package/dist/agents/file-upload.md +50 -0
- package/dist/agents/form.json +11 -2
- package/dist/agents/form.md +2 -1
- package/dist/agents/grid.json +18 -1
- package/dist/agents/grid.md +6 -0
- package/dist/agents/group.json +77 -0
- package/dist/agents/group.md +48 -0
- package/dist/agents/hide.json +14 -0
- package/dist/agents/hide.md +3 -0
- package/dist/agents/highlight.json +73 -0
- package/dist/agents/highlight.md +43 -0
- package/dist/agents/hover-card.json +94 -0
- package/dist/agents/hover-card.md +51 -0
- package/dist/agents/icon-button.json +23 -12
- package/dist/agents/icon-button.md +12 -8
- package/dist/agents/image.json +33 -7
- package/dist/agents/image.md +11 -4
- package/dist/agents/input.json +7 -2
- package/dist/agents/input.md +1 -1
- package/dist/agents/interface-composition.json +224 -18
- package/dist/agents/interface-composition.md +10 -0
- package/dist/agents/kbd.json +62 -0
- package/dist/agents/kbd.md +40 -0
- package/dist/agents/layer-selection.json +1294 -11
- package/dist/agents/layer-selection.md +94 -1
- package/dist/agents/link-box.json +97 -0
- package/dist/agents/link-box.md +53 -0
- package/dist/agents/link.json +34 -5
- package/dist/agents/link.md +12 -2
- package/dist/agents/list.json +1 -1
- package/dist/agents/list.md +1 -1
- package/dist/agents/manifest.json +327 -2
- package/dist/agents/mark.json +56 -0
- package/dist/agents/mark.md +38 -0
- package/dist/agents/menubar.json +109 -0
- package/dist/agents/menubar.md +54 -0
- package/dist/agents/multi-select.json +93 -0
- package/dist/agents/multi-select.md +49 -0
- package/dist/agents/nav-list.json +15 -5
- package/dist/agents/nav-list.md +6 -4
- package/dist/agents/notification-badge.json +88 -0
- package/dist/agents/notification-badge.md +49 -0
- package/dist/agents/number-input.json +89 -0
- package/dist/agents/number-input.md +50 -0
- package/dist/agents/otp-field.json +87 -0
- package/dist/agents/otp-field.md +48 -0
- package/dist/agents/pagination.json +26 -5
- package/dist/agents/pagination.md +11 -4
- package/dist/agents/password-toggle-field.json +87 -0
- package/dist/agents/password-toggle-field.md +48 -0
- package/dist/agents/popover.json +114 -0
- package/dist/agents/popover.md +56 -0
- package/dist/agents/progress-circle.json +85 -0
- package/dist/agents/progress-circle.md +46 -0
- package/dist/agents/progress.json +91 -0
- package/dist/agents/progress.md +48 -0
- package/dist/agents/prose.json +82 -0
- package/dist/agents/prose.md +50 -0
- package/dist/agents/radio-group.json +92 -0
- package/dist/agents/radio-group.md +49 -0
- package/dist/agents/rating.json +91 -0
- package/dist/agents/rating.md +49 -0
- package/dist/agents/reorderable-list.json +74 -0
- package/dist/agents/reorderable-list.md +45 -0
- package/dist/agents/segment-group.json +62 -0
- package/dist/agents/segment-group.md +43 -0
- package/dist/agents/select.json +95 -0
- package/dist/agents/select.md +51 -0
- package/dist/agents/show.json +14 -0
- package/dist/agents/show.md +3 -0
- package/dist/agents/sidebar.json +16 -3
- package/dist/agents/sidebar.md +6 -1
- package/dist/agents/skeleton.json +73 -0
- package/dist/agents/skeleton.md +43 -0
- package/dist/agents/slider.json +88 -0
- package/dist/agents/slider.md +48 -0
- package/dist/agents/stack.json +19 -1
- package/dist/agents/stack.md +7 -0
- package/dist/agents/status.json +59 -0
- package/dist/agents/status.md +40 -0
- package/dist/agents/surface.json +32 -3
- package/dist/agents/surface.md +9 -2
- package/dist/agents/swipeable-item.json +93 -0
- package/dist/agents/swipeable-item.md +50 -0
- package/dist/agents/switch.json +92 -0
- package/dist/agents/switch.md +49 -0
- package/dist/agents/table.json +113 -0
- package/dist/agents/table.md +59 -0
- package/dist/agents/tabs.json +9 -2
- package/dist/agents/tabs.md +4 -1
- package/dist/agents/text.json +23 -8
- package/dist/agents/text.md +10 -7
- package/dist/agents/textarea.json +6 -1
- package/dist/agents/toast.json +91 -0
- package/dist/agents/toast.md +48 -0
- package/dist/agents/toggle-group.json +89 -0
- package/dist/agents/toggle-group.md +49 -0
- package/dist/agents/toggle.json +82 -0
- package/dist/agents/toggle.md +47 -0
- package/dist/agents/toolbar.json +11 -1
- package/dist/agents/toolbar.md +3 -1
- package/dist/agents/tooltip.json +96 -0
- package/dist/agents/tooltip.md +49 -0
- package/dist/agents/tree-grid.json +98 -0
- package/dist/agents/tree-grid.md +51 -0
- package/dist/agents/tree.json +94 -0
- package/dist/agents/tree.md +51 -0
- package/dist/agents/visually-hidden.json +70 -0
- package/dist/agents/visually-hidden.md +42 -0
- package/dist/agents/z-stack.json +21 -1
- package/dist/agents/z-stack.md +5 -0
- package/dist/bleed.d.ts +2 -0
- package/dist/bleed.d.ts.map +1 -0
- package/dist/bleed.js +2 -0
- package/dist/bleed.js.map +1 -0
- package/dist/blockquote.d.ts +2 -0
- package/dist/blockquote.d.ts.map +1 -0
- package/dist/blockquote.js +2 -0
- package/dist/blockquote.js.map +1 -0
- package/dist/color-picker.d.ts +2 -0
- package/dist/color-picker.d.ts.map +1 -0
- package/dist/color-picker.js +2 -0
- package/dist/color-picker.js.map +1 -0
- package/dist/color-swatch.d.ts +2 -0
- package/dist/color-swatch.d.ts.map +1 -0
- package/dist/color-swatch.js +2 -0
- package/dist/color-swatch.js.map +1 -0
- package/dist/components/_responsive-value/ResponsiveValue.d.ts.map +1 -1
- package/dist/components/_responsive-value/ResponsiveValue.js +3 -1
- package/dist/components/_responsive-value/ResponsiveValue.js.map +1 -1
- package/dist/components/_spacing-value/SpacingValue.d.ts +8 -0
- package/dist/components/_spacing-value/SpacingValue.d.ts.map +1 -0
- package/dist/components/_spacing-value/SpacingValue.js +46 -0
- package/dist/components/_spacing-value/SpacingValue.js.map +1 -0
- package/dist/components/accordion/Accordion.js +1 -1
- package/dist/components/app-bar/AppBar.d.ts +7 -3
- package/dist/components/app-bar/AppBar.d.ts.map +1 -1
- package/dist/components/app-bar/AppBar.js +2 -2
- package/dist/components/app-bar/AppBar.js.map +1 -1
- package/dist/components/app-bar/index.d.ts +1 -1
- package/dist/components/app-bar/index.d.ts.map +1 -1
- package/dist/components/app-bar/index.js.map +1 -1
- package/dist/components/avatar/Avatar.d.ts +1 -1
- package/dist/components/avatar/Avatar.d.ts.map +1 -1
- package/dist/components/avatar/Avatar.js.map +1 -1
- package/dist/components/badge/Badge.d.ts +2 -2
- package/dist/components/badge/Badge.d.ts.map +1 -1
- package/dist/components/bleed/Bleed.d.ts +28 -0
- package/dist/components/bleed/Bleed.d.ts.map +1 -0
- package/dist/components/bleed/Bleed.js +92 -0
- package/dist/components/bleed/Bleed.js.map +1 -0
- package/dist/components/bleed/index.d.ts +2 -0
- package/dist/components/bleed/index.d.ts.map +1 -0
- package/dist/components/bleed/index.js +2 -0
- package/dist/components/bleed/index.js.map +1 -0
- package/dist/components/blockquote/Blockquote.d.ts +33 -0
- package/dist/components/blockquote/Blockquote.d.ts.map +1 -0
- package/dist/components/blockquote/Blockquote.js +36 -0
- package/dist/components/blockquote/Blockquote.js.map +1 -0
- package/dist/components/blockquote/index.d.ts +2 -0
- package/dist/components/blockquote/index.d.ts.map +1 -0
- package/dist/components/blockquote/index.js +2 -0
- package/dist/components/blockquote/index.js.map +1 -0
- package/dist/components/code-block/CodeBlock.d.ts +33 -0
- package/dist/components/code-block/CodeBlock.d.ts.map +1 -1
- package/dist/components/code-block/CodeBlock.js +60 -6
- package/dist/components/code-block/CodeBlock.js.map +1 -1
- package/dist/components/code-block/context.d.ts +2 -0
- package/dist/components/code-block/context.d.ts.map +1 -1
- package/dist/components/code-block/context.js.map +1 -1
- package/dist/components/code-block/index.d.ts +1 -1
- package/dist/components/code-block/index.d.ts.map +1 -1
- package/dist/components/code-block/index.js +1 -1
- package/dist/components/code-block/index.js.map +1 -1
- package/dist/components/collapsible/Collapsible.d.ts +9 -3
- package/dist/components/collapsible/Collapsible.d.ts.map +1 -1
- package/dist/components/collapsible/Collapsible.js +3 -3
- package/dist/components/collapsible/Collapsible.js.map +1 -1
- package/dist/components/color-picker/ColorPicker.d.ts +42 -0
- package/dist/components/color-picker/ColorPicker.d.ts.map +1 -0
- package/dist/components/color-picker/ColorPicker.js +52 -0
- package/dist/components/color-picker/ColorPicker.js.map +1 -0
- package/dist/components/color-picker/index.d.ts +2 -0
- package/dist/components/color-picker/index.d.ts.map +1 -0
- package/dist/components/color-picker/index.js +2 -0
- package/dist/components/color-picker/index.js.map +1 -0
- package/dist/components/color-swatch/ColorSwatch.d.ts +21 -0
- package/dist/components/color-swatch/ColorSwatch.d.ts.map +1 -0
- package/dist/components/color-swatch/ColorSwatch.js +25 -0
- package/dist/components/color-swatch/ColorSwatch.js.map +1 -0
- package/dist/components/color-swatch/index.d.ts +2 -0
- package/dist/components/color-swatch/index.d.ts.map +1 -0
- package/dist/components/color-swatch/index.js +2 -0
- package/dist/components/color-swatch/index.js.map +1 -0
- package/dist/components/data-list/DataList.d.ts +48 -0
- package/dist/components/data-list/DataList.d.ts.map +1 -0
- package/dist/components/data-list/DataList.js +31 -0
- package/dist/components/data-list/DataList.js.map +1 -0
- package/dist/components/data-list/index.d.ts +2 -0
- package/dist/components/data-list/index.d.ts.map +1 -0
- package/dist/components/data-list/index.js +2 -0
- package/dist/components/data-list/index.js.map +1 -0
- package/dist/components/em/Em.d.ts +9 -0
- package/dist/components/em/Em.d.ts.map +1 -0
- package/dist/components/em/Em.js +10 -0
- package/dist/components/em/Em.js.map +1 -0
- package/dist/components/em/index.d.ts +2 -0
- package/dist/components/em/index.d.ts.map +1 -0
- package/dist/components/em/index.js +2 -0
- package/dist/components/em/index.js.map +1 -0
- package/dist/components/feed/Feed.d.ts +2 -0
- package/dist/components/feed/Feed.d.ts.map +1 -1
- package/dist/components/feed/Feed.js +2 -2
- package/dist/components/feed/Feed.js.map +1 -1
- package/dist/components/feed/index.d.ts +1 -1
- package/dist/components/feed/index.d.ts.map +1 -1
- package/dist/components/grid/Grid.d.ts +3 -1
- package/dist/components/grid/Grid.d.ts.map +1 -1
- package/dist/components/grid/Grid.js +11 -1
- package/dist/components/grid/Grid.js.map +1 -1
- package/dist/components/grid/index.d.ts +1 -1
- package/dist/components/grid/index.d.ts.map +1 -1
- package/dist/components/grid/index.js.map +1 -1
- package/dist/components/group/Group.d.ts +19 -0
- package/dist/components/group/Group.d.ts.map +1 -0
- package/dist/components/group/Group.js +23 -0
- package/dist/components/group/Group.js.map +1 -0
- package/dist/components/group/index.d.ts +2 -0
- package/dist/components/group/index.d.ts.map +1 -0
- package/dist/components/group/index.js +2 -0
- package/dist/components/group/index.js.map +1 -0
- package/dist/components/highlight/Highlight.d.ts +9 -0
- package/dist/components/highlight/Highlight.d.ts.map +1 -0
- package/dist/components/highlight/Highlight.js +10 -0
- package/dist/components/highlight/Highlight.js.map +1 -0
- package/dist/components/highlight/index.d.ts +2 -0
- package/dist/components/highlight/index.d.ts.map +1 -0
- package/dist/components/highlight/index.js +2 -0
- package/dist/components/highlight/index.js.map +1 -0
- package/dist/components/kbd/Kbd.d.ts +13 -0
- package/dist/components/kbd/Kbd.d.ts.map +1 -0
- package/dist/components/kbd/Kbd.js +8 -0
- package/dist/components/kbd/Kbd.js.map +1 -0
- package/dist/components/kbd/index.d.ts +2 -0
- package/dist/components/kbd/index.d.ts.map +1 -0
- package/dist/components/kbd/index.js +2 -0
- package/dist/components/kbd/index.js.map +1 -0
- package/dist/components/link/Link.d.ts +1 -1
- package/dist/components/link/Link.d.ts.map +1 -1
- package/dist/components/link/Link.js +1 -1
- package/dist/components/link/Link.js.map +1 -1
- package/dist/components/link-box/LinkBox.d.ts +22 -0
- package/dist/components/link-box/LinkBox.d.ts.map +1 -0
- package/dist/components/link-box/LinkBox.js +30 -0
- package/dist/components/link-box/LinkBox.js.map +1 -0
- package/dist/components/link-box/index.d.ts +2 -0
- package/dist/components/link-box/index.d.ts.map +1 -0
- package/dist/components/link-box/index.js +2 -0
- package/dist/components/link-box/index.js.map +1 -0
- package/dist/components/mark/Mark.d.ts +13 -0
- package/dist/components/mark/Mark.d.ts.map +1 -0
- package/dist/components/mark/Mark.js +8 -0
- package/dist/components/mark/Mark.js.map +1 -0
- package/dist/components/mark/index.d.ts +2 -0
- package/dist/components/mark/index.d.ts.map +1 -0
- package/dist/components/mark/index.js +2 -0
- package/dist/components/mark/index.js.map +1 -0
- package/dist/components/nav-list/NavList.d.ts +15 -2
- package/dist/components/nav-list/NavList.d.ts.map +1 -1
- package/dist/components/nav-list/NavList.js +4 -3
- package/dist/components/nav-list/NavList.js.map +1 -1
- package/dist/components/pagination/Pagination.d.ts +9 -6
- package/dist/components/pagination/Pagination.d.ts.map +1 -1
- package/dist/components/pagination/Pagination.js +2 -2
- package/dist/components/pagination/Pagination.js.map +1 -1
- package/dist/components/pagination/index.d.ts +1 -1
- package/dist/components/pagination/index.d.ts.map +1 -1
- package/dist/components/pagination/index.js.map +1 -1
- package/dist/components/popover/Popover.d.ts +3 -0
- package/dist/components/popover/Popover.d.ts.map +1 -1
- package/dist/components/popover/Popover.js +2 -2
- package/dist/components/popover/Popover.js.map +1 -1
- package/dist/components/popover/index.d.ts +1 -1
- package/dist/components/popover/index.d.ts.map +1 -1
- package/dist/components/popover/index.js.map +1 -1
- package/dist/components/prose/Prose.d.ts +12 -0
- package/dist/components/prose/Prose.d.ts.map +1 -0
- package/dist/components/prose/Prose.js +19 -0
- package/dist/components/prose/Prose.js.map +1 -0
- package/dist/components/prose/index.d.ts +2 -0
- package/dist/components/prose/index.d.ts.map +1 -0
- package/dist/components/prose/index.js +2 -0
- package/dist/components/prose/index.js.map +1 -0
- package/dist/components/rating/Rating.d.ts +37 -1
- package/dist/components/rating/Rating.d.ts.map +1 -1
- package/dist/components/rating/Rating.js +25 -2
- package/dist/components/rating/Rating.js.map +1 -1
- package/dist/components/rating/index.d.ts +1 -1
- package/dist/components/rating/index.d.ts.map +1 -1
- package/dist/components/rating/index.js +1 -1
- package/dist/components/rating/index.js.map +1 -1
- package/dist/components/reorderable-list/ReorderableList.d.ts +89 -0
- package/dist/components/reorderable-list/ReorderableList.d.ts.map +1 -0
- package/dist/components/reorderable-list/ReorderableList.js +54 -0
- package/dist/components/reorderable-list/ReorderableList.js.map +1 -0
- package/dist/components/reorderable-list/index.d.ts +2 -0
- package/dist/components/reorderable-list/index.d.ts.map +1 -0
- package/dist/components/reorderable-list/index.js +2 -0
- package/dist/components/reorderable-list/index.js.map +1 -0
- package/dist/components/segment-group/SegmentGroup.d.ts +30 -0
- package/dist/components/segment-group/SegmentGroup.d.ts.map +1 -0
- package/dist/components/segment-group/SegmentGroup.js +67 -0
- package/dist/components/segment-group/SegmentGroup.js.map +1 -0
- package/dist/components/segment-group/index.d.ts +2 -0
- package/dist/components/segment-group/index.d.ts.map +1 -0
- package/dist/components/segment-group/index.js +2 -0
- package/dist/components/segment-group/index.js.map +1 -0
- package/dist/components/show/Show.d.ts.map +1 -1
- package/dist/components/show/Show.js +7 -1
- package/dist/components/show/Show.js.map +1 -1
- package/dist/components/sidebar/Sidebar.d.ts +4 -0
- package/dist/components/sidebar/Sidebar.d.ts.map +1 -1
- package/dist/components/sidebar/Sidebar.js +3 -2
- package/dist/components/sidebar/Sidebar.js.map +1 -1
- package/dist/components/slider/Slider.d.ts.map +1 -1
- package/dist/components/slider/Slider.js +3 -1
- package/dist/components/slider/Slider.js.map +1 -1
- package/dist/components/stack/Stack.d.ts +3 -1
- package/dist/components/stack/Stack.d.ts.map +1 -1
- package/dist/components/stack/Stack.js +9 -1
- package/dist/components/stack/Stack.js.map +1 -1
- package/dist/components/stack/index.d.ts +1 -1
- package/dist/components/stack/index.d.ts.map +1 -1
- package/dist/components/stack/index.js.map +1 -1
- package/dist/components/status/Status.d.ts +22 -0
- package/dist/components/status/Status.d.ts.map +1 -0
- package/dist/components/status/Status.js +23 -0
- package/dist/components/status/Status.js.map +1 -0
- package/dist/components/status/index.d.ts +2 -0
- package/dist/components/status/index.d.ts.map +1 -0
- package/dist/components/status/index.js +2 -0
- package/dist/components/status/index.js.map +1 -0
- package/dist/components/surface/Surface.d.ts +5 -2
- package/dist/components/surface/Surface.d.ts.map +1 -1
- package/dist/components/surface/Surface.js +4 -2
- package/dist/components/surface/Surface.js.map +1 -1
- package/dist/components/surface/index.d.ts +1 -1
- package/dist/components/surface/index.d.ts.map +1 -1
- package/dist/components/surface/index.js.map +1 -1
- package/dist/components/text/Text.d.ts +25 -4
- package/dist/components/text/Text.d.ts.map +1 -1
- package/dist/components/text/Text.js +22 -3
- package/dist/components/text/Text.js.map +1 -1
- package/dist/components/text/index.d.ts +1 -1
- package/dist/components/text/index.d.ts.map +1 -1
- package/dist/components/text/index.js +1 -1
- package/dist/components/text/index.js.map +1 -1
- package/dist/components/toggle/Toggle.d.ts +5 -0
- package/dist/components/toggle/Toggle.d.ts.map +1 -1
- package/dist/components/toggle/Toggle.js +2 -2
- package/dist/components/toggle/Toggle.js.map +1 -1
- package/dist/components/toggle/index.d.ts +1 -1
- package/dist/components/toggle/index.d.ts.map +1 -1
- package/dist/components/toggle/index.js.map +1 -1
- package/dist/components/toggle-group/ToggleGroup.d.ts +3 -1
- package/dist/components/toggle-group/ToggleGroup.d.ts.map +1 -1
- package/dist/components/toggle-group/ToggleGroup.js +2 -1
- package/dist/components/toggle-group/ToggleGroup.js.map +1 -1
- package/dist/components/toolbar/Toolbar.d.ts +9 -2
- package/dist/components/toolbar/Toolbar.d.ts.map +1 -1
- package/dist/components/toolbar/Toolbar.js +2 -2
- package/dist/components/toolbar/Toolbar.js.map +1 -1
- package/dist/components/toolbar/index.d.ts +1 -1
- package/dist/components/toolbar/index.d.ts.map +1 -1
- package/dist/components/z-stack/ZStack.d.ts +7 -0
- package/dist/components/z-stack/ZStack.d.ts.map +1 -1
- package/dist/components/z-stack/ZStack.js +14 -3
- package/dist/components/z-stack/ZStack.js.map +1 -1
- package/dist/components/z-stack/index.d.ts +1 -1
- package/dist/components/z-stack/index.d.ts.map +1 -1
- package/dist/components/z-stack/index.js.map +1 -1
- package/dist/data-list.d.ts +2 -0
- package/dist/data-list.d.ts.map +1 -0
- package/dist/data-list.js +2 -0
- package/dist/data-list.js.map +1 -0
- package/dist/em.d.ts +2 -0
- package/dist/em.d.ts.map +1 -0
- package/dist/em.js +2 -0
- package/dist/em.js.map +1 -0
- package/dist/feed.d.ts +1 -1
- package/dist/feed.d.ts.map +1 -1
- package/dist/grid.d.ts +1 -1
- package/dist/grid.d.ts.map +1 -1
- package/dist/grid.js.map +1 -1
- package/dist/group.d.ts +2 -0
- package/dist/group.d.ts.map +1 -0
- package/dist/group.js +2 -0
- package/dist/group.js.map +1 -0
- package/dist/highlight.d.ts +2 -0
- package/dist/highlight.d.ts.map +1 -0
- package/dist/highlight.js +2 -0
- package/dist/highlight.js.map +1 -0
- package/dist/index.d.ts +25 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -2
- package/dist/index.js.map +1 -1
- package/dist/kbd.d.ts +2 -0
- package/dist/kbd.d.ts.map +1 -0
- package/dist/kbd.js +2 -0
- package/dist/kbd.js.map +1 -0
- package/dist/link-box.d.ts +2 -0
- package/dist/link-box.d.ts.map +1 -0
- package/dist/link-box.js +2 -0
- package/dist/link-box.js.map +1 -0
- package/dist/mark.d.ts +2 -0
- package/dist/mark.d.ts.map +1 -0
- package/dist/mark.js +2 -0
- package/dist/mark.js.map +1 -0
- package/dist/prose.d.ts +2 -0
- package/dist/prose.d.ts.map +1 -0
- package/dist/prose.js +2 -0
- package/dist/prose.js.map +1 -0
- package/dist/reorderable-list.d.ts +2 -0
- package/dist/reorderable-list.d.ts.map +1 -0
- package/dist/reorderable-list.js +2 -0
- package/dist/reorderable-list.js.map +1 -0
- package/dist/reset.css +1 -1
- package/dist/reset.css.map +1 -1
- package/dist/segment-group.d.ts +2 -0
- package/dist/segment-group.d.ts.map +1 -0
- package/dist/segment-group.js +2 -0
- package/dist/segment-group.js.map +1 -0
- package/dist/stack.d.ts +1 -1
- package/dist/stack.d.ts.map +1 -1
- package/dist/stack.js.map +1 -1
- package/dist/status.d.ts +2 -0
- package/dist/status.d.ts.map +1 -0
- package/dist/status.js +2 -0
- package/dist/status.js.map +1 -0
- package/dist/styles/accordion.css +1 -1
- package/dist/styles/accordion.css.map +1 -1
- package/dist/styles/alert-dialog.css +1 -1
- package/dist/styles/alert-dialog.css.map +1 -1
- package/dist/styles/app-bar.css +1 -1
- package/dist/styles/app-bar.css.map +1 -1
- package/dist/styles/avatar.css +1 -1
- package/dist/styles/avatar.css.map +1 -1
- package/dist/styles/badge.css +1 -1
- package/dist/styles/badge.css.map +1 -1
- package/dist/styles/bleed.css +2 -0
- package/dist/styles/bleed.css.map +1 -0
- package/dist/styles/blockquote.css +2 -0
- package/dist/styles/blockquote.css.map +1 -0
- package/dist/styles/bottom-navigation.css +1 -1
- package/dist/styles/bottom-navigation.css.map +1 -1
- package/dist/styles/button.css +1 -1
- package/dist/styles/button.css.map +1 -1
- package/dist/styles/card.css +1 -1
- package/dist/styles/card.css.map +1 -1
- package/dist/styles/checkbox-group.css +1 -1
- package/dist/styles/checkbox-group.css.map +1 -1
- package/dist/styles/checkbox.css +1 -1
- package/dist/styles/checkbox.css.map +1 -1
- package/dist/styles/code-block.css +1 -1
- package/dist/styles/code-block.css.map +1 -1
- package/dist/styles/collapsible.css +1 -1
- package/dist/styles/collapsible.css.map +1 -1
- package/dist/styles/color-picker.css +2 -0
- package/dist/styles/color-picker.css.map +1 -0
- package/dist/styles/color-swatch.css +2 -0
- package/dist/styles/color-swatch.css.map +1 -0
- package/dist/styles/combobox.css +1 -1
- package/dist/styles/combobox.css.map +1 -1
- package/dist/styles/context-menu.css +1 -1
- package/dist/styles/context-menu.css.map +1 -1
- package/dist/styles/core.css +1 -1
- package/dist/styles/core.css.map +1 -1
- package/dist/styles/data-grid.css +1 -1
- package/dist/styles/data-grid.css.map +1 -1
- package/dist/styles/data-list.css +2 -0
- package/dist/styles/data-list.css.map +1 -0
- package/dist/styles/dialog.css +1 -1
- package/dist/styles/dialog.css.map +1 -1
- package/dist/styles/divider.css +1 -1
- package/dist/styles/divider.css.map +1 -1
- package/dist/styles/drawer.css +1 -1
- package/dist/styles/drawer.css.map +1 -1
- package/dist/styles/dropdown-menu.css +1 -1
- package/dist/styles/dropdown-menu.css.map +1 -1
- package/dist/styles/em.css +2 -0
- package/dist/styles/em.css.map +1 -0
- package/dist/styles/feed.css +1 -1
- package/dist/styles/feed.css.map +1 -1
- package/dist/styles/grid.css +1 -1
- package/dist/styles/grid.css.map +1 -1
- package/dist/styles/group.css +2 -0
- package/dist/styles/group.css.map +1 -0
- package/dist/styles/hide.css +1 -1
- package/dist/styles/hide.css.map +1 -1
- package/dist/styles/highlight.css +2 -0
- package/dist/styles/highlight.css.map +1 -0
- package/dist/styles/icon-button.css +1 -1
- package/dist/styles/icon-button.css.map +1 -1
- package/dist/styles/input.css +1 -1
- package/dist/styles/input.css.map +1 -1
- package/dist/styles/kbd.css +2 -0
- package/dist/styles/kbd.css.map +1 -0
- package/dist/styles/link-box.css +2 -0
- package/dist/styles/link-box.css.map +1 -0
- package/dist/styles/link.css +1 -1
- package/dist/styles/link.css.map +1 -1
- package/dist/styles/list.css +1 -1
- package/dist/styles/list.css.map +1 -1
- package/dist/styles/mark.css +2 -0
- package/dist/styles/mark.css.map +1 -0
- package/dist/styles/menubar.css +1 -1
- package/dist/styles/menubar.css.map +1 -1
- package/dist/styles/multi-select.css +1 -1
- package/dist/styles/multi-select.css.map +1 -1
- package/dist/styles/nav-list.css +1 -1
- package/dist/styles/nav-list.css.map +1 -1
- package/dist/styles/navigation-menu.css +1 -1
- package/dist/styles/navigation-menu.css.map +1 -1
- package/dist/styles/pagination.css +1 -1
- package/dist/styles/pagination.css.map +1 -1
- package/dist/styles/password-toggle-field.css +1 -1
- package/dist/styles/password-toggle-field.css.map +1 -1
- package/dist/styles/popover.css +1 -1
- package/dist/styles/popover.css.map +1 -1
- package/dist/styles/prose.css +2 -0
- package/dist/styles/prose.css.map +1 -0
- package/dist/styles/rating.css +1 -1
- package/dist/styles/rating.css.map +1 -1
- package/dist/styles/reorderable-list.css +2 -0
- package/dist/styles/reorderable-list.css.map +1 -0
- package/dist/styles/segment-group.css +2 -0
- package/dist/styles/segment-group.css.map +1 -0
- package/dist/styles/select.css +1 -1
- package/dist/styles/select.css.map +1 -1
- package/dist/styles/show.css +1 -1
- package/dist/styles/show.css.map +1 -1
- package/dist/styles/sidebar.css +1 -1
- package/dist/styles/sidebar.css.map +1 -1
- package/dist/styles/skeleton.css +1 -1
- package/dist/styles/skeleton.css.map +1 -1
- package/dist/styles/slider.css +1 -1
- package/dist/styles/slider.css.map +1 -1
- package/dist/styles/stack.css +1 -1
- package/dist/styles/stack.css.map +1 -1
- package/dist/styles/status.css +2 -0
- package/dist/styles/status.css.map +1 -0
- package/dist/styles/surface.css +1 -1
- package/dist/styles/surface.css.map +1 -1
- package/dist/styles/table.css +1 -1
- package/dist/styles/table.css.map +1 -1
- package/dist/styles/tabs.css +1 -1
- package/dist/styles/tabs.css.map +1 -1
- package/dist/styles/text.css +1 -1
- package/dist/styles/text.css.map +1 -1
- package/dist/styles/toggle-group.css +1 -1
- package/dist/styles/toggle-group.css.map +1 -1
- package/dist/styles/toggle.css +1 -1
- package/dist/styles/toggle.css.map +1 -1
- package/dist/styles/toolbar.css +1 -1
- package/dist/styles/toolbar.css.map +1 -1
- package/dist/styles/z-stack.css +1 -1
- package/dist/styles/z-stack.css.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/styles.css.map +1 -1
- package/dist/surface.d.ts +1 -1
- package/dist/surface.d.ts.map +1 -1
- package/dist/surface.js.map +1 -1
- package/dist/text.d.ts +1 -1
- package/dist/text.d.ts.map +1 -1
- package/dist/text.js +1 -1
- package/dist/text.js.map +1 -1
- package/dist/theme-contract.json +10519 -6018
- package/dist/toggle.d.ts +1 -1
- package/dist/toggle.d.ts.map +1 -1
- package/dist/toggle.js.map +1 -1
- package/dist/tokens.css +1 -1
- package/dist/tokens.css.map +1 -1
- package/dist/toolbar.d.ts +1 -1
- package/dist/toolbar.d.ts.map +1 -1
- package/docs/guides/agent-knowledge.md +19 -0
- package/docs/guides/appearance-and-tokens.md +5 -0
- package/docs/guides/browser-support.md +21 -0
- package/docs/guides/control-sizing.md +55 -0
- package/docs/guides/installation.md +5 -2
- package/docs/guides/theme-contract.md +26 -12
- package/package.json +79 -7
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "flowstack.agent-component.v1",
|
|
3
|
+
"id": "switch",
|
|
4
|
+
"name": "Switch",
|
|
5
|
+
"package": "@flowstack-ui/brick",
|
|
6
|
+
"layer": "brick",
|
|
7
|
+
"kind": "component",
|
|
8
|
+
"purpose": "Present a finished immediately applied on/off setting while Atom owns switch semantics, controlled or uncontrolled state, keyboard activation, validation, and optional form participation.",
|
|
9
|
+
"useWhen": [
|
|
10
|
+
"A setting becomes active or inactive immediately when the user operates it."
|
|
11
|
+
],
|
|
12
|
+
"avoidWhen": [
|
|
13
|
+
{
|
|
14
|
+
"condition": "The choice is a form answer applied later, a command whose pressed state remains active, or one of several exclusive values.",
|
|
15
|
+
"useInstead": "Checkbox, Toggle, or RadioGroup"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"composition": [
|
|
19
|
+
"Give Switch.Root a stable visible or native accessible setting name and add Switch.Thumb as its decorative movable part. Compose Root in Field when visible Label, Description, Error, required, or invalid context is needed; use name, value, and form when checked state must submit.",
|
|
20
|
+
"Choose Root size sm, md, or lg for the finished track, thumb, travel, and target geometry. Keep Thumb decorative and let Atom state attributes drive Brick paint."
|
|
21
|
+
],
|
|
22
|
+
"rules": [
|
|
23
|
+
{
|
|
24
|
+
"id": "switch-immediate",
|
|
25
|
+
"level": "must",
|
|
26
|
+
"statement": "Use Switch only for an immediately applied on/off setting; use Checkbox for a deferred form answer and Toggle for a persistent pressed command."
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": "switch-name",
|
|
30
|
+
"level": "must",
|
|
31
|
+
"statement": "Give Root a complete stable accessible setting name with visible Field Label, native labeling, aria-label, or aria-labelledby; Thumb remains decorative and aria-hidden."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"id": "switch-state",
|
|
35
|
+
"level": "must",
|
|
36
|
+
"statement": "Use checked with onCheckedChange for controlled state or defaultChecked for uncontrolled state and preserve role=switch with boolean aria-checked."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "switch-readonly",
|
|
40
|
+
"level": "must",
|
|
41
|
+
"statement": "Use readOnly when the setting must stay focusable while Enter, Space, pointer, and custom-element activation cannot change state; do not replace it with disabled."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "switch-form",
|
|
45
|
+
"level": "must",
|
|
46
|
+
"statement": "Preserve named checked-value submission, required validity, Field state and descriptions, validation focus, external form association, and uncontrolled reset when form behavior applies."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "switch-state-paint",
|
|
50
|
+
"level": "must",
|
|
51
|
+
"statement": "Use Brick's canonical checked, unchecked, focus, disabled, read-only, and invalid paint; invalid changes the boundary without replacing the checked meaning, and mixed or loading state is unsupported."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "switch-responsive",
|
|
55
|
+
"level": "should",
|
|
56
|
+
"statement": "Keep intrinsic geometry and complete target size, allow surrounding label text to reflow, and verify logical thumb travel in RTL without reversing on/off meaning."
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": "switch-css",
|
|
60
|
+
"level": "must",
|
|
61
|
+
"statement": "Load styles.css or core.css plus switch.css and Field CSS when composed."
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"commonMistakes": [
|
|
65
|
+
{
|
|
66
|
+
"mistake": "Using Switch for a submit-later checkbox or pressed command, relying on Thumb as the accessible control, or changing the setting label between states.",
|
|
67
|
+
"correction": "Choose by timing and semantics, name Root directly, keep Thumb decorative, and preserve one stable setting name."
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"mistake": "Using disabled when the value should remain discoverable and read-only or inventing mixed, loading, tone, or shape props.",
|
|
71
|
+
"correction": "Use readOnly for locked focusable state and stay within the canonical binary visual recipe."
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"validation": [
|
|
75
|
+
"Verify accessible name, role and aria-checked, controlled and uncontrolled updates, pointer, Enter, and Space activation, disabled and read-only behavior, Thumb state inheritance, and native, asChild, and render semantics.",
|
|
76
|
+
"Verify named checked-value submission, required validity with and without name, invalid and Field descriptions, validation focus, external form association, and uncontrolled reset.",
|
|
77
|
+
"Verify three sizes, checked and unchecked contrast, focus, disabled, read-only and invalid paint, intrinsic and narrow layout, mobile targets, 200% text and 400% zoom, RTL travel, reduced motion, forced colors, and complete CSS."
|
|
78
|
+
],
|
|
79
|
+
"related": [
|
|
80
|
+
{
|
|
81
|
+
"kind": "package",
|
|
82
|
+
"package": "@flowstack-ui/atom",
|
|
83
|
+
"id": "switch",
|
|
84
|
+
"versionPolicy": "installed-exact"
|
|
85
|
+
},
|
|
86
|
+
"checkbox",
|
|
87
|
+
"toggle",
|
|
88
|
+
"radio-group",
|
|
89
|
+
"field",
|
|
90
|
+
"form"
|
|
91
|
+
]
|
|
92
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Switch agent guide
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Present a finished immediately applied on/off setting while Atom owns switch semantics, controlled or uncontrolled state, keyboard activation, validation, and optional form participation.
|
|
6
|
+
|
|
7
|
+
## Use when
|
|
8
|
+
|
|
9
|
+
- A setting becomes active or inactive immediately when the user operates it.
|
|
10
|
+
|
|
11
|
+
## Choose something else when
|
|
12
|
+
|
|
13
|
+
- The choice is a form answer applied later, a command whose pressed state remains active, or one of several exclusive values. Use Checkbox, Toggle, or RadioGroup.
|
|
14
|
+
|
|
15
|
+
## Required composition
|
|
16
|
+
|
|
17
|
+
- Give Switch.Root a stable visible or native accessible setting name and add Switch.Thumb as its decorative movable part. Compose Root in Field when visible Label, Description, Error, required, or invalid context is needed; use name, value, and form when checked state must submit.
|
|
18
|
+
- Choose Root size sm, md, or lg for the finished track, thumb, travel, and target geometry. Keep Thumb decorative and let Atom state attributes drive Brick paint.
|
|
19
|
+
|
|
20
|
+
## Rules
|
|
21
|
+
|
|
22
|
+
- **MUST:** Use Switch only for an immediately applied on/off setting; use Checkbox for a deferred form answer and Toggle for a persistent pressed command.
|
|
23
|
+
- **MUST:** Give Root a complete stable accessible setting name with visible Field Label, native labeling, aria-label, or aria-labelledby; Thumb remains decorative and aria-hidden.
|
|
24
|
+
- **MUST:** Use checked with onCheckedChange for controlled state or defaultChecked for uncontrolled state and preserve role=switch with boolean aria-checked.
|
|
25
|
+
- **MUST:** Use readOnly when the setting must stay focusable while Enter, Space, pointer, and custom-element activation cannot change state; do not replace it with disabled.
|
|
26
|
+
- **MUST:** Preserve named checked-value submission, required validity, Field state and descriptions, validation focus, external form association, and uncontrolled reset when form behavior applies.
|
|
27
|
+
- **MUST:** Use Brick's canonical checked, unchecked, focus, disabled, read-only, and invalid paint; invalid changes the boundary without replacing the checked meaning, and mixed or loading state is unsupported.
|
|
28
|
+
- **SHOULD:** Keep intrinsic geometry and complete target size, allow surrounding label text to reflow, and verify logical thumb travel in RTL without reversing on/off meaning.
|
|
29
|
+
- **MUST:** Load styles.css or core.css plus switch.css and Field CSS when composed.
|
|
30
|
+
|
|
31
|
+
## Common mistakes
|
|
32
|
+
|
|
33
|
+
- **Avoid:** Using Switch for a submit-later checkbox or pressed command, relying on Thumb as the accessible control, or changing the setting label between states. **Instead:** Choose by timing and semantics, name Root directly, keep Thumb decorative, and preserve one stable setting name.
|
|
34
|
+
- **Avoid:** Using disabled when the value should remain discoverable and read-only or inventing mixed, loading, tone, or shape props. **Instead:** Use readOnly for locked focusable state and stay within the canonical binary visual recipe.
|
|
35
|
+
|
|
36
|
+
## Validation checklist
|
|
37
|
+
|
|
38
|
+
- Verify accessible name, role and aria-checked, controlled and uncontrolled updates, pointer, Enter, and Space activation, disabled and read-only behavior, Thumb state inheritance, and native, asChild, and render semantics.
|
|
39
|
+
- Verify named checked-value submission, required validity with and without name, invalid and Field descriptions, validation focus, external form association, and uncontrolled reset.
|
|
40
|
+
- Verify three sizes, checked and unchecked contrast, focus, disabled, read-only and invalid paint, intrinsic and narrow layout, mobile targets, 200% text and 400% zoom, RTL travel, reduced motion, forced colors, and complete CSS.
|
|
41
|
+
|
|
42
|
+
## Related guidance
|
|
43
|
+
|
|
44
|
+
- `@flowstack-ui/atom/agents/switch`
|
|
45
|
+
- `checkbox`
|
|
46
|
+
- `toggle`
|
|
47
|
+
- `radio-group`
|
|
48
|
+
- `field`
|
|
49
|
+
- `form`
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "flowstack.agent-component.v1",
|
|
3
|
+
"id": "table",
|
|
4
|
+
"name": "Table",
|
|
5
|
+
"package": "@flowstack-ui/brick",
|
|
6
|
+
"layer": "brick",
|
|
7
|
+
"kind": "component",
|
|
8
|
+
"purpose": "Present finished static row-and-column relationships with native table semantics while Atom owns the semantic parts and sort metadata.",
|
|
9
|
+
"useWhen": [
|
|
10
|
+
"People need to compare values across meaningful columns in pricing, reports, invoices, inventories, audit results, or compact summaries."
|
|
11
|
+
],
|
|
12
|
+
"avoidWhen": [
|
|
13
|
+
{
|
|
14
|
+
"condition": "The region needs arrow-key cell navigation, row selection, editing, resizing, or another interactive composite model.",
|
|
15
|
+
"useInstead": "Data Grid or an application-owned data tool"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"condition": "The content is a sequence without meaningful column relationships or a label/value definition structure.",
|
|
19
|
+
"useInstead": "List, Grid, Stack, or a semantic definition-list composition"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"condition": "The narrow layout must convert rows into unrelated cards and no longer preserves column comparison.",
|
|
23
|
+
"useInstead": "An application-owned alternate view with an explicit responsive policy"
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"composition": [
|
|
27
|
+
"Compose optional Container > Root > Caption, Header, Body, and optional Footer; place Row inside each section and Head or Cell inside Row according to native table content rules.",
|
|
28
|
+
"Use Head with scope=\"row\" for body row labels and keep the default column scope for header cells; use id and headers for complex associations.",
|
|
29
|
+
"Author Container explicitly when honest comparison needs horizontal overflow, and set the public minimum-inline-size token to the smallest width that preserves the column relationships.",
|
|
30
|
+
"When Table moves vertically, put the visible border and radius on the stable labelled Scroll Area viewport, use Table variant=line inside it, and keep persistent naming outside the moving viewport with aria-labelledby.",
|
|
31
|
+
"Put an independently named Button and optional decorative SortIndicator inside the active Head when the application owns sorting."
|
|
32
|
+
],
|
|
33
|
+
"rules": [
|
|
34
|
+
{
|
|
35
|
+
"id": "table-native-relationships",
|
|
36
|
+
"level": "must",
|
|
37
|
+
"statement": "Preserve native table anatomy and meaningful row and column headers; do not rebuild tabular comparison with generic Grid, Stack, div, or ARIA role substitutes."
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "table-static-boundary",
|
|
41
|
+
"level": "must",
|
|
42
|
+
"statement": "Keep Table static and readable; do not add row focus, whole-row activation, selection, arrow-key cell navigation, data mapping, filtering, pagination, editing, or virtualization to Table."
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": "table-explicit-overflow",
|
|
46
|
+
"level": "must",
|
|
47
|
+
"statement": "Author Table.Container or a separately labelled Scroll Area when wide comparison needs overflow; Root never inserts a wrapper and Table never hides columns or converts them into cards."
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"id": "table-responsive-comparison",
|
|
51
|
+
"level": "must",
|
|
52
|
+
"statement": "At narrow widths, preserve header-to-cell relationships, complete material values, and an understandable comparison path rather than merely stacking unrelated plan or record cards."
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"id": "table-vertical-scroll-boundary",
|
|
56
|
+
"level": "must",
|
|
57
|
+
"statement": "For bounded vertical scrolling, let the stable Scroll Area viewport own the visible border and radius; do not use a moving Table outline as the scroll-frame boundary."
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"id": "table-sort-ownership",
|
|
61
|
+
"level": "must",
|
|
62
|
+
"statement": "Let the application sort data and pass sortDirection only to the active header; SortIndicator is decorative and never supplies the control, name, or behavior."
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"id": "table-css",
|
|
66
|
+
"level": "must",
|
|
67
|
+
"statement": "Load styles.css or core.css plus table.css."
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
"commonMistakes": [
|
|
71
|
+
{
|
|
72
|
+
"mistake": "Using generic layout components for a pricing matrix because custom positioning feels easier.",
|
|
73
|
+
"correction": "Use Table's native Head and Cell relationships, then customize the closed recipes and public Table variables for the product-specific comparison."
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"mistake": "Hiding material columns on mobile or visually cloning labels into card rows.",
|
|
77
|
+
"correction": "Contain honest horizontal overflow or provide a separately authored application view; do not destroy or fake the native column relationships."
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"mistake": "Making rows hoverable or clickable without a complete interaction owner.",
|
|
81
|
+
"correction": "Keep rows structural and place independently named Brick links or buttons inside the appropriate cells."
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"mistake": "Using Table variant=outline as the visible frame inside a vertically scrolling viewport.",
|
|
85
|
+
"correction": "Paint the stable Scroll Area viewport with Surface, use Table variant=line inside it, and connect a persistent external label with aria-labelledby."
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"mistake": "Using a visible recommendation color as the only explanation for a preferred pricing column.",
|
|
89
|
+
"correction": "Keep the plan label and recommendation reason readable in ordinary text, then use Table paint only as supporting emphasis."
|
|
90
|
+
}
|
|
91
|
+
],
|
|
92
|
+
"validation": [
|
|
93
|
+
"Check caption or surrounding naming, header scope, cell associations, source order, plan or record labels, and independently named controls.",
|
|
94
|
+
"Check Container overflow, the authored minimum comparison width, stable viewport corners during vertical scrolling, sticky header boundaries when used, 320 CSS pixels, zoom, long content, RTL, and no page-level horizontal overflow.",
|
|
95
|
+
"Check light and dark themes, forced colors, row and column boundaries, recommendation meaning without color, focus visibility for interactive descendants, and CSS delivery.",
|
|
96
|
+
"Check that sorting, selection, filtering, pagination, data services, and responsive alternate-view policy remain application owned."
|
|
97
|
+
],
|
|
98
|
+
"related": [
|
|
99
|
+
{
|
|
100
|
+
"kind": "package",
|
|
101
|
+
"package": "@flowstack-ui/atom",
|
|
102
|
+
"id": "table",
|
|
103
|
+
"versionPolicy": "installed-exact"
|
|
104
|
+
},
|
|
105
|
+
"data-grid",
|
|
106
|
+
"tree-grid",
|
|
107
|
+
"scroll-area",
|
|
108
|
+
"button",
|
|
109
|
+
"badge",
|
|
110
|
+
"icon",
|
|
111
|
+
"text"
|
|
112
|
+
]
|
|
113
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Table agent guide
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Present finished static row-and-column relationships with native table semantics while Atom owns the semantic parts and sort metadata.
|
|
6
|
+
|
|
7
|
+
## Use when
|
|
8
|
+
|
|
9
|
+
- People need to compare values across meaningful columns in pricing, reports, invoices, inventories, audit results, or compact summaries.
|
|
10
|
+
|
|
11
|
+
## Choose something else when
|
|
12
|
+
|
|
13
|
+
- The region needs arrow-key cell navigation, row selection, editing, resizing, or another interactive composite model. Use Data Grid or an application-owned data tool.
|
|
14
|
+
- The content is a sequence without meaningful column relationships or a label/value definition structure. Use List, Grid, Stack, or a semantic definition-list composition.
|
|
15
|
+
- The narrow layout must convert rows into unrelated cards and no longer preserves column comparison. Use An application-owned alternate view with an explicit responsive policy.
|
|
16
|
+
|
|
17
|
+
## Required composition
|
|
18
|
+
|
|
19
|
+
- Compose optional Container > Root > Caption, Header, Body, and optional Footer; place Row inside each section and Head or Cell inside Row according to native table content rules.
|
|
20
|
+
- Use Head with scope="row" for body row labels and keep the default column scope for header cells; use id and headers for complex associations.
|
|
21
|
+
- Author Container explicitly when honest comparison needs horizontal overflow, and set the public minimum-inline-size token to the smallest width that preserves the column relationships.
|
|
22
|
+
- When Table moves vertically, put the visible border and radius on the stable labelled Scroll Area viewport, use Table variant=line inside it, and keep persistent naming outside the moving viewport with aria-labelledby.
|
|
23
|
+
- Put an independently named Button and optional decorative SortIndicator inside the active Head when the application owns sorting.
|
|
24
|
+
|
|
25
|
+
## Rules
|
|
26
|
+
|
|
27
|
+
- **MUST:** Preserve native table anatomy and meaningful row and column headers; do not rebuild tabular comparison with generic Grid, Stack, div, or ARIA role substitutes.
|
|
28
|
+
- **MUST:** Keep Table static and readable; do not add row focus, whole-row activation, selection, arrow-key cell navigation, data mapping, filtering, pagination, editing, or virtualization to Table.
|
|
29
|
+
- **MUST:** Author Table.Container or a separately labelled Scroll Area when wide comparison needs overflow; Root never inserts a wrapper and Table never hides columns or converts them into cards.
|
|
30
|
+
- **MUST:** At narrow widths, preserve header-to-cell relationships, complete material values, and an understandable comparison path rather than merely stacking unrelated plan or record cards.
|
|
31
|
+
- **MUST:** For bounded vertical scrolling, let the stable Scroll Area viewport own the visible border and radius; do not use a moving Table outline as the scroll-frame boundary.
|
|
32
|
+
- **MUST:** Let the application sort data and pass sortDirection only to the active header; SortIndicator is decorative and never supplies the control, name, or behavior.
|
|
33
|
+
- **MUST:** Load styles.css or core.css plus table.css.
|
|
34
|
+
|
|
35
|
+
## Common mistakes
|
|
36
|
+
|
|
37
|
+
- **Avoid:** Using generic layout components for a pricing matrix because custom positioning feels easier. **Instead:** Use Table's native Head and Cell relationships, then customize the closed recipes and public Table variables for the product-specific comparison.
|
|
38
|
+
- **Avoid:** Hiding material columns on mobile or visually cloning labels into card rows. **Instead:** Contain honest horizontal overflow or provide a separately authored application view; do not destroy or fake the native column relationships.
|
|
39
|
+
- **Avoid:** Making rows hoverable or clickable without a complete interaction owner. **Instead:** Keep rows structural and place independently named Brick links or buttons inside the appropriate cells.
|
|
40
|
+
- **Avoid:** Using Table variant=outline as the visible frame inside a vertically scrolling viewport. **Instead:** Paint the stable Scroll Area viewport with Surface, use Table variant=line inside it, and connect a persistent external label with aria-labelledby.
|
|
41
|
+
- **Avoid:** Using a visible recommendation color as the only explanation for a preferred pricing column. **Instead:** Keep the plan label and recommendation reason readable in ordinary text, then use Table paint only as supporting emphasis.
|
|
42
|
+
|
|
43
|
+
## Validation checklist
|
|
44
|
+
|
|
45
|
+
- Check caption or surrounding naming, header scope, cell associations, source order, plan or record labels, and independently named controls.
|
|
46
|
+
- Check Container overflow, the authored minimum comparison width, stable viewport corners during vertical scrolling, sticky header boundaries when used, 320 CSS pixels, zoom, long content, RTL, and no page-level horizontal overflow.
|
|
47
|
+
- Check light and dark themes, forced colors, row and column boundaries, recommendation meaning without color, focus visibility for interactive descendants, and CSS delivery.
|
|
48
|
+
- Check that sorting, selection, filtering, pagination, data services, and responsive alternate-view policy remain application owned.
|
|
49
|
+
|
|
50
|
+
## Related guidance
|
|
51
|
+
|
|
52
|
+
- `@flowstack-ui/atom/agents/table`
|
|
53
|
+
- `data-grid`
|
|
54
|
+
- `tree-grid`
|
|
55
|
+
- `scroll-area`
|
|
56
|
+
- `button`
|
|
57
|
+
- `badge`
|
|
58
|
+
- `icon`
|
|
59
|
+
- `text`
|
package/dist/agents/tabs.json
CHANGED
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
"composition": [
|
|
19
19
|
"Compose Trigger and optional Indicator inside List with matching Content values inside Root; lay out panel content with Brick components.",
|
|
20
20
|
"Keep the default panel inset for ordinary copy; use Content inset=none for edge-to-edge media or nested surfaces rather than overriding component CSS.",
|
|
21
|
+
"When a page-header control row visually continues the tab divider, keep unrelated controls outside List and let the surrounding Brick layout own the continuing decorative Divider.",
|
|
22
|
+
"Use List triggerRadius=none when line tabs need square underline geometry; the option applies to every variant and changes paint only.",
|
|
21
23
|
"When vertical tab semantics stay correct but mobile needs full-width content, use responsive Root layout stacked to side; do not change semantic orientation with CSS.",
|
|
22
24
|
"When the same vertical selector needs a compact mobile grid, use responsive List columns (for example, initial 2 and lg 1) rather than application selectors; keyboard orientation remains vertical.",
|
|
23
25
|
"When a solid or soft List is nested inside a clipping parent that owns the outer corners, use List radius=none rather than overriding Tabs selectors; add triggerRadius=default only when individual Trigger surfaces should remain rounded.",
|
|
@@ -44,6 +46,11 @@
|
|
|
44
46
|
"level": "must",
|
|
45
47
|
"statement": "Treat List radius and Trigger radius as independent visual geometry only; neither may alter inset, selection, focus, orientation, columns, or keyboard behavior."
|
|
46
48
|
},
|
|
49
|
+
{
|
|
50
|
+
"id": "tabs-line-selection-paint",
|
|
51
|
+
"level": "must",
|
|
52
|
+
"statement": "For line Tabs, keep active label and icon paint on primary text and reserve accent paint for the selected edge or authored metadata such as Badge."
|
|
53
|
+
},
|
|
47
54
|
{
|
|
48
55
|
"id": "tabs-css",
|
|
49
56
|
"level": "must",
|
|
@@ -52,8 +59,8 @@
|
|
|
52
59
|
],
|
|
53
60
|
"commonMistakes": [
|
|
54
61
|
{
|
|
55
|
-
"mistake": "Using Tabs for routes, clipping focus/indicator edges, or mismatching Trigger and Content values.",
|
|
56
|
-
"correction": "Use navigation links for routes and keep complete paired tab anatomy."
|
|
62
|
+
"mistake": "Using Tabs for routes, putting sorting or actions inside List to extend its divider, clipping focus/indicator edges, or mismatching Trigger and Content values.",
|
|
63
|
+
"correction": "Use navigation links for routes, keep unrelated controls outside the tablist, continue shared decorative edges with the surrounding Brick layout, and keep complete paired tab anatomy."
|
|
57
64
|
}
|
|
58
65
|
],
|
|
59
66
|
"validation": [
|
package/dist/agents/tabs.md
CHANGED
|
@@ -16,6 +16,8 @@ Style related in-page panel switching while Atom owns tab semantics, selection,
|
|
|
16
16
|
|
|
17
17
|
- Compose Trigger and optional Indicator inside List with matching Content values inside Root; lay out panel content with Brick components.
|
|
18
18
|
- Keep the default panel inset for ordinary copy; use Content inset=none for edge-to-edge media or nested surfaces rather than overriding component CSS.
|
|
19
|
+
- When a page-header control row visually continues the tab divider, keep unrelated controls outside List and let the surrounding Brick layout own the continuing decorative Divider.
|
|
20
|
+
- Use List triggerRadius=none when line tabs need square underline geometry; the option applies to every variant and changes paint only.
|
|
19
21
|
- When vertical tab semantics stay correct but mobile needs full-width content, use responsive Root layout stacked to side; do not change semantic orientation with CSS.
|
|
20
22
|
- When the same vertical selector needs a compact mobile grid, use responsive List columns (for example, initial 2 and lg 1) rather than application selectors; keyboard orientation remains vertical.
|
|
21
23
|
- When a solid or soft List is nested inside a clipping parent that owns the outer corners, use List radius=none rather than overriding Tabs selectors; add triggerRadius=default only when individual Trigger surfaces should remain rounded.
|
|
@@ -27,11 +29,12 @@ Style related in-page panel switching while Atom owns tab semantics, selection,
|
|
|
27
29
|
- **MUST:** Define a deliberate narrow-width overflow or wrapping policy without clipping triggers or indicator focus.
|
|
28
30
|
- **MUST:** Treat List columns as visual placement only; keep DOM order and the semantic orientation that matches the intended arrow keys.
|
|
29
31
|
- **MUST:** Treat List radius and Trigger radius as independent visual geometry only; neither may alter inset, selection, focus, orientation, columns, or keyboard behavior.
|
|
32
|
+
- **MUST:** For line Tabs, keep active label and icon paint on primary text and reserve accent paint for the selected edge or authored metadata such as Badge.
|
|
30
33
|
- **MUST:** Load styles.css or core.css plus tabs.css.
|
|
31
34
|
|
|
32
35
|
## Common mistakes
|
|
33
36
|
|
|
34
|
-
- **Avoid:** Using Tabs for routes, clipping focus/indicator edges, or mismatching Trigger and Content values. **Instead:** Use navigation links for routes and keep complete paired tab anatomy.
|
|
37
|
+
- **Avoid:** Using Tabs for routes, putting sorting or actions inside List to extend its divider, clipping focus/indicator edges, or mismatching Trigger and Content values. **Instead:** Use navigation links for routes, keep unrelated controls outside the tablist, continue shared decorative edges with the surrounding Brick layout, and keep complete paired tab anatomy.
|
|
35
38
|
|
|
36
39
|
## Validation checklist
|
|
37
40
|
|
package/dist/agents/text.json
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
"package": "@flowstack-ui/brick",
|
|
6
6
|
"layer": "brick",
|
|
7
7
|
"kind": "component",
|
|
8
|
-
"purpose": "Apply Brick typography roles,
|
|
8
|
+
"purpose": "Apply Brick typography roles, tones, weight, alignment, wrapping, and deliberate transforms through flexible Text or named semantic text exports.",
|
|
9
9
|
"useWhen": [
|
|
10
|
-
"Interface copy needs Brick typography, including headings, paragraphs, short editorial eyebrows, captions, metadata, or inline text."
|
|
10
|
+
"Interface copy needs Brick typography, including headings, paragraphs, short editorial eyebrows, captions, metadata, or inline text. Prefer Heading, Paragraph, Caption, and Eyebrow for their common roles; use Text for a different deliberate semantic/visual pairing."
|
|
11
11
|
],
|
|
12
12
|
"avoidWhen": [
|
|
13
13
|
{
|
|
@@ -16,13 +16,23 @@
|
|
|
16
16
|
}
|
|
17
17
|
],
|
|
18
18
|
"composition": [
|
|
19
|
-
"Choose the semantic element first, then
|
|
19
|
+
"Choose the named semantic export when it fits. Heading requires an explicit level and keeps that level independent from its visual variant. Otherwise choose Text's semantic element first, then its closest visual variant and tone. Keep inline components that complete the same sentence inside that text owner, and use Stack only for separately meaningful text peers."
|
|
20
20
|
],
|
|
21
21
|
"rules": [
|
|
22
22
|
{
|
|
23
23
|
"id": "text-semantics",
|
|
24
24
|
"level": "must",
|
|
25
|
-
"statement": "Do not choose heading or paragraph semantics solely from the desired font size."
|
|
25
|
+
"statement": "Do not choose heading or paragraph semantics solely from the desired font size. Use the display scale, responsive visual variant, or responsive logical alignment without changing the correct semantic level."
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "text-authored-case",
|
|
29
|
+
"level": "must",
|
|
30
|
+
"statement": "Author real names and titles with their correct casing. Use transform only for deliberate visual presentation; CSS capitalize is not language-aware title case and must not repair registry or product content."
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "text-named-roles",
|
|
34
|
+
"level": "must",
|
|
35
|
+
"statement": "Prefer Heading, Paragraph, Caption, or Eyebrow for ordinary roles; use Text when their fixed semantic host or restricted visual family does not fit."
|
|
26
36
|
},
|
|
27
37
|
{
|
|
28
38
|
"id": "text-brick-first",
|
|
@@ -44,6 +54,11 @@
|
|
|
44
54
|
"level": "must",
|
|
45
55
|
"statement": "Use tone=inherit when Text is intentionally composed inside a parent such as Badge that owns the foreground and contrast relationship."
|
|
46
56
|
},
|
|
57
|
+
{
|
|
58
|
+
"id": "text-inline-sentence",
|
|
59
|
+
"level": "must",
|
|
60
|
+
"statement": "Keep a Link or other inline component that completes one sentence inside the semantic Text paragraph and let it inherit the surrounding typography and natural wrapping."
|
|
61
|
+
},
|
|
47
62
|
{
|
|
48
63
|
"id": "text-inline-peers",
|
|
49
64
|
"level": "should",
|
|
@@ -57,13 +72,13 @@
|
|
|
57
72
|
],
|
|
58
73
|
"commonMistakes": [
|
|
59
74
|
{
|
|
60
|
-
"mistake": "Using five spans to build brand text, selecting all-caps eyebrow styling for paragraph descriptions, allowing nested Text to override a parent's foreground, or aligning peer labels with literal whitespace.",
|
|
61
|
-
"correction": "Use
|
|
75
|
+
"mistake": "Using five spans to build brand text, repeatedly spelling ordinary headings and paragraphs as Text plus as, using capitalize to repair authored titles, selecting all-caps eyebrow styling for paragraph descriptions, allowing nested Text to override a parent's foreground, splitting one sentence into layout siblings, or aligning independent peer labels with literal whitespace.",
|
|
76
|
+
"correction": "Use the named semantic exports where they fit, author correct casing, reserve transforms and display treatments for their intended roles, inherit the owning foreground, keep one sentence in one text flow, and use HStack gap only between separate peers."
|
|
62
77
|
}
|
|
63
78
|
],
|
|
64
79
|
"validation": [
|
|
65
|
-
"Check heading order, semantics, line length, wrapping, truncation, user font scaling, zoom, contrast, themes, and RTL.",
|
|
66
|
-
"Confirm
|
|
80
|
+
"Check heading order, semantics, responsive visual-recipe changes at Brick breakpoints, line length, wrapping, truncation, user font scaling, zoom, contrast, themes, and RTL.",
|
|
81
|
+
"Confirm named exports render one correct native host, Heading level follows document structure, transformed text preserves authored content in the DOM, inline sentence content remains inside its semantic owner, independent peer labels align without positional CSS, parent foreground ownership is not bypassed, and CSS is loaded."
|
|
67
82
|
],
|
|
68
83
|
"related": [
|
|
69
84
|
"stack",
|
package/dist/agents/text.md
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
## Purpose
|
|
4
4
|
|
|
5
|
-
Apply Brick typography roles,
|
|
5
|
+
Apply Brick typography roles, tones, weight, alignment, wrapping, and deliberate transforms through flexible Text or named semantic text exports.
|
|
6
6
|
|
|
7
7
|
## Use when
|
|
8
8
|
|
|
9
|
-
- Interface copy needs Brick typography, including headings, paragraphs, short editorial eyebrows, captions, metadata, or inline text.
|
|
9
|
+
- Interface copy needs Brick typography, including headings, paragraphs, short editorial eyebrows, captions, metadata, or inline text. Prefer Heading, Paragraph, Caption, and Eyebrow for their common roles; use Text for a different deliberate semantic/visual pairing.
|
|
10
10
|
|
|
11
11
|
## Choose something else when
|
|
12
12
|
|
|
@@ -14,26 +14,29 @@ Apply Brick typography roles, sizes, tones, weight, alignment, and wrapping whil
|
|
|
14
14
|
|
|
15
15
|
## Required composition
|
|
16
16
|
|
|
17
|
-
- Choose the semantic element first, then
|
|
17
|
+
- Choose the named semantic export when it fits. Heading requires an explicit level and keeps that level independent from its visual variant. Otherwise choose Text's semantic element first, then its closest visual variant and tone. Keep inline components that complete the same sentence inside that text owner, and use Stack only for separately meaningful text peers.
|
|
18
18
|
|
|
19
19
|
## Rules
|
|
20
20
|
|
|
21
|
-
- **MUST:** Do not choose heading or paragraph semantics solely from the desired font size.
|
|
21
|
+
- **MUST:** Do not choose heading or paragraph semantics solely from the desired font size. Use the display scale, responsive visual variant, or responsive logical alignment without changing the correct semantic level.
|
|
22
|
+
- **MUST:** Author real names and titles with their correct casing. Use transform only for deliberate visual presentation; CSS capitalize is not language-aware title case and must not repair registry or product content.
|
|
23
|
+
- **MUST:** Prefer Heading, Paragraph, Caption, or Eyebrow for ordinary roles; use Text when their fixed semantic host or restricted visual family does not fit.
|
|
22
24
|
- **MUST:** Use Text for standalone styled interface copy instead of native spans plus duplicate typography CSS.
|
|
23
25
|
- **MUST:** Preserve readable body sizing, line height, measure, contrast, and user font scaling.
|
|
24
26
|
- **MUST:** Reserve variant=eyebrow for short labels that introduce a nearby heading; do not select it merely to make unrelated copy smaller. Use body text for explanatory sentences and Badge for passive status or category content.
|
|
25
27
|
- **MUST:** Use tone=inherit when Text is intentionally composed inside a parent such as Badge that owns the foreground and contrast relationship.
|
|
28
|
+
- **MUST:** Keep a Link or other inline component that completes one sentence inside the semantic Text paragraph and let it inherit the surrounding typography and natural wrapping.
|
|
26
29
|
- **SHOULD:** Give separately meaningful inline peer labels compatible typography metrics and arrange them with HStack gap rather than literal spaces or manual positional offsets.
|
|
27
30
|
- **MUST:** Load styles.css or core.css plus text.css.
|
|
28
31
|
|
|
29
32
|
## Common mistakes
|
|
30
33
|
|
|
31
|
-
- **Avoid:** Using five spans to build brand text, selecting all-caps eyebrow styling for paragraph descriptions, allowing nested Text to override a parent's foreground, or aligning peer labels with literal whitespace. **Instead:** Use
|
|
34
|
+
- **Avoid:** Using five spans to build brand text, repeatedly spelling ordinary headings and paragraphs as Text plus as, using capitalize to repair authored titles, selecting all-caps eyebrow styling for paragraph descriptions, allowing nested Text to override a parent's foreground, splitting one sentence into layout siblings, or aligning independent peer labels with literal whitespace. **Instead:** Use the named semantic exports where they fit, author correct casing, reserve transforms and display treatments for their intended roles, inherit the owning foreground, keep one sentence in one text flow, and use HStack gap only between separate peers.
|
|
32
35
|
|
|
33
36
|
## Validation checklist
|
|
34
37
|
|
|
35
|
-
- Check heading order, semantics, line length, wrapping, truncation, user font scaling, zoom, contrast, themes, and RTL.
|
|
36
|
-
- Confirm
|
|
38
|
+
- Check heading order, semantics, responsive visual-recipe changes at Brick breakpoints, line length, wrapping, truncation, user font scaling, zoom, contrast, themes, and RTL.
|
|
39
|
+
- Confirm named exports render one correct native host, Heading level follows document structure, transformed text preserves authored content in the DOM, inline sentence content remains inside its semantic owner, independent peer labels align without positional CSS, parent foreground ownership is not bypassed, and CSS is loaded.
|
|
37
40
|
|
|
38
41
|
## Related guidance
|
|
39
42
|
|
|
@@ -41,7 +41,12 @@
|
|
|
41
41
|
"Test multi-line entry, resize policy, narrow widths, invalid/disabled states, and contrast."
|
|
42
42
|
],
|
|
43
43
|
"related": [
|
|
44
|
-
|
|
44
|
+
{
|
|
45
|
+
"kind": "package",
|
|
46
|
+
"package": "@flowstack-ui/atom",
|
|
47
|
+
"id": "textarea",
|
|
48
|
+
"versionPolicy": "installed-exact"
|
|
49
|
+
},
|
|
45
50
|
"field",
|
|
46
51
|
"input"
|
|
47
52
|
]
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "flowstack.agent-component.v1",
|
|
3
|
+
"id": "toast",
|
|
4
|
+
"name": "Toast",
|
|
5
|
+
"package": "@flowstack-ui/brick",
|
|
6
|
+
"layer": "brick",
|
|
7
|
+
"kind": "component",
|
|
8
|
+
"purpose": "Present queued finished transient updates while Atom owns store identity, timers, announcements, focus, hotkey access, portal, dismissal, swipe, and lifecycle.",
|
|
9
|
+
"useWhen": [
|
|
10
|
+
"A short non-blocking outcome or process update is useful, can be safely ignored, and remains recoverable or visible elsewhere without interrupting the current task."
|
|
11
|
+
],
|
|
12
|
+
"avoidWhen": [
|
|
13
|
+
{
|
|
14
|
+
"condition": "Feedback belongs beside a field, is essential or durable, represents numeric progress, or requires a response before continuing.",
|
|
15
|
+
"useInstead": "Field or Form feedback, persistent application content, Progress, or AlertDialog"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"composition": [
|
|
19
|
+
"Install one Toaster near the application root. Create imperative updates with toast helpers, or use the public Toast.Root, Icon, Content, Title, Description, Actions, Action, Close, and Viewport parts for advanced rendering while preserving one Atom Provider and Viewport announcement path.",
|
|
20
|
+
"Supply concise meaningful title or description, choose type by announcement priority, localize Toaster label and closeLabel, and include an optional action only when it is safe to ignore and may dismiss immediately."
|
|
21
|
+
],
|
|
22
|
+
"rules": [
|
|
23
|
+
{
|
|
24
|
+
"id": "toast-nonessential",
|
|
25
|
+
"level": "must",
|
|
26
|
+
"statement": "Never make Toast the sole home of essential, response-required, validation, or durable information because it is transient and does not move focus when it appears."
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": "toast-single-live-path",
|
|
30
|
+
"level": "must",
|
|
31
|
+
"statement": "Keep Viewport's persistent polite and assertive announcers as the only live path; do not add role=status, role=alert, or aria-live to visible Root cards."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"id": "toast-priority-content",
|
|
35
|
+
"level": "must",
|
|
36
|
+
"statement": "Use warning and error assertion only for genuinely important feedback, keep Title and Description concise, include meaning beyond color and glyph, and update content only when a new announcement is intended."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "toast-timing-focus",
|
|
40
|
+
"level": "must",
|
|
41
|
+
"statement": "Preserve normalized duration, hover/focus/page-focus pause, localized hotkey access, focused Escape dismissal, and focus restoration; never steal focus merely because a toast appeared."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "toast-actions-dismiss",
|
|
45
|
+
"level": "must",
|
|
46
|
+
"statement": "Use Brick's single Action only for a callback that may dismiss immediately; Brick has no Cancel part, and async interaction that must stay open belongs in persistent application UI."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "toast-dismissal",
|
|
50
|
+
"level": "must",
|
|
51
|
+
"statement": "Keep Close, Escape, timeout, or another obvious path available; directional swipe is optional and never the sole dismissal mechanism."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "toast-responsive",
|
|
55
|
+
"level": "must",
|
|
56
|
+
"statement": "Choose logical position, responsive/compact/full width, and separated/overlap stacking deliberately; keep safe areas, fixed chrome, software keyboards, narrow screens, zoom, RTL, and viewport offsets under styled or application ownership."
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": "toast-css",
|
|
60
|
+
"level": "must",
|
|
61
|
+
"statement": "Load styles.css or core.css plus toast.css."
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"commonMistakes": [
|
|
65
|
+
{
|
|
66
|
+
"mistake": "Using Toast for validation or confirmation, adding a second live region, choosing assertive type by color preference, or expecting Action to remain open during async work.",
|
|
67
|
+
"correction": "Use inline or blocking UI for those jobs, preserve one announcement path, choose priority semantically, and move persistent async interaction outside Toast."
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"mistake": "Making swipe the only dismissal, mounting multiple Toasters casually, or allowing fixed application chrome to cover the viewport.",
|
|
71
|
+
"correction": "Provide an obvious non-swipe dismissal, keep one application-level viewport, and set documented logical offsets for measured chrome collisions."
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"validation": [
|
|
75
|
+
"Verify imperative create/update/dismiss and promise flows, declarative Root, stable IDs, type priority, duration and maxVisible normalization, queue and stacking, close inheritance, entry/exit lifecycle, forceMount, auto-close, pause policies, and meaningful updates announced once.",
|
|
76
|
+
"Verify localized Viewport label/hotkey, polite/assertive announcers, no visible-card live region, focus-within pause, Escape and restoration, Action and Close callbacks/dismissal, optional swipe threshold/direction/cancel, non-swipe dismissal, custom renderToast, portal container, and logical positions.",
|
|
77
|
+
"Verify six types, all width/stacking/position recipes, title-only and description-only geometry, long localized content, safe-area and application offsets, 320px, zoom, RTL, light/dark appearance, forced colors, and reduced motion."
|
|
78
|
+
],
|
|
79
|
+
"related": [
|
|
80
|
+
{
|
|
81
|
+
"kind": "package",
|
|
82
|
+
"package": "@flowstack-ui/atom",
|
|
83
|
+
"id": "toast",
|
|
84
|
+
"versionPolicy": "installed-exact"
|
|
85
|
+
},
|
|
86
|
+
"alert-dialog",
|
|
87
|
+
"field",
|
|
88
|
+
"form",
|
|
89
|
+
"progress"
|
|
90
|
+
]
|
|
91
|
+
}
|