@wow-two-beta/ui 0.0.53 → 0.0.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/index.js +2 -2
- package/dist/{chunk-X7SQOMHC.js → chunk-7Q25FEQB.js} +5 -5
- package/dist/{chunk-X7SQOMHC.js.map → chunk-7Q25FEQB.js.map} +1 -1
- package/dist/{chunk-SA7OVNKQ.js → chunk-AKNT7FUA.js} +3 -3
- package/dist/{chunk-SA7OVNKQ.js.map → chunk-AKNT7FUA.js.map} +1 -1
- package/dist/{chunk-MN46ESLR.js → chunk-BKR7A7WH.js} +51 -26
- package/dist/chunk-BKR7A7WH.js.map +1 -0
- package/dist/{chunk-X5INLQTJ.js → chunk-CRKW4VXA.js} +3 -3
- package/dist/{chunk-X5INLQTJ.js.map → chunk-CRKW4VXA.js.map} +1 -1
- package/dist/{chunk-2SIB3MZL.js → chunk-HS5BIBT2.js} +23 -4
- package/dist/chunk-HS5BIBT2.js.map +1 -0
- package/dist/{chunk-FIZJCXNN.js → chunk-LLNJ3GD2.js} +39 -19
- package/dist/chunk-LLNJ3GD2.js.map +1 -0
- package/dist/{chunk-SGMG6NZB.js → chunk-O2DK3E3E.js} +23 -4
- package/dist/chunk-O2DK3E3E.js.map +1 -0
- package/dist/{chunk-UJDAJMFJ.js → chunk-OMSOGGGK.js} +18 -6
- package/dist/chunk-OMSOGGGK.js.map +1 -0
- package/dist/{chunk-EZ2NOHIL.js → chunk-OO7UYVI7.js} +15 -16
- package/dist/chunk-OO7UYVI7.js.map +1 -0
- package/dist/{chunk-TZETHHW5.js → chunk-RDDIOVK4.js} +114 -162
- package/dist/chunk-RDDIOVK4.js.map +1 -0
- package/dist/{chunk-OP3FW6PX.js → chunk-S6RT24VI.js} +6 -6
- package/dist/{chunk-OP3FW6PX.js.map → chunk-S6RT24VI.js.map} +1 -1
- package/dist/{chunk-2YI5Y2U3.js → chunk-T6ZDMPHL.js} +3 -3
- package/dist/{chunk-2YI5Y2U3.js.map → chunk-T6ZDMPHL.js.map} +1 -1
- package/dist/{chunk-V5RYX33D.js → chunk-VIWAIXVK.js} +3 -3
- package/dist/{chunk-V5RYX33D.js.map → chunk-VIWAIXVK.js.map} +1 -1
- package/dist/display/card/Card.d.ts +4 -8
- package/dist/display/card/Card.d.ts.map +1 -1
- package/dist/display/chatBubble/ChatBubble.d.ts.map +1 -1
- package/dist/display/index.js +3 -3
- package/dist/feedback/index.js +3 -3
- package/dist/feedback/notificationCenter/NotificationCenter.d.ts.map +1 -1
- package/dist/feedback/toastSimple/ToastSimple.d.ts +3 -7
- package/dist/feedback/toastSimple/ToastSimple.d.ts.map +1 -1
- package/dist/feedback/undoBar/UndoBar.d.ts.map +1 -1
- package/dist/forms/index.js +7 -7
- package/dist/icons/index.js +1 -1
- package/dist/index.js +13 -13
- package/dist/layout/index.js +4 -4
- package/dist/nav/index.js +4 -4
- package/dist/nav/menu/Menu.d.ts +5 -3
- package/dist/nav/menu/Menu.d.ts.map +1 -1
- package/dist/nav/navigationMenu/NavigationMenu.d.ts.map +1 -1
- package/dist/overlays/bottomSheet/BottomSheet.d.ts +3 -1
- package/dist/overlays/bottomSheet/BottomSheet.d.ts.map +1 -1
- package/dist/overlays/dialog/Dialog.d.ts +5 -3
- package/dist/overlays/dialog/Dialog.d.ts.map +1 -1
- package/dist/overlays/drawer/Drawer.d.ts +3 -1
- package/dist/overlays/drawer/Drawer.d.ts.map +1 -1
- package/dist/overlays/index.js +4 -4
- package/dist/utils/StyleTokens.d.ts +11 -0
- package/dist/utils/StyleTokens.d.ts.map +1 -0
- package/dist/utils/SurfaceStyles.d.ts +1 -1
- package/dist/utils/SurfaceStyles.d.ts.map +1 -1
- package/dist/utils/Tones.d.ts +6 -0
- package/dist/utils/Tones.d.ts.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-2SIB3MZL.js.map +0 -1
- package/dist/chunk-EZ2NOHIL.js.map +0 -1
- package/dist/chunk-FIZJCXNN.js.map +0 -1
- package/dist/chunk-MN46ESLR.js.map +0 -1
- package/dist/chunk-SGMG6NZB.js.map +0 -1
- package/dist/chunk-TZETHHW5.js.map +0 -1
- package/dist/chunk-UJDAJMFJ.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/feedback/skeleton/Skeleton.variants.ts","../src/feedback/skeleton/Skeleton.tsx","../src/feedback/progressBar/ProgressBar.variants.ts","../src/feedback/progressBar/ProgressBar.tsx","../src/feedback/progressCircle/ProgressCircle.tsx","../src/feedback/alertSimple/AlertSimple.variants.ts","../src/feedback/alertSimple/AlertSimple.tsx","../src/feedback/bannerSimple/BannerSimple.variants.ts","../src/feedback/bannerSimple/BannerSimple.tsx","../src/feedback/toastSimple/ToastSimple.tsx","../src/feedback/toastSimple/ToastSimple.variants.ts","../src/feedback/alert/Alert.tsx","../src/feedback/banner/Banner.tsx","../src/feedback/toast/Toast.tsx","../src/feedback/callout/Callout.tsx","../src/feedback/inlineSpinner/InlineSpinner.tsx","../src/feedback/loadingState/LoadingState.tsx","../src/feedback/progressSteps/ProgressSteps.tsx","../src/feedback/statusIndicator/StatusIndicator.tsx","../src/feedback/meterBar/MeterBar.tsx","../src/feedback/trendIndicator/TrendIndicator.tsx","../src/feedback/toaster/Toaster.tsx","../src/feedback/loadingOverlay/LoadingOverlay.tsx","../src/feedback/undoBar/UndoBar.tsx","../src/feedback/onboardingChecklist/OnboardingChecklist.tsx","../src/feedback/tour/Tour.tsx","../src/feedback/typingIndicator/TypingIndicator.tsx","../src/feedback/presenceIndicator/PresenceIndicator.tsx","../src/feedback/liveCursor/LiveCursor.tsx","../src/feedback/notificationCenter/NotificationCenter.tsx"],"names":["forwardRef","jsx","jsxs","X","LoadingOverlay","useState","useRef","useEffect","OnboardingChecklist","useMemo","OnboardingChecklistTask","Check","SIZE","TONE","Children","isValidElement"],"mappings":"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","file":"chunk-LLNJ3GD2.js","sourcesContent":["import { tv, type VariantProps } from '../../utils';\n\nexport const skeletonVariants = tv({\n base: 'animate-pulse bg-muted',\n variants: {\n shape: {\n rect: 'rounded-md',\n text: 'h-4 rounded-sm',\n circle: 'rounded-full',\n },\n },\n defaultVariants: {\n shape: 'rect',\n },\n});\n\nexport type SkeletonVariants = VariantProps<typeof skeletonVariants>;\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\nimport { skeletonVariants, type SkeletonVariants } from './Skeleton.variants';\n\nexport interface SkeletonProps extends ComponentPropsWithoutRef<'div'>, SkeletonVariants {}\n\n/**\n * Loading placeholder. Use sized via `className` (e.g. `w-32 h-4`) for text\n * lines, or as a full block with `shape=\"rect\"`.\n */\nexport const Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\n ({ className, shape, ...props }, ref) => (\n <div\n ref={ref}\n aria-hidden=\"true\"\n className={cn(skeletonVariants({ shape }), className)}\n {...props}\n />\n ),\n);\nSkeleton.displayName = 'Skeleton';\n","import { tv, type VariantProps } from '../../utils';\n\nexport const progressTrackVariants = tv({\n base: 'h-2 w-full overflow-hidden rounded-full bg-muted',\n variants: {\n size: {\n sm: 'h-1',\n md: 'h-2',\n lg: 'h-3',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport const progressFillVariants = tv({\n base: 'h-full rounded-full transition-[width] duration-300',\n variants: {\n tone: {\n brand: 'bg-primary',\n success: 'bg-success',\n warning: 'bg-warning',\n danger: 'bg-destructive',\n neutral: 'bg-muted-foreground',\n },\n },\n defaultVariants: {\n tone: 'brand',\n },\n});\n\nexport type ProgressBarVariants = VariantProps<typeof progressTrackVariants> &\n VariantProps<typeof progressFillVariants>;\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\nimport {\n progressFillVariants,\n progressTrackVariants,\n type ProgressBarVariants,\n} from './ProgressBar.variants';\n\nexport interface ProgressBarProps\n extends Omit<ComponentPropsWithoutRef<'div'>, 'children'>,\n ProgressBarVariants {\n /** Current value 0–100. Pass `undefined` for indeterminate. */\n value?: number;\n max?: number;\n /** Accessible label for the progress. */\n label?: string;\n}\n\n/**\n * Linear progress indicator. Set `value` (0–`max`) for determinate; omit\n * for indeterminate.\n */\nexport const ProgressBar = forwardRef<HTMLDivElement, ProgressBarProps>(\n ({ value, max = 100, size, tone, label, className, ...props }, ref) => {\n const determinate = typeof value === 'number';\n const pct = determinate ? Math.min(100, Math.max(0, (value / max) * 100)) : undefined;\n return (\n <div\n ref={ref}\n role=\"progressbar\"\n aria-label={label}\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={determinate ? value : undefined}\n className={cn(progressTrackVariants({ size }), className)}\n {...props}\n >\n <div\n className={cn(\n progressFillVariants({ tone }),\n !determinate && 'w-1/3 animate-[indeterminate_1.4s_ease-in-out_infinite]',\n )}\n style={determinate ? { width: `${pct}%` } : undefined}\n />\n </div>\n );\n },\n);\nProgressBar.displayName = 'ProgressBar';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport interface ProgressCircleProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {\n /** 0–100. Omit for indeterminate. */\n value?: number;\n max?: number;\n size?: number;\n thickness?: number;\n tone?: 'brand' | 'success' | 'warning' | 'danger' | 'neutral';\n label?: string;\n}\n\nconst TONE_CLASS: Record<NonNullable<ProgressCircleProps['tone']>, string> = {\n brand: 'text-primary',\n success: 'text-success',\n warning: 'text-warning',\n danger: 'text-destructive',\n neutral: 'text-muted-foreground',\n};\n\n/**\n * Circular progress indicator (SVG). Determinate when `value` is set;\n * indeterminate (rotating) when omitted.\n */\nexport const ProgressCircle = forwardRef<HTMLDivElement, ProgressCircleProps>(\n (\n { value, max = 100, size = 40, thickness = 4, tone = 'brand', label, className, ...props },\n ref,\n ) => {\n const determinate = typeof value === 'number';\n const radius = (size - thickness) / 2;\n const circumference = 2 * Math.PI * radius;\n const pct = determinate ? Math.min(100, Math.max(0, (value / max) * 100)) : 25;\n const offset = circumference - (pct / 100) * circumference;\n\n return (\n <div\n ref={ref}\n role=\"progressbar\"\n aria-label={label}\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={determinate ? value : undefined}\n className={cn('inline-block', !determinate && 'animate-spin', TONE_CLASS[tone], className)}\n style={{ width: size, height: size }}\n {...props}\n >\n <svg width={size} height={size} viewBox={`0 0 ${size} ${size}`}>\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n stroke=\"currentColor\"\n strokeWidth={thickness}\n fill=\"none\"\n opacity={0.2}\n />\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n stroke=\"currentColor\"\n strokeWidth={thickness}\n strokeLinecap=\"round\"\n fill=\"none\"\n strokeDasharray={circumference}\n strokeDashoffset={offset}\n transform={`rotate(-90 ${size / 2} ${size / 2})`}\n style={{ transition: 'stroke-dashoffset 300ms ease' }}\n />\n </svg>\n </div>\n );\n },\n);\nProgressCircle.displayName = 'ProgressCircle';\n","import { tv, type VariantProps } from '../../utils';\n\nexport const alertSimpleVariants = tv({\n base: 'rounded-md border px-4 py-3 text-sm',\n variants: {\n severity: {\n info: 'border-info-soft bg-info-soft text-info-soft-foreground',\n success: 'border-success-soft bg-success-soft text-success-soft-foreground',\n warning: 'border-warning-soft bg-warning-soft text-warning-soft-foreground',\n danger: 'border-destructive-soft bg-destructive-soft text-destructive-soft-foreground',\n neutral: 'border-border bg-muted text-foreground',\n },\n },\n defaultVariants: {\n severity: 'info',\n },\n});\n\nexport type AlertSimpleVariants = VariantProps<typeof alertSimpleVariants>;\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\nimport { alertSimpleVariants, type AlertSimpleVariants } from './AlertSimple.variants';\n\nexport interface AlertSimpleProps\n extends ComponentPropsWithoutRef<'div'>,\n AlertSimpleVariants {}\n\n/**\n * Atomic alert — a styled colored container that takes free-form `children`.\n * No internal slots; consumer composes title/description/actions inline.\n *\n * For the structured Icon + Title + Description + Actions composition use\n * the `Alert` molecule (L4).\n */\nexport const AlertSimple = forwardRef<HTMLDivElement, AlertSimpleProps>(\n ({ className, severity, role = 'status', ...props }, ref) => (\n <div\n ref={ref}\n role={role}\n className={cn(alertSimpleVariants({ severity }), className)}\n {...props}\n />\n ),\n);\nAlertSimple.displayName = 'AlertSimple';\n","import { tv, type VariantProps } from '../../utils';\n\nexport const bannerSimpleVariants = tv({\n base: 'w-full px-6 py-3 text-sm',\n variants: {\n severity: {\n info: 'bg-info text-info-foreground',\n success: 'bg-success text-success-foreground',\n warning: 'bg-warning text-warning-foreground',\n danger: 'bg-destructive text-destructive-foreground',\n neutral: 'bg-inverse text-inverse-foreground',\n },\n },\n defaultVariants: {\n severity: 'info',\n },\n});\n\nexport type BannerSimpleVariants = VariantProps<typeof bannerSimpleVariants>;\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\nimport { bannerSimpleVariants, type BannerSimpleVariants } from './BannerSimple.variants';\n\nexport interface BannerSimpleProps\n extends ComponentPropsWithoutRef<'div'>,\n BannerSimpleVariants {}\n\n/**\n * Full-width banner — typically pinned to the top of the app to broadcast\n * status. Atom; for structured slotted layout use `Banner` (L4).\n */\nexport const BannerSimple = forwardRef<HTMLDivElement, BannerSimpleProps>(\n ({ className, severity, role = 'status', ...props }, ref) => (\n <div\n ref={ref}\n role={role}\n className={cn(bannerSimpleVariants({ severity }), className)}\n {...props}\n />\n ),\n);\nBannerSimple.displayName = 'BannerSimple';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn, surfaceVariants } from '../../utils';\nimport type { Tone } from '../../utils';\nimport type { ToastSimpleVariants } from './ToastSimple.variants';\n\n/** Represents the prop surface of `ToastSimple`. */\nexport interface ToastSimpleProps\n extends ComponentPropsWithoutRef<'div'>,\n ToastSimpleVariants {}\n\n/** Maps the toast `severity` keyword to a SurfaceStyles `tone`. */\nconst SEVERITY_TO_TONE: Record<NonNullable<ToastSimpleVariants['severity']>, Tone> = {\n info: 'info',\n success: 'success',\n warning: 'warning',\n danger: 'danger',\n neutral: 'neutral',\n};\n\n/** Provides the atomic toast card — single tone-driven notification with free-form children. */\nexport const ToastSimple = forwardRef<HTMLDivElement, ToastSimpleProps>(\n ({ className, severity = 'neutral', role = 'status', ...props }, ref) => (\n <div\n ref={ref}\n role={role}\n aria-live=\"polite\"\n className={cn(\n 'pointer-events-auto text-sm',\n surfaceVariants({\n variant: 'surface',\n tone: SEVERITY_TO_TONE[severity],\n radius: 'md',\n padding: 'md',\n elevation: 3,\n }),\n className,\n )}\n {...props}\n />\n ),\n);\nToastSimple.displayName = 'ToastSimple';\n","import { tv, type VariantProps } from '../../utils';\n\nexport const toastSimpleVariants = tv({\n base: 'pointer-events-auto rounded-md border bg-popover text-popover-foreground shadow-lg px-4 py-3 text-sm',\n variants: {\n severity: {\n info: 'border-info-soft',\n success: 'border-success-soft',\n warning: 'border-warning-soft',\n danger: 'border-destructive-soft',\n neutral: 'border-border',\n },\n },\n defaultVariants: {\n severity: 'neutral',\n },\n});\n\nexport type ToastSimpleVariants = VariantProps<typeof toastSimpleVariants>;\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { X } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\nimport { AlertSimple } from '../alertSimple/AlertSimple';\nimport type { AlertSimpleVariants } from '../alertSimple/AlertSimple.variants';\n\nexport interface AlertProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'title'>,\n AlertSimpleVariants {\n /** Optional leading icon. */\n icon?: ReactNode;\n /** Bold heading line. */\n title?: ReactNode;\n /** Body text below the title. */\n description?: ReactNode;\n /** Right-side action slot (typically Button(s)). */\n actions?: ReactNode;\n /** When provided, renders a close button that calls this. */\n onClose?: () => void;\n /** Accessible label for the close button. Default `\"Dismiss\"`. */\n closeLabel?: string;\n}\n\n/**\n * Slotted Alert — Icon + Title + Description + Actions on top of `AlertSimple`.\n * Pair: `AlertSimple` (atom, free-form children) + `Alert` (this molecule).\n */\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>(\n (\n { icon, title, description, actions, onClose, closeLabel = 'Dismiss', severity, className, ...props },\n ref,\n ) => (\n <AlertSimple\n ref={ref}\n severity={severity}\n className={cn('flex items-start gap-3', className)}\n {...props}\n >\n {icon && <span className=\"mt-0.5 shrink-0\">{icon}</span>}\n <div className=\"min-w-0 flex-1\">\n {title && <div className=\"font-medium\">{title}</div>}\n {description && <div className={cn('text-sm', title && 'mt-0.5 opacity-90')}>{description}</div>}\n {actions && <div className=\"mt-2 flex flex-wrap items-center gap-2\">{actions}</div>}\n </div>\n {onClose && (\n <button\n type=\"button\"\n aria-label={closeLabel}\n onClick={onClose}\n className=\"-mr-1 grid h-6 w-6 shrink-0 place-items-center rounded text-current opacity-60 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-current\"\n >\n <Icon icon={X} size={14} />\n </button>\n )}\n </AlertSimple>\n ),\n);\nAlert.displayName = 'Alert';\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { X } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\nimport { BannerSimple } from '../bannerSimple/BannerSimple';\nimport type { BannerSimpleVariants } from '../bannerSimple/BannerSimple.variants';\n\nexport interface BannerProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'title'>,\n BannerSimpleVariants {\n icon?: ReactNode;\n title?: ReactNode;\n description?: ReactNode;\n actions?: ReactNode;\n onClose?: () => void;\n closeLabel?: string;\n}\n\n/**\n * Slotted full-width banner. Pair with `BannerSimple` (atomic, free-form\n * children) when you don't need the structured slots.\n */\nexport const Banner = forwardRef<HTMLDivElement, BannerProps>(\n (\n { icon, title, description, actions, onClose, closeLabel = 'Dismiss', severity, className, ...props },\n ref,\n ) => (\n <BannerSimple\n ref={ref}\n severity={severity}\n className={cn('flex items-center gap-4', className)}\n {...props}\n >\n {icon && <span className=\"shrink-0\">{icon}</span>}\n <div className=\"flex min-w-0 flex-1 items-baseline gap-3\">\n {title && <span className=\"font-medium\">{title}</span>}\n {description && <span className=\"opacity-90\">{description}</span>}\n </div>\n {actions && <div className=\"flex shrink-0 items-center gap-2\">{actions}</div>}\n {onClose && (\n <button\n type=\"button\"\n aria-label={closeLabel}\n onClick={onClose}\n className=\"-mr-2 grid h-7 w-7 shrink-0 place-items-center rounded text-current opacity-70 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-current\"\n >\n <Icon icon={X} size={16} />\n </button>\n )}\n </BannerSimple>\n ),\n);\nBanner.displayName = 'Banner';\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { X } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\nimport { ToastSimple } from '../toastSimple/ToastSimple';\nimport type { ToastSimpleVariants } from '../toastSimple/ToastSimple.variants';\n\nexport interface ToastProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'title'>,\n ToastSimpleVariants {\n icon?: ReactNode;\n title?: ReactNode;\n description?: ReactNode;\n actions?: ReactNode;\n onClose?: () => void;\n closeLabel?: string;\n}\n\n/**\n * Slotted toast — visual only (no queue / portal / lifecycle, those land\n * with `Toaster` at L5). Pair: `ToastSimple` (atomic) + `Toast` (molecule).\n */\nexport const Toast = forwardRef<HTMLDivElement, ToastProps>(\n (\n { icon, title, description, actions, onClose, closeLabel = 'Dismiss', severity, className, ...props },\n ref,\n ) => (\n <ToastSimple\n ref={ref}\n severity={severity}\n className={cn('flex items-start gap-3', className)}\n {...props}\n >\n {icon && <span className=\"mt-0.5 shrink-0\">{icon}</span>}\n <div className=\"min-w-0 flex-1\">\n {title && <div className=\"font-medium\">{title}</div>}\n {description && (\n <div className={cn('text-sm', title && 'mt-0.5 text-muted-foreground')}>{description}</div>\n )}\n {actions && <div className=\"mt-2 flex flex-wrap items-center gap-2\">{actions}</div>}\n </div>\n {onClose && (\n <button\n type=\"button\"\n aria-label={closeLabel}\n onClick={onClose}\n className=\"-mr-1 grid h-6 w-6 shrink-0 place-items-center rounded text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n >\n <Icon icon={X} size={14} />\n </button>\n )}\n </ToastSimple>\n ),\n);\nToast.displayName = 'Toast';\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils';\n\nexport interface CalloutProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n severity?: 'info' | 'success' | 'warning' | 'danger' | 'neutral';\n icon?: ReactNode;\n title?: ReactNode;\n children?: ReactNode;\n}\n\nconst SEVERITY: Record<NonNullable<CalloutProps['severity']>, string> = {\n info: 'border-l-info text-foreground',\n success: 'border-l-success text-foreground',\n warning: 'border-l-warning text-foreground',\n danger: 'border-l-destructive text-foreground',\n neutral: 'border-l-border text-foreground',\n};\n\n/**\n * Quieter cousin of `Alert` — colored left rule, no fill. Use for inline\n * doc-style notes, supplementary content (think MDX callouts).\n */\nexport const Callout = forwardRef<HTMLDivElement, CalloutProps>(\n ({ severity = 'info', icon, title, children, className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'flex items-start gap-3 rounded-md border-l-4 bg-card px-4 py-3 text-sm',\n SEVERITY[severity],\n className,\n )}\n {...props}\n >\n {icon && <span className=\"mt-0.5 shrink-0\">{icon}</span>}\n <div className=\"min-w-0 flex-1\">\n {title && <div className=\"mb-0.5 font-medium\">{title}</div>}\n {children}\n </div>\n </div>\n ),\n);\nCallout.displayName = 'Callout';\n","import { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\nimport { Spinner, type SpinnerProps } from '../spinner/Spinner';\n\nexport interface InlineSpinnerProps extends Omit<ComponentPropsWithoutRef<'span'>, 'children'> {\n /** Label rendered next to the spinner. Default `\"Loading…\"`. */\n children?: ReactNode;\n size?: SpinnerProps['size'];\n tone?: SpinnerProps['tone'];\n}\n\n/**\n * Spinner + label inline. Drops cleanly into buttons, list rows, anywhere\n * a \"loading…\" affordance is needed mid-flow.\n */\nexport const InlineSpinner = forwardRef<HTMLSpanElement, InlineSpinnerProps>(\n ({ children = 'Loading…', size = 'sm', tone = 'default', className, ...props }, ref) => (\n <span\n ref={ref}\n className={cn('inline-flex items-center gap-2 text-sm text-muted-foreground', className)}\n {...props}\n >\n <Spinner size={size} tone={tone} />\n {children}\n </span>\n ),\n);\nInlineSpinner.displayName = 'InlineSpinner';\n","import { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\nimport { Spinner } from '../spinner/Spinner';\n\nexport interface LoadingStateProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n /** Heading copy. Default `\"Loading…\"`. */\n title?: ReactNode;\n /** Body text below the title. */\n description?: ReactNode;\n /** Size of the spinner. Default `lg`. */\n size?: 'sm' | 'md' | 'lg' | 'xl';\n}\n\n/**\n * Centered loading affordance for full sections / pages — Spinner + title +\n * description stacked. Use inline `InlineSpinner` for in-row loading.\n */\nexport const LoadingState = forwardRef<HTMLDivElement, LoadingStateProps>(\n ({ title = 'Loading…', description, size = 'lg', className, ...props }, ref) => (\n <div\n ref={ref}\n role=\"status\"\n className={cn('flex flex-col items-center justify-center gap-3 py-12 text-center', className)}\n {...props}\n >\n <Spinner size={size} tone=\"brand\" />\n {title && <div className=\"text-sm font-medium text-foreground\">{title}</div>}\n {description && <div className=\"text-sm text-muted-foreground\">{description}</div>}\n </div>\n ),\n);\nLoadingState.displayName = 'LoadingState';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { Check } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\n\nexport interface ProgressStepsProps extends ComponentPropsWithoutRef<'ol'> {\n /** Step labels in order. */\n steps: string[];\n /** Index of the active step (0-based). Steps before are marked complete. */\n current: number;\n /** Layout direction. Default `horizontal`. */\n orientation?: 'horizontal' | 'vertical';\n}\n\n/**\n * Visual N-of-M progress dots / pills with connectors. No state machine —\n * the consumer drives `current`. For full wizard-with-content semantics use\n * the L5 `Stepper` organism.\n */\nexport const ProgressSteps = forwardRef<HTMLOListElement, ProgressStepsProps>(\n ({ steps, current, orientation = 'horizontal', className, ...props }, ref) => (\n <ol\n ref={ref}\n className={cn(\n 'flex',\n orientation === 'horizontal' ? 'flex-row items-center gap-2' : 'flex-col gap-3',\n className,\n )}\n {...props}\n >\n {steps.map((label, i) => {\n const status = i < current ? 'complete' : i === current ? 'current' : 'upcoming';\n return (\n <li\n key={i}\n className={cn(\n 'flex items-center gap-2',\n orientation === 'horizontal' && i < steps.length - 1 && 'flex-1',\n )}\n >\n <span\n className={cn(\n 'grid h-7 w-7 place-items-center rounded-full text-xs font-medium',\n status === 'complete' && 'bg-primary text-primary-foreground',\n status === 'current' && 'border-2 border-primary text-primary',\n status === 'upcoming' && 'border border-border text-muted-foreground',\n )}\n aria-current={status === 'current' ? 'step' : undefined}\n >\n {status === 'complete' ? <Icon icon={Check} size={14} /> : i + 1}\n </span>\n <span\n className={cn(\n 'text-sm',\n status === 'upcoming' ? 'text-muted-foreground' : 'text-foreground',\n )}\n >\n {label}\n </span>\n {orientation === 'horizontal' && i < steps.length - 1 && (\n <span\n className={cn(\n 'h-px flex-1',\n i < current ? 'bg-primary' : 'bg-border',\n )}\n aria-hidden=\"true\"\n />\n )}\n </li>\n );\n })}\n </ol>\n ),\n);\nProgressSteps.displayName = 'ProgressSteps';\n","import { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\n\nexport interface StatusIndicatorProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n tone?: 'success' | 'warning' | 'destructive' | 'info' | 'neutral';\n /** Bold first-line label (e.g. \"All systems normal\"). */\n label: ReactNode;\n /** Smaller secondary line (e.g. \"Updated 2m ago\"). */\n description?: ReactNode;\n /** Optional pulsing ring for \"live\" indication. */\n pulse?: boolean;\n}\n\nconst TONE: Record<NonNullable<StatusIndicatorProps['tone']>, string> = {\n success: 'bg-success',\n warning: 'bg-warning',\n destructive: 'bg-destructive',\n info: 'bg-info',\n neutral: 'bg-muted-foreground',\n};\n\n/**\n * Two-line status indicator — colored dot + bold label + smaller helper.\n * Use on monitoring / status pages. For an inline single-line indicator use\n * `display/Status`.\n */\nexport const StatusIndicator = forwardRef<HTMLDivElement, StatusIndicatorProps>(\n ({ tone = 'success', label, description, pulse, className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex items-start gap-3', className)}\n {...props}\n >\n <span className=\"relative mt-1 inline-flex\">\n <span className={cn('inline-block h-2.5 w-2.5 rounded-full', TONE[tone])} />\n {pulse && (\n <span\n className={cn(\n 'absolute inset-0 inline-block rounded-full opacity-75 animate-ping',\n TONE[tone],\n )}\n />\n )}\n </span>\n <div className=\"min-w-0 flex-1\">\n <div className=\"text-sm font-medium text-foreground\">{label}</div>\n {description && <div className=\"text-xs text-muted-foreground\">{description}</div>}\n </div>\n </div>\n ),\n);\nStatusIndicator.displayName = 'StatusIndicator';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport interface MeterBarProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {\n /** Current value 0–`max`. */\n value: number;\n max?: number;\n /** Threshold values that change the fill tone. Pass `[good, warn]` —\n * `value <= good` → success, `<= warn` → warning, otherwise destructive.\n * Defaults: `[max * 0.7, max * 0.9]`. */\n thresholds?: [number, number];\n size?: 'sm' | 'md' | 'lg';\n label?: string;\n}\n\nconst SIZE: Record<NonNullable<MeterBarProps['size']>, string> = {\n sm: 'h-1',\n md: 'h-2',\n lg: 'h-3',\n};\n\n/**\n * Like `ProgressBar` but the fill color reflects threshold zones — green /\n * amber / red. Use for usage gauges, capacity, score meters.\n */\nexport const MeterBar = forwardRef<HTMLDivElement, MeterBarProps>(\n ({ value, max = 100, thresholds, size = 'md', label, className, ...props }, ref) => {\n const [good, warn] = thresholds ?? [max * 0.7, max * 0.9];\n const tone =\n value <= good ? 'bg-success' : value <= warn ? 'bg-warning' : 'bg-destructive';\n const pct = Math.min(100, Math.max(0, (value / max) * 100));\n return (\n <div\n ref={ref}\n role=\"meter\"\n aria-label={label}\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={value}\n className={cn('w-full overflow-hidden rounded-full bg-muted', SIZE[size], className)}\n {...props}\n >\n <div\n className={cn('h-full rounded-full transition-[width] duration-300', tone)}\n style={{ width: `${pct}%` }}\n />\n </div>\n );\n },\n);\nMeterBar.displayName = 'MeterBar';\n","import { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { Minus, TrendingDown, TrendingUp } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\n\nexport interface TrendIndicatorProps extends Omit<ComponentPropsWithoutRef<'span'>, 'children'> {\n /** Numeric delta — sign drives direction. */\n value: number;\n /** Optional formatter (default: `${sign}${value}%`). */\n format?: (value: number) => ReactNode;\n /** When `true`, an increase reads as bad (e.g. error rate, churn). */\n inverse?: boolean;\n /** Small trailing label, e.g. \"vs last week\". */\n label?: ReactNode;\n size?: 'xs' | 'sm' | 'md';\n}\n\nconst SIZE_TEXT: Record<NonNullable<TrendIndicatorProps['size']>, string> = {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n};\nconst SIZE_ICON: Record<NonNullable<TrendIndicatorProps['size']>, number> = {\n xs: 12,\n sm: 14,\n md: 16,\n};\n\n/**\n * Up / down / flat arrow + value + optional label. Used inside `Stat` and\n * dashboard tiles. Pass `inverse` for metrics where higher is worse.\n */\nexport const TrendIndicator = forwardRef<HTMLSpanElement, TrendIndicatorProps>(\n ({ value, format, inverse, label, size = 'sm', className, ...props }, ref) => {\n const direction = value > 0 ? 'up' : value < 0 ? 'down' : 'flat';\n const positive =\n direction === 'flat' ? false : (direction === 'up') !== Boolean(inverse);\n const tone =\n direction === 'flat' ? 'text-muted-foreground' : positive ? 'text-success' : 'text-destructive';\n const arrow = direction === 'up' ? TrendingUp : direction === 'down' ? TrendingDown : Minus;\n const display = format ? format(value) : `${value > 0 ? '+' : ''}${value}%`;\n return (\n <span\n ref={ref}\n className={cn('inline-flex items-center gap-1 font-medium', SIZE_TEXT[size], tone, className)}\n {...props}\n >\n <Icon icon={arrow} size={SIZE_ICON[size]} />\n {display}\n {label && <span className=\"text-muted-foreground\"> {label}</span>}\n </span>\n );\n },\n);\nTrendIndicator.displayName = 'TrendIndicator';\n","import {\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from 'react';\nimport { cn } from '../../utils';\nimport { Announce, Portal } from '../../primitives';\nimport { Toast } from '../toast';\nimport type { ToastSimpleVariants } from '../toastSimple/ToastSimple.variants';\n\nexport type ToastSeverity = NonNullable<ToastSimpleVariants['severity']>;\n\nexport type ToasterPosition =\n | 'top-right'\n | 'top-left'\n | 'top-center'\n | 'bottom-right'\n | 'bottom-left'\n | 'bottom-center';\n\nexport interface ToastOptions {\n title?: ReactNode;\n description?: ReactNode;\n icon?: ReactNode;\n severity?: ToastSeverity;\n /** ms before auto-dismiss. Default: Toaster's `defaultDuration`. `Infinity` = sticky. */\n duration?: number;\n action?: ReactNode;\n}\n\ninterface ToastEntry extends ToastOptions {\n id: string;\n}\n\ntype Listener = (toasts: ToastEntry[]) => void;\n\nclass ToasterStore {\n private items: ToastEntry[] = [];\n private listeners = new Set<Listener>();\n private idSeq = 0;\n\n toast(opts: ToastOptions): string {\n const id = `t_${++this.idSeq}`;\n this.items = [...this.items, { id, ...opts }];\n this.emit();\n return id;\n }\n\n dismiss(id: string): void {\n this.items = this.items.filter((t) => t.id !== id);\n this.emit();\n }\n\n dismissAll(): void {\n this.items = [];\n this.emit();\n }\n\n subscribe(fn: Listener): () => void {\n this.listeners.add(fn);\n fn(this.items);\n return () => {\n this.listeners.delete(fn);\n };\n }\n\n private emit() {\n for (const fn of this.listeners) fn(this.items);\n }\n}\n\nexport const toaster = new ToasterStore();\n\nexport function useToaster() {\n return useMemo(\n () => ({\n toast: (opts: ToastOptions) => toaster.toast(opts),\n dismiss: (id: string) => toaster.dismiss(id),\n dismissAll: () => toaster.dismissAll(),\n }),\n [],\n );\n}\n\nconst POSITION_CLASSES: Record<ToasterPosition, string> = {\n 'top-right': 'top-4 right-4 items-end',\n 'top-left': 'top-4 left-4 items-start',\n 'top-center': 'top-4 left-1/2 -translate-x-1/2 items-center',\n 'bottom-right': 'bottom-4 right-4 items-end',\n 'bottom-left': 'bottom-4 left-4 items-start',\n 'bottom-center': 'bottom-4 left-1/2 -translate-x-1/2 items-center',\n};\n\nexport interface ToasterProps {\n position?: ToasterPosition;\n max?: number;\n /** ms; per-toast `duration` overrides. Default 5000. `Infinity` to disable. */\n defaultDuration?: number;\n pauseOnHover?: boolean;\n gap?: number;\n className?: string;\n}\n\ninterface VisibleToast extends ToastEntry {\n resolvedDuration: number;\n}\n\n/**\n * Viewport that subscribes to the global `toaster` store and renders toasts\n * via the L4 `Toast` molecule. Mount once, per app.\n */\nexport function Toaster({\n position = 'bottom-right',\n max = 5,\n defaultDuration = 5000,\n pauseOnHover = true,\n gap = 8,\n className,\n}: ToasterProps) {\n const [items, setItems] = useState<ToastEntry[]>([]);\n const [paused, setPaused] = useState(false);\n const timersRef = useRef(new Map<string, number>());\n const remainingRef = useRef(new Map<string, number>());\n const startRef = useRef(new Map<string, number>());\n\n useEffect(() => {\n return toaster.subscribe(setItems);\n }, []);\n\n // Visible window (FIFO).\n const visible: VisibleToast[] = items.slice(0, max).map((t) => ({\n ...t,\n resolvedDuration: t.duration ?? defaultDuration,\n }));\n const latestTitle =\n typeof visible[visible.length - 1]?.title === 'string'\n ? (visible[visible.length - 1]!.title as string)\n : visible[visible.length - 1]?.description && typeof visible[visible.length - 1]!.description === 'string'\n ? (visible[visible.length - 1]!.description as string)\n : '';\n\n // Schedule auto-dismiss timers.\n useEffect(() => {\n const visibleIds = new Set(visible.map((v) => v.id));\n // Clear timers for items that are no longer visible.\n for (const [id, h] of timersRef.current) {\n if (!visibleIds.has(id)) {\n window.clearTimeout(h);\n timersRef.current.delete(id);\n remainingRef.current.delete(id);\n startRef.current.delete(id);\n }\n }\n if (paused) return;\n for (const v of visible) {\n if (v.resolvedDuration === Infinity) continue;\n if (timersRef.current.has(v.id)) continue;\n const remaining = remainingRef.current.get(v.id) ?? v.resolvedDuration;\n const handle = window.setTimeout(() => {\n toaster.dismiss(v.id);\n }, remaining);\n timersRef.current.set(v.id, handle);\n startRef.current.set(v.id, Date.now());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [items, max, defaultDuration, paused]);\n\n // Cleanup on unmount.\n useEffect(() => {\n const timers = timersRef.current;\n return () => {\n for (const h of timers.values()) window.clearTimeout(h);\n timers.clear();\n };\n }, []);\n\n const handlePause = () => {\n if (!pauseOnHover || paused) return;\n setPaused(true);\n for (const [id, h] of timersRef.current) {\n window.clearTimeout(h);\n const start = startRef.current.get(id) ?? Date.now();\n const prev = remainingRef.current.get(id) ?? 0;\n const elapsed = Date.now() - start;\n remainingRef.current.set(id, Math.max(0, prev - elapsed));\n }\n timersRef.current.clear();\n };\n\n const handleResume = () => {\n if (!pauseOnHover || !paused) return;\n setPaused(false);\n };\n\n if (visible.length === 0) {\n return (\n <Portal>\n <Announce politeness=\"polite\" />\n </Portal>\n );\n }\n\n return (\n <Portal>\n <div\n aria-label=\"Notifications\"\n onMouseEnter={handlePause}\n onMouseLeave={handleResume}\n onFocus={handlePause}\n onBlur={handleResume}\n style={{ gap }}\n className={cn(\n 'pointer-events-none fixed z-toast flex flex-col',\n POSITION_CLASSES[position],\n className,\n )}\n >\n {visible.map((t) => (\n <div key={t.id} className=\"pointer-events-auto w-80 animate-in fade-in-0 slide-in-from-bottom-2\">\n <Toast\n icon={t.icon}\n title={t.title}\n description={t.description}\n severity={t.severity}\n actions={t.action}\n onClose={() => toaster.dismiss(t.id)}\n />\n </div>\n ))}\n </div>\n <Announce politeness=\"polite\">{latestTitle}</Announce>\n </Portal>\n );\n}\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils';\nimport { Backdrop } from '../../overlays/backdrop';\nimport { Spinner } from '../spinner';\nimport type { SpinnerVariants } from '../spinner/Spinner.variants';\n\nexport interface LoadingOverlayProps extends HTMLAttributes<HTMLDivElement> {\n open?: boolean;\n label?: ReactNode;\n /** Position the scrim absolutely inside the parent (parent must be `position: relative`). */\n inline?: boolean;\n blur?: boolean;\n spinnerSize?: SpinnerVariants['size'];\n spinnerTone?: SpinnerVariants['tone'];\n}\n\n/**\n * Scrim + centered spinner. Use to block interaction with a region while a\n * long-running task is in flight. `inline` positions the scrim inside its\n * parent (which must be `position: relative`); the default covers the\n * viewport via `Backdrop`.\n */\nexport const LoadingOverlay = forwardRef<HTMLDivElement, LoadingOverlayProps>(\n function LoadingOverlay(\n {\n open = true,\n label = 'Loading…',\n inline = false,\n blur,\n spinnerSize = 'lg',\n spinnerTone = 'brand',\n className,\n children,\n ...rest\n },\n ref,\n ) {\n if (!open) return null;\n\n if (inline) {\n return (\n <div\n ref={ref}\n role=\"alert\"\n aria-busy=\"true\"\n className={cn(\n 'absolute inset-0 z-banner flex flex-col items-center justify-center gap-3 bg-background/70',\n blur && 'backdrop-blur-sm',\n className,\n )}\n {...rest}\n >\n <Spinner size={spinnerSize} tone={spinnerTone} label={typeof label === 'string' ? label : 'Loading'} />\n {label && <div className=\"text-sm text-foreground\">{label}</div>}\n {children}\n </div>\n );\n }\n\n return (\n <>\n <Backdrop open blur={blur} className=\"bg-background/70\" />\n <div\n ref={ref}\n role=\"alert\"\n aria-busy=\"true\"\n className={cn(\n 'fixed inset-0 z-modal flex flex-col items-center justify-center gap-3 pointer-events-none',\n className,\n )}\n {...rest}\n >\n <Spinner size={spinnerSize} tone={spinnerTone} label={typeof label === 'string' ? label : 'Loading'} />\n {label && <div className=\"text-sm text-foreground\">{label}</div>}\n {children}\n </div>\n </>\n );\n },\n);\nLoadingOverlay.displayName = 'LoadingOverlay';\n","import { useEffect, useRef, useState, type ReactNode } from 'react';\nimport { cn, surfaceVariants } from '../../utils';\nimport { Portal } from '../../primitives';\n\nexport type UndoBarPosition =\n | 'top-right'\n | 'top-left'\n | 'top-center'\n | 'bottom-right'\n | 'bottom-left'\n | 'bottom-center';\n\nexport interface UndoBarProps {\n open: boolean;\n onOpenChange?: (open: boolean) => void;\n message: ReactNode;\n onUndo?: () => void;\n undoLabel?: string;\n /** ms until auto-dismiss; `Infinity` = sticky. Default 5000. */\n duration?: number;\n pauseOnHover?: boolean;\n position?: UndoBarPosition;\n showCountdown?: boolean;\n className?: string;\n}\n\nconst POSITION: Record<UndoBarPosition, string> = {\n 'top-right': 'top-4 right-4',\n 'top-left': 'top-4 left-4',\n 'top-center': 'top-4 left-1/2 -translate-x-1/2',\n 'bottom-right': 'bottom-4 right-4',\n 'bottom-left': 'bottom-4 left-4',\n 'bottom-center': 'bottom-4 left-1/2 -translate-x-1/2',\n};\n\n/**\n * Snackbar with a single \"Undo\" action. Auto-dismisses after `duration`;\n * pause-on-hover preserves remaining time. For multi-toast queues use the L5\n * `Toaster` instead.\n */\nexport function UndoBar({\n open,\n onOpenChange,\n message,\n onUndo,\n undoLabel = 'Undo',\n duration = 5000,\n pauseOnHover = true,\n position = 'bottom-center',\n showCountdown = false,\n className,\n}: UndoBarProps) {\n const [progress, setProgress] = useState(1);\n const [paused, setPaused] = useState(false);\n const startRef = useRef<number>(0);\n const remainingRef = useRef<number>(duration);\n const rafRef = useRef<number | null>(null);\n\n useEffect(() => {\n if (!open) {\n remainingRef.current = duration;\n setProgress(1);\n return;\n }\n if (duration === Infinity) {\n setProgress(1);\n return;\n }\n if (paused) return;\n\n startRef.current = performance.now();\n const tick = (now: number) => {\n const elapsed = now - startRef.current;\n const remaining = Math.max(0, remainingRef.current - elapsed);\n setProgress(remaining / duration);\n if (remaining <= 0) {\n onOpenChange?.(false);\n return;\n }\n rafRef.current = requestAnimationFrame(tick);\n };\n rafRef.current = requestAnimationFrame(tick);\n return () => {\n if (rafRef.current != null) cancelAnimationFrame(rafRef.current);\n const elapsed = performance.now() - startRef.current;\n remainingRef.current = Math.max(0, remainingRef.current - elapsed);\n };\n }, [open, duration, paused, onOpenChange]);\n\n if (!open) return null;\n\n return (\n <Portal>\n <div\n role=\"status\"\n aria-live=\"polite\"\n onMouseEnter={() => pauseOnHover && setPaused(true)}\n onMouseLeave={() => pauseOnHover && setPaused(false)}\n onFocus={() => pauseOnHover && setPaused(true)}\n onBlur={() => pauseOnHover && setPaused(false)}\n className={cn(\n 'fixed z-toast flex items-center gap-3 overflow-hidden text-sm animate-in fade-in-0 slide-in-from-bottom-2',\n surfaceVariants({ variant: 'surface', radius: 'md', padding: 'sm', elevation: 3 }),\n 'px-4 py-2.5',\n POSITION[position],\n className,\n )}\n >\n <span className=\"flex-1\">{message}</span>\n {onUndo && (\n <button\n type=\"button\"\n onClick={() => {\n onUndo();\n onOpenChange?.(false);\n }}\n className=\"font-medium text-primary transition-colors hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-sm px-1\"\n >\n {undoLabel}\n </button>\n )}\n {showCountdown && duration !== Infinity && (\n <div className=\"absolute bottom-0 left-0 h-0.5 w-full bg-border\">\n <div\n className=\"h-full bg-primary transition-[width] duration-100 ease-linear\"\n style={{ width: `${progress * 100}%` }}\n />\n </div>\n )}\n </div>\n </Portal>\n );\n}\n","import {\n Children,\n createContext,\n forwardRef,\n isValidElement,\n useContext,\n useEffect,\n useMemo,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { Check, ChevronDown } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\n\ninterface OnboardingContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n}\n\nconst OnboardingContext = createContext<OnboardingContextValue | null>(null);\n\nexport interface OnboardingChecklistProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n title?: ReactNode;\n defaultOpen?: boolean;\n dismissOnComplete?: boolean;\n /** ms after 100% before unmounting. */\n dismissDelay?: number;\n onDismiss?: () => void;\n children: ReactNode;\n}\n\n/**\n * Onboarding task card. Children are `OnboardingChecklist.Task` elements;\n * progress is auto-derived from their `done` props.\n */\nexport const OnboardingChecklist = forwardRef<HTMLDivElement, OnboardingChecklistProps>(\n function OnboardingChecklist(\n {\n title = 'Get started',\n defaultOpen = true,\n dismissOnComplete = false,\n dismissDelay = 2000,\n onDismiss,\n className,\n children,\n ...rest\n },\n ref,\n ) {\n const [open, setOpen] = useState(defaultOpen);\n const [dismissed, setDismissed] = useState(false);\n\n const tasks = Children.toArray(children).filter(\n (c): c is React.ReactElement<OnboardingChecklistTaskProps> =>\n isValidElement(c) &&\n (c.type as { displayName?: string }).displayName === 'OnboardingChecklistTask',\n );\n const total = tasks.length;\n const done = tasks.filter((t) => t.props.done).length;\n const complete = total > 0 && done === total;\n\n useEffect(() => {\n if (!dismissOnComplete || !complete || dismissed) return;\n const handle = window.setTimeout(() => {\n setDismissed(true);\n onDismiss?.();\n }, dismissDelay);\n return () => window.clearTimeout(handle);\n }, [complete, dismissOnComplete, dismissDelay, dismissed, onDismiss]);\n\n const ctx = useMemo<OnboardingContextValue>(() => ({ open, setOpen }), [open]);\n\n if (dismissed) return null;\n\n return (\n <OnboardingContext.Provider value={ctx}>\n <div\n ref={ref}\n className={cn(\n 'overflow-hidden rounded-lg border border-border bg-card shadow-sm',\n className,\n )}\n {...rest}\n >\n <button\n type=\"button\"\n aria-expanded={open}\n onClick={() => setOpen(!open)}\n className=\"flex w-full items-center gap-3 px-4 py-3 text-left transition-colors hover:bg-muted/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring\"\n >\n <div className=\"flex-1\">\n <div className=\"text-sm font-medium text-foreground\">{title}</div>\n <div className=\"mt-1 text-xs text-muted-foreground\">\n {done} of {total} tasks complete\n </div>\n <div className=\"mt-2 h-1.5 overflow-hidden rounded-full bg-border\">\n <div\n className={cn(\n 'h-full bg-primary transition-[width] duration-300',\n complete && 'bg-success',\n )}\n style={{ width: total ? `${(done / total) * 100}%` : '0%' }}\n />\n </div>\n </div>\n <Icon\n icon={ChevronDown}\n size={16}\n className={cn('text-muted-foreground transition-transform', open && 'rotate-180')}\n />\n </button>\n {open && (\n <ul role=\"list\" className=\"border-t border-border\">\n {children}\n </ul>\n )}\n </div>\n </OnboardingContext.Provider>\n );\n },\n);\n\nexport interface OnboardingChecklistTaskProps extends HTMLAttributes<HTMLLIElement> {\n label: ReactNode;\n description?: ReactNode;\n done?: boolean;\n action?: ReactNode;\n}\n\nexport const OnboardingChecklistTask = forwardRef<\n HTMLLIElement,\n OnboardingChecklistTaskProps\n>(function OnboardingChecklistTask(\n { label, description, done = false, action, className, ...rest },\n ref,\n) {\n return (\n <li\n ref={ref}\n data-done={done || undefined}\n className={cn(\n 'flex items-start gap-3 px-4 py-3 transition-colors',\n done && 'opacity-60',\n className,\n )}\n {...rest}\n >\n <span\n aria-hidden=\"true\"\n className={cn(\n 'mt-0.5 grid h-5 w-5 shrink-0 place-items-center rounded-full border',\n done ? 'border-success bg-success text-success-foreground' : 'border-border',\n )}\n >\n {done && <Icon icon={Check} size={12} />}\n </span>\n <div className=\"min-w-0 flex-1\">\n <div className={cn('text-sm font-medium text-foreground', done && 'line-through')}>\n {label}\n </div>\n {description && (\n <div className=\"mt-0.5 text-xs text-muted-foreground\">{description}</div>\n )}\n </div>\n {action && !done && <div className=\"shrink-0\">{action}</div>}\n </li>\n );\n});\nOnboardingChecklistTask.displayName = 'OnboardingChecklistTask';\n\ntype OnboardingChecklistComponent = typeof OnboardingChecklist & {\n Task: typeof OnboardingChecklistTask;\n};\n\n(OnboardingChecklist as OnboardingChecklistComponent).Task = OnboardingChecklistTask;\n\nexport function useOnboardingChecklist() {\n const ctx = useContext(OnboardingContext);\n if (!ctx) throw new Error('useOnboardingChecklist must be used inside <OnboardingChecklist>');\n return ctx;\n}\n\nexport default OnboardingChecklist as OnboardingChecklistComponent;\n","import {\n useCallback,\n useEffect,\n useId,\n useState,\n type ReactNode,\n type RefObject,\n} from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Announce, Portal } from '../../primitives';\n\nexport interface TourStep {\n target: string | RefObject<HTMLElement>;\n title?: ReactNode;\n body?: ReactNode;\n placement?: 'top' | 'right' | 'bottom' | 'left';\n}\n\nexport interface TourProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n steps: TourStep[];\n currentStep?: number;\n defaultCurrentStep?: number;\n onStepChange?: (i: number) => void;\n onComplete?: () => void;\n onSkip?: () => void;\n padding?: number;\n}\n\ninterface Rect {\n top: number;\n left: number;\n width: number;\n height: number;\n}\n\nfunction rectFromTarget(target: TourStep['target']): Rect | null {\n let el: HTMLElement | null = null;\n if (typeof target === 'string') {\n el = document.querySelector(target);\n } else {\n el = target.current;\n }\n if (!el) return null;\n const r = el.getBoundingClientRect();\n return { top: r.top, left: r.left, width: r.width, height: r.height };\n}\n\nfunction placementCoords(rect: Rect, placement: NonNullable<TourStep['placement']>, gap = 12) {\n switch (placement) {\n case 'top':\n return { top: rect.top - gap, left: rect.left + rect.width / 2, transform: 'translate(-50%, -100%)' };\n case 'right':\n return { top: rect.top + rect.height / 2, left: rect.left + rect.width + gap, transform: 'translate(0, -50%)' };\n case 'bottom':\n return { top: rect.top + rect.height + gap, left: rect.left + rect.width / 2, transform: 'translate(-50%, 0)' };\n case 'left':\n return { top: rect.top + rect.height / 2, left: rect.left - gap, transform: 'translate(-100%, -50%)' };\n }\n}\n\n/**\n * Multi-step product tour. Renders an SVG mask with a cutout around each\n * step's target + a floating tooltip with Next / Prev / Skip / Done.\n */\nexport function Tour({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n steps,\n currentStep: currentStepProp,\n defaultCurrentStep = 0,\n onStepChange,\n onComplete,\n onSkip,\n padding = 8,\n}: TourProps) {\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n onChange: onOpenChange,\n });\n const [currentStep, setCurrentStep] = useControlled({\n controlled: currentStepProp,\n default: defaultCurrentStep,\n onChange: onStepChange,\n });\n\n const [rect, setRect] = useState<Rect | null>(null);\n const titleId = useId();\n const descId = useId();\n\n const step = steps[currentStep];\n\n // Update rect when step changes / window scrolls / resizes.\n useEffect(() => {\n if (!open || !step) return;\n\n const update = () => {\n const r = rectFromTarget(step.target);\n setRect(r);\n };\n // Defer to next frame so the target can mount / scroll into view.\n const handle = requestAnimationFrame(update);\n\n window.addEventListener('resize', update, { passive: true });\n window.addEventListener('scroll', update, { passive: true, capture: true });\n return () => {\n cancelAnimationFrame(handle);\n window.removeEventListener('resize', update);\n window.removeEventListener('scroll', update, true);\n };\n }, [open, step]);\n\n // Escape handling.\n useEffect(() => {\n if (!open) return;\n const onKey = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n setOpen(false);\n onSkip?.();\n }\n };\n document.addEventListener('keydown', onKey);\n return () => document.removeEventListener('keydown', onKey);\n }, [open, setOpen, onSkip]);\n\n const goNext = useCallback(() => {\n if (currentStep >= steps.length - 1) {\n setOpen(false);\n onComplete?.();\n } else {\n setCurrentStep(currentStep + 1);\n }\n }, [currentStep, steps.length, setOpen, setCurrentStep, onComplete]);\n\n const goPrev = useCallback(() => {\n if (currentStep > 0) setCurrentStep(currentStep - 1);\n }, [currentStep, setCurrentStep]);\n\n const skip = useCallback(() => {\n setOpen(false);\n onSkip?.();\n }, [setOpen, onSkip]);\n\n if (!open || !step) return null;\n\n const placement = step.placement ?? 'bottom';\n const tooltipCoords = rect ? placementCoords(rect, placement) : null;\n const cutoutPadding = padding;\n\n return (\n <Portal>\n {/* SVG mask backdrop with cutout around target */}\n <svg\n aria-hidden=\"true\"\n className=\"pointer-events-auto fixed inset-0 z-modal h-full w-full\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <defs>\n <mask id=\"tour-mask\">\n <rect width=\"100%\" height=\"100%\" fill=\"white\" />\n {rect && (\n <rect\n x={rect.left - cutoutPadding}\n y={rect.top - cutoutPadding}\n width={rect.width + cutoutPadding * 2}\n height={rect.height + cutoutPadding * 2}\n rx={6}\n fill=\"black\"\n />\n )}\n </mask>\n </defs>\n <rect\n width=\"100%\"\n height=\"100%\"\n fill=\"rgba(0,0,0,0.55)\"\n mask=\"url(#tour-mask)\"\n />\n </svg>\n\n {/* Tooltip */}\n {tooltipCoords && (\n <div\n role=\"dialog\"\n aria-modal=\"false\"\n aria-labelledby={titleId}\n aria-describedby={descId}\n style={{\n position: 'fixed',\n top: tooltipCoords.top,\n left: tooltipCoords.left,\n transform: tooltipCoords.transform,\n zIndex: 60,\n }}\n className={cn(\n 'w-72 rounded-md border border-border bg-popover p-4 text-popover-foreground shadow-lg outline-none animate-in fade-in-0 zoom-in-95',\n )}\n >\n {step.title && (\n <div id={titleId} className=\"text-sm font-semibold\">\n {step.title}\n </div>\n )}\n {step.body && (\n <div id={descId} className={cn('text-sm text-muted-foreground', step.title && 'mt-1.5')}>\n {step.body}\n </div>\n )}\n <div className=\"mt-3 flex items-center justify-between gap-3\">\n <span className=\"text-xs text-muted-foreground\">\n {currentStep + 1} / {steps.length}\n </span>\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={skip}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Skip\n </button>\n {currentStep > 0 && (\n <button\n type=\"button\"\n onClick={goPrev}\n className=\"inline-flex h-7 items-center rounded-md border border-border bg-background px-2.5 text-xs font-medium hover:bg-muted\"\n >\n Back\n </button>\n )}\n <button\n type=\"button\"\n onClick={goNext}\n className=\"inline-flex h-7 items-center rounded-md bg-primary px-2.5 text-xs font-medium text-primary-foreground hover:bg-primary/90\"\n >\n {currentStep >= steps.length - 1 ? 'Done' : 'Next'}\n </button>\n </div>\n </div>\n </div>\n )}\n\n <Announce politeness=\"polite\">\n {step.title\n ? `Step ${currentStep + 1} of ${steps.length}: ${typeof step.title === 'string' ? step.title : ''}`\n : ''}\n </Announce>\n </Portal>\n );\n}\n","import { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\n\nexport interface TypingIndicatorProps extends Omit<ComponentPropsWithoutRef<'span'>, 'children'> {\n /** Optional name(s) of who is typing — rendered as a leading label. */\n who?: ReactNode;\n /** Visual size of the bouncing dots. */\n size?: 'sm' | 'md' | 'lg';\n /** Color of the dots; defaults to muted. */\n tone?: 'muted' | 'primary' | 'foreground';\n /** Tone-down dot opacity at rest (between bounces). */\n subtle?: boolean;\n}\n\nconst SIZE: Record<NonNullable<TypingIndicatorProps['size']>, string> = {\n sm: 'h-1 w-1',\n md: 'h-1.5 w-1.5',\n lg: 'h-2 w-2',\n};\n\nconst TONE: Record<NonNullable<TypingIndicatorProps['tone']>, string> = {\n muted: 'bg-muted-foreground',\n primary: 'bg-primary',\n foreground: 'bg-foreground',\n};\n\n/**\n * Three-dot \"someone is typing\" indicator. Honors `prefers-reduced-motion`\n * via Tailwind's `motion-safe:` / `motion-reduce:` modifiers — dots stay\n * visible at full opacity when motion is reduced.\n */\nexport const TypingIndicator = forwardRef<HTMLSpanElement, TypingIndicatorProps>(\n ({ who, size = 'md', tone = 'muted', subtle, className, ...props }, ref) => {\n const dot = cn(\n 'inline-block rounded-full motion-safe:animate-bounce',\n SIZE[size],\n TONE[tone],\n subtle && 'motion-safe:opacity-60',\n );\n return (\n <span\n ref={ref}\n role=\"status\"\n aria-live=\"polite\"\n aria-label={typeof who === 'string' ? `${who} is typing` : 'Typing'}\n className={cn(\n 'inline-flex items-center gap-2 text-xs text-muted-foreground',\n className,\n )}\n {...props}\n >\n {who && <span className=\"truncate\">{who}</span>}\n <span className=\"inline-flex items-end gap-1\" aria-hidden=\"true\">\n <span className={dot} style={{ animationDelay: '0ms' }} />\n <span className={dot} style={{ animationDelay: '150ms' }} />\n <span className={dot} style={{ animationDelay: '300ms' }} />\n </span>\n </span>\n );\n },\n);\nTypingIndicator.displayName = 'TypingIndicator';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport type PresenceStatus = 'online' | 'idle' | 'busy' | 'offline' | 'invisible';\n\nexport interface PresenceIndicatorProps extends Omit<ComponentPropsWithoutRef<'span'>, 'children'> {\n status?: PresenceStatus;\n size?: 'xs' | 'sm' | 'md' | 'lg';\n /** Pulsing ring (only meaningful for `online`). */\n pulse?: boolean;\n /** Position absolutely on a parent (use inside an Avatar wrapper). */\n position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left';\n /** Override the accessible label. Defaults to status name. */\n label?: string;\n}\n\nconst STATUS_BG: Record<PresenceStatus, string> = {\n online: 'bg-success',\n idle: 'bg-warning',\n busy: 'bg-destructive',\n offline: 'bg-muted-foreground',\n invisible: 'bg-transparent border border-muted-foreground',\n};\n\nconst SIZE: Record<NonNullable<PresenceIndicatorProps['size']>, string> = {\n xs: 'h-1.5 w-1.5',\n sm: 'h-2 w-2',\n md: 'h-2.5 w-2.5',\n lg: 'h-3 w-3',\n};\n\nconst POS: Record<NonNullable<PresenceIndicatorProps['position']>, string> = {\n 'top-right': 'absolute top-0 right-0',\n 'top-left': 'absolute top-0 left-0',\n 'bottom-right': 'absolute bottom-0 right-0',\n 'bottom-left': 'absolute bottom-0 left-0',\n};\n\nconst STATUS_LABEL: Record<PresenceStatus, string> = {\n online: 'Online',\n idle: 'Idle',\n busy: 'Busy',\n offline: 'Offline',\n invisible: 'Invisible',\n};\n\n/**\n * Colored dot encoding a person's presence (online / idle / busy / offline /\n * invisible). Includes a `ring-background` so it pops cleanly when overlaid\n * on an `Avatar`. Pass `position` to absolutely place on a positioned parent.\n */\nexport const PresenceIndicator = forwardRef<HTMLSpanElement, PresenceIndicatorProps>(\n ({ status = 'online', size = 'sm', pulse, position, label, className, ...props }, ref) => (\n <span\n ref={ref}\n role=\"status\"\n aria-label={label ?? STATUS_LABEL[status]}\n data-status={status}\n className={cn(\n 'inline-flex rounded-full ring-2 ring-background',\n STATUS_BG[status],\n SIZE[size],\n position && POS[position],\n 'relative',\n className,\n )}\n {...props}\n >\n {pulse && status === 'online' && (\n <span\n aria-hidden=\"true\"\n className={cn(\n 'absolute inset-0 rounded-full opacity-75 motion-safe:animate-ping',\n STATUS_BG.online,\n )}\n />\n )}\n </span>\n ),\n);\nPresenceIndicator.displayName = 'PresenceIndicator';\n","import { forwardRef, type CSSProperties, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils';\nimport { useReducedMotion } from '../../hooks';\n\nexport interface LiveCursorProps extends Omit<HTMLAttributes<HTMLDivElement>, 'color'> {\n /** Pixel offset from the parent's top-left corner. */\n x: number;\n y: number;\n /** Display name to show beside the pointer. */\n name?: ReactNode;\n /** CSS color used for the pointer fill and label background. */\n color?: string;\n /** Smooth movement between updates. Defaults to true; auto-disables with reduced motion. */\n smooth?: boolean;\n /** Pixels offset for the label relative to the pointer. */\n labelOffset?: { x?: number; y?: number };\n /** Hide the label and show only the pointer. */\n pointerOnly?: boolean;\n}\n\n/**\n * Remote-user cursor for collaborative canvases. Wrap in a `relative`-\n * positioned container; the cursor places itself absolutely at `(x, y)`.\n * Movement is smoothed with a short transition unless `prefers-reduced-\n * motion: reduce` is set.\n */\nexport const LiveCursor = forwardRef<HTMLDivElement, LiveCursorProps>(\n (\n {\n x,\n y,\n name,\n color = 'var(--color-primary)',\n smooth = true,\n labelOffset,\n pointerOnly,\n className,\n style,\n ...props\n },\n ref,\n ) => {\n const reducedMotion = useReducedMotion();\n const useTransition = smooth && !reducedMotion;\n const lx = labelOffset?.x ?? 12;\n const ly = labelOffset?.y ?? 16;\n\n const wrapperStyle: CSSProperties = {\n transform: `translate3d(${x}px, ${y}px, 0)`,\n transition: useTransition ? 'transform 80ms linear' : undefined,\n ...style,\n };\n\n return (\n <div\n ref={ref}\n aria-hidden=\"true\"\n className={cn(\n 'pointer-events-none absolute left-0 top-0 z-tooltip select-none',\n className,\n )}\n style={wrapperStyle}\n {...props}\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"drop-shadow-sm\"\n >\n <path\n d=\"M5 3 L5 19 L9.5 14.5 L12.5 21 L15.5 19.5 L12.5 13 L19 13 Z\"\n fill={color}\n stroke=\"white\"\n strokeWidth=\"1.25\"\n strokeLinejoin=\"round\"\n />\n </svg>\n {name && !pointerOnly && (\n <span\n className=\"absolute whitespace-nowrap rounded-md px-1.5 py-0.5 text-[11px] font-medium leading-none text-white shadow-sm\"\n style={{ backgroundColor: color, transform: `translate(${lx}px, ${ly}px)` }}\n >\n {name}\n </span>\n )}\n </div>\n );\n },\n);\nLiveCursor.displayName = 'LiveCursor';\n","import {\n Children,\n forwardRef,\n isValidElement,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { Bell, X } from 'lucide-react';\nimport { cn, surfaceVariants } from '../../utils';\n\nexport interface NotificationCenterProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Header title. Default `\"Notifications\"`. */\n title?: ReactNode;\n /** Badge / count rendered next to the title. */\n count?: ReactNode;\n /** Action slot in the header (e.g. \"Mark all as read\"). */\n headerActions?: ReactNode;\n /** Empty-state node, rendered when no children are provided. */\n emptyState?: ReactNode;\n /** Footer slot (e.g. \"View all\"). */\n footer?: ReactNode;\n children?: ReactNode;\n}\n\nexport interface NotificationItemProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Leading icon / avatar. */\n icon?: ReactNode;\n /** Primary title. */\n title: ReactNode;\n /** Body / description. */\n description?: ReactNode;\n /** Timestamp / relative time label. */\n timestamp?: ReactNode;\n /** Marks this row as unread (bold + leading dot). */\n unread?: boolean;\n /** Trailing actions slot. */\n actions?: ReactNode;\n /** Fires when the row is clicked / activated. */\n onSelect?: () => void;\n /** Renders a dismiss button on hover. */\n onDismiss?: () => void;\n}\n\nexport const NotificationItem = forwardRef<HTMLDivElement, NotificationItemProps>(\n (\n {\n icon,\n title,\n description,\n timestamp,\n unread,\n actions,\n onSelect,\n onDismiss,\n className,\n ...props\n },\n ref,\n ) => {\n const interactive = !!onSelect;\n return (\n <div\n ref={ref}\n role={interactive ? 'button' : undefined}\n tabIndex={interactive ? 0 : undefined}\n data-unread={unread ? '' : undefined}\n onClick={onSelect}\n onKeyDown={\n interactive\n ? (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onSelect?.();\n }\n }\n : undefined\n }\n className={cn(\n 'group/notif relative flex gap-3 rounded-md px-3 py-2.5 text-sm',\n interactive &&\n 'cursor-pointer hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n unread && 'bg-primary-soft/30',\n className,\n )}\n {...props}\n >\n {unread && (\n <span\n aria-hidden=\"true\"\n className=\"absolute left-1 top-3 inline-block h-2 w-2 rounded-full bg-primary\"\n />\n )}\n {icon && <div className=\"shrink-0 self-start pl-3\">{icon}</div>}\n <div className={cn('min-w-0 flex-1', !icon && 'pl-3')}>\n <div className=\"flex items-baseline gap-2\">\n <span\n className={cn(\n 'truncate text-foreground',\n unread ? 'font-semibold' : 'font-medium',\n )}\n >\n {title}\n </span>\n {timestamp && (\n <span className=\"ml-auto whitespace-nowrap text-xs text-muted-foreground\">\n {timestamp}\n </span>\n )}\n </div>\n {description && (\n <div className=\"mt-0.5 line-clamp-2 text-xs text-muted-foreground\">\n {description}\n </div>\n )}\n {actions && <div className=\"mt-1.5 flex items-center gap-2\">{actions}</div>}\n </div>\n {onDismiss && (\n <button\n type=\"button\"\n aria-label=\"Dismiss notification\"\n onClick={(e) => {\n e.stopPropagation();\n onDismiss();\n }}\n className={cn(\n 'absolute right-2 top-2 inline-flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground opacity-0',\n 'group-hover/notif:opacity-100 group-focus-within/notif:opacity-100',\n 'hover:bg-background hover:text-foreground focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n )}\n >\n <X className=\"h-3.5 w-3.5\" />\n </button>\n )}\n </div>\n );\n },\n);\nNotificationItem.displayName = 'NotificationCenter.Item';\n\nconst NotificationCenterInner = forwardRef<HTMLDivElement, NotificationCenterProps>(\n (\n {\n title = 'Notifications',\n count,\n headerActions,\n emptyState,\n footer,\n children,\n className,\n ...props\n },\n ref,\n ) => {\n const items = Children.toArray(children).filter(isValidElement);\n const isEmpty = items.length === 0;\n return (\n <div\n ref={ref}\n role=\"region\"\n aria-label=\"Notifications\"\n className={cn(\n 'flex w-80 flex-col',\n surfaceVariants({ variant: 'surface', radius: 'md' }),\n className,\n )}\n {...props}\n >\n <header className=\"flex items-center justify-between gap-2 border-b border-border px-3 py-2.5\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-semibold\">{title}</span>\n {count != null && (\n <span className=\"inline-flex items-center justify-center rounded-full bg-primary px-1.5 text-[10px] font-semibold leading-5 text-primary-foreground\">\n {count}\n </span>\n )}\n </div>\n {headerActions}\n </header>\n <div className=\"max-h-96 overflow-y-auto py-1\">\n {isEmpty ? (\n (emptyState ?? (\n <div className=\"flex flex-col items-center gap-2 px-4 py-10 text-center text-muted-foreground\">\n <Bell className=\"h-6 w-6\" />\n <p className=\"text-sm\">You're all caught up.</p>\n </div>\n ))\n ) : (\n <div className=\"flex flex-col\">{children}</div>\n )}\n </div>\n {footer && (\n <div className=\"border-t border-border px-3 py-2 text-center text-xs\">\n {footer}\n </div>\n )}\n </div>\n );\n },\n);\nNotificationCenterInner.displayName = 'NotificationCenter';\n\ntype NotificationCenterComponent = typeof NotificationCenterInner & {\n Item: typeof NotificationItem;\n};\n\nexport const NotificationCenter = NotificationCenterInner as NotificationCenterComponent;\nNotificationCenter.Item = NotificationItem;\n\nexport default NotificationCenter;\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { OverlayChromeProvider, OverlayBody, OverlayCloseButton, OverlayDescription, OverlayFooter, OverlayHeader, OverlayTitle } from './chunk-526AMQXZ.js';
|
|
2
2
|
import { Backdrop } from './chunk-BLXE2RCC.js';
|
|
3
3
|
import { useControlled } from './chunk-NUMFGKPY.js';
|
|
4
|
+
import { surfaceVariants } from './chunk-RDDIOVK4.js';
|
|
4
5
|
import { Slot, Portal, ScrollLockProvider, DismissableLayer } from './chunk-BMABNEZX.js';
|
|
5
6
|
import { composeRefs, cn } from './chunk-LDRFQG44.js';
|
|
6
7
|
import { createContext, forwardRef, useCallback, useMemo, useContext, useRef, useId } from 'react';
|
|
@@ -69,7 +70,18 @@ var DialogTrigger = forwardRef(
|
|
|
69
70
|
}
|
|
70
71
|
);
|
|
71
72
|
var DialogContent = forwardRef(
|
|
72
|
-
function DialogContent2({
|
|
73
|
+
function DialogContent2({
|
|
74
|
+
hideBackdrop,
|
|
75
|
+
blur,
|
|
76
|
+
variant,
|
|
77
|
+
tone,
|
|
78
|
+
radius,
|
|
79
|
+
padding,
|
|
80
|
+
elevation,
|
|
81
|
+
className,
|
|
82
|
+
children,
|
|
83
|
+
...rest
|
|
84
|
+
}, forwardedRef) {
|
|
73
85
|
const ctx = useDialogContext();
|
|
74
86
|
const close = useCallback(() => {
|
|
75
87
|
ctx.setOpen(false);
|
|
@@ -107,7 +119,14 @@ var DialogContent = forwardRef(
|
|
|
107
119
|
"aria-describedby": ctx.descriptionId,
|
|
108
120
|
"data-state": "open",
|
|
109
121
|
className: cn(
|
|
110
|
-
"relative w-full max-w-lg
|
|
122
|
+
"relative w-full max-w-lg animate-in fade-in-0 zoom-in-95",
|
|
123
|
+
surfaceVariants({
|
|
124
|
+
variant: variant ?? "elevated",
|
|
125
|
+
tone,
|
|
126
|
+
radius: radius ?? "lg",
|
|
127
|
+
padding: padding ?? "xl",
|
|
128
|
+
elevation
|
|
129
|
+
}),
|
|
111
130
|
className
|
|
112
131
|
),
|
|
113
132
|
...rest,
|
|
@@ -135,5 +154,5 @@ Dialog.Footer = DialogFooter;
|
|
|
135
154
|
Dialog.Close = DialogClose;
|
|
136
155
|
|
|
137
156
|
export { Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger };
|
|
138
|
-
//# sourceMappingURL=chunk-
|
|
139
|
-
//# sourceMappingURL=chunk-
|
|
157
|
+
//# sourceMappingURL=chunk-O2DK3E3E.js.map
|
|
158
|
+
//# sourceMappingURL=chunk-O2DK3E3E.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/overlays/dialog/Dialog.tsx"],"names":["DialogTrigger","DialogContent"],"mappings":";;;;;;;;;;AAuCA,IAAM,aAAA,GAAgB,cAAyC,IAAI,CAAA;AAEnE,SAAS,gBAAA,GAAmB;AAC1B,EAAA,MAAM,GAAA,GAAM,WAAW,aAAa,CAAA;AACpC,EAAA,IAAI,CAAC,GAAA,EAAK,MAAM,IAAI,MAAM,uCAAuC,CAAA;AACjE,EAAA,OAAO,GAAA;AACT;AAaO,SAAS,MAAA,CAAO;AAAA,EACrB,IAAA,EAAM,QAAA;AAAA,EACN,WAAA,GAAc,KAAA;AAAA,EACd,YAAA;AAAA,EACA,qBAAA,GAAwB,IAAA;AAAA,EACxB,eAAA,GAAkB,IAAA;AAAA,EAClB,IAAA,GAAO,QAAA;AAAA,EACP;AACF,CAAA,EAAgB;AACd,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,aAAA,CAAc;AAAA,IACpC,UAAA,EAAY,QAAA;AAAA,IACZ,OAAA,EAAS,WAAA;AAAA,IACT,QAAA,EAAU;AAAA,GACX,CAAA;AACD,EAAA,MAAM,UAAA,GAAa,OAA2B,IAAI,CAAA;AAClD,EAAA,MAAM,UAAU,KAAA,EAAM;AACtB,EAAA,MAAM,gBAAgB,KAAA,EAAM;AAE5B,EAAA,MAAM,GAAA,GAAM,OAAA;AAAA,IACV,OAAO;AAAA,MACL,IAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA;AAAA,MACA,aAAA;AAAA,MACA,IAAA;AAAA,MACA,qBAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA,CAAC,IAAA,EAAM,OAAA,EAAS,SAAS,aAAA,EAAe,IAAA,EAAM,uBAAuB,eAAe;AAAA,GACtF;AAEA,EAAA,2BAAQ,aAAA,CAAc,QAAA,EAAd,EAAuB,KAAA,EAAO,KAAM,QAAA,EAAS,CAAA;AACvD;AAQO,IAAM,aAAA,GAAgB,UAAA;AAAA,EAC3B,SAASA,eAAc,EAAE,OAAA,EAAS,SAAS,QAAA,EAAU,GAAG,IAAA,EAAK,EAAG,YAAA,EAAc;AAC5E,IAAA,MAAM,MAAM,gBAAA,EAAiB;AAC7B,IAAA,MAAM,SAAA,GAAY,UAAU,IAAA,GAAO,QAAA;AACnC,IAAA,uBACE,GAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,WAAA,CAAY,YAAA,EAAc,GAAA,CAAI,UAA8D,CAAA;AAAA,QACjG,IAAA,EAAK,QAAA;AAAA,QACL,eAAA,EAAc,QAAA;AAAA,QACd,iBAAe,GAAA,CAAI,IAAA;AAAA,QACnB,YAAA,EAAY,GAAA,CAAI,IAAA,GAAO,MAAA,GAAS,QAAA;AAAA,QAChC,OAAA,EAAS,CAAC,CAAA,KAA2C;AACnD,UAAA,OAAA,GAAU,CAAC,CAAA;AACX,UAAA,IAAI,EAAE,gBAAA,EAAkB;AACxB,UAAA,GAAA,CAAI,QAAQ,IAAI,CAAA;AAAA,QAClB,CAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAWO,IAAM,aAAA,GAAgB,UAAA;AAAA,EAC3B,SAASC,cAAAA,CACP;AAAA,IACE,YAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,KAEL,YAAA,EACA;AACA,IAAA,MAAM,MAAM,gBAAA,EAAiB;AAE7B,IAAA,MAAM,KAAA,GAAQ,YAAY,MAAM;AAC9B,MAAA,GAAA,CAAI,QAAQ,KAAK,CAAA;AACjB,MAAA,qBAAA,CAAsB,MAAM,GAAA,CAAI,UAAA,CAAW,OAAA,EAAS,OAAO,CAAA;AAAA,IAC7D,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AAER,IAAA,MAAM,SAAA,GAAY,OAAA;AAAA,MAChB,OAAO,EAAE,OAAA,EAAS,GAAA,CAAI,SAAS,aAAA,EAAe,GAAA,CAAI,eAAe,KAAA,EAAM,CAAA;AAAA,MACvE,CAAC,GAAA,CAAI,OAAA,EAAS,GAAA,CAAI,eAAe,KAAK;AAAA,KACxC;AAEA,IAAA,IAAI,CAAC,GAAA,CAAI,IAAA,EAAM,OAAO,IAAA;AACtB,IAAA,uBACE,GAAA,CAAC,MAAA,EAAA,EACC,QAAA,kBAAA,IAAA,CAAC,kBAAA,EAAA,EACE,QAAA,EAAA;AAAA,MAAA,CAAC,YAAA,oBACA,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,MAAA,EAAM,IAAA;AAAA,UACN,IAAA;AAAA,UACA,SAAS,MAAM;AACb,YAAA,IAAI,GAAA,CAAI,qBAAA,EAAuB,GAAA,CAAI,OAAA,CAAQ,KAAK,CAAA;AAAA,UAClD;AAAA;AAAA,OACF;AAAA,sBAEF,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mEAAA,EACb,QAAA,kBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAO,IAAA,EAAC,OAAA,EAAO,IAAA,EAAC,IAAA,EAAI,IAAA,EAC9B,QAAA,kBAAA,GAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,aAAA,EAAe,CAAC,GAAA,CAAI,eAAA;AAAA,UACpB,QAAA,EAAU,MAAM,GAAA,CAAI,OAAA,CAAQ,KAAK,CAAA;AAAA,UACjC,mBAAA,EAAmB,IAAA;AAAA,UAEnB,QAAA,kBAAA,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,YAAA;AAAA,cACL,MAAM,GAAA,CAAI,IAAA;AAAA,cACV,YAAA,EAAW,MAAA;AAAA,cACX,mBAAiB,GAAA,CAAI,OAAA;AAAA,cACrB,oBAAkB,GAAA,CAAI,aAAA;AAAA,cACtB,YAAA,EAAW,MAAA;AAAA,cACX,SAAA,EAAW,EAAA;AAAA,gBACT,0DAAA;AAAA,gBACA,eAAA,CAAgB;AAAA,kBACd,SAAS,OAAA,IAAW,UAAA;AAAA,kBACpB,IAAA;AAAA,kBACA,QAAQ,MAAA,IAAU,IAAA;AAAA,kBAClB,SAAS,OAAA,IAAW,IAAA;AAAA,kBACpB;AAAA,iBACD,CAAA;AAAA,gBACD;AAAA,eACF;AAAA,cACC,GAAG,IAAA;AAAA,cAEJ,QAAA,kBAAA,GAAA,CAAC,qBAAA,EAAA,EAAsB,KAAA,EAAO,SAAA,EAAY,QAAA,EAAS;AAAA;AAAA;AACrD;AAAA,SAEJ,CAAA,EACF;AAAA,KAAA,EACF,CAAA,EACF,CAAA;AAAA,EAEJ;AACF;AAGO,IAAM,YAAA,GAAe;AACrB,IAAM,WAAA,GAAc;AACpB,IAAM,iBAAA,GAAoB;AAC1B,IAAM,UAAA,GAAa;AACnB,IAAM,YAAA,GAAe;AACrB,IAAM,WAAA,GAAc;AAa1B,MAAA,CAA2B,OAAA,GAAU,aAAA;AACrC,MAAA,CAA2B,OAAA,GAAU,aAAA;AACrC,MAAA,CAA2B,MAAA,GAAS,YAAA;AACpC,MAAA,CAA2B,KAAA,GAAQ,WAAA;AACnC,MAAA,CAA2B,WAAA,GAAc,iBAAA;AACzC,MAAA,CAA2B,IAAA,GAAO,UAAA;AAClC,MAAA,CAA2B,MAAA,GAAS,YAAA;AACpC,MAAA,CAA2B,KAAA,GAAQ,WAAA","file":"chunk-O2DK3E3E.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, surfaceVariants, type SurfaceVariants } 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\ninterface DialogContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n titleId: string;\n descriptionId: string;\n role: 'dialog' | 'alertdialog';\n dismissOnOutsideClick: boolean;\n dismissOnEscape: boolean;\n}\n\nconst DialogContext = createContext<DialogContextValue | null>(null);\n\nfunction useDialogContext() {\n const ctx = useContext(DialogContext);\n if (!ctx) throw new Error('Dialog.* must be used inside <Dialog>');\n return ctx;\n}\n\nexport interface DialogProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n dismissOnOutsideClick?: boolean;\n dismissOnEscape?: boolean;\n /** Internal — `AlertDialog` overrides this. */\n role?: 'dialog' | 'alertdialog';\n children: ReactNode;\n}\n\nexport function Dialog({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n dismissOnOutsideClick = true,\n dismissOnEscape = true,\n role = 'dialog',\n children,\n}: DialogProps) {\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<DialogContextValue>(\n () => ({\n open,\n setOpen,\n triggerRef,\n titleId,\n descriptionId,\n role,\n dismissOnOutsideClick,\n dismissOnEscape,\n }),\n [open, setOpen, titleId, descriptionId, role, dismissOnOutsideClick, dismissOnEscape],\n );\n\n return <DialogContext.Provider value={ctx}>{children}</DialogContext.Provider>;\n}\n\nexport interface DialogTriggerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n asChild?: boolean;\n children: ReactNode;\n}\n\nexport const DialogTrigger = forwardRef<HTMLButtonElement, DialogTriggerProps>(\n function DialogTrigger({ asChild, onClick, children, ...rest }, forwardedRef) {\n const ctx = useDialogContext();\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\n/** Represents the prop surface of `Dialog.Content`. */\nexport interface DialogContentProps extends HTMLAttributes<HTMLDivElement>, SurfaceVariants {\n /** Disables the default backdrop when true. */\n hideBackdrop?: boolean;\n /** Applies a backdrop blur. */\n blur?: boolean;\n children: ReactNode;\n}\n\nexport const DialogContent = forwardRef<HTMLDivElement, DialogContentProps>(\n function DialogContent(\n {\n hideBackdrop,\n blur,\n variant,\n tone,\n radius,\n padding,\n elevation,\n className,\n children,\n ...rest\n },\n forwardedRef,\n ) {\n const ctx = useDialogContext();\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 <div className=\"fixed inset-0 z-modal grid place-items-center overflow-y-auto p-4\">\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={ctx.role}\n aria-modal=\"true\"\n aria-labelledby={ctx.titleId}\n aria-describedby={ctx.descriptionId}\n data-state=\"open\"\n className={cn(\n 'relative w-full max-w-lg animate-in fade-in-0 zoom-in-95',\n surfaceVariants({\n variant: variant ?? 'elevated',\n tone,\n radius: radius ?? 'lg',\n padding: padding ?? 'xl',\n elevation,\n }),\n className,\n )}\n {...rest}\n >\n <OverlayChromeProvider value={chromeCtx}>{children}</OverlayChromeProvider>\n </div>\n </DismissableLayer>\n </FocusScope>\n </div>\n </ScrollLockProvider>\n </Portal>\n );\n },\n);\n\n// Re-export shared chrome subcomponents under the Dialog namespace.\nexport const DialogHeader = OverlayHeader;\nexport const DialogTitle = OverlayTitle;\nexport const DialogDescription = OverlayDescription;\nexport const DialogBody = OverlayBody;\nexport const DialogFooter = OverlayFooter;\nexport const DialogClose = OverlayCloseButton;\n\ntype DialogComponent = typeof Dialog & {\n Trigger: typeof DialogTrigger;\n Content: typeof DialogContent;\n Header: typeof DialogHeader;\n Title: typeof DialogTitle;\n Description: typeof DialogDescription;\n Body: typeof DialogBody;\n Footer: typeof DialogFooter;\n Close: typeof DialogClose;\n};\n\n(Dialog as DialogComponent).Trigger = DialogTrigger;\n(Dialog as DialogComponent).Content = DialogContent;\n(Dialog as DialogComponent).Header = DialogHeader;\n(Dialog as DialogComponent).Title = DialogTitle;\n(Dialog as DialogComponent).Description = DialogDescription;\n(Dialog as DialogComponent).Body = DialogBody;\n(Dialog as DialogComponent).Footer = DialogFooter;\n(Dialog as DialogComponent).Close = DialogClose;\n\nexport default Dialog as DialogComponent;\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Drawer, DrawerContent, DrawerTitle, DrawerDescription } from './chunk-
|
|
2
|
-
import { DialogContent, DialogClose, Dialog, DialogTrigger, DialogHeader, DialogTitle, DialogDescription, DialogBody, DialogFooter } from './chunk-
|
|
1
|
+
import { Drawer, DrawerContent, DrawerTitle, DrawerDescription } from './chunk-HS5BIBT2.js';
|
|
2
|
+
import { DialogContent, DialogClose, Dialog, DialogTrigger, DialogHeader, DialogTitle, DialogDescription, DialogBody, DialogFooter } from './chunk-O2DK3E3E.js';
|
|
3
3
|
import { Backdrop } from './chunk-BLXE2RCC.js';
|
|
4
4
|
import { useControlled } from './chunk-NUMFGKPY.js';
|
|
5
|
-
import { surfaceVariants } from './chunk-
|
|
5
|
+
import { surfaceVariants } from './chunk-RDDIOVK4.js';
|
|
6
6
|
import { Slot, Portal, AnchoredPositioner, DismissableLayer, ScrollLockProvider, OverlayArrow } from './chunk-BMABNEZX.js';
|
|
7
7
|
import { cn, composeRefs } from './chunk-LDRFQG44.js';
|
|
8
8
|
import { forwardRef, createContext, useState, useRef, useEffect, useMemo, useContext, useCallback, isValidElement, cloneElement } from 'react';
|
|
@@ -414,6 +414,11 @@ var BottomSheet = forwardRef(function BottomSheet2({
|
|
|
414
414
|
dismissOnOutsideClick = true,
|
|
415
415
|
dismissOnEscape = true,
|
|
416
416
|
dragToDismiss = true,
|
|
417
|
+
variant,
|
|
418
|
+
tone,
|
|
419
|
+
radius,
|
|
420
|
+
padding,
|
|
421
|
+
elevation,
|
|
417
422
|
className,
|
|
418
423
|
children,
|
|
419
424
|
...rest
|
|
@@ -519,7 +524,14 @@ var BottomSheet = forwardRef(function BottomSheet2({
|
|
|
519
524
|
transition: dragHeight == null ? "height 220ms ease-out" : "none"
|
|
520
525
|
},
|
|
521
526
|
className: cn(
|
|
522
|
-
"fixed inset-x-0 bottom-0 z-modal flex flex-col rounded-t-xl border-t
|
|
527
|
+
"fixed inset-x-0 bottom-0 z-modal flex flex-col rounded-t-xl border-t outline-none",
|
|
528
|
+
surfaceVariants({
|
|
529
|
+
variant: variant ?? "elevated",
|
|
530
|
+
tone,
|
|
531
|
+
radius: radius ?? "none",
|
|
532
|
+
padding: padding ?? "none",
|
|
533
|
+
elevation: elevation ?? 5
|
|
534
|
+
}),
|
|
523
535
|
className
|
|
524
536
|
),
|
|
525
537
|
...rest,
|
|
@@ -552,5 +564,5 @@ var BottomSheet = forwardRef(function BottomSheet2({
|
|
|
552
564
|
});
|
|
553
565
|
|
|
554
566
|
export { ActionSheet, ActionSheetAction, ActionSheetCancel, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, BottomSheet, HoverCard, HoverCardArrow, HoverCardContent, HoverCardTrigger, Popover, PopoverArrow, PopoverContent, PopoverTrigger, useBottomSheet };
|
|
555
|
-
//# sourceMappingURL=chunk-
|
|
556
|
-
//# sourceMappingURL=chunk-
|
|
567
|
+
//# sourceMappingURL=chunk-OMSOGGGK.js.map
|
|
568
|
+
//# sourceMappingURL=chunk-OMSOGGGK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/overlays/alertDialog/AlertDialog.tsx","../src/overlays/popover/Popover.tsx","../src/overlays/hoverCard/HoverCard.tsx","../src/overlays/actionSheet/ActionSheet.tsx","../src/overlays/bottomSheet/BottomSheet.tsx"],"names":["AlertDialogContent","AlertDialogAction","AlertDialogCancel","jsx","forwardRef","PopoverTrigger","PopoverContent","createContext","useContext","useRef","useMemo","HoverCardContent","ActionSheetAction","ActionSheetCancel","BottomSheet","jsxs","FocusScope"],"mappings":"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","file":"chunk-OMSOGGGK.js","sourcesContent":["import { forwardRef, type ButtonHTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils';\nimport {\n Dialog,\n DialogBody,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n DialogClose,\n type DialogProps,\n type DialogContentProps,\n} from '../dialog';\n\nexport type AlertDialogProps = Omit<DialogProps, 'role' | 'dismissOnOutsideClick'>;\n\nexport function AlertDialog(props: AlertDialogProps) {\n return <Dialog {...props} role=\"alertdialog\" dismissOnOutsideClick={false} />;\n}\n\nexport const AlertDialogContent = forwardRef<HTMLDivElement, DialogContentProps>(\n function AlertDialogContent(props, ref) {\n return <DialogContent ref={ref} {...props} />;\n },\n);\n\nexport interface AlertDialogActionProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n /** Runs before the dialog closes. */\n onAction?: () => void;\n children: ReactNode;\n}\n\nexport const AlertDialogAction = forwardRef<HTMLButtonElement, AlertDialogActionProps>(\n function AlertDialogAction({ onAction, onClick, className, children, ...rest }, ref) {\n return (\n <DialogClose\n ref={ref}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n onAction?.();\n }}\n className={cn(\n 'inline-flex h-9 items-center justify-center rounded-md bg-primary px-4 text-sm font-medium text-primary-foreground transition-colors hover:bg-primary/90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n className,\n )}\n {...rest}\n >\n {children}\n </DialogClose>\n );\n },\n);\n\nexport interface AlertDialogCancelProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n children: ReactNode;\n}\n\nexport const AlertDialogCancel = forwardRef<HTMLButtonElement, AlertDialogCancelProps>(\n function AlertDialogCancel({ className, children, ...rest }, ref) {\n return (\n <DialogClose\n ref={ref}\n className={cn(\n 'inline-flex h-9 items-center justify-center rounded-md border border-border bg-background px-4 text-sm font-medium text-foreground transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n className,\n )}\n {...rest}\n >\n {children}\n </DialogClose>\n );\n },\n);\n\ntype AlertDialogComponent = typeof AlertDialog & {\n Trigger: typeof DialogTrigger;\n Content: typeof AlertDialogContent;\n Header: typeof DialogHeader;\n Title: typeof DialogTitle;\n Description: typeof DialogDescription;\n Body: typeof DialogBody;\n Footer: typeof DialogFooter;\n Action: typeof AlertDialogAction;\n Cancel: typeof AlertDialogCancel;\n};\n\n(AlertDialog as AlertDialogComponent).Trigger = DialogTrigger;\n(AlertDialog as AlertDialogComponent).Content = AlertDialogContent;\n(AlertDialog as AlertDialogComponent).Header = DialogHeader;\n(AlertDialog as AlertDialogComponent).Title = DialogTitle;\n(AlertDialog as AlertDialogComponent).Description = DialogDescription;\n(AlertDialog as AlertDialogComponent).Body = DialogBody;\n(AlertDialog as AlertDialogComponent).Footer = DialogFooter;\n(AlertDialog as AlertDialogComponent).Action = AlertDialogAction;\n(AlertDialog as AlertDialogComponent).Cancel = AlertDialogCancel;\n\nexport default AlertDialog as AlertDialogComponent;\n","import {\n createContext,\n forwardRef,\n useContext,\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, surfaceVariants, type SurfaceVariants } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport {\n AnchoredPositioner,\n DismissableLayer,\n OverlayArrow,\n Portal,\n Slot,\n type AnchoredPositionerProps,\n type OverlayArrowProps,\n} from '../../primitives';\n\ninterface PopoverContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n placement: AnchoredPositionerProps['placement'];\n offset: number;\n dismissOnOutsideClick: boolean;\n dismissOnEscape: boolean;\n}\n\nconst PopoverContext = createContext<PopoverContextValue | null>(null);\n\nfunction usePopoverContext() {\n const ctx = useContext(PopoverContext);\n if (!ctx) throw new Error('Popover.* must be used inside <Popover>');\n return ctx;\n}\n\nexport interface PopoverProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n placement?: AnchoredPositionerProps['placement'];\n offset?: number;\n dismissOnOutsideClick?: boolean;\n dismissOnEscape?: boolean;\n children: ReactNode;\n}\n\nexport function Popover({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n placement = 'bottom',\n offset = 8,\n dismissOnOutsideClick = true,\n dismissOnEscape = true,\n children,\n}: PopoverProps) {\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n onChange: onOpenChange,\n });\n const triggerRef = useRef<HTMLElement | null>(null);\n\n const ctx = useMemo<PopoverContextValue>(\n () => ({\n open,\n setOpen,\n triggerRef,\n placement,\n offset,\n dismissOnOutsideClick,\n dismissOnEscape,\n }),\n [open, setOpen, placement, offset, dismissOnOutsideClick, dismissOnEscape],\n );\n\n return <PopoverContext.Provider value={ctx}>{children}</PopoverContext.Provider>;\n}\n\nexport interface PopoverTriggerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n asChild?: boolean;\n children: ReactNode;\n}\n\nexport const PopoverTrigger = forwardRef<HTMLButtonElement, PopoverTriggerProps>(\n function PopoverTrigger({ asChild, onClick, children, ...rest }, forwardedRef) {\n const ctx = usePopoverContext();\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(!ctx.open);\n }}\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\n\n/** Represents the prop surface of the `Popover.Content`. */\nexport interface PopoverContentProps\n extends HTMLAttributes<HTMLDivElement>,\n SurfaceVariants {\n /** Skips the surface chrome (bg/border/shadow); keeps only z-index + animation. */\n bare?: boolean;\n children: ReactNode;\n}\n\n/** Contains the default chrome width that preserves the historical look. */\nconst DEFAULT_WIDTH = 'w-72';\n\nexport const PopoverContent = forwardRef<HTMLDivElement, PopoverContentProps>(\n function PopoverContent(\n { bare, variant, tone, radius, padding, elevation, className, children, ...rest },\n forwardedRef,\n ) {\n const ctx = usePopoverContext();\n if (!ctx.open) return null;\n /* Default to lg padding when chrome is on (matches old `p-4`); consumer can override. */\n const resolvedPadding = padding ?? (bare ? 'none' : 'lg');\n return (\n <Portal>\n {/* z-index sits on the SC root — transform creates the stacking context. */}\n <AnchoredPositioner\n anchor={ctx.triggerRef.current}\n placement={ctx.placement}\n offset={ctx.offset}\n className=\"z-dropdown\"\n >\n <FocusScope asChild trapped loop>\n <DismissableLayer\n disableEscape={!ctx.dismissOnEscape}\n onEscape={() => {\n ctx.setOpen(false);\n requestAnimationFrame(() => ctx.triggerRef.current?.focus());\n }}\n disableOutsideClick={!ctx.dismissOnOutsideClick}\n onOutsidePointerDown={(e) => {\n if (ctx.triggerRef.current?.contains(e.target as Node)) return;\n ctx.setOpen(false);\n }}\n >\n <div\n ref={forwardedRef}\n role=\"dialog\"\n data-state=\"open\"\n className={cn(\n 'outline-none animate-in fade-in-0 zoom-in-95',\n !bare &&\n cn(\n DEFAULT_WIDTH,\n surfaceVariants({\n variant,\n tone,\n radius,\n padding: resolvedPadding,\n elevation,\n }),\n ),\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n </DismissableLayer>\n </FocusScope>\n </AnchoredPositioner>\n </Portal>\n );\n },\n);\n\nexport function PopoverArrow({ className, ...rest }: OverlayArrowProps) {\n return <OverlayArrow className={cn('text-popover', className)} {...rest} />;\n}\n\ntype PopoverComponent = typeof Popover & {\n Trigger: typeof PopoverTrigger;\n Content: typeof PopoverContent;\n Arrow: typeof PopoverArrow;\n};\n\n(Popover as PopoverComponent).Trigger = PopoverTrigger;\n(Popover as PopoverComponent).Content = PopoverContent;\n(Popover as PopoverComponent).Arrow = PopoverArrow;\n\nexport default Popover as PopoverComponent;\n","import {\n cloneElement,\n createContext,\n forwardRef,\n isValidElement,\n useCallback,\n useContext,\n useMemo,\n useRef,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from 'react';\nimport { cn, composeRefs } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport {\n AnchoredPositioner,\n OverlayArrow,\n Portal,\n type AnchoredPositionerProps,\n type OverlayArrowProps,\n} from '../../primitives';\n\ninterface HoverCardContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n show: () => void;\n hide: () => void;\n cancelHide: () => void;\n placement: AnchoredPositionerProps['placement'];\n offset: number;\n}\n\nconst HoverCardContext = createContext<HoverCardContextValue | null>(null);\n\nfunction useHoverCardContext() {\n const ctx = useContext(HoverCardContext);\n if (!ctx) throw new Error('HoverCard.* must be used inside <HoverCard>');\n return ctx;\n}\n\nexport interface HoverCardProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n openDelay?: number;\n closeDelay?: number;\n placement?: AnchoredPositionerProps['placement'];\n offset?: number;\n children: ReactNode;\n}\n\nexport function HoverCard({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n openDelay = 700,\n closeDelay = 300,\n placement = 'bottom',\n offset = 8,\n children,\n}: HoverCardProps) {\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n onChange: onOpenChange,\n });\n const triggerRef = useRef<HTMLElement | null>(null);\n const openTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n const closeTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const clear = useCallback(() => {\n if (openTimer.current) clearTimeout(openTimer.current);\n if (closeTimer.current) clearTimeout(closeTimer.current);\n openTimer.current = null;\n closeTimer.current = null;\n }, []);\n\n const show = useCallback(() => {\n clear();\n openTimer.current = setTimeout(() => setOpen(true), openDelay);\n }, [clear, openDelay, setOpen]);\n\n const hide = useCallback(() => {\n clear();\n closeTimer.current = setTimeout(() => setOpen(false), closeDelay);\n }, [clear, closeDelay, setOpen]);\n\n const cancelHide = useCallback(() => {\n if (closeTimer.current) {\n clearTimeout(closeTimer.current);\n closeTimer.current = null;\n }\n }, []);\n\n const ctx = useMemo<HoverCardContextValue>(\n () => ({ open, setOpen, triggerRef, show, hide, cancelHide, placement, offset }),\n [open, setOpen, show, hide, cancelHide, placement, offset],\n );\n\n return <HoverCardContext.Provider value={ctx}>{children}</HoverCardContext.Provider>;\n}\n\nexport interface HoverCardTriggerProps {\n asChild?: boolean;\n children: ReactElement;\n}\n\nexport function HoverCardTrigger({ children }: HoverCardTriggerProps) {\n const ctx = useHoverCardContext();\n if (!isValidElement(children)) return children;\n const trigger = children as ReactElement<{\n ref?: Ref<HTMLElement>;\n onPointerEnter?: (e: React.PointerEvent) => void;\n onPointerLeave?: (e: React.PointerEvent) => void;\n onFocus?: (e: React.FocusEvent) => void;\n onBlur?: (e: React.FocusEvent) => void;\n }> & { ref?: Ref<HTMLElement> };\n\n return cloneElement(trigger, {\n ref: composeRefs((node: HTMLElement | null) => {\n ctx.triggerRef.current = node;\n }, trigger.ref),\n onPointerEnter: (e: React.PointerEvent) => {\n trigger.props.onPointerEnter?.(e);\n ctx.show();\n },\n onPointerLeave: (e: React.PointerEvent) => {\n trigger.props.onPointerLeave?.(e);\n ctx.hide();\n },\n onFocus: (e: React.FocusEvent) => {\n trigger.props.onFocus?.(e);\n ctx.show();\n },\n onBlur: (e: React.FocusEvent) => {\n trigger.props.onBlur?.(e);\n ctx.hide();\n },\n });\n}\n\nexport interface HoverCardContentProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nexport const HoverCardContent = forwardRef<HTMLDivElement, HoverCardContentProps>(\n function HoverCardContent({ className, children, onPointerEnter, onPointerLeave, ...rest }, forwardedRef) {\n const ctx = useHoverCardContext();\n if (!ctx.open) return null;\n return (\n <Portal>\n <AnchoredPositioner\n anchor={ctx.triggerRef.current}\n placement={ctx.placement}\n offset={ctx.offset}\n className=\"z-dropdown\"\n >\n <div\n ref={forwardedRef}\n data-state=\"open\"\n onPointerEnter={(e) => {\n onPointerEnter?.(e);\n ctx.cancelHide();\n }}\n onPointerLeave={(e) => {\n onPointerLeave?.(e);\n ctx.hide();\n }}\n className={cn(\n 'w-64 rounded-md border border-border bg-popover p-4 text-popover-foreground shadow-md outline-none animate-in fade-in-0 zoom-in-95',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n </AnchoredPositioner>\n </Portal>\n );\n },\n);\n\nexport function HoverCardArrow({ className, ...rest }: OverlayArrowProps) {\n return <OverlayArrow className={cn('text-popover', className)} {...rest} />;\n}\n\ntype HoverCardComponent = typeof HoverCard & {\n Trigger: typeof HoverCardTrigger;\n Content: typeof HoverCardContent;\n Arrow: typeof HoverCardArrow;\n};\n\n(HoverCard as HoverCardComponent).Trigger = HoverCardTrigger;\n(HoverCard as HoverCardComponent).Content = HoverCardContent;\n(HoverCard as HoverCardComponent).Arrow = HoverCardArrow;\n\nexport default HoverCard as HoverCardComponent;\n","import {\n createContext,\n forwardRef,\n useContext,\n useMemo,\n type ButtonHTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cn } from '../../utils';\nimport { Drawer, DrawerContent, DrawerDescription, DrawerTitle } from '../drawer';\n\ninterface ActionSheetContextValue {\n setOpen: (open: boolean) => void;\n}\n\nconst ActionSheetContext = createContext<ActionSheetContextValue | null>(null);\n\nfunction useActionSheetContext() {\n const ctx = useContext(ActionSheetContext);\n if (!ctx) throw new Error('ActionSheet.* must be used inside <ActionSheet>');\n return ctx;\n}\n\nexport interface ActionSheetProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n title?: ReactNode;\n description?: ReactNode;\n className?: string;\n children: ReactNode;\n}\n\n/**\n * iOS-style action sheet — opinionated bottom Drawer with stacked button rows\n * and a separated Cancel.\n */\nexport function ActionSheet({\n open,\n defaultOpen,\n onOpenChange,\n title,\n description,\n className,\n children,\n}: ActionSheetProps) {\n // We can't intercept `setOpen` from Drawer's context directly, so the\n // ActionSheet wraps Drawer with our own controlled bridge.\n const handleOpenChange = (next: boolean) => onOpenChange?.(next);\n\n const ctx = useMemo<ActionSheetContextValue>(\n () => ({ setOpen: handleOpenChange }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [onOpenChange],\n );\n\n return (\n <ActionSheetContext.Provider value={ctx}>\n <Drawer open={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange} side=\"bottom\">\n <DrawerContent\n className={cn(\n 'mx-auto max-w-md rounded-t-xl bg-card p-2 text-card-foreground',\n className,\n )}\n >\n {(title || description) && (\n <div className=\"px-3 py-2 text-center\">\n {title && (\n <DrawerTitle className=\"text-sm font-medium text-muted-foreground\">\n {title}\n </DrawerTitle>\n )}\n {description && (\n <DrawerDescription className=\"mt-1 text-xs text-muted-foreground\">\n {description}\n </DrawerDescription>\n )}\n </div>\n )}\n <div className=\"flex flex-col gap-px overflow-hidden rounded-lg bg-border\">\n {children}\n </div>\n </DrawerContent>\n </Drawer>\n </ActionSheetContext.Provider>\n );\n}\n\nexport interface ActionSheetActionProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n onSelect?: () => void;\n destructive?: boolean;\n}\n\nexport const ActionSheetAction = forwardRef<HTMLButtonElement, ActionSheetActionProps>(\n function ActionSheetAction(\n { className, onSelect, destructive, onClick, children, type = 'button', ...rest },\n ref,\n ) {\n const ctx = useActionSheetContext();\n return (\n <button\n ref={ref}\n type={type}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n onSelect?.();\n ctx.setOpen(false);\n }}\n className={cn(\n 'flex h-12 w-full items-center justify-center bg-card px-4 text-base font-medium transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n destructive ? 'text-destructive' : 'text-foreground',\n className,\n )}\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\n\nexport type ActionSheetCancelProps = ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport const ActionSheetCancel = forwardRef<HTMLButtonElement, ActionSheetCancelProps>(\n function ActionSheetCancel({ className, onClick, children = 'Cancel', type = 'button', ...rest }, ref) {\n const ctx = useActionSheetContext();\n return (\n <button\n ref={ref}\n type={type}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n ctx.setOpen(false);\n }}\n className={cn(\n 'mt-2 flex h-12 w-full items-center justify-center rounded-lg bg-card text-base font-semibold text-foreground shadow-sm transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n className,\n )}\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\n\ntype ActionSheetComponent = typeof ActionSheet & {\n Action: typeof ActionSheetAction;\n Cancel: typeof ActionSheetCancel;\n};\n\n(ActionSheet as ActionSheetComponent).Action = ActionSheetAction;\n(ActionSheet as ActionSheetComponent).Cancel = ActionSheetCancel;\n\nexport default ActionSheet as ActionSheetComponent;\n","import {\n createContext,\n forwardRef,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type KeyboardEvent,\n type PointerEvent as ReactPointerEvent,\n type ReactNode,\n} from 'react';\nimport { FocusScope } from '@radix-ui/react-focus-scope';\nimport { cn, surfaceVariants, type SurfaceVariants } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { DismissableLayer, Portal, ScrollLockProvider } from '../../primitives';\nimport { Backdrop } from '../backdrop';\n\ntype SnapPoint = number | string;\n\ninterface BottomSheetContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n currentSnap: number;\n setCurrentSnap: (i: number) => void;\n snapPoints: SnapPoint[];\n}\n\nconst BottomSheetContext = createContext<BottomSheetContextValue | null>(null);\n\nexport function useBottomSheet() {\n const ctx = useContext(BottomSheetContext);\n if (!ctx) throw new Error('useBottomSheet must be used inside <BottomSheet>');\n return ctx;\n}\n\nfunction resolveSnapPx(point: SnapPoint, viewport: number): number {\n if (typeof point === 'number') return point;\n const trimmed = point.trim();\n if (trimmed.endsWith('vh')) return (parseFloat(trimmed) / 100) * viewport;\n if (trimmed.endsWith('px')) return parseFloat(trimmed);\n if (trimmed.endsWith('%')) return (parseFloat(trimmed) / 100) * viewport;\n // Fallback: try parseFloat as px.\n const n = parseFloat(trimmed);\n return Number.isFinite(n) ? n : 0;\n}\n\n/** Represents the prop surface of `BottomSheet`. */\nexport interface BottomSheetProps extends HTMLAttributes<HTMLDivElement>, SurfaceVariants {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n snapPoints?: SnapPoint[];\n initialSnap?: number;\n dismissOnOutsideClick?: boolean;\n dismissOnEscape?: boolean;\n dragToDismiss?: boolean;\n children: ReactNode;\n}\n\n/**\n * Mobile bottom sheet with drag handle + snap points. Pointer-event drag\n * between heights; releasing snaps to the nearest point. Past the lowest\n * snap with `dragToDismiss`, the sheet closes.\n */\nexport const BottomSheet = forwardRef<HTMLDivElement, BottomSheetProps>(function BottomSheet(\n {\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n snapPoints = ['40vh', '90vh'],\n initialSnap = 0,\n dismissOnOutsideClick = true,\n dismissOnEscape = true,\n dragToDismiss = true,\n variant,\n tone,\n radius,\n padding,\n elevation,\n className,\n children,\n ...rest\n },\n forwardedRef,\n) {\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n onChange: onOpenChange,\n });\n const [currentSnap, setCurrentSnap] = useState(\n Math.min(initialSnap, snapPoints.length - 1),\n );\n const sheetRef = useRef<HTMLDivElement | null>(null);\n const startYRef = useRef<number | null>(null);\n const startHeightRef = useRef(0);\n const [dragHeight, setDragHeight] = useState<number | null>(null);\n\n // Reset to initialSnap each time we re-open.\n useEffect(() => {\n if (open) setCurrentSnap(Math.min(initialSnap, snapPoints.length - 1));\n }, [open, initialSnap, snapPoints.length]);\n\n const ctx = useMemo<BottomSheetContextValue>(\n () => ({ open, setOpen, currentSnap, setCurrentSnap, snapPoints }),\n [open, setOpen, currentSnap, snapPoints],\n );\n\n const handlePointerDown = (e: ReactPointerEvent<HTMLDivElement>) => {\n startYRef.current = e.clientY;\n const rect = sheetRef.current?.getBoundingClientRect();\n startHeightRef.current = rect ? rect.height : 0;\n (e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);\n };\n\n const handlePointerMove = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (startYRef.current == null) return;\n const dy = e.clientY - startYRef.current;\n setDragHeight(Math.max(0, startHeightRef.current - dy));\n };\n\n const handlePointerUp = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (startYRef.current == null) return;\n startYRef.current = null;\n (e.currentTarget as HTMLElement).releasePointerCapture?.(e.pointerId);\n\n const viewport = typeof window !== 'undefined' ? window.innerHeight : 800;\n const heights = snapPoints.map((p) => resolveSnapPx(p, viewport));\n const liveHeight = dragHeight ?? heights[currentSnap] ?? 0;\n setDragHeight(null);\n\n // Below lowest snap by 60px → dismiss.\n if (dragToDismiss && liveHeight < (heights[0] ?? 0) - 60) {\n setOpen(false);\n return;\n }\n // Snap to nearest.\n let bestIdx = 0;\n let bestDist = Number.POSITIVE_INFINITY;\n heights.forEach((h, i) => {\n const d = Math.abs(h - liveHeight);\n if (d < bestDist) {\n bestDist = d;\n bestIdx = i;\n }\n });\n setCurrentSnap(bestIdx);\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'ArrowUp' && currentSnap < snapPoints.length - 1) {\n e.preventDefault();\n setCurrentSnap(currentSnap + 1);\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n if (currentSnap > 0) setCurrentSnap(currentSnap - 1);\n else if (dragToDismiss) setOpen(false);\n }\n };\n\n if (!open) return null;\n\n const heightStyle: string | number = (() => {\n if (dragHeight != null) return `${dragHeight}px`;\n const point = snapPoints[currentSnap];\n if (typeof point === 'number') return `${point}px`;\n return point ?? '40vh';\n })();\n\n return (\n <BottomSheetContext.Provider value={ctx}>\n <Portal>\n <ScrollLockProvider>\n <Backdrop\n inline\n onClick={() => {\n if (dismissOnOutsideClick) setOpen(false);\n }}\n />\n <FocusScope asChild trapped loop>\n <DismissableLayer\n disableEscape={!dismissOnEscape}\n onEscape={() => setOpen(false)}\n disableOutsideClick\n >\n <div\n ref={(el) => {\n sheetRef.current = el;\n if (typeof forwardedRef === 'function') forwardedRef(el);\n else if (forwardedRef) (forwardedRef as React.MutableRefObject<HTMLDivElement | null>).current = el;\n }}\n role=\"dialog\"\n aria-modal=\"true\"\n style={{\n height: heightStyle,\n transition: dragHeight == null ? 'height 220ms ease-out' : 'none',\n }}\n className={cn(\n 'fixed inset-x-0 bottom-0 z-modal flex flex-col rounded-t-xl border-t outline-none',\n surfaceVariants({\n variant: variant ?? 'elevated',\n tone,\n radius: radius ?? 'none',\n padding: padding ?? 'none',\n elevation: elevation ?? 5,\n }),\n className,\n )}\n {...rest}\n >\n <div\n role=\"separator\"\n aria-orientation=\"horizontal\"\n aria-valuenow={currentSnap}\n aria-valuemin={0}\n aria-valuemax={snapPoints.length - 1}\n tabIndex={0}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n onPointerCancel={handlePointerUp}\n onKeyDown={handleKeyDown}\n className=\"flex h-7 cursor-ns-resize items-center justify-center focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring\"\n >\n <span className=\"h-1 w-10 rounded-full bg-border-strong\" aria-hidden=\"true\" />\n </div>\n <div className=\"flex-1 overflow-y-auto px-4 pb-4\">{children}</div>\n </div>\n </DismissableLayer>\n </FocusScope>\n </ScrollLockProvider>\n </Portal>\n </BottomSheetContext.Provider>\n );\n});\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Kbd, addDays, MONTHS_LONG, startOfDay, buildMonthGrid, WEEKDAYS_SHORT, isToday, addMonths, isSameDay } from './chunk-
|
|
1
|
+
import { Kbd, addDays, MONTHS_LONG, startOfDay, buildMonthGrid, WEEKDAYS_SHORT, isToday, addMonths, isSameDay } from './chunk-VIWAIXVK.js';
|
|
2
2
|
import { useClipboard, useControlled } from './chunk-NUMFGKPY.js';
|
|
3
3
|
import { Icon } from './chunk-F227LKWK.js';
|
|
4
|
-
import { tv, CssExtensions, dataAttr } from './chunk-
|
|
4
|
+
import { tv, CssExtensions, surfaceVariants, dataAttr, Tones } from './chunk-RDDIOVK4.js';
|
|
5
5
|
import { Slot, RovingFocusGroup, useRovingFocusItem, Portal, AnchoredPositioner } from './chunk-BMABNEZX.js';
|
|
6
6
|
import { cn, composeRefs } from './chunk-LDRFQG44.js';
|
|
7
7
|
import { forwardRef, useState, Children, isValidElement, Fragment as Fragment$1, createContext, useId, useMemo, useCallback, useContext, useEffect, useRef, useImperativeHandle, useLayoutEffect, cloneElement } from 'react';
|
|
@@ -372,20 +372,19 @@ var Quote = forwardRef(
|
|
|
372
372
|
)
|
|
373
373
|
);
|
|
374
374
|
Quote.displayName = "Quote";
|
|
375
|
-
var PADDING = {
|
|
376
|
-
none: "",
|
|
377
|
-
sm: "p-3",
|
|
378
|
-
md: "p-4",
|
|
379
|
-
lg: "p-6"
|
|
380
|
-
};
|
|
381
375
|
var CardRoot = forwardRef(
|
|
382
|
-
({ className,
|
|
376
|
+
({ className, variant, tone, radius, padding, elevation, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
383
377
|
"div",
|
|
384
378
|
{
|
|
385
379
|
ref,
|
|
386
380
|
className: cn(
|
|
387
|
-
|
|
388
|
-
|
|
381
|
+
surfaceVariants({
|
|
382
|
+
variant: variant ?? "surface",
|
|
383
|
+
tone,
|
|
384
|
+
radius: radius ?? "lg",
|
|
385
|
+
padding: padding ?? "none",
|
|
386
|
+
elevation: elevation ?? 1
|
|
387
|
+
}),
|
|
389
388
|
className
|
|
390
389
|
),
|
|
391
390
|
...props
|
|
@@ -5142,10 +5141,10 @@ var ReactionBar = forwardRef(
|
|
|
5142
5141
|
);
|
|
5143
5142
|
ReactionBar.displayName = "ReactionBar";
|
|
5144
5143
|
var TONE_BASE = {
|
|
5145
|
-
default:
|
|
5146
|
-
primary:
|
|
5144
|
+
default: Tones.soft.neutral,
|
|
5145
|
+
primary: Tones.solid.primary,
|
|
5147
5146
|
system: "bg-transparent text-muted-foreground italic",
|
|
5148
|
-
subtle:
|
|
5147
|
+
subtle: `border ${Tones.surface.neutral}`
|
|
5149
5148
|
};
|
|
5150
5149
|
var STATUS_ICON = {
|
|
5151
5150
|
sending: /* @__PURE__ */ jsx(Clock, { className: "h-3 w-3" }),
|
|
@@ -5560,5 +5559,5 @@ var ActivityFeed = ActivityFeedInner;
|
|
|
5560
5559
|
ActivityFeed.Item = ActivityItem;
|
|
5561
5560
|
|
|
5562
5561
|
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityFeed, ActivityItem, AnimatedNumber, AnnotationMarker, AudioPlayer, AudioWaveform, Avatar, AvatarGroup, Badge, BadgeOverlay, Card, Carousel, CarouselDot, CarouselDots, CarouselNext, CarouselPrev, CarouselSlide, CarouselSlides, CarouselViewport, ChatBubble, Code, Collapsible, CollapsibleContent, CollapsibleTrigger, Comment, CommentThread, Confetti, CountBadge, CountUp, DataGrid, DataTable, DaySeparator, DescriptionList, DiffViewer, EmptyState, EventCalendar, Gantt, GradientText, Heading, HeatmapCalendar, Highlight, Image, InfoRow, KeyboardShortcut, List, ListItem, Mark, Marquee, MessageList, NodeEditor, NotificationDot, PDFViewer, Quote, ReactionBar, ScheduleView, ScrollReveal, SectionHeader, Separator, Snippet, Sparkline, Stat, Status, SwipeActions, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeaderCell, TableRow, Tabs, TabsList, TabsPanel, TabsTab, Text, ThreadView, Tilt, Timeline, TimelineDescription, TimelineItem, TimelineTitle, Tooltip, Tree, TreeGroup, TreeItem, Typewriter, VideoPlayer, avatarVariants, badgeVariants, codeVariants, headingVariants, textVariants };
|
|
5563
|
-
//# sourceMappingURL=chunk-
|
|
5564
|
-
//# sourceMappingURL=chunk-
|
|
5562
|
+
//# sourceMappingURL=chunk-OO7UYVI7.js.map
|
|
5563
|
+
//# sourceMappingURL=chunk-OO7UYVI7.js.map
|