@dnanpm/ui-components 0.8.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -0
- package/dist/components/Accordion/Accordion.css +9 -2
- package/dist/components/AccordionItem/AccordionItem.cjs +4 -4
- package/dist/components/AccordionItem/AccordionItem.cjs.map +1 -1
- package/dist/components/AccordionItem/AccordionItem.css +8 -2
- package/dist/components/AccordionItem/AccordionItem.d.ts.map +1 -1
- package/dist/components/AccordionItem/AccordionItem.js +2 -2
- package/dist/components/AccordionItem/AccordionItem.js.map +1 -1
- package/dist/components/Avatar/Avatar.cjs +83 -0
- package/dist/components/Avatar/Avatar.cjs.map +1 -0
- package/dist/components/Avatar/Avatar.css +188 -0
- package/dist/components/Avatar/Avatar.d.ts +3 -0
- package/dist/components/Avatar/Avatar.d.ts.map +1 -0
- package/dist/components/Avatar/Avatar.js +83 -0
- package/dist/components/Avatar/Avatar.js.map +1 -0
- package/dist/components/Avatar/Avatar.module.css.cjs +40 -0
- package/dist/components/Avatar/Avatar.module.css.cjs.map +1 -0
- package/dist/components/Avatar/Avatar.module.css.js +40 -0
- package/dist/components/Avatar/Avatar.module.css.js.map +1 -0
- package/dist/components/Avatar/Avatar.types.d.ts +66 -0
- package/dist/components/Avatar/Avatar.types.d.ts.map +1 -0
- package/dist/components/Avatar/Avatar.utils.cjs +17 -0
- package/dist/components/Avatar/Avatar.utils.cjs.map +1 -0
- package/dist/components/Avatar/Avatar.utils.d.ts +6 -0
- package/dist/components/Avatar/Avatar.utils.d.ts.map +1 -0
- package/dist/components/Avatar/Avatar.utils.js +17 -0
- package/dist/components/Avatar/Avatar.utils.js.map +1 -0
- package/dist/components/Avatar/index.d.ts +3 -0
- package/dist/components/Avatar/index.d.ts.map +1 -0
- package/dist/components/Breadcrumb/Breadcrumb.cjs +9 -12
- package/dist/components/Breadcrumb/Breadcrumb.cjs.map +1 -1
- package/dist/components/Breadcrumb/Breadcrumb.css +20 -17
- package/dist/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
- package/dist/components/Breadcrumb/Breadcrumb.js +2 -5
- package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -1
- package/dist/components/Breadcrumb/Breadcrumb.module.css.cjs +5 -8
- package/dist/components/Breadcrumb/Breadcrumb.module.css.cjs.map +1 -1
- package/dist/components/Breadcrumb/Breadcrumb.module.css.js +5 -8
- package/dist/components/Breadcrumb/Breadcrumb.module.css.js.map +1 -1
- package/dist/components/Button/Button.cjs +29 -3
- package/dist/components/Button/Button.cjs.map +1 -1
- package/dist/components/Button/Button.css +76 -30
- package/dist/components/Button/Button.d.ts +1 -1
- package/dist/components/Button/Button.d.ts.map +1 -1
- package/dist/components/Button/Button.js +28 -2
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/Button/Button.module.css.cjs +19 -11
- package/dist/components/Button/Button.module.css.cjs.map +1 -1
- package/dist/components/Button/Button.module.css.js +19 -11
- package/dist/components/Button/Button.module.css.js.map +1 -1
- package/dist/components/Button/Button.types.d.ts +20 -3
- package/dist/components/Button/Button.types.d.ts.map +1 -1
- package/dist/components/Button/index.d.ts +1 -1
- package/dist/components/Button/index.d.ts.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.cjs +19 -14
- package/dist/components/ButtonCard/ButtonCard.cjs.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.css +62 -20
- package/dist/components/ButtonCard/ButtonCard.d.ts +2 -1
- package/dist/components/ButtonCard/ButtonCard.d.ts.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.js +17 -12
- package/dist/components/ButtonCard/ButtonCard.js.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.module.css.cjs +14 -12
- package/dist/components/ButtonCard/ButtonCard.module.css.cjs.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.module.css.js +14 -12
- package/dist/components/ButtonCard/ButtonCard.module.css.js.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.types.d.ts +3 -2
- package/dist/components/ButtonCard/ButtonCard.types.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.cjs +105 -0
- package/dist/components/Checkbox/Checkbox.cjs.map +1 -0
- package/dist/components/Checkbox/Checkbox.css +323 -0
- package/dist/components/Checkbox/Checkbox.d.ts +3 -0
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -0
- package/dist/components/Checkbox/Checkbox.js +105 -0
- package/dist/components/Checkbox/Checkbox.js.map +1 -0
- package/dist/components/Checkbox/Checkbox.module.css.cjs +35 -0
- package/dist/components/Checkbox/Checkbox.module.css.cjs.map +1 -0
- package/dist/components/Checkbox/Checkbox.module.css.js +35 -0
- package/dist/components/Checkbox/Checkbox.module.css.js.map +1 -0
- package/dist/components/Checkbox/Checkbox.types.d.ts +47 -0
- package/dist/components/Checkbox/Checkbox.types.d.ts.map +1 -0
- package/dist/components/Checkbox/index.d.ts +3 -0
- package/dist/components/Checkbox/index.d.ts.map +1 -0
- package/dist/components/ContentCard/ContentCard.cjs +97 -0
- package/dist/components/ContentCard/ContentCard.cjs.map +1 -0
- package/dist/components/ContentCard/ContentCard.css +254 -0
- package/dist/components/ContentCard/ContentCard.d.ts +3 -0
- package/dist/components/ContentCard/ContentCard.d.ts.map +1 -0
- package/dist/components/ContentCard/ContentCard.js +97 -0
- package/dist/components/ContentCard/ContentCard.js.map +1 -0
- package/dist/components/ContentCard/ContentCard.module.css.cjs +24 -0
- package/dist/components/ContentCard/ContentCard.module.css.cjs.map +1 -0
- package/dist/components/ContentCard/ContentCard.module.css.js +25 -0
- package/dist/components/ContentCard/ContentCard.module.css.js.map +1 -0
- package/dist/components/ContentCard/ContentCard.types.d.ts +100 -0
- package/dist/components/ContentCard/ContentCard.types.d.ts.map +1 -0
- package/dist/components/ContentCard/index.d.ts +3 -0
- package/dist/components/ContentCard/index.d.ts.map +1 -0
- package/dist/components/Drawer/Drawer.cjs +15 -7
- package/dist/components/Drawer/Drawer.cjs.map +1 -1
- package/dist/components/Drawer/Drawer.css +47 -45
- package/dist/components/Drawer/Drawer.d.ts.map +1 -1
- package/dist/components/Drawer/Drawer.js +12 -4
- package/dist/components/Drawer/Drawer.js.map +1 -1
- package/dist/components/Drawer/Drawer.module.css.cjs +16 -16
- package/dist/components/Drawer/Drawer.module.css.js +16 -16
- package/dist/components/Footer/Footer.cjs +8 -9
- package/dist/components/Footer/Footer.cjs.map +1 -1
- package/dist/components/Footer/Footer.css +91 -84
- package/dist/components/Footer/Footer.d.ts.map +1 -1
- package/dist/components/Footer/Footer.js +1 -2
- package/dist/components/Footer/Footer.js.map +1 -1
- package/dist/components/Footer/Footer.module.css.cjs +39 -39
- package/dist/components/Footer/Footer.module.css.js +39 -39
- package/dist/components/FunctionButton/FunctionButton.cjs +2 -2
- package/dist/components/FunctionButton/FunctionButton.cjs.map +1 -1
- package/dist/components/FunctionButton/FunctionButton.css +5 -2
- package/dist/components/FunctionButton/FunctionButton.js +1 -1
- package/dist/components/FunctionButton/FunctionButton.js.map +1 -1
- package/dist/components/Hero/Hero.cjs +30 -29
- package/dist/components/Hero/Hero.cjs.map +1 -1
- package/dist/components/Hero/Hero.css +86 -74
- package/dist/components/Hero/Hero.d.ts +1 -1
- package/dist/components/Hero/Hero.d.ts.map +1 -1
- package/dist/components/Hero/Hero.js +30 -29
- package/dist/components/Hero/Hero.js.map +1 -1
- package/dist/components/Hero/Hero.module.css.cjs +20 -17
- package/dist/components/Hero/Hero.module.css.cjs.map +1 -1
- package/dist/components/Hero/Hero.module.css.js +20 -17
- package/dist/components/Hero/Hero.module.css.js.map +1 -1
- package/dist/components/Hero/Hero.types.d.ts +2 -6
- package/dist/components/Hero/Hero.types.d.ts.map +1 -1
- package/dist/components/IconButton/IconButton.cjs +3 -4
- package/dist/components/IconButton/IconButton.cjs.map +1 -1
- package/dist/components/IconButton/IconButton.css +5 -2
- package/dist/components/IconButton/IconButton.d.ts.map +1 -1
- package/dist/components/IconButton/IconButton.js +1 -2
- package/dist/components/IconButton/IconButton.js.map +1 -1
- package/dist/components/Label/Label.css +5 -2
- package/dist/components/MainNavigation/MainNavigation.cjs +556 -191
- package/dist/components/MainNavigation/MainNavigation.cjs.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.css +297 -170
- package/dist/components/MainNavigation/MainNavigation.d.ts +1 -1
- package/dist/components/MainNavigation/MainNavigation.d.ts.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.js +526 -161
- package/dist/components/MainNavigation/MainNavigation.js.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.module.css.cjs +80 -68
- package/dist/components/MainNavigation/MainNavigation.module.css.cjs.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.module.css.js +80 -68
- package/dist/components/MainNavigation/MainNavigation.module.css.js.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.types.d.ts +55 -21
- package/dist/components/MainNavigation/MainNavigation.types.d.ts.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.utils.cjs +28 -4
- package/dist/components/MainNavigation/MainNavigation.utils.cjs.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.utils.d.ts +11 -1
- package/dist/components/MainNavigation/MainNavigation.utils.d.ts.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.utils.js +28 -4
- package/dist/components/MainNavigation/MainNavigation.utils.js.map +1 -1
- package/dist/components/MainNavigation/index.d.ts +1 -1
- package/dist/components/MainNavigation/index.d.ts.map +1 -1
- package/dist/components/Modal/Modal.cjs +14 -6
- package/dist/components/Modal/Modal.cjs.map +1 -1
- package/dist/components/Modal/Modal.css +43 -40
- package/dist/components/Modal/Modal.d.ts.map +1 -1
- package/dist/components/Modal/Modal.js +12 -4
- package/dist/components/Modal/Modal.js.map +1 -1
- package/dist/components/Modal/Modal.module.css.cjs +18 -18
- package/dist/components/Modal/Modal.module.css.js +18 -18
- package/dist/components/Notification/Notification.cjs +3 -2
- package/dist/components/Notification/Notification.cjs.map +1 -1
- package/dist/components/Notification/Notification.css +20 -12
- package/dist/components/Notification/Notification.d.ts.map +1 -1
- package/dist/components/Notification/Notification.js +2 -1
- package/dist/components/Notification/Notification.js.map +1 -1
- package/dist/components/Notification/Notification.module.css.cjs +9 -9
- package/dist/components/Notification/Notification.module.css.js +9 -9
- package/dist/components/Pagination/Pagination.cjs +142 -0
- package/dist/components/Pagination/Pagination.cjs.map +1 -0
- package/dist/components/Pagination/Pagination.css +256 -0
- package/dist/components/Pagination/Pagination.d.ts +3 -0
- package/dist/components/Pagination/Pagination.d.ts.map +1 -0
- package/dist/components/Pagination/Pagination.js +142 -0
- package/dist/components/Pagination/Pagination.js.map +1 -0
- package/dist/components/Pagination/Pagination.module.css.cjs +34 -0
- package/dist/components/Pagination/Pagination.module.css.cjs.map +1 -0
- package/dist/components/Pagination/Pagination.module.css.js +34 -0
- package/dist/components/Pagination/Pagination.module.css.js.map +1 -0
- package/dist/components/Pagination/Pagination.types.d.ts +20 -0
- package/dist/components/Pagination/Pagination.types.d.ts.map +1 -0
- package/dist/components/Pagination/Pagination.utils.cjs +76 -0
- package/dist/components/Pagination/Pagination.utils.cjs.map +1 -0
- package/dist/components/Pagination/Pagination.utils.d.ts +21 -0
- package/dist/components/Pagination/Pagination.utils.d.ts.map +1 -0
- package/dist/components/Pagination/Pagination.utils.js +76 -0
- package/dist/components/Pagination/Pagination.utils.js.map +1 -0
- package/dist/components/Pagination/index.d.ts +3 -0
- package/dist/components/Pagination/index.d.ts.map +1 -0
- package/dist/components/Pictograph/Pictograph.css +9 -2
- package/dist/components/Pictograph/PictographItem.css +9 -2
- package/dist/components/Quote/Quote.css +5 -2
- package/dist/components/Spinner/Spinner.css +9 -2
- package/dist/design-tokens/dist/tokens.cjs +5 -0
- package/dist/design-tokens/dist/tokens.cjs.map +1 -0
- package/dist/design-tokens/dist/tokens.js +5 -0
- package/dist/design-tokens/dist/tokens.js.map +1 -0
- package/dist/index.cjs +8 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +10 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/styles/utilities.css +6 -0
- package/dist/styles/utils/elevation.css +34 -26
- package/dist/styles/utils/focus.css +63 -65
- package/dist/styles/utils/index.cjs +33 -0
- package/dist/styles/utils/index.cjs.map +1 -0
- package/dist/styles/utils/index.d.ts +20 -0
- package/dist/styles/utils/index.d.ts.map +1 -0
- package/dist/styles/utils/index.js +33 -0
- package/dist/styles/utils/index.js.map +1 -0
- package/dist/styles/utils/overlay.css +35 -28
- package/dist/styles/utils/text-decoration.css +19 -12
- package/dist/styles.css +46 -12
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/isRenderable/index.d.ts +2 -0
- package/dist/utils/isRenderable/index.d.ts.map +1 -0
- package/dist/utils/isRenderable/isRenderable.cjs +5 -0
- package/dist/utils/isRenderable/isRenderable.cjs.map +1 -0
- package/dist/utils/isRenderable/isRenderable.d.ts +4 -0
- package/dist/utils/isRenderable/isRenderable.d.ts.map +1 -0
- package/dist/utils/isRenderable/isRenderable.js +5 -0
- package/dist/utils/isRenderable/isRenderable.js.map +1 -0
- package/package.json +12 -4
- package/dist/styles/utils/elevation.module.css.cjs +0 -16
- package/dist/styles/utils/elevation.module.css.cjs.map +0 -1
- package/dist/styles/utils/elevation.module.css.js +0 -16
- package/dist/styles/utils/elevation.module.css.js.map +0 -1
- package/dist/styles/utils/focus.module.css.cjs +0 -16
- package/dist/styles/utils/focus.module.css.cjs.map +0 -1
- package/dist/styles/utils/focus.module.css.js +0 -16
- package/dist/styles/utils/focus.module.css.js.map +0 -1
- package/dist/styles/utils/overlay.module.css.cjs +0 -13
- package/dist/styles/utils/overlay.module.css.cjs.map +0 -1
- package/dist/styles/utils/overlay.module.css.js +0 -13
- package/dist/styles/utils/overlay.module.css.js.map +0 -1
- package/dist/styles/utils/text-decoration.module.css.cjs +0 -13
- package/dist/styles/utils/text-decoration.module.css.cjs.map +0 -1
- package/dist/styles/utils/text-decoration.module.css.js +0 -13
- package/dist/styles/utils/text-decoration.module.css.js.map +0 -1
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const react = require("react");
|
|
5
|
+
const index = require("../../styles/utils/index.cjs");
|
|
6
|
+
const ContentCard_module = require("./ContentCard.module.css.cjs");
|
|
7
|
+
const isRenderable = require("../../utils/isRenderable/isRenderable.cjs");
|
|
8
|
+
const cn = require("../../utils/cn/cn.cjs");
|
|
9
|
+
const logoBackgroundToken = {
|
|
10
|
+
white: "var(--color-semantic-surface-base)",
|
|
11
|
+
"sand-soft": "var(--color-semantic-surface-neutral-soft)",
|
|
12
|
+
"sand-mid": "var(--color-semantic-surface-neutral-mid)",
|
|
13
|
+
"sand-strong": "var(--color-semantic-surface-neutral-strong)",
|
|
14
|
+
"pink-soft": "var(--color-semantic-surface-primary-soft)",
|
|
15
|
+
"pink-mid": "var(--color-semantic-surface-primary-mid)",
|
|
16
|
+
"pink-strong": "var(--color-semantic-surface-primary-strong)",
|
|
17
|
+
"plum-soft": "var(--color-semantic-surface-secondary-soft)",
|
|
18
|
+
"plum-mid": "var(--color-semantic-surface-secondary-mid)",
|
|
19
|
+
"plum-strong": "var(--color-semantic-surface-secondary-strong)"
|
|
20
|
+
};
|
|
21
|
+
const ContentCard = ({
|
|
22
|
+
media,
|
|
23
|
+
mediaKind = "image",
|
|
24
|
+
mediaBackground,
|
|
25
|
+
mediaWidth = "1/3",
|
|
26
|
+
mediaPosition = "start",
|
|
27
|
+
titlePrefix,
|
|
28
|
+
title,
|
|
29
|
+
headingLevel = "h3",
|
|
30
|
+
body,
|
|
31
|
+
actions,
|
|
32
|
+
appearance = "plain",
|
|
33
|
+
as = "article",
|
|
34
|
+
className,
|
|
35
|
+
ref,
|
|
36
|
+
...props
|
|
37
|
+
}) => {
|
|
38
|
+
const titleId = react.useId();
|
|
39
|
+
const HeadingLevel = headingLevel;
|
|
40
|
+
const Root = as;
|
|
41
|
+
const hasMedia = isRenderable.isRenderable(media);
|
|
42
|
+
const ariaLabel = props["aria-label"];
|
|
43
|
+
const ariaLabelledBy = props["aria-labelledby"] ?? (ariaLabel || as === "div" ? void 0 : titleId);
|
|
44
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
45
|
+
Root,
|
|
46
|
+
{
|
|
47
|
+
ref,
|
|
48
|
+
...props,
|
|
49
|
+
"data-color-scheme": "light",
|
|
50
|
+
className: cn.cn(
|
|
51
|
+
ContentCard_module["content-card"],
|
|
52
|
+
hasMedia && mediaWidth === "1/2" && ContentCard_module["content-card--media-half"],
|
|
53
|
+
hasMedia && mediaPosition === "end" && ContentCard_module["content-card--media-end"],
|
|
54
|
+
appearance === "border" && ContentCard_module["content-card--border"],
|
|
55
|
+
appearance === "elevated" && ContentCard_module["content-card--elevated"],
|
|
56
|
+
appearance === "elevated" && index.elevationStyles.elevationLow,
|
|
57
|
+
className
|
|
58
|
+
),
|
|
59
|
+
"aria-label": ariaLabel,
|
|
60
|
+
"aria-labelledby": ariaLabelledBy,
|
|
61
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ContentCard_module["content-card__layout"], children: [
|
|
62
|
+
hasMedia && /* @__PURE__ */ jsxRuntime.jsx(
|
|
63
|
+
"div",
|
|
64
|
+
{
|
|
65
|
+
className: cn.cn(
|
|
66
|
+
ContentCard_module["content-card__media"],
|
|
67
|
+
mediaKind === "logo" ? ContentCard_module["content-card__media--logo"] : ContentCard_module["content-card__media--image"]
|
|
68
|
+
),
|
|
69
|
+
style: mediaKind === "logo" && mediaBackground != null ? {
|
|
70
|
+
"--_cc-logo-bg": logoBackgroundToken[mediaBackground]
|
|
71
|
+
} : void 0,
|
|
72
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: ContentCard_module["content-card__media-inner"], children: media })
|
|
73
|
+
}
|
|
74
|
+
),
|
|
75
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: ContentCard_module["content-card__content"], children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ContentCard_module["content-card__content-inner"], children: [
|
|
76
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: ContentCard_module["content-card__body-region"], children: [
|
|
77
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: ContentCard_module["content-card__header"], children: [
|
|
78
|
+
isRenderable.isRenderable(titlePrefix) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: ContentCard_module["content-card__prefix"], children: titlePrefix }),
|
|
79
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
80
|
+
HeadingLevel,
|
|
81
|
+
{
|
|
82
|
+
id: titleId,
|
|
83
|
+
className: ContentCard_module["content-card__title"],
|
|
84
|
+
children: title
|
|
85
|
+
}
|
|
86
|
+
)
|
|
87
|
+
] }),
|
|
88
|
+
isRenderable.isRenderable(body) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn.cn(ContentCard_module["content-card__body"], "dds-prose"), children: body })
|
|
89
|
+
] }),
|
|
90
|
+
isRenderable.isRenderable(actions) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: ContentCard_module["content-card__actions"], children: actions })
|
|
91
|
+
] }) })
|
|
92
|
+
] })
|
|
93
|
+
}
|
|
94
|
+
);
|
|
95
|
+
};
|
|
96
|
+
exports.ContentCard = ContentCard;
|
|
97
|
+
//# sourceMappingURL=ContentCard.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContentCard.cjs","sources":["../../../src/components/ContentCard/ContentCard.tsx"],"sourcesContent":["import { useId } from 'react';\nimport type { CSSProperties, ElementType, ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\nimport { isRenderable } from '../../utils/isRenderable';\nimport { elevationStyles } from '../../styles/utils';\nimport styles from './ContentCard.module.css';\nimport type { ContentCardLogoBackground, ContentCardProps } from './ContentCard.types';\n\nconst logoBackgroundToken: Record<ContentCardLogoBackground, string> = {\n white: 'var(--color-semantic-surface-base)',\n 'sand-soft': 'var(--color-semantic-surface-neutral-soft)',\n 'sand-mid': 'var(--color-semantic-surface-neutral-mid)',\n 'sand-strong': 'var(--color-semantic-surface-neutral-strong)',\n 'pink-soft': 'var(--color-semantic-surface-primary-soft)',\n 'pink-mid': 'var(--color-semantic-surface-primary-mid)',\n 'pink-strong': 'var(--color-semantic-surface-primary-strong)',\n 'plum-soft': 'var(--color-semantic-surface-secondary-soft)',\n 'plum-mid': 'var(--color-semantic-surface-secondary-mid)',\n 'plum-strong': 'var(--color-semantic-surface-secondary-strong)',\n};\n\nexport const ContentCard = ({\n media,\n mediaKind = 'image',\n mediaBackground,\n mediaWidth = '1/3',\n mediaPosition = 'start',\n titlePrefix,\n title,\n headingLevel = 'h3',\n body,\n actions,\n appearance = 'plain',\n as = 'article',\n className,\n ref,\n ...props\n}: ContentCardProps) => {\n const titleId = useId();\n const HeadingLevel = headingLevel;\n // Cast to ElementType so the constrained union of tags renders without ref/props conflicts.\n const Root = as as ElementType;\n const hasMedia = isRenderable(media);\n const ariaLabel = props['aria-label'];\n // Keep an explicit aria-labelledby; only the generated title fallback is suppressed for a\n // bare div or when an aria-label is provided.\n const ariaLabelledBy =\n props['aria-labelledby'] ?? (ariaLabel || as === 'div' ? undefined : titleId);\n\n return (\n <Root\n ref={ref}\n {...props}\n data-color-scheme=\"light\"\n className={cn(\n styles['content-card'],\n hasMedia && mediaWidth === '1/2' && styles['content-card--media-half'],\n hasMedia && mediaPosition === 'end' && styles['content-card--media-end'],\n appearance === 'border' && styles['content-card--border'],\n appearance === 'elevated' && styles['content-card--elevated'],\n appearance === 'elevated' && elevationStyles.elevationLow,\n className,\n )}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n >\n <div className={styles['content-card__layout']}>\n {hasMedia && (\n <div\n className={cn(\n styles['content-card__media'],\n mediaKind === 'logo'\n ? styles['content-card__media--logo']\n : styles['content-card__media--image'],\n )}\n style={\n mediaKind === 'logo' && mediaBackground != null\n ? ({\n '--_cc-logo-bg': logoBackgroundToken[mediaBackground],\n } as CSSProperties)\n : undefined\n }\n >\n <div className={styles['content-card__media-inner']}>{media}</div>\n </div>\n )}\n\n <div className={styles['content-card__content']}>\n <div className={styles['content-card__content-inner']}>\n <div className={styles['content-card__body-region']}>\n <div className={styles['content-card__header']}>\n {isRenderable(titlePrefix) && (\n <div className={styles['content-card__prefix']}>\n {titlePrefix}\n </div>\n )}\n <HeadingLevel\n id={titleId}\n className={styles['content-card__title']}\n >\n {title}\n </HeadingLevel>\n </div>\n {isRenderable(body) && (\n <div className={cn(styles['content-card__body'], 'dds-prose')}>\n {body}\n </div>\n )}\n </div>\n {isRenderable(actions) && (\n <div className={styles['content-card__actions']}>{actions}</div>\n )}\n </div>\n </div>\n </div>\n </Root>\n );\n};\n"],"names":["useId","isRenderable","jsx","cn","styles","elevationStyles","jsxs"],"mappings":";;;;;;;;AAQA,MAAM,sBAAiE;AAAA,EACnE,OAAO;AAAA,EACP,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,eAAe;AACnB;AAEO,MAAM,cAAc,CAAC;AAAA,EACxB;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,KAAK;AAAA,EACL;AAAA,EACA;AAAA,EACA,GAAG;AACP,MAAwB;AACpB,QAAM,UAAUA,MAAAA,MAAA;AAChB,QAAM,eAAe;AAErB,QAAM,OAAO;AACb,QAAM,WAAWC,aAAAA,aAAa,KAAK;AACnC,QAAM,YAAY,MAAM,YAAY;AAGpC,QAAM,iBACF,MAAM,iBAAiB,MAAM,aAAa,OAAO,QAAQ,SAAY;AAEzE,SACIC,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG;AAAA,MACC,GAAG;AAAA,MACJ,qBAAkB;AAAA,MAClB,WAAWC,GAAAA;AAAAA,QACPC,mBAAO,cAAc;AAAA,QACrB,YAAY,eAAe,SAASA,mBAAO,0BAA0B;AAAA,QACrE,YAAY,kBAAkB,SAASA,mBAAO,yBAAyB;AAAA,QACvE,eAAe,YAAYA,mBAAO,sBAAsB;AAAA,QACxD,eAAe,cAAcA,mBAAO,wBAAwB;AAAA,QAC5D,eAAe,cAAcC,MAAAA,gBAAgB;AAAA,QAC7C;AAAA,MAAA;AAAA,MAEJ,cAAY;AAAA,MACZ,mBAAiB;AAAA,MAEjB,UAAAC,2BAAAA,KAAC,OAAA,EAAI,WAAWF,mBAAO,sBAAsB,GACxC,UAAA;AAAA,QAAA,YACGF,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACG,WAAWC,GAAAA;AAAAA,cACPC,mBAAO,qBAAqB;AAAA,cAC5B,cAAc,SACRA,mBAAO,2BAA2B,IAClCA,mBAAO,4BAA4B;AAAA,YAAA;AAAA,YAE7C,OACI,cAAc,UAAU,mBAAmB,OACpC;AAAA,cACG,iBAAiB,oBAAoB,eAAe;AAAA,YAAA,IAExD;AAAA,YAGV,yCAAC,OAAA,EAAI,WAAWA,mBAAO,2BAA2B,GAAI,UAAA,MAAA,CAAM;AAAA,UAAA;AAAA,QAAA;AAAA,QAIpEF,2BAAAA,IAAC,OAAA,EAAI,WAAWE,mBAAO,uBAAuB,GAC1C,UAAAE,2BAAAA,KAAC,OAAA,EAAI,WAAWF,mBAAO,6BAA6B,GAChD,UAAA;AAAA,UAAAE,2BAAAA,KAAC,OAAA,EAAI,WAAWF,mBAAO,2BAA2B,GAC9C,UAAA;AAAA,YAAAE,2BAAAA,KAAC,OAAA,EAAI,WAAWF,mBAAO,sBAAsB,GACxC,UAAA;AAAA,cAAAH,aAAAA,aAAa,WAAW,KACrBC,2BAAAA,IAAC,OAAA,EAAI,WAAWE,mBAAO,sBAAsB,GACxC,UAAA,YAAA,CACL;AAAA,cAEJF,2BAAAA;AAAAA,gBAAC;AAAA,gBAAA;AAAA,kBACG,IAAI;AAAA,kBACJ,WAAWE,mBAAO,qBAAqB;AAAA,kBAEtC,UAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,YACL,GACJ;AAAA,YACCH,aAAAA,aAAa,IAAI,KACdC,+BAAC,OAAA,EAAI,WAAWC,MAAGC,mBAAO,oBAAoB,GAAG,WAAW,GACvD,UAAA,KAAA,CACL;AAAA,UAAA,GAER;AAAA,UACCH,aAAAA,aAAa,OAAO,KACjBC,2BAAAA,IAAC,SAAI,WAAWE,mBAAO,uBAAuB,GAAI,UAAA,QAAA,CAAQ;AAAA,QAAA,EAAA,CAElE,EAAA,CACJ;AAAA,MAAA,EAAA,CACJ;AAAA,IAAA;AAAA,EAAA;AAGZ;;"}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
@layer dds-base, dds-components;
|
|
2
|
+
|
|
3
|
+
@layer dds-components { @layer fallback, components; }
|
|
4
|
+
|
|
5
|
+
@layer dds-components.components{/*
|
|
6
|
+
* Content Card
|
|
7
|
+
*
|
|
8
|
+
* Container-driven layout: horizontal when the card is >= 40rem wide, vertical below.
|
|
9
|
+
* Title size responds to the CONTENT AREA width (its own container). Content padding
|
|
10
|
+
* responds to both the content-area width and the layout mode. Body size and inner
|
|
11
|
+
* gaps stay constant across sizes.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
._content-card_15yr0_10 {
|
|
15
|
+
display: flex;
|
|
16
|
+
flex-direction: column;
|
|
17
|
+
width: 100%;
|
|
18
|
+
min-width: 0;
|
|
19
|
+
/* Reset the base list-item margin when the root renders as <li>. */
|
|
20
|
+
margin: 0;
|
|
21
|
+
color: var(--color-semantic-foreground-default);
|
|
22
|
+
background-color: var(--color-semantic-surface-base);
|
|
23
|
+
border-radius: var(--radius-semantic-md);
|
|
24
|
+
/* Clips media corners to the card radius; the card's own box-shadow is not clipped. */
|
|
25
|
+
overflow: clip;
|
|
26
|
+
container-name: content-card;
|
|
27
|
+
container-type: inline-size;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
._content-card--border_15yr0_26 {
|
|
31
|
+
border: var(--borderwidth-semantic-xs) solid var(--color-semantic-border-neutral-base);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/* Layout wrapper: a descendant of the container so its direction can respond to card width. */
|
|
35
|
+
._content-card__layout_15yr0_31 {
|
|
36
|
+
display: flex;
|
|
37
|
+
flex: 1;
|
|
38
|
+
flex-direction: column;
|
|
39
|
+
width: 100%;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/* ─── Media ─── */
|
|
43
|
+
|
|
44
|
+
._content-card__media_15yr0_40 {
|
|
45
|
+
position: relative;
|
|
46
|
+
width: 100%;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
._content-card__media--image_15yr0_45 {
|
|
50
|
+
aspect-ratio: 21 / 9;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
._content-card__media--logo_15yr0_49 {
|
|
54
|
+
aspect-ratio: 21 / 9;
|
|
55
|
+
background-color: var(--_cc-logo-bg, var(--color-semantic-surface-neutral-mid));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/* Absolute inner fills the media box so content can't stretch the aspect ratio. */
|
|
59
|
+
._content-card__media-inner_15yr0_55 {
|
|
60
|
+
position: absolute;
|
|
61
|
+
inset: 0;
|
|
62
|
+
|
|
63
|
+
/* Descendant selector also reaches an <img> nested inside a <picture>. */
|
|
64
|
+
& :where(img, picture, video, svg, canvas) {
|
|
65
|
+
display: block;
|
|
66
|
+
width: 100%;
|
|
67
|
+
height: 100%;
|
|
68
|
+
object-fit: cover;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/* Logo sits in a centered 4:3 box and is contained within it. */
|
|
73
|
+
._content-card__media--logo_15yr0_49 ._content-card__media-inner_15yr0_55 {
|
|
74
|
+
display: flex;
|
|
75
|
+
align-items: center;
|
|
76
|
+
justify-content: center;
|
|
77
|
+
padding: var(--spacing-space-24);
|
|
78
|
+
|
|
79
|
+
& :where(img, picture, video, svg, canvas) {
|
|
80
|
+
width: auto;
|
|
81
|
+
height: 100%;
|
|
82
|
+
max-width: 100%;
|
|
83
|
+
aspect-ratio: 4 / 3;
|
|
84
|
+
object-fit: contain;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/* ─── Content ─── */
|
|
89
|
+
|
|
90
|
+
._content-card__content_15yr0_86 {
|
|
91
|
+
display: flex;
|
|
92
|
+
flex: 1 1 auto;
|
|
93
|
+
flex-direction: column;
|
|
94
|
+
min-width: 0;
|
|
95
|
+
container-name: content-card-content;
|
|
96
|
+
container-type: inline-size;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/* Padded stack: a descendant of the content container so padding can respond to content width. */
|
|
100
|
+
._content-card__content-inner_15yr0_96 {
|
|
101
|
+
display: flex;
|
|
102
|
+
flex: 1;
|
|
103
|
+
flex-direction: column;
|
|
104
|
+
gap: var(--spacing-space-24);
|
|
105
|
+
/* Vertical layout, small content width. */
|
|
106
|
+
padding: var(--spacing-space-20) var(--spacing-space-20) var(--spacing-space-32);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
._content-card__body-region_15yr0_105 {
|
|
110
|
+
display: flex;
|
|
111
|
+
flex-direction: column;
|
|
112
|
+
gap: var(--spacing-space-20);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
._content-card__header_15yr0_111 {
|
|
116
|
+
display: flex;
|
|
117
|
+
flex-direction: column;
|
|
118
|
+
gap: var(--spacing-space-4);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
._content-card__prefix_15yr0_117 {
|
|
122
|
+
align-self: flex-start;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
._content-card__title_15yr0_121 {
|
|
126
|
+
margin: 0;
|
|
127
|
+
color: var(--color-semantic-foreground-default);
|
|
128
|
+
font: var(--typography-heading-sm);
|
|
129
|
+
text-wrap: balance;
|
|
130
|
+
overflow-wrap: break-word;
|
|
131
|
+
hyphens: auto;
|
|
132
|
+
/* Only hyphenate words of >= 12 chars (min 6 before / 3 after the break). */
|
|
133
|
+
hyphenate-limit-chars: 12 6 3;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
._content-card__body_15yr0_105 {
|
|
137
|
+
margin: 0;
|
|
138
|
+
color: var(--color-semantic-foreground-default);
|
|
139
|
+
font: var(--typography-body-md);
|
|
140
|
+
text-wrap: pretty;
|
|
141
|
+
overflow-wrap: break-word;
|
|
142
|
+
hyphens: auto;
|
|
143
|
+
/* Only hyphenate words of >= 12 chars (min 6 before / 3 after the break). */
|
|
144
|
+
hyphenate-limit-chars: 12 6 3;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
._content-card__body_15yr0_105 p {
|
|
148
|
+
margin: 0;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
._content-card__body_15yr0_105 p + p {
|
|
152
|
+
margin-top: var(--spacing-space-12);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
._content-card__actions_15yr0_151 {
|
|
156
|
+
display: flex;
|
|
157
|
+
flex-direction: row;
|
|
158
|
+
flex-wrap: wrap;
|
|
159
|
+
align-items: flex-start;
|
|
160
|
+
gap: var(--spacing-space-8);
|
|
161
|
+
/* Vertical mode only: keeps actions at the bottom when the card is taller than its content
|
|
162
|
+
(e.g. equal-height grid). Reset in the horizontal layout below. */
|
|
163
|
+
margin-top: auto;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/* ─── Content-area size steps (vertical paddings; based on content width) ─── */
|
|
167
|
+
|
|
168
|
+
@container content-card-content (min-width: 24rem) {
|
|
169
|
+
._content-card__content-inner_15yr0_96 {
|
|
170
|
+
padding: var(--spacing-space-24) var(--spacing-space-40) var(--spacing-space-40);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
._content-card__title_15yr0_121 {
|
|
174
|
+
font: var(--typography-heading-md);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
@container content-card-content (min-width: 36rem) {
|
|
179
|
+
._content-card__content-inner_15yr0_96 {
|
|
180
|
+
padding: var(--spacing-space-32) var(--spacing-space-64) var(--spacing-space-48);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/* ─── Horizontal layout (card wide enough) ─── */
|
|
185
|
+
|
|
186
|
+
@container content-card (min-width: 40rem) {
|
|
187
|
+
._content-card__layout_15yr0_31 {
|
|
188
|
+
flex-direction: row;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
._content-card--media-end_15yr0_187 ._content-card__layout_15yr0_31 {
|
|
192
|
+
flex-direction: row-reverse;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
._content-card__media_15yr0_40 {
|
|
196
|
+
align-self: stretch;
|
|
197
|
+
/* Non-shrinking basis so mediaWidth is honoured even next to long content. */
|
|
198
|
+
flex: 0 0 33.3333%;
|
|
199
|
+
aspect-ratio: auto;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
._content-card--media-half_15yr0_198 ._content-card__media_15yr0_40 {
|
|
203
|
+
flex-basis: 50%;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/* Content is vertically centered against the media in the horizontal layout. */
|
|
207
|
+
._content-card__content_15yr0_86 {
|
|
208
|
+
align-self: center;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
._content-card__actions_15yr0_151 {
|
|
212
|
+
margin-top: 0;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/* Minimum media height follows a 4:3 shape of its own width. */
|
|
216
|
+
._content-card__media--image_15yr0_45::before {
|
|
217
|
+
content: '';
|
|
218
|
+
display: block;
|
|
219
|
+
padding-top: 75%;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/* Horizontal paddings override the vertical ones, still stepping by content width. */
|
|
223
|
+
._content-card__content-inner_15yr0_96 {
|
|
224
|
+
padding: var(--spacing-space-32) var(--spacing-space-20);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
@container content-card-content (min-width: 24rem) {
|
|
228
|
+
._content-card__content-inner_15yr0_96 {
|
|
229
|
+
padding: var(--spacing-space-40);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
@container content-card-content (min-width: 36rem) {
|
|
234
|
+
._content-card__content-inner_15yr0_96 {
|
|
235
|
+
padding: var(--spacing-space-48) var(--spacing-space-64);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/* ─── Forced colors ─── */
|
|
241
|
+
|
|
242
|
+
@media (forced-colors: active) {
|
|
243
|
+
._content-card_15yr0_10 {
|
|
244
|
+
border: var(--borderwidth-semantic-xs) solid CanvasText;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
._content-card--elevated_15yr0_243 {
|
|
248
|
+
box-shadow: none;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Do not edit directly, this file was auto-generated.
|
|
254
|
+
*/ }
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { ContentCardProps } from './ContentCard.types';
|
|
2
|
+
export declare const ContentCard: ({ media, mediaKind, mediaBackground, mediaWidth, mediaPosition, titlePrefix, title, headingLevel, body, actions, appearance, as, className, ref, ...props }: ContentCardProps) => import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
//# sourceMappingURL=ContentCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContentCard.d.ts","sourceRoot":"","sources":["../../../src/components/ContentCard/ContentCard.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAA6B,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAevF,eAAO,MAAM,WAAW,GAAI,6JAgBzB,gBAAgB,4CAgFlB,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useId } from "react";
|
|
3
|
+
import { elevationStyles } from "../../styles/utils/index.js";
|
|
4
|
+
import styles from "./ContentCard.module.css.js";
|
|
5
|
+
import { isRenderable } from "../../utils/isRenderable/isRenderable.js";
|
|
6
|
+
import { cn } from "../../utils/cn/cn.js";
|
|
7
|
+
const logoBackgroundToken = {
|
|
8
|
+
white: "var(--color-semantic-surface-base)",
|
|
9
|
+
"sand-soft": "var(--color-semantic-surface-neutral-soft)",
|
|
10
|
+
"sand-mid": "var(--color-semantic-surface-neutral-mid)",
|
|
11
|
+
"sand-strong": "var(--color-semantic-surface-neutral-strong)",
|
|
12
|
+
"pink-soft": "var(--color-semantic-surface-primary-soft)",
|
|
13
|
+
"pink-mid": "var(--color-semantic-surface-primary-mid)",
|
|
14
|
+
"pink-strong": "var(--color-semantic-surface-primary-strong)",
|
|
15
|
+
"plum-soft": "var(--color-semantic-surface-secondary-soft)",
|
|
16
|
+
"plum-mid": "var(--color-semantic-surface-secondary-mid)",
|
|
17
|
+
"plum-strong": "var(--color-semantic-surface-secondary-strong)"
|
|
18
|
+
};
|
|
19
|
+
const ContentCard = ({
|
|
20
|
+
media,
|
|
21
|
+
mediaKind = "image",
|
|
22
|
+
mediaBackground,
|
|
23
|
+
mediaWidth = "1/3",
|
|
24
|
+
mediaPosition = "start",
|
|
25
|
+
titlePrefix,
|
|
26
|
+
title,
|
|
27
|
+
headingLevel = "h3",
|
|
28
|
+
body,
|
|
29
|
+
actions,
|
|
30
|
+
appearance = "plain",
|
|
31
|
+
as = "article",
|
|
32
|
+
className,
|
|
33
|
+
ref,
|
|
34
|
+
...props
|
|
35
|
+
}) => {
|
|
36
|
+
const titleId = useId();
|
|
37
|
+
const HeadingLevel = headingLevel;
|
|
38
|
+
const Root = as;
|
|
39
|
+
const hasMedia = isRenderable(media);
|
|
40
|
+
const ariaLabel = props["aria-label"];
|
|
41
|
+
const ariaLabelledBy = props["aria-labelledby"] ?? (ariaLabel || as === "div" ? void 0 : titleId);
|
|
42
|
+
return /* @__PURE__ */ jsx(
|
|
43
|
+
Root,
|
|
44
|
+
{
|
|
45
|
+
ref,
|
|
46
|
+
...props,
|
|
47
|
+
"data-color-scheme": "light",
|
|
48
|
+
className: cn(
|
|
49
|
+
styles["content-card"],
|
|
50
|
+
hasMedia && mediaWidth === "1/2" && styles["content-card--media-half"],
|
|
51
|
+
hasMedia && mediaPosition === "end" && styles["content-card--media-end"],
|
|
52
|
+
appearance === "border" && styles["content-card--border"],
|
|
53
|
+
appearance === "elevated" && styles["content-card--elevated"],
|
|
54
|
+
appearance === "elevated" && elevationStyles.elevationLow,
|
|
55
|
+
className
|
|
56
|
+
),
|
|
57
|
+
"aria-label": ariaLabel,
|
|
58
|
+
"aria-labelledby": ariaLabelledBy,
|
|
59
|
+
children: /* @__PURE__ */ jsxs("div", { className: styles["content-card__layout"], children: [
|
|
60
|
+
hasMedia && /* @__PURE__ */ jsx(
|
|
61
|
+
"div",
|
|
62
|
+
{
|
|
63
|
+
className: cn(
|
|
64
|
+
styles["content-card__media"],
|
|
65
|
+
mediaKind === "logo" ? styles["content-card__media--logo"] : styles["content-card__media--image"]
|
|
66
|
+
),
|
|
67
|
+
style: mediaKind === "logo" && mediaBackground != null ? {
|
|
68
|
+
"--_cc-logo-bg": logoBackgroundToken[mediaBackground]
|
|
69
|
+
} : void 0,
|
|
70
|
+
children: /* @__PURE__ */ jsx("div", { className: styles["content-card__media-inner"], children: media })
|
|
71
|
+
}
|
|
72
|
+
),
|
|
73
|
+
/* @__PURE__ */ jsx("div", { className: styles["content-card__content"], children: /* @__PURE__ */ jsxs("div", { className: styles["content-card__content-inner"], children: [
|
|
74
|
+
/* @__PURE__ */ jsxs("div", { className: styles["content-card__body-region"], children: [
|
|
75
|
+
/* @__PURE__ */ jsxs("div", { className: styles["content-card__header"], children: [
|
|
76
|
+
isRenderable(titlePrefix) && /* @__PURE__ */ jsx("div", { className: styles["content-card__prefix"], children: titlePrefix }),
|
|
77
|
+
/* @__PURE__ */ jsx(
|
|
78
|
+
HeadingLevel,
|
|
79
|
+
{
|
|
80
|
+
id: titleId,
|
|
81
|
+
className: styles["content-card__title"],
|
|
82
|
+
children: title
|
|
83
|
+
}
|
|
84
|
+
)
|
|
85
|
+
] }),
|
|
86
|
+
isRenderable(body) && /* @__PURE__ */ jsx("div", { className: cn(styles["content-card__body"], "dds-prose"), children: body })
|
|
87
|
+
] }),
|
|
88
|
+
isRenderable(actions) && /* @__PURE__ */ jsx("div", { className: styles["content-card__actions"], children: actions })
|
|
89
|
+
] }) })
|
|
90
|
+
] })
|
|
91
|
+
}
|
|
92
|
+
);
|
|
93
|
+
};
|
|
94
|
+
export {
|
|
95
|
+
ContentCard
|
|
96
|
+
};
|
|
97
|
+
//# sourceMappingURL=ContentCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContentCard.js","sources":["../../../src/components/ContentCard/ContentCard.tsx"],"sourcesContent":["import { useId } from 'react';\nimport type { CSSProperties, ElementType, ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\nimport { isRenderable } from '../../utils/isRenderable';\nimport { elevationStyles } from '../../styles/utils';\nimport styles from './ContentCard.module.css';\nimport type { ContentCardLogoBackground, ContentCardProps } from './ContentCard.types';\n\nconst logoBackgroundToken: Record<ContentCardLogoBackground, string> = {\n white: 'var(--color-semantic-surface-base)',\n 'sand-soft': 'var(--color-semantic-surface-neutral-soft)',\n 'sand-mid': 'var(--color-semantic-surface-neutral-mid)',\n 'sand-strong': 'var(--color-semantic-surface-neutral-strong)',\n 'pink-soft': 'var(--color-semantic-surface-primary-soft)',\n 'pink-mid': 'var(--color-semantic-surface-primary-mid)',\n 'pink-strong': 'var(--color-semantic-surface-primary-strong)',\n 'plum-soft': 'var(--color-semantic-surface-secondary-soft)',\n 'plum-mid': 'var(--color-semantic-surface-secondary-mid)',\n 'plum-strong': 'var(--color-semantic-surface-secondary-strong)',\n};\n\nexport const ContentCard = ({\n media,\n mediaKind = 'image',\n mediaBackground,\n mediaWidth = '1/3',\n mediaPosition = 'start',\n titlePrefix,\n title,\n headingLevel = 'h3',\n body,\n actions,\n appearance = 'plain',\n as = 'article',\n className,\n ref,\n ...props\n}: ContentCardProps) => {\n const titleId = useId();\n const HeadingLevel = headingLevel;\n // Cast to ElementType so the constrained union of tags renders without ref/props conflicts.\n const Root = as as ElementType;\n const hasMedia = isRenderable(media);\n const ariaLabel = props['aria-label'];\n // Keep an explicit aria-labelledby; only the generated title fallback is suppressed for a\n // bare div or when an aria-label is provided.\n const ariaLabelledBy =\n props['aria-labelledby'] ?? (ariaLabel || as === 'div' ? undefined : titleId);\n\n return (\n <Root\n ref={ref}\n {...props}\n data-color-scheme=\"light\"\n className={cn(\n styles['content-card'],\n hasMedia && mediaWidth === '1/2' && styles['content-card--media-half'],\n hasMedia && mediaPosition === 'end' && styles['content-card--media-end'],\n appearance === 'border' && styles['content-card--border'],\n appearance === 'elevated' && styles['content-card--elevated'],\n appearance === 'elevated' && elevationStyles.elevationLow,\n className,\n )}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n >\n <div className={styles['content-card__layout']}>\n {hasMedia && (\n <div\n className={cn(\n styles['content-card__media'],\n mediaKind === 'logo'\n ? styles['content-card__media--logo']\n : styles['content-card__media--image'],\n )}\n style={\n mediaKind === 'logo' && mediaBackground != null\n ? ({\n '--_cc-logo-bg': logoBackgroundToken[mediaBackground],\n } as CSSProperties)\n : undefined\n }\n >\n <div className={styles['content-card__media-inner']}>{media}</div>\n </div>\n )}\n\n <div className={styles['content-card__content']}>\n <div className={styles['content-card__content-inner']}>\n <div className={styles['content-card__body-region']}>\n <div className={styles['content-card__header']}>\n {isRenderable(titlePrefix) && (\n <div className={styles['content-card__prefix']}>\n {titlePrefix}\n </div>\n )}\n <HeadingLevel\n id={titleId}\n className={styles['content-card__title']}\n >\n {title}\n </HeadingLevel>\n </div>\n {isRenderable(body) && (\n <div className={cn(styles['content-card__body'], 'dds-prose')}>\n {body}\n </div>\n )}\n </div>\n {isRenderable(actions) && (\n <div className={styles['content-card__actions']}>{actions}</div>\n )}\n </div>\n </div>\n </div>\n </Root>\n );\n};\n"],"names":[],"mappings":";;;;;;AAQA,MAAM,sBAAiE;AAAA,EACnE,OAAO;AAAA,EACP,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,eAAe;AACnB;AAEO,MAAM,cAAc,CAAC;AAAA,EACxB;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,KAAK;AAAA,EACL;AAAA,EACA;AAAA,EACA,GAAG;AACP,MAAwB;AACpB,QAAM,UAAU,MAAA;AAChB,QAAM,eAAe;AAErB,QAAM,OAAO;AACb,QAAM,WAAW,aAAa,KAAK;AACnC,QAAM,YAAY,MAAM,YAAY;AAGpC,QAAM,iBACF,MAAM,iBAAiB,MAAM,aAAa,OAAO,QAAQ,SAAY;AAEzE,SACI;AAAA,IAAC;AAAA,IAAA;AAAA,MACG;AAAA,MACC,GAAG;AAAA,MACJ,qBAAkB;AAAA,MAClB,WAAW;AAAA,QACP,OAAO,cAAc;AAAA,QACrB,YAAY,eAAe,SAAS,OAAO,0BAA0B;AAAA,QACrE,YAAY,kBAAkB,SAAS,OAAO,yBAAyB;AAAA,QACvE,eAAe,YAAY,OAAO,sBAAsB;AAAA,QACxD,eAAe,cAAc,OAAO,wBAAwB;AAAA,QAC5D,eAAe,cAAc,gBAAgB;AAAA,QAC7C;AAAA,MAAA;AAAA,MAEJ,cAAY;AAAA,MACZ,mBAAiB;AAAA,MAEjB,UAAA,qBAAC,OAAA,EAAI,WAAW,OAAO,sBAAsB,GACxC,UAAA;AAAA,QAAA,YACG;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,WAAW;AAAA,cACP,OAAO,qBAAqB;AAAA,cAC5B,cAAc,SACR,OAAO,2BAA2B,IAClC,OAAO,4BAA4B;AAAA,YAAA;AAAA,YAE7C,OACI,cAAc,UAAU,mBAAmB,OACpC;AAAA,cACG,iBAAiB,oBAAoB,eAAe;AAAA,YAAA,IAExD;AAAA,YAGV,8BAAC,OAAA,EAAI,WAAW,OAAO,2BAA2B,GAAI,UAAA,MAAA,CAAM;AAAA,UAAA;AAAA,QAAA;AAAA,QAIpE,oBAAC,OAAA,EAAI,WAAW,OAAO,uBAAuB,GAC1C,UAAA,qBAAC,OAAA,EAAI,WAAW,OAAO,6BAA6B,GAChD,UAAA;AAAA,UAAA,qBAAC,OAAA,EAAI,WAAW,OAAO,2BAA2B,GAC9C,UAAA;AAAA,YAAA,qBAAC,OAAA,EAAI,WAAW,OAAO,sBAAsB,GACxC,UAAA;AAAA,cAAA,aAAa,WAAW,KACrB,oBAAC,OAAA,EAAI,WAAW,OAAO,sBAAsB,GACxC,UAAA,YAAA,CACL;AAAA,cAEJ;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACG,IAAI;AAAA,kBACJ,WAAW,OAAO,qBAAqB;AAAA,kBAEtC,UAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,YACL,GACJ;AAAA,YACC,aAAa,IAAI,KACd,oBAAC,OAAA,EAAI,WAAW,GAAG,OAAO,oBAAoB,GAAG,WAAW,GACvD,UAAA,KAAA,CACL;AAAA,UAAA,GAER;AAAA,UACC,aAAa,OAAO,KACjB,oBAAC,SAAI,WAAW,OAAO,uBAAuB,GAAI,UAAA,QAAA,CAAQ;AAAA,QAAA,EAAA,CAElE,EAAA,CACJ;AAAA,MAAA,EAAA,CACJ;AAAA,IAAA;AAAA,EAAA;AAGZ;"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require('./ContentCard.css');
|
|
2
|
+
"use strict";
|
|
3
|
+
const styles = {
|
|
4
|
+
"content-card": "_content-card_15yr0_10",
|
|
5
|
+
"content-card--border": "_content-card--border_15yr0_26",
|
|
6
|
+
"content-card__layout": "_content-card__layout_15yr0_31",
|
|
7
|
+
"content-card__media": "_content-card__media_15yr0_40",
|
|
8
|
+
"content-card__media--image": "_content-card__media--image_15yr0_45",
|
|
9
|
+
"content-card__media--logo": "_content-card__media--logo_15yr0_49",
|
|
10
|
+
"content-card__media-inner": "_content-card__media-inner_15yr0_55",
|
|
11
|
+
"content-card__content": "_content-card__content_15yr0_86",
|
|
12
|
+
"content-card__content-inner": "_content-card__content-inner_15yr0_96",
|
|
13
|
+
"content-card__body-region": "_content-card__body-region_15yr0_105",
|
|
14
|
+
"content-card__header": "_content-card__header_15yr0_111",
|
|
15
|
+
"content-card__prefix": "_content-card__prefix_15yr0_117",
|
|
16
|
+
"content-card__title": "_content-card__title_15yr0_121",
|
|
17
|
+
"content-card__body": "_content-card__body_15yr0_105",
|
|
18
|
+
"content-card__actions": "_content-card__actions_15yr0_151",
|
|
19
|
+
"content-card--media-end": "_content-card--media-end_15yr0_187",
|
|
20
|
+
"content-card--media-half": "_content-card--media-half_15yr0_198",
|
|
21
|
+
"content-card--elevated": "_content-card--elevated_15yr0_243"
|
|
22
|
+
};
|
|
23
|
+
module.exports = styles;
|
|
24
|
+
//# sourceMappingURL=ContentCard.module.css.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContentCard.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import './ContentCard.css';
|
|
2
|
+
const styles = {
|
|
3
|
+
"content-card": "_content-card_15yr0_10",
|
|
4
|
+
"content-card--border": "_content-card--border_15yr0_26",
|
|
5
|
+
"content-card__layout": "_content-card__layout_15yr0_31",
|
|
6
|
+
"content-card__media": "_content-card__media_15yr0_40",
|
|
7
|
+
"content-card__media--image": "_content-card__media--image_15yr0_45",
|
|
8
|
+
"content-card__media--logo": "_content-card__media--logo_15yr0_49",
|
|
9
|
+
"content-card__media-inner": "_content-card__media-inner_15yr0_55",
|
|
10
|
+
"content-card__content": "_content-card__content_15yr0_86",
|
|
11
|
+
"content-card__content-inner": "_content-card__content-inner_15yr0_96",
|
|
12
|
+
"content-card__body-region": "_content-card__body-region_15yr0_105",
|
|
13
|
+
"content-card__header": "_content-card__header_15yr0_111",
|
|
14
|
+
"content-card__prefix": "_content-card__prefix_15yr0_117",
|
|
15
|
+
"content-card__title": "_content-card__title_15yr0_121",
|
|
16
|
+
"content-card__body": "_content-card__body_15yr0_105",
|
|
17
|
+
"content-card__actions": "_content-card__actions_15yr0_151",
|
|
18
|
+
"content-card--media-end": "_content-card--media-end_15yr0_187",
|
|
19
|
+
"content-card--media-half": "_content-card--media-half_15yr0_198",
|
|
20
|
+
"content-card--elevated": "_content-card--elevated_15yr0_243"
|
|
21
|
+
};
|
|
22
|
+
export {
|
|
23
|
+
styles as default
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=ContentCard.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContentCard.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { ComponentPropsWithRef, ReactNode } from 'react';
|
|
2
|
+
export type ContentCardHeadingLevel = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
|
|
3
|
+
export type ContentCardMediaKind = 'image' | 'logo';
|
|
4
|
+
export type ContentCardMediaWidth = '1/3' | '1/2';
|
|
5
|
+
export type ContentCardMediaPosition = 'start' | 'end';
|
|
6
|
+
export type ContentCardAppearance = 'plain' | 'border' | 'elevated';
|
|
7
|
+
/**
|
|
8
|
+
* Approved logo-area background colours. Maps to DNA surface tokens; CMS names in
|
|
9
|
+
* parentheses: `white` (White), `sand-*` (Sand / SandE01 / SandE02),
|
|
10
|
+
* `pink-*` (Pink / PinkE01 / PinkE02), `plum-*` (Plum / PlumE01 / PlumE02).
|
|
11
|
+
*/
|
|
12
|
+
export type ContentCardLogoBackground = 'white' | 'sand-soft' | 'sand-mid' | 'sand-strong' | 'pink-soft' | 'pink-mid' | 'pink-strong' | 'plum-soft' | 'plum-mid' | 'plum-strong';
|
|
13
|
+
type ContentCardBaseProps = {
|
|
14
|
+
/**
|
|
15
|
+
* Optional media slot (image or logo). The client renders the element and owns
|
|
16
|
+
* `alt`, loading, and optimisation (for example `next/image`). Mark decorative
|
|
17
|
+
* images with an empty `alt`.
|
|
18
|
+
*/
|
|
19
|
+
readonly media?: ReactNode;
|
|
20
|
+
/**
|
|
21
|
+
* How the media area is rendered. `logo` centres the media in a 4:3 box over a
|
|
22
|
+
* filled background; `image` fills the area. Ignored when `media` is omitted.
|
|
23
|
+
* @default 'image'
|
|
24
|
+
*/
|
|
25
|
+
readonly mediaKind?: ContentCardMediaKind;
|
|
26
|
+
/**
|
|
27
|
+
* Logo-area background colour, limited to approved DNA surface tokens. Only used
|
|
28
|
+
* with `mediaKind="logo"`; defaults to `sand-mid` when omitted.
|
|
29
|
+
*/
|
|
30
|
+
readonly mediaBackground?: ContentCardLogoBackground;
|
|
31
|
+
/**
|
|
32
|
+
* Media width in the horizontal layout (1/3 or 1/2 of the card). Ignored in the
|
|
33
|
+
* vertical layout, where media is always full width.
|
|
34
|
+
* @default '1/3'
|
|
35
|
+
*/
|
|
36
|
+
readonly mediaWidth?: ContentCardMediaWidth;
|
|
37
|
+
/**
|
|
38
|
+
* Media side in the horizontal layout (logical, RTL-safe). In the vertical
|
|
39
|
+
* layout media is always placed above the content.
|
|
40
|
+
* @default 'start'
|
|
41
|
+
*/
|
|
42
|
+
readonly mediaPosition?: ContentCardMediaPosition;
|
|
43
|
+
/**
|
|
44
|
+
* Optional slot above the title for a single small element (for example a
|
|
45
|
+
* `Label`; intended uses: Label, Timestamp, Pretitle).
|
|
46
|
+
*/
|
|
47
|
+
readonly titlePrefix?: ReactNode;
|
|
48
|
+
/** Card title. Required. */
|
|
49
|
+
readonly title: ReactNode;
|
|
50
|
+
/**
|
|
51
|
+
* HTML heading level for the title. The consumer owns the document outline.
|
|
52
|
+
* @default 'h3'
|
|
53
|
+
*/
|
|
54
|
+
readonly headingLevel?: ContentCardHeadingLevel;
|
|
55
|
+
/**
|
|
56
|
+
* Optional body content. Wrap rich text so it can adopt `dds-prose` styling;
|
|
57
|
+
* pass React nodes rather than HTML strings.
|
|
58
|
+
*/
|
|
59
|
+
readonly body?: ReactNode;
|
|
60
|
+
/**
|
|
61
|
+
* Optional actions (0..n `Button`/`IconButton` elements). Laid out in a row that
|
|
62
|
+
* wraps to a column when there is not enough width.
|
|
63
|
+
*/
|
|
64
|
+
readonly actions?: ReactNode;
|
|
65
|
+
/**
|
|
66
|
+
* Card surface treatment. The card always establishes a light colour scheme
|
|
67
|
+
* for its light surface, regardless of the parent scheme.
|
|
68
|
+
* @default 'plain'
|
|
69
|
+
*/
|
|
70
|
+
readonly appearance?: ContentCardAppearance;
|
|
71
|
+
};
|
|
72
|
+
export interface ContentCardArticleProps extends ContentCardBaseProps, Omit<ComponentPropsWithRef<'article'>, 'title' | 'children'> {
|
|
73
|
+
/**
|
|
74
|
+
* Root element (and role) to render. Use `li` for cards inside a `ul`/`ol`
|
|
75
|
+
* collection, `section` for a standalone page region (becomes a landmark, use
|
|
76
|
+
* sparingly), or `div` when a surrounding element already provides the
|
|
77
|
+
* semantics. The title is still linked as the accessible name via
|
|
78
|
+
* `aria-labelledby` (when not rendering as a generic div).
|
|
79
|
+
* @default 'article'
|
|
80
|
+
*/
|
|
81
|
+
readonly as?: 'article';
|
|
82
|
+
}
|
|
83
|
+
export interface ContentCardLiProps extends ContentCardBaseProps, Omit<ComponentPropsWithRef<'li'>, 'title' | 'children'> {
|
|
84
|
+
readonly as: 'li';
|
|
85
|
+
}
|
|
86
|
+
export interface ContentCardSectionProps extends ContentCardBaseProps, Omit<ComponentPropsWithRef<'section'>, 'title' | 'children'> {
|
|
87
|
+
readonly as: 'section';
|
|
88
|
+
}
|
|
89
|
+
export interface ContentCardDivProps extends ContentCardBaseProps, Omit<ComponentPropsWithRef<'div'>, 'title' | 'children'> {
|
|
90
|
+
readonly as: 'div';
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Props for the Content card. The `as` prop selects the root element and narrows
|
|
94
|
+
* the element-specific HTML attributes accordingly.
|
|
95
|
+
*/
|
|
96
|
+
export type ContentCardProps = ContentCardArticleProps | ContentCardLiProps | ContentCardSectionProps | ContentCardDivProps;
|
|
97
|
+
/** Allowed root elements, derived from the props union. */
|
|
98
|
+
export type ContentCardElement = NonNullable<ContentCardProps['as']>;
|
|
99
|
+
export {};
|
|
100
|
+
//# sourceMappingURL=ContentCard.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContentCard.types.d.ts","sourceRoot":"","sources":["../../../src/components/ContentCard/ContentCard.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE9D,MAAM,MAAM,uBAAuB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC9E,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,MAAM,CAAC;AACpD,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,KAAK,CAAC;AAClD,MAAM,MAAM,wBAAwB,GAAG,OAAO,GAAG,KAAK,CAAC;AACvD,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEpE;;;;GAIG;AACH,MAAM,MAAM,yBAAyB,GAC/B,OAAO,GACP,WAAW,GACX,UAAU,GACV,aAAa,GACb,WAAW,GACX,UAAU,GACV,aAAa,GACb,WAAW,GACX,UAAU,GACV,aAAa,CAAC;AAEpB,KAAK,oBAAoB,GAAG;IACxB;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,oBAAoB,CAAC;IAC1C;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,yBAAyB,CAAC;IACrD;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,qBAAqB,CAAC;IAC5C;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,wBAAwB,CAAC;IAClD;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;IACjC,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,uBAAuB,CAAC;IAChD;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,qBAAqB,CAAC;CAC/C,CAAC;AAEF,MAAM,WAAW,uBACb,SAAQ,oBAAoB,EAAE,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAC1F;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,kBACb,SAAQ,oBAAoB,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IACrF,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,uBACb,SAAQ,oBAAoB,EAAE,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAC1F,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;CAC1B;AAED,MAAM,WAAW,mBACb,SAAQ,oBAAoB,EAAE,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IACtF,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GACtB,uBAAuB,GACvB,kBAAkB,GAClB,uBAAuB,GACvB,mBAAmB,CAAC;AAE1B,2DAA2D;AAC3D,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC"}
|