boreal-ui 0.0.48 → 0.0.50

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.
@@ -48,16 +48,17 @@ const CardBase = ({
48
48
  const headerId = ariaLabelledBy || `${autoId}-header`;
49
49
  const descriptionId = `${autoId}-description`;
50
50
  const derivedAriaLabel = ariaLabel || title || description || "Content card";
51
- function normalizeImageSource(imageUrl2, fallbackWidth, fallbackHeight) {
52
- if (!imageUrl2) {
51
+ const FallbackImage = (props) => /* @__PURE__ */ jsxRuntime.jsx("img", { ...props });
52
+ function normalizeImageSource(srcInput, fallbackWidth, fallbackHeight) {
53
+ if (!srcInput) {
53
54
  return {
54
55
  src: void 0,
55
56
  width: fallbackWidth,
56
57
  height: fallbackHeight
57
58
  };
58
59
  }
59
- if (typeof imageUrl2 === "object" && "src" in imageUrl2 && typeof imageUrl2.src === "string") {
60
- const { src, width, height } = imageUrl2;
60
+ if (typeof srcInput === "object" && "src" in srcInput && typeof srcInput.src === "string") {
61
+ const { src, width, height } = srcInput;
61
62
  const trimmed = src.trim();
62
63
  if (!trimmed) {
63
64
  return {
@@ -72,8 +73,8 @@ const CardBase = ({
72
73
  height: typeof height === "number" ? height : fallbackHeight
73
74
  };
74
75
  }
75
- if (typeof imageUrl2 === "string") {
76
- const trimmed = imageUrl2.trim();
76
+ if (typeof srcInput === "string") {
77
+ const trimmed = srcInput.trim();
77
78
  if (!trimmed) {
78
79
  return {
79
80
  src: void 0,
@@ -93,13 +94,18 @@ const CardBase = ({
93
94
  height: fallbackHeight
94
95
  };
95
96
  }
96
- const FallbackImage = (props) => /* @__PURE__ */ jsxRuntime.jsx("img", { ...props });
97
+ const isStaticObj = typeof imageUrl === "object" && imageUrl !== null && "src" in imageUrl && typeof imageUrl.src === "string";
98
+ const isReactImage = imageUrl !== void 0 && !isStaticObj && typeof imageUrl !== "string";
97
99
  const {
98
100
  src: imgSrc,
99
101
  width: resolvedWidth,
100
102
  height: resolvedHeight
101
- } = normalizeImageSource(imageUrl, imageWidth, imageHeight);
102
- const hasImage = !!imgSrc;
103
+ } = normalizeImageSource(
104
+ imageUrl,
105
+ imageWidth,
106
+ imageHeight
107
+ );
108
+ const hasImage = isReactImage || !!imgSrc;
103
109
  const imgAlt = imageAlt || `${title || "Card"} image`;
104
110
  const ImageRenderer = ImageComponent || FallbackImage;
105
111
  const isNextImage = typeof ImageRenderer !== "string";
@@ -148,7 +154,7 @@ const CardBase = ({
148
154
  "data-testid": `${testId}-skeleton`
149
155
  }
150
156
  ) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: classMap.content, children: [
151
- hasImage && (imageFill ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: classMap.media, children: /* @__PURE__ */ jsxRuntime.jsx(
157
+ hasImage && (isReactImage ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: classMap.media, children: React.isValidElement(imageUrl) ? imageUrl : React.createElement(imageUrl) }) : imageFill ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: classMap.media, children: /* @__PURE__ */ jsxRuntime.jsx(
152
158
  ImageRenderer,
153
159
  {
154
160
  src: imgSrc,
@@ -308,4 +314,4 @@ const Card = (props) => {
308
314
  };
309
315
  Card.displayName = "Card";
310
316
  exports.Card = Card;
311
- //# sourceMappingURL=Card-D6SI33n_.cjs.map
317
+ //# sourceMappingURL=Card-C57chjAP.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Card-C57chjAP.cjs","sources":["../../src/components/Card/CardBase.tsx","../../src/components/Card/core/Card.tsx"],"sourcesContent":["import React, { useId, useMemo } from \"react\";\r\nimport { CardBaseProps, CardImageSource } from \"./Card.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultSize,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst CardBase: React.FC<CardBaseProps> = ({\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n cardIcon,\r\n title = \"\",\r\n description = \"\",\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n imageUrl,\r\n imageAlt,\r\n imageHeight,\r\n imageWidth,\r\n imageFill,\r\n className = \"\",\r\n imageClassName = \"\",\r\n headerClassName = \"\",\r\n bodyClassName = \"\",\r\n footerClassName = \"\",\r\n outline = false,\r\n size = getDefaultSize(),\r\n align = \"center\",\r\n renderHeader,\r\n renderContent,\r\n renderFooter,\r\n actionButtons = [],\r\n useIconButtons = false,\r\n layout = \"vertical\",\r\n loading = false,\r\n children,\r\n \"data-testid\": testId = \"card\",\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-label\": ariaLabel,\r\n classMap,\r\n SkeletonComponent,\r\n ImageComponent,\r\n}) => {\r\n const autoId = useId();\r\n const headerId = ariaLabelledBy || `${autoId}-header`;\r\n const descriptionId = `${autoId}-description`;\r\n const derivedAriaLabel = ariaLabel || title || description || \"Content card\";\r\n\r\n const FallbackImage = (props: React.ImgHTMLAttributes<HTMLImageElement>) => (\r\n <img {...props} />\r\n );\r\n\r\n function normalizeImageSource(\r\n srcInput: CardImageSource,\r\n fallbackWidth?: number,\r\n fallbackHeight?: number\r\n ) {\r\n if (!srcInput) {\r\n return {\r\n src: undefined as string | undefined,\r\n width: fallbackWidth,\r\n height: fallbackHeight,\r\n };\r\n }\r\n\r\n if (\r\n typeof srcInput === \"object\" &&\r\n \"src\" in srcInput &&\r\n typeof (srcInput as any).src === \"string\"\r\n ) {\r\n const { src, width, height } = srcInput as any;\r\n const trimmed = src.trim();\r\n\r\n if (!trimmed) {\r\n return {\r\n src: undefined,\r\n width: fallbackWidth,\r\n height: fallbackHeight,\r\n };\r\n }\r\n\r\n return {\r\n src: trimmed,\r\n width: typeof width === \"number\" ? width : fallbackWidth,\r\n height: typeof height === \"number\" ? height : fallbackHeight,\r\n };\r\n }\r\n\r\n if (typeof srcInput === \"string\") {\r\n const trimmed = srcInput.trim();\r\n\r\n if (!trimmed) {\r\n return {\r\n src: undefined,\r\n width: fallbackWidth,\r\n height: fallbackHeight,\r\n };\r\n }\r\n\r\n return {\r\n src: trimmed,\r\n width: fallbackWidth,\r\n height: fallbackHeight,\r\n };\r\n }\r\n\r\n return {\r\n src: undefined,\r\n width: fallbackWidth,\r\n height: fallbackHeight,\r\n };\r\n }\r\n\r\n const isStaticObj =\r\n typeof imageUrl === \"object\" &&\r\n imageUrl !== null &&\r\n \"src\" in (imageUrl as any) &&\r\n typeof (imageUrl as any).src === \"string\";\r\n\r\n const isReactImage =\r\n imageUrl !== undefined && !isStaticObj && typeof imageUrl !== \"string\";\r\n\r\n const {\r\n src: imgSrc,\r\n width: resolvedWidth,\r\n height: resolvedHeight,\r\n } = normalizeImageSource(\r\n imageUrl as CardImageSource,\r\n imageWidth,\r\n imageHeight\r\n );\r\n\r\n const hasImage = isReactImage || !!imgSrc;\r\n\r\n const imgAlt = imageAlt || `${title || \"Card\"} image`;\r\n\r\n const ImageRenderer = ImageComponent || FallbackImage;\r\n const isNextImage = typeof ImageRenderer !== \"string\";\r\n\r\n const cardClassName = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.card,\r\n classMap[layout],\r\n align && classMap[align],\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n outline && classMap.outline,\r\n loading && classMap.loading,\r\n className\r\n ),\r\n [\r\n classMap,\r\n layout,\r\n align,\r\n theme,\r\n state,\r\n size,\r\n shadow,\r\n rounding,\r\n outline,\r\n loading,\r\n className,\r\n ]\r\n );\r\n\r\n return (\r\n <div\r\n data-testid={testId}\r\n className={cardClassName}\r\n role=\"region\"\r\n aria-labelledby={title ? headerId : undefined}\r\n aria-label={!title ? derivedAriaLabel : undefined}\r\n aria-busy={loading || undefined}\r\n >\r\n {loading ? (\r\n <SkeletonComponent\r\n width=\"250px\"\r\n height=\"250px\"\r\n data-testid={`${testId}-skeleton`}\r\n />\r\n ) : (\r\n <div className={classMap.content}>\r\n {hasImage &&\r\n (isReactImage ? (\r\n <div className={classMap.media}>\r\n {React.isValidElement(imageUrl)\r\n ? imageUrl\r\n : React.createElement(imageUrl as React.ComponentType<any>)}\r\n </div>\r\n ) : imageFill ? (\r\n <div className={classMap.media}>\r\n <ImageRenderer\r\n src={imgSrc as any}\r\n alt={imgAlt}\r\n className={combineClassNames(classMap.image, imageClassName)}\r\n {...(isNextImage ? { fill: true } : {})}\r\n {...(!isNextImage ? { loading: \"lazy\" as const } : {})}\r\n />\r\n </div>\r\n ) : (\r\n <ImageRenderer\r\n src={imgSrc as any}\r\n alt={imgAlt}\r\n className={combineClassNames(classMap.image, imageClassName)}\r\n width={resolvedWidth ?? 640}\r\n height={resolvedHeight ?? 360}\r\n {...(!isNextImage ? { loading: \"lazy\" as const } : {})}\r\n />\r\n ))}\r\n\r\n <div>\r\n <div\r\n className={combineClassNames(classMap.header, headerClassName)}\r\n id={headerId}\r\n >\r\n {renderHeader ? (\r\n renderHeader()\r\n ) : title ? (\r\n <h2 className={classMap.title}>\r\n {cardIcon && (\r\n <span\r\n className={classMap.icon}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-icon`}\r\n >\r\n {React.createElement(cardIcon)}\r\n </span>\r\n )}\r\n {title}\r\n </h2>\r\n ) : null}\r\n </div>\r\n\r\n <div\r\n className={combineClassNames(classMap.body, bodyClassName)}\r\n role=\"group\"\r\n aria-describedby={description ? descriptionId : undefined}\r\n >\r\n {renderContent ? (\r\n renderContent()\r\n ) : (\r\n <>\r\n {description && (\r\n <p id={descriptionId} className={classMap.description}>\r\n {description}\r\n </p>\r\n )}\r\n {children && (\r\n <div className={classMap.children}>{children}</div>\r\n )}\r\n </>\r\n )}\r\n </div>\r\n\r\n {(actionButtons.length > 0 || renderFooter) && (\r\n <div\r\n className={combineClassNames(classMap.footer, footerClassName)}\r\n >\r\n {actionButtons.length > 0 && (\r\n <div className={classMap.actions}>\r\n {actionButtons.map((button, index) =>\r\n useIconButtons && button.icon ? (\r\n <button.iconButtonComponent\r\n key={index}\r\n icon={button.icon}\r\n onClick={button.onClick}\r\n className={classMap.action_button}\r\n theme={button.theme || \"clear\"}\r\n state={button.state || \"\"}\r\n aria-label={button.label}\r\n size={button.size || size}\r\n href={button.href}\r\n loading={button.loading}\r\n ariaLabel={button.ariaLabel}\r\n />\r\n ) : (\r\n <button.buttonComponent\r\n key={index}\r\n onClick={button.onClick}\r\n className={classMap.action_button}\r\n theme={button.theme || \"secondary\"}\r\n state={button.state || \"\"}\r\n href={button.href}\r\n loading={button.loading}\r\n size={button.size || size}\r\n ariaLabel={button.ariaLabel}\r\n >\r\n {button.label}\r\n </button.buttonComponent>\r\n )\r\n )}\r\n </div>\r\n )}\r\n {renderFooter && renderFooter()}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nCardBase.displayName = \"CardBase\";\r\n\r\nexport default CardBase;\r\n","import React from \"react\";\r\nimport CardBase from \"../CardBase\";\r\nimport \"./Card.scss\";\r\nimport { Button, IconButton, Skeleton } from \"../../../index.core\";\r\nimport { CardProps } from \"../Card.types\";\r\n\r\nconst classes = {\r\n card: \"card\",\r\n\r\n left: \"card_left\",\r\n right: \"card_right\",\r\n center: \"card_center\",\r\n\r\n primary: \"card_primary\",\r\n secondary: \"card_secondary\",\r\n tertiary: \"card_tertiary\",\r\n quaternary: \"card_quaternary\",\r\n\r\n success: \"card_success\",\r\n warning: \"card_warning\",\r\n error: \"card_error\",\r\n\r\n clear: \"card_clear\",\r\n\r\n outline: \"card_outline\",\r\n loading: \"card_loading\",\r\n\r\n content: \"card_content\",\r\n\r\n xs: \"card_xs\",\r\n small: \"card_small\",\r\n medium: \"card_medium\",\r\n large: \"card_large\",\r\n xl: \"card_xl\",\r\n\r\n shadowNone: \"card_shadow-None\",\r\n shadowLight: \"card_shadow-Light\",\r\n shadowMedium: \"card_shadow-Medium\",\r\n shadowStrong: \"card_shadow-Strong\",\r\n shadowIntense: \"card_shadow-Intense\",\r\n\r\n roundNone: \"card_round-None\",\r\n roundSmall: \"card_round-Small\",\r\n roundMedium: \"card_round-Medium\",\r\n roundLarge: \"card_round-Large\",\r\n\r\n vertical: \"card_vertical\",\r\n horizontal: \"card_horizontal\",\r\n\r\n image: \"card_image\",\r\n header: \"card_header\",\r\n title: \"card_title\",\r\n icon: \"card_icon\",\r\n body: \"card_body\",\r\n description: \"card_description\",\r\n children: \"card_children\",\r\n footer: \"card_footer\",\r\n actions: \"card_actions\",\r\n action_button: \"card_action_button\",\r\n};\r\n\r\nconst Card: React.FC<CardProps> = (props) => {\r\n const wrappedButtons = (props.actionButtons ?? []).map((b) => ({\r\n ...b,\r\n buttonComponent: Button,\r\n iconButtonComponent: IconButton,\r\n }));\r\n\r\n return (\r\n <CardBase\r\n {...props}\r\n actionButtons={wrappedButtons}\r\n classMap={classes}\r\n SkeletonComponent={Skeleton}\r\n />\r\n );\r\n};\r\nCard.displayName = \"Card\";\r\nexport default Card;\r\n"],"names":["getDefaultTheme","getDefaultRounding","getDefaultShadow","getDefaultSize","useId","jsx","useMemo","combineClassNames","capitalize","jsxs","Fragment","Button","IconButton","Skeleton"],"mappings":"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"}
@@ -47,16 +47,17 @@ const CardBase = ({
47
47
  const headerId = ariaLabelledBy || `${autoId}-header`;
48
48
  const descriptionId = `${autoId}-description`;
49
49
  const derivedAriaLabel = ariaLabel || title || description || "Content card";
50
- function normalizeImageSource(imageUrl2, fallbackWidth, fallbackHeight) {
51
- if (!imageUrl2) {
50
+ const FallbackImage = (props) => /* @__PURE__ */ jsx("img", { ...props });
51
+ function normalizeImageSource(srcInput, fallbackWidth, fallbackHeight) {
52
+ if (!srcInput) {
52
53
  return {
53
54
  src: void 0,
54
55
  width: fallbackWidth,
55
56
  height: fallbackHeight
56
57
  };
57
58
  }
58
- if (typeof imageUrl2 === "object" && "src" in imageUrl2 && typeof imageUrl2.src === "string") {
59
- const { src, width, height } = imageUrl2;
59
+ if (typeof srcInput === "object" && "src" in srcInput && typeof srcInput.src === "string") {
60
+ const { src, width, height } = srcInput;
60
61
  const trimmed = src.trim();
61
62
  if (!trimmed) {
62
63
  return {
@@ -71,8 +72,8 @@ const CardBase = ({
71
72
  height: typeof height === "number" ? height : fallbackHeight
72
73
  };
73
74
  }
74
- if (typeof imageUrl2 === "string") {
75
- const trimmed = imageUrl2.trim();
75
+ if (typeof srcInput === "string") {
76
+ const trimmed = srcInput.trim();
76
77
  if (!trimmed) {
77
78
  return {
78
79
  src: void 0,
@@ -92,13 +93,18 @@ const CardBase = ({
92
93
  height: fallbackHeight
93
94
  };
94
95
  }
95
- const FallbackImage = (props) => /* @__PURE__ */ jsx("img", { ...props });
96
+ const isStaticObj = typeof imageUrl === "object" && imageUrl !== null && "src" in imageUrl && typeof imageUrl.src === "string";
97
+ const isReactImage = imageUrl !== void 0 && !isStaticObj && typeof imageUrl !== "string";
96
98
  const {
97
99
  src: imgSrc,
98
100
  width: resolvedWidth,
99
101
  height: resolvedHeight
100
- } = normalizeImageSource(imageUrl, imageWidth, imageHeight);
101
- const hasImage = !!imgSrc;
102
+ } = normalizeImageSource(
103
+ imageUrl,
104
+ imageWidth,
105
+ imageHeight
106
+ );
107
+ const hasImage = isReactImage || !!imgSrc;
102
108
  const imgAlt = imageAlt || `${title || "Card"} image`;
103
109
  const ImageRenderer = ImageComponent || FallbackImage;
104
110
  const isNextImage = typeof ImageRenderer !== "string";
@@ -147,7 +153,7 @@ const CardBase = ({
147
153
  "data-testid": `${testId}-skeleton`
148
154
  }
149
155
  ) : /* @__PURE__ */ jsxs("div", { className: classMap.content, children: [
150
- hasImage && (imageFill ? /* @__PURE__ */ jsx("div", { className: classMap.media, children: /* @__PURE__ */ jsx(
156
+ hasImage && (isReactImage ? /* @__PURE__ */ jsx("div", { className: classMap.media, children: React.isValidElement(imageUrl) ? imageUrl : React.createElement(imageUrl) }) : imageFill ? /* @__PURE__ */ jsx("div", { className: classMap.media, children: /* @__PURE__ */ jsx(
151
157
  ImageRenderer,
152
158
  {
153
159
  src: imgSrc,
@@ -309,4 +315,4 @@ Card.displayName = "Card";
309
315
  export {
310
316
  Card as C
311
317
  };
312
- //# sourceMappingURL=Card-BzpcEKgi.js.map
318
+ //# sourceMappingURL=Card-YD4BgNEU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Card-YD4BgNEU.js","sources":["../../src/components/Card/CardBase.tsx","../../src/components/Card/core/Card.tsx"],"sourcesContent":["import React, { useId, useMemo } from \"react\";\r\nimport { CardBaseProps, CardImageSource } from \"./Card.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultSize,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst CardBase: React.FC<CardBaseProps> = ({\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n cardIcon,\r\n title = \"\",\r\n description = \"\",\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n imageUrl,\r\n imageAlt,\r\n imageHeight,\r\n imageWidth,\r\n imageFill,\r\n className = \"\",\r\n imageClassName = \"\",\r\n headerClassName = \"\",\r\n bodyClassName = \"\",\r\n footerClassName = \"\",\r\n outline = false,\r\n size = getDefaultSize(),\r\n align = \"center\",\r\n renderHeader,\r\n renderContent,\r\n renderFooter,\r\n actionButtons = [],\r\n useIconButtons = false,\r\n layout = \"vertical\",\r\n loading = false,\r\n children,\r\n \"data-testid\": testId = \"card\",\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-label\": ariaLabel,\r\n classMap,\r\n SkeletonComponent,\r\n ImageComponent,\r\n}) => {\r\n const autoId = useId();\r\n const headerId = ariaLabelledBy || `${autoId}-header`;\r\n const descriptionId = `${autoId}-description`;\r\n const derivedAriaLabel = ariaLabel || title || description || \"Content card\";\r\n\r\n const FallbackImage = (props: React.ImgHTMLAttributes<HTMLImageElement>) => (\r\n <img {...props} />\r\n );\r\n\r\n function normalizeImageSource(\r\n srcInput: CardImageSource,\r\n fallbackWidth?: number,\r\n fallbackHeight?: number\r\n ) {\r\n if (!srcInput) {\r\n return {\r\n src: undefined as string | undefined,\r\n width: fallbackWidth,\r\n height: fallbackHeight,\r\n };\r\n }\r\n\r\n if (\r\n typeof srcInput === \"object\" &&\r\n \"src\" in srcInput &&\r\n typeof (srcInput as any).src === \"string\"\r\n ) {\r\n const { src, width, height } = srcInput as any;\r\n const trimmed = src.trim();\r\n\r\n if (!trimmed) {\r\n return {\r\n src: undefined,\r\n width: fallbackWidth,\r\n height: fallbackHeight,\r\n };\r\n }\r\n\r\n return {\r\n src: trimmed,\r\n width: typeof width === \"number\" ? width : fallbackWidth,\r\n height: typeof height === \"number\" ? height : fallbackHeight,\r\n };\r\n }\r\n\r\n if (typeof srcInput === \"string\") {\r\n const trimmed = srcInput.trim();\r\n\r\n if (!trimmed) {\r\n return {\r\n src: undefined,\r\n width: fallbackWidth,\r\n height: fallbackHeight,\r\n };\r\n }\r\n\r\n return {\r\n src: trimmed,\r\n width: fallbackWidth,\r\n height: fallbackHeight,\r\n };\r\n }\r\n\r\n return {\r\n src: undefined,\r\n width: fallbackWidth,\r\n height: fallbackHeight,\r\n };\r\n }\r\n\r\n const isStaticObj =\r\n typeof imageUrl === \"object\" &&\r\n imageUrl !== null &&\r\n \"src\" in (imageUrl as any) &&\r\n typeof (imageUrl as any).src === \"string\";\r\n\r\n const isReactImage =\r\n imageUrl !== undefined && !isStaticObj && typeof imageUrl !== \"string\";\r\n\r\n const {\r\n src: imgSrc,\r\n width: resolvedWidth,\r\n height: resolvedHeight,\r\n } = normalizeImageSource(\r\n imageUrl as CardImageSource,\r\n imageWidth,\r\n imageHeight\r\n );\r\n\r\n const hasImage = isReactImage || !!imgSrc;\r\n\r\n const imgAlt = imageAlt || `${title || \"Card\"} image`;\r\n\r\n const ImageRenderer = ImageComponent || FallbackImage;\r\n const isNextImage = typeof ImageRenderer !== \"string\";\r\n\r\n const cardClassName = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.card,\r\n classMap[layout],\r\n align && classMap[align],\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n outline && classMap.outline,\r\n loading && classMap.loading,\r\n className\r\n ),\r\n [\r\n classMap,\r\n layout,\r\n align,\r\n theme,\r\n state,\r\n size,\r\n shadow,\r\n rounding,\r\n outline,\r\n loading,\r\n className,\r\n ]\r\n );\r\n\r\n return (\r\n <div\r\n data-testid={testId}\r\n className={cardClassName}\r\n role=\"region\"\r\n aria-labelledby={title ? headerId : undefined}\r\n aria-label={!title ? derivedAriaLabel : undefined}\r\n aria-busy={loading || undefined}\r\n >\r\n {loading ? (\r\n <SkeletonComponent\r\n width=\"250px\"\r\n height=\"250px\"\r\n data-testid={`${testId}-skeleton`}\r\n />\r\n ) : (\r\n <div className={classMap.content}>\r\n {hasImage &&\r\n (isReactImage ? (\r\n <div className={classMap.media}>\r\n {React.isValidElement(imageUrl)\r\n ? imageUrl\r\n : React.createElement(imageUrl as React.ComponentType<any>)}\r\n </div>\r\n ) : imageFill ? (\r\n <div className={classMap.media}>\r\n <ImageRenderer\r\n src={imgSrc as any}\r\n alt={imgAlt}\r\n className={combineClassNames(classMap.image, imageClassName)}\r\n {...(isNextImage ? { fill: true } : {})}\r\n {...(!isNextImage ? { loading: \"lazy\" as const } : {})}\r\n />\r\n </div>\r\n ) : (\r\n <ImageRenderer\r\n src={imgSrc as any}\r\n alt={imgAlt}\r\n className={combineClassNames(classMap.image, imageClassName)}\r\n width={resolvedWidth ?? 640}\r\n height={resolvedHeight ?? 360}\r\n {...(!isNextImage ? { loading: \"lazy\" as const } : {})}\r\n />\r\n ))}\r\n\r\n <div>\r\n <div\r\n className={combineClassNames(classMap.header, headerClassName)}\r\n id={headerId}\r\n >\r\n {renderHeader ? (\r\n renderHeader()\r\n ) : title ? (\r\n <h2 className={classMap.title}>\r\n {cardIcon && (\r\n <span\r\n className={classMap.icon}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-icon`}\r\n >\r\n {React.createElement(cardIcon)}\r\n </span>\r\n )}\r\n {title}\r\n </h2>\r\n ) : null}\r\n </div>\r\n\r\n <div\r\n className={combineClassNames(classMap.body, bodyClassName)}\r\n role=\"group\"\r\n aria-describedby={description ? descriptionId : undefined}\r\n >\r\n {renderContent ? (\r\n renderContent()\r\n ) : (\r\n <>\r\n {description && (\r\n <p id={descriptionId} className={classMap.description}>\r\n {description}\r\n </p>\r\n )}\r\n {children && (\r\n <div className={classMap.children}>{children}</div>\r\n )}\r\n </>\r\n )}\r\n </div>\r\n\r\n {(actionButtons.length > 0 || renderFooter) && (\r\n <div\r\n className={combineClassNames(classMap.footer, footerClassName)}\r\n >\r\n {actionButtons.length > 0 && (\r\n <div className={classMap.actions}>\r\n {actionButtons.map((button, index) =>\r\n useIconButtons && button.icon ? (\r\n <button.iconButtonComponent\r\n key={index}\r\n icon={button.icon}\r\n onClick={button.onClick}\r\n className={classMap.action_button}\r\n theme={button.theme || \"clear\"}\r\n state={button.state || \"\"}\r\n aria-label={button.label}\r\n size={button.size || size}\r\n href={button.href}\r\n loading={button.loading}\r\n ariaLabel={button.ariaLabel}\r\n />\r\n ) : (\r\n <button.buttonComponent\r\n key={index}\r\n onClick={button.onClick}\r\n className={classMap.action_button}\r\n theme={button.theme || \"secondary\"}\r\n state={button.state || \"\"}\r\n href={button.href}\r\n loading={button.loading}\r\n size={button.size || size}\r\n ariaLabel={button.ariaLabel}\r\n >\r\n {button.label}\r\n </button.buttonComponent>\r\n )\r\n )}\r\n </div>\r\n )}\r\n {renderFooter && renderFooter()}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nCardBase.displayName = \"CardBase\";\r\n\r\nexport default CardBase;\r\n","import React from \"react\";\r\nimport CardBase from \"../CardBase\";\r\nimport \"./Card.scss\";\r\nimport { Button, IconButton, Skeleton } from \"../../../index.core\";\r\nimport { CardProps } from \"../Card.types\";\r\n\r\nconst classes = {\r\n card: \"card\",\r\n\r\n left: \"card_left\",\r\n right: \"card_right\",\r\n center: \"card_center\",\r\n\r\n primary: \"card_primary\",\r\n secondary: \"card_secondary\",\r\n tertiary: \"card_tertiary\",\r\n quaternary: \"card_quaternary\",\r\n\r\n success: \"card_success\",\r\n warning: \"card_warning\",\r\n error: \"card_error\",\r\n\r\n clear: \"card_clear\",\r\n\r\n outline: \"card_outline\",\r\n loading: \"card_loading\",\r\n\r\n content: \"card_content\",\r\n\r\n xs: \"card_xs\",\r\n small: \"card_small\",\r\n medium: \"card_medium\",\r\n large: \"card_large\",\r\n xl: \"card_xl\",\r\n\r\n shadowNone: \"card_shadow-None\",\r\n shadowLight: \"card_shadow-Light\",\r\n shadowMedium: \"card_shadow-Medium\",\r\n shadowStrong: \"card_shadow-Strong\",\r\n shadowIntense: \"card_shadow-Intense\",\r\n\r\n roundNone: \"card_round-None\",\r\n roundSmall: \"card_round-Small\",\r\n roundMedium: \"card_round-Medium\",\r\n roundLarge: \"card_round-Large\",\r\n\r\n vertical: \"card_vertical\",\r\n horizontal: \"card_horizontal\",\r\n\r\n image: \"card_image\",\r\n header: \"card_header\",\r\n title: \"card_title\",\r\n icon: \"card_icon\",\r\n body: \"card_body\",\r\n description: \"card_description\",\r\n children: \"card_children\",\r\n footer: \"card_footer\",\r\n actions: \"card_actions\",\r\n action_button: \"card_action_button\",\r\n};\r\n\r\nconst Card: React.FC<CardProps> = (props) => {\r\n const wrappedButtons = (props.actionButtons ?? []).map((b) => ({\r\n ...b,\r\n buttonComponent: Button,\r\n iconButtonComponent: IconButton,\r\n }));\r\n\r\n return (\r\n <CardBase\r\n {...props}\r\n actionButtons={wrappedButtons}\r\n classMap={classes}\r\n SkeletonComponent={Skeleton}\r\n />\r\n );\r\n};\r\nCard.displayName = \"Card\";\r\nexport default Card;\r\n"],"names":["Skeleton"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
- const Card = require("./Card-D6SI33n_.cjs");
2
+ const Card = require("./Card-C57chjAP.cjs");
3
3
  module.exports = Card.Card;
4
4
  //# sourceMappingURL=Card.cjs.js.map
package/dist/core/Card.js CHANGED
@@ -1,4 +1,4 @@
1
- import { C } from "./Card-BzpcEKgi.js";
1
+ import { C } from "./Card-YD4BgNEU.js";
2
2
  export {
3
3
  C as default
4
4
  };
@@ -53,7 +53,7 @@ const EmptyState = require("./EmptyState-P-MSItCX.cjs");
53
53
  const CommandPalette = require("./CommandPalette-CPhVbQAc.cjs");
54
54
  const NotificationCenter = require("./NotificationCenter-DfOOEt9N.cjs");
55
55
  const Sidebar = require("./Sidebar-13bKMpw7.cjs");
56
- const Card = require("./Card-D6SI33n_.cjs");
56
+ const Card = require("./Card-C57chjAP.cjs");
57
57
  const Avatar = require("./Avatar-DOg8W9yf.cjs");
58
58
  const ChipGroupBase = React.forwardRef(
59
59
  ({
@@ -52,7 +52,7 @@ import { E } from "./EmptyState-Cp3ocTQX.js";
52
52
  import { C as C4 } from "./CommandPalette-Df69KRv4.js";
53
53
  import { N as N2 } from "./NotificationCenter-DLCzWNve.js";
54
54
  import { S as S7 } from "./Sidebar-DN_J0CwY.js";
55
- import { C as C5 } from "./Card-BzpcEKgi.js";
55
+ import { C as C5 } from "./Card-YD4BgNEU.js";
56
56
  import { A as A2 } from "./Avatar-BM8AwOB6.js";
57
57
  const ChipGroupBase = forwardRef(
58
58
  ({
@@ -163,16 +163,17 @@ const CardBase = ({
163
163
  const headerId = ariaLabelledBy || `${autoId}-header`;
164
164
  const descriptionId = `${autoId}-description`;
165
165
  const derivedAriaLabel = ariaLabel || title2 || description2 || "Content card";
166
- function normalizeImageSource(imageUrl2, fallbackWidth, fallbackHeight) {
167
- if (!imageUrl2) {
166
+ const FallbackImage = (props) => /* @__PURE__ */ jsx("img", { ...props });
167
+ function normalizeImageSource(srcInput, fallbackWidth, fallbackHeight) {
168
+ if (!srcInput) {
168
169
  return {
169
170
  src: void 0,
170
171
  width: fallbackWidth,
171
172
  height: fallbackHeight
172
173
  };
173
174
  }
174
- if (typeof imageUrl2 === "object" && "src" in imageUrl2 && typeof imageUrl2.src === "string") {
175
- const { src, width, height } = imageUrl2;
175
+ if (typeof srcInput === "object" && "src" in srcInput && typeof srcInput.src === "string") {
176
+ const { src, width, height } = srcInput;
176
177
  const trimmed = src.trim();
177
178
  if (!trimmed) {
178
179
  return {
@@ -187,8 +188,8 @@ const CardBase = ({
187
188
  height: typeof height === "number" ? height : fallbackHeight
188
189
  };
189
190
  }
190
- if (typeof imageUrl2 === "string") {
191
- const trimmed = imageUrl2.trim();
191
+ if (typeof srcInput === "string") {
192
+ const trimmed = srcInput.trim();
192
193
  if (!trimmed) {
193
194
  return {
194
195
  src: void 0,
@@ -208,13 +209,18 @@ const CardBase = ({
208
209
  height: fallbackHeight
209
210
  };
210
211
  }
211
- const FallbackImage = (props) => /* @__PURE__ */ jsx("img", { ...props });
212
+ const isStaticObj = typeof imageUrl === "object" && imageUrl !== null && "src" in imageUrl && typeof imageUrl.src === "string";
213
+ const isReactImage = imageUrl !== void 0 && !isStaticObj && typeof imageUrl !== "string";
212
214
  const {
213
215
  src: imgSrc,
214
216
  width: resolvedWidth,
215
217
  height: resolvedHeight
216
- } = normalizeImageSource(imageUrl, imageWidth, imageHeight);
217
- const hasImage = !!imgSrc;
218
+ } = normalizeImageSource(
219
+ imageUrl,
220
+ imageWidth,
221
+ imageHeight
222
+ );
223
+ const hasImage = isReactImage || !!imgSrc;
218
224
  const imgAlt = imageAlt || `${title2 || "Card"} image`;
219
225
  const ImageRenderer = ImageComponent || FallbackImage;
220
226
  const isNextImage = typeof ImageRenderer !== "string";
@@ -263,7 +269,7 @@ const CardBase = ({
263
269
  "data-testid": `${testId}-skeleton`
264
270
  }
265
271
  ) : /* @__PURE__ */ jsxs("div", { className: classMap.content, children: [
266
- hasImage && (imageFill ? /* @__PURE__ */ jsx("div", { className: classMap.media, children: /* @__PURE__ */ jsx(
272
+ hasImage && (isReactImage ? /* @__PURE__ */ jsx("div", { className: classMap.media, children: React.isValidElement(imageUrl) ? imageUrl : React.createElement(imageUrl) }) : imageFill ? /* @__PURE__ */ jsx("div", { className: classMap.media, children: /* @__PURE__ */ jsx(
267
273
  ImageRenderer,
268
274
  {
269
275
  src: imgSrc,
@@ -362,8 +368,36 @@ const CardBase = ({
362
368
  );
363
369
  };
364
370
  CardBase.displayName = "CardBase";
365
- const NextImageWrapper = (props) => {
366
- return /* @__PURE__ */ jsx(Image, { ...props });
371
+ const NextImageWrapper = ({
372
+ src,
373
+ alt,
374
+ className,
375
+ width,
376
+ height,
377
+ fill
378
+ }) => {
379
+ if (typeof src === "string" && src.toLowerCase().endsWith(".svg")) {
380
+ return /* @__PURE__ */ jsx(
381
+ "img",
382
+ {
383
+ src,
384
+ alt,
385
+ className,
386
+ width,
387
+ height,
388
+ loading: "lazy"
389
+ }
390
+ );
391
+ }
392
+ return /* @__PURE__ */ jsx(
393
+ Image,
394
+ {
395
+ src,
396
+ alt,
397
+ className,
398
+ ...fill ? { fill, sizes: "100vw" } : { width: width ?? 640, height: height ?? 360 }
399
+ }
400
+ );
367
401
  };
368
402
  const Card = (props) => {
369
403
  const wrappedButtons = (props.actionButtons ?? []).map((b) => ({
@@ -386,4 +420,4 @@ Card.displayName = "Card";
386
420
  export {
387
421
  Card as C
388
422
  };
389
- //# sourceMappingURL=Card-Btw1d4gS.js.map
423
+ //# sourceMappingURL=Card-CNwE1Mkt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Card-CNwE1Mkt.js","sources":["../../src/components/Card/CardBase.tsx","../../src/components/Card/next/Card.tsx"],"sourcesContent":["import React, { useId, useMemo } from \"react\";\r\nimport { CardBaseProps, CardImageSource } from \"./Card.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultSize,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst CardBase: React.FC<CardBaseProps> = ({\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n cardIcon,\r\n title = \"\",\r\n description = \"\",\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n imageUrl,\r\n imageAlt,\r\n imageHeight,\r\n imageWidth,\r\n imageFill,\r\n className = \"\",\r\n imageClassName = \"\",\r\n headerClassName = \"\",\r\n bodyClassName = \"\",\r\n footerClassName = \"\",\r\n outline = false,\r\n size = getDefaultSize(),\r\n align = \"center\",\r\n renderHeader,\r\n renderContent,\r\n renderFooter,\r\n actionButtons = [],\r\n useIconButtons = false,\r\n layout = \"vertical\",\r\n loading = false,\r\n children,\r\n \"data-testid\": testId = \"card\",\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-label\": ariaLabel,\r\n classMap,\r\n SkeletonComponent,\r\n ImageComponent,\r\n}) => {\r\n const autoId = useId();\r\n const headerId = ariaLabelledBy || `${autoId}-header`;\r\n const descriptionId = `${autoId}-description`;\r\n const derivedAriaLabel = ariaLabel || title || description || \"Content card\";\r\n\r\n const FallbackImage = (props: React.ImgHTMLAttributes<HTMLImageElement>) => (\r\n <img {...props} />\r\n );\r\n\r\n function normalizeImageSource(\r\n srcInput: CardImageSource,\r\n fallbackWidth?: number,\r\n fallbackHeight?: number\r\n ) {\r\n if (!srcInput) {\r\n return {\r\n src: undefined as string | undefined,\r\n width: fallbackWidth,\r\n height: fallbackHeight,\r\n };\r\n }\r\n\r\n if (\r\n typeof srcInput === \"object\" &&\r\n \"src\" in srcInput &&\r\n typeof (srcInput as any).src === \"string\"\r\n ) {\r\n const { src, width, height } = srcInput as any;\r\n const trimmed = src.trim();\r\n\r\n if (!trimmed) {\r\n return {\r\n src: undefined,\r\n width: fallbackWidth,\r\n height: fallbackHeight,\r\n };\r\n }\r\n\r\n return {\r\n src: trimmed,\r\n width: typeof width === \"number\" ? width : fallbackWidth,\r\n height: typeof height === \"number\" ? height : fallbackHeight,\r\n };\r\n }\r\n\r\n if (typeof srcInput === \"string\") {\r\n const trimmed = srcInput.trim();\r\n\r\n if (!trimmed) {\r\n return {\r\n src: undefined,\r\n width: fallbackWidth,\r\n height: fallbackHeight,\r\n };\r\n }\r\n\r\n return {\r\n src: trimmed,\r\n width: fallbackWidth,\r\n height: fallbackHeight,\r\n };\r\n }\r\n\r\n return {\r\n src: undefined,\r\n width: fallbackWidth,\r\n height: fallbackHeight,\r\n };\r\n }\r\n\r\n const isStaticObj =\r\n typeof imageUrl === \"object\" &&\r\n imageUrl !== null &&\r\n \"src\" in (imageUrl as any) &&\r\n typeof (imageUrl as any).src === \"string\";\r\n\r\n const isReactImage =\r\n imageUrl !== undefined && !isStaticObj && typeof imageUrl !== \"string\";\r\n\r\n const {\r\n src: imgSrc,\r\n width: resolvedWidth,\r\n height: resolvedHeight,\r\n } = normalizeImageSource(\r\n imageUrl as CardImageSource,\r\n imageWidth,\r\n imageHeight\r\n );\r\n\r\n const hasImage = isReactImage || !!imgSrc;\r\n\r\n const imgAlt = imageAlt || `${title || \"Card\"} image`;\r\n\r\n const ImageRenderer = ImageComponent || FallbackImage;\r\n const isNextImage = typeof ImageRenderer !== \"string\";\r\n\r\n const cardClassName = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.card,\r\n classMap[layout],\r\n align && classMap[align],\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n outline && classMap.outline,\r\n loading && classMap.loading,\r\n className\r\n ),\r\n [\r\n classMap,\r\n layout,\r\n align,\r\n theme,\r\n state,\r\n size,\r\n shadow,\r\n rounding,\r\n outline,\r\n loading,\r\n className,\r\n ]\r\n );\r\n\r\n return (\r\n <div\r\n data-testid={testId}\r\n className={cardClassName}\r\n role=\"region\"\r\n aria-labelledby={title ? headerId : undefined}\r\n aria-label={!title ? derivedAriaLabel : undefined}\r\n aria-busy={loading || undefined}\r\n >\r\n {loading ? (\r\n <SkeletonComponent\r\n width=\"250px\"\r\n height=\"250px\"\r\n data-testid={`${testId}-skeleton`}\r\n />\r\n ) : (\r\n <div className={classMap.content}>\r\n {hasImage &&\r\n (isReactImage ? (\r\n <div className={classMap.media}>\r\n {React.isValidElement(imageUrl)\r\n ? imageUrl\r\n : React.createElement(imageUrl as React.ComponentType<any>)}\r\n </div>\r\n ) : imageFill ? (\r\n <div className={classMap.media}>\r\n <ImageRenderer\r\n src={imgSrc as any}\r\n alt={imgAlt}\r\n className={combineClassNames(classMap.image, imageClassName)}\r\n {...(isNextImage ? { fill: true } : {})}\r\n {...(!isNextImage ? { loading: \"lazy\" as const } : {})}\r\n />\r\n </div>\r\n ) : (\r\n <ImageRenderer\r\n src={imgSrc as any}\r\n alt={imgAlt}\r\n className={combineClassNames(classMap.image, imageClassName)}\r\n width={resolvedWidth ?? 640}\r\n height={resolvedHeight ?? 360}\r\n {...(!isNextImage ? { loading: \"lazy\" as const } : {})}\r\n />\r\n ))}\r\n\r\n <div>\r\n <div\r\n className={combineClassNames(classMap.header, headerClassName)}\r\n id={headerId}\r\n >\r\n {renderHeader ? (\r\n renderHeader()\r\n ) : title ? (\r\n <h2 className={classMap.title}>\r\n {cardIcon && (\r\n <span\r\n className={classMap.icon}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-icon`}\r\n >\r\n {React.createElement(cardIcon)}\r\n </span>\r\n )}\r\n {title}\r\n </h2>\r\n ) : null}\r\n </div>\r\n\r\n <div\r\n className={combineClassNames(classMap.body, bodyClassName)}\r\n role=\"group\"\r\n aria-describedby={description ? descriptionId : undefined}\r\n >\r\n {renderContent ? (\r\n renderContent()\r\n ) : (\r\n <>\r\n {description && (\r\n <p id={descriptionId} className={classMap.description}>\r\n {description}\r\n </p>\r\n )}\r\n {children && (\r\n <div className={classMap.children}>{children}</div>\r\n )}\r\n </>\r\n )}\r\n </div>\r\n\r\n {(actionButtons.length > 0 || renderFooter) && (\r\n <div\r\n className={combineClassNames(classMap.footer, footerClassName)}\r\n >\r\n {actionButtons.length > 0 && (\r\n <div className={classMap.actions}>\r\n {actionButtons.map((button, index) =>\r\n useIconButtons && button.icon ? (\r\n <button.iconButtonComponent\r\n key={index}\r\n icon={button.icon}\r\n onClick={button.onClick}\r\n className={classMap.action_button}\r\n theme={button.theme || \"clear\"}\r\n state={button.state || \"\"}\r\n aria-label={button.label}\r\n size={button.size || size}\r\n href={button.href}\r\n loading={button.loading}\r\n ariaLabel={button.ariaLabel}\r\n />\r\n ) : (\r\n <button.buttonComponent\r\n key={index}\r\n onClick={button.onClick}\r\n className={classMap.action_button}\r\n theme={button.theme || \"secondary\"}\r\n state={button.state || \"\"}\r\n href={button.href}\r\n loading={button.loading}\r\n size={button.size || size}\r\n ariaLabel={button.ariaLabel}\r\n >\r\n {button.label}\r\n </button.buttonComponent>\r\n )\r\n )}\r\n </div>\r\n )}\r\n {renderFooter && renderFooter()}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nCardBase.displayName = \"CardBase\";\r\n\r\nexport default CardBase;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport Image, { StaticImageData } from \"next/image\";\r\nimport { Button, IconButton, Skeleton } from \"../../../index.next\";\r\nimport styles from \"./Card.module.scss\";\r\nimport CardBase from \"../CardBase\";\r\nimport { CardImageComponentProps, CardProps } from \"../Card.types\";\r\n\r\nconst NextImageWrapper: React.FC<CardImageComponentProps> = ({\r\n src,\r\n alt,\r\n className,\r\n width,\r\n height,\r\n fill,\r\n}) => {\r\n if (typeof src === \"string\" && src.toLowerCase().endsWith(\".svg\")) {\r\n return (\r\n <img\r\n src={src}\r\n alt={alt}\r\n className={className}\r\n width={width}\r\n height={height}\r\n loading=\"lazy\"\r\n />\r\n );\r\n }\r\n\r\n return (\r\n <Image\r\n src={src as StaticImageData | string}\r\n alt={alt}\r\n className={className}\r\n {...(fill\r\n ? { fill, sizes: \"100vw\" }\r\n : { width: width ?? 640, height: height ?? 360 })}\r\n />\r\n );\r\n};\r\n\r\nconst Card: React.FC<CardProps> = (props) => {\r\n const wrappedButtons = (props.actionButtons ?? []).map((b) => ({\r\n ...b,\r\n buttonComponent: Button,\r\n iconButtonComponent: IconButton,\r\n }));\r\n\r\n return (\r\n <CardBase\r\n {...props}\r\n actionButtons={wrappedButtons}\r\n classMap={styles}\r\n SkeletonComponent={Skeleton}\r\n ImageComponent={NextImageWrapper}\r\n />\r\n );\r\n};\r\nCard.displayName = \"Card\";\r\nexport default Card;\r\n"],"names":["title","description","outline","loading","children","Skeleton"],"mappings":"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"}
@@ -164,16 +164,17 @@ const CardBase = ({
164
164
  const headerId = ariaLabelledBy || `${autoId}-header`;
165
165
  const descriptionId = `${autoId}-description`;
166
166
  const derivedAriaLabel = ariaLabel || title2 || description2 || "Content card";
167
- function normalizeImageSource(imageUrl2, fallbackWidth, fallbackHeight) {
168
- if (!imageUrl2) {
167
+ const FallbackImage = (props) => /* @__PURE__ */ require$$2.jsx("img", { ...props });
168
+ function normalizeImageSource(srcInput, fallbackWidth, fallbackHeight) {
169
+ if (!srcInput) {
169
170
  return {
170
171
  src: void 0,
171
172
  width: fallbackWidth,
172
173
  height: fallbackHeight
173
174
  };
174
175
  }
175
- if (typeof imageUrl2 === "object" && "src" in imageUrl2 && typeof imageUrl2.src === "string") {
176
- const { src, width, height } = imageUrl2;
176
+ if (typeof srcInput === "object" && "src" in srcInput && typeof srcInput.src === "string") {
177
+ const { src, width, height } = srcInput;
177
178
  const trimmed = src.trim();
178
179
  if (!trimmed) {
179
180
  return {
@@ -188,8 +189,8 @@ const CardBase = ({
188
189
  height: typeof height === "number" ? height : fallbackHeight
189
190
  };
190
191
  }
191
- if (typeof imageUrl2 === "string") {
192
- const trimmed = imageUrl2.trim();
192
+ if (typeof srcInput === "string") {
193
+ const trimmed = srcInput.trim();
193
194
  if (!trimmed) {
194
195
  return {
195
196
  src: void 0,
@@ -209,13 +210,18 @@ const CardBase = ({
209
210
  height: fallbackHeight
210
211
  };
211
212
  }
212
- const FallbackImage = (props) => /* @__PURE__ */ require$$2.jsx("img", { ...props });
213
+ const isStaticObj = typeof imageUrl === "object" && imageUrl !== null && "src" in imageUrl && typeof imageUrl.src === "string";
214
+ const isReactImage = imageUrl !== void 0 && !isStaticObj && typeof imageUrl !== "string";
213
215
  const {
214
216
  src: imgSrc,
215
217
  width: resolvedWidth,
216
218
  height: resolvedHeight
217
- } = normalizeImageSource(imageUrl, imageWidth, imageHeight);
218
- const hasImage = !!imgSrc;
219
+ } = normalizeImageSource(
220
+ imageUrl,
221
+ imageWidth,
222
+ imageHeight
223
+ );
224
+ const hasImage = isReactImage || !!imgSrc;
219
225
  const imgAlt = imageAlt || `${title2 || "Card"} image`;
220
226
  const ImageRenderer = ImageComponent || FallbackImage;
221
227
  const isNextImage = typeof ImageRenderer !== "string";
@@ -264,7 +270,7 @@ const CardBase = ({
264
270
  "data-testid": `${testId}-skeleton`
265
271
  }
266
272
  ) : /* @__PURE__ */ require$$2.jsxs("div", { className: classMap.content, children: [
267
- hasImage && (imageFill ? /* @__PURE__ */ require$$2.jsx("div", { className: classMap.media, children: /* @__PURE__ */ require$$2.jsx(
273
+ hasImage && (isReactImage ? /* @__PURE__ */ require$$2.jsx("div", { className: classMap.media, children: React.isValidElement(imageUrl) ? imageUrl : React.createElement(imageUrl) }) : imageFill ? /* @__PURE__ */ require$$2.jsx("div", { className: classMap.media, children: /* @__PURE__ */ require$$2.jsx(
268
274
  ImageRenderer,
269
275
  {
270
276
  src: imgSrc,
@@ -363,8 +369,36 @@ const CardBase = ({
363
369
  );
364
370
  };
365
371
  CardBase.displayName = "CardBase";
366
- const NextImageWrapper = (props) => {
367
- return /* @__PURE__ */ require$$2.jsx(image$1.Image, { ...props });
372
+ const NextImageWrapper = ({
373
+ src,
374
+ alt,
375
+ className,
376
+ width,
377
+ height,
378
+ fill
379
+ }) => {
380
+ if (typeof src === "string" && src.toLowerCase().endsWith(".svg")) {
381
+ return /* @__PURE__ */ require$$2.jsx(
382
+ "img",
383
+ {
384
+ src,
385
+ alt,
386
+ className,
387
+ width,
388
+ height,
389
+ loading: "lazy"
390
+ }
391
+ );
392
+ }
393
+ return /* @__PURE__ */ require$$2.jsx(
394
+ image$1.Image,
395
+ {
396
+ src,
397
+ alt,
398
+ className,
399
+ ...fill ? { fill, sizes: "100vw" } : { width: width ?? 640, height: height ?? 360 }
400
+ }
401
+ );
368
402
  };
369
403
  const Card = (props) => {
370
404
  const wrappedButtons = (props.actionButtons ?? []).map((b) => ({
@@ -385,4 +419,4 @@ const Card = (props) => {
385
419
  };
386
420
  Card.displayName = "Card";
387
421
  exports.Card = Card;
388
- //# sourceMappingURL=Card-09MMj3o2.cjs.map
422
+ //# sourceMappingURL=Card-CddrG8Xx.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Card-CddrG8Xx.cjs","sources":["../../src/components/Card/CardBase.tsx","../../src/components/Card/next/Card.tsx"],"sourcesContent":["import React, { useId, useMemo } from \"react\";\r\nimport { CardBaseProps, CardImageSource } from \"./Card.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultSize,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst CardBase: React.FC<CardBaseProps> = ({\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n cardIcon,\r\n title = \"\",\r\n description = \"\",\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n imageUrl,\r\n imageAlt,\r\n imageHeight,\r\n imageWidth,\r\n imageFill,\r\n className = \"\",\r\n imageClassName = \"\",\r\n headerClassName = \"\",\r\n bodyClassName = \"\",\r\n footerClassName = \"\",\r\n outline = false,\r\n size = getDefaultSize(),\r\n align = \"center\",\r\n renderHeader,\r\n renderContent,\r\n renderFooter,\r\n actionButtons = [],\r\n useIconButtons = false,\r\n layout = \"vertical\",\r\n loading = false,\r\n children,\r\n \"data-testid\": testId = \"card\",\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-label\": ariaLabel,\r\n classMap,\r\n SkeletonComponent,\r\n ImageComponent,\r\n}) => {\r\n const autoId = useId();\r\n const headerId = ariaLabelledBy || `${autoId}-header`;\r\n const descriptionId = `${autoId}-description`;\r\n const derivedAriaLabel = ariaLabel || title || description || \"Content card\";\r\n\r\n const FallbackImage = (props: React.ImgHTMLAttributes<HTMLImageElement>) => (\r\n <img {...props} />\r\n );\r\n\r\n function normalizeImageSource(\r\n srcInput: CardImageSource,\r\n fallbackWidth?: number,\r\n fallbackHeight?: number\r\n ) {\r\n if (!srcInput) {\r\n return {\r\n src: undefined as string | undefined,\r\n width: fallbackWidth,\r\n height: fallbackHeight,\r\n };\r\n }\r\n\r\n if (\r\n typeof srcInput === \"object\" &&\r\n \"src\" in srcInput &&\r\n typeof (srcInput as any).src === \"string\"\r\n ) {\r\n const { src, width, height } = srcInput as any;\r\n const trimmed = src.trim();\r\n\r\n if (!trimmed) {\r\n return {\r\n src: undefined,\r\n width: fallbackWidth,\r\n height: fallbackHeight,\r\n };\r\n }\r\n\r\n return {\r\n src: trimmed,\r\n width: typeof width === \"number\" ? width : fallbackWidth,\r\n height: typeof height === \"number\" ? height : fallbackHeight,\r\n };\r\n }\r\n\r\n if (typeof srcInput === \"string\") {\r\n const trimmed = srcInput.trim();\r\n\r\n if (!trimmed) {\r\n return {\r\n src: undefined,\r\n width: fallbackWidth,\r\n height: fallbackHeight,\r\n };\r\n }\r\n\r\n return {\r\n src: trimmed,\r\n width: fallbackWidth,\r\n height: fallbackHeight,\r\n };\r\n }\r\n\r\n return {\r\n src: undefined,\r\n width: fallbackWidth,\r\n height: fallbackHeight,\r\n };\r\n }\r\n\r\n const isStaticObj =\r\n typeof imageUrl === \"object\" &&\r\n imageUrl !== null &&\r\n \"src\" in (imageUrl as any) &&\r\n typeof (imageUrl as any).src === \"string\";\r\n\r\n const isReactImage =\r\n imageUrl !== undefined && !isStaticObj && typeof imageUrl !== \"string\";\r\n\r\n const {\r\n src: imgSrc,\r\n width: resolvedWidth,\r\n height: resolvedHeight,\r\n } = normalizeImageSource(\r\n imageUrl as CardImageSource,\r\n imageWidth,\r\n imageHeight\r\n );\r\n\r\n const hasImage = isReactImage || !!imgSrc;\r\n\r\n const imgAlt = imageAlt || `${title || \"Card\"} image`;\r\n\r\n const ImageRenderer = ImageComponent || FallbackImage;\r\n const isNextImage = typeof ImageRenderer !== \"string\";\r\n\r\n const cardClassName = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.card,\r\n classMap[layout],\r\n align && classMap[align],\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n outline && classMap.outline,\r\n loading && classMap.loading,\r\n className\r\n ),\r\n [\r\n classMap,\r\n layout,\r\n align,\r\n theme,\r\n state,\r\n size,\r\n shadow,\r\n rounding,\r\n outline,\r\n loading,\r\n className,\r\n ]\r\n );\r\n\r\n return (\r\n <div\r\n data-testid={testId}\r\n className={cardClassName}\r\n role=\"region\"\r\n aria-labelledby={title ? headerId : undefined}\r\n aria-label={!title ? derivedAriaLabel : undefined}\r\n aria-busy={loading || undefined}\r\n >\r\n {loading ? (\r\n <SkeletonComponent\r\n width=\"250px\"\r\n height=\"250px\"\r\n data-testid={`${testId}-skeleton`}\r\n />\r\n ) : (\r\n <div className={classMap.content}>\r\n {hasImage &&\r\n (isReactImage ? (\r\n <div className={classMap.media}>\r\n {React.isValidElement(imageUrl)\r\n ? imageUrl\r\n : React.createElement(imageUrl as React.ComponentType<any>)}\r\n </div>\r\n ) : imageFill ? (\r\n <div className={classMap.media}>\r\n <ImageRenderer\r\n src={imgSrc as any}\r\n alt={imgAlt}\r\n className={combineClassNames(classMap.image, imageClassName)}\r\n {...(isNextImage ? { fill: true } : {})}\r\n {...(!isNextImage ? { loading: \"lazy\" as const } : {})}\r\n />\r\n </div>\r\n ) : (\r\n <ImageRenderer\r\n src={imgSrc as any}\r\n alt={imgAlt}\r\n className={combineClassNames(classMap.image, imageClassName)}\r\n width={resolvedWidth ?? 640}\r\n height={resolvedHeight ?? 360}\r\n {...(!isNextImage ? { loading: \"lazy\" as const } : {})}\r\n />\r\n ))}\r\n\r\n <div>\r\n <div\r\n className={combineClassNames(classMap.header, headerClassName)}\r\n id={headerId}\r\n >\r\n {renderHeader ? (\r\n renderHeader()\r\n ) : title ? (\r\n <h2 className={classMap.title}>\r\n {cardIcon && (\r\n <span\r\n className={classMap.icon}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-icon`}\r\n >\r\n {React.createElement(cardIcon)}\r\n </span>\r\n )}\r\n {title}\r\n </h2>\r\n ) : null}\r\n </div>\r\n\r\n <div\r\n className={combineClassNames(classMap.body, bodyClassName)}\r\n role=\"group\"\r\n aria-describedby={description ? descriptionId : undefined}\r\n >\r\n {renderContent ? (\r\n renderContent()\r\n ) : (\r\n <>\r\n {description && (\r\n <p id={descriptionId} className={classMap.description}>\r\n {description}\r\n </p>\r\n )}\r\n {children && (\r\n <div className={classMap.children}>{children}</div>\r\n )}\r\n </>\r\n )}\r\n </div>\r\n\r\n {(actionButtons.length > 0 || renderFooter) && (\r\n <div\r\n className={combineClassNames(classMap.footer, footerClassName)}\r\n >\r\n {actionButtons.length > 0 && (\r\n <div className={classMap.actions}>\r\n {actionButtons.map((button, index) =>\r\n useIconButtons && button.icon ? (\r\n <button.iconButtonComponent\r\n key={index}\r\n icon={button.icon}\r\n onClick={button.onClick}\r\n className={classMap.action_button}\r\n theme={button.theme || \"clear\"}\r\n state={button.state || \"\"}\r\n aria-label={button.label}\r\n size={button.size || size}\r\n href={button.href}\r\n loading={button.loading}\r\n ariaLabel={button.ariaLabel}\r\n />\r\n ) : (\r\n <button.buttonComponent\r\n key={index}\r\n onClick={button.onClick}\r\n className={classMap.action_button}\r\n theme={button.theme || \"secondary\"}\r\n state={button.state || \"\"}\r\n href={button.href}\r\n loading={button.loading}\r\n size={button.size || size}\r\n ariaLabel={button.ariaLabel}\r\n >\r\n {button.label}\r\n </button.buttonComponent>\r\n )\r\n )}\r\n </div>\r\n )}\r\n {renderFooter && renderFooter()}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nCardBase.displayName = \"CardBase\";\r\n\r\nexport default CardBase;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport Image, { StaticImageData } from \"next/image\";\r\nimport { Button, IconButton, Skeleton } from \"../../../index.next\";\r\nimport styles from \"./Card.module.scss\";\r\nimport CardBase from \"../CardBase\";\r\nimport { CardImageComponentProps, CardProps } from \"../Card.types\";\r\n\r\nconst NextImageWrapper: React.FC<CardImageComponentProps> = ({\r\n src,\r\n alt,\r\n className,\r\n width,\r\n height,\r\n fill,\r\n}) => {\r\n if (typeof src === \"string\" && src.toLowerCase().endsWith(\".svg\")) {\r\n return (\r\n <img\r\n src={src}\r\n alt={alt}\r\n className={className}\r\n width={width}\r\n height={height}\r\n loading=\"lazy\"\r\n />\r\n );\r\n }\r\n\r\n return (\r\n <Image\r\n src={src as StaticImageData | string}\r\n alt={alt}\r\n className={className}\r\n {...(fill\r\n ? { fill, sizes: \"100vw\" }\r\n : { width: width ?? 640, height: height ?? 360 })}\r\n />\r\n );\r\n};\r\n\r\nconst Card: React.FC<CardProps> = (props) => {\r\n const wrappedButtons = (props.actionButtons ?? []).map((b) => ({\r\n ...b,\r\n buttonComponent: Button,\r\n iconButtonComponent: IconButton,\r\n }));\r\n\r\n return (\r\n <CardBase\r\n {...props}\r\n actionButtons={wrappedButtons}\r\n classMap={styles}\r\n SkeletonComponent={Skeleton}\r\n ImageComponent={NextImageWrapper}\r\n />\r\n );\r\n};\r\nCard.displayName = \"Card\";\r\nexport default Card;\r\n"],"names":["getDefaultTheme","title","description","getDefaultRounding","getDefaultShadow","outline","getDefaultSize","loading","children","useId","jsx","useMemo","combineClassNames","capitalize","jsxs","Fragment","Image","Button","IconButton","Skeleton"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
- const Card = require("./Card-09MMj3o2.cjs");
2
+ const Card = require("./Card-CddrG8Xx.cjs");
3
3
  module.exports = Card.Card;
4
4
  //# sourceMappingURL=Card.cjs.js.map
package/dist/next/Card.js CHANGED
@@ -1,4 +1,4 @@
1
- import { C } from "./Card-Btw1d4gS.js";
1
+ import { C } from "./Card-CNwE1Mkt.js";
2
2
  export {
3
3
  C as default
4
4
  };
@@ -53,7 +53,7 @@ const EmptyState = require("./EmptyState-Bb90F-ej.cjs");
53
53
  const CommandPalette = require("./CommandPalette-BO6R9zQs.cjs");
54
54
  const NotificationCenter = require("./NotificationCenter-CtL6rozQ.cjs");
55
55
  const Sidebar = require("./Sidebar-DajVSn82.cjs");
56
- const Card = require("./Card-09MMj3o2.cjs");
56
+ const Card = require("./Card-CddrG8Xx.cjs");
57
57
  const Avatar = require("./Avatar-B9sMyRWr.cjs");
58
58
  const ChipGroupBase = React.forwardRef(
59
59
  ({
@@ -52,7 +52,7 @@ import { E } from "./EmptyState-Brd4N36F.js";
52
52
  import { C as C4 } from "./CommandPalette-CN0BiN0R.js";
53
53
  import { N as N2 } from "./NotificationCenter-CtM10CVj.js";
54
54
  import { S as S7 } from "./Sidebar-CJ4VrQIW.js";
55
- import { C as C5 } from "./Card-Btw1d4gS.js";
55
+ import { C as C5 } from "./Card-CNwE1Mkt.js";
56
56
  import { A as A2 } from "./Avatar-B-Ws4Ueo.js";
57
57
  const ChipGroupBase = forwardRef(
58
58
  ({