@arcfusionz/arc-primitive-ui 0.3.9 → 0.3.11

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.
@@ -1,4 +1,5 @@
1
1
  import { cn } from "../../lib/cn.js";
2
+ import { Box } from "../Box/Box.js";
2
3
  import { dialogPopupVariants } from "../Dialog/Dialog.js";
3
4
  import { forwardRef } from "react";
4
5
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -67,6 +68,11 @@ const AlertDialogPopup = forwardRef(({ size = "sm", scrollBehavior = "inside", k
67
68
  className: cn(viewportBaseClasses, scrollBehavior === "inside" ? viewportInsideClasses : viewportOutsideClasses),
68
69
  children: /* @__PURE__ */ jsx(AlertDialog.Popup, {
69
70
  ref,
71
+ render: /* @__PURE__ */ jsx(Box, {
72
+ padding: "lg",
73
+ radius: "lg",
74
+ shadow: "lg"
75
+ }),
70
76
  className: cn(alertDialogPopupVariants({
71
77
  size,
72
78
  scrollBehavior
@@ -6,7 +6,7 @@ import { Button } from "@base-ui/react/button";
6
6
  const baseClasses = "relative inline-flex items-center justify-center whitespace-nowrap select-none rounded-md font-sans font-semibold transition-colors duration-150 cursor-pointer focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 disabled:pointer-events-none disabled:opacity-50 data-disabled:pointer-events-none data-disabled:opacity-50";
7
7
  const variantClasses = {
8
8
  primary: "bg-primary text-primary-foreground hover:bg-primary-700 active:bg-primary-800",
9
- secondary: "bg-secondary text-secondary-foreground hover:bg-primary-50 active:bg-primary-200",
9
+ secondary: "border border-primary-200 bg-primary-50 text-secondary-foreground hover:bg-primary-100 active:bg-primary-200",
10
10
  outline: "border border-border bg-transparent text-foreground hover:bg-muted active:bg-slate-200",
11
11
  ghost: "bg-transparent text-primary hover:bg-primary-50 active:bg-primary-100",
12
12
  destructive: "bg-destructive text-destructive-foreground hover:bg-error-700 active:bg-error-800",
@@ -1,4 +1,5 @@
1
1
  import { cn } from "../../lib/cn.js";
2
+ import { Box, boxVariants } from "../Box/Box.js";
2
3
  import { inputVariants } from "../Input/Input.js";
3
4
  import { selectTriggerVariants } from "../Select/Select.js";
4
5
  import { createContext, forwardRef, useContext } from "react";
@@ -225,7 +226,12 @@ ComboboxTrigger.displayName = "ComboboxTrigger";
225
226
  * renders no element of its own; the trigger styles the text.
226
227
  */
227
228
  const ComboboxValue = Combobox.Value;
228
- const popupSurfaceClasses = "relative overflow-clip rounded-md border border-border bg-background font-sans text-sm text-foreground shadow-md outline-none";
229
+ const popupSurfaceClasses = boxVariants({
230
+ padding: "none",
231
+ radius: "md",
232
+ shadow: "lg",
233
+ className: "relative overflow-clip text-sm outline-none"
234
+ });
229
235
  const popupBehaviorClasses = "flex max-h-[min(var(--combobox-max-height,9999px),var(--available-height))] flex-col min-w-[var(--anchor-width)] max-w-[var(--available-width)] origin-[var(--transform-origin)] motion-safe:transition-[scale,opacity] motion-safe:duration-150 motion-safe:ease-out data-starting-style:scale-95 data-starting-style:opacity-0 data-ending-style:scale-95 data-ending-style:opacity-0";
230
236
  const listClasses = "min-h-0 scroll-py-1 overflow-y-auto overscroll-contain p-1 outline-none data-empty:p-0";
231
237
  const statusClasses = "flex shrink-0 items-center gap-2 px-3 py-2 font-sans text-xs text-muted-foreground empty:p-0";
@@ -254,6 +260,11 @@ const ComboboxPopup = forwardRef(({ align = "center", sideOffset = 4, alignOffse
254
260
  style: maxHeight != null ? { "--combobox-max-height": typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight } : void 0,
255
261
  children: /* @__PURE__ */ jsxs(Combobox.Popup, {
256
262
  ref,
263
+ render: /* @__PURE__ */ jsx(Box, {
264
+ padding: "none",
265
+ radius: "md",
266
+ shadow: "lg"
267
+ }),
257
268
  className: cn(popupSurfaceClasses, popupBehaviorClasses, className),
258
269
  ...rest,
259
270
  children: [
@@ -1,4 +1,5 @@
1
1
  import { cn } from "../../lib/cn.js";
2
+ import { Box } from "../Box/Box.js";
2
3
  import { MenuCheckboxItem, MenuGroup, MenuGroupLabel, MenuItem, MenuLinkItem, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuShortcut, MenuSubmenuRoot, MenuSubmenuTrigger, popupBehaviorClasses, popupSurfaceClasses } from "../Menu/Menu.js";
3
4
  import { forwardRef } from "react";
4
5
  import { jsx } from "react/jsx-runtime";
@@ -60,6 +61,11 @@ const ContextMenuPopup = forwardRef(({ side, align, sideOffset = side === void 0
60
61
  className: "z-50 select-none outline-none",
61
62
  children: /* @__PURE__ */ jsx(ContextMenu.Popup, {
62
63
  ref,
64
+ render: /* @__PURE__ */ jsx(Box, {
65
+ padding: "none",
66
+ radius: "md",
67
+ shadow: "lg"
68
+ }),
63
69
  className: cn(popupSurfaceClasses, popupBehaviorClasses, className),
64
70
  ...rest,
65
71
  children
@@ -1,4 +1,5 @@
1
1
  import { cn } from "../../lib/cn.js";
2
+ import { Box, boxVariants } from "../Box/Box.js";
2
3
  import { forwardRef } from "react";
3
4
  import { jsx, jsxs } from "react/jsx-runtime";
4
5
  import { Dialog } from "@base-ui/react/dialog";
@@ -43,7 +44,12 @@ const viewportSizeClasses = {
43
44
  full: "p-0"
44
45
  };
45
46
  const viewportOutsideClasses = "overflow-y-auto overscroll-contain py-12";
46
- const popupBaseClasses = "relative m-auto flex w-full flex-col gap-4 rounded-md border border-border bg-background p-6 font-sans text-foreground shadow-lg outline-none pointer-events-auto data-closed:pointer-events-none scale-[calc(1-0.05*var(--nested-dialogs))] after:pointer-events-none after:absolute after:inset-0 after:rounded-md after:bg-slate-950/5 after:opacity-0 data-nested-dialog-open:after:opacity-100 motion-safe:transition-[opacity,scale] motion-safe:duration-150 motion-safe:ease-out motion-safe:after:transition-opacity motion-safe:after:duration-150 data-starting-style:scale-95 data-starting-style:opacity-0 data-ending-style:scale-95 data-ending-style:opacity-0";
47
+ const popupBaseClasses = boxVariants({
48
+ padding: "lg",
49
+ radius: "lg",
50
+ shadow: "lg",
51
+ className: "relative m-auto flex w-full flex-col gap-4 outline-none pointer-events-auto data-closed:pointer-events-none scale-[calc(1-0.05*var(--nested-dialogs))] after:pointer-events-none after:absolute after:inset-0 after:rounded-[inherit] after:bg-slate-950/5 after:opacity-0 data-nested-dialog-open:after:opacity-100 motion-safe:transition-[opacity,scale] motion-safe:duration-150 motion-safe:ease-out motion-safe:after:transition-opacity motion-safe:after:duration-150 data-starting-style:scale-95 data-starting-style:opacity-0 data-ending-style:scale-95 data-ending-style:opacity-0"
52
+ });
47
53
  const popupSizeClasses = {
48
54
  sm: "max-w-sm",
49
55
  md: "max-w-lg",
@@ -88,6 +94,11 @@ const DialogPopup = forwardRef(({ size = "md", scrollBehavior = "inside", showCl
88
94
  className: cn(viewportBaseClasses, viewportSizeClasses[size], scroll === "inside" ? viewportInsideClasses : viewportOutsideClasses),
89
95
  children: /* @__PURE__ */ jsxs(Dialog.Popup, {
90
96
  ref,
97
+ render: /* @__PURE__ */ jsx(Box, {
98
+ padding: "lg",
99
+ radius: "lg",
100
+ shadow: "lg"
101
+ }),
91
102
  className: cn(dialogPopupVariants({
92
103
  size,
93
104
  scrollBehavior: scroll
@@ -1,4 +1,5 @@
1
1
  import { cn } from "../../lib/cn.js";
2
+ import { Box, boxVariants } from "../Box/Box.js";
2
3
  import { createContext, forwardRef, useContext, useMemo } from "react";
3
4
  import { jsx, jsxs } from "react/jsx-runtime";
4
5
  import { Drawer } from "@base-ui/react/drawer";
@@ -67,7 +68,13 @@ const viewportSideClasses = {
67
68
  bottom: "items-end justify-center",
68
69
  left: "justify-start"
69
70
  };
70
- const popupBaseClasses = "pointer-events-auto relative flex flex-col border-border bg-background font-sans text-foreground shadow-lg outline-none touch-none will-change-transform data-closed:pointer-events-none scale-[calc(1_-_0.05*var(--nested-drawers,0))] before:pointer-events-none before:absolute before:bg-inherit after:pointer-events-none after:absolute after:inset-0 after:rounded-[inherit] after:bg-slate-950/5 after:opacity-0 data-nested-drawer-open:after:opacity-100 motion-safe:transition-[transform,scale] motion-safe:duration-[450ms] motion-safe:ease-[cubic-bezier(0.32,0.72,0,1)] motion-safe:after:transition-opacity motion-safe:after:duration-[450ms] data-swiping:select-none data-swiping:duration-0 data-ending-style:duration-[calc(var(--drawer-swipe-strength,1)*400ms)]";
71
+ const popupBaseClasses = boxVariants({
72
+ border: false,
73
+ padding: "none",
74
+ radius: "none",
75
+ shadow: "lg",
76
+ className: "pointer-events-auto relative flex flex-col border-border outline-none touch-none will-change-transform data-closed:pointer-events-none scale-[calc(1_-_0.05*var(--nested-drawers,0))] before:pointer-events-none before:absolute before:bg-inherit after:pointer-events-none after:absolute after:inset-0 after:rounded-[inherit] after:bg-slate-950/5 after:opacity-0 data-nested-drawer-open:after:opacity-100 motion-safe:transition-[transform,scale] motion-safe:duration-[450ms] motion-safe:ease-[cubic-bezier(0.32,0.72,0,1)] motion-safe:after:transition-opacity motion-safe:after:duration-[450ms] data-swiping:select-none data-swiping:duration-0 data-ending-style:duration-[calc(var(--drawer-swipe-strength,1)*400ms)]"
77
+ });
71
78
  const popupSideClasses = {
72
79
  top: "w-full origin-top rounded-b-md border-b before:inset-x-0 before:bottom-full before:h-12 [transform:translateY(calc(var(--drawer-snap-point-offset,0px)_+_var(--drawer-swipe-movement-y,0px)))] data-starting-style:[transform:translateY(calc(-100%_-_2px))] data-ending-style:[transform:translateY(calc(-100%_-_2px))]",
73
80
  right: "h-full origin-right border-l before:inset-y-0 before:left-full before:w-12 [transform:translateX(var(--drawer-swipe-movement-x,0px))] data-starting-style:[transform:translateX(calc(100%_+_2px))] data-ending-style:[transform:translateX(calc(100%_+_2px))]",
@@ -136,6 +143,12 @@ const DrawerPopup = forwardRef(({ size = "md", showCloseButton = true, closeLabe
136
143
  className: cn(viewportBaseClasses, viewportSideClasses[side]),
137
144
  children: /* @__PURE__ */ jsxs(Drawer.Popup, {
138
145
  ref,
146
+ render: /* @__PURE__ */ jsx(Box, {
147
+ border: false,
148
+ padding: "none",
149
+ radius: "none",
150
+ shadow: "lg"
151
+ }),
139
152
  className: cn(drawerPopupVariants({
140
153
  side,
141
154
  size
@@ -1,4 +1,5 @@
1
1
  import { cn } from "../../lib/cn.js";
2
+ import { Box, boxVariants } from "../Box/Box.js";
2
3
  import { forwardRef } from "react";
3
4
  import { jsx, jsxs } from "react/jsx-runtime";
4
5
  import { Menu } from "@base-ui/react/menu";
@@ -83,7 +84,12 @@ const MenuTrigger = forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */
83
84
  ...rest
84
85
  }));
85
86
  MenuTrigger.displayName = "MenuTrigger";
86
- const popupSurfaceClasses = "rounded-md border border-border bg-background p-1 font-sans text-sm text-foreground shadow-md outline-none";
87
+ const popupSurfaceClasses = boxVariants({
88
+ padding: "none",
89
+ radius: "md",
90
+ shadow: "lg",
91
+ className: "p-1 text-sm outline-none"
92
+ });
87
93
  const popupBehaviorClasses = "min-w-32 max-h-[var(--available-height)] max-w-[var(--available-width)] overflow-y-auto scroll-py-1 origin-[var(--transform-origin)] motion-safe:transition-[scale,opacity] motion-safe:duration-150 motion-safe:ease-out data-starting-style:scale-95 data-starting-style:opacity-0 data-ending-style:scale-95 data-ending-style:opacity-0 data-instant:transition-none!";
88
94
  const adaptiveSideOffset = ({ side }) => side === "top" || side === "bottom" ? 4 : -4;
89
95
  const adaptiveAlignOffset = ({ side }) => side === "top" || side === "bottom" ? 0 : -4;
@@ -107,6 +113,11 @@ const MenuPopup = forwardRef(({ side, align, sideOffset = side === void 0 ? adap
107
113
  className: "z-50 select-none outline-none",
108
114
  children: /* @__PURE__ */ jsx(Menu.Popup, {
109
115
  ref,
116
+ render: /* @__PURE__ */ jsx(Box, {
117
+ padding: "none",
118
+ radius: "md",
119
+ shadow: "lg"
120
+ }),
110
121
  className: cn(popupSurfaceClasses, popupBehaviorClasses, className),
111
122
  ...rest,
112
123
  children
@@ -1,4 +1,5 @@
1
1
  import { cn } from "../../lib/cn.js";
2
+ import { Box, boxVariants } from "../Box/Box.js";
2
3
  import { forwardRef } from "react";
3
4
  import { jsx, jsxs } from "react/jsx-runtime";
4
5
  import { Popover } from "@base-ui/react/popover";
@@ -33,7 +34,12 @@ const PopoverTrigger = forwardRef(({ className, ...rest }, ref) => /* @__PURE__
33
34
  ...rest
34
35
  }));
35
36
  PopoverTrigger.displayName = "PopoverTrigger";
36
- const popupSurfaceClasses = "rounded-md border border-border bg-background p-4 font-sans text-sm text-foreground shadow-md outline-none";
37
+ const popupSurfaceClasses = boxVariants({
38
+ padding: "md",
39
+ radius: "md",
40
+ shadow: "lg",
41
+ className: "text-sm outline-none"
42
+ });
37
43
  const popupBehaviorClasses = "origin-[var(--transform-origin)] max-w-[min(20rem,var(--available-width))] motion-safe:transition-[scale,opacity] motion-safe:duration-150 motion-safe:ease-out data-starting-style:scale-95 data-starting-style:opacity-0 data-ending-style:scale-95 data-ending-style:opacity-0";
38
44
  const arrowClasses = "relative block h-1.5 w-3 overflow-clip data-[side=bottom]:top-[-6px] data-[side=top]:bottom-[-6px] data-[side=top]:rotate-180 data-[side=left]:right-[-9px] data-[side=left]:rotate-90 data-[side=right]:left-[-9px] data-[side=right]:-rotate-90 before:absolute before:bottom-0 before:left-1/2 before:h-[calc(6px*sqrt(2))] before:w-[calc(6px*sqrt(2))] before:border before:border-border before:bg-background before:content-[''] before:[transform:translate(-50%,50%)_rotate(45deg)]";
39
45
  const ARROW_PADDING = 8;
@@ -65,6 +71,11 @@ const PopoverPopup = forwardRef(({ side = "bottom", align = "center", sideOffset
65
71
  className: "z-50",
66
72
  children: /* @__PURE__ */ jsxs(Popover.Popup, {
67
73
  ref,
74
+ render: /* @__PURE__ */ jsx(Box, {
75
+ padding: "md",
76
+ radius: "md",
77
+ shadow: "lg"
78
+ }),
68
79
  className: cn(popupSurfaceClasses, popupBehaviorClasses, className),
69
80
  ...rest,
70
81
  children: [arrow && /* @__PURE__ */ jsx(Popover.Arrow, { className: arrowClasses }), children]
@@ -1,4 +1,5 @@
1
1
  import { cn } from "../../lib/cn.js";
2
+ import { Box, boxVariants } from "../Box/Box.js";
2
3
  import { forwardRef } from "react";
3
4
  import { jsx, jsxs } from "react/jsx-runtime";
4
5
  import { Select } from "@base-ui/react/select";
@@ -134,7 +135,12 @@ const SelectValue = forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */
134
135
  ...rest
135
136
  }));
136
137
  SelectValue.displayName = "SelectValue";
137
- const popupSurfaceClasses = "relative overflow-clip rounded-md border border-border bg-background font-sans text-sm text-foreground shadow-md outline-none";
138
+ const popupSurfaceClasses = boxVariants({
139
+ padding: "none",
140
+ radius: "md",
141
+ shadow: "lg",
142
+ className: "relative overflow-clip text-sm outline-none"
143
+ });
138
144
  const popupBehaviorClasses = "flex max-h-[min(var(--select-max-height,9999px),var(--available-height))] flex-col min-w-[var(--anchor-width)] max-w-[var(--available-width)] origin-[var(--transform-origin)] motion-safe:transition-[scale,opacity] motion-safe:duration-150 motion-safe:ease-out data-starting-style:scale-95 data-starting-style:opacity-0 data-ending-style:scale-95 data-ending-style:opacity-0";
139
145
  const listClasses = "min-h-0 scroll-py-6 overflow-y-auto p-1";
140
146
  const scrollArrowBaseClasses = "z-[1] flex h-6 w-full cursor-default items-center justify-center bg-background text-muted-foreground";
@@ -163,6 +169,11 @@ const SelectPopup = forwardRef(({ align = "center", sideOffset = 4, alignOffset
163
169
  style: maxHeight != null ? { "--select-max-height": typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight } : void 0,
164
170
  children: /* @__PURE__ */ jsxs(Select.Popup, {
165
171
  ref,
172
+ render: /* @__PURE__ */ jsx(Box, {
173
+ padding: "none",
174
+ radius: "md",
175
+ shadow: "lg"
176
+ }),
166
177
  className: cn(popupSurfaceClasses, popupBehaviorClasses, className),
167
178
  ...rest,
168
179
  children: [
@@ -34,7 +34,7 @@ interface TableRowRenderState extends Record<string, unknown> {
34
34
  selected: boolean;
35
35
  }
36
36
  interface TableContainerProps extends Omit<ComponentPropsWithoutRef<"div">, "className"> {
37
- /** Surface around the responsive scroll area. `elevated` is the rich card default, `outline` removes depth, and `plain` keeps only overflow behavior. */
37
+ /** Box surface around the responsive scroll area. `elevated` is the rich card default, `outline` removes depth, and `plain` keeps only overflow behavior. */
38
38
  variant?: TableContainerVariant;
39
39
  /** Replace the rendered `div` or inspect `{ variant }` in a render callback. Preserve a suitable grouping element. */
40
40
  render?: useRender.RenderProp<TableContainerRenderState>;
@@ -1,12 +1,32 @@
1
1
  import { cn } from "../../lib/cn.js";
2
+ import { Box } from "../Box/Box.js";
2
3
  import { forwardRef } from "react";
4
+ import { jsx } from "react/jsx-runtime";
3
5
  import { useRender } from "@base-ui/react/use-render";
4
6
  //#region src/components/Table/Table.tsx
5
7
  const containerClasses = "relative w-full overflow-auto overscroll-x-contain";
6
- const containerVariantClasses = {
7
- plain: "",
8
- outline: "rounded-md border border-border bg-background",
9
- elevated: "rounded-md border border-border bg-background shadow-md"
8
+ const containerVariantBoxProps = {
9
+ plain: {
10
+ background: "transparent",
11
+ border: false,
12
+ padding: "none",
13
+ radius: "none",
14
+ shadow: "none"
15
+ },
16
+ outline: {
17
+ background: "background",
18
+ border: true,
19
+ padding: "none",
20
+ radius: "lg",
21
+ shadow: "none"
22
+ },
23
+ elevated: {
24
+ background: "background",
25
+ border: true,
26
+ padding: "none",
27
+ radius: "lg",
28
+ shadow: "md"
29
+ }
10
30
  };
11
31
  const tableClasses = "w-full min-w-full border-collapse bg-background font-sans text-sm text-foreground";
12
32
  const tableSizeClasses = {
@@ -31,15 +51,15 @@ const captionSideClasses = {
31
51
  bottom: "caption-bottom border-t border-border"
32
52
  };
33
53
  const TableContainer = forwardRef(({ variant = "elevated", render, className, ...rest }, ref) => {
34
- return useRender({
35
- defaultTagName: "div",
36
- render,
54
+ const state = { variant };
55
+ const boxRender = typeof render === "function" ? (props) => render(props, state) : render;
56
+ return /* @__PURE__ */ jsx(Box, {
37
57
  ref,
38
- state: { variant },
39
- props: {
40
- ...rest,
41
- className: cn(containerClasses, containerVariantClasses[variant], className)
42
- }
58
+ ...containerVariantBoxProps[variant],
59
+ render: boxRender,
60
+ "data-variant": variant,
61
+ ...rest,
62
+ className: cn(containerClasses, className)
43
63
  });
44
64
  });
45
65
  TableContainer.displayName = "TableContainer";
@@ -1,4 +1,5 @@
1
1
  import { cn } from "../../lib/cn.js";
2
+ import { Box, boxVariants } from "../Box/Box.js";
2
3
  import { forwardRef } from "react";
3
4
  import { jsx, jsxs } from "react/jsx-runtime";
4
5
  import { Toast } from "@base-ui/react/toast";
@@ -28,7 +29,12 @@ const swipeDirections = {
28
29
  "bottom-center": ["down"],
29
30
  "bottom-right": ["down", "right"]
30
31
  };
31
- const rootBaseClasses = "[--gap:0.75rem] [--peek:0.75rem] [--scale:calc(max(0,1-(var(--toast-index)*0.1)))] [--shrink:calc(1-var(--scale))] [--height:var(--toast-frontmost-height,var(--toast-height))] absolute right-0 left-0 z-[calc(1000-var(--toast-index))] mx-auto w-full select-none h-[var(--height)] data-expanded:h-[var(--toast-height)] rounded-md border border-border bg-background text-foreground shadow-lg focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring data-ending-style:opacity-0 data-limited:opacity-0 after:absolute after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-[''] motion-safe:[transition:transform_0.5s_cubic-bezier(0.22,1,0.36,1),opacity_0.5s,height_0.15s] data-expanded:[transform:translateX(var(--toast-swipe-movement-x))_translateY(var(--offset-y))] data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))] data-expanded:data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))] data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))] data-expanded:data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))] data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))] data-expanded:data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))] data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))] data-expanded:data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]";
32
+ const rootBaseClasses = boxVariants({
33
+ padding: "none",
34
+ radius: "md",
35
+ shadow: "lg",
36
+ className: "[--gap:0.75rem] [--peek:0.75rem] [--scale:calc(max(0,1-(var(--toast-index)*0.1)))] [--shrink:calc(1-var(--scale))] [--height:var(--toast-frontmost-height,var(--toast-height))] absolute right-0 left-0 z-[calc(1000-var(--toast-index))] mx-auto w-full select-none h-[var(--height)] data-expanded:h-[var(--toast-height)] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring data-ending-style:opacity-0 data-limited:opacity-0 after:absolute after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-[''] motion-safe:[transition:transform_0.5s_cubic-bezier(0.22,1,0.36,1),opacity_0.5s,height_0.15s] data-expanded:[transform:translateX(var(--toast-swipe-movement-x))_translateY(var(--offset-y))] data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))] data-expanded:data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))] data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))] data-expanded:data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))] data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))] data-expanded:data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))] data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))] data-expanded:data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]"
37
+ });
32
38
  const rootBottomClasses = "bottom-0 origin-bottom after:top-full [--offset-y:calc(var(--toast-offset-y)*-1+calc(var(--toast-index)*var(--gap)*-1)+var(--toast-swipe-movement-y))] [transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)-(var(--toast-index)*var(--peek))-(var(--shrink)*var(--height))))_scale(var(--scale))] data-starting-style:[transform:translateY(150%)] [&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(150%)]";
33
39
  const rootTopClasses = "top-0 origin-top after:bottom-full [--offset-y:calc(var(--toast-offset-y)+(var(--toast-index)*var(--gap))+var(--toast-swipe-movement-y))] [transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)+(var(--toast-index)*var(--peek))+(var(--shrink)*var(--height))))_scale(var(--scale))] data-starting-style:[transform:translateY(-150%)] [&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(-150%)]";
34
40
  const contentClasses = "flex h-full items-start gap-3 overflow-hidden p-4 motion-safe:[transition:opacity_250ms_cubic-bezier(0.22,1,0.36,1)] data-behind:opacity-0 data-expanded:opacity-100";
@@ -258,6 +264,11 @@ function ToastList({ position, closeLabel }) {
258
264
  return toasts.map((toastObject) => /* @__PURE__ */ jsx(Toast.Root, {
259
265
  toast: toastObject,
260
266
  swipeDirection: swipeDirections[position],
267
+ render: /* @__PURE__ */ jsx(Box, {
268
+ padding: "none",
269
+ radius: "md",
270
+ shadow: "lg"
271
+ }),
261
272
  className: cn(rootBaseClasses, position.startsWith("top") ? rootTopClasses : rootBottomClasses),
262
273
  children: /* @__PURE__ */ jsxs(Toast.Content, {
263
274
  className: contentClasses,
@@ -1,4 +1,5 @@
1
1
  import { cn } from "../../lib/cn.js";
2
+ import { Box, boxVariants } from "../Box/Box.js";
2
3
  import { forwardRef } from "react";
3
4
  import { jsx, jsxs } from "react/jsx-runtime";
4
5
  import { Tooltip } from "@base-ui/react/tooltip";
@@ -49,7 +50,14 @@ const TooltipTrigger = forwardRef(({ className, ...rest }, ref) => /* @__PURE__
49
50
  ...rest
50
51
  }));
51
52
  TooltipTrigger.displayName = "TooltipTrigger";
52
- const popupSurfaceClasses = "rounded-md bg-foreground px-3 py-1.5 font-sans text-xs text-balance text-background shadow-sm";
53
+ const popupSurfaceClasses = boxVariants({
54
+ background: "transparent",
55
+ border: false,
56
+ padding: "none",
57
+ radius: "md",
58
+ shadow: "lg",
59
+ className: "bg-foreground px-3 py-1.5 text-xs text-balance text-background"
60
+ });
53
61
  const popupBehaviorClasses = "origin-[var(--transform-origin)] max-w-[min(17.5rem,var(--available-width))] motion-safe:transition-[scale,opacity] motion-safe:duration-100 motion-safe:ease-out data-starting-style:scale-95 data-starting-style:opacity-0 data-ending-style:scale-95 data-ending-style:opacity-0 data-instant:transition-none!";
54
62
  const arrowClasses = "relative block h-1.5 w-3 overflow-clip data-[side=bottom]:top-[-6px] data-[side=top]:bottom-[-6px] data-[side=top]:rotate-180 data-[side=left]:right-[-9px] data-[side=left]:rotate-90 data-[side=right]:left-[-9px] data-[side=right]:-rotate-90 before:absolute before:bottom-0 before:left-1/2 before:h-[calc(6px*sqrt(2))] before:w-[calc(6px*sqrt(2))] before:bg-foreground before:content-[''] before:[transform:translate(-50%,50%)_rotate(45deg)]";
55
63
  const ARROW_PADDING = 8;
@@ -84,6 +92,13 @@ const TooltipPopup = forwardRef(({ side = "top", align = "center", sideOffset =
84
92
  className: "z-50",
85
93
  children: /* @__PURE__ */ jsxs(Tooltip.Popup, {
86
94
  ref,
95
+ render: /* @__PURE__ */ jsx(Box, {
96
+ background: "transparent",
97
+ border: false,
98
+ padding: "none",
99
+ radius: "md",
100
+ shadow: "lg"
101
+ }),
87
102
  className: cn(popupSurfaceClasses, popupBehaviorClasses, className),
88
103
  ...rest,
89
104
  children: [arrow && /* @__PURE__ */ jsx(Tooltip.Arrow, { className: arrowClasses }), children]
package/dist/index.js CHANGED
@@ -2,11 +2,11 @@ import { cn } from "./lib/cn.js";
2
2
  import { Accordion, AccordionHeader, AccordionItem, AccordionPanel, AccordionTrigger } from "./components/Accordion/Accordion.js";
3
3
  import { AILoader } from "./components/AILoader/AILoader.js";
4
4
  import { Alert, alertVariants } from "./components/Alert/Alert.js";
5
+ import { Box, boxVariants } from "./components/Box/Box.js";
5
6
  import { Dialog, DialogClose, DialogDescription, DialogFooter, DialogHeader, DialogPopup, DialogTitle, DialogTrigger, dialogPopupVariants } from "./components/Dialog/Dialog.js";
6
7
  import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogPopup, AlertDialogTitle, AlertDialogTrigger, alertDialogPopupVariants, createAlertDialogHandle } from "./components/AlertDialog/AlertDialog.js";
7
8
  import { Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarImage, avatarVariants } from "./components/Avatar/Avatar.js";
8
9
  import { Badge, badgeVariants } from "./components/Badge/Badge.js";
9
- import { Box, boxVariants } from "./components/Box/Box.js";
10
10
  import { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, breadcrumbLinkVariants } from "./components/Breadcrumb/Breadcrumb.js";
11
11
  import { Button, buttonVariants } from "./components/Button/Button.js";
12
12
  import { Calendar } from "./components/Calendar/Calendar.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcfusionz/arc-primitive-ui",
3
- "version": "0.3.9",
3
+ "version": "0.3.11",
4
4
  "description": "ArcFusion primitive UI components",
5
5
  "license": "MIT",
6
6
  "type": "module",