@wow-two-beta/ui 0.0.23 → 0.0.25

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 (135) hide show
  1. package/dist/actions/index.js +2 -2
  2. package/dist/{chunk-O6UUYPTB.js → chunk-2AUDMNHI.js} +3 -3
  3. package/dist/{chunk-O6UUYPTB.js.map → chunk-2AUDMNHI.js.map} +1 -1
  4. package/dist/{chunk-45SFQEMP.js → chunk-3PUV6PGJ.js} +302 -5
  5. package/dist/chunk-3PUV6PGJ.js.map +1 -0
  6. package/dist/{chunk-XAJKBU6P.js → chunk-6RFXTWLM.js} +18 -4
  7. package/dist/chunk-6RFXTWLM.js.map +1 -0
  8. package/dist/{chunk-4P2TFUVW.js → chunk-76ZIAFWD.js} +9 -3
  9. package/dist/chunk-76ZIAFWD.js.map +1 -0
  10. package/dist/{chunk-25CGSOXZ.js → chunk-A5JQGP5F.js} +3 -3
  11. package/dist/{chunk-25CGSOXZ.js.map → chunk-A5JQGP5F.js.map} +1 -1
  12. package/dist/{chunk-3KPILWVX.js → chunk-IERJ5D7R.js} +4 -4
  13. package/dist/{chunk-3KPILWVX.js.map → chunk-IERJ5D7R.js.map} +1 -1
  14. package/dist/{chunk-XRTXK5Y4.js → chunk-MCUDIBTG.js} +4 -4
  15. package/dist/{chunk-XRTXK5Y4.js.map → chunk-MCUDIBTG.js.map} +1 -1
  16. package/dist/{chunk-5KVTU5TX.js → chunk-NLUTV5BP.js} +1792 -8
  17. package/dist/chunk-NLUTV5BP.js.map +1 -0
  18. package/dist/{chunk-GRJBIGUD.js → chunk-S6QNKXKP.js} +3 -3
  19. package/dist/{chunk-GRJBIGUD.js.map → chunk-S6QNKXKP.js.map} +1 -1
  20. package/dist/{chunk-DSA7L7PD.js → chunk-TSTJCUXX.js} +5 -5
  21. package/dist/{chunk-DSA7L7PD.js.map → chunk-TSTJCUXX.js.map} +1 -1
  22. package/dist/{chunk-XLPFX4WK.js → chunk-U5SWHGKO.js} +567 -20
  23. package/dist/chunk-U5SWHGKO.js.map +1 -0
  24. package/dist/display/activityFeed/ActivityFeed.d.ts +29 -0
  25. package/dist/display/activityFeed/ActivityFeed.d.ts.map +1 -0
  26. package/dist/display/activityFeed/index.d.ts +2 -0
  27. package/dist/display/activityFeed/index.d.ts.map +1 -0
  28. package/dist/display/annotationMarker/AnnotationMarker.d.ts +24 -0
  29. package/dist/display/annotationMarker/AnnotationMarker.d.ts.map +1 -0
  30. package/dist/display/annotationMarker/index.d.ts +2 -0
  31. package/dist/display/annotationMarker/index.d.ts.map +1 -0
  32. package/dist/display/chatBubble/ChatBubble.d.ts +34 -0
  33. package/dist/display/chatBubble/ChatBubble.d.ts.map +1 -0
  34. package/dist/display/chatBubble/index.d.ts +2 -0
  35. package/dist/display/chatBubble/index.d.ts.map +1 -0
  36. package/dist/display/commentThread/CommentThread.d.ts +32 -0
  37. package/dist/display/commentThread/CommentThread.d.ts.map +1 -0
  38. package/dist/display/commentThread/index.d.ts +2 -0
  39. package/dist/display/commentThread/index.d.ts.map +1 -0
  40. package/dist/display/index.d.ts +7 -0
  41. package/dist/display/index.d.ts.map +1 -1
  42. package/dist/display/index.js +3 -3
  43. package/dist/display/messageList/MessageList.d.ts +33 -0
  44. package/dist/display/messageList/MessageList.d.ts.map +1 -0
  45. package/dist/display/messageList/index.d.ts +2 -0
  46. package/dist/display/messageList/index.d.ts.map +1 -0
  47. package/dist/display/reactionBar/ReactionBar.d.ts +33 -0
  48. package/dist/display/reactionBar/ReactionBar.d.ts.map +1 -0
  49. package/dist/display/reactionBar/index.d.ts +2 -0
  50. package/dist/display/reactionBar/index.d.ts.map +1 -0
  51. package/dist/display/threadView/ThreadView.d.ts +26 -0
  52. package/dist/display/threadView/ThreadView.d.ts.map +1 -0
  53. package/dist/display/threadView/index.d.ts +2 -0
  54. package/dist/display/threadView/index.d.ts.map +1 -0
  55. package/dist/feedback/index.d.ts +4 -0
  56. package/dist/feedback/index.d.ts.map +1 -1
  57. package/dist/feedback/index.js +2 -2
  58. package/dist/feedback/liveCursor/LiveCursor.d.ts +27 -0
  59. package/dist/feedback/liveCursor/LiveCursor.d.ts.map +1 -0
  60. package/dist/feedback/liveCursor/index.d.ts +2 -0
  61. package/dist/feedback/liveCursor/index.d.ts.map +1 -0
  62. package/dist/feedback/notificationCenter/NotificationCenter.d.ts +40 -0
  63. package/dist/feedback/notificationCenter/NotificationCenter.d.ts.map +1 -0
  64. package/dist/feedback/notificationCenter/index.d.ts +2 -0
  65. package/dist/feedback/notificationCenter/index.d.ts.map +1 -0
  66. package/dist/feedback/presenceIndicator/PresenceIndicator.d.ts +19 -0
  67. package/dist/feedback/presenceIndicator/PresenceIndicator.d.ts.map +1 -0
  68. package/dist/feedback/presenceIndicator/index.d.ts +2 -0
  69. package/dist/feedback/presenceIndicator/index.d.ts.map +1 -0
  70. package/dist/feedback/typingIndicator/TypingIndicator.d.ts +18 -0
  71. package/dist/feedback/typingIndicator/TypingIndicator.d.ts.map +1 -0
  72. package/dist/feedback/typingIndicator/index.d.ts +2 -0
  73. package/dist/feedback/typingIndicator/index.d.ts.map +1 -0
  74. package/dist/forms/addressForm/AddressForm.d.ts +38 -0
  75. package/dist/forms/addressForm/AddressForm.d.ts.map +1 -0
  76. package/dist/forms/addressForm/index.d.ts +2 -0
  77. package/dist/forms/addressForm/index.d.ts.map +1 -0
  78. package/dist/forms/chatComposer/ChatComposer.d.ts +37 -0
  79. package/dist/forms/chatComposer/ChatComposer.d.ts.map +1 -0
  80. package/dist/forms/chatComposer/index.d.ts +2 -0
  81. package/dist/forms/chatComposer/index.d.ts.map +1 -0
  82. package/dist/forms/cronInput/CronInput.d.ts +16 -0
  83. package/dist/forms/cronInput/CronInput.d.ts.map +1 -0
  84. package/dist/forms/cronInput/index.d.ts +2 -0
  85. package/dist/forms/cronInput/index.d.ts.map +1 -0
  86. package/dist/forms/emojiPicker/EmojiPicker.d.ts +27 -0
  87. package/dist/forms/emojiPicker/EmojiPicker.d.ts.map +1 -0
  88. package/dist/forms/emojiPicker/index.d.ts +2 -0
  89. package/dist/forms/emojiPicker/index.d.ts.map +1 -0
  90. package/dist/forms/fontPicker/FontPicker.d.ts +23 -0
  91. package/dist/forms/fontPicker/FontPicker.d.ts.map +1 -0
  92. package/dist/forms/fontPicker/index.d.ts +2 -0
  93. package/dist/forms/fontPicker/index.d.ts.map +1 -0
  94. package/dist/forms/gradientPicker/GradientPicker.d.ts +25 -0
  95. package/dist/forms/gradientPicker/GradientPicker.d.ts.map +1 -0
  96. package/dist/forms/gradientPicker/index.d.ts +2 -0
  97. package/dist/forms/gradientPicker/index.d.ts.map +1 -0
  98. package/dist/forms/iconPicker/IconPicker.d.ts +21 -0
  99. package/dist/forms/iconPicker/IconPicker.d.ts.map +1 -0
  100. package/dist/forms/iconPicker/index.d.ts +2 -0
  101. package/dist/forms/iconPicker/index.d.ts.map +1 -0
  102. package/dist/forms/index.d.ts +11 -0
  103. package/dist/forms/index.d.ts.map +1 -1
  104. package/dist/forms/index.js +6 -6
  105. package/dist/forms/keyboardShortcutPicker/KeyboardShortcutPicker.d.ts +17 -0
  106. package/dist/forms/keyboardShortcutPicker/KeyboardShortcutPicker.d.ts.map +1 -0
  107. package/dist/forms/keyboardShortcutPicker/index.d.ts +2 -0
  108. package/dist/forms/keyboardShortcutPicker/index.d.ts.map +1 -0
  109. package/dist/forms/knob/Knob.d.ts +25 -0
  110. package/dist/forms/knob/Knob.d.ts.map +1 -0
  111. package/dist/forms/knob/index.d.ts +2 -0
  112. package/dist/forms/knob/index.d.ts.map +1 -0
  113. package/dist/forms/phoneInput/PhoneInput.d.ts +26 -0
  114. package/dist/forms/phoneInput/PhoneInput.d.ts.map +1 -0
  115. package/dist/forms/phoneInput/index.d.ts +2 -0
  116. package/dist/forms/phoneInput/index.d.ts.map +1 -0
  117. package/dist/forms/reactionPicker/ReactionPicker.d.ts +22 -0
  118. package/dist/forms/reactionPicker/ReactionPicker.d.ts.map +1 -0
  119. package/dist/forms/reactionPicker/index.d.ts +2 -0
  120. package/dist/forms/reactionPicker/index.d.ts.map +1 -0
  121. package/dist/hooks/index.d.ts +1 -0
  122. package/dist/hooks/index.d.ts.map +1 -1
  123. package/dist/hooks/index.js +1 -1
  124. package/dist/hooks/useReducedMotion.d.ts +7 -0
  125. package/dist/hooks/useReducedMotion.d.ts.map +1 -0
  126. package/dist/index.js +11 -11
  127. package/dist/layout/index.js +3 -3
  128. package/dist/nav/index.js +3 -3
  129. package/dist/overlays/index.js +4 -4
  130. package/package.json +1 -1
  131. package/dist/chunk-45SFQEMP.js.map +0 -1
  132. package/dist/chunk-4P2TFUVW.js.map +0 -1
  133. package/dist/chunk-5KVTU5TX.js.map +0 -1
  134. package/dist/chunk-XAJKBU6P.js.map +0 -1
  135. package/dist/chunk-XLPFX4WK.js.map +0 -1
@@ -1,6 +1,6 @@
1
- export { BackToTopButton, Button, ButtonGroup, CopyButton, DisclosureButton, FAB, IconButton, Link, OverlayButton, SegmentedControl, SpeedDial, SpeedDialAction, SpeedDialTrigger, ToggleButton, ToggleButtonGroup, Toolbar, ToolbarButton, ToolbarLink, ToolbarSeparator, buttonVariants, fabVariants, iconButtonVariants, linkVariants, overlayButtonVariants, toggleButtonVariants } from '../chunk-GRJBIGUD.js';
1
+ export { BackToTopButton, Button, ButtonGroup, CopyButton, DisclosureButton, FAB, IconButton, Link, OverlayButton, SegmentedControl, SpeedDial, SpeedDialAction, SpeedDialTrigger, ToggleButton, ToggleButtonGroup, Toolbar, ToolbarButton, ToolbarLink, ToolbarSeparator, buttonVariants, fabVariants, iconButtonVariants, linkVariants, overlayButtonVariants, toggleButtonVariants } from '../chunk-S6QNKXKP.js';
2
2
  import '../chunk-BMBIZLO4.js';
3
- import '../chunk-4P2TFUVW.js';
3
+ import '../chunk-76ZIAFWD.js';
4
4
  import '../chunk-TDX22OWF.js';
5
5
  import '../chunk-NC2CBGX2.js';
6
6
  import '../chunk-DN7WBRIV.js';
@@ -1,6 +1,6 @@
1
1
  import { OverlayChromeProvider, OverlayBody, OverlayCloseButton, OverlayDescription, OverlayFooter, OverlayHeader, OverlayTitle } from './chunk-NTW7SDAP.js';
2
2
  import { Backdrop } from './chunk-ASIHQQDQ.js';
3
- import { useControlled } from './chunk-4P2TFUVW.js';
3
+ import { useControlled } from './chunk-76ZIAFWD.js';
4
4
  import { Slot, Portal, ScrollLockProvider, DismissableLayer } from './chunk-NC2CBGX2.js';
5
5
  import { composeRefs } from './chunk-DN7WBRIV.js';
6
6
  import { cn } from './chunk-KZ4VFY2T.js';
@@ -144,5 +144,5 @@ Drawer.Footer = DrawerFooter;
144
144
  Drawer.Close = DrawerClose;
145
145
 
146
146
  export { Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger };
147
- //# sourceMappingURL=chunk-O6UUYPTB.js.map
148
- //# sourceMappingURL=chunk-O6UUYPTB.js.map
147
+ //# sourceMappingURL=chunk-2AUDMNHI.js.map
148
+ //# sourceMappingURL=chunk-2AUDMNHI.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/overlays/drawer/Drawer.tsx"],"names":["DrawerTrigger","DrawerContent"],"mappings":"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","file":"chunk-O6UUYPTB.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-2AUDMNHI.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,13 +1,13 @@
1
1
  import { Spinner } from './chunk-NKADHZMX.js';
2
2
  import { Backdrop } from './chunk-ASIHQQDQ.js';
3
3
  import { tv } from './chunk-BMBIZLO4.js';
4
- import { useControlled } from './chunk-4P2TFUVW.js';
4
+ import { useReducedMotion, useControlled } from './chunk-76ZIAFWD.js';
5
5
  import { Icon } from './chunk-TDX22OWF.js';
6
6
  import { Portal, Announce } from './chunk-NC2CBGX2.js';
7
7
  import { cn } from './chunk-KZ4VFY2T.js';
8
8
  import { forwardRef, createContext, useState, Children, isValidElement, useEffect, useMemo, useRef, useContext, useId, useCallback } from 'react';
9
9
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
10
- import { X, Check, TrendingUp, TrendingDown, Minus, ChevronDown } from 'lucide-react';
10
+ import { X, Check, TrendingUp, TrendingDown, Minus, ChevronDown, Bell } from 'lucide-react';
11
11
 
12
12
  // src/feedback/skeleton/Skeleton.variants.ts
13
13
  var skeletonVariants = tv({
@@ -1178,7 +1178,304 @@ function Tour({
1178
1178
  /* @__PURE__ */ jsx(Announce, { politeness: "polite", children: step.title ? `Step ${currentStep + 1} of ${steps.length}: ${typeof step.title === "string" ? step.title : ""}` : "" })
1179
1179
  ] });
1180
1180
  }
1181
+ var SIZE2 = {
1182
+ sm: "h-1 w-1",
1183
+ md: "h-1.5 w-1.5",
1184
+ lg: "h-2 w-2"
1185
+ };
1186
+ var TONE2 = {
1187
+ muted: "bg-muted-foreground",
1188
+ primary: "bg-primary",
1189
+ foreground: "bg-foreground"
1190
+ };
1191
+ var TypingIndicator = forwardRef(
1192
+ ({ who, size = "md", tone = "muted", subtle, className, ...props }, ref) => {
1193
+ const dot = cn(
1194
+ "inline-block rounded-full motion-safe:animate-bounce",
1195
+ SIZE2[size],
1196
+ TONE2[tone],
1197
+ subtle && "motion-safe:opacity-60"
1198
+ );
1199
+ return /* @__PURE__ */ jsxs(
1200
+ "span",
1201
+ {
1202
+ ref,
1203
+ role: "status",
1204
+ "aria-live": "polite",
1205
+ "aria-label": typeof who === "string" ? `${who} is typing` : "Typing",
1206
+ className: cn(
1207
+ "inline-flex items-center gap-2 text-xs text-muted-foreground",
1208
+ className
1209
+ ),
1210
+ ...props,
1211
+ children: [
1212
+ who && /* @__PURE__ */ jsx("span", { className: "truncate", children: who }),
1213
+ /* @__PURE__ */ jsxs("span", { className: "inline-flex items-end gap-1", "aria-hidden": "true", children: [
1214
+ /* @__PURE__ */ jsx("span", { className: dot, style: { animationDelay: "0ms" } }),
1215
+ /* @__PURE__ */ jsx("span", { className: dot, style: { animationDelay: "150ms" } }),
1216
+ /* @__PURE__ */ jsx("span", { className: dot, style: { animationDelay: "300ms" } })
1217
+ ] })
1218
+ ]
1219
+ }
1220
+ );
1221
+ }
1222
+ );
1223
+ TypingIndicator.displayName = "TypingIndicator";
1224
+ var STATUS_BG = {
1225
+ online: "bg-success",
1226
+ idle: "bg-warning",
1227
+ busy: "bg-destructive",
1228
+ offline: "bg-muted-foreground",
1229
+ invisible: "bg-transparent border border-muted-foreground"
1230
+ };
1231
+ var SIZE3 = {
1232
+ xs: "h-1.5 w-1.5",
1233
+ sm: "h-2 w-2",
1234
+ md: "h-2.5 w-2.5",
1235
+ lg: "h-3 w-3"
1236
+ };
1237
+ var POS = {
1238
+ "top-right": "absolute top-0 right-0",
1239
+ "top-left": "absolute top-0 left-0",
1240
+ "bottom-right": "absolute bottom-0 right-0",
1241
+ "bottom-left": "absolute bottom-0 left-0"
1242
+ };
1243
+ var STATUS_LABEL = {
1244
+ online: "Online",
1245
+ idle: "Idle",
1246
+ busy: "Busy",
1247
+ offline: "Offline",
1248
+ invisible: "Invisible"
1249
+ };
1250
+ var PresenceIndicator = forwardRef(
1251
+ ({ status = "online", size = "sm", pulse, position, label, className, ...props }, ref) => /* @__PURE__ */ jsx(
1252
+ "span",
1253
+ {
1254
+ ref,
1255
+ role: "status",
1256
+ "aria-label": label ?? STATUS_LABEL[status],
1257
+ "data-status": status,
1258
+ className: cn(
1259
+ "inline-flex rounded-full ring-2 ring-background",
1260
+ STATUS_BG[status],
1261
+ SIZE3[size],
1262
+ position && POS[position],
1263
+ "relative",
1264
+ className
1265
+ ),
1266
+ ...props,
1267
+ children: pulse && status === "online" && /* @__PURE__ */ jsx(
1268
+ "span",
1269
+ {
1270
+ "aria-hidden": "true",
1271
+ className: cn(
1272
+ "absolute inset-0 rounded-full opacity-75 motion-safe:animate-ping",
1273
+ STATUS_BG.online
1274
+ )
1275
+ }
1276
+ )
1277
+ }
1278
+ )
1279
+ );
1280
+ PresenceIndicator.displayName = "PresenceIndicator";
1281
+ var LiveCursor = forwardRef(
1282
+ ({
1283
+ x,
1284
+ y,
1285
+ name,
1286
+ color = "var(--color-primary)",
1287
+ smooth = true,
1288
+ labelOffset,
1289
+ pointerOnly,
1290
+ className,
1291
+ style,
1292
+ ...props
1293
+ }, ref) => {
1294
+ const reducedMotion = useReducedMotion();
1295
+ const useTransition = smooth && !reducedMotion;
1296
+ const lx = labelOffset?.x ?? 12;
1297
+ const ly = labelOffset?.y ?? 16;
1298
+ const wrapperStyle = {
1299
+ transform: `translate3d(${x}px, ${y}px, 0)`,
1300
+ transition: useTransition ? "transform 80ms linear" : void 0,
1301
+ ...style
1302
+ };
1303
+ return /* @__PURE__ */ jsxs(
1304
+ "div",
1305
+ {
1306
+ ref,
1307
+ "aria-hidden": "true",
1308
+ className: cn(
1309
+ "pointer-events-none absolute left-0 top-0 z-50 select-none",
1310
+ className
1311
+ ),
1312
+ style: wrapperStyle,
1313
+ ...props,
1314
+ children: [
1315
+ /* @__PURE__ */ jsx(
1316
+ "svg",
1317
+ {
1318
+ width: "20",
1319
+ height: "20",
1320
+ viewBox: "0 0 24 24",
1321
+ xmlns: "http://www.w3.org/2000/svg",
1322
+ className: "drop-shadow-sm",
1323
+ children: /* @__PURE__ */ jsx(
1324
+ "path",
1325
+ {
1326
+ d: "M5 3 L5 19 L9.5 14.5 L12.5 21 L15.5 19.5 L12.5 13 L19 13 Z",
1327
+ fill: color,
1328
+ stroke: "white",
1329
+ strokeWidth: "1.25",
1330
+ strokeLinejoin: "round"
1331
+ }
1332
+ )
1333
+ }
1334
+ ),
1335
+ name && !pointerOnly && /* @__PURE__ */ jsx(
1336
+ "span",
1337
+ {
1338
+ className: "absolute whitespace-nowrap rounded-md px-1.5 py-0.5 text-[11px] font-medium leading-none text-white shadow-sm",
1339
+ style: { backgroundColor: color, transform: `translate(${lx}px, ${ly}px)` },
1340
+ children: name
1341
+ }
1342
+ )
1343
+ ]
1344
+ }
1345
+ );
1346
+ }
1347
+ );
1348
+ LiveCursor.displayName = "LiveCursor";
1349
+ var NotificationItem = forwardRef(
1350
+ ({
1351
+ icon,
1352
+ title,
1353
+ description,
1354
+ timestamp,
1355
+ unread,
1356
+ actions,
1357
+ onSelect,
1358
+ onDismiss,
1359
+ className,
1360
+ ...props
1361
+ }, ref) => {
1362
+ const interactive = !!onSelect;
1363
+ return /* @__PURE__ */ jsxs(
1364
+ "div",
1365
+ {
1366
+ ref,
1367
+ role: interactive ? "button" : void 0,
1368
+ tabIndex: interactive ? 0 : void 0,
1369
+ "data-unread": unread ? "" : void 0,
1370
+ onClick: onSelect,
1371
+ onKeyDown: interactive ? (e) => {
1372
+ if (e.key === "Enter" || e.key === " ") {
1373
+ e.preventDefault();
1374
+ onSelect?.();
1375
+ }
1376
+ } : void 0,
1377
+ className: cn(
1378
+ "group/notif relative flex gap-3 rounded-md px-3 py-2.5 text-sm",
1379
+ interactive && "cursor-pointer hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
1380
+ unread && "bg-primary-soft/30",
1381
+ className
1382
+ ),
1383
+ ...props,
1384
+ children: [
1385
+ unread && /* @__PURE__ */ jsx(
1386
+ "span",
1387
+ {
1388
+ "aria-hidden": "true",
1389
+ className: "absolute left-1 top-3 inline-block h-2 w-2 rounded-full bg-primary"
1390
+ }
1391
+ ),
1392
+ icon && /* @__PURE__ */ jsx("div", { className: "shrink-0 self-start pl-3", children: icon }),
1393
+ /* @__PURE__ */ jsxs("div", { className: cn("min-w-0 flex-1", !icon && "pl-3"), children: [
1394
+ /* @__PURE__ */ jsxs("div", { className: "flex items-baseline gap-2", children: [
1395
+ /* @__PURE__ */ jsx(
1396
+ "span",
1397
+ {
1398
+ className: cn(
1399
+ "truncate text-foreground",
1400
+ unread ? "font-semibold" : "font-medium"
1401
+ ),
1402
+ children: title
1403
+ }
1404
+ ),
1405
+ timestamp && /* @__PURE__ */ jsx("span", { className: "ml-auto whitespace-nowrap text-xs text-muted-foreground", children: timestamp })
1406
+ ] }),
1407
+ description && /* @__PURE__ */ jsx("div", { className: "mt-0.5 line-clamp-2 text-xs text-muted-foreground", children: description }),
1408
+ actions && /* @__PURE__ */ jsx("div", { className: "mt-1.5 flex items-center gap-2", children: actions })
1409
+ ] }),
1410
+ onDismiss && /* @__PURE__ */ jsx(
1411
+ "button",
1412
+ {
1413
+ type: "button",
1414
+ "aria-label": "Dismiss notification",
1415
+ onClick: (e) => {
1416
+ e.stopPropagation();
1417
+ onDismiss();
1418
+ },
1419
+ className: cn(
1420
+ "absolute right-2 top-2 inline-flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground opacity-0",
1421
+ "group-hover/notif:opacity-100 group-focus-within/notif:opacity-100",
1422
+ "hover:bg-background hover:text-foreground focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
1423
+ ),
1424
+ children: /* @__PURE__ */ jsx(X, { className: "h-3.5 w-3.5" })
1425
+ }
1426
+ )
1427
+ ]
1428
+ }
1429
+ );
1430
+ }
1431
+ );
1432
+ NotificationItem.displayName = "NotificationCenter.Item";
1433
+ var NotificationCenterInner = forwardRef(
1434
+ ({
1435
+ title = "Notifications",
1436
+ count,
1437
+ headerActions,
1438
+ emptyState,
1439
+ footer,
1440
+ children,
1441
+ className,
1442
+ ...props
1443
+ }, ref) => {
1444
+ const items = Children.toArray(children).filter(isValidElement);
1445
+ const isEmpty = items.length === 0;
1446
+ return /* @__PURE__ */ jsxs(
1447
+ "div",
1448
+ {
1449
+ ref,
1450
+ role: "region",
1451
+ "aria-label": "Notifications",
1452
+ className: cn(
1453
+ "flex w-80 flex-col rounded-md border border-border bg-popover text-popover-foreground shadow-md",
1454
+ className
1455
+ ),
1456
+ ...props,
1457
+ children: [
1458
+ /* @__PURE__ */ jsxs("header", { className: "flex items-center justify-between gap-2 border-b border-border px-3 py-2.5", children: [
1459
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
1460
+ /* @__PURE__ */ jsx("span", { className: "text-sm font-semibold", children: title }),
1461
+ count != null && /* @__PURE__ */ jsx("span", { className: "inline-flex items-center justify-center rounded-full bg-primary px-1.5 text-[10px] font-semibold leading-5 text-primary-foreground", children: count })
1462
+ ] }),
1463
+ headerActions
1464
+ ] }),
1465
+ /* @__PURE__ */ jsx("div", { className: "max-h-96 overflow-y-auto py-1", children: isEmpty ? emptyState ?? /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-2 px-4 py-10 text-center text-muted-foreground", children: [
1466
+ /* @__PURE__ */ jsx(Bell, { className: "h-6 w-6" }),
1467
+ /* @__PURE__ */ jsx("p", { className: "text-sm", children: "You're all caught up." })
1468
+ ] }) : /* @__PURE__ */ jsx("div", { className: "flex flex-col", children }) }),
1469
+ footer && /* @__PURE__ */ jsx("div", { className: "border-t border-border px-3 py-2 text-center text-xs", children: footer })
1470
+ ]
1471
+ }
1472
+ );
1473
+ }
1474
+ );
1475
+ NotificationCenterInner.displayName = "NotificationCenter";
1476
+ var NotificationCenter = NotificationCenterInner;
1477
+ NotificationCenter.Item = NotificationItem;
1181
1478
 
1182
- export { Alert, AlertSimple, Banner, BannerSimple, Callout, InlineSpinner, LoadingOverlay, LoadingState, MeterBar, OnboardingChecklist, OnboardingChecklistTask, ProgressBar, ProgressCircle, ProgressSteps, Skeleton, StatusIndicator, Toast, ToastSimple, Toaster, Tour, TrendIndicator, UndoBar, alertSimpleVariants, bannerSimpleVariants, progressFillVariants, progressTrackVariants, skeletonVariants, toastSimpleVariants, toaster, useOnboardingChecklist, useToaster };
1183
- //# sourceMappingURL=chunk-45SFQEMP.js.map
1184
- //# sourceMappingURL=chunk-45SFQEMP.js.map
1479
+ export { Alert, AlertSimple, Banner, BannerSimple, Callout, InlineSpinner, LiveCursor, LoadingOverlay, LoadingState, MeterBar, NotificationCenter, NotificationItem, OnboardingChecklist, OnboardingChecklistTask, PresenceIndicator, ProgressBar, ProgressCircle, ProgressSteps, Skeleton, StatusIndicator, Toast, ToastSimple, Toaster, Tour, TrendIndicator, TypingIndicator, UndoBar, alertSimpleVariants, bannerSimpleVariants, progressFillVariants, progressTrackVariants, skeletonVariants, toastSimpleVariants, toaster, useOnboardingChecklist, useToaster };
1480
+ //# sourceMappingURL=chunk-3PUV6PGJ.js.map
1481
+ //# sourceMappingURL=chunk-3PUV6PGJ.js.map