atomos_next_genesis 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../app/index.ts","../app/components/Accordian.tsx","../app/utils/utils.tsx","../app/components/Avatar.tsx","../app/components/AvatarGroup.tsx","../app/components/Breadcrumb.tsx","../app/components/Button.tsx","../app/components/Checkbox.tsx","../app/components/Chip.tsx","../app/components/CircularProgress.tsx","../app/components/Divider.tsx","../app/components/Dropdown.tsx","../app/components/Input.tsx","../app/components/Label.tsx","../app/components/Tooltip.tsx","../app/components/DropdownWithIcon.tsx","../app/components/FileUpload.tsx","../app/components/GlobalNavigation.tsx","../app/components/HelperText.tsx","../app/components/ListItem.tsx","../app/components/Loading.tsx","../app/components/Modal.tsx","../app/components/MenuItem.tsx","../app/components/Notice.tsx","../app/components/Pagination.tsx","../app/components/Progress.tsx","../app/components/Radio.tsx","../app/components/Sidebar.tsx","../app/components/Slider.tsx","../app/components/Skeleton.tsx","../app/components/Stepper.tsx","../app/components/TableComponents.tsx","../app/components/Tabs.tsx","../app/components/Textarea.tsx","../app/components/Toggle.tsx"],"sourcesContent":["import './globals.css';\nexport * from \"./components/index\"","\"use client\";\nimport React, { useState } from \"react\";\nimport { cn } from \"../utils/utils\";\nimport { RiArrowDownSLine } from \"@remixicon/react\";\n\ntype AccordionProps = {\n type?: \"single\" | \"multiple\";\n collapsible?: boolean;\n className?: string;\n children: React.ReactNode;\n};\n\nexport default function Accordion({\n type = \"single\",\n collapsible = true,\n className,\n children,\n}: AccordionProps) {\n const [openItems, setOpenItems] = useState<string[]>([]);\n\n const handleToggle = (value: string) => {\n if (type === \"single\") {\n setOpenItems((prev) =>\n prev.includes(value) ? (collapsible ? [] : prev) : [value]\n );\n } else {\n setOpenItems((prev) =>\n prev.includes(value)\n ? prev.filter((item) => item !== value)\n : [...prev, value]\n );\n }\n };\n\n return (\n <div className={className}>\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(\n child as React.ReactElement<{\n openItems: string[];\n handleToggle: (value: string) => void;\n }>,\n {\n openItems,\n handleToggle,\n }\n );\n }\n return child;\n })}\n </div>\n );\n}\n\ntype AccordionItemProps = {\n value: string;\n disabled?: boolean;\n openItems?: string[];\n handleToggle?: (value: string) => void;\n children: React.ReactNode;\n className?: string;\n};\n\nexport function AccordionItem({\n value,\n disabled = false,\n openItems,\n handleToggle,\n children,\n className,\n}: AccordionItemProps) {\n const isOpen = openItems?.includes(value);\n\n const toggle = () => {\n if (!disabled && handleToggle) {\n handleToggle(value);\n }\n };\n\n return (\n <div\n className={cn(\n \"bg-white hover:bg-gray-50 rounded-lg shadow transition-all duration-300 ease-in-out\",\n disabled\n ? \"opacity-50 pointer-events-none select-none\"\n : \"cursor-pointer\",\n isOpen ? \"border border-gray-300\" : \"border\",\n className\n )}\n >\n <div\n className=\"font-semibold transition-all duration-300 ease-in-out\"\n onClick={toggle}\n >\n {children && Array.isArray(children) ? (\n <>\n {React.cloneElement(children[0] as React.ReactElement, { isOpen })}\n <div\n className={cn(\n \"grid transition-all duration-300 ease-in-out\",\n isOpen\n ? \"grid-rows-[1fr] opacity-100\"\n : \"grid-rows-[0fr] opacity-0\"\n )}\n >\n <div className=\"overflow-hidden\">\n <div className={cn(\"\")}>{children[1]}</div>\n </div>\n </div>\n </>\n ) : (\n children\n )}\n </div>\n </div>\n );\n}\n\ntype AccordionTriggerProps = {\n isOpen?: boolean;\n children: React.ReactNode;\n};\n\nexport function AccordionTrigger({ isOpen, children }: AccordionTriggerProps) {\n return (\n <div className=\"flex p-3.5 justify-between items-center text-sm font-semibold transition-all delay-150 ease-in\">\n {children}\n <span\n className={cn(\n \"transition-transform duration-300 transform\",\n isOpen ? \"rotate-180\" : \"rotate-0\"\n )}\n >\n <RiArrowDownSLine size={18} />\n </span>\n </div>\n );\n}\n\ntype AccordionContentProps = {\n isOpen?: boolean;\n children: React.ReactNode;\n};\n\nexport function AccordionContent({ isOpen, children }: AccordionContentProps) {\n return (\n <div\n className={cn(\n \"w-full font-normal px-3.5 pb-3.5 text-sm overflow-hidden transition-all duration-500 ease-in\",\n !isOpen ? \"max-h-full opacity-100\" : \"max-h-0 opacity-0\"\n )}\n >\n {children}\n </div>\n );\n}\n","import clsx, { ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\nexport const cn = (...classes: ClassValue[]) => twMerge(clsx(...classes));\n","import Image from \"next/image\";\nimport React, { forwardRef } from \"react\";\nimport { cn } from \"../utils/utils\";\n\ninterface BaseProps {\n type: \"image\" | \"icon\" | \"text\";\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n onClick?: () => void;\n rounded?: boolean;\n border?: boolean;\n borderColor?: string;\n borderWidth?: string;\n radius?: string;\n disabled?: boolean;\n statusIcon?: JSX.Element;\n statusPosition?: \"top-right\" | \"top-left\" | \"bottom-right\" | \"bottom-left\";\n}\n\nexport interface ImageProps extends BaseProps {\n type: \"image\";\n src: string;\n alt?: string;\n}\n\nexport interface IconProps extends BaseProps {\n type: \"icon\";\n icon: JSX.Element;\n}\n\nexport interface TextProps extends BaseProps {\n type: \"text\";\n text: string;\n}\n\ntype AvatarProps = ImageProps | IconProps | TextProps;\n\nconst Avatar = forwardRef<HTMLDivElement, AvatarProps>((props, ref) => {\n const {\n type,\n size = \"md\",\n className,\n onClick,\n rounded,\n border,\n borderColor,\n borderWidth,\n radius,\n disabled,\n statusIcon,\n statusPosition = \"bottom-right\",\n } = props;\n\n const sizes = {\n sm: \"w-8 h-8\",\n md: \"w-12 h-12\",\n lg: \"w-16 h-16\",\n };\n\n const displayText =\n type === \"text\" && props.text\n ? props.text.length === 2\n ? props.text.toUpperCase()\n : props.text\n .split(\" \")\n .map((word) => word.charAt(0).toUpperCase())\n .join(\"\")\n .slice(0, 2)\n : \"\";\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative -z-10 \",\n rounded && \"rounded-full\",\n border && \"border border-gray-200\",\n disabled && \"opacity-50 pointer-events-none select-none\"\n )}\n style={{\n borderColor: borderColor,\n borderWidth: borderWidth,\n borderRadius: radius,\n }}\n >\n {type === \"image\" && (\n <div\n className={cn(\n \"relative -z-10 flex items-center justify-center\",\n sizes[size],\n className\n )}\n onClick={onClick}\n >\n <Image\n fill\n className={cn(rounded && \"rounded-full\", \"object-cover\")}\n src={(props as ImageProps).src}\n alt={(props as ImageProps).alt || \"\"}\n />\n </div>\n )}\n {type === \"icon\" && (\n <div\n className={cn(\n \"flex items-center justify-center\",\n rounded && \"rounded-full\",\n className,\n sizes[size]\n )}\n onClick={onClick}\n >\n {(props as IconProps).icon}\n </div>\n )}\n {type === \"text\" && (\n <p\n onClick={onClick}\n className={cn(\n \"flex items-center justify-center text-sm font-medium text-gray-700\",\n rounded && \"rounded-full\",\n className,\n sizes[size],\n size === \"sm\" && \"text-xs\",\n size === \"lg\" && \"text-xl\",\n size === \"md\" && \"text-base\"\n )}\n >\n {displayText}\n </p>\n )}\n {statusIcon && (\n <span\n className={cn(\n \"absolute w-2 h-2\",\n // small\n statusPosition === \"bottom-left\" &&\n size === \"sm\" &&\n type === \"image\" &&\n \"bottom-0\",\n statusPosition === \"top-left\" &&\n size === \"sm\" &&\n type === \"image\" &&\n \"top-0 -left-1.5\",\n statusPosition === \"bottom-right\" &&\n size === \"sm\" &&\n type === \"image\" &&\n \"bottom-0.5 right-0.5\",\n statusPosition === \"top-right\" &&\n size === \"sm\" &&\n type === \"image\" &&\n \"-top-[1.1px] right-0\",\n // sm text and icon\n statusPosition === \"bottom-left\" &&\n size === \"sm\" &&\n (type === \"text\" || type === \"icon\") &&\n \"bottom-0\",\n statusPosition === \"top-left\" &&\n size === \"sm\" &&\n (type === \"text\" || type === \"icon\") &&\n \"-top-1 left-0\",\n statusPosition === \"bottom-right\" &&\n size === \"sm\" &&\n (type === \"text\" || type === \"icon\") &&\n \"bottom-0 right-1.5\",\n statusPosition === \"top-right\" &&\n size === \"sm\" &&\n (type === \"text\" || type === \"icon\") &&\n \"top-0 right-0.5\",\n // medium\n statusPosition === \"bottom-left\" &&\n size === \"md\" &&\n type === \"image\" &&\n \"bottom-1\",\n statusPosition === \"top-left\" &&\n size === \"md\" &&\n type === \"image\" &&\n \"-top-1 left-0.5\",\n statusPosition === \"bottom-right\" &&\n size === \"md\" &&\n type === \"image\" &&\n \"bottom-1 right-2\",\n statusPosition === \"top-right\" &&\n size === \"md\" &&\n type === \"image\" &&\n \"top-0 right-1\",\n // medium text and icon\n statusPosition === \"bottom-left\" &&\n size === \"md\" &&\n (type === \"text\" || type === \"icon\") &&\n \"bottom-1\",\n statusPosition === \"top-left\" &&\n size === \"md\" &&\n (type === \"text\" || type === \"icon\") &&\n \"-top-1 left-1\",\n statusPosition === \"bottom-right\" &&\n size === \"md\" &&\n (type === \"text\" || type === \"icon\") &&\n \"bottom-1 right-2\",\n statusPosition === \"top-right\" &&\n size === \"md\" &&\n (type === \"text\" || type === \"icon\") &&\n \"top-0 right-1.5\",\n // large\n statusPosition === \"bottom-left\" &&\n size === \"lg\" &&\n type === \"image\" &&\n \"bottom-2 left-0\",\n statusPosition === \"top-left\" &&\n size === \"lg\" &&\n type === \"image\" &&\n \"top-0 left-0.5\",\n statusPosition === \"bottom-right\" &&\n size === \"lg\" &&\n type === \"image\" &&\n \"bottom-2.5 right-2\",\n statusPosition === \"top-right\" &&\n size === \"lg\" &&\n type === \"image\" &&\n \"top-0 right-2\",\n // large text and icon\n statusPosition === \"bottom-left\" &&\n size === \"lg\" &&\n (type === \"text\" || type === \"icon\") &&\n \"bottom-1.5 left-1.5\",\n statusPosition === \"top-left\" &&\n size === \"lg\" &&\n (type === \"text\" || type === \"icon\") &&\n \"top-0 left-1\",\n statusPosition === \"bottom-right\" &&\n size === \"lg\" &&\n (type === \"text\" || type === \"icon\") &&\n \"bottom-2 right-2.5\",\n statusPosition === \"top-right\" &&\n size === \"lg\" &&\n (type === \"text\" || type === \"icon\") &&\n \"top-0 right-2.5\"\n )}\n >\n {statusIcon}\n </span>\n )}\n </div>\n );\n});\n\nAvatar.displayName = \"Avatar\";\n\nexport default Avatar;\n","// AvatarGroup.tsx\nimport React, { forwardRef } from \"react\";\nimport { cn } from \"../utils/utils\";\nimport Avatar, { ImageProps, IconProps, TextProps } from \"./Avatar\";\n\ntype AvatarItemProps =\n | Omit<ImageProps, \"size\">\n | Omit<IconProps, \"size\">\n | Omit<TextProps, \"size\">;\n\ninterface AvatarGroupProps {\n avatars: AvatarItemProps[];\n size?: \"sm\" | \"md\" | \"lg\";\n max?: number;\n className?: string;\n}\n\nconst AvatarGroup = forwardRef<HTMLDivElement, AvatarGroupProps>(\n ({ avatars, size = \"md\", max, className }, ref) => {\n const displayAvatars = max ? avatars.slice(0, max) : avatars;\n const remainingCount = max ? avatars.length - max : 0;\n\n return (\n <div\n ref={ref}\n className={cn(\"flex -space-x-6 rtl:space-x-reverse\", className)}\n >\n {displayAvatars.map((avatar, index) => (\n <div\n className=\"hover:-translate-x-3 transition-all duration-200\"\n key={index}\n >\n <Avatar {...avatar} size={size} />\n </div>\n ))}\n {remainingCount > 0 && (\n <div>\n <Avatar\n type=\"text\"\n text={`+${remainingCount}`}\n size={size}\n rounded\n className=\"bg-gray-100\"\n />\n </div>\n )}\n </div>\n );\n }\n);\n\nAvatarGroup.displayName = \"AvatarGroup\";\n\nexport default AvatarGroup;\n","// \"use client\"\n// import React, { ReactNode } from \"react\";\n// import { usePathname } from \"next/navigation\";\n// import Link from \"next/link\";\n\n// type BreadCrumbProps = {\n// homeElement: ReactNode;\n// separator: ReactNode;\n// containerClasses?: string;\n// listClasses?: string;\n// activeClasses?: string;\n// capitalizeLinks?: boolean;\n// };\n\n// const Breadcrumb = ({\n// homeElement,\n// separator,\n// containerClasses,\n// listClasses,\n// activeClasses,\n// capitalizeLinks,\n// }: BreadCrumbProps) => {\n// const paths = usePathname();\n// const pathNames = paths?.split(\"/\")?.filter((path) => path);\n\n// return (\n// <div>\n// <ul className={containerClasses}>\n// <li className={listClasses}>\n// <Link href={\"/\"}>{homeElement}</Link>\n// </li>\n// {pathNames?.length > 0 && separator}\n// {pathNames?.map((link, index) => {\n// let href = `/${pathNames?.slice(0, index + 1)?.join(\"/\")}`;\n// let itemClasses =\n// paths === href ? `${listClasses} ${activeClasses}` : listClasses;\n// let itemLink = capitalizeLinks\n// ? link[0]?.toUpperCase() + link?.slice(1, link?.length)\n// : link;\n// return (\n// <React.Fragment key={index}>\n// <li className={itemClasses}>\n// <Link href={href}>{itemLink}</Link>\n// </li>\n// {pathNames?.length !== index + 1 && separator}\n// </React.Fragment>\n// );\n// })}\n// </ul>\n// </div>\n// );\n// };\n\n// export default Breadcrumb;\n\nimport React from 'react';\n\ntype BreadcrumbsProps = {\n children: React.ReactNode;\n separator?: React.ReactNode;\n 'aria-label': string;\n containerClasses?: string;\n};\n\nconst Breadcrumbs = ({\n children,\n separator = '/',\n 'aria-label': ariaLabel,\n containerClasses\n}: BreadcrumbsProps) => {\n const items = React.Children.toArray(children).map((child, index) => {\n const isLast = index === React.Children.count(children) - 1;\n return (\n <span key={index} className='flex items-center text-text-xs text-gray-700 font-semibold'>\n {child}\n {!isLast && <span className='mx-[6px]'>{separator}</span>}\n </span>\n );\n });\n\n return (\n <nav aria-label={ariaLabel} className={`flex items-center text-text-xs text-gray-700 font-semibold ${containerClasses}`}>\n {items}\n </nav>\n );\n};\n\nexport default Breadcrumbs;\n","import React, { ButtonHTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"../utils/utils\";\nimport { cva, VariantProps } from \"class-variance-authority\";\n\ninterface ButtonProps\n extends ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n children?: ReactNode;\n startIcon?: JSX.Element;\n endIcon?: JSX.Element;\n disabled?: boolean;\n fullWidth?: boolean;\n}\n\nconst buttonVariants = cva(\n \"rounded-lg disabled:select-none font-semibold cursor-pointer transition-colors duration-300 ease-in-out\",\n {\n variants: {\n variant: {\n filled:\n \"bg-primary-600 text-white active:bg-primary-900 active:border-primary-900 hover:bg-primary-700 hover:border-primary-700 border border-primary-600 disabled:opacity-[30%] disabled:pointer-events-none\",\n outlined:\n \"border border-primary-600 bg-white disabled:opacity-[30%] disabled:pointer-events-none text-primary-600 hover:bg-primary-100 active:bg-primary-200 active:border-primary-700\",\n },\n intent: {\n primary:\n \"bg-primary-600 border-primary-600 active:bg-primary-900 active:border-primary-900 hover:bg-primary-700 hover:border-primary-700\",\n success:\n \"bg-success-600 border-success-600 active:bg-success-900 active:border-success-900 hover:bg-success-700 hover:border-success-700\",\n error:\n \"bg-error-700 border-error-700 active:bg-error-900 active:border-error-900 hover:bg-error-800 hover:border-error-800\",\n warning:\n \"bg-warning-600 border-warning-600 active:bg-warning-900 active:border-warning-900 hover:bg-warning-700 hover:border-warning-700\",\n default:\n \"bg-gray-600 border-gray-600 active:bg-gray-900 active:border-gray-900 hover:bg-gray-700 hover:border-gray-700\",\n \"primary-outlined\":\n \"border-primary-600 text-primary-600 hover:bg-primary-100 active:bg-primary-200 active:border-primary-700\",\n \"success-outlined\":\n \"border-success-600 text-success-600 hover:bg-success-50 hover:border-success-700 hover:text-success-700 active:bg-success-100 active:text-success-900 active:border-success-900\",\n \"error-outlined\":\n \"border-error-700 text-error-700 hover:bg-error-100 hover:border-error-700 hover:text-error-700 active:bg-error-200 active:text-error-700 active:border-error-800\",\n \"warning-outlined\":\n \"border-warning-500 text-warning-500 hover:bg-warning-50 hover:border-warning-600 hover:text-warning-600 active:bg-warning-100 active:text-warning-700 active:border-warning-700\",\n \"default-outlined\":\n \"border-gray-700 text-gray-700 hover:bg-gray-100 hover:border-gray-700 hover:text-gray-700 active:bg-gray-300 active:text-gray-800 active:border-gray-800\",\n },\n size: {\n sm: \"text-sm px-3.5 py-2\",\n md: \"text-sm px-4 py-2.5\",\n lg: \"text-base px-[18px] py-2.5\",\n },\n },\n defaultVariants: {\n variant: \"filled\",\n size: \"md\",\n },\n }\n);\n\nconst Button = ({\n children,\n className,\n variant,\n intent,\n fullWidth = false,\n startIcon,\n disabled,\n endIcon,\n size,\n ...props\n}: ButtonProps) => {\n return (\n <button\n {...props}\n disabled={disabled}\n className={cn(\n fullWidth && \"w-full\",\n buttonVariants({ intent, className, variant, size }),\n \"flex items-center text-center justify-center gap-2\"\n )}\n >\n {startIcon}\n {children}\n {endIcon}\n </button>\n );\n};\n\nexport default Button;\n","import React, { HTMLAttributes, forwardRef } from \"react\";\nimport { cn } from \"../utils/utils\";\nimport { cva, VariantProps } from \"class-variance-authority\";\n\ninterface CheckboxProps\n extends Omit<HTMLAttributes<HTMLInputElement>, \"size\">,\n VariantProps<typeof checkboxVariant> {\n size?: \"sm\" | \"lg\";\n disabled?: boolean;\n checked?: boolean;\n children?: never;\n}\n\nconst checkboxVariant = cva(\n \"peer relative cursor-pointer appearance-none rounded-[4px] border border-gray-300 transition-all checked:border-primary-600 checked:bg-primary-50 hover:bg-primary-50 disabled:opacity-30 disabled:pointer-events-none\",\n {\n variants: {\n size: {\n sm: \"h-3 w-3\",\n lg: \"h-3.5 w-3.5\",\n },\n },\n defaultVariants: {\n size: \"lg\",\n },\n }\n);\n\nconst Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n ({ disabled, checked, size, className, children, ...props }, ref) => {\n return (\n <div className=\"inline-flex relative items-center\">\n <input\n type=\"checkbox\"\n ref={ref}\n {...props}\n disabled={disabled}\n checked={checked}\n className={cn(checkboxVariant({ className, size }))}\n />\n <span className=\"absolute text-primary-600 transition-opacity opacity-0 pointer-events-none top-2/4 left-2/4 -translate-y-2/4 -translate-x-2/4 peer-checked:opacity-100\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"w-2.5 h-2.5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n strokeWidth=\"1\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n </span>\n </div>\n );\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\n\nexport default Checkbox;\n","import React, { ReactNode, HTMLAttributes } from \"react\";\nimport { cn } from \"../utils/utils\";\nimport { cva, VariantProps } from \"class-variance-authority\";\n\nconst chipVariants = cva(\n \"rounded-full capitalize flex items-center w-fit gap-2\",\n {\n variants: {\n intent: {\n default: \"bg-gray-50 text-gray-600\",\n success: \"bg-success-50 text-success-600\",\n warning: \"bg-warning-50 text-warning-500\",\n error: \"bg-error-50 text-error-600\",\n primary: \"bg-primary-100 text-primary-700\",\n bluegray: \"bg-bluegray-100 text-bluegray-500\",\n bluelight: \"bg-bluelight-100 text-bluelight-600\",\n violet: \"bg-violet-50 text-violet-700\",\n indigo: \"bg-indigo-100 text-indigo-700\",\n purple: \"bg-purple-50 text-purple-700\",\n pink: \"bg-pink-25 text-pink-700\",\n rose: \"bg-rose-50 text-rose-600\",\n orange: \"bg-orange-50 text-orange-600\",\n },\n size: {\n sm: \"text-xs px-2 py-0.5\",\n md: \"text-sm px-2.5 py-0.5\",\n lg: \"text-sm px-3 py-1\",\n },\n },\n defaultVariants: {\n intent: \"default\",\n size: \"md\",\n },\n }\n);\n\nconst dotColorVariants: Record<string, string> = {\n default: \"bg-gray-600\",\n success: \"bg-success-600\",\n warning: \"bg-warning-600\",\n error: \"bg-error-600\",\n primary: \"bg-primary-600\",\n bluegray: \"bg-bluegray-500\",\n bluelight: \"bg-bluelight-600\",\n violet: \"bg-violet-700\",\n indigo: \"bg-indigo-700\",\n purple: \"bg-purple-700\",\n pink: \"bg-pink-700\",\n rose: \"bg-rose-600\",\n orange: \"bg-orange-600\",\n};\n\ninterface ChipProps\n extends HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof chipVariants> {\n children: ReactNode;\n dot?: boolean;\n dotColor?: string;\n}\n\nconst Chip = ({\n children,\n className,\n size,\n intent = \"default\",\n dot,\n dotColor,\n}: ChipProps) => {\n const resolvedIntent = intent ?? \"default\";\n\n return (\n <div className={cn(chipVariants({ intent: resolvedIntent, size }), className)}>\n {dot && (\n <span\n className={cn(\n \"w-1.5 h-1.5 rounded-full\",\n dotColor || dotColorVariants[resolvedIntent] || \"bg-primary-600\" // Default fallback\n )}\n ></span>\n )}\n <span>{children}</span>\n </div>\n );\n};\n\nexport default Chip;\n","import { cn } from \"../utils/utils\";\nimport React from \"react\";\n\ninterface CircularProgressBarProps {\n strokeWidth?: number;\n size?: number;\n percentage: number;\n text?: string;\n textClassName?: string;\n}\n\nconst CircularProgressBar = ({\n percentage,\n size = 160,\n strokeWidth = 8,\n text,\n textClassName,\n}: CircularProgressBarProps) => {\n const radius = (size - strokeWidth) / 2;\n const viewBox = `0 0 ${size} ${size}`;\n const dashArray = radius * Math.PI * 2;\n const dashOffset = dashArray - (dashArray * (percentage || 0)) / 100;\n\n return (\n <svg width={size} height={size} viewBox={viewBox}>\n <circle\n className=\"fill-none stroke-gray-200\"\n cx={size / 2}\n cy={size / 2}\n r={radius}\n strokeWidth={`${strokeWidth}px`}\n />\n <circle\n className=\"fill-none stroke-primary-600 transition-all delay-200 ease-in\"\n cx={size / 2}\n cy={size / 2}\n r={radius}\n strokeLinecap=\"round\"\n strokeWidth={`${strokeWidth}px`}\n transform={`rotate(-90 ${size / 2} ${size / 2})`}\n style={{\n strokeDasharray: dashArray,\n strokeDashoffset: dashOffset,\n }}\n />\n <text\n x=\"50%\"\n y=\"50%\"\n dy=\".3em\"\n textAnchor=\"middle\"\n fill=\"currentColor\"\n className={cn(textClassName)}\n >\n {text}\n </text>\n </svg>\n );\n};\n\nexport default CircularProgressBar;\n","import React from \"react\";\nimport { cn } from \"../utils/utils\";\n\ninterface DividerProps {\n width?: string;\n height?: string;\n position?: \"horizontal\" | \"vertical\";\n className?: string;\n}\n\nconst Divider = ({\n width,\n height,\n position = \"horizontal\",\n className,\n}: DividerProps) => {\n return (\n <div\n style={{\n width: width,\n height: height,\n }}\n className={cn(\n `bg-gray-200`,\n position === \"horizontal\" ? \"w-full h-[1px]\" : \"w-[1px] h-full\",\n className\n )}\n ></div>\n );\n};\n\nexport default Divider;\n","\"use client\";\nimport React, {\n useEffect,\n useState,\n useMemo,\n useCallback,\n forwardRef,\n useRef,\n useImperativeHandle,\n} from \"react\";\nimport {\n RiArrowDownSLine,\n RiSearchLine,\n RiErrorWarningLine,\n} from \"@remixicon/react\";\nimport { cn } from \"../utils/utils\";\nimport Input from \"./Input\";\nimport Label from \"./Label\";\nimport Checkbox from \"./Checkbox\";\nimport Tooltip from \"./Tooltip\";\n\ntype Option = {\n label: string;\n value: string;\n info?: string;\n addInfo?: string;\n tooltipContent?: string;\n};\n\ninterface MenuItemProps {\n label?: string;\n value: string;\n children?: React.ReactNode;\n}\n\ninterface DropdownProps {\n icon?: JSX.Element;\n options: Option[];\n selected?: Option[];\n setSelected?: React.Dispatch<React.SetStateAction<Option[]>>;\n onApply?: () => void;\n onReset?: () => void;\n dropdownText?: string;\n search?: boolean;\n multiple?: boolean;\n renderItem?: (option: Option) => React.ReactNode;\n children?: React.ReactNode;\n position?: \"top\" | \"bottom\";\n info?: string | number;\n addInfo?: string | number;\n tooltipContent?: string;\n width?: string;\n dropDownTooltip?: boolean | undefined;\n dropdownFooter?: boolean | undefined;\n disabled?: boolean;\n}\n\nconst defaultRenderItem = (option: Option) => {\n return <MenuItem label={option.label} value={option.value} />;\n};\n\nconst Dropdown = forwardRef<HTMLDivElement, DropdownProps>(\n (\n {\n options,\n selected,\n setSelected,\n search = false,\n multiple = false,\n dropdownText = \"Select\",\n renderItem = defaultRenderItem,\n children,\n icon,\n position = \"top\",\n width,\n info,\n dropDownTooltip = false,\n dropdownFooter = false,\n onApply,\n disabled = false,\n onReset,\n },\n ref\n ) => {\n const [searchQuery, setSearchQuery] = useState<string>(\"\");\n const [filteredOptions, setFilteredOptions] = useState<Option[]>(\n options || []\n );\n\n const [dropdownMenu, setDropdownMenu] = useState(false);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n useImperativeHandle(ref, () => dropdownRef.current!);\n\n useEffect(() => {\n if (options) {\n setFilteredOptions(options);\n }\n }, [options]);\n\n const memoizedFilteredOptions = useMemo(() => {\n if (!search) return filteredOptions;\n return filteredOptions.filter((option) =>\n option.label.toLowerCase().includes(searchQuery.toLowerCase())\n );\n }, [search, searchQuery, filteredOptions]);\n\n const handleSearchChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setSearchQuery(e.target.value);\n },\n []\n );\n\n const toggleOption = useCallback(\n (option: Option) => {\n if (multiple && setSelected) {\n setSelected((prevSelected) =>\n prevSelected.some((item) => item.value === option.value)\n ? prevSelected.filter((item) => item.value !== option.value)\n : [...prevSelected, option]\n );\n } else if (setSelected) {\n setSelected([option]);\n setDropdownMenu(false);\n }\n },\n [multiple, setSelected]\n );\n\n const handleCheckboxChange = useCallback(\n (option: Option) => {\n if (multiple && setSelected) {\n setSelected((prevSelected) =>\n prevSelected.some((item) => item.value === option.value)\n ? prevSelected.filter((item) => item.value !== option.value)\n : [...prevSelected, option]\n );\n } else if (setSelected) {\n setSelected([option]);\n }\n },\n [multiple, setSelected]\n );\n\n const handleSelectAll = () => {\n if (selected?.length === filteredOptions.length) {\n setSelected?.([]);\n } else {\n setSelected?.(filteredOptions);\n }\n };\n\n const handleReset = () => {\n if (onReset) {\n onReset();\n }\n setSelected?.([]);\n setDropdownMenu(false);\n };\n\n useEffect(() => {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, []);\n\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node)\n ) {\n setDropdownMenu(false);\n }\n };\n\n // width adjustment\n\n return (\n <div\n ref={dropdownRef}\n // className={cn(\"relative\", !width && \"w-full\")}\n className={cn(\n \"relative \",\n !width && \"w-full\",\n disabled && \"cursor-not-allowed opacity-50\"\n )}\n style={{\n width: width,\n }}\n >\n <div\n // onClick={() => setDropdownMenu((prev) => !prev)}\n onClick={() => !disabled && setDropdownMenu((prev) => !prev)}\n className={cn(\n \"hover:bg-gray-50 py-2 px-[14px] rounded-lg flex justify-between items-center text-gray-900 bg-gray-25 text-text-sm cursor-pointer\",\n dropdownMenu ? \"border border-gray-800\" : \"border border-gray-200\",\n disabled && \"bg-gray-300 hover:bg-gray-300 cursor-not-allowed\"\n )}\n >\n <section\n className={cn(\n \"flex items-center gap-2 text-ellipsis overflow-hidden\"\n )}\n >\n {icon && <span>{icon}</span>}\n <p className=\"line-clamp-1 w-full\">\n {multiple\n ? (selected?.length ?? 0) > 0\n ? `${selected?.length} Selected`\n : dropdownText\n : selected?.[0]?.label\n ? selected?.[0]?.label\n : dropdownText}\n </p>\n </section>\n <RiArrowDownSLine size={18} />\n </div>\n <ul\n className={cn(\n \"max-h-0 opacity-0 overflow-hidden shadow-sm mt-1 rounded absolute text-[16px] bg-white z-[1000] w-full transition-all duration-75 delay-100 ease-in\",\n position === \"top\" ? \"top-10\" : \"bottom-10\",\n dropdownMenu &&\n \"max-h-[320px] opacity-[1] transition-all ease-in duration-150\"\n )}\n >\n {search && (\n <Input\n type=\"text\"\n placeholder=\"Search...\"\n value={searchQuery}\n onChange={handleSearchChange}\n className=\"rounded rounded-b-none text-gray-800 bg-white w-full h-[35px] pl-3\"\n endIcon={<RiSearchLine size={18} />}\n />\n )}\n {multiple && (\n <section className=\"py-[6px] px-[14px] flex justify-between items-center\">\n <p\n onClick={handleSelectAll}\n className=\"text-text-sm hover:text-primary-700 text-primary-600 cursor-pointer\"\n >\n Select all\n </p>\n <button\n className=\"text-text-sm text-warning-500 hover:text-warning-600\"\n onClick={handleReset}\n >\n Reset\n </button>\n </section>\n )}\n <section className=\"max-h-[200px] transition-all duration-75 delay-100 ease-in-out overflow-y-scroll\">\n {options\n ? memoizedFilteredOptions.map((option, i) => (\n <React.Fragment key={i}>\n {multiple ? (\n <Label\n className=\"has-[:checked]:bg-primary-50 has-[:checked]:border-primary-600 hover:bg-gray-50 flex flex-col py-[6px] px-[14px] cursor-pointer border-l-4 border-transparent\"\n htmlFor={`checkbox-${option.value}`}\n key={i}\n >\n <section className=\"flex items-center justify-between gap-2 w-full\">\n <div className=\"flex gap-2\">\n <Checkbox\n id={`checkbox-${option.value}`}\n checked={\n selected?.some(\n (item) => item.value === option.value\n ) ?? false\n }\n onChange={() => handleCheckboxChange(option)}\n />\n <div className=\"flex items-center gap-1\">\n <span>{renderItem(option)}</span>\n {dropDownTooltip && (\n <DropdownTooltip\n tooltipContent={option?.tooltipContent}\n />\n )}\n </div>\n </div>\n <span className=\"text-gray-500\">{option?.info}</span>\n </section>\n <span className=\"pt-[2px] text-text-sm text-gray-500\">\n {option?.addInfo}\n </span>\n </Label>\n ) : (\n <Label\n key={i}\n className={cn(\n \"flex justify-between py-[6px] px-[14px] hover:bg-gray-50 gap-2 items-center border-l-4 border-transparent cursor-pointer\",\n {\n \"bg-primary-50 border-primary-600\":\n selected && selected[0]?.value === option.value,\n }\n )}\n onClick={() => toggleOption(option)}\n >\n <div className=\"flex items-center gap-1\">\n <span>{renderItem(option)}</span>\n {dropDownTooltip && (\n <DropdownTooltip\n tooltipContent={option?.tooltipContent}\n />\n )}\n </div>\n <span className=\"text-gray-500\">{info}</span>\n </Label>\n )}\n </React.Fragment>\n ))\n : children}\n </section>\n {dropdownFooter && (\n <DropdownFooter\n setDropdownMenu={setDropdownMenu}\n onApply={onApply}\n />\n )}\n </ul>\n </div>\n );\n }\n);\n\nexport const MenuItem: React.FC<MenuItemProps> = ({ label, children }) => {\n return <p className=\"break-all\">{label || children}</p>;\n};\n\ninterface DropdownTooltipProps {\n tooltipContent?: string | undefined;\n}\n\nconst DropdownTooltip: React.FC<DropdownTooltipProps> = ({\n tooltipContent,\n}) => {\n const content = tooltipContent || \"\";\n return content ? (\n <Tooltip position=\"right\" content={content}>\n <RiErrorWarningLine color=\"#98A2B3\" size={14} />\n </Tooltip>\n ) : null;\n};\n\ninterface DropdownFooterProps {\n onApply?: (() => void) | undefined;\n setDropdownMenu?: any;\n}\n\nexport const DropdownFooter: React.FC<DropdownFooterProps> = ({\n // onReset,\n onApply,\n setDropdownMenu,\n}) => {\n return (\n <div className=\"flex justify-end border-t border-gray-200 px-[14px] py-[8px] text-text-sm\">\n <button\n className=\"text-primary-600 hover:text-primary-700\"\n onClick={() => {\n if (onApply) {\n onApply();\n }\n setDropdownMenu(false);\n }}\n >\n Apply\n </button>\n </div>\n );\n};\n\nDropdown.displayName = \"Dropdown\";\n\nexport default Dropdown;\n","import React, { InputHTMLAttributes, forwardRef } from \"react\";\nimport { cn } from \"../utils/utils\";\n\ninterface InputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n size?: \"sm\" | \"lg\";\n startIcon?: JSX.Element;\n endIcon?: JSX.Element;\n disabled?: boolean;\n type:\n | \"text\"\n | \"url\"\n | \"email\"\n | \"password\"\n | \"number\"\n | \"tel\"\n | \"search\"\n | \"time\";\n}\n\nconst Input = forwardRef<HTMLInputElement, InputProps>(\n ({ size, startIcon, endIcon, className, type, disabled, ...props }, ref) => {\n return (\n <div\n className={cn(\n \"group flex items-center gap-2 p-3.5 border border-gray-200 rounded-lg bg-white shadow-xs hover:bg-gray-50 hover:border-gray-300 focus-within:border-gray-800 focus-within:bg-gray-25 focus-within:hover:bg-gray-50 focus-within:hover:border-gray-800 has-[:disabled]:opacity-30 has-[:disabled]:bg-gray-300 has-[:disabled]:select-none has-[:disabled]:pointer-events-none\",\n size === \"sm\"\n ? \"w-[320px] h-10\"\n : size === \"lg\"\n ? \"w-[313px] h-11\"\n : \"w-full h-10\",\n className\n )}\n >\n <span\n className={cn(\n startIcon\n ? \"group-hover:text-gray-600 group-focus-within:text-gray-600\"\n : \"hidden\",\n disabled === true && \"text-gray-900\"\n )}\n >\n {startIcon}\n </span>\n <input\n {...props}\n ref={ref}\n disabled={disabled}\n type={type}\n className={cn(\n \"w-full text-sm focus:outline-none bg-transparent disabled:text-gray-900 placeholder:text-gray-500 group-hover:placeholder:text-gray-500\",\n size\n )}\n />\n <span\n className={cn(\n endIcon\n ? \"group-hover:text-gray-600 group-focus-within:text-gray-600\"\n : \"hidden\",\n disabled === true && \"text-gray-900\"\n )}\n >\n {endIcon}\n </span>\n </div>\n );\n }\n);\n\nInput.displayName = \"Input\";\n\nexport default Input;\n","import { cva, VariantProps } from \"class-variance-authority\";\nimport React, { LabelHTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"../utils/utils\";\n\ninterface LabelProps\n extends LabelHTMLAttributes<HTMLLabelElement>,\n VariantProps<typeof labelVariants> {\n htmlFor?: string;\n children: ReactNode;\n required?: boolean;\n disabled?:boolean;\n}\n\nconst labelVariants = cva(\"flex item-start\", {\n variants: {\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n\nconst Label = ({\n children,\n htmlFor,\n size,\n required,\n disabled,\n className,\n ...props\n}: LabelProps) => {\n return (\n <label\n htmlFor={htmlFor}\n className={cn(\"cursor-pointer\",labelVariants({ className, size }),disabled === true ? \"opacity-30 select-none\":\"opacity-100\")}\n {...props}\n >\n {children}\n <span className={cn(required === true ? \"block text-red-500\":\"hidden\")}>*</span>\n </label>\n );\n};\n\nexport default Label;\n","import { VariantProps, cva } from \"class-variance-authority\";\nimport { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"../utils/utils\";\nimport React from \"react\";\n\nconst tooltipVariants = cva(\n \"bg-white shadow-lg rounded-lg absolute hidden group-hover:block p-3 z-10 max-w-[328px] w-max whitespace-normal opacity-0 group-hover:opacity-100 transform transition-all duration-1000 ease-in-out group-hover:delay-[2000ms]\",\n {\n variants: {\n position: {\n top: \"bottom-[calc(100%+0px)] group-hover:translate-y-0 delay-1000 translate-y-[-10px]\",\n right:\n \"top-1/2 -translate-y-1/2 left-[calc(100%+0px)] group-hover:translate-x-0 translate-x-[-10px]\",\n bottom:\n \"top-[calc(100%+0px)] group-hover:translate-y-0 translate-y-[10px]\",\n left: \"top-1/2 -translate-y-1/2 right-[calc(100%+0px)] group-hover:translate-x-0 translate-x-[10px]\",\n },\n },\n }\n);\n\ninterface TooltipProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"content\">,\n VariantProps<typeof tooltipVariants> {\n children: ReactNode;\n position: \"top\" | \"right\" | \"bottom\" | \"left\";\n content: JSX.Element | string;\n}\n\nconst Tooltip: React.FC<TooltipProps> = ({\n position,\n content,\n children,\n className,\n ...props\n}) => {\n return (\n <div {...props} className=\"relative cursor-pointer text-sm group\">\n <div>{children}</div>\n <span className={cn(tooltipVariants({ position }), className)}>\n {content}\n </span>\n </div>\n );\n};\n\nexport default Tooltip;\n","\"use client\";\nimport React, {\n useEffect,\n useState,\n useMemo,\n forwardRef,\n useCallback,\n useRef,\n useImperativeHandle,\n} from \"react\";\nimport { RiErrorWarningLine, RiSearchLine } from \"@remixicon/react\";\nimport { cn } from \"../utils/utils\";\nimport Input from \"./Input\";\nimport Label from \"./Label\";\nimport Checkbox from \"./Checkbox\";\nimport Tooltip from \"./Tooltip\";\n\ntype Option = {\n label: string;\n value: string;\n info?: string;\n addInfo?: string;\n tooltipContent?: string;\n};\n\ninterface MenuItemProps {\n label?: string;\n value: string;\n children?: React.ReactNode;\n}\n\ninterface DropdownFooterProps {\n // onReset?: () => void;\n onApply?: (() => void) | undefined;\n setDropdownMenu?: any;\n}\n\ninterface DropdownProps {\n options: Option[];\n selected?: Option[];\n setSelected?: React.Dispatch<React.SetStateAction<Option[]>>;\n onApply?: () => void;\n onReset?: () => void;\n search?: boolean;\n multiple?: boolean;\n renderItem?: (option: Option) => React.ReactNode;\n children?: React.ReactNode;\n trigger?: React.ReactNode;\n dropdownMenu?: boolean;\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\n setDropdownMenu?: (value: boolean) => void;\n info?: string | number;\n addInfo?: string | number;\n tooltipContent?: string;\n width?: string;\n dropDownTooltip?: boolean | undefined;\n dropdownFooter?: boolean;\n disabled?: boolean;\n}\n\nconst defaultRenderItem = (option: Option) => {\n return <MenuItem label={option.label} value={option.value} />;\n};\n\nconst DropdownWithIcon = forwardRef<HTMLDivElement, DropdownProps>(\n (\n {\n options,\n selected = [],\n setSelected,\n search = false,\n multiple = false,\n renderItem = defaultRenderItem,\n children,\n trigger,\n // dropdownMenu = false,\n position = \"top\",\n // setDropdownMenu = () => {},\n width,\n info,\n dropDownTooltip = false,\n dropdownFooter = false,\n onApply,\n disabled = false,\n onReset,\n },\n ref\n ) => {\n const [searchQuery, setSearchQuery] = useState<string>(\"\");\n const localDropdownRef = useRef<HTMLDivElement>(null);\n const [dropdownMenu, setDropdownMenu] = useState(false);\n\n useImperativeHandle(ref, () => localDropdownRef.current!);\n\n const memoizedFilteredOptions = useMemo(() => {\n if (!search) return options;\n return options?.filter(\n (option) =>\n typeof option?.label === \"string\" &&\n option?.label?.toLowerCase()?.includes(searchQuery?.toLowerCase())\n );\n }, [search, searchQuery, options]);\n\n const handleSearchChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setSearchQuery(e?.target?.value);\n },\n []\n );\n\n const toggleOption = useCallback(\n (option: Option) => {\n if (multiple && setSelected) {\n setSelected((prevSelected) =>\n prevSelected?.some((item) => item?.value === option?.value)\n ? prevSelected?.filter((item) => item?.value !== option?.value)\n : [...prevSelected, option]\n );\n } else if (setSelected) {\n setSelected([option]);\n setDropdownMenu(false);\n }\n },\n [multiple, setSelected, setDropdownMenu]\n );\n\n const handleCheckboxChange = useCallback(\n (option: Option) => {\n if (multiple && setSelected) {\n setSelected((prevSelected) =>\n prevSelected?.some((item) => item?.value === option?.value)\n ? prevSelected?.filter((item) => item?.value !== option?.value)\n : [...prevSelected, option]\n );\n } else if (setSelected) {\n setSelected([option]);\n }\n },\n [multiple, setSelected]\n );\n\n const handleSelectAll = () => {\n if (selected?.length === options?.length) {\n setSelected?.([]);\n } else {\n setSelected?.(options);\n }\n };\n\n const handleReset = () => {\n if (onReset) {\n onReset();\n }\n setSelected?.([]);\n setDropdownMenu(false);\n };\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n localDropdownRef?.current &&\n !localDropdownRef?.current?.contains(event?.target as Node)\n ) {\n setDropdownMenu(false);\n }\n };\n\n document?.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document?.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [setDropdownMenu]);\n\n return (\n <div\n ref={localDropdownRef}\n className={cn(\n \"relative\",\n !width && \"w-full\",\n disabled && \"cursor-not-allowed opacity-50\"\n )}\n style={{\n width: width,\n }}\n >\n {/* <div onClick={() => setDropdownMenu(!dropdownMenu)}>{trigger}</div> */}\n <div onClick={() => !disabled && setDropdownMenu((prev) => !prev)}>\n {trigger}\n </div>\n <ul\n className={cn(\n \"max-h-0 opacity-0 overflow-hidden shadow-sm mt-1 rounded absolute text-[16px] bg-white z-[1000] w-full transition-all duration-75 delay-100 ease-in\",\n position === \"top\"\n ? \"top-10\"\n : position === \"bottom\"\n ? \"bottom-10\"\n : position === \"left\"\n ? \"left-0\"\n : position === \"right\"\n ? \"right-[90%]\"\n : \"top-10\",\n dropdownMenu &&\n \"max-h-[320px] opacity-[1] transition-all ease-in duration-150\"\n )}\n style={{\n width: width,\n minWidth: \"200px\",\n top: \"calc(100% + 4px)\",\n }}\n >\n {search && (\n <Input\n type=\"text\"\n placeholder=\"Search...\"\n value={searchQuery}\n onChange={handleSearchChange}\n className=\"rounded rounded-b-none text-gray-800 bg-white w-full h-[35px] pl-3\"\n endIcon={<RiSearchLine size={18} />}\n />\n )}\n {multiple && (\n <section className=\"py-[6px] px-[14px] flex justify-between items-center\">\n <p\n onClick={handleSelectAll}\n className=\"text-text-sm hover:text-primary-700 text-primary-600 cursor-pointer\"\n >\n Select all\n </p>\n <button\n className=\"text-text-sm text-warning-500 hover:text-warning-600\"\n onClick={handleReset}\n >\n Reset\n </button>\n </section>\n )}\n <section className=\"max-h-[200px] z-[1000] transition-all duration-75 delay-100 ease-in-out overflow-y-scroll\">\n {options\n ? memoizedFilteredOptions?.map((option, i) => (\n <React.Fragment key={i}>\n {multiple ? (\n <Label\n className=\"has-[:checked]:bg-primary-50 has-[:checked]:border-primary-600 hover:bg-gray-50 flex flex-col py-[6px] px-[14px] break-words cursor-pointer border-l-4 border-transparent\"\n htmlFor={`checkbox-${option?.value}`}\n key={i}\n >\n <section className=\"flex items-center justify-between gap-2 w-full\">\n <div className=\"flex gap-2\">\n <Checkbox\n id={`checkbox-${option?.value}`}\n checked={selected?.some(\n (item) => item?.value === option?.value\n )}\n onChange={() => handleCheckboxChange(option)}\n />\n <div className=\"flex items-center gap-1\">\n <div className=\"break-words\">\n {renderItem(option)}\n </div>\n {dropDownTooltip && (\n <DropdownTooltip\n tooltipContent={option?.tooltipContent}\n />\n )}\n </div>\n </div>\n <span className=\"text-gray-500\">{option?.info}</span>\n </section>\n <span className=\"pt-[2px] text-text-sm text-gray-500\">\n {option?.addInfo}\n </span>\n </Label>\n ) : (\n <Label\n key={i}\n className={cn(\n \"flex justify-between py-[6px] px-[14px] hover:bg-gray-50 gap-2 items-center border-l-4 border-transparent cursor-pointer\",\n {\n \"bg-primary-50 border-primary-600\":\n selected && selected[0]?.value === option?.value,\n }\n )}\n onClick={() => toggleOption(option)}\n >\n <div className=\"flex items-center gap-1\">\n <span>{renderItem(option)}</span>\n {dropDownTooltip && (\n <DropdownTooltip\n tooltipContent={option?.tooltipContent}\n />\n )}\n </div>\n <span className=\"text-gray-500\">{info}</span>\n </Label>\n )}\n </React.Fragment>\n ))\n : children}\n </section>\n {dropdownFooter && <DropdownFooter onApply={onApply} />}\n </ul>\n </div>\n );\n }\n);\n\nexport const MenuItem: React.FC<MenuItemProps> = ({ label, children }) => {\n return <p className=\"break-all\">{label || children}</p>;\n};\n\ninterface DropdownTooltipProps {\n tooltipContent?: string | undefined;\n}\n\nconst DropdownTooltip: React.FC<DropdownTooltipProps> = ({\n tooltipContent,\n}) => {\n return tooltipContent ? (\n <Tooltip position=\"right\" content={tooltipContent}>\n <RiErrorWarningLine color=\"#98A2B3\" size={14} />\n </Tooltip>\n ) : null;\n};\n\nconst DropdownFooter: React.FC<DropdownFooterProps> = ({\n onApply,\n setDropdownMenu,\n}) => {\n return (\n <div className=\"flex justify-between border-t border-gray-200 px-[14px] py-[8px] text-text-sm\">\n <button\n className=\"text-primary-600 hover:text-primary-700\"\n onClick={() => {\n if (onApply) {\n onApply();\n }\n setDropdownMenu(false);\n }}\n >\n Apply\n </button>\n </div>\n );\n};\n\nDropdownWithIcon.displayName = \"DropdownWithIcon\";\n\nexport default DropdownWithIcon;\n","import React, { forwardRef } from \"react\";\nimport type { InputHTMLAttributes, ReactNode } from \"react\";\nimport {\n RiFileLine,\n RiUpload2Line,\n RiDeleteBinLine,\n RiMusic2Line,\n RiVideoLine,\n RiImageLine,\n RiFileExcel2Line,\n RiFileWord2Line,\n RiFilePpt2Line,\n RiFileZipLine,\n RiFilePdf2Line,\n} from \"@remixicon/react\";\n\nimport { cn } from \"../utils/utils\";\nimport Label from \"./Label\";\n\nexport interface FileUploadProps extends InputHTMLAttributes<HTMLInputElement> {\n id: string;\n selectedFile?: File[];\n setSelectedFile?: (files: File[]) => void;\n children?: ReactNode;\n onDelete?: () => void;\n title?: string;\n disabled?: boolean;\n}\n\nconst getIconForMimeType = (file: File) => {\n const fileName = typeof file === \"string\" ? file : file.name;\n const extension = fileName.split(\".\").pop()?.toLowerCase();\n\n let iconComponent: JSX.Element;\n switch (extension) {\n case \"jpg\":\n case \"jpeg\":\n case \"png\":\n case \"gif\":\n case \"svg\":\n case \"webp\":\n iconComponent = (\n <RiImageLine className=\"text-primary-600 bg-primary-100 border-4 border-primary-50 w-8 h-8 p-1 rounded-full\" />\n );\n break;\n case \"mp3\":\n case \"wav\":\n case \"ogg\":\n iconComponent = (\n <RiMusic2Line className=\"text-primary-600 bg-primary-100 border-4 border-primary-50 w-8 h-8 p-1 rounded-full\" />\n );\n break;\n case \"mp4\":\n case \"avi\":\n case \"mkv\":\n iconComponent = (\n <RiVideoLine className=\"text-primary-600 bg-primary-100 border-4 border-primary-50 w-8 h-8 p-1 rounded-full\" />\n );\n break;\n case \"xls\":\n case \"xlsx\":\n case \"csv\":\n case \"txt\":\n case \"ods\":\n iconComponent = (\n <RiFileExcel2Line className=\"text-primary-600 bg-primary-100 border-4 border-primary-50 w-8 h-8 p-1 rounded-full\" />\n );\n break;\n case \"doc\":\n case \"docx\":\n case \"odt\":\n case \"xml\":\n iconComponent = (\n <RiFileWord2Line className=\"text-primary-600 bg-primary-100 border-4 border-primary-50 w-8 h-8 p-1 rounded-full\" />\n );\n break;\n case \"pptx\":\n case \"pptm\":\n case \"xps\":\n case \"ppsx\":\n iconComponent = (\n <RiFilePpt2Line className=\"text-primary-600 bg-primary-100 border-4 border-primary-50 w-8 h-8 p-1 rounded-full\" />\n );\n break;\n case \"rar\":\n case \"zip\":\n iconComponent = (\n <RiFileZipLine className=\"text-primary-600 bg-primary-100 border-4 border-primary-50 w-8 h-8 p-1 rounded-full\" />\n );\n break;\n case \"pdf\":\n iconComponent = (\n <RiFilePdf2Line className=\"text-primary-600 bg-primary-100 border-4 border-primary-50 w-8 h-8 p-1 rounded-full\" />\n );\n break;\n default:\n // Return generic file icon\n iconComponent = (\n <RiFileLine className=\"text-primary-600 bg-primary-100 border-4 border-primary-50 w-8 h-8 p-1 rounded-full\" />\n );\n break;\n }\n return iconComponent;\n};\n\nconst FileUpload = forwardRef<HTMLInputElement, FileUploadProps>(\n (\n {\n selectedFile,\n onChange,\n multiple,\n onDelete,\n children,\n disabled,\n title,\n id,\n className,\n accept,\n ...props\n },\n ref\n ) => {\n return (\n <div className=\"flex flex-col gap-2 \">\n <input\n type=\"file\"\n {...props}\n accept={accept}\n id={id}\n onChange={onChange}\n multiple={multiple}\n disabled={disabled}\n hidden\n ref={ref}\n />\n <Label\n htmlFor={id}\n disabled={disabled}\n className={cn(\n \"w-full h-[126px] border-2 border-dashed border-gray-200 hover:bg-gray-200 cursor-pointer rounded-lg px-6 py-4 flex flex-col items-center gap-2\",\n disabled && \"pointer-events-none\",\n className\n )}\n >\n <div className=\"w-10 h-10 border-[6px] border-gray-50 bg-gray-200 rounded-full p-1 flex justify-center items-center\">\n <RiUpload2Line className=\"w-5 h-5\" />\n </div>\n <p className=\"text-center text-sm text-gray-600\">\n <span className=\"text-primary-600 font-semibold\">\n Click to upload\n </span>{\" \"}\n <br /> {title}\n </p>\n </Label>\n <div className=\"flex flex-col gap-2\">\n {selectedFile?.map((file, index) => (\n <div\n key={index}\n className=\"p-4 border border-gray-200 rounded-lg flex items-center justify-between gap-5\"\n >\n <div className=\"flex items-center gap-2 w-full\">\n {getIconForMimeType(file)}\n <div className=\"flex flex-col gap-1 w-full\">\n <p className=\"text-sm line-clamp-2 break-all\">\n {typeof file === \"string\" ? file : file.name}{\" \"}\n </p>\n <div className=\"w-full\">{children}</div>\n </div>\n </div>\n <RiDeleteBinLine\n onClick={onDelete}\n className=\"text-gray-500 w-5 h-5 cursor-pointer\"\n />\n </div>\n ))}\n </div>\n </div>\n );\n }\n);\n\nFileUpload.displayName = \"FileUpload\";\n\nexport default FileUpload;\n","\"use client\";\nimport React, { useEffect, useRef, forwardRef } from \"react\";\nimport { cn } from \"../utils/utils\";\n\ninterface GlobalNavigationProps {\n isOpen: boolean;\n setIsOpen: (isOpen: boolean) => void;\n className?: string;\n children: React.ReactNode;\n trigger: JSX.Element;\n postion?: \"bottom-left\" | \"bottom-right\" | \"top-left\" | \"top-right\";\n}\n\nconst GlobalNavigation = forwardRef<HTMLDivElement, GlobalNavigationProps>(\n (\n {\n isOpen,\n setIsOpen,\n trigger,\n children,\n className,\n postion = \"bottom-right\",\n },\n ref\n ) => {\n const popoverRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n popoverRef.current &&\n !popoverRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () =>\n document.removeEventListener(\"mousedown\", handleClickOutside);\n }, []);\n\n return (\n <div className=\"relative w-max\" ref={ref}>\n <div\n className=\"cursor-pointer\"\n ref={popoverRef}\n onClick={() => setIsOpen(!isOpen)}\n >\n {trigger}\n </div>\n {isOpen && (\n <div\n className={cn(\n \"absolute z-10 bg-white rounded-lg shadow-sm border min-w-[200px] p-4 transition-all duration-300 ease-in-out\",\n postion === \"bottom-left\" && \"left-0 top-4/4\",\n postion === \"bottom-right\" && \"top-4/4 right-0\",\n postion === \"top-left\" && \"bottom-[57px] left-0\",\n postion === \"top-right\" && \"bottom-[57px] right-0\",\n className\n )}\n >\n {children}\n </div>\n )}\n </div>\n );\n }\n);\n\nGlobalNavigation.displayName = \"GlobalNavigation\";\n\nexport default GlobalNavigation;\n","import React, { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"../utils/utils\";\n\ninterface HelperTextProps extends HTMLAttributes<HTMLSpanElement> {\n children: ReactNode;\n size?: \"sm\" | \"lg\";\n error?: boolean;\n}\n\nconst HelperText = ({ children, className, size, error }: HelperTextProps) => {\n return (\n <span\n className={cn(\n \"text-gray-500\",\n error && \"text-error-500\",\n className,\n size === \"sm\" ? \"text-xs\" : \"text-sm\"\n )}\n >\n {children}\n </span>\n );\n};\n\nexport default HelperText;\n","import Link from \"next/link\";\nimport React from \"react\";\nimport { cn } from \"../utils/utils\";\n\ninterface BaseProps {\n className?: string;\n children?: React.ReactNode;\n title: string;\n as?: \"link\" | \"button\";\n icon?: React.ReactNode;\n}\n\ntype LinkProps = BaseProps & {\n as: \"link\";\n href: string;\n onClick?: never;\n className?: string;\n};\n\ntype ButtonProps = BaseProps & {\n as: \"button\";\n href?: never;\n onClick?: () => void;\n className?: string;\n};\n\ntype ListItemProps = LinkProps | ButtonProps;\n\nconst ListItem = React.forwardRef<\n HTMLAnchorElement | HTMLButtonElement,\n ListItemProps\n>(({ className, title, href, onClick, as = \"link\", icon }, ref) => {\n if (as === \"button\") {\n return (\n <button\n className={cn(\n \"px-4 py-[8px] w-full text-left flex items-center gap-2\",\n className\n )}\n onClick={onClick}\n ref={ref as React.Ref<HTMLButtonElement>}\n >\n <h1>{title}</h1>\n {icon && <span>{icon}</span>}\n </button>\n );\n }\n\n return (\n <Link\n href={href ?? \"\"}\n passHref\n className={cn(\"px-4 py-[8px] w-full flex items-center gap-2\", className)}\n ref={ref as React.Ref<HTMLAnchorElement>}\n >\n <h1>{title}</h1>\n {icon && <p>{icon}</p>}\n </Link>\n );\n});\n\nListItem.displayName = \"ListItem\";\n\nexport default ListItem;\n","import React from \"react\";\nimport { cn } from \"../utils/utils\";\n\ninterface LoadingProps {\n width?: string;\n height?: string;\n loaderColor?: string;\n variant?: \"light\" | \"heavy\";\n}\n\nconst Loading = ({ width, height, loaderColor, variant }: LoadingProps) => {\n return (\n <div\n className={cn(\n \"animate-spin-slow border-primary-600 border-t-gray-200/50 rounded-full\",\n variant === \"light\" ? \"border-2\" : \"border-4\"\n )}\n style={{\n width: width,\n height: height,\n borderColor: loaderColor,\n borderTopColor: \"rgb(234 236 240 / 0.5)\",\n }}\n ></div>\n );\n};\n\nexport default Loading;\n","\"use client\";\nimport React, { ReactNode, useEffect } from \"react\";\nimport { RiCloseLine } from \"@remixicon/react\";\n\ninterface ModalProps {\n children?: ReactNode;\n showModal?: boolean;\n closeModal?: boolean;\n setShowModal: (value: boolean) => void;\n closeOnOutsideClick?: boolean;\n className?: string;\n}\n\nexport default function Modal({\n children,\n showModal,\n setShowModal,\n closeModal = true,\n closeOnOutsideClick = true,\n className = \"\", \n}: ModalProps) {\n useEffect(() => {\n if (showModal) {\n document.body.style.overflow = \"hidden\"; \n } else {\n document.body.style.overflow = \"auto\"; \n }\n\n return () => {\n document.body.style.overflow = \"auto\"; \n };\n }, [showModal]);\n\n const handleClickOutside = (event: React.MouseEvent<HTMLDivElement>) => {\n if (event.target === event.currentTarget && closeOnOutsideClick) {\n setShowModal(false);\n }\n };\n\n return (\n <>\n {showModal && (\n <div\n onClick={handleClickOutside}\n className=\"w-full h-full bg-backdrop bg-blend-overlay fixed top-0 bottom-0 left-0 right-0 flex justify-center items-center z-[1000000] overflow-hidden\"\n >\n <div\n className={`relative bg-white shadow-boxShadow rounded-xl p-[18px] transition-all duration-150 fade-in-grow w-[50%] mx-4 ${className}`}\n >\n <div>{children}</div>\n {closeModal && (\n <div\n className=\"absolute top-4 ml-5 right-5 z-10 shadow-backdrop rounded-full text-primary cursor-pointer hover:bg-primaryLight\"\n onClick={() => setShowModal(false)}\n >\n <RiCloseLine size={24} />\n </div>\n )}\n </div>\n </div>\n )}\n </>\n );\n}\n\n","import React, { useState, useRef, useEffect } from \"react\";\nimport { cn } from \"../utils/utils\";\nimport { RiArrowDownSLine, RiArrowUpSLine } from \"@remixicon/react\";\n\ninterface MenuDropdownProps {\n trigger: JSX.Element;\n children: React.ReactNode;\n width?: string;\n className?: string;\n}\n\nexport default function MenuDropdown({\n trigger,\n children,\n width = \"250px\",\n className,\n}: MenuDropdownProps) {\n const [isOpen, setIsOpen] = useState(false);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, []);\n\n return (\n <div className={\"relative w-full\"} ref={dropdownRef}>\n <div\n className=\"cursor-pointer\"\n onClick={() => setIsOpen(!isOpen)}\n aria-label=\"Open menu\"\n >\n {trigger}\n </div>\n {isOpen && (\n <div\n style={{ width }}\n className={cn(\n \"border border-gray-200 rounded-lg absolute left-0 mt-1 z-[100000] w-full bg-white shadow-sm\",\n className\n )}\n >\n {children}\n </div>\n )}\n </div>\n );\n}\n\ninterface MenuSubItemProps {\n label: string;\n onClick?: () => void;\n disabled?: boolean;\n children?: React.ReactNode;\n className?: string;\n}\n\nexport const MenuSubItem: React.FC<MenuSubItemProps> = ({\n label,\n onClick,\n disabled,\n children,\n className = \"\",\n}) => (\n <button\n className={cn(\n \"w-full text-left p-4 text-sm border-y-[0.5px] last:border-y first:rounded-t hover:bg-primary-50 hover:rounded\",\n disabled ? \"opacity-50 cursor-not-allowed\" : \"\",\n className\n )}\n onClick={onClick}\n disabled={disabled}\n >\n {label}\n {children && <>{children}</>}\n </button>\n);\n\ninterface MenuItemProps {\n content: React.ReactNode;\n children: React.ReactNode;\n label?: string;\n className?: string;\n sectionClassName?: string;\n menuClassName?: string;\n}\n\nexport const MenuItem: React.FC<MenuItemProps> = ({\n content,\n children,\n className = \"\",\n sectionClassName = \"\",\n menuClassName = \"\",\n}) => {\n const [isSubOpen, setIsSubOpen] = useState(false);\n\n return (\n <div className={cn(\"relative\", className)}>\n <section\n onClick={() => setIsSubOpen(!isSubOpen)}\n className={cn(\n \"cursor-pointer hover:bg-primary-50 p-4 flex text-sm border-y-[0.5px] justify-between items-center gap-1 w-full text-left\",\n sectionClassName\n )}\n >\n {content}\n {isSubOpen ? (\n <RiArrowUpSLine size={20} />\n ) : (\n <RiArrowDownSLine size={20} />\n )}\n </section>\n {isSubOpen && (\n <div className={cn(\" border-primary-100 bg-gray-50\", menuClassName)}>\n {children}\n </div>\n )}\n </div>\n );\n};\n","import { VariantProps, cva } from \"class-variance-authority\";\nimport { HTMLAttributes, ReactNode } from \"react\";\nimport React from \"react\";\nimport { cn } from \"../utils/utils\";\nimport {\n RiAlertFill,\n RiCloseLine,\n RiErrorWarningLine,\n RiQuestionLine,\n RiThumbUpLine,\n RiShieldCheckLine,\n} from \"@remixicon/react\";\n\ninterface VariantIconProps {\n variant: \"success\" | \"warning\" | \"info\" | \"error\" | \"default\";\n}\n\nconst VariantIcon = ({ variant }: VariantIconProps) => {\n switch (variant) {\n case \"success\":\n return (\n <span>\n <RiThumbUpLine size={20} color=\"#039855\" />\n </span>\n );\n case \"warning\":\n return (\n <span>\n <RiQuestionLine color=\"#F79009\" size={20} />\n </span>\n );\n case \"info\":\n return (\n <span>\n <RiErrorWarningLine color=\"#1570EF\" size={20} />\n </span>\n );\n case \"error\":\n return (\n <span>\n <RiAlertFill color=\"#F04438\" size={20} />\n </span>\n );\n default:\n return (\n <span>\n <RiShieldCheckLine color=\"#475467\" size={20} />\n </span>\n );\n }\n};\n\ninterface NoticeProps\n extends HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof noticeVariants> {\n children?: ReactNode;\n noticeTitle?: string;\n variant: \"success\" | \"warning\" | \"info\" | \"error\" | \"default\";\n position?: \"top\" | \"bottom\";\n showIcon?: boolean;\n open: boolean;\n setOpen: (value: boolean) => void;\n}\n\nconst noticeVariants = cva(\"p-4 w-fit rounded-[6px]\", {\n variants: {\n variant: {\n success: \"bg-success-25 border border-success-600\",\n warning: \"bg-warning-25 border border-warning-600\",\n info: \"bg-primary-25 border border-primary-600\",\n error: \"bg-error-25 border border-error-600\",\n default: \"bg-gray-25 border border-gray-600\",\n },\n position: {\n top: \"top-4 transition-all duration-700 m-auto left-0 right-0\",\n bottom: \"bottom-4 transition-all duration-700 right-4\",\n },\n },\n});\n\nconst Notice = ({\n children,\n variant,\n position,\n noticeTitle,\n open,\n setOpen,\n showIcon = true,\n}: NoticeProps) => {\n const handleClose = () => setOpen(false);\n return (\n <>\n {open && (\n <div\n className={cn(\n noticeVariants({ variant, position }),\n `fixed z-10`,\n position === \"top\" && open && `animate-slide-in-top`,\n position === \"bottom\" && open && `animate-slide-in-right`\n )}\n >\n <div className=\"relative\">\n {showIcon ? (\n noticeTitle == \"\" ? (\n <div className=\"flex items-start\">\n <VariantIcon variant={variant} />\n <span className=\"ml-2 mr-8 text-text-sm\">{children}</span>\n <span onClick={handleClose}>\n <RiCloseLine size={20} />\n </span>\n </div>\n ) : (\n <div className=\"\">\n <section className=\"flex items-start\">\n <VariantIcon variant={variant} />\n <div className=\"ml-2 mr-8 -mt-[3px]\">\n <span className=\"font-bold text-gray-800 mb-1\">\n {noticeTitle}\n </span>\n <p className=\"text-text-sm text-gray-700\">{children}</p>\n </div>\n </section>\n <span\n className={cn(\"absolute top-0 right-0 cursor-pointer\")}\n onClick={handleClose}\n >\n <RiCloseLine size={20} />\n </span>\n </div>\n )\n ) : (\n <div className=\"mr-8\">\n <section className=\"flex items-center\">\n <p className=\"font-bold text-gray-800 mb-1\">{noticeTitle}</p>\n </section>\n <span\n className={cn(\"absolute top-0 right-0 cursor-pointer\")}\n onClick={handleClose}\n >\n <RiCloseLine size={20} />\n </span>\n <p className=\"text-text-sm\">{children}</p>\n </div>\n )}\n </div>\n </div>\n )}\n </>\n );\n};\n\nexport default Notice;\n","\"use client\";\nimport React, { useState } from \"react\";\nimport Button from \"./Button\";\nimport {\n RiArrowLeftLine,\n RiArrowRightLine,\n RiArrowDownSLine,\n RiArrowUpSLine,\n} from \"@remixicon/react\";\nimport { cn } from \"../utils/utils\";\n\ntype TablePaginationProps = {\n count: number;\n page: number;\n rowsPerPage: number;\n rowsPerPageOptions: (number | { label: string; value: number })[];\n onPageChange: (newPage: number) => void;\n onRowsPerPageChange: (newRowsPerPage: number) => void;\n className?: string;\n};\n\nconst Pagination: React.FC<TablePaginationProps> = ({\n count,\n page,\n rowsPerPage,\n rowsPerPageOptions,\n onPageChange,\n onRowsPerPageChange,\n className,\n}) => {\n const totalPages = Math.ceil(count / rowsPerPage);\n\n const handlePrevPageClick = () => {\n onPageChange(page - 1);\n };\n\n const handleNextPageClick = () => {\n onPageChange(page + 1);\n };\n const [showOptions, setShowOptions] = useState(false);\n\n const handleOptionClick = (\n option: number | { label: string; value: number }\n ) => {\n if (typeof option === \"number\") {\n onRowsPerPageChange(option);\n } else {\n onRowsPerPageChange(option.value);\n }\n setShowOptions(false);\n };\n\n return (\n <div\n className={cn(\n \"border border-gray-200 px-6 py-4 flex justify-between items-center w-full\",\n className\n )}\n >\n <section className=\"flex gap-1.5 items-center\">\n <span className=\"text-gray-800 text-text-sm font-medium\">\n Items per page\n </span>\n <div className=\"relative z-[100]\">\n <div\n className=\"border border-gray-600 w-[88px] rounded text-sm px-1.5 py-1 cursor-pointer flex items-center justify-between gap-1 text-gray-600\"\n onClick={() => setShowOptions(!showOptions)}\n >\n {rowsPerPage}{\" \"}\n {!showOptions ? (\n <RiArrowDownSLine size={14} />\n ) : (\n <RiArrowUpSLine size={14} />\n )}\n </div>\n {showOptions && (\n <div className=\"absolute top-full left-0 shadow bg-white rounded-md text-sm mt-1 z-50\">\n {rowsPerPageOptions?.map((option, index) => (\n <div\n key={index}\n className=\"px-2 py-1.5 w-[88px] text-gray-800 cursor-pointer hover:bg-gray-100\"\n onClick={() => handleOptionClick(option)}\n >\n {typeof option === \"number\" ? option : option.label}\n </div>\n ))}\n </div>\n )}\n </div>\n </section>\n <section className=\"flex items-center gap-2 font-medium\">\n <div className=\"flex items-center gap-2 text-gray-800 text-text-sm\">\n <span>page</span>\n <select\n value={page + 1}\n onChange={(e) => onPageChange(parseInt(e.target.value, 10) - 1)}\n className=\"bg-gray-25 text-gray-500 px-3.5 py-1 border border-gray-200 rounded-md text-sm focus:outline-none focus:border-gray-600\"\n >\n {totalPages > 0 &&\n [...Array(totalPages)].map((_, index) => (\n <option key={index + 1} value={index + 1}>\n {index + 1}\n </option>\n ))}\n </select>\n <span>of {totalPages > 0 ? totalPages : 0}</span>\n </div>\n\n <div className=\"flex items-center\">\n <Button\n variant=\"outlined\"\n intent=\"default-outlined\"\n startIcon={<RiArrowLeftLine size={20} />}\n onClick={handlePrevPageClick}\n disabled={page === 0}\n className=\"rounded-none h-8 rounded-l-lg\"\n />\n <Button\n variant=\"outlined\"\n intent=\"default-outlined\"\n startIcon={<RiArrowRightLine size={20} />}\n onClick={handleNextPageClick}\n disabled={page === totalPages - 1}\n className=\"rounded-none h-8 rounded-r-lg\"\n />\n </div>\n </section>\n </div>\n );\n};\n\nexport default Pagination;\n","import React from \"react\";\nimport { cn } from \"../utils/utils\";\n\nexport type ProgressBarProps = {\n progress: number;\n progressText?: string;\n progressColor: string;\n progressTextPosition?: \"top\" | \"bottom\" | \"left\" | \"right\";\n};\n\nconst ProgressBar = ({\n progress,\n progressText = \"\",\n progressColor,\n progressTextPosition,\n}: ProgressBarProps) => {\n const _progress = Math?.min(Math?.max(0, progress), 100);\n return (\n <div\n className={cn(\n \"rounded\",\n progressTextPosition === \"right\"\n ? \"flex items-center gap-1\"\n : progressTextPosition === \"left\"\n ? \"flex items-center gap-1\"\n : \"\"\n )}\n >\n <span\n className={cn(\n \"text-gray-700 text-text-sm\",\n progressTextPosition === \"left\"\n ? \"inline-block\"\n : progressTextPosition === \"top\"\n ? \"flex justify-end\"\n : \"hidden\"\n )}\n >\n {progressText}\n </span>\n <div\n className=\"w-full h-2 rounded bg-gray-200\"\n role=\"progressbar\"\n aria-valuenow={_progress}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <div\n className={`${progressColor} h-full transition-all delay-1000 duration-700 rounded ease-in`}\n style={{ width: `${_progress}%` }}\n ></div>\n </div>\n <span\n className={cn(\n \"text-gray-700 text-text-sm\",\n progressTextPosition === \"bottom\"\n ? \"flex justify-end\"\n : progressTextPosition === \"top\"\n ? \"hidden\"\n : progressTextPosition === \"right\"\n ? \"flex justify-end\"\n : \"hidden\"\n )}\n >\n {progressText}\n </span>\n </div>\n );\n};\n\nexport default ProgressBar;\n","import React, { InputHTMLAttributes, forwardRef } from \"react\";\nimport { cn } from \"../utils/utils\";\nimport { cva, VariantProps } from \"class-variance-authority\";\n\ninterface RadioProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\">,\n VariantProps<typeof radioVariants> {\n size?: \"sm\" | \"lg\";\n disabled?: boolean;\n checked?: boolean;\n children?: never;\n}\n\nconst radioVariants = cva(\"\", {\n variants: {\n size: {\n sm: \"h-3 w-3\",\n lg: \"h-4 w-4\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n});\n\nconst Radio = forwardRef<HTMLInputElement, RadioProps>(\n ({ size, disabled, checked, className, children, ...props }, ref) => {\n return (\n <div className=\"relative inline-flex items-center cursor-pointer\">\n <input\n {...props}\n ref={ref}\n checked={checked}\n disabled={disabled}\n type=\"radio\"\n className={cn(\n \"peer relative cursor-pointer appearance-none rounded-full border border-gray-300 hover:border-primary-600 hover:bg-primary-50 transition-all checked:border-primary-600 checked:bg-primary-50 disabled:opacity-30 disabled:pointer-events-none\",\n radioVariants({ size, className })\n )}\n />\n <span\n className={cn(\n \"absolute transition-opacity opacity-0 ease-in-out pointer-events-none top-2/4 left-2/4 -translate-y-2/4 -translate-x-2/4 peer-checked:opacity-100 h-1.5 w-1.5 bg-primary-600 rounded-full duration-300\",\n size == \"sm\" && \"h-[4.5px] w-[4.5px]\"\n )}\n ></span>\n </div>\n );\n }\n);\n\nRadio.displayName = \"Radio\";\nexport default Radio;\n","\"use client\";\nimport React, { ReactNode } from \"react\";\nimport Link from \"next/link\";\nimport { cn } from \"../utils/utils\";\nimport { usePathname } from \"next/navigation\";\nimport Divider from \"@/app/components/Divider\";\n\ninterface SidebarProps {\n children: React.ReactNode;\n collapsed: boolean;\n setCollapsed: (collapsed: boolean) => void;\n scroll?: boolean;\n navItems?: {\n label: string;\n items: {\n label: string;\n href: string;\n icon?: React.ReactElement;\n }[];\n }[];\n}\n\ninterface SidebarHeaderProps {\n collapsed: boolean;\n setCollapsed: (collapsed: boolean) => void;\n children: ReactNode;\n}\n\ninterface SidebarMenuProps {\n collapsed: boolean;\n setCollapsed: (collapsed: boolean) => void;\n scroll?: boolean;\n navItems?: {\n label: string;\n items: {\n label: string;\n href: string;\n icon?: React.ReactElement;\n }[];\n }[];\n}\n\ninterface FooterProps {\n children: React.ReactNode;\n collapsed: boolean;\n setCollapsed: (collapsed: boolean) => void;\n navItems?: {\n label: string;\n items: {\n label: string;\n href: string;\n icon?: React.ReactElement;\n }[];\n }[];\n}\n\n// Sidebar component\nconst Sidebar: React.FC<SidebarProps> & {\n Header: React.FC<SidebarHeaderProps>;\n Menu: React.FC<SidebarMenuProps>;\n Footer: React.FC<FooterProps>;\n} = ({ children, collapsed, setCollapsed }) => {\n return (\n <div\n onMouseEnter={() => setCollapsed(true)}\n onMouseLeave={() => setCollapsed(false)}\n className={cn(\n \"border border-gray-200 shadow-sm relative flex flex-col min-h-screen transition-all duration-300 ease-in-out cursor-pointer\",\n !collapsed ? \"w-[80px] py-[21px] px-[17px]\" : \"w-[308px] py-[22px] px-6\"\n )}\n >\n <div className=\"\">{children}</div>\n </div>\n );\n};\n\n// SidebarHeader component\nconst SidebarHeader: React.FC<SidebarHeaderProps> = ({\n collapsed,\n setCollapsed,\n children,\n}) => {\n return (\n <div\n className={cn({\n \"z-20\": true,\n })}\n >\n <div className=\"flex justify-between items-center mb-4\">\n <span className=\"whitespace-nowrap\">{children}</span>\n {/* {collapsed && (\n <button\n className={cn({\n \"grid place-content-center\": true,\n \"hover:bg-gray-100 \": true,\n \"rounded-full\": true,\n })}\n onClick={() => setCollapsed(!collapsed)}\n >\n <RiArrowLeftSLine color=\"#101828\" />\n </button>\n )} */}\n </div>\n </div>\n );\n};\n\n// SidebarMenu component\nconst SidebarMenu: React.FC<SidebarMenuProps> = ({\n collapsed,\n navItems,\n scroll = false,\n}) => {\n const currentPath = usePathname();\n\n return (\n <nav className={`max-h-[60vh] ${scroll && \"overflow-y-auto customScroll\"}`}>\n <ul className=\"my-2 flex flex-col gap-2 items-stretch\">\n {navItems?.map((parentItem, parentIndex) => (\n <li\n key={parentIndex}\n className=\"flex flex-col gap-3 mb-1 whitespace-nowrap overflow-hidden\"\n >\n <p\n className={cn({\n \"text-[14px] text-gray-500\": true,\n \"w-[37px] text-ellipsis text-white whitespace-nowrap overflow-hidden\":\n !collapsed,\n })}\n >\n {parentItem.label}\n </p>\n\n {\n <ul>\n {parentItem?.items.map((item, index) => (\n <li key={index}>\n <Link\n className={cn({\n \"hover:bg-gray-100 px-3 py-2 flex items-center mb-[6px] cursor-pointer rounded-md transition-colors duration-300 font-semibold whitespace-nowrap overflow-hidden\":\n true,\n \"text-white bg-primary-600\": currentPath === item?.href,\n \"text-gray-700\": currentPath !== item?.href,\n \"hover:bg-primary-600\": currentPath === item?.href,\n })}\n href={item.href}\n passHref\n >\n <div\n className={`flex items-center gap-2 whitespace-nowrap`}\n >\n <span className=\"text-text-sm\"> {item.icon}</span>\n <span className={cn(!collapsed ? \"opacity-0\" : \"\")}>\n {item.label}\n </span>\n </div>\n </Link>\n </li>\n ))}\n </ul>\n }\n </li>\n ))}\n </ul>\n </nav>\n );\n};\n\n// Footer component\nconst Footer: React.FC<FooterProps> = ({\n children,\n setCollapsed,\n collapsed,\n navItems,\n}) => {\n const currentPath = usePathname();\n return (\n <div\n className={cn({\n \"absolute bottom-0 max-h-[230px] overflow-auto bg-white z-10 py-3 w-[85%]\":\n true,\n \"w-[55%]\": !collapsed,\n })}\n onClick={() => setCollapsed(true)}\n >\n {collapsed && (\n <div className=\"shadow-md\">\n <Divider />\n </div>\n )}\n {navItems && navItems.length > 0 && (\n <nav className=\"flex-grow w-full\">\n <ul className=\"my-2 flex flex-col gap-2 items-stretch\">\n {navItems?.map((parentItem, parentIndex) => (\n <li\n key={parentIndex}\n className=\"flex flex-col gap-3 mb-1 whitespace-nowrap overflow-hidden\"\n >\n <p\n className={cn({\n \"text-[14px] text-gray-500\": true,\n \"w-[37px] text-ellipsis text-white whitespace-nowrap overflow-hidden\":\n !collapsed,\n })}\n >\n {parentItem.label}\n </p>\n {\n <ul>\n {parentItem?.items?.map((item, index) => (\n <li key={index}>\n <Link\n className={cn({\n \"hover:bg-gray-100 px-3 py-2 flex items-center mb-[6px] cursor-pointer rounded-md transition-colors duration-300 font-semibold whitespace-nowrap overflow-hidden\":\n true,\n \"text-white bg-primary-600\":\n currentPath === item?.href,\n \"text-gray-700\": currentPath !== item?.href,\n \"hover:bg-primary-600\": currentPath === item?.href,\n })}\n href={item.href}\n passHref\n >\n <div\n className={`flex items-center gap-2 whitespace-nowrap`}\n >\n <span className=\"text-text-sm\"> {item.icon}</span>\n <span className={cn(!collapsed ? \"opacity-0\" : \"\")}>\n {item.label}\n </span>\n </div>\n </Link>\n </li>\n ))}\n </ul>\n }\n </li>\n ))}\n </ul>\n </nav>\n )}\n {children}\n </div>\n );\n};\n\nSidebar.Header = SidebarHeader;\nSidebar.Menu = SidebarMenu;\nSidebar.Footer = Footer;\n\nexport default Sidebar;\n","import React, { forwardRef, type InputHTMLAttributes } from \"react\";\nimport { cn } from \"../utils/utils\";\n\ninterface SliderProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n value: number;\n min?: number;\n max?: number;\n size?: \"sm\" | \"lg\";\n}\n\nconst Slider = forwardRef<HTMLInputElement, SliderProps>(\n ({ value, min = 0, max = 100, size = \"sm\", ...props }, ref) => {\n const progress = ((value - min) / (max - min)) * 100;\n return (\n <>\n <input\n ref={ref}\n type=\"range\"\n min={min}\n max={max}\n value={value}\n {...props}\n className={cn(\n \"slider w-full rounded-full appearance-none bg-gray-300 h-4 cursor-pointer focus:outline-none\",\n size === \"sm\" ? \"h-1.5\" : \"h-4\"\n )}\n style={{\n background: `linear-gradient(to right, var(--primary-300) ${progress}%, var(--gray-300) ${progress}%)`,\n }}\n />\n </>\n );\n }\n);\n\nSlider.displayName = \"Slider\";\n\nexport default Slider;\n","import React from \"react\";\n\ninterface SkeletonProps {\n width?: string | number;\n height?: string | number;\n circle?: boolean;\n}\n\nconst Skeleton: React.FC<SkeletonProps> = ({\n width = '100%',\n height = '100%',\n circle = false,\n}) => {\n const style: React.CSSProperties = {\n width: typeof width === 'number' ? `${width}px` : width,\n height: typeof height === 'number' ? `${height}px` : height,\n borderRadius: circle ? '50%' : undefined,\n };\n\n return <span className={`skeleton rounded-lg ${circle ? 'circle' : ''}`} style={style}></span>;\n};\n\nexport default Skeleton;\n","\"use client\";\nimport React, { useRef } from \"react\";\nimport { RiCheckLine } from \"@remixicon/react\";\nimport { cn } from \"../utils/utils\";\n\ninterface StepConfig {\n name: string;\n helperName?: string;\n Component: React.ComponentType<any>;\n}\n\ninterface CheckoutStepperProps {\n stepsConfig: StepConfig[];\n currentStep: number;\n setCurrentStep: (step: number) => void;\n isComplete: boolean;\n setIsComplete: (complete: boolean) => void;\n position?: string;\n}\n\nconst Stepper = ({\n stepsConfig,\n currentStep,\n setCurrentStep,\n isComplete,\n setIsComplete,\n position = \"horizontal\",\n}: CheckoutStepperProps) => {\n const stepRef = useRef<(HTMLDivElement | null)[]>([]);\n\n if (!stepsConfig.length) {\n return null;\n }\n\n const ActiveComponent = stepsConfig[currentStep - 1]?.Component;\n\n return (\n <div className={cn(position !== \"horizontal\" && \"flex\")}>\n <div\n className={cn(\n \"relative\",\n position === \"horizontal\"\n ? \"flex justify-between items-start\"\n : \"flex flex-col\"\n )}\n >\n {stepsConfig.map((step, index) => (\n <div\n key={index}\n ref={(el: any) => (stepRef.current[index] = el)}\n className={`w-full ${\n position === \"horizontal\"\n ? \"flex gap-4 flex-col\"\n : \"flex gap-6 justify-start\"\n } ${currentStep > index + 1 || isComplete ? \"complete\" : \"\"} ${\n currentStep === index + 1 ? \"\" : \"\"\n }`}\n >\n <div\n className={cn(\n \"\",\n position === \"horizontal\"\n ? \"flex items-center\"\n : \"flex flex-col\"\n )}\n >\n <div\n className={`w-[20px] h-[20px] rounded-full bg-gray-100 flex justify-center items-center ${\n currentStep === index + 1\n ? \"border border-primary-600\"\n : \"border border-gray-200\"\n } ${\n currentStep > index + 1 || isComplete\n ? \"bg-primary-600 border-none\"\n : \"\"\n }`}\n >\n {currentStep === index + 1 && !isComplete && (\n <span className=\"w-[10px] h-[10px] rounded-full bg-primary-600\"></span>\n )}\n {(currentStep > index + 1 || isComplete) && (\n <span>\n <RiCheckLine size={12} color=\"#fff\" />\n </span>\n )}\n </div>\n {index !== stepsConfig.length - 1 && (\n <div\n className={cn(\n \"mx-auto rounded-lg bg-gray-200\",\n position === \"horizontal\"\n ? \"w-[80%] h-1\"\n : \"h-[100px] w-1 my-2\"\n )}\n >\n <p\n className={cn(\n \"h-full rounded-lg \",\n currentStep > index + 1 ? \"bg-primary-600\" : \"\"\n )}\n ></p>\n </div>\n )}\n </div>\n\n {/* step name */}\n <div\n className={cn(\n \"whitespace-nowrap\",\n position === \"vertical\" || step?.helperName ? \"-mt-1\" : \"\"\n )}\n >\n <span className=\"text-gray-400 text-text-xs\">\n {step?.helperName}\n </span>\n <p>{step?.name}</p>\n </div>\n </div>\n ))}\n </div>\n\n {ActiveComponent && <ActiveComponent />}\n </div>\n );\n};\n\nexport default Stepper;\n","import React, {\n HTMLAttributes,\n ReactNode,\n TableHTMLAttributes,\n TdHTMLAttributes,\n ThHTMLAttributes,\n} from \"react\";\nimport { cn } from \"../utils/utils\";\n\ninterface TableProps extends TableHTMLAttributes<HTMLTableElement> {\n children?: ReactNode;\n dense?: boolean;\n}\n\ninterface TableHeadProps extends HTMLAttributes<HTMLTableSectionElement> {\n children?: ReactNode;\n}\n\ninterface TableRowProps extends HTMLAttributes<HTMLTableRowElement> {\n children?: ReactNode;\n indent?: boolean;\n}\n\ninterface TableHeadCellProps extends ThHTMLAttributes<HTMLTableCellElement> {\n children?: ReactNode;\n icon?: JSX.Element;\n sticky?: boolean;\n left?: string;\n stickyIcon?: JSX.Element;\n shadow?: boolean;\n}\n\ninterface TableCellProps extends TdHTMLAttributes<HTMLTableCellElement> {\n children?: ReactNode;\n icon?: JSX.Element;\n sticky?: boolean;\n left?: string;\n shadow?: boolean;\n}\n\nexport const Table = ({ children, className, dense, ...props }: TableProps) => {\n return (\n <table\n {...props}\n className={cn(\n dense && \"group/dense\",\n \"bg-white text-left w-full border\",\n className\n )}\n >\n {children}\n </table>\n );\n};\n\nexport const TableHead = ({\n children,\n className,\n ...props\n}: TableHeadProps) => {\n return (\n <thead\n {...props}\n className={cn(\"bg-gray-50 border border-gray-200\", className)}\n >\n {children}\n </thead>\n );\n};\n\nexport const TableBody = ({\n children,\n className,\n ...props\n}: TableHeadProps) => {\n return (\n <tbody {...props} className={cn(className)}>\n {children}\n </tbody>\n );\n};\n\nexport const TableRow = ({\n children,\n className,\n indent,\n ...props\n}: TableRowProps) => {\n return (\n <tr\n {...props}\n className={cn(\n \"border border-gray-200 hover:bg-gray-50\",\n indent && \"group/indent border-none\",\n className\n )}\n >\n {children}\n </tr>\n );\n};\n\nexport const TableHeadCell = ({\n children,\n className,\n icon,\n sticky,\n shadow,\n left,\n ...props\n}: TableHeadCellProps) => {\n return (\n <th\n {...props}\n className={cn(\n \"px-6 py-3 text-left group-has-[th]/dense:py-2\",\n sticky && `sticky bg-gray-50`,\n sticky && shadow && \"shadow-table\",\n left,\n className\n )}\n style={{\n left: left,\n }}\n >\n <div className=\"flex items-center gap-1\">\n <span className=\"font-medium text-xs\">{children}</span>\n {icon && (\n <span\n className={\n \"hover:bg-gray-200 w-5 h-5 flex items-center justify-center p-1 rounded focus:bg-gray-300 active:bg-gray-300\"\n }\n >\n {icon}\n </span>\n )}\n </div>\n </th>\n );\n};\n\nexport const TableDataCell = ({\n children,\n className,\n icon,\n sticky,\n shadow,\n left,\n ...props\n}: TableCellProps) => {\n return (\n <td\n {...props}\n className={cn(\n \"px-6 py-4 text-sm font-medium group-has-[td]/dense:py-2 first:group-has-[td]/indent:pl-[60px]\",\n sticky && `sticky bg-white`,\n sticky && shadow && \"shadow-table\",\n left,\n className\n )}\n style={{\n left: left,\n }}\n >\n <span className=\"font-medium text-sm\">{children}</span>\n {icon && (\n <span\n className={\n \"hover:bg-gray-200 w-5 h-5 flex items-center justify-center p-1 rounded focus:bg-gray-300 active:bg-gray-300\"\n }\n >\n {icon}\n </span>\n )}\n </td>\n );\n};\n\nexport default Table;\n","import React from \"react\";\nimport { cn } from \"../utils/utils\";\n\ninterface TabItem {\n label: string;\n value: string;\n}\n\ninterface TabsContainerProps {\n value: string;\n children: React.ReactNode;\n className?: string;\n}\n\ninterface TabListProps extends Partial<TabItem> {\n onChange: (value: string) => void;\n ariaLabel?: string;\n children: React.ReactNode;\n box?: boolean;\n className?: string;\n}\n\ninterface TabProps extends TabItem {\n onChange: (value: string) => void;\n box?: boolean;\n content?: React.ReactNode;\n selectedTabValue: string;\n icon?: JSX.Element;\n className?: string;\n}\n\ninterface TabPanelProps {\n value: string;\n currentValue: string;\n children: React.ReactNode;\n className?: string;\n}\n\nexport const TabsContainer: React.FC<TabsContainerProps> = ({\n children,\n className,\n}) => {\n return <div className={className}>{children}</div>;\n};\n\nexport const TabList: React.FC<TabListProps> = ({\n onChange,\n ariaLabel,\n children,\n box = false,\n className,\n}) => {\n const handleTabChange = (value: string) => {\n onChange(value);\n };\n\n return (\n <div\n className={cn(\n \"flex items-center\",\n box\n ? \"bg-gray-50 rounded-lg border border-gray-200\"\n : \"border-b border-gray-200\",\n className\n )}\n role=\"tablist\"\n aria-label={ariaLabel}\n >\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child as React.ReactElement<TabProps>, {\n onChange: handleTabChange,\n box,\n });\n }\n return null;\n })}\n </div>\n );\n};\n\nexport const Tab: React.FC<TabProps> = ({\n label,\n value,\n onChange,\n icon,\n content,\n box = false,\n selectedTabValue,\n className,\n}) => {\n const handleClick = () => {\n onChange(value);\n };\n\n const isSelected = value === selectedTabValue;\n\n return (\n <button\n role=\"tab\"\n className={cn(\n \"flex items-center gap-2 px-4 py-3 text-text-sm font-medium cursor-pointer hover:bg-gray-100 hover:rounded-t transition-all ease-linear duration-200 delay-75\",\n isSelected && !box\n ? \"text-primary-600 border-b-2 border-primary-600\"\n : \"border-b-2 border-transparent text-gray-700\",\n isSelected && box ? \"bg-white hover:bg-white shadow-md\" : \"\",\n box ? \"m-1 rounded-lg hover:rounded-lg\" : \"m-0\",\n className\n )}\n onClick={handleClick}\n >\n {icon} {label} {content}\n </button>\n );\n};\n\nexport const TabPanel: React.FC<TabPanelProps> = ({\n value,\n currentValue,\n children,\n className,\n}) => {\n return value === currentValue ? (\n <div className={className}>{children}</div>\n ) : null;\n};\n\nexport default TabsContainer;\n","import React, {\n forwardRef,\n type ReactNode,\n type TextareaHTMLAttributes,\n} from \"react\";\nimport { cn } from \"../utils/utils\";\n\ninterface TextareaProps\n extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, \"size\"> {\n size?: \"sm\" | \"lg\";\n disabled?: boolean;\n rows?: number;\n cols?: number;\n children?: ReactNode;\n}\n\nconst Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ size, className, rows, cols, disabled, children, ...props }, ref) => {\n return (\n <textarea\n {...props}\n ref={ref}\n disabled={disabled}\n rows={rows}\n cols={cols}\n className={cn(\n \"group flex items-center gap-2 border border-gray-200 rounded-lg bg-gray-50 shadow-xs hover:bg-gray-50 hover:border-gray-300 text-sm focus-within:border-gray-800 focus-within:bg-gray-25 focus-within:hover:bg-gray-50 focus-within:hover:border-gray-800 outline-none disabled:bg-gray-300 disabled:select-none disabled:pointer-events-none disabled:opacity-30 placeholder:text-gray-500 hover:placeholder:text-gray-500\",\n size === \"sm\" ? \"py-2.5 px-3.5\" : \"p-2.5\",\n className,\n size\n )}\n >\n {children}\n </textarea>\n );\n }\n);\n\nTextarea.displayName = \"Textarea\";\n\nexport default Textarea;\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport React, { type InputHTMLAttributes, forwardRef } from \"react\";\nimport { cn } from \"../utils/utils\";\n\ninterface ToggleProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\">,\n VariantProps<typeof toggleVariants> {\n size?: \"sm\" | \"md\" | \"lg\";\n disabled?: boolean;\n children?: never;\n}\n\nconst toggleVariants = cva(\"\", {\n variants: {\n size: {\n sm: \"w-5 h-3 after:w-2 after:h-2\",\n md: \"w-9 h-5 after:w-4 after:h-4\",\n lg: \"w-11 h-6 after:w-5 after:h-5\",\n },\n intent: {\n primary: \"peer-checked:bg-primary-600\",\n success: \"peer-checked:bg-success-500\",\n },\n },\n defaultVariants: {\n size: \"md\",\n intent: \"primary\",\n },\n});\n\nconst Toggle = forwardRef<HTMLInputElement, ToggleProps>(\n ({ size, className, intent, disabled, children, ...props }, ref) => {\n return (\n <label\n className={cn(\n \"inline-flex items-center cursor-pointer\",\n disabled && \"opacity-30 pointer-events-none\"\n )}\n >\n <input\n type=\"checkbox\"\n disabled={disabled}\n ref={ref}\n {...props}\n className=\"sr-only flex justify-center peer\"\n />\n <span\n className={cn(\n \"relative w-11 h-7 bg-gray-300 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full rtl:peer-checked:after:-translate-x-full after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-white after:rounded-full after:h-5 after:w-5 after:transition-all\",\n toggleVariants({\n intent,\n className,\n size,\n })\n )}\n >\n {children}\n </span>\n </label>\n );\n }\n);\n\nToggle.displayName = \"Toggle\";\n\nexport default Toggle;\n"],"mappings":"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","names":["MenuItem","clsx","import_react","React","import_react","React","Image","import_react","React","import_react","React","import_react","React","import_react","import_class_variance_authority","React","import_react","import_class_variance_authority","React","import_react","React","import_react","React","import_react","import_react","React","import_class_variance_authority","import_react","React","import_class_variance_authority","import_react","React","React","_a","import_react","defaultRenderItem","React","MenuItem","DropdownTooltip","DropdownFooter","import_react","React","import_react","React","import_react","React","import_react","React","Link","import_react","React","import_react","React","import_react","import_react","React","MenuItem","import_class_variance_authority","import_react","import_react","React","import_react","import_react","React","import_react","React","import_react","import_class_variance_authority","React","import_react","import_link","React","Link","import_react","React","import_react","React","import_react","React","import_react","React","import_react","React","import_react","React","import_class_variance_authority","import_react","React"]}
1
+ {"version":3,"sources":["../app/index.ts","../app/components/Accordion.tsx","../app/utils/utils.tsx","../app/components/Avatar.tsx","../app/components/AvatarGroup.tsx","../app/components/Breadcrumb.tsx","../app/components/Button.tsx","../app/components/Callout.tsx","../app/components/Card.tsx","../app/components/Checkbox.tsx","../app/components/Chip.tsx","../app/components/CircularProgress.tsx","../app/components/Divider.tsx","../app/components/Drawer.tsx","../app/components/Dropdown.tsx","../app/components/Input.tsx","../app/components/Label.tsx","../app/components/DropdownMenu.tsx","../app/components/DropdownWithIcon.tsx","../app/components/FileSelector.tsx","../app/components/FileUpload.tsx","../app/components/FileUploadPreview.tsx","../app/components/GlobalNavigation.tsx","../app/components/HelperText.tsx","../app/components/ListItem.tsx","../app/components/ListPagination.tsx","../app/components/Loading.tsx","../app/components/Modal.tsx","../app/components/Notice.tsx","../app/components/OTPInput.tsx","../app/components/Pagination.tsx","../app/components/Progress.tsx","../app/components/Radio.tsx","../app/components/RazorPayFileUpload.tsx","../app/components/Spinner.tsx","../app/components/Sidebar.tsx","../app/components/Skeleton.tsx","../app/components/Slider.tsx","../app/components/SplitButton.tsx","../app/components/Stepper.tsx","../app/components/TableComponents.tsx","../app/components/Tabs.tsx","../app/components/Textarea.tsx","../app/components/TextInputWithLabel.tsx","../app/components/Toggle.tsx","../app/components/Tooltip.tsx","../app/components/TreeView.tsx","../app/components/Typography.tsx"],"sourcesContent":["import './globals.css';\nexport * from \"./components/index\"","\"use client\";\nimport React, { useState, useEffect } from \"react\";\nimport { RiArrowDownSLine } from \"@remixicon/react\";\nimport { cn } from \"../utils/utils\";\n\ntype AccordionProps = {\n type?: \"single\" | \"multiple\";\n collapsible?: boolean;\n className?: string;\n children: React.ReactNode;\n expanded?: boolean;\n};\n\nexport default function Accordion({\n type = \"single\",\n collapsible = true,\n className,\n children,\n expanded,\n}: AccordionProps) {\n const [openItems, setOpenItems] = useState<string[]>(() => {\n const defaultOpen: string[] = [];\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child)) {\n const triggerChild = React.Children.toArray(child.props.children)[0];\n if (\n React.isValidElement(triggerChild) &&\n triggerChild.props.defaultOpen\n ) {\n defaultOpen.push((child.props as AccordionItemProps).value);\n }\n }\n });\n return defaultOpen;\n });\n\n // Handle expanded prop changes\n useEffect(() => {\n if (expanded !== undefined) {\n if (expanded) {\n // Open all items\n const allValues: string[] = [];\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child)) {\n allValues.push((child.props as AccordionItemProps).value);\n }\n });\n setOpenItems(allValues);\n } else {\n // Collapse all items\n setOpenItems([]);\n }\n }\n }, [expanded, children]);\n\n const handleToggle = (value: string) => {\n if (type === \"single\") {\n setOpenItems((prev) =>\n prev.includes(value) ? (collapsible ? [] : prev) : [value]\n );\n } else {\n setOpenItems((prev) =>\n prev.includes(value)\n ? prev.filter((item) => item !== value)\n : [...prev, value]\n );\n }\n };\n\n return (\n <div className={className} role=\"region\" aria-label=\"Accordion\">\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(\n child as React.ReactElement<{\n openItems: string[];\n handleToggle: (value: string) => void;\n }>,\n {\n openItems,\n handleToggle,\n }\n );\n }\n return child;\n })}\n </div>\n );\n}\n\ntype AccordionItemProps = {\n value: string;\n disabled?: boolean;\n openItems?: string[];\n handleToggle?: (value: string) => void;\n children: React.ReactNode;\n className?: string;\n};\n\nexport function AccordionItem({\n value,\n disabled = false,\n openItems,\n handleToggle,\n children,\n className,\n}: AccordionItemProps) {\n const isOpen = openItems?.includes(value);\n const headerId = `accordion-header-${value}`;\n const contentId = `accordion-content-${value}`;\n\n const toggle = () => {\n if (!disabled && handleToggle) {\n handleToggle(value);\n }\n };\n\n return (\n <div\n className={cn(\n \"bg-white rounded-lg shadow transition-all duration-300 ease-in-out border\",\n disabled && \"opacity-50 pointer-events-none select-none\",\n isOpen && \"border-gray-300\",\n className\n )}\n >\n {children && Array.isArray(children) ? (\n <>\n <div\n onClick={toggle}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n toggle();\n }\n }}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-expanded={isOpen}\n aria-disabled={disabled}\n aria-controls={contentId}\n id={headerId}\n className=\"cursor-pointer\"\n >\n {React.cloneElement(children[0] as React.ReactElement, { isOpen })}\n </div>\n <div\n id={contentId}\n role=\"region\"\n aria-labelledby={headerId}\n className={cn(\n \"transition-all duration-300 ease-in-out overflow-hidden\",\n isOpen ? \"max-h-[1000px] opacity-100\" : \"max-h-0 opacity-0\"\n )}\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"p-3.5\">{children[1]}</div>\n </div>\n </>\n ) : (\n children\n )}\n </div>\n );\n}\n\ntype AccordionTriggerProps = {\n isOpen?: boolean;\n children: React.ReactNode;\n defaultOpen?: boolean;\n className?: string;\n triggerIcon?: React.ReactNode;\n};\n\nexport function AccordionTrigger({\n isOpen,\n children,\n className,\n triggerIcon = <RiArrowDownSLine size={18} />,\n}: AccordionTriggerProps) {\n return (\n <div\n className={cn(\n \"flex p-3.5 text-lg rounded-lg bg-white hover:bg-gray-50 justify-between items-center font-semibold transition-all delay-150 ease-in\",\n isOpen && \"bg-gray-100\",\n className\n )}\n >\n {children}\n <span\n className={cn(\n \"transition-transform duration-300\",\n isOpen ? \"rotate-180\" : \"rotate-0\"\n )}\n aria-hidden=\"true\"\n >\n {triggerIcon}\n </span>\n </div>\n );\n}\n\ntype AccordionContentProps = {\n children: React.ReactNode;\n};\n\nexport function AccordionContent({ children }: AccordionContentProps) {\n return <div className=\"text-gray-700\">{children}</div>;\n}\n","import clsx, { ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\nexport const cn = (...classes: ClassValue[]) => twMerge(clsx(...classes));\n","import Image from \"next/image\";\nimport React, { forwardRef } from \"react\";\nimport { cn } from \"../utils/utils\";\n\ninterface BaseProps {\n type: \"image\" | \"icon\" | \"text\";\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n onClick?: () => void;\n rounded?: boolean;\n border?: boolean;\n borderColor?: string;\n borderWidth?: string;\n radius?: string;\n disabled?: boolean;\n statusIcon?: JSX.Element;\n statusPosition?: \"top-right\" | \"top-left\" | \"bottom-right\" | \"bottom-left\";\n}\n\nexport interface ImageProps extends BaseProps {\n type: \"image\";\n src: string;\n alt?: string;\n}\n\nexport interface IconProps extends BaseProps {\n type: \"icon\";\n icon: JSX.Element;\n}\n\nexport interface TextProps extends BaseProps {\n type: \"text\";\n text: string;\n}\n\ntype AvatarProps = ImageProps | IconProps | TextProps;\n\nconst Avatar = forwardRef<HTMLDivElement, AvatarProps>((props, ref) => {\n const {\n type,\n size = \"md\",\n className,\n onClick,\n rounded,\n border,\n borderColor,\n borderWidth,\n radius,\n disabled,\n statusIcon,\n statusPosition = \"bottom-right\",\n } = props;\n\n const sizes = {\n sm: \"w-8 h-8\",\n md: \"w-12 h-12\",\n lg: \"w-16 h-16\",\n };\n\n const displayText =\n type === \"text\" && props.text\n ? props.text.length === 2\n ? props.text.toUpperCase()\n : props.text\n .split(\" \")\n .map((word) => word.charAt(0).toUpperCase())\n .join(\"\")\n .slice(0, 2)\n : \"\";\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative -z-10 \",\n rounded && \"rounded-full\",\n border && \"border border-gray-200\",\n disabled && \"opacity-50 pointer-events-none select-none\"\n )}\n style={{\n borderColor: borderColor,\n borderWidth: borderWidth,\n borderRadius: radius,\n }}\n >\n {type === \"image\" && (\n <div\n className={cn(\n \"relative -z-10 flex items-center justify-center\",\n sizes[size],\n className\n )}\n onClick={onClick}\n >\n <Image\n fill\n className={cn(rounded && \"rounded-full\", \"object-cover\")}\n src={(props as ImageProps).src}\n alt={(props as ImageProps).alt || \"\"}\n />\n </div>\n )}\n {type === \"icon\" && (\n <div\n className={cn(\n \"flex items-center justify-center\",\n rounded && \"rounded-full\",\n className,\n sizes[size]\n )}\n onClick={onClick}\n >\n {(props as IconProps).icon}\n </div>\n )}\n {type === \"text\" && (\n <p\n onClick={onClick}\n className={cn(\n \"flex items-center justify-center text-sm font-medium text-gray-700\",\n rounded && \"rounded-full\",\n className,\n sizes[size],\n size === \"sm\" && \"text-xs\",\n size === \"lg\" && \"text-xl\",\n size === \"md\" && \"text-base\"\n )}\n >\n {displayText}\n </p>\n )}\n {statusIcon && (\n <span\n className={cn(\n \"absolute w-2 h-2\",\n // small\n statusPosition === \"bottom-left\" &&\n size === \"sm\" &&\n type === \"image\" &&\n \"bottom-0\",\n statusPosition === \"top-left\" &&\n size === \"sm\" &&\n type === \"image\" &&\n \"top-0 -left-1.5\",\n statusPosition === \"bottom-right\" &&\n size === \"sm\" &&\n type === \"image\" &&\n \"bottom-0.5 right-0.5\",\n statusPosition === \"top-right\" &&\n size === \"sm\" &&\n type === \"image\" &&\n \"-top-[1.1px] right-0\",\n // sm text and icon\n statusPosition === \"bottom-left\" &&\n size === \"sm\" &&\n (type === \"text\" || type === \"icon\") &&\n \"bottom-0\",\n statusPosition === \"top-left\" &&\n size === \"sm\" &&\n (type === \"text\" || type === \"icon\") &&\n \"-top-1 left-0\",\n statusPosition === \"bottom-right\" &&\n size === \"sm\" &&\n (type === \"text\" || type === \"icon\") &&\n \"bottom-0 right-1.5\",\n statusPosition === \"top-right\" &&\n size === \"sm\" &&\n (type === \"text\" || type === \"icon\") &&\n \"top-0 right-0.5\",\n // medium\n statusPosition === \"bottom-left\" &&\n size === \"md\" &&\n type === \"image\" &&\n \"bottom-1\",\n statusPosition === \"top-left\" &&\n size === \"md\" &&\n type === \"image\" &&\n \"-top-1 left-0.5\",\n statusPosition === \"bottom-right\" &&\n size === \"md\" &&\n type === \"image\" &&\n \"bottom-1 right-2\",\n statusPosition === \"top-right\" &&\n size === \"md\" &&\n type === \"image\" &&\n \"top-0 right-1\",\n // medium text and icon\n statusPosition === \"bottom-left\" &&\n size === \"md\" &&\n (type === \"text\" || type === \"icon\") &&\n \"bottom-1\",\n statusPosition === \"top-left\" &&\n size === \"md\" &&\n (type === \"text\" || type === \"icon\") &&\n \"-top-1 left-1\",\n statusPosition === \"bottom-right\" &&\n size === \"md\" &&\n (type === \"text\" || type === \"icon\") &&\n \"bottom-1 right-2\",\n statusPosition === \"top-right\" &&\n size === \"md\" &&\n (type === \"text\" || type === \"icon\") &&\n \"top-0 right-1.5\",\n // large\n statusPosition === \"bottom-left\" &&\n size === \"lg\" &&\n type === \"image\" &&\n \"bottom-2 left-0\",\n statusPosition === \"top-left\" &&\n size === \"lg\" &&\n type === \"image\" &&\n \"top-0 left-0.5\",\n statusPosition === \"bottom-right\" &&\n size === \"lg\" &&\n type === \"image\" &&\n \"bottom-2.5 right-2\",\n statusPosition === \"top-right\" &&\n size === \"lg\" &&\n type === \"image\" &&\n \"top-0 right-2\",\n // large text and icon\n statusPosition === \"bottom-left\" &&\n size === \"lg\" &&\n (type === \"text\" || type === \"icon\") &&\n \"bottom-1.5 left-1.5\",\n statusPosition === \"top-left\" &&\n size === \"lg\" &&\n (type === \"text\" || type === \"icon\") &&\n \"top-0 left-1\",\n statusPosition === \"bottom-right\" &&\n size === \"lg\" &&\n (type === \"text\" || type === \"icon\") &&\n \"bottom-2 right-2.5\",\n statusPosition === \"top-right\" &&\n size === \"lg\" &&\n (type === \"text\" || type === \"icon\") &&\n \"top-0 right-2.5\"\n )}\n >\n {statusIcon}\n </span>\n )}\n </div>\n );\n});\n\nAvatar.displayName = \"Avatar\";\n\nexport default Avatar;\n","// AvatarGroup.tsx\nimport React, { forwardRef } from \"react\";\nimport { cn } from \"../utils/utils\";\nimport Avatar, { ImageProps, IconProps, TextProps } from \"./Avatar\";\n\ntype AvatarItemProps =\n | Omit<ImageProps, \"size\">\n | Omit<IconProps, \"size\">\n | Omit<TextProps, \"size\">;\n\ninterface AvatarGroupProps {\n avatars: AvatarItemProps[];\n size?: \"sm\" | \"md\" | \"lg\";\n max?: number;\n className?: string;\n}\n\nconst AvatarGroup = forwardRef<HTMLDivElement, AvatarGroupProps>(\n ({ avatars, size = \"md\", max, className }, ref) => {\n const displayAvatars = max ? avatars.slice(0, max) : avatars;\n const remainingCount = max ? avatars.length - max : 0;\n\n return (\n <div\n ref={ref}\n className={cn(\"flex -space-x-6 rtl:space-x-reverse\", className)}\n >\n {displayAvatars.map((avatar, index) => (\n <div\n className=\"hover:-translate-x-3 transition-all duration-200\"\n key={index}\n >\n <Avatar {...avatar} size={size} />\n </div>\n ))}\n {remainingCount > 0 && (\n <div>\n <Avatar\n type=\"text\"\n text={`+${remainingCount}`}\n size={size}\n rounded\n className=\"bg-gray-100\"\n />\n </div>\n )}\n </div>\n );\n }\n);\n\nAvatarGroup.displayName = \"AvatarGroup\";\n\nexport default AvatarGroup;\n","// \"use client\"\n// import React, { ReactNode } from \"react\";\n// import { usePathname } from \"next/navigation\";\n// import Link from \"next/link\";\n\n// type BreadCrumbProps = {\n// homeElement: ReactNode;\n// separator: ReactNode;\n// containerClasses?: string;\n// listClasses?: string;\n// activeClasses?: string;\n// capitalizeLinks?: boolean;\n// };\n\n// const Breadcrumb = ({\n// homeElement,\n// separator,\n// containerClasses,\n// listClasses,\n// activeClasses,\n// capitalizeLinks,\n// }: BreadCrumbProps) => {\n// const paths = usePathname();\n// const pathNames = paths?.split(\"/\")?.filter((path) => path);\n\n// return (\n// <div>\n// <ul className={containerClasses}>\n// <li className={listClasses}>\n// <Link href={\"/\"}>{homeElement}</Link>\n// </li>\n// {pathNames?.length > 0 && separator}\n// {pathNames?.map((link, index) => {\n// let href = `/${pathNames?.slice(0, index + 1)?.join(\"/\")}`;\n// let itemClasses =\n// paths === href ? `${listClasses} ${activeClasses}` : listClasses;\n// let itemLink = capitalizeLinks\n// ? link[0]?.toUpperCase() + link?.slice(1, link?.length)\n// : link;\n// return (\n// <React.Fragment key={index}>\n// <li className={itemClasses}>\n// <Link href={href}>{itemLink}</Link>\n// </li>\n// {pathNames?.length !== index + 1 && separator}\n// </React.Fragment>\n// );\n// })}\n// </ul>\n// </div>\n// );\n// };\n\n// export default Breadcrumb;\n\nimport React from 'react';\n\ntype BreadcrumbsProps = {\n children: React.ReactNode;\n separator?: React.ReactNode;\n 'aria-label': string;\n containerClasses?: string;\n};\n\nconst Breadcrumbs = ({\n children,\n separator = '/',\n 'aria-label': ariaLabel,\n containerClasses\n}: BreadcrumbsProps) => {\n const items = React.Children.toArray(children).map((child, index) => {\n const isLast = index === React.Children.count(children) - 1;\n return (\n <span key={index} className='flex items-center text-text-xs text-gray-700 font-semibold'>\n {child}\n {!isLast && <span className='mx-[6px]'>{separator}</span>}\n </span>\n );\n });\n\n return (\n <nav aria-label={ariaLabel} className={`flex items-center text-text-xs text-gray-700 font-semibold ${containerClasses}`}>\n {items}\n </nav>\n );\n};\n\nexport default Breadcrumbs;\n","import React, { ButtonHTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"../utils/utils\";\nimport { cva, VariantProps } from \"class-variance-authority\";\n\ninterface ButtonProps\n extends ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n children?: ReactNode;\n startIcon?: JSX.Element;\n endIcon?: JSX.Element;\n disabled?: boolean;\n fullWidth?: boolean;\n type?: \"submit\" | \"reset\" | \"button\";\n}\n\nconst buttonVariants = cva(\n \"rounded-lg disabled:select-none font-semibold cursor-pointer transition-colors duration-300 ease-in-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2\",\n {\n variants: {\n variant: {\n filled:\n \"bg-primary-600 text-white active:bg-primary-900 active:border-primary-900 hover:bg-primary-700 hover:border-primary-700 border border-primary-600 disabled:opacity-[30%] disabled:pointer-events-none\",\n outlined:\n \"border border-primary-600 bg-white disabled:opacity-[30%] disabled:pointer-events-none text-primary-600 hover:bg-primary-100 active:bg-primary-200 active:border-primary-700\",\n },\n intent: {\n primary:\n \"bg-primary-600 border-primary-600 active:bg-primary-900 active:border-primary-900 hover:bg-primary-700 hover:border-primary-700\",\n success:\n \"bg-success-600 border-success-600 active:bg-success-900 active:border-success-900 hover:bg-success-700 hover:border-success-700\",\n error:\n \"bg-error-700 border-error-700 active:bg-error-900 active:border-error-900 hover:bg-error-800 hover:border-error-800\",\n warning:\n \"bg-warning-600 border-warning-600 active:bg-warning-900 active:border-warning-900 hover:bg-warning-700 hover:border-warning-700\",\n default:\n \"bg-gray-600 border-gray-600 active:bg-gray-900 active:border-gray-900 hover:bg-gray-700 hover:border-gray-700\",\n blue: \"bg-blue-600 border-blue-600 active:bg-blue-900 active:border-blue-900 hover:bg-blue-700 hover:border-blue-700\",\n bluegray:\n \"bg-bluegray-600 border-bluegray-600 active:bg-bluegray-900 active:border-bluegray-900 hover:bg-bluegray-700 hover:border-bluegray-700\",\n bluelight:\n \"bg-bluelight-600 border-bluelight-600 active:bg-bluelight-900 active:border-bluelight-900 hover:bg-bluelight-700 hover:border-bluelight-700\",\n indigo:\n \"bg-indigo-600 border-indigo-600 active:bg-indigo-900 active:border-indigo-900 hover:bg-indigo-700 hover:border-indigo-700\",\n purple:\n \"bg-purple-600 border-purple-600 active:bg-purple-900 active:border-purple-900 hover:bg-purple-700 hover:border-purple-700\",\n violet:\n \"bg-violet-600 border-violet-600 active:bg-violet-900 active:border-violet-900 hover:bg-violet-700 hover:border-violet-700\",\n pink: \"bg-pink-600 border-pink-600 active:bg-pink-900 active:border-pink-900 hover:bg-pink-700 hover:border-pink-700\",\n rose: \"bg-rose-600 border-rose-600 active:bg-rose-900 active:border-rose-900 hover:bg-rose-700 hover:border-rose-700\",\n orange:\n \"bg-orange-600 border-orange-600 active:bg-orange-900 active:border-orange-900 hover:bg-orange-700 hover:border-orange-700\",\n \"primary-outlined\":\n \"border-primary-600 text-primary-600 hover:bg-primary-100 active:bg-primary-200 active:border-primary-700\",\n \"success-outlined\":\n \"border-success-600 text-success-600 hover:bg-success-50 hover:border-success-700 hover:text-success-700 active:bg-success-100 active:text-success-900 active:border-success-900\",\n \"error-outlined\":\n \"border-error-700 text-error-700 hover:bg-error-100 hover:border-error-700 hover:text-error-700 active:bg-error-200 active:text-error-700 active:border-error-800\",\n \"warning-outlined\":\n \"border-warning-500 text-warning-500 hover:bg-warning-50 hover:border-warning-600 hover:text-warning-600 active:bg-warning-100 active:text-warning-700 active:border-warning-700\",\n \"default-outlined\":\n \"border-gray-700 text-gray-700 hover:bg-gray-100 hover:border-gray-700 hover:text-gray-700 active:bg-gray-300 active:text-gray-800 active:border-gray-800\",\n \"blue-outlined\":\n \"border-blue-600 text-blue-600 hover:bg-blue-50 hover:border-blue-700 hover:text-blue-700 active:bg-blue-100 active:text-blue-900 active:border-blue-900\",\n \"bluegray-outlined\":\n \"border-bluegray-600 text-bluegray-600 hover:bg-bluegray-50 hover:border-bluegray-700 hover:text-bluegray-700 active:bg-bluegray-100 active:text-bluegray-900 active:border-bluegray-900\",\n \"bluelight-outlined\":\n \"border-bluelight-600 text-bluelight-600 hover:bg-bluelight-50 hover:border-bluelight-700 hover:text-bluelight-700 active:bg-bluelight-100 active:text-bluelight-900 active:border-bluelight-900\",\n \"indigo-outlined\":\n \"border-indigo-600 text-indigo-600 hover:bg-indigo-50 hover:border-indigo-700 hover:text-indigo-700 active:bg-indigo-100 active:text-indigo-900 active:border-indigo-900\",\n \"purple-outlined\":\n \"border-purple-600 text-purple-600 hover:bg-purple-50 hover:border-purple-700 hover:text-purple-700 active:bg-purple-100 active:text-purple-900 active:border-purple-900\",\n \"violet-outlined\":\n \"border-violet-600 text-violet-600 hover:bg-violet-50 hover:border-violet-700 hover:text-violet-700 active:bg-violet-100 active:text-violet-900 active:border-violet-900\",\n \"pink-outlined\":\n \"border-pink-600 text-pink-600 hover:bg-pink-50 hover:border-pink-700 hover:text-pink-700 active:bg-pink-100 active:text-pink-900 active:border-pink-900\",\n \"rose-outlined\":\n \"border-rose-600 text-rose-600 hover:bg-rose-50 hover:border-rose-700 hover:text-rose-700 active:bg-rose-100 active:text-rose-900 active:border-rose-900\",\n \"orange-outlined\":\n \"border-orange-600 text-orange-600 hover:bg-orange-50 hover:border-orange-700 hover:text-orange-700 active:bg-orange-100 active:text-orange-900 active:border-orange-900\",\n },\n size: {\n sm: \"text-sm px-3.5 py-2\",\n md: \"text-sm px-4 py-2.5\",\n lg: \"text-base px-[18px] py-2.5\",\n },\n },\n defaultVariants: {\n variant: \"filled\",\n size: \"sm\",\n },\n }\n);\n\nconst Button = ({\n children,\n className,\n variant,\n intent,\n fullWidth = false,\n startIcon,\n disabled,\n endIcon,\n size,\n type = \"button\",\n ...props\n}: ButtonProps) => {\n return (\n // <button\n // {...props}\n // disabled={disabled}\n // type={type}\n // aria-disabled={disabled}\n // className={cn(\n // fullWidth && \"w-full\",\n // buttonVariants({ intent, className, variant, size }),\n // \"flex items-center text-center justify-center gap-2\"\n // )}\n // >\n // {startIcon}\n // {children}\n // {endIcon}\n // </button>\n <button\n {...props}\n disabled={disabled}\n aria-disabled={disabled}\n type={type}\n className={cn(\n fullWidth && \"w-full\",\n buttonVariants({ intent, className, variant, size }),\n \"flex items-center text-center justify-center gap-2\"\n )}\n >\n {startIcon && <span aria-hidden=\"true\">{startIcon}</span>}\n {children}\n {endIcon && <span aria-hidden=\"true\">{endIcon}</span>}\n </button>\n );\n};\n\nexport default Button;\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport React, { ReactNode } from \"react\";\nimport { cn } from \"../utils/utils\";\n\n// const calloutVariants = cva(\"py-3 px-4 font-medium rounded-md\", {\n// variants: {\n// variant: {\n// filled: \"bg-primary-50 text-primary-600\",\n// outlined: \"border bg-transparent border-primary-200 text-primary-600\",\n// },\n// intent: {\n// primary: \"bg-primary-50 text-primary-600\",\n// warning: \"bg-warning-50 text-warning-600\",\n// error: \"bg-error-50 text-error-600\",\n// success: \"bg-success-50 text-success-600\",\n// default: \"bg-gray-50 text-gray-600\",\n// \"primary-outlined\": \"border-primary-200 text-primary-600\",\n// \"warning-outlined\": \"border-warning-200 text-warning-600\",\n// \"error-outlined\": \"border-error-200 text-error-600\",\n// \"success-outlined\": \"border-success-200 text-success-600\",\n// \"default-outlined\": \"border-gray-300 text-gray-600\",\n// },\n// size: {\n// xs: \"text-xs\",\n// sm: \"text-sm\",\n// md: \"text-base\",\n// lg: \"text-lg\",\n// },\n// },\n// defaultVariants: {\n// variant: \"filled\",\n// intent: \"primary\",\n// size: \"sm\",\n// },\n// });\n\nconst calloutVariants = cva(\"py-3 px-4 font-medium rounded-md\", {\n variants: {\n variant: {\n filled: \"\",\n outlined: \"border\",\n },\n intent: {\n primary: \"\",\n warning: \"\",\n error: \"\",\n success: \"\",\n default: \"\",\n },\n size: {\n xs: \"text-xs\",\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n },\n },\n compoundVariants: [\n {\n variant: \"filled\",\n intent: \"primary\",\n className: \"bg-primary-50 text-primary-600\",\n },\n {\n variant: \"outlined\",\n intent: \"primary\",\n className: \"border-primary-200 text-primary-600 bg-transparent\",\n },\n\n {\n variant: \"filled\",\n intent: \"warning\",\n className: \"bg-warning-50 text-warning-600\",\n },\n {\n variant: \"outlined\",\n intent: \"warning\",\n className: \"border-warning-200 text-warning-600 bg-transparent\",\n },\n\n {\n variant: \"filled\",\n intent: \"error\",\n className: \"bg-error-50 text-error-600\",\n },\n {\n variant: \"outlined\",\n intent: \"error\",\n className: \"border-error-200 text-error-600 bg-transparent\",\n },\n\n {\n variant: \"filled\",\n intent: \"success\",\n className: \"bg-success-50 text-success-600\",\n },\n {\n variant: \"outlined\",\n intent: \"success\",\n className: \"border-success-200 text-success-600 bg-transparent\",\n },\n\n {\n variant: \"filled\",\n intent: \"default\",\n className: \"bg-gray-50 text-gray-600\",\n },\n {\n variant: \"outlined\",\n intent: \"default\",\n className: \"border-gray-300 text-gray-600 bg-transparent\",\n },\n ],\n defaultVariants: {\n variant: \"filled\",\n intent: \"primary\",\n size: \"sm\",\n },\n});\n\ninterface CalloutProps extends VariantProps<typeof calloutVariants> {\n children: ReactNode;\n startIcon?: JSX.Element;\n endIcon?: JSX.Element;\n className?: string;\n}\n\nconst Callout: React.FC<CalloutProps> = ({\n children,\n variant,\n intent,\n size,\n startIcon,\n endIcon,\n className,\n}) => {\n return (\n <div\n role=\"alert\"\n className={cn(\n calloutVariants({ variant, intent, size }),\n \"flex items-center justify-between gap-2\",\n className\n )}\n >\n <div className=\"flex items-center gap-2\">\n {startIcon && <span>{startIcon}</span>}\n {children}\n </div>\n {endIcon && <span>{endIcon}</span>}\n </div>\n );\n};\n\nexport default Callout;\n","import React from 'react';\nimport { cn } from '../utils/utils';\n\ninterface CardProps {\n children: React.ReactNode;\n className?: string;\n}\n\ninterface CardHeaderProps {\n children: React.ReactNode;\n className?: string;\n}\n\ninterface CardTitleProps {\n children: React.ReactNode;\n className?: string;\n}\n\ninterface CardDescriptionProps {\n children: React.ReactNode;\n className?: string;\n}\n\ninterface CardActionProps {\n children: React.ReactNode;\n className?: string;\n}\n\ninterface CardContentProps {\n children: React.ReactNode;\n className?: string;\n}\n\ninterface CardFooterProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport default function ({ children, className }: CardProps) {\n return (\n <div className={cn('bg-white rounded-lg border border-gray-200 shadow-sm', className)}>\n {children}\n </div>\n );\n};\n\nexport const CardHeader: React.FC<CardHeaderProps> = ({ children, className }) => {\n return (\n <div className={cn('p-4 pb-4', className)}>\n {children}\n </div>\n );\n};\n\nexport const CardTitle: React.FC<CardTitleProps> = ({ children, className }) => {\n return (\n <h3 className={cn('text-lg font-semibold text-gray-900 mb-2', className)}>\n {children}\n </h3>\n );\n};\n\nexport const CardDescription: React.FC<CardDescriptionProps> = ({ children, className }) => {\n return (\n <p className={cn('text-sm text-gray-600 mb-4', className)}>\n {children}\n </p>\n );\n};\n\nexport const CardAction: React.FC<CardActionProps> = ({ children, className }) => {\n return (\n <div className={cn('mt-4', className)}>\n {children}\n </div>\n );\n};\n\nexport const CardContent: React.FC<CardContentProps> = ({ children, className }) => {\n return (\n <div className={cn('p-6 pt-0', className)}>\n {children}\n </div>\n );\n};\n\nexport const CardFooter: React.FC<CardFooterProps> = ({ children, className }) => {\n return (\n <div className={cn('p-6 pt-0', className)}>\n {children}\n </div>\n );\n};\n","import React, { HTMLAttributes, forwardRef } from \"react\";\nimport { cn } from \"../utils/utils\";\nimport { cva, VariantProps } from \"class-variance-authority\";\n\ninterface CheckboxProps\n extends Omit<HTMLAttributes<HTMLInputElement>, \"size\">,\n VariantProps<typeof checkboxVariant> {\n size?: \"sm\" | \"lg\" | \"xl\";\n disabled?: boolean;\n checked?: boolean;\n children?: never;\n}\n\nconst checkboxVariant = cva(\n \"peer relative cursor-pointer appearance-none rounded-[4px] border border-gray-300 transition-all checked:border-primary-600 checked:bg-primary-50 hover:bg-primary-50 disabled:opacity-30 disabled:pointer-events-none\",\n {\n variants: {\n size: {\n sm: \"h-3 w-3\",\n lg: \"h-3.5 w-3.5\",\n xl: \"h-4 w-4\",\n },\n },\n defaultVariants: {\n size: \"lg\",\n },\n }\n);\n\nconst Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n ({ disabled, checked, size, className, children, id, ...props }, ref) => {\n return (\n <div className=\"inline-flex relative items-center\">\n <input\n type=\"checkbox\"\n ref={ref}\n id={id}\n // aria-checked={checked}\n // role=\"checkbox\"\n {...props}\n disabled={disabled}\n checked={checked}\n // className={cn(\n // checkboxVariant({ className, size })\n // )}\n className={cn(\n \"peer\",\n checkboxVariant({ className, size }),\n \"focus-visible:ring-2 focus-visible:ring-primary-600 focus-visible:ring-offset-2\"\n )}\n />\n <span\n aria-hidden=\"true\"\n className=\"absolute text-primary-600 transition-opacity opacity-0 pointer-events-none top-2/4 left-2/4 -translate-y-2/4 -translate-x-2/4 peer-checked:opacity-100\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"w-2.5 h-2.5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n strokeWidth=\"1\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n </span>\n </div>\n );\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\n\nexport default Checkbox;\n","import React, { ReactNode, HTMLAttributes } from \"react\";\nimport { cn } from \"../utils/utils\";\nimport { cva, VariantProps } from \"class-variance-authority\";\n\ninterface ChipProps\n extends HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof chipVariants> {\n children: ReactNode;\n dot?: boolean;\n dotColor?: string;\n startIcon?: JSX.Element;\n endIcon?: JSX.Element;\n}\n\nconst chipVariants = cva(\n \"inline-flex items-center w-fit gap-2 rounded-full capitalize\",\n {\n variants: {\n intent: {\n default: \"bg-gray-50 text-gray-600\",\n success: \"bg-success-50 text-success-600\",\n warning: \"bg-warning-50 text-warning-500\",\n error: \"bg-error-50 text-error-600\",\n blue: \"bg-blue-100 text-blue-700\",\n primary: \"bg-primary-100 text-primary-700\",\n bluegray: \"bg-bluegray-100 text-bluegray-500\",\n bluelight: \"bg-bluelight-100 text-bluelight-600\",\n violet: \"bg-violet-50 text-violet-700\",\n indigo: \"bg-indigo-100 text-indigo-700\",\n purple: \"bg-purple-50 text-purple-700\",\n pink: \"bg-pink-25 text-pink-700\",\n rose: \"bg-rose-50 text-rose-600\",\n orange: \"bg-orange-50 text-orange-600\",\n },\n size: {\n sm: \"text-xs px-2 py-0.5\",\n md: \"text-sm px-2.5 py-0.5\",\n lg: \"text-base px-3 py-1\",\n },\n },\n defaultVariants: {\n intent: \"default\",\n size: \"md\",\n },\n }\n);\n\nconst dotColorVariants: Record<string, string> = {\n default: \"bg-gray-600\",\n success: \"bg-success-600\",\n warning: \"bg-warning-600\",\n error: \"bg-error-600\",\n blue: \"bg-blue-600\",\n primary: \"bg-primary-600\",\n bluegray: \"bg-bluegray-500\",\n bluelight: \"bg-bluelight-600\",\n violet: \"bg-violet-700\",\n indigo: \"bg-indigo-700\",\n purple: \"bg-purple-700\",\n pink: \"bg-pink-700\",\n rose: \"bg-rose-600\",\n orange: \"bg-orange-600\",\n};\n\nconst Chip = ({\n children,\n className,\n size,\n intent = \"default\",\n dot,\n dotColor,\n startIcon,\n endIcon,\n ...rest\n}: ChipProps) => {\n const resolvedIntent = intent ?? \"default\";\n\n return (\n <span\n className={cn(chipVariants({ intent: resolvedIntent, size }), className)}\n {...rest}\n >\n {startIcon && (\n <span aria-hidden=\"true\">\n {startIcon}\n </span>\n )}\n\n {!startIcon && dot && (\n <span\n aria-hidden=\"true\"\n className={cn(\n \"w-1.5 h-1.5 rounded-full\",\n dotColor ||\n dotColorVariants[resolvedIntent] ||\n \"bg-primary-600\"\n )}\n />\n )}\n\n {children}\n\n {endIcon && (\n <span aria-hidden=\"true\">\n {endIcon}\n </span>\n )}\n </span>\n );\n};\n\nexport default Chip;\n\n","import { cn } from \"../utils/utils\";\nimport React from \"react\";\n\ninterface CircularProgressBarProps {\n strokeWidth?: number;\n size?: number;\n percentage: number;\n text?: string;\n textClassName?: string;\n}\n\nconst CircularProgressBar = ({\n percentage,\n size = 160,\n strokeWidth = 8,\n text,\n textClassName,\n}: CircularProgressBarProps) => {\n const radius = (size - strokeWidth) / 2;\n const viewBox = `0 0 ${size} ${size}`;\n const dashArray = radius * Math.PI * 2;\n const dashOffset = dashArray - (dashArray * (percentage || 0)) / 100;\n\n return (\n <svg width={size} height={size} viewBox={viewBox}>\n <circle\n className=\"fill-none stroke-gray-200\"\n cx={size / 2}\n cy={size / 2}\n r={radius}\n strokeWidth={`${strokeWidth}px`}\n />\n <circle\n className=\"fill-none stroke-primary-600 transition-all delay-200 ease-in\"\n cx={size / 2}\n cy={size / 2}\n r={radius}\n strokeLinecap=\"round\"\n strokeWidth={`${strokeWidth}px`}\n transform={`rotate(-90 ${size / 2} ${size / 2})`}\n style={{\n strokeDasharray: dashArray,\n strokeDashoffset: dashOffset,\n }}\n />\n <text\n x=\"50%\"\n y=\"50%\"\n dy=\".3em\"\n textAnchor=\"middle\"\n fill=\"currentColor\"\n className={cn(textClassName)}\n >\n {text}\n </text>\n </svg>\n );\n};\n\nexport default CircularProgressBar;\n","import React from \"react\";\nimport { cn } from \"../utils/utils\";\n\ninterface DividerProps {\n width?: string;\n height?: string;\n position?: \"horizontal\" | \"vertical\";\n className?: string;\n}\n\nconst Divider = ({\n width,\n height,\n position = \"horizontal\",\n className,\n}: DividerProps) => {\n return (\n <div\n style={{\n width: width,\n height: height,\n }}\n className={cn(\n `bg-gray-200`,\n position === \"horizontal\" ? \"w-full h-[1px]\" : \"w-[1px] h-full\",\n className\n )}\n ></div>\n );\n};\n\nexport default Divider;\n","\"use client\";\nimport React, {\n Dispatch,\n FC,\n ReactNode,\n SetStateAction,\n useCallback,\n useEffect,\n} from \"react\";\nimport { cn } from \"../utils/utils\";\nimport Button from \"./Button\";\nimport { RiCloseLine } from \"@remixicon/react\";\n\ninterface DrawerProps {\n isOpen: boolean;\n setIsOpen: Dispatch<SetStateAction<boolean>>;\n children: ReactNode;\n position?: \"left\" | \"right\" | \"top\" | \"bottom\";\n width?: string;\n height?: string;\n className?: string;\n showCloseButton?: boolean;\n closeOnOutsideClick?: boolean;\n}\n\nconst Drawer: FC<DrawerProps> = ({\n isOpen,\n setIsOpen,\n children,\n position = \"right\",\n width = \"w-80\",\n height = \"h-64\",\n className,\n showCloseButton = true,\n closeOnOutsideClick = true,\n}) => {\n const handleClose = useCallback(() => {\n setIsOpen(false);\n }, [setIsOpen]);\n\n // Prevent body scroll when open\n useEffect(() => {\n document.body.style.overflow = isOpen ? \"hidden\" : \"\";\n }, [isOpen]);\n\n // Close on Escape\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\" && isOpen) {\n handleClose();\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [isOpen, handleClose]);\n\n return (\n <div>\n <div\n className={cn(\n \"fixed inset-0 bg-black/50 transition-opacity duration-300 z-[10000000000000000]\",\n isOpen ? \"opacity-100\" : \"opacity-0 pointer-events-none\"\n )}\n onClick={() => closeOnOutsideClick && handleClose()}\n />\n\n <div\n className={cn(\n \"fixed bg-white shadow-xl p-4 transition-transform duration-300 z-[100000000000000000]\",\n position === \"right\" && `top-0 right-0 ${width} h-full`,\n position === \"left\" && `top-0 left-0 ${width} h-full`,\n position === \"top\" && `top-0 left-0 w-full ${height}`,\n position === \"bottom\" && `bottom-0 left-0 w-full ${height}`,\n !isOpen &&\n (position === \"right\"\n ? \"translate-x-full\"\n : position === \"left\"\n ? \"-translate-x-full\"\n : position === \"top\"\n ? \"-translate-y-full\"\n : \"translate-y-full\"),\n isOpen && \"translate-x-0 translate-y-0\",\n className\n )}\n onClick={(e) => e.stopPropagation()}\n >\n {showCloseButton && (\n <Button\n size=\"sm\"\n variant=\"outlined\"\n intent=\"default-outlined\"\n onClick={handleClose}\n startIcon={<RiCloseLine size={20} />}\n aria-label=\"Close drawer\"\n className=\"absolute border-none p-1 transition-colors top-3 right-4\"\n />\n )}\n\n <div className=\"overflow-y-auto h-full\">{children}</div>\n </div>\n </div>\n );\n};\n\nexport default Drawer;\n","\"use client\";\nimport React, {\n useEffect,\n useState,\n useMemo,\n useCallback,\n forwardRef,\n useRef,\n useImperativeHandle,\n} from \"react\";\nimport { RiArrowDownSLine, RiSearchLine } from \"@remixicon/react\";\nimport { cn } from \"../utils/utils\";\nimport Input from \"./Input\";\nimport Label from \"./Label\";\nimport Checkbox from \"./Checkbox\";\n\ntype Option = {\n label: string | number;\n value: string | number;\n info?: string;\n addInfo?: string;\n tooltipContent?: string;\n disabledOption?: boolean;\n labelTextColor?: string;\n};\n\ninterface MenuItemProps {\n label?: string | number;\n value: string | number;\n children?: React.ReactNode;\n}\n\ninterface DropdownProps {\n id?: string;\n icon?: JSX.Element;\n options: Option[];\n selected?: Option[];\n setSelected?: React.Dispatch<React.SetStateAction<Option[]>>;\n onApply?: () => void;\n onReset?: () => void;\n dropdownText?: string;\n search?: boolean;\n multiple?: boolean;\n renderItem?: (option: Option) => React.ReactNode;\n children?: React.ReactNode;\n position?: \"top\" | \"bottom\";\n info?: string | number;\n addInfo?: string | number;\n tooltipContent?: string;\n width?: string;\n dropdownFooter?: boolean | undefined;\n disabled?: boolean;\n labelTextColor?: string;\n footerAction?: React.ReactNode;\n}\n\nconst defaultRenderItem = (option: Option) => {\n return <MenuItem label={option.label} value={option.value} />;\n};\n\nconst Dropdown = forwardRef<HTMLDivElement, DropdownProps>(\n (\n {\n id = `dropdown-${Math.random().toString(36).substring(2, 11)}`,\n options,\n selected,\n setSelected,\n search = false,\n multiple = false,\n dropdownText = \"Select\",\n renderItem = defaultRenderItem,\n children,\n icon,\n position = \"top\",\n width,\n info,\n dropdownFooter = false,\n onApply,\n disabled = false,\n onReset,\n footerAction,\n },\n ref\n ) => {\n const [searchQuery, setSearchQuery] = useState<string>(\"\");\n const [filteredOptions, setFilteredOptions] = useState<Option[]>(\n options || []\n );\n\n const [dropdownMenu, setDropdownMenu] = useState(false);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n useImperativeHandle(ref, () => dropdownRef.current!);\n\n useEffect(() => {\n if (options) {\n setFilteredOptions(options);\n }\n }, [options]);\n\n const memoizedFilteredOptions = useMemo(() => {\n if (!search) return filteredOptions;\n return filteredOptions.filter((option) => {\n if (typeof option.label === \"string\") {\n return option.label.toLowerCase().includes(searchQuery.toLowerCase());\n }\n return option.label.toString().includes(searchQuery.toLowerCase());\n });\n }, [search, searchQuery, filteredOptions]);\n\n const handleSearchChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setSearchQuery(e.target.value);\n },\n []\n );\n\n const toggleOption = useCallback(\n (option: Option) => {\n if (multiple && setSelected) {\n setSelected((prevSelected) =>\n prevSelected.some((item) => item.value === option.value)\n ? prevSelected.filter((item) => item.value !== option.value)\n : [...prevSelected, option]\n );\n } else if (setSelected) {\n setSelected([option]);\n setDropdownMenu(false);\n }\n },\n [multiple, setSelected]\n );\n\n const handleCheckboxChange = useCallback(\n (option: Option) => {\n if (multiple && setSelected) {\n setSelected((prevSelected) =>\n prevSelected.some((item) => item.value === option.value)\n ? prevSelected.filter((item) => item.value !== option.value)\n : [...prevSelected, option]\n );\n } else if (setSelected) {\n setSelected([option]);\n }\n },\n [multiple, setSelected]\n );\n\n const handleSelectAll = () => {\n if (selected?.length === filteredOptions.length) {\n setSelected?.([]);\n } else {\n setSelected?.(filteredOptions);\n }\n };\n\n const handleReset = () => {\n if (onReset) {\n onReset();\n }\n setSelected?.([]);\n setDropdownMenu(false);\n };\n\n useEffect(() => {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, []);\n\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node)\n ) {\n setDropdownMenu(false);\n }\n };\n\n return (\n <div\n id={id}\n ref={dropdownRef}\n className={cn(\n \"relative bg-gray-25 shadow-[0px_1px_2px_0px_#1018280D] rounded-lg\",\n !width && \"w-full\",\n disabled && \"cursor-not-allowed opacity-50\"\n )}\n style={{\n width: width,\n }}\n >\n <button\n type=\"button\"\n aria-haspopup=\"listbox\"\n aria-expanded={dropdownMenu}\n aria-labelledby={`${id}-label`}\n disabled={disabled}\n onClick={() => !disabled && setDropdownMenu((prev) => !prev)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n !disabled && setDropdownMenu((prev) => !prev);\n }\n }}\n className={cn(\n \"w-full hover:bg-gray-50 py-2 px-[14px] rounded-lg flex justify-between items-center text-gray-900 bg-gray-25 text-text-sm cursor-pointer\",\n dropdownMenu\n ? \"border border-primary-600\"\n : \"border border-gray-200\",\n disabled && \"bg-gray-300 hover:bg-gray-300 cursor-not-allowed\"\n )}\n >\n <section className=\"flex items-center gap-2 text-ellipsis overflow-hidden\">\n {icon && <span aria-hidden=\"true\">{icon}</span>}\n <span id={`${id}-label`} className=\"line-clamp-1 w-full\">\n {multiple\n ? (selected?.length ?? 0) > 0\n ? `${selected?.length} Selected`\n : dropdownText\n : selected?.[0]?.label\n ? selected?.[0]?.label\n : dropdownText}\n </span>\n </section>\n <RiArrowDownSLine aria-hidden=\"true\" size={18} />\n </button>\n <ul\n role=\"listbox\"\n aria-multiselectable={multiple}\n aria-labelledby={`${id}-label`}\n className={cn(\n \"max-h-0 opacity-0 overflow-hidden shadow-sm mt-1 rounded absolute text-[16px] bg-white z-[1000] w-full transition-all duration-75 delay-100 ease-in\",\n position === \"top\" ? \"top-10\" : \"bottom-10\",\n dropdownMenu\n ? \"border border-primary-600\"\n : \"border border-gray-200\",\n dropdownMenu &&\n \"max-h-[360px] h-fit opacity-[1] transition-all ease-in duration-150\"\n )}\n >\n {search && (\n <Input\n id={`${id}-search`}\n type=\"text\"\n placeholder=\"Search...\"\n aria-label=\"Search options\"\n value={searchQuery}\n onChange={handleSearchChange}\n className=\"rounded rounded-b-none text-gray-800 bg-white w-full h-[35px] pl-3 border-none\"\n endIcon={<RiSearchLine size={18} />}\n />\n )}\n {multiple && (\n <section className=\"py-[6px] px-[14px] flex justify-between items-center\">\n <button\n type=\"button\"\n aria-label=\"Select all\"\n onClick={handleSelectAll}\n className=\"text-text-sm hover:text-primary-700 text-primary-600 cursor-pointer\"\n >\n Select all\n </button>\n <button\n aria-label=\"Reset\"\n type=\"button\"\n className=\"text-text-sm text-warning-500 hover:text-warning-600\"\n onClick={handleReset}\n >\n Reset\n </button>\n </section>\n )}\n <section className=\"max-h-[200px] transition-all duration-75 delay-100 ease-in-out overflow-y-scroll\">\n {options\n ? memoizedFilteredOptions?.map((option, i) => (\n <React.Fragment key={i}>\n {multiple ? (\n <Label\n className={cn(\n \"has-[:checked]:bg-primary-50 has-[:checked]:border-primary-600 hover:bg-gray-50 flex flex-col py-[6px] px-[14px] cursor-pointer border-l-4 border-transparent\",\n option?.disabledOption &&\n \"opacity-50 cursor-not-allowed hover:bg-white text-gray-300 select-none\"\n )}\n htmlFor={`${id}-checkbox-${option.value}`}\n key={i}\n >\n <section className=\"flex items-center justify-between gap-2 w-full\">\n <div className=\"flex gap-2\">\n <Checkbox\n id={`${id}-checkbox-${option.value}`}\n checked={\n selected?.some(\n (item) => item.value === option.value\n ) ?? false\n }\n onChange={() => handleCheckboxChange(option)}\n disabled={option?.disabledOption}\n />\n <div className=\"flex items-center gap-1\">\n <div\n style={{\n color: option?.disabledOption\n ? \"#D1D5DB\"\n : option.labelTextColor,\n }}\n className={cn(\n \"break-words\",\n option?.disabledOption && \"text-gray-300\"\n )}\n >\n {renderItem(option)}\n </div>\n {/* {dropDownTooltip && (\n <DropdownTooltip\n tooltipContent={option?.tooltipContent}\n />\n )} */}\n </div>\n </div>\n <span className=\"text-gray-500\">{option?.info}</span>\n </section>\n <span className=\"pt-[2px] text-text-sm text-gray-500\">\n {option?.addInfo}\n </span>\n </Label>\n ) : (\n <Label\n key={i}\n htmlFor={`${id}-checkbox-${option.value}`}\n className={cn(\n \"flex justify-between py-[6px] px-[14px] hover:bg-gray-50 gap-2 items-center border-l-4 border-transparent cursor-pointer\",\n {\n \"bg-primary-50 border-primary-600\":\n selected && selected[0]?.value === option.value,\n \"opacity-50 cursor-not-allowed hover:bg-white text-gray-500\":\n option?.disabledOption,\n }\n )}\n onClick={() =>\n !option?.disabledOption && toggleOption(option)\n }\n >\n <div\n style={{\n color: option?.disabledOption\n ? \"#D1D5DB\"\n : option.labelTextColor,\n }}\n className={cn(\n \"break-words\",\n option?.disabledOption && \"text-gray-300\"\n )}\n >\n {renderItem(option)}\n </div>\n <span className=\"text-gray-500\">{info}</span>\n </Label>\n )}\n </React.Fragment>\n ))\n : children}\n </section>\n {footerAction && (\n <div className=\"py-2 mt-1 px-2 border-t\">{footerAction}</div>\n )}\n {dropdownFooter && (\n <DropdownFooter\n setDropdownMenu={setDropdownMenu}\n onApply={onApply}\n />\n )}\n </ul>\n </div>\n );\n }\n);\n\nexport const MenuItem: React.FC<MenuItemProps> = ({ label, children }) => {\n return <p className=\"break-all\">{label || children}</p>;\n};\n\ninterface DropdownFooterProps {\n onApply?: (() => void) | undefined;\n setDropdownMenu?: (value: boolean) => void;\n}\n\nexport const DropdownFooter: React.FC<DropdownFooterProps> = ({\n onApply,\n setDropdownMenu,\n}) => {\n return (\n <div className=\"flex justify-end border-t border-gray-200 px-[14px] py-[8px] text-text-sm\">\n <button\n type=\"button\"\n className=\"text-primary-600 hover:text-primary-700\"\n onClick={() => {\n if (onApply) {\n onApply();\n }\n if (setDropdownMenu) {\n setDropdownMenu(false);\n }\n }}\n >\n Apply\n </button>\n </div>\n );\n};\n\nDropdown.displayName = \"Dropdown\";\n\nexport default Dropdown;\n","import React, { InputHTMLAttributes, forwardRef } from \"react\";\nimport { cn } from \"../utils/utils\";\n\ninterface InputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n size?: \"sm\" | \"lg\";\n startIcon?: JSX.Element;\n endIcon?: JSX.Element;\n disabled?: boolean;\n error?: boolean;\n type:\n | \"text\"\n | \"url\"\n | \"email\"\n | \"password\"\n | \"number\"\n | \"tel\"\n | \"search\"\n | \"time\";\n}\n\nconst Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n size,\n startIcon,\n endIcon,\n className,\n type, error,\n disabled,\n id,\n \"aria-label\": ariaLabel,\n \"aria-describedby\": ariaDescribedby,\n ...props\n },\n ref\n ) => {\n return (\n <div\n className={cn(\n \"group flex items-center gap-2 p-3.5 border border-gray-200 rounded-lg bg-white shadow-[0px_1px_2px_0px_#1018280D] hover:bg-gray-50 hover:border-gray-300 focus-within:border-gray-800 focus-within:bg-gray-25 focus-within:hover:bg-gray-50 focus-within:hover:border-gray-800 has-[:disabled]:opacity-30 has-[:disabled]:bg-gray-300 has-[:disabled]:select-none has-[:disabled]:pointer-events-none\",\n size === \"sm\"\n ? \"w-[320px] h-10\"\n : size === \"lg\"\n ? \"w-[313px] h-11\"\n : \"w-full h-10\",\n error && \"border-error-500 hover:border-error-600 focus-within:border-error-500 focus-within:hover:border-error-500\",\n className\n )}\n >\n {startIcon && (\n <span\n aria-hidden=\"true\"\n className={cn(\n \"group-hover:text-gray-600 group-focus-within:text-gray-600\",\n disabled && \"text-gray-900\", error && \"text-error-500\"\n )}\n >\n {startIcon}\n </span>\n )}\n <input\n {...props}\n ref={ref}\n id={id}\n disabled={disabled}\n type={type}\n aria-label={ariaLabel}\n aria-describedby={ariaDescribedby}\n aria-disabled={disabled}\n className={cn(\n \"w-full text-sm focus:outline-none focus:ring-offset-0 bg-transparent disabled:text-gray-900 placeholder:text-gray-500 group-hover:placeholder:text-gray-500 rounded-md\",\n size\n )}\n />\n {endIcon && (\n <span\n aria-hidden=\"true\"\n className={cn(\n \"group-hover:text-gray-600 group-focus-within:text-gray-600\",\n disabled && \"text-gray-900\"\n )}\n >\n {endIcon}\n </span>\n )}\n </div>\n );\n }\n);\n\nInput.displayName = \"Input\";\n\nexport default Input;\n","import { cva, VariantProps } from \"class-variance-authority\";\nimport React, { LabelHTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"../utils/utils\";\n\ninterface LabelProps\n extends LabelHTMLAttributes<HTMLLabelElement>,\n VariantProps<typeof labelVariants> {\n htmlFor?: string;\n children: ReactNode;\n required?: boolean;\n disabled?: boolean;\n}\n\nconst labelVariants = cva(\"flex item-start\", {\n variants: {\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n\nconst Label = ({\n children,\n htmlFor,\n size,\n required,\n disabled,\n className,\n ...props\n}: LabelProps) => {\n return (\n <label\n htmlFor={htmlFor}\n className={cn(\n \"cursor-pointer\",\n labelVariants({ className, size }),\n disabled === true\n ? \"opacity-30 select-none pointer-events-none\"\n : \"opacity-100\"\n )}\n aria-disabled={disabled}\n {...props}\n >\n <span className=\"flex items-center gap-1\">\n {children}\n {required && (\n <span\n aria-label=\"required field\"\n role=\"presentation\"\n className=\"text-red-500\"\n aria-hidden=\"true\"\n >\n *\n </span>\n )}\n </span>\n </label>\n );\n};\n\nexport default Label;\n","\"use client\";\nimport { RiArrowDownSLine } from \"@remixicon/react\";\nimport React, { useState, useRef, useEffect, useCallback } from \"react\";\nimport { cn } from \"../utils/utils\";\n\n// ─────────────────────────────\n// Types\n// ─────────────────────────────\ntype DropdownAlignment =\n | \"left\"\n | \"right\"\n | \"top\"\n | \"bottom\"\n | \"center\"\n | \"start\"\n | \"end\";\n\ninterface DropdownContextType {\n isOpen: boolean;\n setIsOpen: (open: boolean) => void;\n triggerRef: React.RefObject<HTMLDivElement>;\n contentRef: React.RefObject<HTMLDivElement>;\n focusedIndex: number;\n setFocusedIndex: (index: number) => void;\n itemsCount: number;\n registerItem: () => number;\n menuItemsRef: React.MutableRefObject<(HTMLDivElement | null)[]>;\n}\n\nconst DropdownContext = React.createContext<DropdownContextType | null>(null);\n\n// ─────────────────────────────\n// Root DropdownMenu\n// ─────────────────────────────\nexport default function DropdownMenu({ children }: { children: React.ReactNode }) {\n const [isOpen, setIsOpen] = useState(false);\n const [focusedIndex, setFocusedIndex] = useState(-1);\n const triggerRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const menuItemsRef = useRef<(HTMLDivElement | null)[]>([]);\n const itemsCountRef = useRef(0);\n\n const registerItem = useCallback(() => {\n const idx = itemsCountRef.current;\n itemsCountRef.current += 1;\n return idx;\n }, []);\n\n const closeMenu = () => {\n setIsOpen(false);\n setFocusedIndex(-1);\n };\n\n // ── Outside click handler\n useEffect(() => {\n if (!isOpen) return;\n\n const handleClickOutside = (e: MouseEvent) => {\n if (\n triggerRef.current &&\n contentRef.current &&\n !triggerRef.current.contains(e.target as Node) &&\n !contentRef.current.contains(e.target as Node)\n ) {\n closeMenu();\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [isOpen]);\n\n // ── Keyboard navigation\n useEffect(() => {\n if (!isOpen) return;\n\n const handleKey = (event: KeyboardEvent) => {\n switch (event.key) {\n case \"Escape\":\n event.preventDefault();\n closeMenu();\n triggerRef.current?.focus();\n break;\n\n case \"ArrowDown\":\n event.preventDefault();\n setFocusedIndex((prev) =>\n prev < itemsCountRef.current - 1 ? prev + 1 : 0\n );\n break;\n\n case \"ArrowUp\":\n event.preventDefault();\n setFocusedIndex((prev) =>\n prev > 0 ? prev - 1 : itemsCountRef.current - 1\n );\n break;\n\n case \"Home\":\n event.preventDefault();\n setFocusedIndex(0);\n break;\n\n case \"End\":\n event.preventDefault();\n setFocusedIndex(itemsCountRef.current - 1);\n break;\n }\n };\n\n document.addEventListener(\"keydown\", handleKey);\n setFocusedIndex(0);\n\n return () => document.removeEventListener(\"keydown\", handleKey);\n }, [isOpen]);\n\n // Focus current active item\n useEffect(() => {\n if (!isOpen) return;\n const el = menuItemsRef.current[focusedIndex];\n if (el) el.focus();\n }, [focusedIndex, isOpen]);\n\n const contextValue: DropdownContextType = {\n isOpen,\n setIsOpen,\n triggerRef,\n contentRef,\n focusedIndex,\n setFocusedIndex,\n itemsCount: itemsCountRef.current,\n registerItem,\n menuItemsRef,\n };\n\n return (\n <DropdownContext.Provider value={contextValue}>\n <div className=\"relative inline-block text-left\">{children}</div>\n </DropdownContext.Provider>\n );\n}\n\n// ─────────────────────────────\n// Trigger\n// ─────────────────────────────\nexport function DropdownMenuTrigger({\n children,\n isOpen,\n setIsOpen,\n}: {\n children: React.ReactNode;\n isOpen?: boolean;\n setIsOpen?: (open: boolean) => void;\n}) {\n const ctx = React.useContext(DropdownContext);\n const actualIsOpen = ctx?.isOpen ?? isOpen;\n const actualSetIsOpen = ctx?.setIsOpen ?? setIsOpen;\n\n const handleKey = (e: React.KeyboardEvent) => {\n switch (e.key) {\n case \"Enter\":\n case \" \":\n e.preventDefault();\n actualSetIsOpen?.(!actualIsOpen);\n break;\n case \"ArrowDown\":\n e.preventDefault();\n actualSetIsOpen?.(true);\n break;\n case \"ArrowUp\":\n e.preventDefault();\n actualSetIsOpen?.(true);\n break;\n }\n };\n\n return (\n <div\n ref={ctx?.triggerRef}\n tabIndex={0}\n role=\"button\"\n aria-haspopup=\"menu\"\n aria-expanded={actualIsOpen}\n onClick={() => actualSetIsOpen?.(!actualIsOpen)}\n onKeyDown={handleKey}\n className=\"cursor-pointer outline-none focus:ring-2 focus:ring-primary-500 rounded\"\n >\n {children}\n </div>\n );\n}\n\n// ─────────────────────────────\n// Content\n// ─────────────────────────────\nexport function DropdownMenuContent({\n children,\n isOpen,\n align = \"right\",\n className = \"\",\n}: {\n children: React.ReactNode;\n isOpen?: boolean;\n className?: string;\n align?: DropdownAlignment;\n}) {\n const ctx = React.useContext(DropdownContext);\n const actualIsOpen = ctx?.isOpen ?? isOpen;\n const [visible, setVisible] = useState(actualIsOpen);\n\n useEffect(() => {\n if (actualIsOpen) setVisible(true);\n else setTimeout(() => setVisible(false), 150);\n }, [actualIsOpen]);\n\n if (!visible) return null;\n\n const pos =\n align === \"left\" || align === \"start\"\n ? \"right-0\"\n : align === \"right\" || align === \"end\"\n ? \"left-0\"\n : align === \"center\"\n ? \"left-1/2 -translate-x-1/2\"\n : \"\";\n\n return (\n <div\n ref={ctx?.contentRef}\n role=\"menu\"\n className={cn(\n \"absolute w-56 mt-2 rounded-md shadow-lg bg-white ring-1 ring-black ring-opacity-5 z-50 transition-all\",\n actualIsOpen ? \"opacity-100\" : \"opacity-0 -translate-y-2\",\n pos,\n className\n )}\n >\n {children}\n </div>\n );\n}\n\n// ─────────────────────────────\n// Internal Item Wrapper\n// ─────────────────────────────\nfunction DropdownMenuItemWrapper({\n children,\n onClick,\n onKeyDown,\n disabled,\n isSubTrigger,\n className,\n \"aria-expanded\": ariaExpanded,\n}: any) {\n const ctx = React.useContext(DropdownContext);\n const [index] = useState(() => ctx?.registerItem() ?? -1);\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (ctx && index >= 0) {\n ctx.menuItemsRef.current[index] = ref.current;\n }\n }, [index, ctx]);\n\n const handleKey = (e: React.KeyboardEvent) => {\n if (onKeyDown) onKeyDown(e);\n\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n if (!disabled) onClick?.();\n }\n };\n\n return (\n <div\n ref={ref}\n role=\"menuitem\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled}\n aria-expanded={ariaExpanded}\n onClick={() => !disabled && onClick?.()}\n onKeyDown={handleKey}\n className={cn(\n \"px-4 py-2 flex items-center justify-between text-sm cursor-pointer rounded\",\n disabled ? \"text-gray-400 cursor-not-allowed\" : \"hover:bg-gray-100\",\n className\n )}\n >\n {children}\n </div>\n );\n}\n\n// ─────────────────────────────\n// Item\n// ─────────────────────────────\nexport function DropdownMenuItem({\n children,\n className = \"\",\n onClick,\n disabled,\n shortcut,\n}: any) {\n const ctx = React.useContext(DropdownContext);\n\n return (\n <DropdownMenuItemWrapper\n disabled={disabled}\n onClick={() => {\n if (!disabled) {\n onClick?.();\n ctx?.setIsOpen(false);\n }\n }}\n className={className}\n >\n <span>{children}</span>\n {shortcut && <kbd className=\"text-xs text-gray-400\">{shortcut}</kbd>}\n </DropdownMenuItemWrapper>\n );\n}\n\n// ─────────────────────────────\n// Label\n// ─────────────────────────────\nexport function DropdownMenuLabel({ children }: any) {\n return (\n <div className=\"px-4 py-2 text-sm font-semibold text-gray-700\">\n {children}\n </div>\n );\n}\n\n// ─────────────────────────────\n// Separator\n// ─────────────────────────────\nexport function DropdownMenuSeparator() {\n return <div className=\"border-t border-gray-100 my-1\" />;\n}\n\n// ─────────────────────────────\n// Submenu\n// ─────────────────────────────\nconst SubmenuContext = React.createContext<any>(null);\n\nexport function DropdownMenuSub({ children }: any) {\n const [isSubOpen, setIsSubOpen] = useState(false);\n return (\n <SubmenuContext.Provider value={{ isSubOpen, setIsSubOpen }}>\n <div className=\"relative\">{children}</div>\n </SubmenuContext.Provider>\n );\n}\n\n// ─────────────────────────────\n// Sub Trigger\n// ─────────────────────────────\nexport function DropdownMenuSubTrigger({ children }: any) {\n const sub = React.useContext(SubmenuContext);\n\n const handleKey = (e: React.KeyboardEvent) => {\n if (e.key === \"ArrowRight\") {\n e.preventDefault();\n sub.setIsSubOpen(true);\n } else if (e.key === \"ArrowLeft\") {\n e.preventDefault();\n sub.setIsSubOpen(false);\n }\n };\n\n return (\n <DropdownMenuItemWrapper\n isSubTrigger\n aria-expanded={sub.isSubOpen}\n onClick={() => sub.setIsSubOpen(!sub.isSubOpen)}\n onKeyDown={handleKey}\n >\n <span className=\"flex-1\">{children}</span>\n <RiArrowDownSLine\n className={cn(\n \"w-4 h-4 transition-transform\",\n sub.isSubOpen && \"rotate-180\"\n )}\n />\n </DropdownMenuItemWrapper>\n );\n}\n\n// ─────────────────────────────\n// Sub Content\n// ─────────────────────────────\nexport function DropdownMenuSubContent({ children }: any) {\n const sub = React.useContext(SubmenuContext);\n\n return (\n <div\n className={cn(\n \"overflow-hidden bg-gray-50 transition-all\",\n sub.isSubOpen ? \"max-h-[300px] opacity-100\" : \"max-h-0 opacity-0\"\n )}\n >\n {children}\n </div>\n );\n}\n","\"use client\";\nimport React, {\n useEffect,\n useState,\n useMemo,\n forwardRef,\n useCallback,\n useRef,\n useImperativeHandle,\n} from \"react\";\nimport { RiErrorWarningLine, RiSearchLine } from \"@remixicon/react\";\nimport { cn } from \"../utils/utils\";\nimport Input from \"./Input\";\nimport Label from \"./Label\";\nimport Checkbox from \"./Checkbox\";\nimport Tooltip from \"./Tooltip\";\n\ntype Option = {\n label: string | number;\n value: string | number;\n info?: string;\n addInfo?: string;\n tooltipContent?: string;\n disabledOption?: boolean;\n labelTextColor?: string;\n};\n\ninterface MenuItemProps {\n label?: string | number;\n value: string | number;\n children?: React.ReactNode;\n}\n\ninterface DropdownFooterProps {\n onApply?: (() => void) | undefined;\n setDropdownMenu?: (value: boolean) => void;\n}\n\ninterface DropdownProps {\n id?: string;\n options: Option[];\n selected?: Option[];\n setSelected?: React.Dispatch<React.SetStateAction<Option[]>>;\n onApply?: () => void;\n onReset?: () => void;\n dropdownText?: string;\n search?: boolean;\n multiple?: boolean;\n renderItem?: (option: Option) => React.ReactNode;\n children?: React.ReactNode;\n trigger?: React.ReactNode;\n dropdownMenu?: boolean;\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\n setDropdownMenu?: (value: boolean) => void;\n info?: string | number;\n addInfo?: string | number;\n tooltipContent?: string;\n width?: string;\n dropdownFooter?: boolean;\n disabled?: boolean;\n labelTextColor?: string;\n footerAction?: React.ReactNode;\n}\n\nconst defaultRenderItem = (option: Option) => {\n return <MenuItem label={option.label} value={option.value} />;\n};\n\nconst DropdownWithIcon = forwardRef<HTMLDivElement, DropdownProps>(\n (\n {\n id = `dropdown-${Math.random().toString(36).substring(2, 11)}`,\n options,\n selected = [],\n setSelected,\n search = false,\n multiple = false,\n dropdownText,\n renderItem = defaultRenderItem,\n children,\n trigger,\n position = \"top\",\n width,\n info,\n dropdownFooter = false,\n onApply,\n disabled = false,\n onReset,\n footerAction,\n },\n ref\n ) => {\n const [searchQuery, setSearchQuery] = useState<string>(\"\");\n const localDropdownRef = useRef<HTMLDivElement>(null);\n const [dropdownMenu, setDropdownMenu] = useState(false);\n\n useImperativeHandle(ref, () => localDropdownRef.current!);\n\n const memoizedFilteredOptions = useMemo(() => {\n if (!search) return options;\n return options?.filter(\n (option) =>\n typeof option?.label === \"string\" &&\n option?.label?.toLowerCase()?.includes(searchQuery?.toLowerCase())\n );\n }, [search, searchQuery, options]);\n\n const handleSearchChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setSearchQuery(e?.target?.value);\n },\n []\n );\n\n const toggleOption = useCallback(\n (option: Option) => {\n if (multiple && setSelected) {\n setSelected((prevSelected) =>\n prevSelected?.some((item) => item?.value === option?.value)\n ? prevSelected?.filter((item) => item?.value !== option?.value)\n : [...prevSelected, option]\n );\n } else if (setSelected) {\n setSelected([option]);\n setDropdownMenu(false);\n }\n },\n [multiple, setSelected, setDropdownMenu]\n );\n\n const handleCheckboxChange = useCallback(\n (option: Option) => {\n if (multiple && setSelected) {\n setSelected((prevSelected) =>\n prevSelected?.some((item) => item?.value === option?.value)\n ? prevSelected?.filter((item) => item?.value !== option?.value)\n : [...prevSelected, option]\n );\n } else if (setSelected) {\n setSelected([option]);\n }\n },\n [multiple, setSelected]\n );\n\n const handleSelectAll = () => {\n if (selected?.length === options?.length) {\n setSelected?.([]);\n } else {\n setSelected?.(options);\n }\n };\n\n const handleReset = () => {\n if (onReset) {\n onReset();\n }\n setSelected?.([]);\n setDropdownMenu(false);\n };\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n localDropdownRef?.current &&\n !localDropdownRef?.current?.contains(event?.target as Node)\n ) {\n setDropdownMenu(false);\n }\n };\n\n document?.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document?.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [setDropdownMenu]);\n\n return (\n <div\n id={id}\n ref={localDropdownRef}\n className={cn(\n \"relative\",\n !width && \"w-full\",\n disabled && \"cursor-not-allowed opacity-50\"\n )}\n style={{\n width: width,\n }}\n >\n <button\n type=\"button\"\n aria-haspopup=\"listbox\"\n aria-expanded={dropdownMenu}\n aria-labelledby={`${id}-label`}\n disabled={disabled}\n onClick={() => !disabled && setDropdownMenu((prev) => !prev)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n !disabled && setDropdownMenu((prev) => !prev);\n }\n }}\n className={cn(\n \"w-full\",\n disabled && \"cursor-not-allowed opacity-50\",\n dropdownText && \"flex items-center gap-2\"\n )}\n >\n {trigger}\n {dropdownText && (\n <span id={`${id}-label`} className=\"text-sm text-gray-800\">\n {dropdownText}\n </span>\n )}\n </button>\n <ul\n role=\"listbox\"\n aria-multiselectable={multiple}\n aria-labelledby={`${id}-label`}\n tabIndex={-1}\n className={cn(\n \"max-h-0 opacity-0 overflow-hidden shadow-sm mt-1 rounded absolute text-[16px] bg-white z-[1000] w-full transition-all duration-75 delay-100 ease-in\",\n dropdownMenu\n ? \"border border-primary-600\"\n : \"border border-gray-200\",\n position === \"top\"\n ? \"top-10\"\n : position === \"bottom\"\n ? \"bottom-10\"\n : position === \"left\"\n ? \"left-0\"\n : position === \"right\"\n ? \"right-[90%]\"\n : \"top-10\",\n dropdownMenu &&\n \"max-h-[360px] h-fit opacity-[1] transition-all ease-in duration-150\"\n )}\n style={{\n width: width,\n minWidth: \"200px\",\n top: \"calc(100% + 4px)\",\n }}\n >\n {search && (\n <Input\n id={`${id}-search`}\n type=\"text\"\n placeholder=\"Search...\"\n aria-label=\"Search options\"\n value={searchQuery}\n onChange={handleSearchChange}\n className=\"rounded rounded-b-none text-gray-800 bg-white w-full h-[35px] pl-3 border-none\"\n endIcon={<RiSearchLine size={18} />}\n />\n )}\n {multiple && (\n <section className=\"py-[6px] px-[14px] flex justify-between items-center\">\n <button\n type=\"button\"\n aria-label=\"Select all\"\n onClick={handleSelectAll}\n className=\"text-text-sm hover:text-primary-700 text-primary-600 cursor-pointer\"\n >\n Select all\n </button>\n <button\n aria-label=\"Reset\"\n type=\"button\"\n className=\"text-text-sm text-warning-500 hover:text-warning-600\"\n onClick={handleReset}\n >\n Reset\n </button>\n </section>\n )}\n <section className=\"max-h-[200px] z-[1000] transition-all duration-75 delay-100 ease-in-out overflow-y-scroll\">\n {options\n ? memoizedFilteredOptions?.map((option, i) => (\n <React.Fragment key={i}>\n {multiple ? (\n <Label\n className={cn(\n \"has-[:checked]:bg-primary-50 has-[:checked]:border-primary-600 hover:bg-gray-50 flex flex-col py-[6px] px-[14px] break-words cursor-pointer border-l-4 border-transparent\",\n option?.disabledOption &&\n \"opacity-50 cursor-not-allowed hover:bg-white text-gray-300 select-none\"\n )}\n htmlFor={`${id}-checkbox-${option.value}`}\n key={i}\n >\n <section className=\"flex items-center justify-between gap-2 w-full\">\n <div className=\"flex gap-2\">\n <Checkbox\n id={`${id}-checkbox-${option.value}`}\n checked={selected?.some(\n (item) => item?.value === option?.value\n )}\n onChange={() => handleCheckboxChange(option)}\n disabled={option?.disabledOption}\n />\n <div className=\"flex items-center gap-1\">\n {/* <div\n style={{ color: option.labelTextColor }}\n className=\"break-words\"\n >\n {renderItem(option)}\n </div> */}\n <div\n style={{\n color: option?.disabledOption\n ? \"#D1D5DB\"\n : option.labelTextColor,\n }}\n className={cn(\n \"break-words\",\n option?.disabledOption && \"text-gray-300\"\n )}\n >\n {renderItem(option)}\n </div>\n {/* {dropDownTooltip && (\n <DropdownTooltip\n tooltipContent={option?.tooltipContent}\n />\n )} */}\n </div>\n </div>\n <span className=\"text-gray-500\">{option?.info}</span>\n </section>\n <span className=\"pt-[2px] text-text-sm text-gray-500\">\n {option?.addInfo}\n </span>\n </Label>\n ) : (\n <Label\n htmlFor={`${id}-checkbox-${option.value}`}\n key={i}\n className={cn(\n \"flex justify-between py-[6px] px-[14px] hover:bg-gray-50 gap-2 items-center border-l-4 border-transparent cursor-pointer\",\n {\n \"bg-primary-50 border-primary-600\":\n selected && selected[0]?.value === option?.value,\n \"opacity-50 cursor-not-allowed hover:bg-white text-gray-500\":\n option?.disabledOption,\n }\n )}\n onClick={() =>\n !option?.disabledOption && toggleOption(option)\n }\n >\n {/* <div className=\"flex items-center gap-1\">\n <span style={{ color: option.labelTextColor }}>\n {renderItem(option)}\n </span>\n {dropDownTooltip && (\n <DropdownTooltip\n tooltipContent={option?.tooltipContent}\n />\n )}\n </div> */}\n <div\n style={{\n color: option?.disabledOption\n ? \"#D1D5DB\"\n : option.labelTextColor,\n }}\n className={cn(\n \"break-words\",\n option?.disabledOption && \"text-gray-300\"\n )}\n >\n {renderItem(option)}\n {/* {dropDownTooltip && (\n <DropdownTooltip\n tooltipContent={option?.tooltipContent}\n />\n )} */}\n </div>\n <span className=\"text-gray-500\">{info}</span>\n </Label>\n )}\n </React.Fragment>\n ))\n : children}\n </section>\n {footerAction && (\n <div className=\"py-2 mt-1 px-2 border-t\">{footerAction}</div>\n )}\n {dropdownFooter && (\n <DropdownFooter\n setDropdownMenu={setDropdownMenu}\n onApply={onApply}\n />\n )}\n </ul>\n </div>\n );\n }\n);\n\nexport const MenuItem: React.FC<MenuItemProps> = ({ label, children }) => {\n return <p className=\"break-all\">{label || children}</p>;\n};\n\nconst DropdownFooter: React.FC<DropdownFooterProps> = ({\n onApply,\n setDropdownMenu,\n}) => {\n return (\n <div className=\"flex justify-end border-t border-gray-200 px-[14px] py-[8px] text-text-sm\">\n <button\n type=\"button\"\n className=\"text-primary-600 hover:text-primary-700\"\n onClick={() => {\n if (onApply) {\n onApply();\n }\n if (setDropdownMenu) {\n setDropdownMenu(false);\n }\n }}\n >\n Apply\n </button>\n </div>\n );\n};\n\nDropdownWithIcon.displayName = \"DropdownWithIcon\";\n\nexport default DropdownWithIcon;\n","\"use client\";\nimport React, { forwardRef, InputHTMLAttributes, useRef } from \"react\";\n\ninterface FileSelectorProps extends InputHTMLAttributes<HTMLInputElement> {\n component: JSX.Element;\n}\n\nconst FileSelector = forwardRef<HTMLInputElement, FileSelectorProps>(\n ({ component, ...props }, ref) => {\n const internalRef = useRef<HTMLInputElement>(null);\n const inputRef = (ref as React.RefObject<HTMLInputElement>) || internalRef;\n\n const handleClick = () => {\n inputRef.current?.click();\n };\n\n return (\n <div\n onClick={handleClick}\n style={{ display: \"inline-block\", cursor: \"pointer\" }}\n >\n <input\n type=\"file\"\n ref={inputRef}\n {...props}\n style={{ display: \"none\" }}\n />\n {component}\n </div>\n );\n }\n);\n\nFileSelector.displayName = \"FileSelector\";\n\nexport default FileSelector;\n","\"use client\";\nimport React, { forwardRef, useState, DragEvent } from \"react\";\nimport type { InputHTMLAttributes, ReactNode } from \"react\";\nimport { RiUpload2Line } from \"@remixicon/react\";\nimport { cn } from \"../utils/utils\";\nimport Label from \"./Label\";\nimport FileUploadPreview from \"./FileUploadPreview\";\n\nexport interface FileUploadProps extends InputHTMLAttributes<HTMLInputElement> {\n id: string;\n selectedFile?: File[];\n setSelectedFile?: (files: File[]) => void;\n children?: ReactNode;\n onDelete?: (index: number) => void;\n title?: string;\n disabled?: boolean;\n filePreviewClassName?: string;\n}\n\nconst FileUpload = forwardRef<HTMLInputElement, FileUploadProps>(\n (\n {\n selectedFile,\n setSelectedFile,\n onChange,\n multiple,\n onDelete,\n children,\n disabled,\n title,\n filePreviewClassName,\n id,\n className,\n accept,\n ...props\n },\n ref\n ) => {\n const [isDragging, setIsDragging] = useState(false);\n\n const handleDragOver = (e: DragEvent<HTMLLabelElement>) => {\n e.preventDefault();\n if (!disabled) setIsDragging(true);\n };\n\n const handleDragLeave = () => {\n setIsDragging(false);\n };\n\n const handleDrop = (e: DragEvent<HTMLLabelElement>) => {\n e.preventDefault();\n setIsDragging(false);\n if (disabled) return;\n\n const files = Array.from(e.dataTransfer.files);\n if (files.length === 0) return;\n\n if (multiple) {\n setSelectedFile && setSelectedFile([...(selectedFile || []), ...files]);\n } else {\n setSelectedFile && setSelectedFile([files[0]]);\n }\n };\n\n return (\n <div className=\"flex flex-col gap-2\">\n <input\n type=\"file\"\n {...props}\n accept={accept}\n id={id}\n onChange={onChange}\n multiple={multiple}\n disabled={disabled}\n hidden\n ref={ref}\n />\n <Label\n htmlFor={id}\n disabled={disabled}\n role=\"button\"\n aria-label={`Upload ${multiple ? \"files\" : \"file\"}`}\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n e.currentTarget.click();\n }\n }}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n className={cn(\n \"w-full h-[126px] border-2 border-dashed border-gray-200 hover:bg-gray-200 cursor-pointer rounded-lg px-6 py-4 flex items-center justify-center transition-all\",\n isDragging && \"border-primary-500 bg-primary-50\",\n disabled && \"pointer-events-none\",\n className\n )}\n >\n <div className={cn(\"grid grid-cols-1 place-items-center gap-2\")}>\n <div className=\"w-10 h-10 border-[6px] border-gray-50 bg-gray-200 rounded-full p-1 flex justify-center items-center\">\n <RiUpload2Line className=\"w-5 h-5\" />\n </div>\n <div>\n <p className=\"text-center text-sm text-gray-600\">\n <span className=\"text-primary-600 font-semibold\">\n Click to upload or drag and drop\n </span>{\" \"}\n <br /> {title}\n </p>\n </div>\n </div>\n </Label>\n <section className={cn(`grid gap-2`, filePreviewClassName)}>\n {selectedFile?.map((file, index) => (\n <FileUploadPreview\n key={file.name || index}\n file={file}\n index={index}\n onDelete={onDelete}\n >\n {children}\n </FileUploadPreview>\n ))}\n </section>\n </div>\n );\n }\n);\n\nFileUpload.displayName = \"FileUpload\";\n\nexport default FileUpload;\n","import {\n RiDeleteBinLine,\n RiFileExcel2Line,\n RiFileLine,\n RiFilePdf2Line,\n RiFilePpt2Line,\n RiFileWord2Line,\n RiFileZipLine,\n RiImageLine,\n RiMusic2Line,\n RiVideoLine,\n} from \"@remixicon/react\";\nimport React, { ReactNode } from \"react\";\n\ninterface FileUploadPreviewProps {\n index: number;\n file: File;\n children?: ReactNode;\n onDelete?: (index: number) => void;\n}\n\nconst getIconForMimeType = (file: File) => {\n const fileName = typeof file === \"string\" ? file : file.name;\n const extension = fileName.split(\".\").pop()?.toLowerCase();\n\n let iconComponent: JSX.Element;\n switch (extension) {\n case \"jpg\":\n case \"jpeg\":\n case \"png\":\n case \"gif\":\n case \"svg\":\n case \"webp\":\n iconComponent = (\n <RiImageLine className=\"text-primary-600 bg-primary-100 border-4 border-primary-50 w-8 h-8 p-1 rounded-full\" />\n );\n break;\n case \"mp3\":\n case \"wav\":\n case \"ogg\":\n iconComponent = (\n <RiMusic2Line className=\"text-primary-600 bg-primary-100 border-4 border-primary-50 w-8 h-8 p-1 rounded-full\" />\n );\n break;\n case \"mp4\":\n case \"avi\":\n case \"mkv\":\n iconComponent = (\n <RiVideoLine className=\"text-primary-600 bg-primary-100 border-4 border-primary-50 w-8 h-8 p-1 rounded-full\" />\n );\n break;\n case \"xls\":\n case \"xlsx\":\n case \"csv\":\n case \"txt\":\n case \"ods\":\n iconComponent = (\n <RiFileExcel2Line className=\"text-primary-600 bg-primary-100 border-4 border-primary-50 w-8 h-8 p-1 rounded-full\" />\n );\n break;\n case \"doc\":\n case \"docx\":\n case \"odt\":\n case \"xml\":\n iconComponent = (\n <RiFileWord2Line className=\"text-primary-600 bg-primary-100 border-4 border-primary-50 w-8 h-8 p-1 rounded-full\" />\n );\n break;\n case \"pptx\":\n case \"pptm\":\n case \"xps\":\n case \"ppsx\":\n iconComponent = (\n <RiFilePpt2Line className=\"text-primary-600 bg-primary-100 border-4 border-primary-50 w-8 h-8 p-1 rounded-full\" />\n );\n break;\n case \"rar\":\n case \"zip\":\n iconComponent = (\n <RiFileZipLine className=\"text-primary-600 bg-primary-100 border-4 border-primary-50 w-8 h-8 p-1 rounded-full\" />\n );\n break;\n case \"pdf\":\n iconComponent = (\n <RiFilePdf2Line className=\"text-primary-600 bg-primary-100 border-4 border-primary-50 w-8 h-8 p-1 rounded-full\" />\n );\n break;\n default:\n // Return generic file icon\n iconComponent = (\n <RiFileLine className=\"text-primary-600 bg-primary-100 border-4 border-primary-50 w-8 h-8 p-1 rounded-full\" />\n );\n break;\n }\n return iconComponent;\n};\n\nconst FileUploadPreview = ({\n index,\n file,\n children,\n onDelete,\n}: FileUploadPreviewProps) => {\n return (\n <div\n key={index}\n className=\"p-4 border border-gray-200 rounded-lg flex items-center justify-between gap-5\"\n >\n <div className=\"flex items-center gap-2 w-full\">\n {getIconForMimeType(file)}\n <div className=\"flex flex-col gap-1 w-full\">\n <p className=\"text-sm line-clamp-2 break-all\">\n {typeof file === \"string\" ? file : file.name}{\" \"}\n </p>\n {children && <div className=\"w-full\">{children}</div>}\n </div>\n </div>\n <button type=\"button\" onClick={() => onDelete?.(index)}>\n <RiDeleteBinLine className=\"text-gray-500 w-5 h-5 cursor-pointer\" />\n </button>\n </div>\n );\n};\n\nexport default FileUploadPreview;\n","\"use client\";\nimport React, { useEffect, useRef, forwardRef } from \"react\";\nimport { cn } from \"../utils/utils\";\n\ninterface GlobalNavigationProps {\n isOpen: boolean;\n setIsOpen: (isOpen: boolean) => void;\n className?: string;\n children: React.ReactNode;\n trigger: JSX.Element;\n postion?: \"bottom-left\" | \"bottom-right\" | \"top-left\" | \"top-right\";\n}\n\nconst GlobalNavigation = forwardRef<HTMLDivElement, GlobalNavigationProps>(\n (\n {\n isOpen,\n setIsOpen,\n trigger,\n children,\n className,\n postion = \"bottom-right\",\n },\n ref\n ) => {\n const triggerRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n !triggerRef.current?.contains(event.target as Node) &&\n !contentRef.current?.contains(event.target as Node)\n ) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () =>\n document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [setIsOpen]);\n\n return (\n <div className=\"relative w-max\" ref={ref}>\n <div\n className=\"cursor-pointer\"\n ref={triggerRef}\n onClick={() => setIsOpen(!isOpen)}\n >\n {trigger}\n </div>\n {isOpen && (\n <div\n ref={contentRef}\n className={cn(\n \"absolute z-10 bg-white rounded-lg shadow-sm border min-w-[200px] p-4 transition-all duration-300 ease-in-out\",\n postion === \"bottom-left\" && \"left-0 top-4/4\",\n postion === \"bottom-right\" && \"top-4/4 right-0\",\n postion === \"top-left\" && \"bottom-[57px] left-0\",\n postion === \"top-right\" && \"bottom-[57px] right-0\",\n className\n )}\n >\n {children}\n </div>\n )}\n </div>\n );\n }\n);\n\nGlobalNavigation.displayName = \"GlobalNavigation\";\n\nexport default GlobalNavigation;\n","import React, { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"../utils/utils\";\n\ninterface HelperTextProps extends HTMLAttributes<HTMLSpanElement> {\n children: ReactNode;\n size?: \"sm\" | \"lg\";\n error?: boolean;\n}\n\nconst HelperText = ({ children, className, size, error }: HelperTextProps) => {\n return (\n <span\n className={cn(\n \"text-gray-500\",\n error && \"text-error-500\",\n className,\n size === \"sm\" ? \"text-xs\" : \"text-sm\"\n )}\n >\n {children}\n </span>\n );\n};\n\nexport default HelperText;\n","import Link from \"next/link\";\nimport React from \"react\";\nimport { cn } from \"../utils/utils\";\n\ninterface BaseProps {\n className?: string;\n children?: React.ReactNode;\n title: string;\n as?: \"link\" | \"button\";\n icon?: React.ReactNode;\n}\n\ntype LinkProps = BaseProps & {\n as: \"link\";\n href: string;\n onClick?: never;\n className?: string;\n};\n\ntype ButtonProps = BaseProps & {\n as: \"button\";\n href?: never;\n onClick?: () => void;\n className?: string;\n};\n\ntype ListItemProps = LinkProps | ButtonProps;\n\nconst ListItem = React.forwardRef<\n HTMLAnchorElement | HTMLButtonElement,\n ListItemProps\n>(({ className, title, href, onClick, as = \"link\", icon }, ref) => {\n const commonClasses = cn(\n \"px-4 py-[8px] w-full flex items-center gap-2 focus:outline-none focus:ring-2 focus:ring-primary-600 focus-visible:ring-2 rounded\",\n className\n );\n\n if (as === \"button\") {\n return (\n <button\n className={commonClasses}\n onClick={onClick}\n ref={ref as React.Ref<HTMLButtonElement>}\n type=\"button\"\n role=\"menuitem\"\n >\n <span className=\"text-base font-normal\">{title}</span>\n {icon && (\n <span className=\"flex-shrink-0\" aria-hidden=\"true\">\n {icon}\n </span>\n )}\n </button>\n );\n }\n\n return (\n <Link\n href={href ?? \"\"}\n className={commonClasses}\n ref={ref as React.Ref<HTMLAnchorElement>}\n role=\"menuitem\"\n onClick={(e) => {\n if (!href) {\n e.preventDefault();\n }\n }}\n >\n <span className=\"text-base font-normal\">{title}</span>\n {icon && (\n <span className=\"flex-shrink-0\" aria-hidden=\"true\">\n {icon}\n </span>\n )}\n </Link>\n );\n});\n\nListItem.displayName = \"ListItem\";\n\nexport default ListItem;\n","\"use client\";\nimport React, { useState } from \"react\";\nimport { RiArrowLeftSLine, RiArrowRightSLine } from \"@remixicon/react\";\nimport Button from \"./Button\";\nimport { cn } from \"../utils/utils\";\n\ninterface ListPaginationProps {\n count: number;\n page: number;\n rowsPerPage: number;\n onPageChange: (newPage: number) => void;\n className?: string;\n}\n\nconst ListPagination: React.FC<ListPaginationProps> = ({\n count,\n page,\n rowsPerPage,\n onPageChange,\n className,\n}) => {\n const totalPages = Math.ceil(count / rowsPerPage);\n const [expanded, setExpanded] = useState(false);\n\n const renderPages = () => {\n if (totalPages <= 6 || expanded) {\n return [...Array(totalPages)].map((_, i) => (\n <PageBtn key={i} i={i} page={page} onPageChange={onPageChange} />\n ));\n }\n\n const start = [0, 1];\n const mid = [page - 1, page, page + 1].filter(\n (i) => i > 1 && i < totalPages - 2\n );\n const end = [totalPages - 2, totalPages - 1];\n\n const range = Array.from(new Set([...start, ...mid, ...end]));\n return range.map((i, idx) =>\n typeof range[idx - 1] === \"number\" && i - range[idx - 1] > 1 ? (\n <Button\n key={`dots-${i}`}\n size=\"sm\"\n variant=\"outlined\"\n onClick={() => setExpanded(true)}\n >\n ...\n </Button>\n ) : (\n <PageBtn key={i} i={i} page={page} onPageChange={onPageChange} />\n )\n );\n };\n\n return (\n <section className={cn(\"flex items-center gap-1\", className)}>\n <NavBtn\n icon={<RiArrowLeftSLine size={22} />}\n onClick={() => onPageChange(page - 1)}\n disabled={page === 0}\n />\n <div className=\"max-w-[90vw] w-max overflow-auto flex items-center gap-2 p-2\">\n {renderPages()}\n </div>\n <NavBtn\n icon={<RiArrowRightSLine size={22} />}\n onClick={() => onPageChange(page + 1)}\n disabled={page === totalPages - 1}\n />\n </section>\n );\n};\n\nconst PageBtn = ({\n i,\n page,\n onPageChange,\n}: {\n i: number;\n page: number;\n onPageChange: (i: number) => void;\n}) => (\n <Button\n size=\"sm\"\n variant={\"outlined\"}\n className={cn(\n i === page &&\n \"bg-primary-50 shadow-[0px_0px_0px_2px] shadow-primary-700 hover:shadow-[0px_0px_0px_2px] hover:shadow-primary-700\"\n )}\n onClick={() => onPageChange(i)}\n >\n {i + 1}\n </Button>\n);\n\nconst NavBtn = ({\n icon,\n onClick,\n disabled,\n}: {\n icon: JSX.Element;\n onClick: () => void;\n disabled: boolean;\n}) => (\n <Button\n size=\"sm\"\n variant=\"outlined\"\n startIcon={icon}\n onClick={onClick}\n disabled={disabled}\n className=\"p-2\"\n />\n);\n\nexport default ListPagination;\n","import React from \"react\";\nimport { cn } from \"../utils/utils\";\n\ninterface LoadingProps {\n width?: string;\n height?: string;\n loaderColor?: string;\n variant?: \"light\" | \"heavy\";\n}\n\nconst Loading = ({ width, height, loaderColor, variant }: LoadingProps) => {\n return (\n <div\n className={cn(\n \"animate-spin-slow border-primary-600 border-t-gray-200/50 rounded-full\",\n variant === \"light\" ? \"border-2\" : \"border-4\"\n )}\n style={{\n width: width,\n height: height,\n borderColor: loaderColor,\n borderTopColor: \"rgb(234 236 240 / 0.5)\",\n }}\n ></div>\n );\n};\n\nexport default Loading;\n","\"use client\";\nimport React, { ReactNode, useEffect } from \"react\";\nimport { RiCloseLine } from \"@remixicon/react\";\nimport { cn } from \"../utils/utils\";\n\ninterface ModalProps {\n children?: ReactNode;\n showModal?: boolean;\n closeModal?: boolean;\n setShowModal: (value: boolean) => void;\n closeOnOutsideClick?: boolean;\n className?: string;\n width?: string;\n}\n\nexport default function Modal({\n children,\n showModal,\n setShowModal,\n closeModal = true,\n closeOnOutsideClick = true,\n className = \"\",\n width = \"50%\",\n}: ModalProps) {\n useEffect(() => {\n if (showModal) {\n document.body.style.overflow = \"hidden\";\n } else {\n document.body.style.overflow = \"auto\";\n }\n\n return () => {\n document.body.style.overflow = \"auto\";\n };\n }, [showModal]);\n\n const handleClickOutside = (event: React.MouseEvent<HTMLDivElement>) => {\n if (event.target === event.currentTarget && closeOnOutsideClick) {\n setShowModal(false);\n }\n };\n\n return (\n <>\n {showModal && (\n <div\n onClick={handleClickOutside}\n className=\"w-full h-full bg-backdrop bg-blend-overlay fixed top-0 bottom-0 left-0 right-0 flex justify-center items-center z-[1000000] overflow-hidden\"\n >\n <div\n style={{ width }}\n className={cn(\n \"relative bg-white shadow-boxShadow rounded-xl p-[18px] transition-all duration-150 fade-in-grow mx-4\",\n className\n )}\n >\n <div>{children}</div>\n {closeModal && (\n <div\n className=\"absolute top-4 ml-5 right-5 z-10 shadow-backdrop rounded-md cursor-pointer hover:bg-gray-100\"\n onClick={() => setShowModal(false)}\n >\n <RiCloseLine size={24} />\n </div>\n )}\n </div>\n </div>\n )}\n </>\n );\n}\n","import { VariantProps, cva } from \"class-variance-authority\";\nimport { HTMLAttributes, ReactNode } from \"react\";\nimport React from \"react\";\nimport { cn } from \"../utils/utils\";\nimport {\n RiAlertFill,\n RiCloseLine,\n RiErrorWarningLine,\n RiQuestionLine,\n RiThumbUpLine,\n RiShieldCheckLine,\n} from \"@remixicon/react\";\n\ninterface VariantIconProps {\n variant: \"success\" | \"warning\" | \"info\" | \"error\" | \"default\";\n}\n\nconst VariantIcon = ({ variant }: VariantIconProps) => {\n switch (variant) {\n case \"success\":\n return (\n <span>\n <RiThumbUpLine size={20} color=\"#039855\" />\n </span>\n );\n case \"warning\":\n return (\n <span>\n <RiQuestionLine color=\"#F79009\" size={20} />\n </span>\n );\n case \"info\":\n return (\n <span>\n <RiErrorWarningLine color=\"#1570EF\" size={20} />\n </span>\n );\n case \"error\":\n return (\n <span>\n <RiAlertFill color=\"#F04438\" size={20} />\n </span>\n );\n default:\n return (\n <span>\n <RiShieldCheckLine color=\"#475467\" size={20} />\n </span>\n );\n }\n};\n\ninterface NoticeProps\n extends HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof noticeVariants> {\n children?: ReactNode;\n noticeTitle?: string;\n variant: \"success\" | \"warning\" | \"info\" | \"error\" | \"default\";\n position?: \"top\" | \"bottom\" | \"center\";\n showIcon?: boolean;\n open: boolean;\n setOpen: (value: boolean) => void;\n}\n\nconst noticeVariants = cva(\"p-4 w-fit rounded-[6px]\", {\n variants: {\n variant: {\n success: \"bg-success-25 border border-success-600\",\n warning: \"bg-warning-25 border border-warning-600\",\n info: \"bg-primary-25 border border-primary-600\",\n error: \"bg-error-25 border border-error-600\",\n default: \"bg-gray-25 border border-gray-600\",\n },\n position: {\n top: \"top-4 transition-all duration-700 m-auto left-0 right-0\",\n bottom: \"bottom-4 transition-all duration-700 right-4\",\n center: \"top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 test\",\n },\n },\n});\n\nconst Notice = ({\n children,\n variant,\n position,\n noticeTitle,\n open,\n setOpen,\n showIcon = true,\n}: NoticeProps) => {\n const handleClose = () => setOpen(false);\n return (\n <>\n {open && (\n <div\n className={cn(\n noticeVariants({ variant, position }),\n `fixed z-10`,\n position === \"top\" && open && `animate-slide-in-top`,\n position === \"bottom\" && open && `animate-slide-in-right`,\n position === \"center\" && open && `animate-fade-in`\n )}\n >\n <div className=\"relative\">\n {showIcon ? (\n noticeTitle == \"\" ? (\n <div className=\"flex items-start\">\n <VariantIcon variant={variant} />\n <span className=\"ml-2 mr-8 text-text-sm\">{children}</span>\n <span onClick={handleClose}>\n <RiCloseLine size={20} />\n </span>\n </div>\n ) : (\n <div className=\"\">\n <section className=\"flex items-start\">\n <VariantIcon variant={variant} />\n <div className=\"ml-2 mr-8 -mt-[3px]\">\n <span className=\"font-bold text-gray-800 mb-1\">\n {noticeTitle}\n </span>\n <p className=\"text-text-sm text-gray-700\">{children}</p>\n </div>\n </section>\n <span\n className={cn(\"absolute top-0 right-0 cursor-pointer\")}\n onClick={handleClose}\n >\n <RiCloseLine size={20} />\n </span>\n </div>\n )\n ) : (\n <div className=\"mr-8\">\n <section className=\"flex items-center\">\n <p className=\"font-bold text-gray-800 mb-1\">{noticeTitle}</p>\n </section>\n <span\n className={cn(\"absolute top-0 right-0 cursor-pointer\")}\n onClick={handleClose}\n >\n <RiCloseLine size={20} />\n </span>\n <p className=\"text-text-sm\">{children}</p>\n </div>\n )}\n </div>\n </div>\n )}\n </>\n );\n};\n\nexport default Notice;\n","\"use client\";\nimport React, { useRef, useState } from \"react\";\nimport Input from \"./Input\";\n\ninterface OTPInputProps {\n length: number;\n onChange: (otp: string) => void;\n type?: \"text\" | \"password\" | \"number\";\n}\n\nconst OTPInput: React.FC<OTPInputProps> = ({\n length,\n onChange,\n type = \"text\",\n}) => {\n const [otpValues, setOtpValues] = useState<string[]>(Array(length).fill(\"\"));\n const inputsRef = useRef<Array<HTMLInputElement | null>>([]);\n\n const handleChange = (\n e: React.ChangeEvent<HTMLInputElement>,\n idx: number\n ) => {\n let value = e.target.value;\n if (type === \"number\") value = value.replace(/\\D/g, \"\");\n if (!value) return;\n\n const newOtp = [...otpValues];\n newOtp[idx] = value[0];\n setOtpValues(newOtp);\n onChange(newOtp.join(\"\"));\n\n if (idx < length - 1) inputsRef.current[idx + 1]?.focus();\n };\n\n const handleKeyDown = (\n e: React.KeyboardEvent<HTMLInputElement>,\n idx: number\n ) => {\n if (e.key === \"Backspace\") {\n if (otpValues[idx]) {\n const newOtp = [...otpValues];\n newOtp[idx] = \"\";\n setOtpValues(newOtp);\n onChange(newOtp.join(\"\"));\n } else if (idx > 0) {\n inputsRef.current[idx - 1]?.focus();\n }\n }\n };\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n let pasteData = e.clipboardData.getData(\"Text\");\n if (type === \"number\") pasteData = pasteData.replace(/\\D/g, \"\");\n const newOtp = pasteData\n .split(\"\")\n .concat(Array(length).fill(\"\"))\n .slice(0, length);\n setOtpValues(newOtp);\n onChange(newOtp.join(\"\"));\n inputsRef.current[Math.min(pasteData.length, length - 1)]?.focus();\n };\n\n return (\n <div className=\"flex items-center gap-2\">\n {Array.from({ length }).map((_, idx) => (\n <Input\n key={idx}\n type={type}\n inputMode={type === \"number\" ? \"numeric\" : \"text\"}\n maxLength={1}\n value={otpValues[idx]}\n onChange={(e) => handleChange(e, idx)}\n onKeyDown={(e) => handleKeyDown(e, idx)}\n onPaste={handlePaste}\n ref={(el) => {\n inputsRef.current[idx] = el ?? null;\n }}\n className=\"w-[40px] p-3.5\"\n />\n ))}\n </div>\n );\n};\n\nexport default OTPInput;\n","\"use client\";\nimport React, { useState } from \"react\";\nimport Button from \"./Button\";\nimport {\n RiArrowLeftLine,\n RiArrowRightLine,\n RiArrowDownSLine,\n RiArrowUpSLine,\n RiArrowRightSLine,\n RiArrowLeftSLine,\n} from \"@remixicon/react\";\nimport { cn } from \"../utils/utils\";\n\ntype TablePaginationProps = {\n count: number;\n countVariable?: string;\n page: number;\n rowsPerPage: number;\n rowsPerPageOptions: (number | { label: string; value: number })[];\n onPageChange: (newPage: number) => void;\n onRowsPerPageChange: (newRowsPerPage: number) => void;\n className?: string;\n variant?: \"primary\" | \"secondary\";\n itemsPerPage?: boolean;\n};\n\nconst Pagination: React.FC<TablePaginationProps> = ({\n count,\n page,\n rowsPerPage,\n rowsPerPageOptions,\n onPageChange,\n onRowsPerPageChange,\n className,\n variant = \"primary\",\n countVariable,\n itemsPerPage = true,\n}) => {\n const totalPages = Math.ceil(count / rowsPerPage);\n\n const handlePrevPageClick = () => {\n onPageChange(page - 1);\n };\n\n const handleNextPageClick = () => {\n onPageChange(page + 1);\n };\n const [showOptions, setShowOptions] = useState(false);\n\n const handleOptionClick = (\n option: number | { label: string; value: number }\n ) => {\n if (typeof option === \"number\") {\n onRowsPerPageChange(option);\n } else {\n onRowsPerPageChange(option.value);\n }\n setShowOptions(false);\n };\n\n return (\n <div\n className={cn(\n \"px-3 py-4 flex justify-between items-center w-full\",\n variant === \"primary\" && \"border border-gray-200 px-6 py-4\",\n className\n )}\n >\n <section className=\"flex gap-1.5 items-center\">\n {countVariable && (\n <p className=\"text-text-sm text-gray-800 font-medium\">\n {count} {countVariable ?? \"Items\"}\n </p>\n )}\n {itemsPerPage && (\n <div className=\"flex gap-1.5 items-center\">\n <span className=\"text-gray-800 text-text-sm font-medium\">\n Items per page\n </span>\n <div className=\"relative z-[100]\">\n <div\n className=\"border border-gray-600 w-[88px] rounded text-sm px-1.5 py-1 cursor-pointer flex items-center justify-between gap-1 text-gray-600\"\n onClick={() => setShowOptions(!showOptions)}\n >\n {rowsPerPage}{\" \"}\n {!showOptions ? (\n <RiArrowDownSLine size={14} />\n ) : (\n <RiArrowUpSLine size={14} />\n )}\n </div>\n {showOptions && (\n <div className=\"absolute top-full left-0 shadow bg-white rounded-md text-sm mt-1 z-50\">\n {rowsPerPageOptions?.map((option, index) => (\n <div\n key={index}\n className=\"px-2 py-1.5 w-[88px] text-gray-800 cursor-pointer hover:bg-gray-100\"\n onClick={() => handleOptionClick(option)}\n >\n {typeof option === \"number\" ? option : option.label}\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n )}\n </section>\n <section className=\"flex items-center gap-2 font-medium\">\n {variant === \"primary\" ? (\n <div className=\"flex items-center gap-2 text-gray-800 text-text-sm\">\n <span>page</span>\n <select\n value={page + 1}\n onChange={(e) => onPageChange(parseInt(e.target.value, 10) - 1)}\n className=\"bg-gray-25 text-gray-500 px-3.5 py-1 border border-gray-200 rounded-md text-sm focus:outline-none focus:border-gray-600\"\n >\n {totalPages > 0 &&\n [...Array(totalPages)].map((_, index) => (\n <option key={index + 1} value={index + 1}>\n {index + 1}\n </option>\n ))}\n </select>\n <span>of {totalPages > 0 ? totalPages : 0}</span>\n </div>\n ) : (\n <div className=\"flex items-center gap-2 text-gray-800 text-text-sm mx-3\">\n <span>\n {page + 1} of {totalPages > 0 ? totalPages : 0}\n </span>\n </div>\n )}\n {variant === \"primary\" ? (\n <div className=\"flex items-center\">\n <Button\n variant=\"outlined\"\n intent=\"default-outlined\"\n startIcon={<RiArrowLeftLine size={20} />}\n onClick={handlePrevPageClick}\n disabled={page === 0}\n className=\"rounded-none h-8 rounded-l-lg\"\n />\n <Button\n variant=\"outlined\"\n intent=\"default-outlined\"\n startIcon={<RiArrowRightLine size={20} />}\n onClick={handleNextPageClick}\n disabled={page === totalPages - 1}\n className=\"rounded-none h-8 rounded-r-lg\"\n />\n </div>\n ) : (\n <div className=\"flex items-center gap-1\">\n <RiArrowLeftSLine\n size={22}\n cursor={\"pointer\"}\n onClick={handlePrevPageClick}\n className={cn(\n page === 0 && \"pointer-events-none select-none opacity-30\"\n )}\n />\n\n <RiArrowRightSLine\n size={22}\n cursor={\"pointer\"}\n onClick={handleNextPageClick}\n className={cn(\n page === totalPages - 1 &&\n \"pointer-events-none select-none opacity-30\"\n )}\n />\n </div>\n )}\n </section>\n </div>\n );\n};\n\nexport default Pagination;\n","import React from \"react\";\nimport { cn } from \"../utils/utils\";\n\nexport type ProgressBarProps = {\n progress: number;\n progressText?: string;\n progressColor: string;\n progressTextPosition?: \"top\" | \"bottom\" | \"left\" | \"right\";\n};\n\nconst ProgressBar = ({\n progress,\n progressText = \"\",\n progressColor,\n progressTextPosition,\n}: ProgressBarProps) => {\n const _progress = Math?.min(Math?.max(0, progress), 100);\n return (\n <div\n className={cn(\n \"rounded\",\n progressTextPosition === \"right\"\n ? \"flex items-center gap-1\"\n : progressTextPosition === \"left\"\n ? \"flex items-center gap-1\"\n : \"\"\n )}\n >\n <span\n className={cn(\n \"text-gray-700 text-text-sm\",\n progressTextPosition === \"left\"\n ? \"inline-block\"\n : progressTextPosition === \"top\"\n ? \"flex justify-end\"\n : \"hidden\"\n )}\n >\n {progressText}\n </span>\n <div\n className=\"w-full h-2 rounded bg-gray-200\"\n role=\"progressbar\"\n aria-valuenow={_progress}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <div\n className={`${progressColor} h-full transition-all delay-100 duration-300 rounded ease-in`}\n style={{ width: `${_progress}%` }}\n ></div>\n </div>\n <span\n className={cn(\n \"text-gray-700 text-text-sm\",\n progressTextPosition === \"bottom\"\n ? \"flex justify-end\"\n : progressTextPosition === \"top\"\n ? \"hidden\"\n : progressTextPosition === \"right\"\n ? \"flex justify-end\"\n : \"hidden\"\n )}\n >\n {progressText}\n </span>\n </div>\n );\n};\n\nexport default ProgressBar;\n","import React, { InputHTMLAttributes, forwardRef } from \"react\";\nimport { cn } from \"../utils/utils\";\nimport { cva, VariantProps } from \"class-variance-authority\";\n\ninterface RadioProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\">,\n VariantProps<typeof radioVariants> {\n size?: \"sm\" | \"lg\";\n disabled?: boolean;\n checked?: boolean;\n children?: never;\n}\n\nconst radioVariants = cva(\"\", {\n variants: {\n size: {\n sm: \"h-3 w-3\",\n lg: \"h-4 w-4\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n});\n\nconst Radio = forwardRef<HTMLInputElement, RadioProps>(\n ({ size, disabled, checked, className, children, id, name, ...props }, ref) => {\n return (\n <div className=\"relative inline-flex items-center cursor-pointer\">\n <input\n {...props}\n ref={ref}\n id={id}\n name={name}\n checked={checked}\n disabled={disabled}\n role=\"radio\"\n aria-checked={checked}\n type=\"radio\"\n className={cn(\n \"peer relative cursor-pointer appearance-none rounded-full border border-gray-300 hover:border-primary-600 hover:bg-primary-50 transition-all checked:border-primary-600 checked:bg-primary-50 disabled:opacity-30 disabled:pointer-events-none focus-visible:ring-2 focus-visible:ring-primary-600 focus-visible:ring-offset-2\",\n radioVariants({ size, className })\n )}\n />\n <span\n aria-hidden=\"true\"\n className={cn(\n \"absolute transition-opacity opacity-0 ease-in-out pointer-events-none top-2/4 left-2/4 -translate-y-2/4 -translate-x-2/4 peer-checked:opacity-100 h-1.5 w-1.5 bg-primary-600 rounded-full duration-300\",\n size === \"sm\" && \"h-[4.5px] w-[4.5px]\"\n )}\n ></span>\n </div>\n );\n }\n);\n\nRadio.displayName = \"Radio\";\nexport default Radio;\n","\"use client\";\n\nimport React, { useRef, useState } from \"react\";\nimport {\n RiDeleteBin6Line,\n RiRefreshLine,\n RiFileLine,\n RiImageLine,\n RiVideoLine,\n RiFileZipLine,\n RiCheckLine,\n RiCloseLine,\n RiFilePdf2Line,\n RiFilePpt2Line,\n RiFileWord2Line,\n RiFileExcel2Line,\n RiMusic2Line,\n RiEyeLine,\n} from \"@remixicon/react\";\nimport Spinner from \"./Spinner\";\nimport Button from \"./Button\";\nimport Label from \"./Label\";\nimport { cn } from \"../utils/utils\";\nimport Image from \"next/image\";\nimport ProgressBar from \"./Progress\";\n\n// Types\nexport type UploadStatus = \"idle\" | \"uploading\" | \"success\" | \"error\";\n\nexport interface UploadItem {\n id: string;\n file?: File;\n name?: string;\n size?: number;\n progress?: number;\n status?: UploadStatus;\n previewUrl?: string;\n}\n\nexport interface ImageUploadControlledProps {\n items: UploadItem[];\n onAddFiles: (files: File[]) => void;\n onUpdateItem?: (id: string, updates: Partial<UploadItem>) => void;\n onDelete?: (id: string) => void;\n onRetry?: (id: string) => void;\n onPreview?: (id: string) => void;\n onUpload?: (\n file: File,\n onProgress: (progress: number) => void\n ) => Promise<string>;\n multiple?: boolean;\n accept?: string;\n maxSizeMB?: number;\n className?: string;\n hintText?: React.ReactNode;\n showSizeText?: boolean;\n getFileIcon?: (fileName: string, fileType: string) => React.ReactNode;\n autoUpload?: boolean;\n disabled?: boolean;\n}\n\n// Default file icon function (MATCHED with getIconForMimeType)\nconst defaultGetFileIcon = (fileName: string, fileType: string) => {\n const extension = fileName.split(\".\").pop()?.toLowerCase() || \"\";\n\n // IMAGE FILES\n if (\n fileType.startsWith(\"image/\") ||\n [\"jpg\", \"jpeg\", \"png\", \"gif\", \"svg\", \"webp\", \"bmp\"].includes(extension)\n ) {\n return <RiImageLine className=\"w-6 h-6 text-white\" />;\n }\n\n // AUDIO FILES\n if (\n fileType.startsWith(\"audio/\") ||\n [\"mp3\", \"wav\", \"ogg\", \"m4a\"].includes(extension)\n ) {\n return <RiMusic2Line className=\"w-6 h-6 text-white\" />;\n }\n\n // VIDEO FILES\n if (\n fileType.startsWith(\"video/\") ||\n [\"mp4\", \"avi\", \"mkv\", \"mov\", \"wmv\"].includes(extension)\n ) {\n return <RiVideoLine className=\"w-6 h-6 text-white\" />;\n }\n\n // EXCEL / SPREADSHEET FILES\n if (\n fileType.includes(\"excel\") ||\n [\"xls\", \"xlsx\", \"csv\", \"txt\", \"ods\"].includes(extension)\n ) {\n return <RiFileExcel2Line className=\"w-6 h-6 text-white\" />;\n }\n\n // WORD DOCUMENTS\n if (\n fileType.includes(\"word\") ||\n [\"doc\", \"docx\", \"odt\", \"xml\"].includes(extension)\n ) {\n return <RiFileWord2Line className=\"w-6 h-6 text-white\" />;\n }\n\n // POWERPOINT FILES\n if ([\"pptx\", \"pptm\", \"xps\", \"ppsx\"].includes(extension)) {\n return <RiFilePpt2Line className=\"w-6 h-6 text-white\" />;\n }\n\n // ZIP / ARCHIVE FILES\n if (\n fileType.includes(\"zip\") ||\n [\"zip\", \"rar\", \"7z\", \"tar\", \"gz\"].includes(extension)\n ) {\n return <RiFileZipLine className=\"w-6 h-6 text-white\" />;\n }\n\n // PDF FILES\n if (fileType === \"application/pdf\" || extension === \"pdf\") {\n return <RiFilePdf2Line className=\"w-6 h-6 text-white\" />;\n }\n\n // DEFAULT ICON\n return <RiFileLine className=\"w-6 h-6 text-white\" />;\n};\n\nexport default function ImageUploadControlled({\n items,\n onAddFiles,\n onUpdateItem,\n onDelete,\n onRetry,\n onPreview,\n onUpload,\n multiple = true,\n accept = \"image/*\",\n maxSizeMB = 15,\n className = \"\",\n hintText,\n showSizeText = true,\n getFileIcon = defaultGetFileIcon,\n autoUpload = true,\n disabled,\n}: ImageUploadControlledProps) {\n const inputRef = useRef<HTMLInputElement>(null);\n const [isDragging, setIsDragging] = useState(false);\n const localPreviews = useRef<Map<string, string>>(new Map());\n const uploadProgress = useRef<Map<string, number>>(new Map()); // Track progress locally\n\n const formatSize = (bytes?: number) => {\n if (!bytes) return \"0 KB\";\n return `${Math.round(bytes / 1024)} KB`;\n };\n\n const getPreviewUrl = (item: UploadItem) => {\n if (item.previewUrl) return item.previewUrl;\n if (item.file && !localPreviews.current.has(item.id)) {\n const url = URL.createObjectURL(item.file);\n localPreviews.current.set(item.id, url);\n }\n return localPreviews.current.get(item.id);\n };\n\n const getStatusDisplay = (status?: UploadStatus) => {\n switch (status) {\n case \"uploading\":\n return {\n text: \"Uploading\",\n color: \"text-blue-600\",\n showSpinner: true,\n icon: <Spinner size=\"xs\" color=\"gray\" />,\n canPreview: false,\n };\n case \"success\":\n return {\n text: \"Completed\",\n color: \"text-green-600\",\n showSpinner: false,\n icon: <RiCheckLine className=\"w-3 h-3 text-white\" />,\n canPreview: true,\n };\n case \"error\":\n return {\n text: \"Failed\",\n color: \"text-red-600\",\n showSpinner: false,\n icon: <RiCloseLine className=\"w-3 h-3 text-white\" />,\n canPreview: false,\n };\n default:\n return {\n text: \"\",\n color: \"\",\n showSpinner: false,\n icon: null,\n canPreview: false,\n };\n }\n };\n\n // const getProgressColor = (status?: UploadStatus) => {\n // switch (status) {\n // case \"uploading\":\n // return \"bg-blue-500\";\n // case \"success\":\n // return \"bg-green-600\";\n // case \"error\":\n // return \"bg-red-500\";\n // default:\n // return \"bg-gray-300\";\n // }\n // };\n\n const getProgressColor = (status?: UploadStatus) => {\n switch (status) {\n case \"uploading\":\n return \"bg-blue-500\";\n case \"success\":\n return \"bg-green-600\"; // or \"bg-success-500\" if you have success colors\n case \"error\":\n return \"bg-red-500\"; // or \"bg-danger-500\" if you have danger colors\n default:\n return \"bg-gray-300\";\n }\n };\n\n // Get file icon for an item\n const getItemFileIcon = (item: UploadItem) => {\n const fileName = item.name || item.file?.name || \"\";\n const fileType = item.file?.type || \"\";\n return getFileIcon(fileName, fileType);\n };\n\n // Handle upload with progress\n const handleUpload = React.useCallback(\n async (item: UploadItem) => {\n if (!item.file || !onUpload) return;\n\n try {\n // Update status to uploading\n if (onUpdateItem) {\n onUpdateItem(item.id, { status: \"uploading\", progress: 0 });\n }\n\n // Call the provided upload function with progress callback\n const previewUrl = await onUpload(item.file, (progress: number) => {\n // Update progress locally and via callback\n uploadProgress.current.set(item.id, progress);\n\n if (onUpdateItem) {\n onUpdateItem(item.id, { progress, status: \"uploading\" });\n }\n });\n\n // Update item with success status and preview URL\n if (onUpdateItem) {\n onUpdateItem(item.id, {\n progress: 100,\n status: \"success\",\n previewUrl,\n });\n }\n } catch (error) {\n // Update item with error status\n if (onUpdateItem) {\n onUpdateItem(item.id, { progress: 0, status: \"error\" });\n }\n }\n },\n [onUpload, onUpdateItem]\n ); // Add dependencies\n\n // Get current progress for an item\n const getCurrentProgress = (item: UploadItem) => {\n // Use local progress if available, otherwise use item progress\n return uploadProgress.current.get(item.id) ?? item.progress ?? 0;\n };\n\n // Internal retry handler\n const handleRetry = (id: string) => {\n const item = items.find((item: UploadItem) => item.id === id);\n if (item && onUpload) {\n handleUpload(item);\n } else if (onRetry) {\n onRetry(id);\n }\n };\n\n // Handle delete internally\n const handleDelete = (id: string) => {\n // Clean up local preview URL if it exists\n if (localPreviews.current.has(id)) {\n const url = localPreviews.current.get(id);\n if (url) URL.revokeObjectURL(url);\n localPreviews.current.delete(id);\n }\n\n // Clean up progress tracking\n uploadProgress.current.delete(id);\n\n // Call external onDelete handler if provided\n if (onDelete) {\n onDelete(id);\n }\n };\n\n // Event handlers\n const triggerInput = () => inputRef.current?.click();\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = Array.from(e.target.files || []);\n if (files.length === 0) return;\n\n const validFiles = files.filter(\n (file: File) => file.size <= maxSizeMB * 1024 * 1024\n );\n if (validFiles.length === 0) return;\n\n onAddFiles(multiple ? validFiles : [validFiles[0]]);\n e.target.value = \"\";\n };\n\n // Simple drag handlers\n const handleDragOver = (e: React.DragEvent<HTMLLabelElement>) => {\n e.preventDefault();\n if (!disabled) setIsDragging(true);\n };\n\n const handleDragLeave = () => {\n setIsDragging(false);\n };\n\n const handleDrop = (e: React.DragEvent<HTMLLabelElement>) => {\n e.preventDefault();\n setIsDragging(false);\n if (disabled) return;\n\n const files = Array.from(e.dataTransfer.files);\n if (files.length === 0) return;\n\n const validFiles = files.filter(\n (file: File) => file.size <= maxSizeMB * 1024 * 1024\n );\n if (validFiles.length > 0) {\n onAddFiles(multiple ? validFiles : [validFiles[0]]);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n triggerInput();\n }\n };\n\n // Auto-upload files when they're added\n React.useEffect(() => {\n if (autoUpload && onUpload) {\n items.forEach((item: UploadItem) => {\n if (item.status === \"idle\" && item.file) {\n handleUpload(item);\n }\n });\n }\n }, [items, autoUpload, onUpload, handleUpload]);\n\n // Cleanup object URLs on unmount\n React.useEffect(() => {\n const previews = localPreviews?.current;\n return () => {\n previews?.forEach((url: string) => URL?.revokeObjectURL(url));\n };\n }, []);\n\n return (\n <div className={`w-full ${className}`}>\n <input\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n hidden\n onChange={handleInputChange}\n disabled={disabled}\n />\n <Label\n htmlFor={inputRef?.current?.id}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n onClick={triggerInput}\n onKeyDown={handleKeyDown}\n tabIndex={0}\n role=\"button\"\n disabled={disabled}\n aria-label={`Upload ${multiple ? \"images\" : \"an image\"}`}\n className={cn(\n \"max-w-[564px] w-full bg-white py-4 flex items-center justify-center rounded-lg border cursor-pointer transition-all\",\n isDragging\n ? \"border-blue-500 bg-blue-50\"\n : \"border-gray-300 bg-white hover:bg-gray-50\",\n disabled && \"pointer-events-none cursor-not-allowed\"\n )}\n >\n <div className=\"flex items-center gap-3 text-center\">\n <div>\n <p className=\"text-sm text-gray-600\">\n Drag files here or\n <span className=\"text-primary-600 font-semibold ml-1\">\n Upload\n </span>{\" \"}\n <br />\n </p>\n </div>\n </div>\n </Label>\n <span className=\"text-xs\">\n {hintText ?? `Only PNG, JPG, GIF. Max file size ${maxSizeMB}MB`}\n </span>\n\n {/* Upload Items */}\n <div className=\"flex flex-col gap-4 mt-4\">\n {items?.map((item: UploadItem) => {\n const previewUrl = getPreviewUrl(item);\n const progress = getCurrentProgress(item);\n const statusInfo = getStatusDisplay(item.status);\n const progressColor = getProgressColor(item?.status);\n const fileIcon = getItemFileIcon(item);\n return (\n <div\n key={item?.id}\n className=\"flex items-center gap-4 bg-white max-w-[564px] w-full p-4 rounded-lg border border-gray-200\"\n >\n <div className=\"w-14 h-14 flex-shrink-0 rounded-md overflow-hidden relative\">\n <Image\n src=\"/fileImg.svg\"\n className=\"absolute inset-0 w-full h-full object-contain\"\n fill\n alt=\"file\"\n />\n <div className=\"relative z-10 mt-2 -ml-[2px] flex items-center justify-center w-full h-full text-white\">\n {fileIcon}\n </div>\n </div>\n {/* File Info & Progress */}\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-start justify-between gap-2 mb-3\">\n <div className=\"min-w-0\">\n <h4 className=\"text-sm font-medium text-gray-900 truncate\">\n {item?.name || item.file?.name || \"Unnamed file\"}\n </h4>\n {showSizeText && (\n <div className=\"text-xs text-gray-500 mt-1 flex items-center gap-1\">\n {formatSize(item?.size || item.file?.size)}\n {statusInfo.text && (\n <div className=\"ml-2 font-medium flex items-center gap-1\">\n {statusInfo?.showSpinner ? (\n // For uploading - just show spinner without circle\n <>\n {statusInfo.icon}\n <span className={statusInfo.color}>\n {statusInfo.text}\n </span>\n </>\n ) : (\n // For completed/failed - show circle with icon\n <>\n <div\n className={`w-4 h-4 rounded-full flex justify-center items-center ${\n statusInfo?.color === \"text-red-600\"\n ? \"bg-red-600\"\n : statusInfo?.color === \"text-green-600\"\n ? \"bg-green-600\"\n : \"bg-gray-400\"\n }`}\n >\n {statusInfo?.icon}\n </div>\n <span className={statusInfo.color}>\n {statusInfo?.text}\n </span>\n </>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n <div className=\"flex items-center gap-2\">\n {/* Actions */}\n <div className=\"flex items-center gap-2\">\n {/* Preview Button - Show when upload is successful */}\n {onPreview && item?.status === \"success\" && (\n <button\n type=\"button\"\n onClick={() => onPreview(item.id)}\n className=\"p-2 rounded-md hover:bg-gray-100 transition-colors text-gray-600\"\n title=\"Preview\"\n >\n <RiEyeLine size={16} />\n </button>\n )}\n {item?.status === \"error\" && (\n <>\n {/* Desktop: full button */}\n <span className=\"hidden sm:inline-block\">\n <Button\n variant=\"outlined\"\n intent=\"primary-outlined\"\n type=\"button\"\n size=\"sm\"\n onClick={() => handleRetry(item?.id)}\n className=\"whitespace-nowrap h-[30px]\"\n >\n <RiRefreshLine size={16} />\n Try Again\n </Button>\n </span>\n\n {/* Mobile: icon only */}\n <span className=\"sm:hidden\">\n <Button\n variant=\"outlined\"\n intent=\"primary-outlined\"\n type=\"button\"\n size=\"sm\"\n onClick={() => handleRetry(item?.id)}\n className=\"h-[30px] px-1 py-1\"\n >\n <RiRefreshLine size={16} />\n </Button>\n </span>\n </>\n )}\n\n {/* Delete button - always shown */}\n <button\n type=\"button\"\n onClick={() => handleDelete(item.id)}\n className=\"p-2 rounded-md hover:bg-gray-100 transition-colors text-gray-600\"\n title=\"Delete\"\n >\n <RiDeleteBin6Line size={16} />\n </button>\n </div>\n </div>\n </div>\n {/* Progress Bar */}\n <div className=\"flex items-center gap-4\">\n <div className=\"flex-1\">\n <ProgressBar\n progressColor={progressColor}\n progress={progress}\n />\n </div>\n <div className=\"text-xs text-gray-500 w-12 text-right\">\n {item.status === \"error\"\n ? \"--%\"\n : `${Math.round(progress)}%`}\n </div>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\n// Export the default file icon function for reuse\nexport { defaultGetFileIcon };\n","import React from \"react\";\nimport { cn } from \"../utils/utils\";\n\ninterface SpinnerProps {\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\n color?: \"primary\" | \"black\" | \"gray\" | string;\n}\n\nconst colorVars: Record<string, { c1: string; c2: string }> = {\n primary: {\n c1: \"var(--primary-500)\",\n c2: \"var(--primary-200)\",\n },\n black: {\n c1: \"rgba(0, 0, 0, 1)\",\n c2: \"rgba(0, 0, 0, 0.5)\",\n },\n gray: {\n c1: \"var(--gray-500)\",\n c2: \"var(--gray-300)\",\n },\n};\n\nconst Spinner = ({ size = \"md\", color = \"primary\" }: SpinnerProps) => {\n const sizeClass = cn({\n \"w-4 h-4\": size === \"xs\",\n \"w-6 h-6\": size === \"sm\",\n \"w-10 h-10\": size === \"md\",\n \"w-16 h-16\": size === \"lg\",\n });\n\n const getColorValues = (color: string) => {\n if (colorVars[color]) {\n return colorVars[color];\n }\n if (color.startsWith('#')) {\n return {\n c1: color,\n c2: `${color}80` \n };\n }\n return colorVars.primary;\n };\n\n const colorValues = getColorValues(color);\n\n return (\n <div className={cn(\"relative\", sizeClass)}>\n <div\n className=\"spinner\"\n style={{\n [\"--spinner-color-1\" as any]: colorValues.c1,\n [\"--spinner-color-2\" as any]: colorValues.c2,\n }}\n />\n </div>\n );\n};\n\nexport default Spinner;\n","\"use client\";\nimport React, { ReactNode, useState } from \"react\";\nimport Link from \"next/link\";\nimport { cn } from \"../utils/utils\";\nimport Divider from \"@/app/components/Divider\";\nimport {\n RiArrowDownSLine,\n RiArrowRightSLine,\n} from \"@remixicon/react\";\nimport { usePathname } from \"next/navigation\";\n\n// -------------------- Types --------------------\n\ninterface NavItem {\n label: string;\n href?: string;\n icon?: React.ReactElement;\n subItems?: NavItem[];\n}\n\ninterface SidebarProps {\n children: React.ReactNode;\n collapsed: boolean;\n setCollapsed: (collapsed: boolean) => void;\n scroll?: boolean;\n dense?: boolean;\n navItems?: {\n label: string;\n items: NavItem[];\n }[];\n}\n\ninterface SidebarHeaderProps {\n children: ReactNode;\n dense?: boolean;\n}\n\ninterface SidebarMenuProps {\n collapsed: boolean;\n navItems?: {\n label: string;\n items: NavItem[];\n }[];\n scroll?: boolean;\n dense?: boolean;\n}\n\ninterface FooterProps {\n children: React.ReactNode;\n collapsed: boolean;\n setCollapsed: (collapsed: boolean) => void;\n navItems?: {\n label: string;\n items: NavItem[];\n }[];\n dense?: boolean;\n}\n\n// -------------------- Sidebar --------------------\n\nconst Sidebar: React.FC<SidebarProps> & {\n Header: React.FC<SidebarHeaderProps>;\n Menu: React.FC<SidebarMenuProps>;\n Footer: React.FC<FooterProps>;\n} = ({ children, collapsed, setCollapsed, dense = false }) => {\n return (\n <div\n onMouseEnter={() => setCollapsed(true)}\n onMouseLeave={() => setCollapsed(false)}\n className={cn(\n \"border border-gray-200 shadow-sm relative flex flex-col min-h-screen transition-all duration-300 ease-in-out cursor-pointer\",\n !collapsed\n ? dense\n ? \"w-[76px] py-[19px] px-[15px]\"\n : \"w-[80px] py-[21px] px-[17px]\"\n : dense\n ? \"w-[304px] py-[20px] px-5\"\n : \"w-[308px] py-[22px] px-6\"\n )}\n >\n <div>{children}</div>\n </div>\n );\n};\n\n// -------------------- SidebarHeader --------------------\n\nconst SidebarHeader: React.FC<SidebarHeaderProps> = ({\n children,\n dense = false,\n}) => {\n return (\n <div className={cn(\"z-20\", dense ? \"mb-3\" : \"mb-4\")}>\n <div className=\"flex justify-between items-center\">\n <span className=\"whitespace-nowrap\">{children}</span>\n </div>\n </div>\n );\n};\n\n// -------------------- SidebarMenu --------------------\nconst SidebarMenu: React.FC<SidebarMenuProps> = ({\n collapsed,\n navItems,\n scroll = false,\n dense = false,\n}) => {\n const [openMenus, setOpenMenus] = useState<Record<string, boolean>>({});\n const currentPath = usePathname();\n\n const toggleMenu = (label: string) => {\n setOpenMenus((prev) => ({ ...prev, [label]: !prev[label] }));\n };\n\n // Close all submenus when sidebar collapses\n React.useEffect(() => {\n if (!collapsed) {\n setOpenMenus({});\n }\n }, [collapsed]);\n\n // Calculate menu height based on footer items\n const getMenuHeight = () => {\n const footerItemsLength =\n navItems?.reduce((acc, item) => acc + item.items.length, 0) || 0;\n if (footerItemsLength <= 1) {\n return \"max-h-[80vh]\";\n } else if (footerItemsLength === 2) {\n return \"max-h-[70vh]\";\n } else {\n return \"max-h-[60vh]\";\n }\n };\n\n const renderMenuItems = (items: NavItem[], level = 0) => {\n return (\n <ul className={level > 0 ? \"ml-5 border-l border-gray-200\" : \"\"}>\n {items?.map((item, index) => {\n const hasSubItems = item.subItems && item.subItems.length > 0;\n const isActive = item.href === currentPath;\n\n const isOpen = openMenus[item.label];\n const paddingLeft =\n level === 0\n ? dense\n ? \"10px\"\n : \"12px\"\n : `${level * 5 + (dense ? 10 : 12)}px`;\n\n return (\n <li key={index}>\n {hasSubItems ? (\n <Link\n href={item.href || \"#\"}\n className={cn(\n \"flex items-center justify-between rounded-md cursor-pointer transition-colors duration-300 font-semibold whitespace-nowrap overflow-hidden\",\n dense ? \"px-3 py-1.5 mb-1\" : \"px-3 py-2 mb-[6px]\",\n isActive ? \"bg-primary-600 text-white\" : \"text-gray-700\",\n isOpen ? \"bg-gray-100\" : \"\",\n \"hover:bg-gray-100\",\n level > 0 ? \"text-sm font-medium\" : \"\"\n )}\n style={{ paddingLeft }}\n onClick={(e) => {\n if (collapsed) {\n toggleMenu(item.label);\n }\n if (!item.href) e.preventDefault();\n }}\n >\n <div className=\"flex items-center gap-2\">\n {item.icon && level === 0 && (\n <span className={dense ? \"text-xs\" : \"text-text-sm\"}>\n {item.icon}\n </span>\n )}\n <span className={cn(!collapsed ? \"opacity-0\" : \"\")}>\n {item.label}\n </span>\n </div>\n {collapsed && hasSubItems && (\n <span>\n {isOpen ? (\n <RiArrowDownSLine\n size={dense ? 16 : 18}\n color=\"#475467\"\n />\n ) : (\n <RiArrowRightSLine\n size={dense ? 16 : 18}\n color=\"#475467\"\n />\n )}\n </span>\n )}\n </Link>\n ) : (\n <Link\n href={item.href || \"#\"}\n className={cn(\n \"flex items-center gap-2 rounded-md cursor-pointer transition-colors duration-300 whitespace-nowrap overflow-hidden\",\n \"hover:bg-gray-100\",\n dense ? \"px-3 py-1 mb-1\" : \"px-3 py-2 mb-[6px]\",\n isActive\n ? \"bg-primary-600 hover:bg-primary-700 text-white\"\n : \"text-gray-700\",\n level > 0 ? \"text-sm font-medium\" : \"font-semibold\"\n )}\n >\n {item.icon && level === 0 && (\n <span className={dense ? \"text-xs\" : \"text-text-sm\"}>\n {item.icon}\n </span>\n )}\n <span className={cn(!collapsed ? \"opacity-0\" : \"\")}>\n {item.label}\n </span>\n </Link>\n )}\n\n {hasSubItems && isOpen && (\n <div className={dense ? \"mt-0.5\" : \"mt-1\"}>\n {renderMenuItems(item.subItems!, level + 1)}\n </div>\n )}\n </li>\n );\n })}\n </ul>\n );\n };\n\n return (\n <nav\n className={cn(\n getMenuHeight(),\n \"\",\n scroll && collapsed ? \"overflow-y-auto customScroll\" : \"overflow-hidden\"\n )}\n >\n <ul\n className={cn(\n \"flex flex-col gap-2 items-stretch\",\n dense ? \"my-1.5\" : \"my-2\"\n )}\n >\n {navItems?.map((parentItem, parentIndex) => (\n <li\n key={parentIndex}\n className=\"flex flex-col gap-3 mb-1 whitespace-nowrap overflow-hidden\"\n >\n <p\n className={cn(\n \"text-gray-500 font-medium\",\n dense ? \"text-[12px]\" : \"text-[14px]\",\n !collapsed ? \"opacity-0\" : \"\"\n )}\n >\n {parentItem.label}\n </p>\n {renderMenuItems(parentItem.items)}\n </li>\n ))}\n </ul>\n </nav>\n );\n};\n\n// -------------------- Footer --------------------\n\nconst SidebarFooter: React.FC<FooterProps> = ({\n children,\n setCollapsed,\n collapsed,\n navItems,\n dense = false,\n}) => {\n const currentPath = usePathname();\n return (\n <div\n className={cn({\n \"absolute bottom-0 overflow-auto bg-white z-10\": true,\n \"max-h-[226px] py-2.5 w-[85%]\": dense,\n \"max-h-[230px] py-3 w-[85%]\": !dense,\n \"w-[53%]\": !collapsed && dense,\n \"w-[55%]\": !collapsed && !dense,\n })}\n onClick={() => setCollapsed(true)}\n >\n {collapsed && (\n <div className=\"shadow-md\">\n <Divider />\n </div>\n )}\n {navItems && navItems.length > 0 && (\n <nav className=\"flex-grow w-full\">\n <ul\n className={cn(\n \"flex flex-col gap-2 items-stretch\",\n dense ? \"my-1.5\" : \"my-2\"\n )}\n >\n {navItems?.map((parentItem, parentIndex) => (\n <li\n key={parentIndex}\n className=\"flex flex-col gap-3 mb-1 whitespace-nowrap overflow-hidden\"\n >\n <p\n className={cn({\n \"text-gray-500\": true,\n \"text-[12px]\": dense,\n \"text-[14px]\": !dense,\n \"w-[35px] text-ellipsis text-white whitespace-nowrap overflow-hidden\":\n !collapsed && dense,\n \"w-[37px] text-ellipsis text-white whitespace-nowrap overflow-hidden\":\n !collapsed && !dense,\n })}\n >\n {parentItem.label}\n </p>\n {\n <ul>\n {parentItem?.items?.map((item, index) => (\n <li key={index}>\n <Link\n className={cn({\n \"hover:bg-gray-100 flex items-center cursor-pointer rounded-md transition-colors duration-300 font-semibold whitespace-nowrap overflow-hidden\":\n true,\n \"px-2 py-1.5 mb-1\": dense,\n \"px-3 py-2 mb-[6px]\": !dense,\n \"text-white bg-primary-600\":\n currentPath === item?.href,\n \"text-gray-700\": currentPath !== item?.href,\n \"hover:bg-primary-600\": currentPath === item?.href,\n })}\n href={item?.href || \"#\"}\n passHref\n >\n <div\n className={`flex items-center gap-2 whitespace-nowrap`}\n >\n <span\n className={dense ? \"text-xs\" : \"text-text-sm\"}\n >\n {\" \"}\n {item.icon}\n </span>\n <span className={cn(!collapsed ? \"opacity-0\" : \"\")}>\n {item.label}\n </span>\n </div>\n </Link>\n </li>\n ))}\n </ul>\n }\n </li>\n ))}\n </ul>\n </nav>\n )}\n {children}\n </div>\n );\n};\n\nSidebar.Header = SidebarHeader;\nSidebar.Menu = SidebarMenu;\nSidebar.Footer = SidebarFooter;\n\nexport default Sidebar;\n","import React from \"react\";\nimport { cn } from \"../utils/utils\";\n\ninterface SkeletonProps {\n width?: string | number;\n height?: string | number;\n circle?: boolean;\n animation?: \"wave\" | \"pulse\" | \"shimmer\";\n}\n\nconst Skeleton: React.FC<SkeletonProps> = ({\n width = \"100%\",\n height = \"100%\",\n circle = false,\n animation = \"shimmer\",\n}) => {\n const style: React.CSSProperties = {\n width: typeof width === \"number\" ? `${width}px` : width,\n height: typeof height === \"number\" ? `${height}px` : height,\n borderRadius: circle ? \"50%\" : undefined,\n display: \"block\",\n };\n\n return (\n <span\n className={cn(\n \"skeleton rounded-lg\",\n circle ? \"circle\" : \"\",\n animation === \"shimmer\" && \"skeleton-shimmer\",\n animation === \"wave\" && \"skeleton-wave\",\n animation === \"pulse\" && \"skeleton-pulse\"\n )}\n style={style}\n ></span>\n );\n};\n\nexport default Skeleton;\n\n// import React from \"react\";\n\n// interface SkeletonProps {\n// width?: string | number;\n// height?: string | number;\n// circle?: boolean;\n// }\n\n// const Skeleton: React.FC<SkeletonProps> = ({\n// width = '100%',\n// height = '100%',\n// circle = false,\n// }) => {\n// const style: React.CSSProperties = {\n// width: '100%',\n// height: '100%',\n// borderRadius: circle ? '50%' : '8px',\n// display: 'block',\n// };\n\n// return (\n// <span\n// className={`skeleton rounded-lg ${circle ? 'circle' : ''}`}\n// style={style}\n// ></span>\n// );\n// };\n\n// export default Skeleton;\n","import React, { forwardRef, type InputHTMLAttributes } from \"react\";\nimport { cn } from \"../utils/utils\";\n\ninterface SliderProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n value: number;\n min?: number;\n max?: number;\n size?: \"sm\" | \"lg\";\n}\n\nconst Slider = forwardRef<HTMLInputElement, SliderProps>(\n ({ value, min = 0, max = 100, size = \"sm\", ...props }, ref) => {\n const progress = ((value - min) / (max - min)) * 100;\n return (\n <>\n <input\n ref={ref}\n type=\"range\"\n min={min}\n max={max}\n value={value}\n {...props}\n className={cn(\n \"slider w-full rounded-full appearance-none bg-gray-300 h-4 cursor-pointer focus:outline-none\",\n size === \"sm\" ? \"h-1.5\" : \"h-4\"\n )}\n style={{\n background: `linear-gradient(to right, var(--primary-300) ${progress}%, var(--gray-300) ${progress}%)`,\n }}\n />\n </>\n );\n }\n);\n\nSlider.displayName = \"Slider\";\n\nexport default Slider;\n","import React, { forwardRef } from 'react';\n\ninterface SplitButtonProps {\n children: React.ReactNode;\n className?: string;\n size?: 'sm' | 'md' | 'lg';\n appearance?: 'primary' | 'secondary' | 'warning' | 'danger';\n compact?: boolean;\n}\n\nconst SplitButton = forwardRef<HTMLDivElement, SplitButtonProps>(\n ({ children, className = '', size = 'md', appearance = 'primary', compact = false, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={`inline-flex ${compact ? 'gap-0' : ''} ${className}`}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nSplitButton.displayName = 'SplitButton';\n\nexport default SplitButton;","\"use client\";\nimport React, { useRef } from \"react\";\nimport { RiCheckLine } from \"@remixicon/react\";\nimport { cn } from \"../utils/utils\";\n\ninterface StepConfig {\n name: string;\n helperName?: string;\n Component: React.ComponentType<any>;\n}\n\ninterface CheckoutStepperProps {\n stepsConfig: StepConfig[];\n currentStep: number;\n setCurrentStep: (step: number) => void;\n isComplete: boolean;\n setIsComplete: (complete: boolean) => void;\n position?: string;\n}\n\nconst Stepper = ({\n stepsConfig,\n currentStep,\n setCurrentStep,\n isComplete,\n setIsComplete,\n position = \"horizontal\",\n}: CheckoutStepperProps) => {\n const stepRef = useRef<(HTMLDivElement | null)[]>([]);\n\n if (!stepsConfig.length) {\n return null;\n }\n\n const ActiveComponent = stepsConfig[currentStep - 1]?.Component;\n\n return (\n <div\n role=\"region\"\n aria-label=\"Step Progress\"\n className={cn(position !== \"horizontal\" && \"flex\")}\n >\n <div\n className={cn(\n \"relative\",\n position === \"horizontal\"\n ? \"flex justify-center items-start\"\n : \"flex flex-col\"\n )}\n role=\"list\"\n aria-label={`Progress: ${currentStep} of ${stepsConfig.length} steps`}\n >\n {stepsConfig?.map((step, index) => (\n <div\n key={index}\n ref={(el: any) => (stepRef.current[index] = el)}\n className={cn(\n position === \"horizontal\"\n ? \"flex gap-4 flex-col\"\n : \"flex gap-6 justify-start\",\n index === stepsConfig.length - 1 ? \"w-auto\" : \"w-full\",\n currentStep > index + 1 || isComplete ? \"complete\" : \"\",\n currentStep === index + 1 ? \"\" : \"\"\n )}\n role=\"listitem\"\n aria-current={currentStep === index + 1 ? \"step\" : undefined}\n aria-label={`${step.name}${\n step.helperName ? `, ${step.helperName}` : \"\"\n }, ${\n currentStep > index + 1 || isComplete\n ? \"completed\"\n : currentStep === index + 1\n ? \"current step\"\n : \"pending\"\n }`}\n >\n <div\n className={cn(\n \"\",\n position === \"horizontal\"\n ? \"flex items-center\"\n : \"flex flex-col\"\n )}\n >\n <div\n className={`w-[20px] h-[20px] rounded-full bg-gray-100 flex justify-center items-center ${\n currentStep === index + 1\n ? \"border border-primary-600\"\n : \"border border-gray-200\"\n } ${\n currentStep > index + 1 || isComplete\n ? \"bg-primary-600 border-none\"\n : \"\"\n }`}\n role=\"status\"\n aria-label={`Step ${index + 1} ${\n currentStep > index + 1 || isComplete\n ? \"completed\"\n : currentStep === index + 1\n ? \"current\"\n : \"pending\"\n }`}\n >\n {currentStep === index + 1 && !isComplete && (\n <span\n aria-hidden=\"true\"\n className=\"w-[10px] h-[10px] rounded-full bg-primary-600\"\n ></span>\n )}\n {(currentStep > index + 1 || isComplete) && (\n <span aria-hidden=\"true\">\n <RiCheckLine size={12} color=\"#fff\" />\n </span>\n )}\n </div>\n {index !== stepsConfig.length - 1 && (\n <div\n className={cn(\n \"mx-auto rounded-lg bg-gray-200\",\n position === \"horizontal\"\n ? \"w-[80%] h-1\"\n : \"h-[100px] w-1 my-2\"\n )}\n aria-hidden=\"true\"\n >\n <p\n className={cn(\n \"h-full rounded-lg\",\n currentStep > index + 1 ? \"bg-primary-600\" : \"\"\n )}\n ></p>\n </div>\n )}\n </div>\n\n {/* step name */}\n <div\n aria-hidden={currentStep !== index + 1}\n className={cn(\n \"whitespace-nowrap\",\n position === \"vertical\" || step?.helperName ? \"-mt-1\" : \"\"\n )}\n >\n <span\n aria-label=\"Helper text\"\n className=\"text-gray-400 text-text-xs\"\n >\n {step?.helperName}\n </span>\n <p>{step?.name}</p>\n </div>\n </div>\n ))}\n </div>\n\n {ActiveComponent && (\n <div\n role=\"tabpanel\"\n aria-label={`Current step: ${stepsConfig[currentStep - 1]?.name}`}\n tabIndex={0}\n >\n <ActiveComponent />\n </div>\n )}\n </div>\n );\n};\n\nexport default Stepper;\n","import React, {\n HTMLAttributes,\n ReactNode,\n TableHTMLAttributes,\n TdHTMLAttributes,\n ThHTMLAttributes,\n} from \"react\";\nimport { cn } from \"../utils/utils\";\n\ninterface TableProps extends TableHTMLAttributes<HTMLTableElement> {\n children?: ReactNode;\n dense?: boolean;\n}\n\ninterface TableHeadProps extends HTMLAttributes<HTMLTableSectionElement> {\n children?: ReactNode;\n}\n\ninterface TableRowProps extends HTMLAttributes<HTMLTableRowElement> {\n children?: ReactNode;\n indent?: boolean;\n}\n\ninterface TableHeadCellProps extends ThHTMLAttributes<HTMLTableCellElement> {\n children?: ReactNode;\n icon?: JSX.Element;\n sticky?: boolean;\n left?: string;\n right?: string;\n stickyIcon?: JSX.Element;\n shadow?: boolean;\n shadowRight?: boolean;\n}\n\ninterface TableCellProps extends TdHTMLAttributes<HTMLTableCellElement> {\n children?: ReactNode;\n icon?: JSX.Element;\n sticky?: boolean;\n left?: string;\n right?: string;\n shadow?: boolean;\n shadowRight?: boolean;\n}\n\nexport const Table = ({ children, className, dense, ...props }: TableProps) => {\n return (\n <table\n {...props}\n className={cn(\n dense && \"group/dense\",\n \"bg-white text-left w-full border\",\n className\n )}\n >\n {children}\n </table>\n );\n};\n\nexport const TableHead = ({\n children,\n className,\n ...props\n}: TableHeadProps) => {\n return (\n <thead\n {...props}\n className={cn(\"bg-gray-50 border border-gray-200\", className)}\n >\n {children}\n </thead>\n );\n};\n\nexport const TableBody = ({\n children,\n className,\n ...props\n}: TableHeadProps) => {\n return (\n <tbody {...props} className={cn(className)}>\n {children}\n </tbody>\n );\n};\n\nexport const TableRow = ({\n children,\n className,\n indent,\n ...props\n}: TableRowProps) => {\n return (\n <tr\n {...props}\n className={cn(\n \"border border-gray-200 hover:bg-gray-50\",\n indent && \"group/indent border-none\",\n className\n )}\n >\n {children}\n </tr>\n );\n};\n\nexport const TableHeadCell = ({\n children,\n className,\n icon,\n sticky,\n shadow,\n left,\n shadowRight,\n right,\n ...props\n}: TableHeadCellProps) => {\n return (\n <th\n {...props}\n className={cn(\n \"px-6 py-3 text-left group-has-[th]/dense:py-2\",\n sticky && `sticky bg-gray-50`,\n sticky && shadow && \"shadow-table\",\n sticky && shadowRight && \"shadow-tableRight\",\n left,\n right,\n className\n )}\n style={{\n left: left,\n right: right,\n }}\n >\n <div className=\"flex items-center gap-1\">\n <span className=\"font-medium text-xs\">{children}</span>\n {icon && (\n <span\n className={\n \"hover:bg-gray-200 w-5 h-5 flex items-center justify-center p-1 rounded focus:bg-gray-300 active:bg-gray-300\"\n }\n >\n {icon}\n </span>\n )}\n </div>\n </th>\n );\n};\n\nexport const TableDataCell = ({\n children,\n className,\n icon,\n sticky,\n shadow,\n shadowRight,\n left,\n right,\n ...props\n}: TableCellProps) => {\n return (\n <td\n {...props}\n className={cn(\n \"px-6 py-4 text-sm font-medium group-has-[td]/dense:py-2 first:group-has-[td]/indent:pl-[60px]\",\n sticky && `sticky bg-white`,\n sticky && shadow && \"shadow-table\",\n sticky && shadowRight && \"shadow-tableRight\",\n left,\n right,\n className\n )}\n style={{\n left: left,\n right: right,\n }}\n >\n <span className=\"font-medium text-sm\">{children}</span>\n {icon && (\n <span\n className={\n \"hover:bg-gray-200 w-5 h-5 flex items-center justify-center p-1 rounded focus:bg-gray-300 active:bg-gray-300\"\n }\n >\n {icon}\n </span>\n )}\n </td>\n );\n};\n\nexport default Table;\n","import React from \"react\";\nimport { cn } from \"../utils/utils\";\n\ninterface TabItem {\n label: string;\n value: string;\n}\n\ninterface TabsContainerProps {\n value: string;\n children: React.ReactNode;\n className?: string;\n position?: \"horizontal\" | \"vertical\";\n}\n\ninterface TabListProps extends Partial<TabItem> {\n onChange: (value: string) => void;\n ariaLabel?: string;\n children: React.ReactNode;\n box?: boolean;\n pill?: boolean;\n className?: string;\n position?: \"horizontal\" | \"vertical\";\n}\n\ninterface TabProps extends TabItem {\n onChange: (value: string) => void;\n box?: boolean;\n pill?: boolean;\n content?: React.ReactNode;\n selectedTabValue: string;\n icon?: JSX.Element;\n className?: string;\n tabIndex?: number;\n onKeyDown?: (e: React.KeyboardEvent<HTMLButtonElement>) => void;\n position?: \"horizontal\" | \"vertical\";\n ref?: React.Ref<HTMLButtonElement>;\n}\n\ninterface TabPanelProps {\n value: string;\n currentValue: string;\n children: React.ReactNode;\n className?: string;\n}\n\nexport const TabsContainer: React.FC<TabsContainerProps> = ({\n children,\n className,\n position = \"horizontal\",\n}) => {\n return (\n <div className={cn(position === \"vertical\" ? \"flex\" : \"block\", className)}>\n {children}\n </div>\n );\n};\n\nexport const TabList: React.FC<TabListProps> = ({\n onChange,\n ariaLabel,\n children,\n box = false,\n pill = false,\n className,\n position = \"horizontal\",\n}) => {\n const [focusIndex, setFocusIndex] = React.useState(0);\n const tabRefs = React.useRef<(HTMLButtonElement | null)[]>([]);\n\n const handleKeyDown = (e: React.KeyboardEvent, index: number) => {\n const tabCount = React.Children.count(children);\n\n switch (e.key) {\n case \"ArrowRight\":\n if (position === \"horizontal\") {\n e.preventDefault();\n const nextIndex = (index + 1) % tabCount;\n setFocusIndex(nextIndex);\n tabRefs.current[nextIndex]?.focus();\n }\n break;\n case \"ArrowLeft\":\n if (position === \"horizontal\") {\n e.preventDefault();\n const prevIndex = (index - 1 + tabCount) % tabCount;\n setFocusIndex(prevIndex);\n tabRefs.current[prevIndex]?.focus();\n }\n break;\n case \"ArrowDown\":\n if (position === \"vertical\") {\n e.preventDefault();\n const nextIndex = (index + 1) % tabCount;\n setFocusIndex(nextIndex);\n tabRefs.current[nextIndex]?.focus();\n }\n break;\n case \"ArrowUp\":\n if (position === \"vertical\") {\n e.preventDefault();\n const prevIndex = (index - 1 + tabCount) % tabCount;\n setFocusIndex(prevIndex);\n tabRefs.current[prevIndex]?.focus();\n }\n break;\n case \"Home\":\n e.preventDefault();\n setFocusIndex(0);\n tabRefs.current[0]?.focus();\n break;\n case \"End\":\n e.preventDefault();\n const lastIndex = tabCount - 1;\n setFocusIndex(lastIndex);\n tabRefs.current[lastIndex]?.focus();\n break;\n }\n };\n\n return (\n <div\n className={cn(\n position === \"horizontal\"\n ? \"flex items-center\"\n : \"flex flex-col items-stretch\",\n box\n ? \"bg-gray-50 rounded-lg border border-gray-200\"\n : pill\n ? position === \"horizontal\"\n ? \"bg-transparent rounded-lg\"\n : \"bg-gray-100 rounded-full p-1\"\n : position === \"horizontal\"\n ? \"border-b border-gray-200\"\n : \"border-r border-gray-200\",\n className\n )}\n role=\"tablist\"\n aria-label={ariaLabel}\n aria-orientation={position}\n >\n {React.Children.map(children, (child, index) => {\n if (React.isValidElement(child)) {\n const childProps = {\n onChange,\n box,\n pill, // Add this line to pass pill prop to Tab\n position,\n onKeyDown: (e: React.KeyboardEvent) => handleKeyDown(e, index),\n tabIndex: index === focusIndex ? 0 : -1,\n };\n\n return React.cloneElement(child, {\n ...childProps,\n ref: (el: HTMLButtonElement | null) => {\n tabRefs.current[index] = el;\n const originalRef = (child as any).ref;\n if (originalRef) {\n if (typeof originalRef === \"function\") {\n originalRef(el);\n } else {\n originalRef.current = el;\n }\n }\n },\n } as any);\n }\n return null;\n })}\n </div>\n );\n};\n\nexport const Tab = React.forwardRef<HTMLButtonElement, TabProps>(\n (\n {\n label,\n value,\n onChange,\n icon,\n content,\n box = false,\n pill = false,\n selectedTabValue,\n className,\n onKeyDown,\n tabIndex,\n position = \"horizontal\",\n },\n ref\n ) => {\n const isSelected = value === selectedTabValue;\n\n return (\n <button\n ref={ref}\n role=\"tab\"\n aria-selected={isSelected}\n aria-controls={`panel-${value}`}\n id={`tab-${value}`}\n tabIndex={tabIndex}\n onKeyDown={onKeyDown}\n className={cn(\n \"flex items-center gap-2 px-4 py-3 text-text-sm font-medium cursor-pointer\",\n // Default variant (no box, no pill)\n !box &&\n !pill && [\n isSelected && position === \"horizontal\"\n ? \"text-primary-600 border-b-2 border-primary-600\"\n : isSelected && position === \"vertical\"\n ? \"text-primary-600 border-r-2 border-primary-600\"\n : \"border-transparent text-gray-700\",\n ],\n // Box variant\n box && [\n position === \"horizontal\"\n ? \"m-1 rounded-lg hover:rounded-lg\"\n : \"mx-1 my-0.5 rounded-lg hover:rounded-lg\",\n isSelected ? \"bg-white hover:bg-white shadow-md\" : \"\",\n ],\n // Pill variant - Horizontal\n pill &&\n position === \"horizontal\" && [\n \"py-1 px-3 text-sm first:rounded-l-2xl last:rounded-r-2xl border transition-all duration-200\",\n isSelected\n ? \"bg-primary-600 border-primary-600 text-white shadow-sm hover:bg-primary-700\"\n : \"bg-white border-gray-300 text-gray-700 hover:bg-gray-100\",\n ],\n // Pill variant - Vertical\n pill &&\n position === \"vertical\" && [\n \"py-2 px-4 rounded-full border transition-all duration-200 my-1\",\n isSelected\n ? \"bg-primary-600 border-primary-600 text-white shadow-sm hover:bg-primary-700\"\n : \"bg-gray-100 border-gray-300 text-gray-700 hover:bg-gray-200 hover:border-gray-400\",\n ],\n // Common hover styles for non-pill variants\n !pill && [\n position === \"horizontal\"\n ? \"hover:bg-gray-100 hover:rounded-t transition-all ease-linear duration-200 delay-75\"\n : \"hover:bg-gray-100 hover:rounded-l transition-all ease-linear duration-200 delay-75\",\n ],\n // Border for vertical non-box, non-pill\n position === \"vertical\" && !box && !pill && !isSelected\n ? \"border-r-2\"\n : \"\",\n className\n )}\n onClick={() => onChange(value)}\n >\n {icon && <span aria-hidden=\"true\">{icon}</span>}\n {label}\n {content && <span aria-hidden=\"true\">{content}</span>}\n </button>\n );\n }\n);\n\nexport const TabPanel: React.FC<TabPanelProps> = ({\n value,\n currentValue,\n children,\n className,\n}) => {\n return value === currentValue ? (\n <div\n role=\"tabpanel\"\n id={`panel-${value}`}\n aria-labelledby={`tab-${value}`}\n tabIndex={0}\n className={className}\n >\n {children}\n </div>\n ) : null;\n};\n\nexport default TabsContainer;\n\nTab.displayName = \"Tab\";\n","import React, {\n forwardRef,\n type ReactNode,\n type TextareaHTMLAttributes,\n} from \"react\";\nimport { cn } from \"../utils/utils\";\n\n// interface TextareaProps\n// extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, \"size\"> {\n// size?: \"sm\" | \"lg\";\n// disabled?: boolean;\n// rows?: number;\n// cols?: number;\n// children?: ReactNode;\n// }\n\n// const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n// ({ size, className, rows, cols, disabled, children, ...props }, ref) => {\n// return (\n// <textarea\n// {...props}\n// ref={ref}\n// disabled={disabled}\n// rows={rows}\n// cols={cols}\n// className={cn(\n// \"group flex items-center gap-2 border border-gray-200 rounded-lg bg-gray-50 shadow-xs hover:bg-gray-50 hover:border-gray-300 text-sm focus-within:border-gray-800 focus-within:bg-gray-25 focus-within:hover:bg-gray-50 focus-within:hover:border-gray-800 outline-none disabled:bg-gray-300 disabled:select-none disabled:pointer-events-none disabled:opacity-30 placeholder:text-gray-500 hover:placeholder:text-gray-500 shadow-[0px_1px_2px_0px_#1018280D]\",\n// size === \"sm\" ? \"py-2.5 px-3.5\" : \"p-2.5\",\n// className,\n// size\n// )}\n// >\n// {children}\n// </textarea>\n// );\n// }\n// );\n\ninterface TextareaProps\n extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, \"size\"> {\n size?: \"sm\" | \"lg\";\n disabled?: boolean;\n rows?: number;\n cols?: number;\n error?: boolean\n children?: ReactNode;\n}\n\nconst Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n (\n {\n size,\n className,\n rows,\n cols,\n disabled, error,\n children,\n id,\n ...props\n },\n ref\n ) => {\n return (\n <textarea\n {...props}\n ref={ref}\n disabled={disabled}\n rows={rows}\n cols={cols}\n className={cn(\n \"group flex items-center gap-2 border border-gray-200 rounded-lg bg-gray-50 shadow-xs hover:bg-gray-50 hover:border-gray-300 text-sm focus-within:border-gray-800 focus-within:bg-gray-25 focus-within:hover:bg-gray-50 focus-within:hover:border-gray-800 outline-none disabled:bg-gray-300 disabled:select-none disabled:pointer-events-none disabled:opacity-30 w-full placeholder:text-gray-500 hover:placeholder:text-gray-500 shadow-[0px_1px_2px_0px_#1018280D]\",\n size === \"sm\" ? \"py-2.5 px-3.5\" : \"p-2.5\", error && \"border-error-500 hover:border-error-600 focus-within:hover:border-error-500 focus-within:border-error-500\",\n className,\n size\n )}\n >\n {children}\n </textarea>\n );\n }\n);\n\nTextarea.displayName = \"Textarea\";\n\nexport default Textarea;\n","import { RiCloseCircleLine } from \"@remixicon/react\";\nimport React, { InputHTMLAttributes } from \"react\";\nimport Input from \"./Input\";\nimport Chip from \"./Chip\";\n\ninterface TextInputWithLabelProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n intent?:\n | \"error\"\n | \"default\"\n | \"success\"\n | \"warning\"\n | \"blue\"\n | \"primary\"\n | \"bluegray\"\n | \"bluelight\"\n | \"violet\"\n | \"indigo\"\n | \"purple\"\n | \"pink\"\n | \"rose\"\n | \"orange\";\n placeholder?: string;\n size?: \"sm\" | \"lg\";\n type?:\n | \"number\"\n | \"search\"\n | \"text\"\n | \"url\"\n | \"email\"\n | \"password\"\n | \"tel\"\n | \"time\";\n tags: string[];\n setTags: (tags: string[]) => void;\n}\n\nconst TextInputWithLabel: React.FC<TextInputWithLabelProps> = ({\n intent = \"primary\",\n placeholder = \"Enter tags\",\n type = \"text\",\n size,\n tags,\n setTags,\n ...props\n}) => {\n const handleAddTags = (inputValue: string) => {\n const values = inputValue\n .split(\",\")\n .map((v) => v.trim())\n .filter((v) => v && !tags.includes(v));\n if (values.length === 0) return;\n setTags([...tags, ...values]);\n };\n\n const handleRemoveTag = (tag: string) => {\n setTags(tags.filter((t) => t !== tag));\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n const target = e.target as HTMLInputElement;\n handleAddTags(target.value);\n target.value = \"\";\n }\n };\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n const pasteData = e.clipboardData.getData(\"text\");\n handleAddTags(pasteData);\n };\n\n return (\n <div>\n <Input\n type={type}\n size={size}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n placeholder={placeholder}\n className={\"w-full\"}\n {...props}\n />\n <div className=\"flex flex-wrap items-center gap-2 mt-2 transition-all duration-300\">\n {tags?.map((tag, idx) => (\n <Chip\n size=\"md\"\n intent={intent}\n key={`${tag}-${idx}`}\n endIcon={\n <RiCloseCircleLine\n size={14}\n className=\"cursor-pointer hover:text-red-500\"\n onClick={() => handleRemoveTag(tag)}\n />\n }\n >\n {tag}\n </Chip>\n ))}\n </div>\n </div>\n );\n};\n\nexport default TextInputWithLabel;\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport React, { type InputHTMLAttributes, forwardRef } from \"react\";\nimport { cn } from \"../utils/utils\";\n\ninterface ToggleProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\">,\n VariantProps<typeof toggleVariants> {\n size?: \"sm\" | \"md\" | \"lg\";\n disabled?: boolean;\n children?: never;\n}\n\nconst toggleVariants = cva(\"\", {\n variants: {\n size: {\n sm: \"w-5 h-3 after:w-2 after:h-2\",\n md: \"w-9 h-5 after:w-4 after:h-4\",\n lg: \"w-11 h-6 after:w-5 after:h-5\",\n },\n intent: {\n primary: \"peer-checked:bg-primary-600\",\n success: \"peer-checked:bg-success-500\",\n },\n },\n defaultVariants: {\n size: \"md\",\n intent: \"primary\",\n },\n});\n\nconst Toggle = forwardRef<HTMLInputElement, ToggleProps>(\n ({ size, className, intent, disabled, children, id, ...props }, ref) => {\n return (\n <label\n className={cn(\n \"inline-flex items-center cursor-pointer\",\n disabled && \"opacity-30 pointer-events-none\"\n )}\n htmlFor={id}\n >\n <input\n type=\"checkbox\"\n disabled={disabled}\n ref={ref}\n id={id}\n role=\"switch\"\n aria-checked={props?.checked}\n {...props}\n className=\"sr-only peer\"\n />\n <span\n className={cn(\n \"relative w-11 h-7 bg-gray-300 rounded-full peer peer-focus:ring-2 peer-focus:ring-primary-600 peer-focus:ring-offset-2 peer-checked:after:translate-x-full rtl:peer-checked:after:-translate-x-full after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-white after:rounded-full after:h-5 after:w-5 after:transition-all\",\n toggleVariants({\n intent,\n size,\n }),\n className\n )}\n aria-hidden=\"true\"\n >\n {children}\n </span>\n </label>\n );\n }\n);\n\nToggle.displayName = \"Toggle\";\n\nexport default Toggle;\n","// import { VariantProps, cva } from \"class-variance-authority\";\n// import { HTMLAttributes, ReactNode } from \"react\";\n// import { cn } from \"../utils/utils\";\n// import React from \"react\";\n\n// const tooltipVariants = cva(\n// \"bg-white shadow-lg rounded-lg absolute hidden group-hover:block p-3 z-10 max-w-[328px] w-max whitespace-normal opacity-0 group-hover:opacity-100 transform transition-all duration-1000 ease-in-out group-hover:delay-[2000ms]\",\n// {\n// variants: {\n// position: {\n// top: \"bottom-[calc(100%+0px)] group-hover:translate-y-0 delay-1000 translate-y-[-10px]\",\n// right:\n// \"top-1/2 -translate-y-1/2 left-[calc(100%+0px)] group-hover:translate-x-0 translate-x-[-10px]\",\n// bottom:\n// \"top-[calc(100%+0px)] group-hover:translate-y-0 translate-y-[10px]\",\n// left: \"top-1/2 -translate-y-1/2 right-[calc(100%+0px)] group-hover:translate-x-0 translate-x-[10px]\",\n// },\n// },\n// }\n// );\n\n// interface TooltipProps\n// extends Omit<HTMLAttributes<HTMLDivElement>, \"content\">,\n// VariantProps<typeof tooltipVariants> {\n// children: ReactNode;\n// position: \"top\" | \"right\" | \"bottom\" | \"left\";\n// content: JSX.Element | string;\n// }\n\n// const Tooltip: React.FC<TooltipProps> = ({\n// position,\n// content,\n// children,\n// className,\n// ...props\n// }) => {\n// return (\n// <div {...props} className=\"relative cursor-pointer text-sm group w-fit\">\n// <div>{children}</div>\n// <span className={cn(tooltipVariants({ position }), className)}>\n// {content}\n// </span>\n// </div>\n// );\n// };\n\n// export default Tooltip;\n\n\nimport { VariantProps, cva } from \"class-variance-authority\";\nimport { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"../utils/utils\";\nimport React from \"react\";\n\nconst tooltipVariants = cva(\n \"bg-white shadow-lg rounded-lg absolute hidden group-hover:block p-3 z-10 max-w-[328px] w-max whitespace-normal opacity-0 group-hover:opacity-100 transform transition-all duration-1000 ease-in-out group-hover:delay-[2000ms]\",\n {\n variants: {\n position: {\n top: \"bottom-[calc(100%+8px)] group-hover:translate-y-0 delay-1000 translate-y-[-10px]\",\n right:\n \"top-1/2 -translate-y-1/2 left-[calc(100%+8px)] group-hover:translate-x-0 translate-x-[-10px]\",\n bottom:\n \"top-[calc(100%+8px)] group-hover:translate-y-0 translate-y-[10px]\",\n left: \"top-1/2 -translate-y-1/2 right-[calc(100%+8px)] group-hover:translate-x-0 translate-x-[10px]\",\n },\n },\n }\n);\n\nconst arrowVariants = cva(\n \"absolute w-0 h-0 border-transparent border-solid\",\n {\n variants: {\n position: {\n top: \"top-full left-5 -translate-x-1/2 border-t-white border-t-[6px] border-x-[6px] border-x-transparent border-b-0\",\n right: \"right-full top-1/2 -translate-y-1/2 border-r-white border-r-[6px] border-y-[6px] border-y-transparent border-l-0\",\n bottom: \"bottom-full left-4 -translate-x-1/2 border-b-white border-b-[6px] border-x-[6px] border-x-transparent border-t-0\",\n left: \"left-full top-1/2 -translate-y-1/2 border-l-white border-l-[6px] border-y-[6px] border-y-transparent border-r-0\",\n },\n },\n }\n);\n\ninterface TooltipProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"content\">,\n VariantProps<typeof tooltipVariants> {\n children: ReactNode;\n position: \"top\" | \"right\" | \"bottom\" | \"left\";\n content: JSX.Element | string;\n}\n\nconst Tooltip: React.FC<TooltipProps> = ({\n position,\n content,\n children,\n className,\n ...props\n}) => {\n return (\n <div {...props} className=\"relative cursor-pointer text-sm group w-fit\">\n <div>{children}</div>\n <div className={cn(tooltipVariants({ position }), className)}>\n {content}\n <div className={cn(arrowVariants({ position }))} />\n </div>\n </div>\n );\n};\n\nexport default Tooltip;","import React, { useState } from \"react\";\nimport { cn } from \"../utils/utils\";\nimport { RiArrowDownSFill, RiArrowRightSFill } from \"@remixicon/react\";\n\n// -------------------- Types --------------------\n\ninterface TreeViewProps {\n children: React.ReactNode;\n \"aria-label\": string;\n flat?: boolean;\n className?: string;\n /** Optional array of IDs to expand initially */\n defaultExpandedIds?: string[];\n /** Controlled expansion (useful if parent manages state externally) */\n expandedIds?: string[];\n /** Callback for when expanded nodes change */\n onExpandedChange?: (expanded: string[]) => void;\n /** Allow multiple nodes to be expanded simultaneously */\n allowMultiple?: boolean;\n /** Automatically expand all top-level items by default */\n expandTopLevelByDefault?: boolean;\n}\n\ninterface TreeViewItemProps {\n id: string;\n children: React.ReactNode;\n current?: boolean;\n className?: string;\n onSelect?: (id: string) => void;\n level?: number;\n expanded?: boolean;\n onToggle?: (id: string) => void;\n selected?: boolean;\n flat?: boolean;\n}\n\ninterface TreeViewSubTreeProps {\n children: React.ReactNode;\n state?: \"loading\";\n count?: number;\n className?: string;\n expanded?: boolean;\n flat?: boolean;\n}\n\n// -------------------- Main TreeView --------------------\n\nexport const TreeView: React.FC<TreeViewProps> & {\n Item: React.FC<TreeViewItemProps>;\n SubTree: typeof TreeViewSubTree;\n LeadingVisual: typeof TreeViewLeadingVisual;\n TrailingVisual: typeof TreeViewTrailingVisual;\n} = ({\n children,\n \"aria-label\": ariaLabel,\n flat = false,\n className,\n defaultExpandedIds = [],\n expandedIds,\n onExpandedChange,\n allowMultiple = true,\n expandTopLevelByDefault = false,\n}) => {\n // Extract all top-level IDs if needed for default expansion\n const topLevelIds = React.Children.toArray(children)\n .map((child) =>\n React.isValidElement<TreeViewItemProps>(child) ? child.props.id : null\n )\n .filter(Boolean) as string[];\n\n const [internalExpanded, setInternalExpanded] = useState<Set<string>>(\n () =>\n new Set(\n defaultExpandedIds.length\n ? defaultExpandedIds\n : expandTopLevelByDefault\n ? topLevelIds\n : []\n )\n );\n\n const expandedNodes = expandedIds ? new Set(expandedIds) : internalExpanded;\n const [selectedId, setSelectedId] = useState<string | null>(null);\n\n // Handle node toggle\n const toggleNode = (id: string) => {\n const updateSet = (set: Set<string>): Set<string> => {\n const next = new Set(set);\n if (allowMultiple) {\n next.has(id) ? next.delete(id) : next.add(id);\n } else {\n next.clear();\n next.add(id);\n }\n return next;\n };\n\n if (expandedIds && onExpandedChange) {\n // Controlled mode\n const newExpanded = updateSet(expandedNodes);\n onExpandedChange(Array.from(newExpanded));\n } else {\n // Uncontrolled mode\n setInternalExpanded((prev) => updateSet(prev));\n }\n };\n\n const handleSelect = (id: string) => setSelectedId(id);\n\n // Recursively enhance children\n const enhanceChildren = (\n nodes: React.ReactNode,\n level = 0\n ): React.ReactNode =>\n React.Children.map(nodes, (child) => {\n if (React.isValidElement<TreeViewItemProps>(child)) {\n return React.cloneElement(child, {\n level,\n expanded: expandedNodes.has(child.props.id),\n onToggle: toggleNode,\n onSelect: handleSelect,\n selected: selectedId === child.props.id,\n flat,\n children: enhanceChildren(child.props.children, level + 1),\n });\n }\n return child;\n });\n\n return (\n <ul\n role=\"tree\"\n aria-label={ariaLabel}\n className={cn(\"list-none p-0 m-0 text-sm\", className)}\n >\n {enhanceChildren(children)}\n </ul>\n );\n};\n\n// -------------------- Item --------------------\n\nconst DefaultExpandIcon: React.FC<{ expanded?: boolean }> = ({ expanded }) => (\n <span className=\"transition-transform duration-200\">\n {expanded ? (\n <RiArrowDownSFill size={18} />\n ) : (\n <RiArrowRightSFill size={18} />\n )}\n </span>\n);\n\nconst TreeViewItem: React.FC<TreeViewItemProps> = ({\n id,\n children,\n current = false,\n className,\n onSelect,\n expanded = false,\n onToggle,\n selected = false,\n level = 0,\n flat = false,\n}) => {\n const leading: React.ReactNode[] = [];\n const trailing: React.ReactNode[] = [];\n const content: React.ReactNode[] = [];\n let subTree: React.ReactElement | null = null;\n\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child)) {\n if (child.type === TreeViewLeadingVisual) leading.push(child);\n else if (child.type === TreeViewTrailingVisual) trailing.push(child);\n else if (child.type === TreeViewSubTree) subTree = child;\n else content.push(child);\n } else content.push(child);\n });\n\n const hasSubTree = !!subTree;\n\n const handleClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (hasSubTree && !flat && onToggle) onToggle(id);\n if (onSelect) onSelect(id);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n switch (e.key) {\n case \"Enter\":\n case \" \":\n e.preventDefault();\n handleClick(e as any);\n break;\n case \"ArrowRight\":\n if (hasSubTree && !expanded && !flat && onToggle) {\n e.preventDefault();\n onToggle(id);\n }\n break;\n case \"ArrowLeft\":\n if (hasSubTree && expanded && !flat && onToggle) {\n e.preventDefault();\n onToggle(id);\n }\n break;\n }\n };\n\n const processedSubTree =\n subTree && React.isValidElement(subTree)\n ? React.cloneElement(subTree, { expanded, flat })\n : null;\n\n return (\n <>\n <li\n role=\"treeitem\"\n aria-expanded={hasSubTree && !flat ? expanded : undefined}\n aria-selected={selected}\n aria-current={current ? \"true\" : undefined}\n className={cn(\n \"flex items-center gap-2 px-2 py-1 cursor-pointer select-none rounded transition-colors duration-150\",\n selected && \"bg-blue-50 text-blue-600 font-medium\",\n \"hover:bg-gray-100\",\n className\n )}\n style={{ paddingLeft: `${level * 16 + 8}px` }}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n tabIndex={0}\n >\n <span className=\"flex items-center gap-1\">\n {/* Show arrow only if there is no custom leading visual */}\n {!leading.length && hasSubTree && !flat && (\n <DefaultExpandIcon expanded={expanded} />\n )}\n {leading}\n </span>\n\n <span className=\"flex-1\">{content}</span>\n {trailing}\n </li>\n {processedSubTree}\n </>\n );\n};\n\n// -------------------- SubTree --------------------\n\nconst TreeViewSubTree: React.FC<TreeViewSubTreeProps> = ({\n children,\n state,\n count,\n className,\n expanded = false,\n flat = false,\n}) => {\n if (flat) return null;\n if (state === \"loading\") {\n return (\n <ul role=\"group\" className={cn(\"list-none m-0\", className)}>\n <li className=\"text-gray-500 italic p-1 pl-6\">\n Loading{count ? ` ${count} items...` : \"...\"}\n </li>\n </ul>\n );\n }\n\n return (\n <ul\n role=\"group\"\n className={cn(\n \"list-none m-0 pl-0 overflow-hidden transition-all duration-300 ease-in-out\",\n expanded ? \"max-h-96 opacity-100\" : \"max-h-0 opacity-0\",\n className\n )}\n >\n {children}\n </ul>\n );\n};\n\n// -------------------- Visuals --------------------\n\nconst TreeViewLeadingVisual: React.FC<{\n children: React.ReactNode;\n className?: string;\n}> = ({ children, className }) => (\n <span className={cn(\"flex items-center flex-shrink-0\", className)}>\n {children}\n </span>\n);\n\nconst TreeViewTrailingVisual: React.FC<{\n children: React.ReactNode;\n label?: string;\n className?: string;\n}> = ({ children, label, className }) => (\n <span\n className={cn(\"flex items-center ml-auto flex-shrink-0\", className)}\n aria-label={label}\n >\n {children}\n </span>\n);\n\n// Attach subcomponents\nTreeView.Item = TreeViewItem;\nTreeView.SubTree = TreeViewSubTree;\nTreeView.LeadingVisual = TreeViewLeadingVisual;\nTreeView.TrailingVisual = TreeViewTrailingVisual;\n\nexport default TreeView;\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport React, {\n type ElementType,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { cn } from \"../utils/utils\";\n\ninterface TypographyProps\n extends HTMLAttributes<HTMLHeadingElement | HTMLParagraphElement>,\n VariantProps<typeof typographyVariant> {\n as?: ElementType;\n children: ReactNode;\n intent?: \"primary\" | \"success\" | \"error\" | \"warning\" | \"default\";\n}\n\nconst typographyVariant = cva(\"text-dark\", {\n variants: {\n variant: {\n h1: \"text-8xl font-bold\",\n h2: \"text-7xl font-bold\",\n h3: \"text-5xl font-bold\",\n h4: \"text-[32px] font-bold\",\n h5: \"text-2xl font-bold\",\n h6: \"text-xl font-semibold\",\n\n b1: \"text-xl font-normal\",\n b2: \"text-lg font-normal\",\n b3: \"text-base font-normal\",\n b4: \"text-sm font-normal\",\n b5: \"text-xs font-normal\",\n },\n intent: {\n primary: \"text-primary-600\",\n success: \"text-success-600\",\n error: \"text-error-600\",\n warning: \"text-warning-600\",\n default: \"text-black\",\n },\n },\n defaultVariants: {\n variant: \"h1\",\n intent: \"default\",\n },\n});\n\nconst Typography = ({\n as,\n variant = \"h1\",\n intent = \"default\",\n children,\n className,\n ...props\n}: TypographyProps) => {\n const Component =\n as || (variant?.startsWith(\"b\") ? \"p\" : (variant as ElementType));\n return (\n <Component\n className={cn(typographyVariant({ variant, intent, className }))}\n {...props}\n >\n {children}\n </Component>\n );\n};\n\nexport default Typography;\n"],"mappings":"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","names":["import_react","clsx","React","import_react","React","Image","import_react","React","import_react","React","import_react","React","import_class_variance_authority","import_react","React","import_react","React","React","import_react","import_class_variance_authority","React","import_react","import_class_variance_authority","React","import_react","React","import_react","React","import_react","import_react","React","import_react","import_react","React","import_class_variance_authority","import_react","React","React","_a","import_react","React","import_react","defaultRenderItem","React","MenuItem","DropdownFooter","import_react","React","import_react","import_react","React","React","import_react","React","import_react","React","import_react","React","Link","import_react","React","import_react","React","import_react","React","import_class_variance_authority","import_react","import_react","React","import_react","React","import_react","import_react","React","import_react","React","import_react","import_class_variance_authority","React","import_react","import_react","color","React","import_image","React","_a","item","Image","import_react","import_link","import_react","React","Link","import_react","React","import_react","React","import_react","React","import_react","React","import_react","React","import_react","React","import_react","React","import_react","React","import_class_variance_authority","import_react","React","import_class_variance_authority","import_react","React","import_react","import_react","React","import_class_variance_authority","import_react","React"]}