asterui 0.12.23 → 0.12.25

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/index14.js CHANGED
@@ -1,116 +1,201 @@
1
- import { jsxs as s, jsx as e, Fragment as o } from "react/jsx-runtime";
2
- function y({ children: d, hoverable: a = !1, className: l = "", style: c, ...n }) {
3
- const m = [
4
- "p-6 border border-base-content/10",
5
- a && "cursor-pointer hover:shadow-md transition-shadow",
6
- l
7
- ].filter(Boolean).join(" ");
8
- return /* @__PURE__ */ e("div", { className: m, style: c, ...n, children: d });
9
- }
10
- function C({ avatar: d, title: a, description: l, className: c = "", ...n }) {
11
- return /* @__PURE__ */ s("div", { className: `flex gap-4 ${c}`, ...n, children: [
12
- d && /* @__PURE__ */ e("div", { className: "flex-shrink-0", children: d }),
1
+ import { jsxs as s, jsx as e, Fragment as N } from "react/jsx-runtime";
2
+ import P, { forwardRef as u } from "react";
3
+ const Q = {
4
+ xs: "card-xs",
5
+ sm: "card-sm",
6
+ md: "card-md",
7
+ lg: "card-lg",
8
+ xl: "card-xl"
9
+ }, U = {
10
+ default: "shadow-sm",
11
+ border: "card-border",
12
+ dash: "card-dash",
13
+ borderless: ""
14
+ }, $ = {
15
+ start: "justify-start",
16
+ center: "justify-center",
17
+ end: "justify-end"
18
+ }, C = u(
19
+ ({ children: i, hoverable: a = !1, className: r = "", "data-testid": t, ...n }, m) => {
20
+ const c = [
21
+ "p-6 border border-base-content/10",
22
+ a && "cursor-pointer hover:shadow-md transition-shadow",
23
+ r
24
+ ].filter(Boolean).join(" ");
25
+ return /* @__PURE__ */ e("div", { ref: m, className: c, "data-testid": t, ...n, children: i });
26
+ }
27
+ );
28
+ C.displayName = "Card.Grid";
29
+ const M = u(
30
+ ({ avatar: i, title: a, description: r, className: t = "", "data-testid": n, ...m }, c) => /* @__PURE__ */ s("div", { ref: c, className: `flex gap-4 ${t}`, "data-testid": n, ...m, children: [
31
+ i && /* @__PURE__ */ e("div", { className: "flex-shrink-0", children: i }),
13
32
  /* @__PURE__ */ s("div", { className: "flex-1 min-w-0", children: [
14
33
  a && /* @__PURE__ */ e("div", { className: "font-medium", children: a }),
15
- l && /* @__PURE__ */ e("div", { className: "text-sm opacity-70 mt-1", children: l })
34
+ r && /* @__PURE__ */ e("div", { className: "text-sm opacity-70 mt-1", children: r })
16
35
  ] })
17
- ] });
18
- }
19
- function M({
20
- children: d,
21
- title: a,
22
- extra: l,
23
- cover: c,
24
- actions: n,
25
- className: m = "",
26
- style: h,
27
- size: t,
28
- bordered: b = !0,
29
- side: k = !1,
30
- imageFull: f = !1,
31
- actionsJustify: N = "end",
32
- loading: g = !1,
33
- hoverable: j = !1,
34
- avatar: r,
35
- description: i,
36
- ...u
37
- }) {
38
- const v = [
39
- "card",
40
- "bg-base-100",
41
- t && {
42
- xs: "card-xs",
43
- sm: "card-sm",
44
- md: "card-md",
45
- lg: "card-lg",
46
- xl: "card-xl"
47
- }[t],
48
- // Don't add border when imageFull is used (it breaks the overlay effect)
49
- b && !f && "border border-base-content/10 shadow-sm",
50
- k && "card-side",
51
- f && "image-full shadow-sm",
52
- j && "transition-shadow hover:shadow-lg cursor-pointer",
53
- m
54
- ].filter(Boolean).join(" "), w = {
55
- start: "justify-start",
56
- center: "justify-center",
57
- end: "justify-end"
58
- };
59
- if (g)
60
- return /* @__PURE__ */ s("div", { className: v, style: h, ...u, children: [
61
- c && /* @__PURE__ */ e("figure", { children: /* @__PURE__ */ e("div", { className: "skeleton h-48 w-full rounded-none" }) }),
62
- /* @__PURE__ */ s("div", { className: "card-body", children: [
63
- (r || a) && /* @__PURE__ */ s("div", { className: "flex gap-4 mb-4", children: [
64
- r && /* @__PURE__ */ e("div", { className: "skeleton w-12 h-12 rounded-full flex-shrink-0" }),
65
- /* @__PURE__ */ s("div", { className: "flex-1 space-y-2", children: [
66
- /* @__PURE__ */ e("div", { className: "skeleton h-6 w-2/3" }),
67
- i && /* @__PURE__ */ e("div", { className: "skeleton h-4 w-full" })
68
- ] })
69
- ] }),
70
- !r && !a && /* @__PURE__ */ s(o, { children: [
71
- /* @__PURE__ */ e("div", { className: "skeleton h-6 w-2/3 mb-4" }),
72
- /* @__PURE__ */ s("div", { className: "space-y-2", children: [
73
- /* @__PURE__ */ e("div", { className: "skeleton h-4 w-full" }),
74
- /* @__PURE__ */ e("div", { className: "skeleton h-4 w-5/6" }),
75
- /* @__PURE__ */ e("div", { className: "skeleton h-4 w-4/6" })
76
- ] })
77
- ] }),
78
- n && /* @__PURE__ */ s("div", { className: `card-actions ${w[N]} mt-4`, children: [
79
- /* @__PURE__ */ e("div", { className: "skeleton h-10 w-20" }),
80
- /* @__PURE__ */ e("div", { className: "skeleton h-10 w-20" })
36
+ ] })
37
+ );
38
+ M.displayName = "Card.Meta";
39
+ const G = u(
40
+ ({
41
+ children: i,
42
+ title: a,
43
+ extra: r,
44
+ cover: t,
45
+ actions: n,
46
+ className: m = "",
47
+ size: c,
48
+ bordered: R,
49
+ variant: T,
50
+ type: A,
51
+ side: B = !1,
52
+ imageFull: v = !1,
53
+ actionsJustify: b = "end",
54
+ loading: I = !1,
55
+ hoverable: K = !1,
56
+ avatar: o,
57
+ description: h,
58
+ tabList: f,
59
+ activeTabKey: y,
60
+ defaultActiveTabKey: _,
61
+ onTabChange: H,
62
+ tabBarExtraContent: w,
63
+ "data-testid": O,
64
+ ...x
65
+ }, k) => {
66
+ const l = O ?? "card", [S, V] = P.useState(
67
+ _ ?? f?.[0]?.key
68
+ ), g = y ?? S, q = (d) => {
69
+ y === void 0 && V(d), H?.(d);
70
+ }, z = T ?? (R === !1 ? "borderless" : "default"), p = [
71
+ "card",
72
+ "bg-base-100",
73
+ c && Q[c],
74
+ // Don't add variant styling when imageFull is used (it breaks the overlay effect)
75
+ !v && U[z],
76
+ B && "card-side",
77
+ v && "image-full shadow-sm",
78
+ K && "transition-shadow hover:shadow-lg cursor-pointer",
79
+ A === "inner" && "bg-base-200",
80
+ m
81
+ ].filter(Boolean).join(" ");
82
+ if (I)
83
+ return /* @__PURE__ */ s(
84
+ "div",
85
+ {
86
+ ref: k,
87
+ className: p,
88
+ "data-testid": l,
89
+ "data-loading": "true",
90
+ ...x,
91
+ children: [
92
+ t && /* @__PURE__ */ e("figure", { children: /* @__PURE__ */ e("div", { className: "skeleton h-48 w-full rounded-none" }) }),
93
+ /* @__PURE__ */ s("div", { className: "card-body", children: [
94
+ (o || a) && /* @__PURE__ */ s("div", { className: "flex gap-4 mb-4", children: [
95
+ o && /* @__PURE__ */ e("div", { className: "skeleton w-12 h-12 rounded-full flex-shrink-0" }),
96
+ /* @__PURE__ */ s("div", { className: "flex-1 space-y-2", children: [
97
+ /* @__PURE__ */ e("div", { className: "skeleton h-6 w-2/3" }),
98
+ h && /* @__PURE__ */ e("div", { className: "skeleton h-4 w-full" })
99
+ ] })
100
+ ] }),
101
+ !o && !a && /* @__PURE__ */ s(N, { children: [
102
+ /* @__PURE__ */ e("div", { className: "skeleton h-6 w-2/3 mb-4" }),
103
+ /* @__PURE__ */ s("div", { className: "space-y-2", children: [
104
+ /* @__PURE__ */ e("div", { className: "skeleton h-4 w-full" }),
105
+ /* @__PURE__ */ e("div", { className: "skeleton h-4 w-5/6" }),
106
+ /* @__PURE__ */ e("div", { className: "skeleton h-4 w-4/6" })
107
+ ] })
108
+ ] }),
109
+ n && /* @__PURE__ */ s("div", { className: `card-actions ${$[b]} mt-4`, children: [
110
+ /* @__PURE__ */ e("div", { className: "skeleton h-10 w-20" }),
111
+ /* @__PURE__ */ e("div", { className: "skeleton h-10 w-20" })
112
+ ] })
113
+ ] })
114
+ ]
115
+ }
116
+ );
117
+ const D = o || a && h, j = () => !a && !r ? null : r ? /* @__PURE__ */ s(
118
+ "div",
119
+ {
120
+ className: "flex justify-between items-start gap-4",
121
+ "data-testid": `${l}-header`,
122
+ children: [
123
+ a && /* @__PURE__ */ e("h2", { className: "card-title", children: a }),
124
+ /* @__PURE__ */ e("div", { className: "flex-shrink-0", "data-testid": `${l}-extra`, children: r })
125
+ ]
126
+ }
127
+ ) : a ? /* @__PURE__ */ e("h2", { className: "card-title", children: a }) : null, F = () => !f || f.length === 0 ? null : /* @__PURE__ */ e(
128
+ "div",
129
+ {
130
+ className: "border-b border-base-300 px-4",
131
+ "data-testid": `${l}-tabs`,
132
+ children: /* @__PURE__ */ s("div", { className: "flex items-center justify-between", children: [
133
+ /* @__PURE__ */ e("div", { role: "tablist", className: "tabs", children: f.map((d) => /* @__PURE__ */ e(
134
+ "button",
135
+ {
136
+ role: "tab",
137
+ className: [
138
+ "tab",
139
+ g === d.key && "tab-active",
140
+ d.disabled && "tab-disabled"
141
+ ].filter(Boolean).join(" "),
142
+ onClick: () => !d.disabled && q(d.key),
143
+ disabled: d.disabled,
144
+ "aria-selected": g === d.key,
145
+ "data-testid": `${l}-tab-${d.key}`,
146
+ children: d.label
147
+ },
148
+ d.key
149
+ )) }),
150
+ w && /* @__PURE__ */ e("div", { "data-testid": `${l}-tab-extra`, children: w })
81
151
  ] })
82
- ] })
83
- ] });
84
- const p = r || a && i, x = () => !a && !l ? null : l ? /* @__PURE__ */ s("div", { className: "flex justify-between items-start gap-4", children: [
85
- a && /* @__PURE__ */ e("h2", { className: "card-title", children: a }),
86
- /* @__PURE__ */ e("div", { className: "flex-shrink-0", children: l })
87
- ] }) : a ? /* @__PURE__ */ e("h2", { className: "card-title", children: a }) : null;
88
- return /* @__PURE__ */ s("div", { className: v, style: h, ...u, children: [
89
- c && /* @__PURE__ */ e("figure", { children: c }),
90
- /* @__PURE__ */ s("div", { className: "card-body", children: [
91
- p ? /* @__PURE__ */ s(o, { children: [
92
- /* @__PURE__ */ s("div", { className: "flex gap-4", children: [
93
- r && /* @__PURE__ */ e("div", { className: "flex-shrink-0", children: r }),
94
- /* @__PURE__ */ s("div", { className: "flex-1 min-w-0", children: [
95
- x(),
96
- i && /* @__PURE__ */ e("p", { className: "text-sm opacity-70 mt-1", children: i })
152
+ }
153
+ );
154
+ return /* @__PURE__ */ s(
155
+ "div",
156
+ {
157
+ ref: k,
158
+ className: p,
159
+ "data-testid": l,
160
+ ...x,
161
+ children: [
162
+ t && /* @__PURE__ */ e("figure", { "data-testid": `${l}-cover`, children: t }),
163
+ F(),
164
+ /* @__PURE__ */ s("div", { className: "card-body", "data-testid": `${l}-body`, children: [
165
+ D ? /* @__PURE__ */ s(N, { children: [
166
+ /* @__PURE__ */ s("div", { className: "flex gap-4", children: [
167
+ o && /* @__PURE__ */ e("div", { className: "flex-shrink-0", children: o }),
168
+ /* @__PURE__ */ s("div", { className: "flex-1 min-w-0", children: [
169
+ j(),
170
+ h && /* @__PURE__ */ e("p", { className: "text-sm opacity-70 mt-1", children: h })
171
+ ] })
172
+ ] }),
173
+ i
174
+ ] }) : /* @__PURE__ */ s(N, { children: [
175
+ j(),
176
+ i
177
+ ] }),
178
+ n && /* @__PURE__ */ e(
179
+ "div",
180
+ {
181
+ className: `card-actions ${$[b]}`,
182
+ "data-testid": `${l}-actions`,
183
+ children: n
184
+ }
185
+ )
97
186
  ] })
98
- ] }),
99
- d
100
- ] }) : /* @__PURE__ */ s(o, { children: [
101
- x(),
102
- d
103
- ] }),
104
- n && /* @__PURE__ */ e("div", { className: `card-actions ${w[N]}`, children: n })
105
- ] })
106
- ] });
107
- }
108
- const G = Object.assign(M, {
109
- Grid: y,
110
- Meta: C
187
+ ]
188
+ }
189
+ );
190
+ }
191
+ );
192
+ G.displayName = "Card";
193
+ const Y = Object.assign(G, {
194
+ Grid: C,
195
+ Meta: M
111
196
  });
112
197
  export {
113
- G as Card,
114
- G as default
198
+ Y as Card,
199
+ Y as default
115
200
  };
116
201
  //# sourceMappingURL=index14.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index14.js","sources":["../src/components/Card.tsx"],"sourcesContent":["import React from 'react'\n\nexport interface CardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n children?: React.ReactNode\n title?: React.ReactNode\n /** Content in the top-right corner of the card header */\n extra?: React.ReactNode\n cover?: React.ReactNode\n actions?: React.ReactNode\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n bordered?: boolean\n side?: boolean\n imageFull?: boolean\n actionsJustify?: 'start' | 'center' | 'end'\n loading?: boolean\n hoverable?: boolean\n // Meta props for avatar + description layout\n avatar?: React.ReactNode\n description?: React.ReactNode\n}\n\nexport interface CardMetaProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Avatar or icon element */\n avatar?: React.ReactNode\n /** Title content */\n title?: React.ReactNode\n /** Description content */\n description?: React.ReactNode\n}\n\nexport interface CardGridProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode\n hoverable?: boolean\n}\n\nfunction CardGrid({ children, hoverable = false, className = '', style, ...rest }: CardGridProps) {\n const classes = [\n 'p-6 border border-base-content/10',\n hoverable && 'cursor-pointer hover:shadow-md transition-shadow',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <div className={classes} style={style} {...rest}>\n {children}\n </div>\n )\n}\n\nfunction CardMeta({ avatar, title, description, className = '', ...rest }: CardMetaProps) {\n return (\n <div className={`flex gap-4 ${className}`} {...rest}>\n {avatar && <div className=\"flex-shrink-0\">{avatar}</div>}\n <div className=\"flex-1 min-w-0\">\n {title && <div className=\"font-medium\">{title}</div>}\n {description && <div className=\"text-sm opacity-70 mt-1\">{description}</div>}\n </div>\n </div>\n )\n}\n\nfunction CardRoot({\n children,\n title,\n extra,\n cover,\n actions,\n className = '',\n style,\n size,\n bordered = true,\n side = false,\n imageFull = false,\n actionsJustify = 'end',\n loading = false,\n hoverable = false,\n avatar,\n description,\n ...rest\n}: CardProps) {\n const sizeClasses: Record<string, string> = {\n xs: 'card-xs',\n sm: 'card-sm',\n md: 'card-md',\n lg: 'card-lg',\n xl: 'card-xl',\n }\n\n const classes = [\n 'card',\n 'bg-base-100',\n size && sizeClasses[size],\n // Don't add border when imageFull is used (it breaks the overlay effect)\n bordered && !imageFull && 'border border-base-content/10 shadow-sm',\n side && 'card-side',\n imageFull && 'image-full shadow-sm',\n hoverable && 'transition-shadow hover:shadow-lg cursor-pointer',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n const justifyClasses: Record<string, string> = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n }\n\n if (loading) {\n return (\n <div className={classes} style={style} {...rest}>\n {cover && (\n <figure>\n <div className=\"skeleton h-48 w-full rounded-none\" />\n </figure>\n )}\n <div className=\"card-body\">\n {(avatar || title) && (\n <div className=\"flex gap-4 mb-4\">\n {avatar && <div className=\"skeleton w-12 h-12 rounded-full flex-shrink-0\" />}\n <div className=\"flex-1 space-y-2\">\n <div className=\"skeleton h-6 w-2/3\" />\n {description && <div className=\"skeleton h-4 w-full\" />}\n </div>\n </div>\n )}\n {!avatar && !title && (\n <>\n <div className=\"skeleton h-6 w-2/3 mb-4\" />\n <div className=\"space-y-2\">\n <div className=\"skeleton h-4 w-full\" />\n <div className=\"skeleton h-4 w-5/6\" />\n <div className=\"skeleton h-4 w-4/6\" />\n </div>\n </>\n )}\n {actions && (\n <div className={`card-actions ${justifyClasses[actionsJustify]} mt-4`}>\n <div className=\"skeleton h-10 w-20\" />\n <div className=\"skeleton h-10 w-20\" />\n </div>\n )}\n </div>\n </div>\n )\n }\n\n // Render with avatar + title + description layout (meta style)\n const hasMetaLayout = avatar || (title && description)\n\n // Header with title and extra\n const renderHeader = () => {\n if (!title && !extra) return null\n\n if (extra) {\n return (\n <div className=\"flex justify-between items-start gap-4\">\n {title && <h2 className=\"card-title\">{title}</h2>}\n <div className=\"flex-shrink-0\">{extra}</div>\n </div>\n )\n }\n\n return title ? <h2 className=\"card-title\">{title}</h2> : null\n }\n\n return (\n <div className={classes} style={style} {...rest}>\n {cover && <figure>{cover}</figure>}\n <div className=\"card-body\">\n {hasMetaLayout ? (\n <>\n <div className=\"flex gap-4\">\n {avatar && <div className=\"flex-shrink-0\">{avatar}</div>}\n <div className=\"flex-1 min-w-0\">\n {renderHeader()}\n {description && <p className=\"text-sm opacity-70 mt-1\">{description}</p>}\n </div>\n </div>\n {children}\n </>\n ) : (\n <>\n {renderHeader()}\n {children}\n </>\n )}\n {actions && <div className={`card-actions ${justifyClasses[actionsJustify]}`}>{actions}</div>}\n </div>\n </div>\n )\n}\n\nexport const Card = Object.assign(CardRoot, {\n Grid: CardGrid,\n Meta: CardMeta,\n})\n\nexport default Card\n"],"names":["CardGrid","children","hoverable","className","style","rest","classes","CardMeta","avatar","title","description","jsx","jsxs","CardRoot","extra","cover","actions","size","bordered","side","imageFull","actionsJustify","loading","justifyClasses","Fragment","hasMetaLayout","renderHeader","Card"],"mappings":";AAmCA,SAASA,EAAS,EAAE,UAAAC,GAAU,WAAAC,IAAY,IAAO,WAAAC,IAAY,IAAI,OAAAC,GAAO,GAAGC,KAAuB;AAChG,QAAMC,IAAU;AAAA,IACd;AAAA,IACAJ,KAAa;AAAA,IACbC;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,2BACG,OAAA,EAAI,WAAWG,GAAS,OAAAF,GAAe,GAAGC,GACxC,UAAAJ,GACH;AAEJ;AAEA,SAASM,EAAS,EAAE,QAAAC,GAAQ,OAAAC,GAAO,aAAAC,GAAa,WAAAP,IAAY,IAAI,GAAGE,KAAuB;AACxF,2BACG,OAAA,EAAI,WAAW,cAAcF,CAAS,IAAK,GAAGE,GAC5C,UAAA;AAAA,IAAAG,KAAU,gBAAAG,EAAC,OAAA,EAAI,WAAU,iBAAiB,UAAAH,GAAO;AAAA,IAClD,gBAAAI,EAAC,OAAA,EAAI,WAAU,kBACZ,UAAA;AAAA,MAAAH,KAAS,gBAAAE,EAAC,OAAA,EAAI,WAAU,eAAe,UAAAF,GAAM;AAAA,MAC7CC,KAAe,gBAAAC,EAAC,OAAA,EAAI,WAAU,2BAA2B,UAAAD,EAAA,CAAY;AAAA,IAAA,EAAA,CACxE;AAAA,EAAA,GACF;AAEJ;AAEA,SAASG,EAAS;AAAA,EAChB,UAAAZ;AAAA,EACA,OAAAQ;AAAA,EACA,OAAAK;AAAA,EACA,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAb,IAAY;AAAA,EACZ,OAAAC;AAAA,EACA,MAAAa;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,MAAAC,IAAO;AAAA,EACP,WAAAC,IAAY;AAAA,EACZ,gBAAAC,IAAiB;AAAA,EACjB,SAAAC,IAAU;AAAA,EACV,WAAApB,IAAY;AAAA,EACZ,QAAAM;AAAA,EACA,aAAAE;AAAA,EACA,GAAGL;AACL,GAAc;AASZ,QAAMC,IAAU;AAAA,IACd;AAAA,IACA;AAAA,IACAW,KAX0C;AAAA,MAC1C,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA,EAMgBA,CAAI;AAAA;AAAA,IAExBC,KAAY,CAACE,KAAa;AAAA,IAC1BD,KAAQ;AAAA,IACRC,KAAa;AAAA,IACblB,KAAa;AAAA,IACbC;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,GAELoB,IAAyC;AAAA,IAC7C,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,KAAK;AAAA,EAAA;AAGP,MAAID;AACF,6BACG,OAAA,EAAI,WAAWhB,GAAS,OAAAF,GAAe,GAAGC,GACxC,UAAA;AAAA,MAAAU,uBACE,UAAA,EACC,UAAA,gBAAAJ,EAAC,OAAA,EAAI,WAAU,qCAAoC,GACrD;AAAA,MAEF,gBAAAC,EAAC,OAAA,EAAI,WAAU,aACX,UAAA;AAAA,SAAAJ,KAAUC,MACV,gBAAAG,EAAC,OAAA,EAAI,WAAU,mBACZ,UAAA;AAAA,UAAAJ,KAAU,gBAAAG,EAAC,OAAA,EAAI,WAAU,gDAAA,CAAgD;AAAA,UAC1E,gBAAAC,EAAC,OAAA,EAAI,WAAU,oBACb,UAAA;AAAA,YAAA,gBAAAD,EAAC,OAAA,EAAI,WAAU,qBAAA,CAAqB;AAAA,YACnCD,KAAe,gBAAAC,EAAC,OAAA,EAAI,WAAU,sBAAA,CAAsB;AAAA,UAAA,EAAA,CACvD;AAAA,QAAA,GACF;AAAA,QAED,CAACH,KAAU,CAACC,KACX,gBAAAG,EAAAY,GAAA,EACE,UAAA;AAAA,UAAA,gBAAAb,EAAC,OAAA,EAAI,WAAU,0BAAA,CAA0B;AAAA,UACzC,gBAAAC,EAAC,OAAA,EAAI,WAAU,aACb,UAAA;AAAA,YAAA,gBAAAD,EAAC,OAAA,EAAI,WAAU,sBAAA,CAAsB;AAAA,YACrC,gBAAAA,EAAC,OAAA,EAAI,WAAU,qBAAA,CAAqB;AAAA,YACpC,gBAAAA,EAAC,OAAA,EAAI,WAAU,qBAAA,CAAqB;AAAA,UAAA,EAAA,CACtC;AAAA,QAAA,GACF;AAAA,QAEDK,uBACE,OAAA,EAAI,WAAW,gBAAgBO,EAAeF,CAAc,CAAC,SAC5D,UAAA;AAAA,UAAA,gBAAAV,EAAC,OAAA,EAAI,WAAU,qBAAA,CAAqB;AAAA,UACpC,gBAAAA,EAAC,OAAA,EAAI,WAAU,qBAAA,CAAqB;AAAA,QAAA,EAAA,CACtC;AAAA,MAAA,EAAA,CAEJ;AAAA,IAAA,GACF;AAKJ,QAAMc,IAAgBjB,KAAWC,KAASC,GAGpCgB,IAAe,MACf,CAACjB,KAAS,CAACK,IAAc,OAEzBA,IAEA,gBAAAF,EAAC,OAAA,EAAI,WAAU,0CACZ,UAAA;AAAA,IAAAH,KAAS,gBAAAE,EAAC,MAAA,EAAG,WAAU,cAAc,UAAAF,GAAM;AAAA,IAC5C,gBAAAE,EAAC,OAAA,EAAI,WAAU,iBAAiB,UAAAG,EAAA,CAAM;AAAA,EAAA,GACxC,IAIGL,IAAQ,gBAAAE,EAAC,MAAA,EAAG,WAAU,cAAc,aAAM,IAAQ;AAG3D,2BACG,OAAA,EAAI,WAAWL,GAAS,OAAAF,GAAe,GAAGC,GACxC,UAAA;AAAA,IAAAU,KAAS,gBAAAJ,EAAC,YAAQ,UAAAI,EAAA,CAAM;AAAA,IACzB,gBAAAH,EAAC,OAAA,EAAI,WAAU,aACZ,UAAA;AAAA,MAAAa,IACC,gBAAAb,EAAAY,GAAA,EACE,UAAA;AAAA,QAAA,gBAAAZ,EAAC,OAAA,EAAI,WAAU,cACZ,UAAA;AAAA,UAAAJ,KAAU,gBAAAG,EAAC,OAAA,EAAI,WAAU,iBAAiB,UAAAH,GAAO;AAAA,UAClD,gBAAAI,EAAC,OAAA,EAAI,WAAU,kBACZ,UAAA;AAAA,YAAAc,EAAA;AAAA,YACAhB,KAAe,gBAAAC,EAAC,KAAA,EAAE,WAAU,2BAA2B,UAAAD,EAAA,CAAY;AAAA,UAAA,EAAA,CACtE;AAAA,QAAA,GACF;AAAA,QACCT;AAAA,MAAA,EAAA,CACH,IAEA,gBAAAW,EAAAY,GAAA,EACG,UAAA;AAAA,QAAAE,EAAA;AAAA,QACAzB;AAAA,MAAA,GACH;AAAA,MAEDe,uBAAY,OAAA,EAAI,WAAW,gBAAgBO,EAAeF,CAAc,CAAC,IAAK,UAAAL,EAAA,CAAQ;AAAA,IAAA,EAAA,CACzF;AAAA,EAAA,GACF;AAEJ;AAEO,MAAMW,IAAO,OAAO,OAAOd,GAAU;AAAA,EAC1C,MAAMb;AAAA,EACN,MAAMO;AACR,CAAC;"}
1
+ {"version":3,"file":"index14.js","sources":["../src/components/Card.tsx"],"sourcesContent":["import React, { forwardRef } from 'react'\n\nexport type CardSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\nexport type CardVariant = 'default' | 'border' | 'dash' | 'borderless'\n\nexport interface CardTabItem {\n key: string\n label: React.ReactNode\n disabled?: boolean\n}\n\nexport interface CardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n children?: React.ReactNode\n title?: React.ReactNode\n /** Content in the top-right corner of the card header */\n extra?: React.ReactNode\n cover?: React.ReactNode\n actions?: React.ReactNode\n size?: CardSize\n /** @deprecated Use variant instead */\n bordered?: boolean\n /** Card style variant */\n variant?: CardVariant\n /** Inner card style (nested cards) */\n type?: 'inner'\n side?: boolean\n imageFull?: boolean\n actionsJustify?: 'start' | 'center' | 'end'\n loading?: boolean\n hoverable?: boolean\n // Meta props for avatar + description layout\n avatar?: React.ReactNode\n description?: React.ReactNode\n // Tab support\n tabList?: CardTabItem[]\n activeTabKey?: string\n defaultActiveTabKey?: string\n onTabChange?: (key: string) => void\n tabBarExtraContent?: React.ReactNode\n 'data-testid'?: string\n}\n\nexport interface CardMetaProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Avatar or icon element */\n avatar?: React.ReactNode\n /** Title content */\n title?: React.ReactNode\n /** Description content */\n description?: React.ReactNode\n 'data-testid'?: string\n}\n\nexport interface CardGridProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode\n hoverable?: boolean\n 'data-testid'?: string\n}\n\nconst sizeClasses: Record<CardSize, string> = {\n xs: 'card-xs',\n sm: 'card-sm',\n md: 'card-md',\n lg: 'card-lg',\n xl: 'card-xl',\n}\n\nconst variantClasses: Record<CardVariant, string> = {\n default: 'shadow-sm',\n border: 'card-border',\n dash: 'card-dash',\n borderless: '',\n}\n\nconst justifyClasses: Record<string, string> = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n}\n\nconst CardGrid = forwardRef<HTMLDivElement, CardGridProps>(\n ({ children, hoverable = false, className = '', 'data-testid': testId, ...rest }, ref) => {\n const classes = [\n 'p-6 border border-base-content/10',\n hoverable && 'cursor-pointer hover:shadow-md transition-shadow',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <div ref={ref} className={classes} data-testid={testId} {...rest}>\n {children}\n </div>\n )\n }\n)\n\nCardGrid.displayName = 'Card.Grid'\n\nconst CardMeta = forwardRef<HTMLDivElement, CardMetaProps>(\n ({ avatar, title, description, className = '', 'data-testid': testId, ...rest }, ref) => {\n return (\n <div ref={ref} className={`flex gap-4 ${className}`} data-testid={testId} {...rest}>\n {avatar && <div className=\"flex-shrink-0\">{avatar}</div>}\n <div className=\"flex-1 min-w-0\">\n {title && <div className=\"font-medium\">{title}</div>}\n {description && <div className=\"text-sm opacity-70 mt-1\">{description}</div>}\n </div>\n </div>\n )\n }\n)\n\nCardMeta.displayName = 'Card.Meta'\n\nconst CardRoot = forwardRef<HTMLDivElement, CardProps>(\n (\n {\n children,\n title,\n extra,\n cover,\n actions,\n className = '',\n size,\n bordered,\n variant,\n type,\n side = false,\n imageFull = false,\n actionsJustify = 'end',\n loading = false,\n hoverable = false,\n avatar,\n description,\n tabList,\n activeTabKey,\n defaultActiveTabKey,\n onTabChange,\n tabBarExtraContent,\n 'data-testid': testId,\n ...rest\n },\n ref\n ) => {\n const baseTestId = testId ?? 'card'\n\n // Handle activeTabKey state\n const [internalActiveKey, setInternalActiveKey] = React.useState(\n defaultActiveTabKey ?? tabList?.[0]?.key\n )\n const currentTabKey = activeTabKey ?? internalActiveKey\n\n const handleTabChange = (key: string) => {\n if (activeTabKey === undefined) {\n setInternalActiveKey(key)\n }\n onTabChange?.(key)\n }\n\n // Resolve variant from bordered prop for backwards compatibility\n const resolvedVariant = variant ?? (bordered === false ? 'borderless' : 'default')\n\n const classes = [\n 'card',\n 'bg-base-100',\n size && sizeClasses[size],\n // Don't add variant styling when imageFull is used (it breaks the overlay effect)\n !imageFull && variantClasses[resolvedVariant],\n side && 'card-side',\n imageFull && 'image-full shadow-sm',\n hoverable && 'transition-shadow hover:shadow-lg cursor-pointer',\n type === 'inner' && 'bg-base-200',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n // Render loading skeleton\n if (loading) {\n return (\n <div\n ref={ref}\n className={classes}\n data-testid={baseTestId}\n data-loading=\"true\"\n {...rest}\n >\n {cover && (\n <figure>\n <div className=\"skeleton h-48 w-full rounded-none\" />\n </figure>\n )}\n <div className=\"card-body\">\n {(avatar || title) && (\n <div className=\"flex gap-4 mb-4\">\n {avatar && <div className=\"skeleton w-12 h-12 rounded-full flex-shrink-0\" />}\n <div className=\"flex-1 space-y-2\">\n <div className=\"skeleton h-6 w-2/3\" />\n {description && <div className=\"skeleton h-4 w-full\" />}\n </div>\n </div>\n )}\n {!avatar && !title && (\n <>\n <div className=\"skeleton h-6 w-2/3 mb-4\" />\n <div className=\"space-y-2\">\n <div className=\"skeleton h-4 w-full\" />\n <div className=\"skeleton h-4 w-5/6\" />\n <div className=\"skeleton h-4 w-4/6\" />\n </div>\n </>\n )}\n {actions && (\n <div className={`card-actions ${justifyClasses[actionsJustify]} mt-4`}>\n <div className=\"skeleton h-10 w-20\" />\n <div className=\"skeleton h-10 w-20\" />\n </div>\n )}\n </div>\n </div>\n )\n }\n\n // Render with avatar + title + description layout (meta style)\n const hasMetaLayout = avatar || (title && description)\n\n // Header with title and extra\n const renderHeader = () => {\n if (!title && !extra) return null\n\n if (extra) {\n return (\n <div\n className=\"flex justify-between items-start gap-4\"\n data-testid={`${baseTestId}-header`}\n >\n {title && <h2 className=\"card-title\">{title}</h2>}\n <div className=\"flex-shrink-0\" data-testid={`${baseTestId}-extra`}>\n {extra}\n </div>\n </div>\n )\n }\n\n return title ? <h2 className=\"card-title\">{title}</h2> : null\n }\n\n // Render tabs\n const renderTabs = () => {\n if (!tabList || tabList.length === 0) return null\n\n return (\n <div\n className=\"border-b border-base-300 px-4\"\n data-testid={`${baseTestId}-tabs`}\n >\n <div className=\"flex items-center justify-between\">\n <div role=\"tablist\" className=\"tabs\">\n {tabList.map((tab) => (\n <button\n key={tab.key}\n role=\"tab\"\n className={[\n 'tab',\n currentTabKey === tab.key && 'tab-active',\n tab.disabled && 'tab-disabled',\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={() => !tab.disabled && handleTabChange(tab.key)}\n disabled={tab.disabled}\n aria-selected={currentTabKey === tab.key}\n data-testid={`${baseTestId}-tab-${tab.key}`}\n >\n {tab.label}\n </button>\n ))}\n </div>\n {tabBarExtraContent && (\n <div data-testid={`${baseTestId}-tab-extra`}>{tabBarExtraContent}</div>\n )}\n </div>\n </div>\n )\n }\n\n return (\n <div\n ref={ref}\n className={classes}\n data-testid={baseTestId}\n {...rest}\n >\n {cover && (\n <figure data-testid={`${baseTestId}-cover`}>{cover}</figure>\n )}\n {renderTabs()}\n <div className=\"card-body\" data-testid={`${baseTestId}-body`}>\n {hasMetaLayout ? (\n <>\n <div className=\"flex gap-4\">\n {avatar && <div className=\"flex-shrink-0\">{avatar}</div>}\n <div className=\"flex-1 min-w-0\">\n {renderHeader()}\n {description && <p className=\"text-sm opacity-70 mt-1\">{description}</p>}\n </div>\n </div>\n {children}\n </>\n ) : (\n <>\n {renderHeader()}\n {children}\n </>\n )}\n {actions && (\n <div\n className={`card-actions ${justifyClasses[actionsJustify]}`}\n data-testid={`${baseTestId}-actions`}\n >\n {actions}\n </div>\n )}\n </div>\n </div>\n )\n }\n)\n\nCardRoot.displayName = 'Card'\n\nexport const Card = Object.assign(CardRoot, {\n Grid: CardGrid,\n Meta: CardMeta,\n})\n\nexport default Card\n"],"names":["sizeClasses","variantClasses","justifyClasses","CardGrid","forwardRef","children","hoverable","className","testId","rest","ref","classes","jsx","CardMeta","avatar","title","description","jsxs","CardRoot","extra","cover","actions","size","bordered","variant","type","side","imageFull","actionsJustify","loading","tabList","activeTabKey","defaultActiveTabKey","onTabChange","tabBarExtraContent","baseTestId","internalActiveKey","setInternalActiveKey","React","currentTabKey","handleTabChange","key","resolvedVariant","Fragment","hasMetaLayout","renderHeader","renderTabs","tab","Card"],"mappings":"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"}