@flowstack-ui/brick 0.1.6 → 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -7
- package/dist/agents/accordion.json +17 -2
- package/dist/agents/accordion.md +5 -1
- package/dist/agents/alert-dialog.json +111 -0
- package/dist/agents/alert-dialog.md +53 -0
- package/dist/agents/app-bar.json +5 -4
- package/dist/agents/app-bar.md +4 -3
- package/dist/agents/aspect-ratio.json +80 -0
- package/dist/agents/aspect-ratio.md +45 -0
- package/dist/agents/avatar.json +92 -0
- package/dist/agents/avatar.md +49 -0
- package/dist/agents/badge.json +26 -8
- package/dist/agents/badge.md +11 -6
- package/dist/agents/bleed.json +54 -0
- package/dist/agents/bleed.md +39 -0
- package/dist/agents/button.json +7 -2
- package/dist/agents/button.md +1 -1
- package/dist/agents/card.json +21 -1
- package/dist/agents/card.md +7 -1
- package/dist/agents/checkbox-group.json +108 -0
- package/dist/agents/checkbox-group.md +56 -0
- package/dist/agents/checkbox.json +6 -1
- package/dist/agents/chip.json +73 -0
- package/dist/agents/chip.md +44 -0
- package/dist/agents/code-block.json +76 -0
- package/dist/agents/code-block.md +47 -0
- package/dist/agents/code.json +67 -0
- package/dist/agents/code.md +42 -0
- package/dist/agents/collapsible.json +34 -3
- package/dist/agents/collapsible.md +10 -3
- package/dist/agents/color-picker.json +78 -0
- package/dist/agents/color-picker.md +46 -0
- package/dist/agents/color-swatch.json +51 -0
- package/dist/agents/color-swatch.md +36 -0
- package/dist/agents/combobox.json +95 -0
- package/dist/agents/combobox.md +51 -0
- package/dist/agents/context-menu.json +109 -0
- package/dist/agents/context-menu.md +54 -0
- package/dist/agents/coverage.json +24579 -0
- package/dist/agents/data-grid.json +127 -0
- package/dist/agents/data-grid.md +61 -0
- package/dist/agents/data-list.json +63 -0
- package/dist/agents/data-list.md +41 -0
- package/dist/agents/dialog.json +112 -0
- package/dist/agents/dialog.md +53 -0
- package/dist/agents/dropdown-menu.json +112 -0
- package/dist/agents/dropdown-menu.md +56 -0
- package/dist/agents/feed.json +84 -0
- package/dist/agents/feed.md +48 -0
- package/dist/agents/field.json +6 -1
- package/dist/agents/fieldset.json +6 -1
- package/dist/agents/file-upload.json +93 -0
- package/dist/agents/file-upload.md +50 -0
- package/dist/agents/form.json +11 -2
- package/dist/agents/form.md +2 -1
- package/dist/agents/grid.json +18 -1
- package/dist/agents/grid.md +6 -0
- package/dist/agents/group.json +77 -0
- package/dist/agents/group.md +48 -0
- package/dist/agents/hide.json +14 -0
- package/dist/agents/hide.md +3 -0
- package/dist/agents/hover-card.json +94 -0
- package/dist/agents/hover-card.md +51 -0
- package/dist/agents/icon-button.json +23 -12
- package/dist/agents/icon-button.md +12 -8
- package/dist/agents/image.json +33 -7
- package/dist/agents/image.md +11 -4
- package/dist/agents/input.json +7 -2
- package/dist/agents/input.md +1 -1
- package/dist/agents/interface-composition.json +216 -17
- package/dist/agents/interface-composition.md +7 -0
- package/dist/agents/layer-selection.json +1174 -11
- package/dist/agents/layer-selection.md +84 -1
- package/dist/agents/link-box.json +97 -0
- package/dist/agents/link-box.md +53 -0
- package/dist/agents/link.json +34 -5
- package/dist/agents/link.md +12 -2
- package/dist/agents/list.json +1 -1
- package/dist/agents/list.md +1 -1
- package/dist/agents/manifest.json +291 -2
- package/dist/agents/menubar.json +109 -0
- package/dist/agents/menubar.md +54 -0
- package/dist/agents/multi-select.json +93 -0
- package/dist/agents/multi-select.md +49 -0
- package/dist/agents/nav-list.json +15 -5
- package/dist/agents/nav-list.md +6 -4
- package/dist/agents/notification-badge.json +88 -0
- package/dist/agents/notification-badge.md +49 -0
- package/dist/agents/number-input.json +89 -0
- package/dist/agents/number-input.md +50 -0
- package/dist/agents/otp-field.json +87 -0
- package/dist/agents/otp-field.md +48 -0
- package/dist/agents/pagination.json +26 -5
- package/dist/agents/pagination.md +11 -4
- package/dist/agents/password-toggle-field.json +87 -0
- package/dist/agents/password-toggle-field.md +48 -0
- package/dist/agents/popover.json +114 -0
- package/dist/agents/popover.md +56 -0
- package/dist/agents/progress-circle.json +85 -0
- package/dist/agents/progress-circle.md +46 -0
- package/dist/agents/progress.json +91 -0
- package/dist/agents/progress.md +48 -0
- package/dist/agents/radio-group.json +92 -0
- package/dist/agents/radio-group.md +49 -0
- package/dist/agents/rating.json +91 -0
- package/dist/agents/rating.md +49 -0
- package/dist/agents/reorderable-list.json +74 -0
- package/dist/agents/reorderable-list.md +45 -0
- package/dist/agents/segment-group.json +62 -0
- package/dist/agents/segment-group.md +43 -0
- package/dist/agents/select.json +95 -0
- package/dist/agents/select.md +51 -0
- package/dist/agents/show.json +14 -0
- package/dist/agents/show.md +3 -0
- package/dist/agents/sidebar.json +16 -3
- package/dist/agents/sidebar.md +6 -1
- package/dist/agents/skeleton.json +73 -0
- package/dist/agents/skeleton.md +43 -0
- package/dist/agents/slider.json +88 -0
- package/dist/agents/slider.md +48 -0
- package/dist/agents/stack.json +19 -1
- package/dist/agents/stack.md +7 -0
- package/dist/agents/status.json +59 -0
- package/dist/agents/status.md +40 -0
- package/dist/agents/surface.json +42 -3
- package/dist/agents/surface.md +12 -2
- package/dist/agents/swipeable-item.json +93 -0
- package/dist/agents/swipeable-item.md +50 -0
- package/dist/agents/switch.json +92 -0
- package/dist/agents/switch.md +49 -0
- package/dist/agents/table.json +113 -0
- package/dist/agents/table.md +59 -0
- package/dist/agents/tabs.json +9 -2
- package/dist/agents/tabs.md +4 -1
- package/dist/agents/text.json +23 -8
- package/dist/agents/text.md +10 -7
- package/dist/agents/textarea.json +6 -1
- package/dist/agents/toast.json +91 -0
- package/dist/agents/toast.md +48 -0
- package/dist/agents/toggle-group.json +89 -0
- package/dist/agents/toggle-group.md +49 -0
- package/dist/agents/toggle.json +82 -0
- package/dist/agents/toggle.md +47 -0
- package/dist/agents/toolbar.json +11 -1
- package/dist/agents/toolbar.md +3 -1
- package/dist/agents/tooltip.json +96 -0
- package/dist/agents/tooltip.md +49 -0
- package/dist/agents/tree-grid.json +98 -0
- package/dist/agents/tree-grid.md +51 -0
- package/dist/agents/tree.json +94 -0
- package/dist/agents/tree.md +51 -0
- package/dist/agents/visually-hidden.json +70 -0
- package/dist/agents/visually-hidden.md +42 -0
- package/dist/agents/z-stack.json +21 -1
- package/dist/agents/z-stack.md +5 -0
- package/dist/bleed.d.ts +2 -0
- package/dist/bleed.d.ts.map +1 -0
- package/dist/bleed.js +2 -0
- package/dist/bleed.js.map +1 -0
- package/dist/color-picker.d.ts +2 -0
- package/dist/color-picker.d.ts.map +1 -0
- package/dist/color-picker.js +2 -0
- package/dist/color-picker.js.map +1 -0
- package/dist/color-swatch.d.ts +2 -0
- package/dist/color-swatch.d.ts.map +1 -0
- package/dist/color-swatch.js +2 -0
- package/dist/color-swatch.js.map +1 -0
- package/dist/components/_responsive-value/ResponsiveValue.d.ts.map +1 -1
- package/dist/components/_responsive-value/ResponsiveValue.js +3 -1
- package/dist/components/_responsive-value/ResponsiveValue.js.map +1 -1
- package/dist/components/_spacing-value/SpacingValue.d.ts +8 -0
- package/dist/components/_spacing-value/SpacingValue.d.ts.map +1 -0
- package/dist/components/_spacing-value/SpacingValue.js +46 -0
- package/dist/components/_spacing-value/SpacingValue.js.map +1 -0
- package/dist/components/accordion/Accordion.js +1 -1
- package/dist/components/app-bar/AppBar.d.ts +7 -3
- package/dist/components/app-bar/AppBar.d.ts.map +1 -1
- package/dist/components/app-bar/AppBar.js +2 -2
- package/dist/components/app-bar/AppBar.js.map +1 -1
- package/dist/components/app-bar/index.d.ts +1 -1
- package/dist/components/app-bar/index.d.ts.map +1 -1
- package/dist/components/app-bar/index.js.map +1 -1
- package/dist/components/avatar/Avatar.d.ts +1 -1
- package/dist/components/avatar/Avatar.d.ts.map +1 -1
- package/dist/components/avatar/Avatar.js.map +1 -1
- package/dist/components/badge/Badge.d.ts +2 -2
- package/dist/components/badge/Badge.d.ts.map +1 -1
- package/dist/components/bleed/Bleed.d.ts +28 -0
- package/dist/components/bleed/Bleed.d.ts.map +1 -0
- package/dist/components/bleed/Bleed.js +92 -0
- package/dist/components/bleed/Bleed.js.map +1 -0
- package/dist/components/bleed/index.d.ts +2 -0
- package/dist/components/bleed/index.d.ts.map +1 -0
- package/dist/components/bleed/index.js +2 -0
- package/dist/components/bleed/index.js.map +1 -0
- package/dist/components/collapsible/Collapsible.d.ts +9 -3
- package/dist/components/collapsible/Collapsible.d.ts.map +1 -1
- package/dist/components/collapsible/Collapsible.js +3 -3
- package/dist/components/collapsible/Collapsible.js.map +1 -1
- package/dist/components/color-picker/ColorPicker.d.ts +42 -0
- package/dist/components/color-picker/ColorPicker.d.ts.map +1 -0
- package/dist/components/color-picker/ColorPicker.js +52 -0
- package/dist/components/color-picker/ColorPicker.js.map +1 -0
- package/dist/components/color-picker/index.d.ts +2 -0
- package/dist/components/color-picker/index.d.ts.map +1 -0
- package/dist/components/color-picker/index.js +2 -0
- package/dist/components/color-picker/index.js.map +1 -0
- package/dist/components/color-swatch/ColorSwatch.d.ts +21 -0
- package/dist/components/color-swatch/ColorSwatch.d.ts.map +1 -0
- package/dist/components/color-swatch/ColorSwatch.js +25 -0
- package/dist/components/color-swatch/ColorSwatch.js.map +1 -0
- package/dist/components/color-swatch/index.d.ts +2 -0
- package/dist/components/color-swatch/index.d.ts.map +1 -0
- package/dist/components/color-swatch/index.js +2 -0
- package/dist/components/color-swatch/index.js.map +1 -0
- package/dist/components/data-list/DataList.d.ts +48 -0
- package/dist/components/data-list/DataList.d.ts.map +1 -0
- package/dist/components/data-list/DataList.js +31 -0
- package/dist/components/data-list/DataList.js.map +1 -0
- package/dist/components/data-list/index.d.ts +2 -0
- package/dist/components/data-list/index.d.ts.map +1 -0
- package/dist/components/data-list/index.js +2 -0
- package/dist/components/data-list/index.js.map +1 -0
- package/dist/components/feed/Feed.d.ts +2 -0
- package/dist/components/feed/Feed.d.ts.map +1 -1
- package/dist/components/feed/Feed.js +2 -2
- package/dist/components/feed/Feed.js.map +1 -1
- package/dist/components/feed/index.d.ts +1 -1
- package/dist/components/feed/index.d.ts.map +1 -1
- package/dist/components/grid/Grid.d.ts +3 -1
- package/dist/components/grid/Grid.d.ts.map +1 -1
- package/dist/components/grid/Grid.js +11 -1
- package/dist/components/grid/Grid.js.map +1 -1
- package/dist/components/grid/index.d.ts +1 -1
- package/dist/components/grid/index.d.ts.map +1 -1
- package/dist/components/grid/index.js.map +1 -1
- package/dist/components/group/Group.d.ts +19 -0
- package/dist/components/group/Group.d.ts.map +1 -0
- package/dist/components/group/Group.js +23 -0
- package/dist/components/group/Group.js.map +1 -0
- package/dist/components/group/index.d.ts +2 -0
- package/dist/components/group/index.d.ts.map +1 -0
- package/dist/components/group/index.js +2 -0
- package/dist/components/group/index.js.map +1 -0
- package/dist/components/link/Link.d.ts +1 -1
- package/dist/components/link/Link.d.ts.map +1 -1
- package/dist/components/link/Link.js +1 -1
- package/dist/components/link/Link.js.map +1 -1
- package/dist/components/link-box/LinkBox.d.ts +22 -0
- package/dist/components/link-box/LinkBox.d.ts.map +1 -0
- package/dist/components/link-box/LinkBox.js +30 -0
- package/dist/components/link-box/LinkBox.js.map +1 -0
- package/dist/components/link-box/index.d.ts +2 -0
- package/dist/components/link-box/index.d.ts.map +1 -0
- package/dist/components/link-box/index.js +2 -0
- package/dist/components/link-box/index.js.map +1 -0
- package/dist/components/nav-list/NavList.d.ts +15 -2
- package/dist/components/nav-list/NavList.d.ts.map +1 -1
- package/dist/components/nav-list/NavList.js +4 -3
- package/dist/components/nav-list/NavList.js.map +1 -1
- package/dist/components/pagination/Pagination.d.ts +9 -6
- package/dist/components/pagination/Pagination.d.ts.map +1 -1
- package/dist/components/pagination/Pagination.js +2 -2
- package/dist/components/pagination/Pagination.js.map +1 -1
- package/dist/components/pagination/index.d.ts +1 -1
- package/dist/components/pagination/index.d.ts.map +1 -1
- package/dist/components/pagination/index.js.map +1 -1
- package/dist/components/popover/Popover.d.ts +3 -0
- package/dist/components/popover/Popover.d.ts.map +1 -1
- package/dist/components/popover/Popover.js +2 -2
- package/dist/components/popover/Popover.js.map +1 -1
- package/dist/components/popover/index.d.ts +1 -1
- package/dist/components/popover/index.d.ts.map +1 -1
- package/dist/components/popover/index.js.map +1 -1
- package/dist/components/rating/Rating.d.ts +37 -1
- package/dist/components/rating/Rating.d.ts.map +1 -1
- package/dist/components/rating/Rating.js +25 -2
- package/dist/components/rating/Rating.js.map +1 -1
- package/dist/components/rating/index.d.ts +1 -1
- package/dist/components/rating/index.d.ts.map +1 -1
- package/dist/components/rating/index.js +1 -1
- package/dist/components/rating/index.js.map +1 -1
- package/dist/components/reorderable-list/ReorderableList.d.ts +89 -0
- package/dist/components/reorderable-list/ReorderableList.d.ts.map +1 -0
- package/dist/components/reorderable-list/ReorderableList.js +54 -0
- package/dist/components/reorderable-list/ReorderableList.js.map +1 -0
- package/dist/components/reorderable-list/index.d.ts +2 -0
- package/dist/components/reorderable-list/index.d.ts.map +1 -0
- package/dist/components/reorderable-list/index.js +2 -0
- package/dist/components/reorderable-list/index.js.map +1 -0
- package/dist/components/segment-group/SegmentGroup.d.ts +30 -0
- package/dist/components/segment-group/SegmentGroup.d.ts.map +1 -0
- package/dist/components/segment-group/SegmentGroup.js +67 -0
- package/dist/components/segment-group/SegmentGroup.js.map +1 -0
- package/dist/components/segment-group/index.d.ts +2 -0
- package/dist/components/segment-group/index.d.ts.map +1 -0
- package/dist/components/segment-group/index.js +2 -0
- package/dist/components/segment-group/index.js.map +1 -0
- package/dist/components/show/Show.d.ts.map +1 -1
- package/dist/components/show/Show.js +7 -1
- package/dist/components/show/Show.js.map +1 -1
- package/dist/components/sidebar/Sidebar.d.ts +4 -0
- package/dist/components/sidebar/Sidebar.d.ts.map +1 -1
- package/dist/components/sidebar/Sidebar.js +3 -2
- package/dist/components/sidebar/Sidebar.js.map +1 -1
- package/dist/components/slider/Slider.d.ts.map +1 -1
- package/dist/components/slider/Slider.js +3 -1
- package/dist/components/slider/Slider.js.map +1 -1
- package/dist/components/stack/Stack.d.ts +3 -1
- package/dist/components/stack/Stack.d.ts.map +1 -1
- package/dist/components/stack/Stack.js +9 -1
- package/dist/components/stack/Stack.js.map +1 -1
- package/dist/components/stack/index.d.ts +1 -1
- package/dist/components/stack/index.d.ts.map +1 -1
- package/dist/components/stack/index.js.map +1 -1
- package/dist/components/status/Status.d.ts +22 -0
- package/dist/components/status/Status.d.ts.map +1 -0
- package/dist/components/status/Status.js +23 -0
- package/dist/components/status/Status.js.map +1 -0
- package/dist/components/status/index.d.ts +2 -0
- package/dist/components/status/index.d.ts.map +1 -0
- package/dist/components/status/index.js +2 -0
- package/dist/components/status/index.js.map +1 -0
- package/dist/components/surface/Surface.d.ts +5 -2
- package/dist/components/surface/Surface.d.ts.map +1 -1
- package/dist/components/surface/Surface.js +4 -2
- package/dist/components/surface/Surface.js.map +1 -1
- package/dist/components/surface/index.d.ts +1 -1
- package/dist/components/surface/index.d.ts.map +1 -1
- package/dist/components/surface/index.js.map +1 -1
- package/dist/components/text/Text.d.ts +25 -4
- package/dist/components/text/Text.d.ts.map +1 -1
- package/dist/components/text/Text.js +22 -3
- package/dist/components/text/Text.js.map +1 -1
- package/dist/components/text/index.d.ts +1 -1
- package/dist/components/text/index.d.ts.map +1 -1
- package/dist/components/text/index.js +1 -1
- package/dist/components/text/index.js.map +1 -1
- package/dist/components/toggle/Toggle.d.ts +5 -0
- package/dist/components/toggle/Toggle.d.ts.map +1 -1
- package/dist/components/toggle/Toggle.js +2 -2
- package/dist/components/toggle/Toggle.js.map +1 -1
- package/dist/components/toggle/index.d.ts +1 -1
- package/dist/components/toggle/index.d.ts.map +1 -1
- package/dist/components/toggle/index.js.map +1 -1
- package/dist/components/toggle-group/ToggleGroup.d.ts +3 -1
- package/dist/components/toggle-group/ToggleGroup.d.ts.map +1 -1
- package/dist/components/toggle-group/ToggleGroup.js +2 -1
- package/dist/components/toggle-group/ToggleGroup.js.map +1 -1
- package/dist/components/toolbar/Toolbar.d.ts +9 -2
- package/dist/components/toolbar/Toolbar.d.ts.map +1 -1
- package/dist/components/toolbar/Toolbar.js +2 -2
- package/dist/components/toolbar/Toolbar.js.map +1 -1
- package/dist/components/toolbar/index.d.ts +1 -1
- package/dist/components/toolbar/index.d.ts.map +1 -1
- package/dist/components/z-stack/ZStack.d.ts +7 -0
- package/dist/components/z-stack/ZStack.d.ts.map +1 -1
- package/dist/components/z-stack/ZStack.js +14 -3
- package/dist/components/z-stack/ZStack.js.map +1 -1
- package/dist/components/z-stack/index.d.ts +1 -1
- package/dist/components/z-stack/index.d.ts.map +1 -1
- package/dist/components/z-stack/index.js.map +1 -1
- package/dist/data-list.d.ts +2 -0
- package/dist/data-list.d.ts.map +1 -0
- package/dist/data-list.js +2 -0
- package/dist/data-list.js.map +1 -0
- package/dist/feed.d.ts +1 -1
- package/dist/feed.d.ts.map +1 -1
- package/dist/grid.d.ts +1 -1
- package/dist/grid.d.ts.map +1 -1
- package/dist/grid.js.map +1 -1
- package/dist/group.d.ts +2 -0
- package/dist/group.d.ts.map +1 -0
- package/dist/group.js +2 -0
- package/dist/group.js.map +1 -0
- package/dist/index.d.ts +18 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/link-box.d.ts +2 -0
- package/dist/link-box.d.ts.map +1 -0
- package/dist/link-box.js +2 -0
- package/dist/link-box.js.map +1 -0
- package/dist/reorderable-list.d.ts +2 -0
- package/dist/reorderable-list.d.ts.map +1 -0
- package/dist/reorderable-list.js +2 -0
- package/dist/reorderable-list.js.map +1 -0
- package/dist/reset.css +1 -1
- package/dist/reset.css.map +1 -1
- package/dist/segment-group.d.ts +2 -0
- package/dist/segment-group.d.ts.map +1 -0
- package/dist/segment-group.js +2 -0
- package/dist/segment-group.js.map +1 -0
- package/dist/stack.d.ts +1 -1
- package/dist/stack.d.ts.map +1 -1
- package/dist/stack.js.map +1 -1
- package/dist/status.d.ts +2 -0
- package/dist/status.d.ts.map +1 -0
- package/dist/status.js +2 -0
- package/dist/status.js.map +1 -0
- package/dist/styles/accordion.css +1 -1
- package/dist/styles/accordion.css.map +1 -1
- package/dist/styles/alert-dialog.css +1 -1
- package/dist/styles/alert-dialog.css.map +1 -1
- package/dist/styles/app-bar.css +1 -1
- package/dist/styles/app-bar.css.map +1 -1
- package/dist/styles/appearance.css +1 -1
- package/dist/styles/appearance.css.map +1 -1
- package/dist/styles/aspect-ratio.css +1 -1
- package/dist/styles/aspect-ratio.css.map +1 -1
- package/dist/styles/avatar.css +1 -1
- package/dist/styles/avatar.css.map +1 -1
- package/dist/styles/badge.css +1 -1
- package/dist/styles/badge.css.map +1 -1
- package/dist/styles/bleed.css +2 -0
- package/dist/styles/bleed.css.map +1 -0
- package/dist/styles/bottom-navigation.css +1 -1
- package/dist/styles/bottom-navigation.css.map +1 -1
- package/dist/styles/breadcrumb.css +1 -1
- package/dist/styles/breadcrumb.css.map +1 -1
- package/dist/styles/button.css +1 -1
- package/dist/styles/button.css.map +1 -1
- package/dist/styles/card.css +1 -1
- package/dist/styles/card.css.map +1 -1
- package/dist/styles/carousel.css +1 -1
- package/dist/styles/carousel.css.map +1 -1
- package/dist/styles/checkbox-group.css +1 -1
- package/dist/styles/checkbox-group.css.map +1 -1
- package/dist/styles/checkbox.css +1 -1
- package/dist/styles/checkbox.css.map +1 -1
- package/dist/styles/chip.css +1 -1
- package/dist/styles/chip.css.map +1 -1
- package/dist/styles/code-block.css +1 -1
- package/dist/styles/code-block.css.map +1 -1
- package/dist/styles/code.css +1 -1
- package/dist/styles/code.css.map +1 -1
- package/dist/styles/collapsible.css +1 -1
- package/dist/styles/collapsible.css.map +1 -1
- package/dist/styles/color-picker.css +2 -0
- package/dist/styles/color-picker.css.map +1 -0
- package/dist/styles/color-swatch.css +2 -0
- package/dist/styles/color-swatch.css.map +1 -0
- package/dist/styles/combobox.css +1 -1
- package/dist/styles/combobox.css.map +1 -1
- package/dist/styles/container.css +1 -1
- package/dist/styles/container.css.map +1 -1
- package/dist/styles/context-menu.css +1 -1
- package/dist/styles/context-menu.css.map +1 -1
- package/dist/styles/core.css +1 -1
- package/dist/styles/core.css.map +1 -1
- package/dist/styles/data-grid.css +1 -1
- package/dist/styles/data-grid.css.map +1 -1
- package/dist/styles/data-list.css +2 -0
- package/dist/styles/data-list.css.map +1 -0
- package/dist/styles/dialog.css +1 -1
- package/dist/styles/dialog.css.map +1 -1
- package/dist/styles/divider.css +1 -1
- package/dist/styles/divider.css.map +1 -1
- package/dist/styles/drawer.css +1 -1
- package/dist/styles/drawer.css.map +1 -1
- package/dist/styles/dropdown-menu.css +1 -1
- package/dist/styles/dropdown-menu.css.map +1 -1
- package/dist/styles/feed.css +1 -1
- package/dist/styles/feed.css.map +1 -1
- package/dist/styles/field.css +1 -1
- package/dist/styles/field.css.map +1 -1
- package/dist/styles/fieldset.css +1 -1
- package/dist/styles/fieldset.css.map +1 -1
- package/dist/styles/file-upload.css +1 -1
- package/dist/styles/file-upload.css.map +1 -1
- package/dist/styles/form.css +1 -1
- package/dist/styles/form.css.map +1 -1
- package/dist/styles/frame.css +1 -1
- package/dist/styles/frame.css.map +1 -1
- package/dist/styles/grid.css +1 -1
- package/dist/styles/grid.css.map +1 -1
- package/dist/styles/group.css +2 -0
- package/dist/styles/group.css.map +1 -0
- package/dist/styles/hide.css +1 -1
- package/dist/styles/hide.css.map +1 -1
- package/dist/styles/hover-card.css +1 -1
- package/dist/styles/hover-card.css.map +1 -1
- package/dist/styles/icon-button.css +1 -1
- package/dist/styles/icon-button.css.map +1 -1
- package/dist/styles/icon.css +1 -1
- package/dist/styles/icon.css.map +1 -1
- package/dist/styles/image.css +1 -1
- package/dist/styles/image.css.map +1 -1
- package/dist/styles/input.css +1 -1
- package/dist/styles/input.css.map +1 -1
- package/dist/styles/link-box.css +2 -0
- package/dist/styles/link-box.css.map +1 -0
- package/dist/styles/link.css +1 -1
- package/dist/styles/link.css.map +1 -1
- package/dist/styles/list.css +1 -1
- package/dist/styles/list.css.map +1 -1
- package/dist/styles/menubar.css +1 -1
- package/dist/styles/menubar.css.map +1 -1
- package/dist/styles/multi-select.css +1 -1
- package/dist/styles/multi-select.css.map +1 -1
- package/dist/styles/nav-list.css +1 -1
- package/dist/styles/nav-list.css.map +1 -1
- package/dist/styles/navigation-menu.css +1 -1
- package/dist/styles/navigation-menu.css.map +1 -1
- package/dist/styles/number-input.css +1 -1
- package/dist/styles/number-input.css.map +1 -1
- package/dist/styles/otp-field.css +1 -1
- package/dist/styles/otp-field.css.map +1 -1
- package/dist/styles/pagination.css +1 -1
- package/dist/styles/pagination.css.map +1 -1
- package/dist/styles/password-toggle-field.css +1 -1
- package/dist/styles/password-toggle-field.css.map +1 -1
- package/dist/styles/popover.css +1 -1
- package/dist/styles/popover.css.map +1 -1
- package/dist/styles/progress-circle.css +1 -1
- package/dist/styles/progress-circle.css.map +1 -1
- package/dist/styles/progress.css +1 -1
- package/dist/styles/progress.css.map +1 -1
- package/dist/styles/radio-group.css +1 -1
- package/dist/styles/radio-group.css.map +1 -1
- package/dist/styles/rating.css +1 -1
- package/dist/styles/rating.css.map +1 -1
- package/dist/styles/reorderable-list.css +2 -0
- package/dist/styles/reorderable-list.css.map +1 -0
- package/dist/styles/scroll-area.css +1 -1
- package/dist/styles/scroll-area.css.map +1 -1
- package/dist/styles/section.css +1 -1
- package/dist/styles/section.css.map +1 -1
- package/dist/styles/segment-group.css +2 -0
- package/dist/styles/segment-group.css.map +1 -0
- package/dist/styles/select.css +1 -1
- package/dist/styles/select.css.map +1 -1
- package/dist/styles/show.css +1 -1
- package/dist/styles/show.css.map +1 -1
- package/dist/styles/sidebar.css +1 -1
- package/dist/styles/sidebar.css.map +1 -1
- package/dist/styles/skeleton.css +1 -1
- package/dist/styles/skeleton.css.map +1 -1
- package/dist/styles/skip-link.css +1 -1
- package/dist/styles/skip-link.css.map +1 -1
- package/dist/styles/slider.css +1 -1
- package/dist/styles/slider.css.map +1 -1
- package/dist/styles/stack.css +1 -1
- package/dist/styles/stack.css.map +1 -1
- package/dist/styles/status.css +2 -0
- package/dist/styles/status.css.map +1 -0
- package/dist/styles/surface.css +1 -1
- package/dist/styles/surface.css.map +1 -1
- package/dist/styles/swipeable-item.css +1 -1
- package/dist/styles/swipeable-item.css.map +1 -1
- package/dist/styles/switch.css +1 -1
- package/dist/styles/switch.css.map +1 -1
- package/dist/styles/table.css +1 -1
- package/dist/styles/table.css.map +1 -1
- package/dist/styles/tabs.css +1 -1
- package/dist/styles/tabs.css.map +1 -1
- package/dist/styles/text.css +1 -1
- package/dist/styles/text.css.map +1 -1
- package/dist/styles/textarea.css +1 -1
- package/dist/styles/textarea.css.map +1 -1
- package/dist/styles/toast.css +1 -1
- package/dist/styles/toast.css.map +1 -1
- package/dist/styles/toggle-group.css +1 -1
- package/dist/styles/toggle-group.css.map +1 -1
- package/dist/styles/toggle.css +1 -1
- package/dist/styles/toggle.css.map +1 -1
- package/dist/styles/toolbar.css +1 -1
- package/dist/styles/toolbar.css.map +1 -1
- package/dist/styles/tooltip.css +1 -1
- package/dist/styles/tooltip.css.map +1 -1
- package/dist/styles/tree-grid.css +1 -1
- package/dist/styles/tree-grid.css.map +1 -1
- package/dist/styles/tree.css +1 -1
- package/dist/styles/tree.css.map +1 -1
- package/dist/styles/visually-hidden.css +1 -1
- package/dist/styles/visually-hidden.css.map +1 -1
- package/dist/styles/z-stack.css +1 -1
- package/dist/styles/z-stack.css.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/styles.css.map +1 -1
- package/dist/surface.d.ts +1 -1
- package/dist/surface.d.ts.map +1 -1
- package/dist/surface.js.map +1 -1
- package/dist/text.d.ts +1 -1
- package/dist/text.d.ts.map +1 -1
- package/dist/text.js +1 -1
- package/dist/text.js.map +1 -1
- package/dist/theme-contract.json +26846 -0
- package/dist/toggle.d.ts +1 -1
- package/dist/toggle.d.ts.map +1 -1
- package/dist/toggle.js.map +1 -1
- package/dist/tokens.css +1 -1
- package/dist/tokens.css.map +1 -1
- package/dist/toolbar.d.ts +1 -1
- package/dist/toolbar.d.ts.map +1 -1
- package/docs/guides/agent-knowledge.md +19 -0
- package/docs/guides/appearance-and-tokens.md +16 -5
- package/docs/guides/browser-support.md +21 -0
- package/docs/guides/control-sizing.md +55 -0
- package/docs/guides/installation.md +5 -2
- package/docs/guides/theme-contract.md +86 -0
- package/package.json +51 -7
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "flowstack.agent-component.v1",
|
|
3
|
+
"id": "combobox",
|
|
4
|
+
"name": "Combobox",
|
|
5
|
+
"package": "@flowstack-ui/brick",
|
|
6
|
+
"layer": "brick",
|
|
7
|
+
"kind": "component",
|
|
8
|
+
"purpose": "Present finished editable filtering and single-value selection while Atom owns committed value, input text, open state, listbox focus, positioning, dismissal, validation, and form participation.",
|
|
9
|
+
"useWhen": [
|
|
10
|
+
"A predefined option set benefits from editable filtering, including search-and-navigate interfaces whose selected result triggers an application-owned effect."
|
|
11
|
+
],
|
|
12
|
+
"avoidWhen": [
|
|
13
|
+
{
|
|
14
|
+
"condition": "Any text is valid without options, one predefined value needs no filtering, several values must be selected, or the popup contains commands.",
|
|
15
|
+
"useInstead": "Input, Select or RadioGroup, MultiSelect, or DropdownMenu"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"composition": [
|
|
19
|
+
"Compose a persistent Field.Label, then Combobox.Root with the complete options -> Combobox.Control with Input and optional Clear and Trigger -> optional Portal -> Content -> Listbox -> one Item per available option, plus Empty, Loading, groups, and labels when required.",
|
|
20
|
+
"Keep committed value, inputValue, and open as independent state axes. Keep rendered Items aligned with Root options and put noninteractive complete labels inside each Item."
|
|
21
|
+
],
|
|
22
|
+
"rules": [
|
|
23
|
+
{
|
|
24
|
+
"id": "combobox-three-states",
|
|
25
|
+
"level": "must",
|
|
26
|
+
"statement": "Keep committed value, editable input text, and popup open state independent and pair each controlled prop with its matching callback."
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": "combobox-one-collection",
|
|
30
|
+
"level": "must",
|
|
31
|
+
"statement": "Keep Root options, rendered Items, stable values, labels, disabled state, grouping, and custom filtering aligned as one authoritative collection."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"id": "combobox-semantic-owners",
|
|
35
|
+
"level": "must",
|
|
36
|
+
"statement": "Keep Input as the named editable combobox focus owner, Content as positioning and dismissal owner, and Listbox as semantic option owner; never hand-position a Surface or put listbox role on Content."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "combobox-keyboard-form",
|
|
40
|
+
"level": "must",
|
|
41
|
+
"statement": "Preserve active-descendant focus, Arrow/Home/End, Enter, Escape close-then-clear, Tab, openOnFocus, pointer selection, disabled skipping, required committed-value validity, named hidden submission, external form, and reset."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "combobox-free-solo",
|
|
45
|
+
"level": "must",
|
|
46
|
+
"statement": "Enable freeSolo only when values outside the predefined collection are valid; display text alone must not satisfy required validity for a closed vocabulary."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "combobox-application-effect",
|
|
50
|
+
"level": "must",
|
|
51
|
+
"statement": "Keep routing, remote loading, analytics, persistence, and destination policy in application callbacks while Empty and Loading accurately reflect the current collection state."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "combobox-css",
|
|
55
|
+
"level": "must",
|
|
56
|
+
"statement": "Load styles.css or core.css plus combobox.css and Field CSS when composed."
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"commonMistakes": [
|
|
60
|
+
{
|
|
61
|
+
"mistake": "Conflating input text with committed value, enabling freeSolo for closed vocabulary, omitting rendered Items, or putting listbox role on Content.",
|
|
62
|
+
"correction": "Manage all three states, restrict freeSolo, align options with Items, and preserve Atom's compound semantic owners."
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"mistake": "Putting Link, Button, or other controls inside Item or closing a hand-positioned result Surface with custom document listeners.",
|
|
66
|
+
"correction": "Use noninteractive option labels and perform the selected value's application effect from onValueChange inside the complete Combobox popup anatomy."
|
|
67
|
+
}
|
|
68
|
+
],
|
|
69
|
+
"validation": [
|
|
70
|
+
"Verify controlled and uncontrolled committed value, input text, and open state; default label initialization; filtering and grouping; disabled options; typing; Arrow/Home/End; Enter option and freeSolo commits; Escape; Tab; openOnFocus; Empty; Loading; Clear; Trigger; pointer selection; and clearOnSelect.",
|
|
71
|
+
"Verify visible Field naming, required committed-value validity, inline/native validation focus, hidden named value, external form, reset, Control-sized collision positioning, Portal, outside dismissal and cancellation, and highlighted-item scrolling.",
|
|
72
|
+
"Verify recipes and sizes, long labels, narrow widths, zoom, RTL, mobile focus, light and dark appearance, forced colors, and application-owned search-and-navigate effects."
|
|
73
|
+
],
|
|
74
|
+
"related": [
|
|
75
|
+
{
|
|
76
|
+
"kind": "package",
|
|
77
|
+
"package": "@flowstack-ui/atom",
|
|
78
|
+
"id": "combobox",
|
|
79
|
+
"versionPolicy": "installed-exact"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"kind": "package",
|
|
83
|
+
"package": "@flowstack-ui/atom",
|
|
84
|
+
"id": "listbox",
|
|
85
|
+
"versionPolicy": "installed-exact"
|
|
86
|
+
},
|
|
87
|
+
"field",
|
|
88
|
+
"input",
|
|
89
|
+
"select",
|
|
90
|
+
"radio-group",
|
|
91
|
+
"multi-select",
|
|
92
|
+
"dropdown-menu",
|
|
93
|
+
"popover"
|
|
94
|
+
]
|
|
95
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Combobox agent guide
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Present finished editable filtering and single-value selection while Atom owns committed value, input text, open state, listbox focus, positioning, dismissal, validation, and form participation.
|
|
6
|
+
|
|
7
|
+
## Use when
|
|
8
|
+
|
|
9
|
+
- A predefined option set benefits from editable filtering, including search-and-navigate interfaces whose selected result triggers an application-owned effect.
|
|
10
|
+
|
|
11
|
+
## Choose something else when
|
|
12
|
+
|
|
13
|
+
- Any text is valid without options, one predefined value needs no filtering, several values must be selected, or the popup contains commands. Use Input, Select or RadioGroup, MultiSelect, or DropdownMenu.
|
|
14
|
+
|
|
15
|
+
## Required composition
|
|
16
|
+
|
|
17
|
+
- Compose a persistent Field.Label, then Combobox.Root with the complete options -> Combobox.Control with Input and optional Clear and Trigger -> optional Portal -> Content -> Listbox -> one Item per available option, plus Empty, Loading, groups, and labels when required.
|
|
18
|
+
- Keep committed value, inputValue, and open as independent state axes. Keep rendered Items aligned with Root options and put noninteractive complete labels inside each Item.
|
|
19
|
+
|
|
20
|
+
## Rules
|
|
21
|
+
|
|
22
|
+
- **MUST:** Keep committed value, editable input text, and popup open state independent and pair each controlled prop with its matching callback.
|
|
23
|
+
- **MUST:** Keep Root options, rendered Items, stable values, labels, disabled state, grouping, and custom filtering aligned as one authoritative collection.
|
|
24
|
+
- **MUST:** Keep Input as the named editable combobox focus owner, Content as positioning and dismissal owner, and Listbox as semantic option owner; never hand-position a Surface or put listbox role on Content.
|
|
25
|
+
- **MUST:** Preserve active-descendant focus, Arrow/Home/End, Enter, Escape close-then-clear, Tab, openOnFocus, pointer selection, disabled skipping, required committed-value validity, named hidden submission, external form, and reset.
|
|
26
|
+
- **MUST:** Enable freeSolo only when values outside the predefined collection are valid; display text alone must not satisfy required validity for a closed vocabulary.
|
|
27
|
+
- **MUST:** Keep routing, remote loading, analytics, persistence, and destination policy in application callbacks while Empty and Loading accurately reflect the current collection state.
|
|
28
|
+
- **MUST:** Load styles.css or core.css plus combobox.css and Field CSS when composed.
|
|
29
|
+
|
|
30
|
+
## Common mistakes
|
|
31
|
+
|
|
32
|
+
- **Avoid:** Conflating input text with committed value, enabling freeSolo for closed vocabulary, omitting rendered Items, or putting listbox role on Content. **Instead:** Manage all three states, restrict freeSolo, align options with Items, and preserve Atom's compound semantic owners.
|
|
33
|
+
- **Avoid:** Putting Link, Button, or other controls inside Item or closing a hand-positioned result Surface with custom document listeners. **Instead:** Use noninteractive option labels and perform the selected value's application effect from onValueChange inside the complete Combobox popup anatomy.
|
|
34
|
+
|
|
35
|
+
## Validation checklist
|
|
36
|
+
|
|
37
|
+
- Verify controlled and uncontrolled committed value, input text, and open state; default label initialization; filtering and grouping; disabled options; typing; Arrow/Home/End; Enter option and freeSolo commits; Escape; Tab; openOnFocus; Empty; Loading; Clear; Trigger; pointer selection; and clearOnSelect.
|
|
38
|
+
- Verify visible Field naming, required committed-value validity, inline/native validation focus, hidden named value, external form, reset, Control-sized collision positioning, Portal, outside dismissal and cancellation, and highlighted-item scrolling.
|
|
39
|
+
- Verify recipes and sizes, long labels, narrow widths, zoom, RTL, mobile focus, light and dark appearance, forced colors, and application-owned search-and-navigate effects.
|
|
40
|
+
|
|
41
|
+
## Related guidance
|
|
42
|
+
|
|
43
|
+
- `@flowstack-ui/atom/agents/combobox`
|
|
44
|
+
- `@flowstack-ui/atom/agents/listbox`
|
|
45
|
+
- `field`
|
|
46
|
+
- `input`
|
|
47
|
+
- `select`
|
|
48
|
+
- `radio-group`
|
|
49
|
+
- `multi-select`
|
|
50
|
+
- `dropdown-menu`
|
|
51
|
+
- `popover`
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "flowstack.agent-component.v1",
|
|
3
|
+
"id": "context-menu",
|
|
4
|
+
"name": "ContextMenu",
|
|
5
|
+
"package": "@flowstack-ui/brick",
|
|
6
|
+
"layer": "brick",
|
|
7
|
+
"kind": "component",
|
|
8
|
+
"purpose": "Present finished target-specific commands at a secondary-click, keyboard context-menu invocation, or cancel-safe touch and pen long press while Atom owns invocation, menu semantics, focus, dismissal, and positioning.",
|
|
9
|
+
"useWhen": [
|
|
10
|
+
"Commands belong to the exact file, row, canvas object, or region invoked contextually and every important command also has a visible or keyboard-discoverable route."
|
|
11
|
+
],
|
|
12
|
+
"avoidWhen": [
|
|
13
|
+
{
|
|
14
|
+
"condition": "The actions need a visible button, are the only route to an important task, or belong to a persistent application command bar.",
|
|
15
|
+
"useInstead": "DropdownMenu, visible Brick controls, or Menubar"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"condition": "The content is site navigation or form-value selection.",
|
|
19
|
+
"useInstead": "NavigationMenu or NavList, or Select"
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"composition": [
|
|
23
|
+
"Compose ContextMenu.Root with ContextMenu.Trigger around the owned target and ContextMenu.Portal with ContextMenu.Content. Build Content from uniquely valued Item, CheckboxItem, RadioGroup and RadioItem, Group and Label, Separator, and paired Sub, SubTrigger, and SubContent parts; use Leading, ItemLabel, Description, Shortcut, and ItemIndicator for finished rows.",
|
|
24
|
+
"Keep Trigger paintless and preserve the target's native semantics through asChild or render. Give Content ariaLabel when the target cannot supply an appropriate menu label, and reproduce any local Appearance scope on the portalled visual root."
|
|
25
|
+
],
|
|
26
|
+
"rules": [
|
|
27
|
+
{
|
|
28
|
+
"id": "context-menu-supplemental",
|
|
29
|
+
"level": "must",
|
|
30
|
+
"statement": "Provide another visible or keyboard-discoverable route to every important command; ContextMenu is an enhancement, never the only access path."
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "context-menu-trigger-semantics",
|
|
34
|
+
"level": "must",
|
|
35
|
+
"statement": "Keep Trigger as a paintless behavior wrapper and preserve the target's native role, name, action, handlers, and composition instead of inventing button semantics or target paint."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"id": "context-menu-input-contract",
|
|
39
|
+
"level": "must",
|
|
40
|
+
"statement": "Rely on Atom for secondary-click coordinates, Shift+F10 and Context Menu key anchoring, cross-target handoff, and the fixed cancel-safe 700 ms touch and pen long press; do not add gesture timers or positioning listeners."
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": "context-menu-content-name",
|
|
44
|
+
"level": "must",
|
|
45
|
+
"statement": "Give Content an explicit ariaLabel when the contextual target cannot generate an appropriate accessible menu name."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "context-menu-item-model",
|
|
49
|
+
"level": "must",
|
|
50
|
+
"statement": "Use uniquely valued command, checkbox, and radio item roles, provide textValue when rendered content is not searchable text, and preserve disabled-item navigation, typeahead, closeOnSelect, and paired submenu behavior."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"id": "context-menu-row-anatomy",
|
|
54
|
+
"level": "must",
|
|
55
|
+
"statement": "Use Leading, ItemLabel, Description, Shortcut, ItemIndicator, and tone=danger for their documented jobs instead of rebuilding row columns, selection glyphs, or destructive emphasis."
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"id": "context-menu-responsive",
|
|
59
|
+
"level": "should",
|
|
60
|
+
"statement": "Keep Content collision-aware and internally scrollable at its available height; verify repeated invocation points, edge collision, zoom, narrow viewports, long labels, and LTR and RTL submenus without changing it into a mobile tray."
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"id": "context-menu-theme-scope",
|
|
64
|
+
"level": "must",
|
|
65
|
+
"statement": "When Portal leaves a local Appearance scope, reproduce that scope on the portalled visual root or target a portal container inside it."
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"id": "context-menu-css",
|
|
69
|
+
"level": "must",
|
|
70
|
+
"statement": "Load styles.css or core.css plus context-menu.css and every composed child component stylesheet."
|
|
71
|
+
}
|
|
72
|
+
],
|
|
73
|
+
"commonMistakes": [
|
|
74
|
+
{
|
|
75
|
+
"mistake": "Making right-click the only route to an action, styling Trigger as a control, or implementing another long-press and point-positioning system.",
|
|
76
|
+
"correction": "Keep visible alternatives, preserve target semantics, and use ContextMenu's owned invocation contract."
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"mistake": "Using ContextMenu for navigation or form selection, hand-building row columns, or closing the menu tree with document listeners.",
|
|
80
|
+
"correction": "Choose the semantic owner, compose the public item anatomy, and rely on Atom's Menu focus and dismissal behavior."
|
|
81
|
+
}
|
|
82
|
+
],
|
|
83
|
+
"validation": [
|
|
84
|
+
"Verify the visible alternative, secondary click at changing coordinates, Shift+F10 and Context Menu key opening, repeated and cross-target invocation, disabled state, and touch and pen hold cancellation for movement, scroll, release, cancellation, second pointer, native contextmenu, and unmount.",
|
|
85
|
+
"Verify Content naming, real item focus, Home/End and typeahead, disabled navigation without activation, checkbox mixed and radio state, selection close policy, submenu keys and whole-tree dismissal, Tab, Escape, outside activation, and focus return.",
|
|
86
|
+
"Verify three densities, row anatomy and danger meaning, constrained scrolling, collision placement, zoom, narrow viewports, LTR and RTL, reduced motion, forced colors, light and dark portalled appearance, and complete CSS."
|
|
87
|
+
],
|
|
88
|
+
"related": [
|
|
89
|
+
{
|
|
90
|
+
"kind": "package",
|
|
91
|
+
"package": "@flowstack-ui/atom",
|
|
92
|
+
"id": "context-menu",
|
|
93
|
+
"versionPolicy": "installed-exact"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"kind": "package",
|
|
97
|
+
"package": "@flowstack-ui/atom",
|
|
98
|
+
"id": "menu",
|
|
99
|
+
"versionPolicy": "installed-exact"
|
|
100
|
+
},
|
|
101
|
+
"dropdown-menu",
|
|
102
|
+
"menubar",
|
|
103
|
+
"navigation-menu",
|
|
104
|
+
"nav-list",
|
|
105
|
+
"select",
|
|
106
|
+
"button",
|
|
107
|
+
"appearance"
|
|
108
|
+
]
|
|
109
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# ContextMenu agent guide
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Present finished target-specific commands at a secondary-click, keyboard context-menu invocation, or cancel-safe touch and pen long press while Atom owns invocation, menu semantics, focus, dismissal, and positioning.
|
|
6
|
+
|
|
7
|
+
## Use when
|
|
8
|
+
|
|
9
|
+
- Commands belong to the exact file, row, canvas object, or region invoked contextually and every important command also has a visible or keyboard-discoverable route.
|
|
10
|
+
|
|
11
|
+
## Choose something else when
|
|
12
|
+
|
|
13
|
+
- The actions need a visible button, are the only route to an important task, or belong to a persistent application command bar. Use DropdownMenu, visible Brick controls, or Menubar.
|
|
14
|
+
- The content is site navigation or form-value selection. Use NavigationMenu or NavList, or Select.
|
|
15
|
+
|
|
16
|
+
## Required composition
|
|
17
|
+
|
|
18
|
+
- Compose ContextMenu.Root with ContextMenu.Trigger around the owned target and ContextMenu.Portal with ContextMenu.Content. Build Content from uniquely valued Item, CheckboxItem, RadioGroup and RadioItem, Group and Label, Separator, and paired Sub, SubTrigger, and SubContent parts; use Leading, ItemLabel, Description, Shortcut, and ItemIndicator for finished rows.
|
|
19
|
+
- Keep Trigger paintless and preserve the target's native semantics through asChild or render. Give Content ariaLabel when the target cannot supply an appropriate menu label, and reproduce any local Appearance scope on the portalled visual root.
|
|
20
|
+
|
|
21
|
+
## Rules
|
|
22
|
+
|
|
23
|
+
- **MUST:** Provide another visible or keyboard-discoverable route to every important command; ContextMenu is an enhancement, never the only access path.
|
|
24
|
+
- **MUST:** Keep Trigger as a paintless behavior wrapper and preserve the target's native role, name, action, handlers, and composition instead of inventing button semantics or target paint.
|
|
25
|
+
- **MUST:** Rely on Atom for secondary-click coordinates, Shift+F10 and Context Menu key anchoring, cross-target handoff, and the fixed cancel-safe 700 ms touch and pen long press; do not add gesture timers or positioning listeners.
|
|
26
|
+
- **MUST:** Give Content an explicit ariaLabel when the contextual target cannot generate an appropriate accessible menu name.
|
|
27
|
+
- **MUST:** Use uniquely valued command, checkbox, and radio item roles, provide textValue when rendered content is not searchable text, and preserve disabled-item navigation, typeahead, closeOnSelect, and paired submenu behavior.
|
|
28
|
+
- **MUST:** Use Leading, ItemLabel, Description, Shortcut, ItemIndicator, and tone=danger for their documented jobs instead of rebuilding row columns, selection glyphs, or destructive emphasis.
|
|
29
|
+
- **SHOULD:** Keep Content collision-aware and internally scrollable at its available height; verify repeated invocation points, edge collision, zoom, narrow viewports, long labels, and LTR and RTL submenus without changing it into a mobile tray.
|
|
30
|
+
- **MUST:** When Portal leaves a local Appearance scope, reproduce that scope on the portalled visual root or target a portal container inside it.
|
|
31
|
+
- **MUST:** Load styles.css or core.css plus context-menu.css and every composed child component stylesheet.
|
|
32
|
+
|
|
33
|
+
## Common mistakes
|
|
34
|
+
|
|
35
|
+
- **Avoid:** Making right-click the only route to an action, styling Trigger as a control, or implementing another long-press and point-positioning system. **Instead:** Keep visible alternatives, preserve target semantics, and use ContextMenu's owned invocation contract.
|
|
36
|
+
- **Avoid:** Using ContextMenu for navigation or form selection, hand-building row columns, or closing the menu tree with document listeners. **Instead:** Choose the semantic owner, compose the public item anatomy, and rely on Atom's Menu focus and dismissal behavior.
|
|
37
|
+
|
|
38
|
+
## Validation checklist
|
|
39
|
+
|
|
40
|
+
- Verify the visible alternative, secondary click at changing coordinates, Shift+F10 and Context Menu key opening, repeated and cross-target invocation, disabled state, and touch and pen hold cancellation for movement, scroll, release, cancellation, second pointer, native contextmenu, and unmount.
|
|
41
|
+
- Verify Content naming, real item focus, Home/End and typeahead, disabled navigation without activation, checkbox mixed and radio state, selection close policy, submenu keys and whole-tree dismissal, Tab, Escape, outside activation, and focus return.
|
|
42
|
+
- Verify three densities, row anatomy and danger meaning, constrained scrolling, collision placement, zoom, narrow viewports, LTR and RTL, reduced motion, forced colors, light and dark portalled appearance, and complete CSS.
|
|
43
|
+
|
|
44
|
+
## Related guidance
|
|
45
|
+
|
|
46
|
+
- `@flowstack-ui/atom/agents/context-menu`
|
|
47
|
+
- `@flowstack-ui/atom/agents/menu`
|
|
48
|
+
- `dropdown-menu`
|
|
49
|
+
- `menubar`
|
|
50
|
+
- `navigation-menu`
|
|
51
|
+
- `nav-list`
|
|
52
|
+
- `select`
|
|
53
|
+
- `button`
|
|
54
|
+
- `appearance`
|