@sikka/hawa 0.35.6-next → 0.36.1-next
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{Chip-BtgTAs8x.d.mts → Chip-CGl24Kd9.d.mts} +2 -2
- package/dist/{Chip-DQsP5hFS.d.ts → Chip-Cato49ar.d.ts} +2 -2
- package/dist/accordion/index.d.mts +1 -1
- package/dist/accordion/index.d.ts +1 -1
- package/dist/accordion/index.js +6 -4
- package/dist/accordion/index.js.map +1 -1
- package/dist/accordion/index.mjs +6 -4
- package/dist/accordion/index.mjs.map +1 -1
- package/dist/appLayout/index.d.mts +0 -4
- package/dist/appLayout/index.d.ts +0 -4
- package/dist/appLayout/index.js +32 -15
- package/dist/appLayout/index.js.map +1 -1
- package/dist/appLayout/index.mjs +33 -16
- package/dist/appLayout/index.mjs.map +1 -1
- package/dist/blocks/auth/index.js +28 -5
- package/dist/blocks/auth/index.mjs +4 -4
- package/dist/blocks/feedback/index.js +0 -1
- package/dist/blocks/feedback/index.mjs +1 -1
- package/dist/blocks/index.js +34 -9
- package/dist/blocks/index.mjs +2 -2
- package/dist/blocks/misc/index.js +32 -7
- package/dist/blocks/misc/index.mjs +3 -3
- package/dist/blocks/pricing/index.js +6 -4
- package/dist/blocks/pricing/index.mjs +1 -1
- package/dist/chip/index.d.mts +2 -2
- package/dist/chip/index.d.ts +2 -2
- package/dist/chip/index.js +6 -4
- package/dist/chip/index.js.map +1 -1
- package/dist/chip/index.mjs +6 -4
- package/dist/chip/index.mjs.map +1 -1
- package/dist/{chunk-MZRUEJED.mjs → chunk-6QIOEUE2.mjs} +1 -1
- package/dist/{chunk-JEZLVXSU.mjs → chunk-BXBSZD5X.mjs} +26 -2
- package/dist/{chunk-LVXG3SMD.mjs → chunk-CJ57JBYA.mjs} +6 -4
- package/dist/{chunk-CD6AQVU3.mjs → chunk-HLYAX77R.mjs} +0 -1
- package/dist/{chunk-ANXGMZXS.mjs → chunk-NNPNQK6F.mjs} +6 -4
- package/dist/{chunk-57EAKTAP.mjs → chunk-T33FXOHA.mjs} +29 -6
- package/dist/colorPicker/index.js +1 -1
- package/dist/colorPicker/index.js.map +1 -1
- package/dist/colorPicker/index.mjs +1 -1
- package/dist/colorPicker/index.mjs.map +1 -1
- package/dist/dataTable/index.js +41 -5
- package/dist/dataTable/index.js.map +1 -1
- package/dist/dataTable/index.mjs +41 -5
- package/dist/dataTable/index.mjs.map +1 -1
- package/dist/datePicker/index.d.mts +1 -0
- package/dist/datePicker/index.d.ts +1 -0
- package/dist/datePicker/index.js +3 -2
- package/dist/datePicker/index.js.map +1 -1
- package/dist/datePicker/index.mjs +3 -2
- package/dist/datePicker/index.mjs.map +1 -1
- package/dist/elements/index.d.mts +8 -4
- package/dist/elements/index.d.ts +8 -4
- package/dist/elements/index.js +50 -13
- package/dist/elements/index.mjs +19 -7
- package/dist/index.css +10 -0
- package/dist/index.d.mts +8 -8
- package/dist/index.d.ts +8 -8
- package/dist/index.js +76 -24
- package/dist/index.mjs +77 -25
- package/dist/input/index.d.mts +6 -2
- package/dist/input/index.d.ts +6 -2
- package/dist/input/index.js +26 -2
- package/dist/input/index.js.map +1 -1
- package/dist/input/index.mjs +26 -2
- package/dist/input/index.mjs.map +1 -1
- package/dist/layout/index.d.mts +1 -5
- package/dist/layout/index.d.ts +1 -5
- package/dist/layout/index.js +32 -15
- package/dist/layout/index.mjs +29 -14
- package/dist/passwordInput/index.js +26 -2
- package/dist/passwordInput/index.js.map +1 -1
- package/dist/passwordInput/index.mjs +26 -2
- package/dist/passwordInput/index.mjs.map +1 -1
- package/dist/phoneInput/index.js +1 -2
- package/dist/phoneInput/index.js.map +1 -1
- package/dist/phoneInput/index.mjs +1 -2
- package/dist/phoneInput/index.mjs.map +1 -1
- package/dist/pinInput/index.js +1 -1
- package/dist/pinInput/index.js.map +1 -1
- package/dist/pinInput/index.mjs +1 -1
- package/dist/pinInput/index.mjs.map +1 -1
- package/dist/select/index.js +0 -1
- package/dist/select/index.js.map +1 -1
- package/dist/select/index.mjs +0 -1
- package/dist/select/index.mjs.map +1 -1
- package/dist/sidebar/index.js +6 -4
- package/dist/sidebar/index.js.map +1 -1
- package/dist/sidebar/index.mjs +6 -4
- package/dist/sidebar/index.mjs.map +1 -1
- package/dist/tabs/index.d.mts +1 -1
- package/dist/tabs/index.d.ts +1 -1
- package/dist/tabs/index.js +6 -4
- package/dist/tabs/index.js.map +1 -1
- package/dist/tabs/index.mjs +6 -4
- package/dist/tabs/index.mjs.map +1 -1
- package/package.json +7 -8
package/dist/index.mjs
CHANGED
@@ -853,7 +853,8 @@ var Chip = React6.forwardRef(
|
|
853
853
|
icon,
|
854
854
|
color,
|
855
855
|
radius = "inherit",
|
856
|
-
|
856
|
+
dot,
|
857
|
+
dotStatus = "none",
|
857
858
|
...rest
|
858
859
|
}, ref) => {
|
859
860
|
let defaultStyles = "hawa-flex hawa-flex-row hawa-w-fit hawa-gap-1 hawa-items-center hawa-px-2.5 hawa-py-1 hawa-font-bold ";
|
@@ -872,7 +873,8 @@ var Chip = React6.forwardRef(
|
|
872
873
|
normal: "hawa-flex hawa-h-2 hawa-w-2 hawa-rounded-full",
|
873
874
|
large: "hawa-flex hawa-h-3 hawa-w-3 hawa-rounded-full"
|
874
875
|
};
|
875
|
-
let
|
876
|
+
let dotStatusStyles = {
|
877
|
+
none: "hawa-bg-gray-500 dark:hawa-bg-gray-800",
|
876
878
|
available: "hawa-bg-green-500",
|
877
879
|
unavailable: "hawa-bg-red-500"
|
878
880
|
};
|
@@ -900,10 +902,10 @@ var Chip = React6.forwardRef(
|
|
900
902
|
color ? colorStyles[color] : "hawa-border hawa-bg-none"
|
901
903
|
)
|
902
904
|
},
|
903
|
-
|
905
|
+
dot && /* @__PURE__ */ React6.createElement(
|
904
906
|
"span",
|
905
907
|
{
|
906
|
-
className: cn(dotStyles[size],
|
908
|
+
className: cn(dotStyles[size], dotStatusStyles[dotStatus])
|
907
909
|
}
|
908
910
|
),
|
909
911
|
icon && icon,
|
@@ -2428,7 +2430,7 @@ var Input = forwardRef12(
|
|
2428
2430
|
auto: ""
|
2429
2431
|
};
|
2430
2432
|
let defaultStyle = "hawa-flex hawa-max-h-fit hawa-h-fit hawa-relative hawa-flex-col hawa-justify-center hawa-gap-0";
|
2431
|
-
let defaultInputStyle = "hawa-block hawa-w-full hawa-rounded hawa-border hawa-transition-all hawa-bg-background hawa-p-3 hawa-text-sm ";
|
2433
|
+
let defaultInputStyle = "hawa-block hawa-w-full hawa-rounded hawa-border hawa-transition-all hawa-bg-background hawa-p-3 hawa-text-sm placeholder:hawa-text-muted-foreground";
|
2432
2434
|
const handleChange = (e) => {
|
2433
2435
|
let newValue = e.target.value;
|
2434
2436
|
if (props.prefixText) {
|
@@ -2467,7 +2469,31 @@ var Input = forwardRef12(
|
|
2467
2469
|
)
|
2468
2470
|
},
|
2469
2471
|
props.outsidePrefix
|
2470
|
-
), props.isLoading ? /* @__PURE__ */ React21.createElement("div", { className: "hawa-pb-2 hawa-w-full" }, /* @__PURE__ */ React21.createElement(Skeleton, { className: "hawa-h-[40px] hawa-w-full" })) : /* @__PURE__ */ React21.createElement(
|
2472
|
+
), props.isLoading ? /* @__PURE__ */ React21.createElement("div", { className: "hawa-pb-2 hawa-w-full" }, /* @__PURE__ */ React21.createElement(Skeleton, { className: "hawa-h-[40px] hawa-w-full" })) : props.isLoadingError ? /* @__PURE__ */ React21.createElement("div", { className: "hawa-pb-2 hawa-w-full" }, /* @__PURE__ */ React21.createElement(
|
2473
|
+
Skeleton,
|
2474
|
+
{
|
2475
|
+
animation: "none",
|
2476
|
+
className: "hawa-h-[40px] hawa-w-full !hawa-bg-destructive/[0.3]",
|
2477
|
+
content: /* @__PURE__ */ React21.createElement("div", { className: "hawa-flex hawa-flex-row hawa-gap-2" }, /* @__PURE__ */ React21.createElement(
|
2478
|
+
"svg",
|
2479
|
+
{
|
2480
|
+
xmlns: "http://www.w3.org/2000/svg",
|
2481
|
+
width: "20",
|
2482
|
+
height: "20",
|
2483
|
+
viewBox: "0 0 24 24",
|
2484
|
+
fill: "none",
|
2485
|
+
stroke: "currentColor",
|
2486
|
+
strokeWidth: "2",
|
2487
|
+
strokeLinecap: "round",
|
2488
|
+
strokeLinejoin: "round",
|
2489
|
+
className: "hawa-text-destructive"
|
2490
|
+
},
|
2491
|
+
/* @__PURE__ */ React21.createElement("path", { d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3" }),
|
2492
|
+
/* @__PURE__ */ React21.createElement("path", { d: "M12 9v4" }),
|
2493
|
+
/* @__PURE__ */ React21.createElement("path", { d: "M12 17h.01" })
|
2494
|
+
), /* @__PURE__ */ React21.createElement("span", null, /* @__PURE__ */ React21.createElement("span", { className: "hawa-text-destructive" }, props.loadingErrorMesssage || "Error loading data")))
|
2495
|
+
}
|
2496
|
+
)) : /* @__PURE__ */ React21.createElement(React21.Fragment, null, !props.hideSeparator && /* @__PURE__ */ React21.createElement(
|
2471
2497
|
"div",
|
2472
2498
|
{
|
2473
2499
|
className: cn(
|
@@ -2659,6 +2685,7 @@ TableHeader.displayName = "TableHeader";
|
|
2659
2685
|
TableCaption.displayName = "TableCaption";
|
2660
2686
|
|
2661
2687
|
// elements/dataTable/DataTable.tsx
|
2688
|
+
var LOCAL_STORAGE_KEY = "@sikka/hawa/data-table-columns";
|
2662
2689
|
var DataTable = ({
|
2663
2690
|
columns,
|
2664
2691
|
data,
|
@@ -2678,7 +2705,10 @@ var DataTable = ({
|
|
2678
2705
|
);
|
2679
2706
|
const [globalFilter, setGlobalFilter] = React23.useState("");
|
2680
2707
|
const [expanded, setExpanded] = React23.useState({});
|
2681
|
-
const [columnVisibility, setColumnVisibility] = React23.useState({
|
2708
|
+
const [columnVisibility, setColumnVisibility] = React23.useState(() => {
|
2709
|
+
const savedVisibility = localStorage.getItem(LOCAL_STORAGE_KEY);
|
2710
|
+
return savedVisibility ? JSON.parse(savedVisibility) : {};
|
2711
|
+
});
|
2682
2712
|
const [rowSelection, setRowSelection] = React23.useState({});
|
2683
2713
|
const table = useReactTable({
|
2684
2714
|
data,
|
@@ -2708,12 +2738,20 @@ var DataTable = ({
|
|
2708
2738
|
label: `${item} / ${pageText}`,
|
2709
2739
|
value: item
|
2710
2740
|
}));
|
2741
|
+
React23.useEffect(() => {
|
2742
|
+
localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(columnVisibility));
|
2743
|
+
}, [columnVisibility]);
|
2711
2744
|
React23.useEffect(() => {
|
2712
2745
|
setColumnVisibility((prev) => {
|
2713
2746
|
let newColumnVisibility = {};
|
2714
2747
|
columns.forEach((column) => {
|
2715
2748
|
var _a2;
|
2716
|
-
|
2749
|
+
const savedVisibility = prev[column.accessorKey];
|
2750
|
+
if (savedVisibility !== void 0) {
|
2751
|
+
newColumnVisibility[column.accessorKey] = savedVisibility;
|
2752
|
+
} else {
|
2753
|
+
newColumnVisibility[column.accessorKey] = !((_a2 = column.meta) == null ? void 0 : _a2.hidden);
|
2754
|
+
}
|
2717
2755
|
});
|
2718
2756
|
return newColumnVisibility;
|
2719
2757
|
});
|
@@ -2882,7 +2920,7 @@ var DataTable = ({
|
|
2882
2920
|
}
|
2883
2921
|
table.setPageIndex(page);
|
2884
2922
|
},
|
2885
|
-
className: "hawa-w-16 hawa-rounded hawa-border hawa-p-1 hawa-px-2 hawa-text-sm"
|
2923
|
+
className: "hawa-w-16 hawa-rounded hawa-border hawa-p-1 hawa-px-2 hawa-text-sm placeholder:hawa-text-muted-foreground"
|
2886
2924
|
}
|
2887
2925
|
)), /* @__PURE__ */ React23.createElement(
|
2888
2926
|
DropdownMenu,
|
@@ -4785,7 +4823,6 @@ var Select = ({
|
|
4785
4823
|
)
|
4786
4824
|
},
|
4787
4825
|
unstyled: true,
|
4788
|
-
autoFocus: true,
|
4789
4826
|
components: props.hideIndicator ? {
|
4790
4827
|
Option,
|
4791
4828
|
Menu: Menu2,
|
@@ -7007,7 +7044,7 @@ var PhoneInput = ({
|
|
7007
7044
|
onChange: handleInputChange,
|
7008
7045
|
placeholder: props.placeholder,
|
7009
7046
|
className: cn(
|
7010
|
-
"hawa-block hawa-h-[40px] hawa-w-full hawa-rounded hawa-rounded-l-none hawa-border hawa-border-l-0 hawa-border-l-transparent hawa-bg-background hawa-p-2 hawa-text-sm hawa-transition-all"
|
7047
|
+
"placeholder:hawa-text-muted-foreground hawa-block hawa-h-[40px] hawa-w-full hawa-rounded hawa-rounded-l-none hawa-border hawa-border-l-0 hawa-border-l-transparent hawa-bg-background hawa-p-2 hawa-text-sm hawa-transition-all"
|
7011
7048
|
),
|
7012
7049
|
...inputProps
|
7013
7050
|
}
|
@@ -7085,7 +7122,7 @@ var PinInput = ({
|
|
7085
7122
|
id: `input-${index}`,
|
7086
7123
|
pattern: "[0-9]*",
|
7087
7124
|
className: cn(
|
7088
|
-
"hawa-h-10 hawa-rounded hawa-border hawa-bg-background hawa-text-center",
|
7125
|
+
"hawa-h-10 hawa-rounded hawa-border hawa-bg-background hawa-text-center placeholder:hawa-text-muted-foreground",
|
7089
7126
|
width === "full" ? "hawa-w-full" : "hawa-w-10"
|
7090
7127
|
),
|
7091
7128
|
onChange: (e) => handleChange(e, index),
|
@@ -7223,7 +7260,7 @@ var ColorPicker = ({
|
|
7223
7260
|
value: selectedColor,
|
7224
7261
|
className: cn(
|
7225
7262
|
"hawa-block hawa-h-[40px] hawa-w-24 hawa-rounded hawa-rounded-l-none hawa-bg-background hawa-p-2 hawa-text-sm hawa-transition-all",
|
7226
|
-
"hawa-border hawa-border-l-0 hawa-border-l-transparent"
|
7263
|
+
"hawa-border hawa-border-l-0 hawa-border-l-transparent placeholder:hawa-text-muted-foreground"
|
7227
7264
|
// "hawa-border hawa-border-x-0 hawa-border-x-transparent hawa-border-b-0 hawa-rounded-tr-none"
|
7228
7265
|
),
|
7229
7266
|
style: {
|
@@ -8976,7 +9013,8 @@ var Navbar = ({
|
|
8976
9013
|
};
|
8977
9014
|
|
8978
9015
|
// layout/appLayout/AppLayout.tsx
|
8979
|
-
import React76, { useEffect as useEffect29, useState as useState36 } from "react";
|
9016
|
+
import React76, { useEffect as useEffect29, useLayoutEffect as useLayoutEffect2, useState as useState36 } from "react";
|
9017
|
+
var LOCAL_STORAGE_KEY2 = "@sikka/hawa/keep-drawer-open";
|
8980
9018
|
var AppLayout = ({
|
8981
9019
|
profileMenuWidth = "default",
|
8982
9020
|
DrawerFooterActions,
|
@@ -8987,14 +9025,18 @@ var AppLayout = ({
|
|
8987
9025
|
drawerSize = "md",
|
8988
9026
|
currentPage,
|
8989
9027
|
clickedItem,
|
8990
|
-
setKeepOpen,
|
8991
|
-
keepOpen,
|
8992
9028
|
DrawerLinkComponent,
|
8993
9029
|
MenuLinkComponent,
|
8994
9030
|
onAvatarClick,
|
8995
9031
|
...props
|
8996
9032
|
}) => {
|
8997
9033
|
var _a, _b;
|
9034
|
+
useLayoutEffect2(() => {
|
9035
|
+
let isDrawerOpen = localStorage.getItem(LOCAL_STORAGE_KEY2);
|
9036
|
+
if (isDrawerOpen === null) {
|
9037
|
+
localStorage.setItem(LOCAL_STORAGE_KEY2, JSON.stringify(false));
|
9038
|
+
}
|
9039
|
+
}, []);
|
8998
9040
|
let closeDrawerWidth = 56;
|
8999
9041
|
let openDrawerWidth = 200;
|
9000
9042
|
let drawerSizeStyle = {
|
@@ -9010,8 +9052,14 @@ var AppLayout = ({
|
|
9010
9052
|
const [size, setSize] = useState36(
|
9011
9053
|
typeof window !== "undefined" && window.innerWidth || 1200
|
9012
9054
|
);
|
9013
|
-
const [openSideMenu, setOpenSideMenu] = useState36(
|
9014
|
-
|
9055
|
+
const [openSideMenu, setOpenSideMenu] = useState36(() => {
|
9056
|
+
const savedState = localStorage.getItem(LOCAL_STORAGE_KEY2);
|
9057
|
+
return savedState ? JSON.parse(savedState) : false;
|
9058
|
+
});
|
9059
|
+
const [keepDrawerOpen, setKeepDrawerOpen] = useState36(() => {
|
9060
|
+
const savedState = localStorage.getItem(LOCAL_STORAGE_KEY2);
|
9061
|
+
return savedState ? JSON.parse(savedState) : false;
|
9062
|
+
});
|
9015
9063
|
const handleClickOutside = () => {
|
9016
9064
|
if (typeof window !== "undefined") {
|
9017
9065
|
if (window.innerWidth < 600) {
|
@@ -9037,12 +9085,16 @@ var AppLayout = ({
|
|
9037
9085
|
}
|
9038
9086
|
}, []);
|
9039
9087
|
useEffect29(() => {
|
9040
|
-
setKeepDrawerOpen(
|
9041
|
-
|
9088
|
+
setKeepDrawerOpen(() => {
|
9089
|
+
const savedState = localStorage.getItem(LOCAL_STORAGE_KEY2);
|
9090
|
+
return savedState ? JSON.parse(savedState) : true;
|
9091
|
+
});
|
9092
|
+
}, [setKeepDrawerOpen]);
|
9042
9093
|
useEffect29(() => {
|
9043
9094
|
if (size > 600) {
|
9044
9095
|
setOpenSideMenu(keepDrawerOpen);
|
9045
9096
|
} else {
|
9097
|
+
setKeepDrawerOpen(false);
|
9046
9098
|
setOpenSideMenu(false);
|
9047
9099
|
}
|
9048
9100
|
}, [size, keepDrawerOpen]);
|
@@ -9129,8 +9181,7 @@ var AppLayout = ({
|
|
9129
9181
|
"div",
|
9130
9182
|
{
|
9131
9183
|
className: cn(
|
9132
|
-
"hawa-fixed hawa-z-0 hawa-flex hawa-flex-col hawa-justify-between hawa-overflow-x-clip hawa-transition-all hawa-top-0 hawa-h-[calc(100dvh)] hawa-bg-
|
9133
|
-
// 'hawa-bg-primary-foreground',
|
9184
|
+
"hawa-fixed hawa-z-0 hawa-flex hawa-flex-col hawa-justify-between hawa-overflow-x-clip hawa-transition-all hawa-top-0 hawa-h-[calc(100dvh)] hawa-bg-primary-foreground",
|
9134
9185
|
isRTL ? "hawa-right-0" : "hawa-left-0",
|
9135
9186
|
bordered ? direction === "rtl" ? "hawa-border-s-[1px]" : "hawa-border-e-[1px]" : ""
|
9136
9187
|
),
|
@@ -9243,9 +9294,10 @@ var AppLayout = ({
|
|
9243
9294
|
size: "smallIcon",
|
9244
9295
|
onClick: () => {
|
9245
9296
|
const newKeepOpenState = !keepDrawerOpen;
|
9246
|
-
|
9247
|
-
|
9248
|
-
|
9297
|
+
localStorage.setItem(
|
9298
|
+
LOCAL_STORAGE_KEY2,
|
9299
|
+
JSON.stringify(newKeepOpenState)
|
9300
|
+
);
|
9249
9301
|
setKeepDrawerOpen(newKeepOpenState);
|
9250
9302
|
}
|
9251
9303
|
},
|
package/dist/input/index.d.mts
CHANGED
@@ -11,6 +11,7 @@ type LabelProps = {
|
|
11
11
|
|
12
12
|
type TextFieldTypes = React__default.InputHTMLAttributes<HTMLInputElement> & {
|
13
13
|
isLoading?: boolean;
|
14
|
+
isLoadingError?: boolean;
|
14
15
|
containerClassName?: string;
|
15
16
|
margin?: "none" | "normal" | "large";
|
16
17
|
width?: "small" | "normal" | "full" | "auto";
|
@@ -20,6 +21,7 @@ type TextFieldTypes = React__default.InputHTMLAttributes<HTMLInputElement> & {
|
|
20
21
|
hideSeparator?: boolean;
|
21
22
|
/** The small red text under the input field to show validation. */
|
22
23
|
helperText?: any;
|
24
|
+
prefixText?: any;
|
23
25
|
forceHideHelperText?: boolean;
|
24
26
|
inputProps?: React__default.InputHTMLAttributes<HTMLInputElement>;
|
25
27
|
/** The icon inside the input field */
|
@@ -39,10 +41,11 @@ type TextFieldTypes = React__default.InputHTMLAttributes<HTMLInputElement> & {
|
|
39
41
|
popup?: boolean;
|
40
42
|
popupContent?: React__default.ReactNode;
|
41
43
|
outsidePrefix?: any;
|
42
|
-
|
44
|
+
loadingErrorMesssage?: string;
|
43
45
|
};
|
44
46
|
declare const Input: React__default.ForwardRefExoticComponent<React__default.InputHTMLAttributes<HTMLInputElement> & {
|
45
47
|
isLoading?: boolean | undefined;
|
48
|
+
isLoadingError?: boolean | undefined;
|
46
49
|
containerClassName?: string | undefined;
|
47
50
|
margin?: "none" | "large" | "normal" | undefined;
|
48
51
|
width?: "full" | "small" | "auto" | "normal" | undefined;
|
@@ -52,6 +55,7 @@ declare const Input: React__default.ForwardRefExoticComponent<React__default.Inp
|
|
52
55
|
hideSeparator?: boolean | undefined;
|
53
56
|
/** The small red text under the input field to show validation. */
|
54
57
|
helperText?: any;
|
58
|
+
prefixText?: any;
|
55
59
|
forceHideHelperText?: boolean | undefined;
|
56
60
|
inputProps?: React__default.InputHTMLAttributes<HTMLInputElement> | undefined;
|
57
61
|
/** The icon inside the input field */
|
@@ -71,7 +75,7 @@ declare const Input: React__default.ForwardRefExoticComponent<React__default.Inp
|
|
71
75
|
popup?: boolean | undefined;
|
72
76
|
popupContent?: React__default.ReactNode;
|
73
77
|
outsidePrefix?: any;
|
74
|
-
|
78
|
+
loadingErrorMesssage?: string | undefined;
|
75
79
|
} & React__default.RefAttributes<HTMLInputElement>>;
|
76
80
|
|
77
81
|
export { Input, type TextFieldTypes };
|
package/dist/input/index.d.ts
CHANGED
@@ -11,6 +11,7 @@ type LabelProps = {
|
|
11
11
|
|
12
12
|
type TextFieldTypes = React__default.InputHTMLAttributes<HTMLInputElement> & {
|
13
13
|
isLoading?: boolean;
|
14
|
+
isLoadingError?: boolean;
|
14
15
|
containerClassName?: string;
|
15
16
|
margin?: "none" | "normal" | "large";
|
16
17
|
width?: "small" | "normal" | "full" | "auto";
|
@@ -20,6 +21,7 @@ type TextFieldTypes = React__default.InputHTMLAttributes<HTMLInputElement> & {
|
|
20
21
|
hideSeparator?: boolean;
|
21
22
|
/** The small red text under the input field to show validation. */
|
22
23
|
helperText?: any;
|
24
|
+
prefixText?: any;
|
23
25
|
forceHideHelperText?: boolean;
|
24
26
|
inputProps?: React__default.InputHTMLAttributes<HTMLInputElement>;
|
25
27
|
/** The icon inside the input field */
|
@@ -39,10 +41,11 @@ type TextFieldTypes = React__default.InputHTMLAttributes<HTMLInputElement> & {
|
|
39
41
|
popup?: boolean;
|
40
42
|
popupContent?: React__default.ReactNode;
|
41
43
|
outsidePrefix?: any;
|
42
|
-
|
44
|
+
loadingErrorMesssage?: string;
|
43
45
|
};
|
44
46
|
declare const Input: React__default.ForwardRefExoticComponent<React__default.InputHTMLAttributes<HTMLInputElement> & {
|
45
47
|
isLoading?: boolean | undefined;
|
48
|
+
isLoadingError?: boolean | undefined;
|
46
49
|
containerClassName?: string | undefined;
|
47
50
|
margin?: "none" | "large" | "normal" | undefined;
|
48
51
|
width?: "full" | "small" | "auto" | "normal" | undefined;
|
@@ -52,6 +55,7 @@ declare const Input: React__default.ForwardRefExoticComponent<React__default.Inp
|
|
52
55
|
hideSeparator?: boolean | undefined;
|
53
56
|
/** The small red text under the input field to show validation. */
|
54
57
|
helperText?: any;
|
58
|
+
prefixText?: any;
|
55
59
|
forceHideHelperText?: boolean | undefined;
|
56
60
|
inputProps?: React__default.InputHTMLAttributes<HTMLInputElement> | undefined;
|
57
61
|
/** The icon inside the input field */
|
@@ -71,7 +75,7 @@ declare const Input: React__default.ForwardRefExoticComponent<React__default.Inp
|
|
71
75
|
popup?: boolean | undefined;
|
72
76
|
popupContent?: React__default.ReactNode;
|
73
77
|
outsidePrefix?: any;
|
74
|
-
|
78
|
+
loadingErrorMesssage?: string | undefined;
|
75
79
|
} & React__default.RefAttributes<HTMLInputElement>>;
|
76
80
|
|
77
81
|
export { Input, type TextFieldTypes };
|
package/dist/input/index.js
CHANGED
@@ -223,7 +223,7 @@ var Input = (0, import_react3.forwardRef)(
|
|
223
223
|
auto: ""
|
224
224
|
};
|
225
225
|
let defaultStyle = "hawa-flex hawa-max-h-fit hawa-h-fit hawa-relative hawa-flex-col hawa-justify-center hawa-gap-0";
|
226
|
-
let defaultInputStyle = "hawa-block hawa-w-full hawa-rounded hawa-border hawa-transition-all hawa-bg-background hawa-p-3 hawa-text-sm ";
|
226
|
+
let defaultInputStyle = "hawa-block hawa-w-full hawa-rounded hawa-border hawa-transition-all hawa-bg-background hawa-p-3 hawa-text-sm placeholder:hawa-text-muted-foreground";
|
227
227
|
const handleChange = (e) => {
|
228
228
|
let newValue = e.target.value;
|
229
229
|
if (props.prefixText) {
|
@@ -262,7 +262,31 @@ var Input = (0, import_react3.forwardRef)(
|
|
262
262
|
)
|
263
263
|
},
|
264
264
|
props.outsidePrefix
|
265
|
-
), props.isLoading ? /* @__PURE__ */ import_react3.default.createElement("div", { className: "hawa-pb-2 hawa-w-full" }, /* @__PURE__ */ import_react3.default.createElement(Skeleton, { className: "hawa-h-[40px] hawa-w-full" })) : /* @__PURE__ */ import_react3.default.createElement(
|
265
|
+
), props.isLoading ? /* @__PURE__ */ import_react3.default.createElement("div", { className: "hawa-pb-2 hawa-w-full" }, /* @__PURE__ */ import_react3.default.createElement(Skeleton, { className: "hawa-h-[40px] hawa-w-full" })) : props.isLoadingError ? /* @__PURE__ */ import_react3.default.createElement("div", { className: "hawa-pb-2 hawa-w-full" }, /* @__PURE__ */ import_react3.default.createElement(
|
266
|
+
Skeleton,
|
267
|
+
{
|
268
|
+
animation: "none",
|
269
|
+
className: "hawa-h-[40px] hawa-w-full !hawa-bg-destructive/[0.3]",
|
270
|
+
content: /* @__PURE__ */ import_react3.default.createElement("div", { className: "hawa-flex hawa-flex-row hawa-gap-2" }, /* @__PURE__ */ import_react3.default.createElement(
|
271
|
+
"svg",
|
272
|
+
{
|
273
|
+
xmlns: "http://www.w3.org/2000/svg",
|
274
|
+
width: "20",
|
275
|
+
height: "20",
|
276
|
+
viewBox: "0 0 24 24",
|
277
|
+
fill: "none",
|
278
|
+
stroke: "currentColor",
|
279
|
+
strokeWidth: "2",
|
280
|
+
strokeLinecap: "round",
|
281
|
+
strokeLinejoin: "round",
|
282
|
+
className: "hawa-text-destructive"
|
283
|
+
},
|
284
|
+
/* @__PURE__ */ import_react3.default.createElement("path", { d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3" }),
|
285
|
+
/* @__PURE__ */ import_react3.default.createElement("path", { d: "M12 9v4" }),
|
286
|
+
/* @__PURE__ */ import_react3.default.createElement("path", { d: "M12 17h.01" })
|
287
|
+
), /* @__PURE__ */ import_react3.default.createElement("span", null, /* @__PURE__ */ import_react3.default.createElement("span", { className: "hawa-text-destructive" }, props.loadingErrorMesssage || "Error loading data")))
|
288
|
+
}
|
289
|
+
)) : /* @__PURE__ */ import_react3.default.createElement(import_react3.default.Fragment, null, !props.hideSeparator && /* @__PURE__ */ import_react3.default.createElement(
|
266
290
|
"div",
|
267
291
|
{
|
268
292
|
className: cn(
|
package/dist/input/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../elements/input/index.ts","../../elements/input/Input.tsx","../../util/index.ts","../../elements/label/Label.tsx","../../elements/tooltip/Tooltip.tsx","../../elements/skeleton/Skeleton.tsx"],"sourcesContent":["export * from \"./Input\";\n","import React, { forwardRef } from \"react\";\n\nimport { cn } from \"@util/index\";\n\nimport { Label, LabelProps } from \"../label/Label\";\nimport { Skeleton } from \"../skeleton/Skeleton\";\n\nexport type TextFieldTypes = React.InputHTMLAttributes<HTMLInputElement> & {\n isLoading?: boolean;\n containerClassName?: string;\n margin?: \"none\" | \"normal\" | \"large\";\n width?: \"small\" | \"normal\" | \"full\" | \"auto\";\n /** The label of the input field */\n label?: any;\n labelProps?: LabelProps;\n hideSeparator?: boolean;\n /** The small red text under the input field to show validation. */\n helperText?: any;\n forceHideHelperText?: boolean;\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n /** The icon inside the input field */\n icon?: any;\n /** Boolean to enable/disable editing the input field and using it as a text field */\n preview?: boolean;\n // maxLength?: any;\n iconInside?: React.ReactNode;\n endIcon?: React.ReactNode;\n endIconProps?: { className?: string };\n startIcon?: React.ReactNode;\n placeholder?: React.ReactNode;\n /** Show the count of characters left in the input field. Works along with maxLength prop. */\n showCount?: boolean;\n countPosition?: \"top\" | \"bottom\" | \"center\";\n popup?: boolean;\n popupContent?: React.ReactNode;\n outsidePrefix?: any;\n prefixText?: any;\n};\nexport const Input = forwardRef<HTMLInputElement, TextFieldTypes>(\n (\n {\n margin = \"none\",\n width = \"full\",\n preview = false,\n forceHideHelperText = false,\n labelProps,\n placeholder,\n showCount,\n inputProps,\n countPosition = \"bottom\",\n ...props\n },\n ref,\n ) => {\n let marginStyles = {\n none: \"hawa-mb-0\",\n normal: \"hawa-mb-3\",\n large: \"hawa-mb-5\",\n };\n let widthStyles = {\n small: \"hawa-w-full hawa-max-w-2xs\",\n normal: \"hawa-w-1/2\",\n full: \"hawa-w-full\",\n auto: \"\",\n };\n\n let defaultStyle =\n \"hawa-flex hawa-max-h-fit hawa-h-fit hawa-relative hawa-flex-col hawa-justify-center hawa-gap-0\";\n let defaultInputStyle =\n \"hawa-block hawa-w-full hawa-rounded hawa-border hawa-transition-all hawa-bg-background hawa-p-3 hawa-text-sm \";\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n let newValue = e.target.value;\n\n if (props.prefixText) {\n // If newValue is shorter than prefixText, set newValue to prefixText\n if (newValue.length < props.prefixText.length) {\n newValue = props.prefixText;\n } else {\n // Check if newValue starts with a substring of prefixText\n const isSubstring = props.prefixText.startsWith(newValue);\n\n if (!isSubstring && !newValue.startsWith(props.prefixText)) {\n newValue = `${props.prefixText}${newValue}`;\n }\n }\n }\n\n if (props.onChange) {\n const newEvent = { ...e, target: { ...e.target, value: newValue } };\n props.onChange(newEvent as React.ChangeEvent<HTMLInputElement>);\n }\n };\n\n return (\n <div\n className={cn(\n defaultStyle,\n marginStyles[margin],\n widthStyles[width],\n props.containerClassName,\n \"hawa-w-full hawa-gap-2\",\n )}\n >\n {props.label && <Label {...labelProps}>{props.label}</Label>}\n <div className=\"hawa-flex hawa-flex-row hawa-w-full hawa-items-center \">\n {props.outsidePrefix && (\n <span\n className={cn(\n \"hawa-me-2 hawa-opacity-90\",\n !forceHideHelperText && \"hawa-mb-2\",\n )}\n >\n {props.outsidePrefix}\n </span>\n )}\n {props.isLoading ? (\n <div className=\"hawa-pb-2 hawa-w-full\">\n <Skeleton className=\"hawa-h-[40px] hawa-w-full\" />\n </div>\n ) : (\n <>\n {!props.hideSeparator && (\n <div\n className={cn(\n \"hawa-absolute hawa-top-[22px] hawa-h-[0.8px] hawa-w-full hawa-bg-gray-200 hawa-transition-all dark:hawa-bg-gray-800\",\n preview ? \"hawa-opacity-100\" : \"hawa-opacity-0\",\n )}\n ></div>\n )}\n <div className=\"hawa-flex hawa-flex-col hawa-w-full hawa-gap-2\">\n <div className={\"hawa-relative\"}>\n {props.startIcon && (\n <div className=\"hawa-absolute hawa-start-3 hawa-top-1/2 hawa--translate-y-1/2\">\n {props.startIcon}\n </div>\n )}\n {props.endIcon && (\n <div\n className={cn(\n \"hawa-absolute hawa-end-3 hawa-top-1/2 hawa--translate-y-1/2\",\n props.endIconProps?.className,\n )}\n >\n {props.endIcon}\n </div>\n )}\n <input\n required\n dir={props.dir}\n type={props.type}\n value={props.value}\n onChange={handleChange}\n autoComplete={props.autoComplete}\n defaultValue={props.defaultValue}\n placeholder={placeholder}\n disabled={props.disabled || preview}\n style={{ height: 40 }}\n {...inputProps}\n className={cn(\n defaultInputStyle,\n \" focus-visible:hawa-outline-none focus-visible:hawa-ring-2 focus-visible:hawa-ring-ring focus-visible:hawa-ring-offset-0 dark:hawa-text-white\",\n {\n \"hawa-pe-9\": props.endIcon,\n \"hawa-ps-9\": props.startIcon,\n \"hawa-pe-[60px]\": countPosition === \"center\",\n },\n preview &&\n \"hawa-border-transparent hawa-bg-transparent hawa-px-0\",\n inputProps?.className,\n )}\n />\n </div>\n\n {/* Regular helper text */}\n {!forceHideHelperText && (\n <p\n className={cn(\n \"hawa-my-0 hawa-text-start hawa-text-xs hawa-text-helper-color hawa-transition-all\",\n props.helperText\n ? \"hawa-h-4 hawa-opacity-100\"\n : \"hawa-h-0 hawa-opacity-0\",\n )}\n >\n {props.helperText}\n </p>\n )}\n {/* Popover helper text */}\n {!props.disabled && forceHideHelperText && (\n <div\n className={cn(\n \"hawa-absolute hawa-end-0 hawa-top-[47px] hawa-z-20 hawa-translate-y-1/2 hawa-rounded hawa-bg-background hawa-text-start hawa-text-xs hawa-text-helper-color hawa-drop-shadow-md hawa-transition-all\",\n props.helperText\n ? \"hawa-border hawa-p-1\"\n : \"hawa-border-none hawa-p-0\",\n )}\n >\n {props.helperText}\n </div>\n )}\n {/* Character Counter */}\n {showCount && (\n <div\n className={cn(\n \"hawa-absolute hawa-translate-y-1/2 hawa-text-start hawa-text-xs hawa-transition-all\",\n {\n \"hawa-end-0 hawa-top-[62px]\":\n countPosition === \"bottom\",\n \"hawa-bottom-[62px] hawa-end-0\":\n countPosition === \"top\",\n \"hawa-end-2\": countPosition === \"center\",\n },\n )}\n >\n {props.value ? String(props.value).length : 0}/\n {props.maxLength}\n </div>\n )}\n\n {/* Popover helper text */}\n {/* {props.popup && (\n <div\n className={cn(\n \"hawa-absolute hawa-top-[47px] hawa-min-h-fit hawa-w-full hawa-text-xs hawa-text-helper-color hawa-transition-all hawa-text-start hawa-rounded hawa-end-0 hawa-z-20 hawa-drop-shadow-md hawa-bg-background hawa-translate-y-1/2\",\n props.helperText\n ? \"hawa-border hawa-p-1\"\n : \"hawa-border-none hawa-p-0\"\n )}\n >\n {props.popupContent}\n </div>\n )} */}\n </div>\n </>\n )}\n </div>\n </div>\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","import * as React from \"react\";\n\nimport { PositionType } from \"@_types/commonTypes\";\n\nimport { cn } from \"@util/index\";\nimport { Tooltip } from \"../tooltip\";\n\nexport type LabelProps = {\n hint?: React.ReactNode;\n hintSide?: PositionType;\n htmlFor?: string;\n required?: boolean;\n};\n\nconst Label = React.forwardRef<\n HTMLLabelElement,\n React.LabelHTMLAttributes<HTMLLabelElement> & LabelProps\n>(({ className, hint, hintSide, required, children, ...props }, ref) => (\n <div className=\"hawa-flex hawa-flex-row hawa-items-center hawa-gap-1 hawa-transition-all\">\n <label\n ref={ref}\n className={cn(\n \"hawa-text-sm hawa-font-medium hawa-leading-none peer-disabled:hawa-cursor-not-allowed peer-disabled:hawa-opacity-70\",\n className\n )}\n {...props}\n >\n {children}\n {required && <span className=\"hawa-mx-0.5 hawa-text-red-500\">*</span>}\n </label>\n {hint && (\n <Tooltip\n content={hint}\n side={hintSide}\n triggerProps={{\n tabIndex: -1,\n onClick: (event) => event.preventDefault()\n }}\n >\n <div>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"hawa-h-[14px] hawa-w-[14px] hawa-cursor-help\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\" />\n <path d=\"M12 17h.01\" />\n </svg>\n </div>\n </Tooltip>\n )}\n </div>\n));\n\nLabel.displayName = \"Label\";\n\nexport { Label };\n","import React from \"react\";\n\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { cn } from \"@util/index\";\n\nimport { PositionType } from \"@_types/commonTypes\";\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content> & {\n size?: \"default\" | \"small\" | \"large\";\n }\n>(({ className, sideOffset = 4, size = \"default\", ...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 {\n \"hawa-text-xs\": size === \"small\",\n \"hawa-text-xl\": size === \"large\"\n },\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 /** Size of the tooltip. */\n size?: \"default\" | \"small\" | \"large\";\n /** Disables the tooltip. */\n disabled?: boolean;\n triggerProps?: TooltipPrimitive.TooltipTriggerProps;\n contentProps?: TooltipPrimitive.TooltipContentProps;\n providerProps?: TooltipPrimitive.TooltipProviderProps;\n};\n\nconst Tooltip: React.FunctionComponent<TooltipTypes> = ({\n side,\n size,\n open,\n content,\n children,\n disabled,\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={!disabled && open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n {...props}\n >\n <TooltipPrimitive.Trigger {...triggerProps}>\n {children}\n </TooltipPrimitive.Trigger>\n <TooltipContent\n size={size}\n side={side}\n align=\"center\"\n {...contentProps}\n style={{\n ...contentProps?.style,\n maxWidth: \"var(--radix-tooltip-content-available-width)\",\n maxHeight: \"var(--radix-tooltip-content-available-height)\"\n }}\n >\n {content}\n </TooltipContent>\n </TooltipPrimitive.Root>\n </TooltipPrimitive.TooltipProvider>\n );\n};\n\nexport { Tooltip };\n","import React from \"react\";\n\nimport { cn } from \"@util/index\";\n\ninterface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n animation?: \"none\" | \"pulse\" | \"shimmer\";\n content?: any;\n fade?: \"top\" | \"bottom\" | \"left\" | \"right\";\n}\n\nfunction Skeleton({\n className,\n content,\n animation = \"pulse\",\n fade,\n ...props\n}: SkeletonProps) {\n const animationStyles = {\n none: \"hawa-rounded hawa-bg-muted\",\n pulse: \"hawa-animate-pulse hawa-rounded hawa-bg-muted\",\n shimmer:\n \"hawa-space-y-5 hawa-rounded hawa-bg-muted hawa-p-4 hawa-relative before:hawa-absolute before:hawa-inset-0 before:hawa--translate-x-full before:hawa-animate-[shimmer_2s_infinite] before:hawa-bg-gradient-to-r before:hawa-from-transparent before:hawa-via-gray-300/40 dark:before:hawa-via-white/10 before:hawa-to-transparent hawa-isolate hawa-overflow-hidden before:hawa-border-t before:hawa-border-rose-100/10\",\n };\n const fadeStyle = {\n bottom: \"hawa-mask-fade-bottom\",\n top: \"hawa-mask-fade-top\",\n right: \"hawa-mask-fade-right\",\n left: \"hawa-mask-fade-left \",\n };\n\n return (\n <div\n className={cn(\n animationStyles[animation],\n content &&\n \"hawa-flex hawa-flex-col hawa-items-center hawa-justify-center\",\n fade && fadeStyle[fade],\n className,\n )}\n {...props}\n >\n {content && content}\n </div>\n );\n}\n\nexport { Skeleton };\n"],"mappings":"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","names":["import_react","React","React","import_react","React","React"]}
|
1
|
+
{"version":3,"sources":["../../elements/input/index.ts","../../elements/input/Input.tsx","../../util/index.ts","../../elements/label/Label.tsx","../../elements/tooltip/Tooltip.tsx","../../elements/skeleton/Skeleton.tsx"],"sourcesContent":["export * from \"./Input\";\n","import React, { forwardRef } from \"react\";\n\nimport { cn } from \"@util/index\";\n\nimport { Label, LabelProps } from \"../label/Label\";\nimport { Skeleton } from \"../skeleton/Skeleton\";\n\nexport type TextFieldTypes = React.InputHTMLAttributes<HTMLInputElement> & {\n isLoading?: boolean;\n isLoadingError?: boolean;\n containerClassName?: string;\n margin?: \"none\" | \"normal\" | \"large\";\n width?: \"small\" | \"normal\" | \"full\" | \"auto\";\n /** The label of the input field */\n label?: any;\n labelProps?: LabelProps;\n hideSeparator?: boolean;\n /** The small red text under the input field to show validation. */\n helperText?: any;\n prefixText?: any;\n forceHideHelperText?: boolean;\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n /** The icon inside the input field */\n icon?: any;\n /** Boolean to enable/disable editing the input field and using it as a text field */\n preview?: boolean;\n // maxLength?: any;\n iconInside?: React.ReactNode;\n endIcon?: React.ReactNode;\n endIconProps?: { className?: string };\n startIcon?: React.ReactNode;\n placeholder?: React.ReactNode;\n /** Show the count of characters left in the input field. Works along with maxLength prop. */\n showCount?: boolean;\n countPosition?: \"top\" | \"bottom\" | \"center\";\n popup?: boolean;\n popupContent?: React.ReactNode;\n outsidePrefix?: any;\n loadingErrorMesssage?: string;\n};\nexport const Input = forwardRef<HTMLInputElement, TextFieldTypes>(\n (\n {\n margin = \"none\",\n width = \"full\",\n preview = false,\n forceHideHelperText = false,\n labelProps,\n placeholder,\n showCount,\n inputProps,\n countPosition = \"bottom\",\n ...props\n },\n ref,\n ) => {\n let marginStyles = {\n none: \"hawa-mb-0\",\n normal: \"hawa-mb-3\",\n large: \"hawa-mb-5\",\n };\n let widthStyles = {\n small: \"hawa-w-full hawa-max-w-2xs\",\n normal: \"hawa-w-1/2\",\n full: \"hawa-w-full\",\n auto: \"\",\n };\n\n let defaultStyle =\n \"hawa-flex hawa-max-h-fit hawa-h-fit hawa-relative hawa-flex-col hawa-justify-center hawa-gap-0\";\n let defaultInputStyle =\n \"hawa-block hawa-w-full hawa-rounded hawa-border hawa-transition-all hawa-bg-background hawa-p-3 hawa-text-sm placeholder:hawa-text-muted-foreground\";\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n let newValue = e.target.value;\n\n if (props.prefixText) {\n // If newValue is shorter than prefixText, set newValue to prefixText\n if (newValue.length < props.prefixText.length) {\n newValue = props.prefixText;\n } else {\n // Check if newValue starts with a substring of prefixText\n const isSubstring = props.prefixText.startsWith(newValue);\n\n if (!isSubstring && !newValue.startsWith(props.prefixText)) {\n newValue = `${props.prefixText}${newValue}`;\n }\n }\n }\n\n if (props.onChange) {\n const newEvent = { ...e, target: { ...e.target, value: newValue } };\n props.onChange(newEvent as React.ChangeEvent<HTMLInputElement>);\n }\n };\n\n return (\n <div\n className={cn(\n defaultStyle,\n marginStyles[margin],\n widthStyles[width],\n props.containerClassName,\n \"hawa-w-full hawa-gap-2\",\n )}\n >\n {props.label && <Label {...labelProps}>{props.label}</Label>}\n <div className=\"hawa-flex hawa-flex-row hawa-w-full hawa-items-center \">\n {props.outsidePrefix && (\n <span\n className={cn(\n \"hawa-me-2 hawa-opacity-90\",\n !forceHideHelperText && \"hawa-mb-2\",\n )}\n >\n {props.outsidePrefix}\n </span>\n )}\n {props.isLoading ? (\n <div className=\"hawa-pb-2 hawa-w-full\">\n <Skeleton className=\"hawa-h-[40px] hawa-w-full\" />\n </div>\n ) : props.isLoadingError ? (\n <div className=\"hawa-pb-2 hawa-w-full\">\n <Skeleton\n animation=\"none\"\n className=\"hawa-h-[40px] hawa-w-full !hawa-bg-destructive/[0.3]\"\n content={\n <div className=\"hawa-flex hawa-flex-row hawa-gap-2\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"hawa-text-destructive\"\n >\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\" />\n <path d=\"M12 9v4\" />\n <path d=\"M12 17h.01\" />\n </svg>\n <span>\n <span className=\"hawa-text-destructive\">\n {props.loadingErrorMesssage || \"Error loading data\"}\n </span>\n </span>\n </div>\n }\n />\n </div>\n ) : (\n <>\n {!props.hideSeparator && (\n <div\n className={cn(\n \"hawa-absolute hawa-top-[22px] hawa-h-[0.8px] hawa-w-full hawa-bg-gray-200 hawa-transition-all dark:hawa-bg-gray-800\",\n preview ? \"hawa-opacity-100\" : \"hawa-opacity-0\",\n )}\n ></div>\n )}\n <div className=\"hawa-flex hawa-flex-col hawa-w-full hawa-gap-2\">\n <div className={\"hawa-relative\"}>\n {props.startIcon && (\n <div className=\"hawa-absolute hawa-start-3 hawa-top-1/2 hawa--translate-y-1/2\">\n {props.startIcon}\n </div>\n )}\n {props.endIcon && (\n <div\n className={cn(\n \"hawa-absolute hawa-end-3 hawa-top-1/2 hawa--translate-y-1/2\",\n props.endIconProps?.className,\n )}\n >\n {props.endIcon}\n </div>\n )}\n <input\n required\n dir={props.dir}\n type={props.type}\n value={props.value}\n onChange={handleChange}\n autoComplete={props.autoComplete}\n defaultValue={props.defaultValue}\n placeholder={placeholder}\n disabled={props.disabled || preview}\n style={{ height: 40 }}\n {...inputProps}\n className={cn(\n defaultInputStyle,\n \" focus-visible:hawa-outline-none focus-visible:hawa-ring-2 focus-visible:hawa-ring-ring focus-visible:hawa-ring-offset-0 dark:hawa-text-white\",\n {\n \"hawa-pe-9\": props.endIcon,\n \"hawa-ps-9\": props.startIcon,\n \"hawa-pe-[60px]\": countPosition === \"center\",\n },\n preview &&\n \"hawa-border-transparent hawa-bg-transparent hawa-px-0\",\n inputProps?.className,\n )}\n />\n </div>\n\n {/* Regular helper text */}\n {!forceHideHelperText && (\n <p\n className={cn(\n \"hawa-my-0 hawa-text-start hawa-text-xs hawa-text-helper-color hawa-transition-all\",\n props.helperText\n ? \"hawa-h-4 hawa-opacity-100\"\n : \"hawa-h-0 hawa-opacity-0\",\n )}\n >\n {props.helperText}\n </p>\n )}\n {/* Popover helper text */}\n {!props.disabled && forceHideHelperText && (\n <div\n className={cn(\n \"hawa-absolute hawa-end-0 hawa-top-[47px] hawa-z-20 hawa-translate-y-1/2 hawa-rounded hawa-bg-background hawa-text-start hawa-text-xs hawa-text-helper-color hawa-drop-shadow-md hawa-transition-all\",\n props.helperText\n ? \"hawa-border hawa-p-1\"\n : \"hawa-border-none hawa-p-0\",\n )}\n >\n {props.helperText}\n </div>\n )}\n {/* Character Counter */}\n {showCount && (\n <div\n className={cn(\n \"hawa-absolute hawa-translate-y-1/2 hawa-text-start hawa-text-xs hawa-transition-all\",\n {\n \"hawa-end-0 hawa-top-[62px]\":\n countPosition === \"bottom\",\n \"hawa-bottom-[62px] hawa-end-0\":\n countPosition === \"top\",\n \"hawa-end-2\": countPosition === \"center\",\n },\n )}\n >\n {props.value ? String(props.value).length : 0}/\n {props.maxLength}\n </div>\n )}\n\n {/* Popover helper text */}\n {/* {props.popup && (\n <div\n className={cn(\n \"hawa-absolute hawa-top-[47px] hawa-min-h-fit hawa-w-full hawa-text-xs hawa-text-helper-color hawa-transition-all hawa-text-start hawa-rounded hawa-end-0 hawa-z-20 hawa-drop-shadow-md hawa-bg-background hawa-translate-y-1/2\",\n props.helperText\n ? \"hawa-border hawa-p-1\"\n : \"hawa-border-none hawa-p-0\"\n )}\n >\n {props.popupContent}\n </div>\n )} */}\n </div>\n </>\n )}\n </div>\n </div>\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","import * as React from \"react\";\n\nimport { PositionType } from \"@_types/commonTypes\";\n\nimport { cn } from \"@util/index\";\nimport { Tooltip } from \"../tooltip\";\n\nexport type LabelProps = {\n hint?: React.ReactNode;\n hintSide?: PositionType;\n htmlFor?: string;\n required?: boolean;\n};\n\nconst Label = React.forwardRef<\n HTMLLabelElement,\n React.LabelHTMLAttributes<HTMLLabelElement> & LabelProps\n>(({ className, hint, hintSide, required, children, ...props }, ref) => (\n <div className=\"hawa-flex hawa-flex-row hawa-items-center hawa-gap-1 hawa-transition-all\">\n <label\n ref={ref}\n className={cn(\n \"hawa-text-sm hawa-font-medium hawa-leading-none peer-disabled:hawa-cursor-not-allowed peer-disabled:hawa-opacity-70\",\n className\n )}\n {...props}\n >\n {children}\n {required && <span className=\"hawa-mx-0.5 hawa-text-red-500\">*</span>}\n </label>\n {hint && (\n <Tooltip\n content={hint}\n side={hintSide}\n triggerProps={{\n tabIndex: -1,\n onClick: (event) => event.preventDefault()\n }}\n >\n <div>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"hawa-h-[14px] hawa-w-[14px] hawa-cursor-help\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\" />\n <path d=\"M12 17h.01\" />\n </svg>\n </div>\n </Tooltip>\n )}\n </div>\n));\n\nLabel.displayName = \"Label\";\n\nexport { Label };\n","import React from \"react\";\n\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { cn } from \"@util/index\";\n\nimport { PositionType } from \"@_types/commonTypes\";\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content> & {\n size?: \"default\" | \"small\" | \"large\";\n }\n>(({ className, sideOffset = 4, size = \"default\", ...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 {\n \"hawa-text-xs\": size === \"small\",\n \"hawa-text-xl\": size === \"large\"\n },\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 /** Size of the tooltip. */\n size?: \"default\" | \"small\" | \"large\";\n /** Disables the tooltip. */\n disabled?: boolean;\n triggerProps?: TooltipPrimitive.TooltipTriggerProps;\n contentProps?: TooltipPrimitive.TooltipContentProps;\n providerProps?: TooltipPrimitive.TooltipProviderProps;\n};\n\nconst Tooltip: React.FunctionComponent<TooltipTypes> = ({\n side,\n size,\n open,\n content,\n children,\n disabled,\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={!disabled && open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n {...props}\n >\n <TooltipPrimitive.Trigger {...triggerProps}>\n {children}\n </TooltipPrimitive.Trigger>\n <TooltipContent\n size={size}\n side={side}\n align=\"center\"\n {...contentProps}\n style={{\n ...contentProps?.style,\n maxWidth: \"var(--radix-tooltip-content-available-width)\",\n maxHeight: \"var(--radix-tooltip-content-available-height)\"\n }}\n >\n {content}\n </TooltipContent>\n </TooltipPrimitive.Root>\n </TooltipPrimitive.TooltipProvider>\n );\n};\n\nexport { Tooltip };\n","import React from \"react\";\n\nimport { cn } from \"@util/index\";\n\ninterface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n animation?: \"none\" | \"pulse\" | \"shimmer\";\n content?: any;\n fade?: \"top\" | \"bottom\" | \"left\" | \"right\";\n}\n\nfunction Skeleton({\n className,\n content,\n animation = \"pulse\",\n fade,\n ...props\n}: SkeletonProps) {\n const animationStyles = {\n none: \"hawa-rounded hawa-bg-muted\",\n pulse: \"hawa-animate-pulse hawa-rounded hawa-bg-muted\",\n shimmer:\n \"hawa-space-y-5 hawa-rounded hawa-bg-muted hawa-p-4 hawa-relative before:hawa-absolute before:hawa-inset-0 before:hawa--translate-x-full before:hawa-animate-[shimmer_2s_infinite] before:hawa-bg-gradient-to-r before:hawa-from-transparent before:hawa-via-gray-300/40 dark:before:hawa-via-white/10 before:hawa-to-transparent hawa-isolate hawa-overflow-hidden before:hawa-border-t before:hawa-border-rose-100/10\",\n };\n const fadeStyle = {\n bottom: \"hawa-mask-fade-bottom\",\n top: \"hawa-mask-fade-top\",\n right: \"hawa-mask-fade-right\",\n left: \"hawa-mask-fade-left \",\n };\n\n return (\n <div\n className={cn(\n animationStyles[animation],\n content &&\n \"hawa-flex hawa-flex-col hawa-items-center hawa-justify-center\",\n fade && fadeStyle[fade],\n className,\n )}\n {...props}\n >\n {content && content}\n </div>\n );\n}\n\nexport { Skeleton };\n"],"mappings":"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","names":["import_react","React","React","import_react","React","React"]}
|
package/dist/input/index.mjs
CHANGED
@@ -188,7 +188,7 @@ var Input = forwardRef2(
|
|
188
188
|
auto: ""
|
189
189
|
};
|
190
190
|
let defaultStyle = "hawa-flex hawa-max-h-fit hawa-h-fit hawa-relative hawa-flex-col hawa-justify-center hawa-gap-0";
|
191
|
-
let defaultInputStyle = "hawa-block hawa-w-full hawa-rounded hawa-border hawa-transition-all hawa-bg-background hawa-p-3 hawa-text-sm ";
|
191
|
+
let defaultInputStyle = "hawa-block hawa-w-full hawa-rounded hawa-border hawa-transition-all hawa-bg-background hawa-p-3 hawa-text-sm placeholder:hawa-text-muted-foreground";
|
192
192
|
const handleChange = (e) => {
|
193
193
|
let newValue = e.target.value;
|
194
194
|
if (props.prefixText) {
|
@@ -227,7 +227,31 @@ var Input = forwardRef2(
|
|
227
227
|
)
|
228
228
|
},
|
229
229
|
props.outsidePrefix
|
230
|
-
), props.isLoading ? /* @__PURE__ */ React4.createElement("div", { className: "hawa-pb-2 hawa-w-full" }, /* @__PURE__ */ React4.createElement(Skeleton, { className: "hawa-h-[40px] hawa-w-full" })) : /* @__PURE__ */ React4.createElement(
|
230
|
+
), props.isLoading ? /* @__PURE__ */ React4.createElement("div", { className: "hawa-pb-2 hawa-w-full" }, /* @__PURE__ */ React4.createElement(Skeleton, { className: "hawa-h-[40px] hawa-w-full" })) : props.isLoadingError ? /* @__PURE__ */ React4.createElement("div", { className: "hawa-pb-2 hawa-w-full" }, /* @__PURE__ */ React4.createElement(
|
231
|
+
Skeleton,
|
232
|
+
{
|
233
|
+
animation: "none",
|
234
|
+
className: "hawa-h-[40px] hawa-w-full !hawa-bg-destructive/[0.3]",
|
235
|
+
content: /* @__PURE__ */ React4.createElement("div", { className: "hawa-flex hawa-flex-row hawa-gap-2" }, /* @__PURE__ */ React4.createElement(
|
236
|
+
"svg",
|
237
|
+
{
|
238
|
+
xmlns: "http://www.w3.org/2000/svg",
|
239
|
+
width: "20",
|
240
|
+
height: "20",
|
241
|
+
viewBox: "0 0 24 24",
|
242
|
+
fill: "none",
|
243
|
+
stroke: "currentColor",
|
244
|
+
strokeWidth: "2",
|
245
|
+
strokeLinecap: "round",
|
246
|
+
strokeLinejoin: "round",
|
247
|
+
className: "hawa-text-destructive"
|
248
|
+
},
|
249
|
+
/* @__PURE__ */ React4.createElement("path", { d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3" }),
|
250
|
+
/* @__PURE__ */ React4.createElement("path", { d: "M12 9v4" }),
|
251
|
+
/* @__PURE__ */ React4.createElement("path", { d: "M12 17h.01" })
|
252
|
+
), /* @__PURE__ */ React4.createElement("span", null, /* @__PURE__ */ React4.createElement("span", { className: "hawa-text-destructive" }, props.loadingErrorMesssage || "Error loading data")))
|
253
|
+
}
|
254
|
+
)) : /* @__PURE__ */ React4.createElement(React4.Fragment, null, !props.hideSeparator && /* @__PURE__ */ React4.createElement(
|
231
255
|
"div",
|
232
256
|
{
|
233
257
|
className: cn(
|