@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,49 @@
|
|
|
1
|
+
# Avatar agent guide
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Present one compact person or entity identity with a finished fixed-square image/fallback recipe and optional visual status ring.
|
|
6
|
+
|
|
7
|
+
## Use when
|
|
8
|
+
|
|
9
|
+
- A person, organization, workspace, or other named entity needs a compact fixed-square identity token with explicit fallback content.
|
|
10
|
+
|
|
11
|
+
## Choose something else when
|
|
12
|
+
|
|
13
|
+
- A larger editorial or profile portrait needs an authored aspect ratio, crop, focal position, or responsive measure. Use Image.
|
|
14
|
+
- A count or dot must attach to an identity. Use NotificationBadge composed around Avatar.
|
|
15
|
+
|
|
16
|
+
## Required composition
|
|
17
|
+
|
|
18
|
+
- Provide explicit alt and fallback; keep Avatar passive and let an owning Button or Link provide interaction, focus, and the functional accessible name.
|
|
19
|
+
- Keep visible identity or status text nearby when the image or status ring alone would be ambiguous or consequential.
|
|
20
|
+
|
|
21
|
+
## Rules
|
|
22
|
+
|
|
23
|
+
- **MUST:** Use Avatar for compact fixed-square identity presentation, not generic media or larger editorial portraits.
|
|
24
|
+
- **MUST:** Decide alt from context: preserve meaningful identity when Avatar adds it, and use alt="" only when adjacent text or the owning control already supplies the same identity.
|
|
25
|
+
- **MUST:** Pass the same source to the Atom-backed Root and Image path, preserve idle/loading/loaded/error state, and keep explicit fallback content durable through missing, changed, delayed, and failed images.
|
|
26
|
+
- **MUST:** Supply explicit localized fallback content; do not generate initials or infer identity from a filename.
|
|
27
|
+
- **MUST:** Keep Avatar passive; wrap it with the public Button or Link that owns any action or destination.
|
|
28
|
+
- **MUST:** Provide separate accessible status text when a status ring communicates meaningful availability.
|
|
29
|
+
- **MUST:** Choose the nearest named Avatar size, including 2xl through 5xl for larger square profile identities, instead of overriding --brick-avatar-size inline; use Image for authored non-square portrait media.
|
|
30
|
+
- **MUST:** Load styles.css or core.css plus avatar.css.
|
|
31
|
+
|
|
32
|
+
## Common mistakes
|
|
33
|
+
|
|
34
|
+
- **Avoid:** Forcing a large 4:5 profile portrait into Avatar, using alt="" merely because a name appears somewhere nearby, generating fallback initials inside Brick, or treating the status ring as an announcement. **Instead:** Use Image for authored portrait media, make the alt decision from the specific context, provide explicit fallback content, and keep meaningful status in text.
|
|
35
|
+
|
|
36
|
+
## Validation checklist
|
|
37
|
+
|
|
38
|
+
- Check missing, idle, loading, loaded, changed-source, and error paths; delayed fallback timing; fixed square size; crop; informative and decorative naming; passive semantics; nearby identity/status text; light/dark/forced colors; zoom; and RTL.
|
|
39
|
+
- Confirm a named Avatar size is used, CSS is loaded, and any owning Button, Link, or NotificationBadge preserves its own public contract.
|
|
40
|
+
|
|
41
|
+
## Related guidance
|
|
42
|
+
|
|
43
|
+
- `@flowstack-ui/atom/agents/avatar`
|
|
44
|
+
- `image`
|
|
45
|
+
- `button`
|
|
46
|
+
- `link`
|
|
47
|
+
- `notification-badge`
|
|
48
|
+
- `badge`
|
|
49
|
+
- `status`
|
package/dist/agents/badge.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"package": "@flowstack-ui/brick",
|
|
6
6
|
"layer": "brick",
|
|
7
7
|
"kind": "component",
|
|
8
|
-
"purpose": "Present a short passive category, status,
|
|
8
|
+
"purpose": "Present a short passive category, status, metadata label, or compact circular passive marker with a complete Brick visual recipe.",
|
|
9
9
|
"useWhen": [
|
|
10
10
|
"A short non-interactive label needs a bounded visual treatment that remains understandable in its surrounding content."
|
|
11
11
|
],
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
}
|
|
17
17
|
],
|
|
18
18
|
"composition": [
|
|
19
|
-
"Place the short label directly in Badge; when an icon or separately styled Text is necessary, keep those children passive and let Badge own their spacing and foreground."
|
|
19
|
+
"Place the short label directly in Badge; when an icon or separately styled Text is necessary, keep those children passive and let Badge own their spacing and foreground. Use size=xl with shape=circle only for a deliberate passive empty-state icon well."
|
|
20
20
|
],
|
|
21
21
|
"rules": [
|
|
22
22
|
{
|
|
@@ -24,6 +24,11 @@
|
|
|
24
24
|
"level": "must",
|
|
25
25
|
"statement": "Keep Badge passive; do not add click, press, selection, or disclosure behavior to it."
|
|
26
26
|
},
|
|
27
|
+
{
|
|
28
|
+
"id": "badge-context-live",
|
|
29
|
+
"level": "must",
|
|
30
|
+
"statement": "Keep every count or status understandable from visible text or its owning control without relying on color, shape, or placement, and never assume Badge announces changes or joins a sibling control name automatically."
|
|
31
|
+
},
|
|
27
32
|
{
|
|
28
33
|
"id": "badge-inherited-text",
|
|
29
34
|
"level": "must",
|
|
@@ -37,7 +42,12 @@
|
|
|
37
42
|
{
|
|
38
43
|
"id": "badge-short-label",
|
|
39
44
|
"level": "must",
|
|
40
|
-
"statement": "Keep the label short and
|
|
45
|
+
"statement": "Keep the label short and atomic; Badge stays on one line, so use ordinary Text for explanatory or prose-length content."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "badge-circle",
|
|
49
|
+
"level": "must",
|
|
50
|
+
"statement": "Use shape=circle only for one compact passive icon or single character with nearby context; use IconButton for an action and Status for a dot-and-label state."
|
|
41
51
|
},
|
|
42
52
|
{
|
|
43
53
|
"id": "badge-css",
|
|
@@ -47,18 +57,26 @@
|
|
|
47
57
|
],
|
|
48
58
|
"commonMistakes": [
|
|
49
59
|
{
|
|
50
|
-
"mistake": "Nesting default-tone Text in a Badge, manually spacing an icon and label, or using Badge as an eyebrow solely for uppercase styling.",
|
|
51
|
-
"correction": "Use plain Badge text when possible, tone=inherit for nested Text, Badge's own gap for children, and Text variant=eyebrow for a short editorial heading introduction."
|
|
60
|
+
"mistake": "Nesting default-tone Text in a Badge, manually spacing an icon and label, using a padded rounded Badge for a circular verification marker, or using Badge as an eyebrow solely for uppercase styling.",
|
|
61
|
+
"correction": "Use plain Badge text when possible, tone=inherit for nested Text, Badge's own gap for children, shape=circle for a passive icon marker, and Text variant=eyebrow for a short editorial heading introduction."
|
|
52
62
|
}
|
|
53
63
|
],
|
|
54
64
|
"validation": [
|
|
55
|
-
"Check label brevity, passive semantics, child spacing, foreground contrast for every variant and tone, zoom, forced colors, and RTL.",
|
|
56
|
-
"Confirm nested Text inherits the Badge foreground and CSS is loaded."
|
|
65
|
+
"Check label brevity, one-line atomic sizing, passive semantics, child spacing, foreground contrast for every variant and tone, zoom, forced colors, and RTL.",
|
|
66
|
+
"Confirm nested Text inherits the Badge foreground, circle geometry remains exactly square, and CSS is loaded."
|
|
57
67
|
],
|
|
58
68
|
"related": [
|
|
69
|
+
{
|
|
70
|
+
"kind": "package",
|
|
71
|
+
"package": "@flowstack-ui/atom",
|
|
72
|
+
"id": "badge",
|
|
73
|
+
"versionPolicy": "installed-exact"
|
|
74
|
+
},
|
|
59
75
|
"text",
|
|
60
76
|
"icon",
|
|
61
77
|
"notification-badge",
|
|
62
|
-
"button"
|
|
78
|
+
"button",
|
|
79
|
+
"status",
|
|
80
|
+
"z-stack"
|
|
63
81
|
]
|
|
64
82
|
}
|
package/dist/agents/badge.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Purpose
|
|
4
4
|
|
|
5
|
-
Present a short passive category, status,
|
|
5
|
+
Present a short passive category, status, metadata label, or compact circular passive marker with a complete Brick visual recipe.
|
|
6
6
|
|
|
7
7
|
## Use when
|
|
8
8
|
|
|
@@ -14,28 +14,33 @@ Present a short passive category, status, or metadata label with a complete Bric
|
|
|
14
14
|
|
|
15
15
|
## Required composition
|
|
16
16
|
|
|
17
|
-
- Place the short label directly in Badge; when an icon or separately styled Text is necessary, keep those children passive and let Badge own their spacing and foreground.
|
|
17
|
+
- Place the short label directly in Badge; when an icon or separately styled Text is necessary, keep those children passive and let Badge own their spacing and foreground. Use size=xl with shape=circle only for a deliberate passive empty-state icon well.
|
|
18
18
|
|
|
19
19
|
## Rules
|
|
20
20
|
|
|
21
21
|
- **MUST:** Keep Badge passive; do not add click, press, selection, or disclosure behavior to it.
|
|
22
|
+
- **MUST:** Keep every count or status understandable from visible text or its owning control without relying on color, shape, or placement, and never assume Badge announces changes or joins a sibling control name automatically.
|
|
22
23
|
- **MUST:** When composing Text inside Badge, use tone=inherit unless that Text intentionally communicates a separate semantic tone, so the Badge recipe continues to own foreground contrast.
|
|
23
24
|
- **MUST:** Rely on Badge's gap for an icon and label instead of literal whitespace, wrapper margins, or positional offsets.
|
|
24
|
-
- **MUST:** Keep the label short and
|
|
25
|
+
- **MUST:** Keep the label short and atomic; Badge stays on one line, so use ordinary Text for explanatory or prose-length content.
|
|
26
|
+
- **MUST:** Use shape=circle only for one compact passive icon or single character with nearby context; use IconButton for an action and Status for a dot-and-label state.
|
|
25
27
|
- **MUST:** Load styles.css or core.css plus badge.css.
|
|
26
28
|
|
|
27
29
|
## Common mistakes
|
|
28
30
|
|
|
29
|
-
- **Avoid:** Nesting default-tone Text in a Badge, manually spacing an icon and label, or using Badge as an eyebrow solely for uppercase styling. **Instead:** Use plain Badge text when possible, tone=inherit for nested Text, Badge's own gap for children, and Text variant=eyebrow for a short editorial heading introduction.
|
|
31
|
+
- **Avoid:** Nesting default-tone Text in a Badge, manually spacing an icon and label, using a padded rounded Badge for a circular verification marker, or using Badge as an eyebrow solely for uppercase styling. **Instead:** Use plain Badge text when possible, tone=inherit for nested Text, Badge's own gap for children, shape=circle for a passive icon marker, and Text variant=eyebrow for a short editorial heading introduction.
|
|
30
32
|
|
|
31
33
|
## Validation checklist
|
|
32
34
|
|
|
33
|
-
- Check label brevity, passive semantics, child spacing, foreground contrast for every variant and tone, zoom, forced colors, and RTL.
|
|
34
|
-
- Confirm nested Text inherits the Badge foreground and CSS is loaded.
|
|
35
|
+
- Check label brevity, one-line atomic sizing, passive semantics, child spacing, foreground contrast for every variant and tone, zoom, forced colors, and RTL.
|
|
36
|
+
- Confirm nested Text inherits the Badge foreground, circle geometry remains exactly square, and CSS is loaded.
|
|
35
37
|
|
|
36
38
|
## Related guidance
|
|
37
39
|
|
|
40
|
+
- `@flowstack-ui/atom/agents/badge`
|
|
38
41
|
- `text`
|
|
39
42
|
- `icon`
|
|
40
43
|
- `notification-badge`
|
|
41
44
|
- `button`
|
|
45
|
+
- `status`
|
|
46
|
+
- `z-stack`
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "flowstack.agent-component.v1",
|
|
3
|
+
"id": "bleed",
|
|
4
|
+
"name": "Bleed",
|
|
5
|
+
"package": "@flowstack-ui/brick",
|
|
6
|
+
"layer": "brick",
|
|
7
|
+
"kind": "component",
|
|
8
|
+
"purpose": "Extend authored content across a parent inset with responsive logical spacing.",
|
|
9
|
+
"useWhen": [
|
|
10
|
+
"Edge media or artwork must cross its immediate container padding."
|
|
11
|
+
],
|
|
12
|
+
"avoidWhen": [
|
|
13
|
+
{
|
|
14
|
+
"condition": "The problem is size, paint, ordinary arrangement, or unrelated positioning.",
|
|
15
|
+
"useInstead": "Frame, Surface, Stack, Grid, or application layout"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"composition": [
|
|
19
|
+
"Place Bleed inside the owner of the inset it crosses and keep meaningful media or content semantics on the authored child."
|
|
20
|
+
],
|
|
21
|
+
"rules": [
|
|
22
|
+
{
|
|
23
|
+
"id": "bleed-positive-input",
|
|
24
|
+
"level": "must",
|
|
25
|
+
"statement": "Use public non-negative spacing values; Bleed owns the negative conversion."
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "bleed-axis-first",
|
|
29
|
+
"level": "should",
|
|
30
|
+
"statement": "Prefer inline or block for an axis and directional props only for a genuine one-edge exception."
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "bleed-verify",
|
|
34
|
+
"level": "must",
|
|
35
|
+
"statement": "Verify narrow widths, RTL, zoom, and horizontal overflow."
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"commonMistakes": [
|
|
39
|
+
{
|
|
40
|
+
"mistake": "Using Bleed to fix an incorrect Container measure.",
|
|
41
|
+
"correction": "Correct the owning layout first."
|
|
42
|
+
}
|
|
43
|
+
],
|
|
44
|
+
"validation": [
|
|
45
|
+
"Confirm the intended edges align with the parent's outer boundary.",
|
|
46
|
+
"Confirm the page does not gain horizontal overflow."
|
|
47
|
+
],
|
|
48
|
+
"related": [
|
|
49
|
+
"frame",
|
|
50
|
+
"stack",
|
|
51
|
+
"surface",
|
|
52
|
+
"image"
|
|
53
|
+
]
|
|
54
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Bleed agent guide
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Extend authored content across a parent inset with responsive logical spacing.
|
|
6
|
+
|
|
7
|
+
## Use when
|
|
8
|
+
|
|
9
|
+
- Edge media or artwork must cross its immediate container padding.
|
|
10
|
+
|
|
11
|
+
## Choose something else when
|
|
12
|
+
|
|
13
|
+
- The problem is size, paint, ordinary arrangement, or unrelated positioning. Use Frame, Surface, Stack, Grid, or application layout.
|
|
14
|
+
|
|
15
|
+
## Required composition
|
|
16
|
+
|
|
17
|
+
- Place Bleed inside the owner of the inset it crosses and keep meaningful media or content semantics on the authored child.
|
|
18
|
+
|
|
19
|
+
## Rules
|
|
20
|
+
|
|
21
|
+
- **MUST:** Use public non-negative spacing values; Bleed owns the negative conversion.
|
|
22
|
+
- **SHOULD:** Prefer inline or block for an axis and directional props only for a genuine one-edge exception.
|
|
23
|
+
- **MUST:** Verify narrow widths, RTL, zoom, and horizontal overflow.
|
|
24
|
+
|
|
25
|
+
## Common mistakes
|
|
26
|
+
|
|
27
|
+
- **Avoid:** Using Bleed to fix an incorrect Container measure. **Instead:** Correct the owning layout first.
|
|
28
|
+
|
|
29
|
+
## Validation checklist
|
|
30
|
+
|
|
31
|
+
- Confirm the intended edges align with the parent's outer boundary.
|
|
32
|
+
- Confirm the page does not gain horizontal overflow.
|
|
33
|
+
|
|
34
|
+
## Related guidance
|
|
35
|
+
|
|
36
|
+
- `frame`
|
|
37
|
+
- `stack`
|
|
38
|
+
- `surface`
|
|
39
|
+
- `image`
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "flowstack.agent-component.v1",
|
|
3
|
+
"id": "blockquote",
|
|
4
|
+
"name": "Blockquote",
|
|
5
|
+
"package": "@flowstack-ui/brick",
|
|
6
|
+
"layer": "brick",
|
|
7
|
+
"kind": "component",
|
|
8
|
+
"purpose": "Compose an extended quotation, source URL, and optional attribution with correct native structure and finished Brick styling.",
|
|
9
|
+
"useWhen": [
|
|
10
|
+
"An extended quotation and optional attribution form one self-contained content unit."
|
|
11
|
+
],
|
|
12
|
+
"avoidWhen": [
|
|
13
|
+
{
|
|
14
|
+
"condition": "The quotation is inline within a sentence.",
|
|
15
|
+
"useInstead": "native q inside the surrounding content owner"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"condition": "The interface is a testimonial card with media, ratings, or actions.",
|
|
19
|
+
"useInstead": "Card or a product Block composed with Blockquote"
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"composition": [
|
|
23
|
+
"Place Blockquote.Content and optional Blockquote.Caption as siblings inside Blockquote.Root; put the source URL on Content through cite.",
|
|
24
|
+
"Use Blockquote.Cite inside Caption only for a referenced work or source, not merely for the person quoted."
|
|
25
|
+
],
|
|
26
|
+
"rules": [
|
|
27
|
+
{
|
|
28
|
+
"id": "blockquote-native",
|
|
29
|
+
"level": "must",
|
|
30
|
+
"statement": "Preserve figure Root, blockquote Content, sibling figcaption Caption, and native cite Cite."
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "blockquote-attribution",
|
|
34
|
+
"level": "must",
|
|
35
|
+
"statement": "Keep attribution outside Content so it is not represented as part of the quotation."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"id": "blockquote-recipes",
|
|
39
|
+
"level": "must",
|
|
40
|
+
"statement": "Select only the documented accent, surface, or plain variant and start, center, or end alignment."
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": "blockquote-icon",
|
|
44
|
+
"level": "must",
|
|
45
|
+
"statement": "Keep Icon decorative unless a consumer intentionally overrides aria-hidden for meaningful custom content."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "blockquote-css",
|
|
49
|
+
"level": "must",
|
|
50
|
+
"statement": "Load styles.css or core.css plus blockquote.css."
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"commonMistakes": [
|
|
54
|
+
{
|
|
55
|
+
"mistake": "Putting the author or source inside Blockquote.Content.",
|
|
56
|
+
"correction": "Render attribution in sibling Blockquote.Caption and use Cite only for a work or source title."
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"validation": [
|
|
60
|
+
"Confirm native figure, blockquote, figcaption, and cite mapping; source URL forwarding; logical alignment; selection and copy; forced colors; zoom; text spacing; localization; RTL; and CSS delivery.",
|
|
61
|
+
"Confirm Blockquote adds no tab stop, role, interaction, or application provenance policy."
|
|
62
|
+
],
|
|
63
|
+
"related": [
|
|
64
|
+
"text",
|
|
65
|
+
"mark",
|
|
66
|
+
"interface-composition"
|
|
67
|
+
]
|
|
68
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Blockquote agent guide
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Compose an extended quotation, source URL, and optional attribution with correct native structure and finished Brick styling.
|
|
6
|
+
|
|
7
|
+
## Use when
|
|
8
|
+
|
|
9
|
+
- An extended quotation and optional attribution form one self-contained content unit.
|
|
10
|
+
|
|
11
|
+
## Choose something else when
|
|
12
|
+
|
|
13
|
+
- The quotation is inline within a sentence. Use native q inside the surrounding content owner.
|
|
14
|
+
- The interface is a testimonial card with media, ratings, or actions. Use Card or a product Block composed with Blockquote.
|
|
15
|
+
|
|
16
|
+
## Required composition
|
|
17
|
+
|
|
18
|
+
- Place Blockquote.Content and optional Blockquote.Caption as siblings inside Blockquote.Root; put the source URL on Content through cite.
|
|
19
|
+
- Use Blockquote.Cite inside Caption only for a referenced work or source, not merely for the person quoted.
|
|
20
|
+
|
|
21
|
+
## Rules
|
|
22
|
+
|
|
23
|
+
- **MUST:** Preserve figure Root, blockquote Content, sibling figcaption Caption, and native cite Cite.
|
|
24
|
+
- **MUST:** Keep attribution outside Content so it is not represented as part of the quotation.
|
|
25
|
+
- **MUST:** Select only the documented accent, surface, or plain variant and start, center, or end alignment.
|
|
26
|
+
- **MUST:** Keep Icon decorative unless a consumer intentionally overrides aria-hidden for meaningful custom content.
|
|
27
|
+
- **MUST:** Load styles.css or core.css plus blockquote.css.
|
|
28
|
+
|
|
29
|
+
## Common mistakes
|
|
30
|
+
|
|
31
|
+
- **Avoid:** Putting the author or source inside Blockquote.Content. **Instead:** Render attribution in sibling Blockquote.Caption and use Cite only for a work or source title.
|
|
32
|
+
|
|
33
|
+
## Validation checklist
|
|
34
|
+
|
|
35
|
+
- Confirm native figure, blockquote, figcaption, and cite mapping; source URL forwarding; logical alignment; selection and copy; forced colors; zoom; text spacing; localization; RTL; and CSS delivery.
|
|
36
|
+
- Confirm Blockquote adds no tab stop, role, interaction, or application provenance policy.
|
|
37
|
+
|
|
38
|
+
## Related guidance
|
|
39
|
+
|
|
40
|
+
- `text`
|
|
41
|
+
- `mark`
|
|
42
|
+
- `interface-composition`
|
package/dist/agents/button.json
CHANGED
|
@@ -39,10 +39,15 @@
|
|
|
39
39
|
],
|
|
40
40
|
"validation": [
|
|
41
41
|
"Confirm an accessible name and action semantics.",
|
|
42
|
-
"Test focus, keyboard activation, disabled/loading behavior, and contrast in every supported appearance."
|
|
42
|
+
"Test focus, keyboard activation, disabled/loading behavior, and contrast in every supported appearance; disabled labels must remain readable while ghost and outline controls stay transparent."
|
|
43
43
|
],
|
|
44
44
|
"related": [
|
|
45
|
-
|
|
45
|
+
{
|
|
46
|
+
"kind": "package",
|
|
47
|
+
"package": "@flowstack-ui/atom",
|
|
48
|
+
"id": "button",
|
|
49
|
+
"versionPolicy": "installed-exact"
|
|
50
|
+
},
|
|
46
51
|
"link",
|
|
47
52
|
"form"
|
|
48
53
|
]
|
package/dist/agents/button.md
CHANGED
|
@@ -29,7 +29,7 @@ Render a finished accessible action or emphasized native link with Brick size, t
|
|
|
29
29
|
## Validation checklist
|
|
30
30
|
|
|
31
31
|
- Confirm an accessible name and action semantics.
|
|
32
|
-
- Test focus, keyboard activation, disabled/loading behavior, and contrast in every supported appearance.
|
|
32
|
+
- Test focus, keyboard activation, disabled/loading behavior, and contrast in every supported appearance; disabled labels must remain readable while ghost and outline controls stay transparent.
|
|
33
33
|
|
|
34
34
|
## Related guidance
|
|
35
35
|
|
package/dist/agents/card.json
CHANGED
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
}
|
|
17
17
|
],
|
|
18
18
|
"composition": [
|
|
19
|
-
"Compose Card.Root with only the Header, Title, Description, Content, and Footer parts the subject needs."
|
|
19
|
+
"Compose Card.Root with only the Header, Title, Description, Action, Content, and Footer parts the subject needs.",
|
|
20
|
+
"Card.Action reserves a trailing Header column across the title and description rows; when compact metadata belongs beside only the title, compose that title row with HStack and omit Card.Action so the description retains the full measure."
|
|
20
21
|
],
|
|
21
22
|
"rules": [
|
|
22
23
|
{
|
|
@@ -33,16 +34,35 @@
|
|
|
33
34
|
"id": "card-borderless-media",
|
|
34
35
|
"level": "should",
|
|
35
36
|
"statement": "Use bordered={false} when edge-to-edge authored media should meet Card's clipped outer boundary without retaining the selected recipe's border; do not remove that geometry with application CSS."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "card-action-measure",
|
|
40
|
+
"level": "should",
|
|
41
|
+
"statement": "Use Card.Action only when every Header text row should reserve its trailing column; otherwise compose title-only metadata in a Brick HStack."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "card-edge-media-header",
|
|
45
|
+
"level": "should",
|
|
46
|
+
"statement": "For edge media, place authored Image directly under Card.Root, then use Card.Header for topic, title, and description so the root clips outer corners and the complete text region receives Card inset."
|
|
36
47
|
}
|
|
37
48
|
],
|
|
38
49
|
"commonMistakes": [
|
|
39
50
|
{
|
|
40
51
|
"mistake": "Using Card for every spacing group.",
|
|
41
52
|
"correction": "Use Stack or Surface when there is no bounded card subject."
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"mistake": "Using Card.Action for a title-only Badge and unintentionally narrowing the description below it.",
|
|
56
|
+
"correction": "Place the title and Badge in a Brick HStack, then render Card.Description as the next full-width Header child."
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"mistake": "Placing Card.Content directly after edge media and expecting top inset.",
|
|
60
|
+
"correction": "Use Card.Header for the introductory text anatomy."
|
|
42
61
|
}
|
|
43
62
|
],
|
|
44
63
|
"validation": [
|
|
45
64
|
"Check heading order and explicit action names.",
|
|
65
|
+
"Check whether trailing Header content should constrain both title and description or the title row only.",
|
|
46
66
|
"Check content flow, focus visibility, narrow widths, and appearance contrast."
|
|
47
67
|
],
|
|
48
68
|
"related": [
|
package/dist/agents/card.md
CHANGED
|
@@ -14,21 +14,27 @@ Group content about one subject in a finished static compound surface with heade
|
|
|
14
14
|
|
|
15
15
|
## Required composition
|
|
16
16
|
|
|
17
|
-
- Compose Card.Root with only the Header, Title, Description, Content, and Footer parts the subject needs.
|
|
17
|
+
- Compose Card.Root with only the Header, Title, Description, Action, Content, and Footer parts the subject needs.
|
|
18
|
+
- Card.Action reserves a trailing Header column across the title and description rows; when compact metadata belongs beside only the title, compose that title row with HStack and omit Card.Action so the description retains the full measure.
|
|
18
19
|
|
|
19
20
|
## Rules
|
|
20
21
|
|
|
21
22
|
- **MUST:** Do not turn the whole Card into an unnamed clickable div; place explicit Link or Button controls inside or use a valid link composition.
|
|
22
23
|
- **MUST:** Load styles.css or core.css plus card.css and styles for nested components.
|
|
23
24
|
- **SHOULD:** Use bordered={false} when edge-to-edge authored media should meet Card's clipped outer boundary without retaining the selected recipe's border; do not remove that geometry with application CSS.
|
|
25
|
+
- **SHOULD:** Use Card.Action only when every Header text row should reserve its trailing column; otherwise compose title-only metadata in a Brick HStack.
|
|
26
|
+
- **SHOULD:** For edge media, place authored Image directly under Card.Root, then use Card.Header for topic, title, and description so the root clips outer corners and the complete text region receives Card inset.
|
|
24
27
|
|
|
25
28
|
## Common mistakes
|
|
26
29
|
|
|
27
30
|
- **Avoid:** Using Card for every spacing group. **Instead:** Use Stack or Surface when there is no bounded card subject.
|
|
31
|
+
- **Avoid:** Using Card.Action for a title-only Badge and unintentionally narrowing the description below it. **Instead:** Place the title and Badge in a Brick HStack, then render Card.Description as the next full-width Header child.
|
|
32
|
+
- **Avoid:** Placing Card.Content directly after edge media and expecting top inset. **Instead:** Use Card.Header for the introductory text anatomy.
|
|
28
33
|
|
|
29
34
|
## Validation checklist
|
|
30
35
|
|
|
31
36
|
- Check heading order and explicit action names.
|
|
37
|
+
- Check whether trailing Header content should constrain both title and description or the title row only.
|
|
32
38
|
- Check content flow, focus visibility, narrow widths, and appearance contrast.
|
|
33
39
|
|
|
34
40
|
## Related guidance
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "flowstack.agent-component.v1",
|
|
3
|
+
"id": "checkbox-group",
|
|
4
|
+
"name": "Checkbox Group",
|
|
5
|
+
"package": "@flowstack-ui/brick",
|
|
6
|
+
"layer": "brick",
|
|
7
|
+
"kind": "component",
|
|
8
|
+
"purpose": "Coordinate related multi-selection with structured item labels, optional descriptions, native repeated form values, and an optional aggregate parent control.",
|
|
9
|
+
"useWhen": [
|
|
10
|
+
"Several independently selectable choices belong to one named group or need a select-all parent."
|
|
11
|
+
],
|
|
12
|
+
"avoidWhen": [
|
|
13
|
+
{
|
|
14
|
+
"condition": "The choice is independent and does not share group state.",
|
|
15
|
+
"useInstead": "Checkbox"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"condition": "Exactly one option must be selected.",
|
|
19
|
+
"useInstead": "Radio Group or Select"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"condition": "The interface needs remote option loading, search, or a generated filter engine.",
|
|
23
|
+
"useInstead": "Combobox or application-owned discovery controls"
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"composition": [
|
|
27
|
+
"Give Root an accessible group name directly or compose it inside Fieldset with one visible Legend and shared description or error.",
|
|
28
|
+
"Compose Root with Item children; wrap each primary label in ItemLabel and supporting text in ItemDescription when structured item relationships are needed.",
|
|
29
|
+
"Use Parent only with an explicit allValues list containing the currently selectable declared values; omit individually disabled values and never infer the collection from rendered children."
|
|
30
|
+
],
|
|
31
|
+
"rules": [
|
|
32
|
+
{
|
|
33
|
+
"id": "checkbox-group-related-choices",
|
|
34
|
+
"level": "must",
|
|
35
|
+
"statement": "Use Checkbox Group only for related multi-selection; keep one-of-many choice, independent consent, remote search, and application filter execution in their owning patterns."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"id": "checkbox-group-naming",
|
|
39
|
+
"level": "must",
|
|
40
|
+
"statement": "Give Root a persistent accessible group name and every Item a complete visible associated label; placeholder or surrounding layout does not name the group."
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": "checkbox-group-value-identity",
|
|
44
|
+
"level": "must",
|
|
45
|
+
"statement": "Give every Item a unique stable string value and let the application own persistence, query synchronization, result counts, and filtering side effects."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "checkbox-group-parent-values",
|
|
49
|
+
"level": "must",
|
|
50
|
+
"statement": "Supply Parent allValues explicitly from the selectable declared set and do not include disabled choices or derive the set from DOM children."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"id": "checkbox-group-orientation",
|
|
54
|
+
"level": "must",
|
|
55
|
+
"statement": "Use the vertical default for scan-heavy groups and horizontal only when wrapped reading order remains clear under narrow widths, zoom, and localization."
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"id": "checkbox-group-invalid-scope",
|
|
59
|
+
"level": "must",
|
|
60
|
+
"statement": "Keep required or invalid messaging at group scope when any eligible option can satisfy the requirement; do not paint every Item as individually invalid."
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"id": "checkbox-group-state-form",
|
|
64
|
+
"level": "must",
|
|
65
|
+
"statement": "Preserve disabled and read-only Items, one-or-more required validity, first-enabled validation focus, Fieldset relationships, named repeated-value submission, external form association, and uncontrolled reset."
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"id": "checkbox-group-css",
|
|
69
|
+
"level": "must",
|
|
70
|
+
"statement": "Load styles.css or core.css plus checkbox-group.css and any Fieldset styles used."
|
|
71
|
+
}
|
|
72
|
+
],
|
|
73
|
+
"commonMistakes": [
|
|
74
|
+
{
|
|
75
|
+
"mistake": "Building a filter facet with unrelated standalone checkboxes and no group name.",
|
|
76
|
+
"correction": "Use one named CheckboxGroup.Root with stable Item values and keep query execution in the application."
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"mistake": "Using Parent without an explicit current selectable set.",
|
|
80
|
+
"correction": "Pass allValues deliberately so none, mixed, and all state remain deterministic."
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"mistake": "Adding custom row hover or focus paint around labels.",
|
|
84
|
+
"correction": "Keep the full row clickable while Brick confines visual interaction feedback to the checkbox square."
|
|
85
|
+
}
|
|
86
|
+
],
|
|
87
|
+
"validation": [
|
|
88
|
+
"Inspect the group name, item labels and descriptions, unique values, repeated native form entries, required validity, reset, and disabled or read-only behavior.",
|
|
89
|
+
"Toggle Items and Parent with keyboard, pointer, and touch; verify none, mixed, and all states against the exact declared allValues set.",
|
|
90
|
+
"Check vertical and horizontal wrapping, long localized labels, 320 CSS pixels, 200% text, 400% zoom, RTL, dark appearance, and forced colors.",
|
|
91
|
+
"Confirm application-owned filtering, persistence, URL state, counts, and asynchronous results remain outside Checkbox Group."
|
|
92
|
+
],
|
|
93
|
+
"related": [
|
|
94
|
+
{
|
|
95
|
+
"kind": "package",
|
|
96
|
+
"package": "@flowstack-ui/atom",
|
|
97
|
+
"id": "checkbox-group",
|
|
98
|
+
"versionPolicy": "installed-exact"
|
|
99
|
+
},
|
|
100
|
+
"checkbox",
|
|
101
|
+
"fieldset",
|
|
102
|
+
"radio-group",
|
|
103
|
+
"toggle-group",
|
|
104
|
+
"select",
|
|
105
|
+
"combobox",
|
|
106
|
+
"form"
|
|
107
|
+
]
|
|
108
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Checkbox Group agent guide
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Coordinate related multi-selection with structured item labels, optional descriptions, native repeated form values, and an optional aggregate parent control.
|
|
6
|
+
|
|
7
|
+
## Use when
|
|
8
|
+
|
|
9
|
+
- Several independently selectable choices belong to one named group or need a select-all parent.
|
|
10
|
+
|
|
11
|
+
## Choose something else when
|
|
12
|
+
|
|
13
|
+
- The choice is independent and does not share group state. Use Checkbox.
|
|
14
|
+
- Exactly one option must be selected. Use Radio Group or Select.
|
|
15
|
+
- The interface needs remote option loading, search, or a generated filter engine. Use Combobox or application-owned discovery controls.
|
|
16
|
+
|
|
17
|
+
## Required composition
|
|
18
|
+
|
|
19
|
+
- Give Root an accessible group name directly or compose it inside Fieldset with one visible Legend and shared description or error.
|
|
20
|
+
- Compose Root with Item children; wrap each primary label in ItemLabel and supporting text in ItemDescription when structured item relationships are needed.
|
|
21
|
+
- Use Parent only with an explicit allValues list containing the currently selectable declared values; omit individually disabled values and never infer the collection from rendered children.
|
|
22
|
+
|
|
23
|
+
## Rules
|
|
24
|
+
|
|
25
|
+
- **MUST:** Use Checkbox Group only for related multi-selection; keep one-of-many choice, independent consent, remote search, and application filter execution in their owning patterns.
|
|
26
|
+
- **MUST:** Give Root a persistent accessible group name and every Item a complete visible associated label; placeholder or surrounding layout does not name the group.
|
|
27
|
+
- **MUST:** Give every Item a unique stable string value and let the application own persistence, query synchronization, result counts, and filtering side effects.
|
|
28
|
+
- **MUST:** Supply Parent allValues explicitly from the selectable declared set and do not include disabled choices or derive the set from DOM children.
|
|
29
|
+
- **MUST:** Use the vertical default for scan-heavy groups and horizontal only when wrapped reading order remains clear under narrow widths, zoom, and localization.
|
|
30
|
+
- **MUST:** Keep required or invalid messaging at group scope when any eligible option can satisfy the requirement; do not paint every Item as individually invalid.
|
|
31
|
+
- **MUST:** Preserve disabled and read-only Items, one-or-more required validity, first-enabled validation focus, Fieldset relationships, named repeated-value submission, external form association, and uncontrolled reset.
|
|
32
|
+
- **MUST:** Load styles.css or core.css plus checkbox-group.css and any Fieldset styles used.
|
|
33
|
+
|
|
34
|
+
## Common mistakes
|
|
35
|
+
|
|
36
|
+
- **Avoid:** Building a filter facet with unrelated standalone checkboxes and no group name. **Instead:** Use one named CheckboxGroup.Root with stable Item values and keep query execution in the application.
|
|
37
|
+
- **Avoid:** Using Parent without an explicit current selectable set. **Instead:** Pass allValues deliberately so none, mixed, and all state remain deterministic.
|
|
38
|
+
- **Avoid:** Adding custom row hover or focus paint around labels. **Instead:** Keep the full row clickable while Brick confines visual interaction feedback to the checkbox square.
|
|
39
|
+
|
|
40
|
+
## Validation checklist
|
|
41
|
+
|
|
42
|
+
- Inspect the group name, item labels and descriptions, unique values, repeated native form entries, required validity, reset, and disabled or read-only behavior.
|
|
43
|
+
- Toggle Items and Parent with keyboard, pointer, and touch; verify none, mixed, and all states against the exact declared allValues set.
|
|
44
|
+
- Check vertical and horizontal wrapping, long localized labels, 320 CSS pixels, 200% text, 400% zoom, RTL, dark appearance, and forced colors.
|
|
45
|
+
- Confirm application-owned filtering, persistence, URL state, counts, and asynchronous results remain outside Checkbox Group.
|
|
46
|
+
|
|
47
|
+
## Related guidance
|
|
48
|
+
|
|
49
|
+
- `@flowstack-ui/atom/agents/checkbox-group`
|
|
50
|
+
- `checkbox`
|
|
51
|
+
- `fieldset`
|
|
52
|
+
- `radio-group`
|
|
53
|
+
- `toggle-group`
|
|
54
|
+
- `select`
|
|
55
|
+
- `combobox`
|
|
56
|
+
- `form`
|