magick-ui 0.2.1 → 0.2.3

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ui/Accordion/index.tsx","../../src/utils.ts","../../src/ui/Alert/index.tsx","../../src/ui/Avatar/index.tsx","../../src/ui/Tooltip/index.tsx","../../src/ui/Text/index.tsx","../../src/ui/AvatarListItem/index.tsx","../../src/ui/Badge/index.tsx","../../src/ui/IconContainer/index.tsx","../../src/ui/Breadcrumb/index.tsx","../../src/ui/Dropdown/index.tsx","../../src/ui/Button/index.tsx","../../src/ui/Button/ToolButton.tsx","../../src/ui/ButtonLink/index.tsx","../../src/ui/ButtonWithTooltip/index.tsx","../../src/ui/Calendar/index.tsx","../../src/ui/Card/index.tsx","../../src/ui/Carousel/index.tsx","../../src/ui/Checkbox/index.tsx","../../src/ui/Label/index.tsx","../../src/ui/Chip/index.tsx","../../src/ui/Combobox/index.tsx","../../src/ui/Popover/index.tsx","../../src/ui/ContextMenu/index.tsx","../../src/ui/DatePickerInput/index.tsx","../../src/ui/FileInput/index.tsx","../../src/ui/IconButton/index.tsx","../../src/ui/ProgressIndicator/index.tsx","../../src/ui/FileUpload/index.tsx","../../src/ui/GradientContainer/index.tsx","../../src/ui/Grid/index.tsx","../../src/ui/IconProfile/index.tsx","../../src/ui/Input/index.tsx","../../src/ui/LinkButton/index.tsx","../../src/ui/Media/index.tsx","../../src/ui/MultiSelect/index.tsx","../../src/ui/OTPInput/index.tsx","../../src/ui/PasswordInput/index.tsx","../../src/ui/Radio/index.tsx","../../src/ui/SearchInput/index.tsx","../../src/ui/SelectHover/index.tsx","../../src/ui/SelectInput/index.tsx","../../src/ui/Sheet/index.tsx","../../src/ui/Skeleton/index.tsx","../../src/ui/Slider/index.tsx","../../src/ui/Sooner/index.tsx","../../src/ui/Switch/index.tsx","../../src/ui/Table/index.tsx","../../src/ui/Tabs/index.tsx","../../src/ui/Tag/index.tsx","../../src/ui/TextAreaInput/index.tsx","../../src/ui/TimePicker/index.tsx","../../src/ui/Title/index.tsx","../../src/ui/Toggle/index.tsx","../../src/ui/ToggleDropdownButton/index.tsx","../../src/ui/ToggleDropdownButton/ToggleDropdownLeftButton.tsx","../../src/ui/ToggleDropdownButton/ToggleDropdownRightButton.tsx","../../src/ui/ToggleDropdownButton/useToggleDropdown.ts","../../src/ui/ToolToggle/index.tsx","../../src/ui/WrapperCard/index.tsx","../../src/ui/form/Base.tsx","../../src/ui/form/FormField.tsx","../../src/ui/form/Form.tsx"],"sourcesContent":["import * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { ChevronDownIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nfunction Accordion({\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />;\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\"border-b last:border-b-0\", className)}\n {...props}\n />\n );\n}\n\nfunction AccordionTrigger({\n className,\n children,\n isHidden,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger> & {\n isHidden?: boolean;\n}) {\n const sidebarOpenClass = cn(\"hidden opacity-0 transition-opacity\", {\n \"flex opacity-100\": !isHidden,\n });\n\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between rounded-md py-4 text-left text-sm font-medium transition-all outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180\",\n className,\n !isHidden && \"gap-4\",\n )}\n {...props}\n >\n {children}\n\n <ChevronDownIcon\n className={cn(\n \"pointer-events-none size-4 shrink-0 translate-y-0.5 text-inherit transition-transform duration-200\",\n sidebarOpenClass,\n )}\n />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm\"\n {...props}\n >\n <div className={cn(className)}>{children}</div>\n </AccordionPrimitive.Content>\n );\n}\n\nexport { Accordion, AccordionContent, AccordionItem, AccordionTrigger };\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport function getInitials(name: string) {\n if (!name) return \"\";\n const nameParts = name?.split(\" \");\n if (nameParts?.length === 1) {\n return nameParts[0][0];\n }\n return nameParts[0][0] + nameParts[nameParts.length - 1][0];\n}\n\nexport function getFirstName(name: string) {\n if (!name) return \"\";\n const nameParts = name?.split(\" \");\n return nameParts[0];\n}\n\nexport function truncateFileNameMid(name: string, maxLength = 28) {\n const dotIndex = name.lastIndexOf(\".\");\n if (dotIndex === -1 || name.length <= maxLength) return name;\n const ext = name.slice(dotIndex);\n const base = name.slice(0, dotIndex);\n const keep = maxLength - ext.length - 3;\n if (keep <= 0) return `...${ext}`;\n const startLen = Math.ceil(keep / 2);\n const endLen = Math.floor(keep / 2);\n return `${base.slice(0, startLen)}...${base.slice(-endLen)}${ext}`;\n}\n\nexport function getFileSize(size: number) {\n if (size < 1024) return `${size} B`;\n if (size < 1024 * 1024) return `${(size / 1024).toFixed(2)} KB`;\n if (size < 1024 * 1024 * 1024) return `${(size / 1024 / 1024).toFixed(2)} MB`;\n return `${(size / 1024 / 1024 / 1024).toFixed(2)} GB`;\n}\n\nexport function getPaginationItems(currentPage: number, totalPages: number, maxLength: number) {\n const res: Array<number> = [];\n if (totalPages <= maxLength) {\n for (let i = 1; i <= totalPages; i++) res.push(i);\n return res;\n }\n res.push(1);\n let start = Math.max(currentPage - Math.floor(maxLength / 2), 2);\n let end = Math.min(start + maxLength - 2, totalPages - 1);\n if (end - start < maxLength - 2) start = Math.max(end - maxLength + 2, 2);\n if (start > 2) res.push(-1);\n for (let i = start; i <= end; i++) res.push(i);\n if (end < totalPages - 1) res.push(-1);\n res.push(totalPages);\n return res;\n}\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg p-3 grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n secondary: \"bg-noticeBox-bg-secondary\",\n destructive:\n \"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\ninterface AlertProps\n extends React.ComponentProps<\"div\">,\n VariantProps<typeof alertVariants> {\n title?: string;\n description?: string;\n icon?: React.ReactNode;\n}\n\nfunction Alert({\n className,\n variant,\n title,\n description,\n icon,\n ...props\n}: AlertProps) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className, \"\")}\n {...props}\n >\n {icon}\n <div className=\"flex flex-col items-start gap-1\">\n {title && <BaseAlertTitle>{title}</BaseAlertTitle>}\n {description && (\n <BaseAlertDescription>{description}</BaseAlertDescription>\n )}\n </div>\n </div>\n );\n}\n\nfunction BaseAlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"leading-title-sm tracking-0 text-title-sm col-start-2 line-clamp-1 min-h-4 font-bold\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction BaseAlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"text-element-inverse-default tracking-0 leading-caption text-body-sm col-start-2 grid justify-items-start gap-1 font-medium [&_p]:leading-relaxed\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Alert, BaseAlertDescription, BaseAlertTitle };\n","import * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\nimport { cva } from \"class-variance-authority\";\nimport { Tooltip, type PositionProps } from \"@/ui/Tooltip\";\n\n// Types\ntype StatusSize = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\ntype AvatarSize =\n | \"xs\"\n | \"sm\"\n | \"md\"\n | \"lg\"\n | \"xl\"\n | \"2xl\"\n | \"3xl\"\n | \"4xl\"\n | \"5xl\";\ntype Status = \"active\" | \"inactive\";\n\n// Constants\nconst STATUS_SIZE = {\n sm: \"sm\",\n md: \"md\",\n lg: \"lg\",\n xl: \"xl\",\n \"2xl\": \"2xl\",\n} as const;\n\nconst AVATAR_SIZE_MAPPER = {\n xs: {\n className: \"size-5 !text-caption !font-semibold\",\n statusSize: STATUS_SIZE.sm,\n },\n sm: {\n className: \"size-6 !text-caption !font-semibold\",\n statusSize: STATUS_SIZE.sm,\n },\n md: {\n className: \"size-7 !text-caption !font-semibold\",\n statusSize: STATUS_SIZE.sm,\n },\n lg: {\n className: \"size-8 !text-title-sm !font-bold\",\n statusSize: STATUS_SIZE.md,\n },\n xl: {\n className: \"size-9 !text-title-sm !font-bold\",\n statusSize: STATUS_SIZE.md,\n },\n \"2xl\": {\n className: \"size-10 !text-title-lg !font-bold\",\n statusSize: STATUS_SIZE.md,\n },\n \"3xl\": {\n className: \"size-16 !text-h5 !font-bold\",\n statusSize: STATUS_SIZE.lg,\n },\n \"4xl\": {\n className: \"size-20 !text-h3 !font-bold\",\n statusSize: STATUS_SIZE.xl,\n },\n \"5xl\": {\n className: \"size-28 !text-h2 !font-bold\",\n statusSize: STATUS_SIZE[\"2xl\"],\n },\n} as const;\n\n// Styles\nconst statusVariants = cva(\n \"bg-fill-static-green-03 absolute right-0 bottom-0 rounded-unit-corner-radius-rounded-full border-unit-border-width-sm !border-stroke-inverse-slate-01\",\n {\n variants: {\n size: {\n sm: \"size-2 border-unit-border-width-sm\",\n md: \"size-[10px] border-unit-border-width-sm\",\n lg: \"size-[18px] border-unit-border-width-md\",\n xl: \"size-6 border-unit-border-width-md\",\n \"2xl\": \"size-8 border-unit-border-width-lg\",\n },\n status: {\n active: \"bg-fill-static-green-03\",\n inactive: \"bg-fill-static-slate-03\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n },\n);\n\n// Interfaces\ninterface BaseAvatarProps\n extends React.ComponentProps<typeof AvatarPrimitive.Root> {\n fallback: string;\n fallbackClassName?: string;\n status?: Status;\n size?: AvatarSize;\n tooltip?: React.ReactNode;\n tooltipPosition?: PositionProps;\n}\n\ninterface ImageAvatarProps extends BaseAvatarProps {\n variant: \"image\";\n imgsrc: string;\n}\n\ninterface TextAvatarProps extends BaseAvatarProps {\n variant: \"text\";\n}\n\ninterface EmptyAvatarProps extends BaseAvatarProps {\n variant: \"placeholder\";\n}\n\nexport type AvatarProps = ImageAvatarProps | TextAvatarProps | EmptyAvatarProps;\n\n// Avatar Content Components\nconst ImageAvatarContent: React.FC<{\n imgsrc: string;\n fallback: string;\n sizeConfig: (typeof AVATAR_SIZE_MAPPER)[keyof typeof AVATAR_SIZE_MAPPER];\n fallbackClassName?: string;\n}> = ({ imgsrc, fallback, sizeConfig, fallbackClassName }) => (\n <>\n <BaseAvatarImage src={imgsrc} />\n <BaseAvatarFallback\n className={cn(\n sizeConfig.className,\n \"bg-primary-bg-normal\",\n fallbackClassName,\n )}\n >\n {fallback}\n </BaseAvatarFallback>\n </>\n);\n\nconst EmptyAvatarContent: React.FC<{\n fallback: string;\n sizeConfig: (typeof AVATAR_SIZE_MAPPER)[keyof typeof AVATAR_SIZE_MAPPER];\n fallbackClassName?: string;\n}> = ({ fallback, sizeConfig, fallbackClassName }) => (\n <>\n <BaseAvatarImage src=\"\" className=\"bg-fill-inverse-slate-03\" />\n <BaseAvatarFallback\n className={cn(\n sizeConfig.className,\n \"bg-primary-bg-normal\",\n fallbackClassName,\n )}\n >\n {fallback}\n </BaseAvatarFallback>\n </>\n);\n\n// const IconAvatarContent: React.FC<{\n// icon: React.ReactNode;\n// }> = ({ icon }) => <>{icon}</>;\n\nconst TextAvatarContent: React.FC<{\n fallback: string;\n sizeConfig: (typeof AVATAR_SIZE_MAPPER)[keyof typeof AVATAR_SIZE_MAPPER];\n fallbackClassName?: string;\n}> = ({ fallback, sizeConfig, fallbackClassName }) => (\n <BaseAvatarFallback\n className={cn(\n sizeConfig.className,\n \"bg-fill-inverse-slate-03 text-element-inverse-default font-semibold\",\n fallbackClassName,\n )}\n >\n {fallback}\n </BaseAvatarFallback>\n);\n\n// Main Components\nfunction AvatarStack({\n stackCount = 1,\n size = \"md\",\n showCount = true,\n isLastOnTop = true,\n stackClassName,\n avatars = [],\n}: {\n stackCount?: number;\n size?: \"sm\" | \"md\" | \"lg\";\n showCount?: boolean;\n isLastOnTop?: boolean;\n avatars: AvatarProps[];\n stackClassName?: string;\n}) {\n const sizeMap = { sm: \"xs\", md: \"sm\", lg: \"md\" } as const;\n\n return (\n <div className={cn(\"flex items-center -space-x-2\", stackClassName)}>\n {avatars.slice(0, stackCount).map((avatar, index) => (\n <Avatar\n {...avatar}\n key={index}\n size={sizeMap[size]}\n className=\"outline-stroke-inverse-slate-01 outline-1\"\n style={{\n zIndex: isLastOnTop ? index + 1 : stackCount - index,\n }}\n />\n ))}\n {showCount && avatars.length > stackCount && (\n <Avatar\n variant=\"text\"\n fallback={`+${avatars.length - stackCount}`}\n size={sizeMap[size]}\n className=\"text-element-inverse-default text-caption leading-caption bg-fill-inverse-slate-03 border-stroke-inverse-slate-01 outline-stroke-inverse-slate-01 border font-semibold outline-1\"\n fallbackClassName=\"text-caption\"\n style={{\n zIndex: isLastOnTop ? avatars.length + 1 : 0,\n }}\n />\n )}\n </div>\n );\n}\n\nfunction Avatar({\n variant,\n fallback,\n status,\n size = \"sm\",\n className,\n fallbackClassName,\n tooltip,\n tooltipPosition = \"top\",\n ...props\n}: AvatarProps) {\n const sizeConfig = AVATAR_SIZE_MAPPER[size];\n\n const renderAvatarContent = () => {\n switch (variant) {\n case \"image\":\n return (\n <ImageAvatarContent\n imgsrc={(props as ImageAvatarProps).imgsrc}\n fallback={fallback}\n sizeConfig={sizeConfig}\n fallbackClassName={fallbackClassName}\n />\n );\n case \"text\":\n return (\n <TextAvatarContent\n fallback={fallback}\n sizeConfig={sizeConfig}\n fallbackClassName={fallbackClassName}\n />\n );\n case \"placeholder\":\n return (\n <EmptyAvatarContent\n fallback={fallback}\n sizeConfig={sizeConfig}\n fallbackClassName={fallbackClassName}\n />\n );\n default:\n return null;\n }\n };\n\n const avatarElement = (\n <div className=\"relative w-fit\">\n <BaseAvatar\n {...props}\n className={cn(\n sizeConfig.className,\n className,\n \"flex items-center justify-center text-center\",\n {\n \"bg-primary-bg-light\": variant === \"placeholder\",\n },\n \"flex items-center justify-center text-center\",\n )}\n >\n {renderAvatarContent()}\n </BaseAvatar>\n {!!status && (\n <BaseAvatarStatus status={status} size={sizeConfig.statusSize} />\n )}\n </div>\n );\n\n if (tooltip) {\n return (\n <Tooltip\n trigger={avatarElement}\n content={tooltip}\n position={tooltipPosition}\n />\n );\n }\n\n return avatarElement;\n}\n\n// Base Components\nfunction BaseAvatarStatus({\n className,\n status,\n size,\n ...props\n}: {\n className?: string;\n status: Status;\n size: StatusSize;\n} & React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(statusVariants({ size, status }), className)}\n {...props}\n />\n );\n}\n\nfunction BaseAvatar({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n className={cn(\n \"relative flex size-8 shrink-0 overflow-hidden rounded-full\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction BaseAvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\"aspect-square size-full\", className)}\n {...props}\n />\n );\n}\n\nfunction BaseAvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"bg-muted flex size-full items-center justify-center rounded-full\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Avatar, AvatarStack };\n","import * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n/**\n * position = where the whole tooltip is placed (side + alignment). Arrow follows: same edge and alignment.\n * E.g. \"bottom-right\" = tooltip below, aligned right; arrow on top edge at end (right).\n */\nexport type PositionProps =\n | \"top\"\n | \"top-center\"\n | \"top-left\"\n | \"top-right\"\n | \"bottom\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\"\n | \"left\"\n | \"right\";\n\ntype Side = \"top\" | \"bottom\" | \"left\" | \"right\";\ntype Align = \"start\" | \"center\" | \"end\";\n\n/** position = tooltip placement (side + align). No inversion. */\nfunction parsePosition(position: string): {\n side: Side;\n align: Align | undefined;\n} {\n const side: Side = /^top/.test(position)\n ? \"top\"\n : /^bottom/.test(position)\n ? \"bottom\"\n : /^left/.test(position)\n ? \"left\"\n : /^right/.test(position)\n ? \"right\"\n : \"top\";\n\n let align: Align | undefined;\n if (position.includes(\"-\")) {\n if (position.endsWith(\"-center\")) align = undefined;\n else if (/(left|top)$/.test(position)) align = \"start\";\n else if (/(right|bottom)$/.test(position)) align = \"end\";\n }\n\n return { side, align };\n}\n\nfunction getArrowPositionStyle(\n side: Side,\n align: Align | undefined\n): React.CSSProperties {\n const offset = 0; // 0.75rem\n if (align === \"start\") {\n if (side === \"top\" || side === \"bottom\")\n return { left: offset, right: \"auto\", transform: undefined };\n return { top: offset, bottom: \"auto\", transform: undefined };\n }\n if (align === \"end\") {\n if (side === \"top\" || side === \"bottom\")\n return { right: offset, left: \"auto\", transform: undefined };\n return { bottom: offset, top: \"auto\", transform: undefined };\n }\n return {};\n}\n\n/** Optional: wrap a subtree to share tooltip delay/behavior. Each Tooltip has its own context by default. */\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n );\n}\n\n// Main component: each Tooltip has its own Provider (separate context) so interactive content works when disableHoverableContent={false}.\nfunction Tooltip({\n trigger,\n content,\n position = \"top\",\n withArrow = true,\n className,\n disableHoverableContent = true,\n ...props\n}: {\n trigger: React.ReactNode;\n content: React.ReactNode;\n position?: PositionProps;\n withArrow?: boolean;\n className?: string;\n disableHoverableContent?: boolean;\n} & React.ComponentProps<typeof TooltipPrimitive.Root>) {\n const { side, align } = parsePosition(position);\n\n return (\n <TooltipPrimitive.Provider delayDuration={0}>\n <TooltipPrimitive.Root\n data-slot=\"tooltip\"\n disableHoverableContent={disableHoverableContent}\n {...props}\n >\n <TooltipPrimitive.Trigger asChild data-slot=\"tooltip-trigger\">\n {trigger}\n </TooltipPrimitive.Trigger>\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n side={side}\n align={align}\n sideOffset={0}\n className={cn(\n disableHoverableContent && \"pointer-events-none\",\n \"text-element-inverse-default-alt! font-medium bg-fill-inverse-slate-10 glass-effect rounded-unit-corner-radius-lg shadow-box\",\n \"animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:invisible data-[state=closed]:hidden\",\n \"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\",\n \"text-body-sm z-(--z-popover) w-fit origin-(--radix-tooltip-content-transform-origin) px-unit-8px py-unit-6px font-sans text-balance max-w-[500px]\",\n className\n )}\n >\n {content}\n {withArrow && (\n <TooltipPrimitive.Arrow\n data-slot=\"tooltip-arrow\"\n data-arrow-align={align}\n className=\"fill-fill-inverse-slate-10 z-(--z-popover)\"\n style={{\n ...getArrowPositionStyle(side, align),\n }}\n />\n )}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n </TooltipPrimitive.Provider>\n );\n}\n\nexport { Tooltip, TooltipProvider };\n","import { cn } from \"@/utils\";\nimport { forwardRef } from \"react\";\n\nexport const Text = forwardRef<\n HTMLParagraphElement,\n React.ComponentProps<\"p\"> & {\n className?: string;\n }\n>((props, ref) => {\n const { className, children, ...rest } = props;\n\n return (\n <p\n ref={ref}\n className={cn(\n \"text-body-sm! leading-body-sm text-element-inverse-default font-medium\",\n className\n )}\n {...rest}\n >\n {children}\n </p>\n );\n});\n\nText.displayName = \"Text\";\n","import { Avatar, Badge } from \"@/ui\";\nimport { Text } from \"@/ui/Text\";\nimport { cn, getInitials } from \"@/utils\";\nimport type { PositionProps } from \"@/ui/Tooltip\";\n\ntype AvatarListItemProps = {\n avatar: string;\n name: string;\n email: string;\n isMe?: boolean;\n className?: string;\n tooltip?: React.ReactNode;\n tooltipPosition?: PositionProps;\n};\n\nconst AvatarListItem = (props: AvatarListItemProps) => {\n const { avatar, name, email, isMe = false, className, tooltip, tooltipPosition } = props;\n\n return (\n <div className={cn(\"flex gap-3 p-2\", className)}>\n <Avatar\n fallback={getInitials(name)}\n variant=\"image\"\n imgsrc={avatar}\n size=\"2xl\"\n tooltip={tooltip}\n tooltipPosition={tooltipPosition}\n />\n\n <div className=\"flex flex-col\">\n <div className=\"flex flex-nowrap gap-1.5\">\n <Text className=\"text-title-sm font-semibold\">{name}</Text>\n\n {isMe && <Badge>You</Badge>}\n </div>\n\n <Text className=\"text-body-sm! text-element-inverse-gray truncate font-medium\">\n {email}\n </Text>\n </div>\n </div>\n );\n};\n\nexport default AvatarListItem;\n","import { cn } from \"@/utils\";\nimport { cva } from \"class-variance-authority\";\n\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport IconContainer from \"@/ui/IconContainer\";\n\nconst BadgeVariants = cva(\n \"w-full !text-caption leading-caption cursor-default flex max-w-fit items-center justify-center gap-0.5 font-medium\",\n {\n variants: {\n type: {\n // primary: \"bg-fill-static-blue-03 text-element-static-white\",\n \"primary-hard\": \"bg-fill-static-blue-03 text-element-static-white\",\n \"primary-soft\": \"bg-fill-inverse-blue-02 text-element-inverse-blue\",\n \"destructive-hard\": \"bg-fill-static-red-03 text-element-static-white\",\n \"destructive-soft\": \"bg-fill-inverse-red-02 text-element-inverse-red\",\n \"secondary-hard\":\n \"bg-fill-inverse-slate-09 text-element-inverse-default-alt\",\n \"secondary-soft\":\n \"bg-fill-inverse-slate-03 text-element-inverse-default\",\n },\n size: {\n sm: \"rounded-unit-corner-radius-sm py-unit-0px px-unit-4px\",\n md: \"rounded-unit-corner-radius-md py-unit-2px px-unit-6px\",\n },\n },\n },\n);\n\ninterface BadgeProps {\n type?:\n | \"primary-hard\"\n | \"primary-soft\"\n | \"destructive-hard\"\n | \"destructive-soft\"\n | \"secondary-hard\"\n | \"secondary-soft\";\n size?: \"sm\" | \"md\";\n rounded?: boolean;\n children: React.ReactNode;\n className?: string;\n prefixIcon?: React.ReactNode;\n suffixIcon?: React.ReactNode;\n}\n\n// Main component\nconst Badge = ({\n type = \"primary-hard\",\n children,\n size = \"sm\",\n className,\n rounded = false,\n prefixIcon,\n suffixIcon,\n}: BadgeProps) => {\n return (\n <BaseBadge\n className={cn(\n BadgeVariants({ type, size }),\n className,\n rounded ? \"!rounded-full\" : \"\",\n )}\n >\n {prefixIcon && (\n <IconContainer\n className={cn(\n \"h-5 w-5 p-0.5\",\n type.includes(\"hard\")\n ? \"[&_path]:fill-current\"\n : \"[&_path]:fill-current\",\n )}\n >\n {prefixIcon}\n </IconContainer>\n )}\n {children}\n {suffixIcon && (\n <IconContainer\n className={cn(\n \"h-5 w-5 p-0.5\",\n type.includes(\"hard\")\n ? \"[&_path]:fill-current\"\n : \"[&_path]:fill-current\",\n )}\n >\n {suffixIcon}\n </IconContainer>\n )}\n </BaseBadge>\n );\n};\n\n// Base components\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n destructive:\n \"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction BaseBadge({\n className,\n variant,\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"span\";\n\n return (\n <Comp\n data-slot=\"badge\"\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nexport { Badge, BaseBadge };\n","import { cn } from \"@/utils\";\nimport Lottie, { type LottieRefCurrentProps } from \"lottie-react\";\nimport * as React from \"react\";\nimport { useRef } from \"react\";\n\ntype IconContainerProps = {\n /**\n * Whether to apply fill colors to SVG paths (true) or use text color (false).\n * @default true\n */\n colorInFill?: boolean;\n /**\n * Whether to disable the theme.\n * @default false\n */\n disableTheme?: boolean;\n /**\n * The type of icon to display.\n * - `animated`: Displays an animated Lottie animation.\n * - `static`: Displays a static icon.\n * @default \"static\"\n */\n type?: \"animated\" | \"static\";\n /**\n * The size of the icon.\n * @default \"sm\"\n */\n size?:\n | \"xs\"\n | \"sm\"\n | \"md\"\n | \"lg\"\n | \"xl\"\n | \"2xl\"\n | \"3xl\"\n | \"4xl\"\n | \"5xl\"\n | \"6xl\"\n | \"auto\";\n} & React.HTMLAttributes<HTMLDivElement>;\n\ntype AnimatedIconProps = IconContainerProps & {\n type: \"animated\";\n isLoading?: boolean;\n animationData: unknown;\n};\n\ntype StaticIconProps = IconContainerProps & {\n type?: \"static\";\n children: React.ReactNode;\n};\n\nexport type IconProps = AnimatedIconProps | StaticIconProps;\n\nfunction isAnimatedIconProps(props: IconProps): props is AnimatedIconProps {\n return props.type === \"animated\";\n}\n\nexport default function IconContainer({\n colorInFill = true,\n type = \"static\",\n disableTheme = false,\n size = \"sm\",\n className,\n ...props\n}: IconProps) {\n const lottieRef = useRef<LottieRefCurrentProps>(null);\n\n const typedProps = { ...props, type } as IconProps;\n\n const isAnimated = isAnimatedIconProps(typedProps);\n\n // Get container size based on size prop\n const getContainerSize = (containerSize: IconContainerProps[\"size\"]) => {\n switch (containerSize) {\n case \"auto\":\n return \"\";\n case \"xs\":\n return \"h-[18px] w-[18px]\";\n case \"sm\":\n return \"h-5 w-5\";\n case \"md\":\n return \"w-6 h-6\";\n case \"lg\":\n return \"h-7 w-7\";\n case \"xl\":\n return \"h-8 w-8\";\n case \"2xl\":\n return \"h-9 w-9\";\n case \"3xl\":\n return \"h-11 w-11\";\n case \"4xl\":\n return \"h-14 w-14\";\n case \"5xl\":\n return \"h-[68px] w-[68px]\";\n case \"6xl\":\n return \"h-20 w-20\";\n default:\n return \"h-[18px] w-[18px]\";\n }\n };\n\n const handleMouseEnter = () => {\n lottieRef.current?.setDirection(1);\n lottieRef.current?.play();\n };\n const handleMouseLeave = () => {\n if (isAnimated && !typedProps.isLoading) {\n lottieRef.current?.setDirection(-1);\n lottieRef.current?.play();\n }\n };\n\n return (\n <div\n onMouseEnter={isAnimated ? handleMouseEnter : undefined}\n onMouseLeave={isAnimated ? handleMouseLeave : undefined}\n className={cn(\n \"flex shrink-0 items-center justify-center\",\n getContainerSize(size),\n {\n /* Styles for svg paths */\n \"[&_path]:fill-element-inverse-default dark:[&_path]:fill-element-inverse-defaul-alt\":\n !disableTheme && colorInFill,\n\n /* Styles for svg element */\n \"text-element-inverse-default\": !disableTheme && !colorInFill,\n\n /* Exception for button ai-outline variant */\n \"group-hover:group-data-[variant='ai-outline']:[&_path]:fill-element-inverse-default-alt! dark:group-hover:group-data-[variant='ai-outline']:[&_path]:fill-element-inverse-default!\":\n !disableTheme,\n },\n className,\n )}\n {...props}\n >\n {!isAnimated && (\n <>\n {React.Children.map(typedProps.children, (child) => {\n if (React.isValidElement(child)) {\n const childElement = child as React.ReactElement<any>;\n return React.cloneElement(childElement, {\n className: cn(\n \"h-full w-full\",\n childElement.props?.className || \"\",\n ),\n strokeWidth: 0.4,\n });\n }\n return child;\n })}\n </>\n )}\n {isAnimated && (\n <Lottie\n lottieRef={lottieRef}\n animationData={typedProps.animationData}\n loop={typedProps.isLoading}\n autoplay={typedProps.isLoading}\n />\n )}\n </div>\n );\n}\n","import { ChevronRight } from \"lucide-react\";\n\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/ui/Dropdown\";\nimport { cn } from \"@/utils\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport React from \"react\";\n\ninterface BreadcrumbItemType {\n label: string;\n href?: string;\n onlyIcon?: React.ReactNode;\n leadingIcon?: React.ReactNode;\n disabled?: boolean;\n}\n\ninterface BreadcrumbProps {\n items: BreadcrumbItemType[];\n className?: string;\n}\n\n// Common styles for breadcrumb items\nconst breadcrumbItemStyles =\n \"hover:bg-breadcrumb-bg-hover py-2px px-2px text-caption text-text-light rounded-md font-medium transition-colors duration-75\";\nconst disabledItemStyles =\n \"text-text-inactive bg-transparent hover:bg-transparent\";\nconst iconContainerStyles =\n \"flex h-[18px] w-[18px] items-center justify-center\";\nconst linkStyles = \"text-caption gap-x-4px flex items-center\";\n\n// Component to render item content (icon + label)\nconst ItemContent = ({ item }: { item: BreadcrumbItemType }) => {\n if (item.onlyIcon) {\n return (\n <span className=\"p-0.5\">\n <span className={iconContainerStyles}>{item.onlyIcon}</span>\n </span>\n );\n }\n\n if (item.leadingIcon) {\n return (\n <>\n <span className={iconContainerStyles}>{item.leadingIcon}</span>\n {item.label}\n </>\n );\n }\n\n return <span className=\"px-4px py-2px\">{item.label}</span>;\n};\n\n// Component to render a single breadcrumb item\nconst BreadcrumbItemContent = ({ item }: { item: BreadcrumbItemType }) => {\n if (item.disabled) {\n return (\n <BreadcrumbPage className={linkStyles}>\n <ItemContent item={item} />\n </BreadcrumbPage>\n );\n }\n\n return (\n <BreadcrumbLink href={item.href} className={linkStyles}>\n <ItemContent item={item} />\n </BreadcrumbLink>\n );\n};\n\nconst Breadcrumb = ({ items }: BreadcrumbProps) => {\n const renderItems = () => {\n const first = items[0];\n const middle = items.slice(1, items.length - 2);\n const lastTwo = items.slice(-2);\n\n return items.length >= 4 ? (\n <>\n {/* First item */}\n <BreadcrumbItem\n key={first.label}\n className={cn(\n breadcrumbItemStyles,\n first.disabled && disabledItemStyles,\n first.leadingIcon && \"pl-2px pr-4px\",\n )}\n >\n <ItemContent item={first} />\n </BreadcrumbItem>\n <BreadcrumbSeparator />\n\n {/* Dropdown ellipsis for middle items */}\n <BreadcrumbItem key=\"ellipsis\" className={cn(breadcrumbItemStyles)}>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <BreadcrumbEllipsis />\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\">\n {middle.map((item) => (\n <DropdownMenuItem key={item.label}>\n <BreadcrumbLink href={item.href} className={linkStyles}>\n <ItemContent item={item} />\n </BreadcrumbLink>\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n </BreadcrumbItem>\n <BreadcrumbSeparator />\n\n {/* Last two items */}\n {lastTwo.map((item, idx) => (\n <React.Fragment key={item.label}>\n <BreadcrumbItem\n className={cn(\n breadcrumbItemStyles,\n item.leadingIcon && \"pl-2px pr-4px\",\n item.disabled && disabledItemStyles,\n idx === lastTwo.length - 1 && \"text-text-default font-semibold\",\n )}\n >\n <BreadcrumbItemContent item={item} />\n </BreadcrumbItem>\n {idx < lastTwo.length - 1 && <BreadcrumbSeparator />}\n </React.Fragment>\n ))}\n </>\n ) : (\n items.map((item, idx) => (\n <React.Fragment key={item.label}>\n <BreadcrumbItem\n className={cn(\n breadcrumbItemStyles,\n item.leadingIcon && \"pl-2px pr-4px\",\n item.disabled && disabledItemStyles,\n idx === items.length - 1 && \"text-text-default font-semibold\",\n )}\n >\n <BreadcrumbItemContent item={item} />\n </BreadcrumbItem>\n {idx < items.length - 1 && <BreadcrumbSeparator />}\n </React.Fragment>\n ))\n );\n };\n\n return (\n <BaseBreadcrumb>\n <BreadcrumbList>{renderItems()}</BreadcrumbList>\n </BaseBreadcrumb>\n );\n};\n\nexport { Breadcrumb };\n\n// Base components\nfunction BaseBreadcrumb({ ...props }: React.ComponentProps<\"nav\">) {\n return <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />;\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n \"text-muted-foreground flex flex-wrap items-center gap-1 text-sm break-words\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbLink({\n asChild,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean;\n}) {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n data-slot=\"breadcrumb-link\"\n className={cn(\"hover:text-foreground transition-colors\", className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"text-foreground font-normal\", className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-[18px]\", className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n );\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex items-center justify-center px-1\", className)}\n {...props}\n >\n <span className=\"text-caption text-text-light\">...</span>\n <span className=\"sr-only\">More</span>\n </span>\n );\n}\n","import { cn } from \"@/utils\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { CheckIcon, ChevronRightIcon } from \"lucide-react\";\nimport { MagickoCheck } from \"magick-icons\";\nimport IconContainer from \"@/ui/IconContainer\";\n\n// Base components for dropdown menu\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\n}\n\nfunction DropdownMenuTrigger({\n isBgTransparent = true,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger> & {\n isBgTransparent?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n className={cn(\n props.className,\n \"text-element-inverse-default gap-x-unit-8px px-unit-12px py-unit-10px hover:bg-dropdown-hovered text-body-sm rounded-unit-corner-radius-lg flex cursor-pointer items-center font-medium whitespace-nowrap ring-0 transition-all outline-none\",\n {\n \"bg-transparent\": isBgTransparent,\n },\n )}\n />\n );\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"text-element-inverse-default bg-opacity-inverse-05 glass-effect border-stroke-inverse-slate-02 rounded-unit-corner-radius-3xl data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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 shadow-box p-unit-8px z-[var(--z-popover)] max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto border\",\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n showCheck = false,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n showCheck?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"hover:bg-dropdown-hovered p-unit-6px focus:bg-dropdown-hovered focus:bg-dropdown-bg-hover text-element-inverse-default [&_svg:not([class*='text-'])]:text-muted-foreground text-body-sm rounded-unit-corner-radius-lg relative flex cursor-pointer items-center justify-between gap-3 font-medium outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {children}\n {showCheck && <CheckIcon className=\"text-element-inverse-blue ml-auto\" />}\n </DropdownMenuPrimitive.Item>\n );\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n );\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n checkPosition = \"left\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem> & {\n checkPosition?: \"left\" | \"right\";\n}) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"text-element-inverse-default p-unit-6px hover:bg-dropdown-hovered focus:bg-dropdown-hovered rounded-unit-corner-radius-lg text-body-sm relative flex cursor-pointer items-center gap-2 outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {checkPosition === \"left\" && (\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <IconContainer disableTheme colorInFill={false}>\n <MagickoCheck className=\"[&_path]:fill-element-inverse-blue size-4\" />\n </IconContainer>\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n )}\n {children}\n {checkPosition === \"right\" && (\n <span className=\"pointer-events-none absolute right-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <IconContainer disableTheme colorInFill={false}>\n <MagickoCheck className=\"[&_path]:fill-element-inverse-blue size-4\" />\n </IconContainer>\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n )}\n </DropdownMenuPrimitive.RadioItem>\n );\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"text-element-inverse-default px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />;\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n hideChevron = false,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n hideChevron?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n {!hideChevron && <ChevronRightIcon className=\"ml-auto size-4\" />}\n </DropdownMenuPrimitive.SubTrigger>\n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n side,\n sideOffset,\n align,\n alignOffset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n sideOffset?: number;\n align?: \"start\" | \"center\" | \"end\";\n alignOffset?: number;\n}) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n {...(side && { side })}\n {...(sideOffset !== undefined && { sideOffset })}\n {...(align && { align })}\n {...(alignOffset !== undefined && { alignOffset })}\n className={cn(\n \"bg-surface-bg-container text-text-default data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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 z-[var(--z-popover)] min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-3xl p-1 shadow-lg\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n};\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Loader2Icon } from \"lucide-react\";\nimport * as React from \"react\";\nimport { cn } from \"@/utils\";\n\nexport interface ButtonProps\n extends Omit<React.ComponentProps<\"button\">, \"prefix\" | \"suffix\">,\n VariantProps<typeof buttonVariants> {\n size?: \"sm\" | \"md\" | \"lg\";\n state?: \"loading\" | \"default\";\n asChild?: boolean;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n onlyIcon?: boolean;\n children?: React.ReactNode;\n}\n\nconst buttonVariants = cva(\n \"flex group leading-body-sm line-height-body-sm items-center cursor-pointer justify-center gap-2 whitespace-nowrap rounded-md font-medium transition-all disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-[20px] shrink-0 [&_svg]:shrink-0 outline-none ring-0\",\n {\n variants: {\n variant: {\n // default:\n // \"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90\",\n primary:\n \"bg-button-primary-enabled text-element-static-white! hover:bg-button-primary-hovered active:bg-button-primary-pressed focus-visible:bg-button-primary-pressed disabled:bg-button-primary-disabled disabled:text-element-inverse-disabled!\",\n secondary:\n \"bg-button-secondary-enabled text-element-inverse-default-alt! hover:bg-button-secondary-hovered active:bg-button-secondary-pressed disabled:bg-button-secondary-disabled disabled:text-element-inverse-disabled!\",\n destructive:\n \"bg-button-destructive-enabled text-element-static-white! hover:bg-button-destructive-hovered active:bg-button-destructive-pressed disabled:bg-button-destructive-disabled disabled:text-element-inverse-disabled!\",\n outline:\n \"border border-stroke-inverse-slate-03 text-element-inverse-default rounded-unit-corner-radius-lg bg-button-outline-enabled hover:bg-button-outline-hovered active:bg-button-outline-pressed disabled:bg-button-outline-disabled disabled:text-element-inverse-disabled!\",\n ghost:\n \"bg-transparent text-element-inverse-default hover:bg-button-ghost-hovered active:bg-button-ghost-pressed disabled:bg-button-ghost-disabled disabled:text-element-inverse-disabled!\",\n soft: \"bg-button-soft-enabled text-element-inverse-default hover:bg-button-soft-hovered active:bg-button-soft-pressed disabled:bg-button-soft-disabled disabled:text-element-inverse-disabled!\",\n \"ai-filled\": \"relative\",\n \"ai-outline\": \"relative\",\n glass:\n \"glass-effect bg-button-glass-enabled border border-stroke-inverse-slate-01 hover:bg-button-glass-hovered active:bg-button-glass-pressed disabled:bg-button-glass-disabled\",\n },\n size: {\n sm: \"rounded-lg gap-1 px-1.5 py-1 text-body-sm\",\n // \"icon-sm\": \"p-4px rounded-md \",\n md: \"px-2.5 py-2 rounded-[10px] gap-2 text-body-sm\",\n // \"icon-md\": \"rounded-lg p-2\",\n lg: \"px-3.5 py-3 rounded-xl gap-2 text-body-lg\",\n // \"icon-lg\": \"rounded-xl p-3\",\n },\n\n state: {\n loading: \"opacity-80 cursor-progress\",\n default: \"\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n state: \"default\",\n },\n }\n);\n\nfunction getButtonPadding(\n size: string,\n prefix: React.ReactNode,\n suffix: React.ReactNode,\n onlyIcon?: boolean\n): string {\n if (prefix && suffix) {\n if (size === \"sm\") return \"px-1.5\";\n if (size === \"md\") return \"p-2.5\";\n if (size === \"lg\") return \"px-3\";\n } else if (prefix) {\n if (size === \"sm\") return \"pl-1.5 pr-2\";\n if (size === \"md\") return \"pl-2.5 py-2.5 pr-3\";\n if (size === \"lg\") return \"pl-3.5 pr-4\";\n } else if (suffix) {\n if (size === \"sm\") return \"pr-1.5 pl-2\";\n if (size === \"md\") return \"pl-3\";\n if (size === \"lg\") return \"pr-3.5 pl-4\";\n } else if (onlyIcon) {\n if (size === \"sm\") return \"p-1\";\n if (size === \"md\") return \"p-2\";\n if (size === \"lg\") return \"p-3\";\n }\n return \"\";\n}\n\nfunction Button({\n className,\n variant = \"primary\",\n state,\n size = \"md\",\n prefix,\n suffix,\n onlyIcon,\n asChild = false,\n children,\n ...props\n}: ButtonProps) {\n const Comp = asChild ? Slot : \"button\";\n const isDisabled = state === \"loading\" || props.disabled;\n\n const renderAffix = (node?: React.ReactNode) => {\n if (!node) return null;\n if (React.isValidElement(node)) {\n const nodeElement = node as React.ReactElement<{ className?: string }>;\n return React.cloneElement(nodeElement, {\n className: cn(\n nodeElement.props?.className || \"\",\n isDisabled && \"text-element-inverse-disabled\"\n ),\n });\n }\n return node;\n };\n\n if (variant === \"ai-filled\" || variant === \"ai-outline\") {\n const isAiFilled = variant === \"ai-filled\";\n\n return (\n <Comp\n data-variant={variant}\n data-slot=\"button\"\n className={cn(\"group relative cursor-pointer p-0.5\")}\n disabled={isDisabled}\n {...props}\n >\n <div\n className={cn(\n \"absolute inset-0 block\",\n buttonVariants({ size, className })\n )}\n style={{\n backgroundImage: \"none\",\n backgroundSize: \"cover\",\n backgroundPosition: \"center\",\n }}\n />\n <div\n className={cn(\n buttonVariants({ variant, size, className }),\n size === \"sm\" && \"rounded-[7px]\",\n size === \"md\" && \"rounded-[9px]\",\n size === \"lg\" && \"rounded-[11px]\",\n getButtonPadding(size, prefix, suffix, onlyIcon),\n {\n \"gap-1\": size === \"sm\",\n \"hover:text-element-inverse-default text-white hover:bg-white\":\n isAiFilled,\n \"text-element-inverse-default dark:bg-fill-background bg-white hover:bg-transparent hover:text-white\":\n !isAiFilled,\n }\n )}\n >\n {state === \"loading\" && <Loader2Icon className=\"animate-spin\" />}\n {renderAffix(prefix)}\n {children}\n {renderAffix(suffix)}\n </div>\n </Comp>\n );\n }\n\n return (\n <Comp\n data-variant={variant}\n data-slot=\"button\"\n className={cn(\n buttonVariants({ variant, size, className }),\n getButtonPadding(size || \"md\", prefix, suffix, onlyIcon || false)\n )}\n disabled={isDisabled}\n {...props}\n >\n {state === \"loading\" && <Loader2Icon className=\"animate-spin\" />}\n {renderAffix(prefix)}\n {children}\n {renderAffix(suffix)}\n </Comp>\n );\n}\n\nexport { Button, buttonVariants };\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\nimport { Loader2Icon } from \"lucide-react\";\n\nexport interface ToolButtonProps\n extends Omit<React.ComponentProps<\"button\">, \"prefix\" | \"suffix\">,\n VariantProps<typeof toolButtonVariants> {\n state?: \"loading\" | \"default\";\n asChild?: boolean;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n onlyIcon?: boolean;\n children?: React.ReactNode;\n}\n\nconst toolButtonVariants = cva(\n \"inline-flex items-center cursor-pointer justify-center gap-2 whitespace-nowrap rounded-md text-body-sm font-medium transition-all disabled:pointer-events-none disabled:bg-button-bg-inactive [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-[20px] shrink-0 [&_svg]:shrink-0 outline-none ring-0\",\n {\n variants: {\n variant: {\n primary:\n \"bg-button-bg-primaryDefault !text-white hover:bg-button-bg-primaryHover\",\n outline:\n \"border border-border-primary-light bg-button-bg-outlineDefault !text-text-default hover:bg-button-bg-outlineHover disabled:bg-button-bg-outlineDefault disabled:!text-text-inactive\",\n destructive:\n \"bg-button-bg-destructiveDefault !text-white hover:bg-button-bg-destructiveHover\",\n },\n size: {\n md: \"px-2.5 py-2 rounded-lg gap-2 text-body-sm\",\n lg: \"p-4 rounded-xl gap-2 text-body-sm\",\n },\n state: {\n loading: \"opacity-80 cursor-progress\",\n default: \"\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n state: \"default\",\n },\n },\n);\n\nfunction getToolButtonPadding(\n size: string,\n prefix: React.ReactNode,\n suffix: React.ReactNode,\n onlyIcon?: boolean,\n): string {\n if (size === \"md\") {\n if (prefix && suffix) return \"px-2\";\n else if (prefix) return \"pl-2 pr-2.5\";\n else if (suffix) return \"pr-2 pl-2.5\";\n else if (onlyIcon) return \"p-2\";\n }\n return \"p-4\";\n}\n\nfunction ToolButton({\n className,\n variant,\n state,\n size,\n prefix,\n suffix,\n onlyIcon,\n asChild = false,\n children,\n ...props\n}: ToolButtonProps) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"button\"\n type=\"button\"\n className={cn(\n toolButtonVariants({ variant, size, className }),\n getToolButtonPadding(size || \"md\", prefix, suffix, onlyIcon || false),\n )}\n disabled={state === \"loading\" || props.disabled}\n {...props}\n >\n {state === \"loading\" && <Loader2Icon className=\"animate-spin\" />}\n {prefix && prefix}\n {children}\n {suffix && suffix}\n </Comp>\n );\n}\n\nexport { ToolButton, toolButtonVariants };\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nexport interface ButtonLinkProps\n extends Omit<React.ComponentProps<\"a\">, \"children\" | \"prefix\" | \"suffix\">,\n VariantProps<typeof buttonLinkVariants> {\n asChild?: boolean;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n disabled?: boolean;\n children: React.ReactNode;\n}\n\nconst buttonLinkVariants = cva(\n \"inline-flex items-center gap-1 !text-body-sm cursor-pointer font-medium outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n {\n variants: {\n variant: {\n link: \"text-element-inverse-blue underline underline-offset-4\",\n \"text-link\": \"text-element-inverse-default\",\n error: \"text-element-inverse-red\",\n },\n },\n defaultVariants: {\n variant: \"link\",\n },\n }\n);\n\nfunction ButtonLink({\n className,\n variant,\n prefix,\n suffix,\n disabled = false,\n asChild = false,\n children,\n ...props\n}: ButtonLinkProps) {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n className={cn(buttonLinkVariants({ variant }), className, {\n \"text-element-inverse-disabled pointer-events-none hover:font-medium\":\n disabled,\n \"flex items-center gap-1\": prefix || suffix,\n })}\n aria-disabled={disabled}\n {...props}\n >\n {prefix && prefix}\n <span>{children}</span>\n {suffix && suffix}\n </Comp>\n );\n}\n\nexport { ButtonLink, buttonLinkVariants };\n","import type { TooltipProps } from \"@radix-ui/react-tooltip\";\nimport type { ComponentProps } from \"react\";\nimport { Tooltip } from \"@/ui/Tooltip\";\n\nexport default function ButtonWithTooltip({\n tooltip,\n button,\n}: {\n tooltip: Omit<ComponentProps<typeof Tooltip>, \"trigger\">;\n button: React.ReactNode;\n}) {\n return <Tooltip {...tooltip} trigger={button} />;\n}\n","import * as React from \"react\";\nimport { DayButton, DayPicker, getDefaultClassNames } from \"react-day-picker\";\n\nimport { cn } from \"@/utils\";\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from \"lucide-react\";\nimport { Button, buttonVariants } from \"@/ui/Button\";\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"];\n}) {\n const defaultClassNames = getDefaultClassNames();\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"group/calendar bg-fill-foreground p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className,\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\n \"flex gap-4 flex-col md:flex-row relative\",\n defaultClassNames.months,\n ),\n month: cn(\"flex flex-col w-full gap-4\", defaultClassNames.month),\n nav: cn(\n \"flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between\",\n defaultClassNames.nav,\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_previous,\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_next,\n ),\n month_caption: cn(\n \"flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)\",\n defaultClassNames.month_caption,\n ),\n dropdowns: cn(\n \"w-full flex items-center text-body-sm font-medium justify-center h-(--cell-size) gap-1.5\",\n defaultClassNames.dropdowns,\n ),\n dropdown_root: cn(\n \"relative has-focus:border-stroke-static-blue-03 border border-stroke-inverse-slate-02 shadow-xs has-focus:ring-stroke-static-blue-03 has-focus:ring-[3px] rounded-unit-corner-radius-md\",\n defaultClassNames.dropdown_root,\n ),\n dropdown: cn(\"absolute inset-0 opacity-0\", defaultClassNames.dropdown),\n caption_label: cn(\n \"select-none font-medium\",\n captionLayout === \"label\"\n ? \"text-body-sm\"\n : \"rounded-unit-corner-radius-md pl-2 pr-1 flex items-center gap-1 text-body-sm h-8 [&>svg]:text-element-inverse-gray [&>svg]:size-3.5\",\n defaultClassNames.caption_label,\n ),\n table: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"text-element-inverse-gray rounded-unit-corner-radius-md flex-1 font-normal text-body-sm select-none\",\n defaultClassNames.weekday,\n ),\n week: cn(\"flex w-full mt-2\", defaultClassNames.week),\n week_number_header: cn(\n \"select-none w-(--cell-size)\",\n defaultClassNames.week_number_header,\n ),\n week_number: cn(\n \"text-body-sm select-none text-element-inverse-gray\",\n defaultClassNames.week_number,\n ),\n day: cn(\n \"relative w-full h-full rounded-unit-corner-radius-md p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-unit-corner-radius-md [&:last-child[data-selected=true]_button]:rounded-r-unit-corner-radius-md group/day aspect-square select-none\",\n defaultClassNames.day,\n ),\n range_start: cn(\n \"rounded-l-unit-corner-radius-md bg-fill-inverse-slate-05\",\n defaultClassNames.range_start,\n ),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\n \"rounded-r-unit-corner-radius-md bg-fill-inverse-slate-05\",\n defaultClassNames.range_end,\n ),\n today: cn(\n \"bg-fill-inverse-slate-03 rounded-unit-corner-radius-md! data-[selected=true]:rounded-none\",\n defaultClassNames.today,\n ),\n outside: cn(\n \"text-element-inverse-gray aria-selected:text-element-inverse-gray\",\n defaultClassNames.outside,\n ),\n disabled: cn(\n \"text-element-inverse-disabled opacity-unit-md\",\n defaultClassNames.disabled,\n ),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n );\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />\n );\n }\n if (orientation === \"right\") {\n return (\n <ChevronRightIcon\n className={cn(\"size-4\", className)}\n {...props}\n />\n );\n }\n return (\n <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n );\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n );\n },\n ...components,\n }}\n {...props}\n />\n );\n}\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames();\n const ref = React.useRef<HTMLButtonElement>(null);\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus();\n }, [modifiers.focused]);\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"sm\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n \"data-[selected-single=true]:bg-button-primary-enabled data-[range-middle=true]:bg-fill-inverse-blue-01 data-[range-middle=true]:text-element-inverse-blue data-[range-start=true]:bg-button-primary-enabled data-[range-end=true]:bg-button-primary-enabled group-data-[focused=true]/day:border-stroke-static-blue-03 group-data-[focused=true]/day:ring-stroke-static-blue-03/50 data-[range-end=true]:rounded-unit-corner-radius-md data-[range-end=true]:rounded-r-unit-corner-radius-md data-[range-start=true]:rounded-unit-corner-radius-md data-[range-start=true]:rounded-l-unit-corner-radius-md [&>span]:text-body-sm [&>span]:opacity-unit-xl flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:!text-white data-[range-middle=true]:rounded-none data-[range-start=true]:!text-white data-[selected-single=true]:!text-white\",\n defaultClassNames.day,\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Calendar };\n","import * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"bg-card-bg-default border-border-primary-light hover:bg-card-bg-hover flex cursor-pointer flex-col gap-y-4 rounded-3xl border p-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"text-title-sm leading-none font-bold\", className)}\n {...props}\n />\n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div data-slot=\"card-content\" className={className} {...props} />;\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n};\n","import useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\nimport { Button } from \"@/ui\";\n\ntype CarouselApi = UseEmblaCarouselType[1];\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\ntype CarouselOptions = UseCarouselParameters[0];\ntype CarouselPlugin = UseCarouselParameters[1];\n\ntype CarouselProps = {\n opts?: CarouselOptions;\n plugins?: CarouselPlugin;\n orientation?: \"horizontal\" | \"vertical\";\n setApi?: (api: CarouselApi) => void;\n};\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\n api: ReturnType<typeof useEmblaCarousel>[1];\n scrollPrev: () => void;\n scrollNext: () => void;\n canScrollPrev: boolean;\n canScrollNext: boolean;\n} & CarouselProps;\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext);\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\");\n }\n\n return context;\n}\n\nfunction Carousel({\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins,\n );\n const [canScrollPrev, setCanScrollPrev] = React.useState(false);\n const [canScrollNext, setCanScrollNext] = React.useState(false);\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return;\n setCanScrollPrev(api.canScrollPrev());\n setCanScrollNext(api.canScrollNext());\n }, []);\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev();\n }, [api]);\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext();\n }, [api]);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n scrollPrev();\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault();\n scrollNext();\n }\n },\n [scrollPrev, scrollNext],\n );\n\n React.useEffect(() => {\n if (!api || !setApi) return;\n setApi(api);\n }, [api, setApi]);\n\n React.useEffect(() => {\n if (!api) return;\n onSelect(api);\n api.on(\"reInit\", onSelect);\n api.on(\"select\", onSelect);\n\n return () => {\n api?.off(\"select\", onSelect);\n };\n }, [api, onSelect]);\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation:\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n data-slot=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n const { carouselRef, orientation } = useCarousel();\n\n return (\n <div\n ref={carouselRef}\n className=\"overflow-hidden\"\n data-slot=\"carousel-content\"\n >\n <div\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const { orientation } = useCarousel();\n\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CarouselPrevious({\n className,\n variant = \"outline\",\n size = \"md\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button\n data-slot=\"carousel-previous\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -left-12 -translate-y-1/2\"\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n className,\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ChevronLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n}\n\nfunction CarouselNext({\n className,\n variant = \"outline\",\n size = \"md\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button\n data-slot=\"carousel-next\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -right-12 -translate-y-1/2\"\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n className,\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ChevronRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n );\n}\n\nexport {\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselNext,\n CarouselPrevious,\n type CarouselApi,\n};\n","import * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { CheckIcon, Minus } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\nimport { Label } from \"@/ui/Label\";\n\ntype CheckboxProps = React.ComponentProps<typeof CheckboxPrimitive.Root> & {\n indeterminate?: boolean;\n value: string;\n label?: string | React.ReactNode;\n subLabel?: string | React.ReactNode;\n};\n\nfunction Checkbox({\n className,\n value,\n label,\n subLabel,\n ...props\n}: CheckboxProps) {\n return (\n <div className=\"flex flex-nowrap items-start gap-2\">\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer focus-visible:ring-effect-ring-primary aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive rounded-unit-corner-radius-md size-4 h-5 w-5 shrink-0 border shadow-xs transition-shadow outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-50\",\n \"\",\n \"data-[state=unchecked]:hover:bg-fill-inverse-slate-02 data-[state=unchecked]:border-stroke-inverse-slate-03 data-[state=unchecked]:hover:border-stroke-static-slate-03 data-[state=unchecked]:disabled:bg-fill-inverse-slate-02 data-[state=unchecked]:disabled:border-stroke-inverse-slate-02\",\n \"\",\n \"data-[state=checked]:bg-check-box-and-radio-selected-enabled data-[state=checked]:text-element-static-white data-[state=checked]:active:bg-check-box-and-radio-selected-pressed data-[state=checked]:hover:bg-check-box-and-radio-selected-hovered data-[state=checked]:disabled:bg-check-box-and-radio-selected-disabled data-[state=checked]:disabled:border-stroke-inverse-slate-03 data-[state=checked]:border-transparent\",\n className,\n )}\n id={props.id || value}\n checked={props.checked}\n onCheckedChange={\n props.onChange as unknown as (checked: boolean) => void\n }\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current transition-none\"\n >\n {props.indeterminate ? (\n <Minus className=\"size-3.5\" />\n ) : (\n <CheckIcon className=\"size-3.5\" />\n )}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n\n <div className=\"flex flex-col gap-1\">\n {label ? <Label htmlFor={props.id || value}>{label}</Label> : null}\n {subLabel ? (\n <Label\n htmlFor={props.id || value}\n className=\"text-element-inverse-gray! text-body-sm font-medium\"\n >\n {subLabel}\n </Label>\n ) : null}\n </div>\n </div>\n );\n}\n\nexport { Checkbox };\n","import * as LabelPrimitive from \"@radix-ui/react-label\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"text-title-sm text-element-inverse-default flex items-center gap-2 leading-none font-semibold select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Label };\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { X } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn, getInitials } from \"@/utils\";\nimport { Avatar } from \"@/ui/Avatar\";\nimport IconContainer from \"@/ui/IconContainer\";\n\ntype IconContainerProps = {\n colorInFill?: boolean;\n disableTheme?: boolean;\n type?: \"static\";\n size?:\n | \"xs\"\n | \"sm\"\n | \"md\"\n | \"lg\"\n | \"xl\"\n | \"2xl\"\n | \"3xl\"\n | \"4xl\"\n | \"5xl\"\n | \"6xl\";\n className?: string;\n style?: React.CSSProperties;\n} & Omit<React.HTMLAttributes<HTMLDivElement>, \"children\">;\n\nconst chipVariants = cva(\n \"inline-flex items-center justify-center border py-unit-4px px-unit-8px text-body-sm font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-5 gap-1 focus-visible:ring-0 overflow-hidden\",\n {\n variants: {\n type: {\n rounded: \"rounded-full\",\n rectangle: \"rounded-unit-corner-radius-lg\",\n },\n color: {\n slate:\n \"border-stroke-inverse-slate-03 text-element-inverse-default bg-chip-slate-enabled hover:bg-chip-slate-hovered\",\n red: \"border-stroke-inverse-red-01 text-element-inverse-red bg-chip-red-enabled hover:bg-chip-red-hovered\",\n orange:\n \"border-stroke-inverse-orange-01 text-element-inverse-orange bg-chip-orange-enabled hover:bg-chip-orange-hovered\",\n amber:\n \"border-stroke-inverse-amber-01 text-element-inverse-amber bg-chip-amber-enabled hover:bg-chip-amber-hovered\",\n yellow:\n \"border-stroke-inverse-yellow-01 text-element-inverse-yellow bg-chip-yellow-enabled hover:bg-chip-yellow-hovered\",\n lime: \"border-stroke-inverse-lime-01 text-element-inverse-lime bg-chip-lime-enabled hover:bg-chip-lime-hovered\",\n green:\n \"border-stroke-inverse-green-01 text-element-inverse-green bg-chip-green-enabled hover:bg-chip-green-hovered\",\n emerald:\n \"border-stroke-inverse-emerald-01 text-element-inverse-emerald bg-chip-emerald-enabled hover:bg-chip-emerald-hovered\",\n teal: \"border-stroke-inverse-teal-01 text-element-inverse-teal bg-chip-teal-enabled hover:bg-chip-teal-hovered\",\n cyan: \"border-stroke-inverse-cyan-01 text-element-inverse-cyan bg-chip-cyan-enabled hover:bg-chip-cyan-hovered\",\n sky: \"border-stroke-inverse-sky-01 text-element-inverse-sky bg-chip-sky-enabled hover:bg-chip-sky-hovered\",\n blue: \"border-stroke-inverse-blue-01 text-element-inverse-blue bg-chip-blue-enabled hover:bg-chip-blue-hovered\",\n indigo:\n \"border-stroke-inverse-indigo-01 text-element-inverse-indigo bg-chip-indigo-enabled hover:bg-chip-indigo-hovered\",\n violet:\n \"border-stroke-inverse-violet-01 text-element-inverse-violet bg-chip-violet-enabled hover:bg-chip-violet-hovered\",\n purple:\n \"border-stroke-inverse-purple-01 text-element-inverse-purple bg-chip-purple-enabled hover:bg-chip-purple-hovered\",\n fuchsia:\n \"border-stroke-inverse-fuchsia-01 text-element-inverse-fuchsia bg-chip-fuchsia-enabled hover:bg-chip-fuchsia-hovered\",\n pink: \"border-stroke-inverse-pink-01 text-element-inverse-pink bg-chip-pink-enabled hover:bg-chip-pink-hovered\",\n rose: \"border-stroke-inverse-rose-01 text-element-inverse-rose bg-chip-rose-enabled hover:bg-chip-rose-hovered\",\n },\n },\n defaultVariants: {\n type: \"rounded\",\n color: \"slate\",\n },\n }\n);\n\n// Main component\nfunction Chip({\n type,\n color,\n dot = false,\n icon,\n avatar,\n closeBtn = false,\n label,\n className,\n children,\n iconContainerProps,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof chipVariants> & {\n dot?: boolean;\n icon?: React.ReactNode;\n avatar?: string;\n closeBtn?:\n | false\n | {\n onClick: (e: React.MouseEvent) => void;\n };\n label: string;\n iconContainerProps?: IconContainerProps;\n }) {\n return (\n <span\n data-slot=\"chip\"\n className={cn(\n chipVariants({ type, color }),\n \"cursor-default gap-1 px-2 py-1\",\n className,\n {\n \"pl-1.5\": dot || !!icon,\n \"pl-1\": !!avatar,\n }\n )}\n {...props}\n >\n {dot && <Dot color={color} className=\"size-2\" />}\n {icon && (\n <IconContainer\n colorInFill={false}\n className={cn(\n \"[&_path]:fill-(--iconColor)!\",\n iconContainerProps?.className\n )}\n style={\n {\n [\"--iconColor\"]:\n (color ?? \"slate\") === \"slate\"\n ? \"var(--color-element-inverse-default)\"\n : `var(--color-element-inverse-${color ?? \"slate\"})`,\n ...iconContainerProps?.style,\n } as React.CSSProperties & { [\"--iconColor\"]: string }\n }\n {...iconContainerProps}\n >\n {icon}\n </IconContainer>\n )}\n {avatar && (\n <Avatar\n variant=\"image\"\n size=\"xs\"\n imgsrc={avatar}\n fallback={getInitials(label)}\n tooltip={label}\n />\n )}\n {label && (\n <p className=\"leading-body-sm text-body-sm truncate font-medium\">\n {label}\n </p>\n )}\n {closeBtn && (\n <X\n size={20}\n className=\"cursor-pointer\"\n onClick={(e) => {\n if (!closeBtn) return;\n closeBtn.onClick(e);\n }}\n />\n )}\n {children}\n </span>\n );\n}\n\nexport { Chip, chipVariants };\n\n// Dot component\nconst dotVariants = cva(\"size-3 rounded-full p-0.5\", {\n variants: {\n color: {\n slate: \"bg-element-inverse-default\",\n red: \"bg-element-inverse-red\",\n orange: \"bg-element-inverse-orange\",\n amber: \"bg-element-inverse-amber\",\n yellow: \"bg-element-inverse-yellow\",\n lime: \"bg-element-inverse-lime\",\n green: \"bg-element-inverse-green\",\n emerald: \"bg-element-inverse-emerald\",\n teal: \"bg-element-inverse-teal\",\n cyan: \"bg-element-inverse-cyan\",\n sky: \"bg-element-inverse-sky\",\n blue: \"bg-element-inverse-blue\",\n indigo: \"bg-element-inverse-indigo\",\n violet: \"bg-element-inverse-violet\",\n purple: \"bg-element-inverse-purple\",\n fuchsia: \"bg-element-inverse-fuchsia\",\n pink: \"bg-element-inverse-pink\",\n rose: \"bg-element-inverse-rose\",\n },\n },\n defaultVariants: {\n color: \"slate\",\n },\n});\n\nfunction Dot({\n className,\n color,\n ...props\n}: VariantProps<typeof dotVariants> & { className?: string }) {\n return <div className={cn(dotVariants({ color }), className)} {...props} />;\n}\n","\"use client\";\n\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { Check, ChevronsUpDown, SearchIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\nimport { useEffect } from \"react\";\nimport { Button } from \"@/ui/Button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/ui/Popover\";\n\ninterface Option {\n value: string;\n label: string;\n}\n\ninterface ComboboxProps {\n options: Option[];\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n className?: string;\n disabled?: boolean;\n}\n\nexport function Combobox({\n options,\n value,\n onChange,\n placeholder = \"Select...\",\n className,\n disabled = false,\n}: ComboboxProps) {\n const [open, setOpen] = React.useState(false);\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n const [popoverWidth, setPopoverWidth] = React.useState<number>();\n\n useEffect(() => {\n if (open && triggerRef.current) {\n setPopoverWidth(triggerRef.current.offsetWidth);\n }\n }, [open]);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n ref={triggerRef}\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className={cn(\"w-full justify-between\", className)}\n disabled={disabled}\n >\n {value\n ? options.find((option) => option.value === value)?.label\n : placeholder}\n <ChevronsUpDown className=\"opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className=\"p-0\"\n style={popoverWidth ? { width: popoverWidth } : undefined}\n >\n <Command>\n <CommandInput placeholder={placeholder} className=\"h-9\" />\n <CommandList>\n <CommandEmpty>No option found.</CommandEmpty>\n <CommandGroup>\n {options.map((option) => (\n <CommandItem\n key={option.value}\n value={option.value}\n onSelect={(currentValue) => {\n onChange(currentValue === value ? \"\" : currentValue);\n setOpen(false);\n }}\n >\n {option.label}\n <Check\n className={cn(\n \"ml-auto\",\n value === option.value ? \"opacity-100\" : \"opacity-0\",\n )}\n />\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n}\n\nexport function Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n data-slot=\"command-input-wrapper\"\n className=\"border-input-border-primaryDefault flex h-9 items-center gap-2 border-b px-3\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nexport function CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\n \"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n );\n}\n\nexport function CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n \"text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n","import * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"glass-effect border-stroke-inverse-slate-02 text-text-default data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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 shadow-box z-[var(--z-popover)] min-w-24 max-w-72 origin-(--radix-popover-content-transform-origin) rounded-3xl border p-2 outline-hidden\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n );\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />;\n}\n\nexport { Popover, PopoverAnchor, PopoverContent, PopoverTrigger };\n","\"use client\";\n\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\";\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nfunction ContextMenu({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />;\n}\n\nfunction ContextMenuTrigger({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return (\n <ContextMenuPrimitive.Trigger data-slot=\"context-menu-trigger\" {...props} />\n );\n}\n\nfunction ContextMenuGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return (\n <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n );\n}\n\nfunction ContextMenuPortal({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n return (\n <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n );\n}\n\nfunction ContextMenuSub({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />;\n}\n\nfunction ContextMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return (\n <ContextMenuPrimitive.RadioGroup\n data-slot=\"context-menu-radio-group\"\n {...props}\n />\n );\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n );\n}\n\nfunction ContextMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n return (\n <ContextMenuPrimitive.SubContent\n data-slot=\"context-menu-sub-content\"\n className={cn(\n \"bg-surface-bg-container text-text-default data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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 border-border-primary-light z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n data-slot=\"context-menu-content\"\n className={cn(\n \"bg-surface-bg-container text-text-default data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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 border-border-primary-light z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-3xl border p-2 shadow-md\",\n className,\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n );\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"bg-dropdown-bg-default hover:bg-dropdown-bg-hover focus:bg-dropdown-bg-hover text-text-default data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground text-body-sm relative flex cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 font-medium outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n );\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.Label\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return (\n <ContextMenuPrimitive.Separator\n data-slot=\"context-menu-separator\"\n className={cn(\"bg-border-primary-light -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction ContextMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"context-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n ContextMenu,\n ContextMenuCheckboxItem,\n ContextMenuContent,\n ContextMenuGroup,\n ContextMenuItem,\n ContextMenuLabel,\n ContextMenuPortal,\n ContextMenuRadioGroup,\n ContextMenuRadioItem,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuTrigger,\n};\n","\"use client\";\n\nimport { format } from \"date-fns\";\nimport { CalendarDays } from \"lucide-react\";\nimport { ChevronDown } from \"magick-icons\";\nimport { cn } from \"@/utils\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/ui/Popover\";\nimport { Button } from \"@/ui/Button\";\nimport { Calendar } from \"@/ui/Calendar\";\nimport IconContainer from \"@/ui/IconContainer\";\n\ninterface DatePickerInputProps extends React.ComponentProps<\"button\"> {\n date: Date | undefined;\n setDate: (date: Date | undefined) => void;\n placeholder?: string;\n /**\n * If true, disables all dates before today.\n */\n disablePast?: boolean;\n prefixNode?: React.ReactNode;\n /**\n * If true, shows a clear button when a date is selected.\n */\n withClearButton?: boolean;\n}\n\nexport function DatePickerInput({\n date,\n setDate,\n placeholder,\n disablePast = false,\n prefixNode,\n withClearButton = false,\n ...props\n}: DatePickerInputProps) {\n return (\n <div className=\"group relative\">\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant={\"outline\"}\n className={cn(\n \"border-stroke-inverse-slate-03 hover:border-stroke-static-slate-04 focus-visible:border-stroke-static-blue-03 active:border-stroke-static-blue-03 relative z-[2] w-full justify-start rounded-lg border\",\n \"disabled:bg-button-outline-disabled disabled:text-element-inverse-disabled disabled:border-stroke-inverse-slate-03 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-100\",\n \"aria-invalid:border-stroke-inverse-red-01 aria-invalid:text-text-destructive aria-invalid:hover:border-stroke-inverse-red-02 aria-invalid:focus-visible:ring-effect-ring-destructive aria-invalid:active:ring-effect-ring-destructive\"\n )}\n {...props}\n >\n {prefixNode || <CalendarDays size={20} />}\n <div className=\"max-w-[15ch] truncate\">\n {date ? (\n format(date, \"d MMM yyyy\")\n ) : (\n <span\n className={cn(\n !date &&\n \"text-element-inverse-disabled! text-body-sm leading-body-sm text-left font-medium\"\n )}\n >\n {placeholder}\n </span>\n )}\n </div>\n\n <IconContainer className=\"ml-auto\">\n <ChevronDown />\n </IconContainer>\n </Button>\n </PopoverTrigger>\n\n <PopoverContent\n className=\"border-stroke-inverse-slate-02 w-auto rounded-3xl p-0 shadow-md\"\n align=\"start\"\n >\n <Calendar\n mode=\"single\"\n selected={date}\n onSelect={setDate}\n initialFocus\n {...(disablePast ? { disabled: { before: new Date() } } : {})}\n />\n {withClearButton && date && (\n <div className=\"border-t border-stroke-inverse-slate-02 p-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"w-full\"\n onClick={(e) => {\n e.stopPropagation();\n setDate(undefined);\n }}\n >\n Clear all\n </Button>\n </div>\n )}\n </PopoverContent>\n </Popover>\n </div>\n );\n}\n","import { XIcon } from \"lucide-react\";\nimport * as React from \"react\";\nimport { cn } from \"@/utils\";\nimport { getFileSize } from \"@/utils\";\nimport { Button } from \"@/ui/Button\";\nimport IconButton from \"@/ui/IconButton\";\nimport { ProgressIndicator } from \"@/ui/ProgressIndicator\";\n\ntype FileInputProps = Omit<\n React.ComponentProps<\"input\">,\n \"type\" | \"onChange\"\n> & {\n label?: string;\n helperText?: string;\n error?: boolean;\n file?: File | null;\n isPending?: boolean; // Upload pending state from mutation\n onRemove?: () => void;\n onFileChange?: (file: File | null) => void;\n isUploaded?: boolean;\n accept?: string;\n multiple?: boolean;\n};\n\nexport const FileInput = ({\n label,\n helperText,\n error = false,\n file,\n isPending = false,\n onRemove,\n onFileChange,\n className,\n isUploaded = false,\n disabled,\n accept,\n multiple = false,\n id,\n ...props\n}: FileInputProps) => {\n const inputRef = React.useRef<HTMLInputElement>(null);\n const [selectedFile, setSelectedFile] = React.useState<File | null>(\n file || null\n );\n const [animatedProgress, setAnimatedProgress] = React.useState(0);\n const animationRef = React.useRef<NodeJS.Timeout | null>(null);\n\n // Reset animated progress when file changes or is removed\n React.useEffect(() => {\n if (!selectedFile) {\n setAnimatedProgress(0);\n if (animationRef.current) {\n clearInterval(animationRef.current);\n animationRef.current = null;\n }\n }\n }, [selectedFile]);\n\n // Reset state when file prop changes\n React.useEffect(() => {\n if (!file) {\n // Reset all state when file is removed\n setSelectedFile(null);\n setAnimatedProgress(0);\n if (animationRef.current) {\n clearInterval(animationRef.current);\n animationRef.current = null;\n }\n return;\n }\n\n // This ensures we always have the latest file reference\n const fileId = `${file.name}-${file.size}-${file.lastModified}`;\n const currentFileId = selectedFile\n ? `${selectedFile.name}-${selectedFile.size}-${selectedFile.lastModified}`\n : null;\n\n // Only update if it's actually a different file\n if (fileId !== currentFileId) {\n // Reset all state for new file\n setSelectedFile(file);\n setAnimatedProgress(0);\n if (animationRef.current) {\n clearInterval(animationRef.current);\n animationRef.current = null;\n }\n } else if (selectedFile !== file) {\n // Same file but different reference - update the reference\n setSelectedFile(file);\n }\n }, [file, selectedFile]);\n\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files;\n if (!files || files.length === 0) {\n setSelectedFile(null);\n onFileChange?.(null);\n return;\n }\n\n const newFile = files[0];\n setSelectedFile(newFile);\n onFileChange?.(newFile);\n };\n\n const handleRemove = (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n // Clear input first\n if (inputRef.current) {\n inputRef.current.value = \"\";\n }\n\n // Reset state immediately\n setSelectedFile(null);\n setAnimatedProgress(0);\n if (animationRef.current) {\n clearInterval(animationRef.current);\n animationRef.current = null;\n }\n\n // Call onRemove first to remove from parent state immediately\n // This prevents any race conditions\n onRemove?.();\n // Then call onFileChange to sync\n onFileChange?.(null);\n };\n\n // Cleanup on unmount\n React.useEffect(() => {\n return () => {\n if (animationRef.current) {\n clearInterval(animationRef.current);\n animationRef.current = null;\n }\n };\n }, []);\n\n const handleChooseFile = () => {\n inputRef.current?.click();\n };\n\n const fileSize = selectedFile ? getFileSize(selectedFile.size) : \"\";\n\n // Animate progress when pending\n React.useEffect(() => {\n // Clear any existing animation\n if (animationRef.current) {\n clearInterval(animationRef.current);\n animationRef.current = null;\n }\n\n if (isUploaded) {\n setAnimatedProgress(100);\n return;\n }\n\n if (!isPending) {\n setAnimatedProgress(0);\n return;\n }\n\n // Animate progress smoothly from 0 to 100% while pending\n const targetProgress = 100;\n const duration = 300; // 0.3 seconds to reach 90%\n const steps = 13; // 13 steps for smooth animation\n const stepDuration = duration / steps;\n const increment = targetProgress / steps;\n\n setAnimatedProgress(0);\n\n let currentProgress = 0;\n animationRef.current = setInterval(() => {\n currentProgress += increment;\n if (currentProgress >= targetProgress) {\n currentProgress = targetProgress;\n setAnimatedProgress(targetProgress);\n if (animationRef.current) {\n clearInterval(animationRef.current);\n animationRef.current = null;\n }\n } else {\n setAnimatedProgress(currentProgress);\n }\n }, stepDuration);\n\n return () => {\n if (animationRef.current) {\n clearInterval(animationRef.current);\n animationRef.current = null;\n }\n };\n }, [isPending, isUploaded]);\n\n const progressPercentage = isUploaded ? 100 : animatedProgress;\n const isUploadingState = isPending && !isUploaded;\n\n const borderColor = error\n ? \"border-stroke-inverse-red-01 hover:border-stroke-inverse-red-02\"\n : isUploadingState\n ? \"border-stroke-static-blue-03\"\n : \"border-stroke-inverse-slate-03 hover:border-stroke-static-slate-04\";\n\n const bgColor = selectedFile\n ? \"bg-fill-inverse-slate-01\"\n : \"bg-input-outline-enabled hover:bg-input-outline-hovered\";\n\n return (\n <div className={cn(\"flex w-full flex-col gap-1\", className)}>\n {label && (\n <label\n htmlFor={id}\n className={cn(\n \"text-body-sm font-medium\",\n disabled\n ? \"text-element-inverse-disabled\"\n : \"text-element-inverse-default\"\n )}\n >\n {label}\n </label>\n )}\n\n {/* File Input Container */}\n <div\n className={cn(\n \"group rounded-unit-corner-radius-xl relative flex min-h-10 w-full items-center border transition-[color,box-shadow]\",\n borderColor,\n bgColor,\n {\n \"pointer-events-none cursor-not-allowed opacity-50\": disabled,\n \"focus-within:ring-1 focus-within:outline-none\": !disabled,\n \"focus-within:ring-effect-ring-destructive focus-within:border-stroke-inverse-red-02\":\n error && !disabled,\n \"focus-within:ring-effect-ring-primary focus-within:border-stroke-static-blue-03\":\n !error && !disabled && isUploadingState,\n }\n )}\n >\n <input\n ref={inputRef}\n type=\"file\"\n id={id}\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n onChange={handleFileChange}\n className=\"hidden\"\n {...props}\n />\n\n {!selectedFile ? (\n /* Empty State - Choose File Button */\n <Button\n type=\"button\"\n onClick={handleChooseFile}\n disabled={disabled}\n variant=\"outline\"\n className={cn(\n \"h-full w-full justify-start gap-2 rounded-lg border-0 px-3 py-2 shadow-none\",\n error\n ? \"border-input-border-destructiveDefault hover:border-input-border-destructiveHover\"\n : \"border-input-border-primaryDefault hover:border-input-border-primaryHover\"\n )}\n >\n <span className=\"w-[77px] font-semibold\">Choose file</span>\n <span className=\"text-element-inverse-disabled\">\n No file chosen\n </span>\n </Button>\n ) : (\n /* File Selected State */\n <div className=\"gap-x-unit-8px grid w-full grid-cols-4 px-3 py-2\">\n <div\n className={cn(\"gap-x-unit-10px col-span-3 flex items-center\", {\n \"col-span-2\": isUploadingState,\n \"cursor-pointer\": !disabled,\n })}\n onClick={!disabled ? handleChooseFile : undefined}\n role={!disabled ? \"button\" : undefined}\n tabIndex={!disabled ? 0 : undefined}\n onKeyDown={\n !disabled\n ? (e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleChooseFile();\n }\n }\n : undefined\n }\n >\n {/* Choose file button (always visible) */}\n <p className=\"text-body-sm leading-body-sm text-element-inverse-default font-medium\">\n Selected\n </p>\n\n {/* File name */}\n <span\n className={cn(\n \"text-body-sm leading-body-sm min-w-0 max-w-[18ch] truncate flex-1 font-medium\",\n disabled\n ? \"text-element-inverse-disabled\"\n : \"text-element-inverse-default\"\n )}\n >\n {selectedFile.name}\n </span>\n </div>\n <div\n className={cn(\"col-span-1 flex items-center justify-end gap-2\", {\n \"col-span-2\": isUploadingState,\n })}\n >\n {/* File size */}\n <span\n className={cn(\n \"text-body-sm tracking-tight whitespace-nowrap\",\n disabled\n ? \"text-element-inverse-disabled\"\n : \"text-element-inverse-gray\"\n )}\n >\n {fileSize}\n </span>\n\n {/* Circular progress indicator */}\n {isUploadingState && (\n <ProgressIndicator\n variant=\"circle\"\n value={progressPercentage}\n />\n )}\n\n {/* Remove button */}\n {!disabled && onRemove && (\n <IconButton\n varient=\"ghost\"\n type=\"button\"\n onClick={handleRemove}\n aria-label=\"Remove file\"\n icon={<XIcon className=\"size-4\" />}\n />\n )}\n </div>\n </div>\n )}\n </div>\n\n {/* Helper Text */}\n {helperText && (\n <p\n className={cn(\n \"text-body-sm\",\n error\n ? \"text-element-inverse-red\"\n : disabled\n ? \"text-element-inverse-disabled\"\n : \"text-element-inverse-gray\"\n )}\n >\n {helperText}\n </p>\n )}\n </div>\n );\n};\n","import { cn } from \"@/utils\";\nimport { cva } from \"class-variance-authority\";\nimport { Button, type ButtonProps } from \"@/ui/Button\";\nimport IconContainer from \"@/ui/IconContainer\";\n\ntype IconButtonSize = \"xs\" | \"sm\" | \"md\" | \"lg\";\n\ninterface IconButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n icon: React.ReactNode;\n disableTheme?: boolean;\n varient?: ButtonProps[\"variant\"];\n size?: IconButtonSize;\n active?: boolean;\n colorInFill?: boolean;\n rounded?: boolean;\n}\n\nconst iconButtonVariants = cva(\n \"cursor-pointer flex items-center justify-center disabled:pointer-events-none disabled:text-element-inverse-disabled\",\n {\n variants: {\n size: {\n xs: \"p-unit-4px rounded-unit-corner-radius-lg w-[26px] h-[26px]\",\n sm: \"p-unit-4px rounded-unit-corner-radius-lg w-7 h-7\",\n md: \"p-unit-10px rounded-unit-corner-radius-xl w-10 h-10\",\n lg: \"p-unit-12px rounded-unit-corner-radius-2xl w-12 h-12\",\n },\n active: {\n true: \"ring ring-offset-1 ring-stroke-inverse-blue-02! border border-stroke-inverse-slate-01 bg-menu-panel-selected-enabled \",\n },\n rounded: {\n true: \"!rounded-unit-corner-radius-rounded-full\",\n },\n },\n }\n);\n\nexport default function IconButton({\n icon,\n varient = \"primary\",\n size = \"sm\",\n rounded = false,\n active = false,\n className,\n colorInFill = true,\n disableTheme = false,\n ...props\n}: IconButtonProps) {\n const iconSize =\n size === \"xs\"\n ? \"xs\"\n : size === \"sm\"\n ? \"sm\"\n : size === \"md\"\n ? \"sm\"\n : size === \"lg\"\n ? \"md\"\n : \"md\";\n return (\n <Button\n type=\"button\"\n className={cn(iconButtonVariants({ size, rounded, active }), className)}\n variant={varient}\n {...props}\n >\n <IconContainer\n colorInFill={colorInFill}\n disableTheme={disableTheme}\n className={cn({\n // \"[&_path]:fill-element-inverse-disabled!\": props.disabled,\n })}\n size={iconSize}\n >\n {icon}\n </IconContainer>\n </Button>\n );\n}\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"@/utils\";\n\nconst progressIndicatorVariants = cva(\n \"transition-all duration-300 ease-in-out p-unit-2px\",\n {\n variants: {\n variant: {\n bar: \"relative w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700 h-4\",\n circle: \"relative inline-flex items-center justify-center w-16 h-16\",\n },\n },\n defaultVariants: {\n variant: \"bar\",\n },\n }\n);\n\nconst progressFillVariants = cva(\n \"transition-all duration-300 ease-in-out bg-blue-500\",\n {\n variants: {\n variant: {\n bar: \"h-full rounded-full\",\n circle: \"stroke-current stroke-linecap-round\",\n },\n },\n defaultVariants: {\n variant: \"bar\",\n },\n }\n);\n\nexport interface ProgressIndicatorProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof progressIndicatorVariants> {\n value: number;\n max?: number;\n showPercentage?: boolean;\n className?: string;\n}\n\nexport function ProgressIndicator({\n value,\n max = 100,\n showPercentage = true,\n className,\n variant,\n ...props\n}: ProgressIndicatorProps) {\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\n\n if (variant === \"circle\") {\n const radius = 40; // Base radius for calculations\n const circumference = 2 * Math.PI * radius;\n const strokeDasharray = circumference;\n const strokeDashoffset = circumference - (percentage / 100) * circumference;\n\n return (\n <div className=\"flex h-5 w-[75px] items-center justify-start\">\n <div\n className={cn(progressIndicatorVariants({ variant }), className)}\n {...props}\n >\n <svg\n className=\"h-5 w-5 -rotate-90 transform\"\n viewBox=\"0 0 100 100\"\n fill=\"none\"\n >\n {/* Background circle */}\n <circle\n cx=\"50\"\n cy=\"50\"\n r={radius}\n stroke=\"currentColor\"\n strokeWidth={20}\n className=\"text-element-inverse-disabled\"\n />\n {/* Progress circle */}\n <circle\n cx=\"50\"\n cy=\"50\"\n r={radius}\n stroke=\"currentColor\"\n strokeWidth={20}\n strokeDasharray={strokeDasharray}\n strokeDashoffset={strokeDashoffset}\n strokeLinecap=\"round\"\n className={cn(\n progressFillVariants({ variant }),\n \"text-element-static-blue\"\n )}\n />\n </svg>\n </div>\n\n {/* Percentage text to the right */}\n {showPercentage && (\n <span className=\"text-caption text-element-inverse-gray w-[50px] font-semibold\">\n {Math.round(percentage)}%\n </span>\n )}\n </div>\n );\n }\n\n // Bar variant\n return (\n <div className=\"w-full\">\n {/* Progress bar container */}\n <div className=\"flex items-center gap-3\">\n <div\n className={cn(\n progressIndicatorVariants({ variant }),\n \"flex-1\",\n className\n )}\n {...props}\n >\n <div\n className={cn(progressFillVariants({ variant }), className)}\n style={{ width: `${percentage}%` }}\n />\n </div>\n\n {/* Percentage text to the right */}\n {showPercentage && (\n <span className=\"text-caption text-element-inverse-gray font-semibold\">\n {Math.round(percentage)}%\n </span>\n )}\n </div>\n </div>\n );\n}\n","import { FilePlus, XIcon } from \"lucide-react\";\nimport { File } from \"magick-icons\";\nimport React, { createContext, useCallback, useContext, useState } from \"react\";\nimport { type FileRejection, useDropzone } from \"react-dropzone\";\nimport { truncateFileNameMid } from \"@/utils\";\nimport { Separator } from \"@radix-ui/react-separator\";\nimport { Button } from \"@/ui/Button\";\n\n// Constants\nconst FILE_SIZE_LIMIT_MB = 3; // 3MB\nconst DEFAULT_MAX_FILES = 10;\n\nconst ACCEPTED_FILE_TYPES: Record<string, string[]> = {\n \"application/pdf\": [\".pdf\"],\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": [\n \".docx\",\n ],\n \"application/msword\": [\".doc\"],\n \"image/*\": [\".png\", \".jpg\", \".jpeg\", \".gif\"],\n};\n\n// Context type\ninterface FileUploadContextType {\n errorMessage: string;\n isDragActive: boolean;\n isDragAccept: boolean;\n isDragReject: boolean;\n isFocused: boolean;\n getRootProps: any;\n getInputProps: any;\n handleRemoveFile: (fileName: string) => void;\n openFileDialog: () => void;\n showFileList?: boolean;\n acceptedFiles: File[];\n}\n\n// Create context\nconst FileUploadContext = createContext<FileUploadContextType | undefined>(\n undefined\n);\n\n// Context hook\nexport const useFileUpload = () => {\n const context = useContext(FileUploadContext);\n if (!context) {\n throw new Error(\"FileUpload components must be used within FileUpload\");\n }\n return context;\n};\n\n// Error message mapping\nconst getErrorMessage = (code: string, fileSizeLimit: number): string => {\n const errorMessages: Record<string, string> = {\n \"file-invalid-type\":\n \"Invalid file type. Only PDF, DOC, DOCX, and images are accepted.\",\n \"file-too-large\": `File size exceeds ${fileSizeLimit}MB limit.`,\n \"too-many-files\": \"Too many files selected.\",\n };\n return errorMessages[code] || \"An error occurred with the file upload.\";\n};\n\ninterface FileUploadProps {\n onDrop: (acceptedFiles: File[], rejectedFiles: FileRejection[]) => void;\n onDelete?: () => void;\n maxFiles?: number;\n isMultiple?: boolean;\n children: React.ReactNode;\n label?: string;\n CustomFileList?: React.ComponentType;\n fileSizeLimit?: number;\n acceptedFileTypes?: Record<string, string[]>;\n // Add react-hook-form props\n name?: string;\n value?: File[] | File;\n onChange?: (files: File[] | File | null) => void;\n onBlur?: () => void;\n disabled?: boolean;\n hasValidationError?: boolean;\n showFileList?: boolean;\n}\n\n// Main component\nconst FileUpload = ({\n onDrop,\n onDelete,\n maxFiles,\n isMultiple = false,\n children,\n label,\n CustomFileList,\n fileSizeLimit = FILE_SIZE_LIMIT_MB,\n acceptedFileTypes = ACCEPTED_FILE_TYPES,\n name,\n value,\n onChange,\n onBlur,\n disabled,\n hasValidationError,\n showFileList = false,\n}: FileUploadProps) => {\n const [errorMessage, setErrorMessage] = useState<string>(\"\");\n\n // Convert MB to bytes for useDropzone\n const fileSizeLimitInBytes =\n (fileSizeLimit ?? FILE_SIZE_LIMIT_MB) * 1024 * 1024;\n\n // Derive acceptedFiles from value prop (controlled mode)\n const acceptedFiles = React.useMemo(() => {\n if (value === undefined) {\n return [];\n }\n if (isMultiple) {\n return Array.isArray(value) ? value : [];\n }\n return value ? [value as File] : [];\n }, [value, isMultiple]);\n\n const handleRejectedFiles = useCallback(\n (rejectedFiles: FileRejection[]) => {\n if (rejectedFiles.length === 0) {\n setErrorMessage(\"\");\n return;\n }\n\n const error = rejectedFiles[0].errors[0];\n setErrorMessage(getErrorMessage(error.code, fileSizeLimit));\n },\n [fileSizeLimit]\n );\n\n const {\n getRootProps,\n getInputProps,\n isDragActive,\n isDragAccept,\n isDragReject,\n isFocused,\n open,\n } = useDropzone({\n onDrop: (accepted: File[], rejected: FileRejection[]) => {\n handleRejectedFiles(rejected);\n // Just pass the accepted files directly to parent - no internal state\n onDrop(accepted, rejected);\n\n // Call react-hook-form onChange if provided\n if (onChange) {\n if (isMultiple) {\n // For multiple, merge with existing value if provided\n const existingFiles = Array.isArray(value) ? value : [];\n const mergedFiles = [...existingFiles, ...accepted].filter(\n (file, index, self) =>\n index === self.findIndex((f) => f.name === file.name)\n );\n onChange(mergedFiles.length > 0 ? mergedFiles : null);\n } else {\n onChange(accepted.length > 0 ? accepted[0] : null);\n }\n }\n },\n accept: acceptedFileTypes,\n maxFiles: isMultiple ? maxFiles || DEFAULT_MAX_FILES : 1,\n maxSize: fileSizeLimitInBytes || FILE_SIZE_LIMIT_MB,\n noClick: false,\n disabled,\n });\n\n const handleRemoveFile = useCallback(\n (fileName: string) => {\n // Remove file from value prop (controlled mode)\n if (onChange) {\n if (isMultiple) {\n const existingFiles = Array.isArray(value) ? value : [];\n const updatedFiles = existingFiles.filter(\n (file) => file.name !== fileName\n );\n onChange(updatedFiles.length > 0 ? updatedFiles : null);\n } else {\n onChange(null);\n }\n }\n\n // Call onDrop with updated files for parent component\n const existingFiles = Array.isArray(value) ? value : [];\n const updatedFiles = existingFiles.filter(\n (file) => file.name !== fileName\n );\n onDrop(updatedFiles, []);\n onDelete?.();\n },\n [value, onDrop, onDelete, onChange, isMultiple]\n );\n\n return (\n <FileUploadContext.Provider\n value={{\n errorMessage:\n errorMessage || (hasValidationError ? \"This field is required\" : \"\"),\n isDragActive,\n isDragAccept,\n isDragReject,\n isFocused,\n getRootProps,\n getInputProps: () => ({\n ...getInputProps(),\n name,\n onBlur,\n \"aria-invalid\": hasValidationError || !!errorMessage,\n }),\n handleRemoveFile,\n openFileDialog: open,\n acceptedFiles,\n }}\n >\n <div className=\"relative w-full space-y-1\">\n <div className=\"flex flex-col gap-1\">\n <label htmlFor={name}>{label}</label>\n {children || <FileUpload.DropZone fileSizeLimit={fileSizeLimit} />}\n {CustomFileList ? (\n <CustomFileList />\n ) : showFileList ? (\n <FileUpload.FileList />\n ) : null}\n </div>\n <FileUpload.ErrorMessage />\n </div>\n </FileUploadContext.Provider>\n );\n};\n\n// Add new interface for render props\ninterface SimpleUploadRenderProps {\n acceptedFiles: File[];\n isFocused: boolean;\n openFileDialog: () => void;\n}\n\ninterface SimpleUploadProps {\n children?: React.ReactNode;\n className?: string;\n buttonProps?: React.ButtonHTMLAttributes<HTMLButtonElement>;\n render?: (props: SimpleUploadRenderProps) => React.ReactNode;\n variant?: \"default\" | \"custom\";\n wrapperProps?: React.HTMLAttributes<HTMLDivElement>;\n}\n\nconst SimpleUpload = ({\n children,\n className,\n buttonProps,\n render,\n wrapperProps,\n}: SimpleUploadProps) => {\n const {\n openFileDialog,\n getInputProps,\n getRootProps,\n acceptedFiles,\n isFocused,\n errorMessage,\n } = useFileUpload();\n\n // Check if there's any error (validation or file upload error)\n const hasError = !!errorMessage;\n\n // If children are provided, render custom UI\n if (children) {\n return (\n <div className={className} onClick={openFileDialog} {...wrapperProps}>\n <input {...getInputProps()} />\n {children}\n </div>\n );\n }\n\n // If render prop is provided, render custom component\n if (render) {\n return (\n <div\n className={className}\n {...getRootProps()}\n onClick={(e) => {\n e.stopPropagation();\n openFileDialog();\n }}\n {...wrapperProps}\n >\n <input {...getInputProps()} />\n {typeof render === \"function\"\n ? render({\n acceptedFiles,\n isFocused,\n openFileDialog,\n })\n : render}\n </div>\n );\n }\n\n // Default button UI\n return (\n <div className={`flex items-center gap-2 ${className}`} {...wrapperProps}>\n <input {...getInputProps()} />\n\n <Button\n type=\"button\"\n onClick={openFileDialog}\n {...buttonProps}\n className={`${hasError ? \"border-input-border-destructiveDefault hover:border-input-border-destructiveHover\" : \"border-input-border-primaryDefault hover:border-input-border-primaryHover\"} text-body-sm! flex w-full items-center justify-start gap-2 rounded-lg border px-3 py-2 shadow-none`}\n >\n <p className=\"text-element-inverse-default! w-[77px] font-semibold\">\n Choose file\n </p>\n <p className=\"text-element-inverse-disabled\">No file chosen</p>\n </Button>\n </div>\n );\n};\n\ninterface DropZoneRenderProps {\n isDragging: boolean;\n isDragAccept: boolean;\n isDragReject: boolean;\n acceptedFiles: File[];\n isFocused: boolean;\n openFileDialog: () => void;\n}\n\ninterface DropZoneProps {\n children?: React.ReactNode;\n className?: string;\n render?: (props: DropZoneRenderProps) => React.ReactNode;\n variant?: \"default\" | \"custom\";\n wrapperProps?: React.HTMLAttributes<HTMLDivElement>;\n fileSizeLimit?: number;\n}\n\n// Modify DropZone component\nconst DropZone = ({\n children,\n className,\n render,\n variant = \"default\",\n wrapperProps,\n // fileSizeLimit = FILE_SIZE_LIMIT_MB,\n}: DropZoneProps) => {\n const {\n getRootProps,\n getInputProps,\n isDragActive,\n isDragAccept,\n isDragReject,\n acceptedFiles,\n isFocused,\n openFileDialog,\n errorMessage,\n } = useFileUpload();\n\n // Check if there's any error (validation or file upload error)\n const hasError = !!errorMessage;\n\n // If children are provided, render custom UI\n if (children) {\n return (\n <div\n {...getRootProps()}\n className={`cursor-pointer ${className}`}\n {...wrapperProps}\n >\n <input {...getInputProps()} />\n {children}\n </div>\n );\n }\n\n // If render prop is provided, use custom render function\n if (render) {\n return (\n <div\n {...getRootProps()}\n className={`cursor-pointer ${className}`}\n {...wrapperProps}\n >\n <input {...getInputProps()} />\n {render({\n isDragging: isDragActive,\n isDragAccept,\n isDragReject,\n acceptedFiles,\n isFocused,\n openFileDialog,\n })}\n </div>\n );\n }\n\n // Custom variant\n if (variant === \"custom\") {\n return (\n <div\n {...getRootProps()}\n className={`cursor-pointer rounded-lg border-2 border-dashed p-8 transition-colors ${\n hasError\n ? \"border-input-border-destructiveHover\"\n : isDragActive\n ? \"border-primary bg-primary/5\"\n : \"hover:border-primary/50 border-gray-300\"\n } ${className}`}\n {...wrapperProps}\n >\n <input {...getInputProps()} />\n <div className=\"space-y-4 text-center\">\n <div className=\"bg-primary/10 mx-auto w-fit rounded-full p-4\">\n <FilePlus className=\"text-primary size-8\" />\n </div>\n <div className=\"space-y-2\">\n <p className=\"text-xl font-medium\">\n {isDragActive ? \"Drop files here\" : \"Drag & Drop files\"}\n </p>\n <p className=\"text-muted-foreground text-sm\">\n or click to select files\n </p>\n </div>\n </div>\n </div>\n );\n }\n\n // Default variant\n return (\n <div\n {...getRootProps()}\n className={`border-stroke-inverse-slate-04 rounded-unit-corner-radius-5xl cursor-pointer border border-dashed p-10 transition-colors focus:outline-none ${\n hasError\n ? \"border-input-border-destructiveHover\"\n : isDragActive\n ? \"border-blue-500 bg-gray-600\"\n : \"bg-fill-inverse-slate-03 hover:bg-fill-inverse-slate-04\"\n } ${className}`}\n {...wrapperProps}\n >\n <input {...getInputProps()} />\n <div className=\"text-muted-foreground w-full space-y-5 text-center\">\n <File className=\"mx-auto size-[44px]\" />\n <p\n className={`text-body-sm leading-body-sm ${isDragActive ? \"text-gray-100\" : \"text-element-inverse-default\"}`}\n >\n {isDragActive ? \"Drop the file here...\" : \"Drag and Drop files here\"}\n </p>\n <div className=\"gap-unit-10px flex w-full items-center justify-center\">\n <Separator className=\"border-stroke-inverse-slate-03 max-w-[60px] flex-1\" />\n <p className=\"text-caption leading-caption text-element-inverse-disabled font-medium\">\n OR\n </p>\n <Separator className=\"border-stroke-inverse-slate-03 max-w-[60px] flex-1\" />\n </div>\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"mx-auto\"\n onClick={(e) => {\n // Prevent the click from also triggering the dropzone root onClick,\n // which causes the file picker to open twice.\n e.stopPropagation();\n openFileDialog();\n }}\n >\n Browse file\n </Button>\n </div>\n </div>\n );\n};\n\nconst FileList = () => {\n const { acceptedFiles, handleRemoveFile } = useFileUpload();\n\n if (acceptedFiles.length === 0) return null;\n\n return (\n <ul className=\"mb-1 space-y-1\">\n {acceptedFiles.map((file) => (\n <li\n key={file.name}\n className=\"border-input-border-primaryDefault hover:border-input-border-primaryHover flex h-9 items-center justify-between rounded-lg border px-3 py-2\"\n >\n <div className=\"flex items-center gap-2\">\n <p className=\"text-text-default w-[77px] font-semibold\">Selected</p>\n <p>{truncateFileNameMid(file.name)}</p>\n <p className=\"text-caption text-text-inactive\">\n {file.size < 1024 * 1024\n ? `${(file.size / 1024).toFixed(2)}KB`\n : `${(file.size / 1024 / 1024).toFixed(2)}MB`}\n </p>\n </div>\n <button\n onClick={() => handleRemoveFile(file.name)}\n className=\"hover:bg-button-bg-outlineHover cursor-pointer rounded\"\n >\n <XIcon className=\"text-icon-default size-4\" />\n </button>\n </li>\n ))}\n </ul>\n );\n};\n\nconst ErrorMessage = () => {\n const { errorMessage } = useFileUpload();\n\n if (!errorMessage) return null;\n\n return <p className=\"text-text-destructive mt-2 text-sm\">{errorMessage}</p>;\n};\n\nFileUpload.DropZone = DropZone;\nFileUpload.SimpleUpload = SimpleUpload;\nFileUpload.FileList = FileList;\nFileUpload.ErrorMessage = ErrorMessage;\n\nexport { FileUpload };\n\nexport type FieldProps = {\n name: string;\n label?: string;\n isMultiple?: boolean;\n maxFiles?: number;\n children?: React.ReactNode;\n};\n\nexport const FileUploadField = ({\n field,\n CustomFileList,\n onChange,\n value,\n fileSizeLimit = FILE_SIZE_LIMIT_MB, // in MB\n acceptedFileTypes = ACCEPTED_FILE_TYPES,\n ...props\n}: {\n field: {\n name: string;\n isMultiple?: boolean;\n maxFiles?: number;\n children?: React.ReactNode;\n };\n CustomFileList?: React.ComponentType;\n onChange?: (files: File[] | File | null) => void;\n value?: File[] | File;\n fileSizeLimit?: number; // in MB\n acceptedFileTypes?: Record<string, string[]>;\n // Add react-hook-form field props\n name?: string;\n onBlur?: () => void;\n disabled?: boolean;\n hasValidationError?: boolean;\n} & Omit<React.ComponentProps<typeof FileUpload>, \"onDrop\" | \"children\">) => {\n return (\n <FileUpload\n onDrop={(acceptedFiles) => {\n if (onChange) {\n onChange(field.isMultiple ? acceptedFiles : acceptedFiles[0]);\n }\n }}\n isMultiple={field.isMultiple}\n maxFiles={field.maxFiles}\n CustomFileList={CustomFileList}\n fileSizeLimit={fileSizeLimit}\n acceptedFileTypes={acceptedFileTypes}\n value={value}\n onChange={onChange}\n hasValidationError={props.hasValidationError}\n {...props}\n >\n {field.children || (\n <FileUpload.DropZone fileSizeLimit={fileSizeLimit} />\n ) || <FileUpload.SimpleUpload />}\n </FileUpload>\n );\n};\n\nFileUploadField.SimpleUpload = SimpleUpload;\nFileUploadField.DropZone = DropZone;\nFileUploadField.FileList = FileList;\nFileUploadField.ErrorMessage = ErrorMessage;\n","import { cn } from \"@/utils\";\n\nexport interface GradientContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n}\n\nexport function GradientContainer(props: GradientContainerProps) {\n const { className, children, ...rest } = props;\n return (\n <div\n className={cn(\"gradient-bg flex px-[2.3px] py-[2px]\", className)}\n {...rest}\n >\n {children}\n </div>\n );\n}\n\nGradientContainer.Background = function GradientContainerBackground(\n props: React.HTMLAttributes<HTMLDivElement>,\n) {\n const { className, ...rest } = props;\n return (\n <div\n className={cn(\"bg-fill-background h-full w-full\", className)}\n {...rest}\n />\n );\n};\n","import { cn } from \"@/utils\";\n\ninterface GridProps extends React.ComponentProps<\"div\"> {\n children: React.ReactNode;\n}\nexport default function Grid({ children, className, ...props }: GridProps) {\n return (\n <div className={cn(\"grid grid-cols-3 gap-4\", className)} {...props}>\n {children}\n </div>\n );\n}\n","import { cn } from \"@/utils\";\nimport type { CSSProperties, ReactNode } from \"react\";\nimport IconContainer from \"@/ui/IconContainer\";\n\n// Helper function to convert hex to RGB\nfunction hexToRgb(hex: string): [number, number, number] {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result\n ? [\n parseInt(result[1], 16),\n parseInt(result[2], 16),\n parseInt(result[3], 16),\n ]\n : [0, 0, 0];\n}\n\n// Color map with hex values (from design tokens 500 shade)\nconst COLOR_MAP = {\n red: { hex: \"#ef4444\", class: \"element-static-red\" },\n orange: { hex: \"#f97316\", class: \"element-static-orange\" },\n amber: { hex: \"#f59e0b\", class: \"element-static-amber\" },\n yellow: { hex: \"#eab308\", class: \"element-static-yellow\" },\n lime: { hex: \"#84cc16\", class: \"element-static-lime\" },\n green: { hex: \"#22c55e\", class: \"element-static-green\" },\n emerald: { hex: \"#10b981\", class: \"element-static-emerald\" },\n teal: { hex: \"#14b8a6\", class: \"element-static-teal\" },\n cyan: { hex: \"#06b6d4\", class: \"element-static-cyan\" },\n sky: { hex: \"#0ea5e9\", class: \"element-static-sky\" },\n blue: { hex: \"#3b82f6\", class: \"element-static-blue\" },\n indigo: { hex: \"#6366f1\", class: \"element-static-indigo\" },\n violet: { hex: \"#8b5cf6\", class: \"element-static-violet\" },\n purple: { hex: \"#a855f7\", class: \"element-static-purple\" },\n fuchsia: { hex: \"#d946ef\", class: \"element-static-fuchsia\" },\n pink: { hex: \"#ec4899\", class: \"element-static-pink\" },\n rose: { hex: \"#f43f5e\", class: \"element-static-rose\" },\n slate: { hex: \"#64748b\", class: \"element-static-slate\" },\n} as const;\n\n// Size configuration map\nconst SIZE_CONFIG = {\n 26: { iconSize: \"xs\" as const, backgroundScale: 1.5, borderRadius: 10 },\n 32: { iconSize: \"sm\" as const, backgroundScale: 1.8, borderRadius: 12 },\n 40: { iconSize: \"lg\" as const, backgroundScale: 1.5, borderRadius: 16 },\n 48: { iconSize: \"xl\" as const, backgroundScale: 1.6, borderRadius: 20 },\n 56: { iconSize: \"2xl\" as const, backgroundScale: 1.7, borderRadius: 20 },\n 64: { iconSize: \"3xl\" as const, backgroundScale: 1.6, borderRadius: 24 },\n} as const;\n\ntype ColorVariant = keyof typeof COLOR_MAP;\ntype SizeVariant = keyof typeof SIZE_CONFIG;\n\nexport type IconProfileProps = {\n /** The icon component to display */\n icon: ReactNode;\n /** Color variant for background glow and icon */\n color?: ColorVariant;\n /** Size variant in pixels */\n size?: SizeVariant;\n /** Additional className for the root container */\n className?: string;\n /** Whether the icon is external */\n externalIcon?: boolean;\n};\n\nexport default function IconProfile({\n icon,\n color = \"red\",\n size = 64,\n className,\n externalIcon = false,\n}: IconProfileProps) {\n const colorConfig = COLOR_MAP[color];\n const sizeConfig = SIZE_CONFIG[size];\n const [r, g, b] = hexToRgb(colorConfig.hex);\n const colorClass = `text-${colorConfig.class}`;\n\n return (\n <div\n className={cn(\"relative\", colorClass, className)}\n style={\n {\n \"--icon-profile-color\": `var(--color-${colorConfig.class}, rgb(${r}, ${g}, ${b}))`,\n } as CSSProperties\n }\n >\n <div\n className=\"relative isolate flex items-center justify-center\"\n style={{ width: size, height: size }}\n >\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <div\n className=\"pointer-events-none absolute inset-0\"\n style={{\n borderRadius: `${sizeConfig.borderRadius}px`,\n background: `radial-gradient(circle at 50% 35%, rgba(${r}, ${g}, ${b}, 0.35) 0%, rgba(${r}, ${g}, ${b}, 0.22) 45%, rgba(${r}, ${g}, ${b}, 0) 80%)`,\n }}\n />\n <div\n className=\"pointer-events-none absolute inset-0\"\n style={{\n borderRadius: `${sizeConfig.borderRadius}px`,\n backgroundColor: `rgba(${r}, ${g}, ${b}, 0.2)`,\n transformOrigin: \"center center\",\n }}\n />\n </div>\n\n <div\n className=\"absolute inset-0\"\n style={{\n borderRadius: `${sizeConfig.borderRadius}px`,\n boxShadow:\n \"var(--unit-blur-none, 0) var(--unit-blur-xs, 16px) var(--unit-blur-md, 40px) var(--unit-blur-none, 0) var(--opacity-static-01, rgba(0, 0, 0, 0.08))\",\n backdropFilter: \"blur(calc(var(--unit-blur-xl, 72px) / 2))\",\n }}\n />\n\n <div className=\"absolute inset-0 z-10 flex items-center justify-center\">\n <IconContainer\n colorInFill={false}\n size={sizeConfig.iconSize}\n className={cn(\n !externalIcon ? \"[&_path]:!fill-[var(--iconColor)]\" : \"\",\n )}\n style={\n {\n [\"--iconColor\"]: `var(--color-${colorConfig.class})`,\n } as CSSProperties & { [\"--iconColor\"]: string }\n }\n >\n {icon}\n </IconContainer>\n </div>\n </div>\n </div>\n );\n}\n","import { CheckCheck, Copy, X } from \"lucide-react\";\nimport * as React from \"react\";\nimport { cn } from \"@/utils\";\n\ntype Props = React.ComponentProps<\"input\"> & {\n label?: string;\n error?: boolean;\n variant?: \"ghost\" | \"outline\";\n inlineItemsNode?: React.ReactNode;\n prefixNode?: {\n node: React.ReactNode;\n withBorder?: boolean;\n className?: string;\n };\n suffixNode?: {\n node: React.ReactNode;\n withBorder?: boolean;\n className?: string;\n };\n includeCopy?: boolean;\n includeClear?: boolean;\n inputClassName?: string;\n};\n\nexport const Input = ({\n className,\n type = \"text\",\n label,\n variant = \"outline\",\n prefixNode,\n suffixNode,\n inlineItemsNode,\n includeCopy = false,\n includeClear = false,\n inputClassName,\n ...props\n}: Props) => {\n const [showCopy, setShowCopy] = React.useState(false);\n const [onFocus, setOnFocus] = React.useState(false);\n const [showClear, setShowClear] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const error = props[\"aria-invalid\"] || false;\n\n function handleClear(e: React.MouseEvent) {\n e.preventDefault();\n props.onChange?.({\n target: { value: \"\" },\n } as React.ChangeEvent<HTMLInputElement>);\n }\n\n const mutatedProps: React.ComponentProps<\"input\"> = {\n ...props,\n onBlur: (e) => {\n if (props.disabled) return;\n props.onBlur && props.onBlur(e);\n setOnFocus(false);\n },\n };\n\n return (\n <div\n onMouseEnter={() => {\n if (props.disabled) return;\n setShowClear(true);\n if (!onFocus) {\n setShowCopy(true);\n }\n }}\n onMouseLeave={() => {\n if (props.disabled) return;\n setShowClear(false);\n setShowCopy(false);\n }}\n className={cn(\n \"group text-element-inverse-default placeholder:text-element-inverse-disabled relative flex min-h-10 w-full items-center\",\n \"rounded-unit-corner-radius-xl min-w-0 border transition-[color,box-shadow]\",\n {\n /* Outline State */\n \"hover:border-stroke-static-slate-04 border-stroke-inverse-slate-03 bg-input-outline-enabled hover:bg-input-outline-hovered\":\n variant === \"outline\" && !error,\n\n /* Outline On Focus */\n \"focus-within:hover:border-stroke-static-blue-03 focus-within:border-stroke-static-blue-03 focus-within:ring-0 focus-within:outline-none\":\n variant === \"outline\" && !error,\n\n /* Ghost State */\n \"hover:bg-input-ghost-hovered bg-input-ghost-enabled border-transparent\":\n variant === \"ghost\" && !error,\n\n /* Error State */\n \"border-stroke-inverse-red-01 hover:border-stroke-inverse-red-02 text-element-inverse-red\":\n error && !props.disabled,\n\n /* Error On Focus */\n // \"focus-within:border-input-border-destructiveHover focus-within:ring-effect-ring-destructive text-text-destructive focus-within:ring-2\":\n error,\n\n /* Disable State */\n \"text-element-inverse-disabled pointer-events-none cursor-not-allowed\":\n props.disabled,\n\n \"bg-input-outline-disabled border-stroke-inverse-slate-03\":\n props.disabled && variant === \"outline\",\n \"bg-input-ghost-disabled\": props.disabled && variant === \"ghost\",\n },\n className\n )}\n >\n {type === \"url\" && (\n <div className=\"border-border-primary-light flex h-full items-center justify-center border-r px-3\">\n <p className=\"text-body-sm leading-body-sm text-text-inactive font-medium\">\n https://\n </p>\n </div>\n )}\n\n {prefixNode && (\n <div\n className={cn(\n {\n \"border-border-primary-light hover:bg-surface-bg flex h-full cursor-pointer items-center justify-center overflow-x-auto rounded-l-lg border-r\":\n prefixNode.withBorder,\n \"pl-3\": !prefixNode.withBorder && !inlineItemsNode,\n },\n prefixNode.className\n )}\n >\n {prefixNode.node}\n </div>\n )}\n\n <div\n className={cn(\"relative h-full w-full\", {\n \"flex flex-wrap items-center\": inlineItemsNode,\n })}\n >\n {inlineItemsNode}\n <input\n ref={inputRef}\n type={type}\n id={props.id + (label || \"\")}\n onFocus={() => {\n if (props.disabled) return;\n setOnFocus(true);\n setShowCopy(false);\n }}\n data-slot=\"input\"\n className={cn(\n \"peer leading-body-sm text-medium text-body-sm flex h-full w-full appearance-none rounded-lg bg-transparent px-2.5 py-1.5 font-medium outline-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\",\n \"selection:bg-primary-bg-light selection:text-text-default\",\n \"placeholder:text-body-sm placeholder:leading-body-sm placeholder:text-text-inactive placeholder:font-medium\",\n inputClassName,\n\n {\n \"rounded-l-none pl-2\": prefixNode,\n \"rounded-r-none pr-2\": suffixNode,\n \"text-text-secondary\": type === \"email\",\n \"text-text-destructive\": error,\n \"mx-1 inline-block h-auto w-full rounded-lg\": inlineItemsNode,\n }\n )}\n {...mutatedProps}\n value={props.value}\n />\n {props.value && (\n <div className=\"absolute top-0 right-2 flex h-full items-center gap-2 peer-disabled:hidden\">\n {includeCopy && (\n <button\n tabIndex={-1}\n data-showcopy={showCopy}\n className=\"hover:bg-primary-bg-soft flex h-[20px] w-[20px] items-center justify-center rounded-sm bg-white opacity-0 transition-opacity duration-200 data-[showCopy=true]:opacity-100\"\n >\n <CopyIcon value={props.value as string} />\n </button>\n )}\n\n {includeClear && (\n <button\n tabIndex={-1}\n data-showclear={showClear}\n className=\"hover:bg-primary-bg-soft flex h-[20px] w-[20px] items-center justify-center rounded-sm bg-white opacity-0 transition-opacity duration-200 data-[showClear=true]:opacity-100\"\n >\n <X\n onClick={(e) => {\n handleClear(e);\n }}\n className=\"cursor-pointer\"\n size={18}\n />\n </button>\n )}\n </div>\n )}\n </div>\n\n {suffixNode && (\n <div\n className={cn(\n {\n \"border-border-primary-light hover:bg-surface-bg flex h-full cursor-pointer items-center justify-center rounded-r-lg border-l\":\n suffixNode.withBorder,\n \"pr-3\": !suffixNode.withBorder,\n },\n suffixNode.className\n )}\n >\n {suffixNode.node}\n </div>\n )}\n </div>\n );\n};\n\nfunction CopyIcon({ value }: { value: string }) {\n const [isCopy, setIsCopy] = React.useState(false);\n\n function handleCopy(e: React.MouseEvent) {\n e.preventDefault();\n try {\n navigator.clipboard.writeText(value as string);\n setIsCopy(true);\n\n setTimeout(() => {\n setIsCopy(false);\n }, 1200);\n } catch (error) {\n setIsCopy(false);\n console.error(error);\n }\n }\n\n return (\n <>\n {!isCopy ? (\n <Copy className=\"cursor-pointer\" onClick={handleCopy} size={18} />\n ) : (\n <CheckCheck className=\"cursor-pointer\" size={18} />\n )}\n </>\n );\n}\n","import { cn } from \"@/utils\";\nimport IconContainer from \"@/ui/IconContainer\";\n\ninterface LinkButtonProps extends Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n \"prefix\" | \"suffix\"\n> {\n children: React.ReactNode;\n href: string;\n isLink?: boolean;\n prefixIcon?: React.ReactNode;\n suffixIcon?: React.ReactNode;\n}\n\nexport default function LinkButton({\n children,\n href,\n isLink = true,\n prefixIcon,\n suffixIcon,\n className,\n ...props\n}: LinkButtonProps) {\n const onClickInternalLink = () => {\n window.open(href, \"_blank\");\n };\n\n return (\n <button\n aria-label={`Open ${href}`}\n role=\"link\"\n type=\"button\"\n className={cn(\n \"text-body-sm text-element-inverse-blue [&>path]:fill-element-inverse-blue gap-x-unit-4px leading-body-sm flex cursor-pointer items-center font-medium underline hover:underline\",\n className,\n )}\n onClick={isLink ? onClickInternalLink : props.onClick}\n {...props}\n >\n {prefixIcon && (\n <IconContainer className=\"[&_path]:fill-element-inverse-blue shrink-0\">\n {prefixIcon}\n </IconContainer>\n )}\n <div className=\"inherit\">{children}</div>\n {suffixIcon && (\n <IconContainer className=\"[&_path]:fill-element-inverse-blue shrink-0\">\n {suffixIcon}\n </IconContainer>\n )}\n </button>\n );\n}\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { Pause, Play } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\nimport IconButton from \"@/ui/IconButton\";\n\nexport interface MediaProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof mediaVariants> {\n src: string;\n alt?: string;\n type?: \"image\" | \"video\";\n aspectRatio?: \"1:1\" | \"16:9\" | \"9:16\" | \"4:3\" | \"3:4\";\n showPlayButton?: boolean;\n onPlay?: () => void;\n onPause?: () => void;\n isPlaying?: boolean;\n loading?: \"lazy\" | \"eager\";\n objectFit?: \"cover\" | \"contain\" | \"fill\" | \"scale-down\" | \"none\";\n}\n\nconst mediaVariants = cva(\n \"relative overflow-hidden bg-gray-100 dark:bg-gray-800\",\n {\n variants: {\n aspectRatio: {\n \"1:1\": \"aspect-square\",\n \"16:9\": \"aspect-video\",\n \"9:16\": \"aspect-[9/16]\",\n \"4:3\": \"aspect-[4/3]\",\n \"3:4\": \"aspect-[3/4]\",\n },\n rounded: {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n xl: \"rounded-xl\",\n \"2xl\": \"rounded-2xl\",\n full: \"rounded-full\",\n },\n },\n defaultVariants: {\n aspectRatio: \"16:9\",\n rounded: \"md\",\n },\n },\n);\n\nconst Media = React.forwardRef<HTMLDivElement, MediaProps>(\n (\n {\n className,\n src,\n alt = \"\",\n type = \"image\",\n aspectRatio,\n showPlayButton = true,\n onPlay,\n onPause,\n isPlaying = false,\n loading = \"lazy\",\n objectFit = \"cover\",\n rounded,\n ...props\n },\n ref,\n ) => {\n const [isHovered, setIsHovered] = React.useState(false);\n const [imageLoaded, setImageLoaded] = React.useState(false);\n const [imageError, setImageError] = React.useState(false);\n const [videoPlaying, setVideoPlaying] = React.useState(false);\n const videoRef = React.useRef<HTMLVideoElement>(null);\n\n const handlePlay = (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (videoRef.current) {\n videoRef.current.play();\n setVideoPlaying(true);\n }\n if (onPlay) {\n onPlay();\n }\n };\n\n const handlePause = (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (videoRef.current) {\n videoRef.current.pause();\n setVideoPlaying(false);\n }\n if (onPause) {\n onPause();\n }\n };\n\n const handleVideoPlay = () => {\n setVideoPlaying(true);\n if (onPlay) {\n onPlay();\n }\n };\n\n const handleVideoPause = () => {\n setVideoPlaying(false);\n if (onPause) {\n onPause();\n }\n };\n\n // Sync external isPlaying prop with internal state\n React.useEffect(() => {\n if (type === \"video\" && videoRef.current) {\n if (isPlaying && videoRef.current.paused) {\n videoRef.current.play();\n } else if (!isPlaying && !videoRef.current.paused) {\n videoRef.current.pause();\n }\n }\n }, [isPlaying, type]);\n\n const handleImageLoad = () => {\n setImageLoaded(true);\n };\n\n const handleImageError = () => {\n setImageError(true);\n };\n\n return (\n <div\n ref={ref}\n className={cn(mediaVariants({ aspectRatio, rounded }), className)}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n {...props}\n >\n {type === \"image\" ? (\n <>\n <img\n src={src}\n alt={alt}\n loading={loading}\n onLoad={handleImageLoad}\n onError={handleImageError}\n className={cn(\n \"block h-full w-full transition-opacity duration-300\",\n {\n \"opacity-0\": !imageLoaded && !imageError,\n \"opacity-100\": imageLoaded,\n },\n )}\n style={{ objectFit }}\n />\n {!imageLoaded && !imageError && (\n <div className=\"absolute inset-0 flex items-center justify-center bg-gray-200 dark:bg-gray-700\">\n <div className=\"h-8 w-8 animate-spin rounded-full border-2 border-gray-300 border-t-gray-600\"></div>\n </div>\n )}\n {imageError && (\n <div className=\"absolute inset-0 flex items-center justify-center bg-gray-200 dark:bg-gray-700\">\n <div className=\"text-center text-gray-500\">\n <div className=\"text-2xl\">📷</div>\n <div className=\"text-sm\">Failed to load</div>\n </div>\n </div>\n )}\n </>\n ) : (\n <>\n <video\n ref={videoRef}\n src={src}\n className=\"block h-full w-full\"\n style={{ objectFit }}\n onPlay={handleVideoPlay}\n onPause={handleVideoPause}\n onEnded={() => setVideoPlaying(false)}\n preload=\"metadata\"\n />\n {showPlayButton && (\n <div\n className={cn(\n \"absolute inset-0 flex items-center justify-center bg-black/20 transition-all duration-200 hover:bg-black/30\",\n {\n \"opacity-100\": isHovered || videoPlaying,\n \"opacity-0\": !isHovered && !videoPlaying,\n },\n )}\n >\n <IconButton\n icon={\n videoPlaying ? (\n <Pause className=\"text-gray-900\" />\n ) : (\n <Play className=\"ml-1 text-gray-900\" />\n )\n }\n onClick={videoPlaying ? handlePause : handlePlay}\n varient=\"outline\"\n size=\"md\"\n rounded={true}\n aria-label={videoPlaying ? \"Pause video\" : \"Play video\"}\n className=\"!h-16 !w-16 !bg-white !shadow-lg transition-all duration-200 hover:!scale-110 hover:!shadow-xl\"\n />\n </div>\n )}\n </>\n )}\n </div>\n );\n },\n);\n\nMedia.displayName = \"Media\";\n\nexport { Media, mediaVariants };\n","import { cn } from \"@/utils\";\nimport { ChevronDown, CircleXIcon, X } from \"lucide-react\";\nimport * as React from \"react\";\nimport { Button } from \"@/ui/Button\";\nimport { Chip } from \"@/ui/Chip\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/ui/Popover\";\n\nexport interface Option {\n label: string;\n value: string;\n}\n\ninterface MultiSelectProps {\n options: Option[];\n selected: string[];\n onChange: (selected: string[]) => void;\n placeholder?: string;\n disabled?: boolean;\n createConfig?: {\n enabled: boolean;\n action: (inputValue: string) => Promise<void>;\n isLoading?: boolean;\n };\n className?: string;\n error?: boolean;\n}\n\nexport function MultiSelect({\n options,\n selected,\n onChange,\n placeholder = \"Select\",\n disabled = false,\n createConfig,\n className,\n error = false,\n}: MultiSelectProps) {\n const [open, setOpen] = React.useState(false);\n const [inputValue, setInputValue] = React.useState(\"\");\n const inputRef = React.useRef<HTMLInputElement>(null);\n const containerRef = React.useRef<HTMLDivElement>(null);\n\n const handleUnselect = (value: string) => {\n onChange(selected.filter((s) => s !== value));\n };\n\n const handleSelect = (value: string) => {\n if (!selected.includes(value)) {\n onChange([...selected, value]);\n }\n setInputValue(\"\");\n setTimeout(() => inputRef.current?.focus(), 0);\n };\n\n const handleCreate = async () => {\n if (\n inputValue.trim() &&\n !options.find(\n (option) =>\n option.value.toLowerCase() === inputValue.toLowerCase().trim(),\n )\n ) {\n try {\n await createConfig?.action?.(inputValue.trim());\n onChange([...selected, inputValue.trim()]);\n setInputValue(\"\");\n setTimeout(() => inputRef.current?.focus(), 0);\n } catch (error) {\n console.error(\"Failed to create item:\", error);\n }\n }\n };\n\n const handleKeyDown = async (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" && inputValue.trim()) {\n e.preventDefault();\n const existingOption = options.find(\n (option) =>\n option.label.toLowerCase() === inputValue.toLowerCase().trim(),\n );\n if (existingOption && !selected.includes(existingOption.value)) {\n handleSelect(existingOption.value);\n } else if (createConfig?.enabled) {\n await handleCreate();\n }\n } else if (e.key === \"Backspace\" && !inputValue && selected.length > 0) {\n e.preventDefault();\n handleUnselect(selected[selected.length - 1]);\n } else if (e.key === \"Escape\") {\n setOpen(false);\n inputRef.current?.blur();\n }\n };\n\n const filteredOptions = React.useMemo(() => {\n return options.filter(\n (option) =>\n option.label.toLowerCase().includes(inputValue.toLowerCase()) &&\n !selected.includes(option.value),\n );\n }, [options, inputValue, selected]);\n\n const canCreate =\n createConfig?.enabled &&\n inputValue.trim() &&\n !options.find(\n (option) =>\n option.value.toLowerCase() === inputValue.toLowerCase().trim(),\n ) &&\n !selected.includes(inputValue.trim());\n\n const handleInputFocus = () => {\n setOpen(true);\n };\n\n const handleContainerClick = (e: React.MouseEvent) => {\n e.preventDefault();\n inputRef.current?.focus();\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <div\n ref={containerRef}\n className={cn(\n \"border-input-border-primaryDefault text-text-default bg-input-bg-default text-body-sm hover:border-input-border-primaryHover flex min-h-9 w-full cursor-text items-center justify-between gap-1 rounded-lg border px-3 py-1 font-medium focus-within:[box-shadow:var(--ring-position-x,0px)_var(--ring-position-y,0px)_var(--ring-blur,0px)_var(--ring-spread-sm,1px)_var(--color-effect-ring-primary)]\",\n error &&\n \"border-input-border-destructiveDefault hover:border-input-border-destructiveHover focus-within:[box-shadow:var(--ring-position-x,0px)_var(--ring-position-y,0px)_var(--ring-blur,0px)_var(--ring-spread-sm,2px)_var(--color-effect-ring-destructive)]\",\n disabled &&\n \"bg-input-bg-inactive hover:border-input-border-primaryDefault text-text-inactive cursor-not-allowed\",\n className,\n )}\n onClick={handleContainerClick}\n >\n <div className=\"flex flex-1 flex-wrap items-center gap-1\">\n {selected.map((value) => {\n const option = options.find((opt) => opt.value === value);\n return (\n <Chip\n key={value}\n label={option?.label || value}\n onClick={(e) => {\n e.stopPropagation();\n handleUnselect(value);\n }}\n className={cn(\n disabled && \"pointer-events-none cursor-not-allowed\",\n )}\n >\n <X className=\"hover:text-destructive ml-1.5 h-3 w-3 cursor-pointer\" />\n </Chip>\n );\n })}\n <input\n ref={inputRef}\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onKeyDown={handleKeyDown}\n onFocus={handleInputFocus}\n placeholder={\n selected.length === 0\n ? createConfig?.enabled\n ? \"Select or create one\"\n : placeholder\n : \"\"\n }\n className=\"placeholder:text-muted-foreground min-w-[8rem] flex-1 bg-transparent outline-none\"\n disabled={disabled}\n />\n </div>\n {selected.length > 0 && (\n <CircleXIcon\n className=\"text-icon-default size-4.5 shrink-0\"\n onClick={() => onChange([])}\n />\n )}\n {!createConfig?.enabled && (\n <ChevronDown className=\"text-icon-default size-4.5 shrink-0\" />\n )}\n </div>\n </PopoverTrigger>\n <PopoverContent\n className=\"shadow-box w-[var(--radix-popover-trigger-width)] border-none bg-white p-2\"\n align=\"start\"\n >\n <div className=\"p-0\">\n <div className=\"max-h-[300px] overflow-y-auto\">\n {filteredOptions.length === 0 && !canCreate ? (\n <div className=\"py-6 text-center text-gray-500\">\n {inputValue ? \"No results found.\" : \"Start typing to search...\"}\n </div>\n ) : (\n <div className=\"flex flex-col gap-1.5 px-1.5 pt-1.5 pb-0.5\">\n {createConfig?.enabled && (\n <p className=\"text-text-default pb-0.5 font-semibold\">\n Select or create one\n </p>\n )}\n {filteredOptions.map((option) => (\n <Chip\n label={option.label}\n key={option.value}\n onClick={() => handleSelect(option.value)}\n className=\"rounded-md\"\n />\n ))}\n {canCreate && (\n <div\n onClick={async () => await handleCreate()}\n className=\"flex items-center justify-between\"\n >\n <Chip label={inputValue.trim()} className=\"rounded-md\" />\n <Button\n variant=\"ghost\"\n size=\"sm\"\n state={createConfig?.isLoading ? \"loading\" : \"default\"}\n >\n Create new\n </Button>\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n );\n}\n","import { cn } from \"@/utils\";\nimport {\n OTPInput as BaseOTPInput,\n OTPInputContext as BaseOTPInputContext,\n} from \"input-otp\";\nimport * as React from \"react\";\n\ntype OTPInputProps = Omit<\n React.ComponentProps<typeof InputOTP>,\n \"type\" | \"render\"\n> & {\n type?: 4 | 6 | 8;\n separate?: boolean;\n disabled?: boolean;\n className?: string;\n};\n\nexport function OTPInput({\n type = 4,\n separate = false,\n disabled = false,\n className,\n ...props\n}: OTPInputProps) {\n return (\n <div className={cn(className)}>\n <InputOTP disabled={disabled} className=\"w-full\" {...props}>\n <InputOTPGroup className=\"w-full\">\n {[...new Array(type / 2)].map((_, index) => (\n <InputOTPSlot\n className=\"w-full\"\n key={index}\n index={index}\n disabled={disabled}\n />\n ))}\n </InputOTPGroup>\n {separate && <InputOTPSeparator />}\n <InputOTPGroup className=\"w-full\">\n {[...new Array(type / 2)].map((_, index) => (\n <InputOTPSlot\n key={index}\n className=\"w-full\"\n index={index + type / 2}\n disabled={disabled}\n />\n ))}\n </InputOTPGroup>\n </InputOTP>\n </div>\n );\n}\n\nfunction InputOTP({\n className,\n containerClassName,\n ...props\n}: React.ComponentProps<typeof BaseOTPInput> & {\n containerClassName?: string;\n}) {\n return (\n <BaseOTPInput\n data-slot=\"input-otp\"\n containerClassName={cn(\"flex items-center gap-1\", containerClassName)}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n );\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn(\"flex items-center gap-1\", className)}\n {...props}\n />\n );\n}\n\nfunction InputOTPSlot({\n index,\n className,\n disabled = false,\n placeholder = \"0\",\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number;\n disabled?: boolean;\n placeholder?: string;\n}) {\n const inputOTPContext = React.useContext(BaseOTPInputContext);\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(\n \"text-text-default data-[active=true]:border-input-border-primaryHover border-input-border-primaryDefault data-[active=true]:ring-effect-ring-primary data-[active=true]:aria-invalid:ring-destructive/20 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive relative flex size-11 items-center justify-center rounded-2xl border font-bold transition-all outline-none data-[active=true]:z-10 data-[active=true]:ring-[2px]\",\n className,\n {\n \"bg-input-bg-inactive\": disabled,\n \"text-text-inactive\": !char,\n },\n )}\n {...props}\n >\n <span className=\"text-h6\">{char || placeholder}</span>\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"animate-caret-blink bg-foreground h-4 w-px duration-1000\" />\n </div>\n )}\n </div>\n );\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"input-otp-separator\" role=\"separator\" {...props}>\n <div className=\"bg-border-primary-normal h-0.5 w-2\" />\n </div>\n );\n}\n","import * as React from \"react\";\n\nimport { cn } from \"@/utils\";\nimport { Eye, EyeOff } from \"lucide-react\";\n\ntype Props = React.ComponentProps<\"input\"> & {\n label?: string;\n};\n\nexport const PasswordInput = React.memo(\n ({ type, label, className, ...props }: Props) => {\n const [showPassword, setShowPassword] = React.useState(false);\n\n const error = props[\"aria-invalid\"] || false;\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n return (\n <div\n className={cn(\n \"group relative flex items-center gap-2\",\n \"min-w-0 rounded-lg border transition-[color,box-shadow]\",\n {\n /* Default State */\n \"hover:border-input-border-primaryHover border-input-border-primaryDefault\":\n !error,\n\n /* Default On Focus */\n \"focus-within:ring-effect-ring-primary focus-within:border-input-border-primaryHover focus-within:ring-2 focus-within:outline-none\":\n !error,\n\n /* Error State */\n \"border-input-border-destructiveDefault hover:border-input-border-destructiveHover text-text-destructive\":\n error && !props.disabled,\n\n /* Error On Focus */\n \"focus-within:border-input-border-destructiveHover focus-within:ring-effect-ring-destructive text-text-destructive focus-within:ring-2\":\n error,\n\n /* Disable State */\n \"bg-input-bg-inactive text-text-inactive border-input-border-primaryDefault pointer-events-none cursor-not-allowed\":\n props.disabled,\n },\n )}\n >\n <input\n ref={inputRef}\n id={props.id + (label || \"\")}\n type={showPassword ? \"text\" : \"password\"}\n data-slot=\"input\"\n className={cn(\n \"leading-body-sm text-text-default md:text-body-sm flex h-full w-full rounded-lg bg-transparent py-2 pr-10 pl-3 text-sm font-medium outline-none\",\n \"selection:bg-primary selection:text-primary-foreground\",\n \"placeholder:text-body-sm placeholder:leading-body-sm placeholder:text-text-inactive placeholder:font-medium\",\n {\n \"text-text-destructive\": error,\n },\n className,\n )}\n {...props}\n value={props.value}\n onBlur={(e) => {\n if (props.disabled) return;\n props.onBlur?.(e);\n }}\n />\n <button\n tabIndex={-1}\n data-slot=\"show-password\"\n type=\"button\"\n onClick={() => setShowPassword(!showPassword)}\n aria-label={showPassword ? \"Hide password\" : \"Show password\"}\n className=\"hover:bg-primary-bg-soft absolute right-2 flex h-5 w-5 cursor-pointer items-center justify-center rounded-sm bg-white\"\n >\n {showPassword ? (\n <Eye size={16} className=\"text-element-inverse-default-alt\" />\n ) : (\n <EyeOff size={16} className=\"text-element-inverse-default-alt\" />\n )}\n </button>\n </div>\n );\n },\n);\n","import { cn } from \"@/utils\";\nimport { Label } from \"@/ui/Label\";\nimport type { RadioGroupProps } from \"@radix-ui/react-radio-group\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { CircleIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\ntype Option = {\n label: string | React.ReactNode;\n value: string;\n};\n\ninterface RadioProps extends Omit<\n React.ComponentProps<\n React.ForwardRefExoticComponent<\n RadioGroupProps & React.RefAttributes<HTMLDivElement>\n >\n >,\n \"onChange\" | \"onSelect\"\n> {\n onSelect?: (value: string) => void;\n options: Option[];\n}\n\nfunction Radio({ onSelect, options, ...props }: RadioProps) {\n return (\n <BaseRadioGroup {...props}>\n {options.map((option) => {\n return (\n <Label\n htmlFor={option.value}\n key={option.value}\n className=\"hover:bg-surface-bg flex cursor-pointer items-center gap-x-2 rounded-lg p-1.5\"\n >\n <BaseRadioGroupItem\n onClick={() => {\n onSelect?.(option.value.toString());\n }}\n id={option.value}\n value={option.value}\n />\n {option.label}\n </Label>\n );\n })}\n </BaseRadioGroup>\n );\n}\n\nexport { Radio };\n\nfunction BaseRadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={className}\n {...props}\n />\n );\n}\n\nfunction BaseRadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n \"border-border-primary-light group data-[state=checked]:border-border-secondary-normal data-[state=checked]:hover:border-border-secondary-dark bg-surface-bg-container hover:bg-primary-bg-soft text-primary 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:bg-input/30 aspect-square size-[20px] shrink-0 cursor-pointer rounded-full border-[2px] shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-0 disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"fill-check-box-and-radio-checked-enabled group-data-[state=checked]:hover:fill-check-box-and-radio-checked-hovered absolute top-1/2 left-1/2 size-[16px] -translate-x-1/2 -translate-y-1/2 stroke-none\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n}\n","import { cn } from \"@/utils\";\nimport { Input } from \"@/ui/Input\";\nimport { debounce } from \"lodash\";\nimport { SearchIcon } from \"lucide-react\";\nimport { useQueryState } from \"nuqs\";\nimport { useCallback, useEffect, useState } from \"react\";\n\ninterface SearchInputProps extends React.ComponentProps<typeof Input> {\n searchKey: string;\n placeholder?: string;\n debounceDelay?: number;\n className?: string;\n addToParam?: boolean;\n}\n\nexport function SearchInput({\n searchKey,\n placeholder = \"Search by...\",\n debounceDelay = 500,\n className,\n addToParam = true,\n ...props\n}: SearchInputProps) {\n const [search, setSearch] = useQueryState(searchKey, {\n defaultValue: \"\",\n });\n const [inputValue, setInputValue] = useState(search ?? \"\");\n\n const debouncedSetValue = useCallback(\n debounce((value: string | null) => {\n if (addToParam) {\n setSearch(value);\n } else {\n setInputValue(value ?? \"\");\n }\n }, debounceDelay),\n [debounceDelay, addToParam, setSearch],\n );\n\n useEffect(() => {\n debouncedSetValue(inputValue);\n return () => {\n debouncedSetValue.cancel();\n };\n }, [inputValue, debouncedSetValue]);\n\n return (\n <div className={cn(\"relative\", className)}>\n <Input\n onChange={(e) => {\n const value = e.target.value;\n setInputValue(value);\n }}\n placeholder={placeholder}\n prefixNode={{\n node: <SearchIcon className=\"text-element-inverse-default\" />,\n withBorder: false,\n }}\n value={inputValue}\n className={cn(\"border-stroke-inverse-slate-03 w-full\", className)}\n {...props}\n />\n </div>\n );\n}\n","\"use client\";\n\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/ui/Popover\";\nimport { cn } from \"@/utils\";\nimport { Check } from \"lucide-react\";\nimport * as React from \"react\";\nimport { Button } from \"@/ui/Button\";\n\ninterface SelectHoverProps {\n options: { label: string | React.ReactNode; value: string }[];\n placeholder?: string;\n value?: string;\n onChange?: (value: string) => void;\n className?: string;\n}\n\nexport function SelectHover({\n options,\n placeholder = \"Select an option\",\n value,\n onChange,\n className,\n}: SelectHoverProps) {\n const [isOpen, setIsOpen] = React.useState(false);\n const timeoutRef = React.useRef<NodeJS.Timeout | null>(null);\n\n const handleSelect = (optionValue: string) => {\n onChange?.(optionValue);\n setIsOpen(false);\n };\n\n const selectedOption = options.find((option) => option.value === value);\n\n const handleMouseEnter = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n setIsOpen(true);\n };\n\n const handleMouseLeave = () => {\n timeoutRef.current = setTimeout(() => {\n setIsOpen(false);\n }, 300);\n };\n\n return (\n <Popover open={isOpen} onOpenChange={setIsOpen}>\n <div onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave}>\n <PopoverTrigger asChild>\n <Button role=\"combobox\" aria-expanded={isOpen} className={className}>\n <span className=\"truncate\">\n {selectedOption ? selectedOption.label : placeholder}\n </span>\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className=\"bg-surface-bg-container w-full rounded-3xl border-none p-2 shadow-md\"\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <div className=\"flex max-h-[300px] flex-col items-start gap-[2px] overflow-auto\">\n {options.map((option) => (\n <button\n key={option.value}\n className={cn(\n \"hover:bg-dropdown-bg-hover text-body-sm relative flex w-full cursor-pointer items-center rounded-lg p-[6px] outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n value === option.value && \"bg-dropdown-bg-hover\",\n )}\n onClick={() => handleSelect(option.value)}\n >\n <span className=\"flex-1\">{option.label}</span>\n {value === option.value && (\n <Check className=\"text-icon-secondary ml-2 h-4 w-4\" />\n )}\n </button>\n ))}\n </div>\n </PopoverContent>\n </div>\n </Popover>\n );\n}\n","import * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\ntype SelectRootProps = React.ComponentProps<typeof SelectPrimitive.Root> &\n Omit<React.HTMLAttributes<HTMLSelectElement>, \"onChange\">;\n\ninterface Props extends SelectRootProps {\n defaultValue: string | undefined;\n options: readonly {\n label: string;\n value: string;\n icon?: React.ReactNode;\n }[];\n onChange?: (value: string | undefined) => void;\n variant?: \"outline\" | \"ghost\";\n placeholder?: string;\n className?: string;\n withArrow?: boolean;\n contentProps?: React.ComponentProps<typeof SelectPrimitive.Content>;\n itemProps?: Omit<React.ComponentProps<typeof SelectPrimitive.Item>, \"value\">;\n}\n\nfunction SelectInput({\n defaultValue,\n options,\n variant = \"outline\",\n onChange,\n placeholder,\n className,\n withArrow = true,\n contentProps,\n itemProps,\n ...props\n}: Props) {\n return (\n <BaseSelect onValueChange={onChange} defaultValue={defaultValue} {...props}>\n <BaseSelectTrigger\n withArrow={withArrow}\n id={props.id}\n aria-invalid={props[\"aria-invalid\"]}\n className={cn(\"w-full cursor-pointer\", className)}\n variant={variant}\n >\n <BaseSelectValue\n className=\"flex-1\"\n placeholder={placeholder || \"Select\"}\n />\n </BaseSelectTrigger>\n <BaseSelectContent\n {...contentProps}\n className={cn(\n \"border-stroke-inverse-slate-02 border\",\n contentProps?.className\n )}\n >\n {options.map((option) => (\n <BaseSelectItem\n key={option.value}\n value={option.value}\n className={cn(itemProps?.className)}\n {...itemProps}\n >\n {option.icon}\n {option.label}\n </BaseSelectItem>\n ))}\n </BaseSelectContent>\n </BaseSelect>\n );\n}\n\nfunction BaseSelect({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\nfunction BaseSelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\nfunction BaseSelectTrigger({\n className,\n withArrow = true,\n size = \"default\",\n variant = \"outline\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\";\n variant?: \"outline\" | \"ghost\";\n withArrow?: boolean;\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"focus-visible:border-stroke-inverse-blue-02 focus-visible:bg-navigation-selected active:bg-navigation-selected active:border-stroke-inverse-blue-02 hover:bg-navigation-hovered cursor-pointer border border-transparent transition-all duration-300 active:border\",\n \"aria-invalid:border-stroke-inverse-red-01 aria-invalid:hover:border-stroke-inverse-red-02 aria-invalid:text-element-inverse-red!\",\n {\n \"bg-input-outline-enabled hover:bg-input-outline-hovered disabled:bg-input-outline-disabled border-stroke-inverse-slate-03 hover:border-stroke-inverse-slate-04 focus-within:border-stroke-inverse-slate-04 border\":\n variant === \"outline\",\n\n /* Invalid */\n\n /* Outline On Focus */\n \"focus-visible:hover:border-stroke-static-blue-03 focus-visible:border-stroke-static-blue-03 focus-within:outline-none\":\n variant === \"outline\",\n\n \"bg-input-ghost-enabled hover:bg-input-ghost-hovered disabled:bg-input-ghost-disabled\":\n variant === \"ghost\",\n },\n\n \"data-[placeholder]:text-element-inverse-disabled [&_svg:not([class*='text-'])]:text-element-inverse-disabled focus-visible:aria-invalid:border-input-border-destructiveHover text-body-sm rounded-unit-corner-radius-xl flex w-fit items-center justify-between gap-2 bg-transparent px-3 py-2 whitespace-nowrap transition-[color,box-shadow] outline-none disabled:cursor-not-allowed data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n {withArrow && (\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"text-icon-default size-4\" />\n </SelectPrimitive.Icon>\n )}\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction BaseSelectContent({\n className,\n children,\n position = \"popper\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"glass-effect data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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 rounded-unit-corner-radius-3xl relative z-[var(--z-popover)] max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto px-1 py-1 shadow-xs\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <BaseSelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <BaseSelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\n// function BaseSelectLabel({\n// className,\n// ...props\n// }: React.ComponentProps<typeof SelectPrimitive.Label>) {\n// return (\n// <SelectPrimitive.Label\n// data-slot=\"select-label\"\n// className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n// {...props}\n// />\n// );\n// }\n\nfunction BaseSelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"hover:bg-button-soft-hovered [&_svg:not([class*='text-'])]:text-text-inactive relative flex w-full cursor-pointer items-center gap-2 rounded-lg py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"text-icon-secondary size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n}\n\n// function BaseSelectSeparator({\n// className,\n// ...props\n// }: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n// return (\n// <SelectPrimitive.Separator\n// data-slot=\"select-separator\"\n// className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n// {...props}\n// />\n// );\n// }\n\nfunction BaseSelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n );\n}\n\nfunction BaseSelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n );\n}\n\nexport {\n // BaseSelectContent,\n // BaseSelectGroup,\n // BaseSelectItem,\n // BaseSelectLabel,\n // BaseSelectScrollDownButton,\n // BaseSelectScrollUpButton,\n // BaseSelectSeparator,\n // BaseSelectTrigger,\n // BaseSelectValue,\n SelectInput,\n};\n","import * as SheetPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />;\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SheetContent({\n className,\n showCloseButton = true,\n sheetOverlayClassName,\n children,\n side = \"right\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n sheetOverlayClassName?: string;\n showCloseButton?: boolean;\n}) {\n return (\n <SheetPortal>\n <SheetOverlay className={sheetOverlayClassName} />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"bg-fill-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n side === \"right\" &&\n \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\",\n side === \"left\" &&\n \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton ? (\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n ) : null}\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n );\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n );\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetFooter,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n};\n","import { cn } from \"@/utils\";\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\n \"bg-stroke-inverse-slate-03 animate-pulse rounded-md\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Skeleton };\n","import * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min, max],\n [value, defaultValue, min, max],\n );\n\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n \"relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\",\n className,\n )}\n {...props}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className={cn(\n \"bg-audioProgress-bg relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5\",\n )}\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className={cn(\n \"bg-audioProgress-item absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\",\n )}\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className=\"bg-audioProgress-item ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\"\n ></SliderPrimitive.Thumb>\n ))}\n </SliderPrimitive.Root>\n );\n}\n\nexport { Slider };\n","import { useTheme } from \"next-themes\";\nimport { Toaster as Sonner, type ToasterProps } from \"sonner\";\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme();\n\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n style={\n {\n \"--normal-bg\": \"var(--popover)\",\n \"--normal-text\": \"var(--popover-foreground)\",\n \"--normal-border\": \"var(--border)\",\n } as React.CSSProperties\n }\n {...props}\n />\n );\n};\n\nexport { Toaster };\n","import { cn } from \"@/utils\";\nimport { Label } from \"@/ui/Label\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport * as React from \"react\";\n\nfunction Switch({\n className,\n label,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & { label?: string }) {\n return (\n <div className=\"flex items-center space-x-2\">\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n id={props.id || label}\n className={cn(\n \"peer data-[state=checked]:bg-button-switch-on-enabled data-[state=checked]:hover:bg-button-switch-on-hovered data-[state=checked]:disabled:bg-button-switch-on-disabled data-[state=unchecked]:bg-button-switch-off-enabled data-[state=unchecked]:hover:bg-button-switch-off-hovered data-[state=unchecked]:disabled:bg-button-switch-off-disabled focus-visible:border-input-border-primaryHover focus-visible:ring-effect-ring-primary dark:data-[state=unchecked]:bg-input/80 inline-flex h-[20px] w-[34px] shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"bg-element-static-white dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-1px)] data-[state=unchecked]:translate-x-[1px]\",\n )}\n />\n </SwitchPrimitive.Root>\n {label && <Label htmlFor={props.id || label}>{label}</Label>}\n </div>\n );\n}\n\nexport { Switch };\n","import { cn } from \"@/utils\";\nimport { Loader2 as Spinner } from \"lucide-react\";\nimport { Badge } from \"@/ui/Badge\";\nimport { ProgressIndicator } from \"@/ui/ProgressIndicator\";\nimport {\n type ColumnDef,\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport { useHover } from \"@uidotdev/usehooks\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { AlertCircle } from \"lucide-react\";\nimport {\n IconsaxBriefcaseBold,\n MagickoAdd,\n MagickoCopy,\n MagickoCopySuccess,\n} from \"magick-icons\";\nimport * as React from \"react\";\nimport { useState } from \"react\";\nimport { Button } from \"@/ui/Button\";\nimport IconButton from \"@/ui/IconButton\";\nimport IconProfile from \"@/ui/IconProfile\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/ui/Popover\";\nimport { Text } from \"@/ui/Text\";\n\ntype TableProps<T> = {\n columns: ColumnDef<T, keyof T>[];\n tableData: T[];\n isLoading?: boolean;\n emptyState?: {\n emptyAction?: () => void;\n label: string;\n icon: React.ReactNode;\n };\n onRowClick?: (row: T) => void;\n};\n\nconst Table = <T,>({\n columns,\n tableData,\n isLoading = false,\n emptyState = {\n emptyAction: undefined,\n label: \"There is currently no data available to display in this table.\",\n icon: <IconProfile icon={<IconsaxBriefcaseBold />} color=\"teal\" />,\n },\n onRowClick,\n}: TableProps<T>) => {\n const table = useReactTable({\n data: tableData,\n columns,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getSortedRowModel: getSortedRowModel(),\n });\n\n const rowCount = table.getRowModel().rows.length;\n\n return (\n <div className=\"relative flex flex-col overflow-auto\">\n {isLoading ? (\n <div\n className={cn(\n rowCount === 0 ? \"\" : \"bg-gray-100 dark:bg-gray-700\",\n \"absolute top-10 left-0 w-full h-full min-h-[100px] opacity-70 z-10 flex items-center justify-center\"\n )}\n >\n <Spinner className=\"size-10 text-stroke-inverse-slate-04 \" />\n </div>\n ) : null}\n\n {!isLoading && rowCount === 0 ? (\n <div className=\"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 z-2\">\n <div className=\"flex flex-col items-center gap-4\">\n {emptyState?.icon}\n <Text>{emptyState?.label}</Text>\n {emptyState?.emptyAction ? (\n <Button\n variant={\"outline\"}\n prefix={\n <MagickoAdd className=\"[&_path]:fill-element-inverse-default\" />\n }\n onClick={() => emptyState?.emptyAction?.()}\n >\n Create new\n </Button>\n ) : null}\n </div>\n </div>\n ) : null}\n\n <div className=\"max-w-full flex-1 overflow-x-auto\">\n <table\n className=\"w-full caption-bottom text-sm\"\n style={{ minWidth: \"max-content\" }}\n >\n <thead className=\"bg-fill-inverse-slate-03\">\n {table.getHeaderGroups().map((headerGroup) => (\n <tr\n key={headerGroup.id}\n className=\"hover:bg-muted/50 border-stroke-inverse-slate-02 border-b transition-colors\"\n >\n {headerGroup.headers.map((header) => (\n <th\n key={header.id}\n className=\"text-muted-foreground h-12 px-4 text-left align-middle font-medium\"\n >\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n </th>\n ))}\n </tr>\n ))}\n </thead>\n <tbody className=\"relative\">\n {table.getRowModel().rows.map((row) => {\n return (\n <tr\n key={row.id}\n className=\"hover:bg-muted/50 bg-table-table-cell-unselected group/row border-stroke-inverse-slate-02 cursor-pointer border-b transition-colors\"\n onClick={() => onRowClick?.(row.original)}\n >\n {row.getVisibleCells().map((cell) => (\n <td key={cell.id} className=\"p-4\">\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext()\n )}\n </td>\n ))}\n </tr>\n );\n })}\n\n {rowCount === 0 &&\n Array.from({ length: 6 }).map((_, index) => (\n <tr key={index}>\n <td colSpan={columns.length} className=\"h-12 p-4\">\n <div className=\"\" />\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n};\n\n// PrimaryCell component with variants (no explicit default variant)\nconst primaryCellVariants = cva(\n \"flex items-center gap-2 text-body-sm text-element-inverse-default\",\n {\n variants: {\n variant: {\n badge: \"\",\n progress: \"\",\n error: \"text-element-inverse-red flex items-center gap-2\",\n },\n },\n }\n);\n\nexport interface PrimaryCellProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof primaryCellVariants> {\n children?: React.ReactNode;\n badgeContent?: React.ReactNode;\n badgeType?:\n | \"primary-hard\"\n | \"primary-soft\"\n | \"destructive-hard\"\n | \"destructive-soft\"\n | \"secondary-hard\"\n | \"secondary-soft\";\n badgeSize?: \"sm\" | \"md\";\n progressValue?: number;\n progressMax?: number;\n showProgressPercentage?: boolean;\n errorMessage?: string;\n hoverUI?: React.ReactNode;\n}\n\nconst PrimaryCell = React.forwardRef<HTMLDivElement, PrimaryCellProps>(\n (\n {\n variant,\n badgeContent,\n children,\n badgeType,\n badgeSize = \"sm\",\n progressValue,\n progressMax = 100,\n showProgressPercentage = false,\n errorMessage,\n hoverUI,\n ...props\n },\n ref\n ) => {\n let content: React.ReactNode = children;\n\n if (variant === \"badge\") {\n content = (\n <div className=\"flex items-center gap-2\">\n {children}\n {badgeContent && (\n <Badge type={badgeType} size={badgeSize}>\n {badgeContent}\n </Badge>\n )}\n </div>\n );\n } else if (variant === \"progress\") {\n content = (\n <>\n {progressValue !== 100 && (\n <ProgressIndicator\n variant=\"circle\"\n value={progressValue || 0}\n max={progressMax}\n showPercentage={showProgressPercentage}\n />\n )}\n {children && (\n <span className=\"text-body-sm text-element-inverse-default\">\n {children}\n </span>\n )}\n </>\n );\n } else if (variant === \"error\") {\n content = (\n <>\n <AlertCircle className=\"size-4 shrink-0\" />\n {errorMessage ? (\n <span className=\"text-body-sm\">{errorMessage}</span>\n ) : (\n children\n )}\n </>\n );\n }\n\n return (\n <div\n ref={ref}\n className={cn(primaryCellVariants({ variant }))}\n {...props}\n >\n <div className=\"flex min-w-0 flex-1 items-center gap-2\">{content}</div>\n {hoverUI && (\n <div className=\"ml-2 flex items-center gap-2 opacity-0 transition-opacity duration-200 group-hover/row:opacity-100\">\n {hoverUI}\n </div>\n )}\n </div>\n );\n }\n);\n\nPrimaryCell.displayName = \"PrimaryCell\";\n\n// Attach PrimaryCell as a compound component\nTable.PrimaryCell = PrimaryCell;\n\nconst TextCell = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & {\n text: string | number | undefined;\n copyable?: boolean;\n className?: string;\n }\n>(({ text, copyable = true, className, ...props }, ref) => {\n const [isCopied, setIsCopied] = useState(false);\n const [hoverRef, isHovering] = useHover();\n\n const handleCopy = () => {\n navigator.clipboard.writeText(text as string);\n setIsCopied(true);\n };\n\n React.useEffect(() => {\n if (isCopied) {\n setTimeout(() => {\n setIsCopied(false);\n }, 1200);\n }\n }, [isCopied]);\n\n return (\n <div className={cn(\"w-full h-full\", className)} ref={ref} {...props}>\n <div className=\"relative\" ref={hoverRef}>\n {copyable && isHovering && (\n <IconButton\n icon={\n isCopied ? (\n <MagickoCopySuccess\n className={cn(\n isCopied ? \"size-4 scale-115\" : \"size-4\",\n \"transition-all ease-in duration-200\"\n )}\n />\n ) : (\n <MagickoCopy className=\"size-4\" />\n )\n }\n className=\"absolute top-1/2 -right-3 -translate-y-1/2\"\n size=\"sm\"\n varient=\"soft\"\n onClick={handleCopy}\n />\n )}\n\n <Popover>\n <PopoverTrigger asChild>\n <Text className=\"truncate line-clamp-1\">{text ?? \"-\"}</Text>\n </PopoverTrigger>\n <PopoverContent className=\"\">\n <Text>{text ?? \"-\"}</Text>\n </PopoverContent>\n </Popover>\n </div>\n </div>\n );\n});\n\nTextCell.displayName = \"TextCell\";\nTable.TextCell = TextCell;\n\nexport default Table;\n","import * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport * as React from \"react\";\n\nimport { Badge } from \"@/ui/Badge\";\nimport { cn } from \"@/utils\";\n\nexport interface TabItem {\n value: string;\n label: string;\n content: React.ReactNode;\n notification?: boolean;\n count?: number;\n icon?: React.ReactNode;\n}\n\nexport interface TabItemWithoutContent {\n value: string;\n label: string;\n notification?: boolean;\n count?: number;\n icon?: React.ReactNode;\n onClick?: () => void;\n}\n\nfunction Tabs({\n defaultActiveTab,\n tabSmall,\n className,\n tabs,\n showContent = true,\n ...props\n}: {\n defaultActiveTab: string;\n tabSmall?: boolean;\n className?: string;\n notification?: boolean;\n showContent?: boolean;\n tabs: (TabItem | TabItemWithoutContent)[];\n} & React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <BaseTabs defaultValue={defaultActiveTab} className={className} {...props}>\n <BaseTabsList>\n {tabs.map((tab) => (\n <BaseTabsTrigger\n key={tab.value}\n tabSmall={tabSmall}\n value={tab.value}\n className=\"relative flex cursor-pointer items-center justify-center gap-x-2\"\n onClick={\n typeof tab === \"object\" && \"onClick\" in tab\n ? tab.onClick\n : undefined\n }\n >\n {tab.icon && <div>{tab.icon}</div>}\n {tab.label}\n {tab.notification && (\n <div className=\"bg-icon-destructive absolute top-1 right-1 size-1.5 rounded-full\" />\n )}\n {!!tab.count && <Badge type=\"primary-soft\">{tab.count}</Badge>}\n </BaseTabsTrigger>\n ))}\n </BaseTabsList>\n {showContent &&\n \"content\" in tabs[0] &&\n tabs.map((tab) => (\n <BaseTabsContent key={tab.value} value={tab.value}>\n {(tab as TabItem).content}\n </BaseTabsContent>\n ))}\n </BaseTabs>\n );\n}\n\n// Base components\nfunction BaseTabs({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n );\n}\n\nfunction BaseTabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(\n \"inline-flex min-h-9 w-fit flex-nowrap items-center justify-center gap-1.5 rounded-lg py-[3px]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction BaseTabsTrigger({\n className,\n tabSmall,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger> & {\n tabSmall?: boolean;\n}) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n \"dark:data-[state=active]:text-text-default focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 hover:!bg-tab-bg-hover dark:text-text-light data-[state=active]:after:bg-icon-default text-body-sm data-[state=active]:text-text-default text-text-light relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md px-2 py-1 font-sans font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:after:absolute data-[state=active]:after:right-0 data-[state=active]:after:-bottom-1.5 data-[state=active]:after:left-0 data-[state=active]:after:mx-auto data-[state=active]:after:h-0.5 data-[state=active]:after:w-[calc(100%-16px)] data-[state=active]:after:content-[''] [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n tabSmall &&\n \"data-[state=active]:bg-tab-bg-active dark:data-[state=active]:bg-tab-bg-active focus-visible:border-none focus-visible:ring-0 focus-visible:outline-0 data-[state=active]:after:hidden dark:data-[state=active]:border-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction BaseTabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n );\n}\n\nexport { Tabs };\n","import { cn } from \"@/utils\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\ntype Props = {\n label: string;\n variant: string;\n className?: string;\n};\n\nconst tagVariants = cva(\"px-1 rounded-sm\", {\n variants: {\n variant: {\n primary: \"bg-tag-bg-primary\",\n secondary: \"bg-tag-bg-secondary\",\n destructive: \"bg-tag-bg-destructive\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n },\n});\n\nfunction Tag({\n label,\n variant,\n className,\n}: Props & VariantProps<typeof tagVariants>) {\n return (\n <div data-slot=\"tag\" className={cn(tagVariants({ variant }), className)}>\n <span className=\"text-caption font-semibold text-white\">{label}</span>\n </div>\n );\n}\n\nexport { Tag };\n","import * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nconst TextareaInput = React.forwardRef<\n HTMLTextAreaElement,\n React.ComponentProps<\"textarea\"> & {\n label?: string;\n }\n>(({ className, label, ...props }, ref) => {\n return (\n <textarea\n ref={ref}\n id={props.id}\n data-slot=\"textarea\"\n className={cn(\n \"text-body-sm border-stroke-inverse-slate-03 placeholder:text-body-sm! placeholder:leading-body-sm placeholder:text-text-inactive hover:border-stroke-static-slate-03 bg-input-ghost-enabled focus-visible:border-stroke-static-blue-03 disabled:border-stroke-inverse-slate-02 disabled:bg-fill-inverse-slate-02 rounded-unit-corner-radius-xl flex field-sizing-content min-h-16 w-full border px-3 py-2 shadow-xs transition-[color,box-shadow] outline-none placeholder:font-medium disabled:cursor-not-allowed\",\n \"aria-invalid:border-stroke-inverse-red-01 aria-invalid:hover:border-stroke-inverse-red-02 aria-invalid:text-element-inverse-red\",\n className\n )}\n {...props}\n />\n );\n});\n\nTextareaInput.displayName = \"TextareaInput\";\n\nexport default TextareaInput;\n","\"use client\";\n\nimport { cn } from \"@/utils\";\nimport { Clock } from \"lucide-react\";\nimport * as React from \"react\";\nimport { useState } from \"react\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/ui/Dropdown\";\nimport { Input } from \"@/ui/Input\";\nimport { Label } from \"@/ui/Label\";\n\ninterface TimePickerProps\n extends Omit<React.ComponentProps<\"input\">, \"onChange\"> {\n label?: string;\n timeOptions: { label: string; value: string }[];\n defaultValue?: string;\n value?: string;\n onValueChange?: (value: string) => void;\n}\n\nexport function TimePicker({\n label,\n onValueChange,\n timeOptions,\n defaultValue,\n value,\n ...props\n}: TimePickerProps) {\n \n const [isOpen, setIsOpen] = useState(false);\n const currentValue = value || defaultValue || \"\";\n\n const formatTimeForDisplay = (timeValue: string): string => {\n if (!timeValue) return \"\";\n\n const timeOption = timeOptions?.find(\n (option) => option.value === timeValue,\n );\n return timeOption ? timeOption.label : timeValue;\n };\n\n const handleChange = (value: string) => {\n onValueChange?.(value);\n };\n return (\n <div className=\"flex flex-col gap-3\">\n {label && (\n <Label htmlFor=\"time-picker\" className=\"px-1\">\n Time\n </Label>\n )}\n <DropdownMenu open={isOpen} onOpenChange={setIsOpen}>\n <DropdownMenuTrigger className=\"!p-0\">\n <Input\n {...props}\n className=\"py-[1.4px]\"\n value={currentValue ? formatTimeForDisplay(currentValue) : \"\"}\n onKeyDown={(e) => e.preventDefault()}\n prefixNode={{\n node: (\n <Clock className=\"pointer-events-none h-5 w-5 text-gray-700\" />\n ),\n withBorder: false,\n }}\n />\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align=\"start\"\n className=\"max-h-60 min-w-41 overflow-y-auto\"\n >\n {timeOptions?.map((item) => (\n <DropdownMenuItem\n key={item.value}\n className={cn(\n \"text-body-sm\",\n currentValue === item.value && \"bg-dropdown-bg-hover font-bold\",\n )}\n onClick={() => handleChange(item.value)}\n >\n {item.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n}\n","import { Slot } from \"@radix-ui/react-slot\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\ninterface TitleProps extends React.ComponentPropsWithoutRef<\"h2\"> {\n asChild?: boolean;\n}\n\nconst Title = React.forwardRef<HTMLHeadingElement, TitleProps>(\n ({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"h2\";\n\n return (\n <Comp\n ref={ref}\n className={cn(\n \"text-title-lg! leading-body-lg! text-element-inverse-default font-bold\",\n className\n )}\n {...props}\n />\n );\n }\n);\n\nTitle.displayName = \"Title\";\n\nexport default Title;\n","import * as TogglePrimitive from \"@radix-ui/react-toggle\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center gap-2 text-sm font-medium disabled:pointer-events-none disabled:text-icon-inactive data-[state=on]:disabled:text-icon-inactive data-[state=on]:disabled:bg-toggle-bg-inactiveDefault data-[state=on]:bg-toggle-bg-activeDefault data-[state=on]:hover:bg-toggle-bg-activeHover data-[state=on]:text-icon-white hover:bg-toggle-bg-inactiveHover hover:text-icon-default [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap cursor-pointer\",\n {\n variants: {\n shape: {\n rectangle: \"rounded-md\",\n rounded: \"rounded-full\",\n },\n style: {\n ghost: \"bg-transparent hover:bg-transparent\",\n outline:\n \"border border-border-primary-light bg-toggle-bg-inactiveDefault\",\n soft: \"bg-button-soft-enabled\",\n },\n size: {\n sm: \"h-7 px-1 min-w-7\",\n md: \"h-8 px-1.5 min-w-8\",\n lg: \"h-9 px-2.5 min-w-9\",\n },\n },\n defaultVariants: {\n shape: \"rectangle\",\n style: \"soft\",\n size: \"sm\",\n },\n },\n);\n\nfunction Toggle({\n className,\n active,\n shape,\n style,\n size,\n ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n VariantProps<typeof toggleVariants> & {\n active?: boolean;\n }) {\n return (\n <TogglePrimitive.Root\n data-slot=\"toggle\"\n className={cn(toggleVariants({ shape, style, size, className }))}\n pressed={active}\n {...props}\n />\n );\n}\n\nexport { Toggle, toggleVariants };\n","import { useRef } from \"react\";\n\nimport { ToggleDropdownLeftButton } from \"./ToggleDropdownLeftButton\";\nimport { ToggleDropdownRightButton } from \"./ToggleDropdownRightButton\";\nimport { useToggleDropdown } from \"./useToggleDropdown\";\n\ntype ToggleDropdownButtonProps = {\n type: \"text\" | \"icon\";\n selected: boolean;\n variant: \"primary\" | \"secondary\" | \"destructive\";\n leftButtonChildren?: React.ReactNode;\n rightButtonChildren?: React.ReactNode;\n onLeftButtonClick?: () => void;\n onRightButtonClick?: () => void;\n dropdownMenu?: React.ReactNode;\n};\n\nconst ToggleDropdownButton = ({\n type,\n selected,\n variant,\n leftButtonChildren,\n rightButtonChildren,\n onRightButtonClick,\n onLeftButtonClick,\n dropdownMenu,\n}: ToggleDropdownButtonProps) => {\n const rightButtonRef = useRef<HTMLButtonElement>(null);\n\n const handleRightButtonClick = () => {\n onRightButtonClick?.();\n };\n\n const handleLeftButtonClick = () => {\n onLeftButtonClick?.();\n };\n\n return (\n <div className=\"gap-x-unit-1px flex items-center\">\n <ToggleDropdownLeftButton\n selected={selected}\n variant={variant}\n size=\"md\"\n type={type}\n onClick={handleLeftButtonClick}\n >\n {leftButtonChildren}\n </ToggleDropdownLeftButton>\n\n <div className=\"relative\">\n <ToggleDropdownRightButton\n ref={rightButtonRef}\n selected={selected}\n variant={variant}\n size=\"md\"\n type={type}\n onClick={handleRightButtonClick}\n >\n {rightButtonChildren}\n </ToggleDropdownRightButton>\n\n {dropdownMenu}\n </div>\n </div>\n );\n};\n\nexport default ToggleDropdownButton;\nexport { useToggleDropdown };\n","import { cva } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\nimport IconContainer from \"@/ui/IconContainer\";\n\nconst toggleDropdownLeftButtonVariants = cva(\n \"flex items-center justify-center cursor-pointer transition-all\",\n {\n variants: {\n variant: {\n primary:\n \"bg-button-toggle-unselected-primary-enabled text-element-inverse-default hover:bg-button-toggle-unselected-primary-hovered active:bg-button-toggle-unselected-primary-pressed\",\n secondary:\n \"bg-button-toggle-unselected-secondary-enabled text-element-inverse-default hover:bg-button-toggle-unselected-secondary-hovered active:bg-button-toggle-unselected-secondary-pressed\",\n destructive:\n \"bg-button-toggle-unselected-destructive-enabled text-element-inverse-default hover:bg-button-toggle-unselected-destructive-hovered active:bg-button-toggle-unselected-destructive-pressed\",\n },\n size: {\n md: \"px-3 py-2.5 h-full rounded-l-unit-corner-radius-xl rounded-r-unit-corner-radius-sm\",\n lg: \"px-4 py-3 h-full rounded-l-unit-corner-radius-2xl rounded-r-unit-corner-radius-md\",\n },\n selected: {\n true: \"\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n selected: true,\n variant: \"primary\",\n class:\n \"bg-button-toggle-selected-primary-enabled text-element-static-white hover:bg-button-toggle-selected-primary-hovered active:bg-button-toggle-selected-primary-pressed\",\n },\n {\n selected: true,\n variant: \"secondary\",\n class:\n \"bg-button-toggle-selected-secondary-enabled text-element-static-white hover:bg-button-toggle-selected-secondary-hovered active:bg-button-toggle-selected-secondary-pressed\",\n },\n {\n selected: true,\n variant: \"destructive\",\n class:\n \"bg-button-toggle-selected-destructive-enabled text-element-static-white hover:bg-button-toggle-selected-destructive-hovered active:bg-button-toggle-selected-destructive-pressed\",\n },\n ],\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n selected: false,\n },\n },\n);\n\nconst toggleDropdownLeftButtonIconVariants = cva(\n \"flex items-center justify-center cursor-pointer transition-all\",\n {\n variants: {\n variant: {\n primary:\n \"bg-button-toggle-unselected-primary-enabled text-element-inverse-default hover:bg-button-toggle-unselected-primary-hovered active:bg-button-toggle-unselected-primary-pressed\",\n secondary:\n \"bg-button-toggle-unselected-secondary-enabled text-element-inverse-default hover:bg-button-toggle-unselected-secondary-hovered active:bg-button-toggle-unselected-secondary-pressed\",\n destructive:\n \"bg-button-toggle-unselected-destructive-enabled text-element-inverse-default hover:bg-button-toggle-unselected-destructive-hovered active:bg-button-toggle-unselected-destructive-pressed\",\n },\n size: {\n md: \"p-unit-10px h-full rounded-l-unit-corner-radius-xl rounded-r-unit-corner-radius-sm\",\n lg: \"p-3 h-full rounded-l-unit-corner-radius-2xl rounded-r-unit-corner-radius-md\",\n },\n selected: {\n true: \"\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n selected: true,\n variant: \"primary\",\n class:\n \"bg-button-toggle-selected-primary-enabled text-element-static-white hover:bg-button-toggle-selected-primary-hovered active:bg-button-toggle-selected-primary-pressed\",\n },\n {\n selected: true,\n variant: \"secondary\",\n class:\n \"bg-button-toggle-selected-secondary-enabled text-element-static-white hover:bg-button-toggle-selected-secondary-hovered active:bg-button-toggle-selected-secondary-pressed\",\n },\n {\n selected: true,\n variant: \"destructive\",\n class:\n \"bg-button-toggle-selected-destructive-enabled text-element-static-white hover:bg-button-toggle-selected-destructive-hovered active:bg-button-toggle-selected-destructive-pressed\",\n },\n ],\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n selected: false,\n },\n },\n);\nexport interface ToggleDropdownLeftButtonProps extends Omit<\n React.ComponentProps<\"button\">,\n \"children\" | \"type\"\n> {\n type?: \"text\" | \"icon\";\n variant?: \"primary\" | \"secondary\" | \"destructive\";\n size?: \"md\" | \"lg\";\n selected?: boolean;\n children?: React.ReactNode;\n}\n\nfunction ToggleDropdownLeftButton({\n className,\n variant = \"primary\",\n type = \"text\",\n size = \"md\",\n selected = false,\n children,\n ...props\n}: ToggleDropdownLeftButtonProps) {\n const iconClass = selected\n ? \"text-element-static-white fill-element-static-white\"\n : \"text-element-inverse-default fill-element-inverse-default\";\n\n // Check if children is a React element (likely an icon)\n const isIcon = React.isValidElement(children);\n\n return type === \"text\" ? (\n <button\n type=\"button\"\n className={cn(\n toggleDropdownLeftButtonVariants({ variant, size, selected }),\n className,\n )}\n {...props}\n >\n {isIcon ? (\n <IconContainer\n colorInFill={false}\n className={cn(\n iconClass,\n `${selected ? \"[&_path]:!text-element-static-white [&_path]:!fill-element-static-white\" : \"[&_path]:!text-element-inverse-default [&_path]:!fill-element-inverse-default\"}`,\n )}\n size={\"md\"}\n >\n {children}\n </IconContainer>\n ) : (\n children\n )}\n </button>\n ) : (\n <button\n type=\"button\"\n className={cn(\n toggleDropdownLeftButtonIconVariants({ variant, size, selected }),\n className,\n )}\n {...props}\n >\n <IconContainer\n colorInFill={false}\n className={cn(\n iconClass,\n `${selected ? \"[&_path]:!text-element-static-white [&_path]:!fill-element-static-white\" : \"[&_path]:!text-element-inverse-default [&_path]:!fill-element-inverse-default\"}`,\n )}\n size={\"md\"}\n >\n {children}\n </IconContainer>\n </button>\n );\n}\n\nexport { ToggleDropdownLeftButton, toggleDropdownLeftButtonVariants };\n","import { cva } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\nimport IconContainer from \"@/ui/IconContainer\";\n\nconst toggleDropdownRightButtonVariants = cva(\n \"flex items-center justify-center group cursor-pointer transition-all\",\n {\n variants: {\n variant: {\n primary:\n \"bg-button-toggle-unselected-primary-enabled text-element-inverse-default hover:bg-button-toggle-unselected-primary-hovered active:bg-button-toggle-unselected-primary-pressed\",\n secondary:\n \"bg-button-toggle-unselected-secondary-enabled text-element-inverse-default hover:bg-button-toggle-unselected-secondary-hovered active:bg-button-toggle-unselected-secondary-pressed\",\n destructive:\n \"bg-button-toggle-unselected-destructive-enabled text-element-inverse-default hover:bg-button-toggle-unselected-destructive-hovered active:bg-button-toggle-unselected-destructive-pressed\",\n },\n size: {\n md: \"px-1 py-unit-10px h-full rounded-r-unit-corner-radius-xl rounded-l-unit-corner-radius-sm\",\n lg: \"px-1 py-3 h-full rounded-r-unit-corner-radius-2xl rounded-l-unit-corner-radius-md\",\n },\n selected: {\n true: \"\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n selected: true,\n variant: \"primary\",\n class:\n \"bg-button-toggle-selected-primary-enabled text-element-static-white hover:bg-button-toggle-selected-primary-hovered active:bg-button-toggle-selected-primary-pressed\",\n },\n {\n selected: true,\n variant: \"secondary\",\n class:\n \"bg-button-toggle-selected-secondary-enabled text-element-static-white hover:bg-button-toggle-selected-secondary-hovered active:bg-button-toggle-selected-secondary-pressed\",\n },\n {\n selected: true,\n variant: \"destructive\",\n class:\n \"bg-button-toggle-selected-destructive-enabled text-element-static-white hover:bg-button-toggle-selected-destructive-hovered active:bg-button-toggle-selected-destructive-pressed\",\n },\n ],\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n selected: false,\n },\n },\n);\n\nconst toggleDropdownRightButtonIconVariants = cva(\n \"flex items-center justify-center group cursor-pointer transition-all\",\n {\n variants: {\n variant: {\n primary:\n \"bg-button-toggle-unselected-primary-enabled text-element-inverse-default hover:bg-button-toggle-unselected-primary-hovered active:bg-button-toggle-unselected-primary-pressed\",\n secondary:\n \"bg-button-toggle-unselected-secondary-enabled text-element-inverse-default hover:bg-button-toggle-unselected-secondary-hovered active:bg-button-toggle-unselected-secondary-pressed\",\n destructive:\n \"bg-button-toggle-unselected-destructive-enabled text-element-inverse-default hover:bg-button-toggle-unselected-destructive-hovered active:bg-button-toggle-unselected-destructive-pressed\",\n },\n size: {\n md: \"px-1 py-unit-10px h-full rounded-r-unit-corner-radius-xl rounded-l-unit-corner-radius-sm\",\n lg: \"px-1 py-3 h-full rounded-r-unit-corner-radius-2xl rounded-l-unit-corner-radius-md\",\n },\n selected: {\n true: \"\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n selected: true,\n variant: \"primary\",\n class:\n \"bg-button-toggle-selected-primary-enabled text-element-static-white hover:bg-button-toggle-selected-primary-hovered active:bg-button-toggle-selected-primary-pressed\",\n },\n {\n selected: true,\n variant: \"secondary\",\n class:\n \"bg-button-toggle-selected-secondary-enabled text-element-static-white hover:bg-button-toggle-selected-secondary-hovered active:bg-button-toggle-selected-secondary-pressed\",\n },\n {\n selected: true,\n variant: \"destructive\",\n class:\n \"bg-button-toggle-selected-destructive-enabled text-element-static-white hover:bg-button-toggle-selected-destructive-hovered active:bg-button-toggle-selected-destructive-pressed\",\n },\n ],\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n selected: false,\n },\n },\n);\n\nexport interface ToggleDropdownRightButtonProps extends Omit<\n React.ComponentProps<\"button\">,\n \"children\" | \"type\"\n> {\n variant?: \"primary\" | \"secondary\" | \"destructive\";\n type?: \"text\" | \"icon\";\n size?: \"md\" | \"lg\";\n selected?: boolean;\n children?: React.ReactNode;\n}\n\nfunction ToggleDropdownRightButton({\n className,\n variant = \"primary\",\n type = \"text\",\n size = \"md\",\n selected = false,\n children,\n ...props\n}: ToggleDropdownRightButtonProps) {\n const iconClass = selected\n ? \"text-element-static-white fill-element-static-white\"\n : \"text-element-inverse-default fill-element-inverse-default\";\n\n // Check if children is a React element (likely an icon)\n const isIcon = React.isValidElement(children);\n\n return type === \"text\" ? (\n <button\n type=\"button\"\n className={cn(\n toggleDropdownRightButtonVariants({ variant, size, selected }),\n className,\n )}\n {...props}\n >\n {isIcon ? (\n <IconContainer\n colorInFill={false}\n className={cn(\n iconClass,\n `${selected ? \"[&_path]:!text-element-static-white [&_path]:!fill-element-static-white\" : \"[&_path]:!text-element-inverse-default [&_path]:!fill-element-inverse-default\"}`,\n )}\n size={\"md\"}\n >\n {children}\n </IconContainer>\n ) : (\n children\n )}\n </button>\n ) : (\n <button\n type=\"button\"\n className={cn(\n toggleDropdownRightButtonIconVariants({ variant, size, selected }),\n className,\n )}\n {...props}\n >\n <IconContainer\n colorInFill={false}\n className={cn(\n iconClass,\n `${selected ? \"[&_path]:! text-element-static-white [&_path]:!fill-element-static-white\" : \"[&_path]:!text-element-inverse-default [&_path]:!fill-element-inverse-default\"}`,\n )}\n size={\"md\"}\n >\n {children}\n </IconContainer>\n </button>\n );\n}\n\nexport { ToggleDropdownRightButton, toggleDropdownRightButtonVariants };\n","import { useState, useCallback } from \"react\";\n\nexport const useToggleDropdown = (initialState = false) => {\n const [isOpen, setIsOpen] = useState(initialState);\n\n const openDropdown = useCallback(() => {\n setIsOpen(true);\n }, []);\n\n const closeDropdown = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n const toggleDropdown = useCallback(() => {\n setIsOpen((prev) => !prev);\n }, []);\n\n return {\n isOpen,\n openDropdown,\n closeDropdown,\n toggleDropdown,\n setIsOpen,\n };\n};\n\n","import { cn } from \"@/utils\";\nimport { ChevronDown } from \"lucide-react\";\nimport { useState } from \"react\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuTrigger,\n} from \"@/ui/Dropdown\";\n\ntype ToolToggleProps = {\n className?: string;\n dropdown?: boolean;\n dropdownContent?: React.ReactNode;\n icon?: React.ReactNode;\n onClick?: (active: boolean) => void;\n};\n\nconst ToolToggle = ({\n dropdown,\n dropdownContent,\n icon,\n className,\n onClick,\n}: ToolToggleProps) => {\n const [active, setActive] = useState(false);\n\n const handleClick = () => {\n setActive(!active);\n onClick?.(active);\n };\n\n return (\n <div className={cn(dropdown ? \"min-w-20\" : \"min-w-[52px]\", className)}>\n <DropdownMenu>\n <DropdownMenuTrigger\n className={cn(\n \"border-border-primary-light !bg-toggle-bg-inactiveDefault hover:!bg-toggle-bg-inactiveHover flex h-full w-full items-center justify-center gap-x-2 !rounded-full border p-4 transition-all\",\n active &&\n \"!bg-toggle-bg-activeDefault hover:!bg-toggle-bg-activeHover\",\n )}\n >\n <div\n className=\"flex items-center justify-center gap-x-2\"\n onClick={handleClick}\n >\n {icon}\n {dropdown && <ChevronDown className=\"text-icon-default size-5\" />}\n </div>\n </DropdownMenuTrigger>\n {dropdown && (\n <DropdownMenuContent align=\"start\" className=\"min-w-41\">\n {dropdownContent}\n </DropdownMenuContent>\n )}\n </DropdownMenu>\n </div>\n );\n};\n\nexport { ToolToggle };\n","import { cn } from \"@/utils\";\n\ntype WrapperCardProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nexport const WrapperCard = (props: WrapperCardProps) => {\n const { children, className } = props;\n\n return (\n <div\n className={cn(\n \"rounded-unit-corner-radius-5xl scrollbar-hide border-stroke-inverse-slate-02 bg-fill-foreground overflow-scroll border p-4\",\n className\n )}\n >\n {children}\n </div>\n );\n};\n","import * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport * as React from \"react\";\nimport {\n Controller,\n FormProvider,\n useFormContext,\n useFormState,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\";\n\nimport { cn } from \"@/utils\";\nimport { Label } from \"@/ui/Label\";\n\nconst BaseForm = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue,\n);\n\nconst BaseFormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState } = useFormContext();\n const formState = useFormState({ name: fieldContext.name });\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\");\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue,\n);\n\nfunction BaseFormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n data-slot=\"form-item\"\n className={cn(\"grid gap-2\", className)}\n {...props}\n />\n </FormItemContext.Provider>\n );\n}\n\nfunction BaseFormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn(\n \"data-[error=true]:text-destructive text-title-sm! text-element-inverse-default font-semibold\",\n className,\n )}\n htmlFor={formItemId}\n {...props}\n />\n );\n}\n\nfunction BaseFormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n}\n\nfunction BaseFormDescription({\n className,\n ...props\n}: React.ComponentProps<\"p\">) {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction BaseFormMessage({ className, ...props }: React.ComponentProps<\"p\">) {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? \"\") : props.children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n //Warning: I don't know why I can't use cn here :)\n className={`text-text-destructive text-caption ${className}`}\n {...props}\n >\n {body}\n </p>\n );\n}\n\nexport {\n BaseForm,\n BaseFormControl,\n BaseFormDescription,\n BaseFormField,\n BaseFormItem,\n BaseFormLabel,\n BaseFormMessage,\n useFormField,\n};\n","import * as React from \"react\";\nimport type { Control, FieldValues, Path } from \"react-hook-form\";\nimport {\n BaseFormControl,\n BaseFormField,\n BaseFormItem,\n BaseFormLabel,\n BaseFormMessage,\n} from \"@/ui/form/Base\";\nimport { cn } from \"@/utils\";\nimport type { Input } from \"@/ui/Input\";\n\nexport type FormFieldProps<T extends FieldValues> = {\n control: Control<T>;\n isShowError?: boolean;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n field: {\n name: Path<T>;\n label?: string;\n required?: boolean;\n optional?: boolean;\n render: React.ReactNode;\n };\n className?: string;\n};\n\nexport const FormField = <T extends FieldValues>({\n control,\n field,\n isShowError,\n onBlur,\n className,\n}: FormFieldProps<T>) => {\n return (\n <BaseFormField\n key={field.name}\n control={control}\n name={field.name}\n render={({ field: formField }) => (\n <BaseFormItem className={cn(\"w-full\", className)}>\n {field.label && (\n <BaseFormLabel className=\"gap-1\">\n {field.label}\n {field.required && (\n <span className=\"text-element-inverse-red\">*</span>\n )}\n {field.optional && (\n <span className=\"text-title-sm!\">(Optional)</span>\n )}\n </BaseFormLabel>\n )}\n <BaseFormControl>\n {React.isValidElement(field.render)\n ? React.cloneElement(\n field.render as React.ReactElement<\n React.ComponentProps<typeof Input>\n >,\n {\n ...formField,\n onBlur: (e) => {\n formField.onBlur();\n onBlur?.(e);\n },\n }\n )\n : field.render}\n </BaseFormControl>\n {isShowError && <BaseFormMessage />}\n </BaseFormItem>\n )}\n />\n );\n};\n","import type React from \"react\";\nimport { createContext } from \"react\";\nimport {\n Controller,\n type FieldPath,\n type FieldValues,\n type Path,\n type PathValue,\n type UseFormReturn,\n useFormContext,\n} from \"react-hook-form\";\nimport { cn } from \"@/utils\";\nimport { BaseForm } from \"@/ui/form/Base\";\nimport { FormField } from \"@/ui/form/FormField\";\nimport { Input } from \"@/ui/Input\";\nimport { PasswordInput } from \"@/ui/PasswordInput\";\nimport { SelectInput } from \"@/ui/SelectInput\";\nimport TextareaInput from \"@/ui/TextAreaInput\";\nimport { Checkbox } from \"@/ui/Checkbox\";\nimport { Combobox } from \"@/ui/Combobox\";\nimport { DatePickerInput } from \"@/ui/DatePickerInput\";\nimport { FileUploadField } from \"@/ui/FileUpload\";\nimport { MultiSelect } from \"@/ui/MultiSelect\";\nimport { OTPInput } from \"@/ui/OTPInput\";\nimport { Radio } from \"@/ui/Radio\";\nimport { Switch } from \"@/ui/Switch\";\nimport { TimePicker } from \"@/ui/TimePicker\";\n\nconst FormMethodsContext = createContext<UseFormReturn<FieldValues> | null>(\n null\n);\n\ntype FormProps<T extends FieldValues> = {\n id: string;\n formMethods: UseFormReturn<T>;\n onSubmit: (data: T) => void;\n className?: string;\n children: React.ReactNode;\n};\n\nfunction Form<T extends FieldValues>({\n id,\n formMethods,\n onSubmit,\n className,\n children,\n}: FormProps<T>) {\n return (\n <FormMethodsContext.Provider\n value={formMethods as UseFormReturn<FieldValues>}\n >\n <BaseForm {...formMethods}>\n <form\n id={id}\n onSubmit={formMethods.handleSubmit(onSubmit)}\n className={className}\n noValidate\n >\n {children}\n </form>\n </BaseForm>\n </FormMethodsContext.Provider>\n );\n}\n\nForm.InputField = function InputField<T extends FieldValues = FieldValues>({\n name,\n label,\n isShowError = false,\n required = false,\n ...props\n}: {\n name: FieldPath<T>;\n isShowError?: boolean;\n label?: string;\n required?: boolean;\n} & React.ComponentProps<typeof Input>) {\n const { control } = useFormContext<T>();\n\n return (\n <FormField\n className=\"w-full\"\n control={control}\n isShowError={isShowError}\n onBlur={props.onBlur}\n field={{\n name,\n label,\n required,\n render: <Input {...props} inputClassName={props.inputClassName} />,\n }}\n />\n );\n};\n\nForm.PasswordField = function PasswordField<\n T extends FieldValues = FieldValues,\n>({\n name,\n label,\n ...props\n}: { name: FieldPath<T> } & React.ComponentProps<typeof PasswordInput>) {\n const { control } = useFormContext<T>();\n\n return (\n <FormField\n className=\"w-full\"\n control={control}\n field={{\n name,\n label,\n render: <PasswordInput {...props} />,\n }}\n />\n );\n};\n\nForm.SelectInputField = function SelectInputField<\n T extends FieldValues = FieldValues,\n>({\n name,\n label,\n required,\n ...props\n}: { name: FieldPath<T>; label?: string } & React.ComponentProps<\n typeof SelectInput\n>) {\n const { control } = useFormContext<T>();\n return (\n <FormField\n control={control}\n field={{\n name,\n required,\n label,\n render: <SelectInput {...props} />,\n }}\n />\n );\n};\n\nForm.MultiSelectField = function MultiSelectField<\n T extends FieldValues = FieldValues,\n>({\n name,\n label,\n ...props\n}: { name: FieldPath<T>; label?: string } & Omit<\n React.ComponentProps<typeof MultiSelect>,\n \"selected\" | \"onChange\"\n>) {\n const { control, watch, setValue } = useFormContext<T>();\n const selectedValues = watch(name) || [];\n\n return (\n <FormField\n control={control}\n field={{\n name,\n label,\n render: (\n <MultiSelect\n {...props}\n selected={selectedValues}\n onChange={(selected) =>\n setValue(name, selected as PathValue<T, Path<T>>)\n }\n />\n ),\n }}\n />\n );\n};\n\nForm.TextareaField = function TextareaField<\n T extends FieldValues = FieldValues,\n>({\n name,\n label,\n optional = false,\n ...props\n}: { name: FieldPath<T>; optional?: boolean } & React.ComponentProps<\n typeof TextareaInput\n>) {\n const { control } = useFormContext<T>();\n\n return (\n <FormField\n control={control}\n field={{\n name,\n label,\n optional,\n render: <TextareaInput {...props} />,\n }}\n />\n );\n};\n\nForm.FileUploadField = function FileUploadFieldComponent<\n T extends FieldValues = FieldValues,\n>({\n name,\n label,\n isMultiple,\n maxFiles,\n children,\n CustomFileList,\n onChange: customOnChange,\n ...props\n}: {\n name: FieldPath<T>;\n label?: string;\n isMultiple?: boolean;\n maxFiles?: number;\n children?: React.ReactNode;\n CustomFileList?: React.ComponentType;\n onChange?: (files: File[] | File | null) => void;\n} & Omit<\n React.ComponentProps<typeof FileUploadField>,\n \"hookedForm\" | \"field\" | \"onChange\"\n>) {\n const { control, formState } = useFormContext<T>() as UseFormReturn;\n const fieldError = formState.errors[name];\n const hasValidationError = !!fieldError;\n\n return (\n <Controller\n control={control}\n name={name}\n render={({ field: formField }) => (\n <div className=\"space-y-1\">\n {label && (\n <label htmlFor={name} className=\"font-medium\">\n {label}\n </label>\n )}\n <FileUploadField\n field={{ name, isMultiple, maxFiles, children }}\n CustomFileList={CustomFileList}\n hasValidationError={hasValidationError}\n value={formField.value || (isMultiple ? [] : undefined)}\n onChange={(files) => {\n // Update form field value\n formField.onChange(files);\n // Call custom onChange if provided\n if (customOnChange) {\n customOnChange(files);\n }\n }}\n onBlur={formField.onBlur}\n name={formField.name}\n {...props}\n />\n </div>\n )}\n />\n );\n};\n\n// Define DatePickerInputProps here since it's not exported\ninterface DatePickerInputProps extends React.ComponentProps<\"button\"> {\n date: Date | undefined;\n setDate: (date: Date | undefined) => void;\n placeholder?: string;\n}\n\nForm.DateInputField = function DateInputField<\n T extends FieldValues = FieldValues,\n>({\n name,\n label,\n disablePast,\n required,\n ...props\n}: { name: FieldPath<T>; label?: string; required?: boolean } & Omit<\n DatePickerInputProps,\n \"date\" | \"setDate\"\n> & {\n disablePast?: boolean;\n required?: boolean;\n }) {\n const { control, watch, setValue } = useFormContext<T>();\n const value = watch(name);\n return (\n <FormField\n control={control}\n field={{\n name,\n label,\n required,\n render: (\n <DatePickerInput\n {...props}\n date={value}\n setDate={(date) => setValue(name, date as PathValue<T, Path<T>>)}\n disablePast={disablePast}\n />\n ),\n }}\n />\n );\n};\n\nForm.TimeInputField = function TimeInputField<\n T extends FieldValues = FieldValues,\n>({\n name,\n label,\n ...props\n}: { name: FieldPath<T>; label?: string } & React.ComponentProps<\n typeof TimePicker\n>) {\n const { control, setValue } = useFormContext<T>();\n return (\n <FormField\n control={control}\n field={{\n name,\n label,\n render: (\n <TimePicker\n onValueChange={(value) => {\n setValue(name, value as any);\n }}\n {...props}\n />\n ),\n }}\n />\n );\n};\n\nForm.CheckboxField = function CheckboxField<\n T extends FieldValues = FieldValues,\n>({\n name,\n label,\n ...props\n}: { name: FieldPath<T> } & Omit<\n React.ComponentProps<typeof Checkbox>,\n \"value\"\n>) {\n const { control } = useFormContext<T>();\n return (\n <FormField\n control={control}\n field={{\n name,\n render: <Checkbox value={name} label={label} {...props} />,\n }}\n />\n );\n};\n\nForm.OTPInputField = function OTPInputField<\n T extends FieldValues = FieldValues,\n>({\n name,\n ...props\n}: { name: FieldPath<T> } & React.ComponentProps<typeof OTPInput>) {\n const { control } = useFormContext<T>();\n return (\n <FormField\n className=\"w-full\"\n control={control}\n field={{ name, render: <OTPInput {...props} /> }}\n />\n );\n};\n\nForm.RadioField = function RadioField<T extends FieldValues = FieldValues>({\n name,\n label,\n ...props\n}: { name: FieldPath<T>; label?: string } & React.ComponentProps<\n typeof Radio\n>) {\n const { control } = useFormContext<T>();\n const { setValue } = useFormContext<T>();\n return (\n <FormField\n control={control}\n field={{\n name,\n label,\n render: (\n <Radio\n {...props}\n onValueChange={(value) => setValue(name, value as any)}\n />\n ),\n }}\n />\n );\n};\n\nForm.ComboboxField = function ComboboxField<\n T extends FieldValues = FieldValues,\n>({\n name,\n ...props\n}: { name: FieldPath<T> } & Omit<\n React.ComponentProps<typeof Combobox>,\n \"onChange\"\n>) {\n const { control, setValue, watch } = useFormContext<T>();\n const value = watch(name);\n return (\n <FormField\n control={control}\n field={{\n name,\n render: (\n <Combobox\n {...props}\n value={value || \"\"}\n onChange={(val) => setValue(name, val as PathValue<T, Path<T>>)}\n />\n ),\n }}\n />\n );\n};\n\n\nForm.SwitchField = function SwitchField<T extends FieldValues = FieldValues>({\n name,\n label,\n prefix,\n suffix,\n className,\n ...props\n}: {\n name: FieldPath<T>;\n label?: string;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n className?: string;\n} & Omit<React.ComponentProps<typeof Switch>, \"checked\" | \"onCheckedChange\">) {\n const { control, setValue, watch } = useFormContext<T>();\n const value = watch(name);\n return (\n <FormField\n control={control}\n className={cn(\"w-full\", className)}\n field={{\n name,\n label,\n render: (\n <div className=\"flex items-center\">\n {prefix && <span className=\"mr-2\">{prefix}</span>}\n <Switch\n {...props}\n checked={!!value}\n onCheckedChange={(checked) =>\n setValue(name, checked as PathValue<T, Path<T>>)\n }\n />\n {suffix && <span className=\"ml-2\">{suffix}</span>}\n </div>\n ),\n }}\n />\n );\n};\n\nexport { Form };\n"],"mappings":"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","names":["jsx","jsxs","cva","jsx","jsxs","jsx","jsxs","jsx","jsxs","cva","jsx","jsx","jsxs","cva","Fragment","jsx","jsxs","jsx","jsxs","cva","jsx","jsxs","Slot","React","Fragment","jsx","jsxs","jsx","Slot","jsxs","Slot","cva","React","jsx","jsxs","cva","Slot","Slot","cva","Loader2Icon","jsx","jsxs","cva","Slot","Slot","cva","jsx","jsxs","cva","Slot","jsx","React","ChevronDownIcon","ChevronRightIcon","jsx","className","props","ChevronRightIcon","ChevronDownIcon","jsx","ChevronRight","React","jsx","jsxs","api","ChevronRight","CheckIcon","jsx","Label","jsx","jsxs","CheckIcon","Label","cva","jsx","jsxs","cva","cva","jsx","React","useEffect","jsx","jsx","jsxs","useEffect","CheckIcon","ChevronRightIcon","jsx","jsxs","jsx","jsx","jsxs","React","cva","jsx","cva","cva","jsx","jsxs","cva","jsx","jsxs","XIcon","React","createContext","useCallback","useContext","useState","Separator","jsx","jsxs","createContext","useContext","useState","React","useCallback","existingFiles","updatedFiles","Separator","XIcon","jsx","jsx","jsx","jsx","jsxs","X","React","Fragment","jsx","jsxs","X","jsx","jsxs","cva","React","Fragment","jsx","jsxs","cva","ChevronDown","X","React","jsx","jsxs","error","X","ChevronDown","React","jsx","jsxs","React","jsx","jsxs","CircleIcon","jsx","jsxs","Label","jsx","CircleIcon","SearchIcon","useCallback","useEffect","useState","jsx","Check","React","jsx","jsxs","Check","CheckIcon","ChevronDownIcon","jsx","jsxs","ChevronDownIcon","CheckIcon","XIcon","jsx","jsxs","jsx","React","jsx","jsxs","jsx","jsx","jsxs","Label","cva","React","useState","Fragment","jsx","jsxs","cva","useState","jsx","jsxs","cva","jsx","React","jsx","useState","jsx","jsxs","useState","value","Label","Slot","React","jsx","Title","Slot","cva","jsx","cva","useRef","cva","React","jsx","cva","cva","React","jsx","cva","useState","useCallback","jsx","jsxs","useRef","ChevronDown","useState","jsx","jsxs","useState","ChevronDown","jsx","Slot","React","jsx","Label","Slot","React","jsx","jsxs","createContext","Controller","useFormContext","jsx","jsxs","createContext","useFormContext","Controller"]}
1
+ {"version":3,"sources":["../../src/ui/Accordion/index.tsx","../../src/utils.ts","../../src/ui/Alert/index.tsx","../../src/ui/Avatar/index.tsx","../../src/ui/Tooltip/index.tsx","../../src/ui/Text/index.tsx","../../src/ui/AvatarListItem/index.tsx","../../src/ui/Badge/index.tsx","../../src/ui/IconContainer/index.tsx","../../src/ui/Breadcrumb/index.tsx","../../src/ui/Dropdown/index.tsx","../../src/ui/Button/index.tsx","../../src/ui/Button/ToolButton.tsx","../../src/ui/ButtonLink/index.tsx","../../src/ui/ButtonWithTooltip/index.tsx","../../src/ui/Calendar/index.tsx","../../src/ui/Card/index.tsx","../../src/ui/Carousel/index.tsx","../../src/ui/Checkbox/index.tsx","../../src/ui/Label/index.tsx","../../src/ui/Chip/index.tsx","../../src/ui/Combobox/index.tsx","../../src/ui/Popover/index.tsx","../../src/ui/ContextMenu/index.tsx","../../src/ui/DatePickerInput/index.tsx","../../src/ui/FileInput/index.tsx","../../src/ui/IconButton/index.tsx","../../src/ui/ProgressIndicator/index.tsx","../../src/ui/FileUpload/index.tsx","../../src/ui/GradientContainer/index.tsx","../../src/ui/Grid/index.tsx","../../src/ui/IconProfile/index.tsx","../../src/ui/Input/index.tsx","../../src/ui/LinkButton/index.tsx","../../src/ui/Map/index.tsx","../../src/ui/Media/index.tsx","../../src/ui/MultiSelect/index.tsx","../../src/ui/OTPInput/index.tsx","../../src/ui/PasswordInput/index.tsx","../../src/ui/Radio/index.tsx","../../src/ui/SearchInput/index.tsx","../../src/ui/SelectHover/index.tsx","../../src/ui/SelectInput/index.tsx","../../src/ui/Sheet/index.tsx","../../src/ui/Skeleton/index.tsx","../../src/ui/Slider/index.tsx","../../src/ui/Sooner/index.tsx","../../src/ui/Switch/index.tsx","../../src/ui/Table/index.tsx","../../src/ui/Tabs/index.tsx","../../src/ui/Tag/index.tsx","../../src/ui/TextAreaInput/index.tsx","../../src/ui/TimePicker/index.tsx","../../src/ui/Title/index.tsx","../../src/ui/Toggle/index.tsx","../../src/ui/ToggleDropdownButton/index.tsx","../../src/ui/ToggleDropdownButton/ToggleDropdownLeftButton.tsx","../../src/ui/ToggleDropdownButton/ToggleDropdownRightButton.tsx","../../src/ui/ToggleDropdownButton/useToggleDropdown.ts","../../src/ui/ToolToggle/index.tsx","../../src/ui/WrapperCard/index.tsx","../../src/ui/form/Base.tsx","../../src/ui/form/FormField.tsx","../../src/ui/form/Form.tsx"],"sourcesContent":["import * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { ChevronDownIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nfunction Accordion({\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />;\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\"border-b last:border-b-0\", className)}\n {...props}\n />\n );\n}\n\nfunction AccordionTrigger({\n className,\n children,\n isHidden,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger> & {\n isHidden?: boolean;\n}) {\n const sidebarOpenClass = cn(\"hidden opacity-0 transition-opacity\", {\n \"flex opacity-100\": !isHidden,\n });\n\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between rounded-md py-4 text-left text-sm font-medium transition-all outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180\",\n className,\n !isHidden && \"gap-4\",\n )}\n {...props}\n >\n {children}\n\n <ChevronDownIcon\n className={cn(\n \"pointer-events-none size-4 shrink-0 translate-y-0.5 text-inherit transition-transform duration-200\",\n sidebarOpenClass,\n )}\n />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm\"\n {...props}\n >\n <div className={cn(className)}>{children}</div>\n </AccordionPrimitive.Content>\n );\n}\n\nexport { Accordion, AccordionContent, AccordionItem, AccordionTrigger };\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport function getInitials(name: string) {\n if (!name) return \"\";\n const nameParts = name?.split(\" \");\n if (nameParts?.length === 1) {\n return nameParts[0][0];\n }\n return nameParts[0][0] + nameParts[nameParts.length - 1][0];\n}\n\nexport function getFirstName(name: string) {\n if (!name) return \"\";\n const nameParts = name?.split(\" \");\n return nameParts[0];\n}\n\nexport function truncateFileNameMid(name: string, maxLength = 28) {\n const dotIndex = name.lastIndexOf(\".\");\n if (dotIndex === -1 || name.length <= maxLength) return name;\n const ext = name.slice(dotIndex);\n const base = name.slice(0, dotIndex);\n const keep = maxLength - ext.length - 3;\n if (keep <= 0) return `...${ext}`;\n const startLen = Math.ceil(keep / 2);\n const endLen = Math.floor(keep / 2);\n return `${base.slice(0, startLen)}...${base.slice(-endLen)}${ext}`;\n}\n\nexport function getFileSize(size: number) {\n if (size < 1024) return `${size} B`;\n if (size < 1024 * 1024) return `${(size / 1024).toFixed(2)} KB`;\n if (size < 1024 * 1024 * 1024) return `${(size / 1024 / 1024).toFixed(2)} MB`;\n return `${(size / 1024 / 1024 / 1024).toFixed(2)} GB`;\n}\n\nexport function getPaginationItems(currentPage: number, totalPages: number, maxLength: number) {\n const res: Array<number> = [];\n if (totalPages <= maxLength) {\n for (let i = 1; i <= totalPages; i++) res.push(i);\n return res;\n }\n res.push(1);\n let start = Math.max(currentPage - Math.floor(maxLength / 2), 2);\n let end = Math.min(start + maxLength - 2, totalPages - 1);\n if (end - start < maxLength - 2) start = Math.max(end - maxLength + 2, 2);\n if (start > 2) res.push(-1);\n for (let i = start; i <= end; i++) res.push(i);\n if (end < totalPages - 1) res.push(-1);\n res.push(totalPages);\n return res;\n}\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg p-3 grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n secondary: \"bg-noticeBox-bg-secondary\",\n destructive:\n \"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\ninterface AlertProps\n extends React.ComponentProps<\"div\">,\n VariantProps<typeof alertVariants> {\n title?: string;\n description?: string;\n icon?: React.ReactNode;\n}\n\nfunction Alert({\n className,\n variant,\n title,\n description,\n icon,\n ...props\n}: AlertProps) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className, \"\")}\n {...props}\n >\n {icon}\n <div className=\"flex flex-col items-start gap-1\">\n {title && <BaseAlertTitle>{title}</BaseAlertTitle>}\n {description && (\n <BaseAlertDescription>{description}</BaseAlertDescription>\n )}\n </div>\n </div>\n );\n}\n\nfunction BaseAlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"leading-title-sm tracking-0 text-title-sm col-start-2 line-clamp-1 min-h-4 font-bold\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction BaseAlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"text-element-inverse-default tracking-0 leading-caption text-body-sm col-start-2 grid justify-items-start gap-1 font-medium [&_p]:leading-relaxed\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Alert, BaseAlertDescription, BaseAlertTitle };\n","import * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\nimport { cva } from \"class-variance-authority\";\nimport { Tooltip, type PositionProps } from \"@/ui/Tooltip\";\n\n// Types\ntype StatusSize = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\ntype AvatarSize =\n | \"xs\"\n | \"sm\"\n | \"md\"\n | \"lg\"\n | \"xl\"\n | \"2xl\"\n | \"3xl\"\n | \"4xl\"\n | \"5xl\";\ntype Status = \"active\" | \"inactive\";\n\n// Constants\nconst STATUS_SIZE = {\n sm: \"sm\",\n md: \"md\",\n lg: \"lg\",\n xl: \"xl\",\n \"2xl\": \"2xl\",\n} as const;\n\nconst AVATAR_SIZE_MAPPER = {\n xs: {\n className: \"size-5 !text-caption !font-semibold\",\n statusSize: STATUS_SIZE.sm,\n },\n sm: {\n className: \"size-6 !text-caption !font-semibold\",\n statusSize: STATUS_SIZE.sm,\n },\n md: {\n className: \"size-7 !text-caption !font-semibold\",\n statusSize: STATUS_SIZE.sm,\n },\n lg: {\n className: \"size-8 !text-title-sm !font-bold\",\n statusSize: STATUS_SIZE.md,\n },\n xl: {\n className: \"size-9 !text-title-sm !font-bold\",\n statusSize: STATUS_SIZE.md,\n },\n \"2xl\": {\n className: \"size-10 !text-title-lg !font-bold\",\n statusSize: STATUS_SIZE.md,\n },\n \"3xl\": {\n className: \"size-16 !text-h5 !font-bold\",\n statusSize: STATUS_SIZE.lg,\n },\n \"4xl\": {\n className: \"size-20 !text-h3 !font-bold\",\n statusSize: STATUS_SIZE.xl,\n },\n \"5xl\": {\n className: \"size-28 !text-h2 !font-bold\",\n statusSize: STATUS_SIZE[\"2xl\"],\n },\n} as const;\n\n// Styles\nconst statusVariants = cva(\n \"bg-fill-static-green-03 absolute right-0 bottom-0 rounded-unit-corner-radius-rounded-full border-unit-border-width-sm !border-stroke-inverse-slate-01\",\n {\n variants: {\n size: {\n sm: \"size-2 border-unit-border-width-sm\",\n md: \"size-[10px] border-unit-border-width-sm\",\n lg: \"size-[18px] border-unit-border-width-md\",\n xl: \"size-6 border-unit-border-width-md\",\n \"2xl\": \"size-8 border-unit-border-width-lg\",\n },\n status: {\n active: \"bg-fill-static-green-03\",\n inactive: \"bg-fill-static-slate-03\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n },\n);\n\n// Interfaces\ninterface BaseAvatarProps\n extends React.ComponentProps<typeof AvatarPrimitive.Root> {\n fallback: string;\n fallbackClassName?: string;\n status?: Status;\n size?: AvatarSize;\n tooltip?: React.ReactNode;\n tooltipPosition?: PositionProps;\n}\n\ninterface ImageAvatarProps extends BaseAvatarProps {\n variant: \"image\";\n imgsrc: string;\n}\n\ninterface TextAvatarProps extends BaseAvatarProps {\n variant: \"text\";\n}\n\ninterface EmptyAvatarProps extends BaseAvatarProps {\n variant: \"placeholder\";\n}\n\nexport type AvatarProps = ImageAvatarProps | TextAvatarProps | EmptyAvatarProps;\n\n// Avatar Content Components\nconst ImageAvatarContent: React.FC<{\n imgsrc: string;\n fallback: string;\n sizeConfig: (typeof AVATAR_SIZE_MAPPER)[keyof typeof AVATAR_SIZE_MAPPER];\n fallbackClassName?: string;\n}> = ({ imgsrc, fallback, sizeConfig, fallbackClassName }) => (\n <>\n <BaseAvatarImage src={imgsrc} />\n <BaseAvatarFallback\n className={cn(\n sizeConfig.className,\n \"bg-primary-bg-normal\",\n fallbackClassName,\n )}\n >\n {fallback}\n </BaseAvatarFallback>\n </>\n);\n\nconst EmptyAvatarContent: React.FC<{\n fallback: string;\n sizeConfig: (typeof AVATAR_SIZE_MAPPER)[keyof typeof AVATAR_SIZE_MAPPER];\n fallbackClassName?: string;\n}> = ({ fallback, sizeConfig, fallbackClassName }) => (\n <>\n <BaseAvatarImage src=\"\" className=\"bg-fill-inverse-slate-03\" />\n <BaseAvatarFallback\n className={cn(\n sizeConfig.className,\n \"bg-primary-bg-normal\",\n fallbackClassName,\n )}\n >\n {fallback}\n </BaseAvatarFallback>\n </>\n);\n\n// const IconAvatarContent: React.FC<{\n// icon: React.ReactNode;\n// }> = ({ icon }) => <>{icon}</>;\n\nconst TextAvatarContent: React.FC<{\n fallback: string;\n sizeConfig: (typeof AVATAR_SIZE_MAPPER)[keyof typeof AVATAR_SIZE_MAPPER];\n fallbackClassName?: string;\n}> = ({ fallback, sizeConfig, fallbackClassName }) => (\n <BaseAvatarFallback\n className={cn(\n sizeConfig.className,\n \"bg-fill-inverse-slate-03 text-element-inverse-default font-semibold\",\n fallbackClassName,\n )}\n >\n {fallback}\n </BaseAvatarFallback>\n);\n\n// Main Components\nfunction AvatarStack({\n stackCount = 1,\n size = \"md\",\n showCount = true,\n isLastOnTop = true,\n stackClassName,\n avatars = [],\n}: {\n stackCount?: number;\n size?: \"sm\" | \"md\" | \"lg\";\n showCount?: boolean;\n isLastOnTop?: boolean;\n avatars: AvatarProps[];\n stackClassName?: string;\n}) {\n const sizeMap = { sm: \"xs\", md: \"sm\", lg: \"md\" } as const;\n\n return (\n <div className={cn(\"flex items-center -space-x-2\", stackClassName)}>\n {avatars.slice(0, stackCount).map((avatar, index) => (\n <Avatar\n {...avatar}\n key={index}\n size={sizeMap[size]}\n className=\"outline-stroke-inverse-slate-01 outline-1\"\n style={{\n zIndex: isLastOnTop ? index + 1 : stackCount - index,\n }}\n />\n ))}\n {showCount && avatars.length > stackCount && (\n <Avatar\n variant=\"text\"\n fallback={`+${avatars.length - stackCount}`}\n size={sizeMap[size]}\n className=\"text-element-inverse-default text-caption leading-caption bg-fill-inverse-slate-03 border-stroke-inverse-slate-01 outline-stroke-inverse-slate-01 border font-semibold outline-1\"\n fallbackClassName=\"text-caption\"\n style={{\n zIndex: isLastOnTop ? avatars.length + 1 : 0,\n }}\n />\n )}\n </div>\n );\n}\n\nfunction Avatar({\n variant,\n fallback,\n status,\n size = \"sm\",\n className,\n fallbackClassName,\n tooltip,\n tooltipPosition = \"top\",\n ...props\n}: AvatarProps) {\n const sizeConfig = AVATAR_SIZE_MAPPER[size];\n\n const renderAvatarContent = () => {\n switch (variant) {\n case \"image\":\n return (\n <ImageAvatarContent\n imgsrc={(props as ImageAvatarProps).imgsrc}\n fallback={fallback}\n sizeConfig={sizeConfig}\n fallbackClassName={fallbackClassName}\n />\n );\n case \"text\":\n return (\n <TextAvatarContent\n fallback={fallback}\n sizeConfig={sizeConfig}\n fallbackClassName={fallbackClassName}\n />\n );\n case \"placeholder\":\n return (\n <EmptyAvatarContent\n fallback={fallback}\n sizeConfig={sizeConfig}\n fallbackClassName={fallbackClassName}\n />\n );\n default:\n return null;\n }\n };\n\n const avatarElement = (\n <div className=\"relative w-fit\">\n <BaseAvatar\n {...props}\n className={cn(\n sizeConfig.className,\n className,\n \"flex items-center justify-center text-center\",\n {\n \"bg-primary-bg-light\": variant === \"placeholder\",\n },\n \"flex items-center justify-center text-center\",\n )}\n >\n {renderAvatarContent()}\n </BaseAvatar>\n {!!status && (\n <BaseAvatarStatus status={status} size={sizeConfig.statusSize} />\n )}\n </div>\n );\n\n if (tooltip) {\n return (\n <Tooltip\n trigger={avatarElement}\n content={tooltip}\n position={tooltipPosition}\n />\n );\n }\n\n return avatarElement;\n}\n\n// Base Components\nfunction BaseAvatarStatus({\n className,\n status,\n size,\n ...props\n}: {\n className?: string;\n status: Status;\n size: StatusSize;\n} & React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(statusVariants({ size, status }), className)}\n {...props}\n />\n );\n}\n\nfunction BaseAvatar({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n className={cn(\n \"relative flex size-8 shrink-0 overflow-hidden rounded-full\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction BaseAvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\"aspect-square size-full\", className)}\n {...props}\n />\n );\n}\n\nfunction BaseAvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"bg-muted flex size-full items-center justify-center rounded-full\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Avatar, AvatarStack };\n","import * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n/**\n * position = where the whole tooltip is placed (side + alignment). Arrow follows: same edge and alignment.\n * E.g. \"bottom-right\" = tooltip below, aligned right; arrow on top edge at end (right).\n */\nexport type PositionProps =\n | \"top\"\n | \"top-center\"\n | \"top-left\"\n | \"top-right\"\n | \"bottom\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\"\n | \"left\"\n | \"right\";\n\ntype Side = \"top\" | \"bottom\" | \"left\" | \"right\";\ntype Align = \"start\" | \"center\" | \"end\";\n\n/** position = tooltip placement (side + align). No inversion. */\nfunction parsePosition(position: string): {\n side: Side;\n align: Align | undefined;\n} {\n const side: Side = /^top/.test(position)\n ? \"top\"\n : /^bottom/.test(position)\n ? \"bottom\"\n : /^left/.test(position)\n ? \"left\"\n : /^right/.test(position)\n ? \"right\"\n : \"top\";\n\n let align: Align | undefined;\n if (position.includes(\"-\")) {\n if (position.endsWith(\"-center\")) align = undefined;\n else if (/(left|top)$/.test(position)) align = \"start\";\n else if (/(right|bottom)$/.test(position)) align = \"end\";\n }\n\n return { side, align };\n}\n\nfunction getArrowPositionStyle(\n side: Side,\n align: Align | undefined\n): React.CSSProperties {\n const offset = 0; // 0.75rem\n if (align === \"start\") {\n if (side === \"top\" || side === \"bottom\")\n return { left: offset, right: \"auto\", transform: undefined };\n return { top: offset, bottom: \"auto\", transform: undefined };\n }\n if (align === \"end\") {\n if (side === \"top\" || side === \"bottom\")\n return { right: offset, left: \"auto\", transform: undefined };\n return { bottom: offset, top: \"auto\", transform: undefined };\n }\n return {};\n}\n\n/** Optional: wrap a subtree to share tooltip delay/behavior. Each Tooltip has its own context by default. */\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n );\n}\n\n// Main component: each Tooltip has its own Provider (separate context) so interactive content works when disableHoverableContent={false}.\nfunction Tooltip({\n trigger,\n content,\n position = \"top\",\n withArrow = true,\n className,\n disableHoverableContent = true,\n ...props\n}: {\n trigger: React.ReactNode;\n content: React.ReactNode;\n position?: PositionProps;\n withArrow?: boolean;\n className?: string;\n disableHoverableContent?: boolean;\n} & React.ComponentProps<typeof TooltipPrimitive.Root>) {\n const { side, align } = parsePosition(position);\n\n return (\n <TooltipPrimitive.Provider delayDuration={0}>\n <TooltipPrimitive.Root\n data-slot=\"tooltip\"\n disableHoverableContent={disableHoverableContent}\n {...props}\n >\n <TooltipPrimitive.Trigger asChild data-slot=\"tooltip-trigger\">\n {trigger}\n </TooltipPrimitive.Trigger>\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n side={side}\n align={align}\n sideOffset={0}\n className={cn(\n disableHoverableContent && \"pointer-events-none\",\n \"text-element-inverse-default-alt! font-medium bg-fill-inverse-slate-10 glass-effect rounded-unit-corner-radius-lg shadow-box\",\n \"animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:invisible data-[state=closed]:hidden\",\n \"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\",\n \"text-body-sm z-(--z-popover) w-fit origin-(--radix-tooltip-content-transform-origin) px-unit-8px py-unit-6px font-sans text-balance max-w-[500px]\",\n className\n )}\n >\n {content}\n {withArrow && (\n <TooltipPrimitive.Arrow\n data-slot=\"tooltip-arrow\"\n data-arrow-align={align}\n className=\"fill-fill-inverse-slate-10 z-(--z-popover)\"\n style={{\n ...getArrowPositionStyle(side, align),\n }}\n />\n )}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n </TooltipPrimitive.Provider>\n );\n}\n\nexport { Tooltip, TooltipProvider };\n","import { cn } from \"@/utils\";\nimport { forwardRef } from \"react\";\n\nexport const Text = forwardRef<\n HTMLParagraphElement,\n React.ComponentProps<\"p\"> & {\n className?: string;\n }\n>((props, ref) => {\n const { className, children, ...rest } = props;\n\n return (\n <p\n ref={ref}\n className={cn(\n \"text-body-sm! leading-body-sm text-element-inverse-default font-medium\",\n className\n )}\n {...rest}\n >\n {children}\n </p>\n );\n});\n\nText.displayName = \"Text\";\n","import { Avatar, Badge } from \"@/ui\";\nimport { Text } from \"@/ui/Text\";\nimport { cn, getInitials } from \"@/utils\";\nimport type { PositionProps } from \"@/ui/Tooltip\";\n\ntype AvatarListItemProps = {\n avatar: string;\n name: string;\n email: string;\n isMe?: boolean;\n className?: string;\n tooltip?: React.ReactNode;\n tooltipPosition?: PositionProps;\n};\n\nconst AvatarListItem = (props: AvatarListItemProps) => {\n const { avatar, name, email, isMe = false, className, tooltip, tooltipPosition } = props;\n\n return (\n <div className={cn(\"flex gap-3 p-2\", className)}>\n <Avatar\n fallback={getInitials(name)}\n variant=\"image\"\n imgsrc={avatar}\n size=\"2xl\"\n tooltip={tooltip}\n tooltipPosition={tooltipPosition}\n />\n\n <div className=\"flex flex-col\">\n <div className=\"flex flex-nowrap gap-1.5\">\n <Text className=\"text-title-sm font-semibold\">{name}</Text>\n\n {isMe && <Badge>You</Badge>}\n </div>\n\n <Text className=\"text-body-sm! text-element-inverse-gray truncate font-medium\">\n {email}\n </Text>\n </div>\n </div>\n );\n};\n\nexport default AvatarListItem;\n","import { cn } from \"@/utils\";\nimport { cva } from \"class-variance-authority\";\n\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport IconContainer from \"@/ui/IconContainer\";\n\nconst BadgeVariants = cva(\n \"w-full !text-caption leading-caption cursor-default flex max-w-fit items-center justify-center gap-0.5 font-medium\",\n {\n variants: {\n type: {\n // primary: \"bg-fill-static-blue-03 text-element-static-white\",\n \"primary-hard\": \"bg-fill-static-blue-03 text-element-static-white\",\n \"primary-soft\": \"bg-fill-inverse-blue-02 text-element-inverse-blue\",\n \"destructive-hard\": \"bg-fill-static-red-03 text-element-static-white\",\n \"destructive-soft\": \"bg-fill-inverse-red-02 text-element-inverse-red\",\n \"secondary-hard\":\n \"bg-fill-inverse-slate-09 text-element-inverse-default-alt\",\n \"secondary-soft\":\n \"bg-fill-inverse-slate-03 text-element-inverse-default\",\n },\n size: {\n sm: \"rounded-unit-corner-radius-sm py-unit-0px px-unit-4px\",\n md: \"rounded-unit-corner-radius-md py-unit-2px px-unit-6px\",\n },\n },\n },\n);\n\ninterface BadgeProps {\n type?:\n | \"primary-hard\"\n | \"primary-soft\"\n | \"destructive-hard\"\n | \"destructive-soft\"\n | \"secondary-hard\"\n | \"secondary-soft\";\n size?: \"sm\" | \"md\";\n rounded?: boolean;\n children: React.ReactNode;\n className?: string;\n prefixIcon?: React.ReactNode;\n suffixIcon?: React.ReactNode;\n}\n\n// Main component\nconst Badge = ({\n type = \"primary-hard\",\n children,\n size = \"sm\",\n className,\n rounded = false,\n prefixIcon,\n suffixIcon,\n}: BadgeProps) => {\n return (\n <BaseBadge\n className={cn(\n BadgeVariants({ type, size }),\n className,\n rounded ? \"!rounded-full\" : \"\",\n )}\n >\n {prefixIcon && (\n <IconContainer\n className={cn(\n \"h-5 w-5 p-0.5\",\n type.includes(\"hard\")\n ? \"[&_path]:fill-current\"\n : \"[&_path]:fill-current\",\n )}\n >\n {prefixIcon}\n </IconContainer>\n )}\n {children}\n {suffixIcon && (\n <IconContainer\n className={cn(\n \"h-5 w-5 p-0.5\",\n type.includes(\"hard\")\n ? \"[&_path]:fill-current\"\n : \"[&_path]:fill-current\",\n )}\n >\n {suffixIcon}\n </IconContainer>\n )}\n </BaseBadge>\n );\n};\n\n// Base components\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n destructive:\n \"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction BaseBadge({\n className,\n variant,\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"span\";\n\n return (\n <Comp\n data-slot=\"badge\"\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nexport { Badge, BaseBadge };\n","import { cn } from \"@/utils\";\nimport Lottie, { type LottieRefCurrentProps } from \"lottie-react\";\nimport * as React from \"react\";\nimport { useRef } from \"react\";\n\ntype IconContainerProps = {\n /**\n * Whether to apply fill colors to SVG paths (true) or use text color (false).\n * @default true\n */\n colorInFill?: boolean;\n /**\n * Whether to disable the theme.\n * @default false\n */\n disableTheme?: boolean;\n /**\n * The type of icon to display.\n * - `animated`: Displays an animated Lottie animation.\n * - `static`: Displays a static icon.\n * @default \"static\"\n */\n type?: \"animated\" | \"static\";\n /**\n * The size of the icon.\n * @default \"sm\"\n */\n size?:\n | \"xs\"\n | \"sm\"\n | \"md\"\n | \"lg\"\n | \"xl\"\n | \"2xl\"\n | \"3xl\"\n | \"4xl\"\n | \"5xl\"\n | \"6xl\"\n | \"auto\";\n} & React.HTMLAttributes<HTMLDivElement>;\n\ntype AnimatedIconProps = IconContainerProps & {\n type: \"animated\";\n isLoading?: boolean;\n animationData: unknown;\n};\n\ntype StaticIconProps = IconContainerProps & {\n type?: \"static\";\n children: React.ReactNode;\n};\n\nexport type IconProps = AnimatedIconProps | StaticIconProps;\n\nfunction isAnimatedIconProps(props: IconProps): props is AnimatedIconProps {\n return props.type === \"animated\";\n}\n\nexport default function IconContainer({\n colorInFill = true,\n type = \"static\",\n disableTheme = false,\n size = \"sm\",\n className,\n ...props\n}: IconProps) {\n const lottieRef = useRef<LottieRefCurrentProps>(null);\n\n const typedProps = { ...props, type } as IconProps;\n\n const isAnimated = isAnimatedIconProps(typedProps);\n\n // Get container size based on size prop\n const getContainerSize = (containerSize: IconContainerProps[\"size\"]) => {\n switch (containerSize) {\n case \"auto\":\n return \"\";\n case \"xs\":\n return \"h-[18px] w-[18px]\";\n case \"sm\":\n return \"h-5 w-5\";\n case \"md\":\n return \"w-6 h-6\";\n case \"lg\":\n return \"h-7 w-7\";\n case \"xl\":\n return \"h-8 w-8\";\n case \"2xl\":\n return \"h-9 w-9\";\n case \"3xl\":\n return \"h-11 w-11\";\n case \"4xl\":\n return \"h-14 w-14\";\n case \"5xl\":\n return \"h-[68px] w-[68px]\";\n case \"6xl\":\n return \"h-20 w-20\";\n default:\n return \"h-[18px] w-[18px]\";\n }\n };\n\n const handleMouseEnter = () => {\n lottieRef.current?.setDirection(1);\n lottieRef.current?.play();\n };\n const handleMouseLeave = () => {\n if (isAnimated && !typedProps.isLoading) {\n lottieRef.current?.setDirection(-1);\n lottieRef.current?.play();\n }\n };\n\n return (\n <div\n onMouseEnter={isAnimated ? handleMouseEnter : undefined}\n onMouseLeave={isAnimated ? handleMouseLeave : undefined}\n className={cn(\n \"flex shrink-0 items-center justify-center\",\n getContainerSize(size),\n {\n /* Styles for svg paths */\n \"[&_path]:fill-element-inverse-default dark:[&_path]:fill-element-inverse-defaul-alt\":\n !disableTheme && colorInFill,\n\n /* Styles for svg element */\n \"text-element-inverse-default\": !disableTheme && !colorInFill,\n\n /* Exception for button ai-outline variant */\n \"group-hover:group-data-[variant='ai-outline']:[&_path]:fill-element-inverse-default-alt! dark:group-hover:group-data-[variant='ai-outline']:[&_path]:fill-element-inverse-default!\":\n !disableTheme,\n },\n className,\n )}\n {...props}\n >\n {!isAnimated && (\n <>\n {React.Children.map(typedProps.children, (child) => {\n if (React.isValidElement(child)) {\n const childElement = child as React.ReactElement<any>;\n return React.cloneElement(childElement, {\n className: cn(\n \"h-full w-full\",\n childElement.props?.className || \"\",\n ),\n strokeWidth: 0.4,\n });\n }\n return child;\n })}\n </>\n )}\n {isAnimated && (\n <Lottie\n lottieRef={lottieRef}\n animationData={typedProps.animationData}\n loop={typedProps.isLoading}\n autoplay={typedProps.isLoading}\n />\n )}\n </div>\n );\n}\n","import { ChevronRight } from \"lucide-react\";\n\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/ui/Dropdown\";\nimport { cn } from \"@/utils\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport React from \"react\";\n\ninterface BreadcrumbItemType {\n label: string;\n href?: string;\n onlyIcon?: React.ReactNode;\n leadingIcon?: React.ReactNode;\n disabled?: boolean;\n}\n\ninterface BreadcrumbProps {\n items: BreadcrumbItemType[];\n className?: string;\n}\n\n// Common styles for breadcrumb items\nconst breadcrumbItemStyles =\n \"hover:bg-breadcrumb-bg-hover py-2px px-2px text-caption text-text-light rounded-md font-medium transition-colors duration-75\";\nconst disabledItemStyles =\n \"text-text-inactive bg-transparent hover:bg-transparent\";\nconst iconContainerStyles =\n \"flex h-[18px] w-[18px] items-center justify-center\";\nconst linkStyles = \"text-caption gap-x-4px flex items-center\";\n\n// Component to render item content (icon + label)\nconst ItemContent = ({ item }: { item: BreadcrumbItemType }) => {\n if (item.onlyIcon) {\n return (\n <span className=\"p-0.5\">\n <span className={iconContainerStyles}>{item.onlyIcon}</span>\n </span>\n );\n }\n\n if (item.leadingIcon) {\n return (\n <>\n <span className={iconContainerStyles}>{item.leadingIcon}</span>\n {item.label}\n </>\n );\n }\n\n return <span className=\"px-4px py-2px\">{item.label}</span>;\n};\n\n// Component to render a single breadcrumb item\nconst BreadcrumbItemContent = ({ item }: { item: BreadcrumbItemType }) => {\n if (item.disabled) {\n return (\n <BreadcrumbPage className={linkStyles}>\n <ItemContent item={item} />\n </BreadcrumbPage>\n );\n }\n\n return (\n <BreadcrumbLink href={item.href} className={linkStyles}>\n <ItemContent item={item} />\n </BreadcrumbLink>\n );\n};\n\nconst Breadcrumb = ({ items }: BreadcrumbProps) => {\n const renderItems = () => {\n const first = items[0];\n const middle = items.slice(1, items.length - 2);\n const lastTwo = items.slice(-2);\n\n return items.length >= 4 ? (\n <>\n {/* First item */}\n <BreadcrumbItem\n key={first.label}\n className={cn(\n breadcrumbItemStyles,\n first.disabled && disabledItemStyles,\n first.leadingIcon && \"pl-2px pr-4px\",\n )}\n >\n <ItemContent item={first} />\n </BreadcrumbItem>\n <BreadcrumbSeparator />\n\n {/* Dropdown ellipsis for middle items */}\n <BreadcrumbItem key=\"ellipsis\" className={cn(breadcrumbItemStyles)}>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <BreadcrumbEllipsis />\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\">\n {middle.map((item) => (\n <DropdownMenuItem key={item.label}>\n <BreadcrumbLink href={item.href} className={linkStyles}>\n <ItemContent item={item} />\n </BreadcrumbLink>\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n </BreadcrumbItem>\n <BreadcrumbSeparator />\n\n {/* Last two items */}\n {lastTwo.map((item, idx) => (\n <React.Fragment key={item.label}>\n <BreadcrumbItem\n className={cn(\n breadcrumbItemStyles,\n item.leadingIcon && \"pl-2px pr-4px\",\n item.disabled && disabledItemStyles,\n idx === lastTwo.length - 1 && \"text-text-default font-semibold\",\n )}\n >\n <BreadcrumbItemContent item={item} />\n </BreadcrumbItem>\n {idx < lastTwo.length - 1 && <BreadcrumbSeparator />}\n </React.Fragment>\n ))}\n </>\n ) : (\n items.map((item, idx) => (\n <React.Fragment key={item.label}>\n <BreadcrumbItem\n className={cn(\n breadcrumbItemStyles,\n item.leadingIcon && \"pl-2px pr-4px\",\n item.disabled && disabledItemStyles,\n idx === items.length - 1 && \"text-text-default font-semibold\",\n )}\n >\n <BreadcrumbItemContent item={item} />\n </BreadcrumbItem>\n {idx < items.length - 1 && <BreadcrumbSeparator />}\n </React.Fragment>\n ))\n );\n };\n\n return (\n <BaseBreadcrumb>\n <BreadcrumbList>{renderItems()}</BreadcrumbList>\n </BaseBreadcrumb>\n );\n};\n\nexport { Breadcrumb };\n\n// Base components\nfunction BaseBreadcrumb({ ...props }: React.ComponentProps<\"nav\">) {\n return <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />;\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n \"text-muted-foreground flex flex-wrap items-center gap-1 text-sm break-words\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbLink({\n asChild,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean;\n}) {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n data-slot=\"breadcrumb-link\"\n className={cn(\"hover:text-foreground transition-colors\", className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"text-foreground font-normal\", className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-[18px]\", className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n );\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex items-center justify-center px-1\", className)}\n {...props}\n >\n <span className=\"text-caption text-text-light\">...</span>\n <span className=\"sr-only\">More</span>\n </span>\n );\n}\n","import { cn } from \"@/utils\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { CheckIcon, ChevronRightIcon } from \"lucide-react\";\nimport { MagickoCheck } from \"magick-icons\";\nimport IconContainer from \"@/ui/IconContainer\";\n\n// Base components for dropdown menu\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\n}\n\nfunction DropdownMenuTrigger({\n isBgTransparent = true,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger> & {\n isBgTransparent?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n className={cn(\n props.className,\n \"text-element-inverse-default gap-x-unit-8px px-unit-12px py-unit-10px hover:bg-dropdown-hovered text-body-sm rounded-unit-corner-radius-lg flex cursor-pointer items-center font-medium whitespace-nowrap ring-0 transition-all outline-none\",\n {\n \"bg-transparent\": isBgTransparent,\n },\n )}\n />\n );\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"text-element-inverse-default bg-opacity-inverse-05 glass-effect border-stroke-inverse-slate-02 rounded-unit-corner-radius-3xl data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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 shadow-box p-unit-8px z-[var(--z-popover)] max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto border\",\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n showCheck = false,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n showCheck?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"hover:bg-dropdown-hovered p-unit-6px focus:bg-dropdown-hovered focus:bg-dropdown-bg-hover text-element-inverse-default [&_svg:not([class*='text-'])]:text-muted-foreground text-body-sm rounded-unit-corner-radius-lg relative flex cursor-pointer items-center justify-between gap-3 font-medium outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {children}\n {showCheck && <CheckIcon className=\"text-element-inverse-blue ml-auto\" />}\n </DropdownMenuPrimitive.Item>\n );\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n );\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n checkPosition = \"left\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem> & {\n checkPosition?: \"left\" | \"right\";\n}) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"text-element-inverse-default p-unit-6px hover:bg-dropdown-hovered focus:bg-dropdown-hovered rounded-unit-corner-radius-lg text-body-sm relative flex cursor-pointer items-center gap-2 outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {checkPosition === \"left\" && (\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <IconContainer disableTheme colorInFill={false}>\n <MagickoCheck className=\"[&_path]:fill-element-inverse-blue size-4\" />\n </IconContainer>\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n )}\n {children}\n {checkPosition === \"right\" && (\n <span className=\"pointer-events-none absolute right-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <IconContainer disableTheme colorInFill={false}>\n <MagickoCheck className=\"[&_path]:fill-element-inverse-blue size-4\" />\n </IconContainer>\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n )}\n </DropdownMenuPrimitive.RadioItem>\n );\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"text-element-inverse-default px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />;\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n hideChevron = false,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n hideChevron?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n {!hideChevron && <ChevronRightIcon className=\"ml-auto size-4\" />}\n </DropdownMenuPrimitive.SubTrigger>\n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n side,\n sideOffset,\n align,\n alignOffset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n sideOffset?: number;\n align?: \"start\" | \"center\" | \"end\";\n alignOffset?: number;\n}) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n {...(side && { side })}\n {...(sideOffset !== undefined && { sideOffset })}\n {...(align && { align })}\n {...(alignOffset !== undefined && { alignOffset })}\n className={cn(\n \"bg-surface-bg-container text-text-default data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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 z-[var(--z-popover)] min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-3xl p-1 shadow-lg\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n};\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Loader2Icon } from \"lucide-react\";\nimport * as React from \"react\";\nimport { cn } from \"@/utils\";\n\nexport interface ButtonProps\n extends Omit<React.ComponentProps<\"button\">, \"prefix\" | \"suffix\">,\n VariantProps<typeof buttonVariants> {\n size?: \"sm\" | \"md\" | \"lg\";\n state?: \"loading\" | \"default\";\n asChild?: boolean;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n onlyIcon?: boolean;\n children?: React.ReactNode;\n}\n\nconst buttonVariants = cva(\n \"flex group leading-body-sm line-height-body-sm items-center cursor-pointer justify-center gap-2 whitespace-nowrap rounded-md font-medium transition-all disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-[20px] shrink-0 [&_svg]:shrink-0 outline-none ring-0\",\n {\n variants: {\n variant: {\n // default:\n // \"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90\",\n primary:\n \"bg-button-primary-enabled text-element-static-white! hover:bg-button-primary-hovered active:bg-button-primary-pressed focus-visible:bg-button-primary-pressed disabled:bg-button-primary-disabled disabled:text-element-inverse-disabled!\",\n secondary:\n \"bg-button-secondary-enabled text-element-inverse-default-alt! hover:bg-button-secondary-hovered active:bg-button-secondary-pressed disabled:bg-button-secondary-disabled disabled:text-element-inverse-disabled!\",\n destructive:\n \"bg-button-destructive-enabled text-element-static-white! hover:bg-button-destructive-hovered active:bg-button-destructive-pressed disabled:bg-button-destructive-disabled disabled:text-element-inverse-disabled!\",\n outline:\n \"border border-stroke-inverse-slate-03 text-element-inverse-default rounded-unit-corner-radius-lg bg-button-outline-enabled hover:bg-button-outline-hovered active:bg-button-outline-pressed disabled:bg-button-outline-disabled disabled:text-element-inverse-disabled!\",\n ghost:\n \"bg-transparent text-element-inverse-default hover:bg-button-ghost-hovered active:bg-button-ghost-pressed disabled:bg-button-ghost-disabled disabled:text-element-inverse-disabled!\",\n soft: \"bg-button-soft-enabled text-element-inverse-default hover:bg-button-soft-hovered active:bg-button-soft-pressed disabled:bg-button-soft-disabled disabled:text-element-inverse-disabled!\",\n \"ai-filled\": \"relative\",\n \"ai-outline\": \"relative\",\n glass:\n \"glass-effect bg-button-glass-enabled border border-stroke-inverse-slate-01 hover:bg-button-glass-hovered active:bg-button-glass-pressed disabled:bg-button-glass-disabled\",\n },\n size: {\n sm: \"rounded-lg gap-1 px-1.5 py-1 text-body-sm\",\n // \"icon-sm\": \"p-4px rounded-md \",\n md: \"px-2.5 py-2 rounded-[10px] gap-2 text-body-sm\",\n // \"icon-md\": \"rounded-lg p-2\",\n lg: \"px-3.5 py-3 rounded-xl gap-2 text-body-lg\",\n // \"icon-lg\": \"rounded-xl p-3\",\n },\n\n state: {\n loading: \"opacity-80 cursor-progress\",\n default: \"\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n state: \"default\",\n },\n }\n);\n\nfunction getButtonPadding(\n size: string,\n prefix: React.ReactNode,\n suffix: React.ReactNode,\n onlyIcon?: boolean\n): string {\n if (prefix && suffix) {\n if (size === \"sm\") return \"px-1.5\";\n if (size === \"md\") return \"p-2.5\";\n if (size === \"lg\") return \"px-3\";\n } else if (prefix) {\n if (size === \"sm\") return \"pl-1.5 pr-2\";\n if (size === \"md\") return \"pl-2.5 py-2.5 pr-3\";\n if (size === \"lg\") return \"pl-3.5 pr-4\";\n } else if (suffix) {\n if (size === \"sm\") return \"pr-1.5 pl-2\";\n if (size === \"md\") return \"pl-3\";\n if (size === \"lg\") return \"pr-3.5 pl-4\";\n } else if (onlyIcon) {\n if (size === \"sm\") return \"p-1\";\n if (size === \"md\") return \"p-2\";\n if (size === \"lg\") return \"p-3\";\n }\n return \"\";\n}\n\nfunction Button({\n className,\n variant = \"primary\",\n state,\n size = \"md\",\n prefix,\n suffix,\n onlyIcon,\n asChild = false,\n children,\n ...props\n}: ButtonProps) {\n const Comp = asChild ? Slot : \"button\";\n const isDisabled = state === \"loading\" || props.disabled;\n\n const renderAffix = (node?: React.ReactNode) => {\n if (!node) return null;\n if (React.isValidElement(node)) {\n const nodeElement = node as React.ReactElement<{ className?: string }>;\n return React.cloneElement(nodeElement, {\n className: cn(\n nodeElement.props?.className || \"\",\n isDisabled && \"text-element-inverse-disabled\"\n ),\n });\n }\n return node;\n };\n\n if (variant === \"ai-filled\" || variant === \"ai-outline\") {\n const isAiFilled = variant === \"ai-filled\";\n\n return (\n <Comp\n data-variant={variant}\n data-slot=\"button\"\n className={cn(\"group relative cursor-pointer p-0.5\")}\n disabled={isDisabled}\n {...props}\n >\n <div\n className={cn(\n \"absolute inset-0 block\",\n buttonVariants({ size, className })\n )}\n style={{\n backgroundImage: \"none\",\n backgroundSize: \"cover\",\n backgroundPosition: \"center\",\n }}\n />\n <div\n className={cn(\n buttonVariants({ variant, size, className }),\n size === \"sm\" && \"rounded-[7px]\",\n size === \"md\" && \"rounded-[9px]\",\n size === \"lg\" && \"rounded-[11px]\",\n getButtonPadding(size, prefix, suffix, onlyIcon),\n {\n \"gap-1\": size === \"sm\",\n \"hover:text-element-inverse-default text-white hover:bg-white\":\n isAiFilled,\n \"text-element-inverse-default dark:bg-fill-background bg-white hover:bg-transparent hover:text-white\":\n !isAiFilled,\n }\n )}\n >\n {state === \"loading\" && <Loader2Icon className=\"animate-spin\" />}\n {renderAffix(prefix)}\n {children}\n {renderAffix(suffix)}\n </div>\n </Comp>\n );\n }\n\n return (\n <Comp\n data-variant={variant}\n data-slot=\"button\"\n className={cn(\n buttonVariants({ variant, size, className }),\n getButtonPadding(size || \"md\", prefix, suffix, onlyIcon || false)\n )}\n disabled={isDisabled}\n {...props}\n >\n {state === \"loading\" && <Loader2Icon className=\"animate-spin\" />}\n {renderAffix(prefix)}\n {children}\n {renderAffix(suffix)}\n </Comp>\n );\n}\n\nexport { Button, buttonVariants };\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\nimport { Loader2Icon } from \"lucide-react\";\n\nexport interface ToolButtonProps\n extends Omit<React.ComponentProps<\"button\">, \"prefix\" | \"suffix\">,\n VariantProps<typeof toolButtonVariants> {\n state?: \"loading\" | \"default\";\n asChild?: boolean;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n onlyIcon?: boolean;\n children?: React.ReactNode;\n}\n\nconst toolButtonVariants = cva(\n \"inline-flex items-center cursor-pointer justify-center gap-2 whitespace-nowrap rounded-md text-body-sm font-medium transition-all disabled:pointer-events-none disabled:bg-button-bg-inactive [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-[20px] shrink-0 [&_svg]:shrink-0 outline-none ring-0\",\n {\n variants: {\n variant: {\n primary:\n \"bg-button-bg-primaryDefault !text-white hover:bg-button-bg-primaryHover\",\n outline:\n \"border border-border-primary-light bg-button-bg-outlineDefault !text-text-default hover:bg-button-bg-outlineHover disabled:bg-button-bg-outlineDefault disabled:!text-text-inactive\",\n destructive:\n \"bg-button-bg-destructiveDefault !text-white hover:bg-button-bg-destructiveHover\",\n },\n size: {\n md: \"px-2.5 py-2 rounded-lg gap-2 text-body-sm\",\n lg: \"p-4 rounded-xl gap-2 text-body-sm\",\n },\n state: {\n loading: \"opacity-80 cursor-progress\",\n default: \"\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n state: \"default\",\n },\n },\n);\n\nfunction getToolButtonPadding(\n size: string,\n prefix: React.ReactNode,\n suffix: React.ReactNode,\n onlyIcon?: boolean,\n): string {\n if (size === \"md\") {\n if (prefix && suffix) return \"px-2\";\n else if (prefix) return \"pl-2 pr-2.5\";\n else if (suffix) return \"pr-2 pl-2.5\";\n else if (onlyIcon) return \"p-2\";\n }\n return \"p-4\";\n}\n\nfunction ToolButton({\n className,\n variant,\n state,\n size,\n prefix,\n suffix,\n onlyIcon,\n asChild = false,\n children,\n ...props\n}: ToolButtonProps) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"button\"\n type=\"button\"\n className={cn(\n toolButtonVariants({ variant, size, className }),\n getToolButtonPadding(size || \"md\", prefix, suffix, onlyIcon || false),\n )}\n disabled={state === \"loading\" || props.disabled}\n {...props}\n >\n {state === \"loading\" && <Loader2Icon className=\"animate-spin\" />}\n {prefix && prefix}\n {children}\n {suffix && suffix}\n </Comp>\n );\n}\n\nexport { ToolButton, toolButtonVariants };\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nexport interface ButtonLinkProps\n extends Omit<React.ComponentProps<\"a\">, \"children\" | \"prefix\" | \"suffix\">,\n VariantProps<typeof buttonLinkVariants> {\n asChild?: boolean;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n disabled?: boolean;\n children: React.ReactNode;\n}\n\nconst buttonLinkVariants = cva(\n \"inline-flex items-center gap-1 !text-body-sm cursor-pointer font-medium outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n {\n variants: {\n variant: {\n link: \"text-element-inverse-blue underline underline-offset-4\",\n \"text-link\": \"text-element-inverse-default\",\n error: \"text-element-inverse-red\",\n },\n },\n defaultVariants: {\n variant: \"link\",\n },\n }\n);\n\nfunction ButtonLink({\n className,\n variant,\n prefix,\n suffix,\n disabled = false,\n asChild = false,\n children,\n ...props\n}: ButtonLinkProps) {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n className={cn(buttonLinkVariants({ variant }), className, {\n \"text-element-inverse-disabled pointer-events-none hover:font-medium\":\n disabled,\n \"flex items-center gap-1\": prefix || suffix,\n })}\n aria-disabled={disabled}\n {...props}\n >\n {prefix && prefix}\n <span>{children}</span>\n {suffix && suffix}\n </Comp>\n );\n}\n\nexport { ButtonLink, buttonLinkVariants };\n","import type { TooltipProps } from \"@radix-ui/react-tooltip\";\nimport type { ComponentProps } from \"react\";\nimport { Tooltip } from \"@/ui/Tooltip\";\n\nexport default function ButtonWithTooltip({\n tooltip,\n button,\n}: {\n tooltip: Omit<ComponentProps<typeof Tooltip>, \"trigger\">;\n button: React.ReactNode;\n}) {\n return <Tooltip {...tooltip} trigger={button} />;\n}\n","import * as React from \"react\";\nimport { DayButton, DayPicker, getDefaultClassNames } from \"react-day-picker\";\n\nimport { cn } from \"@/utils\";\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from \"lucide-react\";\nimport { Button, buttonVariants } from \"@/ui/Button\";\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"];\n}) {\n const defaultClassNames = getDefaultClassNames();\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"group/calendar bg-fill-foreground p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className,\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\n \"flex gap-4 flex-col md:flex-row relative\",\n defaultClassNames.months,\n ),\n month: cn(\"flex flex-col w-full gap-4\", defaultClassNames.month),\n nav: cn(\n \"flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between\",\n defaultClassNames.nav,\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_previous,\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_next,\n ),\n month_caption: cn(\n \"flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)\",\n defaultClassNames.month_caption,\n ),\n dropdowns: cn(\n \"w-full flex items-center text-body-sm font-medium justify-center h-(--cell-size) gap-1.5\",\n defaultClassNames.dropdowns,\n ),\n dropdown_root: cn(\n \"relative has-focus:border-stroke-static-blue-03 border border-stroke-inverse-slate-02 shadow-xs has-focus:ring-stroke-static-blue-03 has-focus:ring-[3px] rounded-unit-corner-radius-md\",\n defaultClassNames.dropdown_root,\n ),\n dropdown: cn(\"absolute inset-0 opacity-0\", defaultClassNames.dropdown),\n caption_label: cn(\n \"select-none font-medium\",\n captionLayout === \"label\"\n ? \"text-body-sm\"\n : \"rounded-unit-corner-radius-md pl-2 pr-1 flex items-center gap-1 text-body-sm h-8 [&>svg]:text-element-inverse-gray [&>svg]:size-3.5\",\n defaultClassNames.caption_label,\n ),\n table: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"text-element-inverse-gray rounded-unit-corner-radius-md flex-1 font-normal text-body-sm select-none\",\n defaultClassNames.weekday,\n ),\n week: cn(\"flex w-full mt-2\", defaultClassNames.week),\n week_number_header: cn(\n \"select-none w-(--cell-size)\",\n defaultClassNames.week_number_header,\n ),\n week_number: cn(\n \"text-body-sm select-none text-element-inverse-gray\",\n defaultClassNames.week_number,\n ),\n day: cn(\n \"relative w-full h-full rounded-unit-corner-radius-md p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-unit-corner-radius-md [&:last-child[data-selected=true]_button]:rounded-r-unit-corner-radius-md group/day aspect-square select-none\",\n defaultClassNames.day,\n ),\n range_start: cn(\n \"rounded-l-unit-corner-radius-md bg-fill-inverse-slate-05\",\n defaultClassNames.range_start,\n ),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\n \"rounded-r-unit-corner-radius-md bg-fill-inverse-slate-05\",\n defaultClassNames.range_end,\n ),\n today: cn(\n \"bg-fill-inverse-slate-03 rounded-unit-corner-radius-md! data-[selected=true]:rounded-none\",\n defaultClassNames.today,\n ),\n outside: cn(\n \"text-element-inverse-gray aria-selected:text-element-inverse-gray\",\n defaultClassNames.outside,\n ),\n disabled: cn(\n \"text-element-inverse-disabled opacity-unit-md\",\n defaultClassNames.disabled,\n ),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n );\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />\n );\n }\n if (orientation === \"right\") {\n return (\n <ChevronRightIcon\n className={cn(\"size-4\", className)}\n {...props}\n />\n );\n }\n return (\n <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n );\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n );\n },\n ...components,\n }}\n {...props}\n />\n );\n}\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames();\n const ref = React.useRef<HTMLButtonElement>(null);\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus();\n }, [modifiers.focused]);\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"sm\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n \"data-[selected-single=true]:bg-button-primary-enabled data-[range-middle=true]:bg-fill-inverse-blue-01 data-[range-middle=true]:text-element-inverse-blue data-[range-start=true]:bg-button-primary-enabled data-[range-end=true]:bg-button-primary-enabled group-data-[focused=true]/day:border-stroke-static-blue-03 group-data-[focused=true]/day:ring-stroke-static-blue-03/50 data-[range-end=true]:rounded-unit-corner-radius-md data-[range-end=true]:rounded-r-unit-corner-radius-md data-[range-start=true]:rounded-unit-corner-radius-md data-[range-start=true]:rounded-l-unit-corner-radius-md [&>span]:text-body-sm [&>span]:opacity-unit-xl flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:!text-white data-[range-middle=true]:rounded-none data-[range-start=true]:!text-white data-[selected-single=true]:!text-white\",\n defaultClassNames.day,\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Calendar };\n","import * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"bg-card-bg-default border-border-primary-light hover:bg-card-bg-hover flex cursor-pointer flex-col gap-y-4 rounded-3xl border p-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"text-title-sm leading-none font-bold\", className)}\n {...props}\n />\n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div data-slot=\"card-content\" className={className} {...props} />;\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n};\n","import useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\nimport { Button } from \"@/ui\";\n\ntype CarouselApi = UseEmblaCarouselType[1];\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\ntype CarouselOptions = UseCarouselParameters[0];\ntype CarouselPlugin = UseCarouselParameters[1];\n\ntype CarouselProps = {\n opts?: CarouselOptions;\n plugins?: CarouselPlugin;\n orientation?: \"horizontal\" | \"vertical\";\n setApi?: (api: CarouselApi) => void;\n};\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\n api: ReturnType<typeof useEmblaCarousel>[1];\n scrollPrev: () => void;\n scrollNext: () => void;\n canScrollPrev: boolean;\n canScrollNext: boolean;\n} & CarouselProps;\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext);\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\");\n }\n\n return context;\n}\n\nfunction Carousel({\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins,\n );\n const [canScrollPrev, setCanScrollPrev] = React.useState(false);\n const [canScrollNext, setCanScrollNext] = React.useState(false);\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return;\n setCanScrollPrev(api.canScrollPrev());\n setCanScrollNext(api.canScrollNext());\n }, []);\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev();\n }, [api]);\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext();\n }, [api]);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n scrollPrev();\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault();\n scrollNext();\n }\n },\n [scrollPrev, scrollNext],\n );\n\n React.useEffect(() => {\n if (!api || !setApi) return;\n setApi(api);\n }, [api, setApi]);\n\n React.useEffect(() => {\n if (!api) return;\n onSelect(api);\n api.on(\"reInit\", onSelect);\n api.on(\"select\", onSelect);\n\n return () => {\n api?.off(\"select\", onSelect);\n };\n }, [api, onSelect]);\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation:\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n data-slot=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n const { carouselRef, orientation } = useCarousel();\n\n return (\n <div\n ref={carouselRef}\n className=\"overflow-hidden\"\n data-slot=\"carousel-content\"\n >\n <div\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const { orientation } = useCarousel();\n\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CarouselPrevious({\n className,\n variant = \"outline\",\n size = \"md\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button\n data-slot=\"carousel-previous\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -left-12 -translate-y-1/2\"\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n className,\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ChevronLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n}\n\nfunction CarouselNext({\n className,\n variant = \"outline\",\n size = \"md\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button\n data-slot=\"carousel-next\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -right-12 -translate-y-1/2\"\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n className,\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ChevronRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n );\n}\n\nexport {\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselNext,\n CarouselPrevious,\n type CarouselApi,\n};\n","import * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { CheckIcon, Minus } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\nimport { Label } from \"@/ui/Label\";\n\ntype CheckboxProps = React.ComponentProps<typeof CheckboxPrimitive.Root> & {\n indeterminate?: boolean;\n value: string;\n label?: string | React.ReactNode;\n subLabel?: string | React.ReactNode;\n};\n\nfunction Checkbox({\n className,\n value,\n label,\n subLabel,\n ...props\n}: CheckboxProps) {\n return (\n <div className=\"flex flex-nowrap items-start gap-2\">\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer focus-visible:ring-effect-ring-primary aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive rounded-unit-corner-radius-md size-4 h-5 w-5 shrink-0 border shadow-xs transition-shadow outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-50\",\n \"\",\n \"data-[state=unchecked]:hover:bg-fill-inverse-slate-02 data-[state=unchecked]:border-stroke-inverse-slate-03 data-[state=unchecked]:hover:border-stroke-static-slate-03 data-[state=unchecked]:disabled:bg-fill-inverse-slate-02 data-[state=unchecked]:disabled:border-stroke-inverse-slate-02\",\n \"\",\n \"data-[state=checked]:bg-check-box-and-radio-selected-enabled data-[state=checked]:text-element-static-white data-[state=checked]:active:bg-check-box-and-radio-selected-pressed data-[state=checked]:hover:bg-check-box-and-radio-selected-hovered data-[state=checked]:disabled:bg-check-box-and-radio-selected-disabled data-[state=checked]:disabled:border-stroke-inverse-slate-03 data-[state=checked]:border-transparent\",\n className,\n )}\n id={props.id || value}\n checked={props.checked}\n onCheckedChange={\n props.onChange as unknown as (checked: boolean) => void\n }\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current transition-none\"\n >\n {props.indeterminate ? (\n <Minus className=\"size-3.5\" />\n ) : (\n <CheckIcon className=\"size-3.5\" />\n )}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n\n <div className=\"flex flex-col gap-1\">\n {label ? <Label htmlFor={props.id || value}>{label}</Label> : null}\n {subLabel ? (\n <Label\n htmlFor={props.id || value}\n className=\"text-element-inverse-gray! text-body-sm font-medium\"\n >\n {subLabel}\n </Label>\n ) : null}\n </div>\n </div>\n );\n}\n\nexport { Checkbox };\n","import * as LabelPrimitive from \"@radix-ui/react-label\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"text-title-sm text-element-inverse-default flex items-center gap-2 leading-none font-semibold select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Label };\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { X } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn, getInitials } from \"@/utils\";\nimport { Avatar } from \"@/ui/Avatar\";\nimport IconContainer from \"@/ui/IconContainer\";\n\ntype IconContainerProps = {\n colorInFill?: boolean;\n disableTheme?: boolean;\n type?: \"static\";\n size?:\n | \"xs\"\n | \"sm\"\n | \"md\"\n | \"lg\"\n | \"xl\"\n | \"2xl\"\n | \"3xl\"\n | \"4xl\"\n | \"5xl\"\n | \"6xl\";\n className?: string;\n style?: React.CSSProperties;\n} & Omit<React.HTMLAttributes<HTMLDivElement>, \"children\">;\n\nconst chipVariants = cva(\n \"inline-flex items-center justify-center border py-unit-4px px-unit-8px text-body-sm font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-5 gap-1 focus-visible:ring-0 overflow-hidden\",\n {\n variants: {\n type: {\n rounded: \"rounded-full\",\n rectangle: \"rounded-unit-corner-radius-lg\",\n },\n color: {\n slate:\n \"border-stroke-inverse-slate-03 text-element-inverse-default bg-chip-slate-enabled hover:bg-chip-slate-hovered\",\n red: \"border-stroke-inverse-red-01 text-element-inverse-red bg-chip-red-enabled hover:bg-chip-red-hovered\",\n orange:\n \"border-stroke-inverse-orange-01 text-element-inverse-orange bg-chip-orange-enabled hover:bg-chip-orange-hovered\",\n amber:\n \"border-stroke-inverse-amber-01 text-element-inverse-amber bg-chip-amber-enabled hover:bg-chip-amber-hovered\",\n yellow:\n \"border-stroke-inverse-yellow-01 text-element-inverse-yellow bg-chip-yellow-enabled hover:bg-chip-yellow-hovered\",\n lime: \"border-stroke-inverse-lime-01 text-element-inverse-lime bg-chip-lime-enabled hover:bg-chip-lime-hovered\",\n green:\n \"border-stroke-inverse-green-01 text-element-inverse-green bg-chip-green-enabled hover:bg-chip-green-hovered\",\n emerald:\n \"border-stroke-inverse-emerald-01 text-element-inverse-emerald bg-chip-emerald-enabled hover:bg-chip-emerald-hovered\",\n teal: \"border-stroke-inverse-teal-01 text-element-inverse-teal bg-chip-teal-enabled hover:bg-chip-teal-hovered\",\n cyan: \"border-stroke-inverse-cyan-01 text-element-inverse-cyan bg-chip-cyan-enabled hover:bg-chip-cyan-hovered\",\n sky: \"border-stroke-inverse-sky-01 text-element-inverse-sky bg-chip-sky-enabled hover:bg-chip-sky-hovered\",\n blue: \"border-stroke-inverse-blue-01 text-element-inverse-blue bg-chip-blue-enabled hover:bg-chip-blue-hovered\",\n indigo:\n \"border-stroke-inverse-indigo-01 text-element-inverse-indigo bg-chip-indigo-enabled hover:bg-chip-indigo-hovered\",\n violet:\n \"border-stroke-inverse-violet-01 text-element-inverse-violet bg-chip-violet-enabled hover:bg-chip-violet-hovered\",\n purple:\n \"border-stroke-inverse-purple-01 text-element-inverse-purple bg-chip-purple-enabled hover:bg-chip-purple-hovered\",\n fuchsia:\n \"border-stroke-inverse-fuchsia-01 text-element-inverse-fuchsia bg-chip-fuchsia-enabled hover:bg-chip-fuchsia-hovered\",\n pink: \"border-stroke-inverse-pink-01 text-element-inverse-pink bg-chip-pink-enabled hover:bg-chip-pink-hovered\",\n rose: \"border-stroke-inverse-rose-01 text-element-inverse-rose bg-chip-rose-enabled hover:bg-chip-rose-hovered\",\n },\n },\n defaultVariants: {\n type: \"rounded\",\n color: \"slate\",\n },\n }\n);\n\n// Main component\nfunction Chip({\n type,\n color,\n dot = false,\n icon,\n avatar,\n closeBtn = false,\n label,\n className,\n children,\n iconContainerProps,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof chipVariants> & {\n dot?: boolean;\n icon?: React.ReactNode;\n avatar?: string;\n closeBtn?:\n | false\n | {\n onClick: (e: React.MouseEvent) => void;\n };\n label: string;\n iconContainerProps?: IconContainerProps;\n }) {\n return (\n <span\n data-slot=\"chip\"\n className={cn(\n chipVariants({ type, color }),\n \"cursor-default gap-1 px-2 py-1\",\n className,\n {\n \"pl-1.5\": dot || !!icon,\n \"pl-1\": !!avatar,\n }\n )}\n {...props}\n >\n {dot && <Dot color={color} className=\"size-2\" />}\n {icon && (\n <IconContainer\n colorInFill={false}\n className={cn(\n \"[&_path]:fill-(--iconColor)!\",\n iconContainerProps?.className\n )}\n style={\n {\n [\"--iconColor\"]:\n (color ?? \"slate\") === \"slate\"\n ? \"var(--color-element-inverse-default)\"\n : `var(--color-element-inverse-${color ?? \"slate\"})`,\n ...iconContainerProps?.style,\n } as React.CSSProperties & { [\"--iconColor\"]: string }\n }\n {...iconContainerProps}\n >\n {icon}\n </IconContainer>\n )}\n {avatar && (\n <Avatar\n variant=\"image\"\n size=\"xs\"\n imgsrc={avatar}\n fallback={getInitials(label)}\n tooltip={label}\n />\n )}\n {label && (\n <p className=\"leading-body-sm text-body-sm truncate font-medium\">\n {label}\n </p>\n )}\n {closeBtn && (\n <X\n size={20}\n className=\"cursor-pointer\"\n onClick={(e) => {\n if (!closeBtn) return;\n closeBtn.onClick(e);\n }}\n />\n )}\n {children}\n </span>\n );\n}\n\nexport { Chip, chipVariants };\n\n// Dot component\nconst dotVariants = cva(\"size-3 rounded-full p-0.5\", {\n variants: {\n color: {\n slate: \"bg-element-inverse-default\",\n red: \"bg-element-inverse-red\",\n orange: \"bg-element-inverse-orange\",\n amber: \"bg-element-inverse-amber\",\n yellow: \"bg-element-inverse-yellow\",\n lime: \"bg-element-inverse-lime\",\n green: \"bg-element-inverse-green\",\n emerald: \"bg-element-inverse-emerald\",\n teal: \"bg-element-inverse-teal\",\n cyan: \"bg-element-inverse-cyan\",\n sky: \"bg-element-inverse-sky\",\n blue: \"bg-element-inverse-blue\",\n indigo: \"bg-element-inverse-indigo\",\n violet: \"bg-element-inverse-violet\",\n purple: \"bg-element-inverse-purple\",\n fuchsia: \"bg-element-inverse-fuchsia\",\n pink: \"bg-element-inverse-pink\",\n rose: \"bg-element-inverse-rose\",\n },\n },\n defaultVariants: {\n color: \"slate\",\n },\n});\n\nfunction Dot({\n className,\n color,\n ...props\n}: VariantProps<typeof dotVariants> & { className?: string }) {\n return <div className={cn(dotVariants({ color }), className)} {...props} />;\n}\n","\"use client\";\n\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { Check, ChevronsUpDown, SearchIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\nimport { useEffect } from \"react\";\nimport { Button } from \"@/ui/Button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/ui/Popover\";\n\ninterface Option {\n value: string;\n label: string;\n}\n\ninterface ComboboxProps {\n options: Option[];\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n className?: string;\n disabled?: boolean;\n}\n\nexport function Combobox({\n options,\n value,\n onChange,\n placeholder = \"Select...\",\n className,\n disabled = false,\n}: ComboboxProps) {\n const [open, setOpen] = React.useState(false);\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n const [popoverWidth, setPopoverWidth] = React.useState<number>();\n\n useEffect(() => {\n if (open && triggerRef.current) {\n setPopoverWidth(triggerRef.current.offsetWidth);\n }\n }, [open]);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n ref={triggerRef}\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className={cn(\"w-full justify-between\", className)}\n disabled={disabled}\n >\n {value\n ? options.find((option) => option.value === value)?.label\n : placeholder}\n <ChevronsUpDown className=\"opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className=\"p-0\"\n style={popoverWidth ? { width: popoverWidth } : undefined}\n >\n <Command>\n <CommandInput placeholder={placeholder} className=\"h-9\" />\n <CommandList>\n <CommandEmpty>No option found.</CommandEmpty>\n <CommandGroup>\n {options.map((option) => (\n <CommandItem\n key={option.value}\n value={option.value}\n onSelect={(currentValue) => {\n onChange(currentValue === value ? \"\" : currentValue);\n setOpen(false);\n }}\n >\n {option.label}\n <Check\n className={cn(\n \"ml-auto\",\n value === option.value ? \"opacity-100\" : \"opacity-0\",\n )}\n />\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n}\n\nexport function Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n data-slot=\"command-input-wrapper\"\n className=\"border-input-border-primaryDefault flex h-9 items-center gap-2 border-b px-3\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nexport function CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\n \"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n );\n}\n\nexport function CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n \"text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n","import * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"glass-effect border-stroke-inverse-slate-02 text-text-default data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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 shadow-box z-[var(--z-popover)] min-w-24 max-w-72 origin-(--radix-popover-content-transform-origin) rounded-3xl border p-2 outline-hidden\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n );\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />;\n}\n\nexport { Popover, PopoverAnchor, PopoverContent, PopoverTrigger };\n","\"use client\";\n\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\";\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nfunction ContextMenu({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />;\n}\n\nfunction ContextMenuTrigger({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return (\n <ContextMenuPrimitive.Trigger data-slot=\"context-menu-trigger\" {...props} />\n );\n}\n\nfunction ContextMenuGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return (\n <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n );\n}\n\nfunction ContextMenuPortal({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n return (\n <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n );\n}\n\nfunction ContextMenuSub({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />;\n}\n\nfunction ContextMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return (\n <ContextMenuPrimitive.RadioGroup\n data-slot=\"context-menu-radio-group\"\n {...props}\n />\n );\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n );\n}\n\nfunction ContextMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n return (\n <ContextMenuPrimitive.SubContent\n data-slot=\"context-menu-sub-content\"\n className={cn(\n \"bg-surface-bg-container text-text-default data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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 border-border-primary-light z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n data-slot=\"context-menu-content\"\n className={cn(\n \"bg-surface-bg-container text-text-default data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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 border-border-primary-light z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-3xl border p-2 shadow-md\",\n className,\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n );\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"bg-dropdown-bg-default hover:bg-dropdown-bg-hover focus:bg-dropdown-bg-hover text-text-default data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground text-body-sm relative flex cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 font-medium outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n );\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.Label\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return (\n <ContextMenuPrimitive.Separator\n data-slot=\"context-menu-separator\"\n className={cn(\"bg-border-primary-light -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction ContextMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"context-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n ContextMenu,\n ContextMenuCheckboxItem,\n ContextMenuContent,\n ContextMenuGroup,\n ContextMenuItem,\n ContextMenuLabel,\n ContextMenuPortal,\n ContextMenuRadioGroup,\n ContextMenuRadioItem,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuTrigger,\n};\n","\"use client\";\n\nimport { format } from \"date-fns\";\nimport { CalendarDays } from \"lucide-react\";\nimport { ChevronDown } from \"magick-icons\";\nimport { cn } from \"@/utils\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/ui/Popover\";\nimport { Button } from \"@/ui/Button\";\nimport { Calendar } from \"@/ui/Calendar\";\nimport IconContainer from \"@/ui/IconContainer\";\n\ninterface DatePickerInputProps extends React.ComponentProps<\"button\"> {\n date: Date | undefined;\n setDate: (date: Date | undefined) => void;\n placeholder?: string;\n /**\n * If true, disables all dates before today.\n */\n disablePast?: boolean;\n prefixNode?: React.ReactNode;\n /**\n * If true, shows a clear button when a date is selected.\n */\n withClearButton?: boolean;\n}\n\nexport function DatePickerInput({\n date,\n setDate,\n placeholder,\n disablePast = false,\n prefixNode,\n withClearButton = false,\n ...props\n}: DatePickerInputProps) {\n return (\n <div className=\"group relative\">\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant={\"outline\"}\n className={cn(\n \"border-stroke-inverse-slate-03 hover:border-stroke-static-slate-04 focus-visible:border-stroke-static-blue-03 active:border-stroke-static-blue-03 relative z-[2] w-full justify-start rounded-lg border\",\n \"disabled:bg-button-outline-disabled disabled:text-element-inverse-disabled disabled:border-stroke-inverse-slate-03 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-100\",\n \"aria-invalid:border-stroke-inverse-red-01 aria-invalid:text-text-destructive aria-invalid:hover:border-stroke-inverse-red-02 aria-invalid:focus-visible:ring-effect-ring-destructive aria-invalid:active:ring-effect-ring-destructive\"\n )}\n {...props}\n >\n {prefixNode || <CalendarDays size={20} />}\n <div className=\"max-w-[15ch] truncate\">\n {date ? (\n format(date, \"d MMM yyyy\")\n ) : (\n <span\n className={cn(\n !date &&\n \"text-element-inverse-disabled! text-body-sm leading-body-sm text-left font-medium\"\n )}\n >\n {placeholder}\n </span>\n )}\n </div>\n\n <IconContainer className=\"ml-auto\">\n <ChevronDown />\n </IconContainer>\n </Button>\n </PopoverTrigger>\n\n <PopoverContent\n className=\"border-stroke-inverse-slate-02 w-auto rounded-3xl p-0 shadow-md\"\n align=\"start\"\n >\n <Calendar\n mode=\"single\"\n selected={date}\n onSelect={setDate}\n initialFocus\n {...(disablePast ? { disabled: { before: new Date() } } : {})}\n />\n {withClearButton && date && (\n <div className=\"border-t border-stroke-inverse-slate-02 p-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"w-full\"\n onClick={(e) => {\n e.stopPropagation();\n setDate(undefined);\n }}\n >\n Clear all\n </Button>\n </div>\n )}\n </PopoverContent>\n </Popover>\n </div>\n );\n}\n","import { XIcon } from \"lucide-react\";\nimport * as React from \"react\";\nimport { cn } from \"@/utils\";\nimport { getFileSize } from \"@/utils\";\nimport { Button } from \"@/ui/Button\";\nimport IconButton from \"@/ui/IconButton\";\nimport { ProgressIndicator } from \"@/ui/ProgressIndicator\";\n\ntype FileInputProps = Omit<\n React.ComponentProps<\"input\">,\n \"type\" | \"onChange\"\n> & {\n label?: string;\n helperText?: string;\n error?: boolean;\n file?: File | null;\n isPending?: boolean; // Upload pending state from mutation\n onRemove?: () => void;\n onFileChange?: (file: File | null) => void;\n isUploaded?: boolean;\n accept?: string;\n multiple?: boolean;\n};\n\nexport const FileInput = ({\n label,\n helperText,\n error = false,\n file,\n isPending = false,\n onRemove,\n onFileChange,\n className,\n isUploaded = false,\n disabled,\n accept,\n multiple = false,\n id,\n ...props\n}: FileInputProps) => {\n const inputRef = React.useRef<HTMLInputElement>(null);\n const [selectedFile, setSelectedFile] = React.useState<File | null>(\n file || null\n );\n const [animatedProgress, setAnimatedProgress] = React.useState(0);\n const animationRef = React.useRef<NodeJS.Timeout | null>(null);\n\n // Reset animated progress when file changes or is removed\n React.useEffect(() => {\n if (!selectedFile) {\n setAnimatedProgress(0);\n if (animationRef.current) {\n clearInterval(animationRef.current);\n animationRef.current = null;\n }\n }\n }, [selectedFile]);\n\n // Reset state when file prop changes\n React.useEffect(() => {\n if (!file) {\n // Reset all state when file is removed\n setSelectedFile(null);\n setAnimatedProgress(0);\n if (animationRef.current) {\n clearInterval(animationRef.current);\n animationRef.current = null;\n }\n return;\n }\n\n // This ensures we always have the latest file reference\n const fileId = `${file.name}-${file.size}-${file.lastModified}`;\n const currentFileId = selectedFile\n ? `${selectedFile.name}-${selectedFile.size}-${selectedFile.lastModified}`\n : null;\n\n // Only update if it's actually a different file\n if (fileId !== currentFileId) {\n // Reset all state for new file\n setSelectedFile(file);\n setAnimatedProgress(0);\n if (animationRef.current) {\n clearInterval(animationRef.current);\n animationRef.current = null;\n }\n } else if (selectedFile !== file) {\n // Same file but different reference - update the reference\n setSelectedFile(file);\n }\n }, [file, selectedFile]);\n\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files;\n if (!files || files.length === 0) {\n setSelectedFile(null);\n onFileChange?.(null);\n return;\n }\n\n const newFile = files[0];\n setSelectedFile(newFile);\n onFileChange?.(newFile);\n };\n\n const handleRemove = (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n // Clear input first\n if (inputRef.current) {\n inputRef.current.value = \"\";\n }\n\n // Reset state immediately\n setSelectedFile(null);\n setAnimatedProgress(0);\n if (animationRef.current) {\n clearInterval(animationRef.current);\n animationRef.current = null;\n }\n\n // Call onRemove first to remove from parent state immediately\n // This prevents any race conditions\n onRemove?.();\n // Then call onFileChange to sync\n onFileChange?.(null);\n };\n\n // Cleanup on unmount\n React.useEffect(() => {\n return () => {\n if (animationRef.current) {\n clearInterval(animationRef.current);\n animationRef.current = null;\n }\n };\n }, []);\n\n const handleChooseFile = () => {\n inputRef.current?.click();\n };\n\n const fileSize = selectedFile ? getFileSize(selectedFile.size) : \"\";\n\n // Animate progress when pending\n React.useEffect(() => {\n // Clear any existing animation\n if (animationRef.current) {\n clearInterval(animationRef.current);\n animationRef.current = null;\n }\n\n if (isUploaded) {\n setAnimatedProgress(100);\n return;\n }\n\n if (!isPending) {\n setAnimatedProgress(0);\n return;\n }\n\n // Animate progress smoothly from 0 to 100% while pending\n const targetProgress = 100;\n const duration = 300; // 0.3 seconds to reach 90%\n const steps = 13; // 13 steps for smooth animation\n const stepDuration = duration / steps;\n const increment = targetProgress / steps;\n\n setAnimatedProgress(0);\n\n let currentProgress = 0;\n animationRef.current = setInterval(() => {\n currentProgress += increment;\n if (currentProgress >= targetProgress) {\n currentProgress = targetProgress;\n setAnimatedProgress(targetProgress);\n if (animationRef.current) {\n clearInterval(animationRef.current);\n animationRef.current = null;\n }\n } else {\n setAnimatedProgress(currentProgress);\n }\n }, stepDuration);\n\n return () => {\n if (animationRef.current) {\n clearInterval(animationRef.current);\n animationRef.current = null;\n }\n };\n }, [isPending, isUploaded]);\n\n const progressPercentage = isUploaded ? 100 : animatedProgress;\n const isUploadingState = isPending && !isUploaded;\n\n const borderColor = error\n ? \"border-stroke-inverse-red-01 hover:border-stroke-inverse-red-02\"\n : isUploadingState\n ? \"border-stroke-static-blue-03\"\n : \"border-stroke-inverse-slate-03 hover:border-stroke-static-slate-04\";\n\n const bgColor = selectedFile\n ? \"bg-fill-inverse-slate-01\"\n : \"bg-input-outline-enabled hover:bg-input-outline-hovered\";\n\n return (\n <div className={cn(\"flex w-full flex-col gap-1\", className)}>\n {label && (\n <label\n htmlFor={id}\n className={cn(\n \"text-body-sm font-medium\",\n disabled\n ? \"text-element-inverse-disabled\"\n : \"text-element-inverse-default\"\n )}\n >\n {label}\n </label>\n )}\n\n {/* File Input Container */}\n <div\n className={cn(\n \"group rounded-unit-corner-radius-xl relative flex min-h-10 w-full items-center border transition-[color,box-shadow]\",\n borderColor,\n bgColor,\n {\n \"pointer-events-none cursor-not-allowed opacity-50\": disabled,\n \"focus-within:ring-1 focus-within:outline-none\": !disabled,\n \"focus-within:ring-effect-ring-destructive focus-within:border-stroke-inverse-red-02\":\n error && !disabled,\n \"focus-within:ring-effect-ring-primary focus-within:border-stroke-static-blue-03\":\n !error && !disabled && isUploadingState,\n }\n )}\n >\n <input\n ref={inputRef}\n type=\"file\"\n id={id}\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n onChange={handleFileChange}\n className=\"hidden\"\n {...props}\n />\n\n {!selectedFile ? (\n /* Empty State - Choose File Button */\n <Button\n type=\"button\"\n onClick={handleChooseFile}\n disabled={disabled}\n variant=\"outline\"\n className={cn(\n \"h-full w-full justify-start gap-2 rounded-lg border-0 px-3 py-2 shadow-none\",\n error\n ? \"border-input-border-destructiveDefault hover:border-input-border-destructiveHover\"\n : \"border-input-border-primaryDefault hover:border-input-border-primaryHover\"\n )}\n >\n <span className=\"w-[77px] font-semibold\">Choose file</span>\n <span className=\"text-element-inverse-disabled\">\n No file chosen\n </span>\n </Button>\n ) : (\n /* File Selected State */\n <div className=\"gap-x-unit-8px grid w-full grid-cols-4 px-3 py-2\">\n <div\n className={cn(\"gap-x-unit-10px col-span-3 flex items-center\", {\n \"col-span-2\": isUploadingState,\n \"cursor-pointer\": !disabled,\n })}\n onClick={!disabled ? handleChooseFile : undefined}\n role={!disabled ? \"button\" : undefined}\n tabIndex={!disabled ? 0 : undefined}\n onKeyDown={\n !disabled\n ? (e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleChooseFile();\n }\n }\n : undefined\n }\n >\n {/* Choose file button (always visible) */}\n <p className=\"text-body-sm leading-body-sm text-element-inverse-default font-medium\">\n Selected\n </p>\n\n {/* File name */}\n <span\n className={cn(\n \"text-body-sm leading-body-sm min-w-0 max-w-[18ch] truncate flex-1 font-medium\",\n disabled\n ? \"text-element-inverse-disabled\"\n : \"text-element-inverse-default\"\n )}\n >\n {selectedFile.name}\n </span>\n </div>\n <div\n className={cn(\"col-span-1 flex items-center justify-end gap-2\", {\n \"col-span-2\": isUploadingState,\n })}\n >\n {/* File size */}\n <span\n className={cn(\n \"text-body-sm tracking-tight whitespace-nowrap\",\n disabled\n ? \"text-element-inverse-disabled\"\n : \"text-element-inverse-gray\"\n )}\n >\n {fileSize}\n </span>\n\n {/* Circular progress indicator */}\n {isUploadingState && (\n <ProgressIndicator\n variant=\"circle\"\n value={progressPercentage}\n />\n )}\n\n {/* Remove button */}\n {!disabled && onRemove && (\n <IconButton\n varient=\"ghost\"\n type=\"button\"\n onClick={handleRemove}\n aria-label=\"Remove file\"\n icon={<XIcon className=\"size-4\" />}\n />\n )}\n </div>\n </div>\n )}\n </div>\n\n {/* Helper Text */}\n {helperText && (\n <p\n className={cn(\n \"text-body-sm\",\n error\n ? \"text-element-inverse-red\"\n : disabled\n ? \"text-element-inverse-disabled\"\n : \"text-element-inverse-gray\"\n )}\n >\n {helperText}\n </p>\n )}\n </div>\n );\n};\n","import { cn } from \"@/utils\";\nimport { cva } from \"class-variance-authority\";\nimport { Button, type ButtonProps } from \"@/ui/Button\";\nimport IconContainer from \"@/ui/IconContainer\";\n\ntype IconButtonSize = \"xs\" | \"sm\" | \"md\" | \"lg\";\n\ninterface IconButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n icon: React.ReactNode;\n disableTheme?: boolean;\n varient?: ButtonProps[\"variant\"];\n size?: IconButtonSize;\n active?: boolean;\n colorInFill?: boolean;\n rounded?: boolean;\n}\n\nconst iconButtonVariants = cva(\n \"cursor-pointer flex items-center justify-center disabled:pointer-events-none disabled:text-element-inverse-disabled\",\n {\n variants: {\n size: {\n xs: \"p-unit-4px rounded-unit-corner-radius-lg w-[26px] h-[26px]\",\n sm: \"p-unit-4px rounded-unit-corner-radius-lg w-7 h-7\",\n md: \"p-unit-10px rounded-unit-corner-radius-xl w-10 h-10\",\n lg: \"p-unit-12px rounded-unit-corner-radius-2xl w-12 h-12\",\n },\n active: {\n true: \"ring ring-offset-1 ring-stroke-inverse-blue-02! border border-stroke-inverse-slate-01 bg-menu-panel-selected-enabled \",\n },\n rounded: {\n true: \"!rounded-unit-corner-radius-rounded-full\",\n },\n },\n }\n);\n\nexport default function IconButton({\n icon,\n varient = \"primary\",\n size = \"sm\",\n rounded = false,\n active = false,\n className,\n colorInFill = true,\n disableTheme = false,\n ...props\n}: IconButtonProps) {\n const iconSize =\n size === \"xs\"\n ? \"xs\"\n : size === \"sm\"\n ? \"sm\"\n : size === \"md\"\n ? \"sm\"\n : size === \"lg\"\n ? \"md\"\n : \"md\";\n return (\n <Button\n type=\"button\"\n className={cn(iconButtonVariants({ size, rounded, active }), className)}\n variant={varient}\n {...props}\n >\n <IconContainer\n colorInFill={colorInFill}\n disableTheme={disableTheme}\n className={cn({\n // \"[&_path]:fill-element-inverse-disabled!\": props.disabled,\n })}\n size={iconSize}\n >\n {icon}\n </IconContainer>\n </Button>\n );\n}\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"@/utils\";\n\nconst progressIndicatorVariants = cva(\n \"transition-all duration-300 ease-in-out p-unit-2px\",\n {\n variants: {\n variant: {\n bar: \"relative w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700 h-4\",\n circle: \"relative inline-flex items-center justify-center w-16 h-16\",\n },\n },\n defaultVariants: {\n variant: \"bar\",\n },\n }\n);\n\nconst progressFillVariants = cva(\n \"transition-all duration-300 ease-in-out bg-blue-500\",\n {\n variants: {\n variant: {\n bar: \"h-full rounded-full\",\n circle: \"stroke-current stroke-linecap-round\",\n },\n },\n defaultVariants: {\n variant: \"bar\",\n },\n }\n);\n\nexport interface ProgressIndicatorProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof progressIndicatorVariants> {\n value: number;\n max?: number;\n showPercentage?: boolean;\n className?: string;\n}\n\nexport function ProgressIndicator({\n value,\n max = 100,\n showPercentage = true,\n className,\n variant,\n ...props\n}: ProgressIndicatorProps) {\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\n\n if (variant === \"circle\") {\n const radius = 40; // Base radius for calculations\n const circumference = 2 * Math.PI * radius;\n const strokeDasharray = circumference;\n const strokeDashoffset = circumference - (percentage / 100) * circumference;\n\n return (\n <div className=\"flex h-5 w-[75px] items-center justify-start\">\n <div\n className={cn(progressIndicatorVariants({ variant }), className)}\n {...props}\n >\n <svg\n className=\"h-5 w-5 -rotate-90 transform\"\n viewBox=\"0 0 100 100\"\n fill=\"none\"\n >\n {/* Background circle */}\n <circle\n cx=\"50\"\n cy=\"50\"\n r={radius}\n stroke=\"currentColor\"\n strokeWidth={20}\n className=\"text-element-inverse-disabled\"\n />\n {/* Progress circle */}\n <circle\n cx=\"50\"\n cy=\"50\"\n r={radius}\n stroke=\"currentColor\"\n strokeWidth={20}\n strokeDasharray={strokeDasharray}\n strokeDashoffset={strokeDashoffset}\n strokeLinecap=\"round\"\n className={cn(\n progressFillVariants({ variant }),\n \"text-element-static-blue\"\n )}\n />\n </svg>\n </div>\n\n {/* Percentage text to the right */}\n {showPercentage && (\n <span className=\"text-caption text-element-inverse-gray w-[50px] font-semibold\">\n {Math.round(percentage)}%\n </span>\n )}\n </div>\n );\n }\n\n // Bar variant\n return (\n <div className=\"w-full\">\n {/* Progress bar container */}\n <div className=\"flex items-center gap-3\">\n <div\n className={cn(\n progressIndicatorVariants({ variant }),\n \"flex-1\",\n className\n )}\n {...props}\n >\n <div\n className={cn(progressFillVariants({ variant }), className)}\n style={{ width: `${percentage}%` }}\n />\n </div>\n\n {/* Percentage text to the right */}\n {showPercentage && (\n <span className=\"text-caption text-element-inverse-gray font-semibold\">\n {Math.round(percentage)}%\n </span>\n )}\n </div>\n </div>\n );\n}\n","import { FilePlus, XIcon } from \"lucide-react\";\nimport { File } from \"magick-icons\";\nimport React, { createContext, useCallback, useContext, useState } from \"react\";\nimport { type FileRejection, useDropzone } from \"react-dropzone\";\nimport { truncateFileNameMid } from \"@/utils\";\nimport { Separator } from \"@radix-ui/react-separator\";\nimport { Button } from \"@/ui/Button\";\n\n// Constants\nconst FILE_SIZE_LIMIT_MB = 3; // 3MB\nconst DEFAULT_MAX_FILES = 10;\n\nconst ACCEPTED_FILE_TYPES: Record<string, string[]> = {\n \"application/pdf\": [\".pdf\"],\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": [\n \".docx\",\n ],\n \"application/msword\": [\".doc\"],\n \"image/*\": [\".png\", \".jpg\", \".jpeg\", \".gif\"],\n};\n\n// Context type\ninterface FileUploadContextType {\n errorMessage: string;\n isDragActive: boolean;\n isDragAccept: boolean;\n isDragReject: boolean;\n isFocused: boolean;\n getRootProps: any;\n getInputProps: any;\n handleRemoveFile: (fileName: string) => void;\n openFileDialog: () => void;\n showFileList?: boolean;\n acceptedFiles: File[];\n}\n\n// Create context\nconst FileUploadContext = createContext<FileUploadContextType | undefined>(\n undefined\n);\n\n// Context hook\nexport const useFileUpload = () => {\n const context = useContext(FileUploadContext);\n if (!context) {\n throw new Error(\"FileUpload components must be used within FileUpload\");\n }\n return context;\n};\n\n// Error message mapping\nconst getErrorMessage = (code: string, fileSizeLimit: number): string => {\n const errorMessages: Record<string, string> = {\n \"file-invalid-type\":\n \"Invalid file type. Only PDF, DOC, DOCX, and images are accepted.\",\n \"file-too-large\": `File size exceeds ${fileSizeLimit}MB limit.`,\n \"too-many-files\": \"Too many files selected.\",\n };\n return errorMessages[code] || \"An error occurred with the file upload.\";\n};\n\ninterface FileUploadProps {\n onDrop: (acceptedFiles: File[], rejectedFiles: FileRejection[]) => void;\n onDelete?: () => void;\n maxFiles?: number;\n isMultiple?: boolean;\n children: React.ReactNode;\n label?: string;\n CustomFileList?: React.ComponentType;\n fileSizeLimit?: number;\n acceptedFileTypes?: Record<string, string[]>;\n // Add react-hook-form props\n name?: string;\n value?: File[] | File;\n onChange?: (files: File[] | File | null) => void;\n onBlur?: () => void;\n disabled?: boolean;\n hasValidationError?: boolean;\n showFileList?: boolean;\n}\n\n// Main component\nconst FileUpload = ({\n onDrop,\n onDelete,\n maxFiles,\n isMultiple = false,\n children,\n label,\n CustomFileList,\n fileSizeLimit = FILE_SIZE_LIMIT_MB,\n acceptedFileTypes = ACCEPTED_FILE_TYPES,\n name,\n value,\n onChange,\n onBlur,\n disabled,\n hasValidationError,\n showFileList = false,\n}: FileUploadProps) => {\n const [errorMessage, setErrorMessage] = useState<string>(\"\");\n\n // Convert MB to bytes for useDropzone\n const fileSizeLimitInBytes =\n (fileSizeLimit ?? FILE_SIZE_LIMIT_MB) * 1024 * 1024;\n\n // Derive acceptedFiles from value prop (controlled mode)\n const acceptedFiles = React.useMemo(() => {\n if (value === undefined) {\n return [];\n }\n if (isMultiple) {\n return Array.isArray(value) ? value : [];\n }\n return value ? [value as File] : [];\n }, [value, isMultiple]);\n\n const handleRejectedFiles = useCallback(\n (rejectedFiles: FileRejection[]) => {\n if (rejectedFiles.length === 0) {\n setErrorMessage(\"\");\n return;\n }\n\n const error = rejectedFiles[0].errors[0];\n setErrorMessage(getErrorMessage(error.code, fileSizeLimit));\n },\n [fileSizeLimit]\n );\n\n const {\n getRootProps,\n getInputProps,\n isDragActive,\n isDragAccept,\n isDragReject,\n isFocused,\n open,\n } = useDropzone({\n onDrop: (accepted: File[], rejected: FileRejection[]) => {\n handleRejectedFiles(rejected);\n // Just pass the accepted files directly to parent - no internal state\n onDrop(accepted, rejected);\n\n // Call react-hook-form onChange if provided\n if (onChange) {\n if (isMultiple) {\n // For multiple, merge with existing value if provided\n const existingFiles = Array.isArray(value) ? value : [];\n const mergedFiles = [...existingFiles, ...accepted].filter(\n (file, index, self) =>\n index === self.findIndex((f) => f.name === file.name)\n );\n onChange(mergedFiles.length > 0 ? mergedFiles : null);\n } else {\n onChange(accepted.length > 0 ? accepted[0] : null);\n }\n }\n },\n accept: acceptedFileTypes,\n maxFiles: isMultiple ? maxFiles || DEFAULT_MAX_FILES : 1,\n maxSize: fileSizeLimitInBytes || FILE_SIZE_LIMIT_MB,\n noClick: false,\n disabled,\n });\n\n const handleRemoveFile = useCallback(\n (fileName: string) => {\n // Remove file from value prop (controlled mode)\n if (onChange) {\n if (isMultiple) {\n const existingFiles = Array.isArray(value) ? value : [];\n const updatedFiles = existingFiles.filter(\n (file) => file.name !== fileName\n );\n onChange(updatedFiles.length > 0 ? updatedFiles : null);\n } else {\n onChange(null);\n }\n }\n\n // Call onDrop with updated files for parent component\n const existingFiles = Array.isArray(value) ? value : [];\n const updatedFiles = existingFiles.filter(\n (file) => file.name !== fileName\n );\n onDrop(updatedFiles, []);\n onDelete?.();\n },\n [value, onDrop, onDelete, onChange, isMultiple]\n );\n\n return (\n <FileUploadContext.Provider\n value={{\n errorMessage:\n errorMessage || (hasValidationError ? \"This field is required\" : \"\"),\n isDragActive,\n isDragAccept,\n isDragReject,\n isFocused,\n getRootProps,\n getInputProps: () => ({\n ...getInputProps(),\n name,\n onBlur,\n \"aria-invalid\": hasValidationError || !!errorMessage,\n }),\n handleRemoveFile,\n openFileDialog: open,\n acceptedFiles,\n }}\n >\n <div className=\"relative w-full space-y-1\">\n <div className=\"flex flex-col gap-1\">\n <label htmlFor={name}>{label}</label>\n {children || <FileUpload.DropZone fileSizeLimit={fileSizeLimit} />}\n {CustomFileList ? (\n <CustomFileList />\n ) : showFileList ? (\n <FileUpload.FileList />\n ) : null}\n </div>\n <FileUpload.ErrorMessage />\n </div>\n </FileUploadContext.Provider>\n );\n};\n\n// Add new interface for render props\ninterface SimpleUploadRenderProps {\n acceptedFiles: File[];\n isFocused: boolean;\n openFileDialog: () => void;\n}\n\ninterface SimpleUploadProps {\n children?: React.ReactNode;\n className?: string;\n buttonProps?: React.ButtonHTMLAttributes<HTMLButtonElement>;\n render?: (props: SimpleUploadRenderProps) => React.ReactNode;\n variant?: \"default\" | \"custom\";\n wrapperProps?: React.HTMLAttributes<HTMLDivElement>;\n}\n\nconst SimpleUpload = ({\n children,\n className,\n buttonProps,\n render,\n wrapperProps,\n}: SimpleUploadProps) => {\n const {\n openFileDialog,\n getInputProps,\n getRootProps,\n acceptedFiles,\n isFocused,\n errorMessage,\n } = useFileUpload();\n\n // Check if there's any error (validation or file upload error)\n const hasError = !!errorMessage;\n\n // If children are provided, render custom UI\n if (children) {\n return (\n <div className={className} onClick={openFileDialog} {...wrapperProps}>\n <input {...getInputProps()} />\n {children}\n </div>\n );\n }\n\n // If render prop is provided, render custom component\n if (render) {\n return (\n <div\n className={className}\n {...getRootProps()}\n onClick={(e) => {\n e.stopPropagation();\n openFileDialog();\n }}\n {...wrapperProps}\n >\n <input {...getInputProps()} />\n {typeof render === \"function\"\n ? render({\n acceptedFiles,\n isFocused,\n openFileDialog,\n })\n : render}\n </div>\n );\n }\n\n // Default button UI\n return (\n <div className={`flex items-center gap-2 ${className}`} {...wrapperProps}>\n <input {...getInputProps()} />\n\n <Button\n type=\"button\"\n onClick={openFileDialog}\n {...buttonProps}\n className={`${hasError ? \"border-input-border-destructiveDefault hover:border-input-border-destructiveHover\" : \"border-input-border-primaryDefault hover:border-input-border-primaryHover\"} text-body-sm! flex w-full items-center justify-start gap-2 rounded-lg border px-3 py-2 shadow-none`}\n >\n <p className=\"text-element-inverse-default! w-[77px] font-semibold\">\n Choose file\n </p>\n <p className=\"text-element-inverse-disabled\">No file chosen</p>\n </Button>\n </div>\n );\n};\n\ninterface DropZoneRenderProps {\n isDragging: boolean;\n isDragAccept: boolean;\n isDragReject: boolean;\n acceptedFiles: File[];\n isFocused: boolean;\n openFileDialog: () => void;\n}\n\ninterface DropZoneProps {\n children?: React.ReactNode;\n className?: string;\n render?: (props: DropZoneRenderProps) => React.ReactNode;\n variant?: \"default\" | \"custom\";\n wrapperProps?: React.HTMLAttributes<HTMLDivElement>;\n fileSizeLimit?: number;\n}\n\n// Modify DropZone component\nconst DropZone = ({\n children,\n className,\n render,\n variant = \"default\",\n wrapperProps,\n // fileSizeLimit = FILE_SIZE_LIMIT_MB,\n}: DropZoneProps) => {\n const {\n getRootProps,\n getInputProps,\n isDragActive,\n isDragAccept,\n isDragReject,\n acceptedFiles,\n isFocused,\n openFileDialog,\n errorMessage,\n } = useFileUpload();\n\n // Check if there's any error (validation or file upload error)\n const hasError = !!errorMessage;\n\n // If children are provided, render custom UI\n if (children) {\n return (\n <div\n {...getRootProps()}\n className={`cursor-pointer ${className}`}\n {...wrapperProps}\n >\n <input {...getInputProps()} />\n {children}\n </div>\n );\n }\n\n // If render prop is provided, use custom render function\n if (render) {\n return (\n <div\n {...getRootProps()}\n className={`cursor-pointer ${className}`}\n {...wrapperProps}\n >\n <input {...getInputProps()} />\n {render({\n isDragging: isDragActive,\n isDragAccept,\n isDragReject,\n acceptedFiles,\n isFocused,\n openFileDialog,\n })}\n </div>\n );\n }\n\n // Custom variant\n if (variant === \"custom\") {\n return (\n <div\n {...getRootProps()}\n className={`cursor-pointer rounded-lg border-2 border-dashed p-8 transition-colors ${\n hasError\n ? \"border-input-border-destructiveHover\"\n : isDragActive\n ? \"border-primary bg-primary/5\"\n : \"hover:border-primary/50 border-gray-300\"\n } ${className}`}\n {...wrapperProps}\n >\n <input {...getInputProps()} />\n <div className=\"space-y-4 text-center\">\n <div className=\"bg-primary/10 mx-auto w-fit rounded-full p-4\">\n <FilePlus className=\"text-primary size-8\" />\n </div>\n <div className=\"space-y-2\">\n <p className=\"text-xl font-medium\">\n {isDragActive ? \"Drop files here\" : \"Drag & Drop files\"}\n </p>\n <p className=\"text-muted-foreground text-sm\">\n or click to select files\n </p>\n </div>\n </div>\n </div>\n );\n }\n\n // Default variant\n return (\n <div\n {...getRootProps()}\n className={`border-stroke-inverse-slate-04 rounded-unit-corner-radius-5xl cursor-pointer border border-dashed p-10 transition-colors focus:outline-none ${\n hasError\n ? \"border-input-border-destructiveHover\"\n : isDragActive\n ? \"border-blue-500 bg-gray-600\"\n : \"bg-fill-inverse-slate-03 hover:bg-fill-inverse-slate-04\"\n } ${className}`}\n {...wrapperProps}\n >\n <input {...getInputProps()} />\n <div className=\"text-muted-foreground w-full space-y-5 text-center\">\n <File className=\"mx-auto size-[44px]\" />\n <p\n className={`text-body-sm leading-body-sm ${isDragActive ? \"text-gray-100\" : \"text-element-inverse-default\"}`}\n >\n {isDragActive ? \"Drop the file here...\" : \"Drag and Drop files here\"}\n </p>\n <div className=\"gap-unit-10px flex w-full items-center justify-center\">\n <Separator className=\"border-stroke-inverse-slate-03 max-w-[60px] flex-1\" />\n <p className=\"text-caption leading-caption text-element-inverse-disabled font-medium\">\n OR\n </p>\n <Separator className=\"border-stroke-inverse-slate-03 max-w-[60px] flex-1\" />\n </div>\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"mx-auto\"\n onClick={(e) => {\n // Prevent the click from also triggering the dropzone root onClick,\n // which causes the file picker to open twice.\n e.stopPropagation();\n openFileDialog();\n }}\n >\n Browse file\n </Button>\n </div>\n </div>\n );\n};\n\nconst FileList = () => {\n const { acceptedFiles, handleRemoveFile } = useFileUpload();\n\n if (acceptedFiles.length === 0) return null;\n\n return (\n <ul className=\"mb-1 space-y-1\">\n {acceptedFiles.map((file) => (\n <li\n key={file.name}\n className=\"border-input-border-primaryDefault hover:border-input-border-primaryHover flex h-9 items-center justify-between rounded-lg border px-3 py-2\"\n >\n <div className=\"flex items-center gap-2\">\n <p className=\"text-text-default w-[77px] font-semibold\">Selected</p>\n <p>{truncateFileNameMid(file.name)}</p>\n <p className=\"text-caption text-text-inactive\">\n {file.size < 1024 * 1024\n ? `${(file.size / 1024).toFixed(2)}KB`\n : `${(file.size / 1024 / 1024).toFixed(2)}MB`}\n </p>\n </div>\n <button\n onClick={() => handleRemoveFile(file.name)}\n className=\"hover:bg-button-bg-outlineHover cursor-pointer rounded\"\n >\n <XIcon className=\"text-icon-default size-4\" />\n </button>\n </li>\n ))}\n </ul>\n );\n};\n\nconst ErrorMessage = () => {\n const { errorMessage } = useFileUpload();\n\n if (!errorMessage) return null;\n\n return <p className=\"text-text-destructive mt-2 text-sm\">{errorMessage}</p>;\n};\n\nFileUpload.DropZone = DropZone;\nFileUpload.SimpleUpload = SimpleUpload;\nFileUpload.FileList = FileList;\nFileUpload.ErrorMessage = ErrorMessage;\n\nexport { FileUpload };\n\nexport type FieldProps = {\n name: string;\n label?: string;\n isMultiple?: boolean;\n maxFiles?: number;\n children?: React.ReactNode;\n};\n\nexport const FileUploadField = ({\n field,\n CustomFileList,\n onChange,\n value,\n fileSizeLimit = FILE_SIZE_LIMIT_MB, // in MB\n acceptedFileTypes = ACCEPTED_FILE_TYPES,\n ...props\n}: {\n field: {\n name: string;\n isMultiple?: boolean;\n maxFiles?: number;\n children?: React.ReactNode;\n };\n CustomFileList?: React.ComponentType;\n onChange?: (files: File[] | File | null) => void;\n value?: File[] | File;\n fileSizeLimit?: number; // in MB\n acceptedFileTypes?: Record<string, string[]>;\n // Add react-hook-form field props\n name?: string;\n onBlur?: () => void;\n disabled?: boolean;\n hasValidationError?: boolean;\n} & Omit<React.ComponentProps<typeof FileUpload>, \"onDrop\" | \"children\">) => {\n return (\n <FileUpload\n onDrop={(acceptedFiles) => {\n if (onChange) {\n onChange(field.isMultiple ? acceptedFiles : acceptedFiles[0]);\n }\n }}\n isMultiple={field.isMultiple}\n maxFiles={field.maxFiles}\n CustomFileList={CustomFileList}\n fileSizeLimit={fileSizeLimit}\n acceptedFileTypes={acceptedFileTypes}\n value={value}\n onChange={onChange}\n hasValidationError={props.hasValidationError}\n {...props}\n >\n {field.children || (\n <FileUpload.DropZone fileSizeLimit={fileSizeLimit} />\n ) || <FileUpload.SimpleUpload />}\n </FileUpload>\n );\n};\n\nFileUploadField.SimpleUpload = SimpleUpload;\nFileUploadField.DropZone = DropZone;\nFileUploadField.FileList = FileList;\nFileUploadField.ErrorMessage = ErrorMessage;\n","import { cn } from \"@/utils\";\n\nexport interface GradientContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n}\n\nexport function GradientContainer(props: GradientContainerProps) {\n const { className, children, ...rest } = props;\n return (\n <div\n className={cn(\"gradient-bg flex px-[2.3px] py-[2px]\", className)}\n {...rest}\n >\n {children}\n </div>\n );\n}\n\nGradientContainer.Background = function GradientContainerBackground(\n props: React.HTMLAttributes<HTMLDivElement>,\n) {\n const { className, ...rest } = props;\n return (\n <div\n className={cn(\"bg-fill-background h-full w-full\", className)}\n {...rest}\n />\n );\n};\n","import { cn } from \"@/utils\";\n\ninterface GridProps extends React.ComponentProps<\"div\"> {\n children: React.ReactNode;\n}\nexport default function Grid({ children, className, ...props }: GridProps) {\n return (\n <div className={cn(\"grid grid-cols-3 gap-4\", className)} {...props}>\n {children}\n </div>\n );\n}\n","import { cn } from \"@/utils\";\nimport type { CSSProperties, ReactNode } from \"react\";\nimport IconContainer from \"@/ui/IconContainer\";\n\n// Helper function to convert hex to RGB\nfunction hexToRgb(hex: string): [number, number, number] {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result\n ? [\n parseInt(result[1], 16),\n parseInt(result[2], 16),\n parseInt(result[3], 16),\n ]\n : [0, 0, 0];\n}\n\n// Color map with hex values (from design tokens 500 shade)\nconst COLOR_MAP = {\n red: { hex: \"#ef4444\", class: \"element-static-red\" },\n orange: { hex: \"#f97316\", class: \"element-static-orange\" },\n amber: { hex: \"#f59e0b\", class: \"element-static-amber\" },\n yellow: { hex: \"#eab308\", class: \"element-static-yellow\" },\n lime: { hex: \"#84cc16\", class: \"element-static-lime\" },\n green: { hex: \"#22c55e\", class: \"element-static-green\" },\n emerald: { hex: \"#10b981\", class: \"element-static-emerald\" },\n teal: { hex: \"#14b8a6\", class: \"element-static-teal\" },\n cyan: { hex: \"#06b6d4\", class: \"element-static-cyan\" },\n sky: { hex: \"#0ea5e9\", class: \"element-static-sky\" },\n blue: { hex: \"#3b82f6\", class: \"element-static-blue\" },\n indigo: { hex: \"#6366f1\", class: \"element-static-indigo\" },\n violet: { hex: \"#8b5cf6\", class: \"element-static-violet\" },\n purple: { hex: \"#a855f7\", class: \"element-static-purple\" },\n fuchsia: { hex: \"#d946ef\", class: \"element-static-fuchsia\" },\n pink: { hex: \"#ec4899\", class: \"element-static-pink\" },\n rose: { hex: \"#f43f5e\", class: \"element-static-rose\" },\n slate: { hex: \"#64748b\", class: \"element-static-slate\" },\n} as const;\n\n// Size configuration map\nconst SIZE_CONFIG = {\n 26: { iconSize: \"xs\" as const, backgroundScale: 1.5, borderRadius: 10 },\n 32: { iconSize: \"sm\" as const, backgroundScale: 1.8, borderRadius: 12 },\n 40: { iconSize: \"lg\" as const, backgroundScale: 1.5, borderRadius: 16 },\n 48: { iconSize: \"xl\" as const, backgroundScale: 1.6, borderRadius: 20 },\n 56: { iconSize: \"2xl\" as const, backgroundScale: 1.7, borderRadius: 20 },\n 64: { iconSize: \"3xl\" as const, backgroundScale: 1.6, borderRadius: 24 },\n} as const;\n\ntype ColorVariant = keyof typeof COLOR_MAP;\ntype SizeVariant = keyof typeof SIZE_CONFIG;\n\nexport type IconProfileProps = {\n /** The icon component to display */\n icon: ReactNode;\n /** Color variant for background glow and icon */\n color?: ColorVariant;\n /** Size variant in pixels */\n size?: SizeVariant;\n /** Additional className for the root container */\n className?: string;\n /** Whether the icon is external */\n externalIcon?: boolean;\n};\n\nexport default function IconProfile({\n icon,\n color = \"red\",\n size = 64,\n className,\n externalIcon = false,\n}: IconProfileProps) {\n const colorConfig = COLOR_MAP[color];\n const sizeConfig = SIZE_CONFIG[size];\n const [r, g, b] = hexToRgb(colorConfig.hex);\n const colorClass = `text-${colorConfig.class}`;\n\n return (\n <div\n className={cn(\"relative\", colorClass, className)}\n style={\n {\n \"--icon-profile-color\": `var(--color-${colorConfig.class}, rgb(${r}, ${g}, ${b}))`,\n } as CSSProperties\n }\n >\n <div\n className=\"relative isolate flex items-center justify-center\"\n style={{ width: size, height: size }}\n >\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <div\n className=\"pointer-events-none absolute inset-0\"\n style={{\n borderRadius: `${sizeConfig.borderRadius}px`,\n background: `radial-gradient(circle at 50% 35%, rgba(${r}, ${g}, ${b}, 0.35) 0%, rgba(${r}, ${g}, ${b}, 0.22) 45%, rgba(${r}, ${g}, ${b}, 0) 80%)`,\n }}\n />\n <div\n className=\"pointer-events-none absolute inset-0\"\n style={{\n borderRadius: `${sizeConfig.borderRadius}px`,\n backgroundColor: `rgba(${r}, ${g}, ${b}, 0.2)`,\n transformOrigin: \"center center\",\n }}\n />\n </div>\n\n <div\n className=\"absolute inset-0\"\n style={{\n borderRadius: `${sizeConfig.borderRadius}px`,\n boxShadow:\n \"var(--unit-blur-none, 0) var(--unit-blur-xs, 16px) var(--unit-blur-md, 40px) var(--unit-blur-none, 0) var(--opacity-static-01, rgba(0, 0, 0, 0.08))\",\n backdropFilter: \"blur(calc(var(--unit-blur-xl, 72px) / 2))\",\n }}\n />\n\n <div className=\"absolute inset-0 z-10 flex items-center justify-center\">\n <IconContainer\n colorInFill={false}\n size={sizeConfig.iconSize}\n className={cn(\n !externalIcon ? \"[&_path]:!fill-[var(--iconColor)]\" : \"\",\n )}\n style={\n {\n [\"--iconColor\"]: `var(--color-${colorConfig.class})`,\n } as CSSProperties & { [\"--iconColor\"]: string }\n }\n >\n {icon}\n </IconContainer>\n </div>\n </div>\n </div>\n );\n}\n","import { CheckCheck, Copy, X } from \"lucide-react\";\nimport * as React from \"react\";\nimport { cn } from \"@/utils\";\n\ntype Props = React.ComponentProps<\"input\"> & {\n label?: string;\n error?: boolean;\n variant?: \"ghost\" | \"outline\";\n inlineItemsNode?: React.ReactNode;\n prefixNode?: {\n node: React.ReactNode;\n withBorder?: boolean;\n className?: string;\n };\n suffixNode?: {\n node: React.ReactNode;\n withBorder?: boolean;\n className?: string;\n };\n includeCopy?: boolean;\n includeClear?: boolean;\n inputClassName?: string;\n};\n\nexport const Input = ({\n className,\n type = \"text\",\n label,\n variant = \"outline\",\n prefixNode,\n suffixNode,\n inlineItemsNode,\n includeCopy = false,\n includeClear = false,\n inputClassName,\n ...props\n}: Props) => {\n const [showCopy, setShowCopy] = React.useState(false);\n const [onFocus, setOnFocus] = React.useState(false);\n const [showClear, setShowClear] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const error = props[\"aria-invalid\"] || false;\n\n function handleClear(e: React.MouseEvent) {\n e.preventDefault();\n props.onChange?.({\n target: { value: \"\" },\n } as React.ChangeEvent<HTMLInputElement>);\n }\n\n const mutatedProps: React.ComponentProps<\"input\"> = {\n ...props,\n onBlur: (e) => {\n if (props.disabled) return;\n props.onBlur && props.onBlur(e);\n setOnFocus(false);\n },\n };\n\n return (\n <div\n onMouseEnter={() => {\n if (props.disabled) return;\n setShowClear(true);\n if (!onFocus) {\n setShowCopy(true);\n }\n }}\n onMouseLeave={() => {\n if (props.disabled) return;\n setShowClear(false);\n setShowCopy(false);\n }}\n className={cn(\n \"group text-element-inverse-default placeholder:text-element-inverse-disabled relative flex min-h-10 w-full items-center\",\n \"rounded-unit-corner-radius-xl min-w-0 border transition-[color,box-shadow]\",\n {\n /* Outline State */\n \"hover:border-stroke-static-slate-04 border-stroke-inverse-slate-03 bg-input-outline-enabled hover:bg-input-outline-hovered\":\n variant === \"outline\" && !error,\n\n /* Outline On Focus */\n \"focus-within:hover:border-stroke-static-blue-03 focus-within:border-stroke-static-blue-03 focus-within:ring-0 focus-within:outline-none\":\n variant === \"outline\" && !error,\n\n /* Ghost State */\n \"hover:bg-input-ghost-hovered bg-input-ghost-enabled border-transparent\":\n variant === \"ghost\" && !error,\n\n /* Error State */\n \"border-stroke-inverse-red-01 hover:border-stroke-inverse-red-02 text-element-inverse-red\":\n error && !props.disabled,\n\n /* Error On Focus */\n // \"focus-within:border-input-border-destructiveHover focus-within:ring-effect-ring-destructive text-text-destructive focus-within:ring-2\":\n error,\n\n /* Disable State */\n \"text-element-inverse-disabled pointer-events-none cursor-not-allowed\":\n props.disabled,\n\n \"bg-input-outline-disabled border-stroke-inverse-slate-03\":\n props.disabled && variant === \"outline\",\n \"bg-input-ghost-disabled\": props.disabled && variant === \"ghost\",\n },\n className\n )}\n >\n {type === \"url\" && (\n <div className=\"border-border-primary-light flex h-full items-center justify-center border-r px-3\">\n <p className=\"text-body-sm leading-body-sm text-text-inactive font-medium\">\n https://\n </p>\n </div>\n )}\n\n {prefixNode && (\n <div\n className={cn(\n {\n \"border-border-primary-light hover:bg-surface-bg flex h-full cursor-pointer items-center justify-center overflow-x-auto rounded-l-lg border-r\":\n prefixNode.withBorder,\n \"pl-3\": !prefixNode.withBorder && !inlineItemsNode,\n },\n prefixNode.className\n )}\n >\n {prefixNode.node}\n </div>\n )}\n\n <div\n className={cn(\"relative h-full w-full\", {\n \"flex flex-wrap items-center\": inlineItemsNode,\n })}\n >\n {inlineItemsNode}\n <input\n ref={inputRef}\n type={type}\n id={props.id + (label || \"\")}\n onFocus={() => {\n if (props.disabled) return;\n setOnFocus(true);\n setShowCopy(false);\n }}\n data-slot=\"input\"\n className={cn(\n \"peer leading-body-sm text-medium text-body-sm flex h-full w-full appearance-none rounded-lg bg-transparent px-2.5 py-1.5 font-medium outline-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\",\n \"selection:bg-primary-bg-light selection:text-text-default\",\n \"placeholder:text-body-sm placeholder:leading-body-sm placeholder:text-text-inactive placeholder:font-medium\",\n inputClassName,\n\n {\n \"rounded-l-none pl-2\": prefixNode,\n \"rounded-r-none pr-2\": suffixNode,\n \"text-text-secondary\": type === \"email\",\n \"text-text-destructive\": error,\n \"mx-1 inline-block h-auto w-full rounded-lg\": inlineItemsNode,\n }\n )}\n {...mutatedProps}\n value={props.value}\n />\n {props.value && (\n <div className=\"absolute top-0 right-2 flex h-full items-center gap-2 peer-disabled:hidden\">\n {includeCopy && (\n <button\n tabIndex={-1}\n data-showcopy={showCopy}\n className=\"hover:bg-primary-bg-soft flex h-[20px] w-[20px] items-center justify-center rounded-sm bg-white opacity-0 transition-opacity duration-200 data-[showCopy=true]:opacity-100\"\n >\n <CopyIcon value={props.value as string} />\n </button>\n )}\n\n {includeClear && (\n <button\n tabIndex={-1}\n data-showclear={showClear}\n className=\"hover:bg-primary-bg-soft flex h-[20px] w-[20px] items-center justify-center rounded-sm bg-white opacity-0 transition-opacity duration-200 data-[showClear=true]:opacity-100\"\n >\n <X\n onClick={(e) => {\n handleClear(e);\n }}\n className=\"cursor-pointer\"\n size={18}\n />\n </button>\n )}\n </div>\n )}\n </div>\n\n {suffixNode && (\n <div\n className={cn(\n {\n \"border-border-primary-light hover:bg-surface-bg flex h-full cursor-pointer items-center justify-center rounded-r-lg border-l\":\n suffixNode.withBorder,\n \"pr-3\": !suffixNode.withBorder,\n },\n suffixNode.className\n )}\n >\n {suffixNode.node}\n </div>\n )}\n </div>\n );\n};\n\nfunction CopyIcon({ value }: { value: string }) {\n const [isCopy, setIsCopy] = React.useState(false);\n\n function handleCopy(e: React.MouseEvent) {\n e.preventDefault();\n try {\n navigator.clipboard.writeText(value as string);\n setIsCopy(true);\n\n setTimeout(() => {\n setIsCopy(false);\n }, 1200);\n } catch (error) {\n setIsCopy(false);\n console.error(error);\n }\n }\n\n return (\n <>\n {!isCopy ? (\n <Copy className=\"cursor-pointer\" onClick={handleCopy} size={18} />\n ) : (\n <CheckCheck className=\"cursor-pointer\" size={18} />\n )}\n </>\n );\n}\n","import { cn } from \"@/utils\";\nimport IconContainer from \"@/ui/IconContainer\";\n\ninterface LinkButtonProps extends Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n \"prefix\" | \"suffix\"\n> {\n children: React.ReactNode;\n href: string;\n isLink?: boolean;\n prefixIcon?: React.ReactNode;\n suffixIcon?: React.ReactNode;\n}\n\nexport default function LinkButton({\n children,\n href,\n isLink = true,\n prefixIcon,\n suffixIcon,\n className,\n ...props\n}: LinkButtonProps) {\n const onClickInternalLink = () => {\n window.open(href, \"_blank\");\n };\n\n return (\n <button\n aria-label={`Open ${href}`}\n role=\"link\"\n type=\"button\"\n className={cn(\n \"text-body-sm text-element-inverse-blue [&>path]:fill-element-inverse-blue gap-x-unit-4px leading-body-sm flex cursor-pointer items-center font-medium underline hover:underline\",\n className,\n )}\n onClick={isLink ? onClickInternalLink : props.onClick}\n {...props}\n >\n {prefixIcon && (\n <IconContainer className=\"[&_path]:fill-element-inverse-blue shrink-0\">\n {prefixIcon}\n </IconContainer>\n )}\n <div className=\"inherit\">{children}</div>\n {suffixIcon && (\n <IconContainer className=\"[&_path]:fill-element-inverse-blue shrink-0\">\n {suffixIcon}\n </IconContainer>\n )}\n </button>\n );\n}\n","import {\n APIProvider,\n Map as GoogleMap,\n AdvancedMarker,\n InfoWindow,\n Pin,\n} from \"@vis.gl/react-google-maps\";\nimport { useState, useCallback } from \"react\";\nimport { cn } from \"@/utils\";\n\nexport interface MapMarker {\n lat: number;\n lng: number;\n title?: string;\n description?: string;\n color?: string;\n}\n\nexport interface MapProps {\n apiKey: string;\n center?: { lat: number; lng: number };\n zoom?: number;\n markers?: MapMarker[];\n mapId?: string;\n height?: string;\n width?: string;\n className?: string;\n gestureHandling?: \"cooperative\" | \"greedy\" | \"none\" | \"auto\";\n disableDefaultUI?: boolean;\n onMarkerClick?: (marker: MapMarker, index: number) => void;\n}\n\nfunction MarkerWithInfo({\n marker,\n index,\n onMarkerClick,\n}: {\n marker: MapMarker;\n index: number;\n onMarkerClick?: (marker: MapMarker, index: number) => void;\n}) {\n const [open, setOpen] = useState(false);\n\n const handleClick = useCallback(() => {\n setOpen((prev) => !prev);\n onMarkerClick?.(marker, index);\n }, [marker, index, onMarkerClick]);\n\n return (\n <AdvancedMarker\n position={{ lat: marker.lat, lng: marker.lng }}\n title={marker.title}\n onClick={handleClick}\n >\n {marker.color && (\n <Pin\n background={marker.color}\n borderColor={marker.color}\n glyphColor=\"#fff\"\n />\n )}\n\n {open && (marker.title || marker.description) && (\n <InfoWindow\n position={{ lat: marker.lat, lng: marker.lng }}\n onCloseClick={() => setOpen(false)}\n >\n <div className=\"max-w-xs\">\n {marker.title && (\n <h3 className=\"text-body-sm font-semibold\">{marker.title}</h3>\n )}\n {marker.description && (\n <p className=\"text-body-sm text-element-inverse-gray mt-1\">\n {marker.description}\n </p>\n )}\n </div>\n </InfoWindow>\n )}\n </AdvancedMarker>\n );\n}\n\nconst DEFAULT_CENTER = { lat: 16.8661, lng: 96.1951 };\n\nexport function GoogleMapView({\n apiKey,\n center = DEFAULT_CENTER,\n zoom = 12,\n markers = [],\n mapId,\n height = \"400px\",\n width = \"100%\",\n className,\n gestureHandling = \"cooperative\",\n disableDefaultUI = false,\n onMarkerClick,\n}: MapProps) {\n return (\n <APIProvider apiKey={apiKey}>\n <div\n className={cn(\"overflow-hidden rounded-unit-corner-radius-xl\", className)}\n style={{ height, width }}\n >\n <GoogleMap\n defaultCenter={center}\n defaultZoom={zoom}\n mapId={mapId}\n gestureHandling={gestureHandling}\n disableDefaultUI={disableDefaultUI}\n style={{ width: \"100%\", height: \"100%\" }}\n >\n {markers.map((marker, i) => (\n <MarkerWithInfo\n key={`${marker.lat}-${marker.lng}-${i}`}\n marker={marker}\n index={i}\n onMarkerClick={onMarkerClick}\n />\n ))}\n </GoogleMap>\n </div>\n </APIProvider>\n );\n}\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { Pause, Play } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\nimport IconButton from \"@/ui/IconButton\";\n\nexport interface MediaProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof mediaVariants> {\n src: string;\n alt?: string;\n type?: \"image\" | \"video\";\n aspectRatio?: \"1:1\" | \"16:9\" | \"9:16\" | \"4:3\" | \"3:4\";\n showPlayButton?: boolean;\n onPlay?: () => void;\n onPause?: () => void;\n isPlaying?: boolean;\n loading?: \"lazy\" | \"eager\";\n objectFit?: \"cover\" | \"contain\" | \"fill\" | \"scale-down\" | \"none\";\n}\n\nconst mediaVariants = cva(\n \"relative overflow-hidden bg-gray-100 dark:bg-gray-800\",\n {\n variants: {\n aspectRatio: {\n \"1:1\": \"aspect-square\",\n \"16:9\": \"aspect-video\",\n \"9:16\": \"aspect-[9/16]\",\n \"4:3\": \"aspect-[4/3]\",\n \"3:4\": \"aspect-[3/4]\",\n },\n rounded: {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n xl: \"rounded-xl\",\n \"2xl\": \"rounded-2xl\",\n full: \"rounded-full\",\n },\n },\n defaultVariants: {\n aspectRatio: \"16:9\",\n rounded: \"md\",\n },\n },\n);\n\nconst Media = React.forwardRef<HTMLDivElement, MediaProps>(\n (\n {\n className,\n src,\n alt = \"\",\n type = \"image\",\n aspectRatio,\n showPlayButton = true,\n onPlay,\n onPause,\n isPlaying = false,\n loading = \"lazy\",\n objectFit = \"cover\",\n rounded,\n ...props\n },\n ref,\n ) => {\n const [isHovered, setIsHovered] = React.useState(false);\n const [imageLoaded, setImageLoaded] = React.useState(false);\n const [imageError, setImageError] = React.useState(false);\n const [videoPlaying, setVideoPlaying] = React.useState(false);\n const videoRef = React.useRef<HTMLVideoElement>(null);\n\n const handlePlay = (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (videoRef.current) {\n videoRef.current.play();\n setVideoPlaying(true);\n }\n if (onPlay) {\n onPlay();\n }\n };\n\n const handlePause = (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (videoRef.current) {\n videoRef.current.pause();\n setVideoPlaying(false);\n }\n if (onPause) {\n onPause();\n }\n };\n\n const handleVideoPlay = () => {\n setVideoPlaying(true);\n if (onPlay) {\n onPlay();\n }\n };\n\n const handleVideoPause = () => {\n setVideoPlaying(false);\n if (onPause) {\n onPause();\n }\n };\n\n // Sync external isPlaying prop with internal state\n React.useEffect(() => {\n if (type === \"video\" && videoRef.current) {\n if (isPlaying && videoRef.current.paused) {\n videoRef.current.play();\n } else if (!isPlaying && !videoRef.current.paused) {\n videoRef.current.pause();\n }\n }\n }, [isPlaying, type]);\n\n const handleImageLoad = () => {\n setImageLoaded(true);\n };\n\n const handleImageError = () => {\n setImageError(true);\n };\n\n return (\n <div\n ref={ref}\n className={cn(mediaVariants({ aspectRatio, rounded }), className)}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n {...props}\n >\n {type === \"image\" ? (\n <>\n <img\n src={src}\n alt={alt}\n loading={loading}\n onLoad={handleImageLoad}\n onError={handleImageError}\n className={cn(\n \"block h-full w-full transition-opacity duration-300\",\n {\n \"opacity-0\": !imageLoaded && !imageError,\n \"opacity-100\": imageLoaded,\n },\n )}\n style={{ objectFit }}\n />\n {!imageLoaded && !imageError && (\n <div className=\"absolute inset-0 flex items-center justify-center bg-gray-200 dark:bg-gray-700\">\n <div className=\"h-8 w-8 animate-spin rounded-full border-2 border-gray-300 border-t-gray-600\"></div>\n </div>\n )}\n {imageError && (\n <div className=\"absolute inset-0 flex items-center justify-center bg-gray-200 dark:bg-gray-700\">\n <div className=\"text-center text-gray-500\">\n <div className=\"text-2xl\">📷</div>\n <div className=\"text-sm\">Failed to load</div>\n </div>\n </div>\n )}\n </>\n ) : (\n <>\n <video\n ref={videoRef}\n src={src}\n className=\"block h-full w-full\"\n style={{ objectFit }}\n onPlay={handleVideoPlay}\n onPause={handleVideoPause}\n onEnded={() => setVideoPlaying(false)}\n preload=\"metadata\"\n />\n {showPlayButton && (\n <div\n className={cn(\n \"absolute inset-0 flex items-center justify-center bg-black/20 transition-all duration-200 hover:bg-black/30\",\n {\n \"opacity-100\": isHovered || videoPlaying,\n \"opacity-0\": !isHovered && !videoPlaying,\n },\n )}\n >\n <IconButton\n icon={\n videoPlaying ? (\n <Pause className=\"text-gray-900\" />\n ) : (\n <Play className=\"ml-1 text-gray-900\" />\n )\n }\n onClick={videoPlaying ? handlePause : handlePlay}\n varient=\"outline\"\n size=\"md\"\n rounded={true}\n aria-label={videoPlaying ? \"Pause video\" : \"Play video\"}\n className=\"!h-16 !w-16 !bg-white !shadow-lg transition-all duration-200 hover:!scale-110 hover:!shadow-xl\"\n />\n </div>\n )}\n </>\n )}\n </div>\n );\n },\n);\n\nMedia.displayName = \"Media\";\n\nexport { Media, mediaVariants };\n","import { cn } from \"@/utils\";\nimport { ChevronDown, CircleXIcon, X } from \"lucide-react\";\nimport * as React from \"react\";\nimport { Button } from \"@/ui/Button\";\nimport { Chip } from \"@/ui/Chip\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/ui/Popover\";\n\nexport interface Option {\n label: string;\n value: string;\n}\n\ninterface MultiSelectProps {\n options: Option[];\n selected: string[];\n onChange: (selected: string[]) => void;\n placeholder?: string;\n disabled?: boolean;\n createConfig?: {\n enabled: boolean;\n action: (inputValue: string) => Promise<void>;\n isLoading?: boolean;\n };\n className?: string;\n error?: boolean;\n}\n\nexport function MultiSelect({\n options,\n selected,\n onChange,\n placeholder = \"Select\",\n disabled = false,\n createConfig,\n className,\n error = false,\n}: MultiSelectProps) {\n const [open, setOpen] = React.useState(false);\n const [inputValue, setInputValue] = React.useState(\"\");\n const inputRef = React.useRef<HTMLInputElement>(null);\n const containerRef = React.useRef<HTMLDivElement>(null);\n\n const handleUnselect = (value: string) => {\n onChange(selected.filter((s) => s !== value));\n };\n\n const handleSelect = (value: string) => {\n if (!selected.includes(value)) {\n onChange([...selected, value]);\n }\n setInputValue(\"\");\n setTimeout(() => inputRef.current?.focus(), 0);\n };\n\n const handleCreate = async () => {\n if (\n inputValue.trim() &&\n !options.find(\n (option) =>\n option.value.toLowerCase() === inputValue.toLowerCase().trim(),\n )\n ) {\n try {\n await createConfig?.action?.(inputValue.trim());\n onChange([...selected, inputValue.trim()]);\n setInputValue(\"\");\n setTimeout(() => inputRef.current?.focus(), 0);\n } catch (error) {\n console.error(\"Failed to create item:\", error);\n }\n }\n };\n\n const handleKeyDown = async (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" && inputValue.trim()) {\n e.preventDefault();\n const existingOption = options.find(\n (option) =>\n option.label.toLowerCase() === inputValue.toLowerCase().trim(),\n );\n if (existingOption && !selected.includes(existingOption.value)) {\n handleSelect(existingOption.value);\n } else if (createConfig?.enabled) {\n await handleCreate();\n }\n } else if (e.key === \"Backspace\" && !inputValue && selected.length > 0) {\n e.preventDefault();\n handleUnselect(selected[selected.length - 1]);\n } else if (e.key === \"Escape\") {\n setOpen(false);\n inputRef.current?.blur();\n }\n };\n\n const filteredOptions = React.useMemo(() => {\n return options.filter(\n (option) =>\n option.label.toLowerCase().includes(inputValue.toLowerCase()) &&\n !selected.includes(option.value),\n );\n }, [options, inputValue, selected]);\n\n const canCreate =\n createConfig?.enabled &&\n inputValue.trim() &&\n !options.find(\n (option) =>\n option.value.toLowerCase() === inputValue.toLowerCase().trim(),\n ) &&\n !selected.includes(inputValue.trim());\n\n const handleInputFocus = () => {\n setOpen(true);\n };\n\n const handleContainerClick = (e: React.MouseEvent) => {\n e.preventDefault();\n inputRef.current?.focus();\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <div\n ref={containerRef}\n className={cn(\n \"border-input-border-primaryDefault text-text-default bg-input-bg-default text-body-sm hover:border-input-border-primaryHover flex min-h-9 w-full cursor-text items-center justify-between gap-1 rounded-lg border px-3 py-1 font-medium focus-within:[box-shadow:var(--ring-position-x,0px)_var(--ring-position-y,0px)_var(--ring-blur,0px)_var(--ring-spread-sm,1px)_var(--color-effect-ring-primary)]\",\n error &&\n \"border-input-border-destructiveDefault hover:border-input-border-destructiveHover focus-within:[box-shadow:var(--ring-position-x,0px)_var(--ring-position-y,0px)_var(--ring-blur,0px)_var(--ring-spread-sm,2px)_var(--color-effect-ring-destructive)]\",\n disabled &&\n \"bg-input-bg-inactive hover:border-input-border-primaryDefault text-text-inactive cursor-not-allowed\",\n className,\n )}\n onClick={handleContainerClick}\n >\n <div className=\"flex flex-1 flex-wrap items-center gap-1\">\n {selected.map((value) => {\n const option = options.find((opt) => opt.value === value);\n return (\n <Chip\n key={value}\n label={option?.label || value}\n onClick={(e) => {\n e.stopPropagation();\n handleUnselect(value);\n }}\n className={cn(\n disabled && \"pointer-events-none cursor-not-allowed\",\n )}\n >\n <X className=\"hover:text-destructive ml-1.5 h-3 w-3 cursor-pointer\" />\n </Chip>\n );\n })}\n <input\n ref={inputRef}\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onKeyDown={handleKeyDown}\n onFocus={handleInputFocus}\n placeholder={\n selected.length === 0\n ? createConfig?.enabled\n ? \"Select or create one\"\n : placeholder\n : \"\"\n }\n className=\"placeholder:text-muted-foreground min-w-[8rem] flex-1 bg-transparent outline-none\"\n disabled={disabled}\n />\n </div>\n {selected.length > 0 && (\n <CircleXIcon\n className=\"text-icon-default size-4.5 shrink-0\"\n onClick={() => onChange([])}\n />\n )}\n {!createConfig?.enabled && (\n <ChevronDown className=\"text-icon-default size-4.5 shrink-0\" />\n )}\n </div>\n </PopoverTrigger>\n <PopoverContent\n className=\"shadow-box w-[var(--radix-popover-trigger-width)] border-none bg-white p-2\"\n align=\"start\"\n >\n <div className=\"p-0\">\n <div className=\"max-h-[300px] overflow-y-auto\">\n {filteredOptions.length === 0 && !canCreate ? (\n <div className=\"py-6 text-center text-gray-500\">\n {inputValue ? \"No results found.\" : \"Start typing to search...\"}\n </div>\n ) : (\n <div className=\"flex flex-col gap-1.5 px-1.5 pt-1.5 pb-0.5\">\n {createConfig?.enabled && (\n <p className=\"text-text-default pb-0.5 font-semibold\">\n Select or create one\n </p>\n )}\n {filteredOptions.map((option) => (\n <Chip\n label={option.label}\n key={option.value}\n onClick={() => handleSelect(option.value)}\n className=\"rounded-md\"\n />\n ))}\n {canCreate && (\n <div\n onClick={async () => await handleCreate()}\n className=\"flex items-center justify-between\"\n >\n <Chip label={inputValue.trim()} className=\"rounded-md\" />\n <Button\n variant=\"ghost\"\n size=\"sm\"\n state={createConfig?.isLoading ? \"loading\" : \"default\"}\n >\n Create new\n </Button>\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n );\n}\n","import { cn } from \"@/utils\";\nimport {\n OTPInput as BaseOTPInput,\n OTPInputContext as BaseOTPInputContext,\n} from \"input-otp\";\nimport * as React from \"react\";\n\ntype OTPInputProps = Omit<\n React.ComponentProps<typeof InputOTP>,\n \"type\" | \"render\"\n> & {\n type?: 4 | 6 | 8;\n separate?: boolean;\n disabled?: boolean;\n className?: string;\n};\n\nexport function OTPInput({\n type = 4,\n separate = false,\n disabled = false,\n className,\n ...props\n}: OTPInputProps) {\n return (\n <div className={cn(className)}>\n <InputOTP disabled={disabled} className=\"w-full\" {...props}>\n <InputOTPGroup className=\"w-full\">\n {[...new Array(type / 2)].map((_, index) => (\n <InputOTPSlot\n className=\"w-full\"\n key={index}\n index={index}\n disabled={disabled}\n />\n ))}\n </InputOTPGroup>\n {separate && <InputOTPSeparator />}\n <InputOTPGroup className=\"w-full\">\n {[...new Array(type / 2)].map((_, index) => (\n <InputOTPSlot\n key={index}\n className=\"w-full\"\n index={index + type / 2}\n disabled={disabled}\n />\n ))}\n </InputOTPGroup>\n </InputOTP>\n </div>\n );\n}\n\nfunction InputOTP({\n className,\n containerClassName,\n ...props\n}: React.ComponentProps<typeof BaseOTPInput> & {\n containerClassName?: string;\n}) {\n return (\n <BaseOTPInput\n data-slot=\"input-otp\"\n containerClassName={cn(\"flex items-center gap-1\", containerClassName)}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n );\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn(\"flex items-center gap-1\", className)}\n {...props}\n />\n );\n}\n\nfunction InputOTPSlot({\n index,\n className,\n disabled = false,\n placeholder = \"0\",\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number;\n disabled?: boolean;\n placeholder?: string;\n}) {\n const inputOTPContext = React.useContext(BaseOTPInputContext);\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(\n \"text-text-default data-[active=true]:border-input-border-primaryHover border-input-border-primaryDefault data-[active=true]:ring-effect-ring-primary data-[active=true]:aria-invalid:ring-destructive/20 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive relative flex size-11 items-center justify-center rounded-2xl border font-bold transition-all outline-none data-[active=true]:z-10 data-[active=true]:ring-[2px]\",\n className,\n {\n \"bg-input-bg-inactive\": disabled,\n \"text-text-inactive\": !char,\n },\n )}\n {...props}\n >\n <span className=\"text-h6\">{char || placeholder}</span>\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"animate-caret-blink bg-foreground h-4 w-px duration-1000\" />\n </div>\n )}\n </div>\n );\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"input-otp-separator\" role=\"separator\" {...props}>\n <div className=\"bg-border-primary-normal h-0.5 w-2\" />\n </div>\n );\n}\n","import * as React from \"react\";\n\nimport { cn } from \"@/utils\";\nimport { Eye, EyeOff } from \"lucide-react\";\n\ntype Props = React.ComponentProps<\"input\"> & {\n label?: string;\n};\n\nexport const PasswordInput = React.memo(\n ({ type, label, className, ...props }: Props) => {\n const [showPassword, setShowPassword] = React.useState(false);\n\n const error = props[\"aria-invalid\"] || false;\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n return (\n <div\n className={cn(\n \"group relative flex items-center gap-2\",\n \"min-w-0 rounded-lg border transition-[color,box-shadow]\",\n {\n /* Default State */\n \"hover:border-input-border-primaryHover border-input-border-primaryDefault\":\n !error,\n\n /* Default On Focus */\n \"focus-within:ring-effect-ring-primary focus-within:border-input-border-primaryHover focus-within:ring-2 focus-within:outline-none\":\n !error,\n\n /* Error State */\n \"border-input-border-destructiveDefault hover:border-input-border-destructiveHover text-text-destructive\":\n error && !props.disabled,\n\n /* Error On Focus */\n \"focus-within:border-input-border-destructiveHover focus-within:ring-effect-ring-destructive text-text-destructive focus-within:ring-2\":\n error,\n\n /* Disable State */\n \"bg-input-bg-inactive text-text-inactive border-input-border-primaryDefault pointer-events-none cursor-not-allowed\":\n props.disabled,\n },\n )}\n >\n <input\n ref={inputRef}\n id={props.id + (label || \"\")}\n type={showPassword ? \"text\" : \"password\"}\n data-slot=\"input\"\n className={cn(\n \"leading-body-sm text-text-default md:text-body-sm flex h-full w-full rounded-lg bg-transparent py-2 pr-10 pl-3 text-sm font-medium outline-none\",\n \"selection:bg-primary selection:text-primary-foreground\",\n \"placeholder:text-body-sm placeholder:leading-body-sm placeholder:text-text-inactive placeholder:font-medium\",\n {\n \"text-text-destructive\": error,\n },\n className,\n )}\n {...props}\n value={props.value}\n onBlur={(e) => {\n if (props.disabled) return;\n props.onBlur?.(e);\n }}\n />\n <button\n tabIndex={-1}\n data-slot=\"show-password\"\n type=\"button\"\n onClick={() => setShowPassword(!showPassword)}\n aria-label={showPassword ? \"Hide password\" : \"Show password\"}\n className=\"hover:bg-primary-bg-soft absolute right-2 flex h-5 w-5 cursor-pointer items-center justify-center rounded-sm bg-white\"\n >\n {showPassword ? (\n <Eye size={16} className=\"text-element-inverse-default-alt\" />\n ) : (\n <EyeOff size={16} className=\"text-element-inverse-default-alt\" />\n )}\n </button>\n </div>\n );\n },\n);\n","import { cn } from \"@/utils\";\nimport { Label } from \"@/ui/Label\";\nimport type { RadioGroupProps } from \"@radix-ui/react-radio-group\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { CircleIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\ntype Option = {\n label: string | React.ReactNode;\n value: string;\n};\n\ninterface RadioProps extends Omit<\n React.ComponentProps<\n React.ForwardRefExoticComponent<\n RadioGroupProps & React.RefAttributes<HTMLDivElement>\n >\n >,\n \"onChange\" | \"onSelect\"\n> {\n onSelect?: (value: string) => void;\n options: Option[];\n}\n\nfunction Radio({ onSelect, options, ...props }: RadioProps) {\n return (\n <BaseRadioGroup {...props}>\n {options.map((option) => {\n return (\n <Label\n htmlFor={option.value}\n key={option.value}\n className=\"hover:bg-surface-bg flex cursor-pointer items-center gap-x-2 rounded-lg p-1.5\"\n >\n <BaseRadioGroupItem\n onClick={() => {\n onSelect?.(option.value.toString());\n }}\n id={option.value}\n value={option.value}\n />\n {option.label}\n </Label>\n );\n })}\n </BaseRadioGroup>\n );\n}\n\nexport { Radio };\n\nfunction BaseRadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={className}\n {...props}\n />\n );\n}\n\nfunction BaseRadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n \"border-border-primary-light group data-[state=checked]:border-border-secondary-normal data-[state=checked]:hover:border-border-secondary-dark bg-surface-bg-container hover:bg-primary-bg-soft text-primary 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:bg-input/30 aspect-square size-[20px] shrink-0 cursor-pointer rounded-full border-[2px] shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-0 disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"fill-check-box-and-radio-checked-enabled group-data-[state=checked]:hover:fill-check-box-and-radio-checked-hovered absolute top-1/2 left-1/2 size-[16px] -translate-x-1/2 -translate-y-1/2 stroke-none\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n}\n","import { cn } from \"@/utils\";\nimport { Input } from \"@/ui/Input\";\nimport { debounce } from \"lodash\";\nimport { SearchIcon } from \"lucide-react\";\nimport { useQueryState } from \"nuqs\";\nimport { useCallback, useEffect, useState } from \"react\";\n\ninterface SearchInputProps extends React.ComponentProps<typeof Input> {\n searchKey: string;\n placeholder?: string;\n debounceDelay?: number;\n className?: string;\n addToParam?: boolean;\n}\n\nexport function SearchInput({\n searchKey,\n placeholder = \"Search by...\",\n debounceDelay = 500,\n className,\n addToParam = true,\n ...props\n}: SearchInputProps) {\n const [search, setSearch] = useQueryState(searchKey, {\n defaultValue: \"\",\n });\n const [inputValue, setInputValue] = useState(search ?? \"\");\n\n const debouncedSetValue = useCallback(\n debounce((value: string | null) => {\n if (addToParam) {\n setSearch(value);\n } else {\n setInputValue(value ?? \"\");\n }\n }, debounceDelay),\n [debounceDelay, addToParam, setSearch],\n );\n\n useEffect(() => {\n debouncedSetValue(inputValue);\n return () => {\n debouncedSetValue.cancel();\n };\n }, [inputValue, debouncedSetValue]);\n\n return (\n <div className={cn(\"relative\", className)}>\n <Input\n onChange={(e) => {\n const value = e.target.value;\n setInputValue(value);\n }}\n placeholder={placeholder}\n prefixNode={{\n node: <SearchIcon className=\"text-element-inverse-default\" />,\n withBorder: false,\n }}\n value={inputValue}\n className={cn(\"border-stroke-inverse-slate-03 w-full\", className)}\n {...props}\n />\n </div>\n );\n}\n","\"use client\";\n\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/ui/Popover\";\nimport { cn } from \"@/utils\";\nimport { Check } from \"lucide-react\";\nimport * as React from \"react\";\nimport { Button } from \"@/ui/Button\";\n\ninterface SelectHoverProps {\n options: { label: string | React.ReactNode; value: string }[];\n placeholder?: string;\n value?: string;\n onChange?: (value: string) => void;\n className?: string;\n}\n\nexport function SelectHover({\n options,\n placeholder = \"Select an option\",\n value,\n onChange,\n className,\n}: SelectHoverProps) {\n const [isOpen, setIsOpen] = React.useState(false);\n const timeoutRef = React.useRef<NodeJS.Timeout | null>(null);\n\n const handleSelect = (optionValue: string) => {\n onChange?.(optionValue);\n setIsOpen(false);\n };\n\n const selectedOption = options.find((option) => option.value === value);\n\n const handleMouseEnter = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n setIsOpen(true);\n };\n\n const handleMouseLeave = () => {\n timeoutRef.current = setTimeout(() => {\n setIsOpen(false);\n }, 300);\n };\n\n return (\n <Popover open={isOpen} onOpenChange={setIsOpen}>\n <div onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave}>\n <PopoverTrigger asChild>\n <Button role=\"combobox\" aria-expanded={isOpen} className={className}>\n <span className=\"truncate\">\n {selectedOption ? selectedOption.label : placeholder}\n </span>\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className=\"bg-surface-bg-container w-full rounded-3xl border-none p-2 shadow-md\"\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <div className=\"flex max-h-[300px] flex-col items-start gap-[2px] overflow-auto\">\n {options.map((option) => (\n <button\n key={option.value}\n className={cn(\n \"hover:bg-dropdown-bg-hover text-body-sm relative flex w-full cursor-pointer items-center rounded-lg p-[6px] outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n value === option.value && \"bg-dropdown-bg-hover\",\n )}\n onClick={() => handleSelect(option.value)}\n >\n <span className=\"flex-1\">{option.label}</span>\n {value === option.value && (\n <Check className=\"text-icon-secondary ml-2 h-4 w-4\" />\n )}\n </button>\n ))}\n </div>\n </PopoverContent>\n </div>\n </Popover>\n );\n}\n","import * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\ntype SelectRootProps = React.ComponentProps<typeof SelectPrimitive.Root> &\n Omit<React.HTMLAttributes<HTMLSelectElement>, \"onChange\">;\n\ninterface Props extends SelectRootProps {\n defaultValue: string | undefined;\n options: readonly {\n label: string;\n value: string;\n icon?: React.ReactNode;\n }[];\n onChange?: (value: string | undefined) => void;\n variant?: \"outline\" | \"ghost\";\n placeholder?: string;\n className?: string;\n withArrow?: boolean;\n contentProps?: React.ComponentProps<typeof SelectPrimitive.Content>;\n itemProps?: Omit<React.ComponentProps<typeof SelectPrimitive.Item>, \"value\">;\n}\n\nfunction SelectInput({\n defaultValue,\n options,\n variant = \"outline\",\n onChange,\n placeholder,\n className,\n withArrow = true,\n contentProps,\n itemProps,\n ...props\n}: Props) {\n return (\n <BaseSelect onValueChange={onChange} defaultValue={defaultValue} {...props}>\n <BaseSelectTrigger\n withArrow={withArrow}\n id={props.id}\n aria-invalid={props[\"aria-invalid\"]}\n className={cn(\"w-full cursor-pointer\", className)}\n variant={variant}\n >\n <BaseSelectValue\n className=\"flex-1\"\n placeholder={placeholder || \"Select\"}\n />\n </BaseSelectTrigger>\n <BaseSelectContent\n {...contentProps}\n className={cn(\n \"border-stroke-inverse-slate-02 border\",\n contentProps?.className\n )}\n >\n {options.map((option) => (\n <BaseSelectItem\n key={option.value}\n value={option.value}\n className={cn(itemProps?.className)}\n {...itemProps}\n >\n {option.icon}\n {option.label}\n </BaseSelectItem>\n ))}\n </BaseSelectContent>\n </BaseSelect>\n );\n}\n\nfunction BaseSelect({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\nfunction BaseSelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\nfunction BaseSelectTrigger({\n className,\n withArrow = true,\n size = \"default\",\n variant = \"outline\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\";\n variant?: \"outline\" | \"ghost\";\n withArrow?: boolean;\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"focus-visible:border-stroke-inverse-blue-02 focus-visible:bg-navigation-selected active:bg-navigation-selected active:border-stroke-inverse-blue-02 hover:bg-navigation-hovered cursor-pointer border border-transparent transition-all duration-300 active:border\",\n \"aria-invalid:border-stroke-inverse-red-01 aria-invalid:hover:border-stroke-inverse-red-02 aria-invalid:text-element-inverse-red!\",\n {\n \"bg-input-outline-enabled hover:bg-input-outline-hovered disabled:bg-input-outline-disabled border-stroke-inverse-slate-03 hover:border-stroke-inverse-slate-04 focus-within:border-stroke-inverse-slate-04 border\":\n variant === \"outline\",\n\n /* Invalid */\n\n /* Outline On Focus */\n \"focus-visible:hover:border-stroke-static-blue-03 focus-visible:border-stroke-static-blue-03 focus-within:outline-none\":\n variant === \"outline\",\n\n \"bg-input-ghost-enabled hover:bg-input-ghost-hovered disabled:bg-input-ghost-disabled\":\n variant === \"ghost\",\n },\n\n \"data-[placeholder]:text-element-inverse-disabled [&_svg:not([class*='text-'])]:text-element-inverse-disabled focus-visible:aria-invalid:border-input-border-destructiveHover text-body-sm rounded-unit-corner-radius-xl flex w-fit items-center justify-between gap-2 bg-transparent px-3 py-2 whitespace-nowrap transition-[color,box-shadow] outline-none disabled:cursor-not-allowed data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n {withArrow && (\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"text-icon-default size-4\" />\n </SelectPrimitive.Icon>\n )}\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction BaseSelectContent({\n className,\n children,\n position = \"popper\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"glass-effect data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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 rounded-unit-corner-radius-3xl relative z-[var(--z-popover)] max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto px-1 py-1 shadow-xs\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <BaseSelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <BaseSelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\n// function BaseSelectLabel({\n// className,\n// ...props\n// }: React.ComponentProps<typeof SelectPrimitive.Label>) {\n// return (\n// <SelectPrimitive.Label\n// data-slot=\"select-label\"\n// className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n// {...props}\n// />\n// );\n// }\n\nfunction BaseSelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"hover:bg-button-soft-hovered [&_svg:not([class*='text-'])]:text-text-inactive relative flex w-full cursor-pointer items-center gap-2 rounded-lg py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"text-icon-secondary size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n}\n\n// function BaseSelectSeparator({\n// className,\n// ...props\n// }: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n// return (\n// <SelectPrimitive.Separator\n// data-slot=\"select-separator\"\n// className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n// {...props}\n// />\n// );\n// }\n\nfunction BaseSelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n );\n}\n\nfunction BaseSelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n );\n}\n\nexport {\n // BaseSelectContent,\n // BaseSelectGroup,\n // BaseSelectItem,\n // BaseSelectLabel,\n // BaseSelectScrollDownButton,\n // BaseSelectScrollUpButton,\n // BaseSelectSeparator,\n // BaseSelectTrigger,\n // BaseSelectValue,\n SelectInput,\n};\n","import * as SheetPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />;\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SheetContent({\n className,\n showCloseButton = true,\n sheetOverlayClassName,\n children,\n side = \"right\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n sheetOverlayClassName?: string;\n showCloseButton?: boolean;\n}) {\n return (\n <SheetPortal>\n <SheetOverlay className={sheetOverlayClassName} />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"bg-fill-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n side === \"right\" &&\n \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\",\n side === \"left\" &&\n \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton ? (\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n ) : null}\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n );\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n );\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetFooter,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n};\n","import { cn } from \"@/utils\";\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\n \"bg-stroke-inverse-slate-03 animate-pulse rounded-md\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Skeleton };\n","import * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min, max],\n [value, defaultValue, min, max],\n );\n\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n \"relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\",\n className,\n )}\n {...props}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className={cn(\n \"bg-audioProgress-bg relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5\",\n )}\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className={cn(\n \"bg-audioProgress-item absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\",\n )}\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className=\"bg-audioProgress-item ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\"\n ></SliderPrimitive.Thumb>\n ))}\n </SliderPrimitive.Root>\n );\n}\n\nexport { Slider };\n","import { useTheme } from \"next-themes\";\nimport { Toaster as Sonner, type ToasterProps } from \"sonner\";\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme();\n\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n style={\n {\n \"--normal-bg\": \"var(--popover)\",\n \"--normal-text\": \"var(--popover-foreground)\",\n \"--normal-border\": \"var(--border)\",\n } as React.CSSProperties\n }\n {...props}\n />\n );\n};\n\nexport { Toaster };\n","import { cn } from \"@/utils\";\nimport { Label } from \"@/ui/Label\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport * as React from \"react\";\n\nfunction Switch({\n className,\n label,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & { label?: string }) {\n return (\n <div className=\"flex items-center space-x-2\">\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n id={props.id || label}\n className={cn(\n \"peer data-[state=checked]:bg-button-switch-on-enabled data-[state=checked]:hover:bg-button-switch-on-hovered data-[state=checked]:disabled:bg-button-switch-on-disabled data-[state=unchecked]:bg-button-switch-off-enabled data-[state=unchecked]:hover:bg-button-switch-off-hovered data-[state=unchecked]:disabled:bg-button-switch-off-disabled focus-visible:border-input-border-primaryHover focus-visible:ring-effect-ring-primary dark:data-[state=unchecked]:bg-input/80 inline-flex h-[20px] w-[34px] shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"bg-element-static-white dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-1px)] data-[state=unchecked]:translate-x-[1px]\",\n )}\n />\n </SwitchPrimitive.Root>\n {label && <Label htmlFor={props.id || label}>{label}</Label>}\n </div>\n );\n}\n\nexport { Switch };\n","import { cn } from \"@/utils\";\nimport { Loader2 as Spinner } from \"lucide-react\";\nimport { Badge } from \"@/ui/Badge\";\nimport { ProgressIndicator } from \"@/ui/ProgressIndicator\";\nimport {\n type ColumnDef,\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport { useHover } from \"@uidotdev/usehooks\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { AlertCircle } from \"lucide-react\";\nimport {\n IconsaxBriefcaseBold,\n MagickoAdd,\n MagickoCopy,\n MagickoCopySuccess,\n} from \"magick-icons\";\nimport * as React from \"react\";\nimport { useState } from \"react\";\nimport { Button } from \"@/ui/Button\";\nimport IconButton from \"@/ui/IconButton\";\nimport IconProfile from \"@/ui/IconProfile\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/ui/Popover\";\nimport { Text } from \"@/ui/Text\";\n\ntype TableProps<T> = {\n columns: ColumnDef<T, keyof T>[];\n tableData: T[];\n isLoading?: boolean;\n emptyState?: {\n emptyAction?: () => void;\n label: string;\n icon: React.ReactNode;\n };\n onRowClick?: (row: T) => void;\n};\n\nconst Table = <T,>({\n columns,\n tableData,\n isLoading = false,\n emptyState = {\n emptyAction: undefined,\n label: \"There is currently no data available to display in this table.\",\n icon: <IconProfile icon={<IconsaxBriefcaseBold />} color=\"teal\" />,\n },\n onRowClick,\n}: TableProps<T>) => {\n const table = useReactTable({\n data: tableData,\n columns,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getSortedRowModel: getSortedRowModel(),\n });\n\n const rowCount = table.getRowModel().rows.length;\n\n return (\n <div className=\"relative flex flex-col overflow-auto\">\n {isLoading ? (\n <div\n className={cn(\n rowCount === 0 ? \"\" : \"bg-gray-100 dark:bg-gray-700\",\n \"absolute top-10 left-0 w-full h-full min-h-[100px] opacity-70 z-10 flex items-center justify-center\"\n )}\n >\n <Spinner className=\"size-10 text-stroke-inverse-slate-04 \" />\n </div>\n ) : null}\n\n {!isLoading && rowCount === 0 ? (\n <div className=\"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 z-2\">\n <div className=\"flex flex-col items-center gap-4\">\n {emptyState?.icon}\n <Text>{emptyState?.label}</Text>\n {emptyState?.emptyAction ? (\n <Button\n variant={\"outline\"}\n prefix={\n <MagickoAdd className=\"[&_path]:fill-element-inverse-default\" />\n }\n onClick={() => emptyState?.emptyAction?.()}\n >\n Create new\n </Button>\n ) : null}\n </div>\n </div>\n ) : null}\n\n <div className=\"max-w-full flex-1 overflow-x-auto\">\n <table\n className=\"w-full caption-bottom text-sm\"\n style={{ minWidth: \"max-content\" }}\n >\n <thead className=\"bg-fill-inverse-slate-03\">\n {table.getHeaderGroups().map((headerGroup) => (\n <tr\n key={headerGroup.id}\n className=\"hover:bg-muted/50 border-stroke-inverse-slate-02 border-b transition-colors\"\n >\n {headerGroup.headers.map((header) => (\n <th\n key={header.id}\n className=\"text-muted-foreground h-12 px-4 text-left align-middle font-medium\"\n >\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n </th>\n ))}\n </tr>\n ))}\n </thead>\n <tbody className=\"relative\">\n {table.getRowModel().rows.map((row) => {\n return (\n <tr\n key={row.id}\n className=\"hover:bg-muted/50 bg-table-table-cell-unselected group/row border-stroke-inverse-slate-02 cursor-pointer border-b transition-colors\"\n onClick={() => onRowClick?.(row.original)}\n >\n {row.getVisibleCells().map((cell) => (\n <td key={cell.id} className=\"p-4\">\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext()\n )}\n </td>\n ))}\n </tr>\n );\n })}\n\n {rowCount === 0 &&\n Array.from({ length: 6 }).map((_, index) => (\n <tr key={index}>\n <td colSpan={columns.length} className=\"h-12 p-4\">\n <div className=\"\" />\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n};\n\n// PrimaryCell component with variants (no explicit default variant)\nconst primaryCellVariants = cva(\n \"flex items-center gap-2 text-body-sm text-element-inverse-default\",\n {\n variants: {\n variant: {\n badge: \"\",\n progress: \"\",\n error: \"text-element-inverse-red flex items-center gap-2\",\n },\n },\n }\n);\n\nexport interface PrimaryCellProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof primaryCellVariants> {\n children?: React.ReactNode;\n badgeContent?: React.ReactNode;\n badgeType?:\n | \"primary-hard\"\n | \"primary-soft\"\n | \"destructive-hard\"\n | \"destructive-soft\"\n | \"secondary-hard\"\n | \"secondary-soft\";\n badgeSize?: \"sm\" | \"md\";\n progressValue?: number;\n progressMax?: number;\n showProgressPercentage?: boolean;\n errorMessage?: string;\n hoverUI?: React.ReactNode;\n}\n\nconst PrimaryCell = React.forwardRef<HTMLDivElement, PrimaryCellProps>(\n (\n {\n variant,\n badgeContent,\n children,\n badgeType,\n badgeSize = \"sm\",\n progressValue,\n progressMax = 100,\n showProgressPercentage = false,\n errorMessage,\n hoverUI,\n ...props\n },\n ref\n ) => {\n let content: React.ReactNode = children;\n\n if (variant === \"badge\") {\n content = (\n <div className=\"flex items-center gap-2\">\n {children}\n {badgeContent && (\n <Badge type={badgeType} size={badgeSize}>\n {badgeContent}\n </Badge>\n )}\n </div>\n );\n } else if (variant === \"progress\") {\n content = (\n <>\n {progressValue !== 100 && (\n <ProgressIndicator\n variant=\"circle\"\n value={progressValue || 0}\n max={progressMax}\n showPercentage={showProgressPercentage}\n />\n )}\n {children && (\n <span className=\"text-body-sm text-element-inverse-default\">\n {children}\n </span>\n )}\n </>\n );\n } else if (variant === \"error\") {\n content = (\n <>\n <AlertCircle className=\"size-4 shrink-0\" />\n {errorMessage ? (\n <span className=\"text-body-sm\">{errorMessage}</span>\n ) : (\n children\n )}\n </>\n );\n }\n\n return (\n <div\n ref={ref}\n className={cn(primaryCellVariants({ variant }))}\n {...props}\n >\n <div className=\"flex min-w-0 flex-1 items-center gap-2\">{content}</div>\n {hoverUI && (\n <div className=\"ml-2 flex items-center gap-2 opacity-0 transition-opacity duration-200 group-hover/row:opacity-100\">\n {hoverUI}\n </div>\n )}\n </div>\n );\n }\n);\n\nPrimaryCell.displayName = \"PrimaryCell\";\n\n// Attach PrimaryCell as a compound component\nTable.PrimaryCell = PrimaryCell;\n\nconst TextCell = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & {\n text: string | number | undefined;\n copyable?: boolean;\n className?: string;\n }\n>(({ text, copyable = true, className, ...props }, ref) => {\n const [isCopied, setIsCopied] = useState(false);\n const [hoverRef, isHovering] = useHover();\n\n const handleCopy = () => {\n navigator.clipboard.writeText(text as string);\n setIsCopied(true);\n };\n\n React.useEffect(() => {\n if (isCopied) {\n setTimeout(() => {\n setIsCopied(false);\n }, 1200);\n }\n }, [isCopied]);\n\n return (\n <div className={cn(\"w-full h-full\", className)} ref={ref} {...props}>\n <div className=\"relative\" ref={hoverRef}>\n {copyable && isHovering && (\n <IconButton\n icon={\n isCopied ? (\n <MagickoCopySuccess\n className={cn(\n isCopied ? \"size-4 scale-115\" : \"size-4\",\n \"transition-all ease-in duration-200\"\n )}\n />\n ) : (\n <MagickoCopy className=\"size-4\" />\n )\n }\n className=\"absolute top-1/2 -right-3 -translate-y-1/2\"\n size=\"sm\"\n varient=\"soft\"\n onClick={handleCopy}\n />\n )}\n\n <Popover>\n <PopoverTrigger asChild>\n <Text className=\"truncate line-clamp-1\">{text ?? \"-\"}</Text>\n </PopoverTrigger>\n <PopoverContent className=\"\">\n <Text>{text ?? \"-\"}</Text>\n </PopoverContent>\n </Popover>\n </div>\n </div>\n );\n});\n\nTextCell.displayName = \"TextCell\";\nTable.TextCell = TextCell;\n\nexport default Table;\n","import * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport * as React from \"react\";\n\nimport { Badge } from \"@/ui/Badge\";\nimport { cn } from \"@/utils\";\n\nexport interface TabItem {\n value: string;\n label: string;\n content: React.ReactNode;\n notification?: boolean;\n count?: number;\n icon?: React.ReactNode;\n}\n\nexport interface TabItemWithoutContent {\n value: string;\n label: string;\n notification?: boolean;\n count?: number;\n icon?: React.ReactNode;\n onClick?: () => void;\n}\n\nfunction Tabs({\n defaultActiveTab,\n tabSmall,\n className,\n tabs,\n showContent = true,\n ...props\n}: {\n defaultActiveTab: string;\n tabSmall?: boolean;\n className?: string;\n notification?: boolean;\n showContent?: boolean;\n tabs: (TabItem | TabItemWithoutContent)[];\n} & React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <BaseTabs defaultValue={defaultActiveTab} className={className} {...props}>\n <BaseTabsList>\n {tabs.map((tab) => (\n <BaseTabsTrigger\n key={tab.value}\n tabSmall={tabSmall}\n value={tab.value}\n className=\"relative flex cursor-pointer items-center justify-center gap-x-2\"\n onClick={\n typeof tab === \"object\" && \"onClick\" in tab\n ? tab.onClick\n : undefined\n }\n >\n {tab.icon && <div>{tab.icon}</div>}\n {tab.label}\n {tab.notification && (\n <div className=\"bg-icon-destructive absolute top-1 right-1 size-1.5 rounded-full\" />\n )}\n {!!tab.count && <Badge type=\"primary-soft\">{tab.count}</Badge>}\n </BaseTabsTrigger>\n ))}\n </BaseTabsList>\n {showContent &&\n \"content\" in tabs[0] &&\n tabs.map((tab) => (\n <BaseTabsContent key={tab.value} value={tab.value}>\n {(tab as TabItem).content}\n </BaseTabsContent>\n ))}\n </BaseTabs>\n );\n}\n\n// Base components\nfunction BaseTabs({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n );\n}\n\nfunction BaseTabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(\n \"inline-flex min-h-9 w-fit flex-nowrap items-center justify-center gap-1.5 rounded-lg py-[3px]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction BaseTabsTrigger({\n className,\n tabSmall,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger> & {\n tabSmall?: boolean;\n}) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n \"dark:data-[state=active]:text-text-default focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 hover:!bg-tab-bg-hover dark:text-text-light data-[state=active]:after:bg-icon-default text-body-sm data-[state=active]:text-text-default text-text-light relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md px-2 py-1 font-sans font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:after:absolute data-[state=active]:after:right-0 data-[state=active]:after:-bottom-1.5 data-[state=active]:after:left-0 data-[state=active]:after:mx-auto data-[state=active]:after:h-0.5 data-[state=active]:after:w-[calc(100%-16px)] data-[state=active]:after:content-[''] [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n tabSmall &&\n \"data-[state=active]:bg-tab-bg-active dark:data-[state=active]:bg-tab-bg-active focus-visible:border-none focus-visible:ring-0 focus-visible:outline-0 data-[state=active]:after:hidden dark:data-[state=active]:border-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction BaseTabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n );\n}\n\nexport { Tabs };\n","import { cn } from \"@/utils\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\ntype Props = {\n label: string;\n variant: string;\n className?: string;\n};\n\nconst tagVariants = cva(\"px-1 rounded-sm\", {\n variants: {\n variant: {\n primary: \"bg-tag-bg-primary\",\n secondary: \"bg-tag-bg-secondary\",\n destructive: \"bg-tag-bg-destructive\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n },\n});\n\nfunction Tag({\n label,\n variant,\n className,\n}: Props & VariantProps<typeof tagVariants>) {\n return (\n <div data-slot=\"tag\" className={cn(tagVariants({ variant }), className)}>\n <span className=\"text-caption font-semibold text-white\">{label}</span>\n </div>\n );\n}\n\nexport { Tag };\n","import * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nconst TextareaInput = React.forwardRef<\n HTMLTextAreaElement,\n React.ComponentProps<\"textarea\"> & {\n label?: string;\n }\n>(({ className, label, ...props }, ref) => {\n return (\n <textarea\n ref={ref}\n id={props.id}\n data-slot=\"textarea\"\n className={cn(\n \"text-body-sm border-stroke-inverse-slate-03 placeholder:text-body-sm! placeholder:leading-body-sm placeholder:text-text-inactive hover:border-stroke-static-slate-03 bg-input-ghost-enabled focus-visible:border-stroke-static-blue-03 disabled:border-stroke-inverse-slate-02 disabled:bg-fill-inverse-slate-02 rounded-unit-corner-radius-xl flex field-sizing-content min-h-16 w-full border px-3 py-2 shadow-xs transition-[color,box-shadow] outline-none placeholder:font-medium disabled:cursor-not-allowed\",\n \"aria-invalid:border-stroke-inverse-red-01 aria-invalid:hover:border-stroke-inverse-red-02 aria-invalid:text-element-inverse-red\",\n className\n )}\n {...props}\n />\n );\n});\n\nTextareaInput.displayName = \"TextareaInput\";\n\nexport default TextareaInput;\n","\"use client\";\n\nimport { cn } from \"@/utils\";\nimport { Clock } from \"lucide-react\";\nimport * as React from \"react\";\nimport { useState } from \"react\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/ui/Dropdown\";\nimport { Input } from \"@/ui/Input\";\nimport { Label } from \"@/ui/Label\";\n\ninterface TimePickerProps\n extends Omit<React.ComponentProps<\"input\">, \"onChange\"> {\n label?: string;\n timeOptions: { label: string; value: string }[];\n defaultValue?: string;\n value?: string;\n onValueChange?: (value: string) => void;\n}\n\nexport function TimePicker({\n label,\n onValueChange,\n timeOptions,\n defaultValue,\n value,\n ...props\n}: TimePickerProps) {\n \n const [isOpen, setIsOpen] = useState(false);\n const currentValue = value || defaultValue || \"\";\n\n const formatTimeForDisplay = (timeValue: string): string => {\n if (!timeValue) return \"\";\n\n const timeOption = timeOptions?.find(\n (option) => option.value === timeValue,\n );\n return timeOption ? timeOption.label : timeValue;\n };\n\n const handleChange = (value: string) => {\n onValueChange?.(value);\n };\n return (\n <div className=\"flex flex-col gap-3\">\n {label && (\n <Label htmlFor=\"time-picker\" className=\"px-1\">\n Time\n </Label>\n )}\n <DropdownMenu open={isOpen} onOpenChange={setIsOpen}>\n <DropdownMenuTrigger className=\"!p-0\">\n <Input\n {...props}\n className=\"py-[1.4px]\"\n value={currentValue ? formatTimeForDisplay(currentValue) : \"\"}\n onKeyDown={(e) => e.preventDefault()}\n prefixNode={{\n node: (\n <Clock className=\"pointer-events-none h-5 w-5 text-gray-700\" />\n ),\n withBorder: false,\n }}\n />\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align=\"start\"\n className=\"max-h-60 min-w-41 overflow-y-auto\"\n >\n {timeOptions?.map((item) => (\n <DropdownMenuItem\n key={item.value}\n className={cn(\n \"text-body-sm\",\n currentValue === item.value && \"bg-dropdown-bg-hover font-bold\",\n )}\n onClick={() => handleChange(item.value)}\n >\n {item.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n}\n","import { Slot } from \"@radix-ui/react-slot\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\ninterface TitleProps extends React.ComponentPropsWithoutRef<\"h2\"> {\n asChild?: boolean;\n}\n\nconst Title = React.forwardRef<HTMLHeadingElement, TitleProps>(\n ({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"h2\";\n\n return (\n <Comp\n ref={ref}\n className={cn(\n \"text-title-lg! leading-body-lg! text-element-inverse-default font-bold\",\n className\n )}\n {...props}\n />\n );\n }\n);\n\nTitle.displayName = \"Title\";\n\nexport default Title;\n","import * as TogglePrimitive from \"@radix-ui/react-toggle\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center gap-2 text-sm font-medium disabled:pointer-events-none disabled:text-icon-inactive data-[state=on]:disabled:text-icon-inactive data-[state=on]:disabled:bg-toggle-bg-inactiveDefault data-[state=on]:bg-toggle-bg-activeDefault data-[state=on]:hover:bg-toggle-bg-activeHover data-[state=on]:text-icon-white hover:bg-toggle-bg-inactiveHover hover:text-icon-default [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap cursor-pointer\",\n {\n variants: {\n shape: {\n rectangle: \"rounded-md\",\n rounded: \"rounded-full\",\n },\n style: {\n ghost: \"bg-transparent hover:bg-transparent\",\n outline:\n \"border border-border-primary-light bg-toggle-bg-inactiveDefault\",\n soft: \"bg-button-soft-enabled\",\n },\n size: {\n sm: \"h-7 px-1 min-w-7\",\n md: \"h-8 px-1.5 min-w-8\",\n lg: \"h-9 px-2.5 min-w-9\",\n },\n },\n defaultVariants: {\n shape: \"rectangle\",\n style: \"soft\",\n size: \"sm\",\n },\n },\n);\n\nfunction Toggle({\n className,\n active,\n shape,\n style,\n size,\n ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n VariantProps<typeof toggleVariants> & {\n active?: boolean;\n }) {\n return (\n <TogglePrimitive.Root\n data-slot=\"toggle\"\n className={cn(toggleVariants({ shape, style, size, className }))}\n pressed={active}\n {...props}\n />\n );\n}\n\nexport { Toggle, toggleVariants };\n","import { useRef } from \"react\";\n\nimport { ToggleDropdownLeftButton } from \"./ToggleDropdownLeftButton\";\nimport { ToggleDropdownRightButton } from \"./ToggleDropdownRightButton\";\nimport { useToggleDropdown } from \"./useToggleDropdown\";\n\ntype ToggleDropdownButtonProps = {\n type: \"text\" | \"icon\";\n selected: boolean;\n variant: \"primary\" | \"secondary\" | \"destructive\";\n leftButtonChildren?: React.ReactNode;\n rightButtonChildren?: React.ReactNode;\n onLeftButtonClick?: () => void;\n onRightButtonClick?: () => void;\n dropdownMenu?: React.ReactNode;\n};\n\nconst ToggleDropdownButton = ({\n type,\n selected,\n variant,\n leftButtonChildren,\n rightButtonChildren,\n onRightButtonClick,\n onLeftButtonClick,\n dropdownMenu,\n}: ToggleDropdownButtonProps) => {\n const rightButtonRef = useRef<HTMLButtonElement>(null);\n\n const handleRightButtonClick = () => {\n onRightButtonClick?.();\n };\n\n const handleLeftButtonClick = () => {\n onLeftButtonClick?.();\n };\n\n return (\n <div className=\"gap-x-unit-1px flex items-center\">\n <ToggleDropdownLeftButton\n selected={selected}\n variant={variant}\n size=\"md\"\n type={type}\n onClick={handleLeftButtonClick}\n >\n {leftButtonChildren}\n </ToggleDropdownLeftButton>\n\n <div className=\"relative\">\n <ToggleDropdownRightButton\n ref={rightButtonRef}\n selected={selected}\n variant={variant}\n size=\"md\"\n type={type}\n onClick={handleRightButtonClick}\n >\n {rightButtonChildren}\n </ToggleDropdownRightButton>\n\n {dropdownMenu}\n </div>\n </div>\n );\n};\n\nexport default ToggleDropdownButton;\nexport { useToggleDropdown };\n","import { cva } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\nimport IconContainer from \"@/ui/IconContainer\";\n\nconst toggleDropdownLeftButtonVariants = cva(\n \"flex items-center justify-center cursor-pointer transition-all\",\n {\n variants: {\n variant: {\n primary:\n \"bg-button-toggle-unselected-primary-enabled text-element-inverse-default hover:bg-button-toggle-unselected-primary-hovered active:bg-button-toggle-unselected-primary-pressed\",\n secondary:\n \"bg-button-toggle-unselected-secondary-enabled text-element-inverse-default hover:bg-button-toggle-unselected-secondary-hovered active:bg-button-toggle-unselected-secondary-pressed\",\n destructive:\n \"bg-button-toggle-unselected-destructive-enabled text-element-inverse-default hover:bg-button-toggle-unselected-destructive-hovered active:bg-button-toggle-unselected-destructive-pressed\",\n },\n size: {\n md: \"px-3 py-2.5 h-full rounded-l-unit-corner-radius-xl rounded-r-unit-corner-radius-sm\",\n lg: \"px-4 py-3 h-full rounded-l-unit-corner-radius-2xl rounded-r-unit-corner-radius-md\",\n },\n selected: {\n true: \"\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n selected: true,\n variant: \"primary\",\n class:\n \"bg-button-toggle-selected-primary-enabled text-element-static-white hover:bg-button-toggle-selected-primary-hovered active:bg-button-toggle-selected-primary-pressed\",\n },\n {\n selected: true,\n variant: \"secondary\",\n class:\n \"bg-button-toggle-selected-secondary-enabled text-element-static-white hover:bg-button-toggle-selected-secondary-hovered active:bg-button-toggle-selected-secondary-pressed\",\n },\n {\n selected: true,\n variant: \"destructive\",\n class:\n \"bg-button-toggle-selected-destructive-enabled text-element-static-white hover:bg-button-toggle-selected-destructive-hovered active:bg-button-toggle-selected-destructive-pressed\",\n },\n ],\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n selected: false,\n },\n },\n);\n\nconst toggleDropdownLeftButtonIconVariants = cva(\n \"flex items-center justify-center cursor-pointer transition-all\",\n {\n variants: {\n variant: {\n primary:\n \"bg-button-toggle-unselected-primary-enabled text-element-inverse-default hover:bg-button-toggle-unselected-primary-hovered active:bg-button-toggle-unselected-primary-pressed\",\n secondary:\n \"bg-button-toggle-unselected-secondary-enabled text-element-inverse-default hover:bg-button-toggle-unselected-secondary-hovered active:bg-button-toggle-unselected-secondary-pressed\",\n destructive:\n \"bg-button-toggle-unselected-destructive-enabled text-element-inverse-default hover:bg-button-toggle-unselected-destructive-hovered active:bg-button-toggle-unselected-destructive-pressed\",\n },\n size: {\n md: \"p-unit-10px h-full rounded-l-unit-corner-radius-xl rounded-r-unit-corner-radius-sm\",\n lg: \"p-3 h-full rounded-l-unit-corner-radius-2xl rounded-r-unit-corner-radius-md\",\n },\n selected: {\n true: \"\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n selected: true,\n variant: \"primary\",\n class:\n \"bg-button-toggle-selected-primary-enabled text-element-static-white hover:bg-button-toggle-selected-primary-hovered active:bg-button-toggle-selected-primary-pressed\",\n },\n {\n selected: true,\n variant: \"secondary\",\n class:\n \"bg-button-toggle-selected-secondary-enabled text-element-static-white hover:bg-button-toggle-selected-secondary-hovered active:bg-button-toggle-selected-secondary-pressed\",\n },\n {\n selected: true,\n variant: \"destructive\",\n class:\n \"bg-button-toggle-selected-destructive-enabled text-element-static-white hover:bg-button-toggle-selected-destructive-hovered active:bg-button-toggle-selected-destructive-pressed\",\n },\n ],\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n selected: false,\n },\n },\n);\nexport interface ToggleDropdownLeftButtonProps extends Omit<\n React.ComponentProps<\"button\">,\n \"children\" | \"type\"\n> {\n type?: \"text\" | \"icon\";\n variant?: \"primary\" | \"secondary\" | \"destructive\";\n size?: \"md\" | \"lg\";\n selected?: boolean;\n children?: React.ReactNode;\n}\n\nfunction ToggleDropdownLeftButton({\n className,\n variant = \"primary\",\n type = \"text\",\n size = \"md\",\n selected = false,\n children,\n ...props\n}: ToggleDropdownLeftButtonProps) {\n const iconClass = selected\n ? \"text-element-static-white fill-element-static-white\"\n : \"text-element-inverse-default fill-element-inverse-default\";\n\n // Check if children is a React element (likely an icon)\n const isIcon = React.isValidElement(children);\n\n return type === \"text\" ? (\n <button\n type=\"button\"\n className={cn(\n toggleDropdownLeftButtonVariants({ variant, size, selected }),\n className,\n )}\n {...props}\n >\n {isIcon ? (\n <IconContainer\n colorInFill={false}\n className={cn(\n iconClass,\n `${selected ? \"[&_path]:!text-element-static-white [&_path]:!fill-element-static-white\" : \"[&_path]:!text-element-inverse-default [&_path]:!fill-element-inverse-default\"}`,\n )}\n size={\"md\"}\n >\n {children}\n </IconContainer>\n ) : (\n children\n )}\n </button>\n ) : (\n <button\n type=\"button\"\n className={cn(\n toggleDropdownLeftButtonIconVariants({ variant, size, selected }),\n className,\n )}\n {...props}\n >\n <IconContainer\n colorInFill={false}\n className={cn(\n iconClass,\n `${selected ? \"[&_path]:!text-element-static-white [&_path]:!fill-element-static-white\" : \"[&_path]:!text-element-inverse-default [&_path]:!fill-element-inverse-default\"}`,\n )}\n size={\"md\"}\n >\n {children}\n </IconContainer>\n </button>\n );\n}\n\nexport { ToggleDropdownLeftButton, toggleDropdownLeftButtonVariants };\n","import { cva } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\nimport IconContainer from \"@/ui/IconContainer\";\n\nconst toggleDropdownRightButtonVariants = cva(\n \"flex items-center justify-center group cursor-pointer transition-all\",\n {\n variants: {\n variant: {\n primary:\n \"bg-button-toggle-unselected-primary-enabled text-element-inverse-default hover:bg-button-toggle-unselected-primary-hovered active:bg-button-toggle-unselected-primary-pressed\",\n secondary:\n \"bg-button-toggle-unselected-secondary-enabled text-element-inverse-default hover:bg-button-toggle-unselected-secondary-hovered active:bg-button-toggle-unselected-secondary-pressed\",\n destructive:\n \"bg-button-toggle-unselected-destructive-enabled text-element-inverse-default hover:bg-button-toggle-unselected-destructive-hovered active:bg-button-toggle-unselected-destructive-pressed\",\n },\n size: {\n md: \"px-1 py-unit-10px h-full rounded-r-unit-corner-radius-xl rounded-l-unit-corner-radius-sm\",\n lg: \"px-1 py-3 h-full rounded-r-unit-corner-radius-2xl rounded-l-unit-corner-radius-md\",\n },\n selected: {\n true: \"\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n selected: true,\n variant: \"primary\",\n class:\n \"bg-button-toggle-selected-primary-enabled text-element-static-white hover:bg-button-toggle-selected-primary-hovered active:bg-button-toggle-selected-primary-pressed\",\n },\n {\n selected: true,\n variant: \"secondary\",\n class:\n \"bg-button-toggle-selected-secondary-enabled text-element-static-white hover:bg-button-toggle-selected-secondary-hovered active:bg-button-toggle-selected-secondary-pressed\",\n },\n {\n selected: true,\n variant: \"destructive\",\n class:\n \"bg-button-toggle-selected-destructive-enabled text-element-static-white hover:bg-button-toggle-selected-destructive-hovered active:bg-button-toggle-selected-destructive-pressed\",\n },\n ],\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n selected: false,\n },\n },\n);\n\nconst toggleDropdownRightButtonIconVariants = cva(\n \"flex items-center justify-center group cursor-pointer transition-all\",\n {\n variants: {\n variant: {\n primary:\n \"bg-button-toggle-unselected-primary-enabled text-element-inverse-default hover:bg-button-toggle-unselected-primary-hovered active:bg-button-toggle-unselected-primary-pressed\",\n secondary:\n \"bg-button-toggle-unselected-secondary-enabled text-element-inverse-default hover:bg-button-toggle-unselected-secondary-hovered active:bg-button-toggle-unselected-secondary-pressed\",\n destructive:\n \"bg-button-toggle-unselected-destructive-enabled text-element-inverse-default hover:bg-button-toggle-unselected-destructive-hovered active:bg-button-toggle-unselected-destructive-pressed\",\n },\n size: {\n md: \"px-1 py-unit-10px h-full rounded-r-unit-corner-radius-xl rounded-l-unit-corner-radius-sm\",\n lg: \"px-1 py-3 h-full rounded-r-unit-corner-radius-2xl rounded-l-unit-corner-radius-md\",\n },\n selected: {\n true: \"\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n selected: true,\n variant: \"primary\",\n class:\n \"bg-button-toggle-selected-primary-enabled text-element-static-white hover:bg-button-toggle-selected-primary-hovered active:bg-button-toggle-selected-primary-pressed\",\n },\n {\n selected: true,\n variant: \"secondary\",\n class:\n \"bg-button-toggle-selected-secondary-enabled text-element-static-white hover:bg-button-toggle-selected-secondary-hovered active:bg-button-toggle-selected-secondary-pressed\",\n },\n {\n selected: true,\n variant: \"destructive\",\n class:\n \"bg-button-toggle-selected-destructive-enabled text-element-static-white hover:bg-button-toggle-selected-destructive-hovered active:bg-button-toggle-selected-destructive-pressed\",\n },\n ],\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n selected: false,\n },\n },\n);\n\nexport interface ToggleDropdownRightButtonProps extends Omit<\n React.ComponentProps<\"button\">,\n \"children\" | \"type\"\n> {\n variant?: \"primary\" | \"secondary\" | \"destructive\";\n type?: \"text\" | \"icon\";\n size?: \"md\" | \"lg\";\n selected?: boolean;\n children?: React.ReactNode;\n}\n\nfunction ToggleDropdownRightButton({\n className,\n variant = \"primary\",\n type = \"text\",\n size = \"md\",\n selected = false,\n children,\n ...props\n}: ToggleDropdownRightButtonProps) {\n const iconClass = selected\n ? \"text-element-static-white fill-element-static-white\"\n : \"text-element-inverse-default fill-element-inverse-default\";\n\n // Check if children is a React element (likely an icon)\n const isIcon = React.isValidElement(children);\n\n return type === \"text\" ? (\n <button\n type=\"button\"\n className={cn(\n toggleDropdownRightButtonVariants({ variant, size, selected }),\n className,\n )}\n {...props}\n >\n {isIcon ? (\n <IconContainer\n colorInFill={false}\n className={cn(\n iconClass,\n `${selected ? \"[&_path]:!text-element-static-white [&_path]:!fill-element-static-white\" : \"[&_path]:!text-element-inverse-default [&_path]:!fill-element-inverse-default\"}`,\n )}\n size={\"md\"}\n >\n {children}\n </IconContainer>\n ) : (\n children\n )}\n </button>\n ) : (\n <button\n type=\"button\"\n className={cn(\n toggleDropdownRightButtonIconVariants({ variant, size, selected }),\n className,\n )}\n {...props}\n >\n <IconContainer\n colorInFill={false}\n className={cn(\n iconClass,\n `${selected ? \"[&_path]:! text-element-static-white [&_path]:!fill-element-static-white\" : \"[&_path]:!text-element-inverse-default [&_path]:!fill-element-inverse-default\"}`,\n )}\n size={\"md\"}\n >\n {children}\n </IconContainer>\n </button>\n );\n}\n\nexport { ToggleDropdownRightButton, toggleDropdownRightButtonVariants };\n","import { useState, useCallback } from \"react\";\n\nexport const useToggleDropdown = (initialState = false) => {\n const [isOpen, setIsOpen] = useState(initialState);\n\n const openDropdown = useCallback(() => {\n setIsOpen(true);\n }, []);\n\n const closeDropdown = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n const toggleDropdown = useCallback(() => {\n setIsOpen((prev) => !prev);\n }, []);\n\n return {\n isOpen,\n openDropdown,\n closeDropdown,\n toggleDropdown,\n setIsOpen,\n };\n};\n\n","import { cn } from \"@/utils\";\nimport { ChevronDown } from \"lucide-react\";\nimport { useState } from \"react\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuTrigger,\n} from \"@/ui/Dropdown\";\n\ntype ToolToggleProps = {\n className?: string;\n dropdown?: boolean;\n dropdownContent?: React.ReactNode;\n icon?: React.ReactNode;\n onClick?: (active: boolean) => void;\n};\n\nconst ToolToggle = ({\n dropdown,\n dropdownContent,\n icon,\n className,\n onClick,\n}: ToolToggleProps) => {\n const [active, setActive] = useState(false);\n\n const handleClick = () => {\n setActive(!active);\n onClick?.(active);\n };\n\n return (\n <div className={cn(dropdown ? \"min-w-20\" : \"min-w-[52px]\", className)}>\n <DropdownMenu>\n <DropdownMenuTrigger\n className={cn(\n \"border-border-primary-light !bg-toggle-bg-inactiveDefault hover:!bg-toggle-bg-inactiveHover flex h-full w-full items-center justify-center gap-x-2 !rounded-full border p-4 transition-all\",\n active &&\n \"!bg-toggle-bg-activeDefault hover:!bg-toggle-bg-activeHover\",\n )}\n >\n <div\n className=\"flex items-center justify-center gap-x-2\"\n onClick={handleClick}\n >\n {icon}\n {dropdown && <ChevronDown className=\"text-icon-default size-5\" />}\n </div>\n </DropdownMenuTrigger>\n {dropdown && (\n <DropdownMenuContent align=\"start\" className=\"min-w-41\">\n {dropdownContent}\n </DropdownMenuContent>\n )}\n </DropdownMenu>\n </div>\n );\n};\n\nexport { ToolToggle };\n","import { cn } from \"@/utils\";\n\ntype WrapperCardProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nexport const WrapperCard = (props: WrapperCardProps) => {\n const { children, className } = props;\n\n return (\n <div\n className={cn(\n \"rounded-unit-corner-radius-5xl scrollbar-hide border-stroke-inverse-slate-02 bg-fill-foreground overflow-scroll border p-4\",\n className\n )}\n >\n {children}\n </div>\n );\n};\n","import * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport * as React from \"react\";\nimport {\n Controller,\n FormProvider,\n useFormContext,\n useFormState,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\";\n\nimport { cn } from \"@/utils\";\nimport { Label } from \"@/ui/Label\";\n\nconst BaseForm = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue,\n);\n\nconst BaseFormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState } = useFormContext();\n const formState = useFormState({ name: fieldContext.name });\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\");\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue,\n);\n\nfunction BaseFormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n data-slot=\"form-item\"\n className={cn(\"grid gap-2\", className)}\n {...props}\n />\n </FormItemContext.Provider>\n );\n}\n\nfunction BaseFormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn(\n \"data-[error=true]:text-destructive text-title-sm! text-element-inverse-default font-semibold\",\n className,\n )}\n htmlFor={formItemId}\n {...props}\n />\n );\n}\n\nfunction BaseFormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n}\n\nfunction BaseFormDescription({\n className,\n ...props\n}: React.ComponentProps<\"p\">) {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction BaseFormMessage({ className, ...props }: React.ComponentProps<\"p\">) {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? \"\") : props.children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n //Warning: I don't know why I can't use cn here :)\n className={`text-text-destructive text-caption ${className}`}\n {...props}\n >\n {body}\n </p>\n );\n}\n\nexport {\n BaseForm,\n BaseFormControl,\n BaseFormDescription,\n BaseFormField,\n BaseFormItem,\n BaseFormLabel,\n BaseFormMessage,\n useFormField,\n};\n","import * as React from \"react\";\nimport type { Control, FieldValues, Path } from \"react-hook-form\";\nimport {\n BaseFormControl,\n BaseFormField,\n BaseFormItem,\n BaseFormLabel,\n BaseFormMessage,\n} from \"@/ui/form/Base\";\nimport { cn } from \"@/utils\";\nimport type { Input } from \"@/ui/Input\";\n\nexport type FormFieldProps<T extends FieldValues> = {\n control: Control<T>;\n isShowError?: boolean;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n field: {\n name: Path<T>;\n label?: string;\n required?: boolean;\n optional?: boolean;\n render: React.ReactNode;\n };\n className?: string;\n};\n\nexport const FormField = <T extends FieldValues>({\n control,\n field,\n isShowError,\n onBlur,\n className,\n}: FormFieldProps<T>) => {\n return (\n <BaseFormField\n key={field.name}\n control={control}\n name={field.name}\n render={({ field: formField }) => (\n <BaseFormItem className={cn(\"w-full\", className)}>\n {field.label && (\n <BaseFormLabel className=\"gap-1\">\n {field.label}\n {field.required && (\n <span className=\"text-element-inverse-red\">*</span>\n )}\n {field.optional && (\n <span className=\"text-title-sm!\">(Optional)</span>\n )}\n </BaseFormLabel>\n )}\n <BaseFormControl>\n {React.isValidElement(field.render)\n ? React.cloneElement(\n field.render as React.ReactElement<\n React.ComponentProps<typeof Input>\n >,\n {\n ...formField,\n onBlur: (e) => {\n formField.onBlur();\n onBlur?.(e);\n },\n }\n )\n : field.render}\n </BaseFormControl>\n {isShowError && <BaseFormMessage />}\n </BaseFormItem>\n )}\n />\n );\n};\n","import type React from \"react\";\nimport { createContext } from \"react\";\nimport {\n Controller,\n type FieldPath,\n type FieldValues,\n type Path,\n type PathValue,\n type UseFormReturn,\n useFormContext,\n} from \"react-hook-form\";\nimport { cn } from \"@/utils\";\nimport { BaseForm } from \"@/ui/form/Base\";\nimport { FormField } from \"@/ui/form/FormField\";\nimport { Input } from \"@/ui/Input\";\nimport { PasswordInput } from \"@/ui/PasswordInput\";\nimport { SelectInput } from \"@/ui/SelectInput\";\nimport TextareaInput from \"@/ui/TextAreaInput\";\nimport { Checkbox } from \"@/ui/Checkbox\";\nimport { Combobox } from \"@/ui/Combobox\";\nimport { DatePickerInput } from \"@/ui/DatePickerInput\";\nimport { FileUploadField } from \"@/ui/FileUpload\";\nimport { MultiSelect } from \"@/ui/MultiSelect\";\nimport { OTPInput } from \"@/ui/OTPInput\";\nimport { Radio } from \"@/ui/Radio\";\nimport { Switch } from \"@/ui/Switch\";\nimport { TimePicker } from \"@/ui/TimePicker\";\n\nconst FormMethodsContext = createContext<UseFormReturn<FieldValues> | null>(\n null\n);\n\ntype FormProps<T extends FieldValues> = {\n id: string;\n formMethods: UseFormReturn<T>;\n onSubmit: (data: T) => void;\n className?: string;\n children: React.ReactNode;\n};\n\nfunction Form<T extends FieldValues>({\n id,\n formMethods,\n onSubmit,\n className,\n children,\n}: FormProps<T>) {\n return (\n <FormMethodsContext.Provider\n value={formMethods as UseFormReturn<FieldValues>}\n >\n <BaseForm {...formMethods}>\n <form\n id={id}\n onSubmit={formMethods.handleSubmit(onSubmit)}\n className={className}\n noValidate\n >\n {children}\n </form>\n </BaseForm>\n </FormMethodsContext.Provider>\n );\n}\n\nForm.InputField = function InputField<T extends FieldValues = FieldValues>({\n name,\n label,\n isShowError = false,\n required = false,\n ...props\n}: {\n name: FieldPath<T>;\n isShowError?: boolean;\n label?: string;\n required?: boolean;\n} & React.ComponentProps<typeof Input>) {\n const { control } = useFormContext<T>();\n\n return (\n <FormField\n className=\"w-full\"\n control={control}\n isShowError={isShowError}\n onBlur={props.onBlur}\n field={{\n name,\n label,\n required,\n render: <Input {...props} inputClassName={props.inputClassName} />,\n }}\n />\n );\n};\n\nForm.PasswordField = function PasswordField<\n T extends FieldValues = FieldValues,\n>({\n name,\n label,\n ...props\n}: { name: FieldPath<T> } & React.ComponentProps<typeof PasswordInput>) {\n const { control } = useFormContext<T>();\n\n return (\n <FormField\n className=\"w-full\"\n control={control}\n field={{\n name,\n label,\n render: <PasswordInput {...props} />,\n }}\n />\n );\n};\n\nForm.SelectInputField = function SelectInputField<\n T extends FieldValues = FieldValues,\n>({\n name,\n label,\n required,\n ...props\n}: { name: FieldPath<T>; label?: string } & React.ComponentProps<\n typeof SelectInput\n>) {\n const { control } = useFormContext<T>();\n return (\n <FormField\n control={control}\n field={{\n name,\n required,\n label,\n render: <SelectInput {...props} />,\n }}\n />\n );\n};\n\nForm.MultiSelectField = function MultiSelectField<\n T extends FieldValues = FieldValues,\n>({\n name,\n label,\n ...props\n}: { name: FieldPath<T>; label?: string } & Omit<\n React.ComponentProps<typeof MultiSelect>,\n \"selected\" | \"onChange\"\n>) {\n const { control, watch, setValue } = useFormContext<T>();\n const selectedValues = watch(name) || [];\n\n return (\n <FormField\n control={control}\n field={{\n name,\n label,\n render: (\n <MultiSelect\n {...props}\n selected={selectedValues}\n onChange={(selected) =>\n setValue(name, selected as PathValue<T, Path<T>>)\n }\n />\n ),\n }}\n />\n );\n};\n\nForm.TextareaField = function TextareaField<\n T extends FieldValues = FieldValues,\n>({\n name,\n label,\n optional = false,\n ...props\n}: { name: FieldPath<T>; optional?: boolean } & React.ComponentProps<\n typeof TextareaInput\n>) {\n const { control } = useFormContext<T>();\n\n return (\n <FormField\n control={control}\n field={{\n name,\n label,\n optional,\n render: <TextareaInput {...props} />,\n }}\n />\n );\n};\n\nForm.FileUploadField = function FileUploadFieldComponent<\n T extends FieldValues = FieldValues,\n>({\n name,\n label,\n isMultiple,\n maxFiles,\n children,\n CustomFileList,\n onChange: customOnChange,\n ...props\n}: {\n name: FieldPath<T>;\n label?: string;\n isMultiple?: boolean;\n maxFiles?: number;\n children?: React.ReactNode;\n CustomFileList?: React.ComponentType;\n onChange?: (files: File[] | File | null) => void;\n} & Omit<\n React.ComponentProps<typeof FileUploadField>,\n \"hookedForm\" | \"field\" | \"onChange\"\n>) {\n const { control, formState } = useFormContext<T>() as UseFormReturn;\n const fieldError = formState.errors[name];\n const hasValidationError = !!fieldError;\n\n return (\n <Controller\n control={control}\n name={name}\n render={({ field: formField }) => (\n <div className=\"space-y-1\">\n {label && (\n <label htmlFor={name} className=\"font-medium\">\n {label}\n </label>\n )}\n <FileUploadField\n field={{ name, isMultiple, maxFiles, children }}\n CustomFileList={CustomFileList}\n hasValidationError={hasValidationError}\n value={formField.value || (isMultiple ? [] : undefined)}\n onChange={(files) => {\n // Update form field value\n formField.onChange(files);\n // Call custom onChange if provided\n if (customOnChange) {\n customOnChange(files);\n }\n }}\n onBlur={formField.onBlur}\n name={formField.name}\n {...props}\n />\n </div>\n )}\n />\n );\n};\n\n// Define DatePickerInputProps here since it's not exported\ninterface DatePickerInputProps extends React.ComponentProps<\"button\"> {\n date: Date | undefined;\n setDate: (date: Date | undefined) => void;\n placeholder?: string;\n}\n\nForm.DateInputField = function DateInputField<\n T extends FieldValues = FieldValues,\n>({\n name,\n label,\n disablePast,\n required,\n ...props\n}: { name: FieldPath<T>; label?: string; required?: boolean } & Omit<\n DatePickerInputProps,\n \"date\" | \"setDate\"\n> & {\n disablePast?: boolean;\n required?: boolean;\n }) {\n const { control, watch, setValue } = useFormContext<T>();\n const value = watch(name);\n return (\n <FormField\n control={control}\n field={{\n name,\n label,\n required,\n render: (\n <DatePickerInput\n {...props}\n date={value}\n setDate={(date) => setValue(name, date as PathValue<T, Path<T>>)}\n disablePast={disablePast}\n />\n ),\n }}\n />\n );\n};\n\nForm.TimeInputField = function TimeInputField<\n T extends FieldValues = FieldValues,\n>({\n name,\n label,\n ...props\n}: { name: FieldPath<T>; label?: string } & React.ComponentProps<\n typeof TimePicker\n>) {\n const { control, setValue } = useFormContext<T>();\n return (\n <FormField\n control={control}\n field={{\n name,\n label,\n render: (\n <TimePicker\n onValueChange={(value) => {\n setValue(name, value as any);\n }}\n {...props}\n />\n ),\n }}\n />\n );\n};\n\nForm.CheckboxField = function CheckboxField<\n T extends FieldValues = FieldValues,\n>({\n name,\n label,\n ...props\n}: { name: FieldPath<T> } & Omit<\n React.ComponentProps<typeof Checkbox>,\n \"value\"\n>) {\n const { control } = useFormContext<T>();\n return (\n <FormField\n control={control}\n field={{\n name,\n render: <Checkbox value={name} label={label} {...props} />,\n }}\n />\n );\n};\n\nForm.OTPInputField = function OTPInputField<\n T extends FieldValues = FieldValues,\n>({\n name,\n ...props\n}: { name: FieldPath<T> } & React.ComponentProps<typeof OTPInput>) {\n const { control } = useFormContext<T>();\n return (\n <FormField\n className=\"w-full\"\n control={control}\n field={{ name, render: <OTPInput {...props} /> }}\n />\n );\n};\n\nForm.RadioField = function RadioField<T extends FieldValues = FieldValues>({\n name,\n label,\n ...props\n}: { name: FieldPath<T>; label?: string } & React.ComponentProps<\n typeof Radio\n>) {\n const { control } = useFormContext<T>();\n const { setValue } = useFormContext<T>();\n return (\n <FormField\n control={control}\n field={{\n name,\n label,\n render: (\n <Radio\n {...props}\n onValueChange={(value) => setValue(name, value as any)}\n />\n ),\n }}\n />\n );\n};\n\nForm.ComboboxField = function ComboboxField<\n T extends FieldValues = FieldValues,\n>({\n name,\n ...props\n}: { name: FieldPath<T> } & Omit<\n React.ComponentProps<typeof Combobox>,\n \"onChange\"\n>) {\n const { control, setValue, watch } = useFormContext<T>();\n const value = watch(name);\n return (\n <FormField\n control={control}\n field={{\n name,\n render: (\n <Combobox\n {...props}\n value={value || \"\"}\n onChange={(val) => setValue(name, val as PathValue<T, Path<T>>)}\n />\n ),\n }}\n />\n );\n};\n\n\nForm.SwitchField = function SwitchField<T extends FieldValues = FieldValues>({\n name,\n label,\n prefix,\n suffix,\n className,\n ...props\n}: {\n name: FieldPath<T>;\n label?: string;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n className?: string;\n} & Omit<React.ComponentProps<typeof Switch>, \"checked\" | \"onCheckedChange\">) {\n const { control, setValue, watch } = useFormContext<T>();\n const value = watch(name);\n return (\n <FormField\n control={control}\n className={cn(\"w-full\", className)}\n field={{\n name,\n label,\n render: (\n <div className=\"flex items-center\">\n {prefix && <span className=\"mr-2\">{prefix}</span>}\n <Switch\n {...props}\n checked={!!value}\n onCheckedChange={(checked) =>\n setValue(name, checked as PathValue<T, Path<T>>)\n }\n />\n {suffix && <span className=\"ml-2\">{suffix}</span>}\n </div>\n ),\n }}\n />\n );\n};\n\nexport { Form };\n"],"mappings":";AAAA,YAAY,wBAAwB;AACpC,SAAS,uBAAuB;;;ACDhC,SAAS,YAA6B;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;AAEO,SAAS,YAAY,MAAc;AACxC,MAAI,CAAC,KAAM,QAAO;AAClB,QAAM,YAAY,MAAM,MAAM,GAAG;AACjC,MAAI,WAAW,WAAW,GAAG;AAC3B,WAAO,UAAU,CAAC,EAAE,CAAC;AAAA,EACvB;AACA,SAAO,UAAU,CAAC,EAAE,CAAC,IAAI,UAAU,UAAU,SAAS,CAAC,EAAE,CAAC;AAC5D;AAQO,SAAS,oBAAoB,MAAc,YAAY,IAAI;AAChE,QAAM,WAAW,KAAK,YAAY,GAAG;AACrC,MAAI,aAAa,MAAM,KAAK,UAAU,UAAW,QAAO;AACxD,QAAM,MAAM,KAAK,MAAM,QAAQ;AAC/B,QAAM,OAAO,KAAK,MAAM,GAAG,QAAQ;AACnC,QAAM,OAAO,YAAY,IAAI,SAAS;AACtC,MAAI,QAAQ,EAAG,QAAO,MAAM,GAAG;AAC/B,QAAM,WAAW,KAAK,KAAK,OAAO,CAAC;AACnC,QAAM,SAAS,KAAK,MAAM,OAAO,CAAC;AAClC,SAAO,GAAG,KAAK,MAAM,GAAG,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG;AAClE;AAEO,SAAS,YAAY,MAAc;AACxC,MAAI,OAAO,KAAM,QAAO,GAAG,IAAI;AAC/B,MAAI,OAAO,OAAO,KAAM,QAAO,IAAI,OAAO,MAAM,QAAQ,CAAC,CAAC;AAC1D,MAAI,OAAO,OAAO,OAAO,KAAM,QAAO,IAAI,OAAO,OAAO,MAAM,QAAQ,CAAC,CAAC;AACxE,SAAO,IAAI,OAAO,OAAO,OAAO,MAAM,QAAQ,CAAC,CAAC;AAClD;;;AD9BS,cA8BH,YA9BG;AAHT,SAAS,UAAU;AAAA,EACjB,GAAG;AACL,GAAyD;AACvD,SAAO,oBAAoB,yBAAnB,EAAwB,aAAU,aAAa,GAAG,OAAO;AACnE;AAEA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA,GAAG;AACL,GAAyD;AACvD,SACE;AAAA,IAAoB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,4BAA4B,SAAS;AAAA,MAClD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,QAAM,mBAAmB,GAAG,uCAAuC;AAAA,IACjE,oBAAoB,CAAC;AAAA,EACvB,CAAC;AAED,SACE,oBAAoB,2BAAnB,EAA0B,WAAU,QACnC;AAAA,IAAoB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA,CAAC,YAAY;AAAA,MACf;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QAED;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA;AAAA,YACF;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF,GACF;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA4D;AAC1D,SACE;AAAA,IAAoB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAU;AAAA,MACT,GAAG;AAAA,MAEJ,8BAAC,SAAI,WAAW,GAAG,SAAS,GAAI,UAAS;AAAA;AAAA,EAC3C;AAEJ;;;AE3EA,SAAS,WAA8B;AA8CjC,SACY,OAAAA,MADZ,QAAAC,aAAA;AAzCN,IAAM,gBAAgB;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,WAAW;AAAA,QACX,aACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAUA,SAAS,MAAM;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAe;AACb,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,MAAK;AAAA,MACL,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,WAAW,EAAE;AAAA,MACtD,GAAG;AAAA,MAEH;AAAA;AAAA,QACD,gBAAAA,MAAC,SAAI,WAAU,mCACZ;AAAA,mBAAS,gBAAAD,KAAC,kBAAgB,iBAAM;AAAA,UAChC,eACC,gBAAAA,KAAC,wBAAsB,uBAAY;AAAA,WAEvC;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,eAAe,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC5E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,qBAAqB;AAAA,EAC5B;AAAA,EACA,GAAG;AACL,GAAgC;AAC9B,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACnFA,YAAY,qBAAqB;AAIjC,SAAS,OAAAE,YAAW;;;ACJpB,YAAY,sBAAsB;AAyE9B,gBAAAC,MAsCM,QAAAC,aAtCN;AAhDJ,SAAS,cAAc,UAGrB;AACA,QAAM,OAAa,OAAO,KAAK,QAAQ,IACnC,QACA,UAAU,KAAK,QAAQ,IACrB,WACA,QAAQ,KAAK,QAAQ,IACnB,SACA,SAAS,KAAK,QAAQ,IACpB,UACA;AAEV,MAAI;AACJ,MAAI,SAAS,SAAS,GAAG,GAAG;AAC1B,QAAI,SAAS,SAAS,SAAS,EAAG,SAAQ;AAAA,aACjC,cAAc,KAAK,QAAQ,EAAG,SAAQ;AAAA,aACtC,kBAAkB,KAAK,QAAQ,EAAG,SAAQ;AAAA,EACrD;AAEA,SAAO,EAAE,MAAM,MAAM;AACvB;AAEA,SAAS,sBACP,MACA,OACqB;AACrB,QAAM,SAAS;AACf,MAAI,UAAU,SAAS;AACrB,QAAI,SAAS,SAAS,SAAS;AAC7B,aAAO,EAAE,MAAM,QAAQ,OAAO,QAAQ,WAAW,OAAU;AAC7D,WAAO,EAAE,KAAK,QAAQ,QAAQ,QAAQ,WAAW,OAAU;AAAA,EAC7D;AACA,MAAI,UAAU,OAAO;AACnB,QAAI,SAAS,SAAS,SAAS;AAC7B,aAAO,EAAE,OAAO,QAAQ,MAAM,QAAQ,WAAW,OAAU;AAC7D,WAAO,EAAE,QAAQ,QAAQ,KAAK,QAAQ,WAAW,OAAU;AAAA,EAC7D;AACA,SAAO,CAAC;AACV;AAiBA,SAAS,QAAQ;AAAA,EACf;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,YAAY;AAAA,EACZ;AAAA,EACA,0BAA0B;AAAA,EAC1B,GAAG;AACL,GAOwD;AACtD,QAAM,EAAE,MAAM,MAAM,IAAI,cAAc,QAAQ;AAE9C,SACE,gBAAAC,KAAkB,2BAAjB,EAA0B,eAAe,GACxC,0BAAAC;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,wBAAAD,KAAkB,0BAAjB,EAAyB,SAAO,MAAC,aAAU,mBACzC,mBACH;AAAA,QACA,gBAAAA,KAAkB,yBAAjB,EACC,0BAAAC;AAAA,UAAkB;AAAA,UAAjB;AAAA,YACC,aAAU;AAAA,YACV;AAAA,YACA;AAAA,YACA,YAAY;AAAA,YACZ,WAAW;AAAA,cACT,2BAA2B;AAAA,cAC3B;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YAEC;AAAA;AAAA,cACA,aACC,gBAAAD;AAAA,gBAAkB;AAAA,gBAAjB;AAAA,kBACC,aAAU;AAAA,kBACV,oBAAkB;AAAA,kBAClB,WAAU;AAAA,kBACV,OAAO;AAAA,oBACL,GAAG,sBAAsB,MAAM,KAAK;AAAA,kBACtC;AAAA;AAAA,cACF;AAAA;AAAA;AAAA,QAEJ,GACF;AAAA;AAAA;AAAA,EACF,GACF;AAEJ;;;ADhBE,mBACE,OAAAE,MADF,QAAAC,aAAA;AA0EM;AAjLR,IAAM,cAAc;AAAA,EAClB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,OAAO;AACT;AAEA,IAAM,qBAAqB;AAAA,EACzB,IAAI;AAAA,IACF,WAAW;AAAA,IACX,YAAY,YAAY;AAAA,EAC1B;AAAA,EACA,IAAI;AAAA,IACF,WAAW;AAAA,IACX,YAAY,YAAY;AAAA,EAC1B;AAAA,EACA,IAAI;AAAA,IACF,WAAW;AAAA,IACX,YAAY,YAAY;AAAA,EAC1B;AAAA,EACA,IAAI;AAAA,IACF,WAAW;AAAA,IACX,YAAY,YAAY;AAAA,EAC1B;AAAA,EACA,IAAI;AAAA,IACF,WAAW;AAAA,IACX,YAAY,YAAY;AAAA,EAC1B;AAAA,EACA,OAAO;AAAA,IACL,WAAW;AAAA,IACX,YAAY,YAAY;AAAA,EAC1B;AAAA,EACA,OAAO;AAAA,IACL,WAAW;AAAA,IACX,YAAY,YAAY;AAAA,EAC1B;AAAA,EACA,OAAO;AAAA,IACL,WAAW;AAAA,IACX,YAAY,YAAY;AAAA,EAC1B;AAAA,EACA,OAAO;AAAA,IACL,WAAW;AAAA,IACX,YAAY,YAAY,KAAK;AAAA,EAC/B;AACF;AAGA,IAAM,iBAAiBC;AAAA,EACrB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,OAAO;AAAA,MACT;AAAA,MACA,QAAQ;AAAA,QACN,QAAQ;AAAA,QACR,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,IACR;AAAA,EACF;AACF;AA6BA,IAAM,qBAKD,CAAC,EAAE,QAAQ,UAAU,YAAY,kBAAkB,MACtD,gBAAAD,MAAA,YACE;AAAA,kBAAAD,KAAC,mBAAgB,KAAK,QAAQ;AAAA,EAC9B,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT,WAAW;AAAA,QACX;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA;AAAA,EACH;AAAA,GACF;AAGF,IAAM,qBAID,CAAC,EAAE,UAAU,YAAY,kBAAkB,MAC9C,gBAAAC,MAAA,YACE;AAAA,kBAAAD,KAAC,mBAAgB,KAAI,IAAG,WAAU,4BAA2B;AAAA,EAC7D,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT,WAAW;AAAA,QACX;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA;AAAA,EACH;AAAA,GACF;AAOF,IAAM,oBAID,CAAC,EAAE,UAAU,YAAY,kBAAkB,MAC9C,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC,WAAW;AAAA,MACT,WAAW;AAAA,MACX;AAAA,MACA;AAAA,IACF;AAAA,IAEC;AAAA;AACH;AAIF,SAAS,YAAY;AAAA,EACnB,aAAa;AAAA,EACb,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,cAAc;AAAA,EACd;AAAA,EACA,UAAU,CAAC;AACb,GAOG;AACD,QAAM,UAAU,EAAE,IAAI,MAAM,IAAI,MAAM,IAAI,KAAK;AAE/C,SACE,gBAAAC,MAAC,SAAI,WAAW,GAAG,gCAAgC,cAAc,GAC9D;AAAA,YAAQ,MAAM,GAAG,UAAU,EAAE,IAAI,CAAC,QAAQ,UACzC;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,QACJ,KAAK;AAAA,QACL,MAAM,QAAQ,IAAI;AAAA,QAClB,WAAU;AAAA,QACV,OAAO;AAAA,UACL,QAAQ,cAAc,QAAQ,IAAI,aAAa;AAAA,QACjD;AAAA;AAAA,IACF,CACD;AAAA,IACA,aAAa,QAAQ,SAAS,cAC7B,gBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,UAAU,IAAI,QAAQ,SAAS,UAAU;AAAA,QACzC,MAAM,QAAQ,IAAI;AAAA,QAClB,WAAU;AAAA,QACV,mBAAkB;AAAA,QAClB,OAAO;AAAA,UACL,QAAQ,cAAc,QAAQ,SAAS,IAAI;AAAA,QAC7C;AAAA;AAAA,IACF;AAAA,KAEJ;AAEJ;AAEA,SAAS,OAAO;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,GAAG;AACL,GAAgB;AACd,QAAM,aAAa,mBAAmB,IAAI;AAE1C,QAAM,sBAAsB,MAAM;AAChC,YAAQ,SAAS;AAAA,MACf,KAAK;AACH,eACE,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,QAAS,MAA2B;AAAA,YACpC;AAAA,YACA;AAAA,YACA;AAAA;AAAA,QACF;AAAA,MAEJ,KAAK;AACH,eACE,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA;AAAA,QACF;AAAA,MAEJ,KAAK;AACH,eACE,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA;AAAA,QACF;AAAA,MAEJ;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAEA,QAAM,gBACJ,gBAAAC,MAAC,SAAI,WAAU,kBACb;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,QACJ,WAAW;AAAA,UACT,WAAW;AAAA,UACX;AAAA,UACA;AAAA,UACA;AAAA,YACE,uBAAuB,YAAY;AAAA,UACrC;AAAA,UACA;AAAA,QACF;AAAA,QAEC,8BAAoB;AAAA;AAAA,IACvB;AAAA,IACC,CAAC,CAAC,UACD,gBAAAA,KAAC,oBAAiB,QAAgB,MAAM,WAAW,YAAY;AAAA,KAEnE;AAGF,MAAI,SAAS;AACX,WACE,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QACT,SAAS;AAAA,QACT,UAAU;AAAA;AAAA,IACZ;AAAA,EAEJ;AAEA,SAAO;AACT;AAGA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAI0C;AACxC,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,eAAe,EAAE,MAAM,OAAO,CAAC,GAAG,SAAS;AAAA,MACxD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,WAAW;AAAA,EAClB;AAAA,EACA,GAAG;AACL,GAAsD;AACpD,SACE,gBAAAA;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA,GAAG;AACL,GAAuD;AACrD,SACE,gBAAAA;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,2BAA2B,SAAS;AAAA,MACjD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,GAA0D;AACxD,SACE,gBAAAA;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;AE9WA,SAAS,kBAAkB;AAWvB,gBAAAG,YAAA;AATG,IAAM,OAAO,WAKlB,CAAC,OAAO,QAAQ;AAChB,QAAM,EAAE,WAAW,UAAU,GAAG,KAAK,IAAI;AAEzC,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ,CAAC;AAED,KAAK,cAAc;;;ACLb,gBAAAC,MAUE,QAAAC,aAVF;AALN,IAAM,iBAAiB,CAAC,UAA+B;AACrD,QAAM,EAAE,QAAQ,MAAM,OAAO,OAAO,OAAO,WAAW,SAAS,gBAAgB,IAAI;AAEnF,SACE,gBAAAA,MAAC,SAAI,WAAW,GAAG,kBAAkB,SAAS,GAC5C;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,UAAU,YAAY,IAAI;AAAA,QAC1B,SAAQ;AAAA,QACR,QAAQ;AAAA,QACR,MAAK;AAAA,QACL;AAAA,QACA;AAAA;AAAA,IACF;AAAA,IAEA,gBAAAC,MAAC,SAAI,WAAU,iBACb;AAAA,sBAAAA,MAAC,SAAI,WAAU,4BACb;AAAA,wBAAAD,KAAC,QAAK,WAAU,+BAA+B,gBAAK;AAAA,QAEnD,QAAQ,gBAAAA,KAAC,SAAM,iBAAG;AAAA,SACrB;AAAA,MAEA,gBAAAA,KAAC,QAAK,WAAU,gEACb,iBACH;AAAA,OACF;AAAA,KACF;AAEJ;AAEA,IAAO,yBAAQ;;;AC3Cf,SAAS,OAAAE,YAAW;AAEpB,SAAS,YAAY;;;ACFrB,OAAO,YAA4C;AACnD,YAAY,WAAW;AACvB,SAAS,cAAc;AA+GnB,SAuBI,YAAAC,WAAA,OAAAC,MAvBJ,QAAAC,aAAA;AA5DJ,SAAS,oBAAoB,OAA8C;AACzE,SAAO,MAAM,SAAS;AACxB;AAEe,SAAR,cAA+B;AAAA,EACpC,cAAc;AAAA,EACd,OAAO;AAAA,EACP,eAAe;AAAA,EACf,OAAO;AAAA,EACP;AAAA,EACA,GAAG;AACL,GAAc;AACZ,QAAM,YAAY,OAA8B,IAAI;AAEpD,QAAM,aAAa,EAAE,GAAG,OAAO,KAAK;AAEpC,QAAM,aAAa,oBAAoB,UAAU;AAGjD,QAAM,mBAAmB,CAAC,kBAA8C;AACtE,YAAQ,eAAe;AAAA,MACrB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAEA,QAAM,mBAAmB,MAAM;AAC7B,cAAU,SAAS,aAAa,CAAC;AACjC,cAAU,SAAS,KAAK;AAAA,EAC1B;AACA,QAAM,mBAAmB,MAAM;AAC7B,QAAI,cAAc,CAAC,WAAW,WAAW;AACvC,gBAAU,SAAS,aAAa,EAAE;AAClC,gBAAU,SAAS,KAAK;AAAA,IAC1B;AAAA,EACF;AAEA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,cAAc,aAAa,mBAAmB;AAAA,MAC9C,cAAc,aAAa,mBAAmB;AAAA,MAC9C,WAAW;AAAA,QACT;AAAA,QACA,iBAAiB,IAAI;AAAA,QACrB;AAAA;AAAA,UAEE,uFACE,CAAC,gBAAgB;AAAA;AAAA,UAGnB,gCAAgC,CAAC,gBAAgB,CAAC;AAAA;AAAA,UAGlD,sLACE,CAAC;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA,SAAC,cACA,gBAAAD,KAAAD,WAAA,EACG,UAAM,eAAS,IAAI,WAAW,UAAU,CAAC,UAAU;AAClD,cAAU,qBAAe,KAAK,GAAG;AAC/B,kBAAM,eAAe;AACrB,mBAAa,mBAAa,cAAc;AAAA,cACtC,WAAW;AAAA,gBACT;AAAA,gBACA,aAAa,OAAO,aAAa;AAAA,cACnC;AAAA,cACA,aAAa;AAAA,YACf,CAAC;AAAA,UACH;AACA,iBAAO;AAAA,QACT,CAAC,GACH;AAAA,QAED,cACC,gBAAAC;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,eAAe,WAAW;AAAA,YAC1B,MAAM,WAAW;AAAA,YACjB,UAAU,WAAW;AAAA;AAAA,QACvB;AAAA;AAAA;AAAA,EAEJ;AAEJ;;;ADzGI,SAQI,OAAAE,MARJ,QAAAC,aAAA;AAlDJ,IAAM,gBAAgBC;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA;AAAA,QAEJ,gBAAgB;AAAA,QAChB,gBAAgB;AAAA,QAChB,oBAAoB;AAAA,QACpB,oBAAoB;AAAA,QACpB,kBACE;AAAA,QACF,kBACE;AAAA,MACJ;AAAA,MACA,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,IACF;AAAA,EACF;AACF;AAmBA,IAAM,QAAQ,CAAC;AAAA,EACb,OAAO;AAAA,EACP;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AACF,MAAkB;AAChB,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT,cAAc,EAAE,MAAM,KAAK,CAAC;AAAA,QAC5B;AAAA,QACA,UAAU,kBAAkB;AAAA,MAC9B;AAAA,MAEC;AAAA,sBACC,gBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA,KAAK,SAAS,MAAM,IAChB,0BACA;AAAA,YACN;AAAA,YAEC;AAAA;AAAA,QACH;AAAA,QAED;AAAA,QACA,cACC,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA,KAAK,SAAS,MAAM,IAChB,0BACA;AAAA,YACN;AAAA,YAEC;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAGA,IAAM,gBAAgBE;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,WACE;AAAA,QACF,aACE;AAAA,QACF,SACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAEA,SAAS,UAAU;AAAA,EACjB;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAC8D;AAC5D,QAAM,OAAO,UAAU,OAAO;AAE9B,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,MAClD,GAAG;AAAA;AAAA,EACN;AAEJ;;;AEpIA,SAAS,oBAAoB;;;ACC7B,YAAY,2BAA2B;AACvC,SAAS,WAAW,wBAAwB;AAC5C,SAAS,oBAAoB;AAOpB,gBAAAG,MAyDL,QAAAC,aAzDK;AAHT,SAAS,aAAa;AAAA,EACpB,GAAG;AACL,GAA4D;AAC1D,SAAO,gBAAAD,KAAuB,4BAAtB,EAA2B,aAAU,iBAAiB,GAAG,OAAO;AAC1E;AAEA,SAAS,oBAAoB;AAAA,EAC3B,kBAAkB;AAAA,EAClB,GAAG;AACL,GAEG;AACD,SACE,gBAAAA;AAAA,IAAuB;AAAA,IAAtB;AAAA,MACC,aAAU;AAAA,MACT,GAAG;AAAA,MACJ,WAAW;AAAA,QACT,MAAM;AAAA,QACN;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,QACpB;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,oBAAoB;AAAA,EAC3B;AAAA,EACA,aAAa;AAAA,EACb,GAAG;AACL,GAA+D;AAC7D,SACE,gBAAAA,KAAuB,8BAAtB,EACC,0BAAAA;AAAA,IAAuB;AAAA,IAAtB;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,YAAY;AAAA,EACZ;AAAA,EACA,GAAG;AACL,GAIG;AACD,SACE,gBAAAC;AAAA,IAAuB;AAAA,IAAtB;AAAA,MACC,aAAU;AAAA,MACV,cAAY;AAAA,MACZ,gBAAc;AAAA,MACd,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACA,aAAa,gBAAAD,KAAC,aAAU,WAAU,qCAAoC;AAAA;AAAA;AAAA,EACzE;AAEJ;;;ADxEA,SAAS,QAAAE,aAAY;AACrB,OAAOC,YAAW;AA6BV,SAOF,YAAAC,WAPE,OAAAC,OAOF,QAAAC,aAPE;AAbR,IAAM,uBACJ;AACF,IAAM,qBACJ;AACF,IAAM,sBACJ;AACF,IAAM,aAAa;AAGnB,IAAM,cAAc,CAAC,EAAE,KAAK,MAAoC;AAC9D,MAAI,KAAK,UAAU;AACjB,WACE,gBAAAD,MAAC,UAAK,WAAU,SACd,0BAAAA,MAAC,UAAK,WAAW,qBAAsB,eAAK,UAAS,GACvD;AAAA,EAEJ;AAEA,MAAI,KAAK,aAAa;AACpB,WACE,gBAAAC,MAAAF,WAAA,EACE;AAAA,sBAAAC,MAAC,UAAK,WAAW,qBAAsB,eAAK,aAAY;AAAA,MACvD,KAAK;AAAA,OACR;AAAA,EAEJ;AAEA,SAAO,gBAAAA,MAAC,UAAK,WAAU,iBAAiB,eAAK,OAAM;AACrD;AAGA,IAAM,wBAAwB,CAAC,EAAE,KAAK,MAAoC;AACxE,MAAI,KAAK,UAAU;AACjB,WACE,gBAAAA,MAAC,kBAAe,WAAW,YACzB,0BAAAA,MAAC,eAAY,MAAY,GAC3B;AAAA,EAEJ;AAEA,SACE,gBAAAA,MAAC,kBAAe,MAAM,KAAK,MAAM,WAAW,YAC1C,0BAAAA,MAAC,eAAY,MAAY,GAC3B;AAEJ;AAEA,IAAM,aAAa,CAAC,EAAE,MAAM,MAAuB;AACjD,QAAM,cAAc,MAAM;AACxB,UAAM,QAAQ,MAAM,CAAC;AACrB,UAAM,SAAS,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC;AAC9C,UAAM,UAAU,MAAM,MAAM,EAAE;AAE9B,WAAO,MAAM,UAAU,IACrB,gBAAAC,MAAAF,WAAA,EAEE;AAAA,sBAAAC;AAAA,QAAC;AAAA;AAAA,UAEC,WAAW;AAAA,YACT;AAAA,YACA,MAAM,YAAY;AAAA,YAClB,MAAM,eAAe;AAAA,UACvB;AAAA,UAEA,0BAAAA,MAAC,eAAY,MAAM,OAAO;AAAA;AAAA,QAPrB,MAAM;AAAA,MAQb;AAAA,MACA,gBAAAA,MAAC,uBAAoB;AAAA,MAGrB,gBAAAA,MAAC,kBAA8B,WAAW,GAAG,oBAAoB,GAC/D,0BAAAC,MAAC,gBACC;AAAA,wBAAAD,MAAC,uBAAoB,SAAO,MAC1B,0BAAAA,MAAC,sBAAmB,GACtB;AAAA,QACA,gBAAAA,MAAC,uBAAoB,OAAM,SACxB,iBAAO,IAAI,CAAC,SACX,gBAAAA,MAAC,oBACC,0BAAAA,MAAC,kBAAe,MAAM,KAAK,MAAM,WAAW,YAC1C,0BAAAA,MAAC,eAAY,MAAY,GAC3B,KAHqB,KAAK,KAI5B,CACD,GACH;AAAA,SACF,KAdkB,UAepB;AAAA,MACA,gBAAAA,MAAC,uBAAoB;AAAA,MAGpB,QAAQ,IAAI,CAAC,MAAM,QAClB,gBAAAC,MAACH,OAAM,UAAN,EACC;AAAA,wBAAAE;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA,KAAK,eAAe;AAAA,cACpB,KAAK,YAAY;AAAA,cACjB,QAAQ,QAAQ,SAAS,KAAK;AAAA,YAChC;AAAA,YAEA,0BAAAA,MAAC,yBAAsB,MAAY;AAAA;AAAA,QACrC;AAAA,QACC,MAAM,QAAQ,SAAS,KAAK,gBAAAA,MAAC,uBAAoB;AAAA,WAX/B,KAAK,KAY1B,CACD;AAAA,OACH,IAEA,MAAM,IAAI,CAAC,MAAM,QACf,gBAAAC,MAACH,OAAM,UAAN,EACC;AAAA,sBAAAE;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA,KAAK,eAAe;AAAA,YACpB,KAAK,YAAY;AAAA,YACjB,QAAQ,MAAM,SAAS,KAAK;AAAA,UAC9B;AAAA,UAEA,0BAAAA,MAAC,yBAAsB,MAAY;AAAA;AAAA,MACrC;AAAA,MACC,MAAM,MAAM,SAAS,KAAK,gBAAAA,MAAC,uBAAoB;AAAA,SAX7B,KAAK,KAY1B,CACD;AAAA,EAEL;AAEA,SACE,gBAAAA,MAAC,kBACC,0BAAAA,MAAC,kBAAgB,sBAAY,GAAE,GACjC;AAEJ;AAKA,SAAS,eAAe,EAAE,GAAG,MAAM,GAAgC;AACjE,SAAO,gBAAAE,MAAC,SAAI,cAAW,cAAa,aAAU,cAAc,GAAG,OAAO;AACxE;AAEA,SAAS,eAAe,EAAE,WAAW,GAAG,MAAM,GAA+B;AAC3E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,eAAe,EAAE,WAAW,GAAG,MAAM,GAA+B;AAC3E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,oCAAoC,SAAS;AAAA,MAC1D,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,QAAM,OAAO,UAAUC,QAAO;AAE9B,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,2CAA2C,SAAS;AAAA,MACjE,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,eAAe,EAAE,WAAW,GAAG,MAAM,GAAiC;AAC7E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,MAAK;AAAA,MACL,iBAAc;AAAA,MACd,gBAAa;AAAA,MACb,WAAW,GAAG,+BAA+B,SAAS;AAAA,MACrD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,oBAAoB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA+B;AAC7B,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,MAAK;AAAA,MACL,eAAY;AAAA,MACZ,WAAW,GAAG,uBAAuB,SAAS;AAAA,MAC7C,GAAG;AAAA,MAEH,sBAAY,gBAAAA,MAAC,gBAAa;AAAA;AAAA,EAC7B;AAEJ;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,GAAiC;AAC/B,SACE,gBAAAE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,MAAK;AAAA,MACL,eAAY;AAAA,MACZ,WAAW,GAAG,yCAAyC,SAAS;AAAA,MAC/D,GAAG;AAAA,MAEJ;AAAA,wBAAAF,MAAC,UAAK,WAAU,gCAA+B,iBAAG;AAAA,QAClD,gBAAAA,MAAC,UAAK,WAAU,WAAU,kBAAI;AAAA;AAAA;AAAA,EAChC;AAEJ;;;AE3PA,SAAS,QAAAG,aAAY;AACrB,SAAS,OAAAC,YAA8B;AACvC,SAAS,mBAAmB;AAC5B,YAAYC,YAAW;AA8Hf,gBAAAC,OAWA,QAAAC,cAXA;AA/GR,IAAM,iBAAiBC;AAAA,EACrB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA;AAAA;AAAA,QAGP,SACE;AAAA,QACF,WACE;AAAA,QACF,aACE;AAAA,QACF,SACE;AAAA,QACF,OACE;AAAA,QACF,MAAM;AAAA,QACN,aAAa;AAAA,QACb,cAAc;AAAA,QACd,OACE;AAAA,MACJ;AAAA,MACA,MAAM;AAAA,QACJ,IAAI;AAAA;AAAA,QAEJ,IAAI;AAAA;AAAA,QAEJ,IAAI;AAAA;AAAA,MAEN;AAAA,MAEA,OAAO;AAAA,QACL,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,EACF;AACF;AAEA,SAAS,iBACP,MACA,QACA,QACA,UACQ;AACR,MAAI,UAAU,QAAQ;AACpB,QAAI,SAAS,KAAM,QAAO;AAC1B,QAAI,SAAS,KAAM,QAAO;AAC1B,QAAI,SAAS,KAAM,QAAO;AAAA,EAC5B,WAAW,QAAQ;AACjB,QAAI,SAAS,KAAM,QAAO;AAC1B,QAAI,SAAS,KAAM,QAAO;AAC1B,QAAI,SAAS,KAAM,QAAO;AAAA,EAC5B,WAAW,QAAQ;AACjB,QAAI,SAAS,KAAM,QAAO;AAC1B,QAAI,SAAS,KAAM,QAAO;AAC1B,QAAI,SAAS,KAAM,QAAO;AAAA,EAC5B,WAAW,UAAU;AACnB,QAAI,SAAS,KAAM,QAAO;AAC1B,QAAI,SAAS,KAAM,QAAO;AAC1B,QAAI,SAAS,KAAM,QAAO;AAAA,EAC5B;AACA,SAAO;AACT;AAEA,SAAS,OAAO;AAAA,EACd;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA,GAAG;AACL,GAAgB;AACd,QAAM,OAAO,UAAUC,QAAO;AAC9B,QAAM,aAAa,UAAU,aAAa,MAAM;AAEhD,QAAM,cAAc,CAAC,SAA2B;AAC9C,QAAI,CAAC,KAAM,QAAO;AAClB,QAAU,sBAAe,IAAI,GAAG;AAC9B,YAAM,cAAc;AACpB,aAAa,oBAAa,aAAa;AAAA,QACrC,WAAW;AAAA,UACT,YAAY,OAAO,aAAa;AAAA,UAChC,cAAc;AAAA,QAChB;AAAA,MACF,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AAEA,MAAI,YAAY,eAAe,YAAY,cAAc;AACvD,UAAM,aAAa,YAAY;AAE/B,WACE,gBAAAF;AAAA,MAAC;AAAA;AAAA,QACC,gBAAc;AAAA,QACd,aAAU;AAAA,QACV,WAAW,GAAG,qCAAqC;AAAA,QACnD,UAAU;AAAA,QACT,GAAG;AAAA,QAEJ;AAAA,0BAAAD;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT;AAAA,gBACA,eAAe,EAAE,MAAM,UAAU,CAAC;AAAA,cACpC;AAAA,cACA,OAAO;AAAA,gBACL,iBAAiB;AAAA,gBACjB,gBAAgB;AAAA,gBAChB,oBAAoB;AAAA,cACtB;AAAA;AAAA,UACF;AAAA,UACA,gBAAAC;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT,eAAe,EAAE,SAAS,MAAM,UAAU,CAAC;AAAA,gBAC3C,SAAS,QAAQ;AAAA,gBACjB,SAAS,QAAQ;AAAA,gBACjB,SAAS,QAAQ;AAAA,gBACjB,iBAAiB,MAAM,QAAQ,QAAQ,QAAQ;AAAA,gBAC/C;AAAA,kBACE,SAAS,SAAS;AAAA,kBAClB,gEACE;AAAA,kBACF,uGACE,CAAC;AAAA,gBACL;AAAA,cACF;AAAA,cAEC;AAAA,0BAAU,aAAa,gBAAAD,MAAC,eAAY,WAAU,gBAAe;AAAA,gBAC7D,YAAY,MAAM;AAAA,gBAClB;AAAA,gBACA,YAAY,MAAM;AAAA;AAAA;AAAA,UACrB;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AAEA,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,gBAAc;AAAA,MACd,aAAU;AAAA,MACV,WAAW;AAAA,QACT,eAAe,EAAE,SAAS,MAAM,UAAU,CAAC;AAAA,QAC3C,iBAAiB,QAAQ,MAAM,QAAQ,QAAQ,YAAY,KAAK;AAAA,MAClE;AAAA,MACA,UAAU;AAAA,MACT,GAAG;AAAA,MAEH;AAAA,kBAAU,aAAa,gBAAAD,MAAC,eAAY,WAAU,gBAAe;AAAA,QAC7D,YAAY,MAAM;AAAA,QAClB;AAAA,QACA,YAAY,MAAM;AAAA;AAAA;AAAA,EACrB;AAEJ;;;ACtLA,SAAS,QAAAI,aAAY;AACrB,SAAS,OAAAC,YAA8B;AAIvC,SAAS,eAAAC,oBAAmB;AAwExB,SAU0B,OAAAC,OAV1B,QAAAC,cAAA;AA3DJ,IAAM,qBAAqBC;AAAA,EACzB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,SACE;AAAA,QACF,aACE;AAAA,MACJ;AAAA,MACA,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MACA,OAAO;AAAA,QACL,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,EACF;AACF;AAEA,SAAS,qBACP,MACA,QACA,QACA,UACQ;AACR,MAAI,SAAS,MAAM;AACjB,QAAI,UAAU,OAAQ,QAAO;AAAA,aACpB,OAAQ,QAAO;AAAA,aACf,OAAQ,QAAO;AAAA,aACf,SAAU,QAAO;AAAA,EAC5B;AACA,SAAO;AACT;AAEA,SAAS,WAAW;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA,GAAG;AACL,GAAoB;AAClB,QAAM,OAAO,UAAUC,QAAO;AAE9B,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,MAAK;AAAA,MACL,WAAW;AAAA,QACT,mBAAmB,EAAE,SAAS,MAAM,UAAU,CAAC;AAAA,QAC/C,qBAAqB,QAAQ,MAAM,QAAQ,QAAQ,YAAY,KAAK;AAAA,MACtE;AAAA,MACA,UAAU,UAAU,aAAa,MAAM;AAAA,MACtC,GAAG;AAAA,MAEH;AAAA,kBAAU,aAAa,gBAAAD,MAACD,cAAA,EAAY,WAAU,gBAAe;AAAA,QAC7D,UAAU;AAAA,QACV;AAAA,QACA,UAAU;AAAA;AAAA;AAAA,EACb;AAEJ;;;AC7FA,SAAS,QAAAK,aAAY;AACrB,SAAS,OAAAC,YAA8B;AA4CnC,SAUE,OAAAC,OAVF,QAAAC,cAAA;AA7BJ,IAAM,qBAAqBC;AAAA,EACzB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,MAAM;AAAA,QACN,aAAa;AAAA,QACb,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAEA,SAAS,WAAW;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,UAAU;AAAA,EACV;AAAA,EACA,GAAG;AACL,GAAoB;AAClB,QAAM,OAAO,UAAUC,QAAO;AAE9B,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,mBAAmB,EAAE,QAAQ,CAAC,GAAG,WAAW;AAAA,QACxD,uEACE;AAAA,QACF,2BAA2B,UAAU;AAAA,MACvC,CAAC;AAAA,MACD,iBAAe;AAAA,MACd,GAAG;AAAA,MAEH;AAAA,kBAAU;AAAA,QACX,gBAAAD,MAAC,UAAM,UAAS;AAAA,QACf,UAAU;AAAA;AAAA;AAAA,EACb;AAEJ;;;AChDS,gBAAAI,aAAA;AAPM,SAAR,kBAAmC;AAAA,EACxC;AAAA,EACA;AACF,GAGG;AACD,SAAO,gBAAAA,MAAC,WAAS,GAAG,SAAS,SAAS,QAAQ;AAChD;;;ACZA,YAAYC,YAAW;AACvB,SAAoB,WAAW,4BAA4B;AAG3D;AAAA,EACE,mBAAAC;AAAA,EACA;AAAA,EACA,oBAAAC;AAAA,OACK;AAsHK,gBAAAC,aAAA;AAnHZ,SAAS,SAAS;AAAA,EAChB;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,QAAM,oBAAoB,qBAAqB;AAC/C,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,QACP;AAAA,MACF;AAAA,MACA;AAAA,MACA,YAAY;AAAA,QACV,qBAAqB,CAAC,SACpB,KAAK,eAAe,WAAW,EAAE,OAAO,QAAQ,CAAC;AAAA,QACnD,GAAG;AAAA,MACL;AAAA,MACA,YAAY;AAAA,QACV,MAAM,GAAG,SAAS,kBAAkB,IAAI;AAAA,QACxC,QAAQ;AAAA,UACN;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,OAAO,GAAG,8BAA8B,kBAAkB,KAAK;AAAA,QAC/D,KAAK;AAAA,UACH;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,iBAAiB;AAAA,UACf,eAAe,EAAE,SAAS,cAAc,CAAC;AAAA,UACzC;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,aAAa;AAAA,UACX,eAAe,EAAE,SAAS,cAAc,CAAC;AAAA,UACzC;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,eAAe;AAAA,UACb;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,eAAe;AAAA,UACb;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,UAAU,GAAG,8BAA8B,kBAAkB,QAAQ;AAAA,QACrE,eAAe;AAAA,UACb;AAAA,UACA,kBAAkB,UACd,iBACA;AAAA,UACJ,kBAAkB;AAAA,QACpB;AAAA,QACA,OAAO;AAAA,QACP,UAAU,GAAG,QAAQ,kBAAkB,QAAQ;AAAA,QAC/C,SAAS;AAAA,UACP;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,MAAM,GAAG,oBAAoB,kBAAkB,IAAI;AAAA,QACnD,oBAAoB;AAAA,UAClB;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,aAAa;AAAA,UACX;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,KAAK;AAAA,UACH;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,aAAa;AAAA,UACX;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,cAAc,GAAG,gBAAgB,kBAAkB,YAAY;AAAA,QAC/D,WAAW;AAAA,UACT;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,OAAO;AAAA,UACL;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,SAAS;AAAA,UACP;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,UAAU;AAAA,UACR;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,QAAQ,GAAG,aAAa,kBAAkB,MAAM;AAAA,QAChD,GAAG;AAAA,MACL;AAAA,MACA,YAAY;AAAA,QACV,MAAM,CAAC,EAAE,WAAAC,YAAW,SAAS,GAAGC,OAAM,MAAM;AAC1C,iBACE,gBAAAF;AAAA,YAAC;AAAA;AAAA,cACC,aAAU;AAAA,cACV,KAAK;AAAA,cACL,WAAW,GAAGC,UAAS;AAAA,cACtB,GAAGC;AAAA;AAAA,UACN;AAAA,QAEJ;AAAA,QACA,SAAS,CAAC,EAAE,WAAAD,YAAW,aAAa,GAAGC,OAAM,MAAM;AACjD,cAAI,gBAAgB,QAAQ;AAC1B,mBACE,gBAAAF,MAAC,mBAAgB,WAAW,GAAG,UAAUC,UAAS,GAAI,GAAGC,QAAO;AAAA,UAEpE;AACA,cAAI,gBAAgB,SAAS;AAC3B,mBACE,gBAAAF;AAAA,cAACG;AAAA,cAAA;AAAA,gBACC,WAAW,GAAG,UAAUF,UAAS;AAAA,gBAChC,GAAGC;AAAA;AAAA,YACN;AAAA,UAEJ;AACA,iBACE,gBAAAF,MAACI,kBAAA,EAAgB,WAAW,GAAG,UAAUH,UAAS,GAAI,GAAGC,QAAO;AAAA,QAEpE;AAAA,QACA,WAAW;AAAA,QACX,YAAY,CAAC,EAAE,UAAU,GAAGA,OAAM,MAAM;AACtC,iBACE,gBAAAF,MAAC,QAAI,GAAGE,QACN,0BAAAF,MAAC,SAAI,WAAU,mEACZ,UACH,GACF;AAAA,QAEJ;AAAA,QACA,GAAG;AAAA,MACL;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA2C;AACzC,QAAM,oBAAoB,qBAAqB;AAC/C,QAAM,MAAY,cAA0B,IAAI;AAChD,EAAM,iBAAU,MAAM;AACpB,QAAI,UAAU,QAAS,KAAI,SAAS,MAAM;AAAA,EAC5C,GAAG,CAAC,UAAU,OAAO,CAAC;AACtB,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,YAAU,IAAI,KAAK,mBAAmB;AAAA,MACtC,wBACE,UAAU,YACV,CAAC,UAAU,eACX,CAAC,UAAU,aACX,CAAC,UAAU;AAAA,MAEb,oBAAkB,UAAU;AAAA,MAC5B,kBAAgB,UAAU;AAAA,MAC1B,qBAAmB,UAAU;AAAA,MAC7B,WAAW;AAAA,QACT;AAAA,QACA,kBAAkB;AAAA,QAClB;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACpMI,gBAAAK,aAAA;AAFJ,SAAS,KAAK,EAAE,WAAW,GAAG,MAAM,GAAgC;AAClE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,UAAU,EAAE,WAAW,GAAG,MAAM,GAAgC;AACvE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,wCAAwC,SAAS;AAAA,MAC9D,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,gBAAgB,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC7E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,iCAAiC,SAAS;AAAA,MACvD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAgC;AACzE,SAAO,gBAAAA,MAAC,SAAI,aAAU,gBAAe,WAAuB,GAAG,OAAO;AACxE;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,2CAA2C,SAAS;AAAA,MACjE,GAAG;AAAA;AAAA,EACN;AAEJ;;;AC3EA,OAAO,sBAEA;AACP,SAAS,aAAa,gBAAAC,qBAAoB;AAC1C,YAAYC,YAAW;AAkHjB,gBAAAC,OA8DF,QAAAC,cA9DE;AAxFN,IAAM,kBAAwB,qBAA2C,IAAI;AAE7E,SAAS,cAAc;AACrB,QAAM,UAAgB,kBAAW,eAAe;AAEhD,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AAEA,SAAO;AACT;AAEA,SAAS,SAAS;AAAA,EAChB,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAgD;AAC9C,QAAM,CAAC,aAAa,GAAG,IAAI;AAAA,IACzB;AAAA,MACE,GAAG;AAAA,MACH,MAAM,gBAAgB,eAAe,MAAM;AAAA,IAC7C;AAAA,IACA;AAAA,EACF;AACA,QAAM,CAAC,eAAe,gBAAgB,IAAU,gBAAS,KAAK;AAC9D,QAAM,CAAC,eAAe,gBAAgB,IAAU,gBAAS,KAAK;AAE9D,QAAM,WAAiB,mBAAY,CAACC,SAAqB;AACvD,QAAI,CAACA,KAAK;AACV,qBAAiBA,KAAI,cAAc,CAAC;AACpC,qBAAiBA,KAAI,cAAc,CAAC;AAAA,EACtC,GAAG,CAAC,CAAC;AAEL,QAAM,aAAmB,mBAAY,MAAM;AACzC,SAAK,WAAW;AAAA,EAClB,GAAG,CAAC,GAAG,CAAC;AAER,QAAM,aAAmB,mBAAY,MAAM;AACzC,SAAK,WAAW;AAAA,EAClB,GAAG,CAAC,GAAG,CAAC;AAER,QAAM,gBAAsB;AAAA,IAC1B,CAAC,UAA+C;AAC9C,UAAI,MAAM,QAAQ,aAAa;AAC7B,cAAM,eAAe;AACrB,mBAAW;AAAA,MACb,WAAW,MAAM,QAAQ,cAAc;AACrC,cAAM,eAAe;AACrB,mBAAW;AAAA,MACb;AAAA,IACF;AAAA,IACA,CAAC,YAAY,UAAU;AAAA,EACzB;AAEA,EAAM,iBAAU,MAAM;AACpB,QAAI,CAAC,OAAO,CAAC,OAAQ;AACrB,WAAO,GAAG;AAAA,EACZ,GAAG,CAAC,KAAK,MAAM,CAAC;AAEhB,EAAM,iBAAU,MAAM;AACpB,QAAI,CAAC,IAAK;AACV,aAAS,GAAG;AACZ,QAAI,GAAG,UAAU,QAAQ;AACzB,QAAI,GAAG,UAAU,QAAQ;AAEzB,WAAO,MAAM;AACX,WAAK,IAAI,UAAU,QAAQ;AAAA,IAC7B;AAAA,EACF,GAAG,CAAC,KAAK,QAAQ,CAAC;AAElB,SACE,gBAAAF;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,aACE,gBAAgB,MAAM,SAAS,MAAM,aAAa;AAAA,QACpD;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MAEA,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,kBAAkB;AAAA,UAClB,WAAW,GAAG,YAAY,SAAS;AAAA,UACnC,MAAK;AAAA,UACL,wBAAqB;AAAA,UACrB,aAAU;AAAA,UACT,GAAG;AAAA,UAEH;AAAA;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,gBAAgB,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC7E,QAAM,EAAE,aAAa,YAAY,IAAI,YAAY;AAEjD,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,WAAU;AAAA,MACV,aAAU;AAAA,MAEV,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA,gBAAgB,eAAe,UAAU;AAAA,YACzC;AAAA,UACF;AAAA,UACC,GAAG;AAAA;AAAA,MACN;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,aAAa,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC1E,QAAM,EAAE,YAAY,IAAI,YAAY;AAEpC,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,wBAAqB;AAAA,MACrB,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA,gBAAgB,eAAe,SAAS;AAAA,QACxC;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA,UAAU;AAAA,EACV,OAAO;AAAA,EACP,GAAG;AACL,GAAwC;AACtC,QAAM,EAAE,aAAa,YAAY,cAAc,IAAI,YAAY;AAE/D,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,gBAAgB,eACZ,sCACA;AAAA,QACJ;AAAA,MACF;AAAA,MACA,UAAU,CAAC;AAAA,MACX,SAAS;AAAA,MACR,GAAG;AAAA,MAEJ;AAAA,wBAAAD,MAAC,eAAY;AAAA,QACb,gBAAAA,MAAC,UAAK,WAAU,WAAU,4BAAc;AAAA;AAAA;AAAA,EAC1C;AAEJ;AAEA,SAAS,aAAa;AAAA,EACpB;AAAA,EACA,UAAU;AAAA,EACV,OAAO;AAAA,EACP,GAAG;AACL,GAAwC;AACtC,QAAM,EAAE,aAAa,YAAY,cAAc,IAAI,YAAY;AAE/D,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,gBAAgB,eACZ,uCACA;AAAA,QACJ;AAAA,MACF;AAAA,MACA,UAAU,CAAC;AAAA,MACX,SAAS;AAAA,MACR,GAAG;AAAA,MAEJ;AAAA,wBAAAD,MAACG,eAAA,EAAa;AAAA,QACd,gBAAAH,MAAC,UAAK,WAAU,WAAU,wBAAU;AAAA;AAAA;AAAA,EACtC;AAEJ;;;ACrOA,YAAY,uBAAuB;AACnC,SAAS,aAAAI,YAAW,aAAa;;;ACDjC,YAAY,oBAAoB;AAU5B,gBAAAC,aAAA;AALJ,SAASC,OAAM;AAAA,EACb;AAAA,EACA,GAAG;AACL,GAAqD;AACnD,SACE,gBAAAD;AAAA,IAAgB;AAAA,IAAf;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;AD0BY,gBAAAE,OAON,QAAAC,cAPM;AA/BZ,SAAS,SAAS;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAkB;AAChB,SACE,gBAAAA,OAAC,SAAI,WAAU,sCACb;AAAA,oBAAAD;AAAA,MAAmB;AAAA,MAAlB;AAAA,QACC,aAAU;AAAA,QACV,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,IAAI,MAAM,MAAM;AAAA,QAChB,SAAS,MAAM;AAAA,QACf,iBACE,MAAM;AAAA,QAEP,GAAG;AAAA,QAEJ,0BAAAA;AAAA,UAAmB;AAAA,UAAlB;AAAA,YACC,aAAU;AAAA,YACV,WAAU;AAAA,YAET,gBAAM,gBACL,gBAAAA,MAAC,SAAM,WAAU,YAAW,IAE5B,gBAAAA,MAACE,YAAA,EAAU,WAAU,YAAW;AAAA;AAAA,QAEpC;AAAA;AAAA,IACF;AAAA,IAEA,gBAAAD,OAAC,SAAI,WAAU,uBACZ;AAAA,cAAQ,gBAAAD,MAACG,QAAA,EAAM,SAAS,MAAM,MAAM,OAAQ,iBAAM,IAAW;AAAA,MAC7D,WACC,gBAAAH;AAAA,QAACG;AAAA,QAAA;AAAA,UACC,SAAS,MAAM,MAAM;AAAA,UACrB,WAAU;AAAA,UAET;AAAA;AAAA,MACH,IACE;AAAA,OACN;AAAA,KACF;AAEJ;;;AEjEA,SAAS,OAAAC,YAA8B;AACvC,SAAS,SAAS;AAmGd,SAaU,OAAAC,OAbV,QAAAC,cAAA;AAzEJ,IAAM,eAAeC;AAAA,EACnB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,WAAW;AAAA,MACb;AAAA,MACA,OAAO;AAAA,QACL,OACE;AAAA,QACF,KAAK;AAAA,QACL,QACE;AAAA,QACF,OACE;AAAA,QACF,QACE;AAAA,QACF,MAAM;AAAA,QACN,OACE;AAAA,QACF,SACE;AAAA,QACF,MAAM;AAAA,QACN,MAAM;AAAA,QACN,KAAK;AAAA,QACL,MAAM;AAAA,QACN,QACE;AAAA,QACF,QACE;AAAA,QACF,QACE;AAAA,QACF,SACE;AAAA,QACF,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,EACF;AACF;AAGA,SAAS,KAAK;AAAA,EACZ;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAYK;AACH,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT,aAAa,EAAE,MAAM,MAAM,CAAC;AAAA,QAC5B;AAAA,QACA;AAAA,QACA;AAAA,UACE,UAAU,OAAO,CAAC,CAAC;AAAA,UACnB,QAAQ,CAAC,CAAC;AAAA,QACZ;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA,eAAO,gBAAAD,MAAC,OAAI,OAAc,WAAU,UAAS;AAAA,QAC7C,QACC,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,aAAa;AAAA,YACb,WAAW;AAAA,cACT;AAAA,cACA,oBAAoB;AAAA,YACtB;AAAA,YACA,OACE;AAAA,cACE,CAAC,aAAa,IACX,SAAS,aAAa,UACnB,yCACA,+BAA+B,SAAS,OAAO;AAAA,cACrD,GAAG,oBAAoB;AAAA,YACzB;AAAA,YAED,GAAG;AAAA,YAEH;AAAA;AAAA,QACH;AAAA,QAED,UACC,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,QAAQ;AAAA,YACR,UAAU,YAAY,KAAK;AAAA,YAC3B,SAAS;AAAA;AAAA,QACX;AAAA,QAED,SACC,gBAAAA,MAAC,OAAE,WAAU,qDACV,iBACH;AAAA,QAED,YACC,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAM;AAAA,YACN,WAAU;AAAA,YACV,SAAS,CAAC,MAAM;AACd,kBAAI,CAAC,SAAU;AACf,uBAAS,QAAQ,CAAC;AAAA,YACpB;AAAA;AAAA,QACF;AAAA,QAED;AAAA;AAAA;AAAA,EACH;AAEJ;AAKA,IAAM,cAAcG,KAAI,6BAA6B;AAAA,EACnD,UAAU;AAAA,IACR,OAAO;AAAA,MACL,OAAO;AAAA,MACP,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,OAAO;AAAA,EACT;AACF,CAAC;AAED,SAAS,IAAI;AAAA,EACX;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA8D;AAC5D,SAAO,gBAAAC,MAAC,SAAI,WAAW,GAAG,YAAY,EAAE,MAAM,CAAC,GAAG,SAAS,GAAI,GAAG,OAAO;AAC3E;;;ACvMA,SAAS,WAAW,wBAAwB;AAC5C,SAAS,OAAO,gBAAgB,kBAAkB;AAClD,YAAYC,YAAW;AAGvB,SAAS,aAAAC,kBAAiB;;;ACP1B,YAAY,sBAAsB;AAQzB,gBAAAC,aAAA;AAHT,SAAS,QAAQ;AAAA,EACf,GAAG;AACL,GAAuD;AACrD,SAAO,gBAAAA,MAAkB,uBAAjB,EAAsB,aAAU,WAAW,GAAG,OAAO;AAC/D;AAEA,SAAS,eAAe;AAAA,EACtB,GAAG;AACL,GAA0D;AACxD,SAAO,gBAAAA,MAAkB,0BAAjB,EAAyB,aAAU,mBAAmB,GAAG,OAAO;AAC1E;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,GAAG;AACL,GAA0D;AACxD,SACE,gBAAAA,MAAkB,yBAAjB,EACC,0BAAAA;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;;;ADSQ,SAWE,OAAAC,OAXF,QAAAC,cAAA;AArBD,SAAS,SAAS;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA,WAAW;AACb,GAAkB;AAChB,QAAM,CAAC,MAAM,OAAO,IAAU,gBAAS,KAAK;AAC5C,QAAM,aAAmB,cAA0B,IAAI;AACvD,QAAM,CAAC,cAAc,eAAe,IAAU,gBAAiB;AAE/D,EAAAC,WAAU,MAAM;AACd,QAAI,QAAQ,WAAW,SAAS;AAC9B,sBAAgB,WAAW,QAAQ,WAAW;AAAA,IAChD;AAAA,EACF,GAAG,CAAC,IAAI,CAAC;AAET,SACE,gBAAAD,OAAC,WAAQ,MAAY,cAAc,SACjC;AAAA,oBAAAD,MAAC,kBAAe,SAAO,MACrB,0BAAAC;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,iBAAe;AAAA,QACf,WAAW,GAAG,0BAA0B,SAAS;AAAA,QACjD;AAAA,QAEC;AAAA,kBACG,QAAQ,KAAK,CAAC,WAAW,OAAO,UAAU,KAAK,GAAG,QAClD;AAAA,UACJ,gBAAAD,MAAC,kBAAe,WAAU,cAAa;AAAA;AAAA;AAAA,IACzC,GACF;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAO,eAAe,EAAE,OAAO,aAAa,IAAI;AAAA,QAEhD,0BAAAC,OAAC,WACC;AAAA,0BAAAD,MAAC,gBAAa,aAA0B,WAAU,OAAM;AAAA,UACxD,gBAAAC,OAAC,eACC;AAAA,4BAAAD,MAAC,gBAAa,8BAAgB;AAAA,YAC9B,gBAAAA,MAAC,gBACE,kBAAQ,IAAI,CAAC,WACZ,gBAAAC;AAAA,cAAC;AAAA;AAAA,gBAEC,OAAO,OAAO;AAAA,gBACd,UAAU,CAAC,iBAAiB;AAC1B,2BAAS,iBAAiB,QAAQ,KAAK,YAAY;AACnD,0BAAQ,KAAK;AAAA,gBACf;AAAA,gBAEC;AAAA,yBAAO;AAAA,kBACR,gBAAAD;AAAA,oBAAC;AAAA;AAAA,sBACC,WAAW;AAAA,wBACT;AAAA,wBACA,UAAU,OAAO,QAAQ,gBAAgB;AAAA,sBAC3C;AAAA;AAAA,kBACF;AAAA;AAAA;AAAA,cAbK,OAAO;AAAA,YAcd,CACD,GACH;AAAA,aACF;AAAA,WACF;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;AAEO,SAAS,QAAQ;AAAA,EACtB;AAAA,EACA,GAAG;AACL,GAAkD;AAChD,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA,GAAG;AACL,GAAwD;AACtD,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAU;AAAA,MAEV;AAAA,wBAAAD,MAAC,cAAW,WAAU,8BAA6B;AAAA,QACnD,gBAAAA;AAAA,UAAC,iBAAiB;AAAA,UAAjB;AAAA,YACC,aAAU;AAAA,YACV,WAAW;AAAA,cACT;AAAA,cACA;AAAA,YACF;AAAA,YACC,GAAG;AAAA;AAAA,QACN;AAAA;AAAA;AAAA,EACF;AAEJ;AAEO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,GAAuD;AACrD,SACE,gBAAAA;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,aAAa;AAAA,EAC3B,GAAG;AACL,GAAwD;AACtD,SACE,gBAAAA;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,WAAU;AAAA,MACT,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA,GAAG;AACL,GAAwD;AACtD,SACE,gBAAAA;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,GAAuD;AACrD,SACE,gBAAAA;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;AE7LA,YAAY,0BAA0B;AACtC,SAAS,aAAAG,YAAW,oBAAAC,mBAAkB,kBAAkB;AAQ/C,gBAAAC,OAqDL,QAAAC,cArDK;AAHT,SAAS,YAAY;AAAA,EACnB,GAAG;AACL,GAA2D;AACzD,SAAO,gBAAAD,MAAsB,2BAArB,EAA0B,aAAU,gBAAgB,GAAG,OAAO;AACxE;AAEA,SAAS,mBAAmB;AAAA,EAC1B,GAAG;AACL,GAA8D;AAC5D,SACE,gBAAAA,MAAsB,8BAArB,EAA6B,aAAU,wBAAwB,GAAG,OAAO;AAE9E;AA2EA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,GAA8D;AAC5D,SACE,gBAAAE,MAAsB,6BAArB,EACC,0BAAAA;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAGG;AACD,SACE,gBAAAA;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,cAAY;AAAA,MACZ,gBAAc;AAAA,MACd,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACpIA,SAAS,cAAc;AACvB,SAAS,oBAAoB;AAC7B,SAAS,mBAAmB;AAuClB,SASiB,OAAAC,OATjB,QAAAC,cAAA;AAbH,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA,kBAAkB;AAAA,EAClB,GAAG;AACL,GAAyB;AACvB,SACE,gBAAAD,MAAC,SAAI,WAAU,kBACb,0BAAAC,OAAC,WACC;AAAA,oBAAAD,MAAC,kBAAe,SAAO,MACrB,0BAAAC;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QACT,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACC,GAAG;AAAA,QAEH;AAAA,wBAAc,gBAAAD,MAAC,gBAAa,MAAM,IAAI;AAAA,UACvC,gBAAAA,MAAC,SAAI,WAAU,yBACZ,iBACC,OAAO,MAAM,YAAY,IAEzB,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT,CAAC,QACC;AAAA,cACJ;AAAA,cAEC;AAAA;AAAA,UACH,GAEJ;AAAA,UAEA,gBAAAA,MAAC,iBAAc,WAAU,WACvB,0BAAAA,MAAC,eAAY,GACf;AAAA;AAAA;AAAA,IACF,GACF;AAAA,IAEA,gBAAAC;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAM;AAAA,QAEN;AAAA,0BAAAD;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,UAAU;AAAA,cACV,UAAU;AAAA,cACV,cAAY;AAAA,cACX,GAAI,cAAc,EAAE,UAAU,EAAE,QAAQ,oBAAI,KAAK,EAAE,EAAE,IAAI,CAAC;AAAA;AAAA,UAC7D;AAAA,UACC,mBAAmB,QAClB,gBAAAA,MAAC,SAAI,WAAU,+CACb,0BAAAA;AAAA,YAAC;AAAA;AAAA,cACC,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,WAAU;AAAA,cACV,SAAS,CAAC,MAAM;AACd,kBAAE,gBAAgB;AAClB,wBAAQ,MAAS;AAAA,cACnB;AAAA,cACD;AAAA;AAAA,UAED,GACF;AAAA;AAAA;AAAA,IAEJ;AAAA,KACF,GACF;AAEJ;;;ACxGA,SAAS,aAAa;AACtB,YAAYE,YAAW;;;ACAvB,SAAS,OAAAC,YAAW;AAiEd,gBAAAC,aAAA;AAhDN,IAAM,qBAAqBC;AAAA,EACzB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MACA,QAAQ;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;AAEe,SAAR,WAA4B;AAAA,EACjC;AAAA,EACA,UAAU;AAAA,EACV,OAAO;AAAA,EACP,UAAU;AAAA,EACV,SAAS;AAAA,EACT;AAAA,EACA,cAAc;AAAA,EACd,eAAe;AAAA,EACf,GAAG;AACL,GAAoB;AAClB,QAAM,WACJ,SAAS,OACL,OACA,SAAS,OACP,OACA,SAAS,OACP,OACA,SAAS,OACP,OACA;AACZ,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAW,GAAG,mBAAmB,EAAE,MAAM,SAAS,OAAO,CAAC,GAAG,SAAS;AAAA,MACtE,SAAS;AAAA,MACR,GAAG;AAAA,MAEJ,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA,WAAW,GAAG;AAAA;AAAA,UAEd,CAAC;AAAA,UACD,MAAM;AAAA,UAEL;AAAA;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;;;AC9EA,SAAS,OAAAE,YAA8B;AAiE7B,SAME,OAAAC,OANF,QAAAC,cAAA;AA7DV,IAAM,4BAA4BC;AAAA,EAChC;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,KAAK;AAAA,QACL,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAEA,IAAM,uBAAuBA;AAAA,EAC3B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,KAAK;AAAA,QACL,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAWO,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA2B;AACzB,QAAM,aAAa,KAAK,IAAI,KAAK,IAAK,QAAQ,MAAO,KAAK,CAAC,GAAG,GAAG;AAEjE,MAAI,YAAY,UAAU;AACxB,UAAM,SAAS;AACf,UAAM,gBAAgB,IAAI,KAAK,KAAK;AACpC,UAAM,kBAAkB;AACxB,UAAM,mBAAmB,gBAAiB,aAAa,MAAO;AAE9D,WACE,gBAAAD,OAAC,SAAI,WAAU,gDACb;AAAA,sBAAAD;AAAA,QAAC;AAAA;AAAA,UACC,WAAW,GAAG,0BAA0B,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,UAC9D,GAAG;AAAA,UAEJ,0BAAAC;AAAA,YAAC;AAAA;AAAA,cACC,WAAU;AAAA,cACV,SAAQ;AAAA,cACR,MAAK;AAAA,cAGL;AAAA,gCAAAD;AAAA,kBAAC;AAAA;AAAA,oBACC,IAAG;AAAA,oBACH,IAAG;AAAA,oBACH,GAAG;AAAA,oBACH,QAAO;AAAA,oBACP,aAAa;AAAA,oBACb,WAAU;AAAA;AAAA,gBACZ;AAAA,gBAEA,gBAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,IAAG;AAAA,oBACH,IAAG;AAAA,oBACH,GAAG;AAAA,oBACH,QAAO;AAAA,oBACP,aAAa;AAAA,oBACb;AAAA,oBACA;AAAA,oBACA,eAAc;AAAA,oBACd,WAAW;AAAA,sBACT,qBAAqB,EAAE,QAAQ,CAAC;AAAA,sBAChC;AAAA,oBACF;AAAA;AAAA,gBACF;AAAA;AAAA;AAAA,UACF;AAAA;AAAA,MACF;AAAA,MAGC,kBACC,gBAAAC,OAAC,UAAK,WAAU,iEACb;AAAA,aAAK,MAAM,UAAU;AAAA,QAAE;AAAA,SAC1B;AAAA,OAEJ;AAAA,EAEJ;AAGA,SACE,gBAAAD,MAAC,SAAI,WAAU,UAEb,0BAAAC,OAAC,SAAI,WAAU,2BACb;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT,0BAA0B,EAAE,QAAQ,CAAC;AAAA,UACrC;AAAA,UACA;AAAA,QACF;AAAA,QACC,GAAG;AAAA,QAEJ,0BAAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,GAAG,qBAAqB,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,YAC1D,OAAO,EAAE,OAAO,GAAG,UAAU,IAAI;AAAA;AAAA,QACnC;AAAA;AAAA,IACF;AAAA,IAGC,kBACC,gBAAAC,OAAC,UAAK,WAAU,wDACb;AAAA,WAAK,MAAM,UAAU;AAAA,MAAE;AAAA,OAC1B;AAAA,KAEJ,GACF;AAEJ;;;AF4EQ,gBAAAE,OA2CE,QAAAC,cA3CF;AA3LD,IAAM,YAAY,CAAC;AAAA,EACxB;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA,GAAG;AACL,MAAsB;AACpB,QAAM,WAAiB,cAAyB,IAAI;AACpD,QAAM,CAAC,cAAc,eAAe,IAAU;AAAA,IAC5C,QAAQ;AAAA,EACV;AACA,QAAM,CAAC,kBAAkB,mBAAmB,IAAU,gBAAS,CAAC;AAChE,QAAM,eAAqB,cAA8B,IAAI;AAG7D,EAAM,iBAAU,MAAM;AACpB,QAAI,CAAC,cAAc;AACjB,0BAAoB,CAAC;AACrB,UAAI,aAAa,SAAS;AACxB,sBAAc,aAAa,OAAO;AAClC,qBAAa,UAAU;AAAA,MACzB;AAAA,IACF;AAAA,EACF,GAAG,CAAC,YAAY,CAAC;AAGjB,EAAM,iBAAU,MAAM;AACpB,QAAI,CAAC,MAAM;AAET,sBAAgB,IAAI;AACpB,0BAAoB,CAAC;AACrB,UAAI,aAAa,SAAS;AACxB,sBAAc,aAAa,OAAO;AAClC,qBAAa,UAAU;AAAA,MACzB;AACA;AAAA,IACF;AAGA,UAAM,SAAS,GAAG,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,YAAY;AAC7D,UAAM,gBAAgB,eAClB,GAAG,aAAa,IAAI,IAAI,aAAa,IAAI,IAAI,aAAa,YAAY,KACtE;AAGJ,QAAI,WAAW,eAAe;AAE5B,sBAAgB,IAAI;AACpB,0BAAoB,CAAC;AACrB,UAAI,aAAa,SAAS;AACxB,sBAAc,aAAa,OAAO;AAClC,qBAAa,UAAU;AAAA,MACzB;AAAA,IACF,WAAW,iBAAiB,MAAM;AAEhC,sBAAgB,IAAI;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,MAAM,YAAY,CAAC;AAEvB,QAAM,mBAAmB,CAAC,MAA2C;AACnE,UAAM,QAAQ,EAAE,OAAO;AACvB,QAAI,CAAC,SAAS,MAAM,WAAW,GAAG;AAChC,sBAAgB,IAAI;AACpB,qBAAe,IAAI;AACnB;AAAA,IACF;AAEA,UAAM,UAAU,MAAM,CAAC;AACvB,oBAAgB,OAAO;AACvB,mBAAe,OAAO;AAAA,EACxB;AAEA,QAAM,eAAe,CAAC,MAAwB;AAC5C,MAAE,eAAe;AACjB,MAAE,gBAAgB;AAGlB,QAAI,SAAS,SAAS;AACpB,eAAS,QAAQ,QAAQ;AAAA,IAC3B;AAGA,oBAAgB,IAAI;AACpB,wBAAoB,CAAC;AACrB,QAAI,aAAa,SAAS;AACxB,oBAAc,aAAa,OAAO;AAClC,mBAAa,UAAU;AAAA,IACzB;AAIA,eAAW;AAEX,mBAAe,IAAI;AAAA,EACrB;AAGA,EAAM,iBAAU,MAAM;AACpB,WAAO,MAAM;AACX,UAAI,aAAa,SAAS;AACxB,sBAAc,aAAa,OAAO;AAClC,qBAAa,UAAU;AAAA,MACzB;AAAA,IACF;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,mBAAmB,MAAM;AAC7B,aAAS,SAAS,MAAM;AAAA,EAC1B;AAEA,QAAM,WAAW,eAAe,YAAY,aAAa,IAAI,IAAI;AAGjE,EAAM,iBAAU,MAAM;AAEpB,QAAI,aAAa,SAAS;AACxB,oBAAc,aAAa,OAAO;AAClC,mBAAa,UAAU;AAAA,IACzB;AAEA,QAAI,YAAY;AACd,0BAAoB,GAAG;AACvB;AAAA,IACF;AAEA,QAAI,CAAC,WAAW;AACd,0BAAoB,CAAC;AACrB;AAAA,IACF;AAGA,UAAM,iBAAiB;AACvB,UAAM,WAAW;AACjB,UAAM,QAAQ;AACd,UAAM,eAAe,WAAW;AAChC,UAAM,YAAY,iBAAiB;AAEnC,wBAAoB,CAAC;AAErB,QAAI,kBAAkB;AACtB,iBAAa,UAAU,YAAY,MAAM;AACvC,yBAAmB;AACnB,UAAI,mBAAmB,gBAAgB;AACrC,0BAAkB;AAClB,4BAAoB,cAAc;AAClC,YAAI,aAAa,SAAS;AACxB,wBAAc,aAAa,OAAO;AAClC,uBAAa,UAAU;AAAA,QACzB;AAAA,MACF,OAAO;AACL,4BAAoB,eAAe;AAAA,MACrC;AAAA,IACF,GAAG,YAAY;AAEf,WAAO,MAAM;AACX,UAAI,aAAa,SAAS;AACxB,sBAAc,aAAa,OAAO;AAClC,qBAAa,UAAU;AAAA,MACzB;AAAA,IACF;AAAA,EACF,GAAG,CAAC,WAAW,UAAU,CAAC;AAE1B,QAAM,qBAAqB,aAAa,MAAM;AAC9C,QAAM,mBAAmB,aAAa,CAAC;AAEvC,QAAM,cAAc,QAChB,oEACA,mBACE,iCACA;AAEN,QAAM,UAAU,eACZ,6BACA;AAEJ,SACE,gBAAAA,OAAC,SAAI,WAAW,GAAG,8BAA8B,SAAS,GACvD;AAAA,aACC,gBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QACT,WAAW;AAAA,UACT;AAAA,UACA,WACI,kCACA;AAAA,QACN;AAAA,QAEC;AAAA;AAAA,IACH;AAAA,IAIF,gBAAAC;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,YACE,qDAAqD;AAAA,YACrD,iDAAiD,CAAC;AAAA,YAClD,uFACE,SAAS,CAAC;AAAA,YACZ,mFACE,CAAC,SAAS,CAAC,YAAY;AAAA,UAC3B;AAAA,QACF;AAAA,QAEA;AAAA,0BAAAD;AAAA,YAAC;AAAA;AAAA,cACC,KAAK;AAAA,cACL,MAAK;AAAA,cACL;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,UAAU;AAAA,cACV,WAAU;AAAA,cACT,GAAG;AAAA;AAAA,UACN;AAAA,UAEC,CAAC;AAAA;AAAA,YAEA,gBAAAC;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,SAAS;AAAA,gBACT;AAAA,gBACA,SAAQ;AAAA,gBACR,WAAW;AAAA,kBACT;AAAA,kBACA,QACI,sFACA;AAAA,gBACN;AAAA,gBAEA;AAAA,kCAAAD,MAAC,UAAK,WAAU,0BAAyB,yBAAW;AAAA,kBACpD,gBAAAA,MAAC,UAAK,WAAU,iCAAgC,4BAEhD;AAAA;AAAA;AAAA,YACF;AAAA;AAAA;AAAA,YAGA,gBAAAC,OAAC,SAAI,WAAU,oDACb;AAAA,8BAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAW,GAAG,gDAAgD;AAAA,oBAC5D,cAAc;AAAA,oBACd,kBAAkB,CAAC;AAAA,kBACrB,CAAC;AAAA,kBACD,SAAS,CAAC,WAAW,mBAAmB;AAAA,kBACxC,MAAM,CAAC,WAAW,WAAW;AAAA,kBAC7B,UAAU,CAAC,WAAW,IAAI;AAAA,kBAC1B,WACE,CAAC,WACG,CAAC,MAAM;AACL,wBAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,KAAK;AACtC,wBAAE,eAAe;AACjB,uCAAiB;AAAA,oBACnB;AAAA,kBACF,IACA;AAAA,kBAIN;AAAA,oCAAAD,MAAC,OAAE,WAAU,yEAAwE,sBAErF;AAAA,oBAGA,gBAAAA;AAAA,sBAAC;AAAA;AAAA,wBACC,WAAW;AAAA,0BACT;AAAA,0BACA,WACI,kCACA;AAAA,wBACN;AAAA,wBAEC,uBAAa;AAAA;AAAA,oBAChB;AAAA;AAAA;AAAA,cACF;AAAA,cACA,gBAAAC;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAW,GAAG,kDAAkD;AAAA,oBAC9D,cAAc;AAAA,kBAChB,CAAC;AAAA,kBAGD;AAAA,oCAAAD;AAAA,sBAAC;AAAA;AAAA,wBACC,WAAW;AAAA,0BACT;AAAA,0BACA,WACI,kCACA;AAAA,wBACN;AAAA,wBAEC;AAAA;AAAA,oBACH;AAAA,oBAGC,oBACC,gBAAAA;AAAA,sBAAC;AAAA;AAAA,wBACC,SAAQ;AAAA,wBACR,OAAO;AAAA;AAAA,oBACT;AAAA,oBAID,CAAC,YAAY,YACZ,gBAAAA;AAAA,sBAAC;AAAA;AAAA,wBACC,SAAQ;AAAA,wBACR,MAAK;AAAA,wBACL,SAAS;AAAA,wBACT,cAAW;AAAA,wBACX,MAAM,gBAAAA,MAAC,SAAM,WAAU,UAAS;AAAA;AAAA,oBAClC;AAAA;AAAA;AAAA,cAEJ;AAAA,eACF;AAAA;AAAA;AAAA;AAAA,IAEJ;AAAA,IAGC,cACC,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA,QACI,6BACA,WACE,kCACA;AAAA,QACR;AAAA,QAEC;AAAA;AAAA,IACH;AAAA,KAEJ;AAEJ;;;AG/WA,SAAS,UAAU,SAAAE,cAAa;AAChC,SAAS,YAAY;AACrB,OAAOC,UAAS,iBAAAC,gBAAe,eAAAC,cAAa,cAAAC,aAAY,YAAAC,iBAAgB;AACxE,SAA6B,mBAAmB;AAEhD,SAAS,aAAAC,kBAAiB;AAiNlB,SACE,OAAAC,OADF,QAAAC,cAAA;AA7MR,IAAM,qBAAqB;AAC3B,IAAM,oBAAoB;AAE1B,IAAM,sBAAgD;AAAA,EACpD,mBAAmB,CAAC,MAAM;AAAA,EAC1B,2EAA2E;AAAA,IACzE;AAAA,EACF;AAAA,EACA,sBAAsB,CAAC,MAAM;AAAA,EAC7B,WAAW,CAAC,QAAQ,QAAQ,SAAS,MAAM;AAC7C;AAkBA,IAAM,oBAAoBC;AAAA,EACxB;AACF;AAGO,IAAM,gBAAgB,MAAM;AACjC,QAAM,UAAUC,YAAW,iBAAiB;AAC5C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,sDAAsD;AAAA,EACxE;AACA,SAAO;AACT;AAGA,IAAM,kBAAkB,CAAC,MAAc,kBAAkC;AACvE,QAAM,gBAAwC;AAAA,IAC5C,qBACE;AAAA,IACF,kBAAkB,qBAAqB,aAAa;AAAA,IACpD,kBAAkB;AAAA,EACpB;AACA,SAAO,cAAc,IAAI,KAAK;AAChC;AAuBA,IAAM,aAAa,CAAC;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AACjB,MAAuB;AACrB,QAAM,CAAC,cAAc,eAAe,IAAIC,UAAiB,EAAE;AAG3D,QAAM,wBACH,iBAAiB,sBAAsB,OAAO;AAGjD,QAAM,gBAAgBC,OAAM,QAAQ,MAAM;AACxC,QAAI,UAAU,QAAW;AACvB,aAAO,CAAC;AAAA,IACV;AACA,QAAI,YAAY;AACd,aAAO,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC;AAAA,IACzC;AACA,WAAO,QAAQ,CAAC,KAAa,IAAI,CAAC;AAAA,EACpC,GAAG,CAAC,OAAO,UAAU,CAAC;AAEtB,QAAM,sBAAsBC;AAAA,IAC1B,CAAC,kBAAmC;AAClC,UAAI,cAAc,WAAW,GAAG;AAC9B,wBAAgB,EAAE;AAClB;AAAA,MACF;AAEA,YAAM,QAAQ,cAAc,CAAC,EAAE,OAAO,CAAC;AACvC,sBAAgB,gBAAgB,MAAM,MAAM,aAAa,CAAC;AAAA,IAC5D;AAAA,IACA,CAAC,aAAa;AAAA,EAChB;AAEA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,YAAY;AAAA,IACd,QAAQ,CAAC,UAAkB,aAA8B;AACvD,0BAAoB,QAAQ;AAE5B,aAAO,UAAU,QAAQ;AAGzB,UAAI,UAAU;AACZ,YAAI,YAAY;AAEd,gBAAM,gBAAgB,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC;AACtD,gBAAM,cAAc,CAAC,GAAG,eAAe,GAAG,QAAQ,EAAE;AAAA,YAClD,CAAC,MAAM,OAAO,SACZ,UAAU,KAAK,UAAU,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI;AAAA,UACxD;AACA,mBAAS,YAAY,SAAS,IAAI,cAAc,IAAI;AAAA,QACtD,OAAO;AACL,mBAAS,SAAS,SAAS,IAAI,SAAS,CAAC,IAAI,IAAI;AAAA,QACnD;AAAA,MACF;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,IACR,UAAU,aAAa,YAAY,oBAAoB;AAAA,IACvD,SAAS,wBAAwB;AAAA,IACjC,SAAS;AAAA,IACT;AAAA,EACF,CAAC;AAED,QAAM,mBAAmBA;AAAA,IACvB,CAAC,aAAqB;AAEpB,UAAI,UAAU;AACZ,YAAI,YAAY;AACd,gBAAMC,iBAAgB,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC;AACtD,gBAAMC,gBAAeD,eAAc;AAAA,YACjC,CAAC,SAAS,KAAK,SAAS;AAAA,UAC1B;AACA,mBAASC,cAAa,SAAS,IAAIA,gBAAe,IAAI;AAAA,QACxD,OAAO;AACL,mBAAS,IAAI;AAAA,QACf;AAAA,MACF;AAGA,YAAM,gBAAgB,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC;AACtD,YAAM,eAAe,cAAc;AAAA,QACjC,CAAC,SAAS,KAAK,SAAS;AAAA,MAC1B;AACA,aAAO,cAAc,CAAC,CAAC;AACvB,iBAAW;AAAA,IACb;AAAA,IACA,CAAC,OAAO,QAAQ,UAAU,UAAU,UAAU;AAAA,EAChD;AAEA,SACE,gBAAAR;AAAA,IAAC,kBAAkB;AAAA,IAAlB;AAAA,MACC,OAAO;AAAA,QACL,cACE,iBAAiB,qBAAqB,2BAA2B;AAAA,QACnE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,eAAe,OAAO;AAAA,UACpB,GAAG,cAAc;AAAA,UACjB;AAAA,UACA;AAAA,UACA,gBAAgB,sBAAsB,CAAC,CAAC;AAAA,QAC1C;AAAA,QACA;AAAA,QACA,gBAAgB;AAAA,QAChB;AAAA,MACF;AAAA,MAEA,0BAAAC,OAAC,SAAI,WAAU,6BACb;AAAA,wBAAAA,OAAC,SAAI,WAAU,uBACb;AAAA,0BAAAD,MAAC,WAAM,SAAS,MAAO,iBAAM;AAAA,UAC5B,YAAY,gBAAAA,MAAC,WAAW,UAAX,EAAoB,eAA8B;AAAA,UAC/D,iBACC,gBAAAA,MAAC,kBAAe,IACd,eACF,gBAAAA,MAAC,WAAW,UAAX,EAAoB,IACnB;AAAA,WACN;AAAA,QACA,gBAAAA,MAAC,WAAW,cAAX,EAAwB;AAAA,SAC3B;AAAA;AAAA,EACF;AAEJ;AAkBA,IAAM,eAAe,CAAC;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAyB;AACvB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,cAAc;AAGlB,QAAM,WAAW,CAAC,CAAC;AAGnB,MAAI,UAAU;AACZ,WACE,gBAAAC,OAAC,SAAI,WAAsB,SAAS,gBAAiB,GAAG,cACtD;AAAA,sBAAAD,MAAC,WAAO,GAAG,cAAc,GAAG;AAAA,MAC3B;AAAA,OACH;AAAA,EAEJ;AAGA,MAAI,QAAQ;AACV,WACE,gBAAAC;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACC,GAAG,aAAa;AAAA,QACjB,SAAS,CAAC,MAAM;AACd,YAAE,gBAAgB;AAClB,yBAAe;AAAA,QACjB;AAAA,QACC,GAAG;AAAA,QAEJ;AAAA,0BAAAD,MAAC,WAAO,GAAG,cAAc,GAAG;AAAA,UAC3B,OAAO,WAAW,aACf,OAAO;AAAA,YACL;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC,IACD;AAAA;AAAA;AAAA,IACN;AAAA,EAEJ;AAGA,SACE,gBAAAC,OAAC,SAAI,WAAW,2BAA2B,SAAS,IAAK,GAAG,cAC1D;AAAA,oBAAAD,MAAC,WAAO,GAAG,cAAc,GAAG;AAAA,IAE5B,gBAAAC;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAS;AAAA,QACR,GAAG;AAAA,QACJ,WAAW,GAAG,WAAW,sFAAsF,2EAA2E;AAAA,QAE1L;AAAA,0BAAAD,MAAC,OAAE,WAAU,wDAAuD,yBAEpE;AAAA,UACA,gBAAAA,MAAC,OAAE,WAAU,iCAAgC,4BAAc;AAAA;AAAA;AAAA,IAC7D;AAAA,KACF;AAEJ;AAqBA,IAAM,WAAW,CAAC;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA;AAEF,MAAqB;AACnB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,cAAc;AAGlB,QAAM,WAAW,CAAC,CAAC;AAGnB,MAAI,UAAU;AACZ,WACE,gBAAAC;AAAA,MAAC;AAAA;AAAA,QACE,GAAG,aAAa;AAAA,QACjB,WAAW,kBAAkB,SAAS;AAAA,QACrC,GAAG;AAAA,QAEJ;AAAA,0BAAAD,MAAC,WAAO,GAAG,cAAc,GAAG;AAAA,UAC3B;AAAA;AAAA;AAAA,IACH;AAAA,EAEJ;AAGA,MAAI,QAAQ;AACV,WACE,gBAAAC;AAAA,MAAC;AAAA;AAAA,QACE,GAAG,aAAa;AAAA,QACjB,WAAW,kBAAkB,SAAS;AAAA,QACrC,GAAG;AAAA,QAEJ;AAAA,0BAAAD,MAAC,WAAO,GAAG,cAAc,GAAG;AAAA,UAC3B,OAAO;AAAA,YACN,YAAY;AAAA,YACZ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC;AAAA;AAAA;AAAA,IACH;AAAA,EAEJ;AAGA,MAAI,YAAY,UAAU;AACxB,WACE,gBAAAC;AAAA,MAAC;AAAA;AAAA,QACE,GAAG,aAAa;AAAA,QACjB,WAAW,0EACT,WACI,yCACA,eACE,gCACA,yCACR,IAAI,SAAS;AAAA,QACZ,GAAG;AAAA,QAEJ;AAAA,0BAAAD,MAAC,WAAO,GAAG,cAAc,GAAG;AAAA,UAC5B,gBAAAC,OAAC,SAAI,WAAU,yBACb;AAAA,4BAAAD,MAAC,SAAI,WAAU,gDACb,0BAAAA,MAAC,YAAS,WAAU,uBAAsB,GAC5C;AAAA,YACA,gBAAAC,OAAC,SAAI,WAAU,aACb;AAAA,8BAAAD,MAAC,OAAE,WAAU,uBACV,yBAAe,oBAAoB,qBACtC;AAAA,cACA,gBAAAA,MAAC,OAAE,WAAU,iCAAgC,sCAE7C;AAAA,eACF;AAAA,aACF;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AAGA,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACE,GAAG,aAAa;AAAA,MACjB,WAAW,+IACT,WACI,yCACA,eACE,gCACA,yDACR,IAAI,SAAS;AAAA,MACZ,GAAG;AAAA,MAEJ;AAAA,wBAAAD,MAAC,WAAO,GAAG,cAAc,GAAG;AAAA,QAC5B,gBAAAC,OAAC,SAAI,WAAU,sDACb;AAAA,0BAAAD,MAAC,QAAK,WAAU,uBAAsB;AAAA,UACtC,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAW,gCAAgC,eAAe,kBAAkB,8BAA8B;AAAA,cAEzG,yBAAe,0BAA0B;AAAA;AAAA,UAC5C;AAAA,UACA,gBAAAC,OAAC,SAAI,WAAU,yDACb;AAAA,4BAAAD,MAACS,YAAA,EAAU,WAAU,sDAAqD;AAAA,YAC1E,gBAAAT,MAAC,OAAE,WAAU,0EAAyE,gBAEtF;AAAA,YACA,gBAAAA,MAACS,YAAA,EAAU,WAAU,sDAAqD;AAAA,aAC5E;AAAA,UACA,gBAAAT;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,WAAU;AAAA,cACV,SAAS,CAAC,MAAM;AAGd,kBAAE,gBAAgB;AAClB,+BAAe;AAAA,cACjB;AAAA,cACD;AAAA;AAAA,UAED;AAAA,WACF;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,IAAM,WAAW,MAAM;AACrB,QAAM,EAAE,eAAe,iBAAiB,IAAI,cAAc;AAE1D,MAAI,cAAc,WAAW,EAAG,QAAO;AAEvC,SACE,gBAAAA,MAAC,QAAG,WAAU,kBACX,wBAAc,IAAI,CAAC,SAClB,gBAAAC;AAAA,IAAC;AAAA;AAAA,MAEC,WAAU;AAAA,MAEV;AAAA,wBAAAA,OAAC,SAAI,WAAU,2BACb;AAAA,0BAAAD,MAAC,OAAE,WAAU,4CAA2C,sBAAQ;AAAA,UAChE,gBAAAA,MAAC,OAAG,8BAAoB,KAAK,IAAI,GAAE;AAAA,UACnC,gBAAAA,MAAC,OAAE,WAAU,mCACV,eAAK,OAAO,OAAO,OAChB,IAAI,KAAK,OAAO,MAAM,QAAQ,CAAC,CAAC,OAChC,IAAI,KAAK,OAAO,OAAO,MAAM,QAAQ,CAAC,CAAC,MAC7C;AAAA,WACF;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,SAAS,MAAM,iBAAiB,KAAK,IAAI;AAAA,YACzC,WAAU;AAAA,YAEV,0BAAAA,MAACU,QAAA,EAAM,WAAU,4BAA2B;AAAA;AAAA,QAC9C;AAAA;AAAA;AAAA,IAjBK,KAAK;AAAA,EAkBZ,CACD,GACH;AAEJ;AAEA,IAAM,eAAe,MAAM;AACzB,QAAM,EAAE,aAAa,IAAI,cAAc;AAEvC,MAAI,CAAC,aAAc,QAAO;AAE1B,SAAO,gBAAAV,MAAC,OAAE,WAAU,sCAAsC,wBAAa;AACzE;AAEA,WAAW,WAAW;AACtB,WAAW,eAAe;AAC1B,WAAW,WAAW;AACtB,WAAW,eAAe;AAYnB,IAAM,kBAAkB,CAAC;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA;AAAA,EAChB,oBAAoB;AAAA,EACpB,GAAG;AACL,MAiB6E;AAC3E,SACE,gBAAAW;AAAA,IAAC;AAAA;AAAA,MACC,QAAQ,CAAC,kBAAkB;AACzB,YAAI,UAAU;AACZ,mBAAS,MAAM,aAAa,gBAAgB,cAAc,CAAC,CAAC;AAAA,QAC9D;AAAA,MACF;AAAA,MACA,YAAY,MAAM;AAAA,MAClB,UAAU,MAAM;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,oBAAoB,MAAM;AAAA,MACzB,GAAG;AAAA,MAEH,gBAAM,YACH,gBAAAA,MAAC,WAAW,UAAX,EAAoB,eAA8B,KAChD,gBAAAA,MAAC,WAAW,cAAX,EAAwB;AAAA;AAAA,EAClC;AAEJ;AAEA,gBAAgB,eAAe;AAC/B,gBAAgB,WAAW;AAC3B,gBAAgB,WAAW;AAC3B,gBAAgB,eAAe;;;AC7jB3B,gBAAAC,aAAA;AAHG,SAAS,kBAAkB,OAA+B;AAC/D,QAAM,EAAE,WAAW,UAAU,GAAG,KAAK,IAAI;AACzC,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,wCAAwC,SAAS;AAAA,MAC9D,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;AAEA,kBAAkB,aAAa,SAAS,4BACtC,OACA;AACA,QAAM,EAAE,WAAW,GAAG,KAAK,IAAI;AAC/B,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,oCAAoC,SAAS;AAAA,MAC1D,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACrBI,gBAAAC,aAAA;AAFW,SAAR,KAAsB,EAAE,UAAU,WAAW,GAAG,MAAM,GAAc;AACzE,SACE,gBAAAA,MAAC,SAAI,WAAW,GAAG,0BAA0B,SAAS,GAAI,GAAG,OAC1D,UACH;AAEJ;;;AC8EQ,SACE,OAAAC,OADF,QAAAC,cAAA;AApFR,SAAS,SAAS,KAAuC;AACvD,QAAM,SAAS,4CAA4C,KAAK,GAAG;AACnE,SAAO,SACH;AAAA,IACE,SAAS,OAAO,CAAC,GAAG,EAAE;AAAA,IACtB,SAAS,OAAO,CAAC,GAAG,EAAE;AAAA,IACtB,SAAS,OAAO,CAAC,GAAG,EAAE;AAAA,EACxB,IACA,CAAC,GAAG,GAAG,CAAC;AACd;AAGA,IAAM,YAAY;AAAA,EAChB,KAAK,EAAE,KAAK,WAAW,OAAO,qBAAqB;AAAA,EACnD,QAAQ,EAAE,KAAK,WAAW,OAAO,wBAAwB;AAAA,EACzD,OAAO,EAAE,KAAK,WAAW,OAAO,uBAAuB;AAAA,EACvD,QAAQ,EAAE,KAAK,WAAW,OAAO,wBAAwB;AAAA,EACzD,MAAM,EAAE,KAAK,WAAW,OAAO,sBAAsB;AAAA,EACrD,OAAO,EAAE,KAAK,WAAW,OAAO,uBAAuB;AAAA,EACvD,SAAS,EAAE,KAAK,WAAW,OAAO,yBAAyB;AAAA,EAC3D,MAAM,EAAE,KAAK,WAAW,OAAO,sBAAsB;AAAA,EACrD,MAAM,EAAE,KAAK,WAAW,OAAO,sBAAsB;AAAA,EACrD,KAAK,EAAE,KAAK,WAAW,OAAO,qBAAqB;AAAA,EACnD,MAAM,EAAE,KAAK,WAAW,OAAO,sBAAsB;AAAA,EACrD,QAAQ,EAAE,KAAK,WAAW,OAAO,wBAAwB;AAAA,EACzD,QAAQ,EAAE,KAAK,WAAW,OAAO,wBAAwB;AAAA,EACzD,QAAQ,EAAE,KAAK,WAAW,OAAO,wBAAwB;AAAA,EACzD,SAAS,EAAE,KAAK,WAAW,OAAO,yBAAyB;AAAA,EAC3D,MAAM,EAAE,KAAK,WAAW,OAAO,sBAAsB;AAAA,EACrD,MAAM,EAAE,KAAK,WAAW,OAAO,sBAAsB;AAAA,EACrD,OAAO,EAAE,KAAK,WAAW,OAAO,uBAAuB;AACzD;AAGA,IAAM,cAAc;AAAA,EAClB,IAAI,EAAE,UAAU,MAAe,iBAAiB,KAAK,cAAc,GAAG;AAAA,EACtE,IAAI,EAAE,UAAU,MAAe,iBAAiB,KAAK,cAAc,GAAG;AAAA,EACtE,IAAI,EAAE,UAAU,MAAe,iBAAiB,KAAK,cAAc,GAAG;AAAA,EACtE,IAAI,EAAE,UAAU,MAAe,iBAAiB,KAAK,cAAc,GAAG;AAAA,EACtE,IAAI,EAAE,UAAU,OAAgB,iBAAiB,KAAK,cAAc,GAAG;AAAA,EACvE,IAAI,EAAE,UAAU,OAAgB,iBAAiB,KAAK,cAAc,GAAG;AACzE;AAkBe,SAAR,YAA6B;AAAA,EAClC;AAAA,EACA,QAAQ;AAAA,EACR,OAAO;AAAA,EACP;AAAA,EACA,eAAe;AACjB,GAAqB;AACnB,QAAM,cAAc,UAAU,KAAK;AACnC,QAAM,aAAa,YAAY,IAAI;AACnC,QAAM,CAAC,GAAG,GAAG,CAAC,IAAI,SAAS,YAAY,GAAG;AAC1C,QAAM,aAAa,QAAQ,YAAY,KAAK;AAE5C,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,YAAY,YAAY,SAAS;AAAA,MAC/C,OACE;AAAA,QACE,wBAAwB,eAAe,YAAY,KAAK,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;AAAA,MAChF;AAAA,MAGF,0BAAAC;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACV,OAAO,EAAE,OAAO,MAAM,QAAQ,KAAK;AAAA,UAEnC;AAAA,4BAAAA,OAAC,SAAI,WAAU,qDACb;AAAA,8BAAAD;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAU;AAAA,kBACV,OAAO;AAAA,oBACL,cAAc,GAAG,WAAW,YAAY;AAAA,oBACxC,YAAY,2CAA2C,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC;AAAA,kBACzI;AAAA;AAAA,cACF;AAAA,cACA,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAU;AAAA,kBACV,OAAO;AAAA,oBACL,cAAc,GAAG,WAAW,YAAY;AAAA,oBACxC,iBAAiB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;AAAA,oBACtC,iBAAiB;AAAA,kBACnB;AAAA;AAAA,cACF;AAAA,eACF;AAAA,YAEA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,WAAU;AAAA,gBACV,OAAO;AAAA,kBACL,cAAc,GAAG,WAAW,YAAY;AAAA,kBACxC,WACE;AAAA,kBACF,gBAAgB;AAAA,gBAClB;AAAA;AAAA,YACF;AAAA,YAEA,gBAAAA,MAAC,SAAI,WAAU,0DACb,0BAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,aAAa;AAAA,gBACb,MAAM,WAAW;AAAA,gBACjB,WAAW;AAAA,kBACT,CAAC,eAAe,sCAAsC;AAAA,gBACxD;AAAA,gBACA,OACE;AAAA,kBACE,CAAC,aAAa,GAAG,eAAe,YAAY,KAAK;AAAA,gBACnD;AAAA,gBAGD;AAAA;AAAA,YACH,GACF;AAAA;AAAA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;;;ACxIA,SAAS,YAAY,MAAM,KAAAE,UAAS;AACpC,YAAYC,YAAW;AA8Gb,SA0HN,YAAAC,WA1HM,OAAAC,OAuDA,QAAAC,cAvDA;AAvFH,IAAM,QAAQ,CAAC;AAAA,EACpB;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,eAAe;AAAA,EACf;AAAA,EACA,GAAG;AACL,MAAa;AACX,QAAM,CAAC,UAAU,WAAW,IAAU,gBAAS,KAAK;AACpD,QAAM,CAAC,SAAS,UAAU,IAAU,gBAAS,KAAK;AAClD,QAAM,CAAC,WAAW,YAAY,IAAU,gBAAS,KAAK;AACtD,QAAM,WAAiB,cAAyB,IAAI;AAEpD,QAAM,QAAQ,MAAM,cAAc,KAAK;AAEvC,WAAS,YAAY,GAAqB;AACxC,MAAE,eAAe;AACjB,UAAM,WAAW;AAAA,MACf,QAAQ,EAAE,OAAO,GAAG;AAAA,IACtB,CAAwC;AAAA,EAC1C;AAEA,QAAM,eAA8C;AAAA,IAClD,GAAG;AAAA,IACH,QAAQ,CAAC,MAAM;AACb,UAAI,MAAM,SAAU;AACpB,YAAM,UAAU,MAAM,OAAO,CAAC;AAC9B,iBAAW,KAAK;AAAA,IAClB;AAAA,EACF;AAEA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,cAAc,MAAM;AAClB,YAAI,MAAM,SAAU;AACpB,qBAAa,IAAI;AACjB,YAAI,CAAC,SAAS;AACZ,sBAAY,IAAI;AAAA,QAClB;AAAA,MACF;AAAA,MACA,cAAc,MAAM;AAClB,YAAI,MAAM,SAAU;AACpB,qBAAa,KAAK;AAClB,oBAAY,KAAK;AAAA,MACnB;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA;AAAA,UAEE,8HACE,YAAY,aAAa,CAAC;AAAA;AAAA,UAG5B,2IACE,YAAY,aAAa,CAAC;AAAA;AAAA,UAG5B,0EACE,YAAY,WAAW,CAAC;AAAA;AAAA,UAG1B,4FACE,SAAS,CAAC,MAAM;AAAA;AAAA;AAAA,UAIlB;AAAA;AAAA,UAGA,wEACE,MAAM;AAAA,UAER,4DACE,MAAM,YAAY,YAAY;AAAA,UAChC,2BAA2B,MAAM,YAAY,YAAY;AAAA,QAC3D;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA,iBAAS,SACR,gBAAAD,MAAC,SAAI,WAAU,qFACb,0BAAAA,MAAC,OAAE,WAAU,+DAA8D,sBAE3E,GACF;AAAA,QAGD,cACC,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,gBACE,gJACE,WAAW;AAAA,gBACb,QAAQ,CAAC,WAAW,cAAc,CAAC;AAAA,cACrC;AAAA,cACA,WAAW;AAAA,YACb;AAAA,YAEC,qBAAW;AAAA;AAAA,QACd;AAAA,QAGF,gBAAAC;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,GAAG,0BAA0B;AAAA,cACtC,+BAA+B;AAAA,YACjC,CAAC;AAAA,YAEA;AAAA;AAAA,cACD,gBAAAD;AAAA,gBAAC;AAAA;AAAA,kBACC,KAAK;AAAA,kBACL;AAAA,kBACA,IAAI,MAAM,MAAM,SAAS;AAAA,kBACzB,SAAS,MAAM;AACb,wBAAI,MAAM,SAAU;AACpB,+BAAW,IAAI;AACf,gCAAY,KAAK;AAAA,kBACnB;AAAA,kBACA,aAAU;AAAA,kBACV,WAAW;AAAA,oBACT;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,oBAEA;AAAA,sBACE,uBAAuB;AAAA,sBACvB,uBAAuB;AAAA,sBACvB,uBAAuB,SAAS;AAAA,sBAChC,yBAAyB;AAAA,sBACzB,8CAA8C;AAAA,oBAChD;AAAA,kBACF;AAAA,kBACC,GAAG;AAAA,kBACJ,OAAO,MAAM;AAAA;AAAA,cACf;AAAA,cACC,MAAM,SACL,gBAAAC,OAAC,SAAI,WAAU,8EACZ;AAAA,+BACC,gBAAAD;AAAA,kBAAC;AAAA;AAAA,oBACC,UAAU;AAAA,oBACV,iBAAe;AAAA,oBACf,WAAU;AAAA,oBAEV,0BAAAA,MAAC,YAAS,OAAO,MAAM,OAAiB;AAAA;AAAA,gBAC1C;AAAA,gBAGD,gBACC,gBAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,UAAU;AAAA,oBACV,kBAAgB;AAAA,oBAChB,WAAU;AAAA,oBAEV,0BAAAA;AAAA,sBAACE;AAAA,sBAAA;AAAA,wBACC,SAAS,CAAC,MAAM;AACd,sCAAY,CAAC;AAAA,wBACf;AAAA,wBACA,WAAU;AAAA,wBACV,MAAM;AAAA;AAAA,oBACR;AAAA;AAAA,gBACF;AAAA,iBAEJ;AAAA;AAAA;AAAA,QAEJ;AAAA,QAEC,cACC,gBAAAF;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,gBACE,gIACE,WAAW;AAAA,gBACb,QAAQ,CAAC,WAAW;AAAA,cACtB;AAAA,cACA,WAAW;AAAA,YACb;AAAA,YAEC,qBAAW;AAAA;AAAA,QACd;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAEA,SAAS,SAAS,EAAE,MAAM,GAAsB;AAC9C,QAAM,CAAC,QAAQ,SAAS,IAAU,gBAAS,KAAK;AAEhD,WAAS,WAAW,GAAqB;AACvC,MAAE,eAAe;AACjB,QAAI;AACF,gBAAU,UAAU,UAAU,KAAe;AAC7C,gBAAU,IAAI;AAEd,iBAAW,MAAM;AACf,kBAAU,KAAK;AAAA,MACjB,GAAG,IAAI;AAAA,IACT,SAAS,OAAO;AACd,gBAAU,KAAK;AACf,cAAQ,MAAM,KAAK;AAAA,IACrB;AAAA,EACF;AAEA,SACE,gBAAAA,MAAAD,WAAA,EACG,WAAC,SACA,gBAAAC,MAAC,QAAK,WAAU,kBAAiB,SAAS,YAAY,MAAM,IAAI,IAEhE,gBAAAA,MAAC,cAAW,WAAU,kBAAiB,MAAM,IAAI,GAErD;AAEJ;;;ACrNI,SAYI,OAAAG,OAZJ,QAAAC,cAAA;AAdW,SAAR,WAA4B;AAAA,EACjC;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAoB;AAClB,QAAM,sBAAsB,MAAM;AAChC,WAAO,KAAK,MAAM,QAAQ;AAAA,EAC5B;AAEA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,cAAY,QAAQ,IAAI;AAAA,MACxB,MAAK;AAAA,MACL,MAAK;AAAA,MACL,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA,SAAS,SAAS,sBAAsB,MAAM;AAAA,MAC7C,GAAG;AAAA,MAEH;AAAA,sBACC,gBAAAD,MAAC,iBAAc,WAAU,+CACtB,sBACH;AAAA,QAEF,gBAAAA,MAAC,SAAI,WAAU,WAAW,UAAS;AAAA,QAClC,cACC,gBAAAA,MAAC,iBAAc,WAAU,+CACtB,sBACH;AAAA;AAAA;AAAA,EAEJ;AAEJ;;;ACpDA;AAAA,EACE;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,YAAAE,WAAU,eAAAC,oBAAmB;AAgD9B,gBAAAC,OAYE,QAAAC,cAZF;AAvBR,SAAS,eAAe;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,QAAM,CAAC,MAAM,OAAO,IAAIC,UAAS,KAAK;AAEtC,QAAM,cAAcC,aAAY,MAAM;AACpC,YAAQ,CAAC,SAAS,CAAC,IAAI;AACvB,oBAAgB,QAAQ,KAAK;AAAA,EAC/B,GAAG,CAAC,QAAQ,OAAO,aAAa,CAAC;AAEjC,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,UAAU,EAAE,KAAK,OAAO,KAAK,KAAK,OAAO,IAAI;AAAA,MAC7C,OAAO,OAAO;AAAA,MACd,SAAS;AAAA,MAER;AAAA,eAAO,SACN,gBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,YAAY,OAAO;AAAA,YACnB,aAAa,OAAO;AAAA,YACpB,YAAW;AAAA;AAAA,QACb;AAAA,QAGD,SAAS,OAAO,SAAS,OAAO,gBAC/B,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,UAAU,EAAE,KAAK,OAAO,KAAK,KAAK,OAAO,IAAI;AAAA,YAC7C,cAAc,MAAM,QAAQ,KAAK;AAAA,YAEjC,0BAAAC,OAAC,SAAI,WAAU,YACZ;AAAA,qBAAO,SACN,gBAAAD,MAAC,QAAG,WAAU,8BAA8B,iBAAO,OAAM;AAAA,cAE1D,OAAO,eACN,gBAAAA,MAAC,OAAE,WAAU,+CACV,iBAAO,aACV;AAAA,eAEJ;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAEA,IAAM,iBAAiB,EAAE,KAAK,SAAS,KAAK,QAAQ;AAE7C,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA,SAAS;AAAA,EACT,OAAO;AAAA,EACP,UAAU,CAAC;AAAA,EACX;AAAA,EACA,SAAS;AAAA,EACT,QAAQ;AAAA,EACR;AAAA,EACA,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB;AACF,GAAa;AACX,SACE,gBAAAA,MAAC,eAAY,QACX,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,iDAAiD,SAAS;AAAA,MACxE,OAAO,EAAE,QAAQ,MAAM;AAAA,MAEvB,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,eAAe;AAAA,UACf,aAAa;AAAA,UACb;AAAA,UACA;AAAA,UACA;AAAA,UACA,OAAO,EAAE,OAAO,QAAQ,QAAQ,OAAO;AAAA,UAEtC,kBAAQ,IAAI,CAAC,QAAQ,MACpB,gBAAAA;AAAA,YAAC;AAAA;AAAA,cAEC;AAAA,cACA,OAAO;AAAA,cACP;AAAA;AAAA,YAHK,GAAG,OAAO,GAAG,IAAI,OAAO,GAAG,IAAI,CAAC;AAAA,UAIvC,CACD;AAAA;AAAA,MACH;AAAA;AAAA,EACF,GACF;AAEJ;;;AC5HA,SAAS,OAAAI,aAA8B;AACvC,SAAS,OAAO,YAAY;AAC5B,YAAYC,aAAW;AA2Ib,qBAAAC,WACE,OAAAC,OAsBI,QAAAC,cAvBN;AAvHV,IAAM,gBAAgBC;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,aAAa;AAAA,QACX,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,OAAO;AAAA,MACT;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAEA,IAAM,QAAc;AAAA,EAClB,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA,MAAM;AAAA,IACN,OAAO;AAAA,IACP;AAAA,IACA,iBAAiB;AAAA,IACjB;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,IACZ;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,CAAC,WAAW,YAAY,IAAU,iBAAS,KAAK;AACtD,UAAM,CAAC,aAAa,cAAc,IAAU,iBAAS,KAAK;AAC1D,UAAM,CAAC,YAAY,aAAa,IAAU,iBAAS,KAAK;AACxD,UAAM,CAAC,cAAc,eAAe,IAAU,iBAAS,KAAK;AAC5D,UAAM,WAAiB,eAAyB,IAAI;AAEpD,UAAM,aAAa,CAAC,MAAwB;AAC1C,QAAE,eAAe;AACjB,QAAE,gBAAgB;AAClB,UAAI,SAAS,SAAS;AACpB,iBAAS,QAAQ,KAAK;AACtB,wBAAgB,IAAI;AAAA,MACtB;AACA,UAAI,QAAQ;AACV,eAAO;AAAA,MACT;AAAA,IACF;AAEA,UAAM,cAAc,CAAC,MAAwB;AAC3C,QAAE,eAAe;AACjB,QAAE,gBAAgB;AAClB,UAAI,SAAS,SAAS;AACpB,iBAAS,QAAQ,MAAM;AACvB,wBAAgB,KAAK;AAAA,MACvB;AACA,UAAI,SAAS;AACX,gBAAQ;AAAA,MACV;AAAA,IACF;AAEA,UAAM,kBAAkB,MAAM;AAC5B,sBAAgB,IAAI;AACpB,UAAI,QAAQ;AACV,eAAO;AAAA,MACT;AAAA,IACF;AAEA,UAAM,mBAAmB,MAAM;AAC7B,sBAAgB,KAAK;AACrB,UAAI,SAAS;AACX,gBAAQ;AAAA,MACV;AAAA,IACF;AAGA,IAAM,kBAAU,MAAM;AACpB,UAAI,SAAS,WAAW,SAAS,SAAS;AACxC,YAAI,aAAa,SAAS,QAAQ,QAAQ;AACxC,mBAAS,QAAQ,KAAK;AAAA,QACxB,WAAW,CAAC,aAAa,CAAC,SAAS,QAAQ,QAAQ;AACjD,mBAAS,QAAQ,MAAM;AAAA,QACzB;AAAA,MACF;AAAA,IACF,GAAG,CAAC,WAAW,IAAI,CAAC;AAEpB,UAAM,kBAAkB,MAAM;AAC5B,qBAAe,IAAI;AAAA,IACrB;AAEA,UAAM,mBAAmB,MAAM;AAC7B,oBAAc,IAAI;AAAA,IACpB;AAEA,WACE,gBAAAF;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW,GAAG,cAAc,EAAE,aAAa,QAAQ,CAAC,GAAG,SAAS;AAAA,QAChE,cAAc,MAAM,aAAa,IAAI;AAAA,QACrC,cAAc,MAAM,aAAa,KAAK;AAAA,QACrC,GAAG;AAAA,QAEH,mBAAS,UACR,gBAAAC,OAAAF,WAAA,EACE;AAAA,0BAAAC;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cACA;AAAA,cACA;AAAA,cACA,QAAQ;AAAA,cACR,SAAS;AAAA,cACT,WAAW;AAAA,gBACT;AAAA,gBACA;AAAA,kBACE,aAAa,CAAC,eAAe,CAAC;AAAA,kBAC9B,eAAe;AAAA,gBACjB;AAAA,cACF;AAAA,cACA,OAAO,EAAE,UAAU;AAAA;AAAA,UACrB;AAAA,UACC,CAAC,eAAe,CAAC,cAChB,gBAAAA,MAAC,SAAI,WAAU,kFACb,0BAAAA,MAAC,SAAI,WAAU,gFAA+E,GAChG;AAAA,UAED,cACC,gBAAAA,MAAC,SAAI,WAAU,kFACb,0BAAAC,OAAC,SAAI,WAAU,6BACb;AAAA,4BAAAD,MAAC,SAAI,WAAU,YAAW,uBAAE;AAAA,YAC5B,gBAAAA,MAAC,SAAI,WAAU,WAAU,4BAAc;AAAA,aACzC,GACF;AAAA,WAEJ,IAEA,gBAAAC,OAAAF,WAAA,EACE;AAAA,0BAAAC;AAAA,YAAC;AAAA;AAAA,cACC,KAAK;AAAA,cACL;AAAA,cACA,WAAU;AAAA,cACV,OAAO,EAAE,UAAU;AAAA,cACnB,QAAQ;AAAA,cACR,SAAS;AAAA,cACT,SAAS,MAAM,gBAAgB,KAAK;AAAA,cACpC,SAAQ;AAAA;AAAA,UACV;AAAA,UACC,kBACC,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT;AAAA,gBACA;AAAA,kBACE,eAAe,aAAa;AAAA,kBAC5B,aAAa,CAAC,aAAa,CAAC;AAAA,gBAC9B;AAAA,cACF;AAAA,cAEA,0BAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,MACE,eACE,gBAAAA,MAAC,SAAM,WAAU,iBAAgB,IAEjC,gBAAAA,MAAC,QAAK,WAAU,sBAAqB;AAAA,kBAGzC,SAAS,eAAe,cAAc;AAAA,kBACtC,SAAQ;AAAA,kBACR,MAAK;AAAA,kBACL,SAAS;AAAA,kBACT,cAAY,eAAe,gBAAgB;AAAA,kBAC3C,WAAU;AAAA;AAAA,cACZ;AAAA;AAAA,UACF;AAAA,WAEJ;AAAA;AAAA,IAEJ;AAAA,EAEJ;AACF;AAEA,MAAM,cAAc;;;ACxNpB,SAAS,eAAAG,cAAa,aAAa,KAAAC,UAAS;AAC5C,YAAYC,aAAW;AAqIb,SAeQ,OAAAC,OAfR,QAAAC,cAAA;AA5GH,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA,QAAQ;AACV,GAAqB;AACnB,QAAM,CAAC,MAAM,OAAO,IAAU,iBAAS,KAAK;AAC5C,QAAM,CAAC,YAAY,aAAa,IAAU,iBAAS,EAAE;AACrD,QAAM,WAAiB,eAAyB,IAAI;AACpD,QAAM,eAAqB,eAAuB,IAAI;AAEtD,QAAM,iBAAiB,CAAC,UAAkB;AACxC,aAAS,SAAS,OAAO,CAAC,MAAM,MAAM,KAAK,CAAC;AAAA,EAC9C;AAEA,QAAM,eAAe,CAAC,UAAkB;AACtC,QAAI,CAAC,SAAS,SAAS,KAAK,GAAG;AAC7B,eAAS,CAAC,GAAG,UAAU,KAAK,CAAC;AAAA,IAC/B;AACA,kBAAc,EAAE;AAChB,eAAW,MAAM,SAAS,SAAS,MAAM,GAAG,CAAC;AAAA,EAC/C;AAEA,QAAM,eAAe,YAAY;AAC/B,QACE,WAAW,KAAK,KAChB,CAAC,QAAQ;AAAA,MACP,CAAC,WACC,OAAO,MAAM,YAAY,MAAM,WAAW,YAAY,EAAE,KAAK;AAAA,IACjE,GACA;AACA,UAAI;AACF,cAAM,cAAc,SAAS,WAAW,KAAK,CAAC;AAC9C,iBAAS,CAAC,GAAG,UAAU,WAAW,KAAK,CAAC,CAAC;AACzC,sBAAc,EAAE;AAChB,mBAAW,MAAM,SAAS,SAAS,MAAM,GAAG,CAAC;AAAA,MAC/C,SAASC,QAAO;AACd,gBAAQ,MAAM,0BAA0BA,MAAK;AAAA,MAC/C;AAAA,IACF;AAAA,EACF;AAEA,QAAM,gBAAgB,OAAO,MAA6C;AACxE,QAAI,EAAE,QAAQ,WAAW,WAAW,KAAK,GAAG;AAC1C,QAAE,eAAe;AACjB,YAAM,iBAAiB,QAAQ;AAAA,QAC7B,CAAC,WACC,OAAO,MAAM,YAAY,MAAM,WAAW,YAAY,EAAE,KAAK;AAAA,MACjE;AACA,UAAI,kBAAkB,CAAC,SAAS,SAAS,eAAe,KAAK,GAAG;AAC9D,qBAAa,eAAe,KAAK;AAAA,MACnC,WAAW,cAAc,SAAS;AAChC,cAAM,aAAa;AAAA,MACrB;AAAA,IACF,WAAW,EAAE,QAAQ,eAAe,CAAC,cAAc,SAAS,SAAS,GAAG;AACtE,QAAE,eAAe;AACjB,qBAAe,SAAS,SAAS,SAAS,CAAC,CAAC;AAAA,IAC9C,WAAW,EAAE,QAAQ,UAAU;AAC7B,cAAQ,KAAK;AACb,eAAS,SAAS,KAAK;AAAA,IACzB;AAAA,EACF;AAEA,QAAM,kBAAwB,gBAAQ,MAAM;AAC1C,WAAO,QAAQ;AAAA,MACb,CAAC,WACC,OAAO,MAAM,YAAY,EAAE,SAAS,WAAW,YAAY,CAAC,KAC5D,CAAC,SAAS,SAAS,OAAO,KAAK;AAAA,IACnC;AAAA,EACF,GAAG,CAAC,SAAS,YAAY,QAAQ,CAAC;AAElC,QAAM,YACJ,cAAc,WACd,WAAW,KAAK,KAChB,CAAC,QAAQ;AAAA,IACP,CAAC,WACC,OAAO,MAAM,YAAY,MAAM,WAAW,YAAY,EAAE,KAAK;AAAA,EACjE,KACA,CAAC,SAAS,SAAS,WAAW,KAAK,CAAC;AAEtC,QAAM,mBAAmB,MAAM;AAC7B,YAAQ,IAAI;AAAA,EACd;AAEA,QAAM,uBAAuB,CAAC,MAAwB;AACpD,MAAE,eAAe;AACjB,aAAS,SAAS,MAAM;AAAA,EAC1B;AAEA,SACE,gBAAAD,OAAC,WAAQ,MAAY,cAAc,SACjC;AAAA,oBAAAD,MAAC,kBAAe,SAAO,MACrB,0BAAAC;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,WAAW;AAAA,UACT;AAAA,UACA,SACE;AAAA,UACF,YACE;AAAA,UACF;AAAA,QACF;AAAA,QACA,SAAS;AAAA,QAET;AAAA,0BAAAA,OAAC,SAAI,WAAU,4CACZ;AAAA,qBAAS,IAAI,CAAC,UAAU;AACvB,oBAAM,SAAS,QAAQ,KAAK,CAAC,QAAQ,IAAI,UAAU,KAAK;AACxD,qBACE,gBAAAD;AAAA,gBAAC;AAAA;AAAA,kBAEC,OAAO,QAAQ,SAAS;AAAA,kBACxB,SAAS,CAAC,MAAM;AACd,sBAAE,gBAAgB;AAClB,mCAAe,KAAK;AAAA,kBACtB;AAAA,kBACA,WAAW;AAAA,oBACT,YAAY;AAAA,kBACd;AAAA,kBAEA,0BAAAA,MAACG,IAAA,EAAE,WAAU,wDAAuD;AAAA;AAAA,gBAV/D;AAAA,cAWP;AAAA,YAEJ,CAAC;AAAA,YACD,gBAAAH;AAAA,cAAC;AAAA;AAAA,gBACC,KAAK;AAAA,gBACL,OAAO;AAAA,gBACP,UAAU,CAAC,MAAM,cAAc,EAAE,OAAO,KAAK;AAAA,gBAC7C,WAAW;AAAA,gBACX,SAAS;AAAA,gBACT,aACE,SAAS,WAAW,IAChB,cAAc,UACZ,yBACA,cACF;AAAA,gBAEN,WAAU;AAAA,gBACV;AAAA;AAAA,YACF;AAAA,aACF;AAAA,UACC,SAAS,SAAS,KACjB,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAU;AAAA,cACV,SAAS,MAAM,SAAS,CAAC,CAAC;AAAA;AAAA,UAC5B;AAAA,UAED,CAAC,cAAc,WACd,gBAAAA,MAACI,cAAA,EAAY,WAAU,uCAAsC;AAAA;AAAA;AAAA,IAEjE,GACF;AAAA,IACA,gBAAAJ;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAM;AAAA,QAEN,0BAAAA,MAAC,SAAI,WAAU,OACb,0BAAAA,MAAC,SAAI,WAAU,iCACZ,0BAAgB,WAAW,KAAK,CAAC,YAChC,gBAAAA,MAAC,SAAI,WAAU,kCACZ,uBAAa,sBAAsB,6BACtC,IAEA,gBAAAC,OAAC,SAAI,WAAU,8CACZ;AAAA,wBAAc,WACb,gBAAAD,MAAC,OAAE,WAAU,0CAAyC,kCAEtD;AAAA,UAED,gBAAgB,IAAI,CAAC,WACpB,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,OAAO,OAAO;AAAA,cAEd,SAAS,MAAM,aAAa,OAAO,KAAK;AAAA,cACxC,WAAU;AAAA;AAAA,YAFL,OAAO;AAAA,UAGd,CACD;AAAA,UACA,aACC,gBAAAC;AAAA,YAAC;AAAA;AAAA,cACC,SAAS,YAAY,MAAM,aAAa;AAAA,cACxC,WAAU;AAAA,cAEV;AAAA,gCAAAD,MAAC,QAAK,OAAO,WAAW,KAAK,GAAG,WAAU,cAAa;AAAA,gBACvD,gBAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,SAAQ;AAAA,oBACR,MAAK;AAAA,oBACL,OAAO,cAAc,YAAY,YAAY;AAAA,oBAC9C;AAAA;AAAA,gBAED;AAAA;AAAA;AAAA,UACF;AAAA,WAEJ,GAEJ,GACF;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;;;ACpOA;AAAA,EACE,YAAY;AAAA,EACZ,mBAAmB;AAAA,OACd;AACP,YAAYK,aAAW;AAqBjB,SAGM,OAAAC,OAHN,QAAAC,cAAA;AATC,SAAS,SAAS;AAAA,EACvB,OAAO;AAAA,EACP,WAAW;AAAA,EACX,WAAW;AAAA,EACX;AAAA,EACA,GAAG;AACL,GAAkB;AAChB,SACE,gBAAAD,MAAC,SAAI,WAAW,GAAG,SAAS,GAC1B,0BAAAC,OAAC,YAAS,UAAoB,WAAU,UAAU,GAAG,OACnD;AAAA,oBAAAD,MAAC,iBAAc,WAAU,UACtB,WAAC,GAAG,IAAI,MAAM,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,UAChC,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QAEV;AAAA,QACA;AAAA;AAAA,MAFK;AAAA,IAGP,CACD,GACH;AAAA,IACC,YAAY,gBAAAA,MAAC,qBAAkB;AAAA,IAChC,gBAAAA,MAAC,iBAAc,WAAU,UACtB,WAAC,GAAG,IAAI,MAAM,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,UAChC,gBAAAA;AAAA,MAAC;AAAA;AAAA,QAEC,WAAU;AAAA,QACV,OAAO,QAAQ,OAAO;AAAA,QACtB;AAAA;AAAA,MAHK;AAAA,IAIP,CACD,GACH;AAAA,KACF,GACF;AAEJ;AAEA,SAAS,SAAS;AAAA,EAChB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,oBAAoB,GAAG,2BAA2B,kBAAkB;AAAA,MACpE,WAAW,GAAG,+BAA+B,SAAS;AAAA,MACrD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,cAAc,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC3E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,2BAA2B,SAAS;AAAA,MACjD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,aAAa;AAAA,EACpB;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,GAAG;AACL,GAIG;AACD,QAAM,kBAAwB,mBAAW,mBAAmB;AAC5D,QAAM,EAAE,MAAM,cAAc,SAAS,IAAI,iBAAiB,MAAM,KAAK,KAAK,CAAC;AAE3E,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,eAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,UACE,wBAAwB;AAAA,UACxB,sBAAsB,CAAC;AAAA,QACzB;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,wBAAAD,MAAC,UAAK,WAAU,WAAW,kBAAQ,aAAY;AAAA,QAC9C,gBACC,gBAAAA,MAAC,SAAI,WAAU,yEACb,0BAAAA,MAAC,SAAI,WAAU,4DAA2D,GAC5E;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAEA,SAAS,kBAAkB,EAAE,GAAG,MAAM,GAAgC;AACpE,SACE,gBAAAA,MAAC,SAAI,aAAU,uBAAsB,MAAK,aAAa,GAAG,OACxD,0BAAAA,MAAC,SAAI,WAAU,sCAAqC,GACtD;AAEJ;;;AC5HA,YAAYE,aAAW;AAGvB,SAAS,KAAK,cAAc;AActB,SA2BE,OAAAC,OA3BF,QAAAC,cAAA;AARC,IAAM,gBAAsB;AAAA,EACjC,CAAC,EAAE,MAAM,OAAO,WAAW,GAAG,MAAM,MAAa;AAC/C,UAAM,CAAC,cAAc,eAAe,IAAU,iBAAS,KAAK;AAE5D,UAAM,QAAQ,MAAM,cAAc,KAAK;AACvC,UAAM,WAAiB,eAAyB,IAAI;AAEpD,WACE,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA;AAAA,YAEE,6EACE,CAAC;AAAA;AAAA,YAGH,qIACE,CAAC;AAAA;AAAA,YAGH,2GACE,SAAS,CAAC,MAAM;AAAA;AAAA,YAGlB,yIACE;AAAA;AAAA,YAGF,qHACE,MAAM;AAAA,UACV;AAAA,QACF;AAAA,QAEA;AAAA,0BAAAD;AAAA,YAAC;AAAA;AAAA,cACC,KAAK;AAAA,cACL,IAAI,MAAM,MAAM,SAAS;AAAA,cACzB,MAAM,eAAe,SAAS;AAAA,cAC9B,aAAU;AAAA,cACV,WAAW;AAAA,gBACT;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,kBACE,yBAAyB;AAAA,gBAC3B;AAAA,gBACA;AAAA,cACF;AAAA,cACC,GAAG;AAAA,cACJ,OAAO,MAAM;AAAA,cACb,QAAQ,CAAC,MAAM;AACb,oBAAI,MAAM,SAAU;AACpB,sBAAM,SAAS,CAAC;AAAA,cAClB;AAAA;AAAA,UACF;AAAA,UACA,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,UAAU;AAAA,cACV,aAAU;AAAA,cACV,MAAK;AAAA,cACL,SAAS,MAAM,gBAAgB,CAAC,YAAY;AAAA,cAC5C,cAAY,eAAe,kBAAkB;AAAA,cAC7C,WAAU;AAAA,cAET,yBACC,gBAAAA,MAAC,OAAI,MAAM,IAAI,WAAU,oCAAmC,IAE5D,gBAAAA,MAAC,UAAO,MAAM,IAAI,WAAU,oCAAmC;AAAA;AAAA,UAEnE;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;;;AC/EA,YAAY,yBAAyB;AACrC,SAAS,cAAAE,mBAAkB;AAyBjB,SAKE,OAAAC,OALF,QAAAC,cAAA;AALV,SAAS,MAAM,EAAE,UAAU,SAAS,GAAG,MAAM,GAAe;AAC1D,SACE,gBAAAD,MAAC,kBAAgB,GAAG,OACjB,kBAAQ,IAAI,CAAC,WAAW;AACvB,WACE,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,SAAS,OAAO;AAAA,QAEhB,WAAU;AAAA,QAEV;AAAA,0BAAAF;AAAA,YAAC;AAAA;AAAA,cACC,SAAS,MAAM;AACb,2BAAW,OAAO,MAAM,SAAS,CAAC;AAAA,cACpC;AAAA,cACA,IAAI,OAAO;AAAA,cACX,OAAO,OAAO;AAAA;AAAA,UAChB;AAAA,UACC,OAAO;AAAA;AAAA;AAAA,MAVH,OAAO;AAAA,IAWd;AAAA,EAEJ,CAAC,GACH;AAEJ;AAIA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA,GAAG;AACL,GAA0D;AACxD,SACE,gBAAAG;AAAA,IAAqB;AAAA,IAApB;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,GAA0D;AACxD,SACE,gBAAAA;AAAA,IAAqB;AAAA,IAApB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,0BAAAA;AAAA,QAAqB;AAAA,QAApB;AAAA,UACC,aAAU;AAAA,UACV,WAAU;AAAA,UAEV,0BAAAA,MAACC,aAAA,EAAW,WAAU,0MAAyM;AAAA;AAAA,MACjO;AAAA;AAAA,EACF;AAEJ;;;ACnFA,SAAS,gBAAgB;AACzB,SAAS,cAAAC,mBAAkB;AAC3B,SAAS,qBAAqB;AAC9B,SAAS,eAAAC,cAAa,aAAAC,YAAW,YAAAC,kBAAgB;AAkDjC,gBAAAC,aAAA;AAxCT,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB;AAAA,EACA,aAAa;AAAA,EACb,GAAG;AACL,GAAqB;AACnB,QAAM,CAAC,QAAQ,SAAS,IAAI,cAAc,WAAW;AAAA,IACnD,cAAc;AAAA,EAChB,CAAC;AACD,QAAM,CAAC,YAAY,aAAa,IAAID,WAAS,UAAU,EAAE;AAEzD,QAAM,oBAAoBF;AAAA,IACxB,SAAS,CAAC,UAAyB;AACjC,UAAI,YAAY;AACd,kBAAU,KAAK;AAAA,MACjB,OAAO;AACL,sBAAc,SAAS,EAAE;AAAA,MAC3B;AAAA,IACF,GAAG,aAAa;AAAA,IAChB,CAAC,eAAe,YAAY,SAAS;AAAA,EACvC;AAEA,EAAAC,WAAU,MAAM;AACd,sBAAkB,UAAU;AAC5B,WAAO,MAAM;AACX,wBAAkB,OAAO;AAAA,IAC3B;AAAA,EACF,GAAG,CAAC,YAAY,iBAAiB,CAAC;AAElC,SACE,gBAAAE,MAAC,SAAI,WAAW,GAAG,YAAY,SAAS,GACtC,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACC,UAAU,CAAC,MAAM;AACf,cAAM,QAAQ,EAAE,OAAO;AACvB,sBAAc,KAAK;AAAA,MACrB;AAAA,MACA;AAAA,MACA,YAAY;AAAA,QACV,MAAM,gBAAAA,MAACJ,aAAA,EAAW,WAAU,gCAA+B;AAAA,QAC3D,YAAY;AAAA,MACd;AAAA,MACA,OAAO;AAAA,MACP,WAAW,GAAG,yCAAyC,SAAS;AAAA,MAC/D,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;;;ACxDA,SAAS,SAAAK,cAAa;AACtB,YAAYC,aAAW;AA+CX,gBAAAC,OAYE,QAAAC,cAZF;AApCL,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AACF,GAAqB;AACnB,QAAM,CAAC,QAAQ,SAAS,IAAU,iBAAS,KAAK;AAChD,QAAM,aAAmB,eAA8B,IAAI;AAE3D,QAAM,eAAe,CAAC,gBAAwB;AAC5C,eAAW,WAAW;AACtB,cAAU,KAAK;AAAA,EACjB;AAEA,QAAM,iBAAiB,QAAQ,KAAK,CAAC,WAAW,OAAO,UAAU,KAAK;AAEtE,QAAM,mBAAmB,MAAM;AAC7B,QAAI,WAAW,SAAS;AACtB,mBAAa,WAAW,OAAO;AAC/B,iBAAW,UAAU;AAAA,IACvB;AACA,cAAU,IAAI;AAAA,EAChB;AAEA,QAAM,mBAAmB,MAAM;AAC7B,eAAW,UAAU,WAAW,MAAM;AACpC,gBAAU,KAAK;AAAA,IACjB,GAAG,GAAG;AAAA,EACR;AAEA,SACE,gBAAAD,MAAC,WAAQ,MAAM,QAAQ,cAAc,WACnC,0BAAAC,OAAC,SAAI,cAAc,kBAAkB,cAAc,kBACjD;AAAA,oBAAAD,MAAC,kBAAe,SAAO,MACrB,0BAAAA,MAAC,UAAO,MAAK,YAAW,iBAAe,QAAQ,WAC7C,0BAAAA,MAAC,UAAK,WAAU,YACb,2BAAiB,eAAe,QAAQ,aAC3C,GACF,GACF;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,cAAc;AAAA,QACd,cAAc;AAAA,QAEd,0BAAAA,MAAC,SAAI,WAAU,mEACZ,kBAAQ,IAAI,CAAC,WACZ,gBAAAC;AAAA,UAAC;AAAA;AAAA,YAEC,WAAW;AAAA,cACT;AAAA,cACA,UAAU,OAAO,SAAS;AAAA,YAC5B;AAAA,YACA,SAAS,MAAM,aAAa,OAAO,KAAK;AAAA,YAExC;AAAA,8BAAAD,MAAC,UAAK,WAAU,UAAU,iBAAO,OAAM;AAAA,cACtC,UAAU,OAAO,SAChB,gBAAAA,MAACE,QAAA,EAAM,WAAU,oCAAmC;AAAA;AAAA;AAAA,UATjD,OAAO;AAAA,QAWd,CACD,GACH;AAAA;AAAA,IACF;AAAA,KACF,GACF;AAEJ;;;ACvFA,YAAY,qBAAqB;AACjC,SAAS,aAAAC,YAAW,mBAAAC,kBAAiB,qBAAqB;AA6ClD,gBAAAC,OAaE,QAAAC,cAbF;AArBR,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAU;AACR,SACE,gBAAAA,OAAC,cAAW,eAAe,UAAU,cAA6B,GAAG,OACnE;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,IAAI,MAAM;AAAA,QACV,gBAAc,MAAM,cAAc;AAAA,QAClC,WAAW,GAAG,yBAAyB,SAAS;AAAA,QAChD;AAAA,QAEA,0BAAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,aAAa,eAAe;AAAA;AAAA,QAC9B;AAAA;AAAA,IACF;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,QACJ,WAAW;AAAA,UACT;AAAA,UACA,cAAc;AAAA,QAChB;AAAA,QAEC,kBAAQ,IAAI,CAAC,WACZ,gBAAAC;AAAA,UAAC;AAAA;AAAA,YAEC,OAAO,OAAO;AAAA,YACd,WAAW,GAAG,WAAW,SAAS;AAAA,YACjC,GAAG;AAAA,YAEH;AAAA,qBAAO;AAAA,cACP,OAAO;AAAA;AAAA;AAAA,UANH,OAAO;AAAA,QAOd,CACD;AAAA;AAAA,IACH;AAAA,KACF;AAEJ;AAEA,SAAS,WAAW;AAAA,EAClB,GAAG;AACL,GAAsD;AACpD,SAAO,gBAAAD,MAAiB,sBAAhB,EAAqB,aAAU,UAAU,GAAG,OAAO;AAC7D;AAEA,SAAS,gBAAgB;AAAA,EACvB,GAAG;AACL,GAAuD;AACrD,SAAO,gBAAAA,MAAiB,uBAAhB,EAAsB,aAAU,gBAAgB,GAAG,OAAO;AACpE;AAEA,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,UAAU;AAAA,EACV;AAAA,EACA,GAAG;AACL,GAIG;AACD,SACE,gBAAAC;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,aAAW;AAAA,MACX,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,UACE,qNACE,YAAY;AAAA;AAAA;AAAA,UAKd,yHACE,YAAY;AAAA,UAEd,wFACE,YAAY;AAAA,QAChB;AAAA,QAEA;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACA,aACC,gBAAAD,MAAiB,sBAAhB,EAAqB,SAAO,MAC3B,0BAAAA,MAACE,kBAAA,EAAgB,WAAU,4BAA2B,GACxD;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAEA,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,GAAG;AACL,GAAyD;AACvD,SACE,gBAAAF,MAAiB,wBAAhB,EACC,0BAAAC;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA,aAAa,YACX;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,wBAAAD,MAAC,4BAAyB;AAAA,QAC1B,gBAAAA;AAAA,UAAiB;AAAA,UAAhB;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA,aAAa,YACX;AAAA,YACJ;AAAA,YAEC;AAAA;AAAA,QACH;AAAA,QACA,gBAAAA,MAAC,8BAA2B;AAAA;AAAA;AAAA,EAC9B,GACF;AAEJ;AAeA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAsD;AACpD,SACE,gBAAAC;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,wBAAAD,MAAC,UAAK,WAAU,8DACd,0BAAAA,MAAiB,+BAAhB,EACC,0BAAAA,MAACG,YAAA,EAAU,WAAU,8BAA6B,GACpD,GACF;AAAA,QACA,gBAAAH,MAAiB,0BAAhB,EAA0B,UAAS;AAAA;AAAA;AAAA,EACtC;AAEJ;AAeA,SAAS,yBAAyB;AAAA,EAChC;AAAA,EACA,GAAG;AACL,GAAgE;AAC9D,SACE,gBAAAA;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,0BAAAA,MAAC,iBAAc,WAAU,UAAS;AAAA;AAAA,EACpC;AAEJ;AAEA,SAAS,2BAA2B;AAAA,EAClC;AAAA,EACA,GAAG;AACL,GAAkE;AAChE,SACE,gBAAAA;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,0BAAAA,MAACE,kBAAA,EAAgB,WAAU,UAAS;AAAA;AAAA,EACtC;AAEJ;;;AC7PA,YAAY,oBAAoB;AAChC,SAAS,SAAAE,cAAa;AAMb,gBAAAC,OAsEC,QAAAC,cAtED;AADT,SAAS,MAAM,EAAE,GAAG,MAAM,GAAqD;AAC7E,SAAO,gBAAAD,MAAgB,qBAAf,EAAoB,aAAU,SAAS,GAAG,OAAO;AAC3D;;;ACJI,gBAAAE,aAAA;AAFJ,SAAS,SAAS,EAAE,WAAW,GAAG,MAAM,GAAgC;AACtE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACbA,YAAY,qBAAqB;AACjC,YAAYC,aAAW;AAuBnB,SAkBI,OAAAC,OAlBJ,QAAAC,cAAA;AAnBJ,SAAS,OAAO;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN,MAAM;AAAA,EACN,GAAG;AACL,GAAsD;AACpD,QAAM,UAAgB;AAAA,IACpB,MACE,MAAM,QAAQ,KAAK,IACf,QACA,MAAM,QAAQ,YAAY,IACxB,eACA,CAAC,KAAK,GAAG;AAAA,IACjB,CAAC,OAAO,cAAc,KAAK,GAAG;AAAA,EAChC;AAEA,SACE,gBAAAA;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,wBAAAD;AAAA,UAAiB;AAAA,UAAhB;AAAA,YACC,aAAU;AAAA,YACV,WAAW;AAAA,cACT;AAAA,YACF;AAAA,YAEA,0BAAAA;AAAA,cAAiB;AAAA,cAAhB;AAAA,gBACC,aAAU;AAAA,gBACV,WAAW;AAAA,kBACT;AAAA,gBACF;AAAA;AAAA,YACF;AAAA;AAAA,QACF;AAAA,QACC,MAAM,KAAK,EAAE,QAAQ,QAAQ,OAAO,GAAG,CAAC,GAAG,UAC1C,gBAAAA;AAAA,UAAiB;AAAA,UAAhB;AAAA,YACC,aAAU;AAAA,YAEV,WAAU;AAAA;AAAA,UADL;AAAA,QAEN,CACF;AAAA;AAAA;AAAA,EACH;AAEJ;;;AC1DA,SAAS,gBAAgB;AACzB,SAAS,WAAW,cAAiC;AAMjD,gBAAAE,aAAA;AAJJ,IAAM,UAAU,CAAC,EAAE,GAAG,MAAM,MAAoB;AAC9C,QAAM,EAAE,QAAQ,SAAS,IAAI,SAAS;AAEtC,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAU;AAAA,MACV,OACE;AAAA,QACE,eAAe;AAAA,QACf,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,MACrB;AAAA,MAED,GAAG;AAAA;AAAA,EACN;AAEJ;;;AClBA,YAAY,qBAAqB;AAS7B,SAUI,OAAAC,OAVJ,QAAAC,cAAA;AANJ,SAAS,OAAO;AAAA,EACd;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA2E;AACzE,SACE,gBAAAA,OAAC,SAAI,WAAU,+BACb;AAAA,oBAAAD;AAAA,MAAiB;AAAA,MAAhB;AAAA,QACC,aAAU;AAAA,QACV,IAAI,MAAM,MAAM;AAAA,QAChB,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACC,GAAG;AAAA,QAEJ,0BAAAA;AAAA,UAAiB;AAAA,UAAhB;AAAA,YACC,aAAU;AAAA,YACV,WAAW;AAAA,cACT;AAAA,YACF;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IACC,SAAS,gBAAAA,MAACE,QAAA,EAAM,SAAS,MAAM,MAAM,OAAQ,iBAAM;AAAA,KACtD;AAEJ;;;AC9BA,SAAS,WAAW,eAAe;AAGnC;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,gBAAgB;AACzB,SAAS,OAAAC,aAA8B;AACvC,SAAS,mBAAmB;AAC5B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,YAAYC,aAAW;AACvB,SAAS,YAAAC,kBAAgB;AA0BI,SA+KrB,YAAAC,WA/KqB,OAAAC,OA6BnB,QAAAC,cA7BmB;AAP7B,IAAM,QAAQ,CAAK;AAAA,EACjB;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,aAAa;AAAA,IACX,aAAa;AAAA,IACb,OAAO;AAAA,IACP,MAAM,gBAAAD,MAAC,eAAY,MAAM,gBAAAA,MAAC,wBAAqB,GAAI,OAAM,QAAO;AAAA,EAClE;AAAA,EACA;AACF,MAAqB;AACnB,QAAM,QAAQ,cAAc;AAAA,IAC1B,MAAM;AAAA,IACN;AAAA,IACA,iBAAiB,gBAAgB;AAAA,IACjC,qBAAqB,oBAAoB;AAAA,IACzC,mBAAmB,kBAAkB;AAAA,EACvC,CAAC;AAED,QAAM,WAAW,MAAM,YAAY,EAAE,KAAK;AAE1C,SACE,gBAAAC,OAAC,SAAI,WAAU,wCACZ;AAAA,gBACC,gBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT,aAAa,IAAI,KAAK;AAAA,UACtB;AAAA,QACF;AAAA,QAEA,0BAAAA,MAAC,WAAQ,WAAU,yCAAwC;AAAA;AAAA,IAC7D,IACE;AAAA,IAEH,CAAC,aAAa,aAAa,IAC1B,gBAAAA,MAAC,SAAI,WAAU,mEACb,0BAAAC,OAAC,SAAI,WAAU,oCACZ;AAAA,kBAAY;AAAA,MACb,gBAAAD,MAAC,QAAM,sBAAY,OAAM;AAAA,MACxB,YAAY,cACX,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,SAAS;AAAA,UACT,QACE,gBAAAA,MAAC,cAAW,WAAU,yCAAwC;AAAA,UAEhE,SAAS,MAAM,YAAY,cAAc;AAAA,UAC1C;AAAA;AAAA,MAED,IACE;AAAA,OACN,GACF,IACE;AAAA,IAEJ,gBAAAA,MAAC,SAAI,WAAU,qCACb,0BAAAC;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAO,EAAE,UAAU,cAAc;AAAA,QAEjC;AAAA,0BAAAD,MAAC,WAAM,WAAU,4BACd,gBAAM,gBAAgB,EAAE,IAAI,CAAC,gBAC5B,gBAAAA;AAAA,YAAC;AAAA;AAAA,cAEC,WAAU;AAAA,cAET,sBAAY,QAAQ,IAAI,CAAC,WACxB,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBAEC,WAAU;AAAA,kBAET,iBAAO,gBACJ,OACA;AAAA,oBACE,OAAO,OAAO,UAAU;AAAA,oBACxB,OAAO,WAAW;AAAA,kBACpB;AAAA;AAAA,gBARC,OAAO;AAAA,cASd,CACD;AAAA;AAAA,YAfI,YAAY;AAAA,UAgBnB,CACD,GACH;AAAA,UACA,gBAAAC,OAAC,WAAM,WAAU,YACd;AAAA,kBAAM,YAAY,EAAE,KAAK,IAAI,CAAC,QAAQ;AACrC,qBACE,gBAAAD;AAAA,gBAAC;AAAA;AAAA,kBAEC,WAAU;AAAA,kBACV,SAAS,MAAM,aAAa,IAAI,QAAQ;AAAA,kBAEvC,cAAI,gBAAgB,EAAE,IAAI,CAAC,SAC1B,gBAAAA,MAAC,QAAiB,WAAU,OACzB;AAAA,oBACC,KAAK,OAAO,UAAU;AAAA,oBACtB,KAAK,WAAW;AAAA,kBAClB,KAJO,KAAK,EAKd,CACD;AAAA;AAAA,gBAXI,IAAI;AAAA,cAYX;AAAA,YAEJ,CAAC;AAAA,YAEA,aAAa,KACZ,MAAM,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,UAChC,gBAAAA,MAAC,QACC,0BAAAA,MAAC,QAAG,SAAS,QAAQ,QAAQ,WAAU,YACrC,0BAAAA,MAAC,SAAI,WAAU,IAAG,GACpB,KAHO,KAIT,CACD;AAAA,aACL;AAAA;AAAA;AAAA,IACF,GACF;AAAA,KACF;AAEJ;AAGA,IAAM,sBAAsBE;AAAA,EAC1B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,OAAO;AAAA,QACP,UAAU;AAAA,QACV,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF;AAsBA,IAAM,cAAoB;AAAA,EACxB,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA,cAAc;AAAA,IACd,yBAAyB;AAAA,IACzB;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,QAAI,UAA2B;AAE/B,QAAI,YAAY,SAAS;AACvB,gBACE,gBAAAD,OAAC,SAAI,WAAU,2BACZ;AAAA;AAAA,QACA,gBACC,gBAAAD,MAAC,SAAM,MAAM,WAAW,MAAM,WAC3B,wBACH;AAAA,SAEJ;AAAA,IAEJ,WAAW,YAAY,YAAY;AACjC,gBACE,gBAAAC,OAAAF,WAAA,EACG;AAAA,0BAAkB,OACjB,gBAAAC;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,OAAO,iBAAiB;AAAA,YACxB,KAAK;AAAA,YACL,gBAAgB;AAAA;AAAA,QAClB;AAAA,QAED,YACC,gBAAAA,MAAC,UAAK,WAAU,6CACb,UACH;AAAA,SAEJ;AAAA,IAEJ,WAAW,YAAY,SAAS;AAC9B,gBACE,gBAAAC,OAAAF,WAAA,EACE;AAAA,wBAAAC,MAAC,eAAY,WAAU,mBAAkB;AAAA,QACxC,eACC,gBAAAA,MAAC,UAAK,WAAU,gBAAgB,wBAAa,IAE7C;AAAA,SAEJ;AAAA,IAEJ;AAEA,WACE,gBAAAC;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW,GAAG,oBAAoB,EAAE,QAAQ,CAAC,CAAC;AAAA,QAC7C,GAAG;AAAA,QAEJ;AAAA,0BAAAD,MAAC,SAAI,WAAU,0CAA0C,mBAAQ;AAAA,UAChE,WACC,gBAAAA,MAAC,SAAI,WAAU,sGACZ,mBACH;AAAA;AAAA;AAAA,IAEJ;AAAA,EAEJ;AACF;AAEA,YAAY,cAAc;AAG1B,MAAM,cAAc;AAEpB,IAAM,WAAiB,mBAOrB,CAAC,EAAE,MAAM,WAAW,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ;AACzD,QAAM,CAAC,UAAU,WAAW,IAAIG,WAAS,KAAK;AAC9C,QAAM,CAAC,UAAU,UAAU,IAAI,SAAS;AAExC,QAAM,aAAa,MAAM;AACvB,cAAU,UAAU,UAAU,IAAc;AAC5C,gBAAY,IAAI;AAAA,EAClB;AAEA,EAAM,kBAAU,MAAM;AACpB,QAAI,UAAU;AACZ,iBAAW,MAAM;AACf,oBAAY,KAAK;AAAA,MACnB,GAAG,IAAI;AAAA,IACT;AAAA,EACF,GAAG,CAAC,QAAQ,CAAC;AAEb,SACE,gBAAAH,MAAC,SAAI,WAAW,GAAG,iBAAiB,SAAS,GAAG,KAAW,GAAG,OAC5D,0BAAAC,OAAC,SAAI,WAAU,YAAW,KAAK,UAC5B;AAAA,gBAAY,cACX,gBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,MACE,WACE,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT,WAAW,qBAAqB;AAAA,cAChC;AAAA,YACF;AAAA;AAAA,QACF,IAEA,gBAAAA,MAAC,eAAY,WAAU,UAAS;AAAA,QAGpC,WAAU;AAAA,QACV,MAAK;AAAA,QACL,SAAQ;AAAA,QACR,SAAS;AAAA;AAAA,IACX;AAAA,IAGF,gBAAAC,OAAC,WACC;AAAA,sBAAAD,MAAC,kBAAe,SAAO,MACrB,0BAAAA,MAAC,QAAK,WAAU,yBAAyB,kBAAQ,KAAI,GACvD;AAAA,MACA,gBAAAA,MAAC,kBAAe,WAAU,IACxB,0BAAAA,MAAC,QAAM,kBAAQ,KAAI,GACrB;AAAA,OACF;AAAA,KACF,GACF;AAEJ,CAAC;AAED,SAAS,cAAc;AACvB,MAAM,WAAW;AAEjB,IAAO,gBAAQ;;;AClVf,YAAY,mBAAmB;AA2CrB,SAWe,OAAAI,OAXf,QAAAC,cAAA;AAnBV,SAAS,KAAK;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,GAAG;AACL,GAOqD;AACnD,SACE,gBAAAA,OAAC,YAAS,cAAc,kBAAkB,WAAuB,GAAG,OAClE;AAAA,oBAAAD,MAAC,gBACE,eAAK,IAAI,CAAC,QACT,gBAAAC;AAAA,MAAC;AAAA;AAAA,QAEC;AAAA,QACA,OAAO,IAAI;AAAA,QACX,WAAU;AAAA,QACV,SACE,OAAO,QAAQ,YAAY,aAAa,MACpC,IAAI,UACJ;AAAA,QAGL;AAAA,cAAI,QAAQ,gBAAAD,MAAC,SAAK,cAAI,MAAK;AAAA,UAC3B,IAAI;AAAA,UACJ,IAAI,gBACH,gBAAAA,MAAC,SAAI,WAAU,oEAAmE;AAAA,UAEnF,CAAC,CAAC,IAAI,SAAS,gBAAAA,MAAC,SAAM,MAAK,gBAAgB,cAAI,OAAM;AAAA;AAAA;AAAA,MAfjD,IAAI;AAAA,IAgBX,CACD,GACH;AAAA,IACC,eACC,aAAa,KAAK,CAAC,KACnB,KAAK,IAAI,CAAC,QACR,gBAAAA,MAAC,mBAAgC,OAAO,IAAI,OACxC,cAAgB,WADE,IAAI,KAE1B,CACD;AAAA,KACL;AAEJ;AAGA,SAAS,SAAS;AAAA,EAChB;AAAA,EACA,GAAG;AACL,GAAoD;AAClD,SACE,gBAAAA;AAAA,IAAe;AAAA,IAAd;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,uBAAuB,SAAS;AAAA,MAC7C,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,aAAa;AAAA,EACpB;AAAA,EACA,GAAG;AACL,GAAoD;AAClD,SACE,gBAAAA;AAAA,IAAe;AAAA,IAAd;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,SACE,gBAAAA;AAAA,IAAe;AAAA,IAAd;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA,YACE;AAAA,QACF;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA,GAAG;AACL,GAAuD;AACrD,SACE,gBAAAA;AAAA,IAAe;AAAA,IAAd;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,uBAAuB,SAAS;AAAA,MAC7C,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACvIA,SAAS,OAAAE,aAA8B;AA4BjC,gBAAAC,aAAA;AApBN,IAAM,cAAcD,MAAI,mBAAmB;AAAA,EACzC,UAAU;AAAA,IACR,SAAS;AAAA,MACP,SAAS;AAAA,MACT,WAAW;AAAA,MACX,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,SAAS;AAAA,EACX;AACF,CAAC;AAED,SAAS,IAAI;AAAA,EACX;AAAA,EACA;AAAA,EACA;AACF,GAA6C;AAC3C,SACE,gBAAAC,MAAC,SAAI,aAAU,OAAM,WAAW,GAAG,YAAY,EAAE,QAAQ,CAAC,GAAG,SAAS,GACpE,0BAAAA,MAAC,UAAK,WAAU,yCAAyC,iBAAM,GACjE;AAEJ;;;AChCA,YAAYC,aAAW;AAWnB,gBAAAC,aAAA;AAPJ,IAAM,gBAAsB,mBAK1B,CAAC,EAAE,WAAW,OAAO,GAAG,MAAM,GAAG,QAAQ;AACzC,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,IAAI,MAAM;AAAA,MACV,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;AAED,cAAc,cAAc;AAE5B,IAAO,wBAAQ;;;ACxBf,SAAS,aAAa;AAEtB,SAAS,YAAAC,kBAAgB;AA8CjB,gBAAAC,OAIF,QAAAC,cAJE;AA3BD,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAoB;AAElB,QAAM,CAAC,QAAQ,SAAS,IAAIC,WAAS,KAAK;AAC1C,QAAM,eAAe,SAAS,gBAAgB;AAE9C,QAAM,uBAAuB,CAAC,cAA8B;AAC1D,QAAI,CAAC,UAAW,QAAO;AAEvB,UAAM,aAAa,aAAa;AAAA,MAC9B,CAAC,WAAW,OAAO,UAAU;AAAA,IAC/B;AACA,WAAO,aAAa,WAAW,QAAQ;AAAA,EACzC;AAEA,QAAM,eAAe,CAACC,WAAkB;AACtC,oBAAgBA,MAAK;AAAA,EACvB;AACA,SACE,gBAAAF,OAAC,SAAI,WAAU,uBACZ;AAAA,aACC,gBAAAD,MAACI,QAAA,EAAM,SAAQ,eAAc,WAAU,QAAO,kBAE9C;AAAA,IAEF,gBAAAH,OAAC,gBAAa,MAAM,QAAQ,cAAc,WACxC;AAAA,sBAAAD,MAAC,uBAAoB,WAAU,QAC7B,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACE,GAAG;AAAA,UACJ,WAAU;AAAA,UACV,OAAO,eAAe,qBAAqB,YAAY,IAAI;AAAA,UAC3D,WAAW,CAAC,MAAM,EAAE,eAAe;AAAA,UACnC,YAAY;AAAA,YACV,MACE,gBAAAA,MAAC,SAAM,WAAU,6CAA4C;AAAA,YAE/D,YAAY;AAAA,UACd;AAAA;AAAA,MACF,GACF;AAAA,MACA,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,OAAM;AAAA,UACN,WAAU;AAAA,UAET,uBAAa,IAAI,CAAC,SACjB,gBAAAA;AAAA,YAAC;AAAA;AAAA,cAEC,WAAW;AAAA,gBACT;AAAA,gBACA,iBAAiB,KAAK,SAAS;AAAA,cACjC;AAAA,cACA,SAAS,MAAM,aAAa,KAAK,KAAK;AAAA,cAErC,eAAK;AAAA;AAAA,YAPD,KAAK;AAAA,UAQZ,CACD;AAAA;AAAA,MACH;AAAA,OACF;AAAA,KACF;AAEJ;;;AC1FA,SAAS,QAAAK,aAAY;AACrB,YAAYC,aAAW;AAajB,gBAAAC,aAAA;AALN,IAAMC,SAAc;AAAA,EAClB,CAAC,EAAE,WAAW,UAAU,OAAO,GAAG,MAAM,GAAG,QAAQ;AACjD,UAAM,OAAO,UAAUC,QAAO;AAE9B,WACE,gBAAAF;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACC,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAEAC,OAAM,cAAc;AAEpB,IAAO,gBAAQA;;;AC5Bf,YAAY,qBAAqB;AACjC,SAAS,OAAAE,aAA8B;AA6CnC,gBAAAC,aAAA;AAxCJ,IAAM,iBAAiBC;AAAA,EACrB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,OAAO;AAAA,QACL,WAAW;AAAA,QACX,SAAS;AAAA,MACX;AAAA,MACA,OAAO;AAAA,QACL,OAAO;AAAA,QACP,SACE;AAAA,QACF,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,OAAO;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAAS,OAAO;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAGK;AACH,SACE,gBAAAD;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,eAAe,EAAE,OAAO,OAAO,MAAM,UAAU,CAAC,CAAC;AAAA,MAC/D,SAAS;AAAA,MACR,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACrDA,SAAS,UAAAE,gBAAc;;;ACAvB,SAAS,OAAAC,aAAW;AACpB,YAAYC,aAAW;AA2If,gBAAAC,aAAA;AAtIR,IAAM,mCAAmCC;AAAA,EACvC;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,WACE;AAAA,QACF,aACE;AAAA,MACJ;AAAA,MACA,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,QACE,UAAU;AAAA,QACV,SAAS;AAAA,QACT,OACE;AAAA,MACJ;AAAA,MACA;AAAA,QACE,UAAU;AAAA,QACV,SAAS;AAAA,QACT,OACE;AAAA,MACJ;AAAA,MACA;AAAA,QACE,UAAU;AAAA,QACV,SAAS;AAAA,QACT,OACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,MACN,UAAU;AAAA,IACZ;AAAA,EACF;AACF;AAEA,IAAM,uCAAuCA;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,WACE;AAAA,QACF,aACE;AAAA,MACJ;AAAA,MACA,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,QACE,UAAU;AAAA,QACV,SAAS;AAAA,QACT,OACE;AAAA,MACJ;AAAA,MACA;AAAA,QACE,UAAU;AAAA,QACV,SAAS;AAAA,QACT,OACE;AAAA,MACJ;AAAA,MACA;AAAA,QACE,UAAU;AAAA,QACV,SAAS;AAAA,QACT,OACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,MACN,UAAU;AAAA,IACZ;AAAA,EACF;AACF;AAYA,SAAS,yBAAyB;AAAA,EAChC;AAAA,EACA,UAAU;AAAA,EACV,OAAO;AAAA,EACP,OAAO;AAAA,EACP,WAAW;AAAA,EACX;AAAA,EACA,GAAG;AACL,GAAkC;AAChC,QAAM,YAAY,WACd,wDACA;AAGJ,QAAM,SAAe,uBAAe,QAAQ;AAE5C,SAAO,SAAS,SACd,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAW;AAAA,QACT,iCAAiC,EAAE,SAAS,MAAM,SAAS,CAAC;AAAA,QAC5D;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH,mBACC,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,aAAa;AAAA,UACb,WAAW;AAAA,YACT;AAAA,YACA,GAAG,WAAW,4EAA4E,+EAA+E;AAAA,UAC3K;AAAA,UACA,MAAM;AAAA,UAEL;AAAA;AAAA,MACH,IAEA;AAAA;AAAA,EAEJ,IAEA,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAW;AAAA,QACT,qCAAqC,EAAE,SAAS,MAAM,SAAS,CAAC;AAAA,QAChE;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,aAAa;AAAA,UACb,WAAW;AAAA,YACT;AAAA,YACA,GAAG,WAAW,4EAA4E,+EAA+E;AAAA,UAC3K;AAAA,UACA,MAAM;AAAA,UAEL;AAAA;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;;;AC/KA,SAAS,OAAAE,aAAW;AACpB,YAAYC,aAAW;AA4If,gBAAAC,aAAA;AAvIR,IAAM,oCAAoCC;AAAA,EACxC;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,WACE;AAAA,QACF,aACE;AAAA,MACJ;AAAA,MACA,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,QACE,UAAU;AAAA,QACV,SAAS;AAAA,QACT,OACE;AAAA,MACJ;AAAA,MACA;AAAA,QACE,UAAU;AAAA,QACV,SAAS;AAAA,QACT,OACE;AAAA,MACJ;AAAA,MACA;AAAA,QACE,UAAU;AAAA,QACV,SAAS;AAAA,QACT,OACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,MACN,UAAU;AAAA,IACZ;AAAA,EACF;AACF;AAEA,IAAM,wCAAwCA;AAAA,EAC5C;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,WACE;AAAA,QACF,aACE;AAAA,MACJ;AAAA,MACA,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,QACE,UAAU;AAAA,QACV,SAAS;AAAA,QACT,OACE;AAAA,MACJ;AAAA,MACA;AAAA,QACE,UAAU;AAAA,QACV,SAAS;AAAA,QACT,OACE;AAAA,MACJ;AAAA,MACA;AAAA,QACE,UAAU;AAAA,QACV,SAAS;AAAA,QACT,OACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,MACN,UAAU;AAAA,IACZ;AAAA,EACF;AACF;AAaA,SAAS,0BAA0B;AAAA,EACjC;AAAA,EACA,UAAU;AAAA,EACV,OAAO;AAAA,EACP,OAAO;AAAA,EACP,WAAW;AAAA,EACX;AAAA,EACA,GAAG;AACL,GAAmC;AACjC,QAAM,YAAY,WACd,wDACA;AAGJ,QAAM,SAAe,uBAAe,QAAQ;AAE5C,SAAO,SAAS,SACd,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAW;AAAA,QACT,kCAAkC,EAAE,SAAS,MAAM,SAAS,CAAC;AAAA,QAC7D;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH,mBACC,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,aAAa;AAAA,UACb,WAAW;AAAA,YACT;AAAA,YACA,GAAG,WAAW,4EAA4E,+EAA+E;AAAA,UAC3K;AAAA,UACA,MAAM;AAAA,UAEL;AAAA;AAAA,MACH,IAEA;AAAA;AAAA,EAEJ,IAEA,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAW;AAAA,QACT,sCAAsC,EAAE,SAAS,MAAM,SAAS,CAAC;AAAA,QACjE;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,aAAa;AAAA,UACb,WAAW;AAAA,YACT;AAAA,YACA,GAAG,WAAW,6EAA6E,+EAA+E;AAAA,UAC5K;AAAA,UACA,MAAM;AAAA,UAEL;AAAA;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;;;AChLA,SAAS,YAAAE,YAAU,eAAAC,oBAAmB;;;AHuChC,gBAAAC,OAUA,QAAAC,cAVA;AAtBN,IAAM,uBAAuB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAiC;AAC/B,QAAM,iBAAiBC,SAA0B,IAAI;AAErD,QAAM,yBAAyB,MAAM;AACnC,yBAAqB;AAAA,EACvB;AAEA,QAAM,wBAAwB,MAAM;AAClC,wBAAoB;AAAA,EACtB;AAEA,SACE,gBAAAD,OAAC,SAAI,WAAU,oCACb;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,MAAK;AAAA,QACL;AAAA,QACA,SAAS;AAAA,QAER;AAAA;AAAA,IACH;AAAA,IAEA,gBAAAC,OAAC,SAAI,WAAU,YACb;AAAA,sBAAAD;AAAA,QAAC;AAAA;AAAA,UACC,KAAK;AAAA,UACL;AAAA,UACA;AAAA,UACA,MAAK;AAAA,UACL;AAAA,UACA,SAAS;AAAA,UAER;AAAA;AAAA,MACH;AAAA,MAEC;AAAA,OACH;AAAA,KACF;AAEJ;AAEA,IAAO,+BAAQ;;;AIlEf,SAAS,eAAAG,oBAAmB;AAC5B,SAAS,YAAAC,kBAAgB;AAuCf,SAKe,OAAAC,OALf,QAAAC,cAAA;AAxBV,IAAM,aAAa,CAAC;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAuB;AACrB,QAAM,CAAC,QAAQ,SAAS,IAAIC,WAAS,KAAK;AAE1C,QAAM,cAAc,MAAM;AACxB,cAAU,CAAC,MAAM;AACjB,cAAU,MAAM;AAAA,EAClB;AAEA,SACE,gBAAAF,MAAC,SAAI,WAAW,GAAG,WAAW,aAAa,gBAAgB,SAAS,GAClE,0BAAAC,OAAC,gBACC;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA,UACE;AAAA,QACJ;AAAA,QAEA,0BAAAC;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,SAAS;AAAA,YAER;AAAA;AAAA,cACA,YAAY,gBAAAD,MAACG,cAAA,EAAY,WAAU,4BAA2B;AAAA;AAAA;AAAA,QACjE;AAAA;AAAA,IACF;AAAA,IACC,YACC,gBAAAH,MAAC,uBAAoB,OAAM,SAAQ,WAAU,YAC1C,2BACH;AAAA,KAEJ,GACF;AAEJ;;;AC9CI,gBAAAI,aAAA;AAJG,IAAM,cAAc,CAAC,UAA4B;AACtD,QAAM,EAAE,UAAU,UAAU,IAAI;AAEhC,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;;;ACnBA,SAAS,QAAAC,aAAY;AACrB,YAAYC,aAAW;AACvB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AA0BD,gBAAAC,aAAA;AArBN,IAAM,WAAW;AASjB,IAAM,mBAAyB;AAAA,EAC7B,CAAC;AACH;AAEA,IAAM,gBAAgB,CAGpB;AAAA,EACA,GAAG;AACL,MAA4C;AAC1C,SACE,gBAAAA,MAAC,iBAAiB,UAAjB,EAA0B,OAAO,EAAE,MAAM,MAAM,KAAK,GACnD,0BAAAA,MAAC,cAAY,GAAG,OAAO,GACzB;AAEJ;AAEA,IAAM,eAAe,MAAM;AACzB,QAAM,eAAqB,mBAAW,gBAAgB;AACtD,QAAM,cAAoB,mBAAW,eAAe;AACpD,QAAM,EAAE,cAAc,IAAI,eAAe;AACzC,QAAM,YAAY,aAAa,EAAE,MAAM,aAAa,KAAK,CAAC;AAC1D,QAAM,aAAa,cAAc,aAAa,MAAM,SAAS;AAE7D,MAAI,CAAC,cAAc;AACjB,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AAEA,QAAM,EAAE,GAAG,IAAI;AAEf,SAAO;AAAA,IACL;AAAA,IACA,MAAM,aAAa;AAAA,IACnB,YAAY,GAAG,EAAE;AAAA,IACjB,mBAAmB,GAAG,EAAE;AAAA,IACxB,eAAe,GAAG,EAAE;AAAA,IACpB,GAAG;AAAA,EACL;AACF;AAMA,IAAM,kBAAwB;AAAA,EAC5B,CAAC;AACH;AAEA,SAAS,aAAa,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC1E,QAAM,KAAW,cAAM;AAEvB,SACE,gBAAAA,MAAC,gBAAgB,UAAhB,EAAyB,OAAO,EAAE,GAAG,GACpC,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,cAAc,SAAS;AAAA,MACpC,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;AAEA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA,GAAG;AACL,GAAqD;AACnD,QAAM,EAAE,OAAO,WAAW,IAAI,aAAa;AAE3C,SACE,gBAAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,cAAY,CAAC,CAAC;AAAA,MACd,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA,SAAS;AAAA,MACR,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,gBAAgB,EAAE,GAAG,MAAM,GAAsC;AACxE,QAAM,EAAE,OAAO,YAAY,mBAAmB,cAAc,IAC1D,aAAa;AAEf,SACE,gBAAAD;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,IAAI;AAAA,MACJ,oBACE,CAAC,QACG,GAAG,iBAAiB,KACpB,GAAG,iBAAiB,IAAI,aAAa;AAAA,MAE3C,gBAAc,CAAC,CAAC;AAAA,MACf,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,oBAAoB;AAAA,EAC3B;AAAA,EACA,GAAG;AACL,GAA8B;AAC5B,QAAM,EAAE,kBAAkB,IAAI,aAAa;AAE3C,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,IAAI;AAAA,MACJ,WAAW,GAAG,iCAAiC,SAAS;AAAA,MACvD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,gBAAgB,EAAE,WAAW,GAAG,MAAM,GAA8B;AAC3E,QAAM,EAAE,OAAO,cAAc,IAAI,aAAa;AAC9C,QAAM,OAAO,QAAQ,OAAO,OAAO,WAAW,EAAE,IAAI,MAAM;AAE1D,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,IAAI;AAAA,MAEJ,WAAW,sCAAsC,SAAS;AAAA,MACzD,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;;;ACjKA,YAAYG,aAAW;AAyCX,SAGI,OAAAC,OAHJ,QAAAC,cAAA;AAfL,IAAM,YAAY,CAAwB;AAAA,EAC/C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAyB;AACvB,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MAEC;AAAA,MACA,MAAM,MAAM;AAAA,MACZ,QAAQ,CAAC,EAAE,OAAO,UAAU,MAC1B,gBAAAC,OAAC,gBAAa,WAAW,GAAG,UAAU,SAAS,GAC5C;AAAA,cAAM,SACL,gBAAAA,OAAC,iBAAc,WAAU,SACtB;AAAA,gBAAM;AAAA,UACN,MAAM,YACL,gBAAAD,MAAC,UAAK,WAAU,4BAA2B,eAAC;AAAA,UAE7C,MAAM,YACL,gBAAAA,MAAC,UAAK,WAAU,kBAAiB,wBAAU;AAAA,WAE/C;AAAA,QAEF,gBAAAA,MAAC,mBACE,UAAM,uBAAe,MAAM,MAAM,IACxB;AAAA,UACJ,MAAM;AAAA,UAGN;AAAA,YACE,GAAG;AAAA,YACH,QAAQ,CAAC,MAAM;AACb,wBAAU,OAAO;AACjB,uBAAS,CAAC;AAAA,YACZ;AAAA,UACF;AAAA,QACF,IACA,MAAM,QACZ;AAAA,QACC,eAAe,gBAAAA,MAAC,mBAAgB;AAAA,SACnC;AAAA;AAAA,IAjCG,MAAM;AAAA,EAmCb;AAEJ;;;ACvEA,SAAS,iBAAAE,sBAAqB;AAC9B;AAAA,EACE,cAAAC;AAAA,EAMA,kBAAAC;AAAA,OACK;AA0CC,gBAAAC,OAmLA,QAAAC,cAnLA;AAxBR,IAAM,qBAAqBC;AAAA,EACzB;AACF;AAUA,SAAS,KAA4B;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAiB;AACf,SACE,gBAAAF;AAAA,IAAC,mBAAmB;AAAA,IAAnB;AAAA,MACC,OAAO;AAAA,MAEP,0BAAAA,MAAC,YAAU,GAAG,aACZ,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,UAAU,YAAY,aAAa,QAAQ;AAAA,UAC3C;AAAA,UACA,YAAU;AAAA,UAET;AAAA;AAAA,MACH,GACF;AAAA;AAAA,EACF;AAEJ;AAEA,KAAK,aAAa,SAAS,WAAgD;AAAA,EACzE;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,WAAW;AAAA,EACX,GAAG;AACL,GAKwC;AACtC,QAAM,EAAE,QAAQ,IAAIG,gBAAkB;AAEtC,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA,QAAQ,MAAM;AAAA,MACd,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,QAAQ,gBAAAA,MAAC,SAAO,GAAG,OAAO,gBAAgB,MAAM,gBAAgB;AAAA,MAClE;AAAA;AAAA,EACF;AAEJ;AAEA,KAAK,gBAAgB,SAAS,cAE5B;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAwE;AACtE,QAAM,EAAE,QAAQ,IAAIG,gBAAkB;AAEtC,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV;AAAA,MACA,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,QAAQ,gBAAAA,MAAC,iBAAe,GAAG,OAAO;AAAA,MACpC;AAAA;AAAA,EACF;AAEJ;AAEA,KAAK,mBAAmB,SAAS,iBAE/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,QAAM,EAAE,QAAQ,IAAIG,gBAAkB;AACtC,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,QAAQ,gBAAAA,MAAC,eAAa,GAAG,OAAO;AAAA,MAClC;AAAA;AAAA,EACF;AAEJ;AAEA,KAAK,mBAAmB,SAAS,iBAE/B;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAGG;AACD,QAAM,EAAE,SAAS,OAAO,SAAS,IAAIG,gBAAkB;AACvD,QAAM,iBAAiB,MAAM,IAAI,KAAK,CAAC;AAEvC,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,QACE,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,YACJ,UAAU;AAAA,YACV,UAAU,CAAC,aACT,SAAS,MAAM,QAAiC;AAAA;AAAA,QAEpD;AAAA,MAEJ;AAAA;AAAA,EACF;AAEJ;AAEA,KAAK,gBAAgB,SAAS,cAE5B;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,GAAG;AACL,GAEG;AACD,QAAM,EAAE,QAAQ,IAAIG,gBAAkB;AAEtC,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,QAAQ,gBAAAA,MAAC,yBAAe,GAAG,OAAO;AAAA,MACpC;AAAA;AAAA,EACF;AAEJ;AAEA,KAAK,kBAAkB,SAAS,yBAE9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAWG;AACD,QAAM,EAAE,SAAS,UAAU,IAAIG,gBAAkB;AACjD,QAAM,aAAa,UAAU,OAAO,IAAI;AACxC,QAAM,qBAAqB,CAAC,CAAC;AAE7B,SACE,gBAAAH;AAAA,IAACI;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,QAAQ,CAAC,EAAE,OAAO,UAAU,MAC1B,gBAAAH,OAAC,SAAI,WAAU,aACZ;AAAA,iBACC,gBAAAD,MAAC,WAAM,SAAS,MAAM,WAAU,eAC7B,iBACH;AAAA,QAEF,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO,EAAE,MAAM,YAAY,UAAU,SAAS;AAAA,YAC9C;AAAA,YACA;AAAA,YACA,OAAO,UAAU,UAAU,aAAa,CAAC,IAAI;AAAA,YAC7C,UAAU,CAAC,UAAU;AAEnB,wBAAU,SAAS,KAAK;AAExB,kBAAI,gBAAgB;AAClB,+BAAe,KAAK;AAAA,cACtB;AAAA,YACF;AAAA,YACA,QAAQ,UAAU;AAAA,YAClB,MAAM,UAAU;AAAA,YACf,GAAG;AAAA;AAAA,QACN;AAAA,SACF;AAAA;AAAA,EAEJ;AAEJ;AASA,KAAK,iBAAiB,SAAS,eAE7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAMK;AACH,QAAM,EAAE,SAAS,OAAO,SAAS,IAAIG,gBAAkB;AACvD,QAAM,QAAQ,MAAM,IAAI;AACxB,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,QACE,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,YACJ,MAAM;AAAA,YACN,SAAS,CAAC,SAAS,SAAS,MAAM,IAA6B;AAAA,YAC/D;AAAA;AAAA,QACF;AAAA,MAEJ;AAAA;AAAA,EACF;AAEJ;AAEA,KAAK,iBAAiB,SAAS,eAE7B;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,QAAM,EAAE,SAAS,SAAS,IAAIG,gBAAkB;AAChD,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,QACE,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,eAAe,CAAC,UAAU;AACxB,uBAAS,MAAM,KAAY;AAAA,YAC7B;AAAA,YACC,GAAG;AAAA;AAAA,QACN;AAAA,MAEJ;AAAA;AAAA,EACF;AAEJ;AAEA,KAAK,gBAAgB,SAAS,cAE5B;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAGG;AACD,QAAM,EAAE,QAAQ,IAAIG,gBAAkB;AACtC,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL;AAAA,QACA,QAAQ,gBAAAA,MAAC,YAAS,OAAO,MAAM,OAAe,GAAG,OAAO;AAAA,MAC1D;AAAA;AAAA,EACF;AAEJ;AAEA,KAAK,gBAAgB,SAAS,cAE5B;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAmE;AACjE,QAAM,EAAE,QAAQ,IAAIG,gBAAkB;AACtC,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV;AAAA,MACA,OAAO,EAAE,MAAM,QAAQ,gBAAAA,MAAC,YAAU,GAAG,OAAO,EAAG;AAAA;AAAA,EACjD;AAEJ;AAEA,KAAK,aAAa,SAAS,WAAgD;AAAA,EACzE;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,QAAM,EAAE,QAAQ,IAAIG,gBAAkB;AACtC,QAAM,EAAE,SAAS,IAAIA,gBAAkB;AACvC,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,QACE,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,YACJ,eAAe,CAAC,UAAU,SAAS,MAAM,KAAY;AAAA;AAAA,QACvD;AAAA,MAEJ;AAAA;AAAA,EACF;AAEJ;AAEA,KAAK,gBAAgB,SAAS,cAE5B;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAGG;AACD,QAAM,EAAE,SAAS,UAAU,MAAM,IAAIG,gBAAkB;AACvD,QAAM,QAAQ,MAAM,IAAI;AACxB,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL;AAAA,QACA,QACE,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,YACJ,OAAO,SAAS;AAAA,YAChB,UAAU,CAAC,QAAQ,SAAS,MAAM,GAA4B;AAAA;AAAA,QAChE;AAAA,MAEJ;AAAA;AAAA,EACF;AAEJ;AAGA,KAAK,cAAc,SAAS,YAAiD;AAAA,EAC3E;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAM8E;AAC5E,QAAM,EAAE,SAAS,UAAU,MAAM,IAAIG,gBAAkB;AACvD,QAAM,QAAQ,MAAM,IAAI;AACxB,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,UAAU,SAAS;AAAA,MACjC,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,QACE,gBAAAC,OAAC,SAAI,WAAU,qBACZ;AAAA,oBAAU,gBAAAD,MAAC,UAAK,WAAU,QAAQ,kBAAO;AAAA,UAC1C,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACE,GAAG;AAAA,cACJ,SAAS,CAAC,CAAC;AAAA,cACX,iBAAiB,CAAC,YAChB,SAAS,MAAM,OAAgC;AAAA;AAAA,UAEnD;AAAA,UACC,UAAU,gBAAAA,MAAC,UAAK,WAAU,QAAQ,kBAAO;AAAA,WAC5C;AAAA,MAEJ;AAAA;AAAA,EACF;AAEJ;","names":["jsx","jsxs","cva","jsx","jsxs","jsx","jsxs","jsx","jsxs","cva","jsx","jsx","jsxs","cva","Fragment","jsx","jsxs","jsx","jsxs","cva","jsx","jsxs","Slot","React","Fragment","jsx","jsxs","jsx","Slot","jsxs","Slot","cva","React","jsx","jsxs","cva","Slot","Slot","cva","Loader2Icon","jsx","jsxs","cva","Slot","Slot","cva","jsx","jsxs","cva","Slot","jsx","React","ChevronDownIcon","ChevronRightIcon","jsx","className","props","ChevronRightIcon","ChevronDownIcon","jsx","ChevronRight","React","jsx","jsxs","api","ChevronRight","CheckIcon","jsx","Label","jsx","jsxs","CheckIcon","Label","cva","jsx","jsxs","cva","cva","jsx","React","useEffect","jsx","jsx","jsxs","useEffect","CheckIcon","ChevronRightIcon","jsx","jsxs","jsx","jsx","jsxs","React","cva","jsx","cva","cva","jsx","jsxs","cva","jsx","jsxs","XIcon","React","createContext","useCallback","useContext","useState","Separator","jsx","jsxs","createContext","useContext","useState","React","useCallback","existingFiles","updatedFiles","Separator","XIcon","jsx","jsx","jsx","jsx","jsxs","X","React","Fragment","jsx","jsxs","X","jsx","jsxs","useState","useCallback","jsx","jsxs","useState","useCallback","cva","React","Fragment","jsx","jsxs","cva","ChevronDown","X","React","jsx","jsxs","error","X","ChevronDown","React","jsx","jsxs","React","jsx","jsxs","CircleIcon","jsx","jsxs","Label","jsx","CircleIcon","SearchIcon","useCallback","useEffect","useState","jsx","Check","React","jsx","jsxs","Check","CheckIcon","ChevronDownIcon","jsx","jsxs","ChevronDownIcon","CheckIcon","XIcon","jsx","jsxs","jsx","React","jsx","jsxs","jsx","jsx","jsxs","Label","cva","React","useState","Fragment","jsx","jsxs","cva","useState","jsx","jsxs","cva","jsx","React","jsx","useState","jsx","jsxs","useState","value","Label","Slot","React","jsx","Title","Slot","cva","jsx","cva","useRef","cva","React","jsx","cva","cva","React","jsx","cva","useState","useCallback","jsx","jsxs","useRef","ChevronDown","useState","jsx","jsxs","useState","ChevronDown","jsx","Slot","React","jsx","Label","Slot","React","jsx","jsxs","createContext","Controller","useFormContext","jsx","jsxs","createContext","useFormContext","Controller"]}