@viraui/react 1.0.12 → 1.0.14
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 +16 -4
- package/dist/components/accordion/accordion.css +1 -1
- package/dist/components/accordion/accordion.guide.json +26 -0
- package/dist/components/annotate/annotate.css +1 -1
- package/dist/components/annotate/annotate.guide.json +46 -57
- package/dist/components/avatar/avatar.css +1 -1
- package/dist/components/avatar/avatar.guide.json +22 -10
- package/dist/components/avatar/avatar.js +0 -2
- package/dist/components/avatar-group/avatar-group.css +1 -7
- package/dist/components/avatar-group/avatar-group.guide.json +23 -16
- package/dist/components/badge/badge.css +1 -0
- package/dist/components/badge/badge.d.ts +39 -0
- package/dist/components/badge/badge.guide.json +59 -0
- package/dist/components/badge/badge.js +50 -0
- package/dist/components/badge/badge.module.js +11 -0
- package/dist/components/badge/index.d.ts +2 -0
- package/dist/components/basic-input/basic-input.css +1 -1
- package/dist/components/basic-input/field-label.css +1 -1
- package/dist/components/basic-input/field-label.js +2 -0
- package/dist/components/bleed/bleed.guide.json +9 -6
- package/dist/components/button/button-chrome.d.ts +3 -1
- package/dist/components/button/button-chrome.js +3 -2
- package/dist/components/button/button-link.guide.json +55 -1
- package/dist/components/button/button-link.js +2 -1
- package/dist/components/button/button.css +1 -1
- package/dist/components/button/button.guide.json +27 -7
- package/dist/components/button/button.js +2 -1
- package/dist/components/checkbox/checkbox.css +1 -1
- package/dist/components/checkbox/checkbox.guide.json +40 -1
- package/dist/components/checkbox/checkbox.js +2 -2
- package/dist/components/checkbox/checkbox.module.js +1 -3
- package/dist/components/chip/chip.css +1 -1
- package/dist/components/chip/chip.guide.json +23 -6
- package/dist/components/chip/chip.js +2 -1
- package/dist/components/clamp-text/clamp-text.css +1 -1
- package/dist/components/clamp-text/clamp-text.guide.json +9 -0
- package/dist/components/clamp-text/clamp-text.js +1 -1
- package/dist/components/dialog/dialog-sheet.js +1 -1
- package/dist/components/dialog/dialog.css +1 -1
- package/dist/components/dialog/dialog.guide.json +24 -0
- package/dist/components/dialog/dialog.module.js +1 -3
- package/dist/components/elevator/elevator.guide.json +23 -1
- package/dist/components/fieldset/fieldset.guide.json +16 -3
- package/dist/components/fieldset/fieldset.js +6 -6
- package/dist/components/fit-text/fit-text.css +1 -1
- package/dist/components/fit-text/fit-text.guide.json +2 -4
- package/dist/components/icon-button/icon-button-link.guide.json +52 -1
- package/dist/components/icon-button/icon-button-link.js +2 -2
- package/dist/components/icon-button/icon-button.d.ts +1 -1
- package/dist/components/icon-button/icon-button.guide.json +48 -3
- package/dist/components/icon-button/icon-button.js +2 -2
- package/dist/components/index.d.ts +2 -0
- package/dist/components/linear-progress/linear-progress.guide.json +16 -5
- package/dist/components/linear-progress/linear-progress.js +0 -1
- package/dist/components/masonry/masonry.d.ts +1 -1
- package/dist/components/masonry/masonry.guide.json +11 -9
- package/dist/components/masonry/masonry.js +1 -1
- package/dist/components/menu/index.d.ts +11 -0
- package/dist/components/menu/menu-checkbox-item.d.ts +42 -0
- package/dist/components/menu/menu-checkbox-item.js +28 -0
- package/dist/components/menu/menu-group.d.ts +12 -0
- package/dist/components/menu/menu-group.js +36 -0
- package/dist/components/menu/menu-indicator-slot.d.ts +15 -0
- package/dist/components/menu/menu-indicator-slot.js +52 -0
- package/dist/components/menu/menu-item-row.d.ts +18 -0
- package/dist/components/menu/menu-item-row.js +47 -0
- package/dist/components/menu/menu-item.d.ts +36 -0
- package/dist/components/menu/menu-item.js +23 -0
- package/dist/components/menu/menu-link-item.d.ts +36 -0
- package/dist/components/menu/menu-link-item.js +26 -0
- package/dist/components/menu/menu-popup.d.ts +17 -0
- package/dist/components/menu/menu-popup.js +28 -0
- package/dist/components/menu/menu-radio-group.d.ts +16 -0
- package/dist/components/menu/menu-radio-group.js +36 -0
- package/dist/components/menu/menu-radio-item.d.ts +42 -0
- package/dist/components/menu/menu-radio-item.js +28 -0
- package/dist/components/menu/menu-separator.d.ts +9 -0
- package/dist/components/menu/menu-separator.js +15 -0
- package/dist/components/menu/menu-submenu-trigger.d.ts +29 -0
- package/dist/components/menu/menu-submenu-trigger.js +26 -0
- package/dist/components/menu/menu.css +1 -0
- package/dist/components/menu/menu.d.ts +58 -0
- package/dist/components/menu/menu.guide.json +101 -0
- package/dist/components/menu/menu.js +36 -0
- package/dist/components/menu/menu.module.js +13 -0
- package/dist/components/meter/meter.guide.json +15 -4
- package/dist/components/meter/meter.js +0 -1
- package/dist/components/popover/popover-sheet.js +1 -1
- package/dist/components/popover/popover.guide.json +25 -1
- package/dist/components/progressive-blur/progressive-blur.css +1 -1
- package/dist/components/progressive-blur/progressive-blur.guide.json +14 -4
- package/dist/components/progressive-blur/progressive-blur.js +2 -2
- package/dist/components/radio/radio.css +1 -1
- package/dist/components/radio/radio.guide.json +34 -1
- package/dist/components/radio/radio.js +28 -31
- package/dist/components/select/select-group.js +1 -1
- package/dist/components/select/select-option.d.ts +1 -1
- package/dist/components/select/select-option.js +2 -5
- package/dist/components/select/select-separator.js +7 -4
- package/dist/components/select/select.css +1 -1
- package/dist/components/select/select.guide.json +49 -8
- package/dist/components/select/select.js +1 -1
- package/dist/components/select/select.module.js +1 -5
- package/dist/components/separator/separator.guide.json +28 -1
- package/dist/components/shimmer/shimmer.css +1 -1
- package/dist/components/shimmer/shimmer.guide.json +19 -16
- package/dist/components/skeleton/skeleton.guide.json +24 -31
- package/dist/components/slider/slider.guide.json +27 -7
- package/dist/components/spinner/spinner.guide.json +5 -4
- package/dist/components/stack/stack.guide.json +49 -47
- package/dist/components/static-noise/static-noise.guide.json +18 -2
- package/dist/components/surface/surface.css +1 -1
- package/dist/components/surface/surface.guide.json +41 -48
- package/dist/components/switch/switch.css +1 -1
- package/dist/components/switch/switch.guide.json +25 -10
- package/dist/components/tabs/tabs.guide.json +11 -0
- package/dist/components/text/text.css +1 -1
- package/dist/components/text/text.guide.json +67 -76
- package/dist/components/textarea/textarea.css +1 -1
- package/dist/components/textarea/textarea.d.ts +4 -3
- package/dist/components/textarea/textarea.guide.json +19 -7
- package/dist/components/textfield/textfield.css +1 -1
- package/dist/components/textfield/textfield.guide.json +22 -7
- package/dist/components/title/title.css +1 -1
- package/dist/components/title/title.guide.json +62 -72
- package/dist/components/title/title.js +0 -1
- package/dist/components/toast/toast.css +1 -1
- package/dist/components/toast/toast.guide.json +32 -1
- package/dist/components/toggle-button/toggle-button.css +1 -0
- package/dist/components/toggle-button/toggle-button.d.ts +7 -0
- package/dist/components/toggle-button/toggle-button.guide.json +29 -2
- package/dist/components/toggle-button/toggle-button.js +18 -3
- package/dist/components/toggle-button/toggle-button.module.js +9 -0
- package/dist/components/toggle-group/toggle-group.d.ts +2 -1
- package/dist/components/toggle-group/toggle-group.guide.json +2 -3
- package/dist/components/tooltip/tooltip.guide.json +8 -1
- package/dist/components/typewriter/typewriter.css +1 -1
- package/dist/components/typewriter/typewriter.guide.json +27 -5
- package/dist/index.js +13 -2
- package/dist/internal/chrome-icons/chrome-icons.d.ts +2 -0
- package/dist/internal/chrome-icons/chrome-icons.js +7 -1
- package/dist/preflight-surface.json +1 -1
- package/dist/preflight.css +1 -1
- package/package.json +2 -2
|
@@ -27,51 +27,54 @@
|
|
|
27
27
|
"description": "Aligns text using logical alignment values.",
|
|
28
28
|
"refCss": "align"
|
|
29
29
|
},
|
|
30
|
-
"
|
|
31
|
-
"description": "
|
|
32
|
-
"refCss": "max-width"
|
|
30
|
+
"balanced": {
|
|
31
|
+
"description": "Enables balanced wrapping for block-like titles."
|
|
33
32
|
},
|
|
34
33
|
"color": {
|
|
35
|
-
"description": "Applies a literal color escape hatch
|
|
36
|
-
"refCss": "literal-color"
|
|
34
|
+
"description": "Applies a literal color escape hatch."
|
|
37
35
|
},
|
|
38
|
-
"
|
|
39
|
-
"description": "
|
|
40
|
-
"refCss": "white-space"
|
|
36
|
+
"fontWidth": {
|
|
37
|
+
"description": "Overrides font width as a percentage (100 = normal); maps to `font-stretch` and `wdth`."
|
|
41
38
|
},
|
|
42
|
-
"
|
|
43
|
-
"description": "
|
|
44
|
-
"refCss": "font-weight"
|
|
39
|
+
"hPadding": {
|
|
40
|
+
"description": "Sets inline padding using one token for both sides or a `[start, end]` tuple."
|
|
45
41
|
},
|
|
46
|
-
"
|
|
47
|
-
"description": "
|
|
48
|
-
|
|
42
|
+
"lineHeight": {
|
|
43
|
+
"description": "Controls line height through foundation leading tokens."
|
|
44
|
+
},
|
|
45
|
+
"maxWidth": {
|
|
46
|
+
"description": "Constrains the maximum inline size of the rendered text block."
|
|
49
47
|
},
|
|
50
48
|
"opticalSize": {
|
|
51
|
-
"description": "
|
|
52
|
-
|
|
49
|
+
"description": "Overrides the optical size (`opsz`) axis on variable fonts; static fonts keep `font-optical-sizing: auto`."
|
|
50
|
+
},
|
|
51
|
+
"ref": {
|
|
52
|
+
"description": "Ref forwarded to the rendered title root element."
|
|
53
|
+
},
|
|
54
|
+
"render": {
|
|
55
|
+
"description": "Replaces the default `span` root using Base UI render semantics. Pair this with `size` for most headings so DOM semantics and visual preset stay intentionally aligned."
|
|
56
|
+
},
|
|
57
|
+
"selection": {
|
|
58
|
+
"description": "Enables text selection on the rendered copy."
|
|
59
|
+
},
|
|
60
|
+
"size": {
|
|
61
|
+
"description": "Selects a heading or display typography preset from the active theme scale. This controls only the visual preset. Semantic heading choice remains owned by `render`, because `Title` keeps a `span` root unless `render` replaces it."
|
|
53
62
|
},
|
|
54
63
|
"trim": {
|
|
55
|
-
"description": "Trims text box whitespace at the chosen edge
|
|
64
|
+
"description": "Trims text box whitespace at the chosen edge when the browser supports `text-box`.",
|
|
56
65
|
"refCss": "trim"
|
|
57
66
|
},
|
|
58
67
|
"trimType": {
|
|
59
|
-
"description": "Selects the text-box trim basis when trim is active."
|
|
60
|
-
"refCss": "trim-type"
|
|
61
|
-
},
|
|
62
|
-
"hPadding": {
|
|
63
|
-
"description": "Sets inline padding using one token or a [start, end] tuple."
|
|
68
|
+
"description": "Selects the `text-box` trim basis when `trim` is active."
|
|
64
69
|
},
|
|
65
70
|
"vPadding": {
|
|
66
|
-
"description": "Sets block padding using one token or a [start, end] tuple."
|
|
71
|
+
"description": "Sets block padding using one token for both sides or a `[start, end]` tuple."
|
|
67
72
|
},
|
|
68
|
-
"
|
|
69
|
-
"description": "
|
|
70
|
-
"refCss": "font-size"
|
|
73
|
+
"weight": {
|
|
74
|
+
"description": "Overrides the size preset weight (`font-weight` + `wght` axis)."
|
|
71
75
|
},
|
|
72
|
-
"
|
|
73
|
-
"description": "Controls
|
|
74
|
-
"refCss": "line-height"
|
|
76
|
+
"whiteSpace": {
|
|
77
|
+
"description": "Controls white-space preservation and wrapping behavior."
|
|
75
78
|
}
|
|
76
79
|
},
|
|
77
80
|
"css": {
|
|
@@ -79,67 +82,54 @@
|
|
|
79
82
|
"description": "Title alignment on the root.",
|
|
80
83
|
"refReact": "align"
|
|
81
84
|
},
|
|
82
|
-
"
|
|
83
|
-
"description": "
|
|
84
|
-
"refReact": "maxWidth"
|
|
85
|
+
"font-family": {
|
|
86
|
+
"description": "Heading font family on the root."
|
|
85
87
|
},
|
|
86
|
-
"
|
|
87
|
-
"description": "
|
|
88
|
-
"refReact": "color"
|
|
88
|
+
"font-opsz": {
|
|
89
|
+
"description": "Optical size axis on the root (variable fonts)."
|
|
89
90
|
},
|
|
90
|
-
"
|
|
91
|
-
"description": "
|
|
92
|
-
"refReact": "whiteSpace"
|
|
91
|
+
"font-size": {
|
|
92
|
+
"description": "Heading font size; size prop presets via data attributes."
|
|
93
93
|
},
|
|
94
94
|
"font-weight": {
|
|
95
|
-
"description": "Font weight on the root."
|
|
96
|
-
"refReact": "weight"
|
|
95
|
+
"description": "Font weight on the root."
|
|
97
96
|
},
|
|
98
97
|
"font-width": {
|
|
99
|
-
"description": "Font width percentage on the root (font-stretch + wdth)."
|
|
100
|
-
"refReact": "fontWidth"
|
|
98
|
+
"description": "Font width percentage on the root (font-stretch + wdth)."
|
|
101
99
|
},
|
|
102
|
-
"
|
|
103
|
-
"description": "
|
|
104
|
-
"refReact": "opticalSize"
|
|
100
|
+
"letter-spacing": {
|
|
101
|
+
"description": "Heading letter spacing; size presets adjust this."
|
|
105
102
|
},
|
|
106
|
-
"
|
|
107
|
-
"description": "
|
|
108
|
-
"refReact": "trim"
|
|
103
|
+
"line-height": {
|
|
104
|
+
"description": "Line height; lineHeight prop presets via data attributes."
|
|
109
105
|
},
|
|
110
|
-
"
|
|
111
|
-
"description": "
|
|
112
|
-
"refReact": "trimType"
|
|
106
|
+
"literal-color": {
|
|
107
|
+
"description": "Literal color override on the root."
|
|
113
108
|
},
|
|
114
|
-
"
|
|
115
|
-
"description": "
|
|
116
|
-
"refReact": "hPadding"
|
|
109
|
+
"max-width": {
|
|
110
|
+
"description": "Max inline size of the title root."
|
|
117
111
|
},
|
|
118
|
-
"padding-
|
|
119
|
-
"description": "
|
|
120
|
-
"refReact": "hPadding"
|
|
112
|
+
"padding-block-end": {
|
|
113
|
+
"description": "Block-end padding when padding is enabled."
|
|
121
114
|
},
|
|
122
115
|
"padding-block-start": {
|
|
123
|
-
"description": "Block-start padding when padding is enabled."
|
|
124
|
-
"refReact": "vPadding"
|
|
116
|
+
"description": "Block-start padding when padding is enabled."
|
|
125
117
|
},
|
|
126
|
-
"padding-
|
|
127
|
-
"description": "
|
|
128
|
-
"refReact": "vPadding"
|
|
118
|
+
"padding-inline-end": {
|
|
119
|
+
"description": "Inline-end padding when padding is enabled."
|
|
129
120
|
},
|
|
130
|
-
"
|
|
131
|
-
"description": "
|
|
132
|
-
"refReact": "size"
|
|
121
|
+
"padding-inline-start": {
|
|
122
|
+
"description": "Inline-start padding when padding is enabled."
|
|
133
123
|
},
|
|
134
|
-
"
|
|
135
|
-
"description": "
|
|
136
|
-
"refReact": "
|
|
124
|
+
"trim": {
|
|
125
|
+
"description": "Text-box trim mode on the root.",
|
|
126
|
+
"refReact": "trim"
|
|
137
127
|
},
|
|
138
|
-
"
|
|
139
|
-
"description": "
|
|
128
|
+
"trim-type": {
|
|
129
|
+
"description": "Text-box trim basis on the root."
|
|
140
130
|
},
|
|
141
|
-
"
|
|
142
|
-
"description": "
|
|
131
|
+
"white-space": {
|
|
132
|
+
"description": "White-space behavior on the root."
|
|
143
133
|
}
|
|
144
134
|
}
|
|
145
135
|
}
|
|
@@ -27,7 +27,6 @@ var Title = ({ align = "start", balanced = false, selection = true, className, c
|
|
|
27
27
|
props: {
|
|
28
28
|
...otherProps,
|
|
29
29
|
"data-title-size": size,
|
|
30
|
-
"data-title-weight": weight !== void 0 ? "custom" : "preset",
|
|
31
30
|
"data-title-line-height": lineHeight,
|
|
32
31
|
"data-title-balanced": balanced ? "true" : "false",
|
|
33
32
|
"data-title-selection": selection ? "true" : "false",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{.viraui__toast-module__Viewport_oSF5e{position:fixed;z-index:4;pointer-events:none;outline:0;inline-size:min(24rem,calc(100vw - 2 * var(--space-medium)));&[data-position=bottom-right]{inset-block-end:var(--space-medium);inset-inline-end:var(--space-medium)}&[data-position=bottom-left]{inset-block-end:var(--space-medium);inset-inline-start:var(--space-medium)}&[data-position=bottom-center]{inset-block-end:var(--space-medium);inset-inline:0;margin-inline:auto}&[data-position=top-right]{inset-block-start:var(--space-medium);inset-inline-end:var(--space-medium)}&[data-position=top-left]{inset-block-start:var(--space-medium);inset-inline-start:var(--space-medium)}&[data-position=top-center]{inset-block-start:var(--space-medium);inset-inline:0;margin-inline:auto}&[data-position=anchored]{inset:0;inline-size:auto}&>*{pointer-events:auto}}.viraui__toast-module__Content_5ODZr{overflow:hidden;transition:opacity .25s ease;&[data-behind]{opacity:0}&[data-expanded]{opacity:1}@media (prefers-reduced-motion:reduce){transition:none}}}@layer viraui.overrides{.viraui__toast-module__Banner_QkOlo{--gap:var(--space-small);--peek:var(--space-small);--scale:calc(max(0, 1 - (var(--toast-index, 0) * 0.1)));--shrink:calc(1 - var(--scale));--stack-height:var(--toast-frontmost-height,var(--toast-height,0px));--offset-y:calc(var(--toast-offset-y, 0px) * -1 + (var(--toast-index, 0) * var(--gap) * -1) + var(--toast-swipe-movement-y, 0px));position:absolute;inset-inline-end:0;inset-block-end:0;z-index:calc(1000 - var(--toast-index, 0));inline-size:100%;min-inline-size:16rem;will-change:transform,opacity;block-size:var(--toast-frontmost-height,var(--toast-height,auto));transform-origin:bottom center;transform:scale(var(--scale)) translateX(var(--toast-swipe-movement-x,0)) translateY(calc(var(--toast-swipe-movement-y, 0px) - (var(--toast-index, 0) * var(--peek)) - (var(--shrink) * var(--stack-height))));transition:transform var(--duration-slow) var(--easing-elastic),opacity var(--duration-slow) var(--easing-elastic);-webkit-user-select:none;user-select:none;&[data-swiping]{transition:none}&[data-expanded]{transform:scale(1) translateX(var(--toast-swipe-movement-x,0)) translateY(var(--offset-y));block-size:var(--toast-height,auto)}&[data-starting-style]{transform:scale(1) translateY(150%)}&[data-ending-style]{opacity:0;transform:scale(1) translateY(150%);&[data-swipe-direction=up]{transform:scale(1) translateY(calc(var(--toast-swipe-movement-y, 0px) - 150%))}&[data-swipe-direction=down]{transform:scale(1) translateY(calc(var(--toast-swipe-movement-y, 0px) + 150%))}&[data-swipe-direction=left]{transform:scale(1) translateX(calc(var(--toast-swipe-movement-x, 0px) - 150%)) translateY(var(--offset-y))}&[data-swipe-direction=right]{transform:scale(1) translateX(calc(var(--toast-swipe-movement-x, 0px) + 150%)) translateY(var(--offset-y))}}&[data-limited]{opacity:0}&:after{content:"";position:absolute;inset-block-start:100%;inset-inline-start:0;inline-size:100%;block-size:calc(var(--gap) + 1px)}@media (prefers-reduced-motion:reduce){transition:none}}:is(.viraui__toast-module__Viewport_oSF5e[data-position=bottom-left],.viraui__toast-module__Viewport_oSF5e[data-position=top-left]) .viraui__toast-module__Banner_QkOlo{inset-inline-end:auto;inset-inline-start:0}:is(.viraui__toast-module__Viewport_oSF5e[data-position=bottom-center],.viraui__toast-module__Viewport_oSF5e[data-position=top-center]) .viraui__toast-module__Banner_QkOlo{inset-inline:0;margin-inline:auto}.viraui__toast-module__Viewport_oSF5e[data-position^=top-] .viraui__toast-module__Banner_QkOlo{inset-block-end:auto;inset-block-start:0;transform-origin:top center;--offset-y:calc(var(--toast-offset-y, 0px) + (var(--toast-index, 0) * var(--gap)) + var(--toast-swipe-movement-y, 0px));transform:scale(var(--scale)) translateX(var(--toast-swipe-movement-x,0)) translateY(calc(var(--toast-swipe-movement-y, 0px) + (var(--toast-index, 0) * var(--peek)) + (var(--shrink) * var(--stack-height))));&:after{inset-block-start:auto;inset-block-end:100%}&[data-expanded]{transform:scale(1) translateX(var(--toast-swipe-movement-x,0)) translateY(var(--offset-y))}&[data-ending-style]:not([data-swipe-direction]),&[data-starting-style]{transform:scale(1) translateY(-150%)}}.viraui__toast-module__Viewport_oSF5e[data-position=anchored] .viraui__toast-module__Banner_QkOlo{position:static;z-index:auto;min-inline-size:auto;block-size:auto;transform:none;&:after{content:none}transition:transform var(--duration-slow) var(--easing-elastic),opacity var(--duration-slow) var(--easing-elastic);&[data-ending-style],&[data-starting-style]{opacity:0;transform:scale(1) translateY(var(--space-2x-small))}&[data-expanded]{transform:none}}}
|
|
1
|
+
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --__toast-gap{syntax:"<length>";inherits:false;initial-value:0}@property --__toast-peek{syntax:"<length>";inherits:false;initial-value:0}@property --__toast-scale{syntax:"<number>";inherits:false;initial-value:1}@property --__toast-shrink{syntax:"<number>";inherits:false;initial-value:0}@property --__toast-stack-height{syntax:"<length>";inherits:false;initial-value:0}@property --__toast-offset-y{syntax:"<length>";inherits:false;initial-value:0}.viraui__toast-module__Viewport_oSF5e{position:fixed;z-index:4;pointer-events:none;outline:0;inline-size:min(24rem,calc(100vw - 2 * var(--space-medium)));&[data-position=bottom-right]{inset-block-end:var(--space-medium);inset-inline-end:var(--space-medium)}&[data-position=bottom-left]{inset-block-end:var(--space-medium);inset-inline-start:var(--space-medium)}&[data-position=bottom-center]{inset-block-end:var(--space-medium);inset-inline:0;margin-inline:auto}&[data-position=top-right]{inset-block-start:var(--space-medium);inset-inline-end:var(--space-medium)}&[data-position=top-left]{inset-block-start:var(--space-medium);inset-inline-start:var(--space-medium)}&[data-position=top-center]{inset-block-start:var(--space-medium);inset-inline:0;margin-inline:auto}&[data-position=anchored]{inset:0;inline-size:auto}&>*{pointer-events:auto}}.viraui__toast-module__Content_5ODZr{overflow:hidden;transition:opacity .25s ease;&[data-behind]{opacity:0}&[data-expanded]{opacity:1}@media (prefers-reduced-motion:reduce){transition:none}}}@layer viraui.overrides{.viraui__toast-module__Banner_QkOlo{--__toast-gap:var(--space-small);--__toast-peek:var(--space-small);--__toast-scale:calc(max(0, 1 - (var(--toast-index, 0) * 0.1)));--__toast-shrink:calc(1 - var(--__toast-scale));--__toast-stack-height:var(--toast-frontmost-height,var(--toast-height,0px));--__toast-offset-y:calc(var(--toast-offset-y, 0px) * -1 + (var(--toast-index, 0) * var(--__toast-gap) * -1) + var(--toast-swipe-movement-y, 0px));position:absolute;inset-inline-end:0;inset-block-end:0;z-index:calc(1000 - var(--toast-index, 0));inline-size:100%;min-inline-size:16rem;will-change:transform,opacity;block-size:var(--toast-frontmost-height,var(--toast-height,auto));transform-origin:bottom center;transform:scale(var(--__toast-scale)) translateX(var(--toast-swipe-movement-x,0)) translateY(calc(var(--toast-swipe-movement-y, 0px) - (var(--toast-index, 0) * var(--__toast-peek)) - (var(--__toast-shrink) * var(--__toast-stack-height))));transition:transform var(--duration-slow) var(--easing-elastic),opacity var(--duration-slow) var(--easing-elastic);-webkit-user-select:none;user-select:none;&[data-swiping]{transition:none}&[data-expanded]{transform:scale(1) translateX(var(--toast-swipe-movement-x,0)) translateY(var(--__toast-offset-y));block-size:var(--toast-height,auto)}&[data-starting-style]{transform:scale(1) translateY(150%)}&[data-ending-style]{opacity:0;transform:scale(1) translateY(150%);&[data-swipe-direction=up]{transform:scale(1) translateY(calc(var(--toast-swipe-movement-y, 0px) - 150%))}&[data-swipe-direction=down]{transform:scale(1) translateY(calc(var(--toast-swipe-movement-y, 0px) + 150%))}&[data-swipe-direction=left]{transform:scale(1) translateX(calc(var(--toast-swipe-movement-x, 0px) - 150%)) translateY(var(--__toast-offset-y))}&[data-swipe-direction=right]{transform:scale(1) translateX(calc(var(--toast-swipe-movement-x, 0px) + 150%)) translateY(var(--__toast-offset-y))}}&[data-limited]{opacity:0}&:after{content:"";position:absolute;inset-block-start:100%;inset-inline-start:0;inline-size:100%;block-size:calc(var(--__toast-gap) + 1px)}@media (prefers-reduced-motion:reduce){transition:none}}:is(.viraui__toast-module__Viewport_oSF5e[data-position=bottom-left],.viraui__toast-module__Viewport_oSF5e[data-position=top-left]) .viraui__toast-module__Banner_QkOlo{inset-inline-end:auto;inset-inline-start:0}:is(.viraui__toast-module__Viewport_oSF5e[data-position=bottom-center],.viraui__toast-module__Viewport_oSF5e[data-position=top-center]) .viraui__toast-module__Banner_QkOlo{inset-inline:0;margin-inline:auto}.viraui__toast-module__Viewport_oSF5e[data-position^=top-] .viraui__toast-module__Banner_QkOlo{inset-block-end:auto;inset-block-start:0;transform-origin:top center;--__toast-offset-y:calc(var(--toast-offset-y, 0px) + (var(--toast-index, 0) * var(--__toast-gap)) + var(--toast-swipe-movement-y, 0px));transform:scale(var(--__toast-scale)) translateX(var(--toast-swipe-movement-x,0)) translateY(calc(var(--toast-swipe-movement-y, 0px) + (var(--toast-index, 0) * var(--__toast-peek)) + (var(--__toast-shrink) * var(--__toast-stack-height))));&:after{inset-block-start:auto;inset-block-end:100%}&[data-expanded]{transform:scale(1) translateX(var(--toast-swipe-movement-x,0)) translateY(var(--__toast-offset-y))}&[data-ending-style]:not([data-swipe-direction]),&[data-starting-style]{transform:scale(1) translateY(-150%)}}.viraui__toast-module__Viewport_oSF5e[data-position=anchored] .viraui__toast-module__Banner_QkOlo{position:static;z-index:auto;min-inline-size:auto;block-size:auto;transform:none;&:after{content:none}transition:transform var(--duration-slow) var(--easing-elastic),opacity var(--duration-slow) var(--easing-elastic);&[data-ending-style],&[data-starting-style]{opacity:0;transform:scale(1) translateY(var(--space-2x-small))}&[data-expanded]{transform:none}}}
|
|
@@ -23,5 +23,36 @@
|
|
|
23
23
|
"Stacking many simultaneous toasts without a clear limit",
|
|
24
24
|
"Using toasts for critical validation errors that block task completion"
|
|
25
25
|
],
|
|
26
|
-
"related": ["Button", "Surface", "Stack", "Dialog"]
|
|
26
|
+
"related": ["Button", "Surface", "Stack", "Dialog"],
|
|
27
|
+
"properties": {
|
|
28
|
+
"react": {
|
|
29
|
+
"Banner.children": {
|
|
30
|
+
"description": "Optional action buttons. Accepts a single `Toast.Action` or an array of them."
|
|
31
|
+
},
|
|
32
|
+
"Banner.className": {
|
|
33
|
+
"description": "Class name forwarded to the toast root."
|
|
34
|
+
},
|
|
35
|
+
"Banner.description": {
|
|
36
|
+
"description": "Supporting copy below the title."
|
|
37
|
+
},
|
|
38
|
+
"Banner.dismissable": {
|
|
39
|
+
"description": "Whether to render the dismiss control."
|
|
40
|
+
},
|
|
41
|
+
"Banner.dismissLabel": {
|
|
42
|
+
"description": "Label for the dismiss control."
|
|
43
|
+
},
|
|
44
|
+
"Banner.onDismiss": {
|
|
45
|
+
"description": "Called when the dismiss control is activated, before Base UI closes the toast."
|
|
46
|
+
},
|
|
47
|
+
"Banner.title": {
|
|
48
|
+
"description": "Heading above the description. Falls back to `toast.title` from `toastManager.add`."
|
|
49
|
+
},
|
|
50
|
+
"Banner.toast": {
|
|
51
|
+
"description": "Toast instance from `useToastManager().toasts` or `createToastManager()`."
|
|
52
|
+
},
|
|
53
|
+
"Viewport.position": {
|
|
54
|
+
"description": "Controls viewport placement and stacking layout hooks."
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
27
58
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{.viraui__toggle-button-module__IconSlot_8nRbU{position:relative;display:block;flex-shrink:0;inline-size:var(--vui-button-icon-size);block-size:var(--vui-button-icon-size);&[data-pressed]{.viraui__toggle-button-module__Icon_Y1ESH:first-of-type{opacity:0;rotate:30deg}.viraui__toggle-button-module__Icon_Y1ESH:last-of-type{opacity:1;rotate:0deg}}&[data-interpolate=true] .viraui__toggle-button-module__Icon_Y1ESH{transition:opacity var(--duration-fast) var(--easing-standard),rotate var(--duration-fast) var(--easing-standard);@media (prefers-reduced-motion:reduce){transition:none}}}.viraui__toggle-button-module__Icon_Y1ESH{position:absolute;inset:0;display:grid;place-items:center;&>svg{block-size:var(--vui-button-icon-size);inline-size:var(--vui-button-icon-size);flex-shrink:0}&:first-of-type{opacity:1;rotate:0deg}&:last-of-type{opacity:0;rotate:-30deg}}}
|
|
@@ -35,5 +35,12 @@ export type ToggleButtonProps = Omit<IconButtonProps, 'icon' | 'render' | 'varia
|
|
|
35
35
|
* @default When omitted, `variant` is used in both states.
|
|
36
36
|
*/
|
|
37
37
|
pressedVariant?: ButtonProps['variant'];
|
|
38
|
+
/**
|
|
39
|
+
* When `pressedIcon` is set, crossfade and rotate between resting and pressed icons
|
|
40
|
+
* (`data-interpolate="true"`). When `false`, swap instantly with no transition.
|
|
41
|
+
*
|
|
42
|
+
* @default false
|
|
43
|
+
*/
|
|
44
|
+
interpolateIcons?: boolean;
|
|
38
45
|
};
|
|
39
46
|
export declare const ToggleButton: React.FC<ToggleButtonProps>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ToggleButton",
|
|
3
3
|
"structure": "<ToggleButton restingIcon={<Plus />} aria-label=\"Pin\" />",
|
|
4
|
-
"summary": "Icon-only two-state toggle that swaps resting and optional pressed icons on Base UI Toggle state.",
|
|
4
|
+
"summary": "Icon-only two-state toggle that swaps resting and optional pressed icons on Base UI Toggle state; `interpolateIcons` (default false) opt-in crossfade + light rotate between dual icons.",
|
|
5
5
|
"whenToUse": [
|
|
6
6
|
"Toolbar pin, favorite, or mute toggles identified only by icon",
|
|
7
7
|
"Compact on/off controls that share IconButton size, variant, and loading model",
|
|
@@ -22,5 +22,32 @@
|
|
|
22
22
|
"Passing icon or render — ToggleButton owns icon swap and Toggle render wiring"
|
|
23
23
|
],
|
|
24
24
|
"related": ["IconButton", "Button", "Switch", "ToggleGroup"],
|
|
25
|
-
"properties": {
|
|
25
|
+
"properties": {
|
|
26
|
+
"react": {
|
|
27
|
+
"interpolateIcons": {
|
|
28
|
+
"description": "When `pressedIcon` is set, crossfade and rotate between resting and pressed icons (`data-interpolate=\"true\"`). When `false`, swap instantly with no transition."
|
|
29
|
+
},
|
|
30
|
+
"loading": {
|
|
31
|
+
"description": "Shows a centered spinner overlay while preserving the original content width."
|
|
32
|
+
},
|
|
33
|
+
"pill": {
|
|
34
|
+
"description": "Applies a fully rounded pill shape to the button."
|
|
35
|
+
},
|
|
36
|
+
"pressedIcon": {
|
|
37
|
+
"description": "Icon shown while the toggle is pressed."
|
|
38
|
+
},
|
|
39
|
+
"pressedVariant": {
|
|
40
|
+
"description": "Visual variant while the toggle is pressed."
|
|
41
|
+
},
|
|
42
|
+
"restingIcon": {
|
|
43
|
+
"description": "Icon shown while the toggle is not pressed."
|
|
44
|
+
},
|
|
45
|
+
"size": {
|
|
46
|
+
"description": "Controls the visual button size."
|
|
47
|
+
},
|
|
48
|
+
"variant": {
|
|
49
|
+
"description": "Visual variant while the toggle is not pressed."
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
26
53
|
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import './toggle-button.css';
|
|
1
2
|
import { IconButton } from "../icon-button/icon-button.js";
|
|
2
|
-
import
|
|
3
|
+
import toggle_button_module_default from "./toggle-button.module.js";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
5
|
import { Toggle } from "@base-ui/react/toggle";
|
|
4
6
|
//#region src/components/toggle-button/toggle-button.tsx
|
|
5
|
-
var ToggleButton = ({ restingIcon, pressedIcon, variant = "flat", pressedVariant, pressed, defaultPressed, onPressedChange, value, disabled, ref, ...otherProps }) => /* @__PURE__ */ jsx(Toggle, {
|
|
7
|
+
var ToggleButton = ({ restingIcon, pressedIcon, variant = "flat", pressedVariant, interpolateIcons = false, pressed, defaultPressed, onPressedChange, value, disabled, ref, ...otherProps }) => /* @__PURE__ */ jsx(Toggle, {
|
|
6
8
|
ref,
|
|
7
9
|
value,
|
|
8
10
|
pressed,
|
|
@@ -12,12 +14,25 @@ var ToggleButton = ({ restingIcon, pressedIcon, variant = "flat", pressedVariant
|
|
|
12
14
|
nativeButton: true,
|
|
13
15
|
render: (toggleProps, state) => {
|
|
14
16
|
const { "aria-label": _toggleAriaLabel, "aria-labelledby": _toggleAriaLabelledBy, ...restToggleProps } = toggleProps;
|
|
17
|
+
const icon = pressedIcon != null ? /* @__PURE__ */ jsxs("span", {
|
|
18
|
+
"aria-hidden": true,
|
|
19
|
+
className: toggle_button_module_default.IconSlot,
|
|
20
|
+
"data-interpolate": interpolateIcons ? "true" : "false",
|
|
21
|
+
...state.pressed && { "data-pressed": "" },
|
|
22
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
23
|
+
className: toggle_button_module_default.Icon,
|
|
24
|
+
children: restingIcon
|
|
25
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
26
|
+
className: toggle_button_module_default.Icon,
|
|
27
|
+
children: pressedIcon
|
|
28
|
+
})]
|
|
29
|
+
}) : restingIcon;
|
|
15
30
|
return /* @__PURE__ */ jsx(IconButton, {
|
|
16
31
|
...otherProps,
|
|
17
32
|
...restToggleProps,
|
|
18
33
|
disabled,
|
|
19
34
|
variant: state.pressed ? pressedVariant ?? variant : variant,
|
|
20
|
-
icon
|
|
35
|
+
icon
|
|
21
36
|
});
|
|
22
37
|
}
|
|
23
38
|
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
//#region src/components/toggle-button/toggle-button.module.css
|
|
2
|
+
var IconSlot = "viraui__toggle-button-module__IconSlot_8nRbU";
|
|
3
|
+
var Icon = "viraui__toggle-button-module__Icon_Y1ESH";
|
|
4
|
+
var toggle_button_module_default = {
|
|
5
|
+
IconSlot,
|
|
6
|
+
Icon
|
|
7
|
+
};
|
|
8
|
+
//#endregion
|
|
9
|
+
export { Icon, IconSlot, toggle_button_module_default as default };
|
|
@@ -2,7 +2,8 @@ import { ToggleGroup as ToggleGroupPrimitive } from '@base-ui/react/toggle-group
|
|
|
2
2
|
/**
|
|
3
3
|
* Public ToggleGroup props.
|
|
4
4
|
*
|
|
5
|
-
* Thin wrapper around Base UI `ToggleGroup` with default
|
|
5
|
+
* Thin wrapper around Base UI `ToggleGroup` with default `Stack` direction
|
|
6
|
+
* (`row` / `column` from `orientation`) and zero gap — consumers own spacing.
|
|
6
7
|
* Compose `ToggleButton` children each with `value` and an accessible name.
|
|
7
8
|
*
|
|
8
9
|
* @default Base UI pass-through props keep upstream defaults.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ToggleGroup",
|
|
3
3
|
"structure": "<ToggleGroup>\n <ToggleButton restingIcon={<Plus />} aria-label=\"List\" value=\"list\" />\n</ToggleGroup>",
|
|
4
|
-
"summary": "Toolbar toggle set with shared selection state
|
|
4
|
+
"summary": "Toolbar toggle set with shared selection state; Stack direction follows orientation with zero default gap.",
|
|
5
5
|
"whenToUse": [
|
|
6
6
|
"Segmented icon toolbars such as text alignment or formatting controls",
|
|
7
7
|
"Single- or multi-select pressed states across related ToggleButton items",
|
|
@@ -22,6 +22,5 @@
|
|
|
22
22
|
"Using Switch for icon-only toolbar toggle sets",
|
|
23
23
|
"Embedding Surface chrome in the component — wrap demos or app chrome at the consumer"
|
|
24
24
|
],
|
|
25
|
-
"related": ["ToggleButton", "IconButton", "Tabs"]
|
|
26
|
-
"properties": {}
|
|
25
|
+
"related": ["ToggleButton", "IconButton", "Tabs"]
|
|
27
26
|
}
|
|
@@ -22,5 +22,12 @@
|
|
|
22
22
|
"Expecting `Tooltip.Arrow` (it is intentionally not exported or rendered)",
|
|
23
23
|
"Using tooltip for modal or focus-trapped tasks"
|
|
24
24
|
],
|
|
25
|
-
"related": ["Surface", "Button", "IconButton", "Stack", "Popover", "Icon"]
|
|
25
|
+
"related": ["Surface", "Button", "IconButton", "Stack", "Popover", "Icon"],
|
|
26
|
+
"properties": {
|
|
27
|
+
"css": {
|
|
28
|
+
"content-fade-duration": {
|
|
29
|
+
"description": "content fade duration custom property on the component root."
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
26
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-typewriter-caret-color{syntax:"<color>";inherits:true;initial-value:currentcolor}.viraui__typewriter-module__Typewriter_R3sbb{
|
|
1
|
+
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-typewriter-caret-color{syntax:"<color>";inherits:true;initial-value:currentcolor}.viraui__typewriter-module__Typewriter_R3sbb{position:relative;isolation:isolate}.viraui__typewriter-module__Display_-IGJh{white-space:pre-wrap;&[data-preserve-space]{display:inline-grid;&>.viraui__typewriter-module__Ghost_R-Yy-,&>.viraui__typewriter-module__Typed_00NZ8{grid-area:1/1}}}.viraui__typewriter-module__Caret_96Yfs{display:inline-block;vertical-align:initial;color:var(--vui-typewriter-caret-color);animation:viraui__typewriter-module__typewriter-caret-blink_yLCpV 1.1s step-start infinite;@media (prefers-reduced-motion:reduce){animation:none}&[data-type=block]{inline-size:.55em;block-size:.95em;margin-inline-start:.04em;background-color:var(--vui-typewriter-caret-color);transform:translateY(.08em)}&[data-type=pipe]:before{content:"|"}&[data-type=underscore]:before{content:"_"}}.viraui__typewriter-module__Ghost_R-Yy-{visibility:hidden;-webkit-user-select:none;user-select:none}.viraui__typewriter-module__Typed_00NZ8{display:inline}.viraui__typewriter-module__A11y_B-rjF{position:absolute;inset-block-start:0;inset-inline-start:0;inline-size:1px;block-size:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0;pointer-events:none}@keyframes viraui__typewriter-module__typewriter-caret-blink_yLCpV{50%{opacity:0}}}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
],
|
|
15
15
|
"accessibility": [
|
|
16
16
|
"The visual display layer is aria-hidden; completed phrases announce through the polite live region",
|
|
17
|
-
"Reduced motion shows the
|
|
17
|
+
"Reduced motion shows the final phrase immediately without cycling delays",
|
|
18
18
|
"Parent region owns loading or busy semantics when Typewriter is decorative"
|
|
19
19
|
],
|
|
20
20
|
"antiPatterns": [
|
|
@@ -25,15 +25,37 @@
|
|
|
25
25
|
"related": ["Text", "Title", "Shimmer"],
|
|
26
26
|
"properties": {
|
|
27
27
|
"react": {
|
|
28
|
+
"caret": {
|
|
29
|
+
"description": "Selects the caret style rendered after the typed text."
|
|
30
|
+
},
|
|
28
31
|
"caretColor": {
|
|
29
|
-
"description": "Overrides the caret color."
|
|
30
|
-
|
|
32
|
+
"description": "Overrides the caret color."
|
|
33
|
+
},
|
|
34
|
+
"delay": {
|
|
35
|
+
"description": "Sets the initial delay before typing starts, in milliseconds."
|
|
36
|
+
},
|
|
37
|
+
"deleteSpeed": {
|
|
38
|
+
"description": "Sets the delay between deleted characters in milliseconds."
|
|
39
|
+
},
|
|
40
|
+
"loop": {
|
|
41
|
+
"description": "Repeats the phrase cycle after the final phrase is deleted."
|
|
42
|
+
},
|
|
43
|
+
"pause": {
|
|
44
|
+
"description": "Sets the pause after a phrase completes before deletion starts, in milliseconds."
|
|
45
|
+
},
|
|
46
|
+
"preserveSpace": {
|
|
47
|
+
"description": "Reserves the full phrase width while characters are typed."
|
|
48
|
+
},
|
|
49
|
+
"speed": {
|
|
50
|
+
"description": "Sets the delay between typed characters in milliseconds."
|
|
51
|
+
},
|
|
52
|
+
"texts": {
|
|
53
|
+
"description": "Cycles through multiple phrases instead of a single `children` string."
|
|
31
54
|
}
|
|
32
55
|
},
|
|
33
56
|
"css": {
|
|
34
57
|
"caret-color": {
|
|
35
|
-
"description": "Typewriter caret color."
|
|
36
|
-
"refReact": "caretColor"
|
|
58
|
+
"description": "Typewriter caret color."
|
|
37
59
|
}
|
|
38
60
|
}
|
|
39
61
|
}
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,7 @@ import { Accordion } from "./components/accordion/accordion.js";
|
|
|
2
2
|
import { Annotate } from "./components/annotate/annotate.js";
|
|
3
3
|
import { Avatar } from "./components/avatar/avatar.js";
|
|
4
4
|
import { AvatarGroup } from "./components/avatar-group/avatar-group.js";
|
|
5
|
+
import { Badge } from "./components/badge/badge.js";
|
|
5
6
|
import { Bleed } from "./components/bleed/bleed.js";
|
|
6
7
|
import { Spinner } from "./components/spinner/spinner.js";
|
|
7
8
|
import { Button } from "./components/button/button.js";
|
|
@@ -27,6 +28,17 @@ import { IconButton } from "./components/icon-button/icon-button.js";
|
|
|
27
28
|
import { IconButtonLink } from "./components/icon-button/icon-button-link.js";
|
|
28
29
|
import { LinearProgress } from "./components/linear-progress/linear-progress.js";
|
|
29
30
|
import { Masonry } from "./components/masonry/masonry.js";
|
|
31
|
+
import { Surface } from "./components/surface/surface.js";
|
|
32
|
+
import { MenuCheckboxItem } from "./components/menu/menu-checkbox-item.js";
|
|
33
|
+
import { MenuGroup } from "./components/menu/menu-group.js";
|
|
34
|
+
import { MenuItem } from "./components/menu/menu-item.js";
|
|
35
|
+
import { MenuLinkItem } from "./components/menu/menu-link-item.js";
|
|
36
|
+
import { MenuPopup } from "./components/menu/menu-popup.js";
|
|
37
|
+
import { MenuRadioGroup } from "./components/menu/menu-radio-group.js";
|
|
38
|
+
import { MenuRadioItem } from "./components/menu/menu-radio-item.js";
|
|
39
|
+
import { MenuSeparator } from "./components/menu/menu-separator.js";
|
|
40
|
+
import { MenuSubmenuTrigger } from "./components/menu/menu-submenu-trigger.js";
|
|
41
|
+
import { Menu, MenuSubmenu, MenuTrigger } from "./components/menu/menu.js";
|
|
30
42
|
import { Meter } from "./components/meter/meter.js";
|
|
31
43
|
import { PopoverSheet } from "./components/popover/popover-sheet.js";
|
|
32
44
|
import { Popover, PopoverClose, PopoverDescription, PopoverTitle, PopoverTrigger } from "./components/popover/popover.js";
|
|
@@ -39,7 +51,6 @@ import { Shimmer } from "./components/shimmer/shimmer.js";
|
|
|
39
51
|
import { Skeleton } from "./components/skeleton/skeleton.js";
|
|
40
52
|
import { Slider } from "./components/slider/slider.js";
|
|
41
53
|
import { StaticNoise } from "./components/static-noise/static-noise.js";
|
|
42
|
-
import { Surface } from "./components/surface/surface.js";
|
|
43
54
|
import { Switch } from "./components/switch/switch.js";
|
|
44
55
|
import { Tabs } from "./components/tabs/tabs.js";
|
|
45
56
|
import { Textarea } from "./components/textarea/textarea.js";
|
|
@@ -51,4 +62,4 @@ import { ToggleGroup } from "./components/toggle-group/toggle-group.js";
|
|
|
51
62
|
import { Typewriter } from "./components/typewriter/typewriter.js";
|
|
52
63
|
import { TooltipContent } from "./components/tooltip/tooltip-content.js";
|
|
53
64
|
import { Tooltip, TooltipProvider, TooltipTrigger } from "./components/tooltip/tooltip.js";
|
|
54
|
-
export { Accordion, Annotate, Avatar, AvatarGroup, Bleed, Button, ButtonLink, Checkbox, CheckboxGroup, Chip, ClampText, Dialog, DialogClose, DialogIndent, DialogIndentBackground, DialogSheet, DialogTrigger, ELEVATION_DEFAULTS, Elevator, Fieldset, FitText, IconButton, IconButtonLink, LinearProgress, Masonry, Meter, Popover, PopoverClose, PopoverDescription, PopoverSheet, PopoverTitle, PopoverTrigger, ProgressiveBlur, Radio, RadioGroup, Select, Separator, Shimmer, Skeleton, Slider, Spinner, Stack, StaticNoise, Surface, Switch, Tabs, Text, Textarea, Textfield, Title, Toast, ToggleButton, ToggleGroup, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, Typewriter, getElevationProps };
|
|
65
|
+
export { Accordion, Annotate, Avatar, AvatarGroup, Badge, Bleed, Button, ButtonLink, Checkbox, CheckboxGroup, Chip, ClampText, Dialog, DialogClose, DialogIndent, DialogIndentBackground, DialogSheet, DialogTrigger, ELEVATION_DEFAULTS, Elevator, Fieldset, FitText, IconButton, IconButtonLink, LinearProgress, Masonry, Menu, MenuCheckboxItem, MenuGroup, MenuItem, MenuLinkItem, MenuPopup, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuSubmenu, MenuSubmenuTrigger, MenuTrigger, Meter, Popover, PopoverClose, PopoverDescription, PopoverSheet, PopoverTitle, PopoverTrigger, ProgressiveBlur, Radio, RadioGroup, Select, Separator, Shimmer, Skeleton, Slider, Spinner, Stack, StaticNoise, Surface, Switch, Tabs, Text, Textarea, Textfield, Title, Toast, ToggleButton, ToggleGroup, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, Typewriter, getElevationProps };
|
|
@@ -15,4 +15,6 @@ export declare const ChromeCheck: React.FC<ChromeIconProps>;
|
|
|
15
15
|
export declare const ChromeChevronExpandY: React.FC<ChromeIconProps>;
|
|
16
16
|
export declare const ChromeChevronUp: React.FC<ChromeIconProps>;
|
|
17
17
|
export declare const ChromeChevronDown: React.FC<ChromeIconProps>;
|
|
18
|
+
/** End-edge chevron (submenu). Mirror in RTL via CSS `:dir(rtl)`, not JS. */
|
|
19
|
+
export declare const ChromeChevronEnd: React.FC<ChromeIconProps>;
|
|
18
20
|
export declare const ChromeXmark: React.FC<ChromeIconProps>;
|
|
@@ -40,10 +40,16 @@ var ChromeChevronDown = ({ className, size }) => /* @__PURE__ */ jsx(ChromeSvg,
|
|
|
40
40
|
size,
|
|
41
41
|
children: /* @__PURE__ */ jsx("path", { d: "M9 13.5a.74.74 0 0 1-.53-.22L2.22 7.03a.75.75 0 0 1 1.061-1.06l5.72 5.72 5.72-5.72a.75.75 0 1 1 1.061 1.061l-6.25 6.25a.75.75 0 0 1-.53.22z" })
|
|
42
42
|
});
|
|
43
|
+
/** End-edge chevron (submenu). Mirror in RTL via CSS `:dir(rtl)`, not JS. */
|
|
44
|
+
var ChromeChevronEnd = ({ className, size }) => /* @__PURE__ */ jsx(ChromeSvg, {
|
|
45
|
+
className,
|
|
46
|
+
size,
|
|
47
|
+
children: /* @__PURE__ */ jsx("path", { d: "M13.28 8.47 7.03 2.22a.75.75 0 1 0-1.061 1.061l5.72 5.72-5.72 5.72a.75.75 0 0 0 1.06 1.061l6.25-6.25a.75.75 0 0 0 0-1.061z" })
|
|
48
|
+
});
|
|
43
49
|
var ChromeXmark = ({ className, size }) => /* @__PURE__ */ jsx(ChromeSvg, {
|
|
44
50
|
className,
|
|
45
51
|
size,
|
|
46
52
|
children: /* @__PURE__ */ jsx("path", { d: "M13.664 3.23a.783.783 0 1 1 1.107 1.106L10.107 9l4.664 4.664a.783.783 0 0 1-1.107 1.107L9 10.107 4.336 14.77a.783.783 0 1 1-1.107-1.107L7.893 9 3.23 4.336a.782.782 0 1 1 1.107-1.107L9 7.893z" })
|
|
47
53
|
});
|
|
48
54
|
//#endregion
|
|
49
|
-
export { ChromeCheck, ChromeChevronDown, ChromeChevronExpandY, ChromeChevronUp, ChromeMinus, ChromePlus, ChromeXmark };
|
|
55
|
+
export { ChromeCheck, ChromeChevronDown, ChromeChevronEnd, ChromeChevronExpandY, ChromeChevronUp, ChromeMinus, ChromePlus, ChromeXmark };
|
|
@@ -134,7 +134,7 @@
|
|
|
134
134
|
"name": "--shadow-color",
|
|
135
135
|
"module": "elevations",
|
|
136
136
|
"setBy": "inline style or component elevation mapping",
|
|
137
|
-
"default": "oklch(0% 0
|
|
137
|
+
"default": "oklch(0% 0 0)",
|
|
138
138
|
"purpose": "Shadow tint for data-elevation stacks."
|
|
139
139
|
},
|
|
140
140
|
{
|
package/dist/preflight.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.preflight{@property --scrollbar-thumb{syntax:"<color>";initial-value:#0000;inherits:true}@property --scrollbar-track{syntax:"<color>";initial-value:#0000;inherits:true}@property --outline-offset{syntax:"<length>";initial-value:2px;inherits:true}@property --outline-color{syntax:"<color>";initial-value:currentcolor;inherits:true}@property --outline{syntax:"*";initial-value:2px solid currentcolor;inherits:true}@property --is-light-mode{syntax:"<color>";initial-value:#000;inherits:true}}@layer viraui.preflight{html{--scrollbar-thumb:oklab(from var(--global-contrast) l a b/0.3);--scrollbar-track:#0000;--outline-offset:2px;--outline-color:var(--global-outline);--outline:2px solid var(--outline-color);--is-light-mode:contrast-color(var(--global-background));font-size:100%;box-sizing:border-box;line-height:1.5;background-color:var(--global-background);color:var(--global-foreground);container:root/normal}*{@container root not style(--corner-shape-enable: initial){corner-shape:var(--corner-shape-squircle)}}*,:after,:before{margin:0;box-sizing:inherit;scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track)}:focus-visible{outline:var(--outline);outline-offset:var(--outline-offset)}body{color:var(--global-foreground);margin:0;font-size:var(--font-scale-body-medium);font-optical-sizing:auto;font-family:var(--font-family-body),system-ui,sans-serif;font-variation-settings:"wght" 400;font-variant-numeric:tabular-nums}::selection{background-color:var(--global-primary);color:contrast-color(var(--global-primary));text-shadow:none}img{display:block;inline-size:100%;max-inline-size:100%}svg{display:inline-flex;vertical-align:middle;&:not([fill]){fill:currentcolor}}ol ul,ul ol{font-size:medium}table{border-spacing:0;inline-size:100%;border-collapse:collapse}table[data-layout-fixed]{table-layout:fixed}table thead{box-shadow:inset 0 -3px 0 var(--base-2)}table[data-table-separators] tr+tr{border-top:1px solid var(--base-2)}table th{white-space:nowrap;font-variation-settings:"wght" 800}table :is(td,th){border:none;text-align:left;font-size:medium;padding:calc(var(--space-x-small) + var(--space-2x-small)) var(--space-small)}button,fieldset{padding:0;margin:0;border:0}button{appearance:none;background:none;font-size:inherit;font-family:inherit;display:inline-flex;cursor:pointer;color:inherit}[data-elevation]{--shadow-direction:1;--shadow-opacity-factor:0.16;--extra-shadow:0 0 0 1px #0000;--shadow-color:oklab(0 0 0);transition-property:box-shadow;transition-duration:var(--elevation-transition-duration,.16s);transition-timing-function:var(--elevation-transition-easing,ease)}}@layer viraui.preflight{[data-elevation]:where([data-elevation-direction=bottom],[data-elevation-direction=right]){--shadow-direction:1}[data-elevation]:where([data-elevation-direction=top],[data-elevation-direction=left]){--shadow-direction:-1}[data-elevation-hover="0"]:hover,[data-elevation="0"]{--y1:0px;--x1:0px;box-shadow:calc(var(--x1) * var(--shadow-direction)) calc(var(--y1) * var(--shadow-direction)) 0 oklch(from var(--shadow-color) l c h/var(--shadow-opacity-factor)),0 0 0 color-mix(in oklch,var(--shadow-color),#0000 calc(94% - var(--shadow-opacity-factor))),0 0 0 oklch(from var(--shadow-color) l c h/var(--shadow-opacity-factor)),var(--extra-shadow)}[data-elevation-hover="1"]:hover,[data-elevation-hover="2"]:hover,[data-elevation-hover="3"]:hover,[data-elevation-hover="4"]:hover,[data-elevation="1"],[data-elevation="2"],[data-elevation="3"],[data-elevation="4"]{box-shadow:calc(var(--x1) * var(--shadow-direction)) calc(var(--y1) * var(--shadow-direction)) var(--shadow-blur-1) oklab(from var(--shadow-color) l a b/.1),calc(var(--x2) * var(--shadow-direction)) calc(var(--y2) * var(--shadow-direction)) var(--shadow-blur-2) oklab(from var(--shadow-color) l a b/.09),calc(var(--x3) * var(--shadow-direction)) calc(var(--y3) * var(--shadow-direction)) var(--shadow-blur-3) oklab(from var(--shadow-color) l a b/.05),calc(var(--x4) * var(--shadow-direction)) calc(var(--y4) * var(--shadow-direction)) var(--shadow-blur-4) oklab(from var(--shadow-color) l a b/.01),var(--extra-shadow)}[data-elevation-hover="1"]:hover,[data-elevation="1"]{--y1:0px;--y2:2px;--y3:4px;--y4:7px;--x1:0px;--x2:0px;--x3:0px;--x4:0px;--shadow-blur-1:1px;--shadow-blur-2:2px;--shadow-blur-3:2px;--shadow-blur-4:3px}[data-elevation-hover="1"]:where([data-elevation-direction=left],[data-elevation-direction=right]):hover,[data-elevation="1"]:where([data-elevation-direction=left],[data-elevation-direction=right]){--y1:0px;--y2:0px;--y3:0px;--y4:0px;--x1:0px;--x2:2px;--x3:4px;--x4:7px}[data-elevation-hover="2"]:hover,[data-elevation="2"]{--y1:1px;--y2:5px;--y3:11px;--y4:19px;--x1:0px;--x2:0px;--x3:0px;--x4:0px;--shadow-blur-1:3px;--shadow-blur-2:5px;--shadow-blur-3:6px;--shadow-blur-4:8px}[data-elevation-hover="2"]:where([data-elevation-direction=top],[data-elevation-direction=left]):hover,[data-elevation="2"]:where([data-elevation-direction=top],[data-elevation-direction=left]){--shadow-blur-3:7px}[data-elevation-hover="2"]:where([data-elevation-direction=left],[data-elevation-direction=right]):hover,[data-elevation="2"]:where([data-elevation-direction=left],[data-elevation-direction=right]){--y1:0px;--y2:0px;--y3:0px;--y4:0px;--x1:1px;--x2:5px;--x3:11px;--x4:19px}[data-elevation-hover="2"]:where([data-elevation-direction=right]):hover,[data-elevation="2"]:where([data-elevation-direction=right]){--shadow-blur-3:6px}[data-elevation-hover="3"]:hover,[data-elevation="3"]{--y1:2px;--y2:7px;--y3:16px;--y4:29px;--x1:0px;--x2:0px;--x3:0px;--x4:0px;--shadow-blur-1:4px;--shadow-blur-2:7px;--shadow-blur-3:10px;--shadow-blur-4:12px}[data-elevation-hover="3"]:where([data-elevation-direction=left],[data-elevation-direction=right]):hover,[data-elevation="3"]:where([data-elevation-direction=left],[data-elevation-direction=right]){--y1:0px;--y2:0px;--y3:0px;--y4:0px;--x1:2px;--x2:7px;--x3:16px;--x4:29px}[data-elevation-hover="3"]:where([data-elevation-direction=right]):hover,[data-elevation="3"]:where([data-elevation-direction=right]){--x2:10px;--x3:22px;--x4:39px;--shadow-blur-1:5px;--shadow-blur-2:10px;--shadow-blur-3:13px;--shadow-blur-4:15px}[data-elevation-hover="4"]:hover,[data-elevation="4"]{--y1:4px;--y2:14px;--y3:33px;--y4:58px;--x1:0px;--x2:0px;--x3:0px;--x4:0px;--shadow-blur-1:8px;--shadow-blur-2:14px;--shadow-blur-3:20px;--shadow-blur-4:23px}[data-elevation-hover="4"]:where([data-elevation-direction=top]):hover,[data-elevation="4"]:where([data-elevation-direction=top]){--y2:15px;--shadow-blur-2:15px}[data-elevation-hover="4"]:where([data-elevation-direction=left]):hover,[data-elevation="4"]:where([data-elevation-direction=left]){--y1:0px;--y2:0px;--y3:0px;--y4:0px;--x1:4px;--x2:15px;--x3:33px;--x4:58px;--shadow-blur-2:15px}[data-elevation-hover="4"]:where([data-elevation-direction=right]):hover,[data-elevation="4"]:where([data-elevation-direction=right]){--y1:0px;--y2:0px;--y3:0px;--y4:0px;--x1:4px;--x2:14px;--x3:33px;--x4:58px}}@layer viraui.preflight{[data-grow=true]{--vira-flex-grow:1;flex-grow:1}[data-grow=false]{--vira-flex-grow:0;flex-grow:0}[data-shrink=true]{--vira-flex-shrink:1;flex-shrink:1}[data-shrink=false]{--vira-flex-shrink:0;flex-shrink:0}}@layer viraui.preflight{:where(p){line-height:1.5;min-block-size:.01vh;font-size:var(--font-scale-body-medium)}small{font-size:.7em}b,strong{font-variation-settings:"wght" 700}:where(a:any-link):not([data-no-link-style]){text-decoration:none;color:var(--global-interactive-text);word-break:break-word;&:not([class]){background:linear-gradient(currentcolor,currentcolor) no-repeat 0 100%;background-size:0 1px;transition:background-size var(--duration-fast) var(--easing-entrance);&:focus,&:hover{background-size:100% 1px}}}del{padding:0 .4em;margin:0 .2em;background-color:oklab(from var(--highlight-red) l a b/12%);color:var(--highlight-red);box-shadow:0 0 0 1px oklab(from var(--highlight-red) l a b/50%);border-radius:var(--radius-small)}ins{background-color:oklab(from var(--highlight-green) l a b/15%);color:var(--highlight-green);box-shadow:0 0 0 1px oklab(from var(--highlight-green) l a b/50%)}ins,mark{padding:0 .4em;margin:0 .2em;text-decoration:none;border-radius:var(--radius-small)}mark{background-color:oklab(from var(--highlight-yellow) l a b/15%);color:var(--highlight-yellow);box-shadow:0 0 0 1px oklab(from var(--highlight-yellow) l a b/50%)}address{font-style:normal;line-height:inherit}dt{font-variation-settings:"wght" 600}dd{margin:0;padding:0}ul{font-size:medium;padding-left:1rem;& li::marker{font-size:inherit;text-align:right;font-variation-settings:"wght" 400;min-inline-size:var(--space-x-large);color:oklab(from currentColor l a b/80%)}}ol{font-size:medium;& li::marker{font-size:inherit;font-variation-settings:"wght" 400;min-inline-size:var(--space-x-large);font-variant-numeric:tabular-nums;white-space:nowrap;color:oklab(from currentColor l a b/80%)}}kbd{padding:.2em .4em;border-radius:var(--radius-small);font-variation-settings:"wght" 600;box-shadow:var(--global-contrast);background:var(--global-contrast)}abbr{text-decoration:underline dashed var(--global-primary)}label,legend{font-size:inherit}code{background-color:var(--global-contrast);border-radius:var(--radius-small);box-shadow:var(--global-contrast);padding:.2em .4em;font-size:1em;font-family:var(--font-family-mono)}pre code{box-shadow:none}s{text-decoration:line-through;color:var(--global-disabled-foreground);text-decoration-color:oklab(from var(--global-foreground) l a b/50%)}:root{color-scheme:light dark}[data-mode=dark]{color-scheme:dark}[data-mode=light]{color-scheme:light}}@layer viraui.preflight{[data-mode=inverted]{@container root style(--is-light-mode: black){color-scheme:dark}@container root style(--is-light-mode: white){color-scheme:light}}}@layer viraui.preflight{@container root not style(--vibrancy-enable: initial){[data-vibrant]{backdrop-filter:brightness(var(--vibrancy-brightness)) blur(calc(var(--vibrancy-blur) * 1px)) saturate(150%);@container root style(--is-light-mode: black){backdrop-filter:brightness(100%) blur(calc(var(--vibrancy-blur) * 1px)) saturate(150%)}}}}
|
|
1
|
+
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.preflight{@property --scrollbar-thumb{syntax:"<color>";initial-value:#0000;inherits:true}@property --scrollbar-track{syntax:"<color>";initial-value:#0000;inherits:true}@property --outline-offset{syntax:"<length>";initial-value:2px;inherits:true}@property --outline-color{syntax:"<color>";initial-value:currentcolor;inherits:true}@property --outline{syntax:"*";initial-value:2px solid currentcolor;inherits:true}@property --is-light-mode{syntax:"<color>";initial-value:#000;inherits:true}}@layer viraui.preflight{html{--scrollbar-thumb:oklab(from var(--global-contrast) l a b/0.3);--scrollbar-track:#0000;--outline-offset:2px;--outline-color:var(--global-outline);--outline:2px solid var(--outline-color);--is-light-mode:contrast-color(var(--global-background));font-size:100%;box-sizing:border-box;line-height:1.5;background-color:var(--global-background);color:var(--global-foreground);container:root/normal}*{@container root not style(--corner-shape-enable: initial){corner-shape:var(--corner-shape-squircle)}}*,:after,:before{margin:0;box-sizing:inherit;scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track)}:focus-visible{outline:var(--outline);outline-offset:var(--outline-offset)}body{color:var(--global-foreground);margin:0;font-size:var(--font-scale-body-medium);font-optical-sizing:auto;font-family:var(--font-family-body),system-ui,sans-serif;font-variation-settings:"wght" 400;font-variant-numeric:tabular-nums}::selection{background-color:var(--global-primary);color:contrast-color(var(--global-primary));text-shadow:none}img{display:block;inline-size:100%;max-inline-size:100%}svg{display:inline-flex;vertical-align:middle;&:not([fill]){fill:currentcolor}}ol ul,ul ol{font-size:medium}table{border-spacing:0;inline-size:100%;border-collapse:collapse}table[data-layout-fixed]{table-layout:fixed}table thead{box-shadow:inset 0 -3px 0 var(--base-2)}table[data-table-separators] tr+tr{border-top:1px solid var(--base-2)}table th{white-space:nowrap;font-variation-settings:"wght" 800}table :is(td,th){border:none;text-align:left;font-size:medium;padding:calc(var(--space-x-small) + var(--space-2x-small)) var(--space-small)}button,fieldset{padding:0;margin:0;border:0}button{appearance:none;background:none;font-size:inherit;font-family:inherit;display:inline-flex;cursor:pointer;color:inherit}[data-elevation]{--shadow-direction:1;--shadow-opacity-factor:0.16;--extra-shadow:0 0 0 1px #0000;--shadow-color:oklch(0% 0 0);transition-property:box-shadow;transition-duration:var(--elevation-transition-duration,.16s);transition-timing-function:var(--elevation-transition-easing,ease)}}@layer viraui.preflight{[data-elevation]:where([data-elevation-direction=bottom],[data-elevation-direction=right]){--shadow-direction:1}[data-elevation]:where([data-elevation-direction=top],[data-elevation-direction=left]){--shadow-direction:-1}[data-elevation-hover="0"]:hover,[data-elevation="0"]{--y1:0px;--x1:0px;box-shadow:calc(var(--x1) * var(--shadow-direction)) calc(var(--y1) * var(--shadow-direction)) 0 oklch(from var(--shadow-color) l c h/var(--shadow-opacity-factor)),0 0 0 color-mix(in oklch,var(--shadow-color),#0000 calc(94% - var(--shadow-opacity-factor))),0 0 0 oklch(from var(--shadow-color) l c h/var(--shadow-opacity-factor)),var(--extra-shadow)}[data-elevation-hover="1"]:hover,[data-elevation-hover="2"]:hover,[data-elevation-hover="3"]:hover,[data-elevation-hover="4"]:hover,[data-elevation="1"],[data-elevation="2"],[data-elevation="3"],[data-elevation="4"]{box-shadow:calc(var(--x1) * var(--shadow-direction)) calc(var(--y1) * var(--shadow-direction)) var(--shadow-blur-1) oklab(from var(--shadow-color) l a b/.1),calc(var(--x2) * var(--shadow-direction)) calc(var(--y2) * var(--shadow-direction)) var(--shadow-blur-2) oklab(from var(--shadow-color) l a b/.09),calc(var(--x3) * var(--shadow-direction)) calc(var(--y3) * var(--shadow-direction)) var(--shadow-blur-3) oklab(from var(--shadow-color) l a b/.05),calc(var(--x4) * var(--shadow-direction)) calc(var(--y4) * var(--shadow-direction)) var(--shadow-blur-4) oklab(from var(--shadow-color) l a b/.01),var(--extra-shadow)}[data-elevation-hover="1"]:hover,[data-elevation="1"]{--y1:0px;--y2:2px;--y3:4px;--y4:7px;--x1:0px;--x2:0px;--x3:0px;--x4:0px;--shadow-blur-1:1px;--shadow-blur-2:2px;--shadow-blur-3:2px;--shadow-blur-4:3px}[data-elevation-hover="1"]:where([data-elevation-direction=left],[data-elevation-direction=right]):hover,[data-elevation="1"]:where([data-elevation-direction=left],[data-elevation-direction=right]){--y1:0px;--y2:0px;--y3:0px;--y4:0px;--x1:0px;--x2:2px;--x3:4px;--x4:7px}[data-elevation-hover="2"]:hover,[data-elevation="2"]{--y1:1px;--y2:5px;--y3:11px;--y4:19px;--x1:0px;--x2:0px;--x3:0px;--x4:0px;--shadow-blur-1:3px;--shadow-blur-2:5px;--shadow-blur-3:6px;--shadow-blur-4:8px}[data-elevation-hover="2"]:where([data-elevation-direction=top],[data-elevation-direction=left]):hover,[data-elevation="2"]:where([data-elevation-direction=top],[data-elevation-direction=left]){--shadow-blur-3:7px}[data-elevation-hover="2"]:where([data-elevation-direction=left],[data-elevation-direction=right]):hover,[data-elevation="2"]:where([data-elevation-direction=left],[data-elevation-direction=right]){--y1:0px;--y2:0px;--y3:0px;--y4:0px;--x1:1px;--x2:5px;--x3:11px;--x4:19px}[data-elevation-hover="2"]:where([data-elevation-direction=right]):hover,[data-elevation="2"]:where([data-elevation-direction=right]){--shadow-blur-3:6px}[data-elevation-hover="3"]:hover,[data-elevation="3"]{--y1:2px;--y2:7px;--y3:16px;--y4:29px;--x1:0px;--x2:0px;--x3:0px;--x4:0px;--shadow-blur-1:4px;--shadow-blur-2:7px;--shadow-blur-3:10px;--shadow-blur-4:12px}[data-elevation-hover="3"]:where([data-elevation-direction=left],[data-elevation-direction=right]):hover,[data-elevation="3"]:where([data-elevation-direction=left],[data-elevation-direction=right]){--y1:0px;--y2:0px;--y3:0px;--y4:0px;--x1:2px;--x2:7px;--x3:16px;--x4:29px}[data-elevation-hover="3"]:where([data-elevation-direction=right]):hover,[data-elevation="3"]:where([data-elevation-direction=right]){--x2:10px;--x3:22px;--x4:39px;--shadow-blur-1:5px;--shadow-blur-2:10px;--shadow-blur-3:13px;--shadow-blur-4:15px}[data-elevation-hover="4"]:hover,[data-elevation="4"]{--y1:4px;--y2:14px;--y3:33px;--y4:58px;--x1:0px;--x2:0px;--x3:0px;--x4:0px;--shadow-blur-1:8px;--shadow-blur-2:14px;--shadow-blur-3:20px;--shadow-blur-4:23px}[data-elevation-hover="4"]:where([data-elevation-direction=top]):hover,[data-elevation="4"]:where([data-elevation-direction=top]){--y2:15px;--shadow-blur-2:15px}[data-elevation-hover="4"]:where([data-elevation-direction=left]):hover,[data-elevation="4"]:where([data-elevation-direction=left]){--y1:0px;--y2:0px;--y3:0px;--y4:0px;--x1:4px;--x2:15px;--x3:33px;--x4:58px;--shadow-blur-2:15px}[data-elevation-hover="4"]:where([data-elevation-direction=right]):hover,[data-elevation="4"]:where([data-elevation-direction=right]){--y1:0px;--y2:0px;--y3:0px;--y4:0px;--x1:4px;--x2:14px;--x3:33px;--x4:58px}}@layer viraui.preflight{[data-grow=true]{--vira-flex-grow:1;flex-grow:1}[data-grow=false]{--vira-flex-grow:0;flex-grow:0}[data-shrink=true]{--vira-flex-shrink:1;flex-shrink:1}[data-shrink=false]{--vira-flex-shrink:0;flex-shrink:0}}@layer viraui.preflight{:where(p){line-height:1.5;min-block-size:.01vh;font-size:var(--font-scale-body-medium)}small{font-size:.7em}b,strong{font-variation-settings:"wght" 700}:where(a:any-link):not([data-no-link-style]){text-decoration:none;color:var(--global-interactive-text);word-break:break-word;&:not([class]){background:linear-gradient(currentcolor,currentcolor) no-repeat 0 100%;background-size:0 1px;transition:background-size var(--duration-fast) var(--easing-entrance);&:focus,&:hover{background-size:100% 1px}}}del{padding:0 .4em;margin:0 .2em;background-color:oklab(from var(--highlight-red) l a b/12%);color:var(--highlight-red);box-shadow:0 0 0 1px oklab(from var(--highlight-red) l a b/50%);border-radius:var(--radius-small)}ins{background-color:oklab(from var(--highlight-green) l a b/15%);color:var(--highlight-green);box-shadow:0 0 0 1px oklab(from var(--highlight-green) l a b/50%)}ins,mark{padding:0 .4em;margin:0 .2em;text-decoration:none;border-radius:var(--radius-small)}mark{background-color:oklab(from var(--highlight-yellow) l a b/15%);color:var(--highlight-yellow);box-shadow:0 0 0 1px oklab(from var(--highlight-yellow) l a b/50%)}address{font-style:normal;line-height:inherit}dt{font-variation-settings:"wght" 600}dd{margin:0;padding:0}ul{font-size:medium;padding-left:1rem;& li::marker{font-size:inherit;text-align:right;font-variation-settings:"wght" 400;min-inline-size:var(--space-x-large);color:oklab(from currentColor l a b/80%)}}ol{font-size:medium;& li::marker{font-size:inherit;font-variation-settings:"wght" 400;min-inline-size:var(--space-x-large);font-variant-numeric:tabular-nums;white-space:nowrap;color:oklab(from currentColor l a b/80%)}}kbd{padding:.2em .4em;border-radius:var(--radius-small);font-variation-settings:"wght" 600;box-shadow:var(--global-contrast);background:var(--global-contrast)}abbr{text-decoration:underline dashed var(--global-primary)}label,legend{font-size:inherit}code{background-color:var(--global-contrast);border-radius:var(--radius-small);box-shadow:var(--global-contrast);padding:.2em .4em;font-size:1em;font-family:var(--font-family-mono)}pre code{box-shadow:none}s{text-decoration:line-through;color:var(--global-disabled-foreground);text-decoration-color:oklab(from var(--global-foreground) l a b/50%)}:root{color-scheme:light dark}[data-mode=dark]{color-scheme:dark}[data-mode=light]{color-scheme:light}}@layer viraui.preflight{[data-mode=inverted]{@container root style(--is-light-mode: black){color-scheme:dark}@container root style(--is-light-mode: white){color-scheme:light}}}@layer viraui.preflight{@container root not style(--vibrancy-enable: initial){[data-vibrant]{backdrop-filter:brightness(var(--vibrancy-brightness)) blur(calc(var(--vibrancy-blur) * 1px)) saturate(150%);@container root style(--is-light-mode: black){backdrop-filter:brightness(100%) blur(calc(var(--vibrancy-blur) * 1px)) saturate(150%)}}}}
|