@viraui/react 2026.0.16 → 2026.0.18
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 +1 -1
- package/dist/components/annotate/annotate.guide.json +1 -1
- package/dist/components/autocomplete/autocomplete.guide.json +3 -0
- package/dist/components/badge/badge.guide.json +1 -1
- package/dist/components/dialog/dialog.css +1 -1
- package/dist/components/dialog/dialog.guide.json +1 -1
- package/dist/components/masonry/masonry.guide.json +6 -0
- package/dist/components/menu/menu.css +1 -1
- package/dist/components/menu/menu.guide.json +3 -0
- package/dist/components/popover/popover-sheet.js +1 -0
- package/dist/components/popover/popover.css +1 -1
- package/dist/components/popover/popover.guide.json +1 -1
- package/dist/components/popover/popover.module.js +3 -1
- package/dist/components/select/select.css +1 -1
- package/dist/components/select/select.guide.json +1 -1
- package/dist/components/spinner/spinner.d.ts +7 -0
- package/dist/components/spinner/spinner.guide.json +4 -3
- package/dist/components/spinner/spinner.js +7 -0
- package/dist/components/toast/toast-banner.d.ts +1 -1
- package/dist/components/toast/toast.d.ts +2 -1
- package/dist/components/toast/toast.guide.json +2 -5
- package/dist/components/toast/toast.js +2 -1
- package/dist/components/toggle-button/toggle-button.d.ts +9 -1
- package/dist/components/toggle-button/toggle-button.guide.json +26 -0
- package/dist/components/tooltip/tooltip.guide.json +1 -1
- package/package.json +2 -2
package/dist/catalog.json
CHANGED
|
@@ -239,7 +239,7 @@
|
|
|
239
239
|
{
|
|
240
240
|
"id": "toast",
|
|
241
241
|
"name": "Toast",
|
|
242
|
-
"summary": "
|
|
242
|
+
"summary": "Non-callable compound Toast namespace for transient notifications, with stacked or anchored placement, Banner high-level API, and optional action buttons.",
|
|
243
243
|
"guidePath": "./components/toast/toast.guide.json"
|
|
244
244
|
},
|
|
245
245
|
{
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "Annotate",
|
|
3
|
-
"structure": "<Annotate note=\"…\"
|
|
3
|
+
"structure": "<Annotate note=\"…\">…</Annotate>",
|
|
4
4
|
"summary": "Decorative arrow and handwritten label that wraps inline content with optional highlighter mark, positioned via CSS anchor positioning.",
|
|
5
5
|
"whenToUse": [
|
|
6
6
|
"Call out a word or phrase in marketing, docs, or onboarding copy",
|
|
@@ -28,6 +28,9 @@
|
|
|
28
28
|
"related": ["Textfield", "Select", "Fieldset", "Stack", "Surface", "Spinner"],
|
|
29
29
|
"properties": {
|
|
30
30
|
"react": {
|
|
31
|
+
"children": {
|
|
32
|
+
"description": "List content: static Item, Group, or Collection nodes, or a Base UI list render function."
|
|
33
|
+
},
|
|
31
34
|
"container": {
|
|
32
35
|
"description": "Portal mount node (iframe body, shadow root, or app overlay root). Omit for Base UI default (`document.body` from the module window — iframe hosts must pass the iframe document body explicitly)."
|
|
33
36
|
},
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"description": "Vertical status-dot anchor. Position presets set it to 0% for top or 100% for bottom."
|
|
52
52
|
},
|
|
53
53
|
"size": {
|
|
54
|
-
"description": "Status-dot diameter. Defaults to
|
|
54
|
+
"description": "Status-dot diameter. Defaults to 0.5rem.",
|
|
55
55
|
"refReact": "size"
|
|
56
56
|
}
|
|
57
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-dialog-max-block-size{syntax:"*";inherits:false;initial-value:97dvh}@property --__dialog-bleed{syntax:"<length>";inherits:false;initial-value:0}@property --__dialog-peek{syntax:"<length>";inherits:false;initial-value:0}@property --__dialog-stack-step{syntax:"<number>";inherits:false;initial-value:.05}@property --__dialog-stack-progress{syntax:"<number>";inherits:false;initial-value:0}@property --__dialog-stack-peek-offset{syntax:"<length>";inherits:false;initial-value:0}@property --__dialog-stack-scale-base{syntax:"<number>";inherits:false;initial-value:1}@property --__dialog-stack-scale{syntax:"<number>";inherits:false;initial-value:1}@property --__dialog-stack-shrink{syntax:"<number>";inherits:false;initial-value:0}@property --__dialog-stack-height{syntax:"<length>";inherits:false;initial-value:0}@property --__dialog-translate-y{syntax:"<length>";inherits:false;initial-value:0}@property --__dialog-indent-radius{syntax:"<length>";inherits:false;initial-value:0}@property --__dialog-indent-transition{syntax:"<number>";inherits:false;initial-value:1}.viraui__dialog-module__Backdrop_xgFhs{position:fixed;inset:0;z-index:0;transition:opacity var(--duration-fast) var(--easing-standard);backdrop-filter:brightness(90%) blur(5px);opacity:1;&[data-ending-style],&[data-starting-style]{opacity:0}&[data-ending-style]{transition-duration:calc(var(--drawer-swipe-strength, 1) * var(--duration-fast))}&[data-swiping]:not([data-ending-style]){opacity:calc(1 - var(--drawer-swipe-progress, 0));transition-duration:0s}@media (prefers-reduced-motion:reduce){transition:none}}.viraui__dialog-module__Viewport_kmZN1{position:fixed;inset:0;z-index:4;pointer-events:none;touch-action:none}.viraui__dialog-module__Popup_5qIyj{--__dialog-bleed:var(--space-wide);--__dialog-peek:var(--space-medium);--__dialog-stack-progress:clamp(0,var(--drawer-swipe-progress,0),1);--__dialog-stack-peek-offset:max(0px,calc((var(--nested-drawers, 0) - var(--__dialog-stack-progress)) * var(--__dialog-peek)));--__dialog-stack-scale-base:max(0,calc(1 - var(--nested-drawers, 0) * var(--__dialog-stack-step)));--__dialog-stack-scale:clamp(0,calc(var(--__dialog-stack-scale-base) + var(--__dialog-stack-step) * var(--__dialog-stack-progress)),1);--__dialog-stack-shrink:calc(1 - var(--__dialog-stack-scale));--__dialog-stack-height:max(0px,calc(var(--drawer-frontmost-height, var(--drawer-height, 0px)) - var(--__dialog-bleed)));--__dialog-translate-y:calc(var(--drawer-snap-point-offset, 0px) + var(--drawer-swipe-movement-y, 0px) - var(--__dialog-stack-peek-offset) - var(--__dialog-stack-shrink) * var(--__dialog-stack-height));max-block-size:var(--vui-dialog-max-block-size,97dvh);outline:none;pointer-events:auto;touch-action:none;height:var(--drawer-height,auto);transform-origin:50% calc(100% - var(--__dialog-bleed));transition:opacity var(--duration-fast) var(--easing-entrance),transform var(--duration-fast) var(--easing-entrance),height var(--duration-fast) var(--easing-entrance);transform:translateY(var(--__dialog-translate-y)) scale(var(--__dialog-stack-scale));&[data-nested-drawer-open]{height:calc(var(--__dialog-stack-height) + var(--__dialog-bleed))}&[data-starting-style]{opacity:0;transform:translateY(100%)}&[data-ending-style]{transition-duration:calc(var(--drawer-swipe-strength, 1) * var(--duration-fast))}&[data-ending-style][data-swipe-direction=down]{transform:translateY(100%)}&[data-nested-drawer-swiping]:not([data-ending-style]),&[data-swiping]:not([data-ending-style]){transition-duration:0s}@media (prefers-reduced-motion:reduce){transition:none;&[data-ending-style][data-swipe-direction=down],&[data-starting-style]{opacity:1;transform:translateY(0)}}}.viraui__dialog-module__HandleShape_mEg8R{inline-size:var(--space-x-small);block-size:var(--space-x-small);background-color:oklab(from var(--global-contrast) l a b/.3);border-radius:var(--radius-infinite)}.viraui__dialog-module__Header_WnBly{touch-action:none;-webkit-user-select:none;user-select:none}.viraui__dialog-module__Body_9-UgN{min-block-size:0}.viraui__dialog-module__Content_r8lJc{min-block-size:0;overflow:auto;overscroll-behavior:contain;touch-action:auto;padding-block-end:calc(env(safe-area-inset-bottom) + var(--space-medium));transition:opacity var(--duration-fast) var(--easing-standard);@media (prefers-reduced-motion:reduce){transition:none}.viraui__dialog-module__Popup_5qIyj[data-nested-drawer-open] &{opacity:0}.viraui__dialog-module__Popup_5qIyj[data-nested-drawer-open][data-nested-drawer-swiping] &{opacity:1}}.viraui__dialog-module__IndentBackground_OEfbh{position:absolute;inset:0}.viraui__dialog-module__Indent_qfiNW{--__dialog-indent-radius:calc(1rem * (1 - var(--drawer-swipe-progress)));--__dialog-indent-transition:calc(1 - clamp(0, calc(var(--drawer-swipe-progress) * 100000), 1));transition:transform var(--duration-normal) var(--easing-entrance),border-radius var(--duration-fast) var(--easing-entrance);transition-duration:calc(var(--duration-normal) * var(--__dialog-indent-transition)),calc(var(--duration-fast) * var(--__dialog-indent-transition));transform-origin:center top;will-change:transform;&[data-active]{transform:scale(calc(.98 + (.02 * var(--drawer-swipe-progress)))) translateY(calc(.5rem * (1 - var(--drawer-swipe-progress))));border-top-left-radius:var(--__dialog-indent-radius);border-top-right-radius:var(--__dialog-indent-radius)}}}@layer viraui.overrides{.viraui__dialog-module__Popup_5qIyj[data-nested-drawer-open]{overflow:hidden}.viraui__dialog-module__CloseButton_U-B1r.viraui__dialog-module__CloseButton_U-B1r{position:absolute;top:1rem;right:1rem}}
|
|
1
|
+
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-dialog-max-block-size{syntax:"*";inherits:false;initial-value:97dvh}@property --__dialog-bleed{syntax:"<length>";inherits:false;initial-value:0}@property --__dialog-peek{syntax:"<length>";inherits:false;initial-value:0}@property --__dialog-stack-step{syntax:"<number>";inherits:false;initial-value:.05}@property --__dialog-stack-progress{syntax:"<number>";inherits:false;initial-value:0}@property --__dialog-stack-peek-offset{syntax:"<length>";inherits:false;initial-value:0}@property --__dialog-stack-scale-base{syntax:"<number>";inherits:false;initial-value:1}@property --__dialog-stack-scale{syntax:"<number>";inherits:false;initial-value:1}@property --__dialog-stack-shrink{syntax:"<number>";inherits:false;initial-value:0}@property --__dialog-stack-height{syntax:"<length>";inherits:false;initial-value:0}@property --__dialog-translate-y{syntax:"<length>";inherits:false;initial-value:0}@property --__dialog-indent-radius{syntax:"<length>";inherits:false;initial-value:0}@property --__dialog-indent-transition{syntax:"<number>";inherits:false;initial-value:1}.viraui__dialog-module__Backdrop_xgFhs{position:fixed;inset:0;z-index:0;transition:opacity var(--duration-fast) var(--easing-standard);backdrop-filter:brightness(90%) blur(5px);opacity:1;&[data-ending-style],&[data-starting-style]{opacity:0}&[data-ending-style]{transition-duration:calc(var(--drawer-swipe-strength, 1) * var(--duration-fast))}&[data-swiping]:not([data-ending-style]){opacity:calc(1 - var(--drawer-swipe-progress, 0));transition-duration:0s}@media (prefers-reduced-motion:reduce){transition:none}}.viraui__dialog-module__Viewport_kmZN1{position:fixed;inset:0;z-index:4;pointer-events:none;touch-action:none}.viraui__dialog-module__Popup_5qIyj{--__dialog-bleed:var(--space-wide);--__dialog-peek:var(--space-medium);--__dialog-stack-progress:clamp(0,var(--drawer-swipe-progress,0),1);--__dialog-stack-peek-offset:max(0px,calc((var(--nested-drawers, 0) - var(--__dialog-stack-progress)) * var(--__dialog-peek)));--__dialog-stack-scale-base:max(0,calc(1 - var(--nested-drawers, 0) * var(--__dialog-stack-step)));--__dialog-stack-scale:clamp(0,calc(var(--__dialog-stack-scale-base) + var(--__dialog-stack-step) * var(--__dialog-stack-progress)),1);--__dialog-stack-shrink:calc(1 - var(--__dialog-stack-scale));--__dialog-stack-height:max(0px,calc(var(--drawer-frontmost-height, var(--drawer-height, 0px)) - var(--__dialog-bleed)));--__dialog-translate-y:calc(var(--drawer-snap-point-offset, 0px) + var(--drawer-swipe-movement-y, 0px) - var(--__dialog-stack-peek-offset) - var(--__dialog-stack-shrink) * var(--__dialog-stack-height));max-block-size:var(--vui-dialog-max-block-size,97dvh);outline:none;pointer-events:auto;touch-action:none;height:var(--drawer-height,auto);transform-origin:50% calc(100% - var(--__dialog-bleed));transition:opacity var(--duration-fast) var(--easing-entrance),transform var(--duration-fast) var(--easing-entrance),height var(--duration-fast) var(--easing-entrance);transform:translateY(var(--__dialog-translate-y)) scale(var(--__dialog-stack-scale));&[data-nested-drawer-open]{height:calc(var(--__dialog-stack-height) + var(--__dialog-bleed))}&[data-starting-style]{opacity:0;transform:translateY(100%)}&[data-ending-style]{transition-duration:calc(var(--drawer-swipe-strength, 1) * var(--duration-fast))}&[data-ending-style][data-swipe-direction=down]{transform:translateY(100%)}&[data-nested-drawer-swiping]:not([data-ending-style]),&[data-swiping]:not([data-ending-style]){transition-duration:0s}@media (prefers-reduced-motion:reduce){transition:none;&[data-ending-style][data-swipe-direction=down],&[data-starting-style]{opacity:1;transform:translateY(0)}}}.viraui__dialog-module__HandleShape_mEg8R{inline-size:var(--space-x-small);block-size:var(--space-x-small);background-color:oklab(from var(--global-contrast) l a b/.3);border-radius:var(--radius-infinite)}.viraui__dialog-module__Header_WnBly{touch-action:none;-webkit-user-select:none;user-select:none}.viraui__dialog-module__Body_9-UgN{min-block-size:0}.viraui__dialog-module__Content_r8lJc{min-block-size:0;overflow:auto;overscroll-behavior:contain;touch-action:auto;padding-block-end:calc(env(safe-area-inset-bottom) + var(--space-medium));transition:opacity var(--duration-fast) var(--easing-standard),overflow 0s allow-discrete var(--duration-fast);@media (prefers-reduced-motion:reduce){transition:none}.viraui__dialog-module__Popup_5qIyj[data-nested-drawer-open] &{opacity:0;overflow:hidden;transition:opacity var(--duration-fast) var(--easing-standard),overflow 0s allow-discrete}.viraui__dialog-module__Popup_5qIyj[data-nested-drawer-open][data-nested-drawer-swiping] &{opacity:1;overflow:hidden}}.viraui__dialog-module__IndentBackground_OEfbh{position:absolute;inset:0}.viraui__dialog-module__Indent_qfiNW{--__dialog-indent-radius:calc(1rem * (1 - var(--drawer-swipe-progress)));--__dialog-indent-transition:calc(1 - clamp(0, calc(var(--drawer-swipe-progress) * 100000), 1));transition:transform var(--duration-normal) var(--easing-entrance),border-radius var(--duration-fast) var(--easing-entrance);transition-duration:calc(var(--duration-normal) * var(--__dialog-indent-transition)),calc(var(--duration-fast) * var(--__dialog-indent-transition));transform-origin:center top;will-change:transform;&[data-active]{transform:scale(calc(.98 + (.02 * var(--drawer-swipe-progress)))) translateY(calc(.5rem * (1 - var(--drawer-swipe-progress))));border-top-left-radius:var(--__dialog-indent-radius);border-top-right-radius:var(--__dialog-indent-radius)}}}@layer viraui.overrides{.viraui__dialog-module__Popup_5qIyj[data-nested-drawer-open]{overflow:hidden}.viraui__dialog-module__CloseButton_U-B1r.viraui__dialog-module__CloseButton_U-B1r{position:absolute;top:1rem;right:1rem}}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "Dialog",
|
|
3
3
|
"baseUIApi": "https://base-ui.com/react/components/drawer#api-reference",
|
|
4
|
-
"structure": "<Dialog>\n <Dialog.
|
|
4
|
+
"structure": "<Dialog.Provider>\n <Dialog.IndentBackground />\n <Dialog.Indent>\n …\n <Dialog>\n <Dialog.Trigger />\n <Dialog.Sheet title=\"…\">\n …\n <Dialog.Close />\n </Dialog.Sheet>\n </Dialog>\n </Dialog.Indent>\n</Dialog.Provider>",
|
|
5
5
|
"summary": "Compound drawer sheet with `Dialog.Trigger`, `Dialog.Sheet`, `Dialog.Close`, and Base UI pass-through `Dialog.Provider`, `Dialog.Indent`, and `Dialog.IndentBackground` for app-shell indent effects.",
|
|
6
6
|
"whenToUse": [
|
|
7
7
|
"Focused tasks or confirmations that interrupt the current page without navigation",
|
|
@@ -31,6 +31,12 @@
|
|
|
31
31
|
"gap": {
|
|
32
32
|
"description": "Sets the gap between columns (`--vui-masonry-gap`) and the `rowGap` on each column `Stack`."
|
|
33
33
|
},
|
|
34
|
+
"Item.ref": {
|
|
35
|
+
"description": "Ref forwarded to the rendered item root element."
|
|
36
|
+
},
|
|
37
|
+
"Item.render": {
|
|
38
|
+
"description": "Replaces the default `div` item root using Base UI render semantics."
|
|
39
|
+
},
|
|
34
40
|
"render": {
|
|
35
41
|
"description": "Replaces the default `div` root using Base UI render semantics."
|
|
36
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --__menu-list-appear-offset{syntax:"<length>";inherits:false;initial-value:8px}.viraui__menu-module__MenuPopup_GkrGa{min-inline-size:var(--anchor-width);max-block-size:var(--available-height);scroll-padding-block:var(--space-x-small);color:var(--global-foreground);outline:none;position:relative;overscroll-behavior:contain;transform-origin:var(--transform-origin);transition:opacity var(--duration-instant) var(--easing-entrance),scale var(--duration-instant) var(--easing-entrance),translate var(--duration-instant) var(--easing-entrance);&[data-ending-style],&[data-starting-style]{opacity:0;scale:.96}&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{translate:0 calc(var(--__menu-list-appear-offset) * -1)}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{translate:0 var(--__menu-list-appear-offset)}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{translate:var(--__menu-list-appear-offset) 0}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{translate:calc(var(--__menu-list-appear-offset) * -1) 0}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{translate:var(--__menu-list-appear-offset) 0;&:dir(rtl){translate:calc(var(--__menu-list-appear-offset) * -1) 0}}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{translate:calc(var(--__menu-list-appear-offset) * -1) 0;&:dir(rtl){translate:var(--__menu-list-appear-offset) 0}}&[data-instant=click],&[data-instant=dismiss]{transition:none;scale:1;translate:0;opacity:1}&:focus,&:focus-visible{outline:none}}.viraui__menu-module__ItemRow_Be40k{min-block-size:var(--space-x-large)}.viraui__menu-module__Indicator_btL99{min-inline-size:var(--space-small);min-block-size:var(--space-small);inline-size:fit-content;block-size:fit-content;color:var(--global-
|
|
1
|
+
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --__menu-list-appear-offset{syntax:"<length>";inherits:false;initial-value:8px}.viraui__menu-module__MenuPopup_GkrGa{min-inline-size:var(--anchor-width);max-block-size:var(--available-height);scroll-padding-block:var(--space-x-small);color:var(--global-foreground);outline:none;position:relative;overscroll-behavior:contain;transform-origin:var(--transform-origin);transition:opacity var(--duration-instant) var(--easing-entrance),scale var(--duration-instant) var(--easing-entrance),translate var(--duration-instant) var(--easing-entrance);&[data-ending-style],&[data-starting-style]{opacity:0;scale:.96}&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{translate:0 calc(var(--__menu-list-appear-offset) * -1)}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{translate:0 var(--__menu-list-appear-offset)}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{translate:var(--__menu-list-appear-offset) 0}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{translate:calc(var(--__menu-list-appear-offset) * -1) 0}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{translate:var(--__menu-list-appear-offset) 0;&:dir(rtl){translate:calc(var(--__menu-list-appear-offset) * -1) 0}}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{translate:calc(var(--__menu-list-appear-offset) * -1) 0;&:dir(rtl){translate:var(--__menu-list-appear-offset) 0}}&[data-instant=click],&[data-instant=dismiss]{transition:none;scale:1;translate:0;opacity:1}&:focus,&:focus-visible{outline:none}}.viraui__menu-module__ItemRow_Be40k{min-block-size:var(--space-x-large)}.viraui__menu-module__Indicator_btL99{min-inline-size:var(--space-small);min-block-size:var(--space-small);inline-size:fit-content;block-size:fit-content;color:var(--global-foreground);opacity:0;&[data-checked]{opacity:1}&[data-kind=chevron]{opacity:1;color:var(--global-foreground);&:dir(rtl){scale:-1 1}}}}@layer viraui.overrides{.viraui__menu-module__Item_9zmEO{cursor:pointer;&:not([data-disabled]):hover,&:not([data-disabled])[data-highlighted]{background:var(--global-contrast);@container root not style(--effect-vibrancy: initial){background:oklab(from var(--global-contrast) l a b/12%)}}&:not([data-disabled],:hover)[data-checked]{background:light-dark(oklab(from var(--global-contrast) l a b/8%),oklab(from var(--global-contrast) l a b/5%))}&[data-disabled]{color:var(--global-disabled-foreground);cursor:not-allowed}&[data-sentiment=destructive]{color:var(--highlight-red);outline-color:var(--highlight-red);&:not([data-disabled]):hover,&:not([data-disabled])[data-highlighted]{background:oklab(from var(--highlight-red) l a b/12%)}}}}
|
|
@@ -65,6 +65,9 @@
|
|
|
65
65
|
"LinkItem.sentiment": {
|
|
66
66
|
"description": "Visual sentiment. `destructive` uses highlight-red wash + text."
|
|
67
67
|
},
|
|
68
|
+
"Popup.children": {
|
|
69
|
+
"description": "Menu items and optional static, non-interactive content rendered inside the popup."
|
|
70
|
+
},
|
|
68
71
|
"Popup.container": {
|
|
69
72
|
"description": "Portal mount node (iframe body, shadow root, or app overlay root). Omit for Base UI default (`document.body` from the module window — iframe hosts must pass the iframe document body explicitly)."
|
|
70
73
|
},
|
|
@@ -43,6 +43,7 @@ var PopoverSheet = ({ unstyled, title, description, children, showCloseButton =
|
|
|
43
43
|
hAlign: headerAlign,
|
|
44
44
|
rowGap: "small",
|
|
45
45
|
vAlign: "start",
|
|
46
|
+
className: popover_module_default.SheetHeader,
|
|
46
47
|
vPadding: [0, children ? "medium" : 0],
|
|
47
48
|
children: [/* @__PURE__ */ jsx(Popover.Title, {
|
|
48
49
|
render: /* @__PURE__ */ jsx(Title, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-popover-content-fade-duration{syntax:"<time>";inherits:true;initial-value:0s}.viraui__popover-module__Sheet_4x-7H{width:var(--positioner-width);height:var(--positioner-height);max-width:var(--available-width);transition:top var(--duration-fast) var(--easing-standard),right var(--duration-fast) var(--easing-standard),bottom var(--duration-fast) var(--easing-standard),left var(--duration-fast) var(--easing-standard),transform var(--duration-fast) var(--easing-standard);&[data-instant=click],&[data-instant=dismiss]{transition:none}@media (prefers-reduced-motion:reduce){transition:none}}.viraui__popover-module__Popup_pJyIh{position:relative;box-sizing:border-box;width:var(--popup-width,auto);height:var(--popup-height,auto);transform-origin:var(--transform-origin);transition:width var(--duration-fast) var(--easing-standard),height var(--duration-fast) var(--easing-standard),opacity var(--duration-fast) var(--easing-entrance),transform var(--duration-fast) var(--easing-entrance);&[data-ending-style],&[data-starting-style]{opacity:0;transform:scale(.96)}&[data-instant=click],&[data-instant=dismiss]{transition:none}@media (prefers-reduced-motion:reduce){transition:none;&[data-ending-style],&[data-starting-style]{opacity:1;transform:none}}}}@layer viraui.overrides{.viraui__popover-module__Viewport_KrjBC{--vui-popover-content-fade-duration:var(--duration-fast);position:relative;display:grid;grid-template-columns:minmax(0,1fr);overflow:clip;width:100%;height:100%;&>[data-current],&>[data-previous]{grid-area:1/1;inline-size:calc(var(--popup-width) - 2px - var(--space-medium) - var(--space-medium))}&[data-unstyled]>:is([data-current],[data-previous]){inline-size:var(--popup-width,100%)}&[data-unstyled]>[data-previous]{block-size:var(--popup-height,100%)}&>[data-previous]{position:absolute;block-size:calc(var(--popup-height) - 2px - var(--space-medium) - var(--space-medium));overflow:clip;pointer-events:none;opacity:1;transition:opacity var(--vui-popover-content-fade-duration) var(--easing-standard)}&>[data-previous][data-ending-style]{opacity:0}&>[data-current]{opacity:1;transition:opacity var(--vui-popover-content-fade-duration) var(--easing-entrance)}&>[data-current][data-starting-style]{opacity:0}&[data-instant=click]>[data-current],&[data-instant=click]>[data-previous],&[data-instant=dismiss]>[data-current],&[data-instant=dismiss]>[data-previous]{transition:none}@media (prefers-reduced-motion:reduce){&>[data-current],&>[data-previous]{transition:none}&>[data-current][data-starting-style],&>[data-previous][data-ending-style]{opacity:1}}}.viraui__popover-module__CloseButton_YOe2L.viraui__popover-module__CloseButton_YOe2L{position:absolute;inset-block-start:var(--space-small);inset-inline-end:var(--space-small)}}
|
|
1
|
+
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-popover-content-fade-duration{syntax:"<time>";inherits:true;initial-value:0s}.viraui__popover-module__Sheet_4x-7H{width:var(--positioner-width);height:var(--positioner-height);max-width:var(--available-width);transition:top var(--duration-fast) var(--easing-standard),right var(--duration-fast) var(--easing-standard),bottom var(--duration-fast) var(--easing-standard),left var(--duration-fast) var(--easing-standard),transform var(--duration-fast) var(--easing-standard);&[data-instant=click],&[data-instant=dismiss]{transition:none}@media (prefers-reduced-motion:reduce){transition:none}}.viraui__popover-module__SheetHeader_TCGKn{-webkit-user-select:none;user-select:none}.viraui__popover-module__Popup_pJyIh{position:relative;box-sizing:border-box;width:var(--popup-width,auto);height:var(--popup-height,auto);transform-origin:var(--transform-origin);transition:width var(--duration-fast) var(--easing-standard),height var(--duration-fast) var(--easing-standard),opacity var(--duration-fast) var(--easing-entrance),transform var(--duration-fast) var(--easing-entrance);&[data-ending-style],&[data-starting-style]{opacity:0;transform:scale(.96)}&[data-instant=click],&[data-instant=dismiss]{transition:none}@media (prefers-reduced-motion:reduce){transition:none;&[data-ending-style],&[data-starting-style]{opacity:1;transform:none}}}}@layer viraui.overrides{.viraui__popover-module__Viewport_KrjBC{--vui-popover-content-fade-duration:var(--duration-fast);position:relative;display:grid;grid-template-columns:minmax(0,1fr);overflow:clip;width:100%;height:100%;&>[data-current],&>[data-previous]{grid-area:1/1;inline-size:calc(var(--popup-width) - 2px - var(--space-medium) - var(--space-medium))}&[data-unstyled]>:is([data-current],[data-previous]){inline-size:var(--popup-width,100%)}&[data-unstyled]>[data-previous]{block-size:var(--popup-height,100%)}&>[data-previous]{position:absolute;block-size:calc(var(--popup-height) - 2px - var(--space-medium) - var(--space-medium));overflow:clip;pointer-events:none;opacity:1;transition:opacity var(--vui-popover-content-fade-duration) var(--easing-standard)}&>[data-previous][data-ending-style]{opacity:0}&>[data-current]{opacity:1;transition:opacity var(--vui-popover-content-fade-duration) var(--easing-entrance)}&>[data-current][data-starting-style]{opacity:0}&[data-instant=click]>[data-current],&[data-instant=click]>[data-previous],&[data-instant=dismiss]>[data-current],&[data-instant=dismiss]>[data-previous]{transition:none}@media (prefers-reduced-motion:reduce){&>[data-current],&>[data-previous]{transition:none}&>[data-current][data-starting-style],&>[data-previous][data-ending-style]{opacity:1}}}.viraui__popover-module__CloseButton_YOe2L.viraui__popover-module__CloseButton_YOe2L{position:absolute;inset-block-start:var(--space-small);inset-inline-end:var(--space-small)}}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "Popover",
|
|
3
3
|
"baseUIApi": "https://base-ui.com/react/components/popover#api-reference",
|
|
4
|
-
"structure": "<Popover>\n <Popover.Trigger />\n <Popover.Sheet
|
|
4
|
+
"structure": "<Popover>\n <Popover.Trigger />\n <Popover.Sheet unstyled>\n <Popover.Title>…</Popover.Title>\n <Popover.Description>…</Popover.Description>\n …\n <Popover.Close />\n </Popover.Sheet>\n</Popover>",
|
|
5
5
|
"summary": "Compound popover built on Base UI Popover with `Popover.Trigger`, `Popover.Sheet`, `Popover.Close`, `Popover.Title`, `Popover.Description`, and `Popover.createHandle` for detached and multiple triggers; `Sheet` encapsulates Portal + Positioner + Popup + Viewport + Title + Description and animates position, size, and content between triggers; `Sheet` with `unstyled` skips the built-in Surface and header so the consumer composes the popup chrome, including `Popover.Title` and `Popover.Description`.",
|
|
6
6
|
"whenToUse": [
|
|
7
7
|
"Anchored quick actions or contextual hints next to a triggering control",
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
//#region src/components/popover/popover.module.css
|
|
2
2
|
var Sheet = "viraui__popover-module__Sheet_4x-7H";
|
|
3
|
+
var SheetHeader = "viraui__popover-module__SheetHeader_TCGKn";
|
|
3
4
|
var Popup = "viraui__popover-module__Popup_pJyIh";
|
|
4
5
|
var Viewport = "viraui__popover-module__Viewport_KrjBC";
|
|
5
6
|
var CloseButton = "viraui__popover-module__CloseButton_YOe2L";
|
|
6
7
|
var popover_module_default = {
|
|
7
8
|
Sheet,
|
|
9
|
+
SheetHeader,
|
|
8
10
|
Popup,
|
|
9
11
|
Viewport,
|
|
10
12
|
CloseButton
|
|
11
13
|
};
|
|
12
14
|
//#endregion
|
|
13
|
-
export { CloseButton, Popup, Sheet, Viewport, popover_module_default as default };
|
|
15
|
+
export { CloseButton, Popup, Sheet, SheetHeader, Viewport, popover_module_default as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-select-input-height{syntax:"<length>";inherits:true;initial-value:0}@property --vui-select-control-group-background{syntax:"<color>";inherits:true;initial-value:#0000}@property --vui-select-control-group-color{syntax:"<color>";inherits:true;initial-value:#0000}@property --vui-select-control-group-border-color{syntax:"<color>";inherits:true;initial-value:#0000}@property --vui-select-control-group-border-radius{syntax:"<length-percentage>";inherits:true;initial-value:0}@property --vui-select-trigger-padding-inline-start{syntax:"<length>";inherits:true;initial-value:0}@property --vui-select-trigger-padding-inline-end{syntax:"<length>";inherits:true;initial-value:0}@property --vui-select-list-border-radius{syntax:"<length-percentage>";inherits:true;initial-value:0}@property --vui-select-list-padding{syntax:"<length>";inherits:true;initial-value:0}@property --__select-list-appear-offset{syntax:"<length>";inherits:false;initial-value:8px}.viraui__select-module__Select_eXv4Y{--vui-select-input-height:var(--space-2x-large);--vui-select-control-group-background:var(--base-1);--vui-select-control-group-color:var(--global-foreground);--vui-select-control-group-border-color:var(--global-contrast);--vui-select-control-group-border-radius:var(--radius-medium);--vui-select-trigger-padding-inline-start:calc(var(--space-small) + var(--space-x-small));--vui-select-trigger-padding-inline-end:var(--space-x-small);--vui-field-label-padding-inline:calc((var(--vui-select-control-group-border-radius) + 0px) / 2);max-block-size:min-content;z-index:0;&:has([required]) .viraui__select-module__Label_-Y1fR{&:after{content:" *";color:var(--highlight-red)}&:dir(rtl){&:after{content:none}&:before{content:"* ";color:var(--highlight-red)}}}&[data-invalid]>.viraui__select-module__Trigger_-wBsg:not(:disabled):not([data-disabled]){--vui-select-control-group-border-color:var(--highlight-red);box-shadow:none;outline-color:oklab(from var(--highlight-red) l a b/.5)}}.viraui__select-module__Trigger_-wBsg{box-sizing:border-box;inline-size:100%;min-inline-size:0;block-size:var(--vui-select-input-height);padding-inline:var(--vui-select-trigger-padding-inline-start) var(--vui-select-trigger-padding-inline-end);border:1px solid var(--vui-select-control-group-border-color);border-radius:var(--vui-select-control-group-border-radius);background:var(--vui-select-control-group-background);color:var(--vui-select-control-group-color);font:inherit;text-align:start;cursor:pointer;&[data-popup-open]{outline:none}&:disabled,&[data-disabled]{--vui-select-control-group-background:var(--global-disabled-background);--vui-select-control-group-border-color:#0000;--vui-select-control-group-color:var(--global-disabled-foreground);box-shadow:none;cursor:not-allowed}}.viraui__select-module__Icon_EOwki{font-size:var(--font-scale-body-small);pointer-events:none}.viraui__select-module__Description_OmwmV{padding-inline:calc((var(--vui-select-control-group-border-radius) + 0px) / 2)}.viraui__select-module__SelectPopup_UzGXL{--vui-select-list-border-radius:var(--radius-medium);--vui-select-list-padding:var(--space-x-small);box-sizing:border-box;min-inline-size:var(--anchor-width);overflow:visible;color:var(--global-foreground);outline:none;position:relative;transform-origin:var(--transform-origin);transition:opacity var(--duration-instant) var(--easing-entrance),scale var(--duration-instant) var(--easing-entrance),translate var(--duration-instant) var(--easing-entrance);&[data-ending-style],&[data-starting-style]{opacity:0;scale:.96}&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{translate:0 calc(var(--__select-list-appear-offset) * -1)}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{translate:0 var(--__select-list-appear-offset)}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style],&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{translate:var(--__select-list-appear-offset) 0}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style],&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{translate:calc(var(--__select-list-appear-offset) * -1) 0}&[data-side=none]{transition:none;scale:1;translate:0;opacity:1}}.viraui__select-module__ScrollArrow_kHlEi{position:absolute;inset-inline:0;z-index:1;inline-size:100%;block-size:var(--space-large);cursor:default;background:var(--base-1);border:1px solid var(--global-contrast);@container root not style(--effect-vibrancy: initial){background:oklab(from var(--base-1) l a b/80%);backdrop-filter:brightness(var(--vibrancy-brightness)) blur(calc(var(--vibrancy-blur) * 1px))}}.viraui__select-module__ScrollButton_sHBOa{pointer-events:none}.viraui__select-module__ScrollArrowUp_DGXS-{inset-block-start:0;border-radius:var(--vui-select-list-border-radius) var(--vui-select-list-border-radius) 0 0}.viraui__select-module__ScrollArrowDown_vhJy0{inset-block-end:0;border-radius:0 0 var(--vui-select-list-border-radius) var(--vui-select-list-border-radius)}.viraui__select-module__List_jdUWx{box-sizing:border-box;inline-size:100%;max-block-size:var(--available-height);scroll-padding-block:var(--vui-select-list-padding);overscroll-behavior:contain;&:focus,&:focus-visible{outline:none}}.viraui__select-module__Indicator_YNUuz{min-inline-size:var(--space-medium);min-block-size:var(--space-medium);inline-size:fit-content;block-size:fit-content;color:var(--global-
|
|
1
|
+
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-select-input-height{syntax:"<length>";inherits:true;initial-value:0}@property --vui-select-control-group-background{syntax:"<color>";inherits:true;initial-value:#0000}@property --vui-select-control-group-color{syntax:"<color>";inherits:true;initial-value:#0000}@property --vui-select-control-group-border-color{syntax:"<color>";inherits:true;initial-value:#0000}@property --vui-select-control-group-border-radius{syntax:"<length-percentage>";inherits:true;initial-value:0}@property --vui-select-trigger-padding-inline-start{syntax:"<length>";inherits:true;initial-value:0}@property --vui-select-trigger-padding-inline-end{syntax:"<length>";inherits:true;initial-value:0}@property --vui-select-list-border-radius{syntax:"<length-percentage>";inherits:true;initial-value:0}@property --vui-select-list-padding{syntax:"<length>";inherits:true;initial-value:0}@property --__select-list-appear-offset{syntax:"<length>";inherits:false;initial-value:8px}.viraui__select-module__Select_eXv4Y{--vui-select-input-height:var(--space-2x-large);--vui-select-control-group-background:var(--base-1);--vui-select-control-group-color:var(--global-foreground);--vui-select-control-group-border-color:var(--global-contrast);--vui-select-control-group-border-radius:var(--radius-medium);--vui-select-trigger-padding-inline-start:calc(var(--space-small) + var(--space-x-small));--vui-select-trigger-padding-inline-end:var(--space-x-small);--vui-field-label-padding-inline:calc((var(--vui-select-control-group-border-radius) + 0px) / 2);max-block-size:min-content;z-index:0;&:has([required]) .viraui__select-module__Label_-Y1fR{&:after{content:" *";color:var(--highlight-red)}&:dir(rtl){&:after{content:none}&:before{content:"* ";color:var(--highlight-red)}}}&[data-invalid]>.viraui__select-module__Trigger_-wBsg:not(:disabled):not([data-disabled]){--vui-select-control-group-border-color:var(--highlight-red);box-shadow:none;outline-color:oklab(from var(--highlight-red) l a b/.5)}}.viraui__select-module__Trigger_-wBsg{box-sizing:border-box;inline-size:100%;min-inline-size:0;block-size:var(--vui-select-input-height);padding-inline:var(--vui-select-trigger-padding-inline-start) var(--vui-select-trigger-padding-inline-end);border:1px solid var(--vui-select-control-group-border-color);border-radius:var(--vui-select-control-group-border-radius);background:var(--vui-select-control-group-background);color:var(--vui-select-control-group-color);font:inherit;text-align:start;cursor:pointer;&[data-popup-open]{outline:none}&:disabled,&[data-disabled]{--vui-select-control-group-background:var(--global-disabled-background);--vui-select-control-group-border-color:#0000;--vui-select-control-group-color:var(--global-disabled-foreground);box-shadow:none;cursor:not-allowed}}.viraui__select-module__Icon_EOwki{font-size:var(--font-scale-body-small);pointer-events:none}.viraui__select-module__Description_OmwmV{padding-inline:calc((var(--vui-select-control-group-border-radius) + 0px) / 2)}.viraui__select-module__SelectPopup_UzGXL{--vui-select-list-border-radius:var(--radius-medium);--vui-select-list-padding:var(--space-x-small);box-sizing:border-box;min-inline-size:var(--anchor-width);overflow:visible;color:var(--global-foreground);outline:none;position:relative;transform-origin:var(--transform-origin);transition:opacity var(--duration-instant) var(--easing-entrance),scale var(--duration-instant) var(--easing-entrance),translate var(--duration-instant) var(--easing-entrance);&[data-ending-style],&[data-starting-style]{opacity:0;scale:.96}&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{translate:0 calc(var(--__select-list-appear-offset) * -1)}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{translate:0 var(--__select-list-appear-offset)}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style],&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{translate:var(--__select-list-appear-offset) 0}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style],&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{translate:calc(var(--__select-list-appear-offset) * -1) 0}&[data-side=none]{transition:none;scale:1;translate:0;opacity:1}}.viraui__select-module__ScrollArrow_kHlEi{position:absolute;inset-inline:0;z-index:1;inline-size:100%;block-size:var(--space-large);cursor:default;background:var(--base-1);border:1px solid var(--global-contrast);@container root not style(--effect-vibrancy: initial){background:oklab(from var(--base-1) l a b/80%);backdrop-filter:brightness(var(--vibrancy-brightness)) blur(calc(var(--vibrancy-blur) * 1px))}}.viraui__select-module__ScrollButton_sHBOa{pointer-events:none}.viraui__select-module__ScrollArrowUp_DGXS-{inset-block-start:0;border-radius:var(--vui-select-list-border-radius) var(--vui-select-list-border-radius) 0 0}.viraui__select-module__ScrollArrowDown_vhJy0{inset-block-end:0;border-radius:0 0 var(--vui-select-list-border-radius) var(--vui-select-list-border-radius)}.viraui__select-module__List_jdUWx{box-sizing:border-box;inline-size:100%;max-block-size:var(--available-height);scroll-padding-block:var(--vui-select-list-padding);overscroll-behavior:contain;&:focus,&:focus-visible{outline:none}}.viraui__select-module__Indicator_YNUuz{min-inline-size:var(--space-medium);min-block-size:var(--space-medium);inline-size:fit-content;block-size:fit-content;color:var(--global-foreground);opacity:0;transition:opacity var(--duration-fast) var(--easing-standard),transform var(--duration-fast) var(--easing-standard);&[data-selected]{opacity:1}}}@layer viraui.overrides{.viraui__select-module__Value_uWHPX{flex:1 1 auto;min-inline-size:0;overflow:hidden;display:block;text-overflow:ellipsis;&[data-placeholder]{color:var(--global-disabled-foreground)}}.viraui__select-module__Option_KgYqz{cursor:pointer;&:focus{outline:none}&:focus-visible{outline:none;box-shadow:none}&:not([data-disabled]):hover,&:not([data-disabled])[data-highlighted]{background:var(--global-contrast);@container root not style(--effect-vibrancy: initial){background:oklab(from var(--global-contrast) l a b/12%)}}&:not([data-disabled],:hover)[data-selected]{background:light-dark(oklab(from var(--global-contrast) l a b/8%),oklab(from var(--global-contrast) l a b/5%))}&[data-disabled]{color:var(--global-disabled-foreground);cursor:not-allowed}}}
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"Leaving the trigger without label or aria-label",
|
|
28
28
|
"Never set the size prop (if present) of Buttons, IconButtons or other interactive elements passed as addon other than small",
|
|
29
29
|
"Using the Select component as a combobox, use Autocomplete instead.",
|
|
30
|
-
"
|
|
30
|
+
"Leaving alignListWithTrigger enabled when options have a leading addon"
|
|
31
31
|
],
|
|
32
32
|
"related": ["Autocomplete", "Fieldset", "Textfield", "Stack", "Surface", "Icon"],
|
|
33
33
|
"properties": {
|
|
@@ -20,4 +20,11 @@ export type SpinnerProps = Omit<React.ComponentProps<'svg'>, 'color'> & {
|
|
|
20
20
|
*/
|
|
21
21
|
variant?: SpinnerVariant;
|
|
22
22
|
};
|
|
23
|
+
/**
|
|
24
|
+
* Decorative loading indicator.
|
|
25
|
+
*
|
|
26
|
+
* The component does not hide itself from assistive technology. Consumers must
|
|
27
|
+
* set `aria-hidden` on decorative instances and expose loading status through
|
|
28
|
+
* the surrounding control or region.
|
|
29
|
+
*/
|
|
23
30
|
export declare const Spinner: React.FC<SpinnerProps>;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "Spinner",
|
|
3
|
-
"structure": "<Spinner />",
|
|
3
|
+
"structure": "<Spinner aria-hidden />",
|
|
4
4
|
"summary": "Decorative SVG pulsing loading indicator used inside interactive components.",
|
|
5
5
|
"whenToUse": [
|
|
6
6
|
"Inline loading overlay inside Button or IconButton",
|
|
7
|
-
"Decorative in-progress indicator
|
|
7
|
+
"Decorative in-progress indicator explicitly hidden from assistive technology",
|
|
8
8
|
"Loading feedback where the parent exposes the accessible status"
|
|
9
9
|
],
|
|
10
10
|
"whenNotToUse": [
|
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
"Page-level loading when a labeled region is not provided"
|
|
13
13
|
],
|
|
14
14
|
"accessibility": [
|
|
15
|
-
"
|
|
15
|
+
"Set aria-hidden on decorative Spinner instances; the component does not hide itself by default",
|
|
16
|
+
"Parent control or region must expose loading with aria-busy or visible status text",
|
|
16
17
|
"Do not use Spinner alone as the only page-level loading announcement",
|
|
17
18
|
"Keep the control label stable while loading overlays appear"
|
|
18
19
|
],
|
|
@@ -5,6 +5,13 @@ import { SPINNER_GLYPHS, SPINNER_VIEW_BOXES, isLazySpinnerVariant } from "./vari
|
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
6
6
|
import { Suspense } from "react";
|
|
7
7
|
//#region src/components/spinner/spinner.tsx
|
|
8
|
+
/**
|
|
9
|
+
* Decorative loading indicator.
|
|
10
|
+
*
|
|
11
|
+
* The component does not hide itself from assistive technology. Consumers must
|
|
12
|
+
* set `aria-hidden` on decorative instances and expose loading status through
|
|
13
|
+
* the surrounding control or region.
|
|
14
|
+
*/
|
|
8
15
|
var Spinner = ({ className, color, size = "big", variant = "bars", ref, style, ...otherProps }) => {
|
|
9
16
|
const Glyph = SPINNER_GLYPHS[variant];
|
|
10
17
|
const glyph = /* @__PURE__ */ jsx(Glyph, {});
|
|
@@ -9,7 +9,7 @@ type ToastBannerChildren = React.ReactElement<ToastActionProps> | React.ReactEle
|
|
|
9
9
|
*/
|
|
10
10
|
export type ToastBannerProps = ToastRootNamespace.Props & {
|
|
11
11
|
/**
|
|
12
|
-
* Toast instance from `useToastManager().toasts` or `createToastManager()`.
|
|
12
|
+
* Toast instance from `Toast.useToastManager().toasts` or `Toast.createToastManager()`.
|
|
13
13
|
*/
|
|
14
14
|
toast: ToastRootNamespace.ToastObject;
|
|
15
15
|
/**
|
|
@@ -10,9 +10,10 @@ type ToastComponent = Omit<typeof PrimitiveToast, 'Viewport' | 'Action' | 'Arrow
|
|
|
10
10
|
Action: React.FC<ToastActionProps>;
|
|
11
11
|
};
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
13
|
+
* Non-callable compound Toast namespace built on Base UI Toast primitives.
|
|
14
14
|
*
|
|
15
15
|
* Compose `Toast.Provider`, `Toast.Portal`, and `Toast.Viewport` with `Toast.Banner`
|
|
16
16
|
* for stacked notifications, or wrap anchored toasts in `Toast.Positioner`.
|
|
17
|
+
* Manager helpers are `Toast.useToastManager()` and `Toast.createToastManager()`.
|
|
17
18
|
*/
|
|
18
19
|
export declare const Toast: ToastComponent;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "Toast",
|
|
3
3
|
"baseUIApi": "https://base-ui.com/react/components/toast#api-reference",
|
|
4
4
|
"structure": "<Toast.Provider>\n <Toast.Portal>\n <Toast.Viewport>\n <Toast.Banner toast={…}>\n <Toast.Action>…</Toast.Action>\n </Toast.Banner>\n </Toast.Viewport>\n </Toast.Portal>\n</Toast.Provider>",
|
|
5
|
-
"summary": "
|
|
5
|
+
"summary": "Non-callable compound Toast namespace for transient notifications, with stacked or anchored placement, Banner high-level API, and optional action buttons.",
|
|
6
6
|
"whenToUse": [
|
|
7
7
|
"Confirming a completed action such as save or delete",
|
|
8
8
|
"Offering a short undo window after a reversible change",
|
|
@@ -50,10 +50,7 @@
|
|
|
50
50
|
"description": "Heading above the description. Falls back to `toast.title` from `toastManager.add`."
|
|
51
51
|
},
|
|
52
52
|
"Banner.toast": {
|
|
53
|
-
"description": "Toast instance from `useToastManager().toasts` or `createToastManager()`."
|
|
54
|
-
},
|
|
55
|
-
"Portal.container": {
|
|
56
|
-
"description": "Portal mount node (iframe body, shadow root, or app overlay root). Omit for Base UI default (`document.body` from the module window — iframe hosts must pass the iframe document body explicitly)."
|
|
53
|
+
"description": "Toast instance from `Toast.useToastManager().toasts` or `Toast.createToastManager()`."
|
|
57
54
|
},
|
|
58
55
|
"Viewport.position": {
|
|
59
56
|
"description": "Controls viewport placement and stacking layout hooks."
|
|
@@ -7,10 +7,11 @@ import { Toast } from "@base-ui/react/toast";
|
|
|
7
7
|
//#region src/components/toast/toast.tsx
|
|
8
8
|
var { Arrow: _PrimitiveToastArrow, Viewport: _PrimitiveToastViewport, Action: _PrimitiveToastAction, ...primitiveToast } = Toast;
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
10
|
+
* Non-callable compound Toast namespace built on Base UI Toast primitives.
|
|
11
11
|
*
|
|
12
12
|
* Compose `Toast.Provider`, `Toast.Portal`, and `Toast.Viewport` with `Toast.Banner`
|
|
13
13
|
* for stacked notifications, or wrap anchored toasts in `Toast.Positioner`.
|
|
14
|
+
* Manager helpers are `Toast.useToastManager()` and `Toast.createToastManager()`.
|
|
14
15
|
*/
|
|
15
16
|
var Toast$1 = {
|
|
16
17
|
...primitiveToast,
|
|
@@ -2,6 +2,13 @@ import { Toggle as TogglePrimitive } from '@base-ui/react/toggle';
|
|
|
2
2
|
import { ButtonProps } from '../button/button';
|
|
3
3
|
import { IconButtonProps } from '../icon-button/icon-button';
|
|
4
4
|
import { ReactNode } from 'react';
|
|
5
|
+
type ToggleButtonAccessibleNameProps = {
|
|
6
|
+
'aria-label': string;
|
|
7
|
+
'aria-labelledby'?: never;
|
|
8
|
+
} | {
|
|
9
|
+
'aria-labelledby': string;
|
|
10
|
+
'aria-label'?: never;
|
|
11
|
+
};
|
|
5
12
|
/**
|
|
6
13
|
* Public ToggleButton props.
|
|
7
14
|
*
|
|
@@ -10,7 +17,7 @@ import { ReactNode } from 'react';
|
|
|
10
17
|
*
|
|
11
18
|
* @default Base UI toggle pass-through props keep upstream defaults.
|
|
12
19
|
*/
|
|
13
|
-
export type ToggleButtonProps = Omit<IconButtonProps, 'icon' | 'render' | 'variant'> & TogglePrimitive.Props & {
|
|
20
|
+
export type ToggleButtonProps = Omit<IconButtonProps, 'icon' | 'render' | 'variant' | 'children' | 'aria-label' | 'aria-labelledby'> & Omit<TogglePrimitive.Props, 'render' | 'children' | 'aria-label' | 'aria-labelledby'> & ToggleButtonAccessibleNameProps & {
|
|
14
21
|
/**
|
|
15
22
|
* Icon shown while the toggle is not pressed.
|
|
16
23
|
*
|
|
@@ -44,3 +51,4 @@ export type ToggleButtonProps = Omit<IconButtonProps, 'icon' | 'render' | 'varia
|
|
|
44
51
|
interpolateIcons?: boolean;
|
|
45
52
|
};
|
|
46
53
|
export declare const ToggleButton: React.FC<ToggleButtonProps>;
|
|
54
|
+
export {};
|
|
@@ -49,6 +49,32 @@
|
|
|
49
49
|
"variant": {
|
|
50
50
|
"description": "Visual variant while the toggle is not pressed."
|
|
51
51
|
}
|
|
52
|
+
},
|
|
53
|
+
"css": {
|
|
54
|
+
"background": {
|
|
55
|
+
"description": "Button fill; variant and state selectors preset this."
|
|
56
|
+
},
|
|
57
|
+
"color": {
|
|
58
|
+
"description": "Button label and icon color."
|
|
59
|
+
},
|
|
60
|
+
"height": {
|
|
61
|
+
"description": "Button block size; size prop presets via data attributes."
|
|
62
|
+
},
|
|
63
|
+
"icon-size": {
|
|
64
|
+
"description": "Addon icon size inside the button."
|
|
65
|
+
},
|
|
66
|
+
"padding-block": {
|
|
67
|
+
"description": "Vertical padding inside the button."
|
|
68
|
+
},
|
|
69
|
+
"padding-inline": {
|
|
70
|
+
"description": "Horizontal padding inside the button."
|
|
71
|
+
},
|
|
72
|
+
"radius": {
|
|
73
|
+
"description": "Corner radius; pill sets infinite radius via data-pill."
|
|
74
|
+
},
|
|
75
|
+
"spinner-color": {
|
|
76
|
+
"description": "Loading spinner color on the root."
|
|
77
|
+
}
|
|
52
78
|
}
|
|
53
79
|
}
|
|
54
80
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "Tooltip",
|
|
3
3
|
"baseUIApi": "https://base-ui.com/react/components/tooltip#api-reference",
|
|
4
|
-
"structure": "<Tooltip>\n <Tooltip.Trigger />\n
|
|
4
|
+
"structure": "<Tooltip.Provider>\n <Tooltip>\n <Tooltip.Trigger />\n <Tooltip.Content />\n </Tooltip>\n</Tooltip.Provider>",
|
|
5
5
|
"summary": "Compound tooltip built on Base UI Tooltip with `Tooltip.Provider`, `Tooltip.Trigger`, `Tooltip.Content`, and `Tooltip.createHandle` for detached and multiple triggers; `Content` encapsulates Portal + Positioner + Popup + Viewport and animates position, size, and content between triggers.",
|
|
6
6
|
"whenToUse": [
|
|
7
7
|
"Short hints on hover or focus for toolbar controls and icon buttons",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@viraui/react",
|
|
3
|
-
"version": "2026.0.
|
|
3
|
+
"version": "2026.0.18",
|
|
4
4
|
"private": false,
|
|
5
5
|
"files": [
|
|
6
6
|
"dist"
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"unplugin-dts": "1.0.3",
|
|
36
36
|
"vite": "8.1.4",
|
|
37
37
|
"vite-plugin-static-copy": "4.1.1",
|
|
38
|
-
"@viraui/foundation": "2026.0.
|
|
38
|
+
"@viraui/foundation": "2026.0.18",
|
|
39
39
|
"@viraui/icons": "2026.0.0",
|
|
40
40
|
"@viraui/postcss-config": "2026.0.0",
|
|
41
41
|
"@viraui/tsconfig": "2026.0.0"
|