@sikka/hawa 0.48.0-next → 0.49.0-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.
- package/dist/accordion/index.js +3 -28
- package/dist/accordion/index.js.map +1 -1
- package/dist/accordion/index.mjs +3 -28
- package/dist/accordion/index.mjs.map +1 -1
- package/dist/alert/index.js +53 -98
- package/dist/alert/index.js.map +1 -1
- package/dist/alert/index.mjs +53 -98
- package/dist/alert/index.mjs.map +1 -1
- package/dist/appLayout/index.d.mts +2 -0
- package/dist/appLayout/index.d.ts +2 -0
- package/dist/appLayout/index.js +263 -409
- package/dist/appLayout/index.js.map +1 -1
- package/dist/appLayout/index.mjs +263 -409
- package/dist/appLayout/index.mjs.map +1 -1
- package/dist/appMenubar/index.js +15 -20
- package/dist/appMenubar/index.js.map +1 -1
- package/dist/appMenubar/index.mjs +15 -20
- package/dist/appMenubar/index.mjs.map +1 -1
- package/dist/appTabs/index.js +28 -37
- package/dist/appTabs/index.js.map +1 -1
- package/dist/appTabs/index.mjs +28 -37
- package/dist/appTabs/index.mjs.map +1 -1
- package/dist/appTopbar/index.js +125 -173
- package/dist/appTopbar/index.js.map +1 -1
- package/dist/appTopbar/index.mjs +125 -173
- package/dist/appTopbar/index.mjs.map +1 -1
- package/dist/avatar/index.js.map +1 -1
- package/dist/avatar/index.mjs.map +1 -1
- package/dist/backToTop/index.js +50 -82
- package/dist/backToTop/index.js.map +1 -1
- package/dist/backToTop/index.mjs +50 -82
- package/dist/backToTop/index.mjs.map +1 -1
- package/dist/badge/index.d.mts +1 -1
- package/dist/badge/index.d.ts +1 -1
- package/dist/badge/index.js +2 -18
- package/dist/badge/index.js.map +1 -1
- package/dist/badge/index.mjs +2 -18
- package/dist/badge/index.mjs.map +1 -1
- package/dist/blocks/auth/index.d.mts +1 -0
- package/dist/blocks/auth/index.d.ts +1 -0
- package/dist/blocks/auth/index.js +539 -792
- package/dist/blocks/auth/index.mjs +433 -604
- package/dist/blocks/feedback/index.js +214 -375
- package/dist/blocks/feedback/index.mjs +12 -25
- package/dist/blocks/index.d.mts +1 -0
- package/dist/blocks/index.d.ts +1 -0
- package/dist/blocks/index.js +940 -1445
- package/dist/blocks/index.mjs +469 -615
- package/dist/blocks/misc/index.js +136 -251
- package/dist/blocks/misc/index.mjs +29 -54
- package/dist/blocks/pricing/index.js +220 -397
- package/dist/blocks/pricing/index.mjs +63 -134
- package/dist/breadcrumb/index.js +1 -5
- package/dist/breadcrumb/index.js.map +1 -1
- package/dist/breadcrumb/index.mjs +1 -5
- package/dist/breadcrumb/index.mjs.map +1 -1
- package/dist/button/index.js +50 -82
- package/dist/button/index.js.map +1 -1
- package/dist/button/index.mjs +50 -82
- package/dist/button/index.mjs.map +1 -1
- package/dist/calendar/index.js +50 -82
- package/dist/calendar/index.js.map +1 -1
- package/dist/calendar/index.mjs +50 -82
- package/dist/calendar/index.mjs.map +1 -1
- package/dist/card/index.js +7 -35
- package/dist/card/index.js.map +1 -1
- package/dist/card/index.mjs +7 -35
- package/dist/card/index.mjs.map +1 -1
- package/dist/carousel/index.js +15 -27
- package/dist/carousel/index.js.map +1 -1
- package/dist/carousel/index.mjs +15 -27
- package/dist/carousel/index.mjs.map +1 -1
- package/dist/checkbox/index.js +2 -13
- package/dist/checkbox/index.js.map +1 -1
- package/dist/checkbox/index.mjs +2 -13
- package/dist/checkbox/index.mjs.map +1 -1
- package/dist/chip/index.js +2 -16
- package/dist/chip/index.js.map +1 -1
- package/dist/chip/index.mjs +2 -16
- package/dist/chip/index.mjs.map +1 -1
- package/dist/{chunk-WUMDFBEK.mjs → chunk-3CHFVHTW.mjs} +43 -54
- package/dist/{chunk-2LUXOXAL.mjs → chunk-5SQBJRWE.mjs} +3 -9
- package/dist/{chunk-C2UOOH4X.mjs → chunk-B53SP2WZ.mjs} +3 -17
- package/dist/chunk-GHGWQVTM.mjs +150 -0
- package/dist/{chunk-5S5DR7KF.mjs → chunk-I23ONEDJ.mjs} +2 -10
- package/dist/{chunk-JFWD2ICY.mjs → chunk-JT7R3L5O.mjs} +54 -62
- package/dist/{chunk-6SJUUJOV.mjs → chunk-KDGJZPWK.mjs} +295 -574
- package/dist/{chunk-AWJSHOYU.mjs → chunk-KSJGXQTE.mjs} +1 -1
- package/dist/{chunk-NMW4GM4G.mjs → chunk-SE2JMXYG.mjs} +104 -144
- package/dist/{chunk-GBLWUEYN.mjs → chunk-ULRL4WI6.mjs} +176 -256
- package/dist/{chunk-IFWYR5W2.mjs → chunk-VUELRPUL.mjs} +57 -117
- package/dist/{chunk-WL7C2A5D.mjs → chunk-WQR4XZGL.mjs} +8 -15
- package/dist/codeBlock/index.js +50 -82
- package/dist/codeBlock/index.js.map +1 -1
- package/dist/codeBlock/index.mjs +50 -82
- package/dist/codeBlock/index.mjs.map +1 -1
- package/dist/colorPicker/index.js +21 -33
- package/dist/colorPicker/index.js.map +1 -1
- package/dist/colorPicker/index.mjs +22 -37
- package/dist/colorPicker/index.mjs.map +1 -1
- package/dist/combobox/index.d.mts +1 -1
- package/dist/combobox/index.d.ts +1 -1
- package/dist/combobox/index.js +141 -223
- package/dist/combobox/index.js.map +1 -1
- package/dist/combobox/index.mjs +141 -223
- package/dist/combobox/index.mjs.map +1 -1
- package/dist/command/index.d.mts +1 -1
- package/dist/command/index.d.ts +1 -1
- package/dist/command/index.js +129 -212
- package/dist/command/index.js.map +1 -1
- package/dist/command/index.mjs +129 -212
- package/dist/command/index.mjs.map +1 -1
- package/dist/dataTable/index.js +254 -394
- package/dist/dataTable/index.js.map +1 -1
- package/dist/dataTable/index.mjs +254 -394
- package/dist/dataTable/index.mjs.map +1 -1
- package/dist/datePicker/index.js +64 -105
- package/dist/datePicker/index.js.map +1 -1
- package/dist/datePicker/index.mjs +64 -105
- package/dist/datePicker/index.mjs.map +1 -1
- package/dist/destroyableCard/index.js +8 -39
- package/dist/destroyableCard/index.js.map +1 -1
- package/dist/destroyableCard/index.mjs +8 -39
- package/dist/destroyableCard/index.mjs.map +1 -1
- package/dist/dialog/index.js +70 -122
- package/dist/dialog/index.js.map +1 -1
- package/dist/dialog/index.mjs +70 -122
- package/dist/dialog/index.mjs.map +1 -1
- package/dist/docsLayout/index.js +169 -358
- package/dist/docsLayout/index.js.map +1 -1
- package/dist/docsLayout/index.mjs +169 -358
- package/dist/docsLayout/index.mjs.map +1 -1
- package/dist/docsSidebar/index.js +9 -16
- package/dist/docsSidebar/index.js.map +1 -1
- package/dist/docsSidebar/index.mjs +9 -16
- package/dist/docsSidebar/index.mjs.map +1 -1
- package/dist/dropdownMenu/index.js +124 -164
- package/dist/dropdownMenu/index.js.map +1 -1
- package/dist/dropdownMenu/index.mjs +124 -164
- package/dist/dropdownMenu/index.mjs.map +1 -1
- package/dist/elements/index.d.mts +3 -3
- package/dist/elements/index.d.ts +3 -3
- package/dist/elements/index.js +841 -1505
- package/dist/elements/index.mjs +381 -718
- package/dist/fileDropzone/index.js +60 -159
- package/dist/fileDropzone/index.js.map +1 -1
- package/dist/fileDropzone/index.mjs +60 -159
- package/dist/fileDropzone/index.mjs.map +1 -1
- package/dist/glow/index.js +4 -16
- package/dist/glow/index.js.map +1 -1
- package/dist/glow/index.mjs +4 -16
- package/dist/glow/index.mjs.map +1 -1
- package/dist/hooks/index.d.mts +1 -5
- package/dist/hooks/index.d.ts +1 -5
- package/dist/hooks/index.js +11 -24
- package/dist/hooks/index.mjs +2 -2
- package/dist/{index-B0aJcA6d.d.ts → index-BgNycocQ.d.mts} +2 -2
- package/dist/{index-B0aJcA6d.d.mts → index-BgNycocQ.d.ts} +2 -2
- package/dist/index.css +1 -6
- package/dist/index.d.mts +7 -8
- package/dist/index.d.ts +7 -8
- package/dist/index.js +1549 -2512
- package/dist/index.mjs +1550 -2516
- package/dist/input/index.js +20 -29
- package/dist/input/index.js.map +1 -1
- package/dist/input/index.mjs +20 -29
- package/dist/input/index.mjs.map +1 -1
- package/dist/interfaceSettings/index.js +122 -163
- package/dist/interfaceSettings/index.js.map +1 -1
- package/dist/interfaceSettings/index.mjs +122 -163
- package/dist/interfaceSettings/index.mjs.map +1 -1
- package/dist/label/index.js +19 -26
- package/dist/label/index.js.map +1 -1
- package/dist/label/index.mjs +19 -26
- package/dist/label/index.mjs.map +1 -1
- package/dist/layout/index.d.mts +2 -0
- package/dist/layout/index.d.ts +2 -0
- package/dist/layout/index.js +434 -790
- package/dist/layout/index.mjs +143 -243
- package/dist/loading/index.js +30 -53
- package/dist/loading/index.js.map +1 -1
- package/dist/loading/index.mjs +30 -53
- package/dist/loading/index.mjs.map +1 -1
- package/dist/logos/index.js +66 -191
- package/dist/logos/index.js.map +1 -1
- package/dist/logos/index.mjs +66 -191
- package/dist/logos/index.mjs.map +1 -1
- package/dist/navbar/index.js +1 -4
- package/dist/navbar/index.js.map +1 -1
- package/dist/navbar/index.mjs +1 -4
- package/dist/navbar/index.mjs.map +1 -1
- package/dist/navigationMenu/index.js +14 -22
- package/dist/navigationMenu/index.js.map +1 -1
- package/dist/navigationMenu/index.mjs +14 -22
- package/dist/navigationMenu/index.mjs.map +1 -1
- package/dist/pagination/index.js +1 -5
- package/dist/pagination/index.js.map +1 -1
- package/dist/pagination/index.mjs +1 -5
- package/dist/pagination/index.mjs.map +1 -1
- package/dist/passwordInput/index.js +36 -65
- package/dist/passwordInput/index.js.map +1 -1
- package/dist/passwordInput/index.mjs +36 -65
- package/dist/passwordInput/index.mjs.map +1 -1
- package/dist/phoneInput/index.js +20 -29
- package/dist/phoneInput/index.js.map +1 -1
- package/dist/phoneInput/index.mjs +20 -29
- package/dist/phoneInput/index.mjs.map +1 -1
- package/dist/pinInput/index.js +14 -16
- package/dist/pinInput/index.js.map +1 -1
- package/dist/pinInput/index.mjs +14 -16
- package/dist/pinInput/index.mjs.map +1 -1
- package/dist/popover/index.js +14 -24
- package/dist/popover/index.js.map +1 -1
- package/dist/popover/index.mjs +14 -24
- package/dist/popover/index.mjs.map +1 -1
- package/dist/progress/index.js +19 -26
- package/dist/progress/index.js.map +1 -1
- package/dist/progress/index.mjs +19 -26
- package/dist/progress/index.mjs.map +1 -1
- package/dist/progressCircle/index.js +67 -71
- package/dist/progressCircle/index.js.map +1 -1
- package/dist/progressCircle/index.mjs +67 -71
- package/dist/progressCircle/index.mjs.map +1 -1
- package/dist/radio/index.js +122 -163
- package/dist/radio/index.js.map +1 -1
- package/dist/radio/index.mjs +122 -163
- package/dist/radio/index.mjs.map +1 -1
- package/dist/scrollArea/index.js.map +1 -1
- package/dist/scrollArea/index.mjs.map +1 -1
- package/dist/scrollIndicator/index.js +1 -4
- package/dist/scrollIndicator/index.js.map +1 -1
- package/dist/scrollIndicator/index.mjs +1 -4
- package/dist/scrollIndicator/index.mjs.map +1 -1
- package/dist/select/index.js +20 -29
- package/dist/select/index.js.map +1 -1
- package/dist/select/index.mjs +20 -29
- package/dist/select/index.mjs.map +1 -1
- package/dist/separator/index.js.map +1 -1
- package/dist/separator/index.mjs.map +1 -1
- package/dist/sheet/index.js +42 -53
- package/dist/sheet/index.js.map +1 -1
- package/dist/sheet/index.mjs +42 -53
- package/dist/sheet/index.mjs.map +1 -1
- package/dist/sidebar/index.js +66 -133
- package/dist/sidebar/index.js.map +1 -1
- package/dist/sidebar/index.mjs +66 -133
- package/dist/sidebar/index.mjs.map +1 -1
- package/dist/signature/index.js +19 -26
- package/dist/signature/index.js.map +1 -1
- package/dist/signature/index.mjs +19 -26
- package/dist/signature/index.mjs.map +1 -1
- package/dist/simpleTable/index.js +50 -81
- package/dist/simpleTable/index.js.map +1 -1
- package/dist/simpleTable/index.mjs +50 -81
- package/dist/simpleTable/index.mjs.map +1 -1
- package/dist/skeleton/index.js.map +1 -1
- package/dist/skeleton/index.mjs.map +1 -1
- package/dist/slider/index.js.map +1 -1
- package/dist/slider/index.mjs.map +1 -1
- package/dist/sonner/index.js.map +1 -1
- package/dist/sonner/index.mjs.map +1 -1
- package/dist/sortButton/index.js +50 -82
- package/dist/sortButton/index.js.map +1 -1
- package/dist/sortButton/index.mjs +50 -82
- package/dist/sortButton/index.mjs.map +1 -1
- package/dist/splitButton/index.js +214 -294
- package/dist/splitButton/index.js.map +1 -1
- package/dist/splitButton/index.mjs +214 -294
- package/dist/splitButton/index.mjs.map +1 -1
- package/dist/stats/index.js +7 -35
- package/dist/stats/index.js.map +1 -1
- package/dist/stats/index.mjs +7 -35
- package/dist/stats/index.mjs.map +1 -1
- package/dist/switch/index.js +24 -34
- package/dist/switch/index.js.map +1 -1
- package/dist/switch/index.mjs +24 -34
- package/dist/switch/index.mjs.map +1 -1
- package/dist/table/index.js +27 -29
- package/dist/table/index.js.map +1 -1
- package/dist/table/index.mjs +27 -29
- package/dist/table/index.mjs.map +1 -1
- package/dist/tabs/index.js +54 -76
- package/dist/tabs/index.js.map +1 -1
- package/dist/tabs/index.mjs +54 -76
- package/dist/tabs/index.mjs.map +1 -1
- package/dist/textarea/index.js +21 -38
- package/dist/textarea/index.js.map +1 -1
- package/dist/textarea/index.mjs +21 -38
- package/dist/textarea/index.mjs.map +1 -1
- package/dist/toast/index.js +2 -10
- package/dist/toast/index.js.map +1 -1
- package/dist/toast/index.mjs +2 -10
- package/dist/toast/index.mjs.map +1 -1
- package/dist/toaster/index.js +3 -16
- package/dist/toaster/index.js.map +1 -1
- package/dist/toaster/index.mjs +3 -16
- package/dist/toaster/index.mjs.map +1 -1
- package/dist/tooltip/index.js +19 -26
- package/dist/tooltip/index.js.map +1 -1
- package/dist/tooltip/index.mjs +19 -26
- package/dist/tooltip/index.mjs.map +1 -1
- package/package.json +12 -12
- package/dist/chunk-JP2N5WKD.mjs +0 -190
package/dist/stats/index.mjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../layout/stats/Stats.tsx","../../util/index.ts","../../elements/card/Card.tsx","../../elements/skeleton/Skeleton.tsx"],"sourcesContent":["import React, { FC } from \"react\";\n\nimport { cn } from \"@util/index\";\n\nimport { Card, CardContent, CardTitle } from \"@elements/card\";\nimport { Skeleton } from \"@elements/skeleton\";\n\ninterface StatTypes extends React.HTMLAttributes<HTMLDivElement> {\n label?: string;\n color?: string;\n number?: string;\n helperText?: any;\n helperTextColor?: \"default\" | \"positive\" | \"negative\" | \"muted\";\n chart?: any;\n icon?: React.ReactNode;\n variant?:\n | \"default\"\n | \"plain\"\n | \"contained\"\n | \"outlined\"\n | \"brutalist\"\n | \"dropshadow\";\n width?: \"full\" | \"min\" | \"normal\";\n isLoading?: boolean;\n className?: string;\n clickable?: boolean;\n}\nexport const Stats: FC<StatTypes> = ({\n label,\n icon,\n isLoading,\n number,\n helperText,\n helperTextColor = \"default\",\n chart,\n clickable,\n variant = \"default\",\n ...props\n}) => {\n let helperTextColorStyles = {\n default: \"\",\n positive: \"hawa-text-green-600 dark:hawa-text-green-500\",\n negative: \"hawa-text-red-600 dark:hawa-text-red-500\",\n muted: \"hawa-text-muted-foreground\",\n };\n return (\n <Card {...props} clickable={clickable}>\n <div className=\"hawa-flex hawa-flex-row hawa-items-center hawa-justify-between hawa-p-4 hawa-px-6\">\n <CardTitle className=\"hawa-text-sm hawa-font-medium\">{label}</CardTitle>\n {icon && <span>{icon}</span>}\n </div>\n <CardContent className=\"hawa-transition-all\">\n {isLoading ? (\n <Skeleton className=\"hawa-h-8 hawa-w-3/4\" />\n ) : (\n <div className=\"hawa-text-2xl hawa-font-bold\">{number}</div>\n )}\n {helperText && (\n <div\n className={cn(\n \"hawa-my-0 hawa-text-start hawa-text-xs hawa-transition-all\",\n helperTextColorStyles[helperTextColor],\n helperText\n ? \"hawa-h-4 hawa-opacity-100\"\n : \"hawa-h-0 hawa-opacity-0\",\n )}\n >\n {isLoading ? (\n <Skeleton className=\"hawa-mt-2 hawa-h-4 hawa-w-1/2\" />\n ) : (\n helperText\n )}\n </div>\n )}\n {chart &&\n (isLoading ? (\n <Skeleton className=\"hawa-mt-2 hawa-h-4 hawa-w-1/2\" />\n ) : (\n chart\n ))}\n </CardContent>\n </Card>\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 { cn } from \"@util/index\";\n\ninterface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n clickable?: boolean;\n variant?: \"default\" | \"neoBrutalism\";\n asContainer?: boolean;\n}\n\ntype CardContentProps = {\n headless?: boolean;\n noPadding?: boolean;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n (\n {\n className,\n variant = \"default\",\n clickable = false,\n asContainer = false,\n ...props\n },\n ref,\n ) => {\n let variantStyles = {\n default: cn(\n \"hawa-rounded hawa-border hawa-bg-card hawa-text-card-foreground hawa-shadow-sm\",\n clickable &&\n \"hawa-cursor-pointer hawa-transition-all hover:hawa-drop-shadow-md dark:hover:dark-shadow\",\n ),\n neoBrutalism: cn(\n \"neo-brutalism\",\n // \"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] transition-all uppercase font-mono dark:bg-black font-bold py-2 px-4 rounded border-2 border-primary shadow-color-primary transition-[transform_50ms, box-shadow_50ms]\",\n clickable &&\n \"hawa-cursor-pointer active:hawa-translate-x-0.5 active:hawa-translate-y-0.5 active:hawa-shadow-color-primary-active active:translate-x-0.5 active:translate-y-0.5 active:shadow-color-primary-active\",\n ),\n };\n return (\n <div\n ref={ref}\n className={cn(!asContainer && variantStyles[variant], className)}\n {...props}\n />\n );\n },\n);\n\ntype CardHeaderProps = React.HTMLAttributes<HTMLDivElement> & {\n actions?: React.ReactNode;\n};\nconst CardHeader = React.forwardRef<HTMLDivElement, CardHeaderProps>(\n ({ className, ...props }, ref) => (\n <div className=\"hawa-flex hawa-flex-row hawa-justify-between\">\n <div\n ref={ref}\n className={cn(\n \"hawa-flex hawa-flex-col hawa-space-y-1.5 hawa-p-6\",\n className,\n )}\n {...props}\n />\n {props.actions && <div className=\"hawa-p-6\">{props.actions}</div>}\n </div>\n ),\n);\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"hawa-text-2xl hawa-font-semibold\", className)}\n {...props}\n />\n));\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"hawa-text-sm hawa-text-muted-foreground\", className)}\n {...props}\n />\n));\nconst CardContent = React.forwardRef<HTMLDivElement, CardContentProps>(\n ({ headless, noPadding, className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n noPadding ? \"hawa-p-0\" : \"hawa-p-6\",\n headless ? \"hawa-pt-6\" : \"hawa-pt-0\",\n className,\n )}\n {...props}\n />\n ),\n);\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & { noPadding?: boolean }\n>(({ className, noPadding, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n noPadding ? \"hawa-p-0\" : \"hawa-p-6\",\n \"hawa-flex hawa-items-center hawa-pt-0\",\n className,\n )}\n {...props}\n />\n));\n\nCardDescription.displayName = \"CardDescription\";\nCardContent.displayName = \"CardContent\";\nCardHeader.displayName = \"CardHeader\";\nCardFooter.displayName = \"CardFooter\";\nCardTitle.displayName = \"CardTitle\";\nCard.displayName = \"Card\";\n\nexport {\n CardDescription,\n CardContent,\n CardHeader,\n CardFooter,\n CardTitle,\n Card,\n};\n","import React from \"react\";\n\nimport { cn } from \"@util/index\";\n\ninterface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n animation?: \"none\" | \"pulse\" | \"shimmer\";\n content?: any;\n fade?: \"top\" | \"bottom\" | \"left\" | \"right\";\n as?: \"div\" | \"input\";\n}\n\nfunction Skeleton({\n className,\n content,\n animation = \"pulse\",\n fade,\n as = \"div\",\n ...props\n}: SkeletonProps) {\n const animationStyles = {\n none: \"hawa-rounded hawa-bg-muted\",\n pulse: \"hawa-animate-pulse hawa-rounded hawa-bg-muted\",\n shimmer:\n \"hawa-space-y-5 hawa-rounded hawa-bg-muted hawa-p-4 hawa-relative before:hawa-absolute before:hawa-inset-0 before:hawa--translate-x-full before:hawa-animate-[shimmer_2s_infinite] before:hawa-bg-gradient-to-r before:hawa-from-transparent before:hawa-via-gray-300/40 dark:before:hawa-via-white/10 before:hawa-to-transparent hawa-isolate hawa-overflow-hidden before:hawa-border-t before:hawa-border-rose-100/10\",\n };\n const fadeStyle = {\n bottom: \"hawa-mask-fade-bottom\",\n top: \"hawa-mask-fade-top\",\n right: \"hawa-mask-fade-right\",\n left: \"hawa-mask-fade-left \",\n };\n\n const styledAs = {\n div: \"\",\n input: \"hawa-h-[40px] hawa-w-full\",\n };\n\n return (\n <div\n className={cn(\n animationStyles[animation],\n content && \"hawa-flex hawa-flex-col hawa-items-center hawa-justify-center\",\n fade && fadeStyle[fade],\n styledAs[as],\n className,\n )}\n {...props}\n >\n {content && content}\n </div>\n );\n}\n\nexport { Skeleton };\n"],"mappings":";;;AAAA,OAAOA,YAAmB;;;ACA1B,SAAS,YAA6B;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;;;ACLA,YAAY,WAAW;AAevB,IAAM,OAAa;AAAA,EACjB,CACE;AAAA,IACE;AAAA,IACA,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,GAAG;AAAA,EACL,GACA,QACG;AACH,QAAI,gBAAgB;AAAA,MAClB,SAAS;AAAA,QACP;AAAA,QACA,aACE;AAAA,MACJ;AAAA,MACA,cAAc;AAAA,QACZ;AAAA;AAAA,QAEA,aACE;AAAA,MACJ;AAAA,IACF;AACA,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW,GAAG,CAAC,eAAe,cAAc,OAAO,GAAG,SAAS;AAAA,QAC9D,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAKA,IAAM,aAAmB;AAAA,EACvB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QACxB,oCAAC,SAAI,WAAU,kDACb;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACC,MAAM,WAAW,oCAAC,SAAI,WAAU,cAAY,MAAM,OAAQ,CAC7D;AAEJ;AACA,IAAM,YAAkB,iBAGtB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,oCAAoC,SAAS;AAAA,IAC1D,GAAG;AAAA;AACN,CACD;AACD,IAAM,kBAAwB,iBAG5B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,2CAA2C,SAAS;AAAA,IACjE,GAAG;AAAA;AACN,CACD;AACD,IAAM,cAAoB;AAAA,EACxB,CAAC,EAAE,UAAU,WAAW,WAAW,GAAG,MAAM,GAAG,QAC7C;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT,YAAY,aAAa;AAAA,QACzB,WAAW,cAAc;AAAA,QACzB;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,IAAM,aAAmB,iBAGvB,CAAC,EAAE,WAAW,WAAW,GAAG,MAAM,GAAG,QACrC;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT,YAAY,aAAa;AAAA,MACzB;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AAED,gBAAgB,cAAc;AAC9B,YAAY,cAAc;AAC1B,WAAW,cAAc;AACzB,WAAW,cAAc;AACzB,UAAU,cAAc;AACxB,KAAK,cAAc;;;ACxHnB,OAAOC,YAAW;AAYlB,SAAS,SAAS;AAAA,EAChB;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA,KAAK;AAAA,EACL,GAAG;AACL,GAAkB;AAChB,QAAM,kBAAkB;AAAA,IACtB,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SACE;AAAA,EACJ;AACA,QAAM,YAAY;AAAA,IAChB,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAEA,QAAM,WAAW;AAAA,IACf,KAAK;AAAA,IACL,OAAO;AAAA,EACT;AAEA,SACE,gBAAAC,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT,gBAAgB,SAAS;AAAA,QACzB,WAAW;AAAA,QACX,QAAQ,UAAU,IAAI;AAAA,QACtB,SAAS,EAAE;AAAA,QACX;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,IAEH,WAAW;AAAA,EACd;AAEJ;;;AHzBO,IAAM,QAAuB,CAAC;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,MAAM;AACJ,MAAI,wBAAwB;AAAA,IAC1B,SAAS;AAAA,IACT,UAAU;AAAA,IACV,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AACA,SACE,gBAAAC,OAAA,cAAC,QAAM,GAAG,OAAO,aACf,gBAAAA,OAAA,cAAC,SAAI,WAAU,uFACb,gBAAAA,OAAA,cAAC,aAAU,WAAU,mCAAiC,KAAM,GAC3D,QAAQ,gBAAAA,OAAA,cAAC,cAAM,IAAK,CACvB,GACA,gBAAAA,OAAA,cAAC,eAAY,WAAU,yBACpB,YACC,gBAAAA,OAAA,cAAC,YAAS,WAAU,uBAAsB,IAE1C,gBAAAA,OAAA,cAAC,SAAI,WAAU,kCAAgC,MAAO,GAEvD,cACC,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,sBAAsB,eAAe;AAAA,QACrC,aACI,8BACA;AAAA,MACN;AAAA;AAAA,IAEC,YACC,gBAAAA,OAAA,cAAC,YAAS,WAAU,iCAAgC,IAEpD;AAAA,EAEJ,GAED,UACE,YACC,gBAAAA,OAAA,cAAC,YAAS,WAAU,iCAAgC,IAEpD,MAEN,CACF;AAEJ;","names":["React","React","React","React"]}
|
1
|
+
{"version":3,"sources":["../../layout/stats/Stats.tsx","../../util/index.ts","../../elements/card/Card.tsx","../../elements/skeleton/Skeleton.tsx"],"sourcesContent":["import React, { FC } from \"react\";\n\nimport { cn } from \"@util/index\";\n\nimport { Card, CardContent, CardTitle } from \"@elements/card\";\nimport { Skeleton } from \"@elements/skeleton\";\n\ninterface StatTypes extends React.HTMLAttributes<HTMLDivElement> {\n label?: string;\n color?: string;\n number?: string;\n helperText?: any;\n helperTextColor?: \"default\" | \"positive\" | \"negative\" | \"muted\";\n chart?: any;\n icon?: React.ReactNode;\n variant?: \"default\" | \"plain\" | \"contained\" | \"outlined\" | \"brutalist\" | \"dropshadow\";\n width?: \"full\" | \"min\" | \"normal\";\n isLoading?: boolean;\n className?: string;\n clickable?: boolean;\n}\nexport const Stats: FC<StatTypes> = ({\n label,\n icon,\n isLoading,\n number,\n helperText,\n helperTextColor = \"default\",\n chart,\n clickable,\n variant = \"default\",\n ...props\n}) => {\n let helperTextColorStyles = {\n default: \"\",\n positive: \"hawa-text-green-600 dark:hawa-text-green-500\",\n negative: \"hawa-text-red-600 dark:hawa-text-red-500\",\n muted: \"hawa-text-muted-foreground\",\n };\n return (\n <Card {...props} clickable={clickable}>\n <div className=\"hawa-flex hawa-flex-row hawa-items-center hawa-justify-between hawa-p-4 hawa-px-6\">\n <CardTitle className=\"hawa-text-sm hawa-font-medium\">{label}</CardTitle>\n {icon && <span>{icon}</span>}\n </div>\n <CardContent className=\"hawa-transition-all\">\n {isLoading ? (\n <Skeleton className=\"hawa-h-8 hawa-w-3/4\" />\n ) : (\n <div className=\"hawa-text-2xl hawa-font-bold\">{number}</div>\n )}\n {helperText && (\n <div\n className={cn(\n \"hawa-my-0 hawa-text-start hawa-text-xs hawa-transition-all\",\n helperTextColorStyles[helperTextColor],\n helperText ? \"hawa-h-4 hawa-opacity-100\" : \"hawa-h-0 hawa-opacity-0\",\n )}\n >\n {isLoading ? <Skeleton className=\"hawa-mt-2 hawa-h-4 hawa-w-1/2\" /> : helperText}\n </div>\n )}\n {chart && (isLoading ? <Skeleton className=\"hawa-mt-2 hawa-h-4 hawa-w-1/2\" /> : chart)}\n </CardContent>\n </Card>\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(sanitizedHex);\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 { cn } from \"@util/index\";\n\ninterface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n clickable?: boolean;\n variant?: \"default\" | \"neoBrutalism\";\n asContainer?: boolean;\n}\n\ntype CardContentProps = {\n headless?: boolean;\n noPadding?: boolean;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant = \"default\", clickable = false, asContainer = false, ...props }, ref) => {\n let variantStyles = {\n default: cn(\n \"hawa-rounded hawa-border hawa-bg-card hawa-text-card-foreground hawa-shadow-sm\",\n clickable &&\n \"hawa-cursor-pointer hawa-transition-all hover:hawa-drop-shadow-md dark:hover:dark-shadow\",\n ),\n neoBrutalism: cn(\n \"neo-brutalism\",\n // \"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] transition-all uppercase font-mono dark:bg-black font-bold py-2 px-4 rounded border-2 border-primary shadow-color-primary transition-[transform_50ms, box-shadow_50ms]\",\n clickable &&\n \"hawa-cursor-pointer active:hawa-translate-x-0.5 active:hawa-translate-y-0.5 active:hawa-shadow-color-primary-active active:translate-x-0.5 active:translate-y-0.5 active:shadow-color-primary-active\",\n ),\n };\n return (\n <div ref={ref} className={cn(!asContainer && variantStyles[variant], className)} {...props} />\n );\n },\n);\n\ntype CardHeaderProps = React.HTMLAttributes<HTMLDivElement> & {\n actions?: React.ReactNode;\n};\nconst CardHeader = React.forwardRef<HTMLDivElement, CardHeaderProps>(\n ({ className, ...props }, ref) => (\n <div className=\"hawa-flex hawa-flex-row hawa-justify-between\">\n <div\n ref={ref}\n className={cn(\"hawa-flex hawa-flex-col hawa-space-y-1.5 hawa-p-6\", className)}\n {...props}\n />\n {props.actions && <div className=\"hawa-p-6\">{props.actions}</div>}\n </div>\n ),\n);\nconst CardTitle = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h3 ref={ref} className={cn(\"hawa-text-2xl hawa-font-semibold\", className)} {...props} />\n ),\n);\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p ref={ref} className={cn(\"hawa-text-sm hawa-text-muted-foreground\", className)} {...props} />\n));\nconst CardContent = React.forwardRef<HTMLDivElement, CardContentProps>(\n ({ headless, noPadding, className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n noPadding ? \"hawa-p-0\" : \"hawa-p-6\",\n headless ? \"hawa-pt-6\" : \"hawa-pt-0\",\n className,\n )}\n {...props}\n />\n ),\n);\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & { noPadding?: boolean }\n>(({ className, noPadding, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n noPadding ? \"hawa-p-0\" : \"hawa-p-6\",\n \"hawa-flex hawa-items-center hawa-pt-0\",\n className,\n )}\n {...props}\n />\n));\n\nCardDescription.displayName = \"CardDescription\";\nCardContent.displayName = \"CardContent\";\nCardHeader.displayName = \"CardHeader\";\nCardFooter.displayName = \"CardFooter\";\nCardTitle.displayName = \"CardTitle\";\nCard.displayName = \"Card\";\n\nexport { CardDescription, CardContent, CardHeader, CardFooter, CardTitle, Card };\n","import React from \"react\";\n\nimport { cn } from \"@util/index\";\n\ninterface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n animation?: \"none\" | \"pulse\" | \"shimmer\";\n content?: any;\n fade?: \"top\" | \"bottom\" | \"left\" | \"right\";\n as?: \"div\" | \"input\";\n}\n\nfunction Skeleton({\n className,\n content,\n animation = \"pulse\",\n fade,\n as = \"div\",\n ...props\n}: SkeletonProps) {\n const animationStyles = {\n none: \"hawa-rounded hawa-bg-muted\",\n pulse: \"hawa-animate-pulse hawa-rounded hawa-bg-muted\",\n shimmer:\n \"hawa-space-y-5 hawa-rounded hawa-bg-muted hawa-p-4 hawa-relative before:hawa-absolute before:hawa-inset-0 before:hawa--translate-x-full before:hawa-animate-[shimmer_2s_infinite] before:hawa-bg-gradient-to-r before:hawa-from-transparent before:hawa-via-gray-300/40 dark:before:hawa-via-white/10 before:hawa-to-transparent hawa-isolate hawa-overflow-hidden before:hawa-border-t before:hawa-border-rose-100/10\",\n };\n const fadeStyle = {\n bottom: \"hawa-mask-fade-bottom\",\n top: \"hawa-mask-fade-top\",\n right: \"hawa-mask-fade-right\",\n left: \"hawa-mask-fade-left \",\n };\n\n const styledAs = {\n div: \"\",\n input: \"hawa-h-[40px] hawa-w-full\",\n };\n\n return (\n <div\n className={cn(\n animationStyles[animation],\n content && \"hawa-flex hawa-flex-col hawa-items-center hawa-justify-center\",\n fade && fadeStyle[fade],\n styledAs[as],\n className,\n )}\n {...props}\n >\n {content && content}\n </div>\n );\n}\n\nexport { Skeleton };\n"],"mappings":"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","names":["React","React","React","React"]}
|
package/dist/switch/index.js
CHANGED
@@ -49,9 +49,7 @@ function cn(...inputs) {
|
|
49
49
|
// elements/switch/Switch.tsx
|
50
50
|
var Switch = React.forwardRef(
|
51
51
|
({ className, size = "default", roundedness = "inherit", label, ...props }, ref) => {
|
52
|
-
const [parentDirection, setParentDirection] = React.useState(
|
53
|
-
null
|
54
|
-
);
|
52
|
+
const [parentDirection, setParentDirection] = React.useState(null);
|
55
53
|
const parentRef = React.useRef(null);
|
56
54
|
React.useEffect(() => {
|
57
55
|
var _a;
|
@@ -81,42 +79,34 @@ var Switch = React.forwardRef(
|
|
81
79
|
full: "hawa-rounded-full",
|
82
80
|
inherit: "hawa-rounded-inner"
|
83
81
|
};
|
84
|
-
return /* @__PURE__ */ React.createElement(
|
85
|
-
|
82
|
+
return /* @__PURE__ */ React.createElement("div", { className: "hawa-flex hawa-flex-row hawa-items-center", ref: parentRef }, /* @__PURE__ */ React.createElement(
|
83
|
+
SwitchPrimitives.Root,
|
86
84
|
{
|
87
|
-
className:
|
88
|
-
|
85
|
+
className: cn(
|
86
|
+
"data-[state=unchecked]:hawa-bg-primary/20",
|
87
|
+
"data-[state=checked]:hawa-bg-primary",
|
88
|
+
"hawa-relative hawa-cursor-pointer hawa-rounded hawa-outline-none",
|
89
|
+
rootRoundednessStyles[roundedness],
|
90
|
+
className,
|
91
|
+
rootSize[size]
|
92
|
+
),
|
93
|
+
...props,
|
94
|
+
ref
|
89
95
|
},
|
90
96
|
/* @__PURE__ */ React.createElement(
|
91
|
-
SwitchPrimitives.
|
97
|
+
SwitchPrimitives.Thumb,
|
92
98
|
{
|
93
99
|
className: cn(
|
94
|
-
|
95
|
-
"
|
96
|
-
"
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
)
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
/* @__PURE__ */ React.createElement(
|
105
|
-
SwitchPrimitives.Thumb,
|
106
|
-
{
|
107
|
-
className: cn(
|
108
|
-
thumbSize[size],
|
109
|
-
"hawa-block hawa-rounded hawa-transition-transform hawa-duration-100 hawa-will-change-transform",
|
110
|
-
"data-[state=checked]:hawa-bg-primary-foreground",
|
111
|
-
"hawa-bg-white dark:hawa-bg-background",
|
112
|
-
thumbRoundednessStyles[roundedness],
|
113
|
-
parentDirection === "rtl" ? "hawa--translate-x-0.5 data-[state=checked]:hawa--translate-x-[19px]" : "hawa-translate-x-0.5 data-[state=checked]:hawa-translate-x-[19px]"
|
114
|
-
)
|
115
|
-
}
|
116
|
-
)
|
117
|
-
),
|
118
|
-
label && /* @__PURE__ */ React.createElement("span", { className: "hawa-mx-2 hawa-text-sm hawa-font-medium hawa-text-gray-900 dark:hawa-text-gray-300" }, label)
|
119
|
-
);
|
100
|
+
thumbSize[size],
|
101
|
+
"hawa-block hawa-rounded hawa-transition-transform hawa-duration-100 hawa-will-change-transform",
|
102
|
+
"data-[state=checked]:hawa-bg-primary-foreground",
|
103
|
+
"hawa-bg-white dark:hawa-bg-background",
|
104
|
+
thumbRoundednessStyles[roundedness],
|
105
|
+
parentDirection === "rtl" ? "hawa--translate-x-0.5 data-[state=checked]:hawa--translate-x-[19px]" : "hawa-translate-x-0.5 data-[state=checked]:hawa-translate-x-[19px]"
|
106
|
+
)
|
107
|
+
}
|
108
|
+
)
|
109
|
+
), label && /* @__PURE__ */ React.createElement("span", { className: "hawa-mx-2 hawa-text-sm hawa-font-medium hawa-text-gray-900 dark:hawa-text-gray-300" }, label));
|
120
110
|
}
|
121
111
|
);
|
122
112
|
Switch.displayName = SwitchPrimitives.Root.displayName;
|
package/dist/switch/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../elements/switch/index.ts","../../elements/switch/Switch.tsx","../../util/index.ts"],"sourcesContent":["export * from \"./Switch\";\n","import * as React from \"react\";\n\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\nimport { cn } from \"@util/index\";\n\nimport { RadiusType } from \"@_types/commonTypes\";\n\ninterface SwitchProps
|
1
|
+
{"version":3,"sources":["../../elements/switch/index.ts","../../elements/switch/Switch.tsx","../../util/index.ts"],"sourcesContent":["export * from \"./Switch\";\n","import * as React from \"react\";\n\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\nimport { cn } from \"@util/index\";\n\nimport { RadiusType } from \"@_types/commonTypes\";\n\ninterface SwitchProps extends React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root> {\n size?: \"default\" | \"sm\" | \"lg\";\n label?: string;\n roundedness?: RadiusType;\n}\n\nexport const Switch = React.forwardRef<React.ElementRef<typeof SwitchPrimitives.Root>, SwitchProps>(\n ({ className, size = \"default\", roundedness = \"inherit\", label, ...props }, ref) => {\n const [parentDirection, setParentDirection] = React.useState<string | null>(null);\n const parentRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n const parentNode = parentRef.current?.parentNode as HTMLElement | null;\n if (parentNode) {\n const dir = window.getComputedStyle(parentNode).direction;\n setParentDirection(dir);\n }\n });\n\n const rootSize = {\n default: \"hawa-h-[25px] hawa-w-[42px]\",\n sm: \"hawa-h-[20px] hawa-w-[37px]\",\n lg: \"hawa-h-[30px] hawa-w-[47px]\",\n };\n const thumbSize = {\n default: \"hawa-h-[21px] hawa-w-[21px]\",\n sm: \"hawa-h-[16px] hawa-w-[16px]\",\n lg: \"hawa-h-[26px] hawa-w-[26px]\",\n };\n const rootRoundednessStyles = {\n none: \"hawa-rounded-none\",\n full: \"hawa-rounded-full\",\n inherit: \"hawa-rounded\",\n };\n const thumbRoundednessStyles = {\n none: \"hawa-rounded-none\",\n full: \"hawa-rounded-full\",\n inherit: \"hawa-rounded-inner\",\n };\n\n return (\n <div className=\"hawa-flex hawa-flex-row hawa-items-center\" ref={parentRef}>\n <SwitchPrimitives.Root\n className={cn(\n \"data-[state=unchecked]:hawa-bg-primary/20\",\n \"data-[state=checked]:hawa-bg-primary\",\n \"hawa-relative hawa-cursor-pointer hawa-rounded hawa-outline-none\",\n rootRoundednessStyles[roundedness],\n className,\n rootSize[size],\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n thumbSize[size],\n \"hawa-block hawa-rounded hawa-transition-transform hawa-duration-100 hawa-will-change-transform\",\n \"data-[state=checked]:hawa-bg-primary-foreground\",\n \"hawa-bg-white dark:hawa-bg-background\",\n thumbRoundednessStyles[roundedness],\n parentDirection === \"rtl\"\n ? \"hawa--translate-x-0.5 data-[state=checked]:hawa--translate-x-[19px]\"\n : \"hawa-translate-x-0.5 data-[state=checked]:hawa-translate-x-[19px]\",\n )}\n />\n </SwitchPrimitives.Root>\n {label && (\n <span className=\"hawa-mx-2 hawa-text-sm hawa-font-medium hawa-text-gray-900 dark:hawa-text-gray-300\">\n {label}\n </span>\n )}\n </div>\n );\n },\n);\nSwitch.displayName = SwitchPrimitives.Root.displayName;\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(sanitizedHex);\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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,YAAuB;AAEvB,uBAAkC;;;ACFlC,kBAAsC;AACtC,4BAAwB;AAEjB,SAAS,MAAM,QAAsB;AAC1C,aAAO,mCAAQ,kBAAK,MAAM,CAAC;AAC7B;;;ADQO,IAAM,SAAe;AAAA,EAC1B,CAAC,EAAE,WAAW,OAAO,WAAW,cAAc,WAAW,OAAO,GAAG,MAAM,GAAG,QAAQ;AAClF,UAAM,CAAC,iBAAiB,kBAAkB,IAAU,eAAwB,IAAI;AAChF,UAAM,YAAkB,aAAuB,IAAI;AAEnD,IAAM,gBAAU,MAAM;AAlB1B;AAmBM,YAAM,cAAa,eAAU,YAAV,mBAAmB;AACtC,UAAI,YAAY;AACd,cAAM,MAAM,OAAO,iBAAiB,UAAU,EAAE;AAChD,2BAAmB,GAAG;AAAA,MACxB;AAAA,IACF,CAAC;AAED,UAAM,WAAW;AAAA,MACf,SAAS;AAAA,MACT,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AACA,UAAM,YAAY;AAAA,MAChB,SAAS;AAAA,MACT,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AACA,UAAM,wBAAwB;AAAA,MAC5B,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AACA,UAAM,yBAAyB;AAAA,MAC7B,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAEA,WACE,oCAAC,SAAI,WAAU,6CAA4C,KAAK,aAC9D;AAAA,MAAkB;AAAA,MAAjB;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA,sBAAsB,WAAW;AAAA,UACjC;AAAA,UACA,SAAS,IAAI;AAAA,QACf;AAAA,QACC,GAAG;AAAA,QACJ;AAAA;AAAA,MAEA;AAAA,QAAkB;AAAA,QAAjB;AAAA,UACC,WAAW;AAAA,YACT,UAAU,IAAI;AAAA,YACd;AAAA,YACA;AAAA,YACA;AAAA,YACA,uBAAuB,WAAW;AAAA,YAClC,oBAAoB,QAChB,wEACA;AAAA,UACN;AAAA;AAAA,MACF;AAAA,IACF,GACC,SACC,oCAAC,UAAK,WAAU,wFACb,KACH,CAEJ;AAAA,EAEJ;AACF;AACA,OAAO,cAA+B,sBAAK;","names":[]}
|
package/dist/switch/index.mjs
CHANGED
@@ -14,9 +14,7 @@ function cn(...inputs) {
|
|
14
14
|
// elements/switch/Switch.tsx
|
15
15
|
var Switch = React.forwardRef(
|
16
16
|
({ className, size = "default", roundedness = "inherit", label, ...props }, ref) => {
|
17
|
-
const [parentDirection, setParentDirection] = React.useState(
|
18
|
-
null
|
19
|
-
);
|
17
|
+
const [parentDirection, setParentDirection] = React.useState(null);
|
20
18
|
const parentRef = React.useRef(null);
|
21
19
|
React.useEffect(() => {
|
22
20
|
var _a;
|
@@ -46,42 +44,34 @@ var Switch = React.forwardRef(
|
|
46
44
|
full: "hawa-rounded-full",
|
47
45
|
inherit: "hawa-rounded-inner"
|
48
46
|
};
|
49
|
-
return /* @__PURE__ */ React.createElement(
|
50
|
-
|
47
|
+
return /* @__PURE__ */ React.createElement("div", { className: "hawa-flex hawa-flex-row hawa-items-center", ref: parentRef }, /* @__PURE__ */ React.createElement(
|
48
|
+
SwitchPrimitives.Root,
|
51
49
|
{
|
52
|
-
className:
|
53
|
-
|
50
|
+
className: cn(
|
51
|
+
"data-[state=unchecked]:hawa-bg-primary/20",
|
52
|
+
"data-[state=checked]:hawa-bg-primary",
|
53
|
+
"hawa-relative hawa-cursor-pointer hawa-rounded hawa-outline-none",
|
54
|
+
rootRoundednessStyles[roundedness],
|
55
|
+
className,
|
56
|
+
rootSize[size]
|
57
|
+
),
|
58
|
+
...props,
|
59
|
+
ref
|
54
60
|
},
|
55
61
|
/* @__PURE__ */ React.createElement(
|
56
|
-
SwitchPrimitives.
|
62
|
+
SwitchPrimitives.Thumb,
|
57
63
|
{
|
58
64
|
className: cn(
|
59
|
-
|
60
|
-
"
|
61
|
-
"
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
)
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
/* @__PURE__ */ React.createElement(
|
70
|
-
SwitchPrimitives.Thumb,
|
71
|
-
{
|
72
|
-
className: cn(
|
73
|
-
thumbSize[size],
|
74
|
-
"hawa-block hawa-rounded hawa-transition-transform hawa-duration-100 hawa-will-change-transform",
|
75
|
-
"data-[state=checked]:hawa-bg-primary-foreground",
|
76
|
-
"hawa-bg-white dark:hawa-bg-background",
|
77
|
-
thumbRoundednessStyles[roundedness],
|
78
|
-
parentDirection === "rtl" ? "hawa--translate-x-0.5 data-[state=checked]:hawa--translate-x-[19px]" : "hawa-translate-x-0.5 data-[state=checked]:hawa-translate-x-[19px]"
|
79
|
-
)
|
80
|
-
}
|
81
|
-
)
|
82
|
-
),
|
83
|
-
label && /* @__PURE__ */ React.createElement("span", { className: "hawa-mx-2 hawa-text-sm hawa-font-medium hawa-text-gray-900 dark:hawa-text-gray-300" }, label)
|
84
|
-
);
|
65
|
+
thumbSize[size],
|
66
|
+
"hawa-block hawa-rounded hawa-transition-transform hawa-duration-100 hawa-will-change-transform",
|
67
|
+
"data-[state=checked]:hawa-bg-primary-foreground",
|
68
|
+
"hawa-bg-white dark:hawa-bg-background",
|
69
|
+
thumbRoundednessStyles[roundedness],
|
70
|
+
parentDirection === "rtl" ? "hawa--translate-x-0.5 data-[state=checked]:hawa--translate-x-[19px]" : "hawa-translate-x-0.5 data-[state=checked]:hawa-translate-x-[19px]"
|
71
|
+
)
|
72
|
+
}
|
73
|
+
)
|
74
|
+
), label && /* @__PURE__ */ React.createElement("span", { className: "hawa-mx-2 hawa-text-sm hawa-font-medium hawa-text-gray-900 dark:hawa-text-gray-300" }, label));
|
85
75
|
}
|
86
76
|
);
|
87
77
|
Switch.displayName = SwitchPrimitives.Root.displayName;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../elements/switch/Switch.tsx","../../util/index.ts"],"sourcesContent":["import * as React from \"react\";\n\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\nimport { cn } from \"@util/index\";\n\nimport { RadiusType } from \"@_types/commonTypes\";\n\ninterface SwitchProps
|
1
|
+
{"version":3,"sources":["../../elements/switch/Switch.tsx","../../util/index.ts"],"sourcesContent":["import * as React from \"react\";\n\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\nimport { cn } from \"@util/index\";\n\nimport { RadiusType } from \"@_types/commonTypes\";\n\ninterface SwitchProps extends React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root> {\n size?: \"default\" | \"sm\" | \"lg\";\n label?: string;\n roundedness?: RadiusType;\n}\n\nexport const Switch = React.forwardRef<React.ElementRef<typeof SwitchPrimitives.Root>, SwitchProps>(\n ({ className, size = \"default\", roundedness = \"inherit\", label, ...props }, ref) => {\n const [parentDirection, setParentDirection] = React.useState<string | null>(null);\n const parentRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n const parentNode = parentRef.current?.parentNode as HTMLElement | null;\n if (parentNode) {\n const dir = window.getComputedStyle(parentNode).direction;\n setParentDirection(dir);\n }\n });\n\n const rootSize = {\n default: \"hawa-h-[25px] hawa-w-[42px]\",\n sm: \"hawa-h-[20px] hawa-w-[37px]\",\n lg: \"hawa-h-[30px] hawa-w-[47px]\",\n };\n const thumbSize = {\n default: \"hawa-h-[21px] hawa-w-[21px]\",\n sm: \"hawa-h-[16px] hawa-w-[16px]\",\n lg: \"hawa-h-[26px] hawa-w-[26px]\",\n };\n const rootRoundednessStyles = {\n none: \"hawa-rounded-none\",\n full: \"hawa-rounded-full\",\n inherit: \"hawa-rounded\",\n };\n const thumbRoundednessStyles = {\n none: \"hawa-rounded-none\",\n full: \"hawa-rounded-full\",\n inherit: \"hawa-rounded-inner\",\n };\n\n return (\n <div className=\"hawa-flex hawa-flex-row hawa-items-center\" ref={parentRef}>\n <SwitchPrimitives.Root\n className={cn(\n \"data-[state=unchecked]:hawa-bg-primary/20\",\n \"data-[state=checked]:hawa-bg-primary\",\n \"hawa-relative hawa-cursor-pointer hawa-rounded hawa-outline-none\",\n rootRoundednessStyles[roundedness],\n className,\n rootSize[size],\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n thumbSize[size],\n \"hawa-block hawa-rounded hawa-transition-transform hawa-duration-100 hawa-will-change-transform\",\n \"data-[state=checked]:hawa-bg-primary-foreground\",\n \"hawa-bg-white dark:hawa-bg-background\",\n thumbRoundednessStyles[roundedness],\n parentDirection === \"rtl\"\n ? \"hawa--translate-x-0.5 data-[state=checked]:hawa--translate-x-[19px]\"\n : \"hawa-translate-x-0.5 data-[state=checked]:hawa-translate-x-[19px]\",\n )}\n />\n </SwitchPrimitives.Root>\n {label && (\n <span className=\"hawa-mx-2 hawa-text-sm hawa-font-medium hawa-text-gray-900 dark:hawa-text-gray-300\">\n {label}\n </span>\n )}\n </div>\n );\n },\n);\nSwitch.displayName = SwitchPrimitives.Root.displayName;\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(sanitizedHex);\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"],"mappings":";;;AAAA,YAAY,WAAW;AAEvB,YAAY,sBAAsB;;;ACFlC,SAAS,YAA6B;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;;;ADQO,IAAM,SAAe;AAAA,EAC1B,CAAC,EAAE,WAAW,OAAO,WAAW,cAAc,WAAW,OAAO,GAAG,MAAM,GAAG,QAAQ;AAClF,UAAM,CAAC,iBAAiB,kBAAkB,IAAU,eAAwB,IAAI;AAChF,UAAM,YAAkB,aAAuB,IAAI;AAEnD,IAAM,gBAAU,MAAM;AAlB1B;AAmBM,YAAM,cAAa,eAAU,YAAV,mBAAmB;AACtC,UAAI,YAAY;AACd,cAAM,MAAM,OAAO,iBAAiB,UAAU,EAAE;AAChD,2BAAmB,GAAG;AAAA,MACxB;AAAA,IACF,CAAC;AAED,UAAM,WAAW;AAAA,MACf,SAAS;AAAA,MACT,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AACA,UAAM,YAAY;AAAA,MAChB,SAAS;AAAA,MACT,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AACA,UAAM,wBAAwB;AAAA,MAC5B,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AACA,UAAM,yBAAyB;AAAA,MAC7B,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAEA,WACE,oCAAC,SAAI,WAAU,6CAA4C,KAAK,aAC9D;AAAA,MAAkB;AAAA,MAAjB;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA,sBAAsB,WAAW;AAAA,UACjC;AAAA,UACA,SAAS,IAAI;AAAA,QACf;AAAA,QACC,GAAG;AAAA,QACJ;AAAA;AAAA,MAEA;AAAA,QAAkB;AAAA,QAAjB;AAAA,UACC,WAAW;AAAA,YACT,UAAU,IAAI;AAAA,YACd;AAAA,YACA;AAAA,YACA;AAAA,YACA,uBAAuB,WAAW;AAAA,YAClC,oBAAoB,QAChB,wEACA;AAAA,UACN;AAAA;AAAA,MACF;AAAA,IACF,GACC,SACC,oCAAC,UAAK,WAAU,wFACb,KACH,CAEJ;AAAA,EAEJ;AACF;AACA,OAAO,cAA+B,sBAAK;","names":[]}
|
package/dist/table/index.js
CHANGED
@@ -53,14 +53,16 @@ function cn(...inputs) {
|
|
53
53
|
}
|
54
54
|
|
55
55
|
// elements/table/Table.tsx
|
56
|
-
var Table = React.forwardRef(
|
57
|
-
"
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
56
|
+
var Table = React.forwardRef(
|
57
|
+
({ className, ...props }, ref) => /* @__PURE__ */ React.createElement("div", { className: "hawa-relative hawa-w-full hawa-overflow-auto hawa-rounded hawa-border" }, /* @__PURE__ */ React.createElement(
|
58
|
+
"table",
|
59
|
+
{
|
60
|
+
ref,
|
61
|
+
className: cn("hawa-w-full hawa-caption-bottom hawa-text-sm", className),
|
62
|
+
...props
|
63
|
+
}
|
64
|
+
))
|
65
|
+
);
|
64
66
|
var TableHeader = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React.createElement(
|
65
67
|
"thead",
|
66
68
|
{
|
@@ -93,26 +95,25 @@ var TableFooter = React.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
93
95
|
"tfoot",
|
94
96
|
{
|
95
97
|
ref,
|
96
|
-
className: cn(
|
97
|
-
"hawa-bg-primary hawa-font-medium hawa-text-primary-foreground",
|
98
|
-
className
|
99
|
-
),
|
100
|
-
...props
|
101
|
-
}
|
102
|
-
));
|
103
|
-
var TableRow = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React.createElement(
|
104
|
-
"tr",
|
105
|
-
{
|
106
|
-
ref,
|
107
|
-
className: cn(
|
108
|
-
"hawa-bg-background hawa-transition-colors data-[state=selected]:hawa-bg-muted",
|
109
|
-
"[&:not(:last-child)&:not(:first-child)]:hawa-border-y",
|
110
|
-
"[&:not(:last-child)]:hawa-border-b",
|
111
|
-
className
|
112
|
-
),
|
98
|
+
className: cn("hawa-bg-primary hawa-font-medium hawa-text-primary-foreground", className),
|
113
99
|
...props
|
114
100
|
}
|
115
101
|
));
|
102
|
+
var TableRow = React.forwardRef(
|
103
|
+
({ className, ...props }, ref) => /* @__PURE__ */ React.createElement(
|
104
|
+
"tr",
|
105
|
+
{
|
106
|
+
ref,
|
107
|
+
className: cn(
|
108
|
+
"hawa-bg-background hawa-transition-colors data-[state=selected]:hawa-bg-muted",
|
109
|
+
"[&:not(:last-child)&:not(:first-child)]:hawa-border-y",
|
110
|
+
"[&:not(:last-child)]:hawa-border-b",
|
111
|
+
className
|
112
|
+
),
|
113
|
+
...props
|
114
|
+
}
|
115
|
+
)
|
116
|
+
);
|
116
117
|
var TableCell = React.forwardRef(
|
117
118
|
({ className, enablePadding = true, padding = "default", ...props }, ref) => {
|
118
119
|
let paddingStyles = {
|
@@ -145,10 +146,7 @@ var TableCaption = React.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
145
146
|
"caption",
|
146
147
|
{
|
147
148
|
ref,
|
148
|
-
className: cn(
|
149
|
-
"hawa-mt-4 hawa-text-sm hawa-text-muted-foreground",
|
150
|
-
className
|
151
|
-
),
|
149
|
+
className: cn("hawa-mt-4 hawa-text-sm hawa-text-muted-foreground", className),
|
152
150
|
...props
|
153
151
|
}
|
154
152
|
));
|
package/dist/table/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../elements/table/index.ts","../../elements/table/Table.tsx","../../util/index.ts"],"sourcesContent":["export * from \"./Table\";\n","import * as React from \"react\";\n\nimport { cn } from \"@util/index\";\n\ninterface TableHeadProps extends React.ThHTMLAttributes<HTMLTableCellElement> {\n clickable?: boolean;\n condensed?: boolean;\n}\ninterface TableCellProps extends React.TdHTMLAttributes<HTMLTableCellElement> {\n condensed?: boolean;\n enablePadding?: boolean;\n padding?: \"condensed\" | \"default\" | \"noPadding\";\n}\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"hawa-relative hawa-w-full hawa-overflow-auto hawa-rounded hawa-border\">\n <table\n ref={ref}\n className={cn(\"hawa-w-full hawa-caption-bottom hawa-text-sm\", className)}\n {...props}\n />\n </div>\n));\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead\n ref={ref}\n className={cn(\"[&_tr]:hawa-border-b\", \"hawa-bg-muted/50\", className)}\n {...props}\n />\n));\n\nconst TableHead = React.forwardRef<HTMLTableCellElement, TableHeadProps>(\n ({ className, condensed, clickable, dir, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"hawa-bg-muted/60 hawa-text-nowrap hawa-text-start hawa-align-middle hawa-font-medium hawa-text-muted-foreground dark:hawa-bg-muted/40 [&:has([role=checkbox])]:hawa-pr-0 [&:not(:last-child)&:not(:first-child)]:hawa-border-x\",\n dir === \"rtl\"\n ? \"[&:not(:last-child)]:hawa-border-l\"\n : \"[&:not(:last-child)]:hawa-border-r\",\n condensed ? \"hawa-h-8\" : \"hawa-h-12\",\n clickable ? \"hawa-px-1\" : \"hawa-px-4\", //First and last columns\n clickable\n ? \"[&:not(:last-child)&:not(:first-child)]:hawa-p-1\"\n : \"hawa-px-4\", //Columns in between\n className,\n )}\n {...props}\n />\n ),\n);\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody ref={ref} className={cn(\"hawa-border-none\", className)} {...props} />\n));\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n \"hawa-bg-primary hawa-font-medium hawa-text-primary-foreground\",\n className,\n )}\n {...props}\n />\n));\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"hawa-bg-background hawa-transition-colors data-[state=selected]:hawa-bg-muted\",\n \"[&:not(:last-child)&:not(:first-child)]:hawa-border-y\",\n \"[&:not(:last-child)]:hawa-border-b\",\n\n className,\n )}\n {...props}\n />\n));\n\nconst TableCell = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ className, enablePadding = true, padding = \"default\", ...props }, ref) => {\n let paddingStyles = {\n condensed: \"hawa-p-0 hawa-px-4\",\n default: \"hawa-p-4\",\n noPadding: \"hawa-p-0\",\n };\n\n return (\n <td\n ref={ref}\n className={cn(\n paddingStyles[padding],\n // \"border-x\",\n // enablePadding ? \"hawa-p-4\" : \"hawa-p-0\",\n // props.disablePadding ? \"hawa-p-0\" : \"hawa-p-4\",\n // props.condensed ? \"hawa-p-0 hawa-px-4\" : \"hawa-p-4\",\n \"hawa-align-middle [&:has([role=checkbox])]:hawa-pr-0\",\n \"[&:not(:last-child)&:not(:first-child)]:hawa-border-x\",\n // \"[&:not(:last-child)]:hawa-border-r\",\n props.dir === \"rtl\"\n ? \"[&:not(:last-child)]:hawa-border-l\"\n : \"[&:not(:last-child)]:hawa-border-r\",\n className,\n )}\n {...props}\n />\n );\n },\n);\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\n \"hawa-mt-4 hawa-text-sm hawa-text-muted-foreground\",\n className,\n )}\n {...props}\n />\n));\n\nTable.displayName = \"Table\";\nTableRow.displayName = \"TableRow\";\nTableBody.displayName = \"TableBody\";\nTableHead.displayName = \"TableHead\";\nTableCell.displayName = \"TableCell\";\nTableFooter.displayName = \"TableFooter\";\nTableHeader.displayName = \"TableHeader\";\nTableCaption.displayName = \"TableCaption\";\n\nexport {\n Table,\n TableHeader,\n TableHead,\n TableBody,\n TableFooter,\n TableRow,\n TableCell,\n TableCaption,\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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,YAAuB;;;ACAvB,kBAAsC;AACtC,4BAAwB;AAEjB,SAAS,MAAM,QAAsB;AAC1C,aAAO,mCAAQ,kBAAK,MAAM,CAAC;AAC7B;;;ADSA,IAAM,QAAc,iBAGlB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,oCAAC,SAAI,WAAU,2EACb;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,gDAAgD,SAAS;AAAA,IACtE,GAAG;AAAA;AACN,CACF,CACD;AAED,IAAM,cAAoB,iBAGxB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,wBAAwB,oBAAoB,SAAS;AAAA,IAClE,GAAG;AAAA;AACN,CACD;AAED,IAAM,YAAkB;AAAA,EACtB,CAAC,EAAE,WAAW,WAAW,WAAW,KAAK,GAAG,MAAM,GAAG,QACnD;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,QAAQ,QACJ,uCACA;AAAA,QACJ,YAAY,aAAa;AAAA,QACzB,YAAY,cAAc;AAAA;AAAA,QAC1B,YACI,qDACA;AAAA;AAAA,QACJ;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,IAAM,YAAkB,iBAGtB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,oCAAC,WAAM,KAAU,WAAW,GAAG,oBAAoB,SAAS,GAAI,GAAG,OAAO,CAC3E;AAED,IAAM,cAAoB,iBAGxB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AAED,IAAM,WAAiB,iBAGrB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AAED,IAAM,YAAkB;AAAA,EACtB,CAAC,EAAE,WAAW,gBAAgB,MAAM,UAAU,WAAW,GAAG,MAAM,GAAG,QAAQ;AAC3E,QAAI,gBAAgB;AAAA,MAClB,WAAW;AAAA,MACX,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT,cAAc,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,UAKrB;AAAA,UACA;AAAA;AAAA,UAEA,MAAM,QAAQ,QACV,uCACA;AAAA,UACJ;AAAA,QACF;AAAA,QACC,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAEA,IAAM,eAAqB,iBAGzB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AAED,MAAM,cAAc;AACpB,SAAS,cAAc;AACvB,UAAU,cAAc;AACxB,UAAU,cAAc;AACxB,UAAU,cAAc;AACxB,YAAY,cAAc;AAC1B,YAAY,cAAc;AAC1B,aAAa,cAAc;","names":[]}
|
1
|
+
{"version":3,"sources":["../../elements/table/index.ts","../../elements/table/Table.tsx","../../util/index.ts"],"sourcesContent":["export * from \"./Table\";\n","import * as React from \"react\";\n\nimport { cn } from \"@util/index\";\n\ninterface TableHeadProps extends React.ThHTMLAttributes<HTMLTableCellElement> {\n clickable?: boolean;\n condensed?: boolean;\n}\ninterface TableCellProps extends React.TdHTMLAttributes<HTMLTableCellElement> {\n condensed?: boolean;\n enablePadding?: boolean;\n padding?: \"condensed\" | \"default\" | \"noPadding\";\n}\n\nconst Table = React.forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>(\n ({ className, ...props }, ref) => (\n <div className=\"hawa-relative hawa-w-full hawa-overflow-auto hawa-rounded hawa-border\">\n <table\n ref={ref}\n className={cn(\"hawa-w-full hawa-caption-bottom hawa-text-sm\", className)}\n {...props}\n />\n </div>\n ),\n);\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead\n ref={ref}\n className={cn(\"[&_tr]:hawa-border-b\", \"hawa-bg-muted/50\", className)}\n {...props}\n />\n));\n\nconst TableHead = React.forwardRef<HTMLTableCellElement, TableHeadProps>(\n ({ className, condensed, clickable, dir, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"hawa-bg-muted/60 hawa-text-nowrap hawa-text-start hawa-align-middle hawa-font-medium hawa-text-muted-foreground dark:hawa-bg-muted/40 [&:has([role=checkbox])]:hawa-pr-0 [&:not(:last-child)&:not(:first-child)]:hawa-border-x\",\n dir === \"rtl\" ? \"[&:not(:last-child)]:hawa-border-l\" : \"[&:not(:last-child)]:hawa-border-r\",\n condensed ? \"hawa-h-8\" : \"hawa-h-12\",\n clickable ? \"hawa-px-1\" : \"hawa-px-4\", //First and last columns\n clickable ? \"[&:not(:last-child)&:not(:first-child)]:hawa-p-1\" : \"hawa-px-4\", //Columns in between\n className,\n )}\n {...props}\n />\n ),\n);\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody ref={ref} className={cn(\"hawa-border-none\", className)} {...props} />\n));\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\"hawa-bg-primary hawa-font-medium hawa-text-primary-foreground\", className)}\n {...props}\n />\n));\n\nconst TableRow = React.forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>(\n ({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"hawa-bg-background hawa-transition-colors data-[state=selected]:hawa-bg-muted\",\n \"[&:not(:last-child)&:not(:first-child)]:hawa-border-y\",\n \"[&:not(:last-child)]:hawa-border-b\",\n\n className,\n )}\n {...props}\n />\n ),\n);\n\nconst TableCell = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ className, enablePadding = true, padding = \"default\", ...props }, ref) => {\n let paddingStyles = {\n condensed: \"hawa-p-0 hawa-px-4\",\n default: \"hawa-p-4\",\n noPadding: \"hawa-p-0\",\n };\n\n return (\n <td\n ref={ref}\n className={cn(\n paddingStyles[padding],\n // \"border-x\",\n // enablePadding ? \"hawa-p-4\" : \"hawa-p-0\",\n // props.disablePadding ? \"hawa-p-0\" : \"hawa-p-4\",\n // props.condensed ? \"hawa-p-0 hawa-px-4\" : \"hawa-p-4\",\n \"hawa-align-middle [&:has([role=checkbox])]:hawa-pr-0\",\n \"[&:not(:last-child)&:not(:first-child)]:hawa-border-x\",\n // \"[&:not(:last-child)]:hawa-border-r\",\n props.dir === \"rtl\"\n ? \"[&:not(:last-child)]:hawa-border-l\"\n : \"[&:not(:last-child)]:hawa-border-r\",\n className,\n )}\n {...props}\n />\n );\n },\n);\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"hawa-mt-4 hawa-text-sm hawa-text-muted-foreground\", className)}\n {...props}\n />\n));\n\nTable.displayName = \"Table\";\nTableRow.displayName = \"TableRow\";\nTableBody.displayName = \"TableBody\";\nTableHead.displayName = \"TableHead\";\nTableCell.displayName = \"TableCell\";\nTableFooter.displayName = \"TableFooter\";\nTableHeader.displayName = \"TableHeader\";\nTableCaption.displayName = \"TableCaption\";\n\nexport { Table, TableHeader, TableHead, TableBody, TableFooter, TableRow, TableCell, TableCaption };\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(sanitizedHex);\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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,YAAuB;;;ACAvB,kBAAsC;AACtC,4BAAwB;AAEjB,SAAS,MAAM,QAAsB;AAC1C,aAAO,mCAAQ,kBAAK,MAAM,CAAC;AAC7B;;;ADSA,IAAM,QAAc;AAAA,EAClB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QACxB,oCAAC,SAAI,WAAU,2EACb;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,gDAAgD,SAAS;AAAA,MACtE,GAAG;AAAA;AAAA,EACN,CACF;AAEJ;AAEA,IAAM,cAAoB,iBAGxB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,wBAAwB,oBAAoB,SAAS;AAAA,IAClE,GAAG;AAAA;AACN,CACD;AAED,IAAM,YAAkB;AAAA,EACtB,CAAC,EAAE,WAAW,WAAW,WAAW,KAAK,GAAG,MAAM,GAAG,QACnD;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,QAAQ,QAAQ,uCAAuC;AAAA,QACvD,YAAY,aAAa;AAAA,QACzB,YAAY,cAAc;AAAA;AAAA,QAC1B,YAAY,qDAAqD;AAAA;AAAA,QACjE;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,IAAM,YAAkB,iBAGtB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,oCAAC,WAAM,KAAU,WAAW,GAAG,oBAAoB,SAAS,GAAI,GAAG,OAAO,CAC3E;AAED,IAAM,cAAoB,iBAGxB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,iEAAiE,SAAS;AAAA,IACvF,GAAG;AAAA;AACN,CACD;AAED,IAAM,WAAiB;AAAA,EACrB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QACxB;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QAEA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,IAAM,YAAkB;AAAA,EACtB,CAAC,EAAE,WAAW,gBAAgB,MAAM,UAAU,WAAW,GAAG,MAAM,GAAG,QAAQ;AAC3E,QAAI,gBAAgB;AAAA,MAClB,WAAW;AAAA,MACX,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT,cAAc,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,UAKrB;AAAA,UACA;AAAA;AAAA,UAEA,MAAM,QAAQ,QACV,uCACA;AAAA,UACJ;AAAA,QACF;AAAA,QACC,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAEA,IAAM,eAAqB,iBAGzB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,qDAAqD,SAAS;AAAA,IAC3E,GAAG;AAAA;AACN,CACD;AAED,MAAM,cAAc;AACpB,SAAS,cAAc;AACvB,UAAU,cAAc;AACxB,UAAU,cAAc;AACxB,UAAU,cAAc;AACxB,YAAY,cAAc;AAC1B,YAAY,cAAc;AAC1B,aAAa,cAAc;","names":[]}
|
package/dist/table/index.mjs
CHANGED
@@ -11,14 +11,16 @@ function cn(...inputs) {
|
|
11
11
|
}
|
12
12
|
|
13
13
|
// elements/table/Table.tsx
|
14
|
-
var Table = React.forwardRef(
|
15
|
-
"
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
14
|
+
var Table = React.forwardRef(
|
15
|
+
({ className, ...props }, ref) => /* @__PURE__ */ React.createElement("div", { className: "hawa-relative hawa-w-full hawa-overflow-auto hawa-rounded hawa-border" }, /* @__PURE__ */ React.createElement(
|
16
|
+
"table",
|
17
|
+
{
|
18
|
+
ref,
|
19
|
+
className: cn("hawa-w-full hawa-caption-bottom hawa-text-sm", className),
|
20
|
+
...props
|
21
|
+
}
|
22
|
+
))
|
23
|
+
);
|
22
24
|
var TableHeader = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React.createElement(
|
23
25
|
"thead",
|
24
26
|
{
|
@@ -51,26 +53,25 @@ var TableFooter = React.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
51
53
|
"tfoot",
|
52
54
|
{
|
53
55
|
ref,
|
54
|
-
className: cn(
|
55
|
-
"hawa-bg-primary hawa-font-medium hawa-text-primary-foreground",
|
56
|
-
className
|
57
|
-
),
|
58
|
-
...props
|
59
|
-
}
|
60
|
-
));
|
61
|
-
var TableRow = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React.createElement(
|
62
|
-
"tr",
|
63
|
-
{
|
64
|
-
ref,
|
65
|
-
className: cn(
|
66
|
-
"hawa-bg-background hawa-transition-colors data-[state=selected]:hawa-bg-muted",
|
67
|
-
"[&:not(:last-child)&:not(:first-child)]:hawa-border-y",
|
68
|
-
"[&:not(:last-child)]:hawa-border-b",
|
69
|
-
className
|
70
|
-
),
|
56
|
+
className: cn("hawa-bg-primary hawa-font-medium hawa-text-primary-foreground", className),
|
71
57
|
...props
|
72
58
|
}
|
73
59
|
));
|
60
|
+
var TableRow = React.forwardRef(
|
61
|
+
({ className, ...props }, ref) => /* @__PURE__ */ React.createElement(
|
62
|
+
"tr",
|
63
|
+
{
|
64
|
+
ref,
|
65
|
+
className: cn(
|
66
|
+
"hawa-bg-background hawa-transition-colors data-[state=selected]:hawa-bg-muted",
|
67
|
+
"[&:not(:last-child)&:not(:first-child)]:hawa-border-y",
|
68
|
+
"[&:not(:last-child)]:hawa-border-b",
|
69
|
+
className
|
70
|
+
),
|
71
|
+
...props
|
72
|
+
}
|
73
|
+
)
|
74
|
+
);
|
74
75
|
var TableCell = React.forwardRef(
|
75
76
|
({ className, enablePadding = true, padding = "default", ...props }, ref) => {
|
76
77
|
let paddingStyles = {
|
@@ -103,10 +104,7 @@ var TableCaption = React.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
103
104
|
"caption",
|
104
105
|
{
|
105
106
|
ref,
|
106
|
-
className: cn(
|
107
|
-
"hawa-mt-4 hawa-text-sm hawa-text-muted-foreground",
|
108
|
-
className
|
109
|
-
),
|
107
|
+
className: cn("hawa-mt-4 hawa-text-sm hawa-text-muted-foreground", className),
|
110
108
|
...props
|
111
109
|
}
|
112
110
|
));
|
package/dist/table/index.mjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../elements/table/Table.tsx","../../util/index.ts"],"sourcesContent":["import * as React from \"react\";\n\nimport { cn } from \"@util/index\";\n\ninterface TableHeadProps extends React.ThHTMLAttributes<HTMLTableCellElement> {\n clickable?: boolean;\n condensed?: boolean;\n}\ninterface TableCellProps extends React.TdHTMLAttributes<HTMLTableCellElement> {\n condensed?: boolean;\n enablePadding?: boolean;\n padding?: \"condensed\" | \"default\" | \"noPadding\";\n}\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"hawa-relative hawa-w-full hawa-overflow-auto hawa-rounded hawa-border\">\n <table\n ref={ref}\n className={cn(\"hawa-w-full hawa-caption-bottom hawa-text-sm\", className)}\n {...props}\n />\n </div>\n));\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead\n ref={ref}\n className={cn(\"[&_tr]:hawa-border-b\", \"hawa-bg-muted/50\", className)}\n {...props}\n />\n));\n\nconst TableHead = React.forwardRef<HTMLTableCellElement, TableHeadProps>(\n ({ className, condensed, clickable, dir, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"hawa-bg-muted/60 hawa-text-nowrap hawa-text-start hawa-align-middle hawa-font-medium hawa-text-muted-foreground dark:hawa-bg-muted/40 [&:has([role=checkbox])]:hawa-pr-0 [&:not(:last-child)&:not(:first-child)]:hawa-border-x\",\n dir === \"rtl\"\n ? \"[&:not(:last-child)]:hawa-border-l\"\n : \"[&:not(:last-child)]:hawa-border-r\",\n condensed ? \"hawa-h-8\" : \"hawa-h-12\",\n clickable ? \"hawa-px-1\" : \"hawa-px-4\", //First and last columns\n clickable\n ? \"[&:not(:last-child)&:not(:first-child)]:hawa-p-1\"\n : \"hawa-px-4\", //Columns in between\n className,\n )}\n {...props}\n />\n ),\n);\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody ref={ref} className={cn(\"hawa-border-none\", className)} {...props} />\n));\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n \"hawa-bg-primary hawa-font-medium hawa-text-primary-foreground\",\n className,\n )}\n {...props}\n />\n));\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"hawa-bg-background hawa-transition-colors data-[state=selected]:hawa-bg-muted\",\n \"[&:not(:last-child)&:not(:first-child)]:hawa-border-y\",\n \"[&:not(:last-child)]:hawa-border-b\",\n\n className,\n )}\n {...props}\n />\n));\n\nconst TableCell = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ className, enablePadding = true, padding = \"default\", ...props }, ref) => {\n let paddingStyles = {\n condensed: \"hawa-p-0 hawa-px-4\",\n default: \"hawa-p-4\",\n noPadding: \"hawa-p-0\",\n };\n\n return (\n <td\n ref={ref}\n className={cn(\n paddingStyles[padding],\n // \"border-x\",\n // enablePadding ? \"hawa-p-4\" : \"hawa-p-0\",\n // props.disablePadding ? \"hawa-p-0\" : \"hawa-p-4\",\n // props.condensed ? \"hawa-p-0 hawa-px-4\" : \"hawa-p-4\",\n \"hawa-align-middle [&:has([role=checkbox])]:hawa-pr-0\",\n \"[&:not(:last-child)&:not(:first-child)]:hawa-border-x\",\n // \"[&:not(:last-child)]:hawa-border-r\",\n props.dir === \"rtl\"\n ? \"[&:not(:last-child)]:hawa-border-l\"\n : \"[&:not(:last-child)]:hawa-border-r\",\n className,\n )}\n {...props}\n />\n );\n },\n);\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\n \"hawa-mt-4 hawa-text-sm hawa-text-muted-foreground\",\n className,\n )}\n {...props}\n />\n));\n\nTable.displayName = \"Table\";\nTableRow.displayName = \"TableRow\";\nTableBody.displayName = \"TableBody\";\nTableHead.displayName = \"TableHead\";\nTableCell.displayName = \"TableCell\";\nTableFooter.displayName = \"TableFooter\";\nTableHeader.displayName = \"TableHeader\";\nTableCaption.displayName = \"TableCaption\";\n\nexport {\n Table,\n TableHeader,\n TableHead,\n TableBody,\n TableFooter,\n TableRow,\n TableCell,\n TableCaption,\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"],"mappings":";;;AAAA,YAAY,WAAW;;;ACAvB,SAAS,YAA6B;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;;;ADSA,IAAM,QAAc,iBAGlB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,oCAAC,SAAI,WAAU,2EACb;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,gDAAgD,SAAS;AAAA,IACtE,GAAG;AAAA;AACN,CACF,CACD;AAED,IAAM,cAAoB,iBAGxB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,wBAAwB,oBAAoB,SAAS;AAAA,IAClE,GAAG;AAAA;AACN,CACD;AAED,IAAM,YAAkB;AAAA,EACtB,CAAC,EAAE,WAAW,WAAW,WAAW,KAAK,GAAG,MAAM,GAAG,QACnD;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,QAAQ,QACJ,uCACA;AAAA,QACJ,YAAY,aAAa;AAAA,QACzB,YAAY,cAAc;AAAA;AAAA,QAC1B,YACI,qDACA;AAAA;AAAA,QACJ;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,IAAM,YAAkB,iBAGtB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,oCAAC,WAAM,KAAU,WAAW,GAAG,oBAAoB,SAAS,GAAI,GAAG,OAAO,CAC3E;AAED,IAAM,cAAoB,iBAGxB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AAED,IAAM,WAAiB,iBAGrB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AAED,IAAM,YAAkB;AAAA,EACtB,CAAC,EAAE,WAAW,gBAAgB,MAAM,UAAU,WAAW,GAAG,MAAM,GAAG,QAAQ;AAC3E,QAAI,gBAAgB;AAAA,MAClB,WAAW;AAAA,MACX,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT,cAAc,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,UAKrB;AAAA,UACA;AAAA;AAAA,UAEA,MAAM,QAAQ,QACV,uCACA;AAAA,UACJ;AAAA,QACF;AAAA,QACC,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAEA,IAAM,eAAqB,iBAGzB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AAED,MAAM,cAAc;AACpB,SAAS,cAAc;AACvB,UAAU,cAAc;AACxB,UAAU,cAAc;AACxB,UAAU,cAAc;AACxB,YAAY,cAAc;AAC1B,YAAY,cAAc;AAC1B,aAAa,cAAc;","names":[]}
|
1
|
+
{"version":3,"sources":["../../elements/table/Table.tsx","../../util/index.ts"],"sourcesContent":["import * as React from \"react\";\n\nimport { cn } from \"@util/index\";\n\ninterface TableHeadProps extends React.ThHTMLAttributes<HTMLTableCellElement> {\n clickable?: boolean;\n condensed?: boolean;\n}\ninterface TableCellProps extends React.TdHTMLAttributes<HTMLTableCellElement> {\n condensed?: boolean;\n enablePadding?: boolean;\n padding?: \"condensed\" | \"default\" | \"noPadding\";\n}\n\nconst Table = React.forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>(\n ({ className, ...props }, ref) => (\n <div className=\"hawa-relative hawa-w-full hawa-overflow-auto hawa-rounded hawa-border\">\n <table\n ref={ref}\n className={cn(\"hawa-w-full hawa-caption-bottom hawa-text-sm\", className)}\n {...props}\n />\n </div>\n ),\n);\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead\n ref={ref}\n className={cn(\"[&_tr]:hawa-border-b\", \"hawa-bg-muted/50\", className)}\n {...props}\n />\n));\n\nconst TableHead = React.forwardRef<HTMLTableCellElement, TableHeadProps>(\n ({ className, condensed, clickable, dir, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"hawa-bg-muted/60 hawa-text-nowrap hawa-text-start hawa-align-middle hawa-font-medium hawa-text-muted-foreground dark:hawa-bg-muted/40 [&:has([role=checkbox])]:hawa-pr-0 [&:not(:last-child)&:not(:first-child)]:hawa-border-x\",\n dir === \"rtl\" ? \"[&:not(:last-child)]:hawa-border-l\" : \"[&:not(:last-child)]:hawa-border-r\",\n condensed ? \"hawa-h-8\" : \"hawa-h-12\",\n clickable ? \"hawa-px-1\" : \"hawa-px-4\", //First and last columns\n clickable ? \"[&:not(:last-child)&:not(:first-child)]:hawa-p-1\" : \"hawa-px-4\", //Columns in between\n className,\n )}\n {...props}\n />\n ),\n);\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody ref={ref} className={cn(\"hawa-border-none\", className)} {...props} />\n));\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\"hawa-bg-primary hawa-font-medium hawa-text-primary-foreground\", className)}\n {...props}\n />\n));\n\nconst TableRow = React.forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>(\n ({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"hawa-bg-background hawa-transition-colors data-[state=selected]:hawa-bg-muted\",\n \"[&:not(:last-child)&:not(:first-child)]:hawa-border-y\",\n \"[&:not(:last-child)]:hawa-border-b\",\n\n className,\n )}\n {...props}\n />\n ),\n);\n\nconst TableCell = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ className, enablePadding = true, padding = \"default\", ...props }, ref) => {\n let paddingStyles = {\n condensed: \"hawa-p-0 hawa-px-4\",\n default: \"hawa-p-4\",\n noPadding: \"hawa-p-0\",\n };\n\n return (\n <td\n ref={ref}\n className={cn(\n paddingStyles[padding],\n // \"border-x\",\n // enablePadding ? \"hawa-p-4\" : \"hawa-p-0\",\n // props.disablePadding ? \"hawa-p-0\" : \"hawa-p-4\",\n // props.condensed ? \"hawa-p-0 hawa-px-4\" : \"hawa-p-4\",\n \"hawa-align-middle [&:has([role=checkbox])]:hawa-pr-0\",\n \"[&:not(:last-child)&:not(:first-child)]:hawa-border-x\",\n // \"[&:not(:last-child)]:hawa-border-r\",\n props.dir === \"rtl\"\n ? \"[&:not(:last-child)]:hawa-border-l\"\n : \"[&:not(:last-child)]:hawa-border-r\",\n className,\n )}\n {...props}\n />\n );\n },\n);\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"hawa-mt-4 hawa-text-sm hawa-text-muted-foreground\", className)}\n {...props}\n />\n));\n\nTable.displayName = \"Table\";\nTableRow.displayName = \"TableRow\";\nTableBody.displayName = \"TableBody\";\nTableHead.displayName = \"TableHead\";\nTableCell.displayName = \"TableCell\";\nTableFooter.displayName = \"TableFooter\";\nTableHeader.displayName = \"TableHeader\";\nTableCaption.displayName = \"TableCaption\";\n\nexport { Table, TableHeader, TableHead, TableBody, TableFooter, TableRow, TableCell, TableCaption };\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(sanitizedHex);\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"],"mappings":";;;AAAA,YAAY,WAAW;;;ACAvB,SAAS,YAA6B;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;;;ADSA,IAAM,QAAc;AAAA,EAClB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QACxB,oCAAC,SAAI,WAAU,2EACb;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,gDAAgD,SAAS;AAAA,MACtE,GAAG;AAAA;AAAA,EACN,CACF;AAEJ;AAEA,IAAM,cAAoB,iBAGxB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,wBAAwB,oBAAoB,SAAS;AAAA,IAClE,GAAG;AAAA;AACN,CACD;AAED,IAAM,YAAkB;AAAA,EACtB,CAAC,EAAE,WAAW,WAAW,WAAW,KAAK,GAAG,MAAM,GAAG,QACnD;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,QAAQ,QAAQ,uCAAuC;AAAA,QACvD,YAAY,aAAa;AAAA,QACzB,YAAY,cAAc;AAAA;AAAA,QAC1B,YAAY,qDAAqD;AAAA;AAAA,QACjE;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,IAAM,YAAkB,iBAGtB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,oCAAC,WAAM,KAAU,WAAW,GAAG,oBAAoB,SAAS,GAAI,GAAG,OAAO,CAC3E;AAED,IAAM,cAAoB,iBAGxB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,iEAAiE,SAAS;AAAA,IACvF,GAAG;AAAA;AACN,CACD;AAED,IAAM,WAAiB;AAAA,EACrB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QACxB;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QAEA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,IAAM,YAAkB;AAAA,EACtB,CAAC,EAAE,WAAW,gBAAgB,MAAM,UAAU,WAAW,GAAG,MAAM,GAAG,QAAQ;AAC3E,QAAI,gBAAgB;AAAA,MAClB,WAAW;AAAA,MACX,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT,cAAc,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,UAKrB;AAAA,UACA;AAAA;AAAA,UAEA,MAAM,QAAQ,QACV,uCACA;AAAA,UACJ;AAAA,QACF;AAAA,QACC,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAEA,IAAM,eAAqB,iBAGzB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,qDAAqD,SAAS;AAAA,IAC3E,GAAG;AAAA;AACN,CACD;AAED,MAAM,cAAc;AACpB,SAAS,cAAc;AACvB,UAAU,cAAc;AACxB,UAAU,cAAc;AACxB,UAAU,cAAc;AACxB,YAAY,cAAc;AAC1B,YAAY,cAAc;AAC1B,aAAa,cAAc;","names":[]}
|