@sikka/hawa 0.36.2-next → 0.37.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/appLayout/index.js +1 -1
- package/dist/appLayout/index.js.map +1 -1
- package/dist/appLayout/index.mjs +1 -1
- package/dist/appLayout/index.mjs.map +1 -1
- package/dist/blocks/auth/index.js +24 -25
- package/dist/blocks/auth/index.mjs +4 -4
- package/dist/blocks/feedback/index.js +24 -25
- package/dist/blocks/feedback/index.mjs +5 -5
- package/dist/blocks/index.js +308 -192
- package/dist/blocks/index.mjs +3 -3
- package/dist/blocks/misc/index.js +270 -154
- package/dist/blocks/misc/index.mjs +53 -19
- package/dist/blocks/pricing/index.js +107 -22
- package/dist/blocks/pricing/index.mjs +4 -4
- package/dist/card/index.d.mts +3 -1
- package/dist/card/index.d.ts +3 -1
- package/dist/card/index.js +13 -11
- package/dist/card/index.js.map +1 -1
- package/dist/card/index.mjs +13 -11
- package/dist/card/index.mjs.map +1 -1
- package/dist/{chunk-WABHQMUI.mjs → chunk-BPHQFAWM.mjs} +1 -1
- package/dist/{chunk-MVKP55SZ.mjs → chunk-BTDR3VAG.mjs} +1 -1
- package/dist/{chunk-7L2JUNG2.mjs → chunk-DS3AACQJ.mjs} +1 -1
- package/dist/{chunk-BXBSZD5X.mjs → chunk-MDHDHEPZ.mjs} +1 -1
- package/dist/{chunk-6QIOEUE2.mjs → chunk-ODOCZAWC.mjs} +1 -1
- package/dist/{chunk-YP2CCKZG.mjs → chunk-PXGL7ZXQ.mjs} +13 -11
- package/dist/{chunk-HLYAX77R.mjs → chunk-QXH7ZDMN.mjs} +12 -15
- package/dist/{chunk-T33FXOHA.mjs → chunk-QYWOI3DO.mjs} +152 -41
- package/dist/{chunk-NNPNQK6F.mjs → chunk-RNFJAEEU.mjs} +13 -11
- package/dist/{chunk-OPYDG34F.mjs → chunk-ZBUBNKF6.mjs} +93 -1
- package/dist/{chunk-CJ57JBYA.mjs → chunk-ZTUWU652.mjs} +95 -12
- package/dist/combobox/index.d.mts +1 -4
- package/dist/combobox/index.d.ts +1 -4
- package/dist/combobox/index.js +2 -1
- package/dist/combobox/index.js.map +1 -1
- package/dist/combobox/index.mjs +2 -1
- package/dist/combobox/index.mjs.map +1 -1
- package/dist/command/index.d.mts +4 -36
- package/dist/command/index.d.ts +4 -36
- package/dist/command/index.js +43 -5
- package/dist/command/index.js.map +1 -1
- package/dist/command/index.mjs +39 -3
- package/dist/command/index.mjs.map +1 -1
- package/dist/destroyableCard/index.js +13 -11
- package/dist/destroyableCard/index.js.map +1 -1
- package/dist/destroyableCard/index.mjs +13 -11
- package/dist/destroyableCard/index.mjs.map +1 -1
- package/dist/elements/index.d.mts +31 -3
- package/dist/elements/index.d.ts +31 -3
- package/dist/elements/index.js +450 -295
- package/dist/elements/index.mjs +43 -6
- package/dist/hooks/index.d.mts +25 -1
- package/dist/hooks/index.d.ts +25 -1
- package/dist/hooks/index.js +96 -0
- package/dist/hooks/index.mjs +9 -1
- package/dist/index-e_Ob_SnB.d.mts +63 -0
- package/dist/index-e_Ob_SnB.d.ts +63 -0
- package/dist/index.css +20 -3
- package/dist/index.d.mts +55 -3
- package/dist/index.d.ts +55 -3
- package/dist/index.js +966 -718
- package/dist/index.mjs +494 -252
- package/dist/layout/index.js +14 -12
- package/dist/layout/index.mjs +3 -3
- package/dist/phoneInput/index.js +11 -14
- package/dist/phoneInput/index.js.map +1 -1
- package/dist/phoneInput/index.mjs +11 -14
- package/dist/phoneInput/index.mjs.map +1 -1
- package/dist/scrollArea/index.js +94 -11
- package/dist/scrollArea/index.js.map +1 -1
- package/dist/scrollArea/index.mjs +94 -11
- package/dist/scrollArea/index.mjs.map +1 -1
- package/dist/select/index.js +11 -14
- package/dist/select/index.js.map +1 -1
- package/dist/select/index.mjs +11 -14
- package/dist/select/index.mjs.map +1 -1
- package/dist/stats/index.js +13 -11
- package/dist/stats/index.js.map +1 -1
- package/dist/stats/index.mjs +13 -11
- package/dist/stats/index.mjs.map +1 -1
- package/dist/tabs/index.d.mts +3 -1
- package/dist/tabs/index.d.ts +3 -1
- package/dist/tabs/index.js +189 -32
- package/dist/tabs/index.js.map +1 -1
- package/dist/tabs/index.mjs +184 -27
- package/dist/tabs/index.mjs.map +1 -1
- package/package.json +1 -1
@@ -1,17 +1,17 @@
|
|
1
1
|
"use client";
|
2
2
|
import {
|
3
3
|
Input
|
4
|
-
} from "../../chunk-
|
4
|
+
} from "../../chunk-MDHDHEPZ.mjs";
|
5
5
|
import {
|
6
6
|
Chip,
|
7
7
|
ScrollArea
|
8
|
-
} from "../../chunk-
|
8
|
+
} from "../../chunk-ZTUWU652.mjs";
|
9
9
|
import {
|
10
10
|
Textarea
|
11
|
-
} from "../../chunk-
|
11
|
+
} from "../../chunk-BPHQFAWM.mjs";
|
12
12
|
import {
|
13
13
|
Select
|
14
|
-
} from "../../chunk-
|
14
|
+
} from "../../chunk-QXH7ZDMN.mjs";
|
15
15
|
import {
|
16
16
|
Button,
|
17
17
|
Card,
|
@@ -21,7 +21,7 @@ import {
|
|
21
21
|
CardHeader,
|
22
22
|
CardTitle,
|
23
23
|
cn
|
24
|
-
} from "../../chunk-
|
24
|
+
} from "../../chunk-PXGL7ZXQ.mjs";
|
25
25
|
|
26
26
|
// blocks/misc/LegalTexts.tsx
|
27
27
|
import React11 from "react";
|
@@ -113,6 +113,9 @@ var useMeasureDirty = (ref) => {
|
|
113
113
|
// hooks/useClickOutside.ts
|
114
114
|
import { useEffect as useEffect14, useRef as useRef8 } from "react";
|
115
115
|
|
116
|
+
// hooks/useShortcuts.ts
|
117
|
+
import { useEffect as useEffect15 } from "react";
|
118
|
+
|
116
119
|
// elements/tabs/Tabs.tsx
|
117
120
|
import * as TabsPrimitive from "@radix-ui/react-tabs";
|
118
121
|
import { tv } from "tailwind-variants";
|
@@ -177,9 +180,9 @@ var tabsListVariant = tv({
|
|
177
180
|
base: "",
|
178
181
|
variants: {
|
179
182
|
variant: {
|
180
|
-
default: "hawa-flex hawa-w-fit hawa-
|
181
|
-
underlined: "hawa-flex hawa-w-fit hawa-
|
182
|
-
underlined_tabs: "hawa-flex hawa-w-fit hawa-
|
183
|
+
default: "hawa-flex hawa-w-fit hawa-items-center hawa-justify-start hawa-gap-1 hawa-rounded hawa-border hawa-bg-muted hawa-p-1 hawa-text-muted-foreground dark:hawa-border-primary/10",
|
184
|
+
underlined: "hawa-flex hawa-w-fit hawa-items-center hawa-justify-start hawa-gap-1 hawa-rounded hawa-p-1 hawa-text-muted-foreground dark:hawa-border-primary/10",
|
185
|
+
underlined_tabs: "hawa-flex hawa-w-fit hawa-items-center hawa-justify-start hawa-gap-1 hawa-text-muted-foreground"
|
183
186
|
},
|
184
187
|
orientation: { horizontal: "", vertical: "" }
|
185
188
|
},
|
@@ -247,18 +250,49 @@ var Tabs = React10.forwardRef(({ className, orientation, variant = "default", ..
|
|
247
250
|
));
|
248
251
|
var TabsList = React10.forwardRef(({ className, ...props }, ref) => {
|
249
252
|
const { orientation, variant } = React10.useContext(TabsContext);
|
250
|
-
|
251
|
-
|
252
|
-
{
|
253
|
-
ref,
|
254
|
-
className: cn(
|
255
|
-
tabsListVariant({ variant, orientation }),
|
256
|
-
orientation === "vertical" ? "hawa-flex-col" : "hawa-flex-row",
|
257
|
-
className
|
258
|
-
),
|
259
|
-
...props
|
260
|
-
}
|
253
|
+
const [size, setSize] = React10.useState(
|
254
|
+
typeof window !== "undefined" && window.innerWidth || 1200
|
261
255
|
);
|
256
|
+
React10.useEffect(() => {
|
257
|
+
if (typeof window !== "undefined") {
|
258
|
+
const resize = () => {
|
259
|
+
setSize(window.innerWidth);
|
260
|
+
};
|
261
|
+
resize();
|
262
|
+
window.addEventListener("resize", resize);
|
263
|
+
return () => {
|
264
|
+
window.removeEventListener("resize", resize);
|
265
|
+
};
|
266
|
+
}
|
267
|
+
}, []);
|
268
|
+
if ((props.scrollable || size < 768) && orientation === "horizontal") {
|
269
|
+
return /* @__PURE__ */ React10.createElement(ScrollArea, { orientation: "horizontal" }, /* @__PURE__ */ React10.createElement(
|
270
|
+
TabsPrimitive.List,
|
271
|
+
{
|
272
|
+
ref,
|
273
|
+
className: cn(
|
274
|
+
tabsListVariant({ variant, orientation }),
|
275
|
+
"hawa-flex-row hawa-flex-nowrap",
|
276
|
+
className
|
277
|
+
),
|
278
|
+
...props
|
279
|
+
}
|
280
|
+
));
|
281
|
+
} else {
|
282
|
+
return /* @__PURE__ */ React10.createElement(
|
283
|
+
TabsPrimitive.List,
|
284
|
+
{
|
285
|
+
ref,
|
286
|
+
className: cn(
|
287
|
+
tabsListVariant({ variant, orientation }),
|
288
|
+
orientation === "vertical" ? "hawa-flex-col" : "hawa-flex-row",
|
289
|
+
"hawa-flex-wrap",
|
290
|
+
className
|
291
|
+
),
|
292
|
+
...props
|
293
|
+
}
|
294
|
+
);
|
295
|
+
}
|
262
296
|
});
|
263
297
|
var TabsTrigger = React10.forwardRef(({ className, chipProps, ...props }, ref) => {
|
264
298
|
const { orientation, variant } = React10.useContext(TabsContext);
|
@@ -509,17 +509,19 @@ var Card = React8.forwardRef(
|
|
509
509
|
);
|
510
510
|
}
|
511
511
|
);
|
512
|
-
var CardHeader = React8.forwardRef(
|
513
|
-
"div",
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
512
|
+
var CardHeader = React8.forwardRef(
|
513
|
+
({ className, ...props }, ref) => /* @__PURE__ */ React8.createElement("div", { className: "hawa-flex hawa-flex-row hawa-justify-between" }, /* @__PURE__ */ React8.createElement(
|
514
|
+
"div",
|
515
|
+
{
|
516
|
+
ref,
|
517
|
+
className: cn(
|
518
|
+
"hawa-flex hawa-flex-col hawa-space-y-1.5 hawa-p-6",
|
519
|
+
className
|
520
|
+
),
|
521
|
+
...props
|
522
|
+
}
|
523
|
+
), props.actions && /* @__PURE__ */ React8.createElement("div", { className: "hawa-p-6" }, props.actions))
|
524
|
+
);
|
523
525
|
var CardTitle = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React8.createElement(
|
524
526
|
"h3",
|
525
527
|
{
|
@@ -1362,17 +1364,100 @@ var import_react18 = __toESM(require("react"));
|
|
1362
1364
|
// elements/scrollArea/ScrollArea.tsx
|
1363
1365
|
var React20 = __toESM(require("react"));
|
1364
1366
|
var ScrollAreaPrimitive = __toESM(require("@radix-ui/react-scroll-area"));
|
1365
|
-
var ScrollArea = React20.forwardRef(({ className, children, orientation = "vertical", ...props }, ref) =>
|
1366
|
-
|
1367
|
-
|
1368
|
-
|
1369
|
-
|
1370
|
-
|
1371
|
-
|
1372
|
-
|
1373
|
-
|
1374
|
-
|
1375
|
-
)
|
1367
|
+
var ScrollArea = React20.forwardRef(({ className, children, orientation = "vertical", ...props }, ref) => {
|
1368
|
+
const scrollAreaRef = React20.useRef(null);
|
1369
|
+
const isDragging = React20.useRef(false);
|
1370
|
+
const startPos = React20.useRef({ x: 0, y: 0 });
|
1371
|
+
const scrollPos = React20.useRef({ top: 0, left: 0 });
|
1372
|
+
const [showLeftFade, setShowLeftFade] = React20.useState(false);
|
1373
|
+
const [showRightFade, setShowRightFade] = React20.useState(false);
|
1374
|
+
const checkOverflow = () => {
|
1375
|
+
if (scrollAreaRef.current) {
|
1376
|
+
const { scrollLeft, scrollWidth, clientWidth } = scrollAreaRef.current;
|
1377
|
+
setShowLeftFade(scrollLeft > 0);
|
1378
|
+
setShowRightFade(scrollLeft + clientWidth < scrollWidth);
|
1379
|
+
}
|
1380
|
+
};
|
1381
|
+
const onMouseDown = (e) => {
|
1382
|
+
isDragging.current = true;
|
1383
|
+
startPos.current = { x: e.clientX, y: e.clientY };
|
1384
|
+
if (scrollAreaRef.current) {
|
1385
|
+
scrollPos.current = {
|
1386
|
+
top: scrollAreaRef.current.scrollTop,
|
1387
|
+
left: scrollAreaRef.current.scrollLeft
|
1388
|
+
};
|
1389
|
+
}
|
1390
|
+
document.addEventListener("mousemove", onMouseMove);
|
1391
|
+
document.addEventListener("mouseup", onMouseUp);
|
1392
|
+
};
|
1393
|
+
const onMouseMove = (e) => {
|
1394
|
+
if (!isDragging.current || !scrollAreaRef.current)
|
1395
|
+
return;
|
1396
|
+
const dx = e.clientX - startPos.current.x;
|
1397
|
+
const dy = e.clientY - startPos.current.y;
|
1398
|
+
if (orientation === "vertical") {
|
1399
|
+
scrollAreaRef.current.scrollTop = scrollPos.current.top - dy;
|
1400
|
+
} else {
|
1401
|
+
scrollAreaRef.current.scrollLeft = scrollPos.current.left - dx;
|
1402
|
+
checkOverflow();
|
1403
|
+
}
|
1404
|
+
};
|
1405
|
+
const onMouseUp = () => {
|
1406
|
+
isDragging.current = false;
|
1407
|
+
document.removeEventListener("mousemove", onMouseMove);
|
1408
|
+
document.removeEventListener("mouseup", onMouseUp);
|
1409
|
+
};
|
1410
|
+
React20.useEffect(() => {
|
1411
|
+
checkOverflow();
|
1412
|
+
if (scrollAreaRef.current) {
|
1413
|
+
scrollAreaRef.current.addEventListener("scroll", checkOverflow);
|
1414
|
+
window.addEventListener("resize", checkOverflow);
|
1415
|
+
}
|
1416
|
+
return () => {
|
1417
|
+
if (scrollAreaRef.current) {
|
1418
|
+
scrollAreaRef.current.removeEventListener("scroll", checkOverflow);
|
1419
|
+
}
|
1420
|
+
window.removeEventListener("resize", checkOverflow);
|
1421
|
+
};
|
1422
|
+
}, []);
|
1423
|
+
return /* @__PURE__ */ React20.createElement(
|
1424
|
+
ScrollAreaPrimitive.Root,
|
1425
|
+
{
|
1426
|
+
ref,
|
1427
|
+
className: cn("hawa-relative hawa-overflow-hidden", className),
|
1428
|
+
...props
|
1429
|
+
},
|
1430
|
+
/* @__PURE__ */ React20.createElement(
|
1431
|
+
"div",
|
1432
|
+
{
|
1433
|
+
className: cn(
|
1434
|
+
"hawa-pointer-events-none hawa-absolute hawa-bg-background/ hawa-h-full hawa-w-[50px] hawa-z-10 hawa-start-0 hawa-mask-fade-right",
|
1435
|
+
showLeftFade ? "hawa-block" : "hawa-hidden"
|
1436
|
+
)
|
1437
|
+
}
|
1438
|
+
),
|
1439
|
+
/* @__PURE__ */ React20.createElement(
|
1440
|
+
"div",
|
1441
|
+
{
|
1442
|
+
className: cn(
|
1443
|
+
"hawa-pointer-events-none hawa-absolute hawa-bg-background/ hawa-mask-fade-left hawa-end-0 hawa-h-full hawa-w-[50px] hawa-z-10 ",
|
1444
|
+
showRightFade ? "hawa-block" : "hawa-hidden"
|
1445
|
+
)
|
1446
|
+
}
|
1447
|
+
),
|
1448
|
+
/* @__PURE__ */ React20.createElement(
|
1449
|
+
ScrollAreaPrimitive.Viewport,
|
1450
|
+
{
|
1451
|
+
ref: scrollAreaRef,
|
1452
|
+
className: "hawa-h-full hawa-w-full hawa-rounded-[inherit]",
|
1453
|
+
onMouseDown
|
1454
|
+
},
|
1455
|
+
children
|
1456
|
+
),
|
1457
|
+
/* @__PURE__ */ React20.createElement(ScrollBar, { orientation }),
|
1458
|
+
/* @__PURE__ */ React20.createElement(ScrollAreaPrimitive.Corner, null)
|
1459
|
+
);
|
1460
|
+
});
|
1376
1461
|
ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
|
1377
1462
|
var ScrollBar = React20.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ React20.createElement(
|
1378
1463
|
ScrollAreaPrimitive.ScrollAreaScrollbar,
|
@@ -2,22 +2,22 @@
|
|
2
2
|
import {
|
3
3
|
Chip,
|
4
4
|
ScrollArea
|
5
|
-
} from "../../chunk-
|
5
|
+
} from "../../chunk-ZTUWU652.mjs";
|
6
6
|
import "../../chunk-47APBDKK.mjs";
|
7
7
|
import {
|
8
8
|
Radio
|
9
|
-
} from "../../chunk-
|
9
|
+
} from "../../chunk-BTDR3VAG.mjs";
|
10
10
|
import {
|
11
11
|
CheckMark,
|
12
12
|
UncheckMark
|
13
|
-
} from "../../chunk-
|
13
|
+
} from "../../chunk-DS3AACQJ.mjs";
|
14
14
|
import {
|
15
15
|
Button,
|
16
16
|
Card,
|
17
17
|
Skeleton,
|
18
18
|
Tooltip,
|
19
19
|
cn
|
20
|
-
} from "../../chunk-
|
20
|
+
} from "../../chunk-PXGL7ZXQ.mjs";
|
21
21
|
|
22
22
|
// blocks/pricing/PricingPlans.tsx
|
23
23
|
import React8 from "react";
|
package/dist/card/index.d.mts
CHANGED
@@ -6,7 +6,9 @@ interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
6
6
|
asContainer?: boolean;
|
7
7
|
}
|
8
8
|
declare const Card: React.ForwardRefExoticComponent<CardProps & React.RefAttributes<HTMLDivElement>>;
|
9
|
-
declare const CardHeader: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> &
|
9
|
+
declare const CardHeader: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
|
10
|
+
actions?: React.ReactNode;
|
11
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
10
12
|
declare const CardTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLHeadingElement> & React.RefAttributes<HTMLParagraphElement>>;
|
11
13
|
declare const CardDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLParagraphElement> & React.RefAttributes<HTMLParagraphElement>>;
|
12
14
|
declare const CardContent: React.ForwardRefExoticComponent<{
|
package/dist/card/index.d.ts
CHANGED
@@ -6,7 +6,9 @@ interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
6
6
|
asContainer?: boolean;
|
7
7
|
}
|
8
8
|
declare const Card: React.ForwardRefExoticComponent<CardProps & React.RefAttributes<HTMLDivElement>>;
|
9
|
-
declare const CardHeader: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> &
|
9
|
+
declare const CardHeader: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
|
10
|
+
actions?: React.ReactNode;
|
11
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
10
12
|
declare const CardTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLHeadingElement> & React.RefAttributes<HTMLParagraphElement>>;
|
11
13
|
declare const CardDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLParagraphElement> & React.RefAttributes<HTMLParagraphElement>>;
|
12
14
|
declare const CardContent: React.ForwardRefExoticComponent<{
|
package/dist/card/index.js
CHANGED
@@ -80,17 +80,19 @@ var Card = React.forwardRef(
|
|
80
80
|
);
|
81
81
|
}
|
82
82
|
);
|
83
|
-
var CardHeader = React.forwardRef(
|
84
|
-
"div",
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
83
|
+
var CardHeader = React.forwardRef(
|
84
|
+
({ className, ...props }, ref) => /* @__PURE__ */ React.createElement("div", { className: "hawa-flex hawa-flex-row hawa-justify-between" }, /* @__PURE__ */ React.createElement(
|
85
|
+
"div",
|
86
|
+
{
|
87
|
+
ref,
|
88
|
+
className: cn(
|
89
|
+
"hawa-flex hawa-flex-col hawa-space-y-1.5 hawa-p-6",
|
90
|
+
className
|
91
|
+
),
|
92
|
+
...props
|
93
|
+
}
|
94
|
+
), props.actions && /* @__PURE__ */ React.createElement("div", { className: "hawa-p-6" }, props.actions))
|
95
|
+
);
|
94
96
|
var CardTitle = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React.createElement(
|
95
97
|
"h3",
|
96
98
|
{
|
package/dist/card/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../elements/card/index.ts","../../elements/card/Card.tsx","../../util/index.ts"],"sourcesContent":["export * from \"./Card\";\n","import * as React from \"react\";\n\nimport { cn } from \"@util/index\";\n\ninterface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n clickable?: boolean;\n variant?: \"default\" | \"neoBrutalism\";\n asContainer?: boolean;\n}\n\ntype CardContentProps = {\n headless?: boolean;\n noPadding?: boolean;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n (\n {\n className,\n variant = \"default\",\n clickable = false,\n asContainer = false,\n ...props\n },\n ref,\n ) => {\n let variantStyles = {\n default: cn(\n \"hawa-rounded-lg hawa-border hawa-bg-card hawa-text-card-foreground hawa-shadow-sm\",\n clickable &&\n \"hawa-cursor-pointer hawa-transition-all hover:hawa-drop-shadow-md dark:hover:dark-shadow\",\n ),\n neoBrutalism: cn(\n \"neo-brutalism\",\n // \"hawa-transition-all hawa-uppercase hawa-font-mono dark:hawa-bg-black hawa-font-bold hawa-py-2 hawa-px-4 hawa-rounded hawa-border-2 hawa-border-primary hawa-shadow-color-primary hawa-transition-[hawa-transform_50ms, hawa-box-shadow_50ms] transition-all uppercase font-mono dark:bg-black font-bold py-2 px-4 rounded border-2 border-primary shadow-color-primary transition-[transform_50ms, box-shadow_50ms]\",\n clickable &&\n \"hawa-cursor-pointer active:hawa-translate-x-0.5 active:hawa-translate-y-0.5 active:hawa-shadow-color-primary-active active:translate-x-0.5 active:translate-y-0.5 active:shadow-color-primary-active\",\n ),\n };\n return (\n <div\n ref={ref}\n className={cn(className, !asContainer && variantStyles[variant])}\n {...props}\n />\n );\n },\n);\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"hawa-flex hawa-flex-col hawa-space-y-1.5 hawa-p-6\",\n className,\n )}\n {...props}\n />\n));\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"hawa-text-2xl hawa-font-semibold \", className)}\n {...props}\n />\n));\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"hawa-text-sm hawa-text-muted-foreground\", className)}\n {...props}\n />\n));\nconst CardContent = React.forwardRef<HTMLDivElement, CardContentProps>(\n ({ headless, noPadding, className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n noPadding ? \"hawa-p-0\" : \"hawa-p-6\",\n headless ? \"hawa-pt-6\" : \"hawa-pt-0\",\n className,\n )}\n {...props}\n />\n ),\n);\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & { noPadding?: boolean }\n>(({ className, noPadding, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n noPadding ? \"hawa-p-0\" : \"hawa-p-6\",\n \"hawa-flex hawa-items-center hawa-pt-0\",\n className,\n )}\n {...props}\n />\n));\n\nCardDescription.displayName = \"CardDescription\";\nCardContent.displayName = \"CardContent\";\nCardHeader.displayName = \"CardHeader\";\nCardFooter.displayName = \"CardFooter\";\nCardTitle.displayName = \"CardTitle\";\nCard.displayName = \"Card\";\n\nexport {\n CardDescription,\n CardContent,\n CardHeader,\n CardFooter,\n CardTitle,\n Card,\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\ntype Palette = {\n name: string;\n colors: {\n [key: number]: string;\n };\n};\ntype Rgb = {\n r: number;\n g: number;\n b: number;\n};\nfunction hexToRgb(hex: string): Rgb | null {\n const sanitizedHex = hex.replaceAll(\"##\", \"#\");\n const colorParts = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(\n sanitizedHex\n );\n\n if (!colorParts) {\n return null;\n }\n\n const [, r, g, b] = colorParts;\n\n return {\n r: parseInt(r, 16),\n g: parseInt(g, 16),\n b: parseInt(b, 16)\n } as Rgb;\n}\n\nfunction rgbToHex(r: number, g: number, b: number): string {\n const toHex = (c: number) => `0${c.toString(16)}`.slice(-2);\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n}\n\nexport function getTextColor(color: string): \"#FFF\" | \"#333\" {\n const rgbColor = hexToRgb(color);\n\n if (!rgbColor) {\n return \"#333\";\n }\n\n const { r, g, b } = rgbColor;\n const luma = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n\n return luma < 120 ? \"#FFF\" : \"#333\";\n}\n\nfunction lighten(hex: string, intensity: number): string {\n const color = hexToRgb(`#${hex}`);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r + (255 - color.r) * intensity);\n const g = Math.round(color.g + (255 - color.g) * intensity);\n const b = Math.round(color.b + (255 - color.b) * intensity);\n\n return rgbToHex(r, g, b);\n}\n\nfunction darken(hex: string, intensity: number): string {\n const color = hexToRgb(hex);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r * intensity);\n const g = Math.round(color.g * intensity);\n const b = Math.round(color.b * intensity);\n\n return rgbToHex(r, g, b);\n}\nconst parseColor = (color: any) => {\n if (color.startsWith(\"#\")) {\n // Convert hex to RGB\n let r = parseInt(color.slice(1, 3), 16);\n let g = parseInt(color.slice(3, 5), 16);\n let b = parseInt(color.slice(5, 7), 16);\n return [r, g, b];\n } else if (color.startsWith(\"rgb\")) {\n // Extract RGB values from rgb() format\n return color.match(/\\d+/g).map(Number);\n }\n // Default to white if format is unrecognized\n return [255, 255, 255];\n};\nexport const calculateLuminance = (color: any) => {\n const [r, g, b] = parseColor(color)?.map((c: any) => {\n c /= 255;\n return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;\n });\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n};\n\nfunction getPallette(baseColor: string): Palette {\n const name = baseColor;\n\n const response: Palette = {\n name,\n colors: {\n 500: `#${baseColor}`.replace(\"##\", \"#\")\n }\n };\n\n const intensityMap: {\n [key: number]: number;\n } = {\n 50: 0.95,\n 100: 0.9,\n 200: 0.75,\n 300: 0.6,\n 400: 0.3,\n 600: 0.9,\n 700: 0.75,\n 800: 0.6,\n 900: 0.49\n };\n\n [50, 100, 200, 300, 400].forEach((level) => {\n response.colors[level] = lighten(baseColor, intensityMap[level]);\n });\n [600, 700, 800, 900].forEach((level) => {\n response.colors[level] = darken(baseColor, intensityMap[level]);\n });\n\n return response as Palette;\n}\n\nexport { getPallette };\n\n// const hexToRgb = (hex) => {\n// let d = hex?.split(\"#\")[1];\n// var aRgbHex = d?.match(/.{1,2}/g);\n// var aRgb = [\n// parseInt(aRgbHex[0], 16),\n// parseInt(aRgbHex[1], 16),\n// parseInt(aRgbHex[2], 16)\n// ];\n// return aRgb;\n// };\n// const getTextColor = (backColor) => {\n// let rgbArray = hexToRgb(backColor);\n// if (rgbArray[0] * 0.299 + rgbArray[1] * 0.587 + rgbArray[2] * 0.114 > 186) {\n// return \"#000000\";\n// } else {\n// return \"#ffffff\";\n// }\n// };\n// const replaceAt = function (string, index, replacement) {\n// // if (replacement == \"\" || replacement == \" \") {\n// // return (\n// // string.substring(0, index) +\n// // string.substring(index + replacement.length )\n// // );\n// // }\n// const replaced = string.substring(0, index) + replacement + string.substring(index + 1)\n// return replaced\n// };\n\n// export { hexToRgb, getTextColor, replaceAt };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,YAAuB;;;ACAvB,kBAAsC;AACtC,4BAAwB;AAEjB,SAAS,MAAM,QAAsB;AAC1C,aAAO,mCAAQ,kBAAK,MAAM,CAAC;AAC7B;;;ADUA,IAAM,OAAa;AAAA,EACjB,CACE;AAAA,IACE;AAAA,IACA,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,GAAG;AAAA,EACL,GACA,QACG;AACH,QAAI,gBAAgB;AAAA,MAClB,SAAS;AAAA,QACP;AAAA,QACA,aACE;AAAA,MACJ;AAAA,MACA,cAAc;AAAA,QACZ;AAAA;AAAA,QAEA,aACE;AAAA,MACJ;AAAA,IACF;AACA,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW,GAAG,WAAW,CAAC,eAAe,cAAc,OAAO,CAAC;AAAA,QAC9D,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AACA,IAAM,aAAmB,iBAGvB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,IAAM,YAAkB,iBAGtB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,qCAAqC,SAAS;AAAA,IAC3D,GAAG;AAAA;AACN,CACD;AACD,IAAM,kBAAwB,iBAG5B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,2CAA2C,SAAS;AAAA,IACjE,GAAG;AAAA;AACN,CACD;AACD,IAAM,cAAoB;AAAA,EACxB,CAAC,EAAE,UAAU,WAAW,WAAW,GAAG,MAAM,GAAG,QAC7C;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT,YAAY,aAAa;AAAA,QACzB,WAAW,cAAc;AAAA,QACzB;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,IAAM,aAAmB,iBAGvB,CAAC,EAAE,WAAW,WAAW,GAAG,MAAM,GAAG,QACrC;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT,YAAY,aAAa;AAAA,MACzB;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AAED,gBAAgB,cAAc;AAC9B,YAAY,cAAc;AAC1B,WAAW,cAAc;AACzB,WAAW,cAAc;AACzB,UAAU,cAAc;AACxB,KAAK,cAAc;","names":[]}
|
1
|
+
{"version":3,"sources":["../../elements/card/index.ts","../../elements/card/Card.tsx","../../util/index.ts"],"sourcesContent":["export * from \"./Card\";\n","import * as React from \"react\";\n\nimport { cn } from \"@util/index\";\n\ninterface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n clickable?: boolean;\n variant?: \"default\" | \"neoBrutalism\";\n asContainer?: boolean;\n}\n\ntype CardContentProps = {\n headless?: boolean;\n noPadding?: boolean;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n (\n {\n className,\n variant = \"default\",\n clickable = false,\n asContainer = false,\n ...props\n },\n ref,\n ) => {\n let variantStyles = {\n default: cn(\n \"hawa-rounded-lg hawa-border hawa-bg-card hawa-text-card-foreground hawa-shadow-sm\",\n clickable &&\n \"hawa-cursor-pointer hawa-transition-all hover:hawa-drop-shadow-md dark:hover:dark-shadow\",\n ),\n neoBrutalism: cn(\n \"neo-brutalism\",\n // \"hawa-transition-all hawa-uppercase hawa-font-mono dark:hawa-bg-black hawa-font-bold hawa-py-2 hawa-px-4 hawa-rounded hawa-border-2 hawa-border-primary hawa-shadow-color-primary hawa-transition-[hawa-transform_50ms, hawa-box-shadow_50ms] transition-all uppercase font-mono dark:bg-black font-bold py-2 px-4 rounded border-2 border-primary shadow-color-primary transition-[transform_50ms, box-shadow_50ms]\",\n clickable &&\n \"hawa-cursor-pointer active:hawa-translate-x-0.5 active:hawa-translate-y-0.5 active:hawa-shadow-color-primary-active active:translate-x-0.5 active:translate-y-0.5 active:shadow-color-primary-active\",\n ),\n };\n return (\n <div\n ref={ref}\n className={cn(className, !asContainer && variantStyles[variant])}\n {...props}\n />\n );\n },\n);\n\ntype CardHeaderProps = React.HTMLAttributes<HTMLDivElement> & {\n actions?: React.ReactNode;\n};\nconst CardHeader = React.forwardRef<HTMLDivElement, CardHeaderProps>(\n ({ className, ...props }, ref) => (\n <div className=\"hawa-flex hawa-flex-row hawa-justify-between\">\n <div\n ref={ref}\n className={cn(\n \"hawa-flex hawa-flex-col hawa-space-y-1.5 hawa-p-6\",\n className,\n )}\n {...props}\n />\n {props.actions && <div className=\"hawa-p-6\">{props.actions}</div>}\n </div>\n ),\n);\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"hawa-text-2xl hawa-font-semibold \", className)}\n {...props}\n />\n));\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"hawa-text-sm hawa-text-muted-foreground\", className)}\n {...props}\n />\n));\nconst CardContent = React.forwardRef<HTMLDivElement, CardContentProps>(\n ({ headless, noPadding, className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n noPadding ? \"hawa-p-0\" : \"hawa-p-6\",\n headless ? \"hawa-pt-6\" : \"hawa-pt-0\",\n className,\n )}\n {...props}\n />\n ),\n);\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & { noPadding?: boolean }\n>(({ className, noPadding, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n noPadding ? \"hawa-p-0\" : \"hawa-p-6\",\n \"hawa-flex hawa-items-center hawa-pt-0\",\n className,\n )}\n {...props}\n />\n));\n\nCardDescription.displayName = \"CardDescription\";\nCardContent.displayName = \"CardContent\";\nCardHeader.displayName = \"CardHeader\";\nCardFooter.displayName = \"CardFooter\";\nCardTitle.displayName = \"CardTitle\";\nCard.displayName = \"Card\";\n\nexport {\n CardDescription,\n CardContent,\n CardHeader,\n CardFooter,\n CardTitle,\n Card,\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\ntype Palette = {\n name: string;\n colors: {\n [key: number]: string;\n };\n};\ntype Rgb = {\n r: number;\n g: number;\n b: number;\n};\nfunction hexToRgb(hex: string): Rgb | null {\n const sanitizedHex = hex.replaceAll(\"##\", \"#\");\n const colorParts = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(\n sanitizedHex\n );\n\n if (!colorParts) {\n return null;\n }\n\n const [, r, g, b] = colorParts;\n\n return {\n r: parseInt(r, 16),\n g: parseInt(g, 16),\n b: parseInt(b, 16)\n } as Rgb;\n}\n\nfunction rgbToHex(r: number, g: number, b: number): string {\n const toHex = (c: number) => `0${c.toString(16)}`.slice(-2);\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n}\n\nexport function getTextColor(color: string): \"#FFF\" | \"#333\" {\n const rgbColor = hexToRgb(color);\n\n if (!rgbColor) {\n return \"#333\";\n }\n\n const { r, g, b } = rgbColor;\n const luma = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n\n return luma < 120 ? \"#FFF\" : \"#333\";\n}\n\nfunction lighten(hex: string, intensity: number): string {\n const color = hexToRgb(`#${hex}`);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r + (255 - color.r) * intensity);\n const g = Math.round(color.g + (255 - color.g) * intensity);\n const b = Math.round(color.b + (255 - color.b) * intensity);\n\n return rgbToHex(r, g, b);\n}\n\nfunction darken(hex: string, intensity: number): string {\n const color = hexToRgb(hex);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r * intensity);\n const g = Math.round(color.g * intensity);\n const b = Math.round(color.b * intensity);\n\n return rgbToHex(r, g, b);\n}\nconst parseColor = (color: any) => {\n if (color.startsWith(\"#\")) {\n // Convert hex to RGB\n let r = parseInt(color.slice(1, 3), 16);\n let g = parseInt(color.slice(3, 5), 16);\n let b = parseInt(color.slice(5, 7), 16);\n return [r, g, b];\n } else if (color.startsWith(\"rgb\")) {\n // Extract RGB values from rgb() format\n return color.match(/\\d+/g).map(Number);\n }\n // Default to white if format is unrecognized\n return [255, 255, 255];\n};\nexport const calculateLuminance = (color: any) => {\n const [r, g, b] = parseColor(color)?.map((c: any) => {\n c /= 255;\n return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;\n });\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n};\n\nfunction getPallette(baseColor: string): Palette {\n const name = baseColor;\n\n const response: Palette = {\n name,\n colors: {\n 500: `#${baseColor}`.replace(\"##\", \"#\")\n }\n };\n\n const intensityMap: {\n [key: number]: number;\n } = {\n 50: 0.95,\n 100: 0.9,\n 200: 0.75,\n 300: 0.6,\n 400: 0.3,\n 600: 0.9,\n 700: 0.75,\n 800: 0.6,\n 900: 0.49\n };\n\n [50, 100, 200, 300, 400].forEach((level) => {\n response.colors[level] = lighten(baseColor, intensityMap[level]);\n });\n [600, 700, 800, 900].forEach((level) => {\n response.colors[level] = darken(baseColor, intensityMap[level]);\n });\n\n return response as Palette;\n}\n\nexport { getPallette };\n\n// const hexToRgb = (hex) => {\n// let d = hex?.split(\"#\")[1];\n// var aRgbHex = d?.match(/.{1,2}/g);\n// var aRgb = [\n// parseInt(aRgbHex[0], 16),\n// parseInt(aRgbHex[1], 16),\n// parseInt(aRgbHex[2], 16)\n// ];\n// return aRgb;\n// };\n// const getTextColor = (backColor) => {\n// let rgbArray = hexToRgb(backColor);\n// if (rgbArray[0] * 0.299 + rgbArray[1] * 0.587 + rgbArray[2] * 0.114 > 186) {\n// return \"#000000\";\n// } else {\n// return \"#ffffff\";\n// }\n// };\n// const replaceAt = function (string, index, replacement) {\n// // if (replacement == \"\" || replacement == \" \") {\n// // return (\n// // string.substring(0, index) +\n// // string.substring(index + replacement.length )\n// // );\n// // }\n// const replaced = string.substring(0, index) + replacement + string.substring(index + 1)\n// return replaced\n// };\n\n// export { hexToRgb, getTextColor, replaceAt };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,YAAuB;;;ACAvB,kBAAsC;AACtC,4BAAwB;AAEjB,SAAS,MAAM,QAAsB;AAC1C,aAAO,mCAAQ,kBAAK,MAAM,CAAC;AAC7B;;;ADUA,IAAM,OAAa;AAAA,EACjB,CACE;AAAA,IACE;AAAA,IACA,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,GAAG;AAAA,EACL,GACA,QACG;AACH,QAAI,gBAAgB;AAAA,MAClB,SAAS;AAAA,QACP;AAAA,QACA,aACE;AAAA,MACJ;AAAA,MACA,cAAc;AAAA,QACZ;AAAA;AAAA,QAEA,aACE;AAAA,MACJ;AAAA,IACF;AACA,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW,GAAG,WAAW,CAAC,eAAe,cAAc,OAAO,CAAC;AAAA,QAC9D,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAKA,IAAM,aAAmB;AAAA,EACvB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QACxB,oCAAC,SAAI,WAAU,kDACb;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACC,MAAM,WAAW,oCAAC,SAAI,WAAU,cAAY,MAAM,OAAQ,CAC7D;AAEJ;AACA,IAAM,YAAkB,iBAGtB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,qCAAqC,SAAS;AAAA,IAC3D,GAAG;AAAA;AACN,CACD;AACD,IAAM,kBAAwB,iBAG5B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,2CAA2C,SAAS;AAAA,IACjE,GAAG;AAAA;AACN,CACD;AACD,IAAM,cAAoB;AAAA,EACxB,CAAC,EAAE,UAAU,WAAW,WAAW,GAAG,MAAM,GAAG,QAC7C;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT,YAAY,aAAa;AAAA,QACzB,WAAW,cAAc;AAAA,QACzB;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,IAAM,aAAmB,iBAGvB,CAAC,EAAE,WAAW,WAAW,GAAG,MAAM,GAAG,QACrC;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT,YAAY,aAAa;AAAA,MACzB;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AAED,gBAAgB,cAAc;AAC9B,YAAY,cAAc;AAC1B,WAAW,cAAc;AACzB,WAAW,cAAc;AACzB,UAAU,cAAc;AACxB,KAAK,cAAc;","names":[]}
|
package/dist/card/index.mjs
CHANGED
@@ -40,17 +40,19 @@ var Card = React.forwardRef(
|
|
40
40
|
);
|
41
41
|
}
|
42
42
|
);
|
43
|
-
var CardHeader = React.forwardRef(
|
44
|
-
"div",
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
43
|
+
var CardHeader = React.forwardRef(
|
44
|
+
({ className, ...props }, ref) => /* @__PURE__ */ React.createElement("div", { className: "hawa-flex hawa-flex-row hawa-justify-between" }, /* @__PURE__ */ React.createElement(
|
45
|
+
"div",
|
46
|
+
{
|
47
|
+
ref,
|
48
|
+
className: cn(
|
49
|
+
"hawa-flex hawa-flex-col hawa-space-y-1.5 hawa-p-6",
|
50
|
+
className
|
51
|
+
),
|
52
|
+
...props
|
53
|
+
}
|
54
|
+
), props.actions && /* @__PURE__ */ React.createElement("div", { className: "hawa-p-6" }, props.actions))
|
55
|
+
);
|
54
56
|
var CardTitle = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React.createElement(
|
55
57
|
"h3",
|
56
58
|
{
|
package/dist/card/index.mjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../elements/card/Card.tsx","../../util/index.ts"],"sourcesContent":["import * as React from \"react\";\n\nimport { cn } from \"@util/index\";\n\ninterface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n clickable?: boolean;\n variant?: \"default\" | \"neoBrutalism\";\n asContainer?: boolean;\n}\n\ntype CardContentProps = {\n headless?: boolean;\n noPadding?: boolean;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n (\n {\n className,\n variant = \"default\",\n clickable = false,\n asContainer = false,\n ...props\n },\n ref,\n ) => {\n let variantStyles = {\n default: cn(\n \"hawa-rounded-lg hawa-border hawa-bg-card hawa-text-card-foreground hawa-shadow-sm\",\n clickable &&\n \"hawa-cursor-pointer hawa-transition-all hover:hawa-drop-shadow-md dark:hover:dark-shadow\",\n ),\n neoBrutalism: cn(\n \"neo-brutalism\",\n // \"hawa-transition-all hawa-uppercase hawa-font-mono dark:hawa-bg-black hawa-font-bold hawa-py-2 hawa-px-4 hawa-rounded hawa-border-2 hawa-border-primary hawa-shadow-color-primary hawa-transition-[hawa-transform_50ms, hawa-box-shadow_50ms] transition-all uppercase font-mono dark:bg-black font-bold py-2 px-4 rounded border-2 border-primary shadow-color-primary transition-[transform_50ms, box-shadow_50ms]\",\n clickable &&\n \"hawa-cursor-pointer active:hawa-translate-x-0.5 active:hawa-translate-y-0.5 active:hawa-shadow-color-primary-active active:translate-x-0.5 active:translate-y-0.5 active:shadow-color-primary-active\",\n ),\n };\n return (\n <div\n ref={ref}\n className={cn(className, !asContainer && variantStyles[variant])}\n {...props}\n />\n );\n },\n);\
|
1
|
+
{"version":3,"sources":["../../elements/card/Card.tsx","../../util/index.ts"],"sourcesContent":["import * as React from \"react\";\n\nimport { cn } from \"@util/index\";\n\ninterface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n clickable?: boolean;\n variant?: \"default\" | \"neoBrutalism\";\n asContainer?: boolean;\n}\n\ntype CardContentProps = {\n headless?: boolean;\n noPadding?: boolean;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n (\n {\n className,\n variant = \"default\",\n clickable = false,\n asContainer = false,\n ...props\n },\n ref,\n ) => {\n let variantStyles = {\n default: cn(\n \"hawa-rounded-lg hawa-border hawa-bg-card hawa-text-card-foreground hawa-shadow-sm\",\n clickable &&\n \"hawa-cursor-pointer hawa-transition-all hover:hawa-drop-shadow-md dark:hover:dark-shadow\",\n ),\n neoBrutalism: cn(\n \"neo-brutalism\",\n // \"hawa-transition-all hawa-uppercase hawa-font-mono dark:hawa-bg-black hawa-font-bold hawa-py-2 hawa-px-4 hawa-rounded hawa-border-2 hawa-border-primary hawa-shadow-color-primary hawa-transition-[hawa-transform_50ms, hawa-box-shadow_50ms] transition-all uppercase font-mono dark:bg-black font-bold py-2 px-4 rounded border-2 border-primary shadow-color-primary transition-[transform_50ms, box-shadow_50ms]\",\n clickable &&\n \"hawa-cursor-pointer active:hawa-translate-x-0.5 active:hawa-translate-y-0.5 active:hawa-shadow-color-primary-active active:translate-x-0.5 active:translate-y-0.5 active:shadow-color-primary-active\",\n ),\n };\n return (\n <div\n ref={ref}\n className={cn(className, !asContainer && variantStyles[variant])}\n {...props}\n />\n );\n },\n);\n\ntype CardHeaderProps = React.HTMLAttributes<HTMLDivElement> & {\n actions?: React.ReactNode;\n};\nconst CardHeader = React.forwardRef<HTMLDivElement, CardHeaderProps>(\n ({ className, ...props }, ref) => (\n <div className=\"hawa-flex hawa-flex-row hawa-justify-between\">\n <div\n ref={ref}\n className={cn(\n \"hawa-flex hawa-flex-col hawa-space-y-1.5 hawa-p-6\",\n className,\n )}\n {...props}\n />\n {props.actions && <div className=\"hawa-p-6\">{props.actions}</div>}\n </div>\n ),\n);\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"hawa-text-2xl hawa-font-semibold \", className)}\n {...props}\n />\n));\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"hawa-text-sm hawa-text-muted-foreground\", className)}\n {...props}\n />\n));\nconst CardContent = React.forwardRef<HTMLDivElement, CardContentProps>(\n ({ headless, noPadding, className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n noPadding ? \"hawa-p-0\" : \"hawa-p-6\",\n headless ? \"hawa-pt-6\" : \"hawa-pt-0\",\n className,\n )}\n {...props}\n />\n ),\n);\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & { noPadding?: boolean }\n>(({ className, noPadding, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n noPadding ? \"hawa-p-0\" : \"hawa-p-6\",\n \"hawa-flex hawa-items-center hawa-pt-0\",\n className,\n )}\n {...props}\n />\n));\n\nCardDescription.displayName = \"CardDescription\";\nCardContent.displayName = \"CardContent\";\nCardHeader.displayName = \"CardHeader\";\nCardFooter.displayName = \"CardFooter\";\nCardTitle.displayName = \"CardTitle\";\nCard.displayName = \"Card\";\n\nexport {\n CardDescription,\n CardContent,\n CardHeader,\n CardFooter,\n CardTitle,\n Card,\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\ntype Palette = {\n name: string;\n colors: {\n [key: number]: string;\n };\n};\ntype Rgb = {\n r: number;\n g: number;\n b: number;\n};\nfunction hexToRgb(hex: string): Rgb | null {\n const sanitizedHex = hex.replaceAll(\"##\", \"#\");\n const colorParts = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(\n sanitizedHex\n );\n\n if (!colorParts) {\n return null;\n }\n\n const [, r, g, b] = colorParts;\n\n return {\n r: parseInt(r, 16),\n g: parseInt(g, 16),\n b: parseInt(b, 16)\n } as Rgb;\n}\n\nfunction rgbToHex(r: number, g: number, b: number): string {\n const toHex = (c: number) => `0${c.toString(16)}`.slice(-2);\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n}\n\nexport function getTextColor(color: string): \"#FFF\" | \"#333\" {\n const rgbColor = hexToRgb(color);\n\n if (!rgbColor) {\n return \"#333\";\n }\n\n const { r, g, b } = rgbColor;\n const luma = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n\n return luma < 120 ? \"#FFF\" : \"#333\";\n}\n\nfunction lighten(hex: string, intensity: number): string {\n const color = hexToRgb(`#${hex}`);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r + (255 - color.r) * intensity);\n const g = Math.round(color.g + (255 - color.g) * intensity);\n const b = Math.round(color.b + (255 - color.b) * intensity);\n\n return rgbToHex(r, g, b);\n}\n\nfunction darken(hex: string, intensity: number): string {\n const color = hexToRgb(hex);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r * intensity);\n const g = Math.round(color.g * intensity);\n const b = Math.round(color.b * intensity);\n\n return rgbToHex(r, g, b);\n}\nconst parseColor = (color: any) => {\n if (color.startsWith(\"#\")) {\n // Convert hex to RGB\n let r = parseInt(color.slice(1, 3), 16);\n let g = parseInt(color.slice(3, 5), 16);\n let b = parseInt(color.slice(5, 7), 16);\n return [r, g, b];\n } else if (color.startsWith(\"rgb\")) {\n // Extract RGB values from rgb() format\n return color.match(/\\d+/g).map(Number);\n }\n // Default to white if format is unrecognized\n return [255, 255, 255];\n};\nexport const calculateLuminance = (color: any) => {\n const [r, g, b] = parseColor(color)?.map((c: any) => {\n c /= 255;\n return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;\n });\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n};\n\nfunction getPallette(baseColor: string): Palette {\n const name = baseColor;\n\n const response: Palette = {\n name,\n colors: {\n 500: `#${baseColor}`.replace(\"##\", \"#\")\n }\n };\n\n const intensityMap: {\n [key: number]: number;\n } = {\n 50: 0.95,\n 100: 0.9,\n 200: 0.75,\n 300: 0.6,\n 400: 0.3,\n 600: 0.9,\n 700: 0.75,\n 800: 0.6,\n 900: 0.49\n };\n\n [50, 100, 200, 300, 400].forEach((level) => {\n response.colors[level] = lighten(baseColor, intensityMap[level]);\n });\n [600, 700, 800, 900].forEach((level) => {\n response.colors[level] = darken(baseColor, intensityMap[level]);\n });\n\n return response as Palette;\n}\n\nexport { getPallette };\n\n// const hexToRgb = (hex) => {\n// let d = hex?.split(\"#\")[1];\n// var aRgbHex = d?.match(/.{1,2}/g);\n// var aRgb = [\n// parseInt(aRgbHex[0], 16),\n// parseInt(aRgbHex[1], 16),\n// parseInt(aRgbHex[2], 16)\n// ];\n// return aRgb;\n// };\n// const getTextColor = (backColor) => {\n// let rgbArray = hexToRgb(backColor);\n// if (rgbArray[0] * 0.299 + rgbArray[1] * 0.587 + rgbArray[2] * 0.114 > 186) {\n// return \"#000000\";\n// } else {\n// return \"#ffffff\";\n// }\n// };\n// const replaceAt = function (string, index, replacement) {\n// // if (replacement == \"\" || replacement == \" \") {\n// // return (\n// // string.substring(0, index) +\n// // string.substring(index + replacement.length )\n// // );\n// // }\n// const replaced = string.substring(0, index) + replacement + string.substring(index + 1)\n// return replaced\n// };\n\n// export { hexToRgb, getTextColor, replaceAt };\n"],"mappings":";;;AAAA,YAAY,WAAW;;;ACAvB,SAAS,YAA6B;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;;;ADUA,IAAM,OAAa;AAAA,EACjB,CACE;AAAA,IACE;AAAA,IACA,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,GAAG;AAAA,EACL,GACA,QACG;AACH,QAAI,gBAAgB;AAAA,MAClB,SAAS;AAAA,QACP;AAAA,QACA,aACE;AAAA,MACJ;AAAA,MACA,cAAc;AAAA,QACZ;AAAA;AAAA,QAEA,aACE;AAAA,MACJ;AAAA,IACF;AACA,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW,GAAG,WAAW,CAAC,eAAe,cAAc,OAAO,CAAC;AAAA,QAC9D,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAKA,IAAM,aAAmB;AAAA,EACvB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QACxB,oCAAC,SAAI,WAAU,kDACb;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACC,MAAM,WAAW,oCAAC,SAAI,WAAU,cAAY,MAAM,OAAQ,CAC7D;AAEJ;AACA,IAAM,YAAkB,iBAGtB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,qCAAqC,SAAS;AAAA,IAC3D,GAAG;AAAA;AACN,CACD;AACD,IAAM,kBAAwB,iBAG5B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,2CAA2C,SAAS;AAAA,IACjE,GAAG;AAAA;AACN,CACD;AACD,IAAM,cAAoB;AAAA,EACxB,CAAC,EAAE,UAAU,WAAW,WAAW,GAAG,MAAM,GAAG,QAC7C;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT,YAAY,aAAa;AAAA,QACzB,WAAW,cAAc;AAAA,QACzB;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,IAAM,aAAmB,iBAGvB,CAAC,EAAE,WAAW,WAAW,GAAG,MAAM,GAAG,QACrC;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT,YAAY,aAAa;AAAA,MACzB;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AAED,gBAAgB,cAAc;AAC9B,YAAY,cAAc;AAC1B,WAAW,cAAc;AACzB,WAAW,cAAc;AACzB,UAAU,cAAc;AACxB,KAAK,cAAc;","names":[]}
|
@@ -458,17 +458,19 @@ var Card = React6.forwardRef(
|
|
458
458
|
);
|
459
459
|
}
|
460
460
|
);
|
461
|
-
var CardHeader = React6.forwardRef(
|
462
|
-
"div",
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
461
|
+
var CardHeader = React6.forwardRef(
|
462
|
+
({ className, ...props }, ref) => /* @__PURE__ */ React6.createElement("div", { className: "hawa-flex hawa-flex-row hawa-justify-between" }, /* @__PURE__ */ React6.createElement(
|
463
|
+
"div",
|
464
|
+
{
|
465
|
+
ref,
|
466
|
+
className: cn(
|
467
|
+
"hawa-flex hawa-flex-col hawa-space-y-1.5 hawa-p-6",
|
468
|
+
className
|
469
|
+
),
|
470
|
+
...props
|
471
|
+
}
|
472
|
+
), props.actions && /* @__PURE__ */ React6.createElement("div", { className: "hawa-p-6" }, props.actions))
|
473
|
+
);
|
472
474
|
var CardTitle = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React6.createElement(
|
473
475
|
"h3",
|
474
476
|
{
|
@@ -3,7 +3,7 @@ import {
|
|
3
3
|
Label,
|
4
4
|
Skeleton,
|
5
5
|
cn
|
6
|
-
} from "./chunk-
|
6
|
+
} from "./chunk-PXGL7ZXQ.mjs";
|
7
7
|
|
8
8
|
// elements/select/Select.tsx
|
9
9
|
import React from "react";
|
@@ -68,6 +68,10 @@ var Select = ({
|
|
68
68
|
children
|
69
69
|
);
|
70
70
|
};
|
71
|
+
let phoneCodeStyles = "hawa-min-w-[65px] hawa-text-right hawa-w-[100px] hawa-p-0 hawa-rounded-r-none hawa-h-[40px]";
|
72
|
+
let selectContainerStyles = "hawa-rounded hawa-block hawa-w-full hawa-border hawa-transition-all hawa-bg-background hawa-p-0 hawa-px-1 hawa-text-sm";
|
73
|
+
let selectPlaceholderStyles = "hawa-text-muted-foreground hawa-cursor-pointer hawa-px-1";
|
74
|
+
let selectIndicatorContainerStyles = "hawa-cursor-pointer hawa-text-muted-foreground hawa-absolute hawa-end-0 hawa-top-[50%] hawa-bottom-[50%] ";
|
71
75
|
return /* @__PURE__ */ React.createElement(
|
72
76
|
"div",
|
73
77
|
{
|
@@ -89,26 +93,22 @@ var Select = ({
|
|
89
93
|
props.controlClassNames
|
90
94
|
),
|
91
95
|
container: () => cn(
|
92
|
-
|
93
|
-
props.phoneCode &&
|
94
|
-
"hawa-block hawa-w-full hawa-rounded hawa-border hawa-transition-all hawa-bg-background hawa-p-0 hawa-px-1 hawa-text-sm",
|
96
|
+
selectContainerStyles,
|
97
|
+
props.phoneCode && phoneCodeStyles,
|
95
98
|
props.disabled ? "hawa-cursor-not-allowed" : "hawa-cursor-pointer",
|
96
99
|
props.isMulti && "hawa-ps-0 "
|
97
100
|
),
|
98
|
-
placeholder: () =>
|
101
|
+
placeholder: () => selectPlaceholderStyles,
|
99
102
|
valueContainer: () => "hawa-text-foreground hawa-px-1 ",
|
100
103
|
singleValue: () => "hawa-text-foreground",
|
101
104
|
indicatorsContainer: () => cn(
|
102
|
-
|
105
|
+
selectIndicatorContainerStyles,
|
103
106
|
props.hideIndicator ? "hawa-invisible" : "hawa-px-1"
|
104
107
|
)
|
105
108
|
},
|
106
109
|
unstyled: true,
|
107
|
-
|
108
|
-
|
109
|
-
Menu,
|
110
|
-
IndicatorsContainer: () => null
|
111
|
-
} : {
|
110
|
+
autoFocus: false,
|
111
|
+
components: props.hideIndicator ? { Option, Menu, IndicatorsContainer: () => null } : {
|
112
112
|
Option,
|
113
113
|
Menu,
|
114
114
|
// Control: (e) => (
|
@@ -130,10 +130,7 @@ var Select = ({
|
|
130
130
|
MultiValueContainer: (e) => /* @__PURE__ */ React.createElement(
|
131
131
|
"div",
|
132
132
|
{
|
133
|
-
className:
|
134
|
-
// e.className,
|
135
|
-
"hawa-rounded hawa-border hawa-p-1 hawa-px-2 hawa-flex hawa-flex-row"
|
136
|
-
),
|
133
|
+
className: "hawa-rounded hawa-border hawa-p-1 hawa-px-2 hawa-flex hawa-flex-row",
|
137
134
|
...e
|
138
135
|
}
|
139
136
|
)
|