@viraui/react 2026.0.13 → 2026.0.15
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/components/accordion/accordion-item.js +0 -2
- package/dist/components/accordion/accordion.js +1 -2
- package/dist/components/autocomplete/autocomplete-group.js +0 -2
- package/dist/components/autocomplete/autocomplete-item.js +1 -1
- package/dist/components/autocomplete/autocomplete.d.ts +9 -1
- package/dist/components/autocomplete/autocomplete.guide.json +5 -1
- package/dist/components/autocomplete/autocomplete.js +44 -40
- package/dist/components/avatar-group/avatar-group.js +0 -1
- package/dist/components/basic-input/input-control-group.js +0 -3
- package/dist/components/checkbox/checkbox-group.js +1 -4
- package/dist/components/checkbox/checkbox.js +0 -2
- package/dist/components/chip/chip.js +0 -1
- package/dist/components/dialog/dialog-sheet.d.ts +9 -0
- package/dist/components/dialog/dialog-sheet.js +72 -67
- package/dist/components/dialog/dialog.guide.json +5 -1
- package/dist/components/fieldset/fieldset.js +1 -0
- package/dist/components/linear-progress/linear-progress.js +0 -2
- package/dist/components/masonry/masonry.js +0 -1
- package/dist/components/menu/menu-group.js +0 -2
- package/dist/components/menu/menu-indicator-slot.js +0 -2
- package/dist/components/menu/menu-item-row.js +1 -1
- package/dist/components/menu/menu-link-item.js +4 -1
- package/dist/components/menu/menu-popup.d.ts +9 -1
- package/dist/components/menu/menu-popup.js +21 -18
- package/dist/components/menu/menu-radio-group.js +0 -2
- package/dist/components/menu/menu.guide.json +5 -1
- package/dist/components/meter/meter.js +0 -2
- package/dist/components/popover/popover-sheet.d.ts +13 -3
- package/dist/components/popover/popover-sheet.js +62 -62
- package/dist/components/popover/popover.guide.json +5 -1
- package/dist/components/radio/radio-group.js +0 -1
- package/dist/components/radio/radio.js +0 -2
- package/dist/components/select/select-group.js +0 -2
- package/dist/components/select/select-indicator-slot.js +0 -2
- package/dist/components/select/select-option.js +2 -1
- package/dist/components/select/select.d.ts +10 -2
- package/dist/components/select/select.guide.json +5 -1
- package/dist/components/select/select.js +60 -58
- package/dist/components/separator/separator.js +0 -1
- package/dist/components/slider/slider-control.js +0 -1
- package/dist/components/slider/slider.js +1 -2
- package/dist/components/stack/stack.d.ts +1 -1
- package/dist/components/stack/stack.guide.json +3 -2
- package/dist/components/stack/stack.js +1 -1
- package/dist/components/switch/switch.js +0 -3
- package/dist/components/tabs/tabs-list.js +1 -0
- package/dist/components/tabs/tabs.js +0 -1
- package/dist/components/textarea/textarea.js +1 -0
- package/dist/components/textfield/textfield.js +1 -0
- package/dist/components/toast/toast-banner.js +0 -3
- package/dist/components/toast/toast.guide.json +5 -1
- package/dist/components/toggle-group/toggle-group.js +1 -4
- package/dist/components/tooltip/tooltip-content.d.ts +11 -2
- package/dist/components/tooltip/tooltip-content.js +23 -21
- package/dist/components/tooltip/tooltip.guide.json +7 -1
- package/dist/preflight-surface.json +24 -1
- package/package.json +2 -2
|
@@ -14,7 +14,6 @@ var TabsRootComponent = ({ children, className, listAlignment = "start", ...othe
|
|
|
14
14
|
render: /* @__PURE__ */ jsx(Stack, {
|
|
15
15
|
hAlign: listAlignment,
|
|
16
16
|
vAlign: "start",
|
|
17
|
-
fillChildren: false,
|
|
18
17
|
className: clsx(tabs_module_default.Tabs, className)
|
|
19
18
|
}),
|
|
20
19
|
...otherProps,
|
|
@@ -27,14 +27,12 @@ var ToastBanner = ({ children, className, description, dismissable = true, dismi
|
|
|
27
27
|
className: toast_module_default.Content,
|
|
28
28
|
columnGap: "medium",
|
|
29
29
|
direction: "row",
|
|
30
|
-
fillChildren: false,
|
|
31
30
|
hAlign: "space-between",
|
|
32
31
|
vAlign: "center",
|
|
33
32
|
hPadding: "large",
|
|
34
33
|
vPadding: "large"
|
|
35
34
|
}),
|
|
36
35
|
children: [/* @__PURE__ */ jsxs(Stack, {
|
|
37
|
-
fillChildren: false,
|
|
38
36
|
rowGap: "small",
|
|
39
37
|
children: [resolvedTitle && /* @__PURE__ */ jsx(Toast.Title, {
|
|
40
38
|
render: /* @__PURE__ */ jsx(Text, { size: "medium" }),
|
|
@@ -50,7 +48,6 @@ var ToastBanner = ({ children, className, description, dismissable = true, dismi
|
|
|
50
48
|
}), (dismissable || Boolean(actions.length)) && /* @__PURE__ */ jsxs(Stack, {
|
|
51
49
|
columnGap: "small",
|
|
52
50
|
direction: "row",
|
|
53
|
-
fillChildren: false,
|
|
54
51
|
children: [dismissable && /* @__PURE__ */ jsx(Toast.Close, {
|
|
55
52
|
render: /* @__PURE__ */ jsx(Button, { variant: "secondary" }),
|
|
56
53
|
onClick: () => {
|
|
@@ -6,7 +6,8 @@
|
|
|
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",
|
|
9
|
-
"Showing contextual feedback anchored to the control that triggered it"
|
|
9
|
+
"Showing contextual feedback anchored to the control that triggered it",
|
|
10
|
+
"Custom portal host (iframe preview, shadow root, or app overlay root) via `container` on the portal-owning public part"
|
|
10
11
|
],
|
|
11
12
|
"whenNotToUse": [
|
|
12
13
|
"Blocking errors that need immediate correction — use inline field errors or a dialog",
|
|
@@ -51,6 +52,9 @@
|
|
|
51
52
|
"Banner.toast": {
|
|
52
53
|
"description": "Toast instance from `useToastManager().toasts` or `createToastManager()`."
|
|
53
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)."
|
|
57
|
+
},
|
|
54
58
|
"Viewport.position": {
|
|
55
59
|
"description": "Controls viewport placement and stacking layout hooks."
|
|
56
60
|
}
|
|
@@ -5,10 +5,7 @@ import { ToggleGroup } from "@base-ui/react/toggle-group";
|
|
|
5
5
|
var ToggleGroup$1 = ({ children, orientation = "horizontal", ...otherProps }) => /* @__PURE__ */ jsx(ToggleGroup, {
|
|
6
6
|
...otherProps,
|
|
7
7
|
orientation,
|
|
8
|
-
render: /* @__PURE__ */ jsx(Stack, {
|
|
9
|
-
direction: orientation === "vertical" ? "column" : "row",
|
|
10
|
-
fillChildren: false
|
|
11
|
-
}),
|
|
8
|
+
render: /* @__PURE__ */ jsx(Stack, { direction: orientation === "vertical" ? "column" : "row" }),
|
|
12
9
|
children
|
|
13
10
|
});
|
|
14
11
|
//#endregion
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TooltipPositioner } from '@base-ui/react/tooltip';
|
|
1
|
+
import { Tooltip as PrimitiveTooltip, TooltipPositioner } from '@base-ui/react/tooltip';
|
|
2
2
|
import type * as React from 'react';
|
|
3
3
|
type TooltipContentPositionerProps = Omit<TooltipPositioner.Props, 'className' | 'style' | 'render'>;
|
|
4
4
|
/**
|
|
@@ -10,6 +10,15 @@ type TooltipContentPositionerProps = Omit<TooltipPositioner.Props, 'className' |
|
|
|
10
10
|
*
|
|
11
11
|
* @default `sideOffset` is `8`.
|
|
12
12
|
*/
|
|
13
|
-
export type TooltipContentProps = TooltipContentPositionerProps
|
|
13
|
+
export type TooltipContentProps = TooltipContentPositionerProps & {
|
|
14
|
+
/**
|
|
15
|
+
* Portal mount node (iframe body, shadow root, or app overlay root).
|
|
16
|
+
* Omit for Base UI default (`document.body` from the module window —
|
|
17
|
+
* iframe hosts must pass the iframe document body explicitly).
|
|
18
|
+
*
|
|
19
|
+
* @default Base UI FloatingPortal resolution
|
|
20
|
+
*/
|
|
21
|
+
container?: React.ComponentProps<typeof PrimitiveTooltip.Portal>['container'];
|
|
22
|
+
};
|
|
14
23
|
export declare const TooltipContent: React.FC<TooltipContentProps>;
|
|
15
24
|
export {};
|
|
@@ -4,29 +4,31 @@ import tooltip_module_default from "./tooltip.module.js";
|
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
5
5
|
import { Tooltip } from "@base-ui/react/tooltip";
|
|
6
6
|
//#region src/components/tooltip/tooltip-content.tsx
|
|
7
|
-
var TooltipContent = ({ children, sideOffset = 8, ...positionerProps }) => /* @__PURE__ */ jsx(Tooltip.Portal, {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
className: tooltip_module_default.Viewport,
|
|
22
|
-
render: /* @__PURE__ */ jsx(Stack, {
|
|
23
|
-
vPadding: "small",
|
|
24
|
-
hPadding: "small",
|
|
25
|
-
fillChildren: false
|
|
7
|
+
var TooltipContent = ({ children, sideOffset = 8, container, ...positionerProps }) => /* @__PURE__ */ jsx(Tooltip.Portal, {
|
|
8
|
+
container,
|
|
9
|
+
children: /* @__PURE__ */ jsx(Tooltip.Positioner, {
|
|
10
|
+
className: tooltip_module_default.Positioner,
|
|
11
|
+
sideOffset,
|
|
12
|
+
...positionerProps,
|
|
13
|
+
children: /* @__PURE__ */ jsx(Tooltip.Popup, {
|
|
14
|
+
className: tooltip_module_default.Popup,
|
|
15
|
+
role: "tooltip",
|
|
16
|
+
render: /* @__PURE__ */ jsx(Surface, {
|
|
17
|
+
color: 1,
|
|
18
|
+
border: "all",
|
|
19
|
+
radius: "medium",
|
|
20
|
+
"data-vibrant": ""
|
|
26
21
|
}),
|
|
27
|
-
children
|
|
22
|
+
children: /* @__PURE__ */ jsx(Tooltip.Viewport, {
|
|
23
|
+
className: tooltip_module_default.Viewport,
|
|
24
|
+
render: /* @__PURE__ */ jsx(Stack, {
|
|
25
|
+
vPadding: "small",
|
|
26
|
+
hPadding: "small"
|
|
27
|
+
}),
|
|
28
|
+
children
|
|
29
|
+
})
|
|
28
30
|
})
|
|
29
31
|
})
|
|
30
|
-
})
|
|
32
|
+
});
|
|
31
33
|
//#endregion
|
|
32
34
|
export { TooltipContent };
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
"whenToUse": [
|
|
7
7
|
"Short hints on hover or focus for toolbar controls and icon buttons",
|
|
8
8
|
"Per-trigger labels on shared tooltip roots using `payload` and Root render-function children",
|
|
9
|
-
"Adjacent controls that benefit from shared open/close delay via `Tooltip.Provider`"
|
|
9
|
+
"Adjacent controls that benefit from shared open/close delay via `Tooltip.Provider`",
|
|
10
|
+
"Custom portal host (iframe preview, shadow root, or app overlay root) via `container` on the portal-owning public part"
|
|
10
11
|
],
|
|
11
12
|
"whenNotToUse": [
|
|
12
13
|
"Rich interactive panels or forms (use Popover or Dialog)",
|
|
@@ -29,6 +30,11 @@
|
|
|
29
30
|
"content-fade-duration": {
|
|
30
31
|
"description": "content fade duration custom property on the component root."
|
|
31
32
|
}
|
|
33
|
+
},
|
|
34
|
+
"react": {
|
|
35
|
+
"Content.container": {
|
|
36
|
+
"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)."
|
|
37
|
+
}
|
|
32
38
|
}
|
|
33
39
|
}
|
|
34
40
|
}
|
|
@@ -26,6 +26,11 @@
|
|
|
26
26
|
"id": "layout",
|
|
27
27
|
"file": "layout.css",
|
|
28
28
|
"purpose": "Flex growth and shrink utilities via data-grow / data-shrink for Stack and component children."
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"id": "vibrancy",
|
|
32
|
+
"file": "vibrancy.css",
|
|
33
|
+
"purpose": "Theme-gated backdrop-filter vibrancy on elements that opt in with data-vibrant."
|
|
29
34
|
}
|
|
30
35
|
],
|
|
31
36
|
"attributes": [
|
|
@@ -120,6 +125,22 @@
|
|
|
120
125
|
],
|
|
121
126
|
"whenNotToUse": ["When default flex shrink is already correct"],
|
|
122
127
|
"related": ["Stack"]
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"name": "data-vibrant",
|
|
131
|
+
"module": "vibrancy",
|
|
132
|
+
"values": ["(boolean presence)"],
|
|
133
|
+
"presence": "boolean attribute; value ignored",
|
|
134
|
+
"effect": "When the active theme sets --effect-vibrancy, applies vibrancy backdrop-filter (brightness/blur/saturate). Surface with data-vibrant may also translucify its background via component CSS.",
|
|
135
|
+
"whenToUse": [
|
|
136
|
+
"Glass / frosted panels on Surface or other hosts over busy backgrounds",
|
|
137
|
+
"Match overlay chrome (Dialog/Popover/Menu/Toast) that ships with data-vibrant"
|
|
138
|
+
],
|
|
139
|
+
"whenNotToUse": [
|
|
140
|
+
"When the theme does not expose --effect-vibrancy (attr is a no-op for filters)",
|
|
141
|
+
"Hand-rolling backdrop-filter CSS instead of the documented attr"
|
|
142
|
+
],
|
|
143
|
+
"related": ["Surface", "--effect-vibrancy", "--vibrancy-blur", "--vibrancy-brightness"]
|
|
123
144
|
}
|
|
124
145
|
],
|
|
125
146
|
"customProperties": [
|
|
@@ -176,7 +197,9 @@
|
|
|
176
197
|
"antiPatterns": [
|
|
177
198
|
"Using data-elevation without importing @viraui/react/preflight.css",
|
|
178
199
|
"Fighting data-mode color-scheme rules without documenting a deliberate override",
|
|
179
|
-
"Applying data-no-link-style to prose links that should use the default interactive underline treatment"
|
|
200
|
+
"Applying data-no-link-style to prose links that should use the default interactive underline treatment",
|
|
201
|
+
"Inventing backdrop-filter CSS instead of data-vibrant when vibrancy is desired",
|
|
202
|
+
"Shipping a new consumer-facing data-* without updating preflight-surface.json and viraui-design/custom-attributes.md"
|
|
180
203
|
],
|
|
181
204
|
"discovery": {
|
|
182
205
|
"consumption": "@viraui/react/consumption.json",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@viraui/react",
|
|
3
|
-
"version": "2026.0.
|
|
3
|
+
"version": "2026.0.15",
|
|
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.15",
|
|
39
39
|
"@viraui/icons": "2026.0.0",
|
|
40
40
|
"@viraui/postcss-config": "2026.0.0",
|
|
41
41
|
"@viraui/tsconfig": "2026.0.0"
|