@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
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<usage surface="popover">
|
|
3
|
+
<do>Anchored quick actions or contextual hints next to a triggering control</do>
|
|
4
|
+
<do>Lightweight forms or confirmations that float beside the trigger without blocking the page</do>
|
|
5
|
+
<do>Multi-trigger panels that swap content with direction-aware animations using `Popover.createHandle` and trigger `payload`</do>
|
|
6
|
+
<do>Hover-revealed hints via `openOnHover` with `delay` and `closeDelay`</do>
|
|
7
|
+
<do>Fully custom popup chrome via `Sheet` `unstyled` composed with `Popover.Title` and `Popover.Description`</do>
|
|
8
|
+
<do>Custom portal host (iframe preview, shadow root, or app overlay root) via `container` on the portal-owning public part</do>
|
|
9
|
+
<dont>Opening a popover without `title` copy for assistive technologies</dont>
|
|
10
|
+
<dont>Rendering heavy or scroll-bound content that belongs in a Dialog</dont>
|
|
11
|
+
<dont>Expecting `Popover.Arrow` (it is intentionally not exported or rendered)</dont>
|
|
12
|
+
</usage>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<a11y surface="progressive-blur">
|
|
3
|
+
<rule>ProgressiveBlur is decorative — the root hardcodes `aria-hidden="true"` (not overridable via props)</rule>
|
|
4
|
+
<rule>Parent surface or region must expose any meaningful label or busy state</rule>
|
|
5
|
+
<rule>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</rule>
|
|
6
|
+
</a11y>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<meta id="progressive-blur" title="ProgressiveBlur" category="effect" shared_contract="progressive-blur">
|
|
3
|
+
<summary>Decorative stacked backdrop-filter overlay that ramps blur from one edge toward the opposite edge.</summary>
|
|
4
|
+
<exports>
|
|
5
|
+
<export name="ProgressiveBlur" />
|
|
6
|
+
</exports>
|
|
7
|
+
<related>
|
|
8
|
+
<ref id="surface" />
|
|
9
|
+
<ref id="static-noise" />
|
|
10
|
+
</related>
|
|
11
|
+
<units>
|
|
12
|
+
<unit kind="a11y" href="a11y.xml" />
|
|
13
|
+
<unit kind="props" href="props.xml" />
|
|
14
|
+
<unit kind="usage" href="usage.xml" />
|
|
15
|
+
<unit kind="patterns" href="patterns.xml" />
|
|
16
|
+
</units>
|
|
17
|
+
</meta>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<patterns surface="progressive-blur">
|
|
3
|
+
<example title="ProgressiveBlur structure">
|
|
4
|
+
<tsx><![CDATA[<ProgressiveBlur />]]></tsx>
|
|
5
|
+
<notes>Public assembly hint from legacy guide; not API authority.</notes>
|
|
6
|
+
</example>
|
|
7
|
+
</patterns>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<props surface="progressive-blur">
|
|
3
|
+
<when_to_use>
|
|
4
|
+
<item>Edge scrims on cards, sheets, heroes, or scroll regions where content should fade into blur</item>
|
|
5
|
+
<item>Glass or vibrant surfaces that need directional legibility without a hard blur cutoff</item>
|
|
6
|
+
<item>Decorative atmosphere where the parent owns semantics and layout positioning</item>
|
|
7
|
+
</when_to_use>
|
|
8
|
+
<when_not_to_use>
|
|
9
|
+
<item>Standalone loading or status feedback without a labeled parent region</item>
|
|
10
|
+
<item>Large full-viewport stacks with many simultaneous high-radius blur layers</item>
|
|
11
|
+
<item>Cases where a single uniform backdrop blur is sufficient</item>
|
|
12
|
+
</when_not_to_use>
|
|
13
|
+
<prop name="blur" kind="react">
|
|
14
|
+
<description>Sets the maximum blur radius applied to the first layer at the selected edge.</description>
|
|
15
|
+
</prop>
|
|
16
|
+
<prop name="direction" kind="react">
|
|
17
|
+
<description>Selects the edge where maximum blur starts and fades toward the opposite edge.</description>
|
|
18
|
+
</prop>
|
|
19
|
+
<prop name="easing" kind="react">
|
|
20
|
+
<description>Selects the easing curve used to distribute blur factors across internal layers.</description>
|
|
21
|
+
</prop>
|
|
22
|
+
<prop name="steps" kind="react">
|
|
23
|
+
<description>Sets the number of internal blur layers. Values are clamped to `2..16`.</description>
|
|
24
|
+
</prop>
|
|
25
|
+
<css_var suffix="amount">
|
|
26
|
+
<description>Sets the maximum blur radius applied to the first layer at the selected edge.</description>
|
|
27
|
+
</css_var>
|
|
28
|
+
</props>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<usage surface="progressive-blur">
|
|
3
|
+
<do>Edge scrims on cards, sheets, heroes, or scroll regions where content should fade into blur</do>
|
|
4
|
+
<do>Glass or vibrant surfaces that need directional legibility without a hard blur cutoff</do>
|
|
5
|
+
<do>Decorative atmosphere where the parent owns semantics and layout positioning</do>
|
|
6
|
+
<dont>Stacking many full-viewport ProgressiveBlur instances on one screen</dont>
|
|
7
|
+
<dont>Driving layout size or scroll behavior from inside the overlay component</dont>
|
|
8
|
+
<dont>Embedding layout positioning rules inside the component stylesheet</dont>
|
|
9
|
+
<dont>Leaving the ProgressiveBlur root `position: static` so absolute layers escape the intended overlay box</dont>
|
|
10
|
+
</usage>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<a11y surface="radio">
|
|
3
|
+
<rule>Wrap options in RadioGroup so the group exposes a shared name</rule>
|
|
4
|
+
<rule>Provide visible label or aria-label on each option so radios have accessible names</rule>
|
|
5
|
+
<rule>Surface group invalid state and error copy through Field.Root and Fieldset, not individual Radio options</rule>
|
|
6
|
+
</a11y>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<meta id="radio" title="Radio" category="form" shared_contract="radio">
|
|
3
|
+
<summary>Mutually exclusive choice within a RadioGroup, with optional per-option label and helper text.</summary>
|
|
4
|
+
<exports>
|
|
5
|
+
<export name="Radio" />
|
|
6
|
+
</exports>
|
|
7
|
+
<related>
|
|
8
|
+
<ref id="fieldset" />
|
|
9
|
+
<ref id="checkbox" />
|
|
10
|
+
<ref id="surface" />
|
|
11
|
+
<ref id="stack" />
|
|
12
|
+
</related>
|
|
13
|
+
<units>
|
|
14
|
+
<unit kind="a11y" href="a11y.xml" />
|
|
15
|
+
<unit kind="props" href="props.xml" />
|
|
16
|
+
<unit kind="usage" href="usage.xml" />
|
|
17
|
+
<unit kind="patterns" href="patterns.xml" />
|
|
18
|
+
</units>
|
|
19
|
+
<base_ui href="https://base-ui.com/react/components/radio#api-reference" />
|
|
20
|
+
</meta>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<patterns surface="radio">
|
|
3
|
+
<example title="Radio structure">
|
|
4
|
+
<tsx><![CDATA[<RadioGroup>
|
|
5
|
+
<Radio value="…" label="…" />
|
|
6
|
+
</RadioGroup>]]></tsx>
|
|
7
|
+
<notes>Public assembly hint from legacy guide; not API authority.</notes>
|
|
8
|
+
</example>
|
|
9
|
+
</patterns>
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<props surface="radio">
|
|
3
|
+
<when_to_use>
|
|
4
|
+
<item>Single selection from a small set of related options inside RadioGroup</item>
|
|
5
|
+
<item>RadioGroup alone inside Field.Root when each Radio has its own label and no shared group legend is needed</item>
|
|
6
|
+
<item>Field.Root > Fieldset render={<RadioGroup<Value> />} when the group needs a shared legend, description, or error</item>
|
|
7
|
+
<item>Card-style or custom layouts where each option is wrapped in Surface or consumer markup</item>
|
|
8
|
+
<item>Typed option unions with RadioGroup<'ssd' | 'hdd'> for value, defaultValue, and onValueChange safety</item>
|
|
9
|
+
</when_to_use>
|
|
10
|
+
<when_not_to_use>
|
|
11
|
+
<item>Independent boolean toggles (use Checkbox or Switch)</item>
|
|
12
|
+
<item>Multi-select sets (use CheckboxGroup)</item>
|
|
13
|
+
<item>Options rendered outside a RadioGroup wrapper</item>
|
|
14
|
+
<item>Assuming Fieldset is mandatory for every RadioGroup — add Fieldset only for shared legend or group copy</item>
|
|
15
|
+
<item>Group legend, description, or validation on RadioGroup props — use Field.Root and Fieldset instead</item>
|
|
16
|
+
</when_not_to_use>
|
|
17
|
+
<prop name="description" kind="react">
|
|
18
|
+
<description>Helper copy rendered with `Field.Description` and `Text` for this option.</description>
|
|
19
|
+
</prop>
|
|
20
|
+
<prop name="hPadding" kind="react">
|
|
21
|
+
<description>Sets inline padding using one token for both sides or a `[start, end]` tuple.</description>
|
|
22
|
+
</prop>
|
|
23
|
+
<prop name="label" kind="react">
|
|
24
|
+
<description>Visible label rendered with shared internal `FieldLabel`.</description>
|
|
25
|
+
</prop>
|
|
26
|
+
<prop name="size" kind="react">
|
|
27
|
+
<description>Controls the visual radio size.</description>
|
|
28
|
+
</prop>
|
|
29
|
+
<prop name="vPadding" kind="react">
|
|
30
|
+
<description>Sets block padding using one token for both sides or a `[start, end]` tuple.</description>
|
|
31
|
+
</prop>
|
|
32
|
+
<css_var suffix="background">
|
|
33
|
+
<description>Radio control background color.</description>
|
|
34
|
+
</css_var>
|
|
35
|
+
<css_var suffix="border-color">
|
|
36
|
+
<description>Radio control border color; resting default is transparent (same as Checkbox); checked, invalid, and disabled states override.</description>
|
|
37
|
+
</css_var>
|
|
38
|
+
<css_var suffix="indicator-color">
|
|
39
|
+
<description>Radio selected-disk indicator color.</description>
|
|
40
|
+
</css_var>
|
|
41
|
+
<css_var suffix="size">
|
|
42
|
+
<description>Radio control size; size presets adjust footprint.</description>
|
|
43
|
+
</css_var>
|
|
44
|
+
</props>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<usage surface="radio">
|
|
3
|
+
<do>Single selection from a small set of related options inside RadioGroup</do>
|
|
4
|
+
<do>RadioGroup alone inside Field.Root when each Radio has its own label and no shared group legend is needed</do>
|
|
5
|
+
<do>Field.Root > Fieldset render={<RadioGroup<Value> />} when the group needs a shared legend, description, or error</do>
|
|
6
|
+
<do>Card-style or custom layouts where each option is wrapped in Surface or consumer markup</do>
|
|
7
|
+
<do>Typed option unions with RadioGroup<'ssd' | 'hdd'> for value, defaultValue, and onValueChange safety</do>
|
|
8
|
+
<dont>Rendering Radio outside RadioGroup</dont>
|
|
9
|
+
<dont>Putting invalid or error on a single Radio instead of the enclosing Field.Root and Fieldset</dont>
|
|
10
|
+
<dont>Omitting the RadioGroup generic when option value props form a restricted union</dont>
|
|
11
|
+
<dont>Importing @viraui/react/radio/radio.css or other component CSS subpaths in consumer bootstrap</dont>
|
|
12
|
+
</usage>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<a11y surface="select">
|
|
3
|
+
<rule>Provide label or aria-label on the trigger so the field has an accessible name</rule>
|
|
4
|
+
<rule>Wire description and error copy through the field pattern so assistive tech gets helper text</rule>
|
|
5
|
+
<rule>Keep list options keyboard reachable; do not trap focus outside the popup pattern</rule>
|
|
6
|
+
</a11y>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<meta id="select" title="Select" category="form" shared_contract="select">
|
|
3
|
+
<summary>Field-wrapped single-select dropdown with grouped options and field copy.</summary>
|
|
4
|
+
<exports>
|
|
5
|
+
<export name="Select" />
|
|
6
|
+
</exports>
|
|
7
|
+
<related>
|
|
8
|
+
<ref id="autocomplete" />
|
|
9
|
+
<ref id="fieldset" />
|
|
10
|
+
<ref id="textfield" />
|
|
11
|
+
<ref id="stack" />
|
|
12
|
+
<ref id="surface" />
|
|
13
|
+
</related>
|
|
14
|
+
<units>
|
|
15
|
+
<unit kind="a11y" href="a11y.xml" />
|
|
16
|
+
<unit kind="props" href="props.xml" />
|
|
17
|
+
<unit kind="usage" href="usage.xml" />
|
|
18
|
+
<unit kind="patterns" href="patterns.xml" />
|
|
19
|
+
</units>
|
|
20
|
+
<base_ui href="https://base-ui.com/react/components/select#api-reference" />
|
|
21
|
+
</meta>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<patterns surface="select">
|
|
3
|
+
<example title="Select structure">
|
|
4
|
+
<tsx><![CDATA[<Select>
|
|
5
|
+
<Select.Option value="…">…</Select.Option>
|
|
6
|
+
<Select.Group label="…">
|
|
7
|
+
<Select.Option value="…">…</Select.Option>
|
|
8
|
+
</Select.Group>
|
|
9
|
+
<Select.Separator />
|
|
10
|
+
</Select>]]></tsx>
|
|
11
|
+
<notes>Public assembly hint from legacy guide; not API authority.</notes>
|
|
12
|
+
</example>
|
|
13
|
+
</patterns>
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<props surface="select">
|
|
3
|
+
<when_to_use>
|
|
4
|
+
<item>Choose one value from a predefined list with label and helper copy</item>
|
|
5
|
+
<item>Grouped or separated option lists</item>
|
|
6
|
+
<item>Rich option rows with a leading decorative addon and multi-line label content</item>
|
|
7
|
+
<item>Trigger chrome aligned with Textfield control shell</item>
|
|
8
|
+
<item>Select fields inside Fieldset when they share a section legend with other inputs</item>
|
|
9
|
+
<item>Custom portal host (iframe preview, shadow root, or app overlay root) via `container` on the portal-owning public part</item>
|
|
10
|
+
</when_to_use>
|
|
11
|
+
<when_not_to_use>
|
|
12
|
+
<item>Multiple selection</item>
|
|
13
|
+
<item>Free-form filterable suggestions — use Autocomplete</item>
|
|
14
|
+
<item>Combobox selection state, or custom anchor positioning</item>
|
|
15
|
+
<item>Wrapping a lone Select in Fieldset when its own label is sufficient</item>
|
|
16
|
+
</when_not_to_use>
|
|
17
|
+
<prop name="addon" kind="react">
|
|
18
|
+
<description>Trigger addon rendered inside `Select.Icon`. Pass any React node; use a named icon from `@viraui/icons/react` for content icons.</description>
|
|
19
|
+
</prop>
|
|
20
|
+
<prop name="alignListWithTrigger" kind="react">
|
|
21
|
+
<description>When `true`, aligns the list popup width with the trigger via Base UI `alignItemWithTrigger`. Prefer `false` when options use a leading `addon`.</description>
|
|
22
|
+
</prop>
|
|
23
|
+
<prop name="container" kind="react">
|
|
24
|
+
<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).</description>
|
|
25
|
+
</prop>
|
|
26
|
+
<prop name="description" kind="react">
|
|
27
|
+
<description>Helper copy rendered with `Field.Description` and `Text` while the field is valid.</description>
|
|
28
|
+
</prop>
|
|
29
|
+
<prop name="error" kind="react">
|
|
30
|
+
<description>Error copy rendered with `Field.Error` and `Text` in the same slot as `description`. Replaces description while the field is invalid and dirty.</description>
|
|
31
|
+
</prop>
|
|
32
|
+
<prop name="Group.label" kind="react">
|
|
33
|
+
<description>Accessible group label rendered with `Select.GroupLabel`.</description>
|
|
34
|
+
</prop>
|
|
35
|
+
<prop name="label" kind="react">
|
|
36
|
+
<description>Visible label rendered with shared internal `FieldLabel`.</description>
|
|
37
|
+
</prop>
|
|
38
|
+
<prop name="modal" kind="react">
|
|
39
|
+
<description>When `true`, open select locks page scroll and blocks outside pointer interaction (Base UI modal). Vira defaults to non-modal so the page stays scrollable.</description>
|
|
40
|
+
</prop>
|
|
41
|
+
<prop name="Option.addon" kind="react">
|
|
42
|
+
<description>Decorative leading node rendered before the option label.</description>
|
|
43
|
+
</prop>
|
|
44
|
+
<prop name="Option.addonAlign" kind="react">
|
|
45
|
+
<description>Vertical alignment of the addon relative to the option label row.</description>
|
|
46
|
+
</prop>
|
|
47
|
+
<prop name="Option.indicator" kind="react">
|
|
48
|
+
<description>Custom indicator node rendered when the option is selected.</description>
|
|
49
|
+
</prop>
|
|
50
|
+
<prop name="placeholder" kind="react">
|
|
51
|
+
<description>Placeholder text shown in the trigger when no value is selected.</description>
|
|
52
|
+
</prop>
|
|
53
|
+
<prop name="ref" kind="react">
|
|
54
|
+
<description>Ref forwarded to the select trigger button.</description>
|
|
55
|
+
</prop>
|
|
56
|
+
<css_var suffix="control-group-background">
|
|
57
|
+
<description>Trigger background fill.</description>
|
|
58
|
+
</css_var>
|
|
59
|
+
<css_var suffix="control-group-border-color">
|
|
60
|
+
<description>Trigger border color; invalid state overrides.</description>
|
|
61
|
+
</css_var>
|
|
62
|
+
<css_var suffix="control-group-border-radius">
|
|
63
|
+
<description>Trigger corner radius.</description>
|
|
64
|
+
</css_var>
|
|
65
|
+
<css_var suffix="control-group-color">
|
|
66
|
+
<description>Trigger text and icon color.</description>
|
|
67
|
+
</css_var>
|
|
68
|
+
<css_var suffix="input-height">
|
|
69
|
+
<description>Select trigger block size.</description>
|
|
70
|
+
</css_var>
|
|
71
|
+
<css_var suffix="list-border-radius">
|
|
72
|
+
<description>list border radius custom property on the component root.</description>
|
|
73
|
+
</css_var>
|
|
74
|
+
<css_var suffix="list-padding">
|
|
75
|
+
<description>list padding custom property on the component root.</description>
|
|
76
|
+
</css_var>
|
|
77
|
+
<css_var suffix="trigger-padding-inline-end">
|
|
78
|
+
<description>Trigger inline-end padding.</description>
|
|
79
|
+
</css_var>
|
|
80
|
+
<css_var suffix="trigger-padding-inline-start">
|
|
81
|
+
<description>Trigger inline-start padding.</description>
|
|
82
|
+
</css_var>
|
|
83
|
+
</props>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<usage surface="select">
|
|
3
|
+
<do>Choose one value from a predefined list with label and helper copy</do>
|
|
4
|
+
<do>Grouped or separated option lists</do>
|
|
5
|
+
<do>Rich option rows with a leading decorative addon and multi-line label content</do>
|
|
6
|
+
<do>Trigger chrome aligned with Textfield control shell</do>
|
|
7
|
+
<do>Select fields inside Fieldset when they share a section legend with other inputs</do>
|
|
8
|
+
<do>Custom portal host (iframe preview, shadow root, or app overlay root) via `container` on the portal-owning public part</do>
|
|
9
|
+
<dont>Expecting multi-select or combobox behavior</dont>
|
|
10
|
+
<dont>Leaving the trigger without label or aria-label</dont>
|
|
11
|
+
<dont>Never set the size prop (if present) of Buttons, IconButtons or other interactive elements passed as addon other than small</dont>
|
|
12
|
+
<dont>Using the Select component as a combobox, use Autocomplete instead.</dont>
|
|
13
|
+
<dont>Leaving alignListWithTrigger enabled when options have a leading addon</dont>
|
|
14
|
+
</usage>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<a11y surface="separator">
|
|
3
|
+
<rule>Standalone line is a native hr (implicit separator); orientation is visual via data-separator-orientation and Stack direction</rule>
|
|
4
|
+
<rule>Menu.Separator / Select.Separator own a11y through Base UI (Menu: role separator + aria-orientation; Select listbox: role presentation)</rule>
|
|
5
|
+
<rule>Use render to swap the line root element when needed</rule>
|
|
6
|
+
</a11y>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<meta id="separator" title="Separator" category="layout" shared_contract="separator">
|
|
3
|
+
<summary>Thematic or content divider with horizontal or vertical orientation, token padding, and preset line thickness.</summary>
|
|
4
|
+
<exports>
|
|
5
|
+
<export name="Separator" />
|
|
6
|
+
</exports>
|
|
7
|
+
<related>
|
|
8
|
+
<ref id="stack" />
|
|
9
|
+
<ref id="surface" />
|
|
10
|
+
<ref id="select" />
|
|
11
|
+
</related>
|
|
12
|
+
<units>
|
|
13
|
+
<unit kind="a11y" href="a11y.xml" />
|
|
14
|
+
<unit kind="props" href="props.xml" />
|
|
15
|
+
<unit kind="usage" href="usage.xml" />
|
|
16
|
+
<unit kind="patterns" href="patterns.xml" />
|
|
17
|
+
</units>
|
|
18
|
+
</meta>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<props surface="separator">
|
|
3
|
+
<when_to_use>
|
|
4
|
+
<item>Dividing sections within a page or panel</item>
|
|
5
|
+
<item>Vertical dividers in toolbars, menus, or button groups</item>
|
|
6
|
+
<item>Separating list items or stacked content blocks</item>
|
|
7
|
+
</when_to_use>
|
|
8
|
+
<when_not_to_use>
|
|
9
|
+
<item>Select dropdown option dividers — use Select.Separator</item>
|
|
10
|
+
<item>Surface borders or card outlines — use Surface border props</item>
|
|
11
|
+
</when_not_to_use>
|
|
12
|
+
<prop name="hPadding" kind="react">
|
|
13
|
+
<description>Sets inline padding on the Stack wrapper using one token for both sides or a `[start, end]` tuple.</description>
|
|
14
|
+
</prop>
|
|
15
|
+
<prop name="orientation" kind="react">
|
|
16
|
+
<description>Sets the separator line direction.</description>
|
|
17
|
+
</prop>
|
|
18
|
+
<prop name="ref" kind="react">
|
|
19
|
+
<description>Ref forwarded to the rendered line root element.</description>
|
|
20
|
+
</prop>
|
|
21
|
+
<prop name="render" kind="react">
|
|
22
|
+
<description>Replaces the default `hr` line root using Base UI render semantics.</description>
|
|
23
|
+
</prop>
|
|
24
|
+
<prop name="size" kind="react">
|
|
25
|
+
<description>Sets the line thickness preset.</description>
|
|
26
|
+
</prop>
|
|
27
|
+
<prop name="variant" kind="react">
|
|
28
|
+
<description>Sets the separator line variant through `--vui-separator-border-style`.</description>
|
|
29
|
+
</prop>
|
|
30
|
+
<prop name="vPadding" kind="react">
|
|
31
|
+
<description>Sets block padding on the Stack wrapper using one token for both sides or a `[start, end]` tuple.</description>
|
|
32
|
+
</prop>
|
|
33
|
+
<css_var suffix="border-style">
|
|
34
|
+
<description>Separator line border style.</description>
|
|
35
|
+
</css_var>
|
|
36
|
+
<css_var suffix="size">
|
|
37
|
+
<description>Separator line thickness.</description>
|
|
38
|
+
</css_var>
|
|
39
|
+
</props>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<usage surface="separator">
|
|
3
|
+
<do>Dividing sections within a page or panel</do>
|
|
4
|
+
<do>Vertical dividers in toolbars, menus, or button groups</do>
|
|
5
|
+
<do>Separating list items or stacked content blocks</do>
|
|
6
|
+
<dont>Using Select.Separator for general layout dividers</dont>
|
|
7
|
+
<dont>Replacing Surface borders with Separator for container chrome</dont>
|
|
8
|
+
</usage>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<a11y surface="shimmer">
|
|
3
|
+
<rule>Shimmer renders real text content — do not mark it aria-hidden</rule>
|
|
4
|
+
<rule>Announce loading on the surrounding region with aria-busy or live text</rule>
|
|
5
|
+
<rule>Reduced motion disables the sweep and restores normal text rendering</rule>
|
|
6
|
+
</a11y>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<meta id="shimmer" title="Shimmer" category="effect" shared_contract="shimmer">
|
|
3
|
+
<summary>Decorative inline text shimmer that inherits typography and color from a parent text primitive.</summary>
|
|
4
|
+
<exports>
|
|
5
|
+
<export name="Shimmer" />
|
|
6
|
+
</exports>
|
|
7
|
+
<related>
|
|
8
|
+
<ref id="text" />
|
|
9
|
+
<ref id="title" />
|
|
10
|
+
<ref id="skeleton" />
|
|
11
|
+
</related>
|
|
12
|
+
<units>
|
|
13
|
+
<unit kind="a11y" href="a11y.xml" />
|
|
14
|
+
<unit kind="props" href="props.xml" />
|
|
15
|
+
<unit kind="usage" href="usage.xml" />
|
|
16
|
+
<unit kind="patterns" href="patterns.xml" />
|
|
17
|
+
</units>
|
|
18
|
+
</meta>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<props surface="shimmer">
|
|
3
|
+
<when_to_use>
|
|
4
|
+
<item>Loading placeholder copy inside Text or Title</item>
|
|
5
|
+
<item>Animated text shimmer while awaiting async content</item>
|
|
6
|
+
<item>Muted loading labels that keep the final text dimensions</item>
|
|
7
|
+
</when_to_use>
|
|
8
|
+
<when_not_to_use>
|
|
9
|
+
<item>Block or fixed-dimension placeholders without text content</item>
|
|
10
|
+
<item>Standalone accessible loading status without a surrounding aria-busy region</item>
|
|
11
|
+
<item>Replacing Skeleton for non-text layout placeholders</item>
|
|
12
|
+
</when_not_to_use>
|
|
13
|
+
<prop name="angle" kind="react">
|
|
14
|
+
<description>Sets the shimmer gradient angle offset using any valid CSS angle string.</description>
|
|
15
|
+
</prop>
|
|
16
|
+
<prop name="duration" kind="react">
|
|
17
|
+
<description>Sets the shimmer sweep duration using any valid CSS time string.</description>
|
|
18
|
+
</prop>
|
|
19
|
+
<prop name="highlightColor" kind="react">
|
|
20
|
+
<description>Overrides the shimmer highlight color when relative base lightness tuning is not used.</description>
|
|
21
|
+
</prop>
|
|
22
|
+
<prop name="ref" kind="react">
|
|
23
|
+
<description>Ref forwarded to the rendered shimmer root element.</description>
|
|
24
|
+
</prop>
|
|
25
|
+
<prop name="spread" kind="react">
|
|
26
|
+
<description>Sets the shimmer highlight spread using any valid CSS length string.</description>
|
|
27
|
+
</prop>
|
|
28
|
+
<css_var suffix="angle">
|
|
29
|
+
<description>Shimmer gradient angle offset.</description>
|
|
30
|
+
</css_var>
|
|
31
|
+
<css_var suffix="duration">
|
|
32
|
+
<description>Shimmer animation duration.</description>
|
|
33
|
+
</css_var>
|
|
34
|
+
<css_var suffix="highlight">
|
|
35
|
+
<description>Shimmer highlight color.</description>
|
|
36
|
+
</css_var>
|
|
37
|
+
<css_var suffix="spread">
|
|
38
|
+
<description>Shimmer highlight spread width.</description>
|
|
39
|
+
</css_var>
|
|
40
|
+
</props>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<usage surface="shimmer">
|
|
3
|
+
<do>Loading placeholder copy inside Text or Title</do>
|
|
4
|
+
<do>Animated text shimmer while awaiting async content</do>
|
|
5
|
+
<do>Muted loading labels that keep the final text dimensions</do>
|
|
6
|
+
<dont>Putting aria-busy on Shimmer instead of the surrounding loading region</dont>
|
|
7
|
+
<dont>Using Shimmer without children text content</dont>
|
|
8
|
+
<dont>Using Shimmer for block placeholders better served by Skeleton</dont>
|
|
9
|
+
</usage>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<a11y surface="skeleton">
|
|
3
|
+
<rule>Skeleton and Skeleton.Overlay are decorative (aria-hidden) — announce loading on the surrounding region with aria-busy or live text</rule>
|
|
4
|
+
<rule>Overlay children stay aria-hidden; the parent loading region owns busy state</rule>
|
|
5
|
+
<rule>Do not put aria-busy on Skeleton itself</rule>
|
|
6
|
+
<rule>Replace skeleton with real content as soon as data is ready</rule>
|
|
7
|
+
<rule>prefers-reduced-motion disables the pulse animation and keeps a static surface</rule>
|
|
8
|
+
</a11y>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<meta id="skeleton" title="Skeleton" category="feedback" shared_contract="skeleton">
|
|
3
|
+
<summary>Decorative opacity pulse block sized by props, or Overlay sized by hidden child content.</summary>
|
|
4
|
+
<exports>
|
|
5
|
+
<export name="Skeleton" />
|
|
6
|
+
</exports>
|
|
7
|
+
<related>
|
|
8
|
+
<ref id="avatar" />
|
|
9
|
+
<ref id="shimmer" />
|
|
10
|
+
</related>
|
|
11
|
+
<units>
|
|
12
|
+
<unit kind="a11y" href="a11y.xml" />
|
|
13
|
+
<unit kind="props" href="props.xml" />
|
|
14
|
+
<unit kind="usage" href="usage.xml" />
|
|
15
|
+
<unit kind="patterns" href="patterns.xml" />
|
|
16
|
+
</units>
|
|
17
|
+
</meta>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<patterns surface="skeleton">
|
|
3
|
+
<example title="Skeleton structure">
|
|
4
|
+
<tsx><![CDATA[<Skeleton />
|
|
5
|
+
<Skeleton.Overlay>…</Skeleton.Overlay>]]></tsx>
|
|
6
|
+
<notes>Public assembly hint from legacy guide; not API authority.</notes>
|
|
7
|
+
</example>
|
|
8
|
+
</patterns>
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<props surface="skeleton">
|
|
3
|
+
<when_to_use>
|
|
4
|
+
<item>Fixed-dimension pulse blocks while content loads</item>
|
|
5
|
+
<item>Avatar or media placeholders with explicit width and height</item>
|
|
6
|
+
<item>Skeleton.Overlay when placeholder layout should match incoming typography without layout shift</item>
|
|
7
|
+
<item>View-transition wipe reveal for `Skeleton.Overlay`, with `viewTransitionName: 'skeleton-overlay'` on the wrapper around skeleton+loaded content (prefer CSS class, not inline style)</item>
|
|
8
|
+
</when_to_use>
|
|
9
|
+
<when_not_to_use>
|
|
10
|
+
<item>Inline text shimmer effects (use Shimmer)</item>
|
|
11
|
+
<item>Standalone accessible loading status without a surrounding aria-busy region</item>
|
|
12
|
+
</when_not_to_use>
|
|
13
|
+
<prop name="animate" kind="react">
|
|
14
|
+
<description>Enables the opacity pulse animation.</description>
|
|
15
|
+
</prop>
|
|
16
|
+
<prop name="radius" kind="react">
|
|
17
|
+
<description>Sets the corner radius from the Vira radius token scale.</description>
|
|
18
|
+
</prop>
|
|
19
|
+
<prop name="duration" kind="react">
|
|
20
|
+
<description>Sets the pulse duration from the Vira duration token scale.</description>
|
|
21
|
+
</prop>
|
|
22
|
+
<prop name="height" kind="react">
|
|
23
|
+
<description>Sets the skeleton block size using any valid CSS size string.</description>
|
|
24
|
+
</prop>
|
|
25
|
+
<prop name="minHeight" kind="react">
|
|
26
|
+
<description>Sets the skeleton minimum block size using any valid CSS size string.</description>
|
|
27
|
+
</prop>
|
|
28
|
+
<prop name="minWidth" kind="react">
|
|
29
|
+
<description>Sets the skeleton minimum inline size using any valid CSS size string.</description>
|
|
30
|
+
</prop>
|
|
31
|
+
<prop name="Overlay.animate" kind="react">
|
|
32
|
+
<description>Enables the opacity pulse animation on the overlay root.</description>
|
|
33
|
+
</prop>
|
|
34
|
+
<prop name="Overlay.radius" kind="react">
|
|
35
|
+
<description>Sets the overlay corner radius from the Vira radius token scale.</description>
|
|
36
|
+
</prop>
|
|
37
|
+
<prop name="Overlay.children" kind="react">
|
|
38
|
+
<description>Content whose layout and dimensions define the overlay bounding box.</description>
|
|
39
|
+
</prop>
|
|
40
|
+
<prop name="Overlay.duration" kind="react">
|
|
41
|
+
<description>Sets the pulse duration from the Vira duration token scale.</description>
|
|
42
|
+
</prop>
|
|
43
|
+
<prop name="Overlay.ref" kind="react">
|
|
44
|
+
<description>Ref forwarded to the rendered overlay root element.</description>
|
|
45
|
+
</prop>
|
|
46
|
+
<prop name="ref" kind="react">
|
|
47
|
+
<description>Ref forwarded to the rendered skeleton root element.</description>
|
|
48
|
+
</prop>
|
|
49
|
+
<prop name="width" kind="react">
|
|
50
|
+
<description>Sets the skeleton inline size using any valid CSS size string.</description>
|
|
51
|
+
</prop>
|
|
52
|
+
<css_var suffix="background">
|
|
53
|
+
<description>Skeleton placeholder background color.</description>
|
|
54
|
+
</css_var>
|
|
55
|
+
<css_var suffix="block-size">
|
|
56
|
+
<description>Skeleton block size.</description>
|
|
57
|
+
</css_var>
|
|
58
|
+
<css_var suffix="border-radius">
|
|
59
|
+
<description>Skeleton corner radius.</description>
|
|
60
|
+
</css_var>
|
|
61
|
+
<css_var suffix="duration">
|
|
62
|
+
<description>Pulse duration.</description>
|
|
63
|
+
</css_var>
|
|
64
|
+
<css_var suffix="inline-size">
|
|
65
|
+
<description>Skeleton inline size.</description>
|
|
66
|
+
</css_var>
|
|
67
|
+
<css_var suffix="min-block-size">
|
|
68
|
+
<description>Skeleton minimum block size.</description>
|
|
69
|
+
</css_var>
|
|
70
|
+
<css_var suffix="min-inline-size">
|
|
71
|
+
<description>Skeleton minimum inline size.</description>
|
|
72
|
+
</css_var>
|
|
73
|
+
</props>
|