@humain/ui 2.2.4 → 2.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/dist/index11.js +4 -4
  2. package/dist/index11.js.map +1 -1
  3. package/dist/index110.js +4 -4
  4. package/dist/index110.js.map +1 -1
  5. package/dist/index134.js +4 -4
  6. package/dist/index134.js.map +1 -1
  7. package/dist/index135.js +2 -2
  8. package/dist/index135.js.map +1 -1
  9. package/dist/index151.js +3 -3
  10. package/dist/index151.js.map +1 -1
  11. package/dist/index152.js +1 -1
  12. package/dist/index152.js.map +1 -1
  13. package/dist/index155.js +1 -1
  14. package/dist/index155.js.map +1 -1
  15. package/dist/index188.js +4 -4
  16. package/dist/index188.js.map +1 -1
  17. package/dist/index201.js +1 -1
  18. package/dist/index201.js.map +1 -1
  19. package/dist/index228.js +1 -1
  20. package/dist/index228.js.map +1 -1
  21. package/dist/index24.js +1 -1
  22. package/dist/index24.js.map +1 -1
  23. package/dist/index25.js +4 -4
  24. package/dist/index25.js.map +1 -1
  25. package/dist/index39.js +2 -2
  26. package/dist/index39.js.map +1 -1
  27. package/dist/index5.js +8 -8
  28. package/dist/index5.js.map +1 -1
  29. package/dist/styles.css +1 -1
  30. package/dist/wc/AIScrollButton.js +8 -8
  31. package/dist/wc/AIScrollButton.js.map +1 -1
  32. package/dist/wc/Badge.js +9 -9
  33. package/dist/wc/Badge.js.map +1 -1
  34. package/dist/wc/Checkbox.js +22 -22
  35. package/dist/wc/Checkbox.js.map +1 -1
  36. package/dist/wc/Pagination.js +4 -4
  37. package/dist/wc/Pagination.js.map +1 -1
  38. package/dist/wc/Switch.js +23 -23
  39. package/dist/wc/Switch.js.map +1 -1
  40. package/dist/wc/Tabs.js +110 -110
  41. package/dist/wc/Tabs.js.map +1 -1
  42. package/dist/wc/Tooltip.js +28 -28
  43. package/dist/wc/Tooltip.js.map +1 -1
  44. package/dist/wc/button.js +33 -33
  45. package/dist/wc/button.js.map +1 -1
  46. package/dist/wc/hf-alert.js +10 -10
  47. package/dist/wc/hf-alert.js.map +1 -1
  48. package/dist/wc/hf-nav-account-menu.js +8 -8
  49. package/dist/wc/hf-nav-account-menu.js.map +1 -1
  50. package/dist/wc/hf-steps.js +8 -8
  51. package/dist/wc/hf-steps.js.map +1 -1
  52. package/dist/wc/markdown-renderer.js +4 -4
  53. package/dist/wc/markdown-renderer.js.map +1 -1
  54. package/dist/wc/selection-group.js +6 -6
  55. package/dist/wc/selection-group.js.map +1 -1
  56. package/dist/wc-react/AIScrollButton.js +18 -18
  57. package/dist/wc-react/AIScrollButton.js.map +1 -1
  58. package/dist/wc-react/Badge.js +16 -16
  59. package/dist/wc-react/Badge.js.map +1 -1
  60. package/dist/wc-react/Checkbox.js +14 -14
  61. package/dist/wc-react/Checkbox.js.map +1 -1
  62. package/dist/wc-react/Pagination.js +130 -130
  63. package/dist/wc-react/Pagination.js.map +1 -1
  64. package/dist/wc-react/Switch.js +2 -2
  65. package/dist/wc-react/Switch.js.map +1 -1
  66. package/dist/wc-react/Tabs.js +38 -38
  67. package/dist/wc-react/Tabs.js.map +1 -1
  68. package/dist/wc-react/Tooltip.js +22 -22
  69. package/dist/wc-react/Tooltip.js.map +1 -1
  70. package/dist/wc-react/button.js +8 -8
  71. package/dist/wc-react/button.js.map +1 -1
  72. package/dist/wc-react/hf-alert.js +28 -28
  73. package/dist/wc-react/hf-alert.js.map +1 -1
  74. package/dist/wc-react/hf-nav-account-menu.js +7 -7
  75. package/dist/wc-react/hf-nav-account-menu.js.map +1 -1
  76. package/dist/wc-react/hf-steps.js +16 -16
  77. package/dist/wc-react/hf-steps.js.map +1 -1
  78. package/dist/wc-react/markdown-renderer.js +4 -4
  79. package/dist/wc-react/markdown-renderer.js.map +1 -1
  80. package/dist/wc-react/selection-group.js +1 -1
  81. package/dist/wc-react/selection-group.js.map +1 -1
  82. package/package.json +1 -1
  83. package/skills/humain-ui/SKILL.md +1 -1
  84. package/skills/humain-ui/references/foundations.md +1 -1
  85. package/skills/humain-ui-wc/SKILL.md +1 -1
  86. package/skills/humain-ui-wc.skill +0 -0
  87. package/skills/humain-ui.skill +0 -0
  88. package/src/tokens.css +14 -6
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.js","names":[],"sources":["../../src/components/organisms/overlays/Tooltip/Tooltip.tsx"],"sourcesContent":["'use client';\n\nimport { Tooltip as TooltipPrimitive } from '@base-ui/react/tooltip';\nimport { cva } from 'class-variance-authority';\nimport * as React from 'react';\nimport { cn, extractText } from '@/lib/utils';\n\nconst tooltipVariants = cva(\n 'data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 motion-reduce:animate-none z-50 w-fit max-w-xs origin-(--transform-origin) px-3 py-1.5 text-xs shadow-[var(--shadow-tooltip)]',\n {\n variants: {\n variant: {\n primary: 'bg-foreground text-background',\n secondary:\n 'bg-secondary text-secondary-foreground border border-border shadow-sm',\n info: 'bg-info text-primary-foreground',\n success: 'bg-success text-primary-foreground',\n warning: 'bg-warning text-primary-foreground',\n destructive: 'bg-destructive text-primary-foreground',\n },\n shape: {\n default: 'rounded-md',\n rounded: 'rounded-full',\n },\n },\n defaultVariants: {\n variant: 'primary',\n shape: 'default',\n },\n },\n);\n\nconst arrowVariants = cva(\n 'size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] z-50 data-[side=bottom]:top-1 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5',\n {\n variants: {\n variant: {\n primary: 'bg-foreground fill-foreground',\n secondary: 'bg-secondary fill-secondary',\n info: 'bg-info fill-info',\n success: 'bg-success fill-success',\n warning: 'bg-warning fill-warning',\n destructive: 'bg-destructive fill-destructive',\n },\n },\n defaultVariants: {\n variant: 'primary',\n },\n },\n);\n\ntype TooltipVariant =\n | 'primary'\n | 'secondary'\n | 'info'\n | 'success'\n | 'warning'\n | 'destructive';\ntype TooltipShape = 'default' | 'rounded';\ntype TooltipPosition = 'top' | 'bottom' | 'left' | 'right' | 'none';\n\n// =============================================================================\n// Base Tooltip Sub-components\n// =============================================================================\n\nfunction TooltipProvider({\n delay = 0,\n ...props\n}: TooltipPrimitive.Provider.Props) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delay={delay}\n {...props}\n />\n );\n}\n\nfunction TooltipRoot(props: TooltipPrimitive.Root.Props) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />;\n}\n\nconst TooltipTrigger = React.forwardRef<\n HTMLButtonElement,\n TooltipPrimitive.Trigger.Props\n>(function TooltipTrigger(props, ref) {\n return (\n <TooltipPrimitive.Trigger\n ref={ref}\n data-slot=\"tooltip-trigger\"\n {...props}\n />\n );\n});\n\ninterface TooltipPopupProps\n extends TooltipPrimitive.Popup.Props,\n Pick<\n TooltipPrimitive.Positioner.Props,\n 'align' | 'alignOffset' | 'side' | 'sideOffset'\n > {\n variant?: TooltipVariant;\n shape?: TooltipShape;\n /** Optional Base UI portal container for the tooltip popup. */\n container?: TooltipPrimitive.Portal.Props['container'];\n /** When true or position is 'none', hides the arrow */\n hideArrow?: boolean;\n}\n\nfunction TooltipPopup({\n className,\n side = 'top',\n sideOffset = 4,\n align = 'center',\n alignOffset = 0,\n variant = 'primary',\n shape = 'default',\n hideArrow = false,\n container,\n children,\n ...props\n}: TooltipPopupProps) {\n return (\n <TooltipPrimitive.Portal container={container}>\n <TooltipPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className=\"isolate z-50\"\n >\n <TooltipPrimitive.Popup\n data-slot=\"tooltip-popup\"\n className={cn(tooltipVariants({ variant, shape }), className)}\n {...props}\n >\n {children}\n {!hideArrow && (\n <TooltipPrimitive.Arrow className={arrowVariants({ variant })} />\n )}\n </TooltipPrimitive.Popup>\n </TooltipPrimitive.Positioner>\n </TooltipPrimitive.Portal>\n );\n}\n\n// =============================================================================\n// Rich Content Sub-components\n// =============================================================================\n\nfunction TooltipIcon({\n children,\n className,\n}: {\n children: React.ReactNode;\n className?: string;\n}) {\n return (\n <span\n data-slot=\"tooltip-icon\"\n className={cn('shrink-0 [&>svg]:size-4', className)}\n >\n {children}\n </span>\n );\n}\nTooltipIcon.displayName = 'Tooltip.Icon';\n\nfunction TooltipAvatar({\n src,\n alt,\n children,\n className,\n}: {\n src?: string;\n alt: string;\n children?: React.ReactNode;\n className?: string;\n}) {\n if (children) {\n return (\n <span data-slot=\"tooltip-avatar\" className={cn('shrink-0', className)}>\n {children}\n </span>\n );\n }\n return (\n <img\n data-slot=\"tooltip-avatar\"\n src={src}\n alt={alt}\n className={cn('size-4 shrink-0 rounded-full object-cover', className)}\n />\n );\n}\nTooltipAvatar.displayName = 'Tooltip.Avatar';\n\nfunction TooltipContent({\n children,\n className,\n}: {\n children: React.ReactNode;\n className?: string;\n}) {\n return (\n <div\n data-slot=\"tooltip-content\"\n className={cn('flex flex-col gap-0.5', className)}\n >\n {children}\n </div>\n );\n}\nTooltipContent.displayName = 'Tooltip.Content';\n\nfunction TooltipTitle({\n children,\n className,\n}: {\n children: React.ReactNode;\n className?: string;\n}) {\n return (\n <span\n data-slot=\"tooltip-title\"\n className={cn('text-xs font-semibold leading-4', className)}\n >\n {children}\n </span>\n );\n}\nTooltipTitle.displayName = 'Tooltip.Title';\n\ninterface TooltipSubtitleProps {\n children: React.ReactNode;\n className?: string;\n /** Variant affects subtitle opacity */\n variant?: TooltipVariant;\n}\n\nfunction TooltipSubtitle({\n children,\n className,\n variant = 'primary',\n}: TooltipSubtitleProps) {\n const subtitleClass =\n variant === 'secondary'\n ? 'text-muted-foreground'\n : 'text-inherit opacity-70';\n\n return (\n <span\n data-slot=\"tooltip-subtitle\"\n className={cn('text-xs font-medium leading-4', subtitleClass, className)}\n >\n {children}\n </span>\n );\n}\nTooltipSubtitle.displayName = 'Tooltip.Subtitle';\n\nfunction TooltipBadge({\n children,\n className,\n}: {\n children: React.ReactNode;\n className?: string;\n}) {\n return (\n <span data-slot=\"tooltip-badge\" className={cn('shrink-0', className)}>\n {children}\n </span>\n );\n}\nTooltipBadge.displayName = 'Tooltip.Badge';\n\ninterface TooltipImageProps {\n src: string;\n alt: string;\n layout?: 'vertical' | 'horizontal';\n className?: string;\n}\n\nfunction TooltipImage({\n src,\n alt,\n layout = 'vertical',\n className,\n}: TooltipImageProps) {\n return (\n <img\n data-slot=\"tooltip-image\"\n src={src}\n alt={alt}\n className={cn(\n 'rounded-md object-cover',\n layout === 'vertical' ? 'w-full h-20' : 'w-20 h-14 shrink-0',\n className,\n )}\n />\n );\n}\nTooltipImage.displayName = 'Tooltip.Image';\n\n// =============================================================================\n// High-level Tooltip Wrapper Component\n// =============================================================================\n\ninterface TooltipProps {\n /** The element that triggers the tooltip (required) */\n trigger: React.ReactElement;\n /** The main tooltip text */\n content: React.ReactNode;\n /** Style variant */\n variant?: TooltipVariant;\n /** Shape variant */\n shape?: TooltipShape;\n /** Arrow position - 'none' hides the arrow */\n position?: TooltipPosition;\n /** Alignment of tooltip relative to trigger */\n align?: 'start' | 'center' | 'end';\n /** Delay in ms before showing tooltip */\n delayDuration?: number;\n /** Distance from trigger */\n sideOffset?: number;\n /** Optional icon before content */\n icon?: React.ReactNode;\n /** Optional avatar - string for src or ReactNode for custom */\n avatar?: string | React.ReactNode;\n /** Optional supporting text */\n subtitle?: React.ReactNode;\n /** Optional badge element */\n badge?: React.ReactNode;\n /** Optional image */\n image?: string;\n /** Image layout - auto-detected or override */\n imageLayout?: 'vertical' | 'horizontal';\n /** Optional Base UI portal container. Takes precedence over the trigger owner document. */\n container?: TooltipPrimitive.Portal.Props['container'];\n /** Override content with custom children */\n children?: React.ReactNode;\n}\n\ninterface TooltipRenderedContentProps {\n children?: React.ReactNode;\n content: React.ReactNode;\n variant: TooltipVariant;\n icon?: React.ReactNode;\n avatar?: string | React.ReactNode;\n subtitle?: React.ReactNode;\n badge?: React.ReactNode;\n image?: string;\n imageLayout: 'vertical' | 'horizontal';\n hasRichContent: React.ReactNode;\n contentAlt: string;\n}\n\nfunction TooltipRenderedContent({\n children,\n content,\n variant,\n icon,\n avatar,\n subtitle,\n badge,\n image,\n imageLayout,\n hasRichContent,\n contentAlt,\n}: TooltipRenderedContentProps) {\n if (children) return children;\n\n const subtitleElement = subtitle && (\n <TooltipSubtitle variant={variant}>{subtitle}</TooltipSubtitle>\n );\n\n if (image) {\n return (\n <div\n className={cn(\n 'flex gap-1.5 delight-tooltip-stagger',\n imageLayout === 'vertical' ? 'flex-col' : 'flex-row items-center',\n )}\n >\n <TooltipImage\n src={image}\n alt={contentAlt}\n layout={imageLayout}\n className=\"delight-tooltip-image\"\n />\n <TooltipContent>\n <TooltipTitle>{content}</TooltipTitle>\n {subtitleElement}\n </TooltipContent>\n </div>\n );\n }\n\n if (!hasRichContent) return content;\n\n return (\n <div className=\"flex items-center gap-1.5 delight-tooltip-stagger\">\n {avatar &&\n (typeof avatar === 'string' ? (\n <TooltipAvatar src={avatar} alt={contentAlt} />\n ) : (\n <TooltipAvatar alt={contentAlt}>{avatar}</TooltipAvatar>\n ))}\n {icon && <TooltipIcon>{icon}</TooltipIcon>}\n <TooltipContent>\n <TooltipTitle>{content}</TooltipTitle>\n {subtitleElement}\n </TooltipContent>\n {badge && <TooltipBadge>{badge}</TooltipBadge>}\n </div>\n );\n}\n\nconst Tooltip = ({\n trigger,\n content,\n variant = 'primary',\n shape = 'default',\n position = 'top',\n align = 'center',\n delayDuration,\n sideOffset = 6,\n icon,\n avatar,\n subtitle,\n badge,\n image,\n imageLayout,\n container,\n children,\n}: TooltipProps) => {\n const [triggerElement, setTriggerElement] =\n React.useState<HTMLElement | null>(null);\n const [triggerPortalContainer, setTriggerPortalContainer] =\n React.useState<HTMLElement | null>(null);\n const setTriggerRef = React.useCallback((element: HTMLElement | null) => {\n setTriggerElement((currentElement) =>\n currentElement === element ? currentElement : element,\n );\n }, []);\n\n React.useEffect(() => {\n const nextContainer = triggerElement?.ownerDocument.body ?? null;\n setTriggerPortalContainer((currentContainer) =>\n currentContainer === nextContainer ? currentContainer : nextContainer,\n );\n }, [triggerElement]);\n\n // Determine if we have rich content\n const hasRichContent = icon || avatar || subtitle || badge || image;\n\n const resolvedImageLayout = imageLayout ?? 'vertical';\n const contentAlt = extractText(content);\n const portalContainer =\n container === undefined ? triggerPortalContainer : container;\n\n return (\n <TooltipProvider delay={delayDuration}>\n <TooltipRoot>\n <TooltipTrigger ref={setTriggerRef} render={trigger} />\n <TooltipPopup\n container={portalContainer}\n side={position === 'none' ? 'top' : position}\n align={align}\n sideOffset={sideOffset}\n variant={variant}\n shape={shape}\n hideArrow={position === 'none'}\n className={cn(hasRichContent && 'p-2')}\n >\n <TooltipRenderedContent\n content={content}\n variant={variant}\n icon={icon}\n avatar={avatar}\n subtitle={subtitle}\n badge={badge}\n image={image}\n imageLayout={resolvedImageLayout}\n hasRichContent={hasRichContent}\n contentAlt={contentAlt}\n >\n {children}\n </TooltipRenderedContent>\n </TooltipPopup>\n </TooltipRoot>\n </TooltipProvider>\n );\n};\n\nTooltip.displayName = 'Tooltip';\nTooltipProvider.displayName = 'Tooltip.Provider';\nTooltipRoot.displayName = 'Tooltip.Root';\nTooltipTrigger.displayName = 'Tooltip.Trigger';\nTooltipPopup.displayName = 'Tooltip.Popup';\n\n/**\n * Tooltip component with dot notation for compound parts.\n *\n * @example\n * ```tsx\n * // Simple usage (recommended for most cases)\n * <Tooltip trigger={<Button>Hover me</Button>} content=\"Tooltip text\" />\n *\n * // With variants\n * <Tooltip trigger={<Button>Save</Button>} content=\"Saved!\" variant=\"success\" shape=\"rounded\" />\n *\n * // With rich content\n * <Tooltip trigger={<Button>Info</Button>} content=\"Title\" icon={<InfoIcon />} subtitle=\"Description\" />\n *\n * // Advanced usage with dot notation\n * <Tooltip.Root>\n * <Tooltip.Trigger render={<Button>Hover me</Button>} />\n * <Tooltip.Popup variant=\"info\">\n * <Tooltip.Icon><InfoIcon /></Tooltip.Icon>\n * <Tooltip.Content>\n * <Tooltip.Title>Title</Tooltip.Title>\n * <Tooltip.Subtitle>Description</Tooltip.Subtitle>\n * </Tooltip.Content>\n * </Tooltip.Popup>\n * </Tooltip.Root>\n * ```\n */\nconst TooltipCompound = Object.assign(Tooltip, {\n Root: TooltipRoot,\n Provider: TooltipProvider,\n Trigger: TooltipTrigger,\n Popup: TooltipPopup,\n Icon: TooltipIcon,\n Avatar: TooltipAvatar,\n Content: TooltipContent,\n Title: TooltipTitle,\n Subtitle: TooltipSubtitle,\n Badge: TooltipBadge,\n Image: TooltipImage,\n});\n\nexport type { TooltipPosition, TooltipProps, TooltipShape, TooltipVariant };\nexport {\n arrowVariants,\n TooltipAvatar,\n TooltipBadge,\n TooltipCompound as Tooltip,\n TooltipContent,\n TooltipIcon,\n TooltipImage,\n TooltipPopup,\n TooltipProvider,\n TooltipRoot,\n TooltipSubtitle,\n TooltipTitle,\n TooltipTrigger,\n tooltipVariants,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"Tooltip.js","names":[],"sources":["../../src/components/organisms/overlays/Tooltip/Tooltip.tsx"],"sourcesContent":["'use client';\n\nimport { Tooltip as TooltipPrimitive } from '@base-ui/react/tooltip';\nimport { cva } from 'class-variance-authority';\nimport * as React from 'react';\nimport { cn, extractText } from '@/lib/utils';\n\nconst tooltipVariants = cva(\n 'data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 motion-reduce:animate-none z-50 w-fit max-w-xs origin-(--transform-origin) px-3 py-1.5 text-xs shadow-[var(--shadow-tooltip)]',\n {\n variants: {\n variant: {\n primary: 'bg-foreground text-background',\n secondary:\n 'bg-secondary text-secondary-foreground border border-border shadow-sm',\n info: 'bg-info text-info-foreground',\n success: 'bg-success text-success-foreground',\n warning: 'bg-warning text-warning-foreground',\n destructive: 'bg-destructive text-destructive-foreground',\n },\n shape: {\n default: 'rounded-md',\n rounded: 'rounded-full',\n },\n },\n defaultVariants: {\n variant: 'primary',\n shape: 'default',\n },\n },\n);\n\nconst arrowVariants = cva(\n 'size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] z-50 data-[side=bottom]:top-1 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5',\n {\n variants: {\n variant: {\n primary: 'bg-foreground fill-foreground',\n secondary: 'bg-secondary fill-secondary',\n info: 'bg-info fill-info',\n success: 'bg-success fill-success',\n warning: 'bg-warning fill-warning',\n destructive: 'bg-destructive fill-destructive',\n },\n },\n defaultVariants: {\n variant: 'primary',\n },\n },\n);\n\ntype TooltipVariant =\n | 'primary'\n | 'secondary'\n | 'info'\n | 'success'\n | 'warning'\n | 'destructive';\ntype TooltipShape = 'default' | 'rounded';\ntype TooltipPosition = 'top' | 'bottom' | 'left' | 'right' | 'none';\n\n// =============================================================================\n// Base Tooltip Sub-components\n// =============================================================================\n\nfunction TooltipProvider({\n delay = 0,\n ...props\n}: TooltipPrimitive.Provider.Props) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delay={delay}\n {...props}\n />\n );\n}\n\nfunction TooltipRoot(props: TooltipPrimitive.Root.Props) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />;\n}\n\nconst TooltipTrigger = React.forwardRef<\n HTMLButtonElement,\n TooltipPrimitive.Trigger.Props\n>(function TooltipTrigger(props, ref) {\n return (\n <TooltipPrimitive.Trigger\n ref={ref}\n data-slot=\"tooltip-trigger\"\n {...props}\n />\n );\n});\n\ninterface TooltipPopupProps\n extends TooltipPrimitive.Popup.Props,\n Pick<\n TooltipPrimitive.Positioner.Props,\n 'align' | 'alignOffset' | 'side' | 'sideOffset'\n > {\n variant?: TooltipVariant;\n shape?: TooltipShape;\n /** Optional Base UI portal container for the tooltip popup. */\n container?: TooltipPrimitive.Portal.Props['container'];\n /** When true or position is 'none', hides the arrow */\n hideArrow?: boolean;\n}\n\nfunction TooltipPopup({\n className,\n side = 'top',\n sideOffset = 4,\n align = 'center',\n alignOffset = 0,\n variant = 'primary',\n shape = 'default',\n hideArrow = false,\n container,\n children,\n ...props\n}: TooltipPopupProps) {\n return (\n <TooltipPrimitive.Portal container={container}>\n <TooltipPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className=\"isolate z-50\"\n >\n <TooltipPrimitive.Popup\n data-slot=\"tooltip-popup\"\n className={cn(tooltipVariants({ variant, shape }), className)}\n {...props}\n >\n {children}\n {!hideArrow && (\n <TooltipPrimitive.Arrow className={arrowVariants({ variant })} />\n )}\n </TooltipPrimitive.Popup>\n </TooltipPrimitive.Positioner>\n </TooltipPrimitive.Portal>\n );\n}\n\n// =============================================================================\n// Rich Content Sub-components\n// =============================================================================\n\nfunction TooltipIcon({\n children,\n className,\n}: {\n children: React.ReactNode;\n className?: string;\n}) {\n return (\n <span\n data-slot=\"tooltip-icon\"\n className={cn('shrink-0 [&>svg]:size-4', className)}\n >\n {children}\n </span>\n );\n}\nTooltipIcon.displayName = 'Tooltip.Icon';\n\nfunction TooltipAvatar({\n src,\n alt,\n children,\n className,\n}: {\n src?: string;\n alt: string;\n children?: React.ReactNode;\n className?: string;\n}) {\n if (children) {\n return (\n <span data-slot=\"tooltip-avatar\" className={cn('shrink-0', className)}>\n {children}\n </span>\n );\n }\n return (\n <img\n data-slot=\"tooltip-avatar\"\n src={src}\n alt={alt}\n className={cn('size-4 shrink-0 rounded-full object-cover', className)}\n />\n );\n}\nTooltipAvatar.displayName = 'Tooltip.Avatar';\n\nfunction TooltipContent({\n children,\n className,\n}: {\n children: React.ReactNode;\n className?: string;\n}) {\n return (\n <div\n data-slot=\"tooltip-content\"\n className={cn('flex flex-col gap-0.5', className)}\n >\n {children}\n </div>\n );\n}\nTooltipContent.displayName = 'Tooltip.Content';\n\nfunction TooltipTitle({\n children,\n className,\n}: {\n children: React.ReactNode;\n className?: string;\n}) {\n return (\n <span\n data-slot=\"tooltip-title\"\n className={cn('text-xs font-semibold leading-4', className)}\n >\n {children}\n </span>\n );\n}\nTooltipTitle.displayName = 'Tooltip.Title';\n\ninterface TooltipSubtitleProps {\n children: React.ReactNode;\n className?: string;\n /** Variant affects subtitle opacity */\n variant?: TooltipVariant;\n}\n\nfunction TooltipSubtitle({\n children,\n className,\n variant = 'primary',\n}: TooltipSubtitleProps) {\n const subtitleClass =\n variant === 'secondary'\n ? 'text-muted-foreground'\n : 'text-inherit opacity-70';\n\n return (\n <span\n data-slot=\"tooltip-subtitle\"\n className={cn('text-xs font-medium leading-4', subtitleClass, className)}\n >\n {children}\n </span>\n );\n}\nTooltipSubtitle.displayName = 'Tooltip.Subtitle';\n\nfunction TooltipBadge({\n children,\n className,\n}: {\n children: React.ReactNode;\n className?: string;\n}) {\n return (\n <span data-slot=\"tooltip-badge\" className={cn('shrink-0', className)}>\n {children}\n </span>\n );\n}\nTooltipBadge.displayName = 'Tooltip.Badge';\n\ninterface TooltipImageProps {\n src: string;\n alt: string;\n layout?: 'vertical' | 'horizontal';\n className?: string;\n}\n\nfunction TooltipImage({\n src,\n alt,\n layout = 'vertical',\n className,\n}: TooltipImageProps) {\n return (\n <img\n data-slot=\"tooltip-image\"\n src={src}\n alt={alt}\n className={cn(\n 'rounded-md object-cover',\n layout === 'vertical' ? 'w-full h-20' : 'w-20 h-14 shrink-0',\n className,\n )}\n />\n );\n}\nTooltipImage.displayName = 'Tooltip.Image';\n\n// =============================================================================\n// High-level Tooltip Wrapper Component\n// =============================================================================\n\ninterface TooltipProps {\n /** The element that triggers the tooltip (required) */\n trigger: React.ReactElement;\n /** The main tooltip text */\n content: React.ReactNode;\n /** Style variant */\n variant?: TooltipVariant;\n /** Shape variant */\n shape?: TooltipShape;\n /** Arrow position - 'none' hides the arrow */\n position?: TooltipPosition;\n /** Alignment of tooltip relative to trigger */\n align?: 'start' | 'center' | 'end';\n /** Delay in ms before showing tooltip */\n delayDuration?: number;\n /** Distance from trigger */\n sideOffset?: number;\n /** Optional icon before content */\n icon?: React.ReactNode;\n /** Optional avatar - string for src or ReactNode for custom */\n avatar?: string | React.ReactNode;\n /** Optional supporting text */\n subtitle?: React.ReactNode;\n /** Optional badge element */\n badge?: React.ReactNode;\n /** Optional image */\n image?: string;\n /** Image layout - auto-detected or override */\n imageLayout?: 'vertical' | 'horizontal';\n /** Optional Base UI portal container. Takes precedence over the trigger owner document. */\n container?: TooltipPrimitive.Portal.Props['container'];\n /** Override content with custom children */\n children?: React.ReactNode;\n}\n\ninterface TooltipRenderedContentProps {\n children?: React.ReactNode;\n content: React.ReactNode;\n variant: TooltipVariant;\n icon?: React.ReactNode;\n avatar?: string | React.ReactNode;\n subtitle?: React.ReactNode;\n badge?: React.ReactNode;\n image?: string;\n imageLayout: 'vertical' | 'horizontal';\n hasRichContent: React.ReactNode;\n contentAlt: string;\n}\n\nfunction TooltipRenderedContent({\n children,\n content,\n variant,\n icon,\n avatar,\n subtitle,\n badge,\n image,\n imageLayout,\n hasRichContent,\n contentAlt,\n}: TooltipRenderedContentProps) {\n if (children) return children;\n\n const subtitleElement = subtitle && (\n <TooltipSubtitle variant={variant}>{subtitle}</TooltipSubtitle>\n );\n\n if (image) {\n return (\n <div\n className={cn(\n 'flex gap-1.5 delight-tooltip-stagger',\n imageLayout === 'vertical' ? 'flex-col' : 'flex-row items-center',\n )}\n >\n <TooltipImage\n src={image}\n alt={contentAlt}\n layout={imageLayout}\n className=\"delight-tooltip-image\"\n />\n <TooltipContent>\n <TooltipTitle>{content}</TooltipTitle>\n {subtitleElement}\n </TooltipContent>\n </div>\n );\n }\n\n if (!hasRichContent) return content;\n\n return (\n <div className=\"flex items-center gap-1.5 delight-tooltip-stagger\">\n {avatar &&\n (typeof avatar === 'string' ? (\n <TooltipAvatar src={avatar} alt={contentAlt} />\n ) : (\n <TooltipAvatar alt={contentAlt}>{avatar}</TooltipAvatar>\n ))}\n {icon && <TooltipIcon>{icon}</TooltipIcon>}\n <TooltipContent>\n <TooltipTitle>{content}</TooltipTitle>\n {subtitleElement}\n </TooltipContent>\n {badge && <TooltipBadge>{badge}</TooltipBadge>}\n </div>\n );\n}\n\nconst Tooltip = ({\n trigger,\n content,\n variant = 'primary',\n shape = 'default',\n position = 'top',\n align = 'center',\n delayDuration,\n sideOffset = 6,\n icon,\n avatar,\n subtitle,\n badge,\n image,\n imageLayout,\n container,\n children,\n}: TooltipProps) => {\n const [triggerElement, setTriggerElement] =\n React.useState<HTMLElement | null>(null);\n const [triggerPortalContainer, setTriggerPortalContainer] =\n React.useState<HTMLElement | null>(null);\n const setTriggerRef = React.useCallback((element: HTMLElement | null) => {\n setTriggerElement((currentElement) =>\n currentElement === element ? currentElement : element,\n );\n }, []);\n\n React.useEffect(() => {\n const nextContainer = triggerElement?.ownerDocument.body ?? null;\n setTriggerPortalContainer((currentContainer) =>\n currentContainer === nextContainer ? currentContainer : nextContainer,\n );\n }, [triggerElement]);\n\n // Determine if we have rich content\n const hasRichContent = icon || avatar || subtitle || badge || image;\n\n const resolvedImageLayout = imageLayout ?? 'vertical';\n const contentAlt = extractText(content);\n const portalContainer =\n container === undefined ? triggerPortalContainer : container;\n\n return (\n <TooltipProvider delay={delayDuration}>\n <TooltipRoot>\n <TooltipTrigger ref={setTriggerRef} render={trigger} />\n <TooltipPopup\n container={portalContainer}\n side={position === 'none' ? 'top' : position}\n align={align}\n sideOffset={sideOffset}\n variant={variant}\n shape={shape}\n hideArrow={position === 'none'}\n className={cn(hasRichContent && 'p-2')}\n >\n <TooltipRenderedContent\n content={content}\n variant={variant}\n icon={icon}\n avatar={avatar}\n subtitle={subtitle}\n badge={badge}\n image={image}\n imageLayout={resolvedImageLayout}\n hasRichContent={hasRichContent}\n contentAlt={contentAlt}\n >\n {children}\n </TooltipRenderedContent>\n </TooltipPopup>\n </TooltipRoot>\n </TooltipProvider>\n );\n};\n\nTooltip.displayName = 'Tooltip';\nTooltipProvider.displayName = 'Tooltip.Provider';\nTooltipRoot.displayName = 'Tooltip.Root';\nTooltipTrigger.displayName = 'Tooltip.Trigger';\nTooltipPopup.displayName = 'Tooltip.Popup';\n\n/**\n * Tooltip component with dot notation for compound parts.\n *\n * @example\n * ```tsx\n * // Simple usage (recommended for most cases)\n * <Tooltip trigger={<Button>Hover me</Button>} content=\"Tooltip text\" />\n *\n * // With variants\n * <Tooltip trigger={<Button>Save</Button>} content=\"Saved!\" variant=\"success\" shape=\"rounded\" />\n *\n * // With rich content\n * <Tooltip trigger={<Button>Info</Button>} content=\"Title\" icon={<InfoIcon />} subtitle=\"Description\" />\n *\n * // Advanced usage with dot notation\n * <Tooltip.Root>\n * <Tooltip.Trigger render={<Button>Hover me</Button>} />\n * <Tooltip.Popup variant=\"info\">\n * <Tooltip.Icon><InfoIcon /></Tooltip.Icon>\n * <Tooltip.Content>\n * <Tooltip.Title>Title</Tooltip.Title>\n * <Tooltip.Subtitle>Description</Tooltip.Subtitle>\n * </Tooltip.Content>\n * </Tooltip.Popup>\n * </Tooltip.Root>\n * ```\n */\nconst TooltipCompound = Object.assign(Tooltip, {\n Root: TooltipRoot,\n Provider: TooltipProvider,\n Trigger: TooltipTrigger,\n Popup: TooltipPopup,\n Icon: TooltipIcon,\n Avatar: TooltipAvatar,\n Content: TooltipContent,\n Title: TooltipTitle,\n Subtitle: TooltipSubtitle,\n Badge: TooltipBadge,\n Image: TooltipImage,\n});\n\nexport type { TooltipPosition, TooltipProps, TooltipShape, TooltipVariant };\nexport {\n arrowVariants,\n TooltipAvatar,\n TooltipBadge,\n TooltipCompound as Tooltip,\n TooltipContent,\n TooltipIcon,\n TooltipImage,\n TooltipPopup,\n TooltipProvider,\n TooltipRoot,\n TooltipSubtitle,\n TooltipTitle,\n TooltipTrigger,\n tooltipVariants,\n};\n"],"mappings":"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"}
package/dist/wc/button.js CHANGED
@@ -7,7 +7,7 @@ import { t as P } from "./useRenderElement.js";
7
7
  import { t as U } from "./dist.js";
8
8
  import { t as W } from "./useButton.js";
9
9
  import { n as G, t as V } from "./spinner.js";
10
- var l = /* @__PURE__ */ D(F(), 1), _ = /* @__PURE__ */ l.forwardRef(function(e, t) {
10
+ var l = /* @__PURE__ */ D(F(), 1), _ = /* @__PURE__ */ l.forwardRef(function(e, s) {
11
11
  const { render: o, className: d, disabled: p = !1, focusableWhenDisabled: x = !1, nativeButton: i = !0, style: j, ...h } = e, { getButtonProps: g, buttonRef: y } = W({
12
12
  disabled: p,
13
13
  focusableWhenDisabled: x,
@@ -15,7 +15,7 @@ var l = /* @__PURE__ */ D(F(), 1), _ = /* @__PURE__ */ l.forwardRef(function(e,
15
15
  });
16
16
  return P("button", e, {
17
17
  state: { disabled: p },
18
- ref: [t, y],
18
+ ref: [s, y],
19
19
  props: [h, g]
20
20
  });
21
21
  }), a = T(), c = "focus-visible:scale-[1.015] motion-reduce:focus-visible:scale-100", H = U("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 border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-[3px] aria-invalid:ring-[3px] [&_svg:not([class*='size-'])]:size-4 inline-flex origin-center items-center justify-center whitespace-nowrap transition-[color,background-color,border-color,box-shadow,transform,opacity] duration-200 ease-smooth motion-reduce:transition-none disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none", {
@@ -71,22 +71,22 @@ var l = /* @__PURE__ */ D(F(), 1), _ = /* @__PURE__ */ l.forwardRef(function(e,
71
71
  {
72
72
  appearance: "solid",
73
73
  variant: "info",
74
- className: "bg-info text-primary-foreground hover:bg-info/80"
74
+ className: "bg-info text-info-foreground hover:bg-info/80"
75
75
  },
76
76
  {
77
77
  appearance: "solid",
78
78
  variant: "success",
79
- className: "bg-success text-primary-foreground hover:bg-success/80"
79
+ className: "bg-success text-success-foreground hover:bg-success/80"
80
80
  },
81
81
  {
82
82
  appearance: "solid",
83
83
  variant: "warning",
84
- className: "bg-warning text-primary-foreground hover:bg-warning/80"
84
+ className: "bg-warning text-warning-foreground hover:bg-warning/80"
85
85
  },
86
86
  {
87
87
  appearance: "solid",
88
88
  variant: "destructive",
89
- className: "bg-destructive text-primary-foreground hover:bg-destructive/80"
89
+ className: "bg-destructive text-destructive-foreground hover:bg-destructive/80"
90
90
  },
91
91
  {
92
92
  appearance: "gradient",
@@ -101,22 +101,22 @@ var l = /* @__PURE__ */ D(F(), 1), _ = /* @__PURE__ */ l.forwardRef(function(e,
101
101
  {
102
102
  appearance: "gradient",
103
103
  variant: "info",
104
- className: "from-info to-info/60 text-primary-foreground hover:from-info/60 hover:to-info"
104
+ className: "from-info to-info/60 text-info-foreground hover:from-info/60 hover:to-info"
105
105
  },
106
106
  {
107
107
  appearance: "gradient",
108
108
  variant: "success",
109
- className: "from-success to-success/60 text-primary-foreground hover:from-success/60 hover:to-success"
109
+ className: "from-success to-success/60 text-success-foreground hover:from-success/60 hover:to-success"
110
110
  },
111
111
  {
112
112
  appearance: "gradient",
113
113
  variant: "warning",
114
- className: "from-warning to-warning/60 text-primary-foreground hover:from-warning/60 hover:to-warning"
114
+ className: "from-warning to-warning/60 text-warning-foreground hover:from-warning/60 hover:to-warning"
115
115
  },
116
116
  {
117
117
  appearance: "gradient",
118
118
  variant: "destructive",
119
- className: "from-destructive to-destructive/60 text-primary-foreground hover:from-destructive/60 hover:to-destructive"
119
+ className: "from-destructive to-destructive/60 text-destructive-foreground hover:from-destructive/60 hover:to-destructive"
120
120
  },
121
121
  {
122
122
  appearance: "soft",
@@ -323,41 +323,41 @@ var l = /* @__PURE__ */ D(F(), 1), _ = /* @__PURE__ */ l.forwardRef(function(e,
323
323
  "aria-hidden": "true",
324
324
  className: n("size-2 rounded-full shrink-0 delight-breathing", X[r], e)
325
325
  });
326
- function ae({ appearance: r, badge: e, shape: t, variant: o }) {
326
+ function ae({ appearance: r, badge: e, shape: s, variant: o }) {
327
327
  if (l.isValidElement(e)) return e;
328
328
  if (e === !0 || e === !1 || e == null) return null;
329
329
  const d = (r === "solid" || r === "gradient") && o !== "secondary" ? "white" : "soft";
330
330
  return /* @__PURE__ */ (0, a.jsx)("span", {
331
331
  "data-slot": "badge",
332
- className: n("inline-flex h-5 shrink-0 items-center justify-center gap-1.5 whitespace-nowrap px-2 py-0.5 text-xs font-medium transition-colors [&>svg]:size-3 [&>svg]:shrink-0 [&>svg]:pointer-events-none", K[t], d === "white" ? "bg-opacity-white-80 transition-opacity hover:opacity-80 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-current/50" : Y[o], d === "white" && Q[o]),
332
+ className: n("inline-flex h-5 shrink-0 items-center justify-center gap-1.5 whitespace-nowrap px-2 py-0.5 text-xs font-medium transition-colors [&>svg]:size-3 [&>svg]:shrink-0 [&>svg]:pointer-events-none", K[s], d === "white" ? "bg-opacity-white-80 transition-opacity hover:opacity-80 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-current/50" : Y[o], d === "white" && Q[o]),
333
333
  children: e
334
334
  });
335
335
  }
336
- var A = l.forwardRef(({ children: r, loading: e = !1, disabled: t, startIcon: o, endIcon: d, dotIndicator: p = !1, dotColor: x = "success", badge: i, iconOnly: j = !1, animated: h, render: g, className: y, appearance: N = "solid", variant: C = "primary", shape: B = "rounded", size: S = "default", ...u }, v) => {
337
- const [s, $] = l.useState(() => ({
336
+ var A = l.forwardRef(({ children: r, loading: e = !1, disabled: s, startIcon: o, endIcon: d, dotIndicator: p = !1, dotColor: x = "success", badge: i, iconOnly: j = !1, animated: h, render: g, className: y, appearance: N = "solid", variant: C = "primary", shape: B = "rounded", size: S = "default", ...u }, v) => {
337
+ const [t, $] = l.useState(() => ({
338
338
  wasLoading: e,
339
339
  visible: !1,
340
340
  token: 0
341
341
  }));
342
- if (s.wasLoading !== e) {
343
- const b = s.wasLoading && !e;
342
+ if (t.wasLoading !== e) {
343
+ const b = t.wasLoading && !e;
344
344
  $({
345
345
  wasLoading: e,
346
346
  visible: b,
347
- token: b ? s.token + 1 : s.token
347
+ token: b ? t.token + 1 : t.token
348
348
  });
349
349
  }
350
350
  l.useEffect(() => {
351
- if (!s.visible) return;
352
- const b = s.token, q = setTimeout(() => {
351
+ if (!t.visible) return;
352
+ const b = t.token, q = setTimeout(() => {
353
353
  $((z) => z.token === b ? {
354
354
  ...z,
355
355
  visible: !1
356
356
  } : z);
357
357
  }, J);
358
358
  return () => clearTimeout(q);
359
- }, [s.visible, s.token]);
360
- const m = s.visible && !e, f = N === "ai", I = f ? h ?? e : !1, w = n(H({
359
+ }, [t.visible, t.token]);
360
+ const f = t.visible && !e, m = N === "ai", I = m ? h ?? e : !1, w = n(H({
361
361
  appearance: N,
362
362
  variant: C,
363
363
  shape: B,
@@ -380,23 +380,23 @@ var A = l.forwardRef(({ children: r, loading: e = !1, disabled: t, startIcon: o,
380
380
  shape: B,
381
381
  variant: C
382
382
  }), L = k ? /* @__PURE__ */ (0, a.jsx)(_, {
383
- ref: f ? void 0 : v,
383
+ ref: m ? void 0 : v,
384
384
  "data-slot": "button",
385
- disabled: t || e,
385
+ disabled: s || e,
386
386
  className: n(w, e && "relative"),
387
387
  ...E,
388
- children: e ? /* @__PURE__ */ (0, a.jsx)(V, { className: "delight-fade-in" }) : m ? /* @__PURE__ */ (0, a.jsx)(R, { className: "delight-bounce-in" }) : r
388
+ children: e ? /* @__PURE__ */ (0, a.jsx)(V, { className: "delight-fade-in" }) : f ? /* @__PURE__ */ (0, a.jsx)(R, { className: "delight-bounce-in" }) : r
389
389
  }) : /* @__PURE__ */ (0, a.jsxs)(_, {
390
- ref: f ? void 0 : v,
390
+ ref: m ? void 0 : v,
391
391
  "data-slot": "button",
392
- disabled: t || e,
393
- className: n(w, (e || m) && "relative"),
392
+ disabled: s || e,
393
+ className: n(w, (e || f) && "relative"),
394
394
  ...E,
395
395
  children: [
396
396
  e && /* @__PURE__ */ (0, a.jsx)(V, { className: "absolute delight-fade-in" }),
397
- m && !e && /* @__PURE__ */ (0, a.jsx)(R, { className: "absolute delight-bounce-in" }),
397
+ f && !e && /* @__PURE__ */ (0, a.jsx)(R, { className: "absolute delight-bounce-in" }),
398
398
  /* @__PURE__ */ (0, a.jsxs)("span", {
399
- className: n("flex items-center gap-2", (e || m) && "invisible"),
399
+ className: n("flex items-center gap-2", (e || f) && "invisible"),
400
400
  children: [
401
401
  p && /* @__PURE__ */ (0, a.jsx)(ee, { color: x }),
402
402
  o,
@@ -407,18 +407,18 @@ var A = l.forwardRef(({ children: r, loading: e = !1, disabled: t, startIcon: o,
407
407
  })
408
408
  ]
409
409
  });
410
- return f ? /* @__PURE__ */ (0, a.jsx)(G, {
410
+ return m ? /* @__PURE__ */ (0, a.jsx)(G, {
411
411
  ref: v,
412
412
  animated: I,
413
413
  active: !0,
414
- disabled: t,
414
+ disabled: s,
415
415
  className: "w-auto inline-flex motion-reduce:animate-none",
416
416
  innerClassName: "flex",
417
417
  children: L
418
418
  }) : L;
419
419
  });
420
420
  A.displayName = "Button";
421
- function re({ className: r, size: e = "icon-sm", ...t }) {
421
+ function re({ className: r, size: e = "icon-sm", ...s }) {
422
422
  return /* @__PURE__ */ (0, a.jsx)(A, {
423
423
  appearance: "ghost",
424
424
  variant: "secondary",
@@ -426,7 +426,7 @@ function re({ className: r, size: e = "icon-sm", ...t }) {
426
426
  iconOnly: !0,
427
427
  className: n("text-text-quaternary hover:text-secondary-foreground", r),
428
428
  "aria-label": "Clear",
429
- ...t,
429
+ ...s,
430
430
  children: /* @__PURE__ */ (0, a.jsx)(M, {})
431
431
  });
432
432
  }
@@ -1 +1 @@
1
- {"version":3,"file":"button.js","names":["Button"],"sources":["../../../../../../../../../../../Users/akarim/Documents/test/humain_foundation_ui/node_modules/.bun/@base-ui+react@1.6.0+1c528c44af60ea5b/node_modules/@base-ui/react/button/Button.mjs","../../src/components/ui/button.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useButton } from \"../internals/use-button/useButton.mjs\";\nimport { useRenderElement } from \"../internals/useRenderElement.mjs\";\n/**\n * A button component that can be used to trigger actions.\n * Renders a `<button>` element.\n *\n * Documentation: [Base UI Button](https://base-ui.com/react/components/button)\n */\nexport const Button = /*#__PURE__*/React.forwardRef(function Button(componentProps, forwardedRef) {\n const {\n render,\n className,\n disabled = false,\n focusableWhenDisabled = false,\n nativeButton = true,\n style,\n ...elementProps\n } = componentProps;\n const {\n getButtonProps,\n buttonRef\n } = useButton({\n disabled,\n focusableWhenDisabled,\n native: nativeButton\n });\n const state = {\n disabled\n };\n return useRenderElement('button', componentProps, {\n state,\n ref: [forwardedRef, buttonRef],\n props: [elementProps, getButtonProps]\n });\n});\nif (process.env.NODE_ENV !== \"production\") Button.displayName = \"Button\";","import { Button as ButtonPrimitive } from '@base-ui/react/button';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { Check, X } from 'lucide-react';\nimport * as React from 'react';\nimport { GradientBorder } from '@/components/ui/gradient-border';\nimport { Spinner } from '@/components/ui/spinner';\nimport { cn } from '@/lib/utils';\n\nconst buttonFocusExpansionClassName =\n 'focus-visible:scale-[1.015] motion-reduce:focus-visible:scale-100';\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 border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-[3px] aria-invalid:ring-[3px] [&_svg:not([class*='size-'])]:size-4 inline-flex origin-center items-center justify-center whitespace-nowrap transition-[color,background-color,border-color,box-shadow,transform,opacity] duration-200 ease-smooth motion-reduce:transition-none 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 appearance: {\n solid: `${buttonFocusExpansionClassName} delight-click-ripple`,\n gradient: `${buttonFocusExpansionClassName} bg-linear-[113deg] hover:opacity-80 delight-click-ripple`,\n soft: `${buttonFocusExpansionClassName} delight-click-ripple`,\n outline: `${buttonFocusExpansionClassName} bg-background shadow-xs`,\n ghost: `${buttonFocusExpansionClassName} bg-transparent`,\n link: 'border-none bg-transparent p-0 h-auto underline-offset-4 hover:underline focus-visible:ring-0 focus-visible:border-transparent',\n ai: `${buttonFocusExpansionClassName} bg-transparent border-0`,\n },\n variant: {\n primary: '',\n secondary: '',\n info: '',\n success: '',\n warning: '',\n destructive: '',\n },\n size: {\n default:\n 'h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pe-2 has-data-[icon=inline-start]:ps-2',\n xs: \"h-6 gap-1 px-2 text-xs has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: 'h-8 gap-1 px-2.5 has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5',\n md: 'h-10 gap-1.5 px-3.5 has-data-[icon=inline-end]:pe-3 has-data-[icon=inline-start]:ps-3',\n lg: 'h-11 gap-2 px-4 has-data-[icon=inline-end]:pe-3.5 has-data-[icon=inline-start]:ps-3.5',\n xl: \"h-12 gap-2 px-4.5 text-base has-data-[icon=inline-end]:pe-4 has-data-[icon=inline-start]:ps-4 [&_svg:not([class*='size-'])]:size-5\",\n '2xl':\n \"h-14 gap-2.5 px-5 text-lg has-data-[icon=inline-end]:pe-4.5 has-data-[icon=inline-start]:ps-4.5 [&_svg:not([class*='size-'])]:size-6\",\n icon: 'size-9',\n 'icon-xs': \"size-6 [&_svg:not([class*='size-'])]:size-3\",\n 'icon-sm': 'size-8',\n 'icon-lg': 'size-10',\n 'icon-xl': \"size-12 [&_svg:not([class*='size-'])]:size-5\",\n 'icon-2xl': \"size-14 [&_svg:not([class*='size-'])]:size-6\",\n },\n shape: {\n rounded: 'rounded-md',\n round: 'rounded-full',\n },\n },\n compoundVariants: [\n // ===== SOLID =====\n {\n appearance: 'solid',\n variant: 'primary',\n className: 'bg-primary text-primary-foreground hover:bg-primary-hover',\n },\n {\n appearance: 'solid',\n variant: 'secondary',\n className:\n 'bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground',\n },\n {\n appearance: 'solid',\n variant: 'info',\n className: 'bg-info text-primary-foreground hover:bg-info/80',\n },\n {\n appearance: 'solid',\n variant: 'success',\n className: 'bg-success text-primary-foreground hover:bg-success/80',\n },\n {\n appearance: 'solid',\n variant: 'warning',\n className: 'bg-warning text-primary-foreground hover:bg-warning/80',\n },\n {\n appearance: 'solid',\n variant: 'destructive',\n className:\n 'bg-destructive text-primary-foreground hover:bg-destructive/80',\n },\n\n // ===== GRADIENT =====\n {\n appearance: 'gradient',\n variant: 'primary',\n className:\n 'from-custom-tw-gradient-from to-custom-tw-gradient-to text-primary-foreground hover:from-custom-tw-gradient-to hover:to-custom-tw-gradient-from',\n },\n {\n appearance: 'gradient',\n variant: 'secondary',\n className:\n 'from-secondary to-secondary/60 text-secondary-foreground hover:from-secondary/60 hover:to-secondary',\n },\n {\n appearance: 'gradient',\n variant: 'info',\n className:\n 'from-info to-info/60 text-primary-foreground hover:from-info/60 hover:to-info',\n },\n {\n appearance: 'gradient',\n variant: 'success',\n className:\n 'from-success to-success/60 text-primary-foreground hover:from-success/60 hover:to-success',\n },\n {\n appearance: 'gradient',\n variant: 'warning',\n className:\n 'from-warning to-warning/60 text-primary-foreground hover:from-warning/60 hover:to-warning',\n },\n {\n appearance: 'gradient',\n variant: 'destructive',\n className:\n 'from-destructive to-destructive/60 text-primary-foreground hover:from-destructive/60 hover:to-destructive',\n },\n\n // ===== SOFT =====\n {\n appearance: 'soft',\n variant: 'primary',\n className:\n 'bg-primary/10 border-primary text-primary hover:bg-primary/20 hover:text-primary dark:bg-primary/30 dark:border-primary dark:text-primary dark:hover:bg-primary/50 shadow-xs',\n },\n {\n appearance: 'soft',\n variant: 'secondary',\n className:\n 'bg-secondary/10 text-secondary-foreground hover:bg-secondary/20',\n },\n {\n appearance: 'soft',\n variant: 'info',\n className: 'bg-info/10 text-info hover:bg-info/20',\n },\n {\n appearance: 'soft',\n variant: 'success',\n className: 'bg-success/10 text-success hover:bg-success/20',\n },\n {\n appearance: 'soft',\n variant: 'warning',\n className: 'bg-warning/10 text-warning hover:bg-warning/20',\n },\n {\n appearance: 'soft',\n variant: 'destructive',\n className:\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 },\n\n // ===== OUTLINE =====\n {\n appearance: 'outline',\n className:\n 'bg-card border-border backdrop-blur-[2px] shadow-none supports-backdrop-filter:backdrop-blur-[2px]',\n },\n {\n appearance: 'outline',\n shape: 'rounded',\n className: 'rounded-xl',\n },\n {\n appearance: 'outline',\n size: 'xs',\n className: 'h-[26px] gap-1 px-2',\n },\n {\n appearance: 'outline',\n size: 'sm',\n className: 'h-8 gap-1.5 px-2.5',\n },\n {\n appearance: 'outline',\n size: 'default',\n className: 'h-9 gap-2 px-4',\n },\n {\n appearance: 'outline',\n size: 'md',\n className: 'h-10 gap-2 px-4',\n },\n {\n appearance: 'outline',\n size: 'lg',\n className: 'h-10 gap-2 px-4.5',\n },\n {\n appearance: 'outline',\n variant: 'primary',\n className: 'border-border text-foreground hover:bg-muted/50',\n },\n {\n appearance: 'outline',\n variant: 'secondary',\n className:\n 'border-border text-secondary-foreground hover:bg-muted/50 aria-expanded:bg-muted/50 aria-expanded:text-foreground',\n },\n {\n appearance: 'outline',\n variant: 'info',\n className: 'border-border text-info hover:bg-info/10',\n },\n {\n appearance: 'outline',\n variant: 'success',\n className: 'border-border text-success hover:bg-success/10',\n },\n {\n appearance: 'outline',\n variant: 'warning',\n className: 'border-border text-warning hover:bg-warning/10',\n },\n {\n appearance: 'outline',\n variant: 'destructive',\n className: 'border-border text-destructive hover:bg-destructive/10',\n },\n\n // ===== GHOST =====\n {\n appearance: 'ghost',\n variant: 'primary',\n className: 'text-primary hover:bg-primary/10',\n },\n {\n appearance: 'ghost',\n variant: 'secondary',\n className:\n 'hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground',\n },\n {\n appearance: 'ghost',\n variant: 'info',\n className: 'text-info hover:bg-info/10',\n },\n {\n appearance: 'ghost',\n variant: 'success',\n className: 'text-success hover:bg-success/10',\n },\n {\n appearance: 'ghost',\n variant: 'warning',\n className: 'text-warning hover:bg-warning/10',\n },\n {\n appearance: 'ghost',\n variant: 'destructive',\n className: 'text-destructive hover:bg-destructive/10',\n },\n\n // ===== AI (inner button styling — GradientBorder wraps externally) =====\n {\n appearance: 'ai',\n variant: 'primary',\n className: 'text-primary hover:bg-primary/10',\n },\n {\n appearance: 'ai',\n variant: 'secondary',\n className: 'text-secondary-foreground hover:bg-muted',\n },\n\n // ===== LINK =====\n { appearance: 'link', variant: 'primary', className: 'text-primary' },\n {\n appearance: 'link',\n variant: 'secondary',\n className: 'text-secondary-foreground',\n },\n { appearance: 'link', variant: 'info', className: 'text-info' },\n { appearance: 'link', variant: 'success', className: 'text-success' },\n { appearance: 'link', variant: 'warning', className: 'text-warning' },\n {\n appearance: 'link',\n variant: 'destructive',\n className: 'text-destructive hover:text-destructive/80',\n },\n ],\n defaultVariants: {\n appearance: 'solid',\n variant: 'primary',\n size: 'default',\n shape: 'rounded',\n },\n },\n);\n\ntype DotColor = 'success' | 'error' | 'warning' | 'brand' | 'gray';\n\ntype ButtonAppearance =\n | 'solid'\n | 'gradient'\n | 'soft'\n | 'outline'\n | 'ghost'\n | 'link'\n | 'ai';\ntype ButtonVariant =\n | 'primary'\n | 'secondary'\n | 'info'\n | 'success'\n | 'warning'\n | 'destructive';\ntype ButtonShape = 'rounded' | 'round';\n\n/**\n * Render prop type for polymorphic rendering.\n * Accepts either a React element or a function that receives props and returns an element.\n * @template Props The props to be passed to the rendered element\n */\ntype RenderProp<Props> =\n | React.ReactElement\n | ((props: Props) => React.ReactElement);\n\nexport interface ButtonProps\n extends React.ComponentProps<'button'>,\n Pick<VariantProps<typeof buttonVariants>, 'size'> {\n /** Visual appearance - how the button renders */\n appearance?: ButtonAppearance;\n /** Semantic variant - what the button means */\n variant?: ButtonVariant;\n /** Shape of the button corners */\n shape?: ButtonShape;\n /** Shows a loading spinner and disables the button */\n loading?: boolean;\n /** Set to false when render targets a non-button element. */\n nativeButton?: boolean;\n /** Icon displayed at the start (inline-start) of the button text - respects RTL */\n startIcon?: React.ReactNode;\n /** Icon displayed at the end (inline-end) of the button text - respects RTL */\n endIcon?: React.ReactNode;\n /** Shows a colored dot indicator before the button text */\n dotIndicator?: boolean;\n /** Color of the dot indicator */\n dotColor?: DotColor;\n /** Badge content displayed after the button label. Text badges are styled from the button appearance and variant. */\n badge?: React.ReactNode;\n /** For icon-only buttons - renders just the icon without text wrapper */\n iconOnly?: boolean;\n /** Enables animated gradient border (only for appearance=\"ai\"). Auto-true when loading. */\n animated?: boolean;\n /**\n * Render prop for polymorphic rendering. Accepts either a React element or a render function.\n * Use this to render the button as a different element (e.g., link) while preserving button styles.\n * Note: When render is provided, loading/startIcon/endIcon/dotIndicator/badge are ignored.\n */\n render?: RenderProp<React.ComponentProps<'button'>>;\n}\n\nconst dotColorClasses: Record<DotColor, string> = {\n success: 'bg-success',\n error: 'bg-destructive',\n warning: 'bg-warning',\n brand: 'bg-primary',\n gray: 'bg-muted',\n};\n\nconst devWarnings = new Set<string>();\n\n/** Icon-only size variants for type-safe detection */\nconst ICON_SIZES = [\n 'icon',\n 'icon-xs',\n 'icon-sm',\n 'icon-lg',\n 'icon-xl',\n 'icon-2xl',\n] as const;\n\nconst SUCCESS_FLASH_DURATION_MS = 600;\n\nconst buttonBadgeShapeClasses: Record<ButtonShape, string> = {\n round: 'rounded-full',\n rounded: 'rounded-sm',\n};\n\nconst buttonBadgeWhiteColorClasses: Record<ButtonVariant, string> = {\n primary: 'text-primary',\n secondary: 'text-secondary-foreground',\n info: 'text-info',\n success: 'text-success',\n warning: 'text-warning',\n destructive: 'text-destructive',\n};\n\nconst buttonBadgeSoftColorClasses: Record<ButtonVariant, string> = {\n primary:\n 'bg-soft-primary text-soft-primary-foreground hover:bg-opacity-primary-20 dark:bg-soft-primary dark:text-soft-primary-foreground',\n secondary:\n 'bg-soft-secondary text-soft-secondary-foreground hover:bg-opacity-secondary-20 dark:bg-soft-secondary dark:text-soft-secondary-foreground',\n info: 'bg-soft-info text-soft-info-foreground hover:bg-opacity-info-20 dark:bg-soft-info dark:text-soft-info-foreground',\n success:\n 'bg-soft-success text-soft-success-foreground hover:bg-opacity-success-20 dark:bg-soft-success dark:text-soft-success-foreground',\n warning:\n 'bg-soft-warning text-soft-warning-foreground hover:bg-opacity-warning-20 dark:bg-soft-warning dark:text-soft-warning-foreground',\n destructive:\n 'bg-soft-destructive text-soft-destructive-foreground hover:bg-opacity-destructive-20 dark:bg-soft-destructive dark:text-soft-destructive-foreground',\n};\n\ntype LoadingSuccessState = {\n wasLoading: boolean;\n visible: boolean;\n token: number;\n};\n\nconst Dot = ({\n color = 'success',\n className,\n}: {\n color?: DotColor;\n className?: string;\n}) => (\n <span\n aria-hidden=\"true\"\n className={cn(\n 'size-2 rounded-full shrink-0 delight-breathing',\n dotColorClasses[color],\n className,\n )}\n />\n);\n\nfunction ButtonBadge({\n appearance,\n badge,\n shape,\n variant,\n}: {\n appearance: ButtonAppearance;\n badge: React.ReactNode;\n shape: ButtonShape;\n variant: ButtonVariant;\n}) {\n if (React.isValidElement(badge)) {\n return badge;\n }\n\n if (badge === true || badge === false || badge == null) {\n return null;\n }\n\n const badgeVariant =\n (appearance === 'solid' || appearance === 'gradient') &&\n variant !== 'secondary'\n ? 'white'\n : 'soft';\n\n return (\n <span\n data-slot=\"badge\"\n className={cn(\n 'inline-flex h-5 shrink-0 items-center justify-center gap-1.5 whitespace-nowrap px-2 py-0.5 text-xs font-medium transition-colors [&>svg]:size-3 [&>svg]:shrink-0 [&>svg]:pointer-events-none',\n buttonBadgeShapeClasses[shape],\n badgeVariant === 'white'\n ? 'bg-opacity-white-80 transition-opacity hover:opacity-80 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-current/50'\n : buttonBadgeSoftColorClasses[variant],\n badgeVariant === 'white' && buttonBadgeWhiteColorClasses[variant],\n )}\n >\n {badge}\n </span>\n );\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n children,\n loading = false,\n disabled,\n startIcon,\n endIcon,\n dotIndicator = false,\n dotColor = 'success',\n badge,\n iconOnly = false,\n animated,\n render,\n className,\n appearance = 'solid',\n variant = 'primary',\n shape = 'rounded',\n size = 'default',\n ...props\n },\n ref,\n ) => {\n // Dev-mode warning for icon-only buttons missing accessible label (once)\n if (\n process.env.NODE_ENV !== 'production' &&\n !devWarnings.has('icon-a11y')\n ) {\n const hasIconSize = ICON_SIZES.includes(\n size as (typeof ICON_SIZES)[number],\n );\n if (\n (iconOnly || hasIconSize) &&\n !props['aria-label'] &&\n !props['aria-labelledby']\n ) {\n devWarnings.add('icon-a11y');\n console.warn(\n 'Button: Icon-only buttons require an `aria-label` or `aria-labelledby` for accessibility.',\n );\n }\n }\n\n // Track loading→done transition before paint so the button never commits a\n // stale success state after the loading prop changes.\n const [successState, setSuccessState] = React.useState<LoadingSuccessState>(\n () => ({\n wasLoading: loading,\n visible: false,\n token: 0,\n }),\n );\n\n if (successState.wasLoading !== loading) {\n const shouldFlash = successState.wasLoading && !loading;\n setSuccessState({\n wasLoading: loading,\n visible: shouldFlash,\n token: shouldFlash ? successState.token + 1 : successState.token,\n });\n }\n\n React.useEffect(() => {\n if (!successState.visible) return;\n const token = successState.token;\n const timer = setTimeout(() => {\n setSuccessState((current) =>\n current.token === token ? { ...current, visible: false } : current,\n );\n }, SUCCESS_FLASH_DURATION_MS);\n return () => clearTimeout(timer);\n }, [successState.visible, successState.token]);\n\n const showSuccess = successState.visible && !loading;\n\n const isAi = appearance === 'ai';\n const isAnimated = isAi ? (animated ?? loading) : false;\n\n const buttonClassName = cn(\n buttonVariants({ appearance, variant, shape, size }),\n className,\n );\n\n // When render prop is provided, pass through to primitive\n // (ignores loading/startIcon/endIcon/dotIndicator/badge)\n if (render) {\n return (\n <ButtonPrimitive\n ref={ref}\n data-slot=\"button\"\n className={buttonClassName}\n render={render}\n {...props}\n >\n {children}\n </ButtonPrimitive>\n );\n }\n\n // Determine if this is an icon-only button based on size or explicit prop\n const isIconOnly =\n iconOnly || ICON_SIZES.includes(size as (typeof ICON_SIZES)[number]);\n const shouldComposeBadgeLabel =\n !isIconOnly &&\n !props['aria-label'] &&\n !props['aria-labelledby'] &&\n (typeof children === 'string' || typeof children === 'number') &&\n (typeof badge === 'string' || typeof badge === 'number');\n const buttonProps = shouldComposeBadgeLabel\n ? { ...props, 'aria-label': `${children} ${badge}` }\n : props;\n const buttonBadge = !isIconOnly ? (\n <ButtonBadge\n appearance={appearance}\n badge={badge}\n shape={shape}\n variant={variant}\n />\n ) : null;\n\n // Build the button element (icon-only or full)\n const buttonElement = isIconOnly ? (\n <ButtonPrimitive\n ref={isAi ? undefined : ref}\n data-slot=\"button\"\n disabled={disabled || loading}\n className={cn(buttonClassName, loading && 'relative')}\n {...buttonProps}\n >\n {loading ? (\n <Spinner className=\"delight-fade-in\" />\n ) : showSuccess ? (\n <Check className=\"delight-bounce-in\" />\n ) : (\n children\n )}\n </ButtonPrimitive>\n ) : (\n <ButtonPrimitive\n ref={isAi ? undefined : ref}\n data-slot=\"button\"\n disabled={disabled || loading}\n className={cn(buttonClassName, (loading || showSuccess) && 'relative')}\n {...buttonProps}\n >\n {loading && <Spinner className=\"absolute delight-fade-in\" />}\n {showSuccess && !loading && (\n <Check className=\"absolute delight-bounce-in\" />\n )}\n <span\n className={cn(\n 'flex items-center gap-2',\n (loading || showSuccess) && 'invisible',\n )}\n >\n {dotIndicator && <Dot color={dotColor} />}\n {startIcon}\n {children}\n {endIcon}\n {buttonBadge}\n </span>\n </ButtonPrimitive>\n );\n\n if (isAi) {\n return (\n <GradientBorder\n ref={ref as React.Ref<HTMLDivElement>}\n animated={isAnimated}\n active\n disabled={disabled}\n className=\"w-auto inline-flex motion-reduce:animate-none\"\n innerClassName=\"flex\"\n >\n {buttonElement}\n </GradientBorder>\n );\n }\n\n return buttonElement;\n },\n);\n\nButton.displayName = 'Button';\n\n/**\n * Clear/Close icon button - a ghost button specifically for close/clear actions\n * Commonly used in tags, dialogs, and dismissible elements\n */\nexport interface ClearButtonProps\n extends Omit<\n ButtonProps,\n | 'appearance'\n | 'variant'\n | 'children'\n | 'startIcon'\n | 'endIcon'\n | 'dotIndicator'\n > {\n /** Size of the clear button */\n size?: 'icon-xs' | 'icon-sm' | 'icon' | 'icon-lg' | 'icon-xl' | 'icon-2xl';\n}\n\nfunction ClearButton({\n className,\n size = 'icon-sm',\n ...props\n}: ClearButtonProps) {\n return (\n <Button\n appearance=\"ghost\"\n variant=\"secondary\"\n size={size}\n iconOnly\n className={cn(\n 'text-text-quaternary hover:text-secondary-foreground',\n className,\n )}\n aria-label=\"Clear\"\n {...props}\n >\n <X />\n </Button>\n );\n}\n\nClearButton.displayName = 'ClearButton';\n\nexport type { ButtonAppearance, ButtonShape, ButtonVariant };\nexport { Button, buttonVariants, ClearButton, Dot };\n"],"x_google_ignoreList":[0],"mappings":"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"}
1
+ {"version":3,"file":"button.js","names":["Button"],"sources":["../../../../../../../../../../../Users/akarim/Documents/test/humain_foundation_ui/node_modules/.bun/@base-ui+react@1.6.0+1c528c44af60ea5b/node_modules/@base-ui/react/button/Button.mjs","../../src/components/ui/button.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useButton } from \"../internals/use-button/useButton.mjs\";\nimport { useRenderElement } from \"../internals/useRenderElement.mjs\";\n/**\n * A button component that can be used to trigger actions.\n * Renders a `<button>` element.\n *\n * Documentation: [Base UI Button](https://base-ui.com/react/components/button)\n */\nexport const Button = /*#__PURE__*/React.forwardRef(function Button(componentProps, forwardedRef) {\n const {\n render,\n className,\n disabled = false,\n focusableWhenDisabled = false,\n nativeButton = true,\n style,\n ...elementProps\n } = componentProps;\n const {\n getButtonProps,\n buttonRef\n } = useButton({\n disabled,\n focusableWhenDisabled,\n native: nativeButton\n });\n const state = {\n disabled\n };\n return useRenderElement('button', componentProps, {\n state,\n ref: [forwardedRef, buttonRef],\n props: [elementProps, getButtonProps]\n });\n});\nif (process.env.NODE_ENV !== \"production\") Button.displayName = \"Button\";","import { Button as ButtonPrimitive } from '@base-ui/react/button';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { Check, X } from 'lucide-react';\nimport * as React from 'react';\nimport { GradientBorder } from '@/components/ui/gradient-border';\nimport { Spinner } from '@/components/ui/spinner';\nimport { cn } from '@/lib/utils';\n\nconst buttonFocusExpansionClassName =\n 'focus-visible:scale-[1.015] motion-reduce:focus-visible:scale-100';\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 border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-[3px] aria-invalid:ring-[3px] [&_svg:not([class*='size-'])]:size-4 inline-flex origin-center items-center justify-center whitespace-nowrap transition-[color,background-color,border-color,box-shadow,transform,opacity] duration-200 ease-smooth motion-reduce:transition-none 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 appearance: {\n solid: `${buttonFocusExpansionClassName} delight-click-ripple`,\n gradient: `${buttonFocusExpansionClassName} bg-linear-[113deg] hover:opacity-80 delight-click-ripple`,\n soft: `${buttonFocusExpansionClassName} delight-click-ripple`,\n outline: `${buttonFocusExpansionClassName} bg-background shadow-xs`,\n ghost: `${buttonFocusExpansionClassName} bg-transparent`,\n link: 'border-none bg-transparent p-0 h-auto underline-offset-4 hover:underline focus-visible:ring-0 focus-visible:border-transparent',\n ai: `${buttonFocusExpansionClassName} bg-transparent border-0`,\n },\n variant: {\n primary: '',\n secondary: '',\n info: '',\n success: '',\n warning: '',\n destructive: '',\n },\n size: {\n default:\n 'h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pe-2 has-data-[icon=inline-start]:ps-2',\n xs: \"h-6 gap-1 px-2 text-xs has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: 'h-8 gap-1 px-2.5 has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5',\n md: 'h-10 gap-1.5 px-3.5 has-data-[icon=inline-end]:pe-3 has-data-[icon=inline-start]:ps-3',\n lg: 'h-11 gap-2 px-4 has-data-[icon=inline-end]:pe-3.5 has-data-[icon=inline-start]:ps-3.5',\n xl: \"h-12 gap-2 px-4.5 text-base has-data-[icon=inline-end]:pe-4 has-data-[icon=inline-start]:ps-4 [&_svg:not([class*='size-'])]:size-5\",\n '2xl':\n \"h-14 gap-2.5 px-5 text-lg has-data-[icon=inline-end]:pe-4.5 has-data-[icon=inline-start]:ps-4.5 [&_svg:not([class*='size-'])]:size-6\",\n icon: 'size-9',\n 'icon-xs': \"size-6 [&_svg:not([class*='size-'])]:size-3\",\n 'icon-sm': 'size-8',\n 'icon-lg': 'size-10',\n 'icon-xl': \"size-12 [&_svg:not([class*='size-'])]:size-5\",\n 'icon-2xl': \"size-14 [&_svg:not([class*='size-'])]:size-6\",\n },\n shape: {\n rounded: 'rounded-md',\n round: 'rounded-full',\n },\n },\n compoundVariants: [\n // ===== SOLID =====\n {\n appearance: 'solid',\n variant: 'primary',\n className: 'bg-primary text-primary-foreground hover:bg-primary-hover',\n },\n {\n appearance: 'solid',\n variant: 'secondary',\n className:\n 'bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground',\n },\n {\n appearance: 'solid',\n variant: 'info',\n className: 'bg-info text-info-foreground hover:bg-info/80',\n },\n {\n appearance: 'solid',\n variant: 'success',\n className: 'bg-success text-success-foreground hover:bg-success/80',\n },\n {\n appearance: 'solid',\n variant: 'warning',\n className: 'bg-warning text-warning-foreground hover:bg-warning/80',\n },\n {\n appearance: 'solid',\n variant: 'destructive',\n className:\n 'bg-destructive text-destructive-foreground hover:bg-destructive/80',\n },\n\n // ===== GRADIENT =====\n {\n appearance: 'gradient',\n variant: 'primary',\n className:\n 'from-custom-tw-gradient-from to-custom-tw-gradient-to text-primary-foreground hover:from-custom-tw-gradient-to hover:to-custom-tw-gradient-from',\n },\n {\n appearance: 'gradient',\n variant: 'secondary',\n className:\n 'from-secondary to-secondary/60 text-secondary-foreground hover:from-secondary/60 hover:to-secondary',\n },\n {\n appearance: 'gradient',\n variant: 'info',\n className:\n 'from-info to-info/60 text-info-foreground hover:from-info/60 hover:to-info',\n },\n {\n appearance: 'gradient',\n variant: 'success',\n className:\n 'from-success to-success/60 text-success-foreground hover:from-success/60 hover:to-success',\n },\n {\n appearance: 'gradient',\n variant: 'warning',\n className:\n 'from-warning to-warning/60 text-warning-foreground hover:from-warning/60 hover:to-warning',\n },\n {\n appearance: 'gradient',\n variant: 'destructive',\n className:\n 'from-destructive to-destructive/60 text-destructive-foreground hover:from-destructive/60 hover:to-destructive',\n },\n\n // ===== SOFT =====\n {\n appearance: 'soft',\n variant: 'primary',\n className:\n 'bg-primary/10 border-primary text-primary hover:bg-primary/20 hover:text-primary dark:bg-primary/30 dark:border-primary dark:text-primary dark:hover:bg-primary/50 shadow-xs',\n },\n {\n appearance: 'soft',\n variant: 'secondary',\n className:\n 'bg-secondary/10 text-secondary-foreground hover:bg-secondary/20',\n },\n {\n appearance: 'soft',\n variant: 'info',\n className: 'bg-info/10 text-info hover:bg-info/20',\n },\n {\n appearance: 'soft',\n variant: 'success',\n className: 'bg-success/10 text-success hover:bg-success/20',\n },\n {\n appearance: 'soft',\n variant: 'warning',\n className: 'bg-warning/10 text-warning hover:bg-warning/20',\n },\n {\n appearance: 'soft',\n variant: 'destructive',\n className:\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 },\n\n // ===== OUTLINE =====\n {\n appearance: 'outline',\n className:\n 'bg-card border-border backdrop-blur-[2px] shadow-none supports-backdrop-filter:backdrop-blur-[2px]',\n },\n {\n appearance: 'outline',\n shape: 'rounded',\n className: 'rounded-xl',\n },\n {\n appearance: 'outline',\n size: 'xs',\n className: 'h-[26px] gap-1 px-2',\n },\n {\n appearance: 'outline',\n size: 'sm',\n className: 'h-8 gap-1.5 px-2.5',\n },\n {\n appearance: 'outline',\n size: 'default',\n className: 'h-9 gap-2 px-4',\n },\n {\n appearance: 'outline',\n size: 'md',\n className: 'h-10 gap-2 px-4',\n },\n {\n appearance: 'outline',\n size: 'lg',\n className: 'h-10 gap-2 px-4.5',\n },\n {\n appearance: 'outline',\n variant: 'primary',\n className: 'border-border text-foreground hover:bg-muted/50',\n },\n {\n appearance: 'outline',\n variant: 'secondary',\n className:\n 'border-border text-secondary-foreground hover:bg-muted/50 aria-expanded:bg-muted/50 aria-expanded:text-foreground',\n },\n {\n appearance: 'outline',\n variant: 'info',\n className: 'border-border text-info hover:bg-info/10',\n },\n {\n appearance: 'outline',\n variant: 'success',\n className: 'border-border text-success hover:bg-success/10',\n },\n {\n appearance: 'outline',\n variant: 'warning',\n className: 'border-border text-warning hover:bg-warning/10',\n },\n {\n appearance: 'outline',\n variant: 'destructive',\n className: 'border-border text-destructive hover:bg-destructive/10',\n },\n\n // ===== GHOST =====\n {\n appearance: 'ghost',\n variant: 'primary',\n className: 'text-primary hover:bg-primary/10',\n },\n {\n appearance: 'ghost',\n variant: 'secondary',\n className:\n 'hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground',\n },\n {\n appearance: 'ghost',\n variant: 'info',\n className: 'text-info hover:bg-info/10',\n },\n {\n appearance: 'ghost',\n variant: 'success',\n className: 'text-success hover:bg-success/10',\n },\n {\n appearance: 'ghost',\n variant: 'warning',\n className: 'text-warning hover:bg-warning/10',\n },\n {\n appearance: 'ghost',\n variant: 'destructive',\n className: 'text-destructive hover:bg-destructive/10',\n },\n\n // ===== AI (inner button styling — GradientBorder wraps externally) =====\n {\n appearance: 'ai',\n variant: 'primary',\n className: 'text-primary hover:bg-primary/10',\n },\n {\n appearance: 'ai',\n variant: 'secondary',\n className: 'text-secondary-foreground hover:bg-muted',\n },\n\n // ===== LINK =====\n { appearance: 'link', variant: 'primary', className: 'text-primary' },\n {\n appearance: 'link',\n variant: 'secondary',\n className: 'text-secondary-foreground',\n },\n { appearance: 'link', variant: 'info', className: 'text-info' },\n { appearance: 'link', variant: 'success', className: 'text-success' },\n { appearance: 'link', variant: 'warning', className: 'text-warning' },\n {\n appearance: 'link',\n variant: 'destructive',\n className: 'text-destructive hover:text-destructive/80',\n },\n ],\n defaultVariants: {\n appearance: 'solid',\n variant: 'primary',\n size: 'default',\n shape: 'rounded',\n },\n },\n);\n\ntype DotColor = 'success' | 'error' | 'warning' | 'brand' | 'gray';\n\ntype ButtonAppearance =\n | 'solid'\n | 'gradient'\n | 'soft'\n | 'outline'\n | 'ghost'\n | 'link'\n | 'ai';\ntype ButtonVariant =\n | 'primary'\n | 'secondary'\n | 'info'\n | 'success'\n | 'warning'\n | 'destructive';\ntype ButtonShape = 'rounded' | 'round';\n\n/**\n * Render prop type for polymorphic rendering.\n * Accepts either a React element or a function that receives props and returns an element.\n * @template Props The props to be passed to the rendered element\n */\ntype RenderProp<Props> =\n | React.ReactElement\n | ((props: Props) => React.ReactElement);\n\nexport interface ButtonProps\n extends React.ComponentProps<'button'>,\n Pick<VariantProps<typeof buttonVariants>, 'size'> {\n /** Visual appearance - how the button renders */\n appearance?: ButtonAppearance;\n /** Semantic variant - what the button means */\n variant?: ButtonVariant;\n /** Shape of the button corners */\n shape?: ButtonShape;\n /** Shows a loading spinner and disables the button */\n loading?: boolean;\n /** Set to false when render targets a non-button element. */\n nativeButton?: boolean;\n /** Icon displayed at the start (inline-start) of the button text - respects RTL */\n startIcon?: React.ReactNode;\n /** Icon displayed at the end (inline-end) of the button text - respects RTL */\n endIcon?: React.ReactNode;\n /** Shows a colored dot indicator before the button text */\n dotIndicator?: boolean;\n /** Color of the dot indicator */\n dotColor?: DotColor;\n /** Badge content displayed after the button label. Text badges are styled from the button appearance and variant. */\n badge?: React.ReactNode;\n /** For icon-only buttons - renders just the icon without text wrapper */\n iconOnly?: boolean;\n /** Enables animated gradient border (only for appearance=\"ai\"). Auto-true when loading. */\n animated?: boolean;\n /**\n * Render prop for polymorphic rendering. Accepts either a React element or a render function.\n * Use this to render the button as a different element (e.g., link) while preserving button styles.\n * Note: When render is provided, loading/startIcon/endIcon/dotIndicator/badge are ignored.\n */\n render?: RenderProp<React.ComponentProps<'button'>>;\n}\n\nconst dotColorClasses: Record<DotColor, string> = {\n success: 'bg-success',\n error: 'bg-destructive',\n warning: 'bg-warning',\n brand: 'bg-primary',\n gray: 'bg-muted',\n};\n\nconst devWarnings = new Set<string>();\n\n/** Icon-only size variants for type-safe detection */\nconst ICON_SIZES = [\n 'icon',\n 'icon-xs',\n 'icon-sm',\n 'icon-lg',\n 'icon-xl',\n 'icon-2xl',\n] as const;\n\nconst SUCCESS_FLASH_DURATION_MS = 600;\n\nconst buttonBadgeShapeClasses: Record<ButtonShape, string> = {\n round: 'rounded-full',\n rounded: 'rounded-sm',\n};\n\nconst buttonBadgeWhiteColorClasses: Record<ButtonVariant, string> = {\n primary: 'text-primary',\n secondary: 'text-secondary-foreground',\n info: 'text-info',\n success: 'text-success',\n warning: 'text-warning',\n destructive: 'text-destructive',\n};\n\nconst buttonBadgeSoftColorClasses: Record<ButtonVariant, string> = {\n primary:\n 'bg-soft-primary text-soft-primary-foreground hover:bg-opacity-primary-20 dark:bg-soft-primary dark:text-soft-primary-foreground',\n secondary:\n 'bg-soft-secondary text-soft-secondary-foreground hover:bg-opacity-secondary-20 dark:bg-soft-secondary dark:text-soft-secondary-foreground',\n info: 'bg-soft-info text-soft-info-foreground hover:bg-opacity-info-20 dark:bg-soft-info dark:text-soft-info-foreground',\n success:\n 'bg-soft-success text-soft-success-foreground hover:bg-opacity-success-20 dark:bg-soft-success dark:text-soft-success-foreground',\n warning:\n 'bg-soft-warning text-soft-warning-foreground hover:bg-opacity-warning-20 dark:bg-soft-warning dark:text-soft-warning-foreground',\n destructive:\n 'bg-soft-destructive text-soft-destructive-foreground hover:bg-opacity-destructive-20 dark:bg-soft-destructive dark:text-soft-destructive-foreground',\n};\n\ntype LoadingSuccessState = {\n wasLoading: boolean;\n visible: boolean;\n token: number;\n};\n\nconst Dot = ({\n color = 'success',\n className,\n}: {\n color?: DotColor;\n className?: string;\n}) => (\n <span\n aria-hidden=\"true\"\n className={cn(\n 'size-2 rounded-full shrink-0 delight-breathing',\n dotColorClasses[color],\n className,\n )}\n />\n);\n\nfunction ButtonBadge({\n appearance,\n badge,\n shape,\n variant,\n}: {\n appearance: ButtonAppearance;\n badge: React.ReactNode;\n shape: ButtonShape;\n variant: ButtonVariant;\n}) {\n if (React.isValidElement(badge)) {\n return badge;\n }\n\n if (badge === true || badge === false || badge == null) {\n return null;\n }\n\n const badgeVariant =\n (appearance === 'solid' || appearance === 'gradient') &&\n variant !== 'secondary'\n ? 'white'\n : 'soft';\n\n return (\n <span\n data-slot=\"badge\"\n className={cn(\n 'inline-flex h-5 shrink-0 items-center justify-center gap-1.5 whitespace-nowrap px-2 py-0.5 text-xs font-medium transition-colors [&>svg]:size-3 [&>svg]:shrink-0 [&>svg]:pointer-events-none',\n buttonBadgeShapeClasses[shape],\n badgeVariant === 'white'\n ? 'bg-opacity-white-80 transition-opacity hover:opacity-80 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-current/50'\n : buttonBadgeSoftColorClasses[variant],\n badgeVariant === 'white' && buttonBadgeWhiteColorClasses[variant],\n )}\n >\n {badge}\n </span>\n );\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n children,\n loading = false,\n disabled,\n startIcon,\n endIcon,\n dotIndicator = false,\n dotColor = 'success',\n badge,\n iconOnly = false,\n animated,\n render,\n className,\n appearance = 'solid',\n variant = 'primary',\n shape = 'rounded',\n size = 'default',\n ...props\n },\n ref,\n ) => {\n // Dev-mode warning for icon-only buttons missing accessible label (once)\n if (\n process.env.NODE_ENV !== 'production' &&\n !devWarnings.has('icon-a11y')\n ) {\n const hasIconSize = ICON_SIZES.includes(\n size as (typeof ICON_SIZES)[number],\n );\n if (\n (iconOnly || hasIconSize) &&\n !props['aria-label'] &&\n !props['aria-labelledby']\n ) {\n devWarnings.add('icon-a11y');\n console.warn(\n 'Button: Icon-only buttons require an `aria-label` or `aria-labelledby` for accessibility.',\n );\n }\n }\n\n // Track loading→done transition before paint so the button never commits a\n // stale success state after the loading prop changes.\n const [successState, setSuccessState] = React.useState<LoadingSuccessState>(\n () => ({\n wasLoading: loading,\n visible: false,\n token: 0,\n }),\n );\n\n if (successState.wasLoading !== loading) {\n const shouldFlash = successState.wasLoading && !loading;\n setSuccessState({\n wasLoading: loading,\n visible: shouldFlash,\n token: shouldFlash ? successState.token + 1 : successState.token,\n });\n }\n\n React.useEffect(() => {\n if (!successState.visible) return;\n const token = successState.token;\n const timer = setTimeout(() => {\n setSuccessState((current) =>\n current.token === token ? { ...current, visible: false } : current,\n );\n }, SUCCESS_FLASH_DURATION_MS);\n return () => clearTimeout(timer);\n }, [successState.visible, successState.token]);\n\n const showSuccess = successState.visible && !loading;\n\n const isAi = appearance === 'ai';\n const isAnimated = isAi ? (animated ?? loading) : false;\n\n const buttonClassName = cn(\n buttonVariants({ appearance, variant, shape, size }),\n className,\n );\n\n // When render prop is provided, pass through to primitive\n // (ignores loading/startIcon/endIcon/dotIndicator/badge)\n if (render) {\n return (\n <ButtonPrimitive\n ref={ref}\n data-slot=\"button\"\n className={buttonClassName}\n render={render}\n {...props}\n >\n {children}\n </ButtonPrimitive>\n );\n }\n\n // Determine if this is an icon-only button based on size or explicit prop\n const isIconOnly =\n iconOnly || ICON_SIZES.includes(size as (typeof ICON_SIZES)[number]);\n const shouldComposeBadgeLabel =\n !isIconOnly &&\n !props['aria-label'] &&\n !props['aria-labelledby'] &&\n (typeof children === 'string' || typeof children === 'number') &&\n (typeof badge === 'string' || typeof badge === 'number');\n const buttonProps = shouldComposeBadgeLabel\n ? { ...props, 'aria-label': `${children} ${badge}` }\n : props;\n const buttonBadge = !isIconOnly ? (\n <ButtonBadge\n appearance={appearance}\n badge={badge}\n shape={shape}\n variant={variant}\n />\n ) : null;\n\n // Build the button element (icon-only or full)\n const buttonElement = isIconOnly ? (\n <ButtonPrimitive\n ref={isAi ? undefined : ref}\n data-slot=\"button\"\n disabled={disabled || loading}\n className={cn(buttonClassName, loading && 'relative')}\n {...buttonProps}\n >\n {loading ? (\n <Spinner className=\"delight-fade-in\" />\n ) : showSuccess ? (\n <Check className=\"delight-bounce-in\" />\n ) : (\n children\n )}\n </ButtonPrimitive>\n ) : (\n <ButtonPrimitive\n ref={isAi ? undefined : ref}\n data-slot=\"button\"\n disabled={disabled || loading}\n className={cn(buttonClassName, (loading || showSuccess) && 'relative')}\n {...buttonProps}\n >\n {loading && <Spinner className=\"absolute delight-fade-in\" />}\n {showSuccess && !loading && (\n <Check className=\"absolute delight-bounce-in\" />\n )}\n <span\n className={cn(\n 'flex items-center gap-2',\n (loading || showSuccess) && 'invisible',\n )}\n >\n {dotIndicator && <Dot color={dotColor} />}\n {startIcon}\n {children}\n {endIcon}\n {buttonBadge}\n </span>\n </ButtonPrimitive>\n );\n\n if (isAi) {\n return (\n <GradientBorder\n ref={ref as React.Ref<HTMLDivElement>}\n animated={isAnimated}\n active\n disabled={disabled}\n className=\"w-auto inline-flex motion-reduce:animate-none\"\n innerClassName=\"flex\"\n >\n {buttonElement}\n </GradientBorder>\n );\n }\n\n return buttonElement;\n },\n);\n\nButton.displayName = 'Button';\n\n/**\n * Clear/Close icon button - a ghost button specifically for close/clear actions\n * Commonly used in tags, dialogs, and dismissible elements\n */\nexport interface ClearButtonProps\n extends Omit<\n ButtonProps,\n | 'appearance'\n | 'variant'\n | 'children'\n | 'startIcon'\n | 'endIcon'\n | 'dotIndicator'\n > {\n /** Size of the clear button */\n size?: 'icon-xs' | 'icon-sm' | 'icon' | 'icon-lg' | 'icon-xl' | 'icon-2xl';\n}\n\nfunction ClearButton({\n className,\n size = 'icon-sm',\n ...props\n}: ClearButtonProps) {\n return (\n <Button\n appearance=\"ghost\"\n variant=\"secondary\"\n size={size}\n iconOnly\n className={cn(\n 'text-text-quaternary hover:text-secondary-foreground',\n className,\n )}\n aria-label=\"Clear\"\n {...props}\n >\n <X />\n </Button>\n );\n}\n\nClearButton.displayName = 'ClearButton';\n\nexport type { ButtonAppearance, ButtonShape, ButtonVariant };\nexport { Button, buttonVariants, ClearButton, Dot };\n"],"x_google_ignoreList":[0],"mappings":";;;;;;;;;mCAWaA,IAAsB,gBAAA,EAAM,WAAW,SAAgB,GAAgB,GAAc;AAChG,QAAM,EACJ,QAAA,GACA,WAAA,GACA,UAAA,IAAW,IACX,uBAAA,IAAwB,IACxB,cAAA,IAAe,IACf,OAAA,GACA,GAAG,EAAA,IACD,GACE,EACJ,gBAAA,GACA,WAAA,EAAA,IACE,EAAU;AAAA,IACZ,UAAA;AAAA,IACA,uBAAA;AAAA,IACA,QAAQ;AAAA,EACV,CAAC;AAID,SAAO,EAAiB,UAAU,GAAgB;AAAA,IAChD,OAAA,EAHA,UAAA,EAGI;AAAA,IACJ,KAAK,CAAC,GAAc,CAAS;AAAA,IAC7B,OAAO,CAAC,GAAc,CAAc;AAAA,EACtC,CAAC;AACH,CAAC,YC7BK,IACJ,qEAEI,IAAiB,EACrB,qrBACA;AAAA,EACE,UAAU;AAAA,IACR,YAAY;AAAA,MACV,OAAO,GAAG,CAAA;AAAA,MACV,UAAU,GAAG,CAAA;AAAA,MACb,MAAM,GAAG,CAAA;AAAA,MACT,SAAS,GAAG,CAAA;AAAA,MACZ,OAAO,GAAG,CAAA;AAAA,MACV,MAAM;AAAA,MACN,IAAI,GAAG,CAAA;AAAA,IACT;AAAA,IACA,SAAS;AAAA,MACP,SAAS;AAAA,MACT,WAAW;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS;AAAA,MACT,aAAa;AAAA,IACf;AAAA,IACA,MAAM;AAAA,MACJ,SACE;AAAA,MACF,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,OACE;AAAA,MACF,MAAM;AAAA,MACN,WAAW;AAAA,MACX,WAAW;AAAA,MACX,WAAW;AAAA,MACX,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAAA,IACA,OAAO;AAAA,MACL,SAAS;AAAA,MACT,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,kBAAkB;AAAA,IAEhB;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WACE;AAAA,IACJ;AAAA,IAGA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WACE;AAAA,IACJ;AAAA,IAGA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WACE;AAAA,IACJ;AAAA,IAGA;AAAA,MACE,YAAY;AAAA,MACZ,WACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,WAAW;AAAA,IACb;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,MAAM;AAAA,MACN,WAAW;AAAA,IACb;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,MAAM;AAAA,MACN,WAAW;AAAA,IACb;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,MAAM;AAAA,MACN,WAAW;AAAA,IACb;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,MAAM;AAAA,MACN,WAAW;AAAA,IACb;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,MAAM;AAAA,MACN,WAAW;AAAA,IACb;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IAGA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IAGA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IAGA;AAAA,MAAE,YAAY;AAAA,MAAQ,SAAS;AAAA,MAAW,WAAW;AAAA,IAAe;AAAA,IACpE;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA;AAAA,MAAE,YAAY;AAAA,MAAQ,SAAS;AAAA,MAAQ,WAAW;AAAA,IAAY;AAAA,IAC9D;AAAA,MAAE,YAAY;AAAA,MAAQ,SAAS;AAAA,MAAW,WAAW;AAAA,IAAe;AAAA,IACpE;AAAA,MAAE,YAAY;AAAA,MAAQ,SAAS;AAAA,MAAW,WAAW;AAAA,IAAe;AAAA,IACpE;AAAA,MACE,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AACF,CACF,GAiEM,IAA4C;AAAA,EAChD,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EACT,OAAO;AAAA,EACP,MAAM;AACR,GAKM,IAAa;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAEM,IAA4B,KAE5B,IAAuD;AAAA,EAC3D,OAAO;AAAA,EACP,SAAS;AACX,GAEM,IAA8D;AAAA,EAClE,SAAS;AAAA,EACT,WAAW;AAAA,EACX,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,aAAa;AACf,GAEM,IAA6D;AAAA,EACjE,SACE;AAAA,EACF,WACE;AAAA,EACF,MAAM;AAAA,EACN,SACE;AAAA,EACF,SACE;AAAA,EACF,aACE;AACJ,GAQM,KAAA,CAAO,EACX,OAAA,IAAQ,WACR,WAAA,EAAA,MAKA,oBAAA,EAAA,KAAC,QAAD;AAAA,EACE,eAAY;AAAA,EACZ,WAAW,EACT,kDACA,EAAgB,CAAA,GAChB,CACF;AACD,CAAA;AAGH,SAAS,GAAY,EACnB,YAAA,GACA,OAAA,GACA,OAAA,GACA,SAAA,EAAA,GAMC;AACD,MAAA,EAAU,eAAe,CAAK,EAC5B,QAAO;AAGT,MAAI,MAAU,MAAQ,MAAU,MAAS,KAAS,KAChD,QAAO;AAGT,QAAM,KACH,MAAe,WAAW,MAAe,eAC1C,MAAY,cACR,UACA;AAEN,SACE,oBAAA,EAAA,KAAC,QAAD;AAAA,IACE,aAAU;AAAA,IACV,WAAW,EACT,gMACA,EAAwB,CAAA,GACxB,MAAiB,UACb,0IACA,EAA4B,CAAA,GAChC,MAAiB,WAAW,EAA6B,CAAA,CAC3D;AAAA,cAEC;AAAA,EACG,CAAA;AAEV;AAEA,IAAM,IAAA,EAAe,WAAA,CAEjB,EACE,UAAA,GACA,SAAA,IAAU,IACV,UAAA,GACA,WAAA,GACA,SAAA,GACA,cAAA,IAAe,IACf,UAAA,IAAW,WACX,OAAA,GACA,UAAA,IAAW,IACX,UAAA,GACA,QAAA,GACA,WAAA,GACA,YAAA,IAAa,SACb,SAAA,IAAU,WACV,OAAA,IAAQ,WACR,MAAA,IAAO,WACP,GAAG,EAAA,GAEL,MACG;AAuBH,QAAM,CAAC,GAAc,CAAA,IAAA,EAAyB,SAAA,OACrC;AAAA,IACL,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,OAAO;AAAA,EACT,EACF;AAEA,MAAI,EAAa,eAAe,GAAS;AACvC,UAAM,IAAc,EAAa,cAAc,CAAC;AAChD,IAAA,EAAgB;AAAA,MACd,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,OAAO,IAAc,EAAa,QAAQ,IAAI,EAAa;AAAA,IAC7D,CAAC;AAAA,EACH;AAEA,EAAA,EAAM,UAAA,MAAgB;AACpB,QAAI,CAAC,EAAa,QAAS;AAC3B,UAAM,IAAQ,EAAa,OACrB,IAAQ,WAAA,MAAiB;AAC7B,MAAA,EAAA,CAAiB,MACf,EAAQ,UAAU,IAAQ;AAAA,QAAE,GAAG;AAAA,QAAS,SAAS;AAAA,MAAM,IAAI,CAC7D;AAAA,IACF,GAAG,CAAyB;AAC5B,WAAA,MAAa,aAAa,CAAK;AAAA,EACjC,GAAG,CAAC,EAAa,SAAS,EAAa,KAAK,CAAC;AAE7C,QAAM,IAAc,EAAa,WAAW,CAAC,GAEvC,IAAO,MAAe,MACtB,IAAa,IAAQ,KAAY,IAAW,IAE5C,IAAkB,EACtB,EAAe;AAAA,IAAE,YAAA;AAAA,IAAY,SAAA;AAAA,IAAS,OAAA;AAAA,IAAO,MAAA;AAAA,EAAK,CAAC,GACnD,CACF;AAIA,MAAI,EACF,QACE,oBAAA,EAAA,KAAC,GAAD;AAAA,IACO,KAAA;AAAA,IACL,aAAU;AAAA,IACV,WAAW;AAAA,IACH,QAAA;AAAA,IACR,GAAI;AAAA,IAEH,UAAA;AAAA,EACc,CAAA;AAKrB,QAAM,IACJ,KAAY,EAAW,SAAS,CAAmC,GAO/D,IALJ,CAAC,KACD,CAAC,EAAM,YAAA,KACP,CAAC,EAAM,iBAAA,MACN,OAAO,KAAa,YAAY,OAAO,KAAa,cACpD,OAAO,KAAU,YAAY,OAAO,KAAU,YAE7C;AAAA,IAAE,GAAG;AAAA,IAAO,cAAc,GAAG,CAAA,IAAY,CAAA;AAAA,EAAQ,IACjD,GACE,IAAe,IAOjB,OANF,oBAAA,EAAA,KAAC,IAAD;AAAA,IACc,YAAA;AAAA,IACL,OAAA;AAAA,IACA,OAAA;AAAA,IACE,SAAA;AAAA,EACV,CAAA,GAIG,IAAgB,IACpB,oBAAA,EAAA,KAAC,GAAD;AAAA,IACE,KAAK,IAAO,SAAY;AAAA,IACxB,aAAU;AAAA,IACV,UAAU,KAAY;AAAA,IACtB,WAAW,EAAG,GAAiB,KAAW,UAAU;AAAA,IACpD,GAAI;AAAA,cAEH,IACC,oBAAA,EAAA,KAAC,GAAD,EAAS,WAAU,kBAAmB,CAAA,IACpC,IACF,oBAAA,EAAA,KAAC,GAAD,EAAO,WAAU,oBAAqB,CAAA,IAEtC;AAAA,EAEa,CAAA,IAEjB,oBAAA,EAAA,MAAC,GAAD;AAAA,IACE,KAAK,IAAO,SAAY;AAAA,IACxB,aAAU;AAAA,IACV,UAAU,KAAY;AAAA,IACtB,WAAW,EAAG,IAAkB,KAAW,MAAgB,UAAU;AAAA,IACrE,GAAI;AAAA,cALN;AAAA,MAOG,KAAW,oBAAA,EAAA,KAAC,GAAD,EAAS,WAAU,2BAA4B,CAAA;AAAA,MAC1D,KAAe,CAAC,KACf,oBAAA,EAAA,KAAC,GAAD,EAAO,WAAU,6BAA8B,CAAA;AAAA,MAEjD,oBAAA,EAAA,MAAC,QAAD;AAAA,QACE,WAAW,EACT,4BACC,KAAW,MAAgB,WAC9B;AAAA,kBAJF;AAAA,UAMG,KAAgB,oBAAA,EAAA,KAAC,IAAD,EAAK,OAAO,EAAW,CAAA;AAAA,UACvC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACG;AAAA;IACS;AAAA;AAGnB,SAAI,IAEA,oBAAA,EAAA,KAAC,GAAD;AAAA,IACO,KAAA;AAAA,IACL,UAAU;AAAA,IACV,QAAA;AAAA,IACU,UAAA;AAAA,IACV,WAAU;AAAA,IACV,gBAAe;AAAA,cAEd;AAAA,EACa,CAAA,IAIb;AACT,CACF;AAEA,EAAO,cAAc;AAoBrB,SAAS,GAAY,EACnB,WAAA,GACA,MAAA,IAAO,WACP,GAAG,EAAA,GACgB;AACnB,SACE,oBAAA,EAAA,KAAC,GAAD;AAAA,IACE,YAAW;AAAA,IACX,SAAQ;AAAA,IACF,MAAA;AAAA,IACN,UAAA;AAAA,IACA,WAAW,EACT,wDACA,CACF;AAAA,IACA,cAAW;AAAA,IACX,GAAI;AAAA,cAEJ,oBAAA,EAAA,KAAC,GAAD,CAAI,CAAA;AAAA,EACE,CAAA;AAEZ;AAEA,GAAY,cAAc"}
@@ -58,22 +58,22 @@ var a = /* @__PURE__ */ R(B(), 1), s = L(), Z = S("relative flex gap-3 rounded-l
58
58
  {
59
59
  appearance: "solid",
60
60
  variant: "info",
61
- className: "bg-info text-primary-foreground [&>svg]:text-primary-foreground"
61
+ className: "bg-info text-info-foreground [&>svg]:text-info-foreground"
62
62
  },
63
63
  {
64
64
  appearance: "solid",
65
65
  variant: "success",
66
- className: "bg-success text-primary-foreground [&>svg]:text-primary-foreground"
66
+ className: "bg-success text-success-foreground [&>svg]:text-success-foreground"
67
67
  },
68
68
  {
69
69
  appearance: "solid",
70
70
  variant: "warning",
71
- className: "bg-warning text-primary-foreground [&>svg]:text-primary-foreground"
71
+ className: "bg-warning text-warning-foreground [&>svg]:text-warning-foreground"
72
72
  },
73
73
  {
74
74
  appearance: "solid",
75
75
  variant: "destructive",
76
- className: "bg-destructive text-primary-foreground [&>svg]:text-primary-foreground"
76
+ className: "bg-destructive text-destructive-foreground [&>svg]:text-destructive-foreground"
77
77
  },
78
78
  {
79
79
  appearance: "soft",
@@ -172,8 +172,8 @@ var a = /* @__PURE__ */ R(B(), 1), s = L(), Z = S("relative flex gap-3 rounded-l
172
172
  /* @__PURE__ */ (0, s.jsxs)("div", {
173
173
  className: "flex flex-1 flex-col gap-0.5 min-w-0",
174
174
  children: [
175
- n && /* @__PURE__ */ (0, s.jsx)(y, { children: n }),
176
- l && /* @__PURE__ */ (0, s.jsx)(w, { children: l }),
175
+ n && /* @__PURE__ */ (0, s.jsx)(w, { children: n }),
176
+ l && /* @__PURE__ */ (0, s.jsx)(y, { children: l }),
177
177
  j
178
178
  ]
179
179
  }),
@@ -196,22 +196,22 @@ var a = /* @__PURE__ */ R(B(), 1), s = L(), Z = S("relative flex gap-3 rounded-l
196
196
  });
197
197
  });
198
198
  _.displayName = "Alert";
199
- var y = a.forwardRef(({ className: e, children: r, ...t }, n) => /* @__PURE__ */ (0, s.jsx)("h5", {
199
+ var w = a.forwardRef(({ className: e, children: r, ...t }, n) => /* @__PURE__ */ (0, s.jsx)("h5", {
200
200
  ref: n,
201
201
  "data-slot": "alert-title",
202
202
  className: o("font-medium leading-5", e),
203
203
  ...t,
204
204
  children: r
205
205
  }));
206
- y.displayName = "AlertTitle";
207
- var w = a.forwardRef(({ className: e, children: r, ...t }, n) => /* @__PURE__ */ (0, s.jsx)("p", {
206
+ w.displayName = "AlertTitle";
207
+ var y = a.forwardRef(({ className: e, children: r, ...t }, n) => /* @__PURE__ */ (0, s.jsx)("p", {
208
208
  ref: n,
209
209
  "data-slot": "alert-description",
210
210
  className: o("text-sm leading-5 opacity-80", e),
211
211
  ...t,
212
212
  children: r
213
213
  }));
214
- w.displayName = "AlertDescription";
214
+ y.displayName = "AlertDescription";
215
215
  var J = O();
216
216
  function K(e) {
217
217
  return { onClose: (r) => {