@aster-ui/prefixed 0.12.52 → 0.12.55

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.
@@ -1,23 +1,23 @@
1
- import { jsx as d, jsxs as $, Fragment as A } from "react/jsx-runtime";
2
- import { IconSizeContext as E } from "../contexts/IconSizeContext.js";
1
+ import { jsx as d, jsxs as A, Fragment as E } from "react/jsx-runtime";
2
+ import { SizeProvider as I } from "../contexts/SizeContext.js";
3
3
  import { useConfig as W } from "./ConfigProvider.js";
4
- const X = "d-btn", F = "d-btn-primary", G = "d-btn-secondary", O = "d-btn-accent", H = "d-btn-info", J = "d-btn-success", M = "d-btn-warning", Q = "d-btn-error", R = "d-btn-neutral", U = "d-btn-outline", V = "d-btn-dash", Y = "d-btn-soft", Z = "d-btn-ghost", _ = "d-btn-link", P = "d-btn-xs", nn = "d-btn-sm", tn = "d-btn-lg", sn = "d-btn-xl", en = "d-btn-active", dn = "d-btn-square", on = "d-btn-circle", rn = "d-btn-wide", cn = "d-btn-block", an = "d-loading", ln = "d-loading-spinner", Cn = ({
5
- children: o,
4
+ const X = "d-btn", F = "d-btn-primary", G = "d-btn-secondary", O = "d-btn-accent", H = "d-btn-info", J = "d-btn-success", M = "d-btn-warning", Q = "d-btn-error", R = "d-btn-neutral", U = "d-btn-outline", V = "d-btn-dash", Y = "d-btn-soft", Z = "d-btn-ghost", _ = "d-btn-link", P = "d-btn-xs", nn = "d-btn-sm", tn = "d-btn-lg", sn = "d-btn-xl", en = "d-btn-active", dn = "d-btn-square", rn = "d-btn-circle", on = "d-btn-wide", cn = "d-btn-block", an = "d-loading", ln = "d-loading-spinner", gn = ({
5
+ children: r,
6
6
  color: y,
7
7
  variant: l,
8
8
  size: p,
9
- active: C = !1,
9
+ active: g = !1,
10
10
  loading: n = !1,
11
11
  shape: i,
12
- noAnimation: g = !1,
13
- icon: r,
12
+ noAnimation: C = !1,
13
+ icon: o,
14
14
  iconPosition: t = "start",
15
15
  danger: k = !1,
16
16
  pressed: b,
17
- className: x = "",
17
+ className: S = "",
18
18
  ...c
19
19
  }) => {
20
- const { componentSize: S } = W(), a = p ?? S ?? "md", m = k ? "error" : y, v = {
20
+ const { componentSize: x } = W(), a = p ?? x ?? "md", m = k ? "error" : y, v = {
21
21
  primary: F,
22
22
  secondary: G,
23
23
  accent: O,
@@ -42,8 +42,8 @@ const X = "d-btn", F = "d-btn-primary", G = "d-btn-secondary", O = "d-btn-accent
42
42
  xl: sn
43
43
  }, z = {
44
44
  square: dn,
45
- circle: on,
46
- wide: rn,
45
+ circle: rn,
46
+ wide: on,
47
47
  block: cn,
48
48
  round: "rounded-full"
49
49
  }, u = [
@@ -51,24 +51,24 @@ const X = "d-btn", F = "d-btn-primary", G = "d-btn-secondary", O = "d-btn-accent
51
51
  m && v[m],
52
52
  l && w[l],
53
53
  D[a],
54
- C && en,
54
+ g && en,
55
55
  i && z[i],
56
- g && "no-animation",
57
- x
58
- ].filter(Boolean).join(" "), N = o != null && o !== "" ? {
56
+ C && "no-animation",
57
+ S
58
+ ].filter(Boolean).join(" "), N = r != null && r !== "" ? {
59
59
  xs: t === "start" ? "mr-1" : "ml-1",
60
60
  sm: t === "start" ? "mr-1" : "ml-1",
61
61
  md: t === "start" ? "mr-1.5" : "ml-1.5",
62
62
  lg: t === "start" ? "mr-2" : "ml-2",
63
63
  xl: t === "start" ? "mr-2" : "ml-2"
64
- }[a] : "", f = r && /* @__PURE__ */ d(E.Provider, { value: a, children: /* @__PURE__ */ d("span", { className: `inline-flex items-center ${N}`, "aria-hidden": "true", children: r }) }), B = /* @__PURE__ */ $(A, { children: [
64
+ }[a] : "", f = o && /* @__PURE__ */ d(I, { size: a, children: /* @__PURE__ */ d("span", { className: `inline-flex items-center ${N}`, "aria-hidden": "true", children: o }) }), B = /* @__PURE__ */ A(E, { children: [
65
65
  n && /* @__PURE__ */ d("span", { className: `${an} ${ln}`, "aria-hidden": "true" }),
66
- !n && r && t === "start" && f,
67
- o,
68
- !n && r && t === "end" && f
66
+ !n && o && t === "start" && f,
67
+ r,
68
+ !n && o && t === "end" && f
69
69
  ] });
70
70
  if ("href" in c && c.href !== void 0) {
71
- const { href: L, disabled: T, onKeyDown: j, onClick: q, ...I } = c, e = T || n;
71
+ const { href: L, disabled: T, onKeyDown: j, onClick: q, ...$ } = c, e = T || n;
72
72
  return /* @__PURE__ */ d(
73
73
  "a",
74
74
  {
@@ -89,7 +89,7 @@ const X = "d-btn", F = "d-btn-primary", G = "d-btn-secondary", O = "d-btn-accent
89
89
  }
90
90
  q?.(s);
91
91
  },
92
- ...I,
92
+ ...$,
93
93
  children: B
94
94
  }
95
95
  );
@@ -109,6 +109,6 @@ const X = "d-btn", F = "d-btn-primary", G = "d-btn-secondary", O = "d-btn-accent
109
109
  );
110
110
  };
111
111
  export {
112
- Cn as Button
112
+ gn as Button
113
113
  };
114
114
  //# sourceMappingURL=Button.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sources":["../../src/components/Button.tsx"],"sourcesContent":["import React from 'react'\nimport { IconSizeContext } from '../contexts/IconSizeContext'\nimport { useConfig } from './ConfigProvider'\n\n// DaisyUI classes\nconst dBtn = 'd-btn'\nconst dBtnPrimary = 'd-btn-primary'\nconst dBtnSecondary = 'd-btn-secondary'\nconst dBtnAccent = 'd-btn-accent'\nconst dBtnInfo = 'd-btn-info'\nconst dBtnSuccess = 'd-btn-success'\nconst dBtnWarning = 'd-btn-warning'\nconst dBtnError = 'd-btn-error'\nconst dBtnNeutral = 'd-btn-neutral'\nconst dBtnOutline = 'd-btn-outline'\nconst dBtnDash = 'd-btn-dash'\nconst dBtnSoft = 'd-btn-soft'\nconst dBtnGhost = 'd-btn-ghost'\nconst dBtnLink = 'd-btn-link'\nconst dBtnXs = 'd-btn-xs'\nconst dBtnSm = 'd-btn-sm'\nconst dBtnLg = 'd-btn-lg'\nconst dBtnXl = 'd-btn-xl'\nconst dBtnActive = 'd-btn-active'\nconst dBtnSquare = 'd-btn-square'\nconst dBtnCircle = 'd-btn-circle'\nconst dBtnWide = 'd-btn-wide'\nconst dBtnBlock = 'd-btn-block'\nconst dLoading = 'd-loading'\nconst dLoadingSpinner = 'd-loading-spinner'\n\ntype BaseButtonProps = {\n /** Button color */\n color?: 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error' | 'neutral'\n /** Button style variant */\n variant?: 'solid' | 'outline' | 'dash' | 'soft' | 'ghost' | 'link'\n /** Button size */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n /** Active/pressed visual state */\n active?: boolean\n /** Show loading spinner and disable button */\n loading?: boolean\n /** Button shape */\n shape?: 'square' | 'circle' | 'wide' | 'block' | 'round'\n /** Disable click animation */\n noAnimation?: boolean\n /** Icon element to display */\n icon?: React.ReactNode\n /** Position of the icon */\n iconPosition?: 'start' | 'end'\n /** Applies error/danger styling (shorthand for color=\"error\") */\n danger?: boolean\n /** Toggle button pressed state (sets aria-pressed) */\n pressed?: boolean\n}\n\ntype ButtonAsButton = BaseButtonProps &\n Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'type'> & {\n href?: undefined\n htmlType?: 'button' | 'submit' | 'reset'\n }\n\ntype ButtonAsAnchor = BaseButtonProps &\n Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'type'> & {\n href: string\n htmlType?: undefined\n /** Disable the link button */\n disabled?: boolean\n }\n\nexport type ButtonProps = ButtonAsButton | ButtonAsAnchor\n\nexport const Button: React.FC<ButtonProps> = ({\n children,\n color,\n variant,\n size,\n active = false,\n loading = false,\n shape,\n noAnimation = false,\n icon,\n iconPosition = 'start',\n danger = false,\n pressed,\n className = '',\n ...props\n}) => {\n const { componentSize } = useConfig()\n const effectiveSize = size ?? componentSize ?? 'md'\n // danger prop is a shorthand for color=\"error\"\n const effectiveColor = danger ? 'error' : color\n\n const colorClasses = {\n primary: dBtnPrimary,\n secondary: dBtnSecondary,\n accent: dBtnAccent,\n info: dBtnInfo,\n success: dBtnSuccess,\n warning: dBtnWarning,\n error: dBtnError,\n neutral: dBtnNeutral,\n }\n\n const variantClasses = {\n solid: '', // default, no extra class needed\n outline: dBtnOutline,\n dash: dBtnDash,\n soft: dBtnSoft,\n ghost: dBtnGhost,\n link: dBtnLink,\n }\n\n const sizeClasses = {\n xs: dBtnXs,\n sm: dBtnSm,\n md: '',\n lg: dBtnLg,\n xl: dBtnXl,\n }\n\n const shapeClasses = {\n square: dBtnSquare,\n circle: dBtnCircle,\n wide: dBtnWide,\n block: dBtnBlock,\n round: 'rounded-full',\n }\n\n const classes = [\n dBtn,\n effectiveColor && colorClasses[effectiveColor],\n variant && variantClasses[variant],\n sizeClasses[effectiveSize],\n active && dBtnActive,\n shape && shapeClasses[shape],\n noAnimation && 'no-animation',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n // Determine icon spacing based on whether there's text content and button size\n const hasChildren = children !== undefined && children !== null && children !== ''\n const spacingBySize = {\n xs: iconPosition === 'start' ? 'mr-1' : 'ml-1',\n sm: iconPosition === 'start' ? 'mr-1' : 'ml-1',\n md: iconPosition === 'start' ? 'mr-1.5' : 'ml-1.5',\n lg: iconPosition === 'start' ? 'mr-2' : 'ml-2',\n xl: iconPosition === 'start' ? 'mr-2' : 'ml-2',\n }\n const iconSpacing = hasChildren ? spacingBySize[effectiveSize] : ''\n\n const iconElement = icon && (\n <IconSizeContext.Provider value={effectiveSize}>\n <span className={`inline-flex items-center ${iconSpacing}`} aria-hidden=\"true\">\n {icon}\n </span>\n </IconSizeContext.Provider>\n )\n\n const content = (\n <>\n {loading && <span className={`${dLoading} ${dLoadingSpinner}`} aria-hidden=\"true\"></span>}\n {!loading && icon && iconPosition === 'start' && iconElement}\n {children}\n {!loading && icon && iconPosition === 'end' && iconElement}\n </>\n )\n\n if ('href' in props && props.href !== undefined) {\n const { href, disabled, onKeyDown, onClick, ...anchorProps } = props as ButtonAsAnchor & {\n onKeyDown?: React.KeyboardEventHandler<HTMLAnchorElement>\n onClick?: React.MouseEventHandler<HTMLAnchorElement>\n }\n const isDisabled = disabled || loading\n\n // Handle Space key for anchor buttons (links only respond to Enter natively)\n const handleKeyDown = (event: React.KeyboardEvent<HTMLAnchorElement>) => {\n if (event.key === ' ' && !isDisabled) {\n event.preventDefault()\n event.currentTarget.click()\n }\n onKeyDown?.(event)\n }\n\n // Prevent click when disabled\n const handleClick = (event: React.MouseEvent<HTMLAnchorElement>) => {\n if (isDisabled) {\n event.preventDefault()\n return\n }\n onClick?.(event)\n }\n\n return (\n <a\n href={isDisabled ? undefined : href}\n role=\"button\"\n className={classes}\n aria-disabled={isDisabled || undefined}\n aria-busy={loading || undefined}\n aria-pressed={pressed}\n tabIndex={isDisabled ? -1 : 0}\n onKeyDown={handleKeyDown}\n onClick={handleClick}\n {...anchorProps}\n >\n {content}\n </a>\n )\n }\n\n const { htmlType, ...buttonProps } = props as Omit<ButtonAsButton, keyof BaseButtonProps>\n const buttonType: 'button' | 'submit' | 'reset' = htmlType ?? 'button'\n return (\n <button\n type={buttonType}\n className={classes}\n aria-busy={loading || undefined}\n aria-pressed={pressed}\n disabled={loading || buttonProps.disabled}\n {...buttonProps}\n >\n {content}\n </button>\n )\n}\n"],"names":["dBtn","dBtnPrimary","dBtnSecondary","dBtnAccent","dBtnInfo","dBtnSuccess","dBtnWarning","dBtnError","dBtnNeutral","dBtnOutline","dBtnDash","dBtnSoft","dBtnGhost","dBtnLink","dBtnXs","dBtnSm","dBtnLg","dBtnXl","dBtnActive","dBtnSquare","dBtnCircle","dBtnWide","dBtnBlock","dLoading","dLoadingSpinner","Button","children","color","variant","size","active","loading","shape","noAnimation","icon","iconPosition","danger","pressed","className","props","componentSize","useConfig","effectiveSize","effectiveColor","colorClasses","variantClasses","sizeClasses","shapeClasses","classes","iconSpacing","iconElement","jsx","IconSizeContext","content","jsxs","Fragment","href","disabled","onKeyDown","onClick","anchorProps","isDisabled","event","htmlType","buttonProps"],"mappings":"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"}
1
+ {"version":3,"file":"Button.js","sources":["../../src/components/Button.tsx"],"sourcesContent":["import React from 'react'\nimport { SizeProvider } from '../contexts/SizeContext'\nimport { useConfig } from './ConfigProvider'\n\n// DaisyUI classes\nconst dBtn = 'd-btn'\nconst dBtnPrimary = 'd-btn-primary'\nconst dBtnSecondary = 'd-btn-secondary'\nconst dBtnAccent = 'd-btn-accent'\nconst dBtnInfo = 'd-btn-info'\nconst dBtnSuccess = 'd-btn-success'\nconst dBtnWarning = 'd-btn-warning'\nconst dBtnError = 'd-btn-error'\nconst dBtnNeutral = 'd-btn-neutral'\nconst dBtnOutline = 'd-btn-outline'\nconst dBtnDash = 'd-btn-dash'\nconst dBtnSoft = 'd-btn-soft'\nconst dBtnGhost = 'd-btn-ghost'\nconst dBtnLink = 'd-btn-link'\nconst dBtnXs = 'd-btn-xs'\nconst dBtnSm = 'd-btn-sm'\nconst dBtnLg = 'd-btn-lg'\nconst dBtnXl = 'd-btn-xl'\nconst dBtnActive = 'd-btn-active'\nconst dBtnSquare = 'd-btn-square'\nconst dBtnCircle = 'd-btn-circle'\nconst dBtnWide = 'd-btn-wide'\nconst dBtnBlock = 'd-btn-block'\nconst dLoading = 'd-loading'\nconst dLoadingSpinner = 'd-loading-spinner'\n\ntype BaseButtonProps = {\n /** Button color */\n color?: 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error' | 'neutral'\n /** Button style variant */\n variant?: 'solid' | 'outline' | 'dash' | 'soft' | 'ghost' | 'link'\n /** Button size */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n /** Active/pressed visual state */\n active?: boolean\n /** Show loading spinner and disable button */\n loading?: boolean\n /** Button shape */\n shape?: 'square' | 'circle' | 'wide' | 'block' | 'round'\n /** Disable click animation */\n noAnimation?: boolean\n /** Icon element to display */\n icon?: React.ReactNode\n /** Position of the icon */\n iconPosition?: 'start' | 'end'\n /** Applies error/danger styling (shorthand for color=\"error\") */\n danger?: boolean\n /** Toggle button pressed state (sets aria-pressed) */\n pressed?: boolean\n}\n\ntype ButtonAsButton = BaseButtonProps &\n Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'type'> & {\n href?: undefined\n htmlType?: 'button' | 'submit' | 'reset'\n }\n\ntype ButtonAsAnchor = BaseButtonProps &\n Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'type'> & {\n href: string\n htmlType?: undefined\n /** Disable the link button */\n disabled?: boolean\n }\n\nexport type ButtonProps = ButtonAsButton | ButtonAsAnchor\n\nexport const Button: React.FC<ButtonProps> = ({\n children,\n color,\n variant,\n size,\n active = false,\n loading = false,\n shape,\n noAnimation = false,\n icon,\n iconPosition = 'start',\n danger = false,\n pressed,\n className = '',\n ...props\n}) => {\n const { componentSize } = useConfig()\n const effectiveSize = size ?? componentSize ?? 'md'\n // danger prop is a shorthand for color=\"error\"\n const effectiveColor = danger ? 'error' : color\n\n const colorClasses = {\n primary: dBtnPrimary,\n secondary: dBtnSecondary,\n accent: dBtnAccent,\n info: dBtnInfo,\n success: dBtnSuccess,\n warning: dBtnWarning,\n error: dBtnError,\n neutral: dBtnNeutral,\n }\n\n const variantClasses = {\n solid: '', // default, no extra class needed\n outline: dBtnOutline,\n dash: dBtnDash,\n soft: dBtnSoft,\n ghost: dBtnGhost,\n link: dBtnLink,\n }\n\n const sizeClasses = {\n xs: dBtnXs,\n sm: dBtnSm,\n md: '',\n lg: dBtnLg,\n xl: dBtnXl,\n }\n\n const shapeClasses = {\n square: dBtnSquare,\n circle: dBtnCircle,\n wide: dBtnWide,\n block: dBtnBlock,\n round: 'rounded-full',\n }\n\n const classes = [\n dBtn,\n effectiveColor && colorClasses[effectiveColor],\n variant && variantClasses[variant],\n sizeClasses[effectiveSize],\n active && dBtnActive,\n shape && shapeClasses[shape],\n noAnimation && 'no-animation',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n // Determine icon spacing based on whether there's text content and button size\n const hasChildren = children !== undefined && children !== null && children !== ''\n const spacingBySize = {\n xs: iconPosition === 'start' ? 'mr-1' : 'ml-1',\n sm: iconPosition === 'start' ? 'mr-1' : 'ml-1',\n md: iconPosition === 'start' ? 'mr-1.5' : 'ml-1.5',\n lg: iconPosition === 'start' ? 'mr-2' : 'ml-2',\n xl: iconPosition === 'start' ? 'mr-2' : 'ml-2',\n }\n const iconSpacing = hasChildren ? spacingBySize[effectiveSize] : ''\n\n const iconElement = icon && (\n <SizeProvider size={effectiveSize}>\n <span className={`inline-flex items-center ${iconSpacing}`} aria-hidden=\"true\">\n {icon}\n </span>\n </SizeProvider>\n )\n\n const content = (\n <>\n {loading && <span className={`${dLoading} ${dLoadingSpinner}`} aria-hidden=\"true\"></span>}\n {!loading && icon && iconPosition === 'start' && iconElement}\n {children}\n {!loading && icon && iconPosition === 'end' && iconElement}\n </>\n )\n\n if ('href' in props && props.href !== undefined) {\n const { href, disabled, onKeyDown, onClick, ...anchorProps } = props as ButtonAsAnchor & {\n onKeyDown?: React.KeyboardEventHandler<HTMLAnchorElement>\n onClick?: React.MouseEventHandler<HTMLAnchorElement>\n }\n const isDisabled = disabled || loading\n\n // Handle Space key for anchor buttons (links only respond to Enter natively)\n const handleKeyDown = (event: React.KeyboardEvent<HTMLAnchorElement>) => {\n if (event.key === ' ' && !isDisabled) {\n event.preventDefault()\n event.currentTarget.click()\n }\n onKeyDown?.(event)\n }\n\n // Prevent click when disabled\n const handleClick = (event: React.MouseEvent<HTMLAnchorElement>) => {\n if (isDisabled) {\n event.preventDefault()\n return\n }\n onClick?.(event)\n }\n\n return (\n <a\n href={isDisabled ? undefined : href}\n role=\"button\"\n className={classes}\n aria-disabled={isDisabled || undefined}\n aria-busy={loading || undefined}\n aria-pressed={pressed}\n tabIndex={isDisabled ? -1 : 0}\n onKeyDown={handleKeyDown}\n onClick={handleClick}\n {...anchorProps}\n >\n {content}\n </a>\n )\n }\n\n const { htmlType, ...buttonProps } = props as Omit<ButtonAsButton, keyof BaseButtonProps>\n const buttonType: 'button' | 'submit' | 'reset' = htmlType ?? 'button'\n return (\n <button\n type={buttonType}\n className={classes}\n aria-busy={loading || undefined}\n aria-pressed={pressed}\n disabled={loading || buttonProps.disabled}\n {...buttonProps}\n >\n {content}\n </button>\n )\n}\n"],"names":["dBtn","dBtnPrimary","dBtnSecondary","dBtnAccent","dBtnInfo","dBtnSuccess","dBtnWarning","dBtnError","dBtnNeutral","dBtnOutline","dBtnDash","dBtnSoft","dBtnGhost","dBtnLink","dBtnXs","dBtnSm","dBtnLg","dBtnXl","dBtnActive","dBtnSquare","dBtnCircle","dBtnWide","dBtnBlock","dLoading","dLoadingSpinner","Button","children","color","variant","size","active","loading","shape","noAnimation","icon","iconPosition","danger","pressed","className","props","componentSize","useConfig","effectiveSize","effectiveColor","colorClasses","variantClasses","sizeClasses","shapeClasses","classes","iconSpacing","iconElement","jsx","SizeProvider","content","jsxs","Fragment","href","disabled","onKeyDown","onClick","anchorProps","isDisabled","event","htmlType","buttonProps"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { default as React } from 'react';
2
2
  export type CardSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
3
- export type CardVariant = 'default' | 'border' | 'dash' | 'borderless';
3
+ export type CardVariant = 'shadow' | 'border' | 'dash' | 'borderless';
4
4
  export interface CardTabItem {
5
5
  key: string;
6
6
  label: React.ReactNode;
@@ -14,8 +14,6 @@ export interface CardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 't
14
14
  cover?: React.ReactNode;
15
15
  actions?: React.ReactNode;
16
16
  size?: CardSize;
17
- /** @deprecated Use variant instead */
18
- bordered?: boolean;
19
17
  /** Card style variant */
20
18
  variant?: CardVariant;
21
19
  /** Inner card style (nested cards) */
@@ -1,34 +1,34 @@
1
1
  import { jsxs as e, jsx as d, Fragment as u } from "react/jsx-runtime";
2
- import Z, { forwardRef as v } from "react";
3
- const _ = "d-card", E = "d-card-xs", J = "d-card-sm", L = "d-card-md", dd = "d-card-lg", ed = "d-card-xl", sd = "d-card-border", ad = "d-card-dash", ld = "d-card-side", k = "d-card-body", T = "d-card-title", M = "d-card-actions", r = "d-skeleton", rd = "d-tab", cd = "d-tab-active", td = "d-tab-disabled", id = "d-tabs", nd = {
4
- xs: E,
5
- sm: J,
6
- md: L,
7
- lg: dd,
8
- xl: ed
9
- }, od = {
10
- default: "shadow-sm",
11
- border: sd,
12
- dash: ad,
2
+ import W, { forwardRef as v } from "react";
3
+ const Y = "d-card", Z = "d-card-xs", _ = "d-card-sm", E = "d-card-md", J = "d-card-lg", L = "d-card-xl", dd = "d-card-border", ed = "d-card-dash", sd = "d-card-side", k = "d-card-body", T = "d-card-title", M = "d-card-actions", l = "d-skeleton", ad = "d-tab", rd = "d-tab-active", ld = "d-tab-disabled", cd = "d-tabs", id = {
4
+ xs: Z,
5
+ sm: _,
6
+ md: E,
7
+ lg: J,
8
+ xl: L
9
+ }, td = {
10
+ shadow: "shadow-sm",
11
+ border: dd,
12
+ dash: ed,
13
13
  borderless: ""
14
14
  }, A = {
15
15
  start: "justify-start",
16
16
  center: "justify-center",
17
17
  end: "justify-end"
18
18
  }, B = v(
19
- ({ children: t, hoverable: s = !1, className: c = "", "data-testid": i, ...n }, h) => {
19
+ ({ children: i, hoverable: s = !1, className: c = "", "data-testid": t, ...n }, h) => {
20
20
  const o = [
21
21
  "p-6 border border-base-content/10",
22
22
  s && "cursor-pointer hover:shadow-md transition-shadow",
23
23
  c
24
24
  ].filter(Boolean).join(" ");
25
- return /* @__PURE__ */ d("div", { ref: h, className: o, "data-testid": i, ...n, children: t });
25
+ return /* @__PURE__ */ d("div", { ref: h, className: o, "data-testid": t, ...n, children: i });
26
26
  }
27
27
  );
28
28
  B.displayName = "Card.Grid";
29
29
  const S = v(
30
- ({ avatar: t, title: s, description: c, className: i = "", "data-testid": n, ...h }, o) => /* @__PURE__ */ e("div", { ref: o, className: `flex gap-4 ${i}`, "data-testid": n, ...h, children: [
31
- t && /* @__PURE__ */ d("div", { className: "flex-shrink-0", children: t }),
30
+ ({ avatar: i, title: s, description: c, className: t = "", "data-testid": n, ...h }, o) => /* @__PURE__ */ e("div", { ref: o, className: `flex gap-4 ${t}`, "data-testid": n, ...h, children: [
31
+ i && /* @__PURE__ */ d("div", { className: "flex-shrink-0", children: i }),
32
32
  /* @__PURE__ */ e("div", { className: "flex-1 min-w-0", children: [
33
33
  s && /* @__PURE__ */ d("div", { className: "font-medium", children: s }),
34
34
  c && /* @__PURE__ */ d("div", { className: "text-sm opacity-70 mt-1", children: c })
@@ -38,117 +38,116 @@ const S = v(
38
38
  S.displayName = "Card.Meta";
39
39
  const G = v(
40
40
  ({
41
- children: t,
41
+ children: i,
42
42
  title: s,
43
43
  extra: c,
44
- cover: i,
44
+ cover: t,
45
45
  actions: n,
46
46
  className: h = "",
47
47
  size: o,
48
- bordered: R,
49
- variant: D,
50
- type: I,
51
- side: K = !1,
48
+ variant: R = "shadow",
49
+ type: D,
50
+ side: I = !1,
52
51
  imageFull: b = !1,
53
52
  actionsJustify: $ = "end",
54
- loading: X = !1,
55
- hoverable: H = !1,
53
+ loading: K = !1,
54
+ hoverable: X = !1,
56
55
  avatar: m,
57
56
  description: f,
58
57
  tabList: N,
59
- activeTabKey: y,
60
- defaultActiveTabKey: O,
61
- onTabChange: V,
62
- tabBarExtraContent: C,
58
+ activeTabKey: w,
59
+ defaultActiveTabKey: H,
60
+ onTabChange: O,
61
+ tabBarExtraContent: y,
63
62
  bodyClassName: q,
64
63
  "data-testid": z,
65
- ...w
64
+ ...C
66
65
  }, x) => {
67
- const l = z ?? "card", [F, P] = Z.useState(
68
- O ?? N?.[0]?.key
69
- ), g = y ?? F, Q = (a) => {
70
- y === void 0 && P(a), V?.(a);
71
- }, U = D ?? (R === !1 ? "borderless" : "default"), p = [
72
- _,
66
+ const r = z ?? "card", [F, P] = W.useState(
67
+ H ?? N?.[0]?.key
68
+ ), g = w ?? F, Q = (a) => {
69
+ w === void 0 && P(a), O?.(a);
70
+ }, p = [
71
+ Y,
73
72
  "bg-base-100",
74
- o && nd[o],
73
+ o && id[o],
75
74
  // Don't add variant styling when imageFull is used (it breaks the overlay effect)
76
- !b && od[U],
77
- K && ld,
75
+ !b && td[R],
76
+ I && sd,
78
77
  b && "image-full shadow-sm",
79
- H && "transition-shadow hover:shadow-lg cursor-pointer",
80
- I === "inner" && "bg-base-200",
78
+ X && "transition-shadow hover:shadow-lg cursor-pointer",
79
+ D === "inner" && "bg-base-200",
81
80
  h
82
81
  ].filter(Boolean).join(" ");
83
- if (X)
82
+ if (K)
84
83
  return /* @__PURE__ */ e(
85
84
  "div",
86
85
  {
87
86
  ref: x,
88
87
  className: p,
89
- "data-testid": l,
88
+ "data-testid": r,
90
89
  "data-loading": "true",
91
- ...w,
90
+ ...C,
92
91
  children: [
93
- i && /* @__PURE__ */ d("figure", { children: /* @__PURE__ */ d("div", { className: `${r} h-48 w-full rounded-none` }) }),
92
+ t && /* @__PURE__ */ d("figure", { children: /* @__PURE__ */ d("div", { className: `${l} h-48 w-full rounded-none` }) }),
94
93
  /* @__PURE__ */ e("div", { className: k, children: [
95
94
  (m || s) && /* @__PURE__ */ e("div", { className: "flex gap-4 mb-4", children: [
96
- m && /* @__PURE__ */ d("div", { className: `${r} w-12 h-12 rounded-full flex-shrink-0` }),
95
+ m && /* @__PURE__ */ d("div", { className: `${l} w-12 h-12 rounded-full flex-shrink-0` }),
97
96
  /* @__PURE__ */ e("div", { className: "flex-1 space-y-2", children: [
98
- /* @__PURE__ */ d("div", { className: `${r} h-6 w-2/3` }),
99
- f && /* @__PURE__ */ d("div", { className: `${r} h-4 w-full` })
97
+ /* @__PURE__ */ d("div", { className: `${l} h-6 w-2/3` }),
98
+ f && /* @__PURE__ */ d("div", { className: `${l} h-4 w-full` })
100
99
  ] })
101
100
  ] }),
102
101
  !m && !s && /* @__PURE__ */ e(u, { children: [
103
- /* @__PURE__ */ d("div", { className: `${r} h-6 w-2/3 mb-4` }),
102
+ /* @__PURE__ */ d("div", { className: `${l} h-6 w-2/3 mb-4` }),
104
103
  /* @__PURE__ */ e("div", { className: "space-y-2", children: [
105
- /* @__PURE__ */ d("div", { className: `${r} h-4 w-full` }),
106
- /* @__PURE__ */ d("div", { className: `${r} h-4 w-5/6` }),
107
- /* @__PURE__ */ d("div", { className: `${r} h-4 w-4/6` })
104
+ /* @__PURE__ */ d("div", { className: `${l} h-4 w-full` }),
105
+ /* @__PURE__ */ d("div", { className: `${l} h-4 w-5/6` }),
106
+ /* @__PURE__ */ d("div", { className: `${l} h-4 w-4/6` })
108
107
  ] })
109
108
  ] }),
110
109
  n && /* @__PURE__ */ e("div", { className: `${M} ${A[$]} mt-4`, children: [
111
- /* @__PURE__ */ d("div", { className: `${r} h-10 w-20` }),
112
- /* @__PURE__ */ d("div", { className: `${r} h-10 w-20` })
110
+ /* @__PURE__ */ d("div", { className: `${l} h-10 w-20` }),
111
+ /* @__PURE__ */ d("div", { className: `${l} h-10 w-20` })
113
112
  ] })
114
113
  ] })
115
114
  ]
116
115
  }
117
116
  );
118
- const W = m || s && f, j = () => !s && !c ? null : c ? /* @__PURE__ */ e(
117
+ const U = m || s && f, j = () => !s && !c ? null : c ? /* @__PURE__ */ e(
119
118
  "div",
120
119
  {
121
120
  className: "flex justify-between items-start gap-4",
122
- "data-testid": `${l}-header`,
121
+ "data-testid": `${r}-header`,
123
122
  children: [
124
123
  s && /* @__PURE__ */ d("h2", { className: T, children: s }),
125
- /* @__PURE__ */ d("div", { className: "flex-shrink-0", "data-testid": `${l}-extra`, children: c })
124
+ /* @__PURE__ */ d("div", { className: "flex-shrink-0", "data-testid": `${r}-extra`, children: c })
126
125
  ]
127
126
  }
128
- ) : s ? /* @__PURE__ */ d("h2", { className: T, children: s }) : null, Y = () => !N || N.length === 0 ? null : /* @__PURE__ */ d(
127
+ ) : s ? /* @__PURE__ */ d("h2", { className: T, children: s }) : null, V = () => !N || N.length === 0 ? null : /* @__PURE__ */ d(
129
128
  "div",
130
129
  {
131
130
  className: "border-b border-base-300 px-4",
132
- "data-testid": `${l}-tabs`,
131
+ "data-testid": `${r}-tabs`,
133
132
  children: /* @__PURE__ */ e("div", { className: "flex items-center justify-between", children: [
134
- /* @__PURE__ */ d("div", { role: "tablist", className: id, children: N.map((a) => /* @__PURE__ */ d(
133
+ /* @__PURE__ */ d("div", { role: "tablist", className: cd, children: N.map((a) => /* @__PURE__ */ d(
135
134
  "button",
136
135
  {
137
136
  role: "tab",
138
137
  className: [
139
- rd,
140
- g === a.key && cd,
141
- a.disabled && td
138
+ ad,
139
+ g === a.key && rd,
140
+ a.disabled && ld
142
141
  ].filter(Boolean).join(" "),
143
142
  onClick: () => !a.disabled && Q(a.key),
144
143
  disabled: a.disabled,
145
144
  "aria-selected": g === a.key,
146
- "data-testid": `${l}-tab-${a.key}`,
145
+ "data-testid": `${r}-tab-${a.key}`,
147
146
  children: a.label
148
147
  },
149
148
  a.key
150
149
  )) }),
151
- C && /* @__PURE__ */ d("div", { "data-testid": `${l}-tab-extra`, children: C })
150
+ y && /* @__PURE__ */ d("div", { "data-testid": `${r}-tab-extra`, children: y })
152
151
  ] })
153
152
  }
154
153
  );
@@ -157,13 +156,13 @@ const G = v(
157
156
  {
158
157
  ref: x,
159
158
  className: p,
160
- "data-testid": l,
161
- ...w,
159
+ "data-testid": r,
160
+ ...C,
162
161
  children: [
163
- i && /* @__PURE__ */ d("figure", { "data-testid": `${l}-cover`, children: i }),
164
- Y(),
165
- /* @__PURE__ */ e("div", { className: `${k} ${q || ""}`, "data-testid": `${l}-body`, children: [
166
- W ? /* @__PURE__ */ e(u, { children: [
162
+ t && /* @__PURE__ */ d("figure", { "data-testid": `${r}-cover`, children: t }),
163
+ V(),
164
+ /* @__PURE__ */ e("div", { className: `${k} ${q || ""}`, "data-testid": `${r}-body`, children: [
165
+ U ? /* @__PURE__ */ e(u, { children: [
167
166
  /* @__PURE__ */ e("div", { className: "flex gap-4", children: [
168
167
  m && /* @__PURE__ */ d("div", { className: "flex-shrink-0", children: m }),
169
168
  /* @__PURE__ */ e("div", { className: "flex-1 min-w-0", children: [
@@ -171,16 +170,16 @@ const G = v(
171
170
  f && /* @__PURE__ */ d("p", { className: "text-sm opacity-70 mt-1", children: f })
172
171
  ] })
173
172
  ] }),
174
- t
173
+ i
175
174
  ] }) : /* @__PURE__ */ e(u, { children: [
176
175
  j(),
177
- t
176
+ i
178
177
  ] }),
179
178
  n && /* @__PURE__ */ d(
180
179
  "div",
181
180
  {
182
181
  className: `${M} ${A[$]}`,
183
- "data-testid": `${l}-actions`,
182
+ "data-testid": `${r}-actions`,
184
183
  children: n
185
184
  }
186
185
  )
@@ -191,12 +190,12 @@ const G = v(
191
190
  }
192
191
  );
193
192
  G.displayName = "Card";
194
- const fd = Object.assign(G, {
193
+ const md = Object.assign(G, {
195
194
  Grid: B,
196
195
  Meta: S
197
196
  });
198
197
  export {
199
- fd as Card,
200
- fd as default
198
+ md as Card,
199
+ md as default
201
200
  };
202
201
  //# sourceMappingURL=Card.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Card.js","sources":["../../src/components/Card.tsx"],"sourcesContent":["import React, { forwardRef } from 'react'\n\n// DaisyUI classes\nconst dCard = 'd-card'\nconst dCardXs = 'd-card-xs'\nconst dCardSm = 'd-card-sm'\nconst dCardMd = 'd-card-md'\nconst dCardLg = 'd-card-lg'\nconst dCardXl = 'd-card-xl'\nconst dCardBorder = 'd-card-border'\nconst dCardDash = 'd-card-dash'\nconst dCardSide = 'd-card-side'\nconst dCardBody = 'd-card-body'\nconst dCardTitle = 'd-card-title'\nconst dCardActions = 'd-card-actions'\nconst dSkeleton = 'd-skeleton'\nconst dTab = 'd-tab'\nconst dTabActive = 'd-tab-active'\nconst dTabDisabled = 'd-tab-disabled'\nconst dTabs = 'd-tabs'\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 /** Additional classes for the card-body element */\n bodyClassName?: string\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: dCardXs,\n sm: dCardSm,\n md: dCardMd,\n lg: dCardLg,\n xl: dCardXl,\n}\n\nconst variantClasses: Record<CardVariant, string> = {\n default: 'shadow-sm',\n border: dCardBorder,\n dash: dCardDash,\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 bodyClassName,\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 dCard,\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 && dCardSide,\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={`${dSkeleton} h-48 w-full rounded-none`} />\n </figure>\n )}\n <div className={dCardBody}>\n {(avatar || title) && (\n <div className=\"flex gap-4 mb-4\">\n {avatar && <div className={`${dSkeleton} w-12 h-12 rounded-full flex-shrink-0`} />}\n <div className=\"flex-1 space-y-2\">\n <div className={`${dSkeleton} h-6 w-2/3`} />\n {description && <div className={`${dSkeleton} h-4 w-full`} />}\n </div>\n </div>\n )}\n {!avatar && !title && (\n <>\n <div className={`${dSkeleton} h-6 w-2/3 mb-4`} />\n <div className=\"space-y-2\">\n <div className={`${dSkeleton} h-4 w-full`} />\n <div className={`${dSkeleton} h-4 w-5/6`} />\n <div className={`${dSkeleton} h-4 w-4/6`} />\n </div>\n </>\n )}\n {actions && (\n <div className={`${dCardActions} ${justifyClasses[actionsJustify]} mt-4`}>\n <div className={`${dSkeleton} h-10 w-20`} />\n <div className={`${dSkeleton} 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={dCardTitle}>{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={dCardTitle}>{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={dTabs}>\n {tabList.map((tab) => (\n <button\n key={tab.key}\n role=\"tab\"\n className={[\n dTab,\n currentTabKey === tab.key && dTabActive,\n tab.disabled && dTabDisabled,\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={`${dCardBody} ${bodyClassName || ''}`} 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={`${dCardActions} ${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":["dCard","dCardXs","dCardSm","dCardMd","dCardLg","dCardXl","dCardBorder","dCardDash","dCardSide","dCardBody","dCardTitle","dCardActions","dSkeleton","dTab","dTabActive","dTabDisabled","dTabs","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","bodyClassName","baseTestId","internalActiveKey","setInternalActiveKey","React","currentTabKey","handleTabChange","key","resolvedVariant","Fragment","hasMetaLayout","renderHeader","renderTabs","tab","Card"],"mappings":"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"}
1
+ {"version":3,"file":"Card.js","sources":["../../src/components/Card.tsx"],"sourcesContent":["import React, { forwardRef } from 'react'\n\n// DaisyUI classes\nconst dCard = 'd-card'\nconst dCardXs = 'd-card-xs'\nconst dCardSm = 'd-card-sm'\nconst dCardMd = 'd-card-md'\nconst dCardLg = 'd-card-lg'\nconst dCardXl = 'd-card-xl'\nconst dCardBorder = 'd-card-border'\nconst dCardDash = 'd-card-dash'\nconst dCardSide = 'd-card-side'\nconst dCardBody = 'd-card-body'\nconst dCardTitle = 'd-card-title'\nconst dCardActions = 'd-card-actions'\nconst dSkeleton = 'd-skeleton'\nconst dTab = 'd-tab'\nconst dTabActive = 'd-tab-active'\nconst dTabDisabled = 'd-tab-disabled'\nconst dTabs = 'd-tabs'\n\nexport type CardSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\nexport type CardVariant = 'shadow' | '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 /** 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 /** Additional classes for the card-body element */\n bodyClassName?: string\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: dCardXs,\n sm: dCardSm,\n md: dCardMd,\n lg: dCardLg,\n xl: dCardXl,\n}\n\nconst variantClasses: Record<CardVariant, string> = {\n shadow: 'shadow-sm',\n border: dCardBorder,\n dash: dCardDash,\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 variant = 'shadow',\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 bodyClassName,\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 const classes = [\n dCard,\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[variant],\n side && dCardSide,\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={`${dSkeleton} h-48 w-full rounded-none`} />\n </figure>\n )}\n <div className={dCardBody}>\n {(avatar || title) && (\n <div className=\"flex gap-4 mb-4\">\n {avatar && <div className={`${dSkeleton} w-12 h-12 rounded-full flex-shrink-0`} />}\n <div className=\"flex-1 space-y-2\">\n <div className={`${dSkeleton} h-6 w-2/3`} />\n {description && <div className={`${dSkeleton} h-4 w-full`} />}\n </div>\n </div>\n )}\n {!avatar && !title && (\n <>\n <div className={`${dSkeleton} h-6 w-2/3 mb-4`} />\n <div className=\"space-y-2\">\n <div className={`${dSkeleton} h-4 w-full`} />\n <div className={`${dSkeleton} h-4 w-5/6`} />\n <div className={`${dSkeleton} h-4 w-4/6`} />\n </div>\n </>\n )}\n {actions && (\n <div className={`${dCardActions} ${justifyClasses[actionsJustify]} mt-4`}>\n <div className={`${dSkeleton} h-10 w-20`} />\n <div className={`${dSkeleton} 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={dCardTitle}>{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={dCardTitle}>{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={dTabs}>\n {tabList.map((tab) => (\n <button\n key={tab.key}\n role=\"tab\"\n className={[\n dTab,\n currentTabKey === tab.key && dTabActive,\n tab.disabled && dTabDisabled,\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={`${dCardBody} ${bodyClassName || ''}`} 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={`${dCardActions} ${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":["dCard","dCardXs","dCardSm","dCardMd","dCardLg","dCardXl","dCardBorder","dCardDash","dCardSide","dCardBody","dCardTitle","dCardActions","dSkeleton","dTab","dTabActive","dTabDisabled","dTabs","sizeClasses","variantClasses","justifyClasses","CardGrid","forwardRef","children","hoverable","className","testId","rest","ref","classes","jsx","CardMeta","avatar","title","description","jsxs","CardRoot","extra","cover","actions","size","variant","type","side","imageFull","actionsJustify","loading","tabList","activeTabKey","defaultActiveTabKey","onTabChange","tabBarExtraContent","bodyClassName","baseTestId","internalActiveKey","setInternalActiveKey","React","currentTabKey","handleTabChange","key","Fragment","hasMetaLayout","renderHeader","renderTabs","tab","Card"],"mappings":"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"}