@wow-two-beta/ui 0.0.46 → 0.0.48

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.
Files changed (82) hide show
  1. package/dist/actions/index.js +2 -2
  2. package/dist/actions/toggleButton/ToggleButton.d.ts +8 -6
  3. package/dist/actions/toggleButton/ToggleButton.d.ts.map +1 -1
  4. package/dist/actions/toggleButton/ToggleButton.variants.d.ts +79 -44
  5. package/dist/actions/toggleButton/ToggleButton.variants.d.ts.map +1 -1
  6. package/dist/{chunk-XTAFNWLG.js → chunk-2SIB3MZL.js} +4 -4
  7. package/dist/{chunk-XTAFNWLG.js.map → chunk-2SIB3MZL.js.map} +1 -1
  8. package/dist/chunk-34TLJSEH.js +462 -0
  9. package/dist/chunk-34TLJSEH.js.map +1 -0
  10. package/dist/{chunk-K2TZTSNQ.js → chunk-5V7FBKKL.js} +3 -3
  11. package/dist/{chunk-K2TZTSNQ.js.map → chunk-5V7FBKKL.js.map} +1 -1
  12. package/dist/{chunk-4YMU5MVC.js → chunk-6URHYLVG.js} +74 -30
  13. package/dist/chunk-6URHYLVG.js.map +1 -0
  14. package/dist/{chunk-CBMPWDRA.js → chunk-BLXE2RCC.js} +3 -3
  15. package/dist/{chunk-CBMPWDRA.js.map → chunk-BLXE2RCC.js.map} +1 -1
  16. package/dist/{chunk-VDE5B3IY.js → chunk-C6XVQ5TW.js} +22 -10
  17. package/dist/chunk-C6XVQ5TW.js.map +1 -0
  18. package/dist/{chunk-WJGJNSNP.js → chunk-CMBKBLJE.js} +165 -36
  19. package/dist/chunk-CMBKBLJE.js.map +1 -0
  20. package/dist/{chunk-2AS5ZKBF.js → chunk-EUA2TRKE.js} +6 -6
  21. package/dist/{chunk-2AS5ZKBF.js.map → chunk-EUA2TRKE.js.map} +1 -1
  22. package/dist/{chunk-PA5WBMY5.js → chunk-JYP2HIG3.js} +11 -11
  23. package/dist/{chunk-PA5WBMY5.js.map → chunk-JYP2HIG3.js.map} +1 -1
  24. package/dist/{chunk-R643N32M.js → chunk-NTUKGLIQ.js} +3 -3
  25. package/dist/{chunk-R643N32M.js.map → chunk-NTUKGLIQ.js.map} +1 -1
  26. package/dist/{chunk-D3CGJMKB.js → chunk-SGMG6NZB.js} +4 -4
  27. package/dist/{chunk-D3CGJMKB.js.map → chunk-SGMG6NZB.js.map} +1 -1
  28. package/dist/{chunk-CN7IOF3B.js → chunk-UPSN6NFK.js} +32 -9
  29. package/dist/chunk-UPSN6NFK.js.map +1 -0
  30. package/dist/{chunk-YYY5WBR2.js → chunk-WPC3KBRU.js} +4 -4
  31. package/dist/chunk-WPC3KBRU.js.map +1 -0
  32. package/dist/{chunk-35VQ7QBG.js → chunk-ZJJ4KW6G.js} +10 -10
  33. package/dist/chunk-ZJJ4KW6G.js.map +1 -0
  34. package/dist/display/index.js +3 -3
  35. package/dist/feedback/index.js +4 -4
  36. package/dist/forms/InputStyles.d.ts +9 -2
  37. package/dist/forms/InputStyles.d.ts.map +1 -1
  38. package/dist/forms/combobox/Combobox.d.ts +3 -2
  39. package/dist/forms/combobox/Combobox.d.ts.map +1 -1
  40. package/dist/forms/index.js +8 -8
  41. package/dist/forms/listbox/Listbox.d.ts +8 -1
  42. package/dist/forms/listbox/Listbox.d.ts.map +1 -1
  43. package/dist/forms/listbox/Listbox.variants.d.ts +1 -1
  44. package/dist/forms/listbox/Listbox.variants.d.ts.map +1 -1
  45. package/dist/forms/listbox/index.d.ts +1 -1
  46. package/dist/forms/listbox/index.d.ts.map +1 -1
  47. package/dist/forms/multiSelect/MultiSelect.d.ts +3 -2
  48. package/dist/forms/multiSelect/MultiSelect.d.ts.map +1 -1
  49. package/dist/forms/select/Select.d.ts +3 -2
  50. package/dist/forms/select/Select.d.ts.map +1 -1
  51. package/dist/forms/select/Select.variants.d.ts +9 -2
  52. package/dist/forms/select/Select.variants.d.ts.map +1 -1
  53. package/dist/icons/index.js +1 -1
  54. package/dist/index.css +19 -0
  55. package/dist/index.js +14 -14
  56. package/dist/layout/index.d.ts +1 -0
  57. package/dist/layout/index.d.ts.map +1 -1
  58. package/dist/layout/index.js +5 -5
  59. package/dist/layout/surface/Surface.d.ts +19 -0
  60. package/dist/layout/surface/Surface.d.ts.map +1 -0
  61. package/dist/layout/surface/index.d.ts +2 -0
  62. package/dist/layout/surface/index.d.ts.map +1 -0
  63. package/dist/nav/index.js +5 -5
  64. package/dist/overlays/index.js +5 -5
  65. package/dist/overlays/popover/Popover.d.ts +8 -5
  66. package/dist/overlays/popover/Popover.d.ts.map +1 -1
  67. package/dist/utils/Layers.d.ts +34 -0
  68. package/dist/utils/Layers.d.ts.map +1 -0
  69. package/dist/utils/SurfaceStyles.d.ts +324 -0
  70. package/dist/utils/SurfaceStyles.d.ts.map +1 -0
  71. package/dist/utils/index.d.ts +3 -0
  72. package/dist/utils/index.d.ts.map +1 -1
  73. package/dist/utils/index.js +1 -1
  74. package/package.json +1 -1
  75. package/dist/chunk-35VQ7QBG.js.map +0 -1
  76. package/dist/chunk-4YMU5MVC.js.map +0 -1
  77. package/dist/chunk-CN7IOF3B.js.map +0 -1
  78. package/dist/chunk-MUUFERDO.js +0 -216
  79. package/dist/chunk-MUUFERDO.js.map +0 -1
  80. package/dist/chunk-VDE5B3IY.js.map +0 -1
  81. package/dist/chunk-WJGJNSNP.js.map +0 -1
  82. package/dist/chunk-YYY5WBR2.js.map +0 -1
@@ -1,7 +1,7 @@
1
- export { BackToTopButton, Button, ButtonGroup, CopyButton, DisclosureButton, FAB, Link, SegmentedControl, SpeedDial, SpeedDialAction, SpeedDialTrigger, ToggleButton, ToggleButtonGroup, Toolbar, ToolbarButton, ToolbarLink, ToolbarSeparator, buttonVariants, fabVariants, linkVariants, toggleButtonVariants } from '../chunk-4YMU5MVC.js';
1
+ export { BackToTopButton, Button, ButtonGroup, CopyButton, DisclosureButton, FAB, Link, SegmentedControl, SpeedDial, SpeedDialAction, SpeedDialTrigger, ToggleButton, ToggleButtonGroup, Toolbar, ToolbarButton, ToolbarLink, ToolbarSeparator, buttonVariants, fabVariants, linkVariants, toggleButtonVariants } from '../chunk-6URHYLVG.js';
2
2
  import '../chunk-NUMFGKPY.js';
3
3
  import '../chunk-F227LKWK.js';
4
- import '../chunk-MUUFERDO.js';
4
+ import '../chunk-34TLJSEH.js';
5
5
  import '../chunk-BMABNEZX.js';
6
6
  import '../chunk-KDXJQNB6.js';
7
7
  import '../chunk-LDRFQG44.js';
@@ -1,13 +1,15 @@
1
- import { type ButtonHTMLAttributes } from 'react';
1
+ import { type ReactNode } from 'react';
2
+ import { type ButtonProps } from '../button/Button';
2
3
  import { type ToggleButtonVariants } from './ToggleButton.variants';
3
- export interface ToggleButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'value'>, ToggleButtonVariants {
4
- /** Controlled pressed state. */
4
+ type ToggleButtonChildren = ReactNode | ((args: {
5
+ pressed: boolean;
6
+ }) => ReactNode);
7
+ export interface ToggleButtonProps extends Omit<ButtonProps, 'variant' | 'tone' | 'children'>, ToggleButtonVariants {
5
8
  pressed?: boolean;
6
- /** Uncontrolled initial state. */
7
9
  defaultPressed?: boolean;
8
- /** Fires whenever pressed state changes. */
9
10
  onPressedChange?: (pressed: boolean) => void;
11
+ children?: ToggleButtonChildren;
10
12
  }
11
- /** Two-state button (on/off) — sets `aria-pressed` + `data-state="on|off"`. */
12
13
  export declare const ToggleButton: import("react").ForwardRefExoticComponent<ToggleButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
14
+ export {};
13
15
  //# sourceMappingURL=ToggleButton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleButton.d.ts","sourceRoot":"","sources":["../../../src/actions/toggleButton/ToggleButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAG9D,OAAO,EAAwB,KAAK,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE1F,MAAM,WAAW,iBACf,SAAQ,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC,EAC5D,oBAAoB;IACtB,gCAAgC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kCAAkC;IAClC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4CAA4C;IAC5C,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAC9C;AAED,+EAA+E;AAC/E,eAAO,MAAM,YAAY,iHAsCxB,CAAC"}
1
+ {"version":3,"file":"ToggleButton.d.ts","sourceRoot":"","sources":["../../../src/actions/toggleButton/ToggleButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGnD,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAwB,KAAK,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAK1F,KAAK,oBAAoB,GACrB,SAAS,GACT,CAAC,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,KAAK,SAAS,CAAC,CAAC;AAEhD,MAAM,WAAW,iBACf,SAAQ,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC,EACxD,oBAAoB;IAEtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAGlB,cAAc,CAAC,EAAE,OAAO,CAAC;IAGzB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAG7C,QAAQ,CAAC,EAAE,oBAAoB,CAAC;CACjC;AAGD,eAAO,MAAM,YAAY,iHA2CxB,CAAC"}
@@ -1,80 +1,115 @@
1
1
  import { type VariantProps } from '../../utils';
2
2
  export declare const toggleButtonVariants: import("tailwind-variants").TVReturnType<{
3
3
  variant: {
4
- solid: string;
5
- outline: string;
6
4
  ghost: string;
5
+ soft: string;
6
+ outline: string;
7
+ solid: string;
8
+ glass: string;
9
+ 'glass-surface': string;
7
10
  };
8
- size: {
9
- sm: string;
10
- md: string;
11
- lg: string;
11
+ tone: {
12
+ primary: string;
13
+ neutral: string;
14
+ danger: string;
15
+ success: string;
16
+ warning: string;
12
17
  };
13
- }, undefined, "inline-flex items-center justify-center font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-primary data-[state=on]:text-primary-foreground", import("tailwind-variants/dist/config.js").TVConfig<{
18
+ }, undefined, "", import("tailwind-variants/dist/config.js").TVConfig<{
14
19
  variant: {
15
- solid: string;
16
- outline: string;
17
20
  ghost: string;
21
+ soft: string;
22
+ outline: string;
23
+ solid: string;
24
+ glass: string;
25
+ 'glass-surface': string;
18
26
  };
19
- size: {
20
- sm: string;
21
- md: string;
22
- lg: string;
27
+ tone: {
28
+ primary: string;
29
+ neutral: string;
30
+ danger: string;
31
+ success: string;
32
+ warning: string;
23
33
  };
24
34
  }, {
25
35
  variant: {
26
- solid: string;
27
- outline: string;
28
36
  ghost: string;
37
+ soft: string;
38
+ outline: string;
39
+ solid: string;
40
+ glass: string;
41
+ 'glass-surface': string;
29
42
  };
30
- size: {
31
- sm: string;
32
- md: string;
33
- lg: string;
43
+ tone: {
44
+ primary: string;
45
+ neutral: string;
46
+ danger: string;
47
+ success: string;
48
+ warning: string;
34
49
  };
35
50
  }>, {
36
51
  variant: {
37
- solid: string;
38
- outline: string;
39
52
  ghost: string;
53
+ soft: string;
54
+ outline: string;
55
+ solid: string;
56
+ glass: string;
57
+ 'glass-surface': string;
40
58
  };
41
- size: {
42
- sm: string;
43
- md: string;
44
- lg: string;
59
+ tone: {
60
+ primary: string;
61
+ neutral: string;
62
+ danger: string;
63
+ success: string;
64
+ warning: string;
45
65
  };
46
66
  }, undefined, import("tailwind-variants").TVReturnType<{
47
67
  variant: {
48
- solid: string;
49
- outline: string;
50
68
  ghost: string;
69
+ soft: string;
70
+ outline: string;
71
+ solid: string;
72
+ glass: string;
73
+ 'glass-surface': string;
51
74
  };
52
- size: {
53
- sm: string;
54
- md: string;
55
- lg: string;
75
+ tone: {
76
+ primary: string;
77
+ neutral: string;
78
+ danger: string;
79
+ success: string;
80
+ warning: string;
56
81
  };
57
- }, undefined, "inline-flex items-center justify-center font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-primary data-[state=on]:text-primary-foreground", import("tailwind-variants/dist/config.js").TVConfig<{
82
+ }, undefined, "", import("tailwind-variants/dist/config.js").TVConfig<{
58
83
  variant: {
59
- solid: string;
60
- outline: string;
61
84
  ghost: string;
85
+ soft: string;
86
+ outline: string;
87
+ solid: string;
88
+ glass: string;
89
+ 'glass-surface': string;
62
90
  };
63
- size: {
64
- sm: string;
65
- md: string;
66
- lg: string;
91
+ tone: {
92
+ primary: string;
93
+ neutral: string;
94
+ danger: string;
95
+ success: string;
96
+ warning: string;
67
97
  };
68
98
  }, {
69
99
  variant: {
70
- solid: string;
71
- outline: string;
72
100
  ghost: string;
101
+ soft: string;
102
+ outline: string;
103
+ solid: string;
104
+ glass: string;
105
+ 'glass-surface': string;
73
106
  };
74
- size: {
75
- sm: string;
76
- md: string;
77
- lg: string;
107
+ tone: {
108
+ primary: string;
109
+ neutral: string;
110
+ danger: string;
111
+ success: string;
112
+ warning: string;
78
113
  };
79
114
  }>, unknown, unknown, undefined>>;
80
115
  export type ToggleButtonVariants = VariantProps<typeof toggleButtonVariants>;
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleButton.variants.d.ts","sourceRoot":"","sources":["../../../src/actions/toggleButton/ToggleButton.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAEpD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAkB/B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,YAAY,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
1
+ {"version":3,"file":"ToggleButton.variants.d.ts","sourceRoot":"","sources":["../../../src/actions/toggleButton/ToggleButton.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAGpD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAkE/B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,YAAY,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { OverlayChromeProvider, OverlayBody, OverlayCloseButton, OverlayDescription, OverlayFooter, OverlayHeader, OverlayTitle } from './chunk-526AMQXZ.js';
2
- import { Backdrop } from './chunk-CBMPWDRA.js';
2
+ import { Backdrop } from './chunk-BLXE2RCC.js';
3
3
  import { useControlled } from './chunk-NUMFGKPY.js';
4
4
  import { Slot, Portal, ScrollLockProvider, DismissableLayer } from './chunk-BMABNEZX.js';
5
5
  import { composeRefs, cn } from './chunk-LDRFQG44.js';
@@ -114,7 +114,7 @@ var DrawerContent = forwardRef(
114
114
  "data-state": "open",
115
115
  "data-side": ctx.side,
116
116
  className: cn(
117
- "fixed z-50 flex flex-col gap-4 border-border bg-background p-6 shadow-lg outline-none",
117
+ "fixed z-modal flex flex-col gap-4 border-border bg-background p-6 shadow-lg outline-none",
118
118
  SIDE_CLASSES[ctx.side],
119
119
  className
120
120
  ),
@@ -143,5 +143,5 @@ Drawer.Footer = DrawerFooter;
143
143
  Drawer.Close = DrawerClose;
144
144
 
145
145
  export { Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger };
146
- //# sourceMappingURL=chunk-XTAFNWLG.js.map
147
- //# sourceMappingURL=chunk-XTAFNWLG.js.map
146
+ //# sourceMappingURL=chunk-2SIB3MZL.js.map
147
+ //# sourceMappingURL=chunk-2SIB3MZL.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/overlays/drawer/Drawer.tsx"],"names":["DrawerTrigger","DrawerContent"],"mappings":"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","file":"chunk-XTAFNWLG.js","sourcesContent":["import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useId,\n useMemo,\n useRef,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { FocusScope } from '@radix-ui/react-focus-scope';\nimport { cn, composeRefs } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { DismissableLayer, Portal, ScrollLockProvider, Slot } from '../../primitives';\nimport { Backdrop } from '../backdrop';\nimport {\n OverlayBody,\n OverlayChromeProvider,\n OverlayCloseButton,\n OverlayDescription,\n OverlayFooter,\n OverlayHeader,\n OverlayTitle,\n type OverlayChromeContextValue,\n} from '../OverlayChrome';\n\nexport type DrawerSide = 'top' | 'right' | 'bottom' | 'left';\n\ninterface DrawerContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n titleId: string;\n descriptionId: string;\n side: DrawerSide;\n dismissOnOutsideClick: boolean;\n dismissOnEscape: boolean;\n}\n\nconst DrawerContext = createContext<DrawerContextValue | null>(null);\n\nfunction useDrawerContext() {\n const ctx = useContext(DrawerContext);\n if (!ctx) throw new Error('Drawer.* must be used inside <Drawer>');\n return ctx;\n}\n\nexport interface DrawerProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n side?: DrawerSide;\n dismissOnOutsideClick?: boolean;\n dismissOnEscape?: boolean;\n children: ReactNode;\n}\n\nexport function Drawer({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n side = 'right',\n dismissOnOutsideClick = true,\n dismissOnEscape = true,\n children,\n}: DrawerProps) {\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n onChange: onOpenChange,\n });\n const triggerRef = useRef<HTMLElement | null>(null);\n const titleId = useId();\n const descriptionId = useId();\n\n const ctx = useMemo<DrawerContextValue>(\n () => ({\n open,\n setOpen,\n triggerRef,\n titleId,\n descriptionId,\n side,\n dismissOnOutsideClick,\n dismissOnEscape,\n }),\n [open, setOpen, titleId, descriptionId, side, dismissOnOutsideClick, dismissOnEscape],\n );\n\n return <DrawerContext.Provider value={ctx}>{children}</DrawerContext.Provider>;\n}\n\nexport interface DrawerTriggerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n asChild?: boolean;\n children: ReactNode;\n}\n\nexport const DrawerTrigger = forwardRef<HTMLButtonElement, DrawerTriggerProps>(\n function DrawerTrigger({ asChild, onClick, children, ...rest }, forwardedRef) {\n const ctx = useDrawerContext();\n const Component = asChild ? Slot : 'button';\n return (\n <Component\n ref={composeRefs(forwardedRef, ctx.triggerRef as React.MutableRefObject<HTMLButtonElement | null>) as never}\n type=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={ctx.open}\n data-state={ctx.open ? 'open' : 'closed'}\n onClick={(e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n ctx.setOpen(true);\n }}\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\n\nconst SIDE_CLASSES: Record<DrawerSide, string> = {\n right:\n 'inset-y-0 right-0 h-full w-full sm:max-w-sm border-l animate-in slide-in-from-right',\n left: 'inset-y-0 left-0 h-full w-full sm:max-w-sm border-r animate-in slide-in-from-left',\n top: 'inset-x-0 top-0 w-full max-h-[85vh] border-b animate-in slide-in-from-top',\n bottom: 'inset-x-0 bottom-0 w-full max-h-[85vh] border-t animate-in slide-in-from-bottom',\n};\n\nexport interface DrawerContentProps extends HTMLAttributes<HTMLDivElement> {\n hideBackdrop?: boolean;\n blur?: boolean;\n children: ReactNode;\n}\n\nexport const DrawerContent = forwardRef<HTMLDivElement, DrawerContentProps>(\n function DrawerContent(\n { hideBackdrop, blur, className, children, ...rest },\n forwardedRef,\n ) {\n const ctx = useDrawerContext();\n\n const close = useCallback(() => {\n ctx.setOpen(false);\n requestAnimationFrame(() => ctx.triggerRef.current?.focus());\n }, [ctx]);\n\n const chromeCtx = useMemo<OverlayChromeContextValue>(\n () => ({ titleId: ctx.titleId, descriptionId: ctx.descriptionId, close }),\n [ctx.titleId, ctx.descriptionId, close],\n );\n\n if (!ctx.open) return null;\n return (\n <Portal>\n <ScrollLockProvider>\n {!hideBackdrop && (\n <Backdrop\n inline\n blur={blur}\n onClick={() => {\n if (ctx.dismissOnOutsideClick) ctx.setOpen(false);\n }}\n />\n )}\n <FocusScope asChild trapped loop>\n <DismissableLayer\n disableEscape={!ctx.dismissOnEscape}\n onEscape={() => ctx.setOpen(false)}\n disableOutsideClick\n >\n <div\n ref={forwardedRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={ctx.titleId}\n aria-describedby={ctx.descriptionId}\n data-state=\"open\"\n data-side={ctx.side}\n className={cn(\n 'fixed z-50 flex flex-col gap-4 border-border bg-background p-6 shadow-lg outline-none',\n SIDE_CLASSES[ctx.side],\n className,\n )}\n {...rest}\n >\n <OverlayChromeProvider value={chromeCtx}>{children}</OverlayChromeProvider>\n </div>\n </DismissableLayer>\n </FocusScope>\n </ScrollLockProvider>\n </Portal>\n );\n },\n);\n\n// Re-export shared chrome subcomponents under the Drawer namespace.\nexport const DrawerHeader = OverlayHeader;\nexport const DrawerTitle = OverlayTitle;\nexport const DrawerDescription = OverlayDescription;\nexport const DrawerBody = OverlayBody;\nexport const DrawerFooter = OverlayFooter;\nexport const DrawerClose = OverlayCloseButton;\n\ntype DrawerComponent = typeof Drawer & {\n Trigger: typeof DrawerTrigger;\n Content: typeof DrawerContent;\n Header: typeof DrawerHeader;\n Title: typeof DrawerTitle;\n Description: typeof DrawerDescription;\n Body: typeof DrawerBody;\n Footer: typeof DrawerFooter;\n Close: typeof DrawerClose;\n};\n\n(Drawer as DrawerComponent).Trigger = DrawerTrigger;\n(Drawer as DrawerComponent).Content = DrawerContent;\n(Drawer as DrawerComponent).Header = DrawerHeader;\n(Drawer as DrawerComponent).Title = DrawerTitle;\n(Drawer as DrawerComponent).Description = DrawerDescription;\n(Drawer as DrawerComponent).Body = DrawerBody;\n(Drawer as DrawerComponent).Footer = DrawerFooter;\n(Drawer as DrawerComponent).Close = DrawerClose;\n\nexport default Drawer as DrawerComponent;\n"]}
1
+ {"version":3,"sources":["../src/overlays/drawer/Drawer.tsx"],"names":["DrawerTrigger","DrawerContent"],"mappings":"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","file":"chunk-2SIB3MZL.js","sourcesContent":["import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useId,\n useMemo,\n useRef,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { FocusScope } from '@radix-ui/react-focus-scope';\nimport { cn, composeRefs } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { DismissableLayer, Portal, ScrollLockProvider, Slot } from '../../primitives';\nimport { Backdrop } from '../backdrop';\nimport {\n OverlayBody,\n OverlayChromeProvider,\n OverlayCloseButton,\n OverlayDescription,\n OverlayFooter,\n OverlayHeader,\n OverlayTitle,\n type OverlayChromeContextValue,\n} from '../OverlayChrome';\n\nexport type DrawerSide = 'top' | 'right' | 'bottom' | 'left';\n\ninterface DrawerContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n titleId: string;\n descriptionId: string;\n side: DrawerSide;\n dismissOnOutsideClick: boolean;\n dismissOnEscape: boolean;\n}\n\nconst DrawerContext = createContext<DrawerContextValue | null>(null);\n\nfunction useDrawerContext() {\n const ctx = useContext(DrawerContext);\n if (!ctx) throw new Error('Drawer.* must be used inside <Drawer>');\n return ctx;\n}\n\nexport interface DrawerProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n side?: DrawerSide;\n dismissOnOutsideClick?: boolean;\n dismissOnEscape?: boolean;\n children: ReactNode;\n}\n\nexport function Drawer({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n side = 'right',\n dismissOnOutsideClick = true,\n dismissOnEscape = true,\n children,\n}: DrawerProps) {\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n onChange: onOpenChange,\n });\n const triggerRef = useRef<HTMLElement | null>(null);\n const titleId = useId();\n const descriptionId = useId();\n\n const ctx = useMemo<DrawerContextValue>(\n () => ({\n open,\n setOpen,\n triggerRef,\n titleId,\n descriptionId,\n side,\n dismissOnOutsideClick,\n dismissOnEscape,\n }),\n [open, setOpen, titleId, descriptionId, side, dismissOnOutsideClick, dismissOnEscape],\n );\n\n return <DrawerContext.Provider value={ctx}>{children}</DrawerContext.Provider>;\n}\n\nexport interface DrawerTriggerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n asChild?: boolean;\n children: ReactNode;\n}\n\nexport const DrawerTrigger = forwardRef<HTMLButtonElement, DrawerTriggerProps>(\n function DrawerTrigger({ asChild, onClick, children, ...rest }, forwardedRef) {\n const ctx = useDrawerContext();\n const Component = asChild ? Slot : 'button';\n return (\n <Component\n ref={composeRefs(forwardedRef, ctx.triggerRef as React.MutableRefObject<HTMLButtonElement | null>) as never}\n type=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={ctx.open}\n data-state={ctx.open ? 'open' : 'closed'}\n onClick={(e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n ctx.setOpen(true);\n }}\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\n\nconst SIDE_CLASSES: Record<DrawerSide, string> = {\n right:\n 'inset-y-0 right-0 h-full w-full sm:max-w-sm border-l animate-in slide-in-from-right',\n left: 'inset-y-0 left-0 h-full w-full sm:max-w-sm border-r animate-in slide-in-from-left',\n top: 'inset-x-0 top-0 w-full max-h-[85vh] border-b animate-in slide-in-from-top',\n bottom: 'inset-x-0 bottom-0 w-full max-h-[85vh] border-t animate-in slide-in-from-bottom',\n};\n\nexport interface DrawerContentProps extends HTMLAttributes<HTMLDivElement> {\n hideBackdrop?: boolean;\n blur?: boolean;\n children: ReactNode;\n}\n\nexport const DrawerContent = forwardRef<HTMLDivElement, DrawerContentProps>(\n function DrawerContent(\n { hideBackdrop, blur, className, children, ...rest },\n forwardedRef,\n ) {\n const ctx = useDrawerContext();\n\n const close = useCallback(() => {\n ctx.setOpen(false);\n requestAnimationFrame(() => ctx.triggerRef.current?.focus());\n }, [ctx]);\n\n const chromeCtx = useMemo<OverlayChromeContextValue>(\n () => ({ titleId: ctx.titleId, descriptionId: ctx.descriptionId, close }),\n [ctx.titleId, ctx.descriptionId, close],\n );\n\n if (!ctx.open) return null;\n return (\n <Portal>\n <ScrollLockProvider>\n {!hideBackdrop && (\n <Backdrop\n inline\n blur={blur}\n onClick={() => {\n if (ctx.dismissOnOutsideClick) ctx.setOpen(false);\n }}\n />\n )}\n <FocusScope asChild trapped loop>\n <DismissableLayer\n disableEscape={!ctx.dismissOnEscape}\n onEscape={() => ctx.setOpen(false)}\n disableOutsideClick\n >\n <div\n ref={forwardedRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={ctx.titleId}\n aria-describedby={ctx.descriptionId}\n data-state=\"open\"\n data-side={ctx.side}\n className={cn(\n 'fixed z-modal flex flex-col gap-4 border-border bg-background p-6 shadow-lg outline-none',\n SIDE_CLASSES[ctx.side],\n className,\n )}\n {...rest}\n >\n <OverlayChromeProvider value={chromeCtx}>{children}</OverlayChromeProvider>\n </div>\n </DismissableLayer>\n </FocusScope>\n </ScrollLockProvider>\n </Portal>\n );\n },\n);\n\n// Re-export shared chrome subcomponents under the Drawer namespace.\nexport const DrawerHeader = OverlayHeader;\nexport const DrawerTitle = OverlayTitle;\nexport const DrawerDescription = OverlayDescription;\nexport const DrawerBody = OverlayBody;\nexport const DrawerFooter = OverlayFooter;\nexport const DrawerClose = OverlayCloseButton;\n\ntype DrawerComponent = typeof Drawer & {\n Trigger: typeof DrawerTrigger;\n Content: typeof DrawerContent;\n Header: typeof DrawerHeader;\n Title: typeof DrawerTitle;\n Description: typeof DrawerDescription;\n Body: typeof DrawerBody;\n Footer: typeof DrawerFooter;\n Close: typeof DrawerClose;\n};\n\n(Drawer as DrawerComponent).Trigger = DrawerTrigger;\n(Drawer as DrawerComponent).Content = DrawerContent;\n(Drawer as DrawerComponent).Header = DrawerHeader;\n(Drawer as DrawerComponent).Title = DrawerTitle;\n(Drawer as DrawerComponent).Description = DrawerDescription;\n(Drawer as DrawerComponent).Body = DrawerBody;\n(Drawer as DrawerComponent).Footer = DrawerFooter;\n(Drawer as DrawerComponent).Close = DrawerClose;\n\nexport default Drawer as DrawerComponent;\n"]}