@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,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
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Toggle agent guide
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Present one persistent pressed or unpressed command with Brick recipes and Atom-owned button behavior.
|
|
6
|
+
|
|
7
|
+
## Use when
|
|
8
|
+
|
|
9
|
+
- One command such as Favorite, Pin, Bold, or Show completed needs a persistent pressed state.
|
|
10
|
+
|
|
11
|
+
## Choose something else when
|
|
12
|
+
|
|
13
|
+
- Related pressed commands need shared selection and arrow navigation. Use ToggleGroup.
|
|
14
|
+
- A momentary action, submitted choice, boolean setting, or panel switch is required. Use Button, Checkbox, Switch, or Tabs according to the job.
|
|
15
|
+
|
|
16
|
+
## Required composition
|
|
17
|
+
|
|
18
|
+
- Keep one stable visible or accessible name across pressed states; use iconOnly only with a complete accessible name.
|
|
19
|
+
- Choose variant for the selected-state treatment and accent or neutral tone for its emphasis before applying local customization.
|
|
20
|
+
|
|
21
|
+
## Rules
|
|
22
|
+
|
|
23
|
+
- **MUST:** Use Toggle only when the same command meaning remains valid in pressed and unpressed states.
|
|
24
|
+
- **MUST:** Use accent or neutral tone for selection emphasis; do not use semantic status colors to imply error, success, warning, or danger.
|
|
25
|
+
- **MUST:** Preserve Atom-owned native button semantics, aria-pressed state, activation, disabled behavior, and composition.
|
|
26
|
+
- **MUST:** Use pressed with onPressedChange for controlled state or defaultPressed for uncontrolled state, and keep one stable command name across both aria-pressed states.
|
|
27
|
+
- **MUST:** When using asChild or render, preserve one element with Atom props, handlers, refs, tab stop, Enter and Space activation, button semantics, and disabled exposure.
|
|
28
|
+
- **MUST:** Load styles.css or core.css plus toggle.css.
|
|
29
|
+
|
|
30
|
+
## Common mistakes
|
|
31
|
+
|
|
32
|
+
- **Avoid:** Using Toggle as Checkbox, Switch, Button, or a visual tab, or changing its accessible name with state. **Instead:** Select the component matching the interaction and keep Toggle's command name stable.
|
|
33
|
+
|
|
34
|
+
## Validation checklist
|
|
35
|
+
|
|
36
|
+
- Check pointer and keyboard activation, controlled and uncontrolled state, stable naming, disabled state, and complete icon-only names.
|
|
37
|
+
- Check every adopted variant and accent/neutral tone in light, dark, forced colors, narrow layouts, zoom, and RTL.
|
|
38
|
+
|
|
39
|
+
## Related guidance
|
|
40
|
+
|
|
41
|
+
- `@flowstack-ui/atom/agents/toggle`
|
|
42
|
+
- `toggle-group`
|
|
43
|
+
- `toolbar`
|
|
44
|
+
- `button`
|
|
45
|
+
- `checkbox`
|
|
46
|
+
- `switch`
|
|
47
|
+
- `tabs`
|
package/dist/agents/toolbar.json
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
}
|
|
17
17
|
],
|
|
18
18
|
"composition": [
|
|
19
|
-
"Compose Button, Link, Separator, and ToggleGroup/ToggleItem parts inside a named Root; use Brick icons
|
|
19
|
+
"Compose Button, Link, Separator, and ToggleGroup/ToggleItem parts inside a named Root; configure Toggle selection through its shared variant and accent/neutral tone, and use Brick icons with concise visible or accessible labels."
|
|
20
20
|
],
|
|
21
21
|
"rules": [
|
|
22
22
|
{
|
|
@@ -29,6 +29,16 @@
|
|
|
29
29
|
"level": "must",
|
|
30
30
|
"statement": "Define a deliberate narrow-width wrap, scroll, or alternative composition without breaking roving focus order."
|
|
31
31
|
},
|
|
32
|
+
{
|
|
33
|
+
"id": "toolbar-toggle-recipes",
|
|
34
|
+
"level": "must",
|
|
35
|
+
"statement": "Configure Toolbar ToggleItems through their ToggleGroup variant and tone; do not replace Toolbar behavior with a standalone ToggleGroup or style Items independently."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"id": "toolbar-neutral-recipe",
|
|
39
|
+
"level": "must",
|
|
40
|
+
"statement": "Treat neutral as non-accent intent and let Toolbar own its layered selected-surface recipe; do not copy a neutral solid Button fill into ToggleItems."
|
|
41
|
+
},
|
|
32
42
|
{
|
|
33
43
|
"id": "toolbar-css",
|
|
34
44
|
"level": "must",
|
package/dist/agents/toolbar.md
CHANGED
|
@@ -14,12 +14,14 @@ Style one logical group of related commands with Atom toolbar semantics and rovi
|
|
|
14
14
|
|
|
15
15
|
## Required composition
|
|
16
16
|
|
|
17
|
-
- Compose Button, Link, Separator, and ToggleGroup/ToggleItem parts inside a named Root; use Brick icons
|
|
17
|
+
- Compose Button, Link, Separator, and ToggleGroup/ToggleItem parts inside a named Root; configure Toggle selection through its shared variant and accent/neutral tone, and use Brick icons with concise visible or accessible labels.
|
|
18
18
|
|
|
19
19
|
## Rules
|
|
20
20
|
|
|
21
21
|
- **MUST:** Use Toolbar rather than adding manual arrow-key handlers or role=toolbar to an AppBar row.
|
|
22
22
|
- **MUST:** Define a deliberate narrow-width wrap, scroll, or alternative composition without breaking roving focus order.
|
|
23
|
+
- **MUST:** Configure Toolbar ToggleItems through their ToggleGroup variant and tone; do not replace Toolbar behavior with a standalone ToggleGroup or style Items independently.
|
|
24
|
+
- **MUST:** Treat neutral as non-accent intent and let Toolbar own its layered selected-surface recipe; do not copy a neutral solid Button fill into ToggleItems.
|
|
23
25
|
- **MUST:** Load styles.css or core.css plus toolbar.css and any composed Icon stylesheet.
|
|
24
26
|
|
|
25
27
|
## Common mistakes
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "flowstack.agent-component.v1",
|
|
3
|
+
"id": "tooltip",
|
|
4
|
+
"name": "Tooltip",
|
|
5
|
+
"package": "@flowstack-ui/brick",
|
|
6
|
+
"layer": "brick",
|
|
7
|
+
"kind": "component",
|
|
8
|
+
"purpose": "Present a finished brief supplemental text description for an already named trigger while Atom owns the description relationship, hover, focus-visible, touch hold, dismissal, portal, and positioning behavior.",
|
|
9
|
+
"useWhen": [
|
|
10
|
+
"A control, especially an unfamiliar IconButton, abbreviation, or compact trigger, needs a short non-interactive hint in addition to its complete accessible name."
|
|
11
|
+
],
|
|
12
|
+
"avoidWhen": [
|
|
13
|
+
{
|
|
14
|
+
"condition": "The information is required or lengthy, is a richer passive preview, or contains links, buttons, inputs, settings, or other interaction.",
|
|
15
|
+
"useInstead": "Visible text, HoverCard, or Popover"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"composition": [
|
|
19
|
+
"Compose Tooltip.Root with Tooltip.Trigger asChild around one already named focusable control, plus Tooltip.Portal and Tooltip.Content; add Tooltip.Arrow only when the styled hint needs a pointer. Use Tooltip.Provider when a coherent region shares timing policy.",
|
|
20
|
+
"Use plain Content for one short hint or Root variant=rich with presentational Tooltip.Title and Tooltip.Description for a concise title and supporting text. Both recipes remain non-interactive descriptions. Reproduce any local Appearance scope on portalled Content."
|
|
21
|
+
],
|
|
22
|
+
"rules": [
|
|
23
|
+
{
|
|
24
|
+
"id": "tooltip-trigger-name",
|
|
25
|
+
"level": "must",
|
|
26
|
+
"statement": "Give Trigger a complete accessible name independently; Tooltip supplies only a supplemental aria-describedby description while open and never replaces the control name."
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": "tooltip-noninteractive",
|
|
30
|
+
"level": "must",
|
|
31
|
+
"statement": "Keep plain and rich Content free of links, buttons, inputs, and every other focusable control; use Popover for interaction."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"id": "tooltip-brief-content",
|
|
35
|
+
"level": "should",
|
|
36
|
+
"statement": "Keep plain Content to one short hint and rich Content to a concise Title and Description; render essential instructions, errors, warnings, recovery, and full truncated text visibly."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "tooltip-owned-input",
|
|
40
|
+
"level": "must",
|
|
41
|
+
"statement": "Preserve Atom's hover, focus-visible, Escape, shared delay, and stationary 700 ms touch long-press behavior, including movement, scroll, second-touch, cancellation, disabled, unmount, compatibility-event, and finite dismissal handling."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "tooltip-composition",
|
|
45
|
+
"level": "must",
|
|
46
|
+
"statement": "When Trigger uses asChild or render, preserve its native semantics, action, complete name, Atom handlers and refs, and generated description relationship."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "tooltip-provider",
|
|
50
|
+
"level": "should",
|
|
51
|
+
"statement": "Use one Provider around a coherent region when tooltips should share open, close, and skip-delay timing; nest providers only for an intentional timing boundary."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "tooltip-shape-arrow",
|
|
55
|
+
"level": "must",
|
|
56
|
+
"statement": "Use rounded by default and pill only for deliberately compact labels; keep optional Arrow decorative and aligned to the collision-resolved side without independently recoloring its surface seam."
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": "tooltip-theme-scope",
|
|
60
|
+
"level": "must",
|
|
61
|
+
"statement": "When Portal leaves a local Appearance scope, reproduce that scope on Content or target a portal container inside it."
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"id": "tooltip-css",
|
|
65
|
+
"level": "must",
|
|
66
|
+
"statement": "Load styles.css or core.css plus tooltip.css and every composed trigger component stylesheet."
|
|
67
|
+
}
|
|
68
|
+
],
|
|
69
|
+
"commonMistakes": [
|
|
70
|
+
{
|
|
71
|
+
"mistake": "Using Tooltip as an IconButton's only name, placing interactive or essential help in rich Content, or hand-positioning a text bubble.",
|
|
72
|
+
"correction": "Name Trigger directly, keep Content supplemental and non-interactive, show required information visibly, and use complete Tooltip anatomy."
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"mistake": "Adding another touch-hold timer, assuming portalled Content inherits Appearance, or using Tooltip for a resource preview.",
|
|
76
|
+
"correction": "Rely on Atom input handling, make the portal scope explicit, and choose HoverCard for a redundant passive preview."
|
|
77
|
+
}
|
|
78
|
+
],
|
|
79
|
+
"validation": [
|
|
80
|
+
"Verify Trigger's independent name, role=tooltip Content, aria-describedby only while open, controlled and disabled state, Provider and local delays, pointer hover, focus-visible opening, Trigger-to-Content hover bridge, focus leave, top-layer Escape, and stable focus.",
|
|
81
|
+
"Verify stationary touch hold, early release, movement tolerance, scrolling, outside touch, second touch, touchcancel, compatibility events, disabled changes, unmount cleanup, and plain and rich finite dismissal without blocking ordinary activation or scrolling.",
|
|
82
|
+
"Verify plain and rich brevity with no interactive descendants, rounded and pill shapes, optional Arrow on every resolved side, collision placement, narrow wrapping, zoom, LTR and RTL, reduced motion, forced colors, portalled appearance, and complete CSS."
|
|
83
|
+
],
|
|
84
|
+
"related": [
|
|
85
|
+
{
|
|
86
|
+
"kind": "package",
|
|
87
|
+
"package": "@flowstack-ui/atom",
|
|
88
|
+
"id": "tooltip",
|
|
89
|
+
"versionPolicy": "installed-exact"
|
|
90
|
+
},
|
|
91
|
+
"icon-button",
|
|
92
|
+
"hover-card",
|
|
93
|
+
"popover",
|
|
94
|
+
"appearance"
|
|
95
|
+
]
|
|
96
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Tooltip agent guide
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Present a finished brief supplemental text description for an already named trigger while Atom owns the description relationship, hover, focus-visible, touch hold, dismissal, portal, and positioning behavior.
|
|
6
|
+
|
|
7
|
+
## Use when
|
|
8
|
+
|
|
9
|
+
- A control, especially an unfamiliar IconButton, abbreviation, or compact trigger, needs a short non-interactive hint in addition to its complete accessible name.
|
|
10
|
+
|
|
11
|
+
## Choose something else when
|
|
12
|
+
|
|
13
|
+
- The information is required or lengthy, is a richer passive preview, or contains links, buttons, inputs, settings, or other interaction. Use Visible text, HoverCard, or Popover.
|
|
14
|
+
|
|
15
|
+
## Required composition
|
|
16
|
+
|
|
17
|
+
- Compose Tooltip.Root with Tooltip.Trigger asChild around one already named focusable control, plus Tooltip.Portal and Tooltip.Content; add Tooltip.Arrow only when the styled hint needs a pointer. Use Tooltip.Provider when a coherent region shares timing policy.
|
|
18
|
+
- Use plain Content for one short hint or Root variant=rich with presentational Tooltip.Title and Tooltip.Description for a concise title and supporting text. Both recipes remain non-interactive descriptions. Reproduce any local Appearance scope on portalled Content.
|
|
19
|
+
|
|
20
|
+
## Rules
|
|
21
|
+
|
|
22
|
+
- **MUST:** Give Trigger a complete accessible name independently; Tooltip supplies only a supplemental aria-describedby description while open and never replaces the control name.
|
|
23
|
+
- **MUST:** Keep plain and rich Content free of links, buttons, inputs, and every other focusable control; use Popover for interaction.
|
|
24
|
+
- **SHOULD:** Keep plain Content to one short hint and rich Content to a concise Title and Description; render essential instructions, errors, warnings, recovery, and full truncated text visibly.
|
|
25
|
+
- **MUST:** Preserve Atom's hover, focus-visible, Escape, shared delay, and stationary 700 ms touch long-press behavior, including movement, scroll, second-touch, cancellation, disabled, unmount, compatibility-event, and finite dismissal handling.
|
|
26
|
+
- **MUST:** When Trigger uses asChild or render, preserve its native semantics, action, complete name, Atom handlers and refs, and generated description relationship.
|
|
27
|
+
- **SHOULD:** Use one Provider around a coherent region when tooltips should share open, close, and skip-delay timing; nest providers only for an intentional timing boundary.
|
|
28
|
+
- **MUST:** Use rounded by default and pill only for deliberately compact labels; keep optional Arrow decorative and aligned to the collision-resolved side without independently recoloring its surface seam.
|
|
29
|
+
- **MUST:** When Portal leaves a local Appearance scope, reproduce that scope on Content or target a portal container inside it.
|
|
30
|
+
- **MUST:** Load styles.css or core.css plus tooltip.css and every composed trigger component stylesheet.
|
|
31
|
+
|
|
32
|
+
## Common mistakes
|
|
33
|
+
|
|
34
|
+
- **Avoid:** Using Tooltip as an IconButton's only name, placing interactive or essential help in rich Content, or hand-positioning a text bubble. **Instead:** Name Trigger directly, keep Content supplemental and non-interactive, show required information visibly, and use complete Tooltip anatomy.
|
|
35
|
+
- **Avoid:** Adding another touch-hold timer, assuming portalled Content inherits Appearance, or using Tooltip for a resource preview. **Instead:** Rely on Atom input handling, make the portal scope explicit, and choose HoverCard for a redundant passive preview.
|
|
36
|
+
|
|
37
|
+
## Validation checklist
|
|
38
|
+
|
|
39
|
+
- Verify Trigger's independent name, role=tooltip Content, aria-describedby only while open, controlled and disabled state, Provider and local delays, pointer hover, focus-visible opening, Trigger-to-Content hover bridge, focus leave, top-layer Escape, and stable focus.
|
|
40
|
+
- Verify stationary touch hold, early release, movement tolerance, scrolling, outside touch, second touch, touchcancel, compatibility events, disabled changes, unmount cleanup, and plain and rich finite dismissal without blocking ordinary activation or scrolling.
|
|
41
|
+
- Verify plain and rich brevity with no interactive descendants, rounded and pill shapes, optional Arrow on every resolved side, collision placement, narrow wrapping, zoom, LTR and RTL, reduced motion, forced colors, portalled appearance, and complete CSS.
|
|
42
|
+
|
|
43
|
+
## Related guidance
|
|
44
|
+
|
|
45
|
+
- `@flowstack-ui/atom/agents/tooltip`
|
|
46
|
+
- `icon-button`
|
|
47
|
+
- `hover-card`
|
|
48
|
+
- `popover`
|
|
49
|
+
- `appearance`
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "flowstack.agent-component.v1",
|
|
3
|
+
"id": "tree-grid",
|
|
4
|
+
"name": "TreeGrid",
|
|
5
|
+
"package": "@flowstack-ui/brick",
|
|
6
|
+
"layer": "brick",
|
|
7
|
+
"kind": "component",
|
|
8
|
+
"purpose": "Present finished hierarchical multi-column rows while Atom owns treegrid relationships, active-cell navigation, expansion, row selection, logical coordinates, and actionable-header semantics.",
|
|
9
|
+
"useWhen": [
|
|
10
|
+
"Parent-child rows expand and each visible row exposes several independently navigable columns, such as a structured file browser."
|
|
11
|
+
],
|
|
12
|
+
"avoidWhen": [
|
|
13
|
+
{
|
|
14
|
+
"condition": "The hierarchy has one primary column, rows are flat, people only read native tabular relationships, or cells require editing or independent controls.",
|
|
15
|
+
"useInstead": "Tree, DataGrid, Table, or an application-owned data tool"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"composition": [
|
|
19
|
+
"Compose explicit TreeGrid.Container for horizontal overflow, then one named Root with truthful rowCount and columnCount, optional Caption, Header and Body rowgroups, optional Footer summaries, and uniquely valued indexed Rows. Give every data Row stable parentValue and level metadata, one column-one RowHeader with decorative Indicator, then indexed Cells.",
|
|
20
|
+
"For application sorting, give an indexed ColumnHeader onAction, update records and sortDirection outside TreeGrid, and keep SortIndicator decorative. Compose Toolbar, filters, Pagination, status, and detail surfaces outside Root."
|
|
21
|
+
],
|
|
22
|
+
"rules": [
|
|
23
|
+
{
|
|
24
|
+
"id": "tree-grid-name-relationships",
|
|
25
|
+
"level": "must",
|
|
26
|
+
"statement": "Name Root and preserve treegrid, rowgroup, row, rowheader, columnheader, and gridcell relationships with durable Row values, stable parentValue and level, one-based logical indexes, and truthful full totals."
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": "tree-grid-focus",
|
|
30
|
+
"level": "must",
|
|
31
|
+
"statement": "Keep Root as the sole Tab stop and preserve active-descendant navigation across visible cells, vertical row movement, Home/End and whole-grid movement, disabled skipping, loop policy, and RTL-aware expansion and collapse in the tree column."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"id": "tree-grid-expansion",
|
|
35
|
+
"level": "must",
|
|
36
|
+
"statement": "Mark only real parent Rows expandable, keep descendants hidden from navigation while any ancestor is collapsed, and let Atom relocate an active descendant to the collapsed ancestor's RowHeader cell."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "tree-grid-selection",
|
|
40
|
+
"level": "must",
|
|
41
|
+
"statement": "Align scalar, array, or null value with selectionMode, use stable unique Row values, keep active cell independent from selected rows, and distinguish selectable=false from disabled for headers, parents, and summaries."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "tree-grid-actions",
|
|
45
|
+
"level": "must",
|
|
46
|
+
"statement": "Use ColumnHeader onAction for equivalent pointer and active-header Enter activation, keep sortDirection truthful, and keep sorting, filtering, editing, resizing, data mutation, fetching, pagination, and persistence application-owned."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "tree-grid-cell-boundary",
|
|
50
|
+
"level": "must",
|
|
51
|
+
"statement": "Keep v1 cells free of independent links, buttons, inputs, menus, and editing; keep hierarchy and sort indicators decorative and preserve RowHeader as the tree-column semantic owner."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "tree-grid-virtualization",
|
|
55
|
+
"level": "must",
|
|
56
|
+
"statement": "If an application windows hierarchical rows, preserve logical totals, indexes, levels, parent visibility, and durable identities while keeping the active cell and collapse destination mounted; geometry utilities do not own treegrid focus or semantics."
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": "tree-grid-responsive",
|
|
60
|
+
"level": "must",
|
|
61
|
+
"statement": "Use Container for honest overflow, preserve the content-aware minimum width and all columns at narrow sizes, let the outline Root own one rounded boundary, and keep logical indentation and alignment correct in RTL."
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"id": "tree-grid-css",
|
|
65
|
+
"level": "must",
|
|
66
|
+
"statement": "Load styles.css or core.css plus tree-grid.css and every stylesheet for external composed controls."
|
|
67
|
+
}
|
|
68
|
+
],
|
|
69
|
+
"commonMistakes": [
|
|
70
|
+
{
|
|
71
|
+
"mistake": "Using TreeGrid for a one-column tree or read-only table, deriving parent/level/index identity from a rendered page, or inserting arbitrary controls into cells.",
|
|
72
|
+
"correction": "Choose Tree or Table when simpler semantics fit, supply stable full-collection hierarchy and coordinates, and use an application-owned data tool for interactive cells."
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"mistake": "Expecting sortDirection to reorder rows, hiding columns on mobile, or adding a second framed clipping wrapper around outline.",
|
|
76
|
+
"correction": "Keep sorting application-owned, preserve honest overflow, and let Root own its complete border and corner paint."
|
|
77
|
+
}
|
|
78
|
+
],
|
|
79
|
+
"validation": [
|
|
80
|
+
"Verify Root naming and complete treegrid relationships, unique Row values, parentValue/level metadata, RowHeader ownership, one-based logical indexes, full totals, active descendant, selection metadata, disabled/read-only state, and sort direction.",
|
|
81
|
+
"Exercise LTR/RTL expansion, collapse and parent movement, next-cell arrows, vertical movement, Home/End, whole-grid movement, loop boundaries, disabled cells, collapse relocation, none/single/multiple selection, nonselectable Rows, and header pointer/Enter parity.",
|
|
82
|
+
"Verify controlled/uncontrolled expansion and active-cell state; both variants, sizes, densities, captions, numeric/logical alignment, Container overflow, deep hierarchy, 320px, zoom, RTL, long content, light/dark appearance, forced colors, reduced motion, and any windowed active target."
|
|
83
|
+
],
|
|
84
|
+
"related": [
|
|
85
|
+
{
|
|
86
|
+
"kind": "package",
|
|
87
|
+
"package": "@flowstack-ui/atom",
|
|
88
|
+
"id": "tree-grid",
|
|
89
|
+
"versionPolicy": "installed-exact"
|
|
90
|
+
},
|
|
91
|
+
"tree",
|
|
92
|
+
"data-grid",
|
|
93
|
+
"table",
|
|
94
|
+
"toolbar",
|
|
95
|
+
"pagination",
|
|
96
|
+
"scroll-area"
|
|
97
|
+
]
|
|
98
|
+
}
|