{"version":3,"sources":["../src/confirm-dialog.tsx","../src/components/ui/alert-dialog.tsx","../src/lib/utils.ts","../src/components/ui/button.tsx"],"sourcesContent":["import React, {\n  useState,\n  useCallback,\n  useMemo,\n  useContext,\n  createContext,\n  memo\n} from 'react'\nimport { type ReactNode, type ComponentPropsWithRef } from 'react'\nimport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogOverlay,\n  AlertDialogPortal,\n  AlertDialogTitle,\n  AlertDialogMedia\n} from '@/components/ui/alert-dialog'\n\nexport interface CustomActionsProps {\n  confirm: () => void\n  cancel: () => void\n  config: ConfirmOptions\n  setConfig: ConfigUpdater\n}\n\nexport type ConfigUpdater = (\n  config: ConfirmOptions | ((prev: ConfirmOptions) => ConfirmOptions)\n) => void\n\nexport type LegacyCustomActions = (\n  onConfirm: () => void,\n  onCancel: () => void\n) => ReactNode\n\nexport type EnhancedCustomActions = (props: CustomActionsProps) => ReactNode\n\nexport interface ConfirmOptions {\n  title?: ReactNode\n  description?: ReactNode\n  contentSlot?: ReactNode\n  confirmText?: string\n  cancelText?: string\n  icon?: ReactNode\n  media?: ReactNode\n  customActions?: LegacyCustomActions | EnhancedCustomActions\n  confirmButton?: ComponentPropsWithRef<typeof AlertDialogAction>\n  cancelButton?: ComponentPropsWithRef<typeof AlertDialogCancel> | null\n  alertDialogOverlay?: ComponentPropsWithRef<typeof AlertDialogOverlay>\n  alertDialogContent?: ComponentPropsWithRef<typeof AlertDialogContent>\n  alertDialogHeader?: ComponentPropsWithRef<typeof AlertDialogHeader>\n  alertDialogTitle?: ComponentPropsWithRef<typeof AlertDialogTitle>\n  alertDialogMedia?: ComponentPropsWithRef<typeof AlertDialogMedia>\n  alertDialogDescription?: ComponentPropsWithRef<typeof AlertDialogDescription>\n  alertDialogFooter?: ComponentPropsWithRef<typeof AlertDialogFooter>\n}\n\nexport interface ConfirmDialogState {\n  isOpen: boolean\n  config: ConfirmOptions\n  resolver: ((value: boolean) => void) | null\n}\n\nexport interface ConfirmContextValue {\n  confirm: ConfirmFunction\n  updateConfig: ConfigUpdater\n}\n\nexport interface ConfirmFunction {\n  (options: ConfirmOptions): Promise<boolean>\n  updateConfig?: ConfigUpdater\n}\n\nexport const ConfirmContext = createContext<ConfirmContextValue | undefined>(\n  undefined\n)\n\nconst baseDefaultOptions: ConfirmOptions = {\n  title: '',\n  description: '',\n  confirmText: 'Confirm',\n  cancelText: 'Cancel',\n  confirmButton: {},\n  cancelButton: {},\n  alertDialogContent: {},\n  alertDialogHeader: {},\n  alertDialogTitle: {},\n  alertDialogMedia: {},\n  alertDialogDescription: {},\n  alertDialogFooter: {}\n}\n\nfunction isLegacyCustomActions(\n  fn: LegacyCustomActions | EnhancedCustomActions\n): fn is LegacyCustomActions {\n  return fn.length === 2\n}\n\nconst ConfirmDialogContent: React.FC<{\n  config: ConfirmOptions\n  onConfirm: () => void\n  onCancel: () => void\n  setConfig: (\n    config: ConfirmOptions | ((prev: ConfirmOptions) => ConfirmOptions)\n  ) => void\n}> = memo(({ config, onConfirm, onCancel, setConfig }) => {\n  const {\n    title,\n    description,\n    cancelButton,\n    confirmButton,\n    confirmText,\n    cancelText,\n    icon,\n    media,\n    contentSlot,\n    customActions,\n    alertDialogOverlay,\n    alertDialogContent,\n    alertDialogHeader,\n    alertDialogTitle,\n    alertDialogMedia,\n    alertDialogDescription,\n    alertDialogFooter\n  } = config\n\n  const renderActions = () => {\n    if (!customActions) {\n      return (\n        <>\n          {cancelButton !== null && (\n            <AlertDialogCancel onClick={onCancel} {...cancelButton}>\n              {cancelText}\n            </AlertDialogCancel>\n          )}\n          <AlertDialogAction onClick={onConfirm} {...confirmButton}>\n            {confirmText}\n          </AlertDialogAction>\n        </>\n      )\n    }\n\n    if (isLegacyCustomActions(customActions)) {\n      return customActions(onConfirm, onCancel)\n    }\n\n    return customActions({\n      confirm: onConfirm,\n      cancel: onCancel,\n      config,\n      setConfig\n    })\n  }\n\n  const renderTitle = () => {\n    if (!title && !icon) {\n      return null\n    }\n\n    return (\n      <AlertDialogTitle {...alertDialogTitle}>\n        {icon}\n        {title}\n      </AlertDialogTitle>\n    )\n  }\n\n  return (\n    <AlertDialogPortal>\n      <AlertDialogOverlay {...alertDialogOverlay} />\n      <AlertDialogContent {...alertDialogContent}>\n        <AlertDialogHeader {...alertDialogHeader}>\n          {media && (\n            <AlertDialogMedia {...alertDialogMedia}>{media}</AlertDialogMedia>\n          )}\n          {renderTitle()}\n          {description && (\n            <AlertDialogDescription {...alertDialogDescription}>\n              {description}\n            </AlertDialogDescription>\n          )}\n          {contentSlot}\n        </AlertDialogHeader>\n        <AlertDialogFooter {...alertDialogFooter}>\n          {renderActions()}\n        </AlertDialogFooter>\n      </AlertDialogContent>\n    </AlertDialogPortal>\n  )\n})\n\nConfirmDialogContent.displayName = 'ConfirmDialogContent'\n\nconst ConfirmDialog: React.FC<{\n  isOpen: boolean\n  onOpenChange: (isOpen: boolean) => void\n  config: ConfirmOptions\n  onConfirm: () => void\n  onCancel: () => void\n  setConfig: (\n    config: ConfirmOptions | ((prev: ConfirmOptions) => ConfirmOptions)\n  ) => void\n}> = memo(\n  ({ isOpen, onOpenChange, config, onConfirm, onCancel, setConfig }) => (\n    <AlertDialog open={isOpen} onOpenChange={onOpenChange}>\n      <ConfirmDialogContent\n        config={config}\n        onConfirm={onConfirm}\n        onCancel={onCancel}\n        setConfig={setConfig}\n      />\n    </AlertDialog>\n  )\n)\n\nConfirmDialog.displayName = 'ConfirmDialog'\n\nexport const ConfirmDialogProvider: React.FC<{\n  defaultOptions?: ConfirmOptions\n  children: React.ReactNode\n}> = ({ defaultOptions = {}, children }) => {\n  const [dialogState, setDialogState] = useState<ConfirmDialogState>({\n    isOpen: false,\n    config: baseDefaultOptions,\n    resolver: null\n  })\n\n  const mergedDefaultOptions = useMemo(\n    () => ({\n      ...baseDefaultOptions,\n      ...defaultOptions\n    }),\n    [defaultOptions]\n  )\n\n  const updateConfig = useCallback(\n    (\n      newConfig: ConfirmOptions | ((prev: ConfirmOptions) => ConfirmOptions)\n    ) => {\n      setDialogState((prev) => ({\n        ...prev,\n        config:\n          typeof newConfig === 'function'\n            ? newConfig(prev.config)\n            : { ...prev.config, ...newConfig }\n      }))\n    },\n    []\n  )\n\n  const confirm = useCallback(\n    (options: ConfirmOptions) => {\n      setDialogState((prev) => ({\n        isOpen: true,\n        config: { ...mergedDefaultOptions, ...options },\n        resolver: prev.resolver\n      }))\n      return new Promise<boolean>((resolve) => {\n        setDialogState((prev) => ({\n          ...prev,\n          resolver: resolve\n        }))\n      })\n    },\n    [mergedDefaultOptions]\n  )\n\n  const handleConfirm = useCallback(() => {\n    setDialogState((prev) => {\n      if (prev.resolver) {\n        prev.resolver(true)\n      }\n      return {\n        ...prev,\n        isOpen: false,\n        resolver: null\n      }\n    })\n  }, [])\n\n  const handleCancel = useCallback(() => {\n    setDialogState((prev) => {\n      if (prev.resolver) {\n        prev.resolver(false)\n      }\n      return {\n        ...prev,\n        isOpen: false,\n        resolver: null\n      }\n    })\n  }, [])\n\n  const handleOpenChange = useCallback(\n    (open: boolean) => {\n      if (!open) {\n        handleCancel()\n      }\n    },\n    [handleCancel]\n  )\n\n  const contextValue = useMemo(\n    () => ({\n      confirm,\n      updateConfig\n    }),\n    [confirm, updateConfig]\n  )\n\n  return (\n    <ConfirmContext.Provider value={contextValue}>\n      {children}\n      <ConfirmDialog\n        isOpen={dialogState.isOpen}\n        onOpenChange={handleOpenChange}\n        config={dialogState.config}\n        onConfirm={handleConfirm}\n        onCancel={handleCancel}\n        setConfig={updateConfig}\n      />\n    </ConfirmContext.Provider>\n  )\n}\n\nexport const useConfirm = () => {\n  const context = useContext(ConfirmContext)\n  if (!context) {\n    throw new Error('useConfirm must be used within a ConfirmDialogProvider')\n  }\n\n  const { confirm, updateConfig } = context\n\n  const enhancedConfirm = confirm\n  enhancedConfirm.updateConfig = updateConfig\n\n  return enhancedConfirm as ConfirmFunction & {\n    updateConfig: ConfirmContextValue['updateConfig']\n  }\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog'\nimport { cn } from '@/lib/utils'\nimport { Button } from '@/components/ui/button'\n\nfunction AlertDialog({\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n  return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n  return (\n    <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n  )\n}\n\nfunction AlertDialogPortal({\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n  return (\n    <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n  )\n}\n\nfunction AlertDialogOverlay({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\n  return (\n    <AlertDialogPrimitive.Overlay\n      data-slot=\"alert-dialog-overlay\"\n      className={cn(\n        'data-[state=open]:animate-fade-in data-[state=closed]:animate-fade-out bg-black/10 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 z-50',\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogContent({\n  className,\n  size = 'default',\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content> & {\n  size?: 'default' | 'sm'\n}) {\n  return (\n    <AlertDialogPrimitive.Content\n      data-slot=\"alert-dialog-content\"\n      data-size={size}\n      className={cn(\n        'data-[state=open]:animate-scale-in data-[state=closed]:animate-scale-out bg-background ring-foreground/10 gap-4 rounded-xl p-4 ring-1 data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 outline-none',\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogHeader({\n  className,\n  ...props\n}: React.ComponentProps<'div'>) {\n  return (\n    <div\n      data-slot=\"alert-dialog-header\"\n      className={cn(\n        'grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]',\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogFooter({\n  className,\n  ...props\n}: React.ComponentProps<'div'>) {\n  return (\n    <div\n      data-slot=\"alert-dialog-footer\"\n      className={cn(\n        'bg-muted/50 -mx-4 -mb-4 rounded-b-xl border-t p-4 flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end',\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogMedia({\n  className,\n  ...props\n}: React.ComponentProps<'div'>) {\n  return (\n    <div\n      data-slot=\"alert-dialog-media\"\n      className={cn(\n        \"bg-muted mb-2 inline-flex size-10 items-center justify-center rounded-md sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n  return (\n    <AlertDialogPrimitive.Title\n      data-slot=\"alert-dialog-title\"\n      className={cn(\n        'text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2',\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n  return (\n    <AlertDialogPrimitive.Description\n      data-slot=\"alert-dialog-description\"\n      className={cn(\n        'text-muted-foreground *:[a]:hover:text-foreground text-sm text-balance md:text-pretty *:[a]:underline *:[a]:underline-offset-3',\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogAction({\n  className,\n  variant = 'default',\n  size = 'default',\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action> &\n  Pick<React.ComponentProps<typeof Button>, 'variant' | 'size'>) {\n  return (\n    <Button variant={variant} size={size} asChild>\n      <AlertDialogPrimitive.Action\n        data-slot=\"alert-dialog-action\"\n        className={cn(className)}\n        {...props}\n      />\n    </Button>\n  )\n}\n\nfunction AlertDialogCancel({\n  className,\n  variant = 'outline',\n  size = 'default',\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel> &\n  Pick<React.ComponentProps<typeof Button>, 'variant' | 'size'>) {\n  return (\n    <Button variant={variant} size={size} asChild>\n      <AlertDialogPrimitive.Cancel\n        data-slot=\"alert-dialog-cancel\"\n        className={cn(className)}\n        {...props}\n      />\n    </Button>\n  )\n}\n\nexport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogMedia,\n  AlertDialogOverlay,\n  AlertDialogPortal,\n  AlertDialogTitle,\n  AlertDialogTrigger\n}\n","import { type ClassValue, clsx } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n","import * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { Slot } from '@radix-ui/react-slot'\n\nimport { cn } from '@/lib/utils'\n\nconst buttonVariants = cva(\n  \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-lg border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-3 aria-invalid:ring-3 [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none\",\n  {\n    variants: {\n      variant: {\n        default: 'bg-primary text-primary-foreground [a]:hover:bg-primary/80',\n        outline:\n          'border-border bg-background hover:bg-muted hover:text-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 aria-expanded:bg-muted aria-expanded:text-foreground',\n        secondary:\n          'bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground',\n        ghost:\n          'hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground',\n        destructive:\n          'bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30',\n        link: 'text-primary underline-offset-4 hover:underline'\n      },\n      size: {\n        default:\n          'h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2',\n        xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n        sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n        lg: 'h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3',\n        icon: 'size-8',\n        'icon-xs':\n          \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\n        'icon-sm':\n          'size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg',\n        'icon-lg': 'size-9'\n      }\n    },\n    defaultVariants: {\n      variant: 'default',\n      size: 'default'\n    }\n  }\n)\n\nfunction Button({\n  className,\n  variant = 'default',\n  size = 'default',\n  asChild = false,\n  ...props\n}: React.ComponentProps<'button'> &\n  VariantProps<typeof buttonVariants> & {\n    asChild?: boolean\n  }) {\n  const Comp = asChild ? Slot : 'button'\n\n  return (\n    <Comp\n      data-slot=\"button\"\n      data-variant={variant}\n      data-size={size}\n      className={cn(buttonVariants({ variant, size, className }))}\n      {...props}\n    />\n  )\n}\n\nexport { Button, buttonVariants }\n"],"mappings":"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","names":["useState","useCallback","useMemo","useContext","createContext","memo","AlertDialogPrimitive","clsx","twMerge","cn","inputs","cva","Slot","jsx","buttonVariants","cva","Button","className","variant","size","asChild","props","Slot","cn","jsx","AlertDialog","props","AlertDialogPortal","props","jsx","AlertDialogOverlay","className","cn","AlertDialogContent","size","AlertDialogHeader","AlertDialogFooter","AlertDialogMedia","AlertDialogTitle","AlertDialogDescription","AlertDialogAction","variant","Button","AlertDialogCancel","Fragment","jsx","jsxs","ConfirmContext","createContext","baseDefaultOptions","isLegacyCustomActions","fn","ConfirmDialogContent","memo","config","onConfirm","onCancel","setConfig","title","description","cancelButton","confirmButton","confirmText","cancelText","icon","media","contentSlot","customActions","alertDialogOverlay","alertDialogContent","alertDialogHeader","alertDialogTitle","alertDialogMedia","alertDialogDescription","alertDialogFooter","renderActions","AlertDialogCancel","AlertDialogAction","renderTitle","AlertDialogTitle","AlertDialogPortal","AlertDialogOverlay","AlertDialogContent","AlertDialogHeader","AlertDialogMedia","AlertDialogDescription","AlertDialogFooter","ConfirmDialog","isOpen","onOpenChange","AlertDialog","ConfirmDialogProvider","defaultOptions","children","dialogState","setDialogState","useState","mergedDefaultOptions","useMemo","updateConfig","useCallback","newConfig","prev","confirm","options","resolve","handleConfirm","handleCancel","handleOpenChange","open","contextValue","useConfirm","context","useContext","enhancedConfirm"]}