@viraui/react 2026.3.11 → 2026.4.0
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/dist/catalog.json +50 -50
- package/dist/components/textarea/textarea.js +2 -2
- package/dist/components/textfield/textfield.js +2 -2
- package/dist/specs/PROTOCOL.md +48 -0
- package/dist/specs/activity-hints.xml +42 -0
- package/dist/specs/components/accordion/a11y.xml +6 -0
- package/dist/specs/components/accordion/meta.xml +20 -0
- package/dist/specs/components/accordion/patterns.xml +9 -0
- package/dist/specs/components/accordion/props.xml +48 -0
- package/dist/specs/components/accordion/usage.xml +8 -0
- package/dist/specs/components/annotate/a11y.xml +6 -0
- package/dist/specs/components/annotate/meta.xml +19 -0
- package/dist/specs/components/annotate/patterns.xml +7 -0
- package/dist/specs/components/annotate/props.xml +88 -0
- package/dist/specs/components/annotate/usage.xml +10 -0
- package/dist/specs/components/autocomplete/a11y.xml +6 -0
- package/dist/specs/components/autocomplete/meta.xml +22 -0
- package/dist/specs/components/autocomplete/patterns.xml +14 -0
- package/dist/specs/components/autocomplete/props.xml +81 -0
- package/dist/specs/components/autocomplete/usage.xml +11 -0
- package/dist/specs/components/avatar/a11y.xml +5 -0
- package/dist/specs/components/avatar/meta.xml +17 -0
- package/dist/specs/components/avatar/patterns.xml +7 -0
- package/dist/specs/components/avatar/props.xml +38 -0
- package/dist/specs/components/avatar/usage.xml +7 -0
- package/dist/specs/components/avatar-group/a11y.xml +6 -0
- package/dist/specs/components/avatar-group/meta.xml +16 -0
- package/dist/specs/components/avatar-group/patterns.xml +7 -0
- package/dist/specs/components/avatar-group/props.xml +39 -0
- package/dist/specs/components/avatar-group/usage.xml +10 -0
- package/dist/specs/components/badge/a11y.xml +7 -0
- package/dist/specs/components/badge/meta.xml +19 -0
- package/dist/specs/components/badge/patterns.xml +7 -0
- package/dist/specs/components/badge/props.xml +37 -0
- package/dist/specs/components/badge/usage.xml +9 -0
- package/dist/specs/components/beam/a11y.xml +7 -0
- package/dist/specs/components/beam/meta.xml +18 -0
- package/dist/specs/components/beam/patterns.xml +7 -0
- package/dist/specs/components/beam/props.xml +90 -0
- package/dist/specs/components/beam/usage.xml +11 -0
- package/dist/specs/components/bleed/a11y.xml +7 -0
- package/dist/specs/components/bleed/meta.xml +18 -0
- package/dist/specs/components/bleed/patterns.xml +7 -0
- package/dist/specs/components/bleed/props.xml +22 -0
- package/dist/specs/components/bleed/usage.xml +10 -0
- package/dist/specs/components/breakpoints/a11y.xml +5 -0
- package/dist/specs/components/breakpoints/meta.xml +17 -0
- package/dist/specs/components/breakpoints/patterns.xml +9 -0
- package/dist/specs/components/breakpoints/props.xml +20 -0
- package/dist/specs/components/breakpoints/usage.xml +9 -0
- package/dist/specs/components/button/a11y.xml +9 -0
- package/dist/specs/components/button/meta.xml +20 -0
- package/dist/specs/components/button/patterns.xml +11 -0
- package/dist/specs/components/button/props.xml +101 -0
- package/dist/specs/components/button/usage.xml +18 -0
- package/dist/specs/components/checkbox/a11y.xml +6 -0
- package/dist/specs/components/checkbox/meta.xml +21 -0
- package/dist/specs/components/checkbox/patterns.xml +7 -0
- package/dist/specs/components/checkbox/props.xml +48 -0
- package/dist/specs/components/checkbox/usage.xml +10 -0
- package/dist/specs/components/chip/a11y.xml +6 -0
- package/dist/specs/components/chip/meta.xml +19 -0
- package/dist/specs/components/chip/patterns.xml +7 -0
- package/dist/specs/components/chip/props.xml +49 -0
- package/dist/specs/components/chip/usage.xml +11 -0
- package/dist/specs/components/clamp-text/a11y.xml +6 -0
- package/dist/specs/components/clamp-text/meta.xml +17 -0
- package/dist/specs/components/clamp-text/patterns.xml +7 -0
- package/dist/specs/components/clamp-text/props.xml +27 -0
- package/dist/specs/components/clamp-text/usage.xml +8 -0
- package/dist/specs/components/dialog/a11y.xml +7 -0
- package/dist/specs/components/dialog/meta.xml +21 -0
- package/dist/specs/components/dialog/patterns.xml +19 -0
- package/dist/specs/components/dialog/props.xml +49 -0
- package/dist/specs/components/dialog/usage.xml +12 -0
- package/dist/specs/components/elevator/a11y.xml +6 -0
- package/dist/specs/components/elevator/meta.xml +16 -0
- package/dist/specs/components/elevator/patterns.xml +7 -0
- package/dist/specs/components/elevator/props.xml +31 -0
- package/dist/specs/components/elevator/usage.xml +8 -0
- package/dist/specs/components/fieldset/a11y.xml +6 -0
- package/dist/specs/components/fieldset/meta.xml +22 -0
- package/dist/specs/components/fieldset/patterns.xml +7 -0
- package/dist/specs/components/fieldset/props.xml +26 -0
- package/dist/specs/components/fieldset/usage.xml +11 -0
- package/dist/specs/components/fit-text/a11y.xml +6 -0
- package/dist/specs/components/fit-text/meta.xml +18 -0
- package/dist/specs/components/fit-text/patterns.xml +7 -0
- package/dist/specs/components/fit-text/props.xml +19 -0
- package/dist/specs/components/fit-text/usage.xml +9 -0
- package/dist/specs/components/glow/a11y.xml +6 -0
- package/dist/specs/components/glow/meta.xml +19 -0
- package/dist/specs/components/glow/patterns.xml +7 -0
- package/dist/specs/components/glow/props.xml +74 -0
- package/dist/specs/components/glow/usage.xml +12 -0
- package/dist/specs/components/grid/a11y.xml +6 -0
- package/dist/specs/components/grid/meta.xml +18 -0
- package/dist/specs/components/grid/patterns.xml +9 -0
- package/dist/specs/components/grid/props.xml +101 -0
- package/dist/specs/components/grid/usage.xml +10 -0
- package/dist/specs/components/icon-button/a11y.xml +9 -0
- package/dist/specs/components/icon-button/meta.xml +18 -0
- package/dist/specs/components/icon-button/patterns.xml +11 -0
- package/dist/specs/components/icon-button/props.xml +95 -0
- package/dist/specs/components/icon-button/usage.xml +14 -0
- package/dist/specs/components/linear-progress/a11y.xml +6 -0
- package/dist/specs/components/linear-progress/meta.xml +21 -0
- package/dist/specs/components/linear-progress/patterns.xml +7 -0
- package/dist/specs/components/linear-progress/props.xml +31 -0
- package/dist/specs/components/linear-progress/usage.xml +11 -0
- package/dist/specs/components/masonry/a11y.xml +6 -0
- package/dist/specs/components/masonry/meta.xml +18 -0
- package/dist/specs/components/masonry/patterns.xml +9 -0
- package/dist/specs/components/masonry/props.xml +32 -0
- package/dist/specs/components/masonry/usage.xml +9 -0
- package/dist/specs/components/menu/a11y.xml +7 -0
- package/dist/specs/components/menu/meta.xml +25 -0
- package/dist/specs/components/menu/patterns.xml +25 -0
- package/dist/specs/components/menu/props.xml +73 -0
- package/dist/specs/components/menu/usage.xml +15 -0
- package/dist/specs/components/meter/a11y.xml +6 -0
- package/dist/specs/components/meter/meta.xml +19 -0
- package/dist/specs/components/meter/patterns.xml +7 -0
- package/dist/specs/components/meter/props.xml +31 -0
- package/dist/specs/components/meter/usage.xml +10 -0
- package/dist/specs/components/popover/a11y.xml +7 -0
- package/dist/specs/components/popover/meta.xml +22 -0
- package/dist/specs/components/popover/patterns.xml +15 -0
- package/dist/specs/components/popover/props.xml +37 -0
- package/dist/specs/components/popover/usage.xml +12 -0
- package/dist/specs/components/progressive-blur/a11y.xml +6 -0
- package/dist/specs/components/progressive-blur/meta.xml +17 -0
- package/dist/specs/components/progressive-blur/patterns.xml +7 -0
- package/dist/specs/components/progressive-blur/props.xml +28 -0
- package/dist/specs/components/progressive-blur/usage.xml +10 -0
- package/dist/specs/components/radio/a11y.xml +6 -0
- package/dist/specs/components/radio/meta.xml +20 -0
- package/dist/specs/components/radio/patterns.xml +9 -0
- package/dist/specs/components/radio/props.xml +44 -0
- package/dist/specs/components/radio/usage.xml +12 -0
- package/dist/specs/components/select/a11y.xml +6 -0
- package/dist/specs/components/select/meta.xml +21 -0
- package/dist/specs/components/select/patterns.xml +13 -0
- package/dist/specs/components/select/props.xml +83 -0
- package/dist/specs/components/select/usage.xml +14 -0
- package/dist/specs/components/separator/a11y.xml +6 -0
- package/dist/specs/components/separator/meta.xml +18 -0
- package/dist/specs/components/separator/patterns.xml +7 -0
- package/dist/specs/components/separator/props.xml +39 -0
- package/dist/specs/components/separator/usage.xml +8 -0
- package/dist/specs/components/shimmer/a11y.xml +6 -0
- package/dist/specs/components/shimmer/meta.xml +18 -0
- package/dist/specs/components/shimmer/patterns.xml +7 -0
- package/dist/specs/components/shimmer/props.xml +40 -0
- package/dist/specs/components/shimmer/usage.xml +9 -0
- package/dist/specs/components/skeleton/a11y.xml +8 -0
- package/dist/specs/components/skeleton/meta.xml +17 -0
- package/dist/specs/components/skeleton/patterns.xml +8 -0
- package/dist/specs/components/skeleton/props.xml +73 -0
- package/dist/specs/components/skeleton/usage.xml +10 -0
- package/dist/specs/components/slider/a11y.xml +6 -0
- package/dist/specs/components/slider/meta.xml +19 -0
- package/dist/specs/components/slider/patterns.xml +7 -0
- package/dist/specs/components/slider/props.xml +45 -0
- package/dist/specs/components/slider/usage.xml +8 -0
- package/dist/specs/components/spinner/a11y.xml +7 -0
- package/dist/specs/components/spinner/meta.xml +17 -0
- package/dist/specs/components/spinner/patterns.xml +7 -0
- package/dist/specs/components/spinner/props.xml +24 -0
- package/dist/specs/components/spinner/usage.xml +8 -0
- package/dist/specs/components/stack/a11y.xml +6 -0
- package/dist/specs/components/stack/meta.xml +19 -0
- package/dist/specs/components/stack/patterns.xml +7 -0
- package/dist/specs/components/stack/props.xml +94 -0
- package/dist/specs/components/stack/usage.xml +14 -0
- package/dist/specs/components/static-noise/a11y.xml +6 -0
- package/dist/specs/components/static-noise/meta.xml +17 -0
- package/dist/specs/components/static-noise/patterns.xml +7 -0
- package/dist/specs/components/static-noise/props.xml +27 -0
- package/dist/specs/components/static-noise/usage.xml +10 -0
- package/dist/specs/components/surface/a11y.xml +6 -0
- package/dist/specs/components/surface/meta.xml +17 -0
- package/dist/specs/components/surface/patterns.xml +7 -0
- package/dist/specs/components/surface/props.xml +92 -0
- package/dist/specs/components/surface/usage.xml +16 -0
- package/dist/specs/components/switch/a11y.xml +6 -0
- package/dist/specs/components/switch/meta.xml +19 -0
- package/dist/specs/components/switch/patterns.xml +7 -0
- package/dist/specs/components/switch/props.xml +48 -0
- package/dist/specs/components/switch/usage.xml +8 -0
- package/dist/specs/components/tabs/a11y.xml +6 -0
- package/dist/specs/components/tabs/meta.xml +19 -0
- package/dist/specs/components/tabs/patterns.xml +14 -0
- package/dist/specs/components/tabs/props.xml +24 -0
- package/dist/specs/components/tabs/usage.xml +8 -0
- package/dist/specs/components/text/a11y.xml +6 -0
- package/dist/specs/components/text/meta.xml +17 -0
- package/dist/specs/components/text/patterns.xml +7 -0
- package/dist/specs/components/text/props.xml +129 -0
- package/dist/specs/components/text/usage.xml +7 -0
- package/dist/specs/components/textarea/a11y.xml +6 -0
- package/dist/specs/components/textarea/meta.xml +19 -0
- package/dist/specs/components/textarea/patterns.xml +7 -0
- package/dist/specs/components/textarea/props.xml +39 -0
- package/dist/specs/components/textarea/usage.xml +10 -0
- package/dist/specs/components/textfield/a11y.xml +6 -0
- package/dist/specs/components/textfield/meta.xml +21 -0
- package/dist/specs/components/textfield/patterns.xml +7 -0
- package/dist/specs/components/textfield/props.xml +51 -0
- package/dist/specs/components/textfield/usage.xml +9 -0
- package/dist/specs/components/title/a11y.xml +7 -0
- package/dist/specs/components/title/meta.xml +17 -0
- package/dist/specs/components/title/patterns.xml +7 -0
- package/dist/specs/components/title/props.xml +124 -0
- package/dist/specs/components/title/usage.xml +10 -0
- package/dist/specs/components/toast/a11y.xml +7 -0
- package/dist/specs/components/toast/meta.xml +20 -0
- package/dist/specs/components/toast/patterns.xml +15 -0
- package/dist/specs/components/toast/props.xml +42 -0
- package/dist/specs/components/toast/usage.xml +10 -0
- package/dist/specs/components/toggle-button/a11y.xml +6 -0
- package/dist/specs/components/toggle-button/meta.xml +20 -0
- package/dist/specs/components/toggle-button/patterns.xml +7 -0
- package/dist/specs/components/toggle-button/props.xml +61 -0
- package/dist/specs/components/toggle-button/usage.xml +10 -0
- package/dist/specs/components/toggle-group/a11y.xml +6 -0
- package/dist/specs/components/toggle-group/meta.xml +19 -0
- package/dist/specs/components/toggle-group/patterns.xml +9 -0
- package/dist/specs/components/toggle-group/props.xml +15 -0
- package/dist/specs/components/toggle-group/usage.xml +9 -0
- package/dist/specs/components/tooltip/a11y.xml +6 -0
- package/dist/specs/components/tooltip/meta.xml +21 -0
- package/dist/specs/components/tooltip/patterns.xml +12 -0
- package/dist/specs/components/tooltip/props.xml +20 -0
- package/dist/specs/components/tooltip/usage.xml +10 -0
- package/dist/specs/components/typewriter/a11y.xml +7 -0
- package/dist/specs/components/typewriter/meta.xml +18 -0
- package/dist/specs/components/typewriter/patterns.xml +7 -0
- package/dist/specs/components/typewriter/props.xml +43 -0
- package/dist/specs/components/typewriter/usage.xml +11 -0
- package/dist/specs/foundation/attributes.xml +127 -0
- package/dist/specs/foundation/bootstrap.xml +62 -0
- package/dist/specs/foundation/elevation.xml +21 -0
- package/dist/specs/foundation/meta.xml +20 -0
- package/dist/specs/foundation/modules.xml +62 -0
- package/dist/specs/foundation/theme-topics.xml +60 -0
- package/dist/specs/foundation/toggles.xml +25 -0
- package/dist/specs/index.xml +538 -0
- package/dist/specs/patterns/settings-row.xml +19 -0
- package/package.json +12 -11
- package/dist/components/accordion/accordion.guide.json +0 -69
- package/dist/components/annotate/annotate.guide.json +0 -110
- package/dist/components/autocomplete/autocomplete.guide.json +0 -103
- package/dist/components/avatar/avatar.guide.json +0 -53
- package/dist/components/avatar-group/avatar-group.guide.json +0 -56
- package/dist/components/badge/badge.guide.json +0 -59
- package/dist/components/beam/beam.guide.json +0 -123
- package/dist/components/bleed/bleed.guide.json +0 -43
- package/dist/components/breakpoints/breakpoints.guide.json +0 -40
- package/dist/components/button/button-link.guide.json +0 -69
- package/dist/components/button/button.guide.json +0 -78
- package/dist/components/checkbox/checkbox.guide.json +0 -68
- package/dist/components/chip/chip.guide.json +0 -69
- package/dist/components/clamp-text/clamp-text.guide.json +0 -47
- package/dist/components/dialog/dialog.guide.json +0 -72
- package/dist/components/elevator/elevator.guide.json +0 -46
- package/dist/components/fieldset/fieldset.guide.json +0 -43
- package/dist/components/fit-text/fit-text.guide.json +0 -38
- package/dist/components/glow/glow.guide.json +0 -108
- package/dist/components/grid/grid.guide.json +0 -120
- package/dist/components/icon-button/icon-button-link.guide.json +0 -73
- package/dist/components/icon-button/icon-button.guide.json +0 -72
- package/dist/components/linear-progress/linear-progress.guide.json +0 -53
- package/dist/components/masonry/masonry.guide.json +0 -50
- package/dist/components/menu/menu.guide.json +0 -94
- package/dist/components/meter/meter.guide.json +0 -52
- package/dist/components/popover/popover.guide.json +0 -58
- package/dist/components/progressive-blur/progressive-blur.guide.json +0 -50
- package/dist/components/radio/radio.guide.json +0 -65
- package/dist/components/select/select.guide.json +0 -105
- package/dist/components/separator/separator.guide.json +0 -58
- package/dist/components/shimmer/shimmer.guide.json +0 -67
- package/dist/components/skeleton/skeleton.guide.json +0 -98
- package/dist/components/slider/slider.guide.json +0 -64
- package/dist/components/spinner/spinner.guide.json +0 -43
- package/dist/components/stack/stack.guide.json +0 -116
- package/dist/components/static-noise/static-noise.guide.json +0 -44
- package/dist/components/surface/surface.guide.json +0 -115
- package/dist/components/switch/switch.guide.json +0 -71
- package/dist/components/tabs/tabs.guide.json +0 -43
- package/dist/components/text/text.guide.json +0 -152
- package/dist/components/textarea/textarea.guide.json +0 -55
- package/dist/components/textfield/textfield.guide.json +0 -70
- package/dist/components/title/title.guide.json +0 -149
- package/dist/components/toast/toast.guide.json +0 -60
- package/dist/components/toggle-button/toggle-button.guide.json +0 -81
- package/dist/components/toggle-group/toggle-group.guide.json +0 -27
- package/dist/components/tooltip/tooltip.guide.json +0 -40
- package/dist/components/typewriter/typewriter.guide.json +0 -65
- package/dist/consumption.json +0 -84
- package/dist/preflight-surface.json +0 -233
- package/dist/theme-surface.json +0 -71
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "Grid",
|
|
3
|
-
"structure": "<Grid>\n <Grid.Item>…</Grid.Item>\n</Grid>",
|
|
4
|
-
"summary": "CSS Grid layout primitive for auto-fill/fit or fixed track layouts with token gaps, Stack-aligned padding, and item placement (`fullWidth` / `fullHeight` / column / row).",
|
|
5
|
-
"whenToUse": [
|
|
6
|
-
"Responsive card or tile walls that need true CSS Grid tracks (auto-fill/fit or fixed columns)",
|
|
7
|
-
"Fixed-count columns that keep a given track breadth — pair `columns` with an explicit `colMinWidth` so a parent with `overflow: auto` can scroll",
|
|
8
|
-
"Layouts where items must span full row or full column tracks",
|
|
9
|
-
"Token-spaced grids with optional axis padding without custom grid CSS"
|
|
10
|
-
],
|
|
11
|
-
"whenNotToUse": [
|
|
12
|
-
"Uneven-height presentational walls where reading order can follow columns — prefer Masonry",
|
|
13
|
-
"Simple one-axis flex spacing — prefer Stack",
|
|
14
|
-
"Expecting Masonry-style React column packing instead of CSS Grid tracks"
|
|
15
|
-
],
|
|
16
|
-
"accessibility": [
|
|
17
|
-
"Grid is presentational — choose render roots that preserve correct semantics (section, list, article)",
|
|
18
|
-
"DOM order follows source order; keep reading and keyboard order aligned with visual placement",
|
|
19
|
-
"Prefer Grid.Item render when list or article semantics matter for children"
|
|
20
|
-
],
|
|
21
|
-
"antiPatterns": [
|
|
22
|
-
"Using Masonry when you need explicit row/column placement or full-width/full-height spans",
|
|
23
|
-
"Re-declaring grid-template and gap in app CSS when Grid can own the layout",
|
|
24
|
-
"Setting both fullWidth and column (or fullHeight and row) and expecting the explicit placement to win — full-* data attrs override"
|
|
25
|
-
],
|
|
26
|
-
"related": ["Stack", "Masonry", "Surface"],
|
|
27
|
-
"properties": {
|
|
28
|
-
"react": {
|
|
29
|
-
"colMinWidth": {
|
|
30
|
-
"description": "Minimum column track width for `filling` auto-fill/auto-fit tracks. When `columns` is also set, an explicit value opts into fixed-breadth tracks (`repeat(N, var(--vui-grid-column-min-w))`) and sets `data-grid-fixed-breadth`; omit this prop to keep fluid `1fr` tracks."
|
|
31
|
-
},
|
|
32
|
-
"columnGap": {
|
|
33
|
-
"description": "Sets the gap between grid columns using the Vira space token scale."
|
|
34
|
-
},
|
|
35
|
-
"columns": {
|
|
36
|
-
"description": "Fixes the number of column tracks. When set, `filling` is ignored and `data-grid-filling-type` is omitted. Bare `columns={N}` uses fluid `repeat(N, minmax(0, 1fr))` tracks. Pass an explicit `colMinWidth` as well for fixed-breadth tracks and `data-grid-fixed-breadth=\"true\"` (`inline-size: max-content`)."
|
|
37
|
-
},
|
|
38
|
-
"filling": {
|
|
39
|
-
"description": "Controls `repeat(auto-fill|auto-fit, …)` when `columns` is unset. Pass `false` to skip the filling data attribute."
|
|
40
|
-
},
|
|
41
|
-
"hPadding": {
|
|
42
|
-
"description": "Sets inline padding using one token for both sides or a `[start, end]` tuple."
|
|
43
|
-
},
|
|
44
|
-
"Item.column": {
|
|
45
|
-
"description": "Sets explicit `grid-column` placement via `--vui-grid-item-column`."
|
|
46
|
-
},
|
|
47
|
-
"Item.fullHeight": {
|
|
48
|
-
"description": "Spans the item across every row track (`grid-row: 1 / -1`). Wins over `row` when both are set."
|
|
49
|
-
},
|
|
50
|
-
"Item.fullWidth": {
|
|
51
|
-
"description": "Spans the item across every column track (`grid-column: 1 / -1`). Wins over `column` when both are set."
|
|
52
|
-
},
|
|
53
|
-
"Item.ref": {
|
|
54
|
-
"description": "Ref forwarded to the rendered item root element."
|
|
55
|
-
},
|
|
56
|
-
"Item.render": {
|
|
57
|
-
"description": "Replaces the default `div` item root using Base UI render semantics."
|
|
58
|
-
},
|
|
59
|
-
"Item.row": {
|
|
60
|
-
"description": "Sets explicit `grid-row` placement via `--vui-grid-item-row`."
|
|
61
|
-
},
|
|
62
|
-
"Item.subgrid": {
|
|
63
|
-
"description": "Opts the item into a nested CSS grid that inherits parent tracks via `subgrid`. Sets `display: grid` and `grid-template-columns` and/or `grid-template-rows` to `subgrid`. Pass `true` for both axes, or `'column'` / `'row'` for one axis. Pair with `fullWidth` / `fullHeight` or a `column` / `row` span so the item covers the tracks to inherit."
|
|
64
|
-
},
|
|
65
|
-
"ref": {
|
|
66
|
-
"description": "Ref forwarded to the rendered grid root element."
|
|
67
|
-
},
|
|
68
|
-
"render": {
|
|
69
|
-
"description": "Replaces the default `div` root using Base UI render semantics."
|
|
70
|
-
},
|
|
71
|
-
"rowGap": {
|
|
72
|
-
"description": "Sets the gap between grid rows using the Vira space token scale."
|
|
73
|
-
},
|
|
74
|
-
"rowMinHeight": {
|
|
75
|
-
"description": "Minimum row track size used when `rows` is set."
|
|
76
|
-
},
|
|
77
|
-
"rows": {
|
|
78
|
-
"description": "Fixes the number of row tracks via `--vui-grid-rows`."
|
|
79
|
-
},
|
|
80
|
-
"vPadding": {
|
|
81
|
-
"description": "Sets block padding using one token for both sides or a `[start, end]` tuple."
|
|
82
|
-
}
|
|
83
|
-
},
|
|
84
|
-
"css": {
|
|
85
|
-
"column-gap": {
|
|
86
|
-
"description": "Grid column gap on the root."
|
|
87
|
-
},
|
|
88
|
-
"column-min-w": {
|
|
89
|
-
"description": "Minimum column track width for auto-fill/auto-fit track sizing, and the fixed track breadth when `columns` is set with an explicit `colMinWidth`."
|
|
90
|
-
},
|
|
91
|
-
"column-size": {
|
|
92
|
-
"description": "Resolved column track size (`minmax` formula) used by auto-fill/fit."
|
|
93
|
-
},
|
|
94
|
-
"columns": {
|
|
95
|
-
"description": "Fixed column track count when `columns` is set and filling is inactive; bare `columns` sizes tracks as `minmax(0, 1fr)`; with explicit `colMinWidth`, tracks use `var(--vui-grid-column-min-w)` under `data-grid-fixed-breadth`."
|
|
96
|
-
},
|
|
97
|
-
"padding-block-end": {
|
|
98
|
-
"description": "Block-end padding when padding is enabled."
|
|
99
|
-
},
|
|
100
|
-
"padding-block-start": {
|
|
101
|
-
"description": "Block-start padding when padding is enabled."
|
|
102
|
-
},
|
|
103
|
-
"padding-inline-end": {
|
|
104
|
-
"description": "Inline-end padding when padding is enabled."
|
|
105
|
-
},
|
|
106
|
-
"padding-inline-start": {
|
|
107
|
-
"description": "Inline-start padding when padding is enabled."
|
|
108
|
-
},
|
|
109
|
-
"row-gap": {
|
|
110
|
-
"description": "Grid row gap on the root."
|
|
111
|
-
},
|
|
112
|
-
"row-min-h": {
|
|
113
|
-
"description": "Minimum row track size when fixed rows are enabled."
|
|
114
|
-
},
|
|
115
|
-
"rows": {
|
|
116
|
-
"description": "Fixed row track count when `rows` is set."
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "IconButtonLink",
|
|
3
|
-
"structure": "<IconButtonLink href=\"#\" icon={<Plus />} aria-label=\"Add\" />",
|
|
4
|
-
"summary": "Icon-only navigation link that requires an accessible name; wraps ButtonLink.",
|
|
5
|
-
"whenToUse": [
|
|
6
|
-
"Compact toolbar or chrome navigation identified only by icon",
|
|
7
|
-
"Same size, variant, and loading model as IconButton without button semantics",
|
|
8
|
-
"Compose with framework Link via ButtonLink render prop"
|
|
9
|
-
],
|
|
10
|
-
"whenNotToUse": [
|
|
11
|
-
"In-page icon actions that do not navigate — use IconButton",
|
|
12
|
-
"Labeled navigation — use ButtonLink",
|
|
13
|
-
"Missing both aria-label and aria-labelledby"
|
|
14
|
-
],
|
|
15
|
-
"accessibility": [
|
|
16
|
-
"Provide aria-label or aria-labelledby on every IconButtonLink — icon alone is not a name",
|
|
17
|
-
"Renders a real link root so assistive tech get link role",
|
|
18
|
-
"loading sets aria-disabled / aria-busy for loading chrome; no disabled prop — native links stay activatable"
|
|
19
|
-
],
|
|
20
|
-
"antiPatterns": [
|
|
21
|
-
"Passing children, addon, or addonPosition — not part of the public API",
|
|
22
|
-
"Using IconButton with render={<a />} instead of IconButtonLink"
|
|
23
|
-
],
|
|
24
|
-
"related": ["IconButton", "ButtonLink", "Button", "Icon", "Spinner"],
|
|
25
|
-
"properties": {
|
|
26
|
-
"react": {
|
|
27
|
-
"icon": {
|
|
28
|
-
"description": "Icon rendered as the sole visible control content."
|
|
29
|
-
},
|
|
30
|
-
"loading": {
|
|
31
|
-
"description": "Shows a centered spinner overlay while preserving the original content width. Sets `aria-disabled` / `aria-busy` for loading chrome; link stays activatable."
|
|
32
|
-
},
|
|
33
|
-
"pill": {
|
|
34
|
-
"description": "Applies a fully rounded pill shape."
|
|
35
|
-
},
|
|
36
|
-
"render": {
|
|
37
|
-
"description": "Replaces the default `a` root using Base UI render semantics (e.g. Next.js `Link`)."
|
|
38
|
-
},
|
|
39
|
-
"size": {
|
|
40
|
-
"description": "Controls the visual button size."
|
|
41
|
-
},
|
|
42
|
-
"variant": {
|
|
43
|
-
"description": "Selects the visual treatment matching Button."
|
|
44
|
-
}
|
|
45
|
-
},
|
|
46
|
-
"css": {
|
|
47
|
-
"background": {
|
|
48
|
-
"description": "Button fill; variant and state selectors preset this."
|
|
49
|
-
},
|
|
50
|
-
"color": {
|
|
51
|
-
"description": "Button label and icon color."
|
|
52
|
-
},
|
|
53
|
-
"height": {
|
|
54
|
-
"description": "Button block size; size prop presets via data attributes."
|
|
55
|
-
},
|
|
56
|
-
"icon-size": {
|
|
57
|
-
"description": "Addon icon size inside the button."
|
|
58
|
-
},
|
|
59
|
-
"padding-block": {
|
|
60
|
-
"description": "Vertical padding inside the button."
|
|
61
|
-
},
|
|
62
|
-
"padding-inline": {
|
|
63
|
-
"description": "Horizontal padding inside the button."
|
|
64
|
-
},
|
|
65
|
-
"radius": {
|
|
66
|
-
"description": "Corner radius; pill sets infinite radius via data-pill."
|
|
67
|
-
},
|
|
68
|
-
"spinner-color": {
|
|
69
|
-
"description": "Loading spinner color on the root."
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "IconButton",
|
|
3
|
-
"structure": "<IconButton icon={<Plus />} aria-label=\"Add\" />",
|
|
4
|
-
"summary": "Icon-only button that shares Button visual chrome (--vui-button-* CSS) and requires an accessible name through aria-label or aria-labelledby.",
|
|
5
|
-
"whenToUse": [
|
|
6
|
-
"Compact toolbar or chrome actions identified only by icon",
|
|
7
|
-
"Same size, variant, and loading model as Button without visible label",
|
|
8
|
-
"Decorative glyph with explicit accessible naming on the root button"
|
|
9
|
-
],
|
|
10
|
-
"whenNotToUse": [
|
|
11
|
-
"Actions that need visible text — use Button",
|
|
12
|
-
"Missing both aria-label and aria-labelledby",
|
|
13
|
-
"Navigation or non-button semantics — use IconButtonLink",
|
|
14
|
-
"Temporally swap icons after user interactions with temporal pressed state, like copy feedback. Use ToggleButton instead"
|
|
15
|
-
],
|
|
16
|
-
"accessibility": [
|
|
17
|
-
"Provide aria-label or aria-labelledby on every IconButton — icon alone is not a name",
|
|
18
|
-
"Loading sets aria-busy on the control; Spinner is decorative",
|
|
19
|
-
"Keep the accessible name stable when loading state changes"
|
|
20
|
-
],
|
|
21
|
-
"antiPatterns": [
|
|
22
|
-
"Passing children, addon, or addonPosition — not part of the public API",
|
|
23
|
-
"Using icon-only Button instead of IconButton",
|
|
24
|
-
"Using IconButton with render={<a />} for links — use IconButtonLink"
|
|
25
|
-
],
|
|
26
|
-
"related": ["Button", "ButtonLink", "IconButtonLink", "Icon", "Spinner"],
|
|
27
|
-
"properties": {
|
|
28
|
-
"react": {
|
|
29
|
-
"icon": {
|
|
30
|
-
"description": "Icon rendered as the sole visible control content."
|
|
31
|
-
},
|
|
32
|
-
"loading": {
|
|
33
|
-
"description": "Shows a centered spinner overlay while preserving the original content width."
|
|
34
|
-
},
|
|
35
|
-
"pill": {
|
|
36
|
-
"description": "Applies a fully rounded pill shape to the button."
|
|
37
|
-
},
|
|
38
|
-
"size": {
|
|
39
|
-
"description": "Controls the visual button size."
|
|
40
|
-
},
|
|
41
|
-
"variant": {
|
|
42
|
-
"description": "Selects the visual treatment for the button."
|
|
43
|
-
}
|
|
44
|
-
},
|
|
45
|
-
"css": {
|
|
46
|
-
"background": {
|
|
47
|
-
"description": "Button fill; variant and state selectors preset this."
|
|
48
|
-
},
|
|
49
|
-
"color": {
|
|
50
|
-
"description": "Button label and icon color."
|
|
51
|
-
},
|
|
52
|
-
"height": {
|
|
53
|
-
"description": "Button block size; size prop presets via data attributes."
|
|
54
|
-
},
|
|
55
|
-
"icon-size": {
|
|
56
|
-
"description": "Addon icon size inside the button."
|
|
57
|
-
},
|
|
58
|
-
"padding-block": {
|
|
59
|
-
"description": "Vertical padding inside the button."
|
|
60
|
-
},
|
|
61
|
-
"padding-inline": {
|
|
62
|
-
"description": "Horizontal padding inside the button."
|
|
63
|
-
},
|
|
64
|
-
"radius": {
|
|
65
|
-
"description": "Corner radius; pill sets infinite radius via data-pill."
|
|
66
|
-
},
|
|
67
|
-
"spinner-color": {
|
|
68
|
-
"description": "Loading spinner color on the root."
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "LinearProgress",
|
|
3
|
-
"baseUIApi": "https://base-ui.com/react/components/progress#api-reference",
|
|
4
|
-
"structure": "<LinearProgress value={40} />",
|
|
5
|
-
"summary": "Shows determinate or indeterminate progress for a task in a compact horizontal track.",
|
|
6
|
-
"whenToUse": [
|
|
7
|
-
"Use for task completion with a known percentage or bounded numeric value.",
|
|
8
|
-
"Use with `value={null}` when progress is active but the amount complete is unknown.",
|
|
9
|
-
"Use with a label when the progress bar needs a visible task name."
|
|
10
|
-
],
|
|
11
|
-
"whenNotToUse": [
|
|
12
|
-
"Use Spinner for a small standalone loading affordance without task context.",
|
|
13
|
-
"Use Skeleton when representing loading content layout.",
|
|
14
|
-
"Use Slider when the user needs to choose or adjust a value."
|
|
15
|
-
],
|
|
16
|
-
"accessibility": [
|
|
17
|
-
"Provide a visible `label` or an accessible name through Base UI progress props when the task is not otherwise clear.",
|
|
18
|
-
"Use determinate numeric `value` when actual progress is known.",
|
|
19
|
-
"Use `value={null}` only for truly indeterminate work."
|
|
20
|
-
],
|
|
21
|
-
"antiPatterns": [
|
|
22
|
-
"Do not use LinearProgress as an interactive value control.",
|
|
23
|
-
"Do not add fake percentages for work where progress is unknown.",
|
|
24
|
-
"Do not model invalid progress; Base UI Progress does not expose an invalid state.",
|
|
25
|
-
"Do not model disabled progress; Base UI Progress does not expose a disabled state.",
|
|
26
|
-
"Do not hide the task label when multiple progress indicators are visible."
|
|
27
|
-
],
|
|
28
|
-
"related": ["Slider", "Spinner", "Skeleton", "Text", "Meter"],
|
|
29
|
-
"properties": {
|
|
30
|
-
"react": {
|
|
31
|
-
"description": {
|
|
32
|
-
"description": "Static helper copy rendered with `Text` below the progress track."
|
|
33
|
-
},
|
|
34
|
-
"label": {
|
|
35
|
-
"description": "Visible label rendered through `Progress.Label` with shared internal `FieldLabel`."
|
|
36
|
-
},
|
|
37
|
-
"renderValue": {
|
|
38
|
-
"description": "Shows the current value beside the label. Pass `true` for Base UI default formatting, or a function matching `Progress.Value` `children` to customize the printed label."
|
|
39
|
-
}
|
|
40
|
-
},
|
|
41
|
-
"css": {
|
|
42
|
-
"indicator-color": {
|
|
43
|
-
"description": "Progress indicator color for determinate fill and indeterminate sweep."
|
|
44
|
-
},
|
|
45
|
-
"track-background": {
|
|
46
|
-
"description": "Progress track background color."
|
|
47
|
-
},
|
|
48
|
-
"track-size": {
|
|
49
|
-
"description": "Progress track thickness on the root."
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "Masonry",
|
|
3
|
-
"structure": "<Masonry>\n <Masonry.Item>…</Masonry.Item>\n</Masonry>",
|
|
4
|
-
"summary": "Responsive React-column layout primitive for read-only mixed-height content walls; root is a named CSS container query context (`masonry` / inline-size).",
|
|
5
|
-
"whenToUse": [
|
|
6
|
-
"Card walls, gallery-like collections, and editorial layouts with uneven item heights",
|
|
7
|
-
"Presentational walls where responsive column count matters more than source-order reading",
|
|
8
|
-
"Read-only collections composed from Surface, Stack, Text, and similar content primitives",
|
|
9
|
-
"Style descendants with @container masonry queries when layout should respond to the Masonry root's inline-size (peer Surface/Stack named containers)"
|
|
10
|
-
],
|
|
11
|
-
"whenNotToUse": [
|
|
12
|
-
"Interactive collections where keyboard tab order must match source order",
|
|
13
|
-
"Layouts that need strict row alignment or item-to-item placement control",
|
|
14
|
-
"Cases where Stack or another linear layout already preserves the intended reading sequence"
|
|
15
|
-
],
|
|
16
|
-
"accessibility": [
|
|
17
|
-
"Masonry distributes items round-robin into React column wrappers, so DOM, screen-reader, and keyboard order follow columns rather than original child order",
|
|
18
|
-
"Avoid interactive descendants when the visual arrangement could mislead keyboard users",
|
|
19
|
-
"Choose semantic item roots with Masonry.Item render when list or article semantics matter"
|
|
20
|
-
],
|
|
21
|
-
"antiPatterns": [
|
|
22
|
-
"Treating React columns as a true interactive grid with predictable source-order keyboard traversal",
|
|
23
|
-
"Using arbitrary child margins instead of the gap contract (column flex gap + Stack rowGap)"
|
|
24
|
-
],
|
|
25
|
-
"related": ["Stack", "Surface", "Text"],
|
|
26
|
-
"properties": {
|
|
27
|
-
"react": {
|
|
28
|
-
"breakpointCols": {
|
|
29
|
-
"description": "Sets the mobile-first column count at each CSS px container breakpoint. Each non-`default` key is a unitless `min-width` in px against the Masonry root's content-box inline size. Keys may be in any order; the largest matching breakpoint wins. Non-finite keys are ignored."
|
|
30
|
-
},
|
|
31
|
-
"gap": {
|
|
32
|
-
"description": "Sets the gap between columns (`--vui-masonry-gap`) and the `rowGap` on each column `Stack`."
|
|
33
|
-
},
|
|
34
|
-
"Item.ref": {
|
|
35
|
-
"description": "Ref forwarded to the rendered item root element."
|
|
36
|
-
},
|
|
37
|
-
"Item.render": {
|
|
38
|
-
"description": "Replaces the default `div` item root using Base UI render semantics."
|
|
39
|
-
},
|
|
40
|
-
"render": {
|
|
41
|
-
"description": "Replaces the default `div` root using Base UI render semantics."
|
|
42
|
-
}
|
|
43
|
-
},
|
|
44
|
-
"css": {
|
|
45
|
-
"gap": {
|
|
46
|
-
"description": "Column gap only (`--vui-masonry-gap` on the flex root). Within-column item spacing uses Stack `rowGap`, not this custom property."
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "Menu",
|
|
3
|
-
"baseUIApi": "https://base-ui.com/react/components/menu#api-reference",
|
|
4
|
-
"structure": "<Menu>\n <Menu.Trigger />\n <Menu.Popup>\n <Menu.Item />\n <Menu.LinkItem />\n <Menu.CheckboxItem />\n <Menu.Group label=\"…\">\n <Menu.Item />\n </Menu.Group>\n <Menu.RadioGroup>\n <Menu.RadioItem value=\"…\" />\n </Menu.RadioGroup>\n <Menu.Separator />\n <Menu.Submenu>\n <Menu.SubmenuTrigger />\n <Menu.Popup>…</Menu.Popup>\n </Menu.Submenu>\n </Menu.Popup>\n</Menu>",
|
|
5
|
-
"summary": "Compound menu built on Base UI Menu with `Menu.Trigger`, `Menu.Popup`, unified item rows, groups, checkbox/radio items, nested submenus, destructive sentiment, and `Menu.createHandle` for detached triggers; `Popup` owns Portal + Positioner + Elevator/Surface Select-like list chrome.",
|
|
6
|
-
"whenToUse": [
|
|
7
|
-
"Action menus anchored to a button or icon button",
|
|
8
|
-
"Nested command lists with checkbox or radio options that stay open on toggle",
|
|
9
|
-
"Link rows mixed with actions in one menu surface",
|
|
10
|
-
"Detached or multi-trigger menus via `Menu.createHandle`",
|
|
11
|
-
"Account / user widgets: `Menu.Trigger` as a Surface chip (avatar + name + email) opening a Popup with a static profile header plus action items",
|
|
12
|
-
"Custom portal host (iframe preview, shadow root, or app overlay root) via `container` on the portal-owning public part"
|
|
13
|
-
],
|
|
14
|
-
"whenNotToUse": [
|
|
15
|
-
"Page-blocking modal flows (use Dialog)",
|
|
16
|
-
"Form field single-select from a long list (use Select)",
|
|
17
|
-
"Context menu or menubar chrome (not in this surface)",
|
|
18
|
-
"System-wide transient alerts (use Toast)",
|
|
19
|
-
"Rich non-menu panels with forms or free layout (use Popover / Dialog — do not wrap Menu in Popover)"
|
|
20
|
-
],
|
|
21
|
-
"accessibility": [
|
|
22
|
-
"Give the trigger an accessible name (`Button` label, visible text in a Surface trigger rendered as `<button>`, or `aria-label` on IconButton)",
|
|
23
|
-
"Use `Menu.Group` `label` for grouped sections so assistive tech gets a group name",
|
|
24
|
-
"Prefer Base UI keyboard navigation; do not trap focus outside the menu pattern",
|
|
25
|
-
"`Menu.Popup` may include static non-item children (e.g. profile header); keep them non-interactive so focus roving stays on menu items"
|
|
26
|
-
],
|
|
27
|
-
"antiPatterns": [
|
|
28
|
-
"Expecting `Menu.Arrow`, `Menu.Backdrop`, or public Portal/Positioner/Viewport exports",
|
|
29
|
-
"Closing checkbox/radio items on click by default when the menu should stay open for multi-toggle",
|
|
30
|
-
"Using physical left/right CSS that breaks RTL submenu chevrons",
|
|
31
|
-
"Expecting RTL item rows / left-opening submenus without Base UI `DirectionProvider direction=\"rtl\"` plus app `dir=\"rtl\"` on a portal ancestor (usually `<html>` / document root — a local wrapper alone does not reach body-mounted popups)",
|
|
32
|
-
"Nesting Menu inside Popover for an account menu — Menu already owns portal, positioning, and listbox keyboard behavior",
|
|
33
|
-
"Putting focusable controls (inputs, nested buttons) in `Menu.Popup` outside `Menu.Item` / `Menu.LinkItem` / checkbox / radio / submenu trigger parts"
|
|
34
|
-
],
|
|
35
|
-
"related": ["Avatar", "Button", "IconButton", "Popover", "Select", "Stack", "Surface", "Text", "Tooltip"],
|
|
36
|
-
"properties": {
|
|
37
|
-
"react": {
|
|
38
|
-
"CheckboxItem.addon": {
|
|
39
|
-
"description": "Decorative leading node rendered before the item label."
|
|
40
|
-
},
|
|
41
|
-
"CheckboxItem.note": {
|
|
42
|
-
"description": "End-aligned secondary text (e.g. keyboard shortcut) before the check indicator. Rendered muted `x-small`."
|
|
43
|
-
},
|
|
44
|
-
"CheckboxItem.sentiment": {
|
|
45
|
-
"description": "Visual sentiment. `destructive` uses highlight-red wash + text."
|
|
46
|
-
},
|
|
47
|
-
"Group.label": {
|
|
48
|
-
"description": "Accessible group label rendered with `Menu.GroupLabel`."
|
|
49
|
-
},
|
|
50
|
-
"Item.addon": {
|
|
51
|
-
"description": "Decorative leading node rendered before the item label."
|
|
52
|
-
},
|
|
53
|
-
"Item.note": {
|
|
54
|
-
"description": "End-aligned secondary text (e.g. keyboard shortcut). Rendered muted `x-small`."
|
|
55
|
-
},
|
|
56
|
-
"Item.sentiment": {
|
|
57
|
-
"description": "Visual sentiment. `destructive` uses highlight-red wash + text."
|
|
58
|
-
},
|
|
59
|
-
"LinkItem.addon": {
|
|
60
|
-
"description": "Decorative leading node rendered before the item label."
|
|
61
|
-
},
|
|
62
|
-
"LinkItem.note": {
|
|
63
|
-
"description": "End-aligned secondary text (e.g. keyboard shortcut). Rendered muted `x-small`."
|
|
64
|
-
},
|
|
65
|
-
"LinkItem.sentiment": {
|
|
66
|
-
"description": "Visual sentiment. `destructive` uses highlight-red wash + text."
|
|
67
|
-
},
|
|
68
|
-
"Popup.children": {
|
|
69
|
-
"description": "Menu items and optional static, non-interactive content rendered inside the popup."
|
|
70
|
-
},
|
|
71
|
-
"Popup.container": {
|
|
72
|
-
"description": "Portal mount node (iframe body, shadow root, or app overlay root). Omit for Base UI default (`document.body` from the module window — iframe hosts must pass the iframe document body explicitly)."
|
|
73
|
-
},
|
|
74
|
-
"RadioGroup.label": {
|
|
75
|
-
"description": "Optional accessible group label rendered with `Menu.GroupLabel`."
|
|
76
|
-
},
|
|
77
|
-
"RadioItem.addon": {
|
|
78
|
-
"description": "Decorative leading node rendered before the item label."
|
|
79
|
-
},
|
|
80
|
-
"RadioItem.note": {
|
|
81
|
-
"description": "End-aligned secondary text (e.g. keyboard shortcut) before the check indicator. Rendered muted `x-small`."
|
|
82
|
-
},
|
|
83
|
-
"RadioItem.sentiment": {
|
|
84
|
-
"description": "Visual sentiment. `destructive` uses highlight-red wash + text."
|
|
85
|
-
},
|
|
86
|
-
"SubmenuTrigger.addon": {
|
|
87
|
-
"description": "Decorative leading node rendered before the item label."
|
|
88
|
-
},
|
|
89
|
-
"SubmenuTrigger.sentiment": {
|
|
90
|
-
"description": "Visual sentiment. `destructive` uses highlight-red wash + text."
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "Meter",
|
|
3
|
-
"baseUIApi": "https://base-ui.com/react/components/meter#api-reference",
|
|
4
|
-
"structure": "<Meter value={40} />",
|
|
5
|
-
"summary": "Shows a determinate metric in a compact horizontal track for static capacity, level, or score values.",
|
|
6
|
-
"whenToUse": [
|
|
7
|
-
"Use for storage usage, battery level, capacity, or score within a known range.",
|
|
8
|
-
"Use with a label when the metric needs a visible name.",
|
|
9
|
-
"Use with `renderValue` when the formatted value should appear beside the label."
|
|
10
|
-
],
|
|
11
|
-
"whenNotToUse": [
|
|
12
|
-
"Use LinearProgress for in-progress tasks or indeterminate work.",
|
|
13
|
-
"Use Slider when the user needs to choose or adjust a value.",
|
|
14
|
-
"Use Spinner for a small standalone loading affordance without metric context."
|
|
15
|
-
],
|
|
16
|
-
"accessibility": [
|
|
17
|
-
"Provide a visible `label` or an accessible name through `aria-label` / `aria-labelledby` when the metric is not otherwise clear.",
|
|
18
|
-
"Keep `value` numeric and within `min` / `max` for accurate `aria-valuenow` semantics.",
|
|
19
|
-
"Use `description` for supplementary context that should not replace the accessible name."
|
|
20
|
-
],
|
|
21
|
-
"antiPatterns": [
|
|
22
|
-
"Do not use Meter as an interactive value control.",
|
|
23
|
-
"Do not use Meter for indeterminate or in-progress work.",
|
|
24
|
-
"Do not hide the metric label when multiple meters are visible.",
|
|
25
|
-
"Do not model invalid or disabled meter state; Base UI Meter does not expose those states."
|
|
26
|
-
],
|
|
27
|
-
"related": ["LinearProgress", "Slider", "Text"],
|
|
28
|
-
"properties": {
|
|
29
|
-
"react": {
|
|
30
|
-
"description": {
|
|
31
|
-
"description": "Static helper copy rendered with `Text` below the meter track."
|
|
32
|
-
},
|
|
33
|
-
"label": {
|
|
34
|
-
"description": "Visible label rendered through `Meter.Label` with shared internal `FieldLabel`."
|
|
35
|
-
},
|
|
36
|
-
"renderValue": {
|
|
37
|
-
"description": "Shows the current value beside the label. Pass `true` for Base UI default formatting, or a function matching `Meter.Value` `children` to customize the printed label."
|
|
38
|
-
}
|
|
39
|
-
},
|
|
40
|
-
"css": {
|
|
41
|
-
"indicator-color": {
|
|
42
|
-
"description": "Determinate meter indicator color."
|
|
43
|
-
},
|
|
44
|
-
"track-background": {
|
|
45
|
-
"description": "Meter track background color."
|
|
46
|
-
},
|
|
47
|
-
"track-size": {
|
|
48
|
-
"description": "Meter track thickness on the root."
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "Popover",
|
|
3
|
-
"baseUIApi": "https://base-ui.com/react/components/popover#api-reference",
|
|
4
|
-
"structure": "<Popover>\n <Popover.Trigger />\n <Popover.Sheet unstyled>\n <Popover.Title>…</Popover.Title>\n <Popover.Description>…</Popover.Description>\n …\n <Popover.Close />\n </Popover.Sheet>\n</Popover>",
|
|
5
|
-
"summary": "Compound popover built on Base UI Popover with `Popover.Trigger`, `Popover.Sheet`, `Popover.Close`, `Popover.Title`, `Popover.Description`, and `Popover.createHandle` for detached and multiple triggers; `Sheet` encapsulates Portal + Positioner + Popup + Viewport + Title + Description and animates position, size, and content between triggers; `Sheet` with `unstyled` skips the built-in Surface and header so the consumer composes the popup chrome, including `Popover.Title` and `Popover.Description`.",
|
|
6
|
-
"whenToUse": [
|
|
7
|
-
"Anchored quick actions or contextual hints next to a triggering control",
|
|
8
|
-
"Lightweight forms or confirmations that float beside the trigger without blocking the page",
|
|
9
|
-
"Multi-trigger panels that swap content with direction-aware animations using `Popover.createHandle` and trigger `payload`",
|
|
10
|
-
"Hover-revealed hints via `openOnHover` with `delay` and `closeDelay`",
|
|
11
|
-
"Fully custom popup chrome via `Sheet` `unstyled` composed with `Popover.Title` and `Popover.Description`",
|
|
12
|
-
"Custom portal host (iframe preview, shadow root, or app overlay root) via `container` on the portal-owning public part"
|
|
13
|
-
],
|
|
14
|
-
"whenNotToUse": [
|
|
15
|
-
"Modal tasks that must block the page and demand focused attention (use Dialog)",
|
|
16
|
-
"Nested drill-down sheet flows (use Dialog)",
|
|
17
|
-
"System-wide transient alerts and confirmations (use Toast)"
|
|
18
|
-
],
|
|
19
|
-
"accessibility": [
|
|
20
|
-
"Always pass `title`; add `description` when the heading alone is not enough context",
|
|
21
|
-
"With `unstyled`, render `Popover.Title` inside `children` (and `Popover.Description` when needed) so the popup keeps an accessible name",
|
|
22
|
-
"Compose `Popover.Close` with an accessible name when a visible close control is needed, or set `showCloseButton` for the built-in one",
|
|
23
|
-
"Use `modal` to control focus trap and outside interaction; render a `Popover.Close` inside the popup when `modal` is `true` or `'trap-focus'` so touch screen readers can escape"
|
|
24
|
-
],
|
|
25
|
-
"antiPatterns": [
|
|
26
|
-
"Opening a popover without `title` copy for assistive technologies",
|
|
27
|
-
"Rendering heavy or scroll-bound content that belongs in a Dialog",
|
|
28
|
-
"Expecting `Popover.Arrow` (it is intentionally not exported or rendered)"
|
|
29
|
-
],
|
|
30
|
-
"related": ["Surface", "Button", "IconButton", "Stack", "Dialog", "Tabs"],
|
|
31
|
-
"properties": {
|
|
32
|
-
"react": {
|
|
33
|
-
"Sheet.container": {
|
|
34
|
-
"description": "Portal mount node (iframe body, shadow root, or app overlay root). Omit for Base UI default (`document.body` from the module window — iframe hosts must pass the iframe document body explicitly)."
|
|
35
|
-
},
|
|
36
|
-
"Sheet.description": {
|
|
37
|
-
"description": "Supporting copy announced with the title."
|
|
38
|
-
},
|
|
39
|
-
"Sheet.headerAlign": {
|
|
40
|
-
"description": "Aligns the header content."
|
|
41
|
-
},
|
|
42
|
-
"Sheet.showCloseButton": {
|
|
43
|
-
"description": "Whether to show the built-in flat IconButton close control."
|
|
44
|
-
},
|
|
45
|
-
"Sheet.title": {
|
|
46
|
-
"description": "Accessible popover title rendered as the popup heading."
|
|
47
|
-
},
|
|
48
|
-
"Sheet.unstyled": {
|
|
49
|
-
"description": "Whether to skip the built-in Surface, header, and close chrome and render only the positioning/animation shell (Portal + Positioner + Popup + Viewport)."
|
|
50
|
-
}
|
|
51
|
-
},
|
|
52
|
-
"css": {
|
|
53
|
-
"content-fade-duration": {
|
|
54
|
-
"description": "content fade duration custom property on the component root."
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "ProgressiveBlur",
|
|
3
|
-
"structure": "<ProgressiveBlur />",
|
|
4
|
-
"summary": "Decorative stacked backdrop-filter overlay that ramps blur from one edge toward the opposite edge.",
|
|
5
|
-
"whenToUse": [
|
|
6
|
-
"Edge scrims on cards, sheets, heroes, or scroll regions where content should fade into blur",
|
|
7
|
-
"Glass or vibrant surfaces that need directional legibility without a hard blur cutoff",
|
|
8
|
-
"Decorative atmosphere where the parent owns semantics and layout positioning"
|
|
9
|
-
],
|
|
10
|
-
"whenNotToUse": [
|
|
11
|
-
"Standalone loading or status feedback without a labeled parent region",
|
|
12
|
-
"Large full-viewport stacks with many simultaneous high-radius blur layers",
|
|
13
|
-
"Cases where a single uniform backdrop blur is sufficient"
|
|
14
|
-
],
|
|
15
|
-
"accessibility": [
|
|
16
|
-
"ProgressiveBlur is decorative — the root hardcodes `aria-hidden=\"true\"` (not overridable via props)",
|
|
17
|
-
"Parent surface or region must expose any meaningful label or busy state",
|
|
18
|
-
"Consumer must position the root non-static (for example `position: relative`/`absolute`/`fixed`) and own inset, z-index, and sizing — ProgressiveBlur does not create a containing block"
|
|
19
|
-
],
|
|
20
|
-
"antiPatterns": [
|
|
21
|
-
"Stacking many full-viewport ProgressiveBlur instances on one screen",
|
|
22
|
-
"Driving layout size or scroll behavior from inside the overlay component",
|
|
23
|
-
"Embedding layout positioning rules inside the component stylesheet",
|
|
24
|
-
"Leaving the ProgressiveBlur root `position: static` so absolute layers escape the intended overlay box"
|
|
25
|
-
],
|
|
26
|
-
"related": ["Surface", "StaticNoise"],
|
|
27
|
-
"properties": {
|
|
28
|
-
"react": {
|
|
29
|
-
"blur": {
|
|
30
|
-
"description": "Sets the maximum blur radius applied to the first layer at the selected edge.",
|
|
31
|
-
"refCss": "amount"
|
|
32
|
-
},
|
|
33
|
-
"direction": {
|
|
34
|
-
"description": "Selects the edge where maximum blur starts and fades toward the opposite edge."
|
|
35
|
-
},
|
|
36
|
-
"easing": {
|
|
37
|
-
"description": "Selects the easing curve used to distribute blur factors across internal layers."
|
|
38
|
-
},
|
|
39
|
-
"steps": {
|
|
40
|
-
"description": "Sets the number of internal blur layers. Values are clamped to `2..16`."
|
|
41
|
-
}
|
|
42
|
-
},
|
|
43
|
-
"css": {
|
|
44
|
-
"amount": {
|
|
45
|
-
"description": "Sets the maximum blur radius applied to the first layer at the selected edge.",
|
|
46
|
-
"refReact": "blur"
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|