saha-ui 1.22.0 → 1.22.2

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.
Files changed (67) hide show
  1. package/dist/components/Avatar/Avatar.types.d.ts +54 -7
  2. package/dist/components/Avatar/Avatar.types.d.ts.map +1 -1
  3. package/dist/components/Avatar/index.d.ts +25 -1
  4. package/dist/components/Avatar/index.d.ts.map +1 -1
  5. package/dist/components/Avatar/index.js +146 -50
  6. package/dist/components/Card/Card.types.d.ts +6 -1
  7. package/dist/components/Card/Card.types.d.ts.map +1 -1
  8. package/dist/components/Card/index.d.ts.map +1 -1
  9. package/dist/components/Card/index.js +68 -55
  10. package/dist/components/Container/Container.d.ts.map +1 -1
  11. package/dist/components/Container/Container.js +48 -34
  12. package/dist/components/Container/Container.types.d.ts +4 -1
  13. package/dist/components/Container/Container.types.d.ts.map +1 -1
  14. package/dist/components/Field/Field.d.ts.map +1 -1
  15. package/dist/components/Field/Field.js +138 -126
  16. package/dist/components/Field/Field.types.d.ts +9 -1
  17. package/dist/components/Field/Field.types.d.ts.map +1 -1
  18. package/dist/components/Form/Form.types.d.ts +9 -2
  19. package/dist/components/Form/Form.types.d.ts.map +1 -1
  20. package/dist/components/Grid/Grid.d.ts.map +1 -1
  21. package/dist/components/Grid/Grid.js +69 -66
  22. package/dist/components/Grid/Grid.types.d.ts +6 -1
  23. package/dist/components/Grid/Grid.types.d.ts.map +1 -1
  24. package/dist/components/Item/Item.types.d.ts +6 -1
  25. package/dist/components/Item/Item.types.d.ts.map +1 -1
  26. package/dist/components/Item/index.d.ts.map +1 -1
  27. package/dist/components/Item/index.js +146 -126
  28. package/dist/components/Label/Label.types.d.ts +6 -1
  29. package/dist/components/Label/Label.types.d.ts.map +1 -1
  30. package/dist/components/Label/index.d.ts.map +1 -1
  31. package/dist/components/Label/index.js +72 -60
  32. package/dist/components/Masonry/Masonry.types.d.ts +6 -1
  33. package/dist/components/Masonry/Masonry.types.d.ts.map +1 -1
  34. package/dist/components/Masonry/index.d.ts.map +1 -1
  35. package/dist/components/Masonry/index.js +112 -92
  36. package/dist/components/Paper/Paper.types.d.ts +6 -1
  37. package/dist/components/Paper/Paper.types.d.ts.map +1 -1
  38. package/dist/components/Paper/index.d.ts.map +1 -1
  39. package/dist/components/Paper/index.js +47 -39
  40. package/dist/components/Section/Section.d.ts.map +1 -1
  41. package/dist/components/Section/Section.js +56 -47
  42. package/dist/components/Section/Section.types.d.ts +4 -1
  43. package/dist/components/Section/Section.types.d.ts.map +1 -1
  44. package/dist/components/Separator/Separator.types.d.ts +11 -1
  45. package/dist/components/Separator/Separator.types.d.ts.map +1 -1
  46. package/dist/components/Separator/index.d.ts.map +1 -1
  47. package/dist/components/Separator/index.js +53 -37
  48. package/dist/components/Skeleton/Skeleton.types.d.ts +6 -1
  49. package/dist/components/Skeleton/Skeleton.types.d.ts.map +1 -1
  50. package/dist/components/Skeleton/index.d.ts.map +1 -1
  51. package/dist/components/Skeleton/index.js +71 -57
  52. package/dist/components/Stack/Stack.d.ts.map +1 -1
  53. package/dist/components/Stack/Stack.js +47 -40
  54. package/dist/components/Stack/Stack.types.d.ts +13 -1
  55. package/dist/components/Stack/Stack.types.d.ts.map +1 -1
  56. package/dist/components/Tag/Tag.types.d.ts +10 -1
  57. package/dist/components/Tag/Tag.types.d.ts.map +1 -1
  58. package/dist/components/Tag/index.d.ts.map +1 -1
  59. package/dist/components/Tag/index.js +103 -98
  60. package/dist/components/ToggleGroup/ToggleGroup.styles.d.ts +1 -1
  61. package/dist/components/ToggleGroup/ToggleGroup.styles.d.ts.map +1 -1
  62. package/dist/components/ToggleGroup/index.d.ts.map +1 -1
  63. package/dist/components/ToggleGroup/index.js +52 -45
  64. package/dist/index.d.ts +2 -2
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +854 -851
  67. package/package.json +1 -1
@@ -2,16 +2,32 @@ import { default as React } from 'react';
2
2
  export type AvatarSize = "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
3
3
  export type AvatarShape = "circle" | "square" | "rounded";
4
4
  export type AvatarStatus = "online" | "offline" | "away" | "busy" | "none";
5
+ /**
6
+ * Avatar props - supports both compound component pattern and legacy props pattern
7
+ *
8
+ * Compound pattern:
9
+ * <Avatar>
10
+ * <AvatarImage src="..." alt="..." />
11
+ * <AvatarFallback>JB</AvatarFallback>
12
+ * </Avatar>
13
+ *
14
+ * Legacy pattern:
15
+ * <Avatar src="..." alt="..." initials="JB" />
16
+ */
5
17
  export interface AvatarProps extends React.HTMLAttributes<HTMLDivElement> {
6
18
  /**
7
- * Image source URL
19
+ * Image source URL (legacy pattern)
8
20
  */
9
- src: string;
21
+ src?: string;
10
22
  /**
11
- * Alt text for accessibility
23
+ * Alt text for accessibility (legacy pattern)
12
24
  * @default "Avatar"
13
25
  */
14
26
  alt?: string;
27
+ /**
28
+ * Fallback content (e.g., initials) to display when image fails to load (legacy pattern)
29
+ */
30
+ fallback?: string;
15
31
  /**
16
32
  * Size of the avatar
17
33
  * @default "md"
@@ -27,10 +43,6 @@ export interface AvatarProps extends React.HTMLAttributes<HTMLDivElement> {
27
43
  * @default "none"
28
44
  */
29
45
  status?: AvatarStatus;
30
- /**
31
- * Initials to display when image fails to load
32
- */
33
- initials?: string;
34
46
  /**
35
47
  * Whether to show a border
36
48
  * @default false
@@ -41,5 +53,40 @@ export interface AvatarProps extends React.HTMLAttributes<HTMLDivElement> {
41
53
  * @default false
42
54
  */
43
55
  ring?: boolean;
56
+ /**
57
+ * Children elements (AvatarImage, AvatarFallback) for compound pattern
58
+ */
59
+ children?: React.ReactNode;
60
+ }
61
+ /**
62
+ * Avatar image props
63
+ */
64
+ export interface AvatarImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {
65
+ /**
66
+ * Image source URL
67
+ */
68
+ src?: string;
69
+ /**
70
+ * Alt text for accessibility
71
+ */
72
+ alt?: string;
73
+ /**
74
+ * Callback when image fails to load
75
+ */
76
+ onLoadingStatusChange?: (status: "loading" | "loaded" | "error") => void;
77
+ }
78
+ /**
79
+ * Avatar fallback props
80
+ */
81
+ export interface AvatarFallbackProps extends React.HTMLAttributes<HTMLSpanElement> {
82
+ /**
83
+ * Delay before showing fallback (ms)
84
+ * @default 0
85
+ */
86
+ delayMs?: number;
87
+ /**
88
+ * Children content (typically initials)
89
+ */
90
+ children?: React.ReactNode;
44
91
  }
45
92
  //# sourceMappingURL=Avatar.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.types.d.ts","sourceRoot":"","sources":["../../../src/components/Avatar/Avatar.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;AAClE,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC1D,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3E,MAAM,WAAW,WAAY,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACvE;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB;;;OAGG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB;;;OAGG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB"}
1
+ {"version":3,"file":"Avatar.types.d.ts","sourceRoot":"","sources":["../../../src/components/Avatar/Avatar.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;AAClE,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC1D,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3E;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,WAAY,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACvE;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB;;;OAGG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB;;;OAGG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,gBACf,SAAQ,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;IACjD;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,qBAAqB,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,KAAK,IAAI,CAAC;CAC1E;AAED;;GAEG;AACH,MAAM,WAAW,mBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;IAC7C;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B"}
@@ -1,5 +1,29 @@
1
1
  import { default as React } from 'react';
2
- import { AvatarProps } from './Avatar.types';
2
+ import { AvatarProps, AvatarImageProps, AvatarFallbackProps } from './Avatar.types';
3
+ /**
4
+ * Avatar Component
5
+ * Supports both compound component pattern and legacy props pattern
6
+ *
7
+ * Compound pattern:
8
+ * <Avatar>
9
+ * <AvatarImage src="..." alt="..." />
10
+ * <AvatarFallback>JB</AvatarFallback>
11
+ * </Avatar>
12
+ *
13
+ * Legacy pattern:
14
+ * <Avatar src="..." alt="..." initials="JB" />
15
+ */
3
16
  declare const Avatar: React.ForwardRefExoticComponent<AvatarProps & React.RefAttributes<HTMLDivElement>>;
17
+ /**
18
+ * AvatarImage Component
19
+ * Displays the avatar image with loading state handling
20
+ */
21
+ declare const AvatarImage: React.ForwardRefExoticComponent<AvatarImageProps & React.RefAttributes<HTMLImageElement>>;
22
+ /**
23
+ * AvatarFallback Component
24
+ * Displays fallback content when image fails or is loading
25
+ */
26
+ declare const AvatarFallback: React.ForwardRefExoticComponent<AvatarFallbackProps & React.RefAttributes<HTMLSpanElement>>;
4
27
  export default Avatar;
28
+ export { Avatar, AvatarImage, AvatarFallback };
5
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Avatar/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAI7C,QAAA,MAAM,MAAM,oFA+EX,CAAC;AAIF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Avatar/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAE9E,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AAiBxB;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,MAAM,oFAoHX,CAAC;AAIF;;;GAGG;AACH,QAAA,MAAM,WAAW,2FA4DhB,CAAC;AAIF;;;GAGG;AACH,QAAA,MAAM,cAAc,6FAwDnB,CAAC;AAIF,eAAe,MAAM,CAAC;AACtB,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC"}
@@ -1,70 +1,166 @@
1
- import { jsxs as l, jsx as a, Fragment as N } from "react/jsx-runtime";
2
- import x from "react";
3
- import { cn as e } from "../../lib/utils.js";
4
- import { statusVariants as y, avatarVariants as A } from "./Avatar.styles.js";
5
- import { useAvatar as j } from "../../hooks/useAvatar.js";
6
- const k = x.forwardRef(
1
+ import { jsxs as h, jsx as e, Fragment as L } from "react/jsx-runtime";
2
+ import p, { createContext as F, useState as w, useEffect as S, useContext as T } from "react";
3
+ import { cn as d } from "../../lib/utils.js";
4
+ import { statusVariants as N, avatarVariants as A } from "./Avatar.styles.js";
5
+ import { useAvatar as B } from "../../hooks/useAvatar.js";
6
+ const k = F(null), I = () => T(k), P = p.forwardRef(
7
7
  ({
8
- src: o,
9
- alt: r = "Avatar",
10
- size: i = "md",
11
- shape: m = "circle",
12
- status: n = "none",
13
- initials: c,
14
- bordered: d = !1,
15
- ring: f = !1,
16
- className: p,
17
- ...h
18
- }, u) => {
19
- const {
20
- showInitials: t,
21
- bgColor: v,
22
- initialsText: g,
23
- imageLoaded: s,
24
- handleImageLoad: b,
25
- handleImageError: w
26
- } = j({
27
- src: o,
28
- alt: r,
29
- initials: c
8
+ src: t,
9
+ alt: c = "Avatar",
10
+ fallback: i,
11
+ size: a = "md",
12
+ shape: u = "circle",
13
+ status: o = "none",
14
+ bordered: r = !1,
15
+ ring: s = !1,
16
+ className: l,
17
+ children: m,
18
+ ...n
19
+ }, f) => {
20
+ const [g, v] = w("loading"), y = t !== void 0 || i !== void 0 && !m, {
21
+ showInitials: b,
22
+ bgColor: C,
23
+ initialsText: R,
24
+ imageLoaded: x,
25
+ handleImageLoad: j,
26
+ handleImageError: E
27
+ } = B({
28
+ src: t,
29
+ alt: c,
30
+ initials: i
30
31
  });
31
- return /* @__PURE__ */ l(
32
+ return y ? /* @__PURE__ */ h(
32
33
  "div",
33
34
  {
34
- ref: u,
35
- className: e(
36
- A({ size: i, shape: m, bordered: d, ring: f }),
37
- t && v,
38
- t && "text-white",
39
- p
35
+ ref: f,
36
+ className: d(
37
+ A({ size: a, shape: u, bordered: r, ring: s }),
38
+ b && C,
39
+ b && "text-white",
40
+ l
40
41
  ),
41
- ...h,
42
+ ...n,
42
43
  children: [
43
- !t && /* @__PURE__ */ l(N, { children: [
44
- /* @__PURE__ */ a(
44
+ !b && t && /* @__PURE__ */ h(L, { children: [
45
+ /* @__PURE__ */ e(
45
46
  "img",
46
47
  {
47
- src: o,
48
- alt: r,
49
- className: e(
48
+ src: t,
49
+ alt: c,
50
+ className: d(
50
51
  "w-full h-full object-cover transition-opacity duration-300",
51
- s ? "opacity-100" : "opacity-0"
52
+ x ? "opacity-100" : "opacity-0"
52
53
  ),
53
- onLoad: b,
54
- onError: w
54
+ onLoad: j,
55
+ onError: E
55
56
  }
56
57
  ),
57
- !s && /* @__PURE__ */ a("div", { className: "absolute inset-0 bg-muted animate-pulse" })
58
+ !x && /* @__PURE__ */ e("div", { className: "absolute inset-0 bg-muted animate-pulse" })
58
59
  ] }),
59
- t && /* @__PURE__ */ a("span", { className: "relative z-10 font-bold tracking-tight", children: g }),
60
- n !== "none" && /* @__PURE__ */ a("span", { className: e(y({ size: i, status: n })) }),
61
- /* @__PURE__ */ a("div", { className: "absolute inset-0 bg-gradient-to-br from-white/0 via-white/0 to-black/0 group-hover:from-white/10 group-hover:to-black/5 transition-all duration-300 pointer-events-none" })
60
+ b && /* @__PURE__ */ e("span", { className: "relative z-10 font-bold tracking-tight", children: R }),
61
+ o !== "none" && /* @__PURE__ */ e("span", { className: d(N({ size: a, status: o })) }),
62
+ /* @__PURE__ */ e("div", { className: "absolute inset-0 bg-gradient-to-br from-white/0 via-white/0 to-black/0 group-hover:from-white/10 group-hover:to-black/5 transition-all duration-300 pointer-events-none" })
62
63
  ]
63
64
  }
65
+ ) : /* @__PURE__ */ e(
66
+ k.Provider,
67
+ {
68
+ value: { imageLoadingStatus: g, setImageLoadingStatus: v },
69
+ children: /* @__PURE__ */ h(
70
+ "div",
71
+ {
72
+ ref: f,
73
+ className: d(
74
+ A({ size: a, shape: u, bordered: r, ring: s }),
75
+ l
76
+ ),
77
+ ...n,
78
+ children: [
79
+ m,
80
+ o !== "none" && /* @__PURE__ */ e("span", { className: d(N({ size: a, status: o })) }),
81
+ /* @__PURE__ */ e("div", { className: "absolute inset-0 bg-gradient-to-br from-white/0 via-white/0 to-black/0 group-hover:from-white/10 group-hover:to-black/5 transition-all duration-300 pointer-events-none" })
82
+ ]
83
+ }
84
+ )
85
+ }
64
86
  );
65
87
  }
66
88
  );
67
- k.displayName = "Avatar";
89
+ P.displayName = "Avatar";
90
+ const V = p.forwardRef(
91
+ ({ src: t, alt: c = "Avatar", className: i, onLoadingStatusChange: a, ...u }, o) => {
92
+ const r = I(), [s, l] = w("loading"), m = () => {
93
+ l("loaded"), r?.setImageLoadingStatus("loaded"), a?.("loaded");
94
+ }, n = () => {
95
+ l("error"), r?.setImageLoadingStatus("error"), a?.("error");
96
+ };
97
+ return S(() => {
98
+ t ? (l("loading"), r?.setImageLoadingStatus("loading"), a?.("loading")) : (l("error"), r?.setImageLoadingStatus("error"));
99
+ }, [t]), !t || s === "error" ? null : /* @__PURE__ */ h(L, { children: [
100
+ /* @__PURE__ */ e(
101
+ "img",
102
+ {
103
+ ref: o,
104
+ src: t,
105
+ alt: c,
106
+ className: d(
107
+ "w-full h-full object-cover transition-opacity duration-300",
108
+ s === "loaded" ? "opacity-100" : "opacity-0",
109
+ i
110
+ ),
111
+ onLoad: m,
112
+ onError: n,
113
+ ...u
114
+ }
115
+ ),
116
+ s === "loading" && /* @__PURE__ */ e("div", { className: "absolute inset-0 bg-muted animate-pulse" })
117
+ ] });
118
+ }
119
+ );
120
+ V.displayName = "AvatarImage";
121
+ const _ = p.forwardRef(
122
+ ({ delayMs: t = 0, className: c, children: i, ...a }, u) => {
123
+ const o = I(), [r, s] = w(t === 0);
124
+ return S(() => {
125
+ if (t > 0) {
126
+ const n = setTimeout(() => s(!0), t);
127
+ return () => clearTimeout(n);
128
+ }
129
+ }, [t]), r && (!o || o.imageLoadingStatus === "error") ? /* @__PURE__ */ e(
130
+ "span",
131
+ {
132
+ ref: u,
133
+ className: d(
134
+ "absolute inset-0 flex items-center justify-center font-bold tracking-tight text-white",
135
+ (() => {
136
+ if (!i) return "bg-muted";
137
+ const n = String(i), f = [
138
+ "bg-red-500",
139
+ "bg-blue-500",
140
+ "bg-green-500",
141
+ "bg-purple-500",
142
+ "bg-pink-500",
143
+ "bg-indigo-500",
144
+ "bg-cyan-500",
145
+ "bg-orange-500"
146
+ ];
147
+ let g = 0;
148
+ for (let v = 0; v < n.length; v++)
149
+ g = n.charCodeAt(v) + ((g << 5) - g);
150
+ return f[Math.abs(g) % f.length];
151
+ })(),
152
+ c
153
+ ),
154
+ ...a,
155
+ children: i
156
+ }
157
+ ) : null;
158
+ }
159
+ );
160
+ _.displayName = "AvatarFallback";
68
161
  export {
69
- k as default
162
+ P as Avatar,
163
+ _ as AvatarFallback,
164
+ V as AvatarImage,
165
+ P as default
70
166
  };
@@ -1,6 +1,6 @@
1
1
  import { default as React } from 'react';
2
2
  export type CardVariant = "default" | "glass" | "glass-strong" | "glass-subtle" | "bordered";
3
- export type CardPadding = "none" | "sm" | "md" | "lg" | "xl";
3
+ export type CardPadding = "none" | "sm" | "md" | "lg" | "xl" | number | string;
4
4
  export type CardRounded = "sm" | "md" | "lg" | "xl" | "2xl";
5
5
  export interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
6
6
  /**
@@ -14,7 +14,12 @@ export interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
14
14
  variant?: CardVariant;
15
15
  /**
16
16
  * Padding size applied to the card
17
+ * Accepts predefined tokens, numbers (px), or string with units
17
18
  * @default "md"
19
+ * @example
20
+ * <Card padding="lg">Token padding</Card>
21
+ * <Card padding={24}>24px padding</Card>
22
+ * <Card padding="2rem">Custom padding</Card>
18
23
  */
19
24
  padding?: CardPadding;
20
25
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Card.types.d.ts","sourceRoot":"","sources":["../../../src/components/Card/Card.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,MAAM,WAAW,GACnB,SAAS,GACT,OAAO,GACP,cAAc,GACd,cAAc,GACd,UAAU,CAAC;AACf,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC7D,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;AAE5D,MAAM,WAAW,SAAU,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACrE;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAE1B;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
1
+ {"version":3,"file":"Card.types.d.ts","sourceRoot":"","sources":["../../../src/components/Card/Card.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,MAAM,WAAW,GACnB,SAAS,GACT,OAAO,GACP,cAAc,GACd,cAAc,GACd,UAAU,CAAC;AACf,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAC/E,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;AAE5D,MAAM,WAAW,SAAU,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACrE;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAE1B;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Card/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EACL,SAAS,EACT,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAAC,OAAO,YAAY,CAAC,CAAC;AAElE,eAAO,MAAM,IAAI,kFA6BhB,CAAC;AAIF;;;;;GAKG;AACH,eAAO,MAAM,UAAU,wFAStB,CAAC;AAIF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,2FAerB,CAAC;AAIF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,mGAgB1B,CAAC;AAIH;;;;;GAKG;AACH,eAAO,MAAM,WAAW,yFASvB,CAAC;AAIF;;;;;GAKG;AACH,eAAO,MAAM,UAAU,wFAetB,CAAC;AAIF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Card/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EACL,SAAS,EACT,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAAC,OAAO,YAAY,CAAC,CAAC;AAElE,eAAO,MAAM,IAAI,kFAiDhB,CAAC;AAIF;;;;;GAKG;AACH,eAAO,MAAM,UAAU,wFAStB,CAAC;AAIF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,2FAerB,CAAC;AAIF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,mGAgB1B,CAAC;AAIH;;;;;GAKG;AACH,eAAO,MAAM,WAAW,yFASvB,CAAC;AAIF;;;;;GAKG;AACH,eAAO,MAAM,UAAU,wFAetB,CAAC;AAIF,eAAe,IAAI,CAAC"}
@@ -1,87 +1,100 @@
1
- import { jsx as o } from "react/jsx-runtime";
2
- import s from "react";
3
- import { cn as m } from "../../lib/utils.js";
4
- import { cardVariants as c } from "./Card.styles.js";
1
+ import { jsx as a } from "react/jsx-runtime";
2
+ import m from "react";
3
+ import { cn as d } from "../../lib/utils.js";
4
+ import { cardVariants as N } from "./Card.styles.js";
5
5
  import { Slot as n } from "../../lib/Slot.js";
6
- const C = s.forwardRef(
6
+ const x = m.forwardRef(
7
7
  ({
8
8
  children: r,
9
- variant: e,
10
- padding: a,
9
+ variant: o,
10
+ padding: e,
11
11
  rounded: t,
12
- hoverable: d,
13
- className: i,
14
- onClick: l,
15
- ...f
16
- }, p) => /* @__PURE__ */ o(
17
- "div",
18
- {
19
- ref: p,
20
- className: m(
21
- c({ variant: e, padding: a, rounded: t, hoverable: d }),
22
- i
23
- ),
24
- onClick: l,
25
- ...f,
26
- children: /* @__PURE__ */ o("div", { className: "relative", children: r })
27
- }
28
- )
12
+ hoverable: s,
13
+ className: f,
14
+ onClick: c,
15
+ style: l,
16
+ ...p
17
+ }, C) => {
18
+ const i = typeof e == "string" && ["none", "sm", "md", "lg", "xl"].includes(e), u = !i && e !== void 0 ? {
19
+ padding: typeof e == "number" ? `${e}px` : e,
20
+ ...l
21
+ } : l;
22
+ return /* @__PURE__ */ a(
23
+ "div",
24
+ {
25
+ ref: C,
26
+ className: d(
27
+ N({
28
+ variant: o,
29
+ padding: i ? e : void 0,
30
+ rounded: t,
31
+ hoverable: s
32
+ }),
33
+ f
34
+ ),
35
+ style: u,
36
+ onClick: c,
37
+ ...p,
38
+ children: /* @__PURE__ */ a("div", { className: "relative", children: r })
39
+ }
40
+ );
41
+ }
29
42
  );
30
- C.displayName = "Card";
31
- const N = s.forwardRef(
32
- ({ children: r, className: e = "", asChild: a = !1 }, t) => /* @__PURE__ */ o(a ? n : "div", { ref: t, className: m("mb-4", e), children: r })
43
+ x.displayName = "Card";
44
+ const y = m.forwardRef(
45
+ ({ children: r, className: o = "", asChild: e = !1 }, t) => /* @__PURE__ */ a(e ? n : "div", { ref: t, className: d("mb-4", o), children: r })
33
46
  );
34
- N.displayName = "CardHeader";
35
- const u = s.forwardRef(
36
- ({ children: r, className: e = "", asChild: a = !1 }, t) => /* @__PURE__ */ o(
37
- a ? n : "h3",
47
+ y.displayName = "CardHeader";
48
+ const v = m.forwardRef(
49
+ ({ children: r, className: o = "", asChild: e = !1 }, t) => /* @__PURE__ */ a(
50
+ e ? n : "h3",
38
51
  {
39
52
  ref: t,
40
- className: m(
53
+ className: d(
41
54
  "text-xl font-semibold text-foreground tracking-tight",
42
- e
55
+ o
43
56
  ),
44
57
  children: r
45
58
  }
46
59
  )
47
60
  );
48
- u.displayName = "CardTitle";
49
- const x = s.forwardRef(({ children: r, className: e = "", asChild: a = !1 }, t) => /* @__PURE__ */ o(
50
- a ? n : "p",
61
+ v.displayName = "CardTitle";
62
+ const R = m.forwardRef(({ children: r, className: o = "", asChild: e = !1 }, t) => /* @__PURE__ */ a(
63
+ e ? n : "p",
51
64
  {
52
65
  ref: t,
53
- className: m(
66
+ className: d(
54
67
  "text-sm text-muted-foreground mt-1.5 leading-relaxed",
55
- e
68
+ o
56
69
  ),
57
70
  children: r
58
71
  }
59
72
  ));
60
- x.displayName = "CardDescription";
61
- const g = s.forwardRef(
62
- ({ children: r, className: e = "", asChild: a = !1 }, t) => /* @__PURE__ */ o(a ? n : "div", { ref: t, className: m("text-foreground", e), children: r })
73
+ R.displayName = "CardDescription";
74
+ const b = m.forwardRef(
75
+ ({ children: r, className: o = "", asChild: e = !1 }, t) => /* @__PURE__ */ a(e ? n : "div", { ref: t, className: d("text-foreground", o), children: r })
63
76
  );
64
- g.displayName = "CardContent";
65
- const R = s.forwardRef(
66
- ({ children: r, className: e = "", asChild: a = !1 }, t) => /* @__PURE__ */ o(
67
- a ? n : "div",
77
+ b.displayName = "CardContent";
78
+ const g = m.forwardRef(
79
+ ({ children: r, className: o = "", asChild: e = !1 }, t) => /* @__PURE__ */ a(
80
+ e ? n : "div",
68
81
  {
69
82
  ref: t,
70
- className: m(
83
+ className: d(
71
84
  "mt-4 pt-4 border-t border-border/50 flex items-center gap-2",
72
- e
85
+ o
73
86
  ),
74
87
  children: r
75
88
  }
76
89
  )
77
90
  );
78
- R.displayName = "CardFooter";
91
+ g.displayName = "CardFooter";
79
92
  export {
80
- C as Card,
81
- g as CardContent,
82
- x as CardDescription,
83
- R as CardFooter,
84
- N as CardHeader,
85
- u as CardTitle,
86
- C as default
93
+ x as Card,
94
+ b as CardContent,
95
+ R as CardDescription,
96
+ g as CardFooter,
97
+ y as CardHeader,
98
+ v as CardTitle,
99
+ x as default
87
100
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../../../src/components/Container/Container.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,eAAO,MAAM,SAAS,uFAqCrB,CAAC"}
1
+ {"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../../../src/components/Container/Container.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,eAAO,MAAM,SAAS,uFA2DrB,CAAC"}
@@ -1,40 +1,54 @@
1
- import { jsx as p } from "react/jsx-runtime";
2
- import c from "react";
3
- import { Slot as u } from "../../lib/Slot.js";
4
- import { cn as y } from "../../lib/utils.js";
5
- import { containerVariants as C } from "./Container.styles.js";
6
- const x = c.forwardRef(
1
+ import { jsx as x } from "react/jsx-runtime";
2
+ import v from "react";
3
+ import { Slot as C } from "../../lib/Slot.js";
4
+ import { cn as N } from "../../lib/utils.js";
5
+ import { containerVariants as R } from "./Container.styles.js";
6
+ const S = v.forwardRef(
7
7
  ({
8
- className: a,
9
- size: r = "lg",
8
+ className: t,
9
+ size: a = "lg",
10
10
  padding: e = "default",
11
- center: o = !0,
11
+ center: l = !0,
12
12
  gutter: i = !0,
13
- asChild: t = !1,
14
- children: l,
15
- role: m,
16
- "aria-label": d,
17
- "aria-labelledby": n,
18
- "aria-describedby": b,
19
- ...f
20
- }, s) => /* @__PURE__ */ p(
21
- t ? u : "div",
22
- {
23
- ref: s,
24
- className: y(
25
- C({ size: r, padding: e, center: o, gutter: i }),
26
- a
27
- ),
28
- role: m,
29
- "aria-label": d,
30
- "aria-labelledby": n,
31
- "aria-describedby": b,
32
- ...f,
33
- children: l
34
- }
35
- )
13
+ asChild: m = !1,
14
+ children: s,
15
+ style: o,
16
+ role: n,
17
+ "aria-label": f,
18
+ "aria-labelledby": b,
19
+ "aria-describedby": c,
20
+ ...u
21
+ }, y) => {
22
+ const p = m ? C : "div", r = typeof e == "string" && ["none", "sm", "default", "lg"].includes(e), d = !r && e !== void 0 ? {
23
+ paddingTop: typeof e == "number" ? `${e}px` : e,
24
+ paddingBottom: typeof e == "number" ? `${e}px` : e,
25
+ ...o
26
+ } : o;
27
+ return /* @__PURE__ */ x(
28
+ p,
29
+ {
30
+ ref: y,
31
+ className: N(
32
+ R({
33
+ size: a,
34
+ padding: r ? e : void 0,
35
+ center: l,
36
+ gutter: i
37
+ }),
38
+ t
39
+ ),
40
+ style: d,
41
+ role: n,
42
+ "aria-label": f,
43
+ "aria-labelledby": b,
44
+ "aria-describedby": c,
45
+ ...u,
46
+ children: s
47
+ }
48
+ );
49
+ }
36
50
  );
37
- x.displayName = "Container";
51
+ S.displayName = "Container";
38
52
  export {
39
- x as Container
53
+ S as Container
40
54
  };
@@ -10,11 +10,14 @@ export type ContainerSize = "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "full";
10
10
  /**
11
11
  * Padding variants for the Container component
12
12
  * Controls the vertical padding
13
+ * Accepts predefined tokens, numbers (px), or string with units
13
14
  * @example
14
15
  * <Container padding="none">No padding</Container>
15
16
  * <Container padding="lg">Large padding</Container>
17
+ * <Container padding={24}>24px padding</Container>
18
+ * <Container padding="2rem">Custom padding</Container>
16
19
  */
17
- export type ContainerPadding = "none" | "sm" | "default" | "lg";
20
+ export type ContainerPadding = "none" | "sm" | "default" | "lg" | number | string;
18
21
  /**
19
22
  * Props for the Container component
20
23
  *