@roadlittledawn/docs-design-system-react 0.11.1 → 0.12.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/USAGE.md CHANGED
@@ -132,32 +132,59 @@ import { Card } from "@roadlittledawn/docs-design-system-react";
132
132
  | `titleColor` | `"blue" \| "green" \| "purple" \| "red" \| "yellow" \| "gray"` | `"gray"` | Color of the title text |
133
133
  | `backgroundColor` | `"blue" \| "green" \| "purple" \| "red" \| "yellow" \| "gray" \| "white"` | `"white"` | Background color of the card |
134
134
  | `href` | `string` | — | Optional link URL. When provided, the entire card becomes clickable |
135
+ | `icon` | `ReactNode` | — | Optional icon to display. Pass a rendered icon component. In MDX, the consuming site's component map resolves string names to rendered components before passing here. |
136
+ | `iconPlacement` | `"left" \| "top-left" \| "top-center"` | `"top-left"` | Where to place the icon: vertically centered on the left, above content flush left, or above content centered |
137
+ | `showArrow` | `boolean` | `false` | Show an animated arrow in the lower-right corner to signal the card is navigable. Best used with `href`. |
135
138
  | `children` | `ReactNode` | — | Card content |
136
139
  | `className` | `string` | `""` | Additional CSS classes |
137
140
 
138
141
  ### Examples
139
142
 
140
143
  ```tsx
141
- {
142
- /* Basic card */
143
- }
144
+ {/* Basic card */}
144
145
  <Card title="Getting Started">
145
146
  Learn the basics of using this documentation system.
146
- </Card>;
147
+ </Card>
147
148
 
148
- {
149
- /* Clickable card */
150
- }
151
- <Card title="API Reference" href="/docs/api">
152
- Complete reference for all available components.
153
- </Card>;
149
+ {/* Clickable card with animated arrow */}
150
+ <Card title="Get Started" href="/docs/quickstart" showArrow>
151
+ Follow the quickstart guide to set up in minutes.
152
+ </Card>
154
153
 
155
- {
156
- /* Colored background */
157
- }
154
+ {/* Card with icon left (vertically centered beside content) */}
155
+ <Card title="Documentation" icon={<YourIcon />} iconPlacement="left">
156
+ Read guides, tutorials, and API references.
157
+ </Card>
158
+
159
+ {/* Card with icon top-center */}
160
+ <Card title="Documentation" icon={<YourIcon />} iconPlacement="top-center">
161
+ Read guides, tutorials, and API references.
162
+ </Card>
163
+
164
+ {/* Colored background */}
158
165
  <Card title="New Feature" titleColor="blue" backgroundColor="blue">
159
166
  Check out our latest component additions.
160
- </Card>;
167
+ </Card>
168
+ ```
169
+
170
+ ### Icon usage in MDX
171
+
172
+ In MDX files the `icon` prop is typically a string name (`icon="book"`). The consuming site's MDX component map is responsible for resolving strings to rendered icon components:
173
+
174
+ ```tsx
175
+ // In your MDX components config:
176
+ import { YourBookIcon, YourRocketIcon } from 'your-icon-library';
177
+
178
+ const iconMap: Record<string, React.ComponentType> = {
179
+ book: YourBookIcon,
180
+ rocket: YourRocketIcon,
181
+ };
182
+
183
+ // Wrap Card in your MDX components map:
184
+ Card: ({ icon, ...props }) => {
185
+ const IconComp = typeof icon === 'string' ? iconMap[icon] : null;
186
+ return <DdsCard icon={IconComp ? <IconComp /> : icon} {...props} />;
187
+ }
161
188
  ```
162
189
 
163
190
  ---
@@ -14,9 +14,29 @@ export interface CardProps {
14
14
  backgroundColor?: "blue" | "green" | "purple" | "red" | "yellow" | "gray" | "white";
15
15
  /** Optional link URL. When provided, the entire card becomes clickable */
16
16
  href?: string;
17
+ /**
18
+ * Optional icon to display. Pass a rendered icon component (e.g. `<YourIcon />`).
19
+ * In MDX, the consuming site's component map resolves icon name strings to rendered
20
+ * components before passing them here.
21
+ */
22
+ icon?: ReactNode;
23
+ /**
24
+ * Placement of the icon within the card.
25
+ * - `"left"` — icon centered vertically on the left, title + content on the right
26
+ * - `"top-left"` — icon above title and content, flush left
27
+ * - `"top-center"` — icon above title and content, horizontally centered
28
+ * @default 'top-left'
29
+ */
30
+ iconPlacement?: "left" | "top-left" | "top-center";
31
+ /**
32
+ * Show an animated arrow in the lower-right corner to signal the card is navigable.
33
+ * Best used together with `href`. The arrow animates with a springy motion on hover.
34
+ * @default false
35
+ */
36
+ showArrow?: boolean;
17
37
  /** Card content */
18
38
  children: ReactNode;
19
39
  /** Additional CSS classes */
20
40
  className?: string;
21
41
  }
22
- export declare function Card({ title, titleColor, backgroundColor, href, children, className, }: CardProps): import("react/jsx-runtime").JSX.Element;
42
+ export declare function Card({ title, titleColor, backgroundColor, href, icon, iconPlacement, showArrow, children, className, }: CardProps): import("react/jsx-runtime").JSX.Element;
@@ -1,10 +1,11 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  export function Card(_a) {
3
- var title = _a.title, _b = _a.titleColor, titleColor = _b === void 0 ? "gray" : _b, _c = _a.backgroundColor, backgroundColor = _c === void 0 ? "white" : _c, href = _a.href, children = _a.children, _d = _a.className, className = _d === void 0 ? "" : _d;
3
+ var title = _a.title, _b = _a.titleColor, titleColor = _b === void 0 ? "gray" : _b, _c = _a.backgroundColor, backgroundColor = _c === void 0 ? "white" : _c, href = _a.href, icon = _a.icon, _d = _a.iconPlacement, iconPlacement = _d === void 0 ? "top-left" : _d, _e = _a.showArrow, showArrow = _e === void 0 ? false : _e, children = _a.children, _f = _a.className, className = _f === void 0 ? "" : _f;
4
4
  var cardClasses = [
5
5
  "dds-card",
6
6
  "dds-card-bg-".concat(backgroundColor),
7
7
  href ? "dds-card-clickable" : "",
8
+ showArrow ? "dds-card-has-arrow" : "",
8
9
  className,
9
10
  ]
10
11
  .filter(Boolean)
@@ -13,7 +14,15 @@ export function Card(_a) {
13
14
  var textClasses = backgroundColor !== "white"
14
15
  ? "dds-card-text-".concat(backgroundColor)
15
16
  : "dds-card-text-gray";
16
- var content = (_jsxs("div", { className: cardClasses, children: [title && _jsx("h3", { className: titleClasses, children: title }), _jsx("div", { className: textClasses, children: children })] }));
17
+ var iconEl = icon ? (_jsx("span", { className: [
18
+ "dds-card-icon",
19
+ iconPlacement === "top-center" ? "dds-card-icon-top-center" : "",
20
+ ]
21
+ .filter(Boolean)
22
+ .join(" "), "aria-hidden": "true", children: icon })) : null;
23
+ var arrowEl = showArrow ? (_jsx("span", { className: "dds-card-arrow", "aria-hidden": "true", children: _jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M2 8H14M10 4L14 8L10 12", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }) })) : null;
24
+ var bodyContent = icon && iconPlacement === "left" ? (_jsxs("div", { className: "dds-card-icon-row", children: [iconEl, _jsxs("div", { className: "dds-card-icon-content", children: [title && _jsx("h3", { className: titleClasses, children: title }), _jsx("div", { className: textClasses, children: children })] })] })) : (_jsxs(_Fragment, { children: [iconEl, title && _jsx("h3", { className: titleClasses, children: title }), _jsx("div", { className: textClasses, children: children })] }));
25
+ var content = (_jsxs("div", { className: cardClasses, children: [bodyContent, arrowEl] }));
17
26
  if (href) {
18
27
  return (_jsx("a", { href: href, className: "no-text-decoration", children: content }));
19
28
  }
@@ -14,6 +14,26 @@ export declare const Basic: Story;
14
14
  * Clickable card that links to another page.
15
15
  */
16
16
  export declare const Clickable: Story;
17
+ /**
18
+ * Clickable card with an animated arrow in the lower-right corner. Hover to see the animation.
19
+ */
20
+ export declare const WithArrow: Story;
21
+ /**
22
+ * Card with an icon placed to the left, vertically centered next to the title and content.
23
+ */
24
+ export declare const WithIconLeft: Story;
25
+ /**
26
+ * Card with an icon placed above the title, flush left (the default top placement).
27
+ */
28
+ export declare const WithIconTopLeft: Story;
29
+ /**
30
+ * Card with an icon centered horizontally above the title and content.
31
+ */
32
+ export declare const WithIconTopCenter: Story;
33
+ /**
34
+ * Clickable card combining a left icon and the animated arrow. Hover to see the arrow animate.
35
+ */
36
+ export declare const WithIconAndArrow: Story;
17
37
  /**
18
38
  * Card with colored background.
19
39
  */
@@ -22,6 +42,10 @@ export declare const ColoredBackground: Story;
22
42
  * Card without a title.
23
43
  */
24
44
  export declare const NoTitle: Story;
45
+ /**
46
+ * All icon placement variants side by side.
47
+ */
48
+ export declare const IconPlacements: Story;
25
49
  /**
26
50
  * All title color variants.
27
51
  */
@@ -28,6 +28,21 @@ var meta = {
28
28
  control: 'text',
29
29
  description: 'Optional link URL. When provided, the entire card becomes clickable.',
30
30
  },
31
+ icon: {
32
+ control: false,
33
+ description: 'Optional icon to display. Pass a rendered icon component.',
34
+ },
35
+ iconPlacement: {
36
+ control: { type: 'select' },
37
+ options: ['left', 'top-left', 'top-center'],
38
+ description: 'Placement of the icon within the card.',
39
+ table: { defaultValue: { summary: "'top-left'" } },
40
+ },
41
+ showArrow: {
42
+ control: 'boolean',
43
+ description: 'Show an animated arrow in the lower-right corner to signal the card is navigable.',
44
+ table: { defaultValue: { summary: 'false' } },
45
+ },
31
46
  children: {
32
47
  control: 'text',
33
48
  description: 'Card content.',
@@ -41,12 +56,14 @@ var meta = {
41
56
  parameters: {
42
57
  docs: {
43
58
  description: {
44
- component: "\nThe Card component provides a flexible container for displaying content with visual hierarchy.\n\n## When to Use\n\n- To group related content together\n- To create clickable navigation elements\n- To display feature highlights or key information\n- To organize content in grid layouts\n\n## When Not to Use\n\n- For plain text content (use typography components)\n- For alerts or notifications (use Callout)\n- For extensive content (consider using sections or pages)\n\n## Accessibility\n\n- Clickable cards use proper link semantics\n- Color is not the only means of conveying information\n ",
59
+ component: "\nThe Card component provides a flexible container for displaying content with visual hierarchy.\n\n## When to Use\n\n- To group related content together\n- To create clickable navigation elements (use `href` + `showArrow`)\n- To display feature highlights with icons\n- To organize content in grid layouts\n\n## When Not to Use\n\n- For plain text content (use typography components)\n- For alerts or notifications (use Callout)\n- For extensive content (consider using sections or pages)\n\n## Icon Usage in MDX\n\nIn MDX files, `icon` is typically a string name (e.g. `icon=\"book\"`). The consuming site's\nMDX component map resolves the string to a rendered icon before passing it to Card:\n\n```tsx\n// In your MDX components config:\nCard: ({ icon, ...props }) => {\n const IconComp = typeof icon === 'string' ? iconMap[icon] : null;\n return <DdsCard icon={IconComp ? <IconComp /> : icon} {...props} />;\n}\n```\n\n## Accessibility\n\n- Clickable cards use proper link semantics\n- The arrow and icon are decorative (`aria-hidden`) and do not affect screen reader output\n- Color is not the only means of conveying information\n ",
45
60
  },
46
61
  },
47
62
  },
48
63
  };
49
64
  export default meta;
65
+ /** A simple inline SVG used in stories to simulate a real icon component. */
66
+ var DemoIcon = function () { return (_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("path", { d: "M12 6.042A8.967 8.967 0 0 0 6 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 0 1 6 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 0 1 6-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0 0 18 18a8.967 8.967 0 0 0-6 2.292m0-14.25v14.25" }) })); };
50
67
  /**
51
68
  * Basic card with title and content.
52
69
  */
@@ -80,6 +97,98 @@ export var Clickable = {
80
97
  },
81
98
  },
82
99
  };
100
+ /**
101
+ * Clickable card with an animated arrow in the lower-right corner. Hover to see the animation.
102
+ */
103
+ export var WithArrow = {
104
+ args: {
105
+ title: 'Get Started',
106
+ href: '/docs/quickstart',
107
+ showArrow: true,
108
+ children: 'Follow the quickstart guide to set up in minutes.',
109
+ },
110
+ parameters: {
111
+ docs: {
112
+ source: {
113
+ code: "<Card title=\"Get Started\" href=\"/docs/quickstart\" showArrow>\n Follow the quickstart guide to set up in minutes.\n</Card>",
114
+ },
115
+ },
116
+ },
117
+ };
118
+ /**
119
+ * Card with an icon placed to the left, vertically centered next to the title and content.
120
+ */
121
+ export var WithIconLeft = {
122
+ args: {
123
+ title: 'Documentation',
124
+ icon: _jsx(DemoIcon, {}),
125
+ iconPlacement: 'left',
126
+ children: 'Read guides, tutorials, and API references.',
127
+ },
128
+ parameters: {
129
+ docs: {
130
+ source: {
131
+ code: "// In MDX the consuming site resolves the icon string to a component:\n<Card title=\"Documentation\" icon={<DemoIcon />} iconPlacement=\"left\">\n Read guides, tutorials, and API references.\n</Card>",
132
+ },
133
+ },
134
+ },
135
+ };
136
+ /**
137
+ * Card with an icon placed above the title, flush left (the default top placement).
138
+ */
139
+ export var WithIconTopLeft = {
140
+ args: {
141
+ title: 'Documentation',
142
+ icon: _jsx(DemoIcon, {}),
143
+ iconPlacement: 'top-left',
144
+ children: 'Read guides, tutorials, and API references.',
145
+ },
146
+ parameters: {
147
+ docs: {
148
+ source: {
149
+ code: "<Card title=\"Documentation\" icon={<DemoIcon />} iconPlacement=\"top-left\">\n Read guides, tutorials, and API references.\n</Card>",
150
+ },
151
+ },
152
+ },
153
+ };
154
+ /**
155
+ * Card with an icon centered horizontally above the title and content.
156
+ */
157
+ export var WithIconTopCenter = {
158
+ args: {
159
+ title: 'Documentation',
160
+ icon: _jsx(DemoIcon, {}),
161
+ iconPlacement: 'top-center',
162
+ children: 'Read guides, tutorials, and API references.',
163
+ },
164
+ parameters: {
165
+ docs: {
166
+ source: {
167
+ code: "<Card title=\"Documentation\" icon={<DemoIcon />} iconPlacement=\"top-center\">\n Read guides, tutorials, and API references.\n</Card>",
168
+ },
169
+ },
170
+ },
171
+ };
172
+ /**
173
+ * Clickable card combining a left icon and the animated arrow. Hover to see the arrow animate.
174
+ */
175
+ export var WithIconAndArrow = {
176
+ args: {
177
+ title: 'Get Started',
178
+ href: '/docs/quickstart',
179
+ icon: _jsx(DemoIcon, {}),
180
+ iconPlacement: 'left',
181
+ showArrow: true,
182
+ children: 'Follow the quickstart guide to set up in minutes.',
183
+ },
184
+ parameters: {
185
+ docs: {
186
+ source: {
187
+ code: "<Card title=\"Get Started\" href=\"/docs/quickstart\" icon={<DemoIcon />} iconPlacement=\"left\" showArrow>\n Follow the quickstart guide to set up in minutes.\n</Card>",
188
+ },
189
+ },
190
+ },
191
+ };
83
192
  /**
84
193
  * Card with colored background.
85
194
  */
@@ -113,6 +222,19 @@ export var NoTitle = {
113
222
  },
114
223
  },
115
224
  };
225
+ /**
226
+ * All icon placement variants side by side.
227
+ */
228
+ export var IconPlacements = {
229
+ parameters: {
230
+ docs: {
231
+ source: {
232
+ code: "<div style={{ display: 'flex', flexDirection: 'column', gap: '1rem' }}>\n <Card title=\"Icon Left\" icon={<DemoIcon />} iconPlacement=\"left\">\n Icon is centered vertically beside the content.\n </Card>\n <Card title=\"Icon Top Left\" icon={<DemoIcon />} iconPlacement=\"top-left\">\n Icon sits above the title, flush left.\n </Card>\n <Card title=\"Icon Top Center\" icon={<DemoIcon />} iconPlacement=\"top-center\">\n Icon sits above the title, horizontally centered.\n </Card>\n</div>",
233
+ },
234
+ },
235
+ },
236
+ render: function () { return (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: '1rem' }, children: [_jsx(Card, { title: "Icon Left", icon: _jsx(DemoIcon, {}), iconPlacement: "left", children: _jsx("span", { style: { color: 'var(--dds-card-text-gray)' }, children: "Icon is centered vertically beside the content." }) }), _jsx(Card, { title: "Icon Top Left", icon: _jsx(DemoIcon, {}), iconPlacement: "top-left", children: _jsx("span", { style: { color: 'var(--dds-card-text-gray)' }, children: "Icon sits above the title, flush left." }) }), _jsx(Card, { title: "Icon Top Center", icon: _jsx(DemoIcon, {}), iconPlacement: "top-center", children: _jsx("span", { style: { color: 'var(--dds-card-text-gray)' }, children: "Icon sits above the title, horizontally centered." }) })] })); },
237
+ };
116
238
  /**
117
239
  * All title color variants.
118
240
  */
package/dist/styles.css CHANGED
@@ -45,6 +45,13 @@
45
45
  --dds-card-text-yellow: #854d0e; /* yellow-800 */
46
46
  --dds-card-text-gray: #374151; /* gray-700 */
47
47
 
48
+ --dds-card-icon-size: 1.5rem; /* 24px */
49
+ --dds-card-icon-color: #6b7280; /* gray-500 */
50
+ --dds-card-icon-margin-bottom: 0.75rem;
51
+ --dds-card-icon-gap: 1rem;
52
+ --dds-card-arrow-color: #9ca3af; /* gray-400 */
53
+ --dds-card-arrow-inset: 0.75rem;
54
+
48
55
  /* Typography - Font Sizes */
49
56
  --dds-heading-1-size: 2.25rem; /* text-4xl */
50
57
  --dds-heading-2-size: 1.875rem; /* text-3xl */
@@ -359,6 +366,9 @@
359
366
  --dds-card-text-yellow: #fef08a; /* yellow-200 */
360
367
  --dds-card-text-gray: #d1d5db; /* gray-300 */
361
368
 
369
+ --dds-card-icon-color: #9ca3af; /* gray-400 */
370
+ --dds-card-arrow-color: #6b7280; /* gray-500 */
371
+
362
372
  /* Link */
363
373
  --dds-link-color: #60a5fa; /* blue-400 */
364
374
  --dds-link-color-hover: #93c5fd; /* blue-300 */
@@ -541,6 +551,9 @@
541
551
  --dds-card-text-yellow: #fef08a;
542
552
  --dds-card-text-gray: #d1d5db;
543
553
 
554
+ --dds-card-icon-color: #9ca3af; /* gray-400 */
555
+ --dds-card-arrow-color: #6b7280; /* gray-500 */
556
+
544
557
  /* Link */
545
558
  --dds-link-color: #60a5fa;
546
559
  --dds-link-color-hover: #93c5fd;
@@ -723,6 +736,9 @@
723
736
  --dds-card-text-yellow: #fef08a;
724
737
  --dds-card-text-gray: #d1d5db;
725
738
 
739
+ --dds-card-icon-color: #9ca3af; /* gray-400 */
740
+ --dds-card-arrow-color: #6b7280; /* gray-500 */
741
+
726
742
  /* Link */
727
743
  --dds-link-color: #60a5fa;
728
744
  --dds-link-color-hover: #93c5fd;
@@ -1085,6 +1101,7 @@ a.no-text-decoration {
1085
1101
  padding: var(--dds-card-padding);
1086
1102
  border-radius: var(--dds-card-radius);
1087
1103
  border: 1px solid var(--dds-card-border);
1104
+ position: relative;
1088
1105
  }
1089
1106
  .dds-card-clickable {
1090
1107
  cursor: pointer;
@@ -1143,6 +1160,77 @@ a.no-text-decoration {
1143
1160
  .dds-card-title-gray {
1144
1161
  color: var(--dds-card-title-gray);
1145
1162
  }
1163
+ /* Icon */
1164
+ .dds-card-icon {
1165
+ display: block;
1166
+ width: var(--dds-card-icon-size);
1167
+ height: var(--dds-card-icon-size);
1168
+ color: var(--dds-card-icon-color);
1169
+ flex-shrink: 0;
1170
+ margin-bottom: var(--dds-card-icon-margin-bottom);
1171
+ }
1172
+ .dds-card-icon > * {
1173
+ width: 100%;
1174
+ height: 100%;
1175
+ }
1176
+ .dds-card-icon-top-center {
1177
+ margin-left: auto;
1178
+ margin-right: auto;
1179
+ }
1180
+ /* Icon-left layout */
1181
+ .dds-card-icon-row {
1182
+ display: flex;
1183
+ align-items: center;
1184
+ gap: var(--dds-card-icon-gap);
1185
+ }
1186
+ .dds-card-icon-row .dds-card-icon {
1187
+ margin-bottom: 0;
1188
+ }
1189
+ .dds-card-icon-content {
1190
+ flex: 1;
1191
+ min-width: 0;
1192
+ }
1193
+ /* Arrow */
1194
+ .dds-card-has-arrow {
1195
+ padding-right: calc(var(--dds-card-padding) + 1.25rem);
1196
+ }
1197
+ [dir="rtl"] .dds-card-has-arrow {
1198
+ padding-right: var(--dds-card-padding);
1199
+ padding-left: calc(var(--dds-card-padding) + 1.25rem);
1200
+ }
1201
+ .dds-card-arrow {
1202
+ position: absolute;
1203
+ bottom: var(--dds-card-arrow-inset);
1204
+ right: var(--dds-card-arrow-inset);
1205
+ color: var(--dds-card-arrow-color);
1206
+ display: flex;
1207
+ align-items: center;
1208
+ justify-content: center;
1209
+ pointer-events: none;
1210
+ }
1211
+ [dir="rtl"] .dds-card-arrow {
1212
+ right: auto;
1213
+ left: var(--dds-card-arrow-inset);
1214
+ transform: scaleX(-1);
1215
+ }
1216
+ @keyframes dds-arrow-nudge {
1217
+ 0% { transform: translateX(0); }
1218
+ 40% { transform: translateX(5px); }
1219
+ 70% { transform: translateX(-2px); }
1220
+ 100% { transform: translateX(0); }
1221
+ }
1222
+ @keyframes dds-arrow-nudge-rtl {
1223
+ 0% { transform: scaleX(-1) translateX(0); }
1224
+ 40% { transform: scaleX(-1) translateX(5px); }
1225
+ 70% { transform: scaleX(-1) translateX(-2px); }
1226
+ 100% { transform: scaleX(-1) translateX(0); }
1227
+ }
1228
+ .dds-card-clickable:hover .dds-card-arrow {
1229
+ animation: dds-arrow-nudge 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
1230
+ }
1231
+ [dir="rtl"] .dds-card-clickable:hover .dds-card-arrow {
1232
+ animation: dds-arrow-nudge-rtl 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
1233
+ }
1146
1234
  /* Text color variants */
1147
1235
  .dds-card-text-blue {
1148
1236
  color: var(--dds-card-text-blue);
@@ -1273,6 +1361,7 @@ a.no-text-decoration {
1273
1361
  display: grid;
1274
1362
  grid-template-rows: 0fr;
1275
1363
  transition: grid-template-rows 0.3s ease;
1364
+ overflow: hidden;
1276
1365
  }
1277
1366
  .dds-collapser-content-wrapper--open {
1278
1367
  grid-template-rows: 1fr;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@roadlittledawn/docs-design-system-react",
3
- "version": "0.11.1",
3
+ "version": "0.12.0",
4
4
  "license": "MIT",
5
5
  "description": "React components for documentation design system",
6
6
  "repository": {