@viraui/react 2026.7.1 → 2026.9.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 +9 -3
- package/dist/components/button/button.css +1 -1
- package/dist/components/direction-provider/index.d.ts +2 -0
- package/dist/components/direction-provider/index.js +2 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/menu/menu-popup.d.ts +2 -2
- package/dist/components/menu/menu.css +1 -1
- package/dist/components/progressive-blur/progressive-blur.css +1 -1
- package/dist/components/prose/prose.d.ts +4 -1
- package/dist/components/select/select-group.js +1 -1
- package/dist/components/select/select.css +1 -1
- package/dist/components/select/select.js +4 -1
- package/dist/components/spinner/spinner.d.ts +6 -1
- package/dist/components/spinner/variants/arc.css +1 -0
- package/dist/components/spinner/variants/arc.d.ts +2 -0
- package/dist/components/spinner/variants/arc.js +19 -0
- package/dist/components/spinner/variants/arc.module.js +8 -0
- package/dist/components/spinner/variants/atom.css +1 -0
- package/dist/components/spinner/variants/atom.d.ts +6 -0
- package/dist/components/spinner/variants/atom.js +40 -0
- package/dist/components/spinner/variants/atom.module.js +8 -0
- package/dist/components/spinner/variants/blocks.css +1 -0
- package/dist/components/spinner/variants/blocks.d.ts +2 -0
- package/dist/components/spinner/variants/blocks.js +25 -0
- package/dist/components/spinner/variants/blocks.module.js +8 -0
- package/dist/components/spinner/variants/bouncing-dots.css +1 -0
- package/dist/components/spinner/variants/bouncing-dots.d.ts +2 -0
- package/dist/components/spinner/variants/bouncing-dots.js +21 -0
- package/dist/components/spinner/variants/bouncing-dots.module.js +8 -0
- package/dist/components/spinner/variants/cascade.css +1 -0
- package/dist/components/spinner/variants/cascade.d.ts +2 -0
- package/dist/components/spinner/variants/cascade.js +34 -0
- package/dist/components/spinner/variants/cascade.module.js +8 -0
- package/dist/components/spinner/variants/circular-dots.css +1 -0
- package/dist/components/spinner/variants/circular-dots.d.ts +2 -0
- package/dist/components/spinner/variants/circular-dots.js +26 -0
- package/dist/components/spinner/variants/circular-dots.module.js +8 -0
- package/dist/components/spinner/variants/classic-v2.css +1 -0
- package/dist/components/spinner/variants/classic-v2.d.ts +2 -0
- package/dist/components/spinner/variants/classic-v2.js +24 -0
- package/dist/components/spinner/variants/classic-v2.module.js +8 -0
- package/dist/components/spinner/variants/classic.css +1 -0
- package/dist/components/spinner/variants/classic.d.ts +2 -0
- package/dist/components/spinner/variants/classic.js +22 -0
- package/dist/components/spinner/variants/classic.module.js +8 -0
- package/dist/components/spinner/variants/clock.css +1 -0
- package/dist/components/spinner/variants/clock.d.ts +2 -0
- package/dist/components/spinner/variants/clock.js +18 -0
- package/dist/components/spinner/variants/clock.module.js +8 -0
- package/dist/components/spinner/variants/comet.css +1 -0
- package/dist/components/spinner/variants/comet.d.ts +2 -0
- package/dist/components/spinner/variants/comet.js +33 -0
- package/dist/components/spinner/variants/comet.module.js +10 -0
- package/dist/components/spinner/variants/compass.css +1 -0
- package/dist/components/spinner/variants/compass.d.ts +2 -0
- package/dist/components/spinner/variants/compass.js +16 -0
- package/dist/components/spinner/variants/compass.module.js +8 -0
- package/dist/components/spinner/variants/dual.css +1 -0
- package/dist/components/spinner/variants/dual.d.ts +2 -0
- package/dist/components/spinner/variants/dual.js +25 -0
- package/dist/components/spinner/variants/dual.module.js +10 -0
- package/dist/components/spinner/variants/eclipse.css +1 -0
- package/dist/components/spinner/variants/eclipse.d.ts +6 -0
- package/dist/components/spinner/variants/eclipse.js +21 -0
- package/dist/components/spinner/variants/eclipse.module.js +9 -0
- package/dist/components/spinner/variants/flip.css +1 -0
- package/dist/components/spinner/variants/flip.d.ts +2 -0
- package/dist/components/spinner/variants/flip.js +17 -0
- package/dist/components/spinner/variants/flip.module.js +8 -0
- package/dist/components/spinner/variants/gather.css +1 -0
- package/dist/components/spinner/variants/gather.d.ts +2 -0
- package/dist/components/spinner/variants/gather.js +50 -0
- package/dist/components/spinner/variants/gather.module.js +11 -0
- package/dist/components/spinner/variants/index.d.ts +9 -1
- package/dist/components/spinner/variants/index.js +96 -10
- package/dist/components/spinner/variants/leap.css +1 -0
- package/dist/components/spinner/variants/leap.d.ts +6 -0
- package/dist/components/spinner/variants/leap.js +27 -0
- package/dist/components/spinner/variants/leap.module.js +8 -0
- package/dist/components/spinner/variants/linear-dots.css +1 -0
- package/dist/components/spinner/variants/linear-dots.d.ts +2 -0
- package/dist/components/spinner/variants/linear-dots.js +21 -0
- package/dist/components/spinner/variants/linear-dots.module.js +8 -0
- package/dist/components/spinner/variants/loading.css +1 -0
- package/dist/components/spinner/variants/loading.d.ts +2 -0
- package/dist/components/spinner/variants/loading.js +50 -0
- package/dist/components/spinner/variants/loading.module.js +8 -0
- package/dist/components/spinner/variants/morph.css +1 -0
- package/dist/components/spinner/variants/morph.d.ts +2 -0
- package/dist/components/spinner/variants/morph.js +17 -0
- package/dist/components/spinner/variants/morph.module.js +8 -0
- package/dist/components/spinner/variants/orbit.css +1 -0
- package/dist/components/spinner/variants/orbit.d.ts +2 -0
- package/dist/components/spinner/variants/orbit.js +24 -0
- package/dist/components/spinner/variants/orbit.module.js +8 -0
- package/dist/components/spinner/variants/pulse.css +1 -0
- package/dist/components/spinner/variants/pulse.d.ts +2 -0
- package/dist/components/spinner/variants/pulse.js +19 -0
- package/dist/components/spinner/variants/pulse.module.js +8 -0
- package/dist/components/spinner/variants/radar.css +1 -0
- package/dist/components/spinner/variants/radar.d.ts +2 -0
- package/dist/components/spinner/variants/radar.js +53 -0
- package/dist/components/spinner/variants/radar.module.js +8 -0
- package/dist/components/spinner/variants/ring.css +1 -0
- package/dist/components/spinner/variants/ring.d.ts +2 -0
- package/dist/components/spinner/variants/ring.js +24 -0
- package/dist/components/spinner/variants/ring.module.js +8 -0
- package/dist/components/spinner/variants/ripple.css +1 -0
- package/dist/components/spinner/variants/ripple.d.ts +2 -0
- package/dist/components/spinner/variants/ripple.js +23 -0
- package/dist/components/spinner/variants/ripple.module.js +8 -0
- package/dist/components/spinner/variants/slide.css +1 -0
- package/dist/components/spinner/variants/slide.d.ts +2 -0
- package/dist/components/spinner/variants/slide.js +24 -0
- package/dist/components/spinner/variants/slide.module.js +8 -0
- package/dist/components/spinner/variants/snake.css +1 -0
- package/dist/components/spinner/variants/snake.d.ts +2 -0
- package/dist/components/spinner/variants/snake.js +19 -0
- package/dist/components/spinner/variants/snake.module.js +11 -0
- package/dist/components/spinner/variants/swirl.css +1 -0
- package/dist/components/spinner/variants/swirl.d.ts +2 -0
- package/dist/components/spinner/variants/swirl.js +35 -0
- package/dist/components/spinner/variants/swirl.module.js +8 -0
- package/dist/components/spinner/variants/trace.css +1 -0
- package/dist/components/spinner/variants/trace.d.ts +2 -0
- package/dist/components/spinner/variants/trace.js +28 -0
- package/dist/components/spinner/variants/trace.module.js +8 -0
- package/dist/components/spinner/variants/wave.css +1 -0
- package/dist/components/spinner/variants/wave.d.ts +2 -0
- package/dist/components/spinner/variants/wave.js +25 -0
- package/dist/components/spinner/variants/wave.module.js +8 -0
- package/dist/components/stack/stack.css +1 -1
- package/dist/components/stack/stack.d.ts +15 -3
- package/dist/components/stack/stack.js +2 -1
- package/dist/components/surface/surface.css +1 -1
- package/dist/components/text/text.css +1 -1
- package/dist/components/text/text.d.ts +10 -2
- package/dist/components/title/title.d.ts +7 -0
- package/dist/index.js +2 -1
- package/dist/preflight.css +1 -1
- package/dist/specs/PROTOCOL.md +1 -1
- package/dist/specs/activity-hints.xml +4 -4
- package/dist/specs/components/accordion/props.xml +2 -2
- package/dist/specs/components/accordion/usage.xml +2 -0
- package/dist/specs/components/autocomplete/patterns.xml +4 -4
- package/dist/specs/components/autocomplete/props.xml +2 -2
- package/dist/specs/components/autocomplete/usage.xml +1 -1
- package/dist/specs/components/button/patterns.xml +2 -2
- package/dist/specs/components/button/props.xml +4 -4
- package/dist/specs/components/button/usage.xml +2 -1
- package/dist/specs/components/chip/patterns.xml +2 -2
- package/dist/specs/components/chip/props.xml +2 -2
- package/dist/specs/components/chip/usage.xml +2 -0
- package/dist/specs/components/direction-provider/a11y.xml +6 -0
- package/dist/specs/components/direction-provider/meta.xml +20 -0
- package/dist/specs/components/direction-provider/patterns.xml +27 -0
- package/dist/specs/components/direction-provider/props.xml +18 -0
- package/dist/specs/components/direction-provider/usage.xml +10 -0
- package/dist/specs/components/disclosure/patterns.xml +2 -2
- package/dist/specs/components/disclosure/props.xml +2 -2
- package/dist/specs/components/disclosure/usage.xml +2 -0
- package/dist/specs/components/glow/patterns.xml +1 -1
- package/dist/specs/components/grid/patterns.xml +3 -3
- package/dist/specs/components/icon-button/props.xml +4 -4
- package/dist/specs/components/icon-button/usage.xml +3 -1
- package/dist/specs/components/menu/patterns.xml +18 -18
- package/dist/specs/components/menu/props.xml +5 -5
- package/dist/specs/components/menu/usage.xml +3 -1
- package/dist/specs/components/meter/patterns.xml +1 -1
- package/dist/specs/components/progressive-blur/usage.xml +2 -0
- package/dist/specs/components/prose/meta.xml +1 -1
- package/dist/specs/components/prose/patterns.xml +34 -10
- package/dist/specs/components/prose/props.xml +3 -1
- package/dist/specs/components/prose/usage.xml +4 -1
- package/dist/specs/components/select/patterns.xml +2 -2
- package/dist/specs/components/select/props.xml +2 -2
- package/dist/specs/components/select/usage.xml +1 -0
- package/dist/specs/components/slider/patterns.xml +1 -1
- package/dist/specs/components/spinner/props.xml +1 -1
- package/dist/specs/components/spinner/usage.xml +1 -1
- package/dist/specs/components/stack/patterns.xml +102 -4
- package/dist/specs/components/stack/props.xml +9 -3
- package/dist/specs/components/stack/usage.xml +7 -3
- package/dist/specs/components/surface/patterns.xml +3 -3
- package/dist/specs/components/surface/usage.xml +1 -1
- package/dist/specs/components/tabs/patterns.xml +3 -3
- package/dist/specs/components/tabs/props.xml +1 -1
- package/dist/specs/components/tabs/usage.xml +2 -1
- package/dist/specs/components/text/meta.xml +2 -1
- package/dist/specs/components/text/patterns.xml +19 -16
- package/dist/specs/components/text/props.xml +8 -6
- package/dist/specs/components/text/usage.xml +9 -3
- package/dist/specs/components/textfield/patterns.xml +3 -3
- package/dist/specs/components/textfield/props.xml +2 -2
- package/dist/specs/components/textfield/usage.xml +2 -1
- package/dist/specs/components/title/meta.xml +2 -1
- package/dist/specs/components/title/patterns.xml +11 -10
- package/dist/specs/components/title/props.xml +5 -4
- package/dist/specs/components/title/usage.xml +8 -3
- package/dist/specs/components/toggle-button/patterns.xml +8 -8
- package/dist/specs/components/toggle-button/props.xml +3 -3
- package/dist/specs/components/toggle-button/usage.xml +2 -0
- package/dist/specs/components/toggle-group/patterns.xml +3 -3
- package/dist/specs/components/tooltip/patterns.xml +7 -7
- package/dist/specs/foundation/attributes.xml +24 -4
- package/dist/specs/foundation/bootstrap.xml +1 -1
- package/dist/specs/foundation/modules.xml +14 -5
- package/dist/specs/foundation/theme-topics.xml +3 -3
- package/dist/specs/foundation/toggles.xml +3 -3
- package/dist/specs/index.xml +14 -22
- package/dist/specs/patterns/compose-layout-first.xml +1 -1
- package/package.json +2 -2
- package/dist/components/spinner/variants/bars.d.ts +0 -2
- package/dist/components/spinner/variants/bars.js +0 -134
- package/dist/components/spinner/variants/dot-grid.css +0 -1
- package/dist/components/spinner/variants/dot-grid.d.ts +0 -2
- package/dist/components/spinner/variants/dot-grid.js +0 -57
- package/dist/components/spinner/variants/dot-grid.module.js +0 -16
- package/dist/components/spinner/variants/dots.d.ts +0 -2
- package/dist/components/spinner/variants/dots.js +0 -189
- package/dist/specs/patterns/equal-width-actions.xml +0 -22
- package/dist/specs/patterns/page-chrome.xml +0 -34
- package/dist/specs/patterns/stack-as-surface.xml +0 -37
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
render={
|
|
19
19
|
<Surface color={1} border="all" radius="m" vPadding="2xs" hPadding="2xs" aria-label="100%">
|
|
20
20
|
<Stack direction="row" vAlign="center">
|
|
21
|
-
<IconButton aria-label="Zoom out" icon={<Minus aria-hidden
|
|
22
|
-
<IconButton aria-label="Reset zoom" icon={<FocusCenter aria-hidden
|
|
23
|
-
<IconButton aria-label="Zoom in" icon={<Plus aria-hidden
|
|
21
|
+
<IconButton aria-label="Zoom out" icon={<Minus aria-hidden />} variant="flat" />
|
|
22
|
+
<IconButton aria-label="Reset zoom" icon={<FocusCenter aria-hidden />} variant="flat" />
|
|
23
|
+
<IconButton aria-label="Zoom in" icon={<Plus aria-hidden />} variant="flat" />
|
|
24
24
|
</Stack>
|
|
25
25
|
</Surface>
|
|
26
26
|
}
|
|
@@ -40,8 +40,8 @@
|
|
|
40
40
|
aria-label="Shuffle lock"
|
|
41
41
|
pressed={false}
|
|
42
42
|
variant="flat"
|
|
43
|
-
restingIcon={<LockOpen2 aria-hidden
|
|
44
|
-
pressedIcon={<Lock aria-hidden
|
|
43
|
+
restingIcon={<LockOpen2 aria-hidden />}
|
|
44
|
+
pressedIcon={<Lock aria-hidden />}
|
|
45
45
|
/>
|
|
46
46
|
}
|
|
47
47
|
/>
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
delay={50}
|
|
59
59
|
render={
|
|
60
60
|
<span aria-label="Supported by: Chrome, Edge, Firefox">
|
|
61
|
-
<TriangleWarning aria-hidden
|
|
61
|
+
<TriangleWarning aria-hidden color="var(--highlight-yellow)" />
|
|
62
62
|
</span>
|
|
63
63
|
}
|
|
64
64
|
/>
|
|
@@ -103,7 +103,7 @@ const toolbarHandle = Tooltip.createHandle<string>();
|
|
|
103
103
|
closeDelay={200}
|
|
104
104
|
handle={toolbarHandle}
|
|
105
105
|
payload="Duplicate"
|
|
106
|
-
render={<Duplicate
|
|
106
|
+
render={<Duplicate aria-label="Duplicate" />}
|
|
107
107
|
/>
|
|
108
108
|
{/* more Icon triggers with the same handle… */}
|
|
109
109
|
|
|
@@ -138,9 +138,8 @@
|
|
|
138
138
|
<attr name="data-vibrant">
|
|
139
139
|
<presence>boolean attribute; value ignored</presence>
|
|
140
140
|
<effect>
|
|
141
|
-
When the active theme sets --effect-vibrancy, applies vibrancy backdrop-filter (
|
|
142
|
-
Only the
|
|
143
|
-
In built-in themes, the applied backdrop-filter is different based on the active theme mode: light or dark.
|
|
141
|
+
When the active theme sets --effect-vibrancy, applies vibrancy backdrop-filter (blur/saturate). Surface with data-vibrant translucifies its fill via component CSS: it doesn't apply a background color to the element, that still need to be set by the consumer.
|
|
142
|
+
Only the Surface component applies the correct `color` prop based on the presence of the attribute. For custom styles you need to set the background color explicitly if you need one.
|
|
144
143
|
</effect>
|
|
145
144
|
<values>
|
|
146
145
|
<value>(boolean presence)</value>
|
|
@@ -152,6 +151,27 @@
|
|
|
152
151
|
<gotcha>Surface</gotcha>
|
|
153
152
|
<gotcha>--effect-vibrancy</gotcha>
|
|
154
153
|
<gotcha>--vibrancy-blur</gotcha>
|
|
155
|
-
|
|
154
|
+
</attr>
|
|
155
|
+
<attr name="data-layout-fixed">
|
|
156
|
+
<presence>boolean attribute on table elements</presence>
|
|
157
|
+
<effect>Sets table-layout: fixed on the table. Preflight already collapses borders, full inline-size, cell padding, and thead hairline — this only switches layout algorithm.</effect>
|
|
158
|
+
<values>
|
|
159
|
+
<value>(boolean presence)</value>
|
|
160
|
+
</values>
|
|
161
|
+
<when>Column widths must follow the first row / explicit widths instead of content</when>
|
|
162
|
+
<when_not>When auto table layout is already correct</when_not>
|
|
163
|
+
<when_not>Hand-rolling table-layout: fixed in app CSS instead of this attr</when_not>
|
|
164
|
+
<gotcha>Baseline table chrome lives in modules.xml id=baseline — do not reinvent cell padding or collapse.</gotcha>
|
|
165
|
+
</attr>
|
|
166
|
+
<attr name="data-table-separators">
|
|
167
|
+
<presence>boolean attribute on table elements</presence>
|
|
168
|
+
<effect>Draws a 1px base-2 hairline between consecutive body rows (tr + tr). Does not paint under thead (thead already has its own inset rule).</effect>
|
|
169
|
+
<values>
|
|
170
|
+
<value>(boolean presence)</value>
|
|
171
|
+
</values>
|
|
172
|
+
<when>Dense data tables that need row separators without custom border CSS</when>
|
|
173
|
+
<when_not>When thead/body styling without body-row lines is enough</when_not>
|
|
174
|
+
<when_not>Hand-rolling tr + tr border-top / row divider CSS instead of this attr</when_not>
|
|
175
|
+
<gotcha>Separators are body-row only; thead uses a separate inset box-shadow from baseline.</gotcha>
|
|
156
176
|
</attr>
|
|
157
177
|
</attributes>
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
<tree>Toast.Portal > Toast.Viewport > Toast.Banner per toast</tree>
|
|
40
40
|
<next_js>Keep CSS side-effect imports in the Server Component root layout. Put the provider tree in a Client Component that wraps children.</next_js>
|
|
41
41
|
<astro>React context does not cross Astro islands. Providers must live in the same island as the Vira overlays that consume them.</astro>
|
|
42
|
-
<rtl>For RTL menus and popups, wrap with
|
|
42
|
+
<rtl>For RTL menus and popups, wrap with DirectionProvider direction="rtl" from @viraui/react (transparent Base UI re-export) and set dir="rtl" on a portal ancestor (usually html). Opt-in — not part of the Dialog/Tooltip/Toast overlay shell.</rtl>
|
|
43
43
|
</root_providers>
|
|
44
44
|
<next_js_app_router>
|
|
45
45
|
<rule>In Next.js App Router apps, import theme CSS, font CSS, and @viraui/react/preflight.css as JavaScript side-effect imports in root app/layout.tsx; never bootstrap them with CSS @import in globals.css.</rule>
|
|
@@ -19,10 +19,14 @@
|
|
|
19
19
|
</agent_rules>
|
|
20
20
|
|
|
21
21
|
<module id="baseline">
|
|
22
|
-
<purpose>Root document baseline after theme load: rem root from --font-root-size, color/background from --global-*, polarity --is-light-mode, scrollbar and focus-visible ring, reduced-motion, corner-shape gate.</purpose>
|
|
23
|
-
<provides>--is-light-mode; focus ring via --outline*; scrollbar via --scrollbar-*; corner-shape application</provides>
|
|
22
|
+
<purpose>Root document baseline after theme load: rem root from --font-root-size, color/background from --global-*, polarity --is-light-mode, scrollbar and focus-visible ring, reduced-motion, corner-shape gate; plus universal margin/box-sizing reset, body font baseline, media/form/table element resets, and nested-list font-size fix.</purpose>
|
|
23
|
+
<provides>--is-light-mode; focus ring via --outline*; scrollbar via --scrollbar-*; corner-shape application; margin/box-sizing reset; body font family/size/optical sizing; img/svg defaults; button/fieldset unstyled baseline; table collapse/spacing/cell padding/thead rule; data-layout-fixed; data-table-separators; nested ol/ul font-size: initial</provides>
|
|
24
24
|
<use>Theme tokens + data-mode. Query polarity with @container root style(--is-light-mode: black|white). Details: toggles.xml.</use>
|
|
25
|
+
<use>Bare img is block + full inline-size (capped); svg without fill inherits currentcolor. button and fieldset ship unstyled (Vira controls re-skin). table is full-width collapsed with cell padding and thead hairline; opt into fixed layout or body-row separators via attributes.xml.</use>
|
|
26
|
+
<use>Nested lists (ol ul / ul ol) reset font-size so inherited shrink from parent list does not cascade — list chrome itself is typography module.</use>
|
|
25
27
|
<do_not>Replace preflight reset with a second framework reboot. Prefer omitting third-party preflight/reset (setup skill coexistence).</do_not>
|
|
28
|
+
<do_not>Hand-roll table-layout: fixed or body-row hairlines when data-layout-fixed / data-table-separators cover it.</do_not>
|
|
29
|
+
<do_not>Re-apply universal margin:0 / box-sizing:border-box or button/fieldset appearance resets that preflight already owns.</do_not>
|
|
26
30
|
</module>
|
|
27
31
|
<module id="font-scale">
|
|
28
32
|
<purpose>Derives --font-scale-* from theme --font-heading-typescale / --font-body-typescale (pow + round). body-m = 1rem; smaller body steps floored; larger body and display from continuous powers.</purpose>
|
|
@@ -49,10 +53,15 @@
|
|
|
49
53
|
<do_not>Assign --vira-flex-grow / --vira-flex-shrink directly in app CSS — use the data-* attrs.</do_not>
|
|
50
54
|
</module>
|
|
51
55
|
<module id="typography">
|
|
52
|
-
<purpose>Semantic HTML element typography defaults and link chrome opt-out.</purpose>
|
|
53
|
-
<provides>element type defaults; data-no-link-style</provides>
|
|
54
|
-
<use>
|
|
56
|
+
<purpose>Semantic HTML element typography defaults and link chrome opt-out. Preflight already styles bare prose, lists, and inline chrome — agents must not reinvent these as app CSS by default.</purpose>
|
|
57
|
+
<provides>element type defaults for p, small, strong/b, s, address, label/legend, a:any-link, code, kbd, abbr, mark, del, ins, ul, ol, dt, dd; data-no-link-style</provides>
|
|
58
|
+
<use>Prose: p uses body-m size + 1.5 line-height; small scales down; strong/b use wght 700; s is strikethrough + disabled foreground; address is normal style; label/legend inherit font-size.</use>
|
|
59
|
+
<use>Inline chrome: every a:any-link gets interactive color + animated underline unless data-no-link-style is set (attributes.xml). Prose links — including Text/Title render as a — keep it. Chrome components set the attr. Inline code (not inside pre) and kbd get contrast pill chrome; pre code drops the box-shadow. abbr uses dashed primary underline. mark / del / ins get highlight-tinted chips (yellow / red / green).</use>
|
|
60
|
+
<use>Lists: ul gets inline padding + muted ::marker; ol gets muted tabular-nums ::marker. Prefer bare ul/ol/li (or Stack render as list) — do not invent list-style / marker / list padding CSS. Nested-list font-size reset is baseline module.</use>
|
|
61
|
+
<use>Definitions: dt is semibold; dd has zero margin/padding.</use>
|
|
55
62
|
<do_not>Rely on class presence to suppress link styles — use data-no-link-style only.</do_not>
|
|
63
|
+
<do_not>Reinvent list markers, list-style-type, or ul/ol padding when preflight already owns them — unless the consumer expressly asks for an override.</do_not>
|
|
64
|
+
<do_not>Reinvent link underline, inline code/kbd pills, or mark/del/ins highlight chips as app CSS by default.</do_not>
|
|
56
65
|
</module>
|
|
57
66
|
<module id="vibrancy">
|
|
58
67
|
<purpose>Theme-gated backdrop-filter glass on opt-in hosts.</purpose>
|
|
@@ -45,9 +45,9 @@
|
|
|
45
45
|
<agent>Theme-level gates. Runtime polarity/details: toggles.xml. Do not invent alternate effect hooks.</agent>
|
|
46
46
|
</topic>
|
|
47
47
|
<topic id="vibrancy" surface="theme">
|
|
48
|
-
<pattern>--vibrancy-blur
|
|
49
|
-
<summary>Vibrancy glass
|
|
50
|
-
<agent>Theme
|
|
48
|
+
<pattern>--vibrancy-blur</pattern>
|
|
49
|
+
<summary>Vibrancy glass blur amount; numeric value consumed as pixels in data-vibrant backdrop-filter (with fixed saturate).</summary>
|
|
50
|
+
<agent>Theme param for data-vibrant hosts when --effect-vibrancy is on. Do not hand-roll backdrop-filter.</agent>
|
|
51
51
|
</topic>
|
|
52
52
|
<topic id="radius" surface="theme">
|
|
53
53
|
<pattern>--radius-* | --corner-shape</pattern>
|
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
<when>html registers polarity via contrast-color(var(--global-background)) so light backgrounds resolve to black and dark backgrounds to white; container name is root (see core.css).</when>
|
|
6
6
|
<when>data-mode="light" forces --is-light-mode: black and color-scheme: light; data-mode="dark" forces white and color-scheme: dark.</when>
|
|
7
7
|
<when>data-mode="inverted" flips color-scheme against the root value: @container root style(--is-light-mode: black) → dark; style(--is-light-mode: white) → light.</when>
|
|
8
|
-
<when>Component/preflight CSS branches on polarity with @container root style(--is-light-mode: black) or white — e.g.
|
|
8
|
+
<when>Component/preflight CSS branches on polarity with @container root style(--is-light-mode: black) or white — e.g. holofoil mix-blend, Button/Chip secondary fills. Do not invent alternate light/dark hooks.</when>
|
|
9
9
|
</toggle>
|
|
10
10
|
<toggle name="--effect-shadows">
|
|
11
11
|
<when>Empty/unset enables data-elevation box-shadow stacks; set to initial to disable. Preflight gates with @container root not style(--effect-shadows: initial). Do not hand-roll box-shadow.</when>
|
|
12
12
|
</toggle>
|
|
13
13
|
<toggle name="--effect-vibrancy">
|
|
14
|
-
<when>Empty/unset enables data-vibrant backdrop filters; set to initial to disable. Preflight gates with @container root not style(--effect-vibrancy: initial)
|
|
14
|
+
<when>Empty/unset enables data-vibrant backdrop filters; set to initial to disable. Preflight gates with @container root not style(--effect-vibrancy: initial). Do not hand-roll backdrop-filter.</when>
|
|
15
15
|
</toggle>
|
|
16
16
|
<toggle name="--effect-corner-shape">
|
|
17
17
|
<when>Empty/unset enables theme corner-shape on *; set to initial to disable. Preflight gates with @container root not style(--effect-corner-shape: initial) and applies var(--__corner-shape, var(--corner-shape)). Pair with --corner-shape token.</when>
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
<when>Brand default is initial (off). When on, paints a fixed body::after foil overlay gated by @container root not style(--effect-holofoil: initial); foil blend adjusts under @container root style(--is-light-mode: white). Do not invent alternate foil hooks.</when>
|
|
21
21
|
</toggle>
|
|
22
22
|
<toggle name="--effect-fluid-typography">
|
|
23
|
-
<when>Empty/unset enables Text/Title fluid clamp sizing (prev scale step→step via viewport progress) when the instance `fluid` prop is true. Text defaults `fluid` false (locked at --font-scale-body-*); Title defaults true. Set theme to initial to lock each size at its theme scale token (--font-scale-body-* / --font-scale-display / --font-scale-h*). Per-instance: Text/Title `fluid={false}` → data-*-fluid=false locks that node to its size max token; Text `fluid` opts in. Module CSS also gates with @container root style(--effect-fluid-typography: initial). Text size xs
|
|
23
|
+
<when>Empty/unset enables Text/Title fluid clamp sizing (prev scale step→step via viewport progress) when the instance `fluid` prop is true. Text defaults `fluid` false (locked at --font-scale-body-*); Title defaults true. Set theme to initial to lock each size at its theme scale token (--font-scale-body-* / --font-scale-display / --font-scale-h*). Per-instance: Text/Title `fluid={false}` → data-*-fluid=false locks that node to its size max token; Text `fluid` opts in. Module CSS also gates with @container root style(--effect-fluid-typography: initial). Text size s and xs stay fixed (min=max); fluid clamp starts at m. At full fluid progress, on and off resolve to the same token.</when>
|
|
24
24
|
</toggle>
|
|
25
25
|
<toggle name="--corner-shape">
|
|
26
26
|
<when>Theme corner shape token; preflight may set internal --__corner-shape beside full radius. Not a consumer data-*.</when>
|
package/dist/specs/index.xml
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<index package="@viraui/react" version="2026.
|
|
2
|
+
<index package="@viraui/react" version="2026.9.0" generated="2026-10-15T06:47:40.657Z">
|
|
3
3
|
<categories>
|
|
4
4
|
<category id="layout" />
|
|
5
5
|
<category id="action" />
|
|
@@ -151,6 +151,16 @@
|
|
|
151
151
|
<unit kind="patterns" href="components/dialog/patterns.xml" />
|
|
152
152
|
</units>
|
|
153
153
|
</entry>
|
|
154
|
+
<entry id="direction-provider" category="layout" title="DirectionProvider">
|
|
155
|
+
<summary>Transparent re-export of Base UI DirectionProvider and useDirection. Enables RTL behavior for Base UI–backed components; does not set HTML dir or CSS direction — pair with document dir=rtl on a porta…</summary>
|
|
156
|
+
<units>
|
|
157
|
+
<unit kind="meta" href="components/direction-provider/meta.xml" />
|
|
158
|
+
<unit kind="a11y" href="components/direction-provider/a11y.xml" />
|
|
159
|
+
<unit kind="props" href="components/direction-provider/props.xml" />
|
|
160
|
+
<unit kind="usage" href="components/direction-provider/usage.xml" />
|
|
161
|
+
<unit kind="patterns" href="components/direction-provider/patterns.xml" />
|
|
162
|
+
</units>
|
|
163
|
+
</entry>
|
|
154
164
|
<entry id="disclosure" category="layout" title="Disclosure">
|
|
155
165
|
<summary>Single-section expand/collapse wrapping Base UI Collapsible. Default Trigger is Surface with render → Collapsible Trigger; Panel is a height motion shell with no default content padding. Use Accordio…</summary>
|
|
156
166
|
<units>
|
|
@@ -302,7 +312,7 @@
|
|
|
302
312
|
</units>
|
|
303
313
|
</entry>
|
|
304
314
|
<entry id="prose" category="typography" title="Prose">
|
|
305
|
-
<summary>
|
|
315
|
+
<summary>Text-wall grouping region (articles, docs, privacy) with heading-aware em rhythm; reading column via parent Stack `maxWidth` sized for body Text `size`.</summary>
|
|
306
316
|
<units>
|
|
307
317
|
<unit kind="meta" href="components/prose/meta.xml" />
|
|
308
318
|
<unit kind="a11y" href="components/prose/a11y.xml" />
|
|
@@ -432,7 +442,7 @@
|
|
|
432
442
|
</units>
|
|
433
443
|
</entry>
|
|
434
444
|
<entry id="text" category="typography" title="Text">
|
|
435
|
-
<summary>Theme-aware body-copy primitive with tone, family, and
|
|
445
|
+
<summary>Theme-aware body-copy primitive with tone, family, sizing, and readable-measure props (`maxWidth` / `lineHeight` / `balanced`).</summary>
|
|
436
446
|
<units>
|
|
437
447
|
<unit kind="meta" href="components/text/meta.xml" />
|
|
438
448
|
<unit kind="a11y" href="components/text/a11y.xml" />
|
|
@@ -462,7 +472,7 @@
|
|
|
462
472
|
</units>
|
|
463
473
|
</entry>
|
|
464
474
|
<entry id="title" category="typography" title="Title">
|
|
465
|
-
<summary>Theme-aware heading and display typography
|
|
475
|
+
<summary>Theme-aware heading and display typography with readable-measure props (`maxWidth` / `lineHeight` / `balanced`).</summary>
|
|
466
476
|
<units>
|
|
467
477
|
<unit kind="meta" href="components/title/meta.xml" />
|
|
468
478
|
<unit kind="a11y" href="components/title/a11y.xml" />
|
|
@@ -588,18 +598,6 @@
|
|
|
588
598
|
<unit kind="pattern" href="patterns/compose-layout-first.xml" />
|
|
589
599
|
</units>
|
|
590
600
|
</entry>
|
|
591
|
-
<entry id="equal-width-actions" category="pattern" title="Equal-width action row">
|
|
592
|
-
<summary>Span or share space with Stack `fullWidth` and/or `expandChildren` (and control `fullWidth` when the surface owns it). Orthogonal: `fullWidth` sizes the Stack; `expandChildren` grows direct children …</summary>
|
|
593
|
-
<units>
|
|
594
|
-
<unit kind="pattern" href="patterns/equal-width-actions.xml" />
|
|
595
|
-
</units>
|
|
596
|
-
</entry>
|
|
597
|
-
<entry id="page-chrome" category="pattern" title="Page chrome with Stack render">
|
|
598
|
-
<summary>Own page/section flex with Stack. Pick semantic tags (`header`, `main`, `nav`, `section`, …) via `render={&lt;tag /&gt;}` — keep Stack as the layout engine. CSS modules may set min-block-size / scrol…</summary>
|
|
599
|
-
<units>
|
|
600
|
-
<unit kind="pattern" href="patterns/page-chrome.xml" />
|
|
601
|
-
</units>
|
|
602
|
-
</entry>
|
|
603
601
|
<entry id="settings-panel" category="pattern" title="Settings panel (Surface + Stack)">
|
|
604
602
|
<summary>Wrap a settings block in Surface for fill/border/radius/padding; nest Stack for child gaps and rows. Compose the settings-row pattern inside for label+control rows. Prefer props over CSS for spacing …</summary>
|
|
605
603
|
<units>
|
|
@@ -612,10 +610,4 @@
|
|
|
612
610
|
<unit kind="pattern" href="patterns/settings-row.xml" />
|
|
613
611
|
</units>
|
|
614
612
|
</entry>
|
|
615
|
-
<entry id="stack-as-surface" category="pattern" title="Stack as Surface (avoid extra DOM)">
|
|
616
|
-
<summary>When a flex cluster also needs Surface chrome (border, color, radius, padding), prefer `Stack render={&lt;Surface … /&gt;}` so layout + chrome share one root. Put gap/align/`fullWidth`/`expandChildre…</summary>
|
|
617
|
-
<units>
|
|
618
|
-
<unit kind="pattern" href="patterns/stack-as-surface.xml" />
|
|
619
|
-
</units>
|
|
620
|
-
</entry>
|
|
621
613
|
</index>
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
<ref id="bleed" units="meta,usage" />
|
|
11
11
|
</uses>
|
|
12
12
|
<do>Prefer Vira layout roots (`Stack`, `Grid`, `Masonry`, `Bleed`, `Surface`) and their public props for every consumer layout. Treat `Stack` as the default box: an enriched `div` (flex + gap/padding/align/`fullWidth`/`render`/…) — prefer it over bare wrapper `div`s even for simple nesting. Compose **with** these parts; default custom CSS = **app chrome** the system does not own. Prefer another Vira component (e.g. `Surface` for border/fill/radius) or `render` merge over a CSS class for chrome the library already owns. Do not open a CSS module to reshape a Vira control unless the consumer **expressly asked** for that override (still read `props`/`usage` first; a future override layer will formalize hooks).</do>
|
|
13
|
-
<dont>Do not invent bare wrapper `div`s (or `display:flex` / `display:grid` / CSS `gap` / `padding` / `paddingBlock*` / `paddingInline*` / `width` / `inline-size` / border/radius chrome on raw tags or Vira control roots) when `Stack` or another layout primitive / `Surface` / a public `fullWidth` or `hPadding`/`vPadding` tuple covers it. Do not skip composition to reach for a one-off stylesheet — including size-fill classNames that would do nothing on fixed-size controls. Do not pass `render` that restates a component's default root (e.g. Stack `render={<div />}`) — omit `render` unless the host changes.</dont>
|
|
13
|
+
<dont>Do not invent bare wrapper `div`s (or `display:flex` / `display:grid` / CSS `gap` / `padding` / `paddingBlock*` / `paddingInline*` / `width` / `height` / `inline-size` / `block-size: 100%` / border/radius chrome on raw tags or Vira control roots) when `Stack` or another layout primitive / `Surface` / a public `fullWidth`/`fullHeight`/`expandChildren` + stretch align (Stack `patterns.xml`) or `hPadding`/`vPadding` tuple covers it. Do not skip composition to reach for a one-off stylesheet — including size-fill classNames that would do nothing on fixed-size controls. Do not pass `render` that restates a component's default root (e.g. Stack `render={<div />}`) — omit `render` unless the host changes.</dont>
|
|
14
14
|
<tsx><![CDATA[
|
|
15
15
|
{/* Flex row + panel chrome: one DOM node via Stack render={<Surface />} */}
|
|
16
16
|
<Stack
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@viraui/react",
|
|
3
|
-
"version": "2026.
|
|
3
|
+
"version": "2026.9.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"files": [
|
|
6
6
|
"dist"
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@base-ui/react": ">=1.8.0",
|
|
31
|
-
"@viraui/foundation": "2026.
|
|
31
|
+
"@viraui/foundation": "2026.9.0",
|
|
32
32
|
"@viraui/icons": "2026.1.0",
|
|
33
33
|
"@viraui/postcss-config": "2026.0.0",
|
|
34
34
|
"@viraui/tsconfig": "2026.0.0",
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useId } from "react";
|
|
3
|
-
//#region src/components/spinner/variants/bars.tsx
|
|
4
|
-
/** Sanitize React useId for SVG id / begin references (strip `:`). */
|
|
5
|
-
var smilId = (reactId, name) => `${reactId.replaceAll(":", "")}${name}`;
|
|
6
|
-
var BarsGlyph = () => {
|
|
7
|
-
const reactId = useId();
|
|
8
|
-
const ccmt = smilId(reactId, "ccmt");
|
|
9
|
-
const izzb = smilId(reactId, "izzb");
|
|
10
|
-
const pulse = {
|
|
11
|
-
y: {
|
|
12
|
-
values: "6;1;6",
|
|
13
|
-
keySplines: ".36,.61,.3,.98;.36,.61,.3,.98"
|
|
14
|
-
},
|
|
15
|
-
height: {
|
|
16
|
-
values: "12;22;12",
|
|
17
|
-
keySplines: ".36,.61,.3,.98;.36,.61,.3,.98"
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
return /* @__PURE__ */ jsxs("g", {
|
|
21
|
-
fill: "currentColor",
|
|
22
|
-
children: [
|
|
23
|
-
/* @__PURE__ */ jsxs("rect", {
|
|
24
|
-
x: "1",
|
|
25
|
-
y: "6",
|
|
26
|
-
width: "2.8",
|
|
27
|
-
height: "12",
|
|
28
|
-
children: [/* @__PURE__ */ jsx("animate", {
|
|
29
|
-
id: ccmt,
|
|
30
|
-
begin: `0;${izzb}.end-0.1s`,
|
|
31
|
-
attributeName: "y",
|
|
32
|
-
calcMode: "spline",
|
|
33
|
-
dur: "0.6s",
|
|
34
|
-
values: pulse.y.values,
|
|
35
|
-
keySplines: pulse.y.keySplines
|
|
36
|
-
}), /* @__PURE__ */ jsx("animate", {
|
|
37
|
-
begin: `0;${izzb}.end-0.1s`,
|
|
38
|
-
attributeName: "height",
|
|
39
|
-
calcMode: "spline",
|
|
40
|
-
dur: "0.6s",
|
|
41
|
-
values: pulse.height.values,
|
|
42
|
-
keySplines: pulse.height.keySplines
|
|
43
|
-
})]
|
|
44
|
-
}),
|
|
45
|
-
/* @__PURE__ */ jsxs("rect", {
|
|
46
|
-
x: "5.8",
|
|
47
|
-
y: "6",
|
|
48
|
-
width: "2.8",
|
|
49
|
-
height: "12",
|
|
50
|
-
children: [/* @__PURE__ */ jsx("animate", {
|
|
51
|
-
begin: `${ccmt}.begin+0.1s`,
|
|
52
|
-
attributeName: "y",
|
|
53
|
-
calcMode: "spline",
|
|
54
|
-
dur: "0.6s",
|
|
55
|
-
values: pulse.y.values,
|
|
56
|
-
keySplines: pulse.y.keySplines
|
|
57
|
-
}), /* @__PURE__ */ jsx("animate", {
|
|
58
|
-
begin: `${ccmt}.begin+0.1s`,
|
|
59
|
-
attributeName: "height",
|
|
60
|
-
calcMode: "spline",
|
|
61
|
-
dur: "0.6s",
|
|
62
|
-
values: pulse.height.values,
|
|
63
|
-
keySplines: pulse.height.keySplines
|
|
64
|
-
})]
|
|
65
|
-
}),
|
|
66
|
-
/* @__PURE__ */ jsxs("rect", {
|
|
67
|
-
x: "10.6",
|
|
68
|
-
y: "6",
|
|
69
|
-
width: "2.8",
|
|
70
|
-
height: "12",
|
|
71
|
-
children: [/* @__PURE__ */ jsx("animate", {
|
|
72
|
-
begin: `${ccmt}.begin+0.2s`,
|
|
73
|
-
attributeName: "y",
|
|
74
|
-
calcMode: "spline",
|
|
75
|
-
dur: "0.6s",
|
|
76
|
-
values: pulse.y.values,
|
|
77
|
-
keySplines: pulse.y.keySplines
|
|
78
|
-
}), /* @__PURE__ */ jsx("animate", {
|
|
79
|
-
begin: `${ccmt}.begin+0.2s`,
|
|
80
|
-
attributeName: "height",
|
|
81
|
-
calcMode: "spline",
|
|
82
|
-
dur: "0.6s",
|
|
83
|
-
values: pulse.height.values,
|
|
84
|
-
keySplines: pulse.height.keySplines
|
|
85
|
-
})]
|
|
86
|
-
}),
|
|
87
|
-
/* @__PURE__ */ jsxs("rect", {
|
|
88
|
-
x: "15.4",
|
|
89
|
-
y: "6",
|
|
90
|
-
width: "2.8",
|
|
91
|
-
height: "12",
|
|
92
|
-
children: [/* @__PURE__ */ jsx("animate", {
|
|
93
|
-
begin: `${ccmt}.begin+0.3s`,
|
|
94
|
-
attributeName: "y",
|
|
95
|
-
calcMode: "spline",
|
|
96
|
-
dur: "0.6s",
|
|
97
|
-
values: pulse.y.values,
|
|
98
|
-
keySplines: pulse.y.keySplines
|
|
99
|
-
}), /* @__PURE__ */ jsx("animate", {
|
|
100
|
-
begin: `${ccmt}.begin+0.3s`,
|
|
101
|
-
attributeName: "height",
|
|
102
|
-
calcMode: "spline",
|
|
103
|
-
dur: "0.6s",
|
|
104
|
-
values: pulse.height.values,
|
|
105
|
-
keySplines: pulse.height.keySplines
|
|
106
|
-
})]
|
|
107
|
-
}),
|
|
108
|
-
/* @__PURE__ */ jsxs("rect", {
|
|
109
|
-
x: "20.2",
|
|
110
|
-
y: "6",
|
|
111
|
-
width: "2.8",
|
|
112
|
-
height: "12",
|
|
113
|
-
children: [/* @__PURE__ */ jsx("animate", {
|
|
114
|
-
id: izzb,
|
|
115
|
-
begin: `${ccmt}.begin+0.4s`,
|
|
116
|
-
attributeName: "y",
|
|
117
|
-
calcMode: "spline",
|
|
118
|
-
dur: "0.6s",
|
|
119
|
-
values: pulse.y.values,
|
|
120
|
-
keySplines: pulse.y.keySplines
|
|
121
|
-
}), /* @__PURE__ */ jsx("animate", {
|
|
122
|
-
begin: `${ccmt}.begin+0.4s`,
|
|
123
|
-
attributeName: "height",
|
|
124
|
-
calcMode: "spline",
|
|
125
|
-
dur: "0.6s",
|
|
126
|
-
values: pulse.height.values,
|
|
127
|
-
keySplines: pulse.height.keySplines
|
|
128
|
-
})]
|
|
129
|
-
})
|
|
130
|
-
]
|
|
131
|
-
});
|
|
132
|
-
};
|
|
133
|
-
//#endregion
|
|
134
|
-
export { BarsGlyph as default };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@keyframes viraui__dot-grid-module__spinner-dot-grid-1_X76yC{9.0909090909%{transform:translate(-12px)}18.1818181818%{transform:translate(0)}27.2727272727%{transform:translate(0)}36.3636363636%{transform:translate(12px)}45.4545454545%{transform:translate(12px,12px)}54.5454545455%{transform:translate(12px,12px)}63.6363636364%{transform:translate(12px,12px)}72.7272727273%{transform:translate(12px)}81.8181818182%{transform:translate(0)}90.9090909091%{transform:translate(-12px)}to{transform:translate(0)}}@keyframes viraui__dot-grid-module__spinner-dot-grid-2_ntLgO{9.0909090909%{transform:translate(0)}18.1818181818%{transform:translate(12px)}27.2727272727%{transform:translate(0)}36.3636363636%{transform:translate(12px)}45.4545454545%{transform:translate(12px,12px)}54.5454545455%{transform:translate(12px,12px)}63.6363636364%{transform:translate(12px,12px)}72.7272727273%{transform:translate(12px,12px)}81.8181818182%{transform:translateY(12px)}90.9090909091%{transform:translateY(12px)}to{transform:translate(0)}}@keyframes viraui__dot-grid-module__spinner-dot-grid-3_6XjPw{9.0909090909%{transform:translate(-12px)}18.1818181818%{transform:translate(-12px)}27.2727272727%{transform:translate(0)}36.3636363636%{transform:translate(-12px)}45.4545454545%{transform:translate(-12px)}54.5454545455%{transform:translate(-12px)}63.6363636364%{transform:translate(-12px)}72.7272727273%{transform:translate(-12px)}81.8181818182%{transform:translate(-12px,-12px)}90.9090909091%{transform:translateY(-12px)}to{transform:translate(0)}}@keyframes viraui__dot-grid-module__spinner-dot-grid-4_xy0HO{9.0909090909%{transform:translate(-12px)}18.1818181818%{transform:translate(-12px)}27.2727272727%{transform:translate(-12px,-12px)}36.3636363636%{transform:translateY(-12px)}45.4545454545%{transform:translate(0)}54.5454545455%{transform:translateY(-12px)}63.6363636364%{transform:translateY(-12px)}72.7272727273%{transform:translateY(-12px)}81.8181818182%{transform:translate(-12px,-12px)}90.9090909091%{transform:translate(-12px)}to{transform:translate(0)}}@keyframes viraui__dot-grid-module__spinner-dot-grid-5_lJzYz{9.0909090909%{transform:translate(0)}18.1818181818%{transform:translate(0)}27.2727272727%{transform:translate(0)}36.3636363636%{transform:translate(12px)}45.4545454545%{transform:translate(12px)}54.5454545455%{transform:translate(12px)}63.6363636364%{transform:translate(12px)}72.7272727273%{transform:translate(12px)}81.8181818182%{transform:translate(12px,-12px)}90.9090909091%{transform:translateY(-12px)}to{transform:translate(0)}}@keyframes viraui__dot-grid-module__spinner-dot-grid-6_ZjVjH{9.0909090909%{transform:translate(0)}18.1818181818%{transform:translate(-12px)}27.2727272727%{transform:translate(-12px)}36.3636363636%{transform:translate(0)}45.4545454545%{transform:translate(0)}54.5454545455%{transform:translate(0)}63.6363636364%{transform:translate(0)}72.7272727273%{transform:translateY(12px)}81.8181818182%{transform:translate(-12px,12px)}90.9090909091%{transform:translate(-12px)}to{transform:translate(0)}}@keyframes viraui__dot-grid-module__spinner-dot-grid-7_sEfp9{9.0909090909%{transform:translate(12px)}18.1818181818%{transform:translate(12px)}27.2727272727%{transform:translate(12px)}36.3636363636%{transform:translate(0)}45.4545454545%{transform:translateY(-12px)}54.5454545455%{transform:translate(12px,-12px)}63.6363636364%{transform:translateY(-12px)}72.7272727273%{transform:translateY(-12px)}81.8181818182%{transform:translate(0)}90.9090909091%{transform:translate(12px)}to{transform:translate(0)}}@keyframes viraui__dot-grid-module__spinner-dot-grid-8_L2-uH{9.0909090909%{transform:translate(0)}18.1818181818%{transform:translate(-12px)}27.2727272727%{transform:translate(-12px,-12px)}36.3636363636%{transform:translateY(-12px)}45.4545454545%{transform:translateY(-12px)}54.5454545455%{transform:translateY(-12px)}63.6363636364%{transform:translateY(-12px)}72.7272727273%{transform:translateY(-12px)}81.8181818182%{transform:translate(12px,-12px)}90.9090909091%{transform:translate(12px)}to{transform:translate(0)}}@keyframes viraui__dot-grid-module__spinner-dot-grid-9_CrL1l{9.0909090909%{transform:translate(-12px)}18.1818181818%{transform:translate(-12px)}27.2727272727%{transform:translate(0)}36.3636363636%{transform:translate(-12px)}45.4545454545%{transform:translate(0)}54.5454545455%{transform:translate(0)}63.6363636364%{transform:translate(-12px)}72.7272727273%{transform:translate(-12px)}81.8181818182%{transform:translate(-24px)}90.9090909091%{transform:translate(-12px)}to{transform:translate(0)}}.viraui__dot-grid-module__Glyph_sf2Sf{&>circle{transform-origin:50% 50%}&>circle:first-child{animation:viraui__dot-grid-module__spinner-dot-grid-1_X76yC 4s infinite}&>circle:nth-child(2){animation:viraui__dot-grid-module__spinner-dot-grid-2_ntLgO 4s infinite}&>circle:nth-child(3){animation:viraui__dot-grid-module__spinner-dot-grid-3_6XjPw 4s infinite}&>circle:nth-child(4){animation:viraui__dot-grid-module__spinner-dot-grid-4_xy0HO 4s infinite}&>circle:nth-child(5){animation:viraui__dot-grid-module__spinner-dot-grid-5_lJzYz 4s infinite}&>circle:nth-child(6){animation:viraui__dot-grid-module__spinner-dot-grid-6_ZjVjH 4s infinite}&>circle:nth-child(7){animation:viraui__dot-grid-module__spinner-dot-grid-7_sEfp9 4s infinite}&>circle:nth-child(8){animation:viraui__dot-grid-module__spinner-dot-grid-8_L2-uH 4s infinite}&>circle:nth-child(9){animation:viraui__dot-grid-module__spinner-dot-grid-9_CrL1l 4s infinite}}}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import './dot-grid.css';
|
|
2
|
-
import dot_grid_module_default from "./dot-grid.module.js";
|
|
3
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
-
//#region src/components/spinner/variants/dot-grid.tsx
|
|
5
|
-
var DotGridGlyph = () => /* @__PURE__ */ jsxs("g", {
|
|
6
|
-
className: dot_grid_module_default.Glyph,
|
|
7
|
-
fill: "currentColor",
|
|
8
|
-
children: [
|
|
9
|
-
/* @__PURE__ */ jsx("circle", {
|
|
10
|
-
cx: "13",
|
|
11
|
-
cy: "1",
|
|
12
|
-
r: "5"
|
|
13
|
-
}),
|
|
14
|
-
/* @__PURE__ */ jsx("circle", {
|
|
15
|
-
cx: "13",
|
|
16
|
-
cy: "1",
|
|
17
|
-
r: "5"
|
|
18
|
-
}),
|
|
19
|
-
/* @__PURE__ */ jsx("circle", {
|
|
20
|
-
cx: "25",
|
|
21
|
-
cy: "25",
|
|
22
|
-
r: "5"
|
|
23
|
-
}),
|
|
24
|
-
/* @__PURE__ */ jsx("circle", {
|
|
25
|
-
cx: "13",
|
|
26
|
-
cy: "13",
|
|
27
|
-
r: "5"
|
|
28
|
-
}),
|
|
29
|
-
/* @__PURE__ */ jsx("circle", {
|
|
30
|
-
cx: "13",
|
|
31
|
-
cy: "13",
|
|
32
|
-
r: "5"
|
|
33
|
-
}),
|
|
34
|
-
/* @__PURE__ */ jsx("circle", {
|
|
35
|
-
cx: "25",
|
|
36
|
-
cy: "13",
|
|
37
|
-
r: "5"
|
|
38
|
-
}),
|
|
39
|
-
/* @__PURE__ */ jsx("circle", {
|
|
40
|
-
cx: "1",
|
|
41
|
-
cy: "25",
|
|
42
|
-
r: "5"
|
|
43
|
-
}),
|
|
44
|
-
/* @__PURE__ */ jsx("circle", {
|
|
45
|
-
cx: "13",
|
|
46
|
-
cy: "25",
|
|
47
|
-
r: "5"
|
|
48
|
-
}),
|
|
49
|
-
/* @__PURE__ */ jsx("circle", {
|
|
50
|
-
cx: "25",
|
|
51
|
-
cy: "25",
|
|
52
|
-
r: "5"
|
|
53
|
-
})
|
|
54
|
-
]
|
|
55
|
-
});
|
|
56
|
-
//#endregion
|
|
57
|
-
export { DotGridGlyph as default };
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
//#region src/components/spinner/variants/dot-grid.module.css
|
|
2
|
-
var Glyph = "viraui__dot-grid-module__Glyph_sf2Sf";
|
|
3
|
-
var dot_grid_module_default = {
|
|
4
|
-
Glyph,
|
|
5
|
-
"spinner-dot-grid-1": "viraui__dot-grid-module__spinner-dot-grid-1_X76yC",
|
|
6
|
-
"spinner-dot-grid-2": "viraui__dot-grid-module__spinner-dot-grid-2_ntLgO",
|
|
7
|
-
"spinner-dot-grid-3": "viraui__dot-grid-module__spinner-dot-grid-3_6XjPw",
|
|
8
|
-
"spinner-dot-grid-4": "viraui__dot-grid-module__spinner-dot-grid-4_xy0HO",
|
|
9
|
-
"spinner-dot-grid-5": "viraui__dot-grid-module__spinner-dot-grid-5_lJzYz",
|
|
10
|
-
"spinner-dot-grid-6": "viraui__dot-grid-module__spinner-dot-grid-6_ZjVjH",
|
|
11
|
-
"spinner-dot-grid-7": "viraui__dot-grid-module__spinner-dot-grid-7_sEfp9",
|
|
12
|
-
"spinner-dot-grid-8": "viraui__dot-grid-module__spinner-dot-grid-8_L2-uH",
|
|
13
|
-
"spinner-dot-grid-9": "viraui__dot-grid-module__spinner-dot-grid-9_CrL1l"
|
|
14
|
-
};
|
|
15
|
-
//#endregion
|
|
16
|
-
export { Glyph, dot_grid_module_default as default };
|