@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,46 @@
|
|
|
1
|
+
# ProgressCircle agent guide
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Present compact circular read-only task progress with Brick-owned SVG ring geometry while Atom Progress owns progressbar semantics, normalized range state, and determinate or indeterminate behavior.
|
|
6
|
+
|
|
7
|
+
## Use when
|
|
8
|
+
|
|
9
|
+
- Ongoing measurable or indeterminate work needs compact circular feedback in a card, toolbar, dialog, or other bounded region.
|
|
10
|
+
|
|
11
|
+
## Choose something else when
|
|
12
|
+
|
|
13
|
+
- Linear space communicates change more clearly, the value is a stable measurement or user input, stages matter, or the finished layout is loading. Use Progress, the native meter element, Slider, Steps, or Skeleton.
|
|
14
|
+
|
|
15
|
+
## Required composition
|
|
16
|
+
|
|
17
|
+
- Give ProgressCircle.Root a concise Label or native accessible name, pass a measurable value or null/omit it for indeterminate work, then compose one Circle with Brick-owned Track before Indicator. Add optional Value and Label outside Circle.
|
|
18
|
+
- Choose size, thickness, cap, and tone on Root. Keep SVG geometry decorative, preserve clockwise motion independent of RTL, and keep application aria-busy state and announcements outside ProgressCircle.
|
|
19
|
+
|
|
20
|
+
## Rules
|
|
21
|
+
|
|
22
|
+
- **MUST:** Give Root an accessible task name through Label or native ARIA; Circle, Track, Indicator, and visible Value are decorative or silent and do not replace that name.
|
|
23
|
+
- **MUST:** Use a numeric value only for measurable work, pass null or omit it for indeterminate work, and preserve Atom's truthful min/max normalization, clamping, state, and aria-valuenow behavior.
|
|
24
|
+
- **MUST:** Treat Circle, Track, and Indicator as Brick-owned fixed SVG presentation over Atom Progress context; keep one Circle, order Track before Indicator, and do not override viewBox, radius, circumference, dash array, or dash offset.
|
|
25
|
+
- **MUST:** Keep Root as the only progressbar and announcement path, keep SVG anatomy aria-hidden and unfocusable, and do not make circular progress keyboard adjustable or use it for static measurement.
|
|
26
|
+
- **SHOULD:** Localize optional visible Value and provide aria-valuetext when the numeric range needs domain wording; do not assume the decorative Value changes Root's accessible value text.
|
|
27
|
+
- **MUST:** Keep the ring square, contained within its surrounding region, clockwise in LTR and RTL, label wrapping intact, track visible, and reduced-motion indeterminate state understandable as a static arc.
|
|
28
|
+
- **MUST:** Load styles.css or core.css plus progress-circle.css.
|
|
29
|
+
|
|
30
|
+
## Common mistakes
|
|
31
|
+
|
|
32
|
+
- **Avoid:** Using an unlabeled decorative spinner, adding progressbar semantics to SVG, passing zero for unknown work, or reversing the ring in RTL. **Instead:** Name Atom-backed Root, use indeterminate null state, keep Brick SVG silent, and retain clockwise geometry.
|
|
33
|
+
- **Avoid:** Overriding component-owned SVG radius or dash geometry or using ProgressCircle for capacity or input. **Instead:** Use public size/thickness/cap/tone recipes and choose native meter or Slider for other semantic jobs.
|
|
34
|
+
|
|
35
|
+
## Validation checklist
|
|
36
|
+
|
|
37
|
+
- Verify Root naming, determinate loading/complete and indeterminate state, aria-valuenow presence/absence, clamping, invalid-range normalization, custom value text, localized visible Value, and Atom state propagation.
|
|
38
|
+
- Verify one Root progressbar, one decorative Circle, Track before Indicator, fixed component-owned geometry, silent/unfocusable SVG, no keyboard interaction, native props, refs, and supported composition.
|
|
39
|
+
- Verify five sizes, three thicknesses, both caps, all tones, square containment, long labels, zoom, clockwise LTR/RTL behavior, track contrast, light/dark appearance, forced colors, and reduced motion.
|
|
40
|
+
|
|
41
|
+
## Related guidance
|
|
42
|
+
|
|
43
|
+
- `@flowstack-ui/atom/agents/progress`
|
|
44
|
+
- `progress`
|
|
45
|
+
- `slider`
|
|
46
|
+
- `skeleton`
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "flowstack.agent-component.v1",
|
|
3
|
+
"id": "progress",
|
|
4
|
+
"name": "Progress",
|
|
5
|
+
"package": "@flowstack-ui/brick",
|
|
6
|
+
"layer": "brick",
|
|
7
|
+
"kind": "component",
|
|
8
|
+
"purpose": "Present finished linear read-only task progress for known, unknown, or buffered work while Atom owns progressbar semantics, normalized range state, and the presentation-only Indicator.",
|
|
9
|
+
"useWhen": [
|
|
10
|
+
"Ongoing work such as upload, download, processing, or synchronization needs a linear indication of measurable completion or indeterminate activity."
|
|
11
|
+
],
|
|
12
|
+
"avoidWhen": [
|
|
13
|
+
{
|
|
14
|
+
"condition": "The value is a stable measurement, users manipulate it, stages rather than amount matter, the finished layout is loading, compact circular presentation fits better, or only a transient result is needed.",
|
|
15
|
+
"useInstead": "the native meter element, Slider, Steps, Skeleton, ProgressCircle, or Toast"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"composition": [
|
|
19
|
+
"Give Progress.Root a concise Label or native accessible name, pass a measurable value or null/omit it for indeterminate work, set a truthful range, and compose optional Value then Track with optional Buffer before Indicator.",
|
|
20
|
+
"Choose horizontal or vertical orientation, size, shape, and semantic tone. Keep application region aria-busy state and announcements outside Progress, and provide aria-valuetext or getValueLabel when the numeric range needs domain wording."
|
|
21
|
+
],
|
|
22
|
+
"rules": [
|
|
23
|
+
{
|
|
24
|
+
"id": "progress-name",
|
|
25
|
+
"level": "must",
|
|
26
|
+
"statement": "Give Root an accessible name identifying the ongoing task through Progress.Label or native ARIA; visible Value does not name the task."
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": "progress-determinate",
|
|
30
|
+
"level": "must",
|
|
31
|
+
"statement": "Use a current numeric value only for measurable work and pass null or omit value for unknown work so aria-valuenow is absent rather than pretending unknown progress is zero."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"id": "progress-range",
|
|
35
|
+
"level": "must",
|
|
36
|
+
"statement": "Supply truthful min and max, understand Atom clamping and invalid-range normalization, and keep optional bufferValue within the same task and range rather than treating it as a second progressbar."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "progress-value-text",
|
|
40
|
+
"level": "should",
|
|
41
|
+
"statement": "Provide concise human-readable aria-valuetext or getValueLabel output when the numeric range alone does not communicate meaningful completion; localize visible Value formatting separately."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "progress-indicator",
|
|
45
|
+
"level": "must",
|
|
46
|
+
"statement": "Keep Indicator and Buffer presentation-only, ordered Buffer before Indicator inside Track, and Root as the sole progressbar and announcement owner."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "progress-readonly",
|
|
50
|
+
"level": "must",
|
|
51
|
+
"statement": "Do not make Progress interactive or keyboard adjustable and do not use it for static capacity; choose Slider for input and native meter for stable measurement."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "progress-responsive",
|
|
55
|
+
"level": "must",
|
|
56
|
+
"statement": "Keep horizontal Progress shrinkable, vertical length explicit, label wrapping and value alignment intact, logical fill correct in RTL, and reduced-motion indeterminate state understandable as a static segment."
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": "progress-css",
|
|
60
|
+
"level": "must",
|
|
61
|
+
"statement": "Load styles.css or core.css plus progress.css."
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"commonMistakes": [
|
|
65
|
+
{
|
|
66
|
+
"mistake": "Passing zero for unknown progress, using Progress for capacity, omitting its task name, or adding progressbar semantics to Indicator.",
|
|
67
|
+
"correction": "Use indeterminate null state, native meter for stable quantity, name Root, and keep visual parts silent."
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"mistake": "Announcing every percent change in another live region or treating tone as the sole status meaning.",
|
|
71
|
+
"correction": "Keep one semantic progressbar, add independently justified announcements sparingly, and provide textual task or state context."
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"validation": [
|
|
75
|
+
"Verify naming, determinate loading/complete and indeterminate states, aria-valuenow absence, clamping, invalid-range normalization, buffer percentage, data state, explicit aria-valuetext precedence, getValueLabel, and localized visible Value formatting.",
|
|
76
|
+
"Verify Root is the only progressbar; Indicator and Buffer are silent; no keyboard interaction exists; all parts remain under Root with Buffer before Indicator; native props, refs, and composition are preserved.",
|
|
77
|
+
"Verify both orientations, five sizes, all shapes and tones, narrow width, explicit vertical length, long labels, zoom, RTL logical fill, light/dark appearance, forced colors, reduced motion, and track/indicator contrast."
|
|
78
|
+
],
|
|
79
|
+
"related": [
|
|
80
|
+
{
|
|
81
|
+
"kind": "package",
|
|
82
|
+
"package": "@flowstack-ui/atom",
|
|
83
|
+
"id": "progress",
|
|
84
|
+
"versionPolicy": "installed-exact"
|
|
85
|
+
},
|
|
86
|
+
"progress-circle",
|
|
87
|
+
"slider",
|
|
88
|
+
"toast",
|
|
89
|
+
"skeleton"
|
|
90
|
+
]
|
|
91
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Progress agent guide
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Present finished linear read-only task progress for known, unknown, or buffered work while Atom owns progressbar semantics, normalized range state, and the presentation-only Indicator.
|
|
6
|
+
|
|
7
|
+
## Use when
|
|
8
|
+
|
|
9
|
+
- Ongoing work such as upload, download, processing, or synchronization needs a linear indication of measurable completion or indeterminate activity.
|
|
10
|
+
|
|
11
|
+
## Choose something else when
|
|
12
|
+
|
|
13
|
+
- The value is a stable measurement, users manipulate it, stages rather than amount matter, the finished layout is loading, compact circular presentation fits better, or only a transient result is needed. Use the native meter element, Slider, Steps, Skeleton, ProgressCircle, or Toast.
|
|
14
|
+
|
|
15
|
+
## Required composition
|
|
16
|
+
|
|
17
|
+
- Give Progress.Root a concise Label or native accessible name, pass a measurable value or null/omit it for indeterminate work, set a truthful range, and compose optional Value then Track with optional Buffer before Indicator.
|
|
18
|
+
- Choose horizontal or vertical orientation, size, shape, and semantic tone. Keep application region aria-busy state and announcements outside Progress, and provide aria-valuetext or getValueLabel when the numeric range needs domain wording.
|
|
19
|
+
|
|
20
|
+
## Rules
|
|
21
|
+
|
|
22
|
+
- **MUST:** Give Root an accessible name identifying the ongoing task through Progress.Label or native ARIA; visible Value does not name the task.
|
|
23
|
+
- **MUST:** Use a current numeric value only for measurable work and pass null or omit value for unknown work so aria-valuenow is absent rather than pretending unknown progress is zero.
|
|
24
|
+
- **MUST:** Supply truthful min and max, understand Atom clamping and invalid-range normalization, and keep optional bufferValue within the same task and range rather than treating it as a second progressbar.
|
|
25
|
+
- **SHOULD:** Provide concise human-readable aria-valuetext or getValueLabel output when the numeric range alone does not communicate meaningful completion; localize visible Value formatting separately.
|
|
26
|
+
- **MUST:** Keep Indicator and Buffer presentation-only, ordered Buffer before Indicator inside Track, and Root as the sole progressbar and announcement owner.
|
|
27
|
+
- **MUST:** Do not make Progress interactive or keyboard adjustable and do not use it for static capacity; choose Slider for input and native meter for stable measurement.
|
|
28
|
+
- **MUST:** Keep horizontal Progress shrinkable, vertical length explicit, label wrapping and value alignment intact, logical fill correct in RTL, and reduced-motion indeterminate state understandable as a static segment.
|
|
29
|
+
- **MUST:** Load styles.css or core.css plus progress.css.
|
|
30
|
+
|
|
31
|
+
## Common mistakes
|
|
32
|
+
|
|
33
|
+
- **Avoid:** Passing zero for unknown progress, using Progress for capacity, omitting its task name, or adding progressbar semantics to Indicator. **Instead:** Use indeterminate null state, native meter for stable quantity, name Root, and keep visual parts silent.
|
|
34
|
+
- **Avoid:** Announcing every percent change in another live region or treating tone as the sole status meaning. **Instead:** Keep one semantic progressbar, add independently justified announcements sparingly, and provide textual task or state context.
|
|
35
|
+
|
|
36
|
+
## Validation checklist
|
|
37
|
+
|
|
38
|
+
- Verify naming, determinate loading/complete and indeterminate states, aria-valuenow absence, clamping, invalid-range normalization, buffer percentage, data state, explicit aria-valuetext precedence, getValueLabel, and localized visible Value formatting.
|
|
39
|
+
- Verify Root is the only progressbar; Indicator and Buffer are silent; no keyboard interaction exists; all parts remain under Root with Buffer before Indicator; native props, refs, and composition are preserved.
|
|
40
|
+
- Verify both orientations, five sizes, all shapes and tones, narrow width, explicit vertical length, long labels, zoom, RTL logical fill, light/dark appearance, forced colors, reduced motion, and track/indicator contrast.
|
|
41
|
+
|
|
42
|
+
## Related guidance
|
|
43
|
+
|
|
44
|
+
- `@flowstack-ui/atom/agents/progress`
|
|
45
|
+
- `progress-circle`
|
|
46
|
+
- `slider`
|
|
47
|
+
- `toast`
|
|
48
|
+
- `skeleton`
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "flowstack.agent-component.v1",
|
|
3
|
+
"id": "prose",
|
|
4
|
+
"name": "Prose",
|
|
5
|
+
"package": "@flowstack-ui/brick",
|
|
6
|
+
"layer": "brick",
|
|
7
|
+
"kind": "component",
|
|
8
|
+
"purpose": "Apply finished descendant typography, rhythm, and readable measure to trusted React content.",
|
|
9
|
+
"useWhen": [
|
|
10
|
+
"An application, CMS adapter, or Markdown renderer already produced trusted React children that need coherent editorial typography."
|
|
11
|
+
],
|
|
12
|
+
"avoidWhen": [
|
|
13
|
+
{
|
|
14
|
+
"condition": "Content is untrusted or still needs HTML or Markdown parsing.",
|
|
15
|
+
"useInstead": "an application-owned sanitizer and parser before Prose"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"condition": "A small explicit piece of interface copy needs one recipe.",
|
|
19
|
+
"useInstead": "Text"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"condition": "Content needs editing behavior.",
|
|
23
|
+
"useInstead": "a source-installed editor composition"
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"composition": [
|
|
27
|
+
"Pass trusted native React descendants to Prose and let the application own document structure, trust, and data loading.",
|
|
28
|
+
"Use direct Brick components when richer anatomy or behavior is needed; their classes intentionally override Prose's low-specificity descendant styles."
|
|
29
|
+
],
|
|
30
|
+
"rules": [
|
|
31
|
+
{
|
|
32
|
+
"id": "prose-trust",
|
|
33
|
+
"level": "must",
|
|
34
|
+
"statement": "Sanitize and parse untrusted external content before it becomes Prose children; Prose never makes raw HTML safe."
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"id": "prose-semantics",
|
|
38
|
+
"level": "must",
|
|
39
|
+
"statement": "Keep heading hierarchy, landmark choice, link destinations, table headers, language, and alternative text application-owned."
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"id": "prose-measure",
|
|
43
|
+
"level": "must",
|
|
44
|
+
"statement": "Use the narrow, default, wide, or none reading measure intentionally rather than adding duplicate width CSS."
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"id": "prose-components",
|
|
48
|
+
"level": "must",
|
|
49
|
+
"statement": "Use direct Link, List, Blockquote, Code Block, Table, or Image components when their richer public contract is required, including accessible preserved horizontal scrolling for source or complex tables."
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"id": "prose-css",
|
|
53
|
+
"level": "must",
|
|
54
|
+
"statement": "Load styles.css or core.css plus prose.css."
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"commonMistakes": [
|
|
58
|
+
{
|
|
59
|
+
"mistake": "Passing unsanitized HTML through dangerouslySetInnerHTML inside Prose.",
|
|
60
|
+
"correction": "Keep trust and sanitization in the application, then render trusted React children."
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"mistake": "Using Prose as a generic spacing wrapper around interface controls.",
|
|
64
|
+
"correction": "Use Stack and Text for interface composition; reserve Prose for editorial descendants."
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
"validation": [
|
|
68
|
+
"Confirm native descendant semantics and source order remain unchanged.",
|
|
69
|
+
"Confirm size and measure, headings, lists, links, quotes, tables, code, media, dark appearance, forced colors, narrow widths, zoom, text spacing, localization, RTL, SSR, refs, and modular CSS delivery."
|
|
70
|
+
],
|
|
71
|
+
"related": [
|
|
72
|
+
"text",
|
|
73
|
+
"link",
|
|
74
|
+
"list",
|
|
75
|
+
"blockquote",
|
|
76
|
+
"code",
|
|
77
|
+
"code-block",
|
|
78
|
+
"table",
|
|
79
|
+
"image",
|
|
80
|
+
"interface-composition"
|
|
81
|
+
]
|
|
82
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Prose agent guide
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Apply finished descendant typography, rhythm, and readable measure to trusted React content.
|
|
6
|
+
|
|
7
|
+
## Use when
|
|
8
|
+
|
|
9
|
+
- An application, CMS adapter, or Markdown renderer already produced trusted React children that need coherent editorial typography.
|
|
10
|
+
|
|
11
|
+
## Choose something else when
|
|
12
|
+
|
|
13
|
+
- Content is untrusted or still needs HTML or Markdown parsing. Use an application-owned sanitizer and parser before Prose.
|
|
14
|
+
- A small explicit piece of interface copy needs one recipe. Use Text.
|
|
15
|
+
- Content needs editing behavior. Use a source-installed editor composition.
|
|
16
|
+
|
|
17
|
+
## Required composition
|
|
18
|
+
|
|
19
|
+
- Pass trusted native React descendants to Prose and let the application own document structure, trust, and data loading.
|
|
20
|
+
- Use direct Brick components when richer anatomy or behavior is needed; their classes intentionally override Prose's low-specificity descendant styles.
|
|
21
|
+
|
|
22
|
+
## Rules
|
|
23
|
+
|
|
24
|
+
- **MUST:** Sanitize and parse untrusted external content before it becomes Prose children; Prose never makes raw HTML safe.
|
|
25
|
+
- **MUST:** Keep heading hierarchy, landmark choice, link destinations, table headers, language, and alternative text application-owned.
|
|
26
|
+
- **MUST:** Use the narrow, default, wide, or none reading measure intentionally rather than adding duplicate width CSS.
|
|
27
|
+
- **MUST:** Use direct Link, List, Blockquote, Code Block, Table, or Image components when their richer public contract is required, including accessible preserved horizontal scrolling for source or complex tables.
|
|
28
|
+
- **MUST:** Load styles.css or core.css plus prose.css.
|
|
29
|
+
|
|
30
|
+
## Common mistakes
|
|
31
|
+
|
|
32
|
+
- **Avoid:** Passing unsanitized HTML through dangerouslySetInnerHTML inside Prose. **Instead:** Keep trust and sanitization in the application, then render trusted React children.
|
|
33
|
+
- **Avoid:** Using Prose as a generic spacing wrapper around interface controls. **Instead:** Use Stack and Text for interface composition; reserve Prose for editorial descendants.
|
|
34
|
+
|
|
35
|
+
## Validation checklist
|
|
36
|
+
|
|
37
|
+
- Confirm native descendant semantics and source order remain unchanged.
|
|
38
|
+
- Confirm size and measure, headings, lists, links, quotes, tables, code, media, dark appearance, forced colors, narrow widths, zoom, text spacing, localization, RTL, SSR, refs, and modular CSS delivery.
|
|
39
|
+
|
|
40
|
+
## Related guidance
|
|
41
|
+
|
|
42
|
+
- `text`
|
|
43
|
+
- `link`
|
|
44
|
+
- `list`
|
|
45
|
+
- `blockquote`
|
|
46
|
+
- `code`
|
|
47
|
+
- `code-block`
|
|
48
|
+
- `table`
|
|
49
|
+
- `image`
|
|
50
|
+
- `interface-composition`
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "flowstack.agent-component.v1",
|
|
3
|
+
"id": "radio-group",
|
|
4
|
+
"name": "RadioGroup",
|
|
5
|
+
"package": "@flowstack-ui/brick",
|
|
6
|
+
"layer": "brick",
|
|
7
|
+
"kind": "component",
|
|
8
|
+
"purpose": "Present a finished short visible form choice set with exactly one selected value while Atom owns radiogroup semantics, roving focus, keyboard selection, validation, and submission.",
|
|
9
|
+
"useWhen": [
|
|
10
|
+
"A user must choose exactly one option from a short visible list whose choices are best compared together."
|
|
11
|
+
],
|
|
12
|
+
"avoidWhen": [
|
|
13
|
+
{
|
|
14
|
+
"condition": "Several choices may be selected, a long list should stay compact, or the controls are pressed commands rather than form answers.",
|
|
15
|
+
"useInstead": "CheckboxGroup, Select, or ToggleGroup"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"composition": [
|
|
19
|
+
"Give RadioGroup.Root an accessible group name and compose one uniquely valued RadioGroup.Item per visible option. Use Fieldset with Legend, Description, and Error when the set needs visible group labeling or validation context; use name and form when the selected value must submit.",
|
|
20
|
+
"Root owns sm, md, or lg size and vertical or horizontal layout. Each Item owns its complete visible option label while Brick supplies the private circular control and checked dot."
|
|
21
|
+
],
|
|
22
|
+
"rules": [
|
|
23
|
+
{
|
|
24
|
+
"id": "radio-group-selection",
|
|
25
|
+
"level": "must",
|
|
26
|
+
"statement": "Use RadioGroup for exactly one short visible form choice; use CheckboxGroup for independent choices, Select for a compact longer list, and ToggleGroup for pressed commands."
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": "radio-group-names",
|
|
30
|
+
"level": "must",
|
|
31
|
+
"statement": "Give Root an accessible group name through native ARIA or Fieldset Legend and give every Item a complete visible or native accessible option name."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"id": "radio-group-values",
|
|
35
|
+
"level": "must",
|
|
36
|
+
"statement": "Give every Item a stable unique value and use value with onValueChange for controlled state or defaultValue for uncontrolled state."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "radio-group-roving",
|
|
40
|
+
"level": "must",
|
|
41
|
+
"statement": "Preserve the selected or first enabled Item as the one Tab stop, disabled-item skipping, looping policy, and orientation- and direction-aware Arrow, Home, End, and Space behavior."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "radio-group-readonly",
|
|
45
|
+
"level": "must",
|
|
46
|
+
"statement": "Use readOnly when the selected value must remain focusable and submitted while preventing pointer, Space, and navigation-driven changes; do not substitute disabled."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "radio-group-form",
|
|
50
|
+
"level": "must",
|
|
51
|
+
"statement": "Preserve group-level required validity, first-enabled validation focus, Fieldset state and descriptions, named hidden-radio submission, and uncontrolled form reset."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "radio-group-responsive",
|
|
55
|
+
"level": "should",
|
|
56
|
+
"statement": "Use vertical for scan-heavy groups and horizontal only when wrapped DOM reading order remains clear under narrow widths, zoom, localization, and RTL."
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": "radio-group-css",
|
|
60
|
+
"level": "must",
|
|
61
|
+
"statement": "Load styles.css or core.css plus radio-group.css and Fieldset CSS when composed."
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"commonMistakes": [
|
|
65
|
+
{
|
|
66
|
+
"mistake": "Omitting the group name, giving every Item a Tab stop, using RadioGroup for independent choices, or disabling a value that should remain read-only.",
|
|
67
|
+
"correction": "Use the named Atom-owned roving group, choose CheckboxGroup for independent choices, and preserve focus and submission with readOnly."
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"mistake": "Treating the private circle or surrounding layout as the option label or applying validation to every row independently.",
|
|
71
|
+
"correction": "Label every Item with its visible content and keep shared required or invalid messaging at Root or Fieldset scope."
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"validation": [
|
|
75
|
+
"Verify Root and Item names, unique values, controlled and uncontrolled selection, one roving Tab stop, disabled skipping, vertical and horizontal Arrow keys, Home/End, Space, looping, explicit and inherited LTR and RTL, pointer activation, and composition semantics.",
|
|
76
|
+
"Verify read-only focus without value changes, group-level required validation with and without name, first-enabled validation focus, Fieldset descriptions and errors, hidden submission value, form association, and uncontrolled reset.",
|
|
77
|
+
"Verify three sizes, vertical and wrapping horizontal layout, long labels, narrow widths, 200% text and 400% zoom, touch targets, light and dark appearance, forced colors, RTL, and complete CSS."
|
|
78
|
+
],
|
|
79
|
+
"related": [
|
|
80
|
+
{
|
|
81
|
+
"kind": "package",
|
|
82
|
+
"package": "@flowstack-ui/atom",
|
|
83
|
+
"id": "radio-group",
|
|
84
|
+
"versionPolicy": "installed-exact"
|
|
85
|
+
},
|
|
86
|
+
"checkbox-group",
|
|
87
|
+
"select",
|
|
88
|
+
"toggle-group",
|
|
89
|
+
"fieldset",
|
|
90
|
+
"form"
|
|
91
|
+
]
|
|
92
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# RadioGroup agent guide
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Present a finished short visible form choice set with exactly one selected value while Atom owns radiogroup semantics, roving focus, keyboard selection, validation, and submission.
|
|
6
|
+
|
|
7
|
+
## Use when
|
|
8
|
+
|
|
9
|
+
- A user must choose exactly one option from a short visible list whose choices are best compared together.
|
|
10
|
+
|
|
11
|
+
## Choose something else when
|
|
12
|
+
|
|
13
|
+
- Several choices may be selected, a long list should stay compact, or the controls are pressed commands rather than form answers. Use CheckboxGroup, Select, or ToggleGroup.
|
|
14
|
+
|
|
15
|
+
## Required composition
|
|
16
|
+
|
|
17
|
+
- Give RadioGroup.Root an accessible group name and compose one uniquely valued RadioGroup.Item per visible option. Use Fieldset with Legend, Description, and Error when the set needs visible group labeling or validation context; use name and form when the selected value must submit.
|
|
18
|
+
- Root owns sm, md, or lg size and vertical or horizontal layout. Each Item owns its complete visible option label while Brick supplies the private circular control and checked dot.
|
|
19
|
+
|
|
20
|
+
## Rules
|
|
21
|
+
|
|
22
|
+
- **MUST:** Use RadioGroup for exactly one short visible form choice; use CheckboxGroup for independent choices, Select for a compact longer list, and ToggleGroup for pressed commands.
|
|
23
|
+
- **MUST:** Give Root an accessible group name through native ARIA or Fieldset Legend and give every Item a complete visible or native accessible option name.
|
|
24
|
+
- **MUST:** Give every Item a stable unique value and use value with onValueChange for controlled state or defaultValue for uncontrolled state.
|
|
25
|
+
- **MUST:** Preserve the selected or first enabled Item as the one Tab stop, disabled-item skipping, looping policy, and orientation- and direction-aware Arrow, Home, End, and Space behavior.
|
|
26
|
+
- **MUST:** Use readOnly when the selected value must remain focusable and submitted while preventing pointer, Space, and navigation-driven changes; do not substitute disabled.
|
|
27
|
+
- **MUST:** Preserve group-level required validity, first-enabled validation focus, Fieldset state and descriptions, named hidden-radio submission, and uncontrolled form reset.
|
|
28
|
+
- **SHOULD:** Use vertical for scan-heavy groups and horizontal only when wrapped DOM reading order remains clear under narrow widths, zoom, localization, and RTL.
|
|
29
|
+
- **MUST:** Load styles.css or core.css plus radio-group.css and Fieldset CSS when composed.
|
|
30
|
+
|
|
31
|
+
## Common mistakes
|
|
32
|
+
|
|
33
|
+
- **Avoid:** Omitting the group name, giving every Item a Tab stop, using RadioGroup for independent choices, or disabling a value that should remain read-only. **Instead:** Use the named Atom-owned roving group, choose CheckboxGroup for independent choices, and preserve focus and submission with readOnly.
|
|
34
|
+
- **Avoid:** Treating the private circle or surrounding layout as the option label or applying validation to every row independently. **Instead:** Label every Item with its visible content and keep shared required or invalid messaging at Root or Fieldset scope.
|
|
35
|
+
|
|
36
|
+
## Validation checklist
|
|
37
|
+
|
|
38
|
+
- Verify Root and Item names, unique values, controlled and uncontrolled selection, one roving Tab stop, disabled skipping, vertical and horizontal Arrow keys, Home/End, Space, looping, explicit and inherited LTR and RTL, pointer activation, and composition semantics.
|
|
39
|
+
- Verify read-only focus without value changes, group-level required validation with and without name, first-enabled validation focus, Fieldset descriptions and errors, hidden submission value, form association, and uncontrolled reset.
|
|
40
|
+
- Verify three sizes, vertical and wrapping horizontal layout, long labels, narrow widths, 200% text and 400% zoom, touch targets, light and dark appearance, forced colors, RTL, and complete CSS.
|
|
41
|
+
|
|
42
|
+
## Related guidance
|
|
43
|
+
|
|
44
|
+
- `@flowstack-ui/atom/agents/radio-group`
|
|
45
|
+
- `checkbox-group`
|
|
46
|
+
- `select`
|
|
47
|
+
- `toggle-group`
|
|
48
|
+
- `fieldset`
|
|
49
|
+
- `form`
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "flowstack.agent-component.v1",
|
|
3
|
+
"id": "rating",
|
|
4
|
+
"name": "Rating",
|
|
5
|
+
"package": "@flowstack-ui/brick",
|
|
6
|
+
"layer": "brick",
|
|
7
|
+
"kind": "component",
|
|
8
|
+
"purpose": "Collect a short ordered score, present a repeated-star aggregate, or present a compact one-star numeric summary.",
|
|
9
|
+
"useWhen": [
|
|
10
|
+
"A person chooses a score on a short ordered scale, or an aggregate score needs recognizable repeated-star presentation."
|
|
11
|
+
],
|
|
12
|
+
"avoidWhen": [
|
|
13
|
+
{
|
|
14
|
+
"condition": "The value is a general numeric setting, a named choice, progress, or status.",
|
|
15
|
+
"useInstead": "Slider, Radio Group, Progress, or Badge"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"composition": [
|
|
19
|
+
"For input, compose Root with one Item for every endpoint and use it as the sole control in Field or name the standalone Root.",
|
|
20
|
+
"For aggregate product or review data, use Display with repeated stars or Summary with one star and a visible value; give either a localized label and do not use readOnly Root as a passive summary."
|
|
21
|
+
],
|
|
22
|
+
"rules": [
|
|
23
|
+
{
|
|
24
|
+
"id": "rating-input-vs-display",
|
|
25
|
+
"level": "must",
|
|
26
|
+
"statement": "Use Root and Item only when the person can choose a score; use Display for aggregate or read-only presentation so passive content does not create a focusable slider."
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": "rating-display-label",
|
|
30
|
+
"level": "must",
|
|
31
|
+
"statement": "Give Display and Summary a localized label that states the score and maximum, such as label=\"4.5 out of 5 stars\"; use Summary valueText for localized visible formatting and keep adjacent review counts as ordinary text."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"id": "rating-input-name",
|
|
35
|
+
"level": "must",
|
|
36
|
+
"statement": "Provide one visible Field label for an input Rating or a complete accessible name for a standalone Root."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "rating-scale-clear",
|
|
40
|
+
"level": "must",
|
|
41
|
+
"statement": "Use a valid ordered min and max, positive step, and Item endpoint values; keep repeated selection stable by default and enable allowClear only when clearing to the minimum is intentional."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "rating-input-behavior",
|
|
45
|
+
"level": "must",
|
|
46
|
+
"statement": "Preserve one focusable slider Root with decorative Items, one-pointer capture, cross-item dragging, vertical page scrolling, cancellation rollback, lost-capture finalization, keyboard steps, and horizontal LTR and RTL behavior."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "rating-form-state",
|
|
50
|
+
"level": "must",
|
|
51
|
+
"statement": "Preserve disabled, read-only, invalid, required-above-minimum validity, Field relationships, named hidden submission, validation focus, and uncontrolled form reset for input Rating."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "rating-css",
|
|
55
|
+
"level": "must",
|
|
56
|
+
"statement": "Load styles.css or core.css plus rating.css."
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"commonMistakes": [
|
|
60
|
+
{
|
|
61
|
+
"mistake": "Using readOnly Root to show a product's average rating, creating a focusable slider that cannot be changed.",
|
|
62
|
+
"correction": "Use Rating.Display for aggregate scores and reserve readOnly Root for rare form review states where slider semantics remain meaningful."
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"mistake": "Making every star focusable, repeating the score through five accessible icons, or relying on star color alone.",
|
|
66
|
+
"correction": "Keep one logical Root for input or one labelled Display image for aggregate output; repeated artwork stays decorative."
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"mistake": "Using max=1 or an ordinary star Icon to fake a compact aggregate rating.",
|
|
70
|
+
"correction": "Use Rating.Summary so one decorative star and the visible numeric value share one localized aggregate label."
|
|
71
|
+
}
|
|
72
|
+
],
|
|
73
|
+
"validation": [
|
|
74
|
+
"For input, check pointer, touch, keyboard, fractional values, form ownership, reset, disabled, read-only, invalid, and Field relationships.",
|
|
75
|
+
"For Display and Summary, check the localized accessible name, absence from tab order, aggregate geometry, RTL, forced colors, zoom, and long adjacent review text.",
|
|
76
|
+
"Confirm CSS is loaded."
|
|
77
|
+
],
|
|
78
|
+
"related": [
|
|
79
|
+
{
|
|
80
|
+
"kind": "package",
|
|
81
|
+
"package": "@flowstack-ui/atom",
|
|
82
|
+
"id": "rating",
|
|
83
|
+
"versionPolicy": "installed-exact"
|
|
84
|
+
},
|
|
85
|
+
"field",
|
|
86
|
+
"slider",
|
|
87
|
+
"radio-group",
|
|
88
|
+
"progress",
|
|
89
|
+
"badge"
|
|
90
|
+
]
|
|
91
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Rating agent guide
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Collect a short ordered score, present a repeated-star aggregate, or present a compact one-star numeric summary.
|
|
6
|
+
|
|
7
|
+
## Use when
|
|
8
|
+
|
|
9
|
+
- A person chooses a score on a short ordered scale, or an aggregate score needs recognizable repeated-star presentation.
|
|
10
|
+
|
|
11
|
+
## Choose something else when
|
|
12
|
+
|
|
13
|
+
- The value is a general numeric setting, a named choice, progress, or status. Use Slider, Radio Group, Progress, or Badge.
|
|
14
|
+
|
|
15
|
+
## Required composition
|
|
16
|
+
|
|
17
|
+
- For input, compose Root with one Item for every endpoint and use it as the sole control in Field or name the standalone Root.
|
|
18
|
+
- For aggregate product or review data, use Display with repeated stars or Summary with one star and a visible value; give either a localized label and do not use readOnly Root as a passive summary.
|
|
19
|
+
|
|
20
|
+
## Rules
|
|
21
|
+
|
|
22
|
+
- **MUST:** Use Root and Item only when the person can choose a score; use Display for aggregate or read-only presentation so passive content does not create a focusable slider.
|
|
23
|
+
- **MUST:** Give Display and Summary a localized label that states the score and maximum, such as label="4.5 out of 5 stars"; use Summary valueText for localized visible formatting and keep adjacent review counts as ordinary text.
|
|
24
|
+
- **MUST:** Provide one visible Field label for an input Rating or a complete accessible name for a standalone Root.
|
|
25
|
+
- **MUST:** Use a valid ordered min and max, positive step, and Item endpoint values; keep repeated selection stable by default and enable allowClear only when clearing to the minimum is intentional.
|
|
26
|
+
- **MUST:** Preserve one focusable slider Root with decorative Items, one-pointer capture, cross-item dragging, vertical page scrolling, cancellation rollback, lost-capture finalization, keyboard steps, and horizontal LTR and RTL behavior.
|
|
27
|
+
- **MUST:** Preserve disabled, read-only, invalid, required-above-minimum validity, Field relationships, named hidden submission, validation focus, and uncontrolled form reset for input Rating.
|
|
28
|
+
- **MUST:** Load styles.css or core.css plus rating.css.
|
|
29
|
+
|
|
30
|
+
## Common mistakes
|
|
31
|
+
|
|
32
|
+
- **Avoid:** Using readOnly Root to show a product's average rating, creating a focusable slider that cannot be changed. **Instead:** Use Rating.Display for aggregate scores and reserve readOnly Root for rare form review states where slider semantics remain meaningful.
|
|
33
|
+
- **Avoid:** Making every star focusable, repeating the score through five accessible icons, or relying on star color alone. **Instead:** Keep one logical Root for input or one labelled Display image for aggregate output; repeated artwork stays decorative.
|
|
34
|
+
- **Avoid:** Using max=1 or an ordinary star Icon to fake a compact aggregate rating. **Instead:** Use Rating.Summary so one decorative star and the visible numeric value share one localized aggregate label.
|
|
35
|
+
|
|
36
|
+
## Validation checklist
|
|
37
|
+
|
|
38
|
+
- For input, check pointer, touch, keyboard, fractional values, form ownership, reset, disabled, read-only, invalid, and Field relationships.
|
|
39
|
+
- For Display and Summary, check the localized accessible name, absence from tab order, aggregate geometry, RTL, forced colors, zoom, and long adjacent review text.
|
|
40
|
+
- Confirm CSS is loaded.
|
|
41
|
+
|
|
42
|
+
## Related guidance
|
|
43
|
+
|
|
44
|
+
- `@flowstack-ui/atom/agents/rating`
|
|
45
|
+
- `field`
|
|
46
|
+
- `slider`
|
|
47
|
+
- `radio-group`
|
|
48
|
+
- `progress`
|
|
49
|
+
- `badge`
|