@sikka/hawa 0.26.31 → 0.26.33
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/{Toast-pOd4uGZz.d.ts → Toast-YaClwi7z.d.ts} +9 -1
- package/dist/{Toast-VBd4UvlM.d.mts → Toast-ySvjL_-K.d.mts} +9 -1
- package/dist/accordion/index.mjs +7 -4
- package/dist/accordion/index.mjs.map +1 -1
- package/dist/alert/index.js +4 -4
- package/dist/alert/index.js.map +1 -1
- package/dist/alert/index.mjs +11 -8
- package/dist/alert/index.mjs.map +1 -1
- package/dist/appLayout/index.js +2 -1
- package/dist/appLayout/index.js.map +1 -1
- package/dist/appLayout/index.mjs +9 -5
- package/dist/appLayout/index.mjs.map +1 -1
- package/dist/appMenubar/index.mjs +9 -4
- package/dist/appMenubar/index.mjs.map +1 -1
- package/dist/appTabs/index.mjs +9 -4
- package/dist/appTabs/index.mjs.map +1 -1
- package/dist/appTopbar/index.mjs +9 -4
- package/dist/appTopbar/index.mjs.map +1 -1
- package/dist/avatar/index.js +2 -1
- package/dist/avatar/index.js.map +1 -1
- package/dist/avatar/index.mjs +9 -5
- package/dist/avatar/index.mjs.map +1 -1
- package/dist/backToTop/index.js +6 -3
- package/dist/backToTop/index.js.map +1 -1
- package/dist/backToTop/index.mjs +13 -7
- package/dist/backToTop/index.mjs.map +1 -1
- package/dist/badge/index.js +4 -3
- package/dist/badge/index.js.map +1 -1
- package/dist/badge/index.mjs +13 -7
- package/dist/badge/index.mjs.map +1 -1
- package/dist/button/index.mjs +7 -4
- package/dist/button/index.mjs.map +1 -1
- package/dist/card/index.mjs +9 -4
- package/dist/card/index.mjs.map +1 -1
- package/dist/carousel/index.js +10 -10
- package/dist/carousel/index.js.map +1 -1
- package/dist/carousel/index.mjs +19 -14
- package/dist/carousel/index.mjs.map +1 -1
- package/dist/checkbox/index.mjs +9 -4
- package/dist/checkbox/index.mjs.map +1 -1
- package/dist/chip/index.mjs +9 -4
- package/dist/chip/index.mjs.map +1 -1
- package/dist/chunk-A3ERTYS4.mjs +29 -0
- package/dist/codeBlock/index.js +1 -1
- package/dist/codeBlock/index.js.map +1 -1
- package/dist/codeBlock/index.mjs +84 -24
- package/dist/codeBlock/index.mjs.map +1 -1
- package/dist/collapsible/index.mjs +0 -2
- package/dist/collapsible/index.mjs.map +1 -1
- package/dist/colorPicker/index.js +2 -1
- package/dist/colorPicker/index.js.map +1 -1
- package/dist/colorPicker/index.mjs +92 -20
- package/dist/colorPicker/index.mjs.map +1 -1
- package/dist/combobox/index.js +4 -3
- package/dist/combobox/index.js.map +1 -1
- package/dist/combobox/index.mjs +445 -27
- package/dist/combobox/index.mjs.map +1 -1
- package/dist/command/index.mjs +429 -11
- package/dist/command/index.mjs.map +1 -1
- package/dist/dataTable/index.js +36 -27
- package/dist/dataTable/index.js.map +1 -1
- package/dist/dataTable/index.mjs +43 -31
- package/dist/dataTable/index.mjs.map +1 -1
- package/dist/destroyableCard/index.js +2 -2
- package/dist/destroyableCard/index.js.map +1 -1
- package/dist/destroyableCard/index.mjs +9 -6
- package/dist/destroyableCard/index.mjs.map +1 -1
- package/dist/dialog/index.mjs +9 -4
- package/dist/dialog/index.mjs.map +1 -1
- package/dist/docsLayout/index.js +2 -2
- package/dist/docsLayout/index.js.map +1 -1
- package/dist/docsLayout/index.mjs +9 -6
- package/dist/docsLayout/index.mjs.map +1 -1
- package/dist/docsSidebar/index.js +2 -2
- package/dist/docsSidebar/index.js.map +1 -1
- package/dist/docsSidebar/index.mjs +11 -6
- package/dist/docsSidebar/index.mjs.map +1 -1
- package/dist/dropdownMenu/index.mjs +9 -4
- package/dist/dropdownMenu/index.mjs.map +1 -1
- package/dist/elements/index.d.mts +4 -2
- package/dist/elements/index.d.ts +4 -2
- package/dist/elements/index.js +8 -135
- package/dist/elements/index.mjs +10 -14
- package/dist/fileDropzone/index.js +12 -11
- package/dist/fileDropzone/index.js.map +1 -1
- package/dist/fileDropzone/index.mjs +21 -17
- package/dist/fileDropzone/index.mjs.map +1 -1
- package/dist/fileUploader/index.js +2 -1
- package/dist/fileUploader/index.js.map +1 -1
- package/dist/fileUploader/index.mjs +2 -1
- package/dist/fileUploader/index.mjs.map +1 -1
- package/dist/glow/index.js +24 -17
- package/dist/glow/index.js.map +1 -1
- package/dist/glow/index.mjs +24 -17
- package/dist/glow/index.mjs.map +1 -1
- package/dist/hooks/index.d.mts +9 -18
- package/dist/hooks/index.d.ts +9 -18
- package/dist/hooks/index.mjs +146 -27
- package/dist/index.d.mts +18 -17
- package/dist/index.d.ts +18 -17
- package/dist/index.js +167 -172
- package/dist/index.mjs +589 -594
- package/dist/input/index.js +3 -2
- package/dist/input/index.js.map +1 -1
- package/dist/input/index.mjs +118 -19
- package/dist/input/index.mjs.map +1 -1
- package/dist/interfaceSettings/index.js +6 -4
- package/dist/interfaceSettings/index.js.map +1 -1
- package/dist/interfaceSettings/index.mjs +130 -28
- package/dist/interfaceSettings/index.mjs.map +1 -1
- package/dist/label/index.mjs +7 -4
- package/dist/label/index.mjs.map +1 -1
- package/dist/loading/index.mjs +9 -4
- package/dist/loading/index.mjs.map +1 -1
- package/dist/navbar/index.js +3 -2
- package/dist/navbar/index.js.map +1 -1
- package/dist/navbar/index.mjs +10 -6
- package/dist/navbar/index.mjs.map +1 -1
- package/dist/navigationMenu/index.mjs +9 -4
- package/dist/navigationMenu/index.mjs.map +1 -1
- package/dist/pagination/index.mjs +9 -4
- package/dist/pagination/index.mjs.map +1 -1
- package/dist/passwordInput/index.js +3 -2
- package/dist/passwordInput/index.js.map +1 -1
- package/dist/passwordInput/index.mjs +12 -6
- package/dist/passwordInput/index.mjs.map +1 -1
- package/dist/phoneInput/index.js +10 -5
- package/dist/phoneInput/index.js.map +1 -1
- package/dist/phoneInput/index.mjs +19 -11
- package/dist/phoneInput/index.mjs.map +1 -1
- package/dist/pinInput/index.js +3 -3
- package/dist/pinInput/index.js.map +1 -1
- package/dist/pinInput/index.mjs +12 -7
- package/dist/pinInput/index.mjs.map +1 -1
- package/dist/popover/index.mjs +9 -4
- package/dist/popover/index.mjs.map +1 -1
- package/dist/progress/index.mjs +9 -4
- package/dist/progress/index.mjs.map +1 -1
- package/dist/progressCircle/index.js +2 -2
- package/dist/progressCircle/index.js.map +1 -1
- package/dist/progressCircle/index.mjs +11 -6
- package/dist/progressCircle/index.mjs.map +1 -1
- package/dist/radio/index.js +6 -4
- package/dist/radio/index.js.map +1 -1
- package/dist/radio/index.mjs +13 -8
- package/dist/radio/index.mjs.map +1 -1
- package/dist/scrollArea/index.mjs +9 -4
- package/dist/scrollArea/index.mjs.map +1 -1
- package/dist/scrollIndicator/index.js +2 -1
- package/dist/scrollIndicator/index.js.map +1 -1
- package/dist/scrollIndicator/index.mjs +2 -1
- package/dist/scrollIndicator/index.mjs.map +1 -1
- package/dist/select/index.js +6 -2
- package/dist/select/index.js.map +1 -1
- package/dist/select/index.mjs +15 -8
- package/dist/select/index.mjs.map +1 -1
- package/dist/separator/index.mjs +9 -4
- package/dist/separator/index.mjs.map +1 -1
- package/dist/sheet/index.mjs +9 -4
- package/dist/sheet/index.mjs.map +1 -1
- package/dist/sidebar/index.mjs +9 -4
- package/dist/sidebar/index.mjs.map +1 -1
- package/dist/signature/index.js +31 -11
- package/dist/signature/index.js.map +1 -1
- package/dist/signature/index.mjs +40 -15
- package/dist/signature/index.mjs.map +1 -1
- package/dist/simpleTable/index.js +18 -14
- package/dist/simpleTable/index.js.map +1 -1
- package/dist/simpleTable/index.mjs +25 -18
- package/dist/simpleTable/index.mjs.map +1 -1
- package/dist/skeleton/index.mjs +9 -4
- package/dist/skeleton/index.mjs.map +1 -1
- package/dist/slider/index.mjs +9 -4
- package/dist/slider/index.mjs.map +1 -1
- package/dist/sortButton/index.mjs +268 -11
- package/dist/sortButton/index.mjs.map +1 -1
- package/dist/splitButton/index.mjs +267 -12
- package/dist/splitButton/index.mjs.map +1 -1
- package/dist/switch/index.js +2 -1
- package/dist/switch/index.js.map +1 -1
- package/dist/switch/index.mjs +11 -5
- package/dist/switch/index.mjs.map +1 -1
- package/dist/table/index.mjs +9 -4
- package/dist/table/index.mjs.map +1 -1
- package/dist/tabs/index.mjs +7 -4
- package/dist/tabs/index.mjs.map +1 -1
- package/dist/textarea/index.js +4 -4
- package/dist/textarea/index.js.map +1 -1
- package/dist/textarea/index.mjs +11 -8
- package/dist/textarea/index.mjs.map +1 -1
- package/dist/toast/index.d.mts +9 -1
- package/dist/toast/index.d.ts +9 -1
- package/dist/toast/index.js +3 -3
- package/dist/toast/index.js.map +1 -1
- package/dist/toast/index.mjs +145 -10
- package/dist/toast/index.mjs.map +1 -1
- package/dist/toaster/index.d.mts +5 -0
- package/dist/toaster/index.d.ts +5 -0
- package/dist/toaster/index.js +17 -142
- package/dist/toaster/index.js.map +1 -1
- package/dist/toaster/index.mjs +142 -135
- package/dist/toaster/index.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-3ODWQVIA.mjs +0 -12
- package/dist/chunk-3ODWQVIA.mjs.map +0 -1
- package/dist/chunk-53OZVR57.mjs +0 -108
- package/dist/chunk-53OZVR57.mjs.map +0 -1
- package/dist/chunk-CBRGWUZG.mjs +0 -11
- package/dist/chunk-CBRGWUZG.mjs.map +0 -1
- package/dist/chunk-HYXZRCZW.mjs +0 -265
- package/dist/chunk-HYXZRCZW.mjs.map +0 -1
- package/dist/chunk-JNUGOUYJ.mjs +0 -154
- package/dist/chunk-JX5YLRCU.mjs +0 -443
- package/dist/chunk-JX5YLRCU.mjs.map +0 -1
- package/dist/chunk-NV3KR5Y7.mjs +0 -82
- package/dist/chunk-NV3KR5Y7.mjs.map +0 -1
- package/dist/chunk-OQ7MNEYW.mjs +0 -151
- package/dist/chunk-OQ7MNEYW.mjs.map +0 -1
package/dist/carousel/index.mjs
CHANGED
@@ -1,9 +1,14 @@
|
|
1
|
-
import {
|
2
|
-
cn
|
3
|
-
} from "../chunk-CBRGWUZG.mjs";
|
4
|
-
|
5
1
|
// elements/carousel/Carousel.tsx
|
6
2
|
import React, { useEffect, useState } from "react";
|
3
|
+
|
4
|
+
// util/index.ts
|
5
|
+
import { clsx } from "clsx";
|
6
|
+
import { twMerge } from "tailwind-merge";
|
7
|
+
function cn(...inputs) {
|
8
|
+
return twMerge(clsx(inputs));
|
9
|
+
}
|
10
|
+
|
11
|
+
// elements/carousel/Carousel.tsx
|
7
12
|
import useEmblaCarousel from "embla-carousel-react";
|
8
13
|
var Carousel = ({
|
9
14
|
items,
|
@@ -17,17 +22,17 @@ var Carousel = ({
|
|
17
22
|
const [emblaRef, emblaApi] = useEmblaCarousel({
|
18
23
|
...options,
|
19
24
|
direction,
|
20
|
-
loop: autoplay ? true : options
|
25
|
+
loop: autoplay ? true : (options == null ? void 0 : options.loop) || false
|
21
26
|
});
|
22
27
|
const [selectedIndex, setSelectedIndex] = useState(0);
|
23
28
|
useEffect(() => {
|
24
29
|
function selectHandler() {
|
25
|
-
const index = emblaApi
|
30
|
+
const index = emblaApi == null ? void 0 : emblaApi.selectedScrollSnap();
|
26
31
|
setSelectedIndex(index || 0);
|
27
32
|
}
|
28
|
-
emblaApi
|
33
|
+
emblaApi == null ? void 0 : emblaApi.on("select", selectHandler);
|
29
34
|
return () => {
|
30
|
-
emblaApi
|
35
|
+
emblaApi == null ? void 0 : emblaApi.off("select", selectHandler);
|
31
36
|
};
|
32
37
|
}, [emblaApi]);
|
33
38
|
useEffect(() => {
|
@@ -43,9 +48,9 @@ var Carousel = ({
|
|
43
48
|
};
|
44
49
|
}, [emblaApi, autoplay, autoplayInterval]);
|
45
50
|
const length = React.Children.count(items);
|
46
|
-
const canScrollNext = !!emblaApi
|
47
|
-
const canScrollPrev = !!emblaApi
|
48
|
-
return /* @__PURE__ */ React.createElement("div", { className: " hawa-relative hawa-h-full" }, /* @__PURE__ */ React.createElement("div", { className: "hawa-h-full hawa-overflow-hidden" }, /* @__PURE__ */ React.createElement("div", { className: "hawa-h-full", ref: emblaRef }, /* @__PURE__ */ React.createElement("div", { className: "hawa-flex hawa-h-full" }, items
|
51
|
+
const canScrollNext = !!(emblaApi == null ? void 0 : emblaApi.canScrollNext());
|
52
|
+
const canScrollPrev = !!(emblaApi == null ? void 0 : emblaApi.canScrollPrev());
|
53
|
+
return /* @__PURE__ */ React.createElement("div", { className: " hawa-relative hawa-h-full" }, /* @__PURE__ */ React.createElement("div", { className: "hawa-h-full hawa-overflow-hidden" }, /* @__PURE__ */ React.createElement("div", { className: "hawa-h-full", ref: emblaRef }, /* @__PURE__ */ React.createElement("div", { className: "hawa-flex hawa-h-full" }, items == null ? void 0 : items.map((item, i) => /* @__PURE__ */ React.createElement(
|
49
54
|
"div",
|
50
55
|
{
|
51
56
|
key: i,
|
@@ -58,15 +63,15 @@ var Carousel = ({
|
|
58
63
|
direction,
|
59
64
|
itemsLength: length,
|
60
65
|
selectedIndex,
|
61
|
-
onDotClick: (index) => emblaApi
|
66
|
+
onDotClick: (index) => emblaApi == null ? void 0 : emblaApi.scrollTo(index)
|
62
67
|
}
|
63
68
|
), showArrows && /* @__PURE__ */ React.createElement(
|
64
69
|
CarouselControls,
|
65
70
|
{
|
66
71
|
canScrollNext,
|
67
72
|
canScrollPrev,
|
68
|
-
onNext: () => emblaApi
|
69
|
-
onPrev: () => emblaApi
|
73
|
+
onNext: () => emblaApi == null ? void 0 : emblaApi.scrollNext(),
|
74
|
+
onPrev: () => emblaApi == null ? void 0 : emblaApi.scrollPrev()
|
70
75
|
}
|
71
76
|
));
|
72
77
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../elements/carousel/Carousel.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\n\nimport { DirectionType } from \"@_types/commonTypes\";\n// import useEmblaCarousel, { EmblaOptionsType } from \"embla-carousel-react\";\nimport { cn } from \"@util/index\";\nimport { EmblaOptionsType } from \"embla-carousel\";\nimport useEmblaCarousel from \"embla-carousel-react\";\n\ntype CarouselProps = {\n items: React.ReactNode[];\n showArrows?: boolean;\n autoplay?: boolean;\n autoplayInterval?: number;\n options?: EmblaOptionsType;\n direction?: DirectionType;\n};\ntype DotsProps = {\n itemsLength: number;\n selectedIndex: number;\n direction: DirectionType;\n onDotClick: (index: number) => void;\n};\ntype ControlsProps = {\n canScrollPrev: boolean;\n canScrollNext: boolean;\n onPrev(): void;\n onNext(): void;\n};\n\nexport const Carousel: React.FC<CarouselProps> = ({\n items,\n showArrows,\n options,\n autoplay,\n direction = \"ltr\",\n autoplayInterval = 3000,\n ...props\n}) => {\n const [emblaRef, emblaApi] = useEmblaCarousel({\n ...options,\n direction,\n loop: autoplay ? true : options?.loop || false\n });\n const [selectedIndex, setSelectedIndex] = useState(0);\n\n useEffect(() => {\n function selectHandler() {\n const index = emblaApi?.selectedScrollSnap();\n setSelectedIndex(index || 0);\n }\n\n emblaApi?.on(\"select\", selectHandler);\n return () => {\n emblaApi?.off(\"select\", selectHandler);\n };\n }, [emblaApi]);\n\n useEffect(() => {\n let autoplayTimer: ReturnType<typeof setTimeout>;\n if (autoplay && emblaApi) {\n autoplayTimer = setInterval(() => {\n emblaApi.scrollNext();\n }, autoplayInterval);\n }\n\n return () => {\n if (autoplayTimer) clearInterval(autoplayTimer);\n };\n }, [emblaApi, autoplay, autoplayInterval]);\n\n const length = React.Children.count(items);\n const canScrollNext = !!emblaApi?.canScrollNext();\n const canScrollPrev = !!emblaApi?.canScrollPrev();\n return (\n <div className=\" hawa-relative hawa-h-full\">\n <div className=\"hawa-h-full hawa-overflow-hidden\">\n <div className=\"hawa-h-full\" ref={emblaRef}>\n <div className=\"hawa-flex hawa-h-full\">\n {items?.map((item: any, i: any) => (\n <div\n key={i}\n className=\"hawa-flex hawa-h-full hawa-min-w-0 hawa-flex-[0_0_100%] hawa-items-center hawa-justify-center\"\n >\n {item}\n </div>\n ))}\n </div>\n </div>\n </div>\n\n <Dots\n direction={direction}\n itemsLength={length}\n selectedIndex={selectedIndex}\n onDotClick={(index) => emblaApi?.scrollTo(index)}\n />\n\n {showArrows && (\n <CarouselControls\n canScrollNext={canScrollNext}\n canScrollPrev={canScrollPrev}\n onNext={() => emblaApi?.scrollNext()}\n onPrev={() => emblaApi?.scrollPrev()}\n />\n )}\n </div>\n );\n};\n\nconst Dots = ({\n onDotClick,\n itemsLength,\n selectedIndex,\n direction\n}: DotsProps) => {\n const arr = new Array(itemsLength).fill(0);\n return (\n <div\n dir={direction}\n className=\"hawa-z-50 hawa-my-2 hawa-flex hawa-justify-center hawa-gap-1\"\n >\n {arr.map((_, index) => {\n const selected = index === selectedIndex;\n return (\n <div\n key={index}\n onClick={() => onDotClick(index)}\n className={cn(\n \"hawa-h-2 hawa-rounded-full hawa-bg-primary hawa-transition-all hawa-duration-300 hover:hawa-cursor-pointer\",\n !selected\n ? \"hawa-w-2 hawa-opacity-50\"\n : \"hawa-w-6 hawa-opacity-100\"\n )}\n ></div>\n );\n })}\n </div>\n );\n};\n\nconst CarouselControls = (props: ControlsProps) => {\n return (\n <div className=\"hawa-flex hawa-justify-end hawa-gap-2 \">\n <button\n onClick={() => props.canScrollPrev && props.onPrev()}\n disabled={!props.canScrollPrev}\n className={cn(\n \"hawa-absolute hawa-start-0 hawa-top-1/2 -hawa-translate-y-2 hawa-rounded-full hawa-p-2 hawa-text-white \",\n !props.canScrollPrev && \"hawa-bg-primary/50\",\n props.canScrollPrev && \"hawa-bg-primary\"\n )}\n >\n <svg\n aria-label=\"Chevron Right Icon\"\n stroke=\"currentColor\"\n fill=\"currentColor\"\n viewBox=\"0 0 16 16\"\n className=\"hawa-h-2 hawa-w-2 hawa-shrink-0 hawa-rotate-180 hawa-transition-transform hawa-duration-200 \"\n >\n <path d=\"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z\"></path>\n </svg>\n </button>\n <button\n onClick={() => props.canScrollNext && props.onNext()}\n disabled={!props.canScrollNext}\n className={cn(\n \"hawa-absolute hawa-end-0 hawa-top-1/2 -hawa-translate-y-2 hawa-rounded-full hawa-p-2 hawa-text-white \",\n !props.canScrollNext && \"hawa-bg-primary/50\",\n props.canScrollNext && \"hawa-bg-primary\"\n )}\n >\n <svg\n aria-label=\"Chevron Right Icon\"\n stroke=\"currentColor\"\n fill=\"currentColor\"\n viewBox=\"0 0 16 16\"\n className=\"hawa-h-2 hawa-w-2 hawa-shrink-0 hawa-transition-transform hawa-duration-200 \"\n >\n <path d=\"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z\"></path>\n </svg>\n </button>\n </div>\n );\n};\n"],"mappings":"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","names":[]}
|
1
|
+
{"version":3,"sources":["../../elements/carousel/Carousel.tsx","../../util/index.ts"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\n\nimport { DirectionType } from \"@_types/commonTypes\";\n// import useEmblaCarousel, { EmblaOptionsType } from \"embla-carousel-react\";\nimport { cn } from \"@util/index\";\nimport { EmblaOptionsType } from \"embla-carousel\";\nimport useEmblaCarousel from \"embla-carousel-react\";\n\ntype CarouselProps = {\n items: React.ReactNode[];\n showArrows?: boolean;\n autoplay?: boolean;\n autoplayInterval?: number;\n options?: EmblaOptionsType;\n direction?: DirectionType;\n};\ntype DotsProps = {\n itemsLength: number;\n selectedIndex: number;\n direction: DirectionType;\n onDotClick: (index: number) => void;\n};\ntype ControlsProps = {\n canScrollPrev: boolean;\n canScrollNext: boolean;\n onPrev(): void;\n onNext(): void;\n};\n\nexport const Carousel: React.FC<CarouselProps> = ({\n items,\n showArrows,\n options,\n autoplay,\n direction = \"ltr\",\n autoplayInterval = 3000,\n ...props\n}) => {\n const [emblaRef, emblaApi] = useEmblaCarousel({\n ...options,\n direction,\n loop: autoplay ? true : options?.loop || false\n });\n const [selectedIndex, setSelectedIndex] = useState(0);\n\n useEffect(() => {\n function selectHandler() {\n const index = emblaApi?.selectedScrollSnap();\n setSelectedIndex(index || 0);\n }\n\n emblaApi?.on(\"select\", selectHandler);\n return () => {\n emblaApi?.off(\"select\", selectHandler);\n };\n }, [emblaApi]);\n\n useEffect(() => {\n let autoplayTimer: ReturnType<typeof setTimeout>;\n if (autoplay && emblaApi) {\n autoplayTimer = setInterval(() => {\n emblaApi.scrollNext();\n }, autoplayInterval);\n }\n\n return () => {\n if (autoplayTimer) clearInterval(autoplayTimer);\n };\n }, [emblaApi, autoplay, autoplayInterval]);\n\n const length = React.Children.count(items);\n const canScrollNext = !!emblaApi?.canScrollNext();\n const canScrollPrev = !!emblaApi?.canScrollPrev();\n return (\n <div className=\" hawa-relative hawa-h-full\">\n <div className=\"hawa-h-full hawa-overflow-hidden\">\n <div className=\"hawa-h-full\" ref={emblaRef}>\n <div className=\"hawa-flex hawa-h-full\">\n {items?.map((item: any, i: any) => (\n <div\n key={i}\n className=\"hawa-flex hawa-h-full hawa-min-w-0 hawa-flex-[0_0_100%] hawa-items-center hawa-justify-center\"\n >\n {item}\n </div>\n ))}\n </div>\n </div>\n </div>\n\n <Dots\n direction={direction}\n itemsLength={length}\n selectedIndex={selectedIndex}\n onDotClick={(index) => emblaApi?.scrollTo(index)}\n />\n\n {showArrows && (\n <CarouselControls\n canScrollNext={canScrollNext}\n canScrollPrev={canScrollPrev}\n onNext={() => emblaApi?.scrollNext()}\n onPrev={() => emblaApi?.scrollPrev()}\n />\n )}\n </div>\n );\n};\n\nconst Dots = ({\n onDotClick,\n itemsLength,\n selectedIndex,\n direction\n}: DotsProps) => {\n const arr = new Array(itemsLength).fill(0);\n return (\n <div\n dir={direction}\n className=\"hawa-z-50 hawa-my-2 hawa-flex hawa-justify-center hawa-gap-1\"\n >\n {arr.map((_, index) => {\n const selected = index === selectedIndex;\n return (\n <div\n key={index}\n onClick={() => onDotClick(index)}\n className={cn(\n \"hawa-h-2 hawa-rounded-full hawa-bg-primary hawa-transition-all hawa-duration-300 hover:hawa-cursor-pointer\",\n !selected\n ? \"hawa-w-2 hawa-opacity-50\"\n : \"hawa-w-6 hawa-opacity-100\"\n )}\n ></div>\n );\n })}\n </div>\n );\n};\n\nconst CarouselControls = (props: ControlsProps) => {\n return (\n <div className=\"hawa-flex hawa-justify-end hawa-gap-2 \">\n <button\n onClick={() => props.canScrollPrev && props.onPrev()}\n disabled={!props.canScrollPrev}\n className={cn(\n \"hawa-absolute hawa-start-0 hawa-top-1/2 -hawa-translate-y-2 hawa-rounded-full hawa-p-2 hawa-text-white \",\n !props.canScrollPrev && \"hawa-bg-primary/50\",\n props.canScrollPrev && \"hawa-bg-primary\"\n )}\n >\n <svg\n aria-label=\"Chevron Right Icon\"\n stroke=\"currentColor\"\n fill=\"currentColor\"\n viewBox=\"0 0 16 16\"\n className=\"hawa-h-2 hawa-w-2 hawa-shrink-0 hawa-rotate-180 hawa-transition-transform hawa-duration-200 \"\n >\n <path d=\"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z\"></path>\n </svg>\n </button>\n <button\n onClick={() => props.canScrollNext && props.onNext()}\n disabled={!props.canScrollNext}\n className={cn(\n \"hawa-absolute hawa-end-0 hawa-top-1/2 -hawa-translate-y-2 hawa-rounded-full hawa-p-2 hawa-text-white \",\n !props.canScrollNext && \"hawa-bg-primary/50\",\n props.canScrollNext && \"hawa-bg-primary\"\n )}\n >\n <svg\n aria-label=\"Chevron Right Icon\"\n stroke=\"currentColor\"\n fill=\"currentColor\"\n viewBox=\"0 0 16 16\"\n className=\"hawa-h-2 hawa-w-2 hawa-shrink-0 hawa-transition-transform hawa-duration-200 \"\n >\n <path d=\"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z\"></path>\n </svg>\n </button>\n </div>\n );\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\ntype Palette = {\n name: string;\n colors: {\n [key: number]: string;\n };\n};\ntype Rgb = {\n r: number;\n g: number;\n b: number;\n};\nfunction hexToRgb(hex: string): Rgb | null {\n const sanitizedHex = hex.replaceAll(\"##\", \"#\");\n const colorParts = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(\n sanitizedHex\n );\n\n if (!colorParts) {\n return null;\n }\n\n const [, r, g, b] = colorParts;\n\n return {\n r: parseInt(r, 16),\n g: parseInt(g, 16),\n b: parseInt(b, 16)\n } as Rgb;\n}\n\nfunction rgbToHex(r: number, g: number, b: number): string {\n const toHex = (c: number) => `0${c.toString(16)}`.slice(-2);\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n}\n\nexport function getTextColor(color: string): \"#FFF\" | \"#333\" {\n const rgbColor = hexToRgb(color);\n\n if (!rgbColor) {\n return \"#333\";\n }\n\n const { r, g, b } = rgbColor;\n const luma = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n\n return luma < 120 ? \"#FFF\" : \"#333\";\n}\n\nfunction lighten(hex: string, intensity: number): string {\n const color = hexToRgb(`#${hex}`);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r + (255 - color.r) * intensity);\n const g = Math.round(color.g + (255 - color.g) * intensity);\n const b = Math.round(color.b + (255 - color.b) * intensity);\n\n return rgbToHex(r, g, b);\n}\n\nfunction darken(hex: string, intensity: number): string {\n const color = hexToRgb(hex);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r * intensity);\n const g = Math.round(color.g * intensity);\n const b = Math.round(color.b * intensity);\n\n return rgbToHex(r, g, b);\n}\nconst parseColor = (color: any) => {\n if (color.startsWith(\"#\")) {\n // Convert hex to RGB\n let r = parseInt(color.slice(1, 3), 16);\n let g = parseInt(color.slice(3, 5), 16);\n let b = parseInt(color.slice(5, 7), 16);\n return [r, g, b];\n } else if (color.startsWith(\"rgb\")) {\n // Extract RGB values from rgb() format\n return color.match(/\\d+/g).map(Number);\n }\n // Default to white if format is unrecognized\n return [255, 255, 255];\n};\nexport const calculateLuminance = (color: any) => {\n const [r, g, b] = parseColor(color)?.map((c: any) => {\n c /= 255;\n return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;\n });\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n};\n\nfunction getPallette(baseColor: string): Palette {\n const name = baseColor;\n\n const response: Palette = {\n name,\n colors: {\n 500: `#${baseColor}`.replace(\"##\", \"#\")\n }\n };\n\n const intensityMap: {\n [key: number]: number;\n } = {\n 50: 0.95,\n 100: 0.9,\n 200: 0.75,\n 300: 0.6,\n 400: 0.3,\n 600: 0.9,\n 700: 0.75,\n 800: 0.6,\n 900: 0.49\n };\n\n [50, 100, 200, 300, 400].forEach((level) => {\n response.colors[level] = lighten(baseColor, intensityMap[level]);\n });\n [600, 700, 800, 900].forEach((level) => {\n response.colors[level] = darken(baseColor, intensityMap[level]);\n });\n\n return response as Palette;\n}\n\nexport { getPallette };\n\n// const hexToRgb = (hex) => {\n// let d = hex?.split(\"#\")[1];\n// var aRgbHex = d?.match(/.{1,2}/g);\n// var aRgb = [\n// parseInt(aRgbHex[0], 16),\n// parseInt(aRgbHex[1], 16),\n// parseInt(aRgbHex[2], 16)\n// ];\n// return aRgb;\n// };\n// const getTextColor = (backColor) => {\n// let rgbArray = hexToRgb(backColor);\n// if (rgbArray[0] * 0.299 + rgbArray[1] * 0.587 + rgbArray[2] * 0.114 > 186) {\n// return \"#000000\";\n// } else {\n// return \"#ffffff\";\n// }\n// };\n// const replaceAt = function (string, index, replacement) {\n// // if (replacement == \"\" || replacement == \" \") {\n// // return (\n// // string.substring(0, index) +\n// // string.substring(index + replacement.length )\n// // );\n// // }\n// const replaced = string.substring(0, index) + replacement + string.substring(index + 1)\n// return replaced\n// };\n\n// export { hexToRgb, getTextColor, replaceAt };\n"],"mappings":"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","names":[]}
|
package/dist/checkbox/index.mjs
CHANGED
@@ -1,10 +1,15 @@
|
|
1
|
-
import {
|
2
|
-
cn
|
3
|
-
} from "../chunk-CBRGWUZG.mjs";
|
4
|
-
|
5
1
|
// elements/checkbox/Checkbox.tsx
|
6
2
|
import * as React from "react";
|
7
3
|
import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
|
4
|
+
|
5
|
+
// util/index.ts
|
6
|
+
import { clsx } from "clsx";
|
7
|
+
import { twMerge } from "tailwind-merge";
|
8
|
+
function cn(...inputs) {
|
9
|
+
return twMerge(clsx(inputs));
|
10
|
+
}
|
11
|
+
|
12
|
+
// elements/checkbox/Checkbox.tsx
|
8
13
|
var Checkbox = ({
|
9
14
|
id,
|
10
15
|
label,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../elements/checkbox/Checkbox.tsx"],"sourcesContent":["import * as React from \"react\";\n\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\n\nimport { RadiusType } from \"@_types/commonTypes\";\n\nimport { cn } from \"@util/index\";\n\ntype CheckBoxTypes = {\n id: string;\n label?: React.ReactNode;\n sublabel?: React.ReactNode;\n helperText?: string;\n size?: \"xs\" | \"sm\" | \"default\" | \"md\" | \"lg\" | \"xl\";\n radius?: RadiusType;\n};\n\ntype CheckboxProps = CheckBoxTypes &\n React.ComponentProps<typeof CheckboxElement>;\n\nexport const Checkbox: React.FC<CheckboxProps> = ({\n id,\n label,\n sublabel,\n helperText,\n disabled,\n size = \"default\",\n radius = \"inherit\",\n ...props\n}) => {\n let labelLineHeightStyles = {\n xs: sublabel || helperText ? 0.5 : 0.1,\n sm: 0.6,\n default: 1,\n md: 0.8,\n lg: 0.9,\n xl: 1\n };\n return (\n <div\n className={cn(\n \"hawa-flex hawa-gap-2\",\n size === \"default\" ? \"hawa-items-top\" : \"hawa-items-center\"\n )}\n >\n <CheckboxElement\n {...props}\n size={size}\n radius={radius}\n disabled={disabled}\n id={id}\n />\n {(label || helperText) && (\n <div className={\"hawa-grid hawa-gap-1.5\"}>\n {label && (\n <label\n htmlFor={id}\n className={cn(\n \"hawa-w-fit hawa-select-none hawa-pt-0.5 hawa-text-sm hawa-font-medium\",\n disabled\n ? \"hawa-cursor-not-allowed hawa-text-muted-foreground hawa-opacity-70 \"\n : \"hawa-cursor-pointer\"\n )}\n style={{\n // lineHeight: labelLineHeightStyles[size]\n\n lineHeight: 1\n }}\n >\n {label}\n </label>\n )}\n {sublabel && (\n <label\n htmlFor={id}\n className={cn(\n \"hawa-w-fit hawa-select-none hawa-text-sm hawa-text-muted-foreground\",\n disabled\n ? \"hawa-cursor-not-allowed hawa-text-muted-foreground hawa-opacity-70\"\n : \"hawa-cursor-pointer\"\n )}\n >\n {sublabel}\n </label>\n )}\n {helperText && !disabled && (\n <label\n htmlFor={id}\n className={cn(\n \"hawa-w-fit hawa-select-none hawa-text-xs hawa-text-helper-color\",\n disabled && \"hawa-cursor-not-allowed hawa-opacity-70\"\n )}\n >\n {helperText}\n </label>\n )}\n </div>\n )}\n </div>\n );\n};\n\nconst CheckboxElement = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root> & {\n size?: \"xs\" | \"sm\" | \"default\" | \"md\" | \"lg\" | \"xl\";\n radius?: RadiusType;\n }\n>(({ radius = \"inherit\", size = \"default\", className, ...props }, ref) => {\n let checkboxRadius = {\n none: \"hawa-rounded-none\",\n inherit: \"hawa-rounded-sm\",\n full: \"hawa-rounded-full\"\n };\n let checkboxSizes = {\n xs: \"hawa-w-3 hawa-h-3\",\n sm: \"hawa-w-6 hawa-h-6\",\n default: \"hawa-icon\",\n md: \"hawa-w-8 hawa-h-8\",\n lg: \"hawa-w-10 hawa-h-10\",\n xl: \"hawa-w-12 hawa-h-12\"\n };\n let checkboxIndicatorSizes = {\n xs: \"0.5em\",\n default: \"0.60em\",\n sm: \"0.75em\",\n md: \"0.875em\",\n lg: \"1em\",\n xl: \"1.25em\"\n };\n return (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"hawa-peer hawa-shrink-0 hawa-border hawa-border-primary hawa-ring-offset-background focus-visible:hawa-outline-none focus-visible:hawa-ring-2 focus-visible:hawa-ring-ring focus-visible:hawa-ring-offset-2 disabled:hawa-cursor-not-allowed disabled:hawa-opacity-50 data-[state=checked]:hawa-bg-primary data-[state=checked]:hawa-text-primary-foreground\",\n checkboxSizes[size],\n checkboxRadius[radius],\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\n \"hawa-flex hawa-items-center hawa-justify-center hawa-text-current\"\n )}\n >\n <svg\n aria-label=\"Check Mark\"\n stroke=\"currentColor\"\n fill=\"currentColor\"\n strokeWidth=\"0\"\n viewBox=\"0 0 512 512\"\n height={checkboxIndicatorSizes[size]}\n width={checkboxIndicatorSizes[size]}\n // height=\"0.60em\"\n // width=\"0.60em\"\n >\n <path d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"></path>\n </svg>{\" \"}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n});\nCheckboxElement.displayName = CheckboxPrimitive.Root.displayName;\n"],"mappings":";;;;;AAAA,YAAY,WAAW;AAEvB,YAAY,uBAAuB;AAkB5B,IAAM,WAAoC,CAAC;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,SAAS;AAAA,EACT,GAAG;AACL,MAAM;AACJ,MAAI,wBAAwB;AAAA,IAC1B,IAAI,YAAY,aAAa,MAAM;AAAA,IACnC,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AACA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,SAAS,YAAY,mBAAmB;AAAA,MAC1C;AAAA;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACF;AAAA,KACE,SAAS,eACT,oCAAC,SAAI,WAAW,4BACb,SACC;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QACT,WAAW;AAAA,UACT;AAAA,UACA,WACI,yEACA;AAAA,QACN;AAAA,QACA,OAAO;AAAA;AAAA,UAGL,YAAY;AAAA,QACd;AAAA;AAAA,MAEC;AAAA,IACH,GAED,YACC;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QACT,WAAW;AAAA,UACT;AAAA,UACA,WACI,uEACA;AAAA,QACN;AAAA;AAAA,MAEC;AAAA,IACH,GAED,cAAc,CAAC,YACd;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QACT,WAAW;AAAA,UACT;AAAA,UACA,YAAY;AAAA,QACd;AAAA;AAAA,MAEC;AAAA,IACH,CAEJ;AAAA,EAEJ;AAEJ;AAEA,IAAM,kBAAwB,iBAM5B,CAAC,EAAE,SAAS,WAAW,OAAO,WAAW,WAAW,GAAG,MAAM,GAAG,QAAQ;AACxE,MAAI,iBAAiB;AAAA,IACnB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AACA,MAAI,gBAAgB;AAAA,IAClB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AACA,MAAI,yBAAyB;AAAA,IAC3B,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AACA,SACE;AAAA,IAAmB;AAAA,IAAlB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,cAAc,IAAI;AAAA,QAClB,eAAe,MAAM;AAAA,QACrB;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,IAEJ;AAAA,MAAmB;AAAA,MAAlB;AAAA,QACC,WAAW;AAAA,UACT;AAAA,QACF;AAAA;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,cAAW;AAAA,UACX,QAAO;AAAA,UACP,MAAK;AAAA,UACL,aAAY;AAAA,UACZ,SAAQ;AAAA,UACR,QAAQ,uBAAuB,IAAI;AAAA,UACnC,OAAO,uBAAuB,IAAI;AAAA;AAAA,QAIlC,oCAAC,UAAK,GAAE,sRAAqR;AAAA,MAC/R;AAAA,MAAO;AAAA,IACT;AAAA,EACF;AAEJ,CAAC;AACD,gBAAgB,cAAgC,uBAAK;","names":[]}
|
1
|
+
{"version":3,"sources":["../../elements/checkbox/Checkbox.tsx","../../util/index.ts"],"sourcesContent":["import * as React from \"react\";\n\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\n\nimport { RadiusType } from \"@_types/commonTypes\";\n\nimport { cn } from \"@util/index\";\n\ntype CheckBoxTypes = {\n id: string;\n label?: React.ReactNode;\n sublabel?: React.ReactNode;\n helperText?: string;\n size?: \"xs\" | \"sm\" | \"default\" | \"md\" | \"lg\" | \"xl\";\n radius?: RadiusType;\n};\n\ntype CheckboxProps = CheckBoxTypes &\n React.ComponentProps<typeof CheckboxElement>;\n\nexport const Checkbox: React.FC<CheckboxProps> = ({\n id,\n label,\n sublabel,\n helperText,\n disabled,\n size = \"default\",\n radius = \"inherit\",\n ...props\n}) => {\n let labelLineHeightStyles = {\n xs: sublabel || helperText ? 0.5 : 0.1,\n sm: 0.6,\n default: 1,\n md: 0.8,\n lg: 0.9,\n xl: 1\n };\n return (\n <div\n className={cn(\n \"hawa-flex hawa-gap-2\",\n size === \"default\" ? \"hawa-items-top\" : \"hawa-items-center\"\n )}\n >\n <CheckboxElement\n {...props}\n size={size}\n radius={radius}\n disabled={disabled}\n id={id}\n />\n {(label || helperText) && (\n <div className={\"hawa-grid hawa-gap-1.5\"}>\n {label && (\n <label\n htmlFor={id}\n className={cn(\n \"hawa-w-fit hawa-select-none hawa-pt-0.5 hawa-text-sm hawa-font-medium\",\n disabled\n ? \"hawa-cursor-not-allowed hawa-text-muted-foreground hawa-opacity-70 \"\n : \"hawa-cursor-pointer\"\n )}\n style={{\n // lineHeight: labelLineHeightStyles[size]\n\n lineHeight: 1\n }}\n >\n {label}\n </label>\n )}\n {sublabel && (\n <label\n htmlFor={id}\n className={cn(\n \"hawa-w-fit hawa-select-none hawa-text-sm hawa-text-muted-foreground\",\n disabled\n ? \"hawa-cursor-not-allowed hawa-text-muted-foreground hawa-opacity-70\"\n : \"hawa-cursor-pointer\"\n )}\n >\n {sublabel}\n </label>\n )}\n {helperText && !disabled && (\n <label\n htmlFor={id}\n className={cn(\n \"hawa-w-fit hawa-select-none hawa-text-xs hawa-text-helper-color\",\n disabled && \"hawa-cursor-not-allowed hawa-opacity-70\"\n )}\n >\n {helperText}\n </label>\n )}\n </div>\n )}\n </div>\n );\n};\n\nconst CheckboxElement = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root> & {\n size?: \"xs\" | \"sm\" | \"default\" | \"md\" | \"lg\" | \"xl\";\n radius?: RadiusType;\n }\n>(({ radius = \"inherit\", size = \"default\", className, ...props }, ref) => {\n let checkboxRadius = {\n none: \"hawa-rounded-none\",\n inherit: \"hawa-rounded-sm\",\n full: \"hawa-rounded-full\"\n };\n let checkboxSizes = {\n xs: \"hawa-w-3 hawa-h-3\",\n sm: \"hawa-w-6 hawa-h-6\",\n default: \"hawa-icon\",\n md: \"hawa-w-8 hawa-h-8\",\n lg: \"hawa-w-10 hawa-h-10\",\n xl: \"hawa-w-12 hawa-h-12\"\n };\n let checkboxIndicatorSizes = {\n xs: \"0.5em\",\n default: \"0.60em\",\n sm: \"0.75em\",\n md: \"0.875em\",\n lg: \"1em\",\n xl: \"1.25em\"\n };\n return (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"hawa-peer hawa-shrink-0 hawa-border hawa-border-primary hawa-ring-offset-background focus-visible:hawa-outline-none focus-visible:hawa-ring-2 focus-visible:hawa-ring-ring focus-visible:hawa-ring-offset-2 disabled:hawa-cursor-not-allowed disabled:hawa-opacity-50 data-[state=checked]:hawa-bg-primary data-[state=checked]:hawa-text-primary-foreground\",\n checkboxSizes[size],\n checkboxRadius[radius],\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\n \"hawa-flex hawa-items-center hawa-justify-center hawa-text-current\"\n )}\n >\n <svg\n aria-label=\"Check Mark\"\n stroke=\"currentColor\"\n fill=\"currentColor\"\n strokeWidth=\"0\"\n viewBox=\"0 0 512 512\"\n height={checkboxIndicatorSizes[size]}\n width={checkboxIndicatorSizes[size]}\n // height=\"0.60em\"\n // width=\"0.60em\"\n >\n <path d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"></path>\n </svg>{\" \"}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n});\nCheckboxElement.displayName = CheckboxPrimitive.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(\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;AAEvB,YAAY,uBAAuB;;;ACFnC,SAAS,YAA6B;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;;;ADeO,IAAM,WAAoC,CAAC;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,SAAS;AAAA,EACT,GAAG;AACL,MAAM;AACJ,MAAI,wBAAwB;AAAA,IAC1B,IAAI,YAAY,aAAa,MAAM;AAAA,IACnC,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AACA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,SAAS,YAAY,mBAAmB;AAAA,MAC1C;AAAA;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACF;AAAA,KACE,SAAS,eACT,oCAAC,SAAI,WAAW,4BACb,SACC;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QACT,WAAW;AAAA,UACT;AAAA,UACA,WACI,yEACA;AAAA,QACN;AAAA,QACA,OAAO;AAAA;AAAA,UAGL,YAAY;AAAA,QACd;AAAA;AAAA,MAEC;AAAA,IACH,GAED,YACC;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QACT,WAAW;AAAA,UACT;AAAA,UACA,WACI,uEACA;AAAA,QACN;AAAA;AAAA,MAEC;AAAA,IACH,GAED,cAAc,CAAC,YACd;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QACT,WAAW;AAAA,UACT;AAAA,UACA,YAAY;AAAA,QACd;AAAA;AAAA,MAEC;AAAA,IACH,CAEJ;AAAA,EAEJ;AAEJ;AAEA,IAAM,kBAAwB,iBAM5B,CAAC,EAAE,SAAS,WAAW,OAAO,WAAW,WAAW,GAAG,MAAM,GAAG,QAAQ;AACxE,MAAI,iBAAiB;AAAA,IACnB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AACA,MAAI,gBAAgB;AAAA,IAClB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AACA,MAAI,yBAAyB;AAAA,IAC3B,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AACA,SACE;AAAA,IAAmB;AAAA,IAAlB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,cAAc,IAAI;AAAA,QAClB,eAAe,MAAM;AAAA,QACrB;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,IAEJ;AAAA,MAAmB;AAAA,MAAlB;AAAA,QACC,WAAW;AAAA,UACT;AAAA,QACF;AAAA;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,cAAW;AAAA,UACX,QAAO;AAAA,UACP,MAAK;AAAA,UACL,aAAY;AAAA,UACZ,SAAQ;AAAA,UACR,QAAQ,uBAAuB,IAAI;AAAA,UACnC,OAAO,uBAAuB,IAAI;AAAA;AAAA,QAIlC,oCAAC,UAAK,GAAE,sRAAqR;AAAA,MAC/R;AAAA,MAAO;AAAA,IACT;AAAA,EACF;AAEJ,CAAC;AACD,gBAAgB,cAAgC,uBAAK;","names":[]}
|
package/dist/chip/index.mjs
CHANGED
@@ -1,9 +1,14 @@
|
|
1
|
-
import {
|
2
|
-
cn
|
3
|
-
} from "../chunk-CBRGWUZG.mjs";
|
4
|
-
|
5
1
|
// elements/chip/Chip.tsx
|
6
2
|
import React from "react";
|
3
|
+
|
4
|
+
// util/index.ts
|
5
|
+
import { clsx } from "clsx";
|
6
|
+
import { twMerge } from "tailwind-merge";
|
7
|
+
function cn(...inputs) {
|
8
|
+
return twMerge(clsx(inputs));
|
9
|
+
}
|
10
|
+
|
11
|
+
// elements/chip/Chip.tsx
|
7
12
|
var Chip = React.forwardRef(
|
8
13
|
({
|
9
14
|
label,
|
package/dist/chip/index.mjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../elements/chip/Chip.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { RadiusType } from \"@_types/commonTypes\";\n\nimport { cn } from \"@util/index\";\n\nexport type ChipColors =\n | \"green\"\n | \"blue\"\n | \"red\"\n | \"yellow\"\n | \"orange\"\n | \"purple\"\n | \"cyan\"\n | \"hyper\"\n | \"oceanic\";\n\nexport type ChipTypes = React.HTMLAttributes<HTMLSpanElement> & {\n /** The text inside the chip */\n label: string;\n /** The small icon before the chip label */\n icon?: JSX.Element;\n /** The color of the chip, must be a tailwind color */\n color?: ChipColors;\n /** The size of the chip */\n size?: \"small\" | \"normal\" | \"large\";\n /** Enable/Disable the dot before the label of the chip */\n dot?: boolean;\n /** Red/Green dot next to the label of the chip indicating online/offline or available/unavailable */\n dotType?: \"available\" | \"unavailable\";\n radius?: RadiusType;\n};\n\nexport const Chip = React.forwardRef<HTMLSpanElement, ChipTypes>(\n (\n {\n label,\n size = \"normal\",\n icon,\n color,\n radius = \"inherit\",\n dotType,\n ...rest\n },\n ref\n ) => {\n let defaultStyles =\n \"hawa-flex hawa-flex-row hawa-w-fit hawa-gap-1 hawa-items-center hawa-px-2.5 hawa-py-1 hawa-font-bold \";\n let radiusStyles = {\n inherit: \" hawa-rounded\",\n full: \"hawa-rounded-full\",\n none: \"hawa-rounded-none\"\n };\n let sizeStyles = {\n small:\n \"hawa-h-[15px] hawa-leading-4 hawa-px-0 hawa-py-0 hawa-text-[9px] hawa-gap-0.5 \",\n normal: \"hawa-h-fit hawa-text-xs\",\n large: \"hawa-text-base\"\n };\n let dotStyles = {\n small: \"hawa-flex hawa-h-1 hawa-w-1 hawa-rounded-full\",\n normal: \"hawa-flex hawa-h-2 hawa-w-2 hawa-rounded-full\",\n large: \"hawa-flex hawa-h-3 hawa-w-3 hawa-rounded-full\"\n };\n let dotTypeStyles = {\n available: \"hawa-bg-green-500\",\n unavailable: \"hawa-bg-red-500\"\n };\n let colorStyles: any = {\n green:\n \"hawa-bg-green-100 hawa-text-green-500 dark:hawa-bg-green-400 dark:hawa-text-green-800\",\n blue: \"hawa-bg-blue-100 hawa-text-blue-500 dark:hawa-bg-blue-400 dark:hawa-text-blue-100\",\n red: \"hawa-bg-red-100 hawa-text-red-500 dark:hawa-bg-red-400 dark:hawa-text-red-100\",\n yellow:\n \"hawa-bg-yellow-100 hawa-text-yellow-600 dark:hawa-bg-yellow-400 dark:hawa-text-yellow-800\",\n orange:\n \"hawa-bg-orange-100 hawa-text-orange-500 dark:hawa-bg-orange-400 dark:hawa-text-orange-100\",\n purple:\n \"hawa-bg-purple-100 hawa-text-purple-500 dark:hawa-bg-purple-400 dark:hawa-text-purple-100\",\n cyan: \"hawa-bg-cyan-100 hawa-text-cyan-800 dark:hawa-bg-cyan-400 dark:hawa-text-cyan-800\",\n hyper:\n \"hawa-text-white hawa-bg-gradient-to-tl hawa-from-pink-500 hawa-via-red-500 hawa-to-yellow-500 \",\n oceanic:\n \"hawa-text-white hawa-bg-gradient-to-bl hawa-from-green-300 hawa-via-blue-500 hawa-to-purple-600\"\n };\n if (label) {\n return (\n <span\n {...rest}\n ref={ref}\n className={cn(\n defaultStyles,\n sizeStyles[size],\n radiusStyles[radius],\n color ? colorStyles[color] : \"hawa-border hawa-bg-none\"\n )}\n >\n {dotType && (\n <span\n className={cn(dotStyles[size], dotTypeStyles[dotType])}\n ></span>\n )}\n {icon && icon}\n {label}\n </span>\n );\n } else {\n return (\n <span\n {...rest}\n ref={ref}\n className={cn(\n \"hawa-h-2 hawa-w-2 hawa-rounded-full\",\n color ? colorStyles[color] : \"hawa-border hawa-bg-none\"\n )}\n ></span>\n );\n }\n }\n);\n"],"mappings":"
|
1
|
+
{"version":3,"sources":["../../elements/chip/Chip.tsx","../../util/index.ts"],"sourcesContent":["import React from \"react\";\n\nimport { RadiusType } from \"@_types/commonTypes\";\n\nimport { cn } from \"@util/index\";\n\nexport type ChipColors =\n | \"green\"\n | \"blue\"\n | \"red\"\n | \"yellow\"\n | \"orange\"\n | \"purple\"\n | \"cyan\"\n | \"hyper\"\n | \"oceanic\";\n\nexport type ChipTypes = React.HTMLAttributes<HTMLSpanElement> & {\n /** The text inside the chip */\n label: string;\n /** The small icon before the chip label */\n icon?: JSX.Element;\n /** The color of the chip, must be a tailwind color */\n color?: ChipColors;\n /** The size of the chip */\n size?: \"small\" | \"normal\" | \"large\";\n /** Enable/Disable the dot before the label of the chip */\n dot?: boolean;\n /** Red/Green dot next to the label of the chip indicating online/offline or available/unavailable */\n dotType?: \"available\" | \"unavailable\";\n radius?: RadiusType;\n};\n\nexport const Chip = React.forwardRef<HTMLSpanElement, ChipTypes>(\n (\n {\n label,\n size = \"normal\",\n icon,\n color,\n radius = \"inherit\",\n dotType,\n ...rest\n },\n ref\n ) => {\n let defaultStyles =\n \"hawa-flex hawa-flex-row hawa-w-fit hawa-gap-1 hawa-items-center hawa-px-2.5 hawa-py-1 hawa-font-bold \";\n let radiusStyles = {\n inherit: \" hawa-rounded\",\n full: \"hawa-rounded-full\",\n none: \"hawa-rounded-none\"\n };\n let sizeStyles = {\n small:\n \"hawa-h-[15px] hawa-leading-4 hawa-px-0 hawa-py-0 hawa-text-[9px] hawa-gap-0.5 \",\n normal: \"hawa-h-fit hawa-text-xs\",\n large: \"hawa-text-base\"\n };\n let dotStyles = {\n small: \"hawa-flex hawa-h-1 hawa-w-1 hawa-rounded-full\",\n normal: \"hawa-flex hawa-h-2 hawa-w-2 hawa-rounded-full\",\n large: \"hawa-flex hawa-h-3 hawa-w-3 hawa-rounded-full\"\n };\n let dotTypeStyles = {\n available: \"hawa-bg-green-500\",\n unavailable: \"hawa-bg-red-500\"\n };\n let colorStyles: any = {\n green:\n \"hawa-bg-green-100 hawa-text-green-500 dark:hawa-bg-green-400 dark:hawa-text-green-800\",\n blue: \"hawa-bg-blue-100 hawa-text-blue-500 dark:hawa-bg-blue-400 dark:hawa-text-blue-100\",\n red: \"hawa-bg-red-100 hawa-text-red-500 dark:hawa-bg-red-400 dark:hawa-text-red-100\",\n yellow:\n \"hawa-bg-yellow-100 hawa-text-yellow-600 dark:hawa-bg-yellow-400 dark:hawa-text-yellow-800\",\n orange:\n \"hawa-bg-orange-100 hawa-text-orange-500 dark:hawa-bg-orange-400 dark:hawa-text-orange-100\",\n purple:\n \"hawa-bg-purple-100 hawa-text-purple-500 dark:hawa-bg-purple-400 dark:hawa-text-purple-100\",\n cyan: \"hawa-bg-cyan-100 hawa-text-cyan-800 dark:hawa-bg-cyan-400 dark:hawa-text-cyan-800\",\n hyper:\n \"hawa-text-white hawa-bg-gradient-to-tl hawa-from-pink-500 hawa-via-red-500 hawa-to-yellow-500 \",\n oceanic:\n \"hawa-text-white hawa-bg-gradient-to-bl hawa-from-green-300 hawa-via-blue-500 hawa-to-purple-600\"\n };\n if (label) {\n return (\n <span\n {...rest}\n ref={ref}\n className={cn(\n defaultStyles,\n sizeStyles[size],\n radiusStyles[radius],\n color ? colorStyles[color] : \"hawa-border hawa-bg-none\"\n )}\n >\n {dotType && (\n <span\n className={cn(dotStyles[size], dotTypeStyles[dotType])}\n ></span>\n )}\n {icon && icon}\n {label}\n </span>\n );\n } else {\n return (\n <span\n {...rest}\n ref={ref}\n className={cn(\n \"hawa-h-2 hawa-w-2 hawa-rounded-full\",\n color ? colorStyles[color] : \"hawa-border hawa-bg-none\"\n )}\n ></span>\n );\n }\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"],"mappings":";AAAA,OAAO,WAAW;;;ACAlB,SAAS,YAA6B;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;;;AD4BO,IAAM,OAAO,MAAM;AAAA,EACxB,CACE;AAAA,IACE;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,QAAI,gBACF;AACF,QAAI,eAAe;AAAA,MACjB,SAAS;AAAA,MACT,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AACA,QAAI,aAAa;AAAA,MACf,OACE;AAAA,MACF,QAAQ;AAAA,MACR,OAAO;AAAA,IACT;AACA,QAAI,YAAY;AAAA,MACd,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,IACT;AACA,QAAI,gBAAgB;AAAA,MAClB,WAAW;AAAA,MACX,aAAa;AAAA,IACf;AACA,QAAI,cAAmB;AAAA,MACrB,OACE;AAAA,MACF,MAAM;AAAA,MACN,KAAK;AAAA,MACL,QACE;AAAA,MACF,QACE;AAAA,MACF,QACE;AAAA,MACF,MAAM;AAAA,MACN,OACE;AAAA,MACF,SACE;AAAA,IACJ;AACA,QAAI,OAAO;AACT,aACE;AAAA,QAAC;AAAA;AAAA,UACE,GAAG;AAAA,UACJ;AAAA,UACA,WAAW;AAAA,YACT;AAAA,YACA,WAAW,IAAI;AAAA,YACf,aAAa,MAAM;AAAA,YACnB,QAAQ,YAAY,KAAK,IAAI;AAAA,UAC/B;AAAA;AAAA,QAEC,WACC;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,GAAG,UAAU,IAAI,GAAG,cAAc,OAAO,CAAC;AAAA;AAAA,QACtD;AAAA,QAEF,QAAQ;AAAA,QACR;AAAA,MACH;AAAA,IAEJ,OAAO;AACL,aACE;AAAA,QAAC;AAAA;AAAA,UACE,GAAG;AAAA,UACJ;AAAA,UACA,WAAW;AAAA,YACT;AAAA,YACA,QAAQ,YAAY,KAAK,IAAI;AAAA,UAC/B;AAAA;AAAA,MACD;AAAA,IAEL;AAAA,EACF;AACF;","names":[]}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
// hooks/useClipboard.ts
|
2
|
+
import { useState } from "react";
|
3
|
+
function useClipboard({ timeout = 2e3 } = {}) {
|
4
|
+
const [error, setError] = useState(null);
|
5
|
+
const [copied, setCopied] = useState(false);
|
6
|
+
const [copyTimeout, setCopyTimeout] = useState(null);
|
7
|
+
const handleCopyResult = (value) => {
|
8
|
+
clearTimeout(copyTimeout);
|
9
|
+
setCopyTimeout(setTimeout(() => setCopied(false), timeout));
|
10
|
+
setCopied(value);
|
11
|
+
};
|
12
|
+
const copy = (valueToCopy) => {
|
13
|
+
if ("clipboard" in navigator) {
|
14
|
+
navigator.clipboard.writeText(valueToCopy).then(() => handleCopyResult(true)).catch((err) => setError(err));
|
15
|
+
} else {
|
16
|
+
setError(new Error("useClipboard: navigator.clipboard is not supported"));
|
17
|
+
}
|
18
|
+
};
|
19
|
+
const reset = () => {
|
20
|
+
setCopied(false);
|
21
|
+
setError(null);
|
22
|
+
clearTimeout(copyTimeout);
|
23
|
+
};
|
24
|
+
return { copy, reset, error, copied };
|
25
|
+
}
|
26
|
+
|
27
|
+
export {
|
28
|
+
useClipboard
|
29
|
+
};
|
package/dist/codeBlock/index.js
CHANGED
@@ -404,7 +404,7 @@ var CodeBlock = ({
|
|
404
404
|
{
|
405
405
|
className: cn(
|
406
406
|
widthStyles[width],
|
407
|
-
"hawa-w-full hawa-flex-col hawa-items-center hawa-rounded hawa-bg-background hawa-text-left hawa-text-white sm:hawa-text-base",
|
407
|
+
"hawa-w-full hawa-flex-col hawa-items-center hawa-rounded hawa-bg-background hawa-text-left hawa-my-2 hawa-text-white sm:hawa-text-base",
|
408
408
|
className
|
409
409
|
)
|
410
410
|
},
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../elements/codeBlock/index.ts","../../elements/codeBlock/CodeBlock.tsx","../../util/index.ts","../../hooks/useClipboard.ts","../../elements/button/Button.tsx","../../elements/loading/Loading.tsx","../../elements/tooltip/Tooltip.tsx"],"sourcesContent":["export * from \"./CodeBlock\";\n","import React, { FC, useEffect, useState } from \"react\";\n\nimport { cn } from \"@util/index\";\nimport {\n Highlight,\n HighlightProps,\n Language,\n themes,\n Prism\n} from \"prism-react-renderer\";\n\nimport { useClipboard } from \"../../hooks/useClipboard\";\nimport { Button } from \"../button\";\nimport { Tooltip } from \"../tooltip\";\n\n(typeof global !== \"undefined\" ? global : window).Prism = Prism;\nrequire(\"prismjs/components/prism-bash\");\n\ntype CodeBlockTypes = {\n /** Specifies the programming language for syntax highlighting.*/\n language?: HighlightProps[\"language\"];\n /** Defines the width of the code block.*/\n width?: \"full\" | \"md\" | \"sm\";\n /** Array of tabs each containing a title and code content.*/\n tabs?: { title: string; code: string }[];\n /** Name of the file being displayed. */\n fileName?: string;\n /** Code content to be displayed within the code block.*/\n code?: string;\n lineNumbers?: boolean;\n forcedDarkMode?: boolean;\n className?: string;\n};\n\nexport const CodeBlock: FC<CodeBlockTypes> = ({\n tabs,\n code,\n fileName,\n className,\n language = \"javascript\", // default to JavaScript if no language is provided\n width = \"full\",\n ...props\n}) => {\n const clipboard = useClipboard();\n const [selectedTab, setSelectedTab] = useState(0);\n // const isDarkMode =\n // props.forcedDarkMode ||\n // document.body.classList.contains(\"dark\") ||\n // document.documentElement.classList.contains(\"dark\");\n // const theme = isDarkMode ? themes.vsDark : themes.vsLight;\n const theme = themes.oceanicNext;\n\n let widthStyles = {\n full: \"hawa-w-full\",\n md: \"hawa-w-full hawa-max-w-md\",\n sm: \"hawa-w-full hawa-max-w-sm\",\n xs: \"hawa-w-full hawa-max-w-xs\"\n };\n\n return (\n <div\n className={cn(\n widthStyles[width],\n \"hawa-w-full hawa-flex-col hawa-items-center hawa-rounded hawa-bg-background hawa-text-left hawa-text-white sm:hawa-text-base\",\n className\n )}\n >\n {fileName && (\n <div\n className={cn(\n \"hawa-flex hawa-flex-row hawa-gap-2 hawa-rounded-t hawa-p-2 hawa-py-0.5 hawa-pb-0 hawa-font-mono hawa-text-foreground\",\n fileName && tabs\n ? \"hawa-bg-primary/10\"\n : \"hawa-bg-primary/15\"\n )}\n >\n <div\n className={cn(\n \"hawa-font-mono hawa-w-full hawa-max-w-[52px] hawa-rounded-inner hawa-p-1 hawa-py-0.5 hawa-text-center hawa-text-[0.75rem]\"\n )}\n >\n {fileName}\n </div>\n </div>\n )}\n {tabs && (\n <div\n className={cn(\n // hawa-bg-gray-300 dark:hawa-bg-red-600\n \"hawa-flex hawa-flex-row hawa-gap-2 hawa-rounded-t hawa-p-1 hawa-bg-primary/15 hawa-pb-0 hawa-font-mono hawa-text-foreground\",\n tabs && fileName && \"hawa-rounded-t-none\"\n )}\n >\n {tabs.map((tab, i) => (\n <div\n key={i}\n className={cn(\n selectedTab === i\n ? \" hawa-border-b-2 hawa-border-primary\"\n : \"hawa-bg-transparent\"\n )}\n >\n <div\n onClick={() => setSelectedTab(i)}\n className={cn(\n \"hawa-mb-0.5 hawa-w-full hawa-max-w-[52px] hawa-cursor-pointer hawa-rounded-inner hawa-p-2 hawa-py-0.5 hawa-text-center hawa-text-[0.7rem] hawa-transition-all hover:hawa-bg-muted-foreground/20\"\n )}\n >\n {tab.title}\n </div>\n </div>\n ))}\n </div>\n )}\n\n <div\n className={cn(\n \"hawa-flex hawa-w-full hawa-flex-row hawa-items-start hawa-justify-between hawa-border hawa-bg-gray-700 hawa-p-0 hawa-text-left hawa-text-sm sm:hawa-text-base \",\n tabs || fileName\n ? \"hawa-rounded-b hawa-rounded-t-none\"\n : \"hawa-rounded\"\n )}\n >\n <Highlight\n theme={theme}\n code={tabs ? tabs[selectedTab].code : code || \"\"}\n language={language}\n >\n {({ className, style, tokens, getLineProps, getTokenProps }) => (\n <pre className=\"hawa-min-h-[37.75px] hawa-w-full hawa-overflow-auto hawa-p-4 hawa-font-mono hawa-text-foreground\">\n {tokens.map((line, i) => (\n <div key={i} {...getLineProps({ line })}>\n {props.lineNumbers && (\n <span className=\"hawa-mr-4\">{i + 1}</span>\n )}\n {line.map((token, key) => (\n <span key={key} {...getTokenProps({ token })} />\n ))}\n </div>\n ))}\n </pre>\n )}\n </Highlight>\n\n {/* <code\n className={cn(\n \"language-jsx\",\n \"hawa-flex hawa-min-h-[37.75px] hawa-w-full hawa-flex-row hawa-justify-start hawa-overflow-auto hawa-p-4 hawa-text-foreground hawa-bg-background/70 hawa-font-mono\"\n )}\n >\n {tabs ? tabs[selectedTab].code : code}\n </code> */}\n\n <div className=\"hawa-flex hawa-w-fit hawa-flex-row hawa-items-center hawa-gap-2 hawa-p-2\">\n <Tooltip\n open={clipboard.copied}\n side=\"left\"\n content={<div>Copied!</div>}\n triggerProps={{\n asChild: true\n }}\n >\n <Button\n size=\"icon\"\n onClick={() =>\n clipboard.copy(tabs ? tabs[selectedTab].code : code)\n }\n variant=\"outline\"\n className=\"hawa-text-gray-200 hawa-opacity-50 \"\n >\n <svg\n aria-label=\"Copy\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n height=\"1em\"\n width=\"1em\"\n >\n <rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"></rect>\n <path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"></path>\n </svg>\n </Button>\n </Tooltip>\n </div>\n </div>\n </div>\n );\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\ntype Palette = {\n name: string;\n colors: {\n [key: number]: string;\n };\n};\ntype Rgb = {\n r: number;\n g: number;\n b: number;\n};\nfunction hexToRgb(hex: string): Rgb | null {\n const sanitizedHex = hex.replaceAll(\"##\", \"#\");\n const colorParts = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(\n sanitizedHex\n );\n\n if (!colorParts) {\n return null;\n }\n\n const [, r, g, b] = colorParts;\n\n return {\n r: parseInt(r, 16),\n g: parseInt(g, 16),\n b: parseInt(b, 16)\n } as Rgb;\n}\n\nfunction rgbToHex(r: number, g: number, b: number): string {\n const toHex = (c: number) => `0${c.toString(16)}`.slice(-2);\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n}\n\nexport function getTextColor(color: string): \"#FFF\" | \"#333\" {\n const rgbColor = hexToRgb(color);\n\n if (!rgbColor) {\n return \"#333\";\n }\n\n const { r, g, b } = rgbColor;\n const luma = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n\n return luma < 120 ? \"#FFF\" : \"#333\";\n}\n\nfunction lighten(hex: string, intensity: number): string {\n const color = hexToRgb(`#${hex}`);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r + (255 - color.r) * intensity);\n const g = Math.round(color.g + (255 - color.g) * intensity);\n const b = Math.round(color.b + (255 - color.b) * intensity);\n\n return rgbToHex(r, g, b);\n}\n\nfunction darken(hex: string, intensity: number): string {\n const color = hexToRgb(hex);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r * intensity);\n const g = Math.round(color.g * intensity);\n const b = Math.round(color.b * intensity);\n\n return rgbToHex(r, g, b);\n}\nconst parseColor = (color: any) => {\n if (color.startsWith(\"#\")) {\n // Convert hex to RGB\n let r = parseInt(color.slice(1, 3), 16);\n let g = parseInt(color.slice(3, 5), 16);\n let b = parseInt(color.slice(5, 7), 16);\n return [r, g, b];\n } else if (color.startsWith(\"rgb\")) {\n // Extract RGB values from rgb() format\n return color.match(/\\d+/g).map(Number);\n }\n // Default to white if format is unrecognized\n return [255, 255, 255];\n};\nexport const calculateLuminance = (color: any) => {\n const [r, g, b] = parseColor(color)?.map((c: any) => {\n c /= 255;\n return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;\n });\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n};\n\nfunction getPallette(baseColor: string): Palette {\n const name = baseColor;\n\n const response: Palette = {\n name,\n colors: {\n 500: `#${baseColor}`.replace(\"##\", \"#\")\n }\n };\n\n const intensityMap: {\n [key: number]: number;\n } = {\n 50: 0.95,\n 100: 0.9,\n 200: 0.75,\n 300: 0.6,\n 400: 0.3,\n 600: 0.9,\n 700: 0.75,\n 800: 0.6,\n 900: 0.49\n };\n\n [50, 100, 200, 300, 400].forEach((level) => {\n response.colors[level] = lighten(baseColor, intensityMap[level]);\n });\n [600, 700, 800, 900].forEach((level) => {\n response.colors[level] = darken(baseColor, intensityMap[level]);\n });\n\n return response as Palette;\n}\n\nexport { getPallette };\n\n// const hexToRgb = (hex) => {\n// let d = hex?.split(\"#\")[1];\n// var aRgbHex = d?.match(/.{1,2}/g);\n// var aRgb = [\n// parseInt(aRgbHex[0], 16),\n// parseInt(aRgbHex[1], 16),\n// parseInt(aRgbHex[2], 16)\n// ];\n// return aRgb;\n// };\n// const getTextColor = (backColor) => {\n// let rgbArray = hexToRgb(backColor);\n// if (rgbArray[0] * 0.299 + rgbArray[1] * 0.587 + rgbArray[2] * 0.114 > 186) {\n// return \"#000000\";\n// } else {\n// return \"#ffffff\";\n// }\n// };\n// const replaceAt = function (string, index, replacement) {\n// // if (replacement == \"\" || replacement == \" \") {\n// // return (\n// // string.substring(0, index) +\n// // string.substring(index + replacement.length )\n// // );\n// // }\n// const replaced = string.substring(0, index) + replacement + string.substring(index + 1)\n// return replaced\n// };\n\n// export { hexToRgb, getTextColor, replaceAt };\n","import { useState } from \"react\";\n\nexport function useClipboard({ timeout = 2000 } = {}): {\n copy: (value: any) => void;\n reset: () => void;\n error: Error | null;\n copied: boolean;\n} {\n const [error, setError] = useState<Error | null>(null);\n const [copied, setCopied] = useState<boolean>(false);\n const [copyTimeout, setCopyTimeout] = useState<NodeJS.Timeout | null>(null);\n\n const handleCopyResult = (value: boolean) => {\n clearTimeout(copyTimeout as NodeJS.Timeout | undefined);\n setCopyTimeout(setTimeout(() => setCopied(false), timeout));\n setCopied(value);\n };\n\n const copy = (valueToCopy: any) => {\n if (\"clipboard\" in navigator) {\n navigator.clipboard\n .writeText(valueToCopy)\n .then(() => handleCopyResult(true))\n .catch((err) => setError(err));\n } else {\n setError(new Error(\"useClipboard: navigator.clipboard is not supported\"));\n }\n };\n\n const reset = () => {\n setCopied(false);\n setError(null);\n clearTimeout(copyTimeout as NodeJS.Timeout | undefined);\n };\n\n return { copy, reset, error, copied };\n}\n","import * as React from \"react\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@util/index\";\nimport { Loading } from \"../loading/Loading\";\n\nconst buttonVariants = cva(\n \"hawa-inline-flex hawa-items-center hawa-select-none hawa-rounded-md hawa-text-sm hawa-font-medium hawa-ring-offset-background hawa-transition-colors focus-visible:hawa-outline-none focus-visible:hawa-ring-2 focus-visible:hawa-ring-ring focus-visible:hawa-ring-offset-2 disabled:hawa-pointer-events-none disabled:hawa-opacity-50\",\n {\n variants: {\n variant: {\n default:\n \"hawa-bg-primary hawa-text-primary-foreground hover:hawa-bg-primary/90\",\n light: \"hawa-bg-primary/20 hawa-text-primary hover:hawa-bg-primary/40\",\n destructive:\n \"hawa-bg-destructive hawa-text-destructive-foreground hover:hawa-bg-destructive/90\",\n outline:\n \"hawa-border hawa-border-input hawa-bg-transparent hover:hawa-bg-accent hover:hawa-text-accent-foreground\",\n secondary:\n \"hawa-bg-secondary hawa-text-secondary-foreground hover:hawa-bg-secondary/80\",\n ghost: \"hover:hawa-bg-accent hover:hawa-text-accent-foreground\",\n link: \"hawa-text-primary hawa-underline-offset-4 hover:hawa-underline\",\n combobox: \"hawa-bg-background hawa-border\",\n neoBrutalism: \"neo-brutalism\"\n // \"hawa-cursor-pointer hawa-transition-all hawa-uppercase hawa-font-mono dark:hawa-bg-black hawa-font-bold hawa-py-2 hawa-px-4 hawa-rounded hawa-border-2 hawa-border-primary hawa-shadow-color-primary hawa-transition-[hawa-transform_50ms, hawa-box-shadow_50ms] active:hawa-translate-x-0.5 active:hawa-translate-y-0.5 active:hawa-shadow-color-primary-active shadow-color-primary active:shadow-color-primary-active\",\n },\n size: {\n default: \"hawa-h-10 hawa-px-4 hawa-py-2\",\n heightless: \"hawa-px-4 hawa-py-4\",\n xs: \"hawa-h-fit hawa-min-h-[25px] hawa-py-1 hawa-text-[10px] hawa-px-2 \",\n sm: \"hawa-h-9 hawa-text-[11px] hawa-rounded-md hawa-px-3\",\n lg: \"hawa-h-11 hawa-rounded-md hawa-px-8\",\n xl: \"hawa-h-14 hawa-rounded-md hawa-px-10\",\n icon: \"hawa-h-10 hawa-w-10\",\n smallIcon: \"hawa-h-7 hawa-w-7\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\"\n }\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n centered?: boolean;\n isLoading?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n asChild = false,\n centered = true,\n isLoading,\n children,\n ...props\n },\n ref\n ) => {\n const Comp = \"button\";\n\n // Determine the color for the HawaLoading component based on the variant\n const loadingColor =\n variant === \"outline\" || variant === \"ghost\" || variant === \"neoBrutalism\"\n ? \"hawa-bg-primary\"\n : \"hawa-bg-primary-foreground\";\n\n return (\n <Comp\n className={cn(\n buttonVariants({ variant, size, className }),\n centered && \"hawa-justify-center\",\n // \"hawa-bg-red-500\"\n )}\n ref={ref}\n {...props}\n >\n {isLoading ? (\n <Loading\n design={\n size === \"icon\" || size === \"smallIcon\" ? \"spinner\" : \"dots-pulse\"\n }\n themeMode={variant === \"outline\" ? \"light\" : \"dark\"}\n color={loadingColor}\n size={size === \"sm\" || size === \"xs\" ? \"xs\" : \"button\"}\n />\n ) : (\n children\n )}\n </Comp>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import React, { FC } from \"react\";\n\nimport { cn } from \"@util/index\";\n\ntype LoadingTypes = {\n /** Specifies the size of the loading component.*/\n size?: \"button\" | \"xs\" | \"sm\" | \"normal\" | \"lg\" | \"xl\";\n /** Determines the design of the loading animation.*/\n design?:\n | \"spinner\"\n | \"dots-bounce\"\n | \"dots-pulse\"\n | \"pulse\"\n | \"spinner-dots\"\n | \"squircle\"\n | \"square\"\n | \"progress\"\n | \"orbit\";\n /** Specifies the color of the loading component. By default it will inherit the value of <span className=\"inline-code\">--primary</span> global CSS variable*/\n color?: string;\n className?: string;\n themeMode?: \"dark\" | \"light\";\n};\n\nexport const Loading: FC<LoadingTypes> = ({\n design = \"spinner\",\n size = \"sm\",\n themeMode = \"light\",\n color,\n ...props\n}) => {\n let sizeStyles = {\n button: \"hawa-h-4 hawa-w-4\",\n xs: \"hawa-h-1 hawa-w-1\",\n sm: \"hawa-h-6 hawa-w-6\",\n normal: \"hawa-h-8 hawa-w-8\",\n lg: \"hawa-h-14 hawa-w-14\",\n xl: \"hawa-h-24 hawa-w-24\"\n };\n\n let animationStyles: any = {\n pulse: \"hawa-animate-in hawa-fade-in hawa-duration-1000\",\n bounce: \"hawa-animate-bounce\"\n };\n switch (design.split(\"-\")[0]) {\n case \"dots\":\n return (\n <div\n className={cn(\"hawa-flex hawa-flex-row hawa-gap-2\", props.className)}\n >\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-100 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-200 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-300 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n </div>\n );\n case \"square\":\n return (\n <svg\n className={cn(\"squircle-container\", sizeStyles[size])}\n viewBox=\"0 0 35 35\"\n height=\"35\"\n width=\"35\"\n >\n <rect\n className=\"squircle-track\"\n x=\"2.5\"\n y=\"2.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n width=\"32.5\"\n height=\"32.5\"\n />\n <rect\n className=\"square-car\"\n x=\"2.5\"\n y=\"2.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n width=\"32.5\"\n height=\"32.5\"\n pathLength=\"100\"\n />\n </svg>\n );\n case \"squircle\":\n return (\n <svg\n className={cn(\"squircle-container\", sizeStyles[size])}\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 37 37\"\n height=\"37\"\n width=\"37\"\n preserveAspectRatio=\"xMidYMid meet\"\n >\n <path\n className=\"squircle-track\"\n fill=\"none\"\n strokeWidth=\"5\"\n pathLength=\"100\"\n d=\"M0.37 18.5 C0.37 5.772 5.772 0.37 18.5 0.37 S36.63 5.772 36.63 18.5 S31.228 36.63 18.5 36.63 S0.37 31.228 0.37 18.5\"\n ></path>\n <path\n className=\"squircle-car\"\n fill=\"none\"\n strokeWidth=\"5\"\n pathLength=\"100\"\n d=\"M0.37 18.5 C0.37 5.772 5.772 0.37 18.5 0.37 S36.63 5.772 36.63 18.5 S31.228 36.63 18.5 36.63 S0.37 31.228 0.37 18.5\"\n ></path>\n </svg>\n );\n case \"progress\":\n return <div className=\"progress-loading\"></div>;\n case \"orbit\":\n return <div className=\"orbit-container\"></div>;\n\n default:\n return (\n <svg\n className={cn(\"circle-container\", sizeStyles[size])}\n viewBox=\"0 0 40 40\"\n height=\"40\"\n width=\"40\"\n >\n <circle\n className={cn(\"circle-track\", {\n \"hawa-stroke-primary-foreground\": themeMode === \"dark\",\n \"hawa-stroke-primary\": themeMode === \"light\"\n })}\n cx=\"20\"\n cy=\"20\"\n r=\"17.5\"\n pathLength=\"100\"\n strokeWidth=\"5px\"\n fill=\"none\"\n />\n <circle\n className={cn(\"circle-car\", {\n \"hawa-stroke-primary-foreground\": themeMode === \"dark\",\n \"hawa-stroke-primary\": themeMode === \"light\"\n })}\n cx=\"20\"\n cy=\"20\"\n r=\"17.5\"\n pathLength=\"100\"\n strokeWidth=\"5px\"\n fill=\"none\"\n />\n </svg>\n );\n // return (\n // <div\n // className={cn(\n // \"hawa-flex hawa-flex-row hawa-gap-x-3\",\n // props.className\n // )}\n // >\n // <div aria-label=\"Loading...\" role=\"status\">\n // <svg\n // className={cn(sizeStyles[size], \"hawa-animate-spin\")}\n // viewBox=\"3 3 18 18\"\n // >\n // <path\n // className=\"hawa-fill-primary/20\"\n // d=\"M12 5C8.13401 5 5 8.13401 5 12C5 15.866 8.13401 19 12 19C15.866 19 19 15.866 19 12C19 8.13401 15.866 5 12 5ZM3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12Z\"\n // ></path>\n // <path\n // className={color ? color : \"hawa-fill-primary\"}\n // d=\"M16.9497 7.05015C14.2161 4.31648 9.78392 4.31648 7.05025 7.05015C6.65973 7.44067 6.02656 7.44067 5.63604 7.05015C5.24551 6.65962 5.24551 6.02646 5.63604 5.63593C9.15076 2.12121 14.8492 2.12121 18.364 5.63593C18.7545 6.02646 18.7545 6.65962 18.364 7.05015C17.9734 7.44067 17.3403 7.44067 16.9497 7.05015Z\"\n // ></path>\n // </svg>\n // </div>\n // </div>\n // );\n }\n};\n","import React from \"react\";\n\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { PositionType } from \"@_types/commonTypes\";\n\nimport { cn } from \"@util/index\";\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"hawa-z-50 hawa-overflow-hidden hawa-rounded-md hawa-border hawa-bg-popover hawa-px-3 hawa-py-1.5 hawa-text-sm hawa-text-popover-foreground hawa-shadow-md hawa-animate-in hawa-fade-in-0 hawa-zoom-in-95 data-[state=closed]:hawa-animate-out data-[state=closed]:hawa-fade-out-0 data-[state=closed]:hawa-zoom-out-95 data-[side=bottom]:hawa-slide-in-from-top-2 data-[side=left]:hawa-slide-in-from-right-2 data-[side=right]:hawa-slide-in-from-left-2 data-[side=top]:hawa-slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nconst TooltipArrow = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Arrow>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Arrow>\n>(({ className, ...props }, ref) => (\n <TooltipPrimitive.Arrow ref={ref} className={cn(className)} {...props} />\n));\nTooltipArrow.displayName = TooltipPrimitive.Arrow.displayName;\n\ntype TooltipTypes = {\n /** Controls the open state of the tooltip. */\n open?: any;\n /** Specifies the side where the tooltip will appear. */\n side?: PositionType;\n /** Content to be displayed within the tooltip. */\n content?: any;\n /** Elements to which the tooltip is anchored. */\n children?: any;\n /** Sets the default open state of the tooltip. */\n defaultOpen?: any;\n /** Event handler for open state changes. */\n onOpenChange?: any;\n /** Duration of the delay before the tooltip appears. */\n delayDuration?: any;\n triggerProps?: TooltipPrimitive.TooltipTriggerProps;\n contentProps?: TooltipPrimitive.TooltipContentProps;\n providerProps?: TooltipPrimitive.TooltipProviderProps;\n};\n\nconst Tooltip: React.FunctionComponent<TooltipTypes> = ({\n side,\n open,\n content,\n children,\n defaultOpen,\n onOpenChange,\n triggerProps,\n contentProps,\n providerProps,\n delayDuration = 300,\n ...props\n}) => {\n return (\n <TooltipPrimitive.TooltipProvider\n delayDuration={delayDuration}\n {...providerProps}\n >\n <TooltipPrimitive.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n {...props}\n >\n <TooltipPrimitive.Trigger {...triggerProps}>\n {children}\n </TooltipPrimitive.Trigger>\n <TooltipContent side={side} align=\"center\" {...contentProps}>\n {content}\n </TooltipContent>\n </TooltipPrimitive.Root>\n </TooltipPrimitive.TooltipProvider>\n );\n};\n\nexport { Tooltip };\n"],"mappings":"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","names":["import_react","React","import_react","React","import_react","React","React","className"]}
|
1
|
+
{"version":3,"sources":["../../elements/codeBlock/index.ts","../../elements/codeBlock/CodeBlock.tsx","../../util/index.ts","../../hooks/useClipboard.ts","../../elements/button/Button.tsx","../../elements/loading/Loading.tsx","../../elements/tooltip/Tooltip.tsx"],"sourcesContent":["export * from \"./CodeBlock\";\n","import React, { FC, useEffect, useState } from \"react\";\n\nimport { cn } from \"@util/index\";\nimport {\n Highlight,\n HighlightProps,\n Language,\n themes,\n Prism\n} from \"prism-react-renderer\";\n\nimport { useClipboard } from \"../../hooks/useClipboard\";\nimport { Button } from \"../button\";\nimport { Tooltip } from \"../tooltip\";\n\n(typeof global !== \"undefined\" ? global : window).Prism = Prism;\nrequire(\"prismjs/components/prism-bash\");\n\ntype CodeBlockTypes = {\n /** Specifies the programming language for syntax highlighting.*/\n language?: HighlightProps[\"language\"];\n /** Defines the width of the code block.*/\n width?: \"full\" | \"md\" | \"sm\";\n /** Array of tabs each containing a title and code content.*/\n tabs?: { title: string; code: string }[];\n /** Name of the file being displayed. */\n fileName?: string;\n /** Code content to be displayed within the code block.*/\n code?: string;\n lineNumbers?: boolean;\n forcedDarkMode?: boolean;\n className?: string;\n};\n\nexport const CodeBlock: FC<CodeBlockTypes> = ({\n tabs,\n code,\n fileName,\n className,\n language = \"javascript\", // default to JavaScript if no language is provided\n width = \"full\",\n ...props\n}) => {\n const clipboard = useClipboard();\n const [selectedTab, setSelectedTab] = useState(0);\n // const isDarkMode =\n // props.forcedDarkMode ||\n // document.body.classList.contains(\"dark\") ||\n // document.documentElement.classList.contains(\"dark\");\n // const theme = isDarkMode ? themes.vsDark : themes.vsLight;\n const theme = themes.oceanicNext;\n\n let widthStyles = {\n full: \"hawa-w-full\",\n md: \"hawa-w-full hawa-max-w-md\",\n sm: \"hawa-w-full hawa-max-w-sm\",\n xs: \"hawa-w-full hawa-max-w-xs\"\n };\n\n return (\n <div\n className={cn(\n widthStyles[width],\n \"hawa-w-full hawa-flex-col hawa-items-center hawa-rounded hawa-bg-background hawa-text-left hawa-my-2 hawa-text-white sm:hawa-text-base\",\n className\n )}\n >\n {fileName && (\n <div\n className={cn(\n \"hawa-flex hawa-flex-row hawa-gap-2 hawa-rounded-t hawa-p-2 hawa-py-0.5 hawa-pb-0 hawa-font-mono hawa-text-foreground\",\n fileName && tabs ? \"hawa-bg-primary/10\" : \"hawa-bg-primary/15\"\n )}\n >\n <div\n className={cn(\n \"hawa-font-mono hawa-w-full hawa-max-w-[52px] hawa-rounded-inner hawa-p-1 hawa-py-0.5 hawa-text-center hawa-text-[0.75rem]\"\n )}\n >\n {fileName}\n </div>\n </div>\n )}\n {tabs && (\n <div\n className={cn(\n // hawa-bg-gray-300 dark:hawa-bg-red-600\n \"hawa-flex hawa-flex-row hawa-gap-2 hawa-rounded-t hawa-p-1 hawa-bg-primary/15 hawa-pb-0 hawa-font-mono hawa-text-foreground\",\n tabs && fileName && \"hawa-rounded-t-none\"\n )}\n >\n {tabs.map((tab, i) => (\n <div\n key={i}\n className={cn(\n selectedTab === i\n ? \" hawa-border-b-2 hawa-border-primary\"\n : \"hawa-bg-transparent\"\n )}\n >\n <div\n onClick={() => setSelectedTab(i)}\n className={cn(\n \"hawa-mb-0.5 hawa-w-full hawa-max-w-[52px] hawa-cursor-pointer hawa-rounded-inner hawa-p-2 hawa-py-0.5 hawa-text-center hawa-text-[0.7rem] hawa-transition-all hover:hawa-bg-muted-foreground/20\"\n )}\n >\n {tab.title}\n </div>\n </div>\n ))}\n </div>\n )}\n\n <div\n className={cn(\n \"hawa-flex hawa-w-full hawa-flex-row hawa-items-start hawa-justify-between hawa-border hawa-bg-gray-700 hawa-p-0 hawa-text-left hawa-text-sm sm:hawa-text-base \",\n tabs || fileName\n ? \"hawa-rounded-b hawa-rounded-t-none\"\n : \"hawa-rounded\"\n )}\n >\n <Highlight\n theme={theme}\n code={tabs ? tabs[selectedTab].code : code || \"\"}\n language={language}\n >\n {({ className, style, tokens, getLineProps, getTokenProps }) => (\n <pre className=\"hawa-min-h-[37.75px] hawa-w-full hawa-overflow-auto hawa-p-4 hawa-font-mono hawa-text-foreground\">\n {tokens.map((line, i) => (\n <div key={i} {...getLineProps({ line })}>\n {props.lineNumbers && (\n <span className=\"hawa-mr-4\">{i + 1}</span>\n )}\n {line.map((token, key) => (\n <span key={key} {...getTokenProps({ token })} />\n ))}\n </div>\n ))}\n </pre>\n )}\n </Highlight>\n\n {/* <code\n className={cn(\n \"language-jsx\",\n \"hawa-flex hawa-min-h-[37.75px] hawa-w-full hawa-flex-row hawa-justify-start hawa-overflow-auto hawa-p-4 hawa-text-foreground hawa-bg-background/70 hawa-font-mono\"\n )}\n >\n {tabs ? tabs[selectedTab].code : code}\n </code> */}\n\n <div className=\"hawa-flex hawa-w-fit hawa-flex-row hawa-items-center hawa-gap-2 hawa-p-2\">\n <Tooltip\n open={clipboard.copied}\n side=\"left\"\n content={<div>Copied!</div>}\n triggerProps={{\n asChild: true\n }}\n >\n <Button\n size=\"icon\"\n onClick={() =>\n clipboard.copy(tabs ? tabs[selectedTab].code : code)\n }\n variant=\"outline\"\n className=\"hawa-text-gray-200 hawa-opacity-50 \"\n >\n <svg\n aria-label=\"Copy\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n height=\"1em\"\n width=\"1em\"\n >\n <rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"></rect>\n <path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"></path>\n </svg>\n </Button>\n </Tooltip>\n </div>\n </div>\n </div>\n );\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\ntype Palette = {\n name: string;\n colors: {\n [key: number]: string;\n };\n};\ntype Rgb = {\n r: number;\n g: number;\n b: number;\n};\nfunction hexToRgb(hex: string): Rgb | null {\n const sanitizedHex = hex.replaceAll(\"##\", \"#\");\n const colorParts = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(\n sanitizedHex\n );\n\n if (!colorParts) {\n return null;\n }\n\n const [, r, g, b] = colorParts;\n\n return {\n r: parseInt(r, 16),\n g: parseInt(g, 16),\n b: parseInt(b, 16)\n } as Rgb;\n}\n\nfunction rgbToHex(r: number, g: number, b: number): string {\n const toHex = (c: number) => `0${c.toString(16)}`.slice(-2);\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n}\n\nexport function getTextColor(color: string): \"#FFF\" | \"#333\" {\n const rgbColor = hexToRgb(color);\n\n if (!rgbColor) {\n return \"#333\";\n }\n\n const { r, g, b } = rgbColor;\n const luma = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n\n return luma < 120 ? \"#FFF\" : \"#333\";\n}\n\nfunction lighten(hex: string, intensity: number): string {\n const color = hexToRgb(`#${hex}`);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r + (255 - color.r) * intensity);\n const g = Math.round(color.g + (255 - color.g) * intensity);\n const b = Math.round(color.b + (255 - color.b) * intensity);\n\n return rgbToHex(r, g, b);\n}\n\nfunction darken(hex: string, intensity: number): string {\n const color = hexToRgb(hex);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r * intensity);\n const g = Math.round(color.g * intensity);\n const b = Math.round(color.b * intensity);\n\n return rgbToHex(r, g, b);\n}\nconst parseColor = (color: any) => {\n if (color.startsWith(\"#\")) {\n // Convert hex to RGB\n let r = parseInt(color.slice(1, 3), 16);\n let g = parseInt(color.slice(3, 5), 16);\n let b = parseInt(color.slice(5, 7), 16);\n return [r, g, b];\n } else if (color.startsWith(\"rgb\")) {\n // Extract RGB values from rgb() format\n return color.match(/\\d+/g).map(Number);\n }\n // Default to white if format is unrecognized\n return [255, 255, 255];\n};\nexport const calculateLuminance = (color: any) => {\n const [r, g, b] = parseColor(color)?.map((c: any) => {\n c /= 255;\n return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;\n });\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n};\n\nfunction getPallette(baseColor: string): Palette {\n const name = baseColor;\n\n const response: Palette = {\n name,\n colors: {\n 500: `#${baseColor}`.replace(\"##\", \"#\")\n }\n };\n\n const intensityMap: {\n [key: number]: number;\n } = {\n 50: 0.95,\n 100: 0.9,\n 200: 0.75,\n 300: 0.6,\n 400: 0.3,\n 600: 0.9,\n 700: 0.75,\n 800: 0.6,\n 900: 0.49\n };\n\n [50, 100, 200, 300, 400].forEach((level) => {\n response.colors[level] = lighten(baseColor, intensityMap[level]);\n });\n [600, 700, 800, 900].forEach((level) => {\n response.colors[level] = darken(baseColor, intensityMap[level]);\n });\n\n return response as Palette;\n}\n\nexport { getPallette };\n\n// const hexToRgb = (hex) => {\n// let d = hex?.split(\"#\")[1];\n// var aRgbHex = d?.match(/.{1,2}/g);\n// var aRgb = [\n// parseInt(aRgbHex[0], 16),\n// parseInt(aRgbHex[1], 16),\n// parseInt(aRgbHex[2], 16)\n// ];\n// return aRgb;\n// };\n// const getTextColor = (backColor) => {\n// let rgbArray = hexToRgb(backColor);\n// if (rgbArray[0] * 0.299 + rgbArray[1] * 0.587 + rgbArray[2] * 0.114 > 186) {\n// return \"#000000\";\n// } else {\n// return \"#ffffff\";\n// }\n// };\n// const replaceAt = function (string, index, replacement) {\n// // if (replacement == \"\" || replacement == \" \") {\n// // return (\n// // string.substring(0, index) +\n// // string.substring(index + replacement.length )\n// // );\n// // }\n// const replaced = string.substring(0, index) + replacement + string.substring(index + 1)\n// return replaced\n// };\n\n// export { hexToRgb, getTextColor, replaceAt };\n","import { useState } from \"react\";\n\nexport function useClipboard({ timeout = 2000 } = {}): {\n copy: (value: any) => void;\n reset: () => void;\n error: Error | null;\n copied: boolean;\n} {\n const [error, setError] = useState<Error | null>(null);\n const [copied, setCopied] = useState<boolean>(false);\n const [copyTimeout, setCopyTimeout] = useState<NodeJS.Timeout | null>(null);\n\n const handleCopyResult = (value: boolean) => {\n clearTimeout(copyTimeout as NodeJS.Timeout | undefined);\n setCopyTimeout(setTimeout(() => setCopied(false), timeout));\n setCopied(value);\n };\n\n const copy = (valueToCopy: any) => {\n if (\"clipboard\" in navigator) {\n navigator.clipboard\n .writeText(valueToCopy)\n .then(() => handleCopyResult(true))\n .catch((err) => setError(err));\n } else {\n setError(new Error(\"useClipboard: navigator.clipboard is not supported\"));\n }\n };\n\n const reset = () => {\n setCopied(false);\n setError(null);\n clearTimeout(copyTimeout as NodeJS.Timeout | undefined);\n };\n\n return { copy, reset, error, copied };\n}\n","import * as React from \"react\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@util/index\";\nimport { Loading } from \"../loading/Loading\";\n\nconst buttonVariants = cva(\n \"hawa-inline-flex hawa-items-center hawa-select-none hawa-rounded-md hawa-text-sm hawa-font-medium hawa-ring-offset-background hawa-transition-colors focus-visible:hawa-outline-none focus-visible:hawa-ring-2 focus-visible:hawa-ring-ring focus-visible:hawa-ring-offset-2 disabled:hawa-pointer-events-none disabled:hawa-opacity-50\",\n {\n variants: {\n variant: {\n default:\n \"hawa-bg-primary hawa-text-primary-foreground hover:hawa-bg-primary/90\",\n light: \"hawa-bg-primary/20 hawa-text-primary hover:hawa-bg-primary/40\",\n destructive:\n \"hawa-bg-destructive hawa-text-destructive-foreground hover:hawa-bg-destructive/90\",\n outline:\n \"hawa-border hawa-border-input hawa-bg-transparent hover:hawa-bg-accent hover:hawa-text-accent-foreground\",\n secondary:\n \"hawa-bg-secondary hawa-text-secondary-foreground hover:hawa-bg-secondary/80\",\n ghost: \"hover:hawa-bg-accent hover:hawa-text-accent-foreground\",\n link: \"hawa-text-primary hawa-underline-offset-4 hover:hawa-underline\",\n combobox: \"hawa-bg-background hawa-border\",\n neoBrutalism: \"neo-brutalism\"\n // \"hawa-cursor-pointer hawa-transition-all hawa-uppercase hawa-font-mono dark:hawa-bg-black hawa-font-bold hawa-py-2 hawa-px-4 hawa-rounded hawa-border-2 hawa-border-primary hawa-shadow-color-primary hawa-transition-[hawa-transform_50ms, hawa-box-shadow_50ms] active:hawa-translate-x-0.5 active:hawa-translate-y-0.5 active:hawa-shadow-color-primary-active shadow-color-primary active:shadow-color-primary-active\",\n },\n size: {\n default: \"hawa-h-10 hawa-px-4 hawa-py-2\",\n heightless: \"hawa-px-4 hawa-py-4\",\n xs: \"hawa-h-fit hawa-min-h-[25px] hawa-py-1 hawa-text-[10px] hawa-px-2 \",\n sm: \"hawa-h-9 hawa-text-[11px] hawa-rounded-md hawa-px-3\",\n lg: \"hawa-h-11 hawa-rounded-md hawa-px-8\",\n xl: \"hawa-h-14 hawa-rounded-md hawa-px-10\",\n icon: \"hawa-h-10 hawa-w-10\",\n smallIcon: \"hawa-h-7 hawa-w-7\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\"\n }\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n centered?: boolean;\n isLoading?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n asChild = false,\n centered = true,\n isLoading,\n children,\n ...props\n },\n ref\n ) => {\n const Comp = \"button\";\n\n // Determine the color for the HawaLoading component based on the variant\n const loadingColor =\n variant === \"outline\" || variant === \"ghost\" || variant === \"neoBrutalism\"\n ? \"hawa-bg-primary\"\n : \"hawa-bg-primary-foreground\";\n\n return (\n <Comp\n className={cn(\n buttonVariants({ variant, size, className }),\n centered && \"hawa-justify-center\",\n // \"hawa-bg-red-500\"\n )}\n ref={ref}\n {...props}\n >\n {isLoading ? (\n <Loading\n design={\n size === \"icon\" || size === \"smallIcon\" ? \"spinner\" : \"dots-pulse\"\n }\n themeMode={variant === \"outline\" ? \"light\" : \"dark\"}\n color={loadingColor}\n size={size === \"sm\" || size === \"xs\" ? \"xs\" : \"button\"}\n />\n ) : (\n children\n )}\n </Comp>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import React, { FC } from \"react\";\n\nimport { cn } from \"@util/index\";\n\ntype LoadingTypes = {\n /** Specifies the size of the loading component.*/\n size?: \"button\" | \"xs\" | \"sm\" | \"normal\" | \"lg\" | \"xl\";\n /** Determines the design of the loading animation.*/\n design?:\n | \"spinner\"\n | \"dots-bounce\"\n | \"dots-pulse\"\n | \"pulse\"\n | \"spinner-dots\"\n | \"squircle\"\n | \"square\"\n | \"progress\"\n | \"orbit\";\n /** Specifies the color of the loading component. By default it will inherit the value of <span className=\"inline-code\">--primary</span> global CSS variable*/\n color?: string;\n className?: string;\n themeMode?: \"dark\" | \"light\";\n};\n\nexport const Loading: FC<LoadingTypes> = ({\n design = \"spinner\",\n size = \"sm\",\n themeMode = \"light\",\n color,\n ...props\n}) => {\n let sizeStyles = {\n button: \"hawa-h-4 hawa-w-4\",\n xs: \"hawa-h-1 hawa-w-1\",\n sm: \"hawa-h-6 hawa-w-6\",\n normal: \"hawa-h-8 hawa-w-8\",\n lg: \"hawa-h-14 hawa-w-14\",\n xl: \"hawa-h-24 hawa-w-24\"\n };\n\n let animationStyles: any = {\n pulse: \"hawa-animate-in hawa-fade-in hawa-duration-1000\",\n bounce: \"hawa-animate-bounce\"\n };\n switch (design.split(\"-\")[0]) {\n case \"dots\":\n return (\n <div\n className={cn(\"hawa-flex hawa-flex-row hawa-gap-2\", props.className)}\n >\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-100 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-200 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-300 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n </div>\n );\n case \"square\":\n return (\n <svg\n className={cn(\"squircle-container\", sizeStyles[size])}\n viewBox=\"0 0 35 35\"\n height=\"35\"\n width=\"35\"\n >\n <rect\n className=\"squircle-track\"\n x=\"2.5\"\n y=\"2.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n width=\"32.5\"\n height=\"32.5\"\n />\n <rect\n className=\"square-car\"\n x=\"2.5\"\n y=\"2.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n width=\"32.5\"\n height=\"32.5\"\n pathLength=\"100\"\n />\n </svg>\n );\n case \"squircle\":\n return (\n <svg\n className={cn(\"squircle-container\", sizeStyles[size])}\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 37 37\"\n height=\"37\"\n width=\"37\"\n preserveAspectRatio=\"xMidYMid meet\"\n >\n <path\n className=\"squircle-track\"\n fill=\"none\"\n strokeWidth=\"5\"\n pathLength=\"100\"\n d=\"M0.37 18.5 C0.37 5.772 5.772 0.37 18.5 0.37 S36.63 5.772 36.63 18.5 S31.228 36.63 18.5 36.63 S0.37 31.228 0.37 18.5\"\n ></path>\n <path\n className=\"squircle-car\"\n fill=\"none\"\n strokeWidth=\"5\"\n pathLength=\"100\"\n d=\"M0.37 18.5 C0.37 5.772 5.772 0.37 18.5 0.37 S36.63 5.772 36.63 18.5 S31.228 36.63 18.5 36.63 S0.37 31.228 0.37 18.5\"\n ></path>\n </svg>\n );\n case \"progress\":\n return <div className=\"progress-loading\"></div>;\n case \"orbit\":\n return <div className=\"orbit-container\"></div>;\n\n default:\n return (\n <svg\n className={cn(\"circle-container\", sizeStyles[size])}\n viewBox=\"0 0 40 40\"\n height=\"40\"\n width=\"40\"\n >\n <circle\n className={cn(\"circle-track\", {\n \"hawa-stroke-primary-foreground\": themeMode === \"dark\",\n \"hawa-stroke-primary\": themeMode === \"light\"\n })}\n cx=\"20\"\n cy=\"20\"\n r=\"17.5\"\n pathLength=\"100\"\n strokeWidth=\"5px\"\n fill=\"none\"\n />\n <circle\n className={cn(\"circle-car\", {\n \"hawa-stroke-primary-foreground\": themeMode === \"dark\",\n \"hawa-stroke-primary\": themeMode === \"light\"\n })}\n cx=\"20\"\n cy=\"20\"\n r=\"17.5\"\n pathLength=\"100\"\n strokeWidth=\"5px\"\n fill=\"none\"\n />\n </svg>\n );\n // return (\n // <div\n // className={cn(\n // \"hawa-flex hawa-flex-row hawa-gap-x-3\",\n // props.className\n // )}\n // >\n // <div aria-label=\"Loading...\" role=\"status\">\n // <svg\n // className={cn(sizeStyles[size], \"hawa-animate-spin\")}\n // viewBox=\"3 3 18 18\"\n // >\n // <path\n // className=\"hawa-fill-primary/20\"\n // d=\"M12 5C8.13401 5 5 8.13401 5 12C5 15.866 8.13401 19 12 19C15.866 19 19 15.866 19 12C19 8.13401 15.866 5 12 5ZM3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12Z\"\n // ></path>\n // <path\n // className={color ? color : \"hawa-fill-primary\"}\n // d=\"M16.9497 7.05015C14.2161 4.31648 9.78392 4.31648 7.05025 7.05015C6.65973 7.44067 6.02656 7.44067 5.63604 7.05015C5.24551 6.65962 5.24551 6.02646 5.63604 5.63593C9.15076 2.12121 14.8492 2.12121 18.364 5.63593C18.7545 6.02646 18.7545 6.65962 18.364 7.05015C17.9734 7.44067 17.3403 7.44067 16.9497 7.05015Z\"\n // ></path>\n // </svg>\n // </div>\n // </div>\n // );\n }\n};\n","import React from \"react\";\n\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { PositionType } from \"@_types/commonTypes\";\n\nimport { cn } from \"@util/index\";\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"hawa-z-50 hawa-overflow-hidden hawa-rounded-md hawa-border hawa-bg-popover hawa-px-3 hawa-py-1.5 hawa-text-sm hawa-text-popover-foreground hawa-shadow-md hawa-animate-in hawa-fade-in-0 hawa-zoom-in-95 data-[state=closed]:hawa-animate-out data-[state=closed]:hawa-fade-out-0 data-[state=closed]:hawa-zoom-out-95 data-[side=bottom]:hawa-slide-in-from-top-2 data-[side=left]:hawa-slide-in-from-right-2 data-[side=right]:hawa-slide-in-from-left-2 data-[side=top]:hawa-slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nconst TooltipArrow = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Arrow>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Arrow>\n>(({ className, ...props }, ref) => (\n <TooltipPrimitive.Arrow ref={ref} className={cn(className)} {...props} />\n));\nTooltipArrow.displayName = TooltipPrimitive.Arrow.displayName;\n\ntype TooltipTypes = {\n /** Controls the open state of the tooltip. */\n open?: any;\n /** Specifies the side where the tooltip will appear. */\n side?: PositionType;\n /** Content to be displayed within the tooltip. */\n content?: any;\n /** Elements to which the tooltip is anchored. */\n children?: any;\n /** Sets the default open state of the tooltip. */\n defaultOpen?: any;\n /** Event handler for open state changes. */\n onOpenChange?: any;\n /** Duration of the delay before the tooltip appears. */\n delayDuration?: any;\n triggerProps?: TooltipPrimitive.TooltipTriggerProps;\n contentProps?: TooltipPrimitive.TooltipContentProps;\n providerProps?: TooltipPrimitive.TooltipProviderProps;\n};\n\nconst Tooltip: React.FunctionComponent<TooltipTypes> = ({\n side,\n open,\n content,\n children,\n defaultOpen,\n onOpenChange,\n triggerProps,\n contentProps,\n providerProps,\n delayDuration = 300,\n ...props\n}) => {\n return (\n <TooltipPrimitive.TooltipProvider\n delayDuration={delayDuration}\n {...providerProps}\n >\n <TooltipPrimitive.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n {...props}\n >\n <TooltipPrimitive.Trigger {...triggerProps}>\n {children}\n </TooltipPrimitive.Trigger>\n <TooltipContent side={side} align=\"center\" {...contentProps}>\n {content}\n </TooltipContent>\n </TooltipPrimitive.Root>\n </TooltipPrimitive.TooltipProvider>\n );\n};\n\nexport { Tooltip };\n"],"mappings":"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","names":["import_react","React","import_react","React","import_react","React","React","className"]}
|