@flowstack-ui/brick 0.1.6 → 0.1.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/README.md +13 -7
- package/dist/agents/accordion.json +17 -2
- package/dist/agents/accordion.md +5 -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/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 +76 -0
- package/dist/agents/code-block.md +47 -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 +24579 -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/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/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 +216 -17
- package/dist/agents/interface-composition.md +7 -0
- package/dist/agents/layer-selection.json +1174 -11
- package/dist/agents/layer-selection.md +84 -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 +291 -2
- 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/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 +42 -3
- package/dist/agents/surface.md +12 -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/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/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/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/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/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/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/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/index.d.ts +18 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- 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/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/appearance.css +1 -1
- package/dist/styles/appearance.css.map +1 -1
- package/dist/styles/aspect-ratio.css +1 -1
- package/dist/styles/aspect-ratio.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/bottom-navigation.css +1 -1
- package/dist/styles/bottom-navigation.css.map +1 -1
- package/dist/styles/breadcrumb.css +1 -1
- package/dist/styles/breadcrumb.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/carousel.css +1 -1
- package/dist/styles/carousel.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/chip.css +1 -1
- package/dist/styles/chip.css.map +1 -1
- package/dist/styles/code-block.css +1 -1
- package/dist/styles/code-block.css.map +1 -1
- package/dist/styles/code.css +1 -1
- package/dist/styles/code.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/container.css +1 -1
- package/dist/styles/container.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/feed.css +1 -1
- package/dist/styles/feed.css.map +1 -1
- package/dist/styles/field.css +1 -1
- package/dist/styles/field.css.map +1 -1
- package/dist/styles/fieldset.css +1 -1
- package/dist/styles/fieldset.css.map +1 -1
- package/dist/styles/file-upload.css +1 -1
- package/dist/styles/file-upload.css.map +1 -1
- package/dist/styles/form.css +1 -1
- package/dist/styles/form.css.map +1 -1
- package/dist/styles/frame.css +1 -1
- package/dist/styles/frame.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/hover-card.css +1 -1
- package/dist/styles/hover-card.css.map +1 -1
- package/dist/styles/icon-button.css +1 -1
- package/dist/styles/icon-button.css.map +1 -1
- package/dist/styles/icon.css +1 -1
- package/dist/styles/icon.css.map +1 -1
- package/dist/styles/image.css +1 -1
- package/dist/styles/image.css.map +1 -1
- package/dist/styles/input.css +1 -1
- package/dist/styles/input.css.map +1 -1
- 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/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/number-input.css +1 -1
- package/dist/styles/number-input.css.map +1 -1
- package/dist/styles/otp-field.css +1 -1
- package/dist/styles/otp-field.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/progress-circle.css +1 -1
- package/dist/styles/progress-circle.css.map +1 -1
- package/dist/styles/progress.css +1 -1
- package/dist/styles/progress.css.map +1 -1
- package/dist/styles/radio-group.css +1 -1
- package/dist/styles/radio-group.css.map +1 -1
- 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/scroll-area.css +1 -1
- package/dist/styles/scroll-area.css.map +1 -1
- package/dist/styles/section.css +1 -1
- package/dist/styles/section.css.map +1 -1
- 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/skip-link.css +1 -1
- package/dist/styles/skip-link.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/swipeable-item.css +1 -1
- package/dist/styles/swipeable-item.css.map +1 -1
- package/dist/styles/switch.css +1 -1
- package/dist/styles/switch.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/textarea.css +1 -1
- package/dist/styles/textarea.css.map +1 -1
- package/dist/styles/toast.css +1 -1
- package/dist/styles/toast.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/tooltip.css +1 -1
- package/dist/styles/tooltip.css.map +1 -1
- package/dist/styles/tree-grid.css +1 -1
- package/dist/styles/tree-grid.css.map +1 -1
- package/dist/styles/tree.css +1 -1
- package/dist/styles/tree.css.map +1 -1
- package/dist/styles/visually-hidden.css +1 -1
- package/dist/styles/visually-hidden.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 +26846 -0
- 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 +16 -5
- 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 +86 -0
- package/package.json +51 -7
|
@@ -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
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Toast agent guide
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Present queued finished transient updates while Atom owns store identity, timers, announcements, focus, hotkey access, portal, dismissal, swipe, and lifecycle.
|
|
6
|
+
|
|
7
|
+
## Use when
|
|
8
|
+
|
|
9
|
+
- 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.
|
|
10
|
+
|
|
11
|
+
## Choose something else when
|
|
12
|
+
|
|
13
|
+
- Feedback belongs beside a field, is essential or durable, represents numeric progress, or requires a response before continuing. Use Field or Form feedback, persistent application content, Progress, or AlertDialog.
|
|
14
|
+
|
|
15
|
+
## Required composition
|
|
16
|
+
|
|
17
|
+
- 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.
|
|
18
|
+
- 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.
|
|
19
|
+
|
|
20
|
+
## Rules
|
|
21
|
+
|
|
22
|
+
- **MUST:** 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.
|
|
23
|
+
- **MUST:** 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.
|
|
24
|
+
- **MUST:** 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.
|
|
25
|
+
- **MUST:** 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.
|
|
26
|
+
- **MUST:** 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.
|
|
27
|
+
- **MUST:** Keep Close, Escape, timeout, or another obvious path available; directional swipe is optional and never the sole dismissal mechanism.
|
|
28
|
+
- **MUST:** 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.
|
|
29
|
+
- **MUST:** Load styles.css or core.css plus toast.css.
|
|
30
|
+
|
|
31
|
+
## Common mistakes
|
|
32
|
+
|
|
33
|
+
- **Avoid:** 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. **Instead:** Use inline or blocking UI for those jobs, preserve one announcement path, choose priority semantically, and move persistent async interaction outside Toast.
|
|
34
|
+
- **Avoid:** Making swipe the only dismissal, mounting multiple Toasters casually, or allowing fixed application chrome to cover the viewport. **Instead:** Provide an obvious non-swipe dismissal, keep one application-level viewport, and set documented logical offsets for measured chrome collisions.
|
|
35
|
+
|
|
36
|
+
## Validation checklist
|
|
37
|
+
|
|
38
|
+
- 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.
|
|
39
|
+
- 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.
|
|
40
|
+
- 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.
|
|
41
|
+
|
|
42
|
+
## Related guidance
|
|
43
|
+
|
|
44
|
+
- `@flowstack-ui/atom/agents/toast`
|
|
45
|
+
- `alert-dialog`
|
|
46
|
+
- `field`
|
|
47
|
+
- `form`
|
|
48
|
+
- `progress`
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "flowstack.agent-component.v1",
|
|
3
|
+
"id": "toggle-group",
|
|
4
|
+
"name": "ToggleGroup",
|
|
5
|
+
"package": "@flowstack-ui/brick",
|
|
6
|
+
"layer": "brick",
|
|
7
|
+
"kind": "component",
|
|
8
|
+
"purpose": "Coordinate a related set of single- or multiple-selection pressed commands with shared Brick recipes and Atom keyboard behavior.",
|
|
9
|
+
"useWhen": [
|
|
10
|
+
"Related view, formatting, filter, or presentation commands need a visible pressed state and arrow-key movement."
|
|
11
|
+
],
|
|
12
|
+
"avoidWhen": [
|
|
13
|
+
{
|
|
14
|
+
"condition": "One independent command toggles, a form submits one required choice, or the selection changes the displayed panel.",
|
|
15
|
+
"useInstead": "Toggle, RadioGroup, or Tabs according to the user job"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"composition": [
|
|
19
|
+
"Compose named Item controls directly inside Root, choose single or multiple value semantics deliberately, and let Root own the shared variant, tone, size, shape, attachment, and width policy.",
|
|
20
|
+
"Use iconOnly only when an Item contains an icon with a complete accessible name; keep visible labels when the icon is not universally understood."
|
|
21
|
+
],
|
|
22
|
+
"rules": [
|
|
23
|
+
{
|
|
24
|
+
"id": "toggle-group-selection-model",
|
|
25
|
+
"level": "must",
|
|
26
|
+
"statement": "Choose single or multiple mode from the command model and keep the value and onValueChange types consistent with that choice."
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": "toggle-group-not-radio",
|
|
30
|
+
"level": "must",
|
|
31
|
+
"statement": "Do not use ToggleGroup for a form choice that requires radio semantics, validation, or ordinary form submission."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"id": "toggle-group-naming",
|
|
35
|
+
"level": "must",
|
|
36
|
+
"statement": "Give Root an accessible name when surrounding context is insufficient and give every Item a stable complete name."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "toggle-group-values",
|
|
40
|
+
"level": "must",
|
|
41
|
+
"statement": "Give every Item a stable unique value, route controlled changes through onValueChange, and keep string values for single mode and string-array values for multiple mode."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "toggle-group-roving",
|
|
45
|
+
"level": "must",
|
|
46
|
+
"statement": "Preserve one roving Tab stop, DOM-order registration, disabled-item skipping, looping policy, orientation-specific Arrow keys, Home/End, and horizontal RTL mirroring."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "toggle-group-tone",
|
|
50
|
+
"level": "must",
|
|
51
|
+
"statement": "Use accent or neutral tone for selection emphasis; do not use semantic status colors to imply error, success, warning, or danger."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "toggle-group-responsive-policy",
|
|
55
|
+
"level": "must",
|
|
56
|
+
"statement": "Choose wrapping, orientation, or an alternative narrow layout without changing DOM order or clipping focus; attached groups do not wrap."
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": "toggle-group-css",
|
|
60
|
+
"level": "must",
|
|
61
|
+
"statement": "Load styles.css or core.css plus toggle-group.css."
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"commonMistakes": [
|
|
65
|
+
{
|
|
66
|
+
"mistake": "Using ToggleGroup as visual tabs, omitting the group name, or styling every Item independently so selected states drift.",
|
|
67
|
+
"correction": "Use Tabs for panels, name the command group, and configure the shared variant and tone on Root."
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
"validation": [
|
|
71
|
+
"Check single and multiple values, pressed state, arrows, Home and End, looping, disabled-item skipping, and controlled behavior.",
|
|
72
|
+
"Check wrapping or vertical layout, touch targets, focus visibility, themes, zoom, and RTL."
|
|
73
|
+
],
|
|
74
|
+
"related": [
|
|
75
|
+
{
|
|
76
|
+
"kind": "package",
|
|
77
|
+
"package": "@flowstack-ui/atom",
|
|
78
|
+
"id": "toggle-group",
|
|
79
|
+
"versionPolicy": "installed-exact"
|
|
80
|
+
},
|
|
81
|
+
"toggle",
|
|
82
|
+
"radio-group",
|
|
83
|
+
"checkbox-group",
|
|
84
|
+
"switch",
|
|
85
|
+
"tabs",
|
|
86
|
+
"toolbar",
|
|
87
|
+
"icon"
|
|
88
|
+
]
|
|
89
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# ToggleGroup agent guide
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Coordinate a related set of single- or multiple-selection pressed commands with shared Brick recipes and Atom keyboard behavior.
|
|
6
|
+
|
|
7
|
+
## Use when
|
|
8
|
+
|
|
9
|
+
- Related view, formatting, filter, or presentation commands need a visible pressed state and arrow-key movement.
|
|
10
|
+
|
|
11
|
+
## Choose something else when
|
|
12
|
+
|
|
13
|
+
- One independent command toggles, a form submits one required choice, or the selection changes the displayed panel. Use Toggle, RadioGroup, or Tabs according to the user job.
|
|
14
|
+
|
|
15
|
+
## Required composition
|
|
16
|
+
|
|
17
|
+
- Compose named Item controls directly inside Root, choose single or multiple value semantics deliberately, and let Root own the shared variant, tone, size, shape, attachment, and width policy.
|
|
18
|
+
- Use iconOnly only when an Item contains an icon with a complete accessible name; keep visible labels when the icon is not universally understood.
|
|
19
|
+
|
|
20
|
+
## Rules
|
|
21
|
+
|
|
22
|
+
- **MUST:** Choose single or multiple mode from the command model and keep the value and onValueChange types consistent with that choice.
|
|
23
|
+
- **MUST:** Do not use ToggleGroup for a form choice that requires radio semantics, validation, or ordinary form submission.
|
|
24
|
+
- **MUST:** Give Root an accessible name when surrounding context is insufficient and give every Item a stable complete name.
|
|
25
|
+
- **MUST:** Give every Item a stable unique value, route controlled changes through onValueChange, and keep string values for single mode and string-array values for multiple mode.
|
|
26
|
+
- **MUST:** Preserve one roving Tab stop, DOM-order registration, disabled-item skipping, looping policy, orientation-specific Arrow keys, Home/End, and horizontal RTL mirroring.
|
|
27
|
+
- **MUST:** Use accent or neutral tone for selection emphasis; do not use semantic status colors to imply error, success, warning, or danger.
|
|
28
|
+
- **MUST:** Choose wrapping, orientation, or an alternative narrow layout without changing DOM order or clipping focus; attached groups do not wrap.
|
|
29
|
+
- **MUST:** Load styles.css or core.css plus toggle-group.css.
|
|
30
|
+
|
|
31
|
+
## Common mistakes
|
|
32
|
+
|
|
33
|
+
- **Avoid:** Using ToggleGroup as visual tabs, omitting the group name, or styling every Item independently so selected states drift. **Instead:** Use Tabs for panels, name the command group, and configure the shared variant and tone on Root.
|
|
34
|
+
|
|
35
|
+
## Validation checklist
|
|
36
|
+
|
|
37
|
+
- Check single and multiple values, pressed state, arrows, Home and End, looping, disabled-item skipping, and controlled behavior.
|
|
38
|
+
- Check wrapping or vertical layout, touch targets, focus visibility, themes, zoom, and RTL.
|
|
39
|
+
|
|
40
|
+
## Related guidance
|
|
41
|
+
|
|
42
|
+
- `@flowstack-ui/atom/agents/toggle-group`
|
|
43
|
+
- `toggle`
|
|
44
|
+
- `radio-group`
|
|
45
|
+
- `checkbox-group`
|
|
46
|
+
- `switch`
|
|
47
|
+
- `tabs`
|
|
48
|
+
- `toolbar`
|
|
49
|
+
- `icon`
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "flowstack.agent-component.v1",
|
|
3
|
+
"id": "toggle",
|
|
4
|
+
"name": "Toggle",
|
|
5
|
+
"package": "@flowstack-ui/brick",
|
|
6
|
+
"layer": "brick",
|
|
7
|
+
"kind": "component",
|
|
8
|
+
"purpose": "Present one persistent pressed or unpressed command with Brick recipes and Atom-owned button behavior.",
|
|
9
|
+
"useWhen": [
|
|
10
|
+
"One command such as Favorite, Pin, Bold, or Show completed needs a persistent pressed state."
|
|
11
|
+
],
|
|
12
|
+
"avoidWhen": [
|
|
13
|
+
{
|
|
14
|
+
"condition": "Related pressed commands need shared selection and arrow navigation.",
|
|
15
|
+
"useInstead": "ToggleGroup"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"condition": "A momentary action, submitted choice, boolean setting, or panel switch is required.",
|
|
19
|
+
"useInstead": "Button, Checkbox, Switch, or Tabs according to the job"
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"composition": [
|
|
23
|
+
"Keep one stable visible or accessible name across pressed states; use iconOnly only with a complete accessible name.",
|
|
24
|
+
"Choose variant for the selected-state treatment and accent or neutral tone for its emphasis before applying local customization."
|
|
25
|
+
],
|
|
26
|
+
"rules": [
|
|
27
|
+
{
|
|
28
|
+
"id": "toggle-role",
|
|
29
|
+
"level": "must",
|
|
30
|
+
"statement": "Use Toggle only when the same command meaning remains valid in pressed and unpressed states."
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "toggle-tone",
|
|
34
|
+
"level": "must",
|
|
35
|
+
"statement": "Use accent or neutral tone for selection emphasis; do not use semantic status colors to imply error, success, warning, or danger."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"id": "toggle-behavior",
|
|
39
|
+
"level": "must",
|
|
40
|
+
"statement": "Preserve Atom-owned native button semantics, aria-pressed state, activation, disabled behavior, and composition."
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": "toggle-state",
|
|
44
|
+
"level": "must",
|
|
45
|
+
"statement": "Use pressed with onPressedChange for controlled state or defaultPressed for uncontrolled state, and keep one stable command name across both aria-pressed states."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "toggle-composition",
|
|
49
|
+
"level": "must",
|
|
50
|
+
"statement": "When using asChild or render, preserve one element with Atom props, handlers, refs, tab stop, Enter and Space activation, button semantics, and disabled exposure."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"id": "toggle-css",
|
|
54
|
+
"level": "must",
|
|
55
|
+
"statement": "Load styles.css or core.css plus toggle.css."
|
|
56
|
+
}
|
|
57
|
+
],
|
|
58
|
+
"commonMistakes": [
|
|
59
|
+
{
|
|
60
|
+
"mistake": "Using Toggle as Checkbox, Switch, Button, or a visual tab, or changing its accessible name with state.",
|
|
61
|
+
"correction": "Select the component matching the interaction and keep Toggle's command name stable."
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"validation": [
|
|
65
|
+
"Check pointer and keyboard activation, controlled and uncontrolled state, stable naming, disabled state, and complete icon-only names.",
|
|
66
|
+
"Check every adopted variant and accent/neutral tone in light, dark, forced colors, narrow layouts, zoom, and RTL."
|
|
67
|
+
],
|
|
68
|
+
"related": [
|
|
69
|
+
{
|
|
70
|
+
"kind": "package",
|
|
71
|
+
"package": "@flowstack-ui/atom",
|
|
72
|
+
"id": "toggle",
|
|
73
|
+
"versionPolicy": "installed-exact"
|
|
74
|
+
},
|
|
75
|
+
"toggle-group",
|
|
76
|
+
"toolbar",
|
|
77
|
+
"button",
|
|
78
|
+
"checkbox",
|
|
79
|
+
"switch",
|
|
80
|
+
"tabs"
|
|
81
|
+
]
|
|
82
|
+
}
|