@sikka/hawa 0.30.5-next → 0.30.6-next

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.
@@ -377,7 +377,7 @@ var Alert = ({
377
377
  oceanic: ""
378
378
  };
379
379
  let styleVariant = {
380
- none: "hawa-text-gray-700 hawa-bg-gray-100 dark:hawa-bg-gray-900 ",
380
+ none: "hawa-bg-background hawa-border",
381
381
  info: "hawa-text-info-foreground hawa-bg-info/90",
382
382
  warning: "hawa-text-warning-foreground hawa-bg-warning/90",
383
383
  error: "hawa-text-destructive-foreground hawa-bg-destructive/90",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../elements/alert/index.ts","../../elements/alert/Alert.tsx","../../util/index.ts","../../elements/button/Button.tsx","../../elements/loading/Loading.tsx"],"sourcesContent":["export * from \"./Alert\";\n","import React, { useRef, useState, useEffect } from \"react\";\n\nimport { cn } from \"@util/index\";\n\nimport { DirectionType, SeverityType } from \"@_types/commonTypes\";\n\nimport { Button } from \"../button\";\n\ntype AlertTypes = {\n severity?: SeverityType | \"hyper\" | \"oceanic\";\n /** The title of the alert placed above the text of the alert. Can be used alone */\n title?: React.ReactNode;\n /** The text of the alert placed below the title of the alert. Can be used alone */\n text: React.ReactNode;\n /** The duration for the alert to stay on the screen */\n duration?: number;\n direction?: DirectionType;\n actions?: [\n {\n label: string;\n onClick: any;\n variant:\n | \"outline\"\n | \"link\"\n | \"default\"\n | \"destructive\"\n | \"secondary\"\n | \"ghost\";\n }\n ];\n /** Removes the close button */\n persistent?: boolean;\n icon?: any;\n className?: string;\n onAlertClosed?: () => void;\n noDestroy?: boolean;\n};\n\nexport const Alert: React.FunctionComponent<AlertTypes> = ({\n direction = \"ltr\",\n severity = \"none\",\n duration,\n icon,\n className,\n ...props\n}) => {\n const alertRef = useRef<HTMLDivElement>(null);\n const [closed, setClosed] = useState(false);\n\n useEffect(() => {\n if (duration) {\n //To change opacity and hide the component\n const timeoutHide = setTimeout(() => {\n setClosed(true);\n }, duration);\n //To destroy the component after hiding it\n const timeoutDestroy = setTimeout(() => {\n setClosed(true);\n if (alertRef?.current) {\n alertRef?.current.removeChild(alertRef?.current.children[0]);\n }\n }, duration + 1000);\n\n return () => {\n clearTimeout(timeoutHide);\n clearTimeout(timeoutDestroy);\n };\n }\n }, [duration]);\n\n let closeButtonStyle = {\n none: \"\",\n info: \"\",\n warning: \"\",\n error: \"\",\n success: \"\",\n hyper: \"\",\n oceanic: \"\"\n };\n let styleVariant = {\n none: \"hawa-text-gray-700 hawa-bg-gray-100 dark:hawa-bg-gray-900 \",\n info: \"hawa-text-info-foreground hawa-bg-info/90\",\n warning: \"hawa-text-warning-foreground hawa-bg-warning/90\",\n error: \"hawa-text-destructive-foreground hawa-bg-destructive/90\",\n success: \"hawa-text-success-foreground hawa-bg-success/90\",\n hyper:\n \"hawa-text-white hawa-bg-gradient-to-tl hawa-from-pink-700 hawa-via-red-500 hawa-to-yellow-600 \",\n oceanic:\n \"hawa-text-white hawa-bg-gradient-to-bl hawa-from-green-500 hawa-via-blue-700 hawa-to-purple-500\"\n };\n\n return (\n <div ref={alertRef}>\n <div\n data-testid=\"alert\"\n aria-label=\"Alert\"\n role=\"alert\"\n dir={direction}\n className={cn(\n \"hawa-relative hawa-mb-4 hawa-flex hawa-flex-col hawa-rounded hawa-p-4 hawa-text-sm hawa-transition-all\",\n styleVariant[severity],\n closed ? \"hawa-opacity-0\" : \"hawa-opacity-100\",\n className\n )}\n >\n <div className=\"hawa-flex hawa-flex-row\">\n {icon && (\n <div\n className={\n direction === \"rtl\"\n ? \"hawa-pl-2 hawa-pt-1\"\n : \"hawa-pr-2 hawa-pt-1\"\n }\n >\n {icon}\n </div>\n )}\n <div className=\"hawa-flex hawa-flex-col\">\n <span\n className={cn(\n \"hawa-font-bold\",\n direction === \"rtl\" ? \"hawa-ml-8\" : \"hawa-mr-8\"\n )}\n >\n {props.title}\n </span>\n <span\n className={cn(\n direction === \"rtl\" ? \"hawa-ml-8\" : \"hawa-mr-8\",\n props.persistent ? \"hawa-w-full\" : \"hawa-w-[calc(100% - 40px)]\"\n )}\n >\n {props.text}\n </span>\n {props.actions && (\n <div className=\"hawa-mt-2 hawa-flex hawa-flex-row hawa-gap-2\">\n {props.actions.map((act, index) => (\n <Button\n key={index}\n variant={act.variant}\n onClick={act.onClick()}\n >\n {act.label}\n </Button>\n ))}\n </div>\n )}\n </div>\n </div>\n {!props.persistent && (\n <button\n type=\"button\"\n data-dismiss-target=\"#alert-default\"\n aria-label=\"Close\"\n className={cn(\n \"hawa-absolute hawa-top-2 hawa-inline-flex hawa-h-9 hawa-w-9 hawa-items-center hawa-justify-center hawa-rounded-inner hawa-p-1.5 hawa-transition-all hover:hawa-text-gray-900\",\n closeButtonStyle[severity],\n direction === \"rtl\" ? \"hawa-left-2\" : \"hawa-right-2\"\n )}\n onClick={() => {\n if (props.onAlertClosed) {\n props.onAlertClosed();\n }\n if (!props.noDestroy) {\n setClosed(true);\n setTimeout(() => {\n if (alertRef?.current) {\n alertRef?.current.removeChild(\n alertRef?.current.children[0]\n );\n }\n }, 200);\n }\n }}\n >\n <span className=\"hawa-sr-only\">Close</span>\n <svg\n aria-label=\"Close Icon\"\n aria-hidden=\"true\"\n className=\"hawa-h-5 hawa-w-5\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n </button>\n )}\n </div>\n </div>\n );\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\ntype Palette = {\n name: string;\n colors: {\n [key: number]: string;\n };\n};\ntype Rgb = {\n r: number;\n g: number;\n b: number;\n};\nfunction hexToRgb(hex: string): Rgb | null {\n const sanitizedHex = hex.replaceAll(\"##\", \"#\");\n const colorParts = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(\n sanitizedHex\n );\n\n if (!colorParts) {\n return null;\n }\n\n const [, r, g, b] = colorParts;\n\n return {\n r: parseInt(r, 16),\n g: parseInt(g, 16),\n b: parseInt(b, 16)\n } as Rgb;\n}\n\nfunction rgbToHex(r: number, g: number, b: number): string {\n const toHex = (c: number) => `0${c.toString(16)}`.slice(-2);\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n}\n\nexport function getTextColor(color: string): \"#FFF\" | \"#333\" {\n const rgbColor = hexToRgb(color);\n\n if (!rgbColor) {\n return \"#333\";\n }\n\n const { r, g, b } = rgbColor;\n const luma = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n\n return luma < 120 ? \"#FFF\" : \"#333\";\n}\n\nfunction lighten(hex: string, intensity: number): string {\n const color = hexToRgb(`#${hex}`);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r + (255 - color.r) * intensity);\n const g = Math.round(color.g + (255 - color.g) * intensity);\n const b = Math.round(color.b + (255 - color.b) * intensity);\n\n return rgbToHex(r, g, b);\n}\n\nfunction darken(hex: string, intensity: number): string {\n const color = hexToRgb(hex);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r * intensity);\n const g = Math.round(color.g * intensity);\n const b = Math.round(color.b * intensity);\n\n return rgbToHex(r, g, b);\n}\nconst parseColor = (color: any) => {\n if (color.startsWith(\"#\")) {\n // Convert hex to RGB\n let r = parseInt(color.slice(1, 3), 16);\n let g = parseInt(color.slice(3, 5), 16);\n let b = parseInt(color.slice(5, 7), 16);\n return [r, g, b];\n } else if (color.startsWith(\"rgb\")) {\n // Extract RGB values from rgb() format\n return color.match(/\\d+/g).map(Number);\n }\n // Default to white if format is unrecognized\n return [255, 255, 255];\n};\nexport const calculateLuminance = (color: any) => {\n const [r, g, b] = parseColor(color)?.map((c: any) => {\n c /= 255;\n return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;\n });\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n};\n\nfunction getPallette(baseColor: string): Palette {\n const name = baseColor;\n\n const response: Palette = {\n name,\n colors: {\n 500: `#${baseColor}`.replace(\"##\", \"#\")\n }\n };\n\n const intensityMap: {\n [key: number]: number;\n } = {\n 50: 0.95,\n 100: 0.9,\n 200: 0.75,\n 300: 0.6,\n 400: 0.3,\n 600: 0.9,\n 700: 0.75,\n 800: 0.6,\n 900: 0.49\n };\n\n [50, 100, 200, 300, 400].forEach((level) => {\n response.colors[level] = lighten(baseColor, intensityMap[level]);\n });\n [600, 700, 800, 900].forEach((level) => {\n response.colors[level] = darken(baseColor, intensityMap[level]);\n });\n\n return response as Palette;\n}\n\nexport { getPallette };\n\n// const hexToRgb = (hex) => {\n// let d = hex?.split(\"#\")[1];\n// var aRgbHex = d?.match(/.{1,2}/g);\n// var aRgb = [\n// parseInt(aRgbHex[0], 16),\n// parseInt(aRgbHex[1], 16),\n// parseInt(aRgbHex[2], 16)\n// ];\n// return aRgb;\n// };\n// const getTextColor = (backColor) => {\n// let rgbArray = hexToRgb(backColor);\n// if (rgbArray[0] * 0.299 + rgbArray[1] * 0.587 + rgbArray[2] * 0.114 > 186) {\n// return \"#000000\";\n// } else {\n// return \"#ffffff\";\n// }\n// };\n// const replaceAt = function (string, index, replacement) {\n// // if (replacement == \"\" || replacement == \" \") {\n// // return (\n// // string.substring(0, index) +\n// // string.substring(index + replacement.length )\n// // );\n// // }\n// const replaced = string.substring(0, index) + replacement + string.substring(index + 1)\n// return replaced\n// };\n\n// export { hexToRgb, getTextColor, replaceAt };\n","import * as React from \"react\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@util/index\";\nimport { Loading } from \"../loading/Loading\";\n\nconst buttonVariants = cva(\n \"hawa-inline-flex hawa-items-center hawa-select-none hawa-rounded-md hawa-text-sm hawa-font-medium hawa-ring-offset-background hawa-transition-colors focus-visible:hawa-outline-none focus-visible:hawa-ring-2 focus-visible:hawa-ring-ring focus-visible:hawa-ring-offset-2 disabled:hawa-pointer-events-none disabled:hawa-opacity-50\",\n {\n variants: {\n variant: {\n default:\n \"hawa-bg-primary hawa-text-primary-foreground hover:hawa-bg-primary/90\",\n light: \"hawa-bg-primary/20 hawa-text-primary hover:hawa-bg-primary/40\",\n destructive:\n \"hawa-bg-destructive hawa-text-destructive-foreground hover:hawa-bg-destructive/90\",\n outline:\n \"hawa-border hawa-border-input hawa-bg-transparent hover:hawa-bg-accent hover:hawa-text-accent-foreground\",\n secondary:\n \"hawa-bg-secondary hawa-text-secondary-foreground hover:hawa-bg-secondary/80\",\n ghost: \"hover:hawa-bg-accent hover:hawa-text-accent-foreground\",\n link: \"hawa-text-primary hawa-underline-offset-4 hover:hawa-underline\",\n combobox: \"hawa-bg-background hawa-border\",\n neoBrutalism: \"neo-brutalism\"\n // \"hawa-cursor-pointer hawa-transition-all hawa-uppercase hawa-font-mono dark:hawa-bg-black hawa-font-bold hawa-py-2 hawa-px-4 hawa-rounded hawa-border-2 hawa-border-primary hawa-shadow-color-primary hawa-transition-[hawa-transform_50ms, hawa-box-shadow_50ms] active:hawa-translate-x-0.5 active:hawa-translate-y-0.5 active:hawa-shadow-color-primary-active shadow-color-primary active:shadow-color-primary-active\",\n },\n size: {\n default: \"hawa-h-10 hawa-px-4 hawa-py-2\",\n heightless: \"hawa-px-4 hawa-py-4\",\n xs: \"hawa-h-fit hawa-min-h-[25px] hawa-py-1 hawa-text-[10px] hawa-px-2 \",\n sm: \"hawa-h-9 hawa-text-[11px] hawa-rounded-md hawa-px-3\",\n lg: \"hawa-h-11 hawa-rounded-md hawa-px-8\",\n xl: \"hawa-h-14 hawa-rounded-md hawa-px-10\",\n icon: \"hawa-h-10 hawa-w-10\",\n smallIcon: \"hawa-h-7 hawa-w-7\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\"\n }\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n centered?: boolean;\n isLoading?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n asChild = false,\n centered = true,\n isLoading,\n children,\n ...props\n },\n ref\n ) => {\n const Comp = \"button\";\n\n // Determine the color for the HawaLoading component based on the variant\n const loadingColor =\n variant === \"outline\" || variant === \"ghost\" || variant === \"neoBrutalism\"\n ? \"hawa-bg-primary\"\n : \"hawa-bg-primary-foreground\";\n\n return (\n <Comp\n className={cn(\n buttonVariants({ variant, size, className }),\n centered && \"hawa-justify-center\",\n // \"hawa-bg-red-500\"\n )}\n ref={ref}\n {...props}\n >\n {isLoading ? (\n <Loading\n design={\n size === \"icon\" || size === \"smallIcon\" ? \"spinner\" : \"dots-pulse\"\n }\n themeMode={variant === \"outline\" ? \"light\" : \"dark\"}\n color={loadingColor}\n size={size === \"sm\" || size === \"xs\" ? \"xs\" : \"button\"}\n />\n ) : (\n children\n )}\n </Comp>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import React, { FC } from \"react\";\n\nimport { cn } from \"@util/index\";\n\ntype LoadingTypes = {\n /** Specifies the size of the loading component.*/\n size?: \"button\" | \"xs\" | \"sm\" | \"normal\" | \"lg\" | \"xl\";\n /** Determines the design of the loading animation.*/\n design?:\n | \"spinner\"\n | \"dots-bounce\"\n | \"dots-pulse\"\n | \"pulse\"\n | \"spinner-dots\"\n | \"squircle\"\n | \"square\"\n | \"progress\"\n | \"orbit\";\n /** Specifies the color of the loading component. By default it will inherit the value of --primary global CSS variable*/\n color?: string;\n classNames?: {\n container?: string;\n track?: string;\n car?: string;\n };\n themeMode?: \"dark\" | \"light\";\n};\n\nexport const Loading: FC<LoadingTypes> = ({\n design = \"spinner\",\n size = \"normal\",\n themeMode = \"light\",\n classNames,\n color,\n ...props\n}) => {\n let sizeStyles = {\n button: \"hawa-h-4 hawa-w-4\",\n xs: \"hawa-h-1 hawa-w-1\",\n sm: \"hawa-h-6 hawa-w-6\",\n normal: \"hawa-h-8 hawa-w-8\",\n lg: \"hawa-h-14 hawa-w-14\",\n xl: \"hawa-h-24 hawa-w-24\"\n };\n let progressSizes = {\n button: \"hawa-h-1\",\n xs: \"hawa-h-1 hawa-w-1\",\n sm: \"hawa-h-6 hawa-w-6\",\n normal: \"\",\n lg: \"hawa-h-6\",\n xl: \"hawa-h-10 hawa-w-64\"\n };\n\n let animationStyles: any = {\n pulse: \"hawa-animate-in hawa-fade-in hawa-duration-1000\",\n bounce: \"hawa-animate-bounce\"\n };\n switch (design.split(\"-\")[0]) {\n case \"dots\":\n return (\n <div\n className={cn(\n \"hawa-flex hawa-flex-row hawa-gap-2\",\n classNames?.container\n )}\n >\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-100 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-200 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-300 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n </div>\n );\n case \"square\":\n return (\n <svg\n className={cn(\n \"squircle-container\",\n sizeStyles[size],\n classNames?.container\n )}\n viewBox=\"0 0 35 35\"\n height=\"35\"\n width=\"35\"\n >\n <rect\n className=\"squircle-track\"\n x=\"2.5\"\n y=\"2.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n width=\"32.5\"\n height=\"32.5\"\n />\n <rect\n className=\"square-car\"\n x=\"2.5\"\n y=\"2.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n width=\"32.5\"\n height=\"32.5\"\n pathLength=\"100\"\n />\n </svg>\n );\n case \"squircle\":\n return (\n <svg\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 37 37\"\n height=\"37\"\n width=\"37\"\n preserveAspectRatio=\"xMidYMid meet\"\n className={cn(\n \"squircle-container\",\n sizeStyles[size],\n classNames?.container\n )}\n >\n <path\n className={cn(\"squircle-track\", classNames?.track)}\n fill=\"none\"\n strokeWidth=\"5\"\n pathLength=\"100\"\n d=\"M0.37 18.5 C0.37 5.772 5.772 0.37 18.5 0.37 S36.63 5.772 36.63 18.5 S31.228 36.63 18.5 36.63 S0.37 31.228 0.37 18.5\"\n ></path>\n <path\n className={cn(\"squircle-car\", classNames?.car)}\n fill=\"none\"\n strokeWidth=\"5\"\n pathLength=\"100\"\n d=\"M0.37 18.5 C0.37 5.772 5.772 0.37 18.5 0.37 S36.63 5.772 36.63 18.5 S31.228 36.63 18.5 36.63 S0.37 31.228 0.37 18.5\"\n ></path>\n </svg>\n );\n case \"progress\":\n return (\n <div\n className={cn(\n \"progress-loading after:hawa-rounded hawa-rounded\",\n progressSizes[size],\n classNames?.container\n )}\n ></div>\n );\n case \"orbit\":\n return (\n <div className={cn(\"orbit-container\", classNames?.container)}></div>\n );\n\n default:\n return (\n <svg\n viewBox=\"0 0 40 40\"\n height=\"40\"\n width=\"40\"\n className={cn(\n \"circle-container\",\n sizeStyles[size],\n classNames?.container\n )}\n >\n <circle\n className={cn(\n \"circle-track\",\n {\n \"hawa-stroke-primary-foreground\": themeMode === \"dark\",\n \"hawa-stroke-primary\": themeMode === \"light\"\n },\n classNames?.track\n )}\n cx=\"20\"\n cy=\"20\"\n r=\"17.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n pathLength=\"100\"\n />\n <circle\n className={cn(\n \"circle-car\",\n {\n \"hawa-stroke-primary-foreground\": themeMode === \"dark\",\n \"hawa-stroke-primary\": themeMode === \"light\"\n },\n classNames?.car\n )}\n cx=\"20\"\n cy=\"20\"\n r=\"17.5\"\n fill=\"none\"\n pathLength=\"100\"\n strokeWidth=\"5px\"\n />\n </svg>\n );\n }\n};\n"],"mappings":"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","names":["import_react","React","React","React"]}
1
+ {"version":3,"sources":["../../elements/alert/index.ts","../../elements/alert/Alert.tsx","../../util/index.ts","../../elements/button/Button.tsx","../../elements/loading/Loading.tsx"],"sourcesContent":["export * from \"./Alert\";\n","import React, { useRef, useState, useEffect } from \"react\";\n\nimport { cn } from \"@util/index\";\n\nimport { DirectionType, SeverityType } from \"@_types/commonTypes\";\n\nimport { Button } from \"../button\";\n\ntype AlertTypes = {\n severity?: SeverityType | \"hyper\" | \"oceanic\";\n /** The title of the alert placed above the text of the alert. Can be used alone */\n title?: React.ReactNode;\n /** The text of the alert placed below the title of the alert. Can be used alone */\n text: React.ReactNode;\n /** The duration for the alert to stay on the screen */\n duration?: number;\n direction?: DirectionType;\n actions?: [\n {\n label: string;\n onClick: any;\n variant:\n | \"outline\"\n | \"link\"\n | \"default\"\n | \"destructive\"\n | \"secondary\"\n | \"ghost\";\n }\n ];\n /** Removes the close button */\n persistent?: boolean;\n icon?: any;\n className?: string;\n onAlertClosed?: () => void;\n noDestroy?: boolean;\n};\n\nexport const Alert: React.FunctionComponent<AlertTypes> = ({\n direction = \"ltr\",\n severity = \"none\",\n duration,\n icon,\n className,\n ...props\n}) => {\n const alertRef = useRef<HTMLDivElement>(null);\n const [closed, setClosed] = useState(false);\n\n useEffect(() => {\n if (duration) {\n //To change opacity and hide the component\n const timeoutHide = setTimeout(() => {\n setClosed(true);\n }, duration);\n //To destroy the component after hiding it\n const timeoutDestroy = setTimeout(() => {\n setClosed(true);\n if (alertRef?.current) {\n alertRef?.current.removeChild(alertRef?.current.children[0]);\n }\n }, duration + 1000);\n\n return () => {\n clearTimeout(timeoutHide);\n clearTimeout(timeoutDestroy);\n };\n }\n }, [duration]);\n\n let closeButtonStyle = {\n none: \"\",\n info: \"\",\n warning: \"\",\n error: \"\",\n success: \"\",\n hyper: \"\",\n oceanic: \"\"\n };\n let styleVariant = {\n none: \"hawa-bg-background hawa-border\",\n info: \"hawa-text-info-foreground hawa-bg-info/90\",\n warning: \"hawa-text-warning-foreground hawa-bg-warning/90\",\n error: \"hawa-text-destructive-foreground hawa-bg-destructive/90\",\n success: \"hawa-text-success-foreground hawa-bg-success/90\",\n hyper:\n \"hawa-text-white hawa-bg-gradient-to-tl hawa-from-pink-700 hawa-via-red-500 hawa-to-yellow-600 \",\n oceanic:\n \"hawa-text-white hawa-bg-gradient-to-bl hawa-from-green-500 hawa-via-blue-700 hawa-to-purple-500\"\n };\n\n return (\n <div ref={alertRef}>\n <div\n data-testid=\"alert\"\n aria-label=\"Alert\"\n role=\"alert\"\n dir={direction}\n className={cn(\n \"hawa-relative hawa-mb-4 hawa-flex hawa-flex-col hawa-rounded hawa-p-4 hawa-text-sm hawa-transition-all\",\n styleVariant[severity],\n closed ? \"hawa-opacity-0\" : \"hawa-opacity-100\",\n className\n )}\n >\n <div className=\"hawa-flex hawa-flex-row\">\n {icon && (\n <div\n className={\n direction === \"rtl\"\n ? \"hawa-pl-2 hawa-pt-1\"\n : \"hawa-pr-2 hawa-pt-1\"\n }\n >\n {icon}\n </div>\n )}\n <div className=\"hawa-flex hawa-flex-col\">\n <span\n className={cn(\n \"hawa-font-bold\",\n direction === \"rtl\" ? \"hawa-ml-8\" : \"hawa-mr-8\"\n )}\n >\n {props.title}\n </span>\n <span\n className={cn(\n direction === \"rtl\" ? \"hawa-ml-8\" : \"hawa-mr-8\",\n props.persistent ? \"hawa-w-full\" : \"hawa-w-[calc(100% - 40px)]\"\n )}\n >\n {props.text}\n </span>\n {props.actions && (\n <div className=\"hawa-mt-2 hawa-flex hawa-flex-row hawa-gap-2\">\n {props.actions.map((act, index) => (\n <Button\n key={index}\n variant={act.variant}\n onClick={act.onClick()}\n >\n {act.label}\n </Button>\n ))}\n </div>\n )}\n </div>\n </div>\n {!props.persistent && (\n <button\n type=\"button\"\n data-dismiss-target=\"#alert-default\"\n aria-label=\"Close\"\n className={cn(\n \"hawa-absolute hawa-top-2 hawa-inline-flex hawa-h-9 hawa-w-9 hawa-items-center hawa-justify-center hawa-rounded-inner hawa-p-1.5 hawa-transition-all hover:hawa-text-gray-900\",\n closeButtonStyle[severity],\n direction === \"rtl\" ? \"hawa-left-2\" : \"hawa-right-2\"\n )}\n onClick={() => {\n if (props.onAlertClosed) {\n props.onAlertClosed();\n }\n if (!props.noDestroy) {\n setClosed(true);\n setTimeout(() => {\n if (alertRef?.current) {\n alertRef?.current.removeChild(\n alertRef?.current.children[0]\n );\n }\n }, 200);\n }\n }}\n >\n <span className=\"hawa-sr-only\">Close</span>\n <svg\n aria-label=\"Close Icon\"\n aria-hidden=\"true\"\n className=\"hawa-h-5 hawa-w-5\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n </button>\n )}\n </div>\n </div>\n );\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\ntype Palette = {\n name: string;\n colors: {\n [key: number]: string;\n };\n};\ntype Rgb = {\n r: number;\n g: number;\n b: number;\n};\nfunction hexToRgb(hex: string): Rgb | null {\n const sanitizedHex = hex.replaceAll(\"##\", \"#\");\n const colorParts = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(\n sanitizedHex\n );\n\n if (!colorParts) {\n return null;\n }\n\n const [, r, g, b] = colorParts;\n\n return {\n r: parseInt(r, 16),\n g: parseInt(g, 16),\n b: parseInt(b, 16)\n } as Rgb;\n}\n\nfunction rgbToHex(r: number, g: number, b: number): string {\n const toHex = (c: number) => `0${c.toString(16)}`.slice(-2);\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n}\n\nexport function getTextColor(color: string): \"#FFF\" | \"#333\" {\n const rgbColor = hexToRgb(color);\n\n if (!rgbColor) {\n return \"#333\";\n }\n\n const { r, g, b } = rgbColor;\n const luma = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n\n return luma < 120 ? \"#FFF\" : \"#333\";\n}\n\nfunction lighten(hex: string, intensity: number): string {\n const color = hexToRgb(`#${hex}`);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r + (255 - color.r) * intensity);\n const g = Math.round(color.g + (255 - color.g) * intensity);\n const b = Math.round(color.b + (255 - color.b) * intensity);\n\n return rgbToHex(r, g, b);\n}\n\nfunction darken(hex: string, intensity: number): string {\n const color = hexToRgb(hex);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r * intensity);\n const g = Math.round(color.g * intensity);\n const b = Math.round(color.b * intensity);\n\n return rgbToHex(r, g, b);\n}\nconst parseColor = (color: any) => {\n if (color.startsWith(\"#\")) {\n // Convert hex to RGB\n let r = parseInt(color.slice(1, 3), 16);\n let g = parseInt(color.slice(3, 5), 16);\n let b = parseInt(color.slice(5, 7), 16);\n return [r, g, b];\n } else if (color.startsWith(\"rgb\")) {\n // Extract RGB values from rgb() format\n return color.match(/\\d+/g).map(Number);\n }\n // Default to white if format is unrecognized\n return [255, 255, 255];\n};\nexport const calculateLuminance = (color: any) => {\n const [r, g, b] = parseColor(color)?.map((c: any) => {\n c /= 255;\n return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;\n });\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n};\n\nfunction getPallette(baseColor: string): Palette {\n const name = baseColor;\n\n const response: Palette = {\n name,\n colors: {\n 500: `#${baseColor}`.replace(\"##\", \"#\")\n }\n };\n\n const intensityMap: {\n [key: number]: number;\n } = {\n 50: 0.95,\n 100: 0.9,\n 200: 0.75,\n 300: 0.6,\n 400: 0.3,\n 600: 0.9,\n 700: 0.75,\n 800: 0.6,\n 900: 0.49\n };\n\n [50, 100, 200, 300, 400].forEach((level) => {\n response.colors[level] = lighten(baseColor, intensityMap[level]);\n });\n [600, 700, 800, 900].forEach((level) => {\n response.colors[level] = darken(baseColor, intensityMap[level]);\n });\n\n return response as Palette;\n}\n\nexport { getPallette };\n\n// const hexToRgb = (hex) => {\n// let d = hex?.split(\"#\")[1];\n// var aRgbHex = d?.match(/.{1,2}/g);\n// var aRgb = [\n// parseInt(aRgbHex[0], 16),\n// parseInt(aRgbHex[1], 16),\n// parseInt(aRgbHex[2], 16)\n// ];\n// return aRgb;\n// };\n// const getTextColor = (backColor) => {\n// let rgbArray = hexToRgb(backColor);\n// if (rgbArray[0] * 0.299 + rgbArray[1] * 0.587 + rgbArray[2] * 0.114 > 186) {\n// return \"#000000\";\n// } else {\n// return \"#ffffff\";\n// }\n// };\n// const replaceAt = function (string, index, replacement) {\n// // if (replacement == \"\" || replacement == \" \") {\n// // return (\n// // string.substring(0, index) +\n// // string.substring(index + replacement.length )\n// // );\n// // }\n// const replaced = string.substring(0, index) + replacement + string.substring(index + 1)\n// return replaced\n// };\n\n// export { hexToRgb, getTextColor, replaceAt };\n","import * as React from \"react\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@util/index\";\nimport { Loading } from \"../loading/Loading\";\n\nconst buttonVariants = cva(\n \"hawa-inline-flex hawa-items-center hawa-select-none hawa-rounded-md hawa-text-sm hawa-font-medium hawa-ring-offset-background hawa-transition-colors focus-visible:hawa-outline-none focus-visible:hawa-ring-2 focus-visible:hawa-ring-ring focus-visible:hawa-ring-offset-2 disabled:hawa-pointer-events-none disabled:hawa-opacity-50\",\n {\n variants: {\n variant: {\n default:\n \"hawa-bg-primary hawa-text-primary-foreground hover:hawa-bg-primary/90\",\n light: \"hawa-bg-primary/20 hawa-text-primary hover:hawa-bg-primary/40\",\n destructive:\n \"hawa-bg-destructive hawa-text-destructive-foreground hover:hawa-bg-destructive/90\",\n outline:\n \"hawa-border hawa-border-input hawa-bg-transparent hover:hawa-bg-accent hover:hawa-text-accent-foreground\",\n secondary:\n \"hawa-bg-secondary hawa-text-secondary-foreground hover:hawa-bg-secondary/80\",\n ghost: \"hover:hawa-bg-accent hover:hawa-text-accent-foreground\",\n link: \"hawa-text-primary hawa-underline-offset-4 hover:hawa-underline\",\n combobox: \"hawa-bg-background hawa-border\",\n neoBrutalism: \"neo-brutalism\"\n // \"hawa-cursor-pointer hawa-transition-all hawa-uppercase hawa-font-mono dark:hawa-bg-black hawa-font-bold hawa-py-2 hawa-px-4 hawa-rounded hawa-border-2 hawa-border-primary hawa-shadow-color-primary hawa-transition-[hawa-transform_50ms, hawa-box-shadow_50ms] active:hawa-translate-x-0.5 active:hawa-translate-y-0.5 active:hawa-shadow-color-primary-active shadow-color-primary active:shadow-color-primary-active\",\n },\n size: {\n default: \"hawa-h-10 hawa-px-4 hawa-py-2\",\n heightless: \"hawa-px-4 hawa-py-4\",\n xs: \"hawa-h-fit hawa-min-h-[25px] hawa-py-1 hawa-text-[10px] hawa-px-2 \",\n sm: \"hawa-h-9 hawa-text-[11px] hawa-rounded-md hawa-px-3\",\n lg: \"hawa-h-11 hawa-rounded-md hawa-px-8\",\n xl: \"hawa-h-14 hawa-rounded-md hawa-px-10\",\n icon: \"hawa-h-10 hawa-w-10\",\n smallIcon: \"hawa-h-7 hawa-w-7\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\"\n }\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n centered?: boolean;\n isLoading?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n asChild = false,\n centered = true,\n isLoading,\n children,\n ...props\n },\n ref\n ) => {\n const Comp = \"button\";\n\n // Determine the color for the HawaLoading component based on the variant\n const loadingColor =\n variant === \"outline\" || variant === \"ghost\" || variant === \"neoBrutalism\"\n ? \"hawa-bg-primary\"\n : \"hawa-bg-primary-foreground\";\n\n return (\n <Comp\n className={cn(\n buttonVariants({ variant, size, className }),\n centered && \"hawa-justify-center\",\n // \"hawa-bg-red-500\"\n )}\n ref={ref}\n {...props}\n >\n {isLoading ? (\n <Loading\n design={\n size === \"icon\" || size === \"smallIcon\" ? \"spinner\" : \"dots-pulse\"\n }\n themeMode={variant === \"outline\" ? \"light\" : \"dark\"}\n color={loadingColor}\n size={size === \"sm\" || size === \"xs\" ? \"xs\" : \"button\"}\n />\n ) : (\n children\n )}\n </Comp>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import React, { FC } from \"react\";\n\nimport { cn } from \"@util/index\";\n\ntype LoadingTypes = {\n /** Specifies the size of the loading component.*/\n size?: \"button\" | \"xs\" | \"sm\" | \"normal\" | \"lg\" | \"xl\";\n /** Determines the design of the loading animation.*/\n design?:\n | \"spinner\"\n | \"dots-bounce\"\n | \"dots-pulse\"\n | \"pulse\"\n | \"spinner-dots\"\n | \"squircle\"\n | \"square\"\n | \"progress\"\n | \"orbit\";\n /** Specifies the color of the loading component. By default it will inherit the value of --primary global CSS variable*/\n color?: string;\n classNames?: {\n container?: string;\n track?: string;\n car?: string;\n };\n themeMode?: \"dark\" | \"light\";\n};\n\nexport const Loading: FC<LoadingTypes> = ({\n design = \"spinner\",\n size = \"normal\",\n themeMode = \"light\",\n classNames,\n color,\n ...props\n}) => {\n let sizeStyles = {\n button: \"hawa-h-4 hawa-w-4\",\n xs: \"hawa-h-1 hawa-w-1\",\n sm: \"hawa-h-6 hawa-w-6\",\n normal: \"hawa-h-8 hawa-w-8\",\n lg: \"hawa-h-14 hawa-w-14\",\n xl: \"hawa-h-24 hawa-w-24\"\n };\n let progressSizes = {\n button: \"hawa-h-1\",\n xs: \"hawa-h-1 hawa-w-1\",\n sm: \"hawa-h-6 hawa-w-6\",\n normal: \"\",\n lg: \"hawa-h-6\",\n xl: \"hawa-h-10 hawa-w-64\"\n };\n\n let animationStyles: any = {\n pulse: \"hawa-animate-in hawa-fade-in hawa-duration-1000\",\n bounce: \"hawa-animate-bounce\"\n };\n switch (design.split(\"-\")[0]) {\n case \"dots\":\n return (\n <div\n className={cn(\n \"hawa-flex hawa-flex-row hawa-gap-2\",\n classNames?.container\n )}\n >\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-100 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-200 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-300 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n </div>\n );\n case \"square\":\n return (\n <svg\n className={cn(\n \"squircle-container\",\n sizeStyles[size],\n classNames?.container\n )}\n viewBox=\"0 0 35 35\"\n height=\"35\"\n width=\"35\"\n >\n <rect\n className=\"squircle-track\"\n x=\"2.5\"\n y=\"2.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n width=\"32.5\"\n height=\"32.5\"\n />\n <rect\n className=\"square-car\"\n x=\"2.5\"\n y=\"2.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n width=\"32.5\"\n height=\"32.5\"\n pathLength=\"100\"\n />\n </svg>\n );\n case \"squircle\":\n return (\n <svg\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 37 37\"\n height=\"37\"\n width=\"37\"\n preserveAspectRatio=\"xMidYMid meet\"\n className={cn(\n \"squircle-container\",\n sizeStyles[size],\n classNames?.container\n )}\n >\n <path\n className={cn(\"squircle-track\", classNames?.track)}\n fill=\"none\"\n strokeWidth=\"5\"\n pathLength=\"100\"\n d=\"M0.37 18.5 C0.37 5.772 5.772 0.37 18.5 0.37 S36.63 5.772 36.63 18.5 S31.228 36.63 18.5 36.63 S0.37 31.228 0.37 18.5\"\n ></path>\n <path\n className={cn(\"squircle-car\", classNames?.car)}\n fill=\"none\"\n strokeWidth=\"5\"\n pathLength=\"100\"\n d=\"M0.37 18.5 C0.37 5.772 5.772 0.37 18.5 0.37 S36.63 5.772 36.63 18.5 S31.228 36.63 18.5 36.63 S0.37 31.228 0.37 18.5\"\n ></path>\n </svg>\n );\n case \"progress\":\n return (\n <div\n className={cn(\n \"progress-loading after:hawa-rounded hawa-rounded\",\n progressSizes[size],\n classNames?.container\n )}\n ></div>\n );\n case \"orbit\":\n return (\n <div className={cn(\"orbit-container\", classNames?.container)}></div>\n );\n\n default:\n return (\n <svg\n viewBox=\"0 0 40 40\"\n height=\"40\"\n width=\"40\"\n className={cn(\n \"circle-container\",\n sizeStyles[size],\n classNames?.container\n )}\n >\n <circle\n className={cn(\n \"circle-track\",\n {\n \"hawa-stroke-primary-foreground\": themeMode === \"dark\",\n \"hawa-stroke-primary\": themeMode === \"light\"\n },\n classNames?.track\n )}\n cx=\"20\"\n cy=\"20\"\n r=\"17.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n pathLength=\"100\"\n />\n <circle\n className={cn(\n \"circle-car\",\n {\n \"hawa-stroke-primary-foreground\": themeMode === \"dark\",\n \"hawa-stroke-primary\": themeMode === \"light\"\n },\n classNames?.car\n )}\n cx=\"20\"\n cy=\"20\"\n r=\"17.5\"\n fill=\"none\"\n pathLength=\"100\"\n strokeWidth=\"5px\"\n />\n </svg>\n );\n }\n};\n"],"mappings":"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","names":["import_react","React","React","React"]}
@@ -342,7 +342,7 @@ var Alert = ({
342
342
  oceanic: ""
343
343
  };
344
344
  let styleVariant = {
345
- none: "hawa-text-gray-700 hawa-bg-gray-100 dark:hawa-bg-gray-900 ",
345
+ none: "hawa-bg-background hawa-border",
346
346
  info: "hawa-text-info-foreground hawa-bg-info/90",
347
347
  warning: "hawa-text-warning-foreground hawa-bg-warning/90",
348
348
  error: "hawa-text-destructive-foreground hawa-bg-destructive/90",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../elements/alert/Alert.tsx","../../util/index.ts","../../elements/button/Button.tsx","../../elements/loading/Loading.tsx"],"sourcesContent":["import React, { useRef, useState, useEffect } from \"react\";\n\nimport { cn } from \"@util/index\";\n\nimport { DirectionType, SeverityType } from \"@_types/commonTypes\";\n\nimport { Button } from \"../button\";\n\ntype AlertTypes = {\n severity?: SeverityType | \"hyper\" | \"oceanic\";\n /** The title of the alert placed above the text of the alert. Can be used alone */\n title?: React.ReactNode;\n /** The text of the alert placed below the title of the alert. Can be used alone */\n text: React.ReactNode;\n /** The duration for the alert to stay on the screen */\n duration?: number;\n direction?: DirectionType;\n actions?: [\n {\n label: string;\n onClick: any;\n variant:\n | \"outline\"\n | \"link\"\n | \"default\"\n | \"destructive\"\n | \"secondary\"\n | \"ghost\";\n }\n ];\n /** Removes the close button */\n persistent?: boolean;\n icon?: any;\n className?: string;\n onAlertClosed?: () => void;\n noDestroy?: boolean;\n};\n\nexport const Alert: React.FunctionComponent<AlertTypes> = ({\n direction = \"ltr\",\n severity = \"none\",\n duration,\n icon,\n className,\n ...props\n}) => {\n const alertRef = useRef<HTMLDivElement>(null);\n const [closed, setClosed] = useState(false);\n\n useEffect(() => {\n if (duration) {\n //To change opacity and hide the component\n const timeoutHide = setTimeout(() => {\n setClosed(true);\n }, duration);\n //To destroy the component after hiding it\n const timeoutDestroy = setTimeout(() => {\n setClosed(true);\n if (alertRef?.current) {\n alertRef?.current.removeChild(alertRef?.current.children[0]);\n }\n }, duration + 1000);\n\n return () => {\n clearTimeout(timeoutHide);\n clearTimeout(timeoutDestroy);\n };\n }\n }, [duration]);\n\n let closeButtonStyle = {\n none: \"\",\n info: \"\",\n warning: \"\",\n error: \"\",\n success: \"\",\n hyper: \"\",\n oceanic: \"\"\n };\n let styleVariant = {\n none: \"hawa-text-gray-700 hawa-bg-gray-100 dark:hawa-bg-gray-900 \",\n info: \"hawa-text-info-foreground hawa-bg-info/90\",\n warning: \"hawa-text-warning-foreground hawa-bg-warning/90\",\n error: \"hawa-text-destructive-foreground hawa-bg-destructive/90\",\n success: \"hawa-text-success-foreground hawa-bg-success/90\",\n hyper:\n \"hawa-text-white hawa-bg-gradient-to-tl hawa-from-pink-700 hawa-via-red-500 hawa-to-yellow-600 \",\n oceanic:\n \"hawa-text-white hawa-bg-gradient-to-bl hawa-from-green-500 hawa-via-blue-700 hawa-to-purple-500\"\n };\n\n return (\n <div ref={alertRef}>\n <div\n data-testid=\"alert\"\n aria-label=\"Alert\"\n role=\"alert\"\n dir={direction}\n className={cn(\n \"hawa-relative hawa-mb-4 hawa-flex hawa-flex-col hawa-rounded hawa-p-4 hawa-text-sm hawa-transition-all\",\n styleVariant[severity],\n closed ? \"hawa-opacity-0\" : \"hawa-opacity-100\",\n className\n )}\n >\n <div className=\"hawa-flex hawa-flex-row\">\n {icon && (\n <div\n className={\n direction === \"rtl\"\n ? \"hawa-pl-2 hawa-pt-1\"\n : \"hawa-pr-2 hawa-pt-1\"\n }\n >\n {icon}\n </div>\n )}\n <div className=\"hawa-flex hawa-flex-col\">\n <span\n className={cn(\n \"hawa-font-bold\",\n direction === \"rtl\" ? \"hawa-ml-8\" : \"hawa-mr-8\"\n )}\n >\n {props.title}\n </span>\n <span\n className={cn(\n direction === \"rtl\" ? \"hawa-ml-8\" : \"hawa-mr-8\",\n props.persistent ? \"hawa-w-full\" : \"hawa-w-[calc(100% - 40px)]\"\n )}\n >\n {props.text}\n </span>\n {props.actions && (\n <div className=\"hawa-mt-2 hawa-flex hawa-flex-row hawa-gap-2\">\n {props.actions.map((act, index) => (\n <Button\n key={index}\n variant={act.variant}\n onClick={act.onClick()}\n >\n {act.label}\n </Button>\n ))}\n </div>\n )}\n </div>\n </div>\n {!props.persistent && (\n <button\n type=\"button\"\n data-dismiss-target=\"#alert-default\"\n aria-label=\"Close\"\n className={cn(\n \"hawa-absolute hawa-top-2 hawa-inline-flex hawa-h-9 hawa-w-9 hawa-items-center hawa-justify-center hawa-rounded-inner hawa-p-1.5 hawa-transition-all hover:hawa-text-gray-900\",\n closeButtonStyle[severity],\n direction === \"rtl\" ? \"hawa-left-2\" : \"hawa-right-2\"\n )}\n onClick={() => {\n if (props.onAlertClosed) {\n props.onAlertClosed();\n }\n if (!props.noDestroy) {\n setClosed(true);\n setTimeout(() => {\n if (alertRef?.current) {\n alertRef?.current.removeChild(\n alertRef?.current.children[0]\n );\n }\n }, 200);\n }\n }}\n >\n <span className=\"hawa-sr-only\">Close</span>\n <svg\n aria-label=\"Close Icon\"\n aria-hidden=\"true\"\n className=\"hawa-h-5 hawa-w-5\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n </button>\n )}\n </div>\n </div>\n );\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\ntype Palette = {\n name: string;\n colors: {\n [key: number]: string;\n };\n};\ntype Rgb = {\n r: number;\n g: number;\n b: number;\n};\nfunction hexToRgb(hex: string): Rgb | null {\n const sanitizedHex = hex.replaceAll(\"##\", \"#\");\n const colorParts = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(\n sanitizedHex\n );\n\n if (!colorParts) {\n return null;\n }\n\n const [, r, g, b] = colorParts;\n\n return {\n r: parseInt(r, 16),\n g: parseInt(g, 16),\n b: parseInt(b, 16)\n } as Rgb;\n}\n\nfunction rgbToHex(r: number, g: number, b: number): string {\n const toHex = (c: number) => `0${c.toString(16)}`.slice(-2);\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n}\n\nexport function getTextColor(color: string): \"#FFF\" | \"#333\" {\n const rgbColor = hexToRgb(color);\n\n if (!rgbColor) {\n return \"#333\";\n }\n\n const { r, g, b } = rgbColor;\n const luma = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n\n return luma < 120 ? \"#FFF\" : \"#333\";\n}\n\nfunction lighten(hex: string, intensity: number): string {\n const color = hexToRgb(`#${hex}`);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r + (255 - color.r) * intensity);\n const g = Math.round(color.g + (255 - color.g) * intensity);\n const b = Math.round(color.b + (255 - color.b) * intensity);\n\n return rgbToHex(r, g, b);\n}\n\nfunction darken(hex: string, intensity: number): string {\n const color = hexToRgb(hex);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r * intensity);\n const g = Math.round(color.g * intensity);\n const b = Math.round(color.b * intensity);\n\n return rgbToHex(r, g, b);\n}\nconst parseColor = (color: any) => {\n if (color.startsWith(\"#\")) {\n // Convert hex to RGB\n let r = parseInt(color.slice(1, 3), 16);\n let g = parseInt(color.slice(3, 5), 16);\n let b = parseInt(color.slice(5, 7), 16);\n return [r, g, b];\n } else if (color.startsWith(\"rgb\")) {\n // Extract RGB values from rgb() format\n return color.match(/\\d+/g).map(Number);\n }\n // Default to white if format is unrecognized\n return [255, 255, 255];\n};\nexport const calculateLuminance = (color: any) => {\n const [r, g, b] = parseColor(color)?.map((c: any) => {\n c /= 255;\n return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;\n });\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n};\n\nfunction getPallette(baseColor: string): Palette {\n const name = baseColor;\n\n const response: Palette = {\n name,\n colors: {\n 500: `#${baseColor}`.replace(\"##\", \"#\")\n }\n };\n\n const intensityMap: {\n [key: number]: number;\n } = {\n 50: 0.95,\n 100: 0.9,\n 200: 0.75,\n 300: 0.6,\n 400: 0.3,\n 600: 0.9,\n 700: 0.75,\n 800: 0.6,\n 900: 0.49\n };\n\n [50, 100, 200, 300, 400].forEach((level) => {\n response.colors[level] = lighten(baseColor, intensityMap[level]);\n });\n [600, 700, 800, 900].forEach((level) => {\n response.colors[level] = darken(baseColor, intensityMap[level]);\n });\n\n return response as Palette;\n}\n\nexport { getPallette };\n\n// const hexToRgb = (hex) => {\n// let d = hex?.split(\"#\")[1];\n// var aRgbHex = d?.match(/.{1,2}/g);\n// var aRgb = [\n// parseInt(aRgbHex[0], 16),\n// parseInt(aRgbHex[1], 16),\n// parseInt(aRgbHex[2], 16)\n// ];\n// return aRgb;\n// };\n// const getTextColor = (backColor) => {\n// let rgbArray = hexToRgb(backColor);\n// if (rgbArray[0] * 0.299 + rgbArray[1] * 0.587 + rgbArray[2] * 0.114 > 186) {\n// return \"#000000\";\n// } else {\n// return \"#ffffff\";\n// }\n// };\n// const replaceAt = function (string, index, replacement) {\n// // if (replacement == \"\" || replacement == \" \") {\n// // return (\n// // string.substring(0, index) +\n// // string.substring(index + replacement.length )\n// // );\n// // }\n// const replaced = string.substring(0, index) + replacement + string.substring(index + 1)\n// return replaced\n// };\n\n// export { hexToRgb, getTextColor, replaceAt };\n","import * as React from \"react\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@util/index\";\nimport { Loading } from \"../loading/Loading\";\n\nconst buttonVariants = cva(\n \"hawa-inline-flex hawa-items-center hawa-select-none hawa-rounded-md hawa-text-sm hawa-font-medium hawa-ring-offset-background hawa-transition-colors focus-visible:hawa-outline-none focus-visible:hawa-ring-2 focus-visible:hawa-ring-ring focus-visible:hawa-ring-offset-2 disabled:hawa-pointer-events-none disabled:hawa-opacity-50\",\n {\n variants: {\n variant: {\n default:\n \"hawa-bg-primary hawa-text-primary-foreground hover:hawa-bg-primary/90\",\n light: \"hawa-bg-primary/20 hawa-text-primary hover:hawa-bg-primary/40\",\n destructive:\n \"hawa-bg-destructive hawa-text-destructive-foreground hover:hawa-bg-destructive/90\",\n outline:\n \"hawa-border hawa-border-input hawa-bg-transparent hover:hawa-bg-accent hover:hawa-text-accent-foreground\",\n secondary:\n \"hawa-bg-secondary hawa-text-secondary-foreground hover:hawa-bg-secondary/80\",\n ghost: \"hover:hawa-bg-accent hover:hawa-text-accent-foreground\",\n link: \"hawa-text-primary hawa-underline-offset-4 hover:hawa-underline\",\n combobox: \"hawa-bg-background hawa-border\",\n neoBrutalism: \"neo-brutalism\"\n // \"hawa-cursor-pointer hawa-transition-all hawa-uppercase hawa-font-mono dark:hawa-bg-black hawa-font-bold hawa-py-2 hawa-px-4 hawa-rounded hawa-border-2 hawa-border-primary hawa-shadow-color-primary hawa-transition-[hawa-transform_50ms, hawa-box-shadow_50ms] active:hawa-translate-x-0.5 active:hawa-translate-y-0.5 active:hawa-shadow-color-primary-active shadow-color-primary active:shadow-color-primary-active\",\n },\n size: {\n default: \"hawa-h-10 hawa-px-4 hawa-py-2\",\n heightless: \"hawa-px-4 hawa-py-4\",\n xs: \"hawa-h-fit hawa-min-h-[25px] hawa-py-1 hawa-text-[10px] hawa-px-2 \",\n sm: \"hawa-h-9 hawa-text-[11px] hawa-rounded-md hawa-px-3\",\n lg: \"hawa-h-11 hawa-rounded-md hawa-px-8\",\n xl: \"hawa-h-14 hawa-rounded-md hawa-px-10\",\n icon: \"hawa-h-10 hawa-w-10\",\n smallIcon: \"hawa-h-7 hawa-w-7\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\"\n }\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n centered?: boolean;\n isLoading?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n asChild = false,\n centered = true,\n isLoading,\n children,\n ...props\n },\n ref\n ) => {\n const Comp = \"button\";\n\n // Determine the color for the HawaLoading component based on the variant\n const loadingColor =\n variant === \"outline\" || variant === \"ghost\" || variant === \"neoBrutalism\"\n ? \"hawa-bg-primary\"\n : \"hawa-bg-primary-foreground\";\n\n return (\n <Comp\n className={cn(\n buttonVariants({ variant, size, className }),\n centered && \"hawa-justify-center\",\n // \"hawa-bg-red-500\"\n )}\n ref={ref}\n {...props}\n >\n {isLoading ? (\n <Loading\n design={\n size === \"icon\" || size === \"smallIcon\" ? \"spinner\" : \"dots-pulse\"\n }\n themeMode={variant === \"outline\" ? \"light\" : \"dark\"}\n color={loadingColor}\n size={size === \"sm\" || size === \"xs\" ? \"xs\" : \"button\"}\n />\n ) : (\n children\n )}\n </Comp>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import React, { FC } from \"react\";\n\nimport { cn } from \"@util/index\";\n\ntype LoadingTypes = {\n /** Specifies the size of the loading component.*/\n size?: \"button\" | \"xs\" | \"sm\" | \"normal\" | \"lg\" | \"xl\";\n /** Determines the design of the loading animation.*/\n design?:\n | \"spinner\"\n | \"dots-bounce\"\n | \"dots-pulse\"\n | \"pulse\"\n | \"spinner-dots\"\n | \"squircle\"\n | \"square\"\n | \"progress\"\n | \"orbit\";\n /** Specifies the color of the loading component. By default it will inherit the value of --primary global CSS variable*/\n color?: string;\n classNames?: {\n container?: string;\n track?: string;\n car?: string;\n };\n themeMode?: \"dark\" | \"light\";\n};\n\nexport const Loading: FC<LoadingTypes> = ({\n design = \"spinner\",\n size = \"normal\",\n themeMode = \"light\",\n classNames,\n color,\n ...props\n}) => {\n let sizeStyles = {\n button: \"hawa-h-4 hawa-w-4\",\n xs: \"hawa-h-1 hawa-w-1\",\n sm: \"hawa-h-6 hawa-w-6\",\n normal: \"hawa-h-8 hawa-w-8\",\n lg: \"hawa-h-14 hawa-w-14\",\n xl: \"hawa-h-24 hawa-w-24\"\n };\n let progressSizes = {\n button: \"hawa-h-1\",\n xs: \"hawa-h-1 hawa-w-1\",\n sm: \"hawa-h-6 hawa-w-6\",\n normal: \"\",\n lg: \"hawa-h-6\",\n xl: \"hawa-h-10 hawa-w-64\"\n };\n\n let animationStyles: any = {\n pulse: \"hawa-animate-in hawa-fade-in hawa-duration-1000\",\n bounce: \"hawa-animate-bounce\"\n };\n switch (design.split(\"-\")[0]) {\n case \"dots\":\n return (\n <div\n className={cn(\n \"hawa-flex hawa-flex-row hawa-gap-2\",\n classNames?.container\n )}\n >\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-100 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-200 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-300 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n </div>\n );\n case \"square\":\n return (\n <svg\n className={cn(\n \"squircle-container\",\n sizeStyles[size],\n classNames?.container\n )}\n viewBox=\"0 0 35 35\"\n height=\"35\"\n width=\"35\"\n >\n <rect\n className=\"squircle-track\"\n x=\"2.5\"\n y=\"2.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n width=\"32.5\"\n height=\"32.5\"\n />\n <rect\n className=\"square-car\"\n x=\"2.5\"\n y=\"2.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n width=\"32.5\"\n height=\"32.5\"\n pathLength=\"100\"\n />\n </svg>\n );\n case \"squircle\":\n return (\n <svg\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 37 37\"\n height=\"37\"\n width=\"37\"\n preserveAspectRatio=\"xMidYMid meet\"\n className={cn(\n \"squircle-container\",\n sizeStyles[size],\n classNames?.container\n )}\n >\n <path\n className={cn(\"squircle-track\", classNames?.track)}\n fill=\"none\"\n strokeWidth=\"5\"\n pathLength=\"100\"\n d=\"M0.37 18.5 C0.37 5.772 5.772 0.37 18.5 0.37 S36.63 5.772 36.63 18.5 S31.228 36.63 18.5 36.63 S0.37 31.228 0.37 18.5\"\n ></path>\n <path\n className={cn(\"squircle-car\", classNames?.car)}\n fill=\"none\"\n strokeWidth=\"5\"\n pathLength=\"100\"\n d=\"M0.37 18.5 C0.37 5.772 5.772 0.37 18.5 0.37 S36.63 5.772 36.63 18.5 S31.228 36.63 18.5 36.63 S0.37 31.228 0.37 18.5\"\n ></path>\n </svg>\n );\n case \"progress\":\n return (\n <div\n className={cn(\n \"progress-loading after:hawa-rounded hawa-rounded\",\n progressSizes[size],\n classNames?.container\n )}\n ></div>\n );\n case \"orbit\":\n return (\n <div className={cn(\"orbit-container\", classNames?.container)}></div>\n );\n\n default:\n return (\n <svg\n viewBox=\"0 0 40 40\"\n height=\"40\"\n width=\"40\"\n className={cn(\n \"circle-container\",\n sizeStyles[size],\n classNames?.container\n )}\n >\n <circle\n className={cn(\n \"circle-track\",\n {\n \"hawa-stroke-primary-foreground\": themeMode === \"dark\",\n \"hawa-stroke-primary\": themeMode === \"light\"\n },\n classNames?.track\n )}\n cx=\"20\"\n cy=\"20\"\n r=\"17.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n pathLength=\"100\"\n />\n <circle\n className={cn(\n \"circle-car\",\n {\n \"hawa-stroke-primary-foreground\": themeMode === \"dark\",\n \"hawa-stroke-primary\": themeMode === \"light\"\n },\n classNames?.car\n )}\n cx=\"20\"\n cy=\"20\"\n r=\"17.5\"\n fill=\"none\"\n pathLength=\"100\"\n strokeWidth=\"5px\"\n />\n </svg>\n );\n }\n};\n"],"mappings":"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","names":["React","React","React"]}
1
+ {"version":3,"sources":["../../elements/alert/Alert.tsx","../../util/index.ts","../../elements/button/Button.tsx","../../elements/loading/Loading.tsx"],"sourcesContent":["import React, { useRef, useState, useEffect } from \"react\";\n\nimport { cn } from \"@util/index\";\n\nimport { DirectionType, SeverityType } from \"@_types/commonTypes\";\n\nimport { Button } from \"../button\";\n\ntype AlertTypes = {\n severity?: SeverityType | \"hyper\" | \"oceanic\";\n /** The title of the alert placed above the text of the alert. Can be used alone */\n title?: React.ReactNode;\n /** The text of the alert placed below the title of the alert. Can be used alone */\n text: React.ReactNode;\n /** The duration for the alert to stay on the screen */\n duration?: number;\n direction?: DirectionType;\n actions?: [\n {\n label: string;\n onClick: any;\n variant:\n | \"outline\"\n | \"link\"\n | \"default\"\n | \"destructive\"\n | \"secondary\"\n | \"ghost\";\n }\n ];\n /** Removes the close button */\n persistent?: boolean;\n icon?: any;\n className?: string;\n onAlertClosed?: () => void;\n noDestroy?: boolean;\n};\n\nexport const Alert: React.FunctionComponent<AlertTypes> = ({\n direction = \"ltr\",\n severity = \"none\",\n duration,\n icon,\n className,\n ...props\n}) => {\n const alertRef = useRef<HTMLDivElement>(null);\n const [closed, setClosed] = useState(false);\n\n useEffect(() => {\n if (duration) {\n //To change opacity and hide the component\n const timeoutHide = setTimeout(() => {\n setClosed(true);\n }, duration);\n //To destroy the component after hiding it\n const timeoutDestroy = setTimeout(() => {\n setClosed(true);\n if (alertRef?.current) {\n alertRef?.current.removeChild(alertRef?.current.children[0]);\n }\n }, duration + 1000);\n\n return () => {\n clearTimeout(timeoutHide);\n clearTimeout(timeoutDestroy);\n };\n }\n }, [duration]);\n\n let closeButtonStyle = {\n none: \"\",\n info: \"\",\n warning: \"\",\n error: \"\",\n success: \"\",\n hyper: \"\",\n oceanic: \"\"\n };\n let styleVariant = {\n none: \"hawa-bg-background hawa-border\",\n info: \"hawa-text-info-foreground hawa-bg-info/90\",\n warning: \"hawa-text-warning-foreground hawa-bg-warning/90\",\n error: \"hawa-text-destructive-foreground hawa-bg-destructive/90\",\n success: \"hawa-text-success-foreground hawa-bg-success/90\",\n hyper:\n \"hawa-text-white hawa-bg-gradient-to-tl hawa-from-pink-700 hawa-via-red-500 hawa-to-yellow-600 \",\n oceanic:\n \"hawa-text-white hawa-bg-gradient-to-bl hawa-from-green-500 hawa-via-blue-700 hawa-to-purple-500\"\n };\n\n return (\n <div ref={alertRef}>\n <div\n data-testid=\"alert\"\n aria-label=\"Alert\"\n role=\"alert\"\n dir={direction}\n className={cn(\n \"hawa-relative hawa-mb-4 hawa-flex hawa-flex-col hawa-rounded hawa-p-4 hawa-text-sm hawa-transition-all\",\n styleVariant[severity],\n closed ? \"hawa-opacity-0\" : \"hawa-opacity-100\",\n className\n )}\n >\n <div className=\"hawa-flex hawa-flex-row\">\n {icon && (\n <div\n className={\n direction === \"rtl\"\n ? \"hawa-pl-2 hawa-pt-1\"\n : \"hawa-pr-2 hawa-pt-1\"\n }\n >\n {icon}\n </div>\n )}\n <div className=\"hawa-flex hawa-flex-col\">\n <span\n className={cn(\n \"hawa-font-bold\",\n direction === \"rtl\" ? \"hawa-ml-8\" : \"hawa-mr-8\"\n )}\n >\n {props.title}\n </span>\n <span\n className={cn(\n direction === \"rtl\" ? \"hawa-ml-8\" : \"hawa-mr-8\",\n props.persistent ? \"hawa-w-full\" : \"hawa-w-[calc(100% - 40px)]\"\n )}\n >\n {props.text}\n </span>\n {props.actions && (\n <div className=\"hawa-mt-2 hawa-flex hawa-flex-row hawa-gap-2\">\n {props.actions.map((act, index) => (\n <Button\n key={index}\n variant={act.variant}\n onClick={act.onClick()}\n >\n {act.label}\n </Button>\n ))}\n </div>\n )}\n </div>\n </div>\n {!props.persistent && (\n <button\n type=\"button\"\n data-dismiss-target=\"#alert-default\"\n aria-label=\"Close\"\n className={cn(\n \"hawa-absolute hawa-top-2 hawa-inline-flex hawa-h-9 hawa-w-9 hawa-items-center hawa-justify-center hawa-rounded-inner hawa-p-1.5 hawa-transition-all hover:hawa-text-gray-900\",\n closeButtonStyle[severity],\n direction === \"rtl\" ? \"hawa-left-2\" : \"hawa-right-2\"\n )}\n onClick={() => {\n if (props.onAlertClosed) {\n props.onAlertClosed();\n }\n if (!props.noDestroy) {\n setClosed(true);\n setTimeout(() => {\n if (alertRef?.current) {\n alertRef?.current.removeChild(\n alertRef?.current.children[0]\n );\n }\n }, 200);\n }\n }}\n >\n <span className=\"hawa-sr-only\">Close</span>\n <svg\n aria-label=\"Close Icon\"\n aria-hidden=\"true\"\n className=\"hawa-h-5 hawa-w-5\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n </button>\n )}\n </div>\n </div>\n );\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\ntype Palette = {\n name: string;\n colors: {\n [key: number]: string;\n };\n};\ntype Rgb = {\n r: number;\n g: number;\n b: number;\n};\nfunction hexToRgb(hex: string): Rgb | null {\n const sanitizedHex = hex.replaceAll(\"##\", \"#\");\n const colorParts = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(\n sanitizedHex\n );\n\n if (!colorParts) {\n return null;\n }\n\n const [, r, g, b] = colorParts;\n\n return {\n r: parseInt(r, 16),\n g: parseInt(g, 16),\n b: parseInt(b, 16)\n } as Rgb;\n}\n\nfunction rgbToHex(r: number, g: number, b: number): string {\n const toHex = (c: number) => `0${c.toString(16)}`.slice(-2);\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n}\n\nexport function getTextColor(color: string): \"#FFF\" | \"#333\" {\n const rgbColor = hexToRgb(color);\n\n if (!rgbColor) {\n return \"#333\";\n }\n\n const { r, g, b } = rgbColor;\n const luma = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n\n return luma < 120 ? \"#FFF\" : \"#333\";\n}\n\nfunction lighten(hex: string, intensity: number): string {\n const color = hexToRgb(`#${hex}`);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r + (255 - color.r) * intensity);\n const g = Math.round(color.g + (255 - color.g) * intensity);\n const b = Math.round(color.b + (255 - color.b) * intensity);\n\n return rgbToHex(r, g, b);\n}\n\nfunction darken(hex: string, intensity: number): string {\n const color = hexToRgb(hex);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r * intensity);\n const g = Math.round(color.g * intensity);\n const b = Math.round(color.b * intensity);\n\n return rgbToHex(r, g, b);\n}\nconst parseColor = (color: any) => {\n if (color.startsWith(\"#\")) {\n // Convert hex to RGB\n let r = parseInt(color.slice(1, 3), 16);\n let g = parseInt(color.slice(3, 5), 16);\n let b = parseInt(color.slice(5, 7), 16);\n return [r, g, b];\n } else if (color.startsWith(\"rgb\")) {\n // Extract RGB values from rgb() format\n return color.match(/\\d+/g).map(Number);\n }\n // Default to white if format is unrecognized\n return [255, 255, 255];\n};\nexport const calculateLuminance = (color: any) => {\n const [r, g, b] = parseColor(color)?.map((c: any) => {\n c /= 255;\n return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;\n });\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n};\n\nfunction getPallette(baseColor: string): Palette {\n const name = baseColor;\n\n const response: Palette = {\n name,\n colors: {\n 500: `#${baseColor}`.replace(\"##\", \"#\")\n }\n };\n\n const intensityMap: {\n [key: number]: number;\n } = {\n 50: 0.95,\n 100: 0.9,\n 200: 0.75,\n 300: 0.6,\n 400: 0.3,\n 600: 0.9,\n 700: 0.75,\n 800: 0.6,\n 900: 0.49\n };\n\n [50, 100, 200, 300, 400].forEach((level) => {\n response.colors[level] = lighten(baseColor, intensityMap[level]);\n });\n [600, 700, 800, 900].forEach((level) => {\n response.colors[level] = darken(baseColor, intensityMap[level]);\n });\n\n return response as Palette;\n}\n\nexport { getPallette };\n\n// const hexToRgb = (hex) => {\n// let d = hex?.split(\"#\")[1];\n// var aRgbHex = d?.match(/.{1,2}/g);\n// var aRgb = [\n// parseInt(aRgbHex[0], 16),\n// parseInt(aRgbHex[1], 16),\n// parseInt(aRgbHex[2], 16)\n// ];\n// return aRgb;\n// };\n// const getTextColor = (backColor) => {\n// let rgbArray = hexToRgb(backColor);\n// if (rgbArray[0] * 0.299 + rgbArray[1] * 0.587 + rgbArray[2] * 0.114 > 186) {\n// return \"#000000\";\n// } else {\n// return \"#ffffff\";\n// }\n// };\n// const replaceAt = function (string, index, replacement) {\n// // if (replacement == \"\" || replacement == \" \") {\n// // return (\n// // string.substring(0, index) +\n// // string.substring(index + replacement.length )\n// // );\n// // }\n// const replaced = string.substring(0, index) + replacement + string.substring(index + 1)\n// return replaced\n// };\n\n// export { hexToRgb, getTextColor, replaceAt };\n","import * as React from \"react\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@util/index\";\nimport { Loading } from \"../loading/Loading\";\n\nconst buttonVariants = cva(\n \"hawa-inline-flex hawa-items-center hawa-select-none hawa-rounded-md hawa-text-sm hawa-font-medium hawa-ring-offset-background hawa-transition-colors focus-visible:hawa-outline-none focus-visible:hawa-ring-2 focus-visible:hawa-ring-ring focus-visible:hawa-ring-offset-2 disabled:hawa-pointer-events-none disabled:hawa-opacity-50\",\n {\n variants: {\n variant: {\n default:\n \"hawa-bg-primary hawa-text-primary-foreground hover:hawa-bg-primary/90\",\n light: \"hawa-bg-primary/20 hawa-text-primary hover:hawa-bg-primary/40\",\n destructive:\n \"hawa-bg-destructive hawa-text-destructive-foreground hover:hawa-bg-destructive/90\",\n outline:\n \"hawa-border hawa-border-input hawa-bg-transparent hover:hawa-bg-accent hover:hawa-text-accent-foreground\",\n secondary:\n \"hawa-bg-secondary hawa-text-secondary-foreground hover:hawa-bg-secondary/80\",\n ghost: \"hover:hawa-bg-accent hover:hawa-text-accent-foreground\",\n link: \"hawa-text-primary hawa-underline-offset-4 hover:hawa-underline\",\n combobox: \"hawa-bg-background hawa-border\",\n neoBrutalism: \"neo-brutalism\"\n // \"hawa-cursor-pointer hawa-transition-all hawa-uppercase hawa-font-mono dark:hawa-bg-black hawa-font-bold hawa-py-2 hawa-px-4 hawa-rounded hawa-border-2 hawa-border-primary hawa-shadow-color-primary hawa-transition-[hawa-transform_50ms, hawa-box-shadow_50ms] active:hawa-translate-x-0.5 active:hawa-translate-y-0.5 active:hawa-shadow-color-primary-active shadow-color-primary active:shadow-color-primary-active\",\n },\n size: {\n default: \"hawa-h-10 hawa-px-4 hawa-py-2\",\n heightless: \"hawa-px-4 hawa-py-4\",\n xs: \"hawa-h-fit hawa-min-h-[25px] hawa-py-1 hawa-text-[10px] hawa-px-2 \",\n sm: \"hawa-h-9 hawa-text-[11px] hawa-rounded-md hawa-px-3\",\n lg: \"hawa-h-11 hawa-rounded-md hawa-px-8\",\n xl: \"hawa-h-14 hawa-rounded-md hawa-px-10\",\n icon: \"hawa-h-10 hawa-w-10\",\n smallIcon: \"hawa-h-7 hawa-w-7\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\"\n }\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n centered?: boolean;\n isLoading?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n asChild = false,\n centered = true,\n isLoading,\n children,\n ...props\n },\n ref\n ) => {\n const Comp = \"button\";\n\n // Determine the color for the HawaLoading component based on the variant\n const loadingColor =\n variant === \"outline\" || variant === \"ghost\" || variant === \"neoBrutalism\"\n ? \"hawa-bg-primary\"\n : \"hawa-bg-primary-foreground\";\n\n return (\n <Comp\n className={cn(\n buttonVariants({ variant, size, className }),\n centered && \"hawa-justify-center\",\n // \"hawa-bg-red-500\"\n )}\n ref={ref}\n {...props}\n >\n {isLoading ? (\n <Loading\n design={\n size === \"icon\" || size === \"smallIcon\" ? \"spinner\" : \"dots-pulse\"\n }\n themeMode={variant === \"outline\" ? \"light\" : \"dark\"}\n color={loadingColor}\n size={size === \"sm\" || size === \"xs\" ? \"xs\" : \"button\"}\n />\n ) : (\n children\n )}\n </Comp>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import React, { FC } from \"react\";\n\nimport { cn } from \"@util/index\";\n\ntype LoadingTypes = {\n /** Specifies the size of the loading component.*/\n size?: \"button\" | \"xs\" | \"sm\" | \"normal\" | \"lg\" | \"xl\";\n /** Determines the design of the loading animation.*/\n design?:\n | \"spinner\"\n | \"dots-bounce\"\n | \"dots-pulse\"\n | \"pulse\"\n | \"spinner-dots\"\n | \"squircle\"\n | \"square\"\n | \"progress\"\n | \"orbit\";\n /** Specifies the color of the loading component. By default it will inherit the value of --primary global CSS variable*/\n color?: string;\n classNames?: {\n container?: string;\n track?: string;\n car?: string;\n };\n themeMode?: \"dark\" | \"light\";\n};\n\nexport const Loading: FC<LoadingTypes> = ({\n design = \"spinner\",\n size = \"normal\",\n themeMode = \"light\",\n classNames,\n color,\n ...props\n}) => {\n let sizeStyles = {\n button: \"hawa-h-4 hawa-w-4\",\n xs: \"hawa-h-1 hawa-w-1\",\n sm: \"hawa-h-6 hawa-w-6\",\n normal: \"hawa-h-8 hawa-w-8\",\n lg: \"hawa-h-14 hawa-w-14\",\n xl: \"hawa-h-24 hawa-w-24\"\n };\n let progressSizes = {\n button: \"hawa-h-1\",\n xs: \"hawa-h-1 hawa-w-1\",\n sm: \"hawa-h-6 hawa-w-6\",\n normal: \"\",\n lg: \"hawa-h-6\",\n xl: \"hawa-h-10 hawa-w-64\"\n };\n\n let animationStyles: any = {\n pulse: \"hawa-animate-in hawa-fade-in hawa-duration-1000\",\n bounce: \"hawa-animate-bounce\"\n };\n switch (design.split(\"-\")[0]) {\n case \"dots\":\n return (\n <div\n className={cn(\n \"hawa-flex hawa-flex-row hawa-gap-2\",\n classNames?.container\n )}\n >\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-100 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-200 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-300 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n </div>\n );\n case \"square\":\n return (\n <svg\n className={cn(\n \"squircle-container\",\n sizeStyles[size],\n classNames?.container\n )}\n viewBox=\"0 0 35 35\"\n height=\"35\"\n width=\"35\"\n >\n <rect\n className=\"squircle-track\"\n x=\"2.5\"\n y=\"2.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n width=\"32.5\"\n height=\"32.5\"\n />\n <rect\n className=\"square-car\"\n x=\"2.5\"\n y=\"2.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n width=\"32.5\"\n height=\"32.5\"\n pathLength=\"100\"\n />\n </svg>\n );\n case \"squircle\":\n return (\n <svg\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 37 37\"\n height=\"37\"\n width=\"37\"\n preserveAspectRatio=\"xMidYMid meet\"\n className={cn(\n \"squircle-container\",\n sizeStyles[size],\n classNames?.container\n )}\n >\n <path\n className={cn(\"squircle-track\", classNames?.track)}\n fill=\"none\"\n strokeWidth=\"5\"\n pathLength=\"100\"\n d=\"M0.37 18.5 C0.37 5.772 5.772 0.37 18.5 0.37 S36.63 5.772 36.63 18.5 S31.228 36.63 18.5 36.63 S0.37 31.228 0.37 18.5\"\n ></path>\n <path\n className={cn(\"squircle-car\", classNames?.car)}\n fill=\"none\"\n strokeWidth=\"5\"\n pathLength=\"100\"\n d=\"M0.37 18.5 C0.37 5.772 5.772 0.37 18.5 0.37 S36.63 5.772 36.63 18.5 S31.228 36.63 18.5 36.63 S0.37 31.228 0.37 18.5\"\n ></path>\n </svg>\n );\n case \"progress\":\n return (\n <div\n className={cn(\n \"progress-loading after:hawa-rounded hawa-rounded\",\n progressSizes[size],\n classNames?.container\n )}\n ></div>\n );\n case \"orbit\":\n return (\n <div className={cn(\"orbit-container\", classNames?.container)}></div>\n );\n\n default:\n return (\n <svg\n viewBox=\"0 0 40 40\"\n height=\"40\"\n width=\"40\"\n className={cn(\n \"circle-container\",\n sizeStyles[size],\n classNames?.container\n )}\n >\n <circle\n className={cn(\n \"circle-track\",\n {\n \"hawa-stroke-primary-foreground\": themeMode === \"dark\",\n \"hawa-stroke-primary\": themeMode === \"light\"\n },\n classNames?.track\n )}\n cx=\"20\"\n cy=\"20\"\n r=\"17.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n pathLength=\"100\"\n />\n <circle\n className={cn(\n \"circle-car\",\n {\n \"hawa-stroke-primary-foreground\": themeMode === \"dark\",\n \"hawa-stroke-primary\": themeMode === \"light\"\n },\n classNames?.car\n )}\n cx=\"20\"\n cy=\"20\"\n r=\"17.5\"\n fill=\"none\"\n pathLength=\"100\"\n strokeWidth=\"5px\"\n />\n </svg>\n );\n }\n};\n"],"mappings":"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","names":["React","React","React"]}
@@ -841,7 +841,7 @@ var Alert = ({
841
841
  oceanic: ""
842
842
  };
843
843
  let styleVariant = {
844
- none: "hawa-text-gray-700 hawa-bg-gray-100 dark:hawa-bg-gray-900 ",
844
+ none: "hawa-bg-background hawa-border",
845
845
  info: "hawa-text-info-foreground hawa-bg-info/90",
846
846
  warning: "hawa-text-warning-foreground hawa-bg-warning/90",
847
847
  error: "hawa-text-destructive-foreground hawa-bg-destructive/90",
@@ -523,7 +523,7 @@ var Alert = ({
523
523
  oceanic: ""
524
524
  };
525
525
  let styleVariant = {
526
- none: "hawa-text-gray-700 hawa-bg-gray-100 dark:hawa-bg-gray-900 ",
526
+ none: "hawa-bg-background hawa-border",
527
527
  info: "hawa-text-info-foreground hawa-bg-info/90",
528
528
  warning: "hawa-text-warning-foreground hawa-bg-warning/90",
529
529
  error: "hawa-text-destructive-foreground hawa-bg-destructive/90",
@@ -862,7 +862,7 @@ var Alert = ({
862
862
  oceanic: ""
863
863
  };
864
864
  let styleVariant = {
865
- none: "hawa-text-gray-700 hawa-bg-gray-100 dark:hawa-bg-gray-900 ",
865
+ none: "hawa-bg-background hawa-border",
866
866
  info: "hawa-text-info-foreground hawa-bg-info/90",
867
867
  warning: "hawa-text-warning-foreground hawa-bg-warning/90",
868
868
  error: "hawa-text-destructive-foreground hawa-bg-destructive/90",
@@ -26,7 +26,7 @@ import {
26
26
  UncheckMark,
27
27
  VeryBadEmoji,
28
28
  VeryGoodEmoji
29
- } from "../chunk-N4O2A727.mjs";
29
+ } from "../chunk-AZJHCUGR.mjs";
30
30
  import {
31
31
  Button,
32
32
  Card,
@@ -46,7 +46,7 @@ var Alert = ({
46
46
  oceanic: ""
47
47
  };
48
48
  let styleVariant = {
49
- none: "hawa-text-gray-700 hawa-bg-gray-100 dark:hawa-bg-gray-900 ",
49
+ none: "hawa-bg-background hawa-border",
50
50
  info: "hawa-text-info-foreground hawa-bg-info/90",
51
51
  warning: "hawa-text-warning-foreground hawa-bg-warning/90",
52
52
  error: "hawa-text-destructive-foreground hawa-bg-destructive/90",
@@ -2227,7 +2227,7 @@ var Alert = ({
2227
2227
  oceanic: ""
2228
2228
  };
2229
2229
  let styleVariant = {
2230
- none: "hawa-text-gray-700 hawa-bg-gray-100 dark:hawa-bg-gray-900 ",
2230
+ none: "hawa-bg-background hawa-border",
2231
2231
  info: "hawa-text-info-foreground hawa-bg-info/90",
2232
2232
  warning: "hawa-text-warning-foreground hawa-bg-warning/90",
2233
2233
  error: "hawa-text-destructive-foreground hawa-bg-destructive/90",
@@ -28,7 +28,7 @@ import {
28
28
  TabsTrigger,
29
29
  Textarea,
30
30
  UncheckMark
31
- } from "../chunk-N4O2A727.mjs";
31
+ } from "../chunk-AZJHCUGR.mjs";
32
32
  import {
33
33
  Sheet,
34
34
  SheetClose,
@@ -382,7 +382,7 @@ var Alert = ({
382
382
  oceanic: ""
383
383
  };
384
384
  let styleVariant = {
385
- none: "hawa-text-gray-700 hawa-bg-gray-100 dark:hawa-bg-gray-900 ",
385
+ none: "hawa-bg-background hawa-border",
386
386
  info: "hawa-text-info-foreground hawa-bg-info/90",
387
387
  warning: "hawa-text-warning-foreground hawa-bg-warning/90",
388
388
  error: "hawa-text-destructive-foreground hawa-bg-destructive/90",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../elements/fileDropzone/index.ts","../../elements/fileDropzone/FileDropzone.tsx","../../elements/alert/Alert.tsx","../../util/index.ts","../../elements/button/Button.tsx","../../elements/loading/Loading.tsx"],"sourcesContent":["export * from \"./FileDropzone\";\n","import React, { useEffect, useState } from \"react\";\nimport { useDropzone } from \"react-dropzone\";\n\nimport clsx from \"clsx\";\n\nimport { Alert } from \"../alert/Alert\";\nimport { Button } from \"../button\";\n\ntype FileDropzoneTypes = {\n /** The text label above the component. Consistant with the other form input fields */\n label?: string;\n files: [File];\n setFiles: any;\n setDeletedFiles: any;\n maxFiles: number;\n accept: any;\n onAcceptedFiles: any;\n showPreview: any;\n onDeleteFile: any;\n onClearFiles: any;\n maxSize: number;\n errorMessages: string;\n disclaimer?: boolean;\n termsLink?: string;\n privacyLink?: string;\n /** The translation object, use this to replace the default text with any translated text you want.*/\n texts: {\n errorUploading: any;\n clickHereToUpload: any;\n maxFileSize: any;\n tooManyFiles: any;\n fileTooLarge: any;\n acceptedFileTypes: any;\n invalidFileType: any;\n terms?: string;\n privacyPolicy?: string;\n disclaimer?: string;\n and?: string;\n };\n};\n\nexport const FileDropzone: React.FunctionComponent<FileDropzoneTypes> = ({\n texts,\n files,\n setFiles,\n setDeletedFiles,\n onAcceptedFiles,\n errorMessages,\n maxFiles,\n accept,\n showPreview,\n onDeleteFile,\n onClearFiles,\n disclaimer,\n maxSize,\n label,\n termsLink,\n privacyLink\n}) => {\n const [cmp, setCmp] = useState(0);\n const [max, setMax] = useState<any>(0);\n\n const {\n getRootProps,\n getInputProps,\n fileRejections,\n acceptedFiles,\n isDragActive\n } = useDropzone({\n multiple: true,\n accept: accept,\n maxSize: maxSize,\n maxFiles: maxFiles,\n onDrop: (acceptedFiles: any) => {\n setFiles(\n acceptedFiles.map((file: any, index: any) =>\n Object.assign(file, {\n preview: URL.createObjectURL(file)\n })\n )\n );\n }\n });\n useEffect(\n () => () => {\n files?.forEach((file: any) => {\n URL.revokeObjectURL(file.preview);\n });\n },\n [files]\n );\n useEffect(() => {\n setFiles(acceptedFiles);\n }, [acceptedFiles, cmp, setFiles]);\n onClearFiles = () => {\n acceptedFiles.length = 0;\n acceptedFiles.splice(0, acceptedFiles.length);\n setFiles([]);\n };\n\n const clearAllFiles = () => {\n acceptedFiles.length = 0;\n setFiles([]);\n };\n\n useEffect(() => {\n if (maxSize > 0) {\n const k = 1024;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n const i = Math.floor(Math.log(maxSize) / Math.log(1024));\n\n setMax(\n parseFloat((maxSize / Math.pow(1024, i)).toFixed(2)) + \" \" + sizes[i]\n );\n }\n }, [maxSize]);\n const errs = fileRejections.map((rej: any, i: any) => {\n switch (rej.errors[0].code) {\n case \"file-too-large\":\n return (\n <Alert\n key={i}\n text={rej.file.name}\n title={texts.fileTooLarge}\n severity=\"error\"\n />\n );\n case \"too-many-files\":\n return (\n <Alert\n key={i}\n text={rej.file.name}\n title={texts.tooManyFiles}\n severity=\"error\"\n />\n );\n case \"file-invalid-type\":\n return (\n <Alert\n key={i}\n text={rej.file.name}\n title={texts.invalidFileType}\n severity=\"error\"\n />\n );\n\n default:\n return (\n <Alert\n key={i}\n text={rej.file.name}\n title={rej.errors[0].code}\n severity=\"error\"\n />\n );\n }\n });\n const thumbs = files?.map((file: any, index: any) => (\n <div className=\"hawa-relative hawa-rounded\" key={index}>\n <button\n onClick={(e) => {\n e.stopPropagation();\n acceptedFiles.splice(acceptedFiles.indexOf(file), 1);\n setCmp(Math.random);\n onDeleteFile(file);\n }}\n type=\"button\"\n className=\"hawa-absolute hawa-left-0 hawa-ml-auto hawa-inline-flex hawa-items-center hawa-rounded-inner hawa-rounded-bl-none hawa-rounded-tr-none hawa-bg-gray-900 hawa-p-1.5 hawa-text-sm hawa-text-gray-400 hawa-transition-all hover:hawa-bg-gray-200 hover:hawa-text-gray-900 dark:hover:hawa-bg-gray-600 dark:hover:hawa-text-white\"\n data-modal-toggle=\"defaultModal\"\n >\n <svg\n aria-hidden=\"true\"\n className=\"hawa-h-5 hawa-w-5\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n <span className=\"hawa-sr-only\">Close modal</span>\n </button>\n\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n overflow: \"hidden\",\n height: 100,\n width: 100,\n backgroundImage: `url(${file.preview})`,\n backgroundSize: \"cover\",\n backgroundPosition: \"center\",\n border: \"1px solid black\"\n }}\n className=\"hawa-rounded\"\n key={file.name}\n />\n </div>\n ));\n\n return (\n <div>\n {label && (\n <div className=\"hawa-mb-2 hawa-block hawa-text-sm hawa-font-medium hawa-text-gray-900 dark:hawa-text-gray-300\">\n {label}\n </div>\n )}\n <div\n className={clsx(\n \"hawa-flex hawa-flex-col hawa-justify-center hawa-rounded hawa-border hawa-border-dashed hawa-p-6 hawa-transition-all \",\n isDragActive\n ? \"hawa-bg-muted\"\n : \"hawa-bg-muted/20 hover:hawa-bg-muted/50 \"\n )}\n >\n <div {...getRootProps({})}>\n <p {...getInputProps()} />\n <div className=\"hawa-flex hawa-flex-col hawa-items-center hawa-justify-center hawa-gap-2 hawa-pt-4 hawa-text-center\">\n <svg\n stroke=\"currentColor\"\n fill=\"none\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n height=\"1.5em\"\n width=\"1.5em\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"></path>\n <path d=\"M19 11v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2\"></path>\n <path d=\"M13 13l9 3l-4 2l-2 4l-3 -9\"></path>\n <path d=\"M3 3l0 .01\"></path>\n <path d=\"M7 3l0 .01\"></path>\n <path d=\"M11 3l0 .01\"></path>\n <path d=\"M15 3l0 .01\"></path>\n <path d=\"M3 7l0 .01\"></path>\n <path d=\"M3 11l0 .01\"></path>\n <path d=\"M3 15l0 .01\"></path>\n </svg>\n {typeof texts.clickHereToUpload === \"function\"\n ? texts.clickHereToUpload()\n : texts.clickHereToUpload}\n </div>\n <div className=\"hawa-select-none hawa-pt-2 hawa-text-center hawa-text-xs\">\n {texts.acceptedFileTypes} {accept.split(\",\")}\n </div>\n <div className=\"hawa-select-none hawa-pb-2 hawa-pt-1 hawa-text-center hawa-text-xs\">\n {texts.maxFileSize} {max}\n </div>\n </div>\n {acceptedFiles.length > 0 && (\n <div className=\"hawa-flex hawa-justify-center hawa-rounded-lg hawa-p-2 \">\n <Button onClick={clearAllFiles}>Clear All</Button>\n </div>\n )}\n {acceptedFiles.length > 0 && thumbs && showPreview ? (\n <aside className=\"hawa-flex hawa-flex-row hawa-flex-wrap hawa-justify-center hawa-gap-2 hawa-rounded-lg hawa-p-2\">\n {thumbs}\n </aside>\n ) : null}\n <div className=\"px-4\">{fileRejections[0]?.errors[0]?.code && errs}</div>\n </div>\n {disclaimer && (\n <div className=\"hawa-mt-2 hawa-text-sm hawa-text-muted-foreground/50\">\n {texts.disclaimer ?? \"By uploading a file you agree to our\"}{\" \"}\n <a\n href={termsLink}\n className=\"clickable-link hawa-text-muted-foreground/50\"\n >\n {texts.terms ?? \"Terms\"}\n </a>{\" \"}\n {texts.and ?? \"and\"}{\" \"}\n <a\n href={privacyLink}\n className=\"clickable-link hawa-text-muted-foreground/50\"\n >\n {texts.privacyPolicy ?? \"Privacy Policy\"}\n </a>\n </div>\n )}\n </div>\n );\n};\n","import React, { useRef, useState, useEffect } from \"react\";\n\nimport { cn } from \"@util/index\";\n\nimport { DirectionType, SeverityType } from \"@_types/commonTypes\";\n\nimport { Button } from \"../button\";\n\ntype AlertTypes = {\n severity?: SeverityType | \"hyper\" | \"oceanic\";\n /** The title of the alert placed above the text of the alert. Can be used alone */\n title?: React.ReactNode;\n /** The text of the alert placed below the title of the alert. Can be used alone */\n text: React.ReactNode;\n /** The duration for the alert to stay on the screen */\n duration?: number;\n direction?: DirectionType;\n actions?: [\n {\n label: string;\n onClick: any;\n variant:\n | \"outline\"\n | \"link\"\n | \"default\"\n | \"destructive\"\n | \"secondary\"\n | \"ghost\";\n }\n ];\n /** Removes the close button */\n persistent?: boolean;\n icon?: any;\n className?: string;\n onAlertClosed?: () => void;\n noDestroy?: boolean;\n};\n\nexport const Alert: React.FunctionComponent<AlertTypes> = ({\n direction = \"ltr\",\n severity = \"none\",\n duration,\n icon,\n className,\n ...props\n}) => {\n const alertRef = useRef<HTMLDivElement>(null);\n const [closed, setClosed] = useState(false);\n\n useEffect(() => {\n if (duration) {\n //To change opacity and hide the component\n const timeoutHide = setTimeout(() => {\n setClosed(true);\n }, duration);\n //To destroy the component after hiding it\n const timeoutDestroy = setTimeout(() => {\n setClosed(true);\n if (alertRef?.current) {\n alertRef?.current.removeChild(alertRef?.current.children[0]);\n }\n }, duration + 1000);\n\n return () => {\n clearTimeout(timeoutHide);\n clearTimeout(timeoutDestroy);\n };\n }\n }, [duration]);\n\n let closeButtonStyle = {\n none: \"\",\n info: \"\",\n warning: \"\",\n error: \"\",\n success: \"\",\n hyper: \"\",\n oceanic: \"\"\n };\n let styleVariant = {\n none: \"hawa-text-gray-700 hawa-bg-gray-100 dark:hawa-bg-gray-900 \",\n info: \"hawa-text-info-foreground hawa-bg-info/90\",\n warning: \"hawa-text-warning-foreground hawa-bg-warning/90\",\n error: \"hawa-text-destructive-foreground hawa-bg-destructive/90\",\n success: \"hawa-text-success-foreground hawa-bg-success/90\",\n hyper:\n \"hawa-text-white hawa-bg-gradient-to-tl hawa-from-pink-700 hawa-via-red-500 hawa-to-yellow-600 \",\n oceanic:\n \"hawa-text-white hawa-bg-gradient-to-bl hawa-from-green-500 hawa-via-blue-700 hawa-to-purple-500\"\n };\n\n return (\n <div ref={alertRef}>\n <div\n data-testid=\"alert\"\n aria-label=\"Alert\"\n role=\"alert\"\n dir={direction}\n className={cn(\n \"hawa-relative hawa-mb-4 hawa-flex hawa-flex-col hawa-rounded hawa-p-4 hawa-text-sm hawa-transition-all\",\n styleVariant[severity],\n closed ? \"hawa-opacity-0\" : \"hawa-opacity-100\",\n className\n )}\n >\n <div className=\"hawa-flex hawa-flex-row\">\n {icon && (\n <div\n className={\n direction === \"rtl\"\n ? \"hawa-pl-2 hawa-pt-1\"\n : \"hawa-pr-2 hawa-pt-1\"\n }\n >\n {icon}\n </div>\n )}\n <div className=\"hawa-flex hawa-flex-col\">\n <span\n className={cn(\n \"hawa-font-bold\",\n direction === \"rtl\" ? \"hawa-ml-8\" : \"hawa-mr-8\"\n )}\n >\n {props.title}\n </span>\n <span\n className={cn(\n direction === \"rtl\" ? \"hawa-ml-8\" : \"hawa-mr-8\",\n props.persistent ? \"hawa-w-full\" : \"hawa-w-[calc(100% - 40px)]\"\n )}\n >\n {props.text}\n </span>\n {props.actions && (\n <div className=\"hawa-mt-2 hawa-flex hawa-flex-row hawa-gap-2\">\n {props.actions.map((act, index) => (\n <Button\n key={index}\n variant={act.variant}\n onClick={act.onClick()}\n >\n {act.label}\n </Button>\n ))}\n </div>\n )}\n </div>\n </div>\n {!props.persistent && (\n <button\n type=\"button\"\n data-dismiss-target=\"#alert-default\"\n aria-label=\"Close\"\n className={cn(\n \"hawa-absolute hawa-top-2 hawa-inline-flex hawa-h-9 hawa-w-9 hawa-items-center hawa-justify-center hawa-rounded-inner hawa-p-1.5 hawa-transition-all hover:hawa-text-gray-900\",\n closeButtonStyle[severity],\n direction === \"rtl\" ? \"hawa-left-2\" : \"hawa-right-2\"\n )}\n onClick={() => {\n if (props.onAlertClosed) {\n props.onAlertClosed();\n }\n if (!props.noDestroy) {\n setClosed(true);\n setTimeout(() => {\n if (alertRef?.current) {\n alertRef?.current.removeChild(\n alertRef?.current.children[0]\n );\n }\n }, 200);\n }\n }}\n >\n <span className=\"hawa-sr-only\">Close</span>\n <svg\n aria-label=\"Close Icon\"\n aria-hidden=\"true\"\n className=\"hawa-h-5 hawa-w-5\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n </button>\n )}\n </div>\n </div>\n );\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\ntype Palette = {\n name: string;\n colors: {\n [key: number]: string;\n };\n};\ntype Rgb = {\n r: number;\n g: number;\n b: number;\n};\nfunction hexToRgb(hex: string): Rgb | null {\n const sanitizedHex = hex.replaceAll(\"##\", \"#\");\n const colorParts = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(\n sanitizedHex\n );\n\n if (!colorParts) {\n return null;\n }\n\n const [, r, g, b] = colorParts;\n\n return {\n r: parseInt(r, 16),\n g: parseInt(g, 16),\n b: parseInt(b, 16)\n } as Rgb;\n}\n\nfunction rgbToHex(r: number, g: number, b: number): string {\n const toHex = (c: number) => `0${c.toString(16)}`.slice(-2);\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n}\n\nexport function getTextColor(color: string): \"#FFF\" | \"#333\" {\n const rgbColor = hexToRgb(color);\n\n if (!rgbColor) {\n return \"#333\";\n }\n\n const { r, g, b } = rgbColor;\n const luma = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n\n return luma < 120 ? \"#FFF\" : \"#333\";\n}\n\nfunction lighten(hex: string, intensity: number): string {\n const color = hexToRgb(`#${hex}`);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r + (255 - color.r) * intensity);\n const g = Math.round(color.g + (255 - color.g) * intensity);\n const b = Math.round(color.b + (255 - color.b) * intensity);\n\n return rgbToHex(r, g, b);\n}\n\nfunction darken(hex: string, intensity: number): string {\n const color = hexToRgb(hex);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r * intensity);\n const g = Math.round(color.g * intensity);\n const b = Math.round(color.b * intensity);\n\n return rgbToHex(r, g, b);\n}\nconst parseColor = (color: any) => {\n if (color.startsWith(\"#\")) {\n // Convert hex to RGB\n let r = parseInt(color.slice(1, 3), 16);\n let g = parseInt(color.slice(3, 5), 16);\n let b = parseInt(color.slice(5, 7), 16);\n return [r, g, b];\n } else if (color.startsWith(\"rgb\")) {\n // Extract RGB values from rgb() format\n return color.match(/\\d+/g).map(Number);\n }\n // Default to white if format is unrecognized\n return [255, 255, 255];\n};\nexport const calculateLuminance = (color: any) => {\n const [r, g, b] = parseColor(color)?.map((c: any) => {\n c /= 255;\n return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;\n });\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n};\n\nfunction getPallette(baseColor: string): Palette {\n const name = baseColor;\n\n const response: Palette = {\n name,\n colors: {\n 500: `#${baseColor}`.replace(\"##\", \"#\")\n }\n };\n\n const intensityMap: {\n [key: number]: number;\n } = {\n 50: 0.95,\n 100: 0.9,\n 200: 0.75,\n 300: 0.6,\n 400: 0.3,\n 600: 0.9,\n 700: 0.75,\n 800: 0.6,\n 900: 0.49\n };\n\n [50, 100, 200, 300, 400].forEach((level) => {\n response.colors[level] = lighten(baseColor, intensityMap[level]);\n });\n [600, 700, 800, 900].forEach((level) => {\n response.colors[level] = darken(baseColor, intensityMap[level]);\n });\n\n return response as Palette;\n}\n\nexport { getPallette };\n\n// const hexToRgb = (hex) => {\n// let d = hex?.split(\"#\")[1];\n// var aRgbHex = d?.match(/.{1,2}/g);\n// var aRgb = [\n// parseInt(aRgbHex[0], 16),\n// parseInt(aRgbHex[1], 16),\n// parseInt(aRgbHex[2], 16)\n// ];\n// return aRgb;\n// };\n// const getTextColor = (backColor) => {\n// let rgbArray = hexToRgb(backColor);\n// if (rgbArray[0] * 0.299 + rgbArray[1] * 0.587 + rgbArray[2] * 0.114 > 186) {\n// return \"#000000\";\n// } else {\n// return \"#ffffff\";\n// }\n// };\n// const replaceAt = function (string, index, replacement) {\n// // if (replacement == \"\" || replacement == \" \") {\n// // return (\n// // string.substring(0, index) +\n// // string.substring(index + replacement.length )\n// // );\n// // }\n// const replaced = string.substring(0, index) + replacement + string.substring(index + 1)\n// return replaced\n// };\n\n// export { hexToRgb, getTextColor, replaceAt };\n","import * as React from \"react\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@util/index\";\nimport { Loading } from \"../loading/Loading\";\n\nconst buttonVariants = cva(\n \"hawa-inline-flex hawa-items-center hawa-select-none hawa-rounded-md hawa-text-sm hawa-font-medium hawa-ring-offset-background hawa-transition-colors focus-visible:hawa-outline-none focus-visible:hawa-ring-2 focus-visible:hawa-ring-ring focus-visible:hawa-ring-offset-2 disabled:hawa-pointer-events-none disabled:hawa-opacity-50\",\n {\n variants: {\n variant: {\n default:\n \"hawa-bg-primary hawa-text-primary-foreground hover:hawa-bg-primary/90\",\n light: \"hawa-bg-primary/20 hawa-text-primary hover:hawa-bg-primary/40\",\n destructive:\n \"hawa-bg-destructive hawa-text-destructive-foreground hover:hawa-bg-destructive/90\",\n outline:\n \"hawa-border hawa-border-input hawa-bg-transparent hover:hawa-bg-accent hover:hawa-text-accent-foreground\",\n secondary:\n \"hawa-bg-secondary hawa-text-secondary-foreground hover:hawa-bg-secondary/80\",\n ghost: \"hover:hawa-bg-accent hover:hawa-text-accent-foreground\",\n link: \"hawa-text-primary hawa-underline-offset-4 hover:hawa-underline\",\n combobox: \"hawa-bg-background hawa-border\",\n neoBrutalism: \"neo-brutalism\"\n // \"hawa-cursor-pointer hawa-transition-all hawa-uppercase hawa-font-mono dark:hawa-bg-black hawa-font-bold hawa-py-2 hawa-px-4 hawa-rounded hawa-border-2 hawa-border-primary hawa-shadow-color-primary hawa-transition-[hawa-transform_50ms, hawa-box-shadow_50ms] active:hawa-translate-x-0.5 active:hawa-translate-y-0.5 active:hawa-shadow-color-primary-active shadow-color-primary active:shadow-color-primary-active\",\n },\n size: {\n default: \"hawa-h-10 hawa-px-4 hawa-py-2\",\n heightless: \"hawa-px-4 hawa-py-4\",\n xs: \"hawa-h-fit hawa-min-h-[25px] hawa-py-1 hawa-text-[10px] hawa-px-2 \",\n sm: \"hawa-h-9 hawa-text-[11px] hawa-rounded-md hawa-px-3\",\n lg: \"hawa-h-11 hawa-rounded-md hawa-px-8\",\n xl: \"hawa-h-14 hawa-rounded-md hawa-px-10\",\n icon: \"hawa-h-10 hawa-w-10\",\n smallIcon: \"hawa-h-7 hawa-w-7\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\"\n }\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n centered?: boolean;\n isLoading?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n asChild = false,\n centered = true,\n isLoading,\n children,\n ...props\n },\n ref\n ) => {\n const Comp = \"button\";\n\n // Determine the color for the HawaLoading component based on the variant\n const loadingColor =\n variant === \"outline\" || variant === \"ghost\" || variant === \"neoBrutalism\"\n ? \"hawa-bg-primary\"\n : \"hawa-bg-primary-foreground\";\n\n return (\n <Comp\n className={cn(\n buttonVariants({ variant, size, className }),\n centered && \"hawa-justify-center\",\n // \"hawa-bg-red-500\"\n )}\n ref={ref}\n {...props}\n >\n {isLoading ? (\n <Loading\n design={\n size === \"icon\" || size === \"smallIcon\" ? \"spinner\" : \"dots-pulse\"\n }\n themeMode={variant === \"outline\" ? \"light\" : \"dark\"}\n color={loadingColor}\n size={size === \"sm\" || size === \"xs\" ? \"xs\" : \"button\"}\n />\n ) : (\n children\n )}\n </Comp>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import React, { FC } from \"react\";\n\nimport { cn } from \"@util/index\";\n\ntype LoadingTypes = {\n /** Specifies the size of the loading component.*/\n size?: \"button\" | \"xs\" | \"sm\" | \"normal\" | \"lg\" | \"xl\";\n /** Determines the design of the loading animation.*/\n design?:\n | \"spinner\"\n | \"dots-bounce\"\n | \"dots-pulse\"\n | \"pulse\"\n | \"spinner-dots\"\n | \"squircle\"\n | \"square\"\n | \"progress\"\n | \"orbit\";\n /** Specifies the color of the loading component. By default it will inherit the value of --primary global CSS variable*/\n color?: string;\n classNames?: {\n container?: string;\n track?: string;\n car?: string;\n };\n themeMode?: \"dark\" | \"light\";\n};\n\nexport const Loading: FC<LoadingTypes> = ({\n design = \"spinner\",\n size = \"normal\",\n themeMode = \"light\",\n classNames,\n color,\n ...props\n}) => {\n let sizeStyles = {\n button: \"hawa-h-4 hawa-w-4\",\n xs: \"hawa-h-1 hawa-w-1\",\n sm: \"hawa-h-6 hawa-w-6\",\n normal: \"hawa-h-8 hawa-w-8\",\n lg: \"hawa-h-14 hawa-w-14\",\n xl: \"hawa-h-24 hawa-w-24\"\n };\n let progressSizes = {\n button: \"hawa-h-1\",\n xs: \"hawa-h-1 hawa-w-1\",\n sm: \"hawa-h-6 hawa-w-6\",\n normal: \"\",\n lg: \"hawa-h-6\",\n xl: \"hawa-h-10 hawa-w-64\"\n };\n\n let animationStyles: any = {\n pulse: \"hawa-animate-in hawa-fade-in hawa-duration-1000\",\n bounce: \"hawa-animate-bounce\"\n };\n switch (design.split(\"-\")[0]) {\n case \"dots\":\n return (\n <div\n className={cn(\n \"hawa-flex hawa-flex-row hawa-gap-2\",\n classNames?.container\n )}\n >\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-100 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-200 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-300 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n </div>\n );\n case \"square\":\n return (\n <svg\n className={cn(\n \"squircle-container\",\n sizeStyles[size],\n classNames?.container\n )}\n viewBox=\"0 0 35 35\"\n height=\"35\"\n width=\"35\"\n >\n <rect\n className=\"squircle-track\"\n x=\"2.5\"\n y=\"2.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n width=\"32.5\"\n height=\"32.5\"\n />\n <rect\n className=\"square-car\"\n x=\"2.5\"\n y=\"2.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n width=\"32.5\"\n height=\"32.5\"\n pathLength=\"100\"\n />\n </svg>\n );\n case \"squircle\":\n return (\n <svg\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 37 37\"\n height=\"37\"\n width=\"37\"\n preserveAspectRatio=\"xMidYMid meet\"\n className={cn(\n \"squircle-container\",\n sizeStyles[size],\n classNames?.container\n )}\n >\n <path\n className={cn(\"squircle-track\", classNames?.track)}\n fill=\"none\"\n strokeWidth=\"5\"\n pathLength=\"100\"\n d=\"M0.37 18.5 C0.37 5.772 5.772 0.37 18.5 0.37 S36.63 5.772 36.63 18.5 S31.228 36.63 18.5 36.63 S0.37 31.228 0.37 18.5\"\n ></path>\n <path\n className={cn(\"squircle-car\", classNames?.car)}\n fill=\"none\"\n strokeWidth=\"5\"\n pathLength=\"100\"\n d=\"M0.37 18.5 C0.37 5.772 5.772 0.37 18.5 0.37 S36.63 5.772 36.63 18.5 S31.228 36.63 18.5 36.63 S0.37 31.228 0.37 18.5\"\n ></path>\n </svg>\n );\n case \"progress\":\n return (\n <div\n className={cn(\n \"progress-loading after:hawa-rounded hawa-rounded\",\n progressSizes[size],\n classNames?.container\n )}\n ></div>\n );\n case \"orbit\":\n return (\n <div className={cn(\"orbit-container\", classNames?.container)}></div>\n );\n\n default:\n return (\n <svg\n viewBox=\"0 0 40 40\"\n height=\"40\"\n width=\"40\"\n className={cn(\n \"circle-container\",\n sizeStyles[size],\n classNames?.container\n )}\n >\n <circle\n className={cn(\n \"circle-track\",\n {\n \"hawa-stroke-primary-foreground\": themeMode === \"dark\",\n \"hawa-stroke-primary\": themeMode === \"light\"\n },\n classNames?.track\n )}\n cx=\"20\"\n cy=\"20\"\n r=\"17.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n pathLength=\"100\"\n />\n <circle\n className={cn(\n \"circle-car\",\n {\n \"hawa-stroke-primary-foreground\": themeMode === \"dark\",\n \"hawa-stroke-primary\": themeMode === \"light\"\n },\n classNames?.car\n )}\n cx=\"20\"\n cy=\"20\"\n r=\"17.5\"\n fill=\"none\"\n pathLength=\"100\"\n strokeWidth=\"5px\"\n />\n </svg>\n );\n }\n};\n"],"mappings":"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","names":["import_react","import_clsx","import_react","React","React","React","acceptedFiles","React","clsx"]}
1
+ {"version":3,"sources":["../../elements/fileDropzone/index.ts","../../elements/fileDropzone/FileDropzone.tsx","../../elements/alert/Alert.tsx","../../util/index.ts","../../elements/button/Button.tsx","../../elements/loading/Loading.tsx"],"sourcesContent":["export * from \"./FileDropzone\";\n","import React, { useEffect, useState } from \"react\";\nimport { useDropzone } from \"react-dropzone\";\n\nimport clsx from \"clsx\";\n\nimport { Alert } from \"../alert/Alert\";\nimport { Button } from \"../button\";\n\ntype FileDropzoneTypes = {\n /** The text label above the component. Consistant with the other form input fields */\n label?: string;\n files: [File];\n setFiles: any;\n setDeletedFiles: any;\n maxFiles: number;\n accept: any;\n onAcceptedFiles: any;\n showPreview: any;\n onDeleteFile: any;\n onClearFiles: any;\n maxSize: number;\n errorMessages: string;\n disclaimer?: boolean;\n termsLink?: string;\n privacyLink?: string;\n /** The translation object, use this to replace the default text with any translated text you want.*/\n texts: {\n errorUploading: any;\n clickHereToUpload: any;\n maxFileSize: any;\n tooManyFiles: any;\n fileTooLarge: any;\n acceptedFileTypes: any;\n invalidFileType: any;\n terms?: string;\n privacyPolicy?: string;\n disclaimer?: string;\n and?: string;\n };\n};\n\nexport const FileDropzone: React.FunctionComponent<FileDropzoneTypes> = ({\n texts,\n files,\n setFiles,\n setDeletedFiles,\n onAcceptedFiles,\n errorMessages,\n maxFiles,\n accept,\n showPreview,\n onDeleteFile,\n onClearFiles,\n disclaimer,\n maxSize,\n label,\n termsLink,\n privacyLink\n}) => {\n const [cmp, setCmp] = useState(0);\n const [max, setMax] = useState<any>(0);\n\n const {\n getRootProps,\n getInputProps,\n fileRejections,\n acceptedFiles,\n isDragActive\n } = useDropzone({\n multiple: true,\n accept: accept,\n maxSize: maxSize,\n maxFiles: maxFiles,\n onDrop: (acceptedFiles: any) => {\n setFiles(\n acceptedFiles.map((file: any, index: any) =>\n Object.assign(file, {\n preview: URL.createObjectURL(file)\n })\n )\n );\n }\n });\n useEffect(\n () => () => {\n files?.forEach((file: any) => {\n URL.revokeObjectURL(file.preview);\n });\n },\n [files]\n );\n useEffect(() => {\n setFiles(acceptedFiles);\n }, [acceptedFiles, cmp, setFiles]);\n onClearFiles = () => {\n acceptedFiles.length = 0;\n acceptedFiles.splice(0, acceptedFiles.length);\n setFiles([]);\n };\n\n const clearAllFiles = () => {\n acceptedFiles.length = 0;\n setFiles([]);\n };\n\n useEffect(() => {\n if (maxSize > 0) {\n const k = 1024;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n const i = Math.floor(Math.log(maxSize) / Math.log(1024));\n\n setMax(\n parseFloat((maxSize / Math.pow(1024, i)).toFixed(2)) + \" \" + sizes[i]\n );\n }\n }, [maxSize]);\n const errs = fileRejections.map((rej: any, i: any) => {\n switch (rej.errors[0].code) {\n case \"file-too-large\":\n return (\n <Alert\n key={i}\n text={rej.file.name}\n title={texts.fileTooLarge}\n severity=\"error\"\n />\n );\n case \"too-many-files\":\n return (\n <Alert\n key={i}\n text={rej.file.name}\n title={texts.tooManyFiles}\n severity=\"error\"\n />\n );\n case \"file-invalid-type\":\n return (\n <Alert\n key={i}\n text={rej.file.name}\n title={texts.invalidFileType}\n severity=\"error\"\n />\n );\n\n default:\n return (\n <Alert\n key={i}\n text={rej.file.name}\n title={rej.errors[0].code}\n severity=\"error\"\n />\n );\n }\n });\n const thumbs = files?.map((file: any, index: any) => (\n <div className=\"hawa-relative hawa-rounded\" key={index}>\n <button\n onClick={(e) => {\n e.stopPropagation();\n acceptedFiles.splice(acceptedFiles.indexOf(file), 1);\n setCmp(Math.random);\n onDeleteFile(file);\n }}\n type=\"button\"\n className=\"hawa-absolute hawa-left-0 hawa-ml-auto hawa-inline-flex hawa-items-center hawa-rounded-inner hawa-rounded-bl-none hawa-rounded-tr-none hawa-bg-gray-900 hawa-p-1.5 hawa-text-sm hawa-text-gray-400 hawa-transition-all hover:hawa-bg-gray-200 hover:hawa-text-gray-900 dark:hover:hawa-bg-gray-600 dark:hover:hawa-text-white\"\n data-modal-toggle=\"defaultModal\"\n >\n <svg\n aria-hidden=\"true\"\n className=\"hawa-h-5 hawa-w-5\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n <span className=\"hawa-sr-only\">Close modal</span>\n </button>\n\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n overflow: \"hidden\",\n height: 100,\n width: 100,\n backgroundImage: `url(${file.preview})`,\n backgroundSize: \"cover\",\n backgroundPosition: \"center\",\n border: \"1px solid black\"\n }}\n className=\"hawa-rounded\"\n key={file.name}\n />\n </div>\n ));\n\n return (\n <div>\n {label && (\n <div className=\"hawa-mb-2 hawa-block hawa-text-sm hawa-font-medium hawa-text-gray-900 dark:hawa-text-gray-300\">\n {label}\n </div>\n )}\n <div\n className={clsx(\n \"hawa-flex hawa-flex-col hawa-justify-center hawa-rounded hawa-border hawa-border-dashed hawa-p-6 hawa-transition-all \",\n isDragActive\n ? \"hawa-bg-muted\"\n : \"hawa-bg-muted/20 hover:hawa-bg-muted/50 \"\n )}\n >\n <div {...getRootProps({})}>\n <p {...getInputProps()} />\n <div className=\"hawa-flex hawa-flex-col hawa-items-center hawa-justify-center hawa-gap-2 hawa-pt-4 hawa-text-center\">\n <svg\n stroke=\"currentColor\"\n fill=\"none\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n height=\"1.5em\"\n width=\"1.5em\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"></path>\n <path d=\"M19 11v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2\"></path>\n <path d=\"M13 13l9 3l-4 2l-2 4l-3 -9\"></path>\n <path d=\"M3 3l0 .01\"></path>\n <path d=\"M7 3l0 .01\"></path>\n <path d=\"M11 3l0 .01\"></path>\n <path d=\"M15 3l0 .01\"></path>\n <path d=\"M3 7l0 .01\"></path>\n <path d=\"M3 11l0 .01\"></path>\n <path d=\"M3 15l0 .01\"></path>\n </svg>\n {typeof texts.clickHereToUpload === \"function\"\n ? texts.clickHereToUpload()\n : texts.clickHereToUpload}\n </div>\n <div className=\"hawa-select-none hawa-pt-2 hawa-text-center hawa-text-xs\">\n {texts.acceptedFileTypes} {accept.split(\",\")}\n </div>\n <div className=\"hawa-select-none hawa-pb-2 hawa-pt-1 hawa-text-center hawa-text-xs\">\n {texts.maxFileSize} {max}\n </div>\n </div>\n {acceptedFiles.length > 0 && (\n <div className=\"hawa-flex hawa-justify-center hawa-rounded-lg hawa-p-2 \">\n <Button onClick={clearAllFiles}>Clear All</Button>\n </div>\n )}\n {acceptedFiles.length > 0 && thumbs && showPreview ? (\n <aside className=\"hawa-flex hawa-flex-row hawa-flex-wrap hawa-justify-center hawa-gap-2 hawa-rounded-lg hawa-p-2\">\n {thumbs}\n </aside>\n ) : null}\n <div className=\"px-4\">{fileRejections[0]?.errors[0]?.code && errs}</div>\n </div>\n {disclaimer && (\n <div className=\"hawa-mt-2 hawa-text-sm hawa-text-muted-foreground/50\">\n {texts.disclaimer ?? \"By uploading a file you agree to our\"}{\" \"}\n <a\n href={termsLink}\n className=\"clickable-link hawa-text-muted-foreground/50\"\n >\n {texts.terms ?? \"Terms\"}\n </a>{\" \"}\n {texts.and ?? \"and\"}{\" \"}\n <a\n href={privacyLink}\n className=\"clickable-link hawa-text-muted-foreground/50\"\n >\n {texts.privacyPolicy ?? \"Privacy Policy\"}\n </a>\n </div>\n )}\n </div>\n );\n};\n","import React, { useRef, useState, useEffect } from \"react\";\n\nimport { cn } from \"@util/index\";\n\nimport { DirectionType, SeverityType } from \"@_types/commonTypes\";\n\nimport { Button } from \"../button\";\n\ntype AlertTypes = {\n severity?: SeverityType | \"hyper\" | \"oceanic\";\n /** The title of the alert placed above the text of the alert. Can be used alone */\n title?: React.ReactNode;\n /** The text of the alert placed below the title of the alert. Can be used alone */\n text: React.ReactNode;\n /** The duration for the alert to stay on the screen */\n duration?: number;\n direction?: DirectionType;\n actions?: [\n {\n label: string;\n onClick: any;\n variant:\n | \"outline\"\n | \"link\"\n | \"default\"\n | \"destructive\"\n | \"secondary\"\n | \"ghost\";\n }\n ];\n /** Removes the close button */\n persistent?: boolean;\n icon?: any;\n className?: string;\n onAlertClosed?: () => void;\n noDestroy?: boolean;\n};\n\nexport const Alert: React.FunctionComponent<AlertTypes> = ({\n direction = \"ltr\",\n severity = \"none\",\n duration,\n icon,\n className,\n ...props\n}) => {\n const alertRef = useRef<HTMLDivElement>(null);\n const [closed, setClosed] = useState(false);\n\n useEffect(() => {\n if (duration) {\n //To change opacity and hide the component\n const timeoutHide = setTimeout(() => {\n setClosed(true);\n }, duration);\n //To destroy the component after hiding it\n const timeoutDestroy = setTimeout(() => {\n setClosed(true);\n if (alertRef?.current) {\n alertRef?.current.removeChild(alertRef?.current.children[0]);\n }\n }, duration + 1000);\n\n return () => {\n clearTimeout(timeoutHide);\n clearTimeout(timeoutDestroy);\n };\n }\n }, [duration]);\n\n let closeButtonStyle = {\n none: \"\",\n info: \"\",\n warning: \"\",\n error: \"\",\n success: \"\",\n hyper: \"\",\n oceanic: \"\"\n };\n let styleVariant = {\n none: \"hawa-bg-background hawa-border\",\n info: \"hawa-text-info-foreground hawa-bg-info/90\",\n warning: \"hawa-text-warning-foreground hawa-bg-warning/90\",\n error: \"hawa-text-destructive-foreground hawa-bg-destructive/90\",\n success: \"hawa-text-success-foreground hawa-bg-success/90\",\n hyper:\n \"hawa-text-white hawa-bg-gradient-to-tl hawa-from-pink-700 hawa-via-red-500 hawa-to-yellow-600 \",\n oceanic:\n \"hawa-text-white hawa-bg-gradient-to-bl hawa-from-green-500 hawa-via-blue-700 hawa-to-purple-500\"\n };\n\n return (\n <div ref={alertRef}>\n <div\n data-testid=\"alert\"\n aria-label=\"Alert\"\n role=\"alert\"\n dir={direction}\n className={cn(\n \"hawa-relative hawa-mb-4 hawa-flex hawa-flex-col hawa-rounded hawa-p-4 hawa-text-sm hawa-transition-all\",\n styleVariant[severity],\n closed ? \"hawa-opacity-0\" : \"hawa-opacity-100\",\n className\n )}\n >\n <div className=\"hawa-flex hawa-flex-row\">\n {icon && (\n <div\n className={\n direction === \"rtl\"\n ? \"hawa-pl-2 hawa-pt-1\"\n : \"hawa-pr-2 hawa-pt-1\"\n }\n >\n {icon}\n </div>\n )}\n <div className=\"hawa-flex hawa-flex-col\">\n <span\n className={cn(\n \"hawa-font-bold\",\n direction === \"rtl\" ? \"hawa-ml-8\" : \"hawa-mr-8\"\n )}\n >\n {props.title}\n </span>\n <span\n className={cn(\n direction === \"rtl\" ? \"hawa-ml-8\" : \"hawa-mr-8\",\n props.persistent ? \"hawa-w-full\" : \"hawa-w-[calc(100% - 40px)]\"\n )}\n >\n {props.text}\n </span>\n {props.actions && (\n <div className=\"hawa-mt-2 hawa-flex hawa-flex-row hawa-gap-2\">\n {props.actions.map((act, index) => (\n <Button\n key={index}\n variant={act.variant}\n onClick={act.onClick()}\n >\n {act.label}\n </Button>\n ))}\n </div>\n )}\n </div>\n </div>\n {!props.persistent && (\n <button\n type=\"button\"\n data-dismiss-target=\"#alert-default\"\n aria-label=\"Close\"\n className={cn(\n \"hawa-absolute hawa-top-2 hawa-inline-flex hawa-h-9 hawa-w-9 hawa-items-center hawa-justify-center hawa-rounded-inner hawa-p-1.5 hawa-transition-all hover:hawa-text-gray-900\",\n closeButtonStyle[severity],\n direction === \"rtl\" ? \"hawa-left-2\" : \"hawa-right-2\"\n )}\n onClick={() => {\n if (props.onAlertClosed) {\n props.onAlertClosed();\n }\n if (!props.noDestroy) {\n setClosed(true);\n setTimeout(() => {\n if (alertRef?.current) {\n alertRef?.current.removeChild(\n alertRef?.current.children[0]\n );\n }\n }, 200);\n }\n }}\n >\n <span className=\"hawa-sr-only\">Close</span>\n <svg\n aria-label=\"Close Icon\"\n aria-hidden=\"true\"\n className=\"hawa-h-5 hawa-w-5\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n </button>\n )}\n </div>\n </div>\n );\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\ntype Palette = {\n name: string;\n colors: {\n [key: number]: string;\n };\n};\ntype Rgb = {\n r: number;\n g: number;\n b: number;\n};\nfunction hexToRgb(hex: string): Rgb | null {\n const sanitizedHex = hex.replaceAll(\"##\", \"#\");\n const colorParts = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(\n sanitizedHex\n );\n\n if (!colorParts) {\n return null;\n }\n\n const [, r, g, b] = colorParts;\n\n return {\n r: parseInt(r, 16),\n g: parseInt(g, 16),\n b: parseInt(b, 16)\n } as Rgb;\n}\n\nfunction rgbToHex(r: number, g: number, b: number): string {\n const toHex = (c: number) => `0${c.toString(16)}`.slice(-2);\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n}\n\nexport function getTextColor(color: string): \"#FFF\" | \"#333\" {\n const rgbColor = hexToRgb(color);\n\n if (!rgbColor) {\n return \"#333\";\n }\n\n const { r, g, b } = rgbColor;\n const luma = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n\n return luma < 120 ? \"#FFF\" : \"#333\";\n}\n\nfunction lighten(hex: string, intensity: number): string {\n const color = hexToRgb(`#${hex}`);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r + (255 - color.r) * intensity);\n const g = Math.round(color.g + (255 - color.g) * intensity);\n const b = Math.round(color.b + (255 - color.b) * intensity);\n\n return rgbToHex(r, g, b);\n}\n\nfunction darken(hex: string, intensity: number): string {\n const color = hexToRgb(hex);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r * intensity);\n const g = Math.round(color.g * intensity);\n const b = Math.round(color.b * intensity);\n\n return rgbToHex(r, g, b);\n}\nconst parseColor = (color: any) => {\n if (color.startsWith(\"#\")) {\n // Convert hex to RGB\n let r = parseInt(color.slice(1, 3), 16);\n let g = parseInt(color.slice(3, 5), 16);\n let b = parseInt(color.slice(5, 7), 16);\n return [r, g, b];\n } else if (color.startsWith(\"rgb\")) {\n // Extract RGB values from rgb() format\n return color.match(/\\d+/g).map(Number);\n }\n // Default to white if format is unrecognized\n return [255, 255, 255];\n};\nexport const calculateLuminance = (color: any) => {\n const [r, g, b] = parseColor(color)?.map((c: any) => {\n c /= 255;\n return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;\n });\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n};\n\nfunction getPallette(baseColor: string): Palette {\n const name = baseColor;\n\n const response: Palette = {\n name,\n colors: {\n 500: `#${baseColor}`.replace(\"##\", \"#\")\n }\n };\n\n const intensityMap: {\n [key: number]: number;\n } = {\n 50: 0.95,\n 100: 0.9,\n 200: 0.75,\n 300: 0.6,\n 400: 0.3,\n 600: 0.9,\n 700: 0.75,\n 800: 0.6,\n 900: 0.49\n };\n\n [50, 100, 200, 300, 400].forEach((level) => {\n response.colors[level] = lighten(baseColor, intensityMap[level]);\n });\n [600, 700, 800, 900].forEach((level) => {\n response.colors[level] = darken(baseColor, intensityMap[level]);\n });\n\n return response as Palette;\n}\n\nexport { getPallette };\n\n// const hexToRgb = (hex) => {\n// let d = hex?.split(\"#\")[1];\n// var aRgbHex = d?.match(/.{1,2}/g);\n// var aRgb = [\n// parseInt(aRgbHex[0], 16),\n// parseInt(aRgbHex[1], 16),\n// parseInt(aRgbHex[2], 16)\n// ];\n// return aRgb;\n// };\n// const getTextColor = (backColor) => {\n// let rgbArray = hexToRgb(backColor);\n// if (rgbArray[0] * 0.299 + rgbArray[1] * 0.587 + rgbArray[2] * 0.114 > 186) {\n// return \"#000000\";\n// } else {\n// return \"#ffffff\";\n// }\n// };\n// const replaceAt = function (string, index, replacement) {\n// // if (replacement == \"\" || replacement == \" \") {\n// // return (\n// // string.substring(0, index) +\n// // string.substring(index + replacement.length )\n// // );\n// // }\n// const replaced = string.substring(0, index) + replacement + string.substring(index + 1)\n// return replaced\n// };\n\n// export { hexToRgb, getTextColor, replaceAt };\n","import * as React from \"react\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@util/index\";\nimport { Loading } from \"../loading/Loading\";\n\nconst buttonVariants = cva(\n \"hawa-inline-flex hawa-items-center hawa-select-none hawa-rounded-md hawa-text-sm hawa-font-medium hawa-ring-offset-background hawa-transition-colors focus-visible:hawa-outline-none focus-visible:hawa-ring-2 focus-visible:hawa-ring-ring focus-visible:hawa-ring-offset-2 disabled:hawa-pointer-events-none disabled:hawa-opacity-50\",\n {\n variants: {\n variant: {\n default:\n \"hawa-bg-primary hawa-text-primary-foreground hover:hawa-bg-primary/90\",\n light: \"hawa-bg-primary/20 hawa-text-primary hover:hawa-bg-primary/40\",\n destructive:\n \"hawa-bg-destructive hawa-text-destructive-foreground hover:hawa-bg-destructive/90\",\n outline:\n \"hawa-border hawa-border-input hawa-bg-transparent hover:hawa-bg-accent hover:hawa-text-accent-foreground\",\n secondary:\n \"hawa-bg-secondary hawa-text-secondary-foreground hover:hawa-bg-secondary/80\",\n ghost: \"hover:hawa-bg-accent hover:hawa-text-accent-foreground\",\n link: \"hawa-text-primary hawa-underline-offset-4 hover:hawa-underline\",\n combobox: \"hawa-bg-background hawa-border\",\n neoBrutalism: \"neo-brutalism\"\n // \"hawa-cursor-pointer hawa-transition-all hawa-uppercase hawa-font-mono dark:hawa-bg-black hawa-font-bold hawa-py-2 hawa-px-4 hawa-rounded hawa-border-2 hawa-border-primary hawa-shadow-color-primary hawa-transition-[hawa-transform_50ms, hawa-box-shadow_50ms] active:hawa-translate-x-0.5 active:hawa-translate-y-0.5 active:hawa-shadow-color-primary-active shadow-color-primary active:shadow-color-primary-active\",\n },\n size: {\n default: \"hawa-h-10 hawa-px-4 hawa-py-2\",\n heightless: \"hawa-px-4 hawa-py-4\",\n xs: \"hawa-h-fit hawa-min-h-[25px] hawa-py-1 hawa-text-[10px] hawa-px-2 \",\n sm: \"hawa-h-9 hawa-text-[11px] hawa-rounded-md hawa-px-3\",\n lg: \"hawa-h-11 hawa-rounded-md hawa-px-8\",\n xl: \"hawa-h-14 hawa-rounded-md hawa-px-10\",\n icon: \"hawa-h-10 hawa-w-10\",\n smallIcon: \"hawa-h-7 hawa-w-7\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\"\n }\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n centered?: boolean;\n isLoading?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n asChild = false,\n centered = true,\n isLoading,\n children,\n ...props\n },\n ref\n ) => {\n const Comp = \"button\";\n\n // Determine the color for the HawaLoading component based on the variant\n const loadingColor =\n variant === \"outline\" || variant === \"ghost\" || variant === \"neoBrutalism\"\n ? \"hawa-bg-primary\"\n : \"hawa-bg-primary-foreground\";\n\n return (\n <Comp\n className={cn(\n buttonVariants({ variant, size, className }),\n centered && \"hawa-justify-center\",\n // \"hawa-bg-red-500\"\n )}\n ref={ref}\n {...props}\n >\n {isLoading ? (\n <Loading\n design={\n size === \"icon\" || size === \"smallIcon\" ? \"spinner\" : \"dots-pulse\"\n }\n themeMode={variant === \"outline\" ? \"light\" : \"dark\"}\n color={loadingColor}\n size={size === \"sm\" || size === \"xs\" ? \"xs\" : \"button\"}\n />\n ) : (\n children\n )}\n </Comp>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import React, { FC } from \"react\";\n\nimport { cn } from \"@util/index\";\n\ntype LoadingTypes = {\n /** Specifies the size of the loading component.*/\n size?: \"button\" | \"xs\" | \"sm\" | \"normal\" | \"lg\" | \"xl\";\n /** Determines the design of the loading animation.*/\n design?:\n | \"spinner\"\n | \"dots-bounce\"\n | \"dots-pulse\"\n | \"pulse\"\n | \"spinner-dots\"\n | \"squircle\"\n | \"square\"\n | \"progress\"\n | \"orbit\";\n /** Specifies the color of the loading component. By default it will inherit the value of --primary global CSS variable*/\n color?: string;\n classNames?: {\n container?: string;\n track?: string;\n car?: string;\n };\n themeMode?: \"dark\" | \"light\";\n};\n\nexport const Loading: FC<LoadingTypes> = ({\n design = \"spinner\",\n size = \"normal\",\n themeMode = \"light\",\n classNames,\n color,\n ...props\n}) => {\n let sizeStyles = {\n button: \"hawa-h-4 hawa-w-4\",\n xs: \"hawa-h-1 hawa-w-1\",\n sm: \"hawa-h-6 hawa-w-6\",\n normal: \"hawa-h-8 hawa-w-8\",\n lg: \"hawa-h-14 hawa-w-14\",\n xl: \"hawa-h-24 hawa-w-24\"\n };\n let progressSizes = {\n button: \"hawa-h-1\",\n xs: \"hawa-h-1 hawa-w-1\",\n sm: \"hawa-h-6 hawa-w-6\",\n normal: \"\",\n lg: \"hawa-h-6\",\n xl: \"hawa-h-10 hawa-w-64\"\n };\n\n let animationStyles: any = {\n pulse: \"hawa-animate-in hawa-fade-in hawa-duration-1000\",\n bounce: \"hawa-animate-bounce\"\n };\n switch (design.split(\"-\")[0]) {\n case \"dots\":\n return (\n <div\n className={cn(\n \"hawa-flex hawa-flex-row hawa-gap-2\",\n classNames?.container\n )}\n >\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-100 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-200 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-300 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n </div>\n );\n case \"square\":\n return (\n <svg\n className={cn(\n \"squircle-container\",\n sizeStyles[size],\n classNames?.container\n )}\n viewBox=\"0 0 35 35\"\n height=\"35\"\n width=\"35\"\n >\n <rect\n className=\"squircle-track\"\n x=\"2.5\"\n y=\"2.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n width=\"32.5\"\n height=\"32.5\"\n />\n <rect\n className=\"square-car\"\n x=\"2.5\"\n y=\"2.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n width=\"32.5\"\n height=\"32.5\"\n pathLength=\"100\"\n />\n </svg>\n );\n case \"squircle\":\n return (\n <svg\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 37 37\"\n height=\"37\"\n width=\"37\"\n preserveAspectRatio=\"xMidYMid meet\"\n className={cn(\n \"squircle-container\",\n sizeStyles[size],\n classNames?.container\n )}\n >\n <path\n className={cn(\"squircle-track\", classNames?.track)}\n fill=\"none\"\n strokeWidth=\"5\"\n pathLength=\"100\"\n d=\"M0.37 18.5 C0.37 5.772 5.772 0.37 18.5 0.37 S36.63 5.772 36.63 18.5 S31.228 36.63 18.5 36.63 S0.37 31.228 0.37 18.5\"\n ></path>\n <path\n className={cn(\"squircle-car\", classNames?.car)}\n fill=\"none\"\n strokeWidth=\"5\"\n pathLength=\"100\"\n d=\"M0.37 18.5 C0.37 5.772 5.772 0.37 18.5 0.37 S36.63 5.772 36.63 18.5 S31.228 36.63 18.5 36.63 S0.37 31.228 0.37 18.5\"\n ></path>\n </svg>\n );\n case \"progress\":\n return (\n <div\n className={cn(\n \"progress-loading after:hawa-rounded hawa-rounded\",\n progressSizes[size],\n classNames?.container\n )}\n ></div>\n );\n case \"orbit\":\n return (\n <div className={cn(\"orbit-container\", classNames?.container)}></div>\n );\n\n default:\n return (\n <svg\n viewBox=\"0 0 40 40\"\n height=\"40\"\n width=\"40\"\n className={cn(\n \"circle-container\",\n sizeStyles[size],\n classNames?.container\n )}\n >\n <circle\n className={cn(\n \"circle-track\",\n {\n \"hawa-stroke-primary-foreground\": themeMode === \"dark\",\n \"hawa-stroke-primary\": themeMode === \"light\"\n },\n classNames?.track\n )}\n cx=\"20\"\n cy=\"20\"\n r=\"17.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n pathLength=\"100\"\n />\n <circle\n className={cn(\n \"circle-car\",\n {\n \"hawa-stroke-primary-foreground\": themeMode === \"dark\",\n \"hawa-stroke-primary\": themeMode === \"light\"\n },\n classNames?.car\n )}\n cx=\"20\"\n cy=\"20\"\n r=\"17.5\"\n fill=\"none\"\n pathLength=\"100\"\n strokeWidth=\"5px\"\n />\n </svg>\n );\n }\n};\n"],"mappings":"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","names":["import_react","import_clsx","import_react","React","React","React","acceptedFiles","React","clsx"]}
@@ -347,7 +347,7 @@ var Alert = ({
347
347
  oceanic: ""
348
348
  };
349
349
  let styleVariant = {
350
- none: "hawa-text-gray-700 hawa-bg-gray-100 dark:hawa-bg-gray-900 ",
350
+ none: "hawa-bg-background hawa-border",
351
351
  info: "hawa-text-info-foreground hawa-bg-info/90",
352
352
  warning: "hawa-text-warning-foreground hawa-bg-warning/90",
353
353
  error: "hawa-text-destructive-foreground hawa-bg-destructive/90",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../elements/fileDropzone/FileDropzone.tsx","../../elements/alert/Alert.tsx","../../util/index.ts","../../elements/button/Button.tsx","../../elements/loading/Loading.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { useDropzone } from \"react-dropzone\";\n\nimport clsx from \"clsx\";\n\nimport { Alert } from \"../alert/Alert\";\nimport { Button } from \"../button\";\n\ntype FileDropzoneTypes = {\n /** The text label above the component. Consistant with the other form input fields */\n label?: string;\n files: [File];\n setFiles: any;\n setDeletedFiles: any;\n maxFiles: number;\n accept: any;\n onAcceptedFiles: any;\n showPreview: any;\n onDeleteFile: any;\n onClearFiles: any;\n maxSize: number;\n errorMessages: string;\n disclaimer?: boolean;\n termsLink?: string;\n privacyLink?: string;\n /** The translation object, use this to replace the default text with any translated text you want.*/\n texts: {\n errorUploading: any;\n clickHereToUpload: any;\n maxFileSize: any;\n tooManyFiles: any;\n fileTooLarge: any;\n acceptedFileTypes: any;\n invalidFileType: any;\n terms?: string;\n privacyPolicy?: string;\n disclaimer?: string;\n and?: string;\n };\n};\n\nexport const FileDropzone: React.FunctionComponent<FileDropzoneTypes> = ({\n texts,\n files,\n setFiles,\n setDeletedFiles,\n onAcceptedFiles,\n errorMessages,\n maxFiles,\n accept,\n showPreview,\n onDeleteFile,\n onClearFiles,\n disclaimer,\n maxSize,\n label,\n termsLink,\n privacyLink\n}) => {\n const [cmp, setCmp] = useState(0);\n const [max, setMax] = useState<any>(0);\n\n const {\n getRootProps,\n getInputProps,\n fileRejections,\n acceptedFiles,\n isDragActive\n } = useDropzone({\n multiple: true,\n accept: accept,\n maxSize: maxSize,\n maxFiles: maxFiles,\n onDrop: (acceptedFiles: any) => {\n setFiles(\n acceptedFiles.map((file: any, index: any) =>\n Object.assign(file, {\n preview: URL.createObjectURL(file)\n })\n )\n );\n }\n });\n useEffect(\n () => () => {\n files?.forEach((file: any) => {\n URL.revokeObjectURL(file.preview);\n });\n },\n [files]\n );\n useEffect(() => {\n setFiles(acceptedFiles);\n }, [acceptedFiles, cmp, setFiles]);\n onClearFiles = () => {\n acceptedFiles.length = 0;\n acceptedFiles.splice(0, acceptedFiles.length);\n setFiles([]);\n };\n\n const clearAllFiles = () => {\n acceptedFiles.length = 0;\n setFiles([]);\n };\n\n useEffect(() => {\n if (maxSize > 0) {\n const k = 1024;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n const i = Math.floor(Math.log(maxSize) / Math.log(1024));\n\n setMax(\n parseFloat((maxSize / Math.pow(1024, i)).toFixed(2)) + \" \" + sizes[i]\n );\n }\n }, [maxSize]);\n const errs = fileRejections.map((rej: any, i: any) => {\n switch (rej.errors[0].code) {\n case \"file-too-large\":\n return (\n <Alert\n key={i}\n text={rej.file.name}\n title={texts.fileTooLarge}\n severity=\"error\"\n />\n );\n case \"too-many-files\":\n return (\n <Alert\n key={i}\n text={rej.file.name}\n title={texts.tooManyFiles}\n severity=\"error\"\n />\n );\n case \"file-invalid-type\":\n return (\n <Alert\n key={i}\n text={rej.file.name}\n title={texts.invalidFileType}\n severity=\"error\"\n />\n );\n\n default:\n return (\n <Alert\n key={i}\n text={rej.file.name}\n title={rej.errors[0].code}\n severity=\"error\"\n />\n );\n }\n });\n const thumbs = files?.map((file: any, index: any) => (\n <div className=\"hawa-relative hawa-rounded\" key={index}>\n <button\n onClick={(e) => {\n e.stopPropagation();\n acceptedFiles.splice(acceptedFiles.indexOf(file), 1);\n setCmp(Math.random);\n onDeleteFile(file);\n }}\n type=\"button\"\n className=\"hawa-absolute hawa-left-0 hawa-ml-auto hawa-inline-flex hawa-items-center hawa-rounded-inner hawa-rounded-bl-none hawa-rounded-tr-none hawa-bg-gray-900 hawa-p-1.5 hawa-text-sm hawa-text-gray-400 hawa-transition-all hover:hawa-bg-gray-200 hover:hawa-text-gray-900 dark:hover:hawa-bg-gray-600 dark:hover:hawa-text-white\"\n data-modal-toggle=\"defaultModal\"\n >\n <svg\n aria-hidden=\"true\"\n className=\"hawa-h-5 hawa-w-5\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n <span className=\"hawa-sr-only\">Close modal</span>\n </button>\n\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n overflow: \"hidden\",\n height: 100,\n width: 100,\n backgroundImage: `url(${file.preview})`,\n backgroundSize: \"cover\",\n backgroundPosition: \"center\",\n border: \"1px solid black\"\n }}\n className=\"hawa-rounded\"\n key={file.name}\n />\n </div>\n ));\n\n return (\n <div>\n {label && (\n <div className=\"hawa-mb-2 hawa-block hawa-text-sm hawa-font-medium hawa-text-gray-900 dark:hawa-text-gray-300\">\n {label}\n </div>\n )}\n <div\n className={clsx(\n \"hawa-flex hawa-flex-col hawa-justify-center hawa-rounded hawa-border hawa-border-dashed hawa-p-6 hawa-transition-all \",\n isDragActive\n ? \"hawa-bg-muted\"\n : \"hawa-bg-muted/20 hover:hawa-bg-muted/50 \"\n )}\n >\n <div {...getRootProps({})}>\n <p {...getInputProps()} />\n <div className=\"hawa-flex hawa-flex-col hawa-items-center hawa-justify-center hawa-gap-2 hawa-pt-4 hawa-text-center\">\n <svg\n stroke=\"currentColor\"\n fill=\"none\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n height=\"1.5em\"\n width=\"1.5em\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"></path>\n <path d=\"M19 11v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2\"></path>\n <path d=\"M13 13l9 3l-4 2l-2 4l-3 -9\"></path>\n <path d=\"M3 3l0 .01\"></path>\n <path d=\"M7 3l0 .01\"></path>\n <path d=\"M11 3l0 .01\"></path>\n <path d=\"M15 3l0 .01\"></path>\n <path d=\"M3 7l0 .01\"></path>\n <path d=\"M3 11l0 .01\"></path>\n <path d=\"M3 15l0 .01\"></path>\n </svg>\n {typeof texts.clickHereToUpload === \"function\"\n ? texts.clickHereToUpload()\n : texts.clickHereToUpload}\n </div>\n <div className=\"hawa-select-none hawa-pt-2 hawa-text-center hawa-text-xs\">\n {texts.acceptedFileTypes} {accept.split(\",\")}\n </div>\n <div className=\"hawa-select-none hawa-pb-2 hawa-pt-1 hawa-text-center hawa-text-xs\">\n {texts.maxFileSize} {max}\n </div>\n </div>\n {acceptedFiles.length > 0 && (\n <div className=\"hawa-flex hawa-justify-center hawa-rounded-lg hawa-p-2 \">\n <Button onClick={clearAllFiles}>Clear All</Button>\n </div>\n )}\n {acceptedFiles.length > 0 && thumbs && showPreview ? (\n <aside className=\"hawa-flex hawa-flex-row hawa-flex-wrap hawa-justify-center hawa-gap-2 hawa-rounded-lg hawa-p-2\">\n {thumbs}\n </aside>\n ) : null}\n <div className=\"px-4\">{fileRejections[0]?.errors[0]?.code && errs}</div>\n </div>\n {disclaimer && (\n <div className=\"hawa-mt-2 hawa-text-sm hawa-text-muted-foreground/50\">\n {texts.disclaimer ?? \"By uploading a file you agree to our\"}{\" \"}\n <a\n href={termsLink}\n className=\"clickable-link hawa-text-muted-foreground/50\"\n >\n {texts.terms ?? \"Terms\"}\n </a>{\" \"}\n {texts.and ?? \"and\"}{\" \"}\n <a\n href={privacyLink}\n className=\"clickable-link hawa-text-muted-foreground/50\"\n >\n {texts.privacyPolicy ?? \"Privacy Policy\"}\n </a>\n </div>\n )}\n </div>\n );\n};\n","import React, { useRef, useState, useEffect } from \"react\";\n\nimport { cn } from \"@util/index\";\n\nimport { DirectionType, SeverityType } from \"@_types/commonTypes\";\n\nimport { Button } from \"../button\";\n\ntype AlertTypes = {\n severity?: SeverityType | \"hyper\" | \"oceanic\";\n /** The title of the alert placed above the text of the alert. Can be used alone */\n title?: React.ReactNode;\n /** The text of the alert placed below the title of the alert. Can be used alone */\n text: React.ReactNode;\n /** The duration for the alert to stay on the screen */\n duration?: number;\n direction?: DirectionType;\n actions?: [\n {\n label: string;\n onClick: any;\n variant:\n | \"outline\"\n | \"link\"\n | \"default\"\n | \"destructive\"\n | \"secondary\"\n | \"ghost\";\n }\n ];\n /** Removes the close button */\n persistent?: boolean;\n icon?: any;\n className?: string;\n onAlertClosed?: () => void;\n noDestroy?: boolean;\n};\n\nexport const Alert: React.FunctionComponent<AlertTypes> = ({\n direction = \"ltr\",\n severity = \"none\",\n duration,\n icon,\n className,\n ...props\n}) => {\n const alertRef = useRef<HTMLDivElement>(null);\n const [closed, setClosed] = useState(false);\n\n useEffect(() => {\n if (duration) {\n //To change opacity and hide the component\n const timeoutHide = setTimeout(() => {\n setClosed(true);\n }, duration);\n //To destroy the component after hiding it\n const timeoutDestroy = setTimeout(() => {\n setClosed(true);\n if (alertRef?.current) {\n alertRef?.current.removeChild(alertRef?.current.children[0]);\n }\n }, duration + 1000);\n\n return () => {\n clearTimeout(timeoutHide);\n clearTimeout(timeoutDestroy);\n };\n }\n }, [duration]);\n\n let closeButtonStyle = {\n none: \"\",\n info: \"\",\n warning: \"\",\n error: \"\",\n success: \"\",\n hyper: \"\",\n oceanic: \"\"\n };\n let styleVariant = {\n none: \"hawa-text-gray-700 hawa-bg-gray-100 dark:hawa-bg-gray-900 \",\n info: \"hawa-text-info-foreground hawa-bg-info/90\",\n warning: \"hawa-text-warning-foreground hawa-bg-warning/90\",\n error: \"hawa-text-destructive-foreground hawa-bg-destructive/90\",\n success: \"hawa-text-success-foreground hawa-bg-success/90\",\n hyper:\n \"hawa-text-white hawa-bg-gradient-to-tl hawa-from-pink-700 hawa-via-red-500 hawa-to-yellow-600 \",\n oceanic:\n \"hawa-text-white hawa-bg-gradient-to-bl hawa-from-green-500 hawa-via-blue-700 hawa-to-purple-500\"\n };\n\n return (\n <div ref={alertRef}>\n <div\n data-testid=\"alert\"\n aria-label=\"Alert\"\n role=\"alert\"\n dir={direction}\n className={cn(\n \"hawa-relative hawa-mb-4 hawa-flex hawa-flex-col hawa-rounded hawa-p-4 hawa-text-sm hawa-transition-all\",\n styleVariant[severity],\n closed ? \"hawa-opacity-0\" : \"hawa-opacity-100\",\n className\n )}\n >\n <div className=\"hawa-flex hawa-flex-row\">\n {icon && (\n <div\n className={\n direction === \"rtl\"\n ? \"hawa-pl-2 hawa-pt-1\"\n : \"hawa-pr-2 hawa-pt-1\"\n }\n >\n {icon}\n </div>\n )}\n <div className=\"hawa-flex hawa-flex-col\">\n <span\n className={cn(\n \"hawa-font-bold\",\n direction === \"rtl\" ? \"hawa-ml-8\" : \"hawa-mr-8\"\n )}\n >\n {props.title}\n </span>\n <span\n className={cn(\n direction === \"rtl\" ? \"hawa-ml-8\" : \"hawa-mr-8\",\n props.persistent ? \"hawa-w-full\" : \"hawa-w-[calc(100% - 40px)]\"\n )}\n >\n {props.text}\n </span>\n {props.actions && (\n <div className=\"hawa-mt-2 hawa-flex hawa-flex-row hawa-gap-2\">\n {props.actions.map((act, index) => (\n <Button\n key={index}\n variant={act.variant}\n onClick={act.onClick()}\n >\n {act.label}\n </Button>\n ))}\n </div>\n )}\n </div>\n </div>\n {!props.persistent && (\n <button\n type=\"button\"\n data-dismiss-target=\"#alert-default\"\n aria-label=\"Close\"\n className={cn(\n \"hawa-absolute hawa-top-2 hawa-inline-flex hawa-h-9 hawa-w-9 hawa-items-center hawa-justify-center hawa-rounded-inner hawa-p-1.5 hawa-transition-all hover:hawa-text-gray-900\",\n closeButtonStyle[severity],\n direction === \"rtl\" ? \"hawa-left-2\" : \"hawa-right-2\"\n )}\n onClick={() => {\n if (props.onAlertClosed) {\n props.onAlertClosed();\n }\n if (!props.noDestroy) {\n setClosed(true);\n setTimeout(() => {\n if (alertRef?.current) {\n alertRef?.current.removeChild(\n alertRef?.current.children[0]\n );\n }\n }, 200);\n }\n }}\n >\n <span className=\"hawa-sr-only\">Close</span>\n <svg\n aria-label=\"Close Icon\"\n aria-hidden=\"true\"\n className=\"hawa-h-5 hawa-w-5\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n </button>\n )}\n </div>\n </div>\n );\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\ntype Palette = {\n name: string;\n colors: {\n [key: number]: string;\n };\n};\ntype Rgb = {\n r: number;\n g: number;\n b: number;\n};\nfunction hexToRgb(hex: string): Rgb | null {\n const sanitizedHex = hex.replaceAll(\"##\", \"#\");\n const colorParts = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(\n sanitizedHex\n );\n\n if (!colorParts) {\n return null;\n }\n\n const [, r, g, b] = colorParts;\n\n return {\n r: parseInt(r, 16),\n g: parseInt(g, 16),\n b: parseInt(b, 16)\n } as Rgb;\n}\n\nfunction rgbToHex(r: number, g: number, b: number): string {\n const toHex = (c: number) => `0${c.toString(16)}`.slice(-2);\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n}\n\nexport function getTextColor(color: string): \"#FFF\" | \"#333\" {\n const rgbColor = hexToRgb(color);\n\n if (!rgbColor) {\n return \"#333\";\n }\n\n const { r, g, b } = rgbColor;\n const luma = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n\n return luma < 120 ? \"#FFF\" : \"#333\";\n}\n\nfunction lighten(hex: string, intensity: number): string {\n const color = hexToRgb(`#${hex}`);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r + (255 - color.r) * intensity);\n const g = Math.round(color.g + (255 - color.g) * intensity);\n const b = Math.round(color.b + (255 - color.b) * intensity);\n\n return rgbToHex(r, g, b);\n}\n\nfunction darken(hex: string, intensity: number): string {\n const color = hexToRgb(hex);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r * intensity);\n const g = Math.round(color.g * intensity);\n const b = Math.round(color.b * intensity);\n\n return rgbToHex(r, g, b);\n}\nconst parseColor = (color: any) => {\n if (color.startsWith(\"#\")) {\n // Convert hex to RGB\n let r = parseInt(color.slice(1, 3), 16);\n let g = parseInt(color.slice(3, 5), 16);\n let b = parseInt(color.slice(5, 7), 16);\n return [r, g, b];\n } else if (color.startsWith(\"rgb\")) {\n // Extract RGB values from rgb() format\n return color.match(/\\d+/g).map(Number);\n }\n // Default to white if format is unrecognized\n return [255, 255, 255];\n};\nexport const calculateLuminance = (color: any) => {\n const [r, g, b] = parseColor(color)?.map((c: any) => {\n c /= 255;\n return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;\n });\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n};\n\nfunction getPallette(baseColor: string): Palette {\n const name = baseColor;\n\n const response: Palette = {\n name,\n colors: {\n 500: `#${baseColor}`.replace(\"##\", \"#\")\n }\n };\n\n const intensityMap: {\n [key: number]: number;\n } = {\n 50: 0.95,\n 100: 0.9,\n 200: 0.75,\n 300: 0.6,\n 400: 0.3,\n 600: 0.9,\n 700: 0.75,\n 800: 0.6,\n 900: 0.49\n };\n\n [50, 100, 200, 300, 400].forEach((level) => {\n response.colors[level] = lighten(baseColor, intensityMap[level]);\n });\n [600, 700, 800, 900].forEach((level) => {\n response.colors[level] = darken(baseColor, intensityMap[level]);\n });\n\n return response as Palette;\n}\n\nexport { getPallette };\n\n// const hexToRgb = (hex) => {\n// let d = hex?.split(\"#\")[1];\n// var aRgbHex = d?.match(/.{1,2}/g);\n// var aRgb = [\n// parseInt(aRgbHex[0], 16),\n// parseInt(aRgbHex[1], 16),\n// parseInt(aRgbHex[2], 16)\n// ];\n// return aRgb;\n// };\n// const getTextColor = (backColor) => {\n// let rgbArray = hexToRgb(backColor);\n// if (rgbArray[0] * 0.299 + rgbArray[1] * 0.587 + rgbArray[2] * 0.114 > 186) {\n// return \"#000000\";\n// } else {\n// return \"#ffffff\";\n// }\n// };\n// const replaceAt = function (string, index, replacement) {\n// // if (replacement == \"\" || replacement == \" \") {\n// // return (\n// // string.substring(0, index) +\n// // string.substring(index + replacement.length )\n// // );\n// // }\n// const replaced = string.substring(0, index) + replacement + string.substring(index + 1)\n// return replaced\n// };\n\n// export { hexToRgb, getTextColor, replaceAt };\n","import * as React from \"react\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@util/index\";\nimport { Loading } from \"../loading/Loading\";\n\nconst buttonVariants = cva(\n \"hawa-inline-flex hawa-items-center hawa-select-none hawa-rounded-md hawa-text-sm hawa-font-medium hawa-ring-offset-background hawa-transition-colors focus-visible:hawa-outline-none focus-visible:hawa-ring-2 focus-visible:hawa-ring-ring focus-visible:hawa-ring-offset-2 disabled:hawa-pointer-events-none disabled:hawa-opacity-50\",\n {\n variants: {\n variant: {\n default:\n \"hawa-bg-primary hawa-text-primary-foreground hover:hawa-bg-primary/90\",\n light: \"hawa-bg-primary/20 hawa-text-primary hover:hawa-bg-primary/40\",\n destructive:\n \"hawa-bg-destructive hawa-text-destructive-foreground hover:hawa-bg-destructive/90\",\n outline:\n \"hawa-border hawa-border-input hawa-bg-transparent hover:hawa-bg-accent hover:hawa-text-accent-foreground\",\n secondary:\n \"hawa-bg-secondary hawa-text-secondary-foreground hover:hawa-bg-secondary/80\",\n ghost: \"hover:hawa-bg-accent hover:hawa-text-accent-foreground\",\n link: \"hawa-text-primary hawa-underline-offset-4 hover:hawa-underline\",\n combobox: \"hawa-bg-background hawa-border\",\n neoBrutalism: \"neo-brutalism\"\n // \"hawa-cursor-pointer hawa-transition-all hawa-uppercase hawa-font-mono dark:hawa-bg-black hawa-font-bold hawa-py-2 hawa-px-4 hawa-rounded hawa-border-2 hawa-border-primary hawa-shadow-color-primary hawa-transition-[hawa-transform_50ms, hawa-box-shadow_50ms] active:hawa-translate-x-0.5 active:hawa-translate-y-0.5 active:hawa-shadow-color-primary-active shadow-color-primary active:shadow-color-primary-active\",\n },\n size: {\n default: \"hawa-h-10 hawa-px-4 hawa-py-2\",\n heightless: \"hawa-px-4 hawa-py-4\",\n xs: \"hawa-h-fit hawa-min-h-[25px] hawa-py-1 hawa-text-[10px] hawa-px-2 \",\n sm: \"hawa-h-9 hawa-text-[11px] hawa-rounded-md hawa-px-3\",\n lg: \"hawa-h-11 hawa-rounded-md hawa-px-8\",\n xl: \"hawa-h-14 hawa-rounded-md hawa-px-10\",\n icon: \"hawa-h-10 hawa-w-10\",\n smallIcon: \"hawa-h-7 hawa-w-7\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\"\n }\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n centered?: boolean;\n isLoading?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n asChild = false,\n centered = true,\n isLoading,\n children,\n ...props\n },\n ref\n ) => {\n const Comp = \"button\";\n\n // Determine the color for the HawaLoading component based on the variant\n const loadingColor =\n variant === \"outline\" || variant === \"ghost\" || variant === \"neoBrutalism\"\n ? \"hawa-bg-primary\"\n : \"hawa-bg-primary-foreground\";\n\n return (\n <Comp\n className={cn(\n buttonVariants({ variant, size, className }),\n centered && \"hawa-justify-center\",\n // \"hawa-bg-red-500\"\n )}\n ref={ref}\n {...props}\n >\n {isLoading ? (\n <Loading\n design={\n size === \"icon\" || size === \"smallIcon\" ? \"spinner\" : \"dots-pulse\"\n }\n themeMode={variant === \"outline\" ? \"light\" : \"dark\"}\n color={loadingColor}\n size={size === \"sm\" || size === \"xs\" ? \"xs\" : \"button\"}\n />\n ) : (\n children\n )}\n </Comp>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import React, { FC } from \"react\";\n\nimport { cn } from \"@util/index\";\n\ntype LoadingTypes = {\n /** Specifies the size of the loading component.*/\n size?: \"button\" | \"xs\" | \"sm\" | \"normal\" | \"lg\" | \"xl\";\n /** Determines the design of the loading animation.*/\n design?:\n | \"spinner\"\n | \"dots-bounce\"\n | \"dots-pulse\"\n | \"pulse\"\n | \"spinner-dots\"\n | \"squircle\"\n | \"square\"\n | \"progress\"\n | \"orbit\";\n /** Specifies the color of the loading component. By default it will inherit the value of --primary global CSS variable*/\n color?: string;\n classNames?: {\n container?: string;\n track?: string;\n car?: string;\n };\n themeMode?: \"dark\" | \"light\";\n};\n\nexport const Loading: FC<LoadingTypes> = ({\n design = \"spinner\",\n size = \"normal\",\n themeMode = \"light\",\n classNames,\n color,\n ...props\n}) => {\n let sizeStyles = {\n button: \"hawa-h-4 hawa-w-4\",\n xs: \"hawa-h-1 hawa-w-1\",\n sm: \"hawa-h-6 hawa-w-6\",\n normal: \"hawa-h-8 hawa-w-8\",\n lg: \"hawa-h-14 hawa-w-14\",\n xl: \"hawa-h-24 hawa-w-24\"\n };\n let progressSizes = {\n button: \"hawa-h-1\",\n xs: \"hawa-h-1 hawa-w-1\",\n sm: \"hawa-h-6 hawa-w-6\",\n normal: \"\",\n lg: \"hawa-h-6\",\n xl: \"hawa-h-10 hawa-w-64\"\n };\n\n let animationStyles: any = {\n pulse: \"hawa-animate-in hawa-fade-in hawa-duration-1000\",\n bounce: \"hawa-animate-bounce\"\n };\n switch (design.split(\"-\")[0]) {\n case \"dots\":\n return (\n <div\n className={cn(\n \"hawa-flex hawa-flex-row hawa-gap-2\",\n classNames?.container\n )}\n >\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-100 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-200 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-300 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n </div>\n );\n case \"square\":\n return (\n <svg\n className={cn(\n \"squircle-container\",\n sizeStyles[size],\n classNames?.container\n )}\n viewBox=\"0 0 35 35\"\n height=\"35\"\n width=\"35\"\n >\n <rect\n className=\"squircle-track\"\n x=\"2.5\"\n y=\"2.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n width=\"32.5\"\n height=\"32.5\"\n />\n <rect\n className=\"square-car\"\n x=\"2.5\"\n y=\"2.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n width=\"32.5\"\n height=\"32.5\"\n pathLength=\"100\"\n />\n </svg>\n );\n case \"squircle\":\n return (\n <svg\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 37 37\"\n height=\"37\"\n width=\"37\"\n preserveAspectRatio=\"xMidYMid meet\"\n className={cn(\n \"squircle-container\",\n sizeStyles[size],\n classNames?.container\n )}\n >\n <path\n className={cn(\"squircle-track\", classNames?.track)}\n fill=\"none\"\n strokeWidth=\"5\"\n pathLength=\"100\"\n d=\"M0.37 18.5 C0.37 5.772 5.772 0.37 18.5 0.37 S36.63 5.772 36.63 18.5 S31.228 36.63 18.5 36.63 S0.37 31.228 0.37 18.5\"\n ></path>\n <path\n className={cn(\"squircle-car\", classNames?.car)}\n fill=\"none\"\n strokeWidth=\"5\"\n pathLength=\"100\"\n d=\"M0.37 18.5 C0.37 5.772 5.772 0.37 18.5 0.37 S36.63 5.772 36.63 18.5 S31.228 36.63 18.5 36.63 S0.37 31.228 0.37 18.5\"\n ></path>\n </svg>\n );\n case \"progress\":\n return (\n <div\n className={cn(\n \"progress-loading after:hawa-rounded hawa-rounded\",\n progressSizes[size],\n classNames?.container\n )}\n ></div>\n );\n case \"orbit\":\n return (\n <div className={cn(\"orbit-container\", classNames?.container)}></div>\n );\n\n default:\n return (\n <svg\n viewBox=\"0 0 40 40\"\n height=\"40\"\n width=\"40\"\n className={cn(\n \"circle-container\",\n sizeStyles[size],\n classNames?.container\n )}\n >\n <circle\n className={cn(\n \"circle-track\",\n {\n \"hawa-stroke-primary-foreground\": themeMode === \"dark\",\n \"hawa-stroke-primary\": themeMode === \"light\"\n },\n classNames?.track\n )}\n cx=\"20\"\n cy=\"20\"\n r=\"17.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n pathLength=\"100\"\n />\n <circle\n className={cn(\n \"circle-car\",\n {\n \"hawa-stroke-primary-foreground\": themeMode === \"dark\",\n \"hawa-stroke-primary\": themeMode === \"light\"\n },\n classNames?.car\n )}\n cx=\"20\"\n cy=\"20\"\n r=\"17.5\"\n fill=\"none\"\n pathLength=\"100\"\n strokeWidth=\"5px\"\n />\n </svg>\n );\n }\n};\n"],"mappings":"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","names":["React","useEffect","useState","clsx","React","React","React","useState","acceptedFiles","useEffect","React","clsx"]}
1
+ {"version":3,"sources":["../../elements/fileDropzone/FileDropzone.tsx","../../elements/alert/Alert.tsx","../../util/index.ts","../../elements/button/Button.tsx","../../elements/loading/Loading.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { useDropzone } from \"react-dropzone\";\n\nimport clsx from \"clsx\";\n\nimport { Alert } from \"../alert/Alert\";\nimport { Button } from \"../button\";\n\ntype FileDropzoneTypes = {\n /** The text label above the component. Consistant with the other form input fields */\n label?: string;\n files: [File];\n setFiles: any;\n setDeletedFiles: any;\n maxFiles: number;\n accept: any;\n onAcceptedFiles: any;\n showPreview: any;\n onDeleteFile: any;\n onClearFiles: any;\n maxSize: number;\n errorMessages: string;\n disclaimer?: boolean;\n termsLink?: string;\n privacyLink?: string;\n /** The translation object, use this to replace the default text with any translated text you want.*/\n texts: {\n errorUploading: any;\n clickHereToUpload: any;\n maxFileSize: any;\n tooManyFiles: any;\n fileTooLarge: any;\n acceptedFileTypes: any;\n invalidFileType: any;\n terms?: string;\n privacyPolicy?: string;\n disclaimer?: string;\n and?: string;\n };\n};\n\nexport const FileDropzone: React.FunctionComponent<FileDropzoneTypes> = ({\n texts,\n files,\n setFiles,\n setDeletedFiles,\n onAcceptedFiles,\n errorMessages,\n maxFiles,\n accept,\n showPreview,\n onDeleteFile,\n onClearFiles,\n disclaimer,\n maxSize,\n label,\n termsLink,\n privacyLink\n}) => {\n const [cmp, setCmp] = useState(0);\n const [max, setMax] = useState<any>(0);\n\n const {\n getRootProps,\n getInputProps,\n fileRejections,\n acceptedFiles,\n isDragActive\n } = useDropzone({\n multiple: true,\n accept: accept,\n maxSize: maxSize,\n maxFiles: maxFiles,\n onDrop: (acceptedFiles: any) => {\n setFiles(\n acceptedFiles.map((file: any, index: any) =>\n Object.assign(file, {\n preview: URL.createObjectURL(file)\n })\n )\n );\n }\n });\n useEffect(\n () => () => {\n files?.forEach((file: any) => {\n URL.revokeObjectURL(file.preview);\n });\n },\n [files]\n );\n useEffect(() => {\n setFiles(acceptedFiles);\n }, [acceptedFiles, cmp, setFiles]);\n onClearFiles = () => {\n acceptedFiles.length = 0;\n acceptedFiles.splice(0, acceptedFiles.length);\n setFiles([]);\n };\n\n const clearAllFiles = () => {\n acceptedFiles.length = 0;\n setFiles([]);\n };\n\n useEffect(() => {\n if (maxSize > 0) {\n const k = 1024;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n const i = Math.floor(Math.log(maxSize) / Math.log(1024));\n\n setMax(\n parseFloat((maxSize / Math.pow(1024, i)).toFixed(2)) + \" \" + sizes[i]\n );\n }\n }, [maxSize]);\n const errs = fileRejections.map((rej: any, i: any) => {\n switch (rej.errors[0].code) {\n case \"file-too-large\":\n return (\n <Alert\n key={i}\n text={rej.file.name}\n title={texts.fileTooLarge}\n severity=\"error\"\n />\n );\n case \"too-many-files\":\n return (\n <Alert\n key={i}\n text={rej.file.name}\n title={texts.tooManyFiles}\n severity=\"error\"\n />\n );\n case \"file-invalid-type\":\n return (\n <Alert\n key={i}\n text={rej.file.name}\n title={texts.invalidFileType}\n severity=\"error\"\n />\n );\n\n default:\n return (\n <Alert\n key={i}\n text={rej.file.name}\n title={rej.errors[0].code}\n severity=\"error\"\n />\n );\n }\n });\n const thumbs = files?.map((file: any, index: any) => (\n <div className=\"hawa-relative hawa-rounded\" key={index}>\n <button\n onClick={(e) => {\n e.stopPropagation();\n acceptedFiles.splice(acceptedFiles.indexOf(file), 1);\n setCmp(Math.random);\n onDeleteFile(file);\n }}\n type=\"button\"\n className=\"hawa-absolute hawa-left-0 hawa-ml-auto hawa-inline-flex hawa-items-center hawa-rounded-inner hawa-rounded-bl-none hawa-rounded-tr-none hawa-bg-gray-900 hawa-p-1.5 hawa-text-sm hawa-text-gray-400 hawa-transition-all hover:hawa-bg-gray-200 hover:hawa-text-gray-900 dark:hover:hawa-bg-gray-600 dark:hover:hawa-text-white\"\n data-modal-toggle=\"defaultModal\"\n >\n <svg\n aria-hidden=\"true\"\n className=\"hawa-h-5 hawa-w-5\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n <span className=\"hawa-sr-only\">Close modal</span>\n </button>\n\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n overflow: \"hidden\",\n height: 100,\n width: 100,\n backgroundImage: `url(${file.preview})`,\n backgroundSize: \"cover\",\n backgroundPosition: \"center\",\n border: \"1px solid black\"\n }}\n className=\"hawa-rounded\"\n key={file.name}\n />\n </div>\n ));\n\n return (\n <div>\n {label && (\n <div className=\"hawa-mb-2 hawa-block hawa-text-sm hawa-font-medium hawa-text-gray-900 dark:hawa-text-gray-300\">\n {label}\n </div>\n )}\n <div\n className={clsx(\n \"hawa-flex hawa-flex-col hawa-justify-center hawa-rounded hawa-border hawa-border-dashed hawa-p-6 hawa-transition-all \",\n isDragActive\n ? \"hawa-bg-muted\"\n : \"hawa-bg-muted/20 hover:hawa-bg-muted/50 \"\n )}\n >\n <div {...getRootProps({})}>\n <p {...getInputProps()} />\n <div className=\"hawa-flex hawa-flex-col hawa-items-center hawa-justify-center hawa-gap-2 hawa-pt-4 hawa-text-center\">\n <svg\n stroke=\"currentColor\"\n fill=\"none\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n height=\"1.5em\"\n width=\"1.5em\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"></path>\n <path d=\"M19 11v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2\"></path>\n <path d=\"M13 13l9 3l-4 2l-2 4l-3 -9\"></path>\n <path d=\"M3 3l0 .01\"></path>\n <path d=\"M7 3l0 .01\"></path>\n <path d=\"M11 3l0 .01\"></path>\n <path d=\"M15 3l0 .01\"></path>\n <path d=\"M3 7l0 .01\"></path>\n <path d=\"M3 11l0 .01\"></path>\n <path d=\"M3 15l0 .01\"></path>\n </svg>\n {typeof texts.clickHereToUpload === \"function\"\n ? texts.clickHereToUpload()\n : texts.clickHereToUpload}\n </div>\n <div className=\"hawa-select-none hawa-pt-2 hawa-text-center hawa-text-xs\">\n {texts.acceptedFileTypes} {accept.split(\",\")}\n </div>\n <div className=\"hawa-select-none hawa-pb-2 hawa-pt-1 hawa-text-center hawa-text-xs\">\n {texts.maxFileSize} {max}\n </div>\n </div>\n {acceptedFiles.length > 0 && (\n <div className=\"hawa-flex hawa-justify-center hawa-rounded-lg hawa-p-2 \">\n <Button onClick={clearAllFiles}>Clear All</Button>\n </div>\n )}\n {acceptedFiles.length > 0 && thumbs && showPreview ? (\n <aside className=\"hawa-flex hawa-flex-row hawa-flex-wrap hawa-justify-center hawa-gap-2 hawa-rounded-lg hawa-p-2\">\n {thumbs}\n </aside>\n ) : null}\n <div className=\"px-4\">{fileRejections[0]?.errors[0]?.code && errs}</div>\n </div>\n {disclaimer && (\n <div className=\"hawa-mt-2 hawa-text-sm hawa-text-muted-foreground/50\">\n {texts.disclaimer ?? \"By uploading a file you agree to our\"}{\" \"}\n <a\n href={termsLink}\n className=\"clickable-link hawa-text-muted-foreground/50\"\n >\n {texts.terms ?? \"Terms\"}\n </a>{\" \"}\n {texts.and ?? \"and\"}{\" \"}\n <a\n href={privacyLink}\n className=\"clickable-link hawa-text-muted-foreground/50\"\n >\n {texts.privacyPolicy ?? \"Privacy Policy\"}\n </a>\n </div>\n )}\n </div>\n );\n};\n","import React, { useRef, useState, useEffect } from \"react\";\n\nimport { cn } from \"@util/index\";\n\nimport { DirectionType, SeverityType } from \"@_types/commonTypes\";\n\nimport { Button } from \"../button\";\n\ntype AlertTypes = {\n severity?: SeverityType | \"hyper\" | \"oceanic\";\n /** The title of the alert placed above the text of the alert. Can be used alone */\n title?: React.ReactNode;\n /** The text of the alert placed below the title of the alert. Can be used alone */\n text: React.ReactNode;\n /** The duration for the alert to stay on the screen */\n duration?: number;\n direction?: DirectionType;\n actions?: [\n {\n label: string;\n onClick: any;\n variant:\n | \"outline\"\n | \"link\"\n | \"default\"\n | \"destructive\"\n | \"secondary\"\n | \"ghost\";\n }\n ];\n /** Removes the close button */\n persistent?: boolean;\n icon?: any;\n className?: string;\n onAlertClosed?: () => void;\n noDestroy?: boolean;\n};\n\nexport const Alert: React.FunctionComponent<AlertTypes> = ({\n direction = \"ltr\",\n severity = \"none\",\n duration,\n icon,\n className,\n ...props\n}) => {\n const alertRef = useRef<HTMLDivElement>(null);\n const [closed, setClosed] = useState(false);\n\n useEffect(() => {\n if (duration) {\n //To change opacity and hide the component\n const timeoutHide = setTimeout(() => {\n setClosed(true);\n }, duration);\n //To destroy the component after hiding it\n const timeoutDestroy = setTimeout(() => {\n setClosed(true);\n if (alertRef?.current) {\n alertRef?.current.removeChild(alertRef?.current.children[0]);\n }\n }, duration + 1000);\n\n return () => {\n clearTimeout(timeoutHide);\n clearTimeout(timeoutDestroy);\n };\n }\n }, [duration]);\n\n let closeButtonStyle = {\n none: \"\",\n info: \"\",\n warning: \"\",\n error: \"\",\n success: \"\",\n hyper: \"\",\n oceanic: \"\"\n };\n let styleVariant = {\n none: \"hawa-bg-background hawa-border\",\n info: \"hawa-text-info-foreground hawa-bg-info/90\",\n warning: \"hawa-text-warning-foreground hawa-bg-warning/90\",\n error: \"hawa-text-destructive-foreground hawa-bg-destructive/90\",\n success: \"hawa-text-success-foreground hawa-bg-success/90\",\n hyper:\n \"hawa-text-white hawa-bg-gradient-to-tl hawa-from-pink-700 hawa-via-red-500 hawa-to-yellow-600 \",\n oceanic:\n \"hawa-text-white hawa-bg-gradient-to-bl hawa-from-green-500 hawa-via-blue-700 hawa-to-purple-500\"\n };\n\n return (\n <div ref={alertRef}>\n <div\n data-testid=\"alert\"\n aria-label=\"Alert\"\n role=\"alert\"\n dir={direction}\n className={cn(\n \"hawa-relative hawa-mb-4 hawa-flex hawa-flex-col hawa-rounded hawa-p-4 hawa-text-sm hawa-transition-all\",\n styleVariant[severity],\n closed ? \"hawa-opacity-0\" : \"hawa-opacity-100\",\n className\n )}\n >\n <div className=\"hawa-flex hawa-flex-row\">\n {icon && (\n <div\n className={\n direction === \"rtl\"\n ? \"hawa-pl-2 hawa-pt-1\"\n : \"hawa-pr-2 hawa-pt-1\"\n }\n >\n {icon}\n </div>\n )}\n <div className=\"hawa-flex hawa-flex-col\">\n <span\n className={cn(\n \"hawa-font-bold\",\n direction === \"rtl\" ? \"hawa-ml-8\" : \"hawa-mr-8\"\n )}\n >\n {props.title}\n </span>\n <span\n className={cn(\n direction === \"rtl\" ? \"hawa-ml-8\" : \"hawa-mr-8\",\n props.persistent ? \"hawa-w-full\" : \"hawa-w-[calc(100% - 40px)]\"\n )}\n >\n {props.text}\n </span>\n {props.actions && (\n <div className=\"hawa-mt-2 hawa-flex hawa-flex-row hawa-gap-2\">\n {props.actions.map((act, index) => (\n <Button\n key={index}\n variant={act.variant}\n onClick={act.onClick()}\n >\n {act.label}\n </Button>\n ))}\n </div>\n )}\n </div>\n </div>\n {!props.persistent && (\n <button\n type=\"button\"\n data-dismiss-target=\"#alert-default\"\n aria-label=\"Close\"\n className={cn(\n \"hawa-absolute hawa-top-2 hawa-inline-flex hawa-h-9 hawa-w-9 hawa-items-center hawa-justify-center hawa-rounded-inner hawa-p-1.5 hawa-transition-all hover:hawa-text-gray-900\",\n closeButtonStyle[severity],\n direction === \"rtl\" ? \"hawa-left-2\" : \"hawa-right-2\"\n )}\n onClick={() => {\n if (props.onAlertClosed) {\n props.onAlertClosed();\n }\n if (!props.noDestroy) {\n setClosed(true);\n setTimeout(() => {\n if (alertRef?.current) {\n alertRef?.current.removeChild(\n alertRef?.current.children[0]\n );\n }\n }, 200);\n }\n }}\n >\n <span className=\"hawa-sr-only\">Close</span>\n <svg\n aria-label=\"Close Icon\"\n aria-hidden=\"true\"\n className=\"hawa-h-5 hawa-w-5\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n </button>\n )}\n </div>\n </div>\n );\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\ntype Palette = {\n name: string;\n colors: {\n [key: number]: string;\n };\n};\ntype Rgb = {\n r: number;\n g: number;\n b: number;\n};\nfunction hexToRgb(hex: string): Rgb | null {\n const sanitizedHex = hex.replaceAll(\"##\", \"#\");\n const colorParts = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(\n sanitizedHex\n );\n\n if (!colorParts) {\n return null;\n }\n\n const [, r, g, b] = colorParts;\n\n return {\n r: parseInt(r, 16),\n g: parseInt(g, 16),\n b: parseInt(b, 16)\n } as Rgb;\n}\n\nfunction rgbToHex(r: number, g: number, b: number): string {\n const toHex = (c: number) => `0${c.toString(16)}`.slice(-2);\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n}\n\nexport function getTextColor(color: string): \"#FFF\" | \"#333\" {\n const rgbColor = hexToRgb(color);\n\n if (!rgbColor) {\n return \"#333\";\n }\n\n const { r, g, b } = rgbColor;\n const luma = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n\n return luma < 120 ? \"#FFF\" : \"#333\";\n}\n\nfunction lighten(hex: string, intensity: number): string {\n const color = hexToRgb(`#${hex}`);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r + (255 - color.r) * intensity);\n const g = Math.round(color.g + (255 - color.g) * intensity);\n const b = Math.round(color.b + (255 - color.b) * intensity);\n\n return rgbToHex(r, g, b);\n}\n\nfunction darken(hex: string, intensity: number): string {\n const color = hexToRgb(hex);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r * intensity);\n const g = Math.round(color.g * intensity);\n const b = Math.round(color.b * intensity);\n\n return rgbToHex(r, g, b);\n}\nconst parseColor = (color: any) => {\n if (color.startsWith(\"#\")) {\n // Convert hex to RGB\n let r = parseInt(color.slice(1, 3), 16);\n let g = parseInt(color.slice(3, 5), 16);\n let b = parseInt(color.slice(5, 7), 16);\n return [r, g, b];\n } else if (color.startsWith(\"rgb\")) {\n // Extract RGB values from rgb() format\n return color.match(/\\d+/g).map(Number);\n }\n // Default to white if format is unrecognized\n return [255, 255, 255];\n};\nexport const calculateLuminance = (color: any) => {\n const [r, g, b] = parseColor(color)?.map((c: any) => {\n c /= 255;\n return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;\n });\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n};\n\nfunction getPallette(baseColor: string): Palette {\n const name = baseColor;\n\n const response: Palette = {\n name,\n colors: {\n 500: `#${baseColor}`.replace(\"##\", \"#\")\n }\n };\n\n const intensityMap: {\n [key: number]: number;\n } = {\n 50: 0.95,\n 100: 0.9,\n 200: 0.75,\n 300: 0.6,\n 400: 0.3,\n 600: 0.9,\n 700: 0.75,\n 800: 0.6,\n 900: 0.49\n };\n\n [50, 100, 200, 300, 400].forEach((level) => {\n response.colors[level] = lighten(baseColor, intensityMap[level]);\n });\n [600, 700, 800, 900].forEach((level) => {\n response.colors[level] = darken(baseColor, intensityMap[level]);\n });\n\n return response as Palette;\n}\n\nexport { getPallette };\n\n// const hexToRgb = (hex) => {\n// let d = hex?.split(\"#\")[1];\n// var aRgbHex = d?.match(/.{1,2}/g);\n// var aRgb = [\n// parseInt(aRgbHex[0], 16),\n// parseInt(aRgbHex[1], 16),\n// parseInt(aRgbHex[2], 16)\n// ];\n// return aRgb;\n// };\n// const getTextColor = (backColor) => {\n// let rgbArray = hexToRgb(backColor);\n// if (rgbArray[0] * 0.299 + rgbArray[1] * 0.587 + rgbArray[2] * 0.114 > 186) {\n// return \"#000000\";\n// } else {\n// return \"#ffffff\";\n// }\n// };\n// const replaceAt = function (string, index, replacement) {\n// // if (replacement == \"\" || replacement == \" \") {\n// // return (\n// // string.substring(0, index) +\n// // string.substring(index + replacement.length )\n// // );\n// // }\n// const replaced = string.substring(0, index) + replacement + string.substring(index + 1)\n// return replaced\n// };\n\n// export { hexToRgb, getTextColor, replaceAt };\n","import * as React from \"react\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@util/index\";\nimport { Loading } from \"../loading/Loading\";\n\nconst buttonVariants = cva(\n \"hawa-inline-flex hawa-items-center hawa-select-none hawa-rounded-md hawa-text-sm hawa-font-medium hawa-ring-offset-background hawa-transition-colors focus-visible:hawa-outline-none focus-visible:hawa-ring-2 focus-visible:hawa-ring-ring focus-visible:hawa-ring-offset-2 disabled:hawa-pointer-events-none disabled:hawa-opacity-50\",\n {\n variants: {\n variant: {\n default:\n \"hawa-bg-primary hawa-text-primary-foreground hover:hawa-bg-primary/90\",\n light: \"hawa-bg-primary/20 hawa-text-primary hover:hawa-bg-primary/40\",\n destructive:\n \"hawa-bg-destructive hawa-text-destructive-foreground hover:hawa-bg-destructive/90\",\n outline:\n \"hawa-border hawa-border-input hawa-bg-transparent hover:hawa-bg-accent hover:hawa-text-accent-foreground\",\n secondary:\n \"hawa-bg-secondary hawa-text-secondary-foreground hover:hawa-bg-secondary/80\",\n ghost: \"hover:hawa-bg-accent hover:hawa-text-accent-foreground\",\n link: \"hawa-text-primary hawa-underline-offset-4 hover:hawa-underline\",\n combobox: \"hawa-bg-background hawa-border\",\n neoBrutalism: \"neo-brutalism\"\n // \"hawa-cursor-pointer hawa-transition-all hawa-uppercase hawa-font-mono dark:hawa-bg-black hawa-font-bold hawa-py-2 hawa-px-4 hawa-rounded hawa-border-2 hawa-border-primary hawa-shadow-color-primary hawa-transition-[hawa-transform_50ms, hawa-box-shadow_50ms] active:hawa-translate-x-0.5 active:hawa-translate-y-0.5 active:hawa-shadow-color-primary-active shadow-color-primary active:shadow-color-primary-active\",\n },\n size: {\n default: \"hawa-h-10 hawa-px-4 hawa-py-2\",\n heightless: \"hawa-px-4 hawa-py-4\",\n xs: \"hawa-h-fit hawa-min-h-[25px] hawa-py-1 hawa-text-[10px] hawa-px-2 \",\n sm: \"hawa-h-9 hawa-text-[11px] hawa-rounded-md hawa-px-3\",\n lg: \"hawa-h-11 hawa-rounded-md hawa-px-8\",\n xl: \"hawa-h-14 hawa-rounded-md hawa-px-10\",\n icon: \"hawa-h-10 hawa-w-10\",\n smallIcon: \"hawa-h-7 hawa-w-7\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\"\n }\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n centered?: boolean;\n isLoading?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n asChild = false,\n centered = true,\n isLoading,\n children,\n ...props\n },\n ref\n ) => {\n const Comp = \"button\";\n\n // Determine the color for the HawaLoading component based on the variant\n const loadingColor =\n variant === \"outline\" || variant === \"ghost\" || variant === \"neoBrutalism\"\n ? \"hawa-bg-primary\"\n : \"hawa-bg-primary-foreground\";\n\n return (\n <Comp\n className={cn(\n buttonVariants({ variant, size, className }),\n centered && \"hawa-justify-center\",\n // \"hawa-bg-red-500\"\n )}\n ref={ref}\n {...props}\n >\n {isLoading ? (\n <Loading\n design={\n size === \"icon\" || size === \"smallIcon\" ? \"spinner\" : \"dots-pulse\"\n }\n themeMode={variant === \"outline\" ? \"light\" : \"dark\"}\n color={loadingColor}\n size={size === \"sm\" || size === \"xs\" ? \"xs\" : \"button\"}\n />\n ) : (\n children\n )}\n </Comp>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import React, { FC } from \"react\";\n\nimport { cn } from \"@util/index\";\n\ntype LoadingTypes = {\n /** Specifies the size of the loading component.*/\n size?: \"button\" | \"xs\" | \"sm\" | \"normal\" | \"lg\" | \"xl\";\n /** Determines the design of the loading animation.*/\n design?:\n | \"spinner\"\n | \"dots-bounce\"\n | \"dots-pulse\"\n | \"pulse\"\n | \"spinner-dots\"\n | \"squircle\"\n | \"square\"\n | \"progress\"\n | \"orbit\";\n /** Specifies the color of the loading component. By default it will inherit the value of --primary global CSS variable*/\n color?: string;\n classNames?: {\n container?: string;\n track?: string;\n car?: string;\n };\n themeMode?: \"dark\" | \"light\";\n};\n\nexport const Loading: FC<LoadingTypes> = ({\n design = \"spinner\",\n size = \"normal\",\n themeMode = \"light\",\n classNames,\n color,\n ...props\n}) => {\n let sizeStyles = {\n button: \"hawa-h-4 hawa-w-4\",\n xs: \"hawa-h-1 hawa-w-1\",\n sm: \"hawa-h-6 hawa-w-6\",\n normal: \"hawa-h-8 hawa-w-8\",\n lg: \"hawa-h-14 hawa-w-14\",\n xl: \"hawa-h-24 hawa-w-24\"\n };\n let progressSizes = {\n button: \"hawa-h-1\",\n xs: \"hawa-h-1 hawa-w-1\",\n sm: \"hawa-h-6 hawa-w-6\",\n normal: \"\",\n lg: \"hawa-h-6\",\n xl: \"hawa-h-10 hawa-w-64\"\n };\n\n let animationStyles: any = {\n pulse: \"hawa-animate-in hawa-fade-in hawa-duration-1000\",\n bounce: \"hawa-animate-bounce\"\n };\n switch (design.split(\"-\")[0]) {\n case \"dots\":\n return (\n <div\n className={cn(\n \"hawa-flex hawa-flex-row hawa-gap-2\",\n classNames?.container\n )}\n >\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-100 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-200 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-300 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n </div>\n );\n case \"square\":\n return (\n <svg\n className={cn(\n \"squircle-container\",\n sizeStyles[size],\n classNames?.container\n )}\n viewBox=\"0 0 35 35\"\n height=\"35\"\n width=\"35\"\n >\n <rect\n className=\"squircle-track\"\n x=\"2.5\"\n y=\"2.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n width=\"32.5\"\n height=\"32.5\"\n />\n <rect\n className=\"square-car\"\n x=\"2.5\"\n y=\"2.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n width=\"32.5\"\n height=\"32.5\"\n pathLength=\"100\"\n />\n </svg>\n );\n case \"squircle\":\n return (\n <svg\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 37 37\"\n height=\"37\"\n width=\"37\"\n preserveAspectRatio=\"xMidYMid meet\"\n className={cn(\n \"squircle-container\",\n sizeStyles[size],\n classNames?.container\n )}\n >\n <path\n className={cn(\"squircle-track\", classNames?.track)}\n fill=\"none\"\n strokeWidth=\"5\"\n pathLength=\"100\"\n d=\"M0.37 18.5 C0.37 5.772 5.772 0.37 18.5 0.37 S36.63 5.772 36.63 18.5 S31.228 36.63 18.5 36.63 S0.37 31.228 0.37 18.5\"\n ></path>\n <path\n className={cn(\"squircle-car\", classNames?.car)}\n fill=\"none\"\n strokeWidth=\"5\"\n pathLength=\"100\"\n d=\"M0.37 18.5 C0.37 5.772 5.772 0.37 18.5 0.37 S36.63 5.772 36.63 18.5 S31.228 36.63 18.5 36.63 S0.37 31.228 0.37 18.5\"\n ></path>\n </svg>\n );\n case \"progress\":\n return (\n <div\n className={cn(\n \"progress-loading after:hawa-rounded hawa-rounded\",\n progressSizes[size],\n classNames?.container\n )}\n ></div>\n );\n case \"orbit\":\n return (\n <div className={cn(\"orbit-container\", classNames?.container)}></div>\n );\n\n default:\n return (\n <svg\n viewBox=\"0 0 40 40\"\n height=\"40\"\n width=\"40\"\n className={cn(\n \"circle-container\",\n sizeStyles[size],\n classNames?.container\n )}\n >\n <circle\n className={cn(\n \"circle-track\",\n {\n \"hawa-stroke-primary-foreground\": themeMode === \"dark\",\n \"hawa-stroke-primary\": themeMode === \"light\"\n },\n classNames?.track\n )}\n cx=\"20\"\n cy=\"20\"\n r=\"17.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n pathLength=\"100\"\n />\n <circle\n className={cn(\n \"circle-car\",\n {\n \"hawa-stroke-primary-foreground\": themeMode === \"dark\",\n \"hawa-stroke-primary\": themeMode === \"light\"\n },\n classNames?.car\n )}\n cx=\"20\"\n cy=\"20\"\n r=\"17.5\"\n fill=\"none\"\n pathLength=\"100\"\n strokeWidth=\"5px\"\n />\n </svg>\n );\n }\n};\n"],"mappings":"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","names":["React","useEffect","useState","clsx","React","React","React","useState","acceptedFiles","useEffect","React","clsx"]}
package/dist/index.css CHANGED
@@ -2268,10 +2268,6 @@ input[type="number"]::-webkit-inner-spin-button,
2268
2268
  .hawa-bg-foreground\/5 {
2269
2269
  background-color: hsl(var(--foreground) / 0.05);
2270
2270
  }
2271
- .hawa-bg-gray-100 {
2272
- --tw-bg-opacity: 1;
2273
- background-color: rgb(243 244 246 / var(--tw-bg-opacity));
2274
- }
2275
2271
  .hawa-bg-gray-200 {
2276
2272
  --tw-bg-opacity: 1;
2277
2273
  background-color: rgb(229 231 235 / var(--tw-bg-opacity));
@@ -3960,10 +3956,6 @@ body {
3960
3956
  --tw-bg-opacity: 1;
3961
3957
  background-color: rgb(31 41 55 / var(--tw-bg-opacity));
3962
3958
  }
3963
- :is(.hawa-dark .dark\:hawa-bg-gray-900) {
3964
- --tw-bg-opacity: 1;
3965
- background-color: rgb(17 24 39 / var(--tw-bg-opacity));
3966
- }
3967
3959
  :is(.hawa-dark .dark\:hawa-bg-green-400) {
3968
3960
  --tw-bg-opacity: 1;
3969
3961
  background-color: rgb(74 222 128 / var(--tw-bg-opacity));
package/dist/index.js CHANGED
@@ -2294,7 +2294,7 @@ var Alert = ({
2294
2294
  oceanic: ""
2295
2295
  };
2296
2296
  let styleVariant = {
2297
- none: "hawa-text-gray-700 hawa-bg-gray-100 dark:hawa-bg-gray-900 ",
2297
+ none: "hawa-bg-background hawa-border",
2298
2298
  info: "hawa-text-info-foreground hawa-bg-info/90",
2299
2299
  warning: "hawa-text-warning-foreground hawa-bg-warning/90",
2300
2300
  error: "hawa-text-destructive-foreground hawa-bg-destructive/90",
package/dist/index.mjs CHANGED
@@ -2059,7 +2059,7 @@ var Alert = ({
2059
2059
  oceanic: ""
2060
2060
  };
2061
2061
  let styleVariant = {
2062
- none: "hawa-text-gray-700 hawa-bg-gray-100 dark:hawa-bg-gray-900 ",
2062
+ none: "hawa-bg-background hawa-border",
2063
2063
  info: "hawa-text-info-foreground hawa-bg-info/90",
2064
2064
  warning: "hawa-text-warning-foreground hawa-bg-warning/90",
2065
2065
  error: "hawa-text-destructive-foreground hawa-bg-destructive/90",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sikka/hawa",
3
- "version": "0.30.5-next",
3
+ "version": "0.30.6-next",
4
4
  "description": "Modern UI Kit made with Tailwind",
5
5
  "author": {
6
6
  "name": "Sikka Software",