@dust-tt/sparkle 0.4.2 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +1 -1
- package/dist/esm/components/Card.d.ts +1 -0
- package/dist/esm/components/Card.d.ts.map +1 -1
- package/dist/esm/components/Card.js +11 -4
- package/dist/esm/components/Card.js.map +1 -1
- package/dist/esm/stories/Card.stories.d.ts +7 -0
- package/dist/esm/stories/Card.stories.d.ts.map +1 -1
- package/dist/esm/stories/Card.stories.js +37 -1
- package/dist/esm/stories/Card.stories.js.map +1 -1
- package/dist/sparkle.css +8 -0
- package/package.json +1 -1
- package/src/components/Card.tsx +20 -1
- package/src/stories/Card.stories.tsx +76 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../src/components/Card.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AASnE,eAAO,MAAM,aAAa,+CAAgD,CAAC;AAC3E,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,eAAO,MAAM,UAAU,6BAA8B,CAAC;AACtD,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../src/components/Card.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AASnE,eAAO,MAAM,aAAa,+CAAgD,CAAC;AAC3E,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,eAAO,MAAM,UAAU,6BAA8B,CAAC;AACtD,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AA8DvD,UAAU,WAAW;IACnB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,aAAc,SAAQ,WAAW,EAAE,gBAAgB;IAC3D,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB;AAED,UAAU,eACR,SAAQ,WAAW,EACjB,KAAK,CAAC,oBAAoB,CAAC,cAAc,CAAC;IAC5C,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB;AAuED,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB;AAED,UAAU,iBACR,SAAQ,aAAa,EACnB,IAAI,CAAC,aAAa,EAAE,MAAM,aAAa,CAAC;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB;AAED,UAAU,mBACR,SAAQ,aAAa,EACnB,IAAI,CAAC,eAAe,EAAE,MAAM,aAAa,CAAC;IAC5C,IAAI,CAAC,EAAE,KAAK,CAAC;CACd;AAED,MAAM,MAAM,SAAS,GAAG,iBAAiB,GAAG,mBAAmB,CAAC;AAEhE,eAAO,MAAM,IAAI,kFAYhB,CAAC;AAyBF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;2CAa3B,CAAC;AAIH,eAAO,MAAM,QAAQ,6GAgBnB,CAAC"}
|
|
@@ -20,25 +20,32 @@ var cardVariants = cva(cn("s-flex s-text-left s-group", "s-border s-overflow-hid
|
|
|
20
20
|
md: "s-p-4 s-rounded-2xl",
|
|
21
21
|
lg: "s-p-5 s-rounded-3xl",
|
|
22
22
|
},
|
|
23
|
+
selected: {
|
|
24
|
+
true: cn("s-border-highlight-300 dark:s-border-highlight-300-night", "s-ring-2 s-ring-highlight-200/70 dark:s-ring-highlight-300/60", "s-shadow-sm"),
|
|
25
|
+
false: "",
|
|
26
|
+
},
|
|
23
27
|
},
|
|
24
28
|
defaultVariants: {
|
|
25
29
|
variant: "primary",
|
|
26
30
|
size: "md",
|
|
31
|
+
selected: false,
|
|
27
32
|
},
|
|
28
33
|
});
|
|
29
34
|
var InnerCard = React.forwardRef(function (_a, ref) {
|
|
30
|
-
var children = _a.children, variant = _a.variant, size = _a.size, className = _a.className, onClick = _a.onClick, href = _a.href, _b = _a.target, target = _b === void 0 ? "_blank" : _b, _c = _a.rel, rel = _c === void 0 ? "" : _c, replace = _a.replace, shallow = _a.shallow, props = __rest(_a, ["children", "variant", "size", "className", "onClick", "href", "target", "rel", "replace", "shallow"]);
|
|
35
|
+
var children = _a.children, variant = _a.variant, size = _a.size, className = _a.className, onClick = _a.onClick, href = _a.href, _b = _a.target, target = _b === void 0 ? "_blank" : _b, _c = _a.rel, rel = _c === void 0 ? "" : _c, replace = _a.replace, shallow = _a.shallow, selected = _a.selected, props = __rest(_a, ["children", "variant", "size", "className", "onClick", "href", "target", "rel", "replace", "shallow", "selected"]);
|
|
31
36
|
var components = React.useContext(SparkleContext).components;
|
|
32
37
|
var Link = href ? components.link : noHrefLink;
|
|
33
38
|
// Determine if the card is interactive based on href or onClick
|
|
34
39
|
var isInteractive = Boolean(href || onClick);
|
|
35
|
-
var
|
|
40
|
+
var isSelected = Boolean(selected);
|
|
41
|
+
var hasSelectionProp = typeof selected !== "undefined";
|
|
42
|
+
var cardButtonClassNames = cn(cardVariants({ variant: variant, size: size, selected: isSelected }),
|
|
36
43
|
// Apply interactive styles when either href or onClick is present
|
|
37
44
|
isInteractive ? interactiveClasses : "", className);
|
|
38
45
|
if (href) {
|
|
39
|
-
return (React.createElement(Link, { href: href, className: cardButtonClassNames, replace: replace, shallow: shallow, target: target, rel: rel }, children));
|
|
46
|
+
return (React.createElement(Link, { href: href, className: cardButtonClassNames, replace: replace, shallow: shallow, target: target, rel: rel, "aria-selected": hasSelectionProp ? isSelected : undefined }, children));
|
|
40
47
|
}
|
|
41
|
-
return (React.createElement("div", __assign({ ref: ref, className: cardButtonClassNames, onClick: onClick }, props), children));
|
|
48
|
+
return (React.createElement("div", __assign({ ref: ref, className: cardButtonClassNames, onClick: onClick, role: isInteractive ? "button" : undefined, "aria-pressed": isInteractive && hasSelectionProp ? isSelected : undefined, "aria-selected": hasSelectionProp ? isSelected : undefined }, props), children));
|
|
42
49
|
});
|
|
43
50
|
export var Card = React.forwardRef(function (_a, ref) {
|
|
44
51
|
var containerClassName = _a.containerClassName, className = _a.className, action = _a.action, props = __rest(_a, ["containerClassName", "className", "action"]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card.js","sourceRoot":"","sources":["../../../src/components/Card.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,MAAM,EAAmB,MAAM,4BAA4B,CAAC;AAErE,OAAO,EACL,UAAU,EACV,cAAc,GAEf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAExC,MAAM,CAAC,IAAM,aAAa,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,CAAU,CAAC;AAG3E,MAAM,CAAC,IAAM,UAAU,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAGtD,IAAM,kBAAkB,GAAG,EAAE,CAC3B,kBAAkB,EAClB,6BAA6B,EAC7B,0DAA0D,EAC1D,4DAA4D,EAC5D,wEAAwE,EACxE,8DAA8D,EAC9D,gCAAgC,CACjC,CAAC;AAEF,IAAM,YAAY,GAAG,GAAG,CACtB,EAAE,CACA,4BAA4B,EAC5B,4BAA4B,EAC5B,gDAAgD,CACjD,EACD;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,EAAE,CACT,uBAAuB,EACvB,mBAAmB,EACnB,kCAAkC,EAClC,8BAA8B,CAC/B;YACD,SAAS,EAAE,EAAE,CACX,iBAAiB,EACjB,iBAAiB,EACjB,4BAA4B,EAC5B,4BAA4B,CAC7B;YACD,QAAQ,EAAE,EAAE,CACV,iBAAiB,EACjB,mBAAmB,EACnB,4BAA4B,EAC5B,8BAA8B,CAC/B;SACF;QACD,IAAI,EAAE;YACJ,EAAE,EAAE,oBAAoB;YACxB,EAAE,EAAE,qBAAqB;YACzB,EAAE,EAAE,qBAAqB;SAC1B;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"Card.js","sourceRoot":"","sources":["../../../src/components/Card.tsx"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,10 @@ declare const meta: {
|
|
|
27
27
|
control: "text";
|
|
28
28
|
description: string;
|
|
29
29
|
};
|
|
30
|
+
selected: {
|
|
31
|
+
control: "boolean";
|
|
32
|
+
description: string;
|
|
33
|
+
};
|
|
30
34
|
children: {
|
|
31
35
|
control: "text";
|
|
32
36
|
description: string;
|
|
@@ -40,7 +44,10 @@ export declare const Primary: Story;
|
|
|
40
44
|
export declare const Secondary: Story;
|
|
41
45
|
export declare const Tertiary: Story;
|
|
42
46
|
export declare const DisabledCard: Story;
|
|
47
|
+
export declare const SelectedCard: Story;
|
|
43
48
|
export declare const AllVariants: Story;
|
|
44
49
|
export declare const InteractiveStates: Story;
|
|
45
50
|
export declare const WithActions: Story;
|
|
51
|
+
export declare const SelectableGrid: Story;
|
|
52
|
+
export declare const DualSelectable: Story;
|
|
46
53
|
//# sourceMappingURL=Card.stories.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card.stories.d.ts","sourceRoot":"","sources":["../../../src/stories/Card.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAwB,MAAM,OAAO,CAAC;AAoB7C,QAAA,MAAM,IAAI
|
|
1
|
+
{"version":3,"file":"Card.stories.d.ts","sourceRoot":"","sources":["../../../src/stories/Card.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAwB,MAAM,OAAO,CAAC;AAoB7C,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCmB,CAAC;AAE9B,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,UAAU,EAAE,KASxB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAMrB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAMvB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAMtB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAO1B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAO1B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAmCzB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,KAe/B,CAAC;AA8CF,eAAO,MAAM,WAAW,EAAE,KA0BzB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KA6B5B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KA6B5B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __assign } from "tslib";
|
|
1
|
+
import { __assign, __read } from "tslib";
|
|
2
2
|
import React from "react";
|
|
3
3
|
import { Card, Icon } from "../components";
|
|
4
4
|
import { CARD_SIZES, CARD_VARIANTS, CardActionButton, CardGrid, } from "../components/Card";
|
|
@@ -26,6 +26,10 @@ var meta = {
|
|
|
26
26
|
control: "text",
|
|
27
27
|
description: "Additional CSS classes to apply",
|
|
28
28
|
},
|
|
29
|
+
selected: {
|
|
30
|
+
control: "boolean",
|
|
31
|
+
description: "Visually highlight the card as selected",
|
|
32
|
+
},
|
|
29
33
|
children: {
|
|
30
34
|
control: "text",
|
|
31
35
|
description: "Content to display inside the card",
|
|
@@ -38,6 +42,7 @@ export var Playground = {
|
|
|
38
42
|
variant: "primary",
|
|
39
43
|
size: "md",
|
|
40
44
|
disabled: false,
|
|
45
|
+
selected: false,
|
|
41
46
|
children: "Card Content",
|
|
42
47
|
},
|
|
43
48
|
render: function (args) { return React.createElement(Card, __assign({}, args)); },
|
|
@@ -71,6 +76,14 @@ export var DisabledCard = {
|
|
|
71
76
|
children: "Disabled Card",
|
|
72
77
|
},
|
|
73
78
|
};
|
|
79
|
+
export var SelectedCard = {
|
|
80
|
+
args: {
|
|
81
|
+
variant: "secondary",
|
|
82
|
+
size: "md",
|
|
83
|
+
selected: true,
|
|
84
|
+
children: "Selected Card",
|
|
85
|
+
},
|
|
86
|
+
};
|
|
74
87
|
export var AllVariants = {
|
|
75
88
|
render: function () {
|
|
76
89
|
var variants = CARD_VARIANTS;
|
|
@@ -137,4 +150,27 @@ export var WithActions = {
|
|
|
137
150
|
React.createElement("div", { className: "s-w-full" }, card.title)),
|
|
138
151
|
React.createElement("div", { className: "s-w-full s-truncate s-text-sm s-text-muted-foreground" }, card.description)))); }))); },
|
|
139
152
|
};
|
|
153
|
+
export var SelectableGrid = {
|
|
154
|
+
render: function () {
|
|
155
|
+
var _a = __read(React.useState(0), 2), selected = _a[0], setSelected = _a[1];
|
|
156
|
+
return (React.createElement(CardGrid, null, cardData.slice(0, 4).map(function (card, index) { return (React.createElement(Card, { key: card.title, variant: "primary", size: "md", selected: selected === index, onClick: function () { return setSelected(index); }, action: React.createElement(CardActionButton, { size: "mini", icon: XMarkIcon }) },
|
|
157
|
+
React.createElement("div", { className: "s-flex s-w-full s-flex-col s-gap-1 s-text-sm" },
|
|
158
|
+
React.createElement("div", { className: "s-flex s-w-full s-gap-1 s-font-semibold s-text-foreground" },
|
|
159
|
+
React.createElement(Icon, { visual: card.icon, size: "sm" }),
|
|
160
|
+
React.createElement("div", { className: "s-w-full" }, card.title)),
|
|
161
|
+
React.createElement("div", { className: "s-w-full s-truncate s-text-sm s-text-muted-foreground" }, card.description)))); })));
|
|
162
|
+
},
|
|
163
|
+
};
|
|
164
|
+
export var DualSelectable = {
|
|
165
|
+
render: function () {
|
|
166
|
+
var _a = __read(React.useState(0), 2), selectedIndex = _a[0], setSelectedIndex = _a[1];
|
|
167
|
+
var duoCards = cardData.slice(0, 2);
|
|
168
|
+
return (React.createElement("div", { className: "s-flex s-gap-4" }, duoCards.map(function (card, index) { return (React.createElement(Card, { key: card.title, variant: "secondary", size: "md", selected: selectedIndex === index, onClick: function () { return setSelectedIndex(index); } },
|
|
169
|
+
React.createElement("div", { className: "s-flex s-w-full s-flex-col s-gap-1 s-text-sm" },
|
|
170
|
+
React.createElement("div", { className: "s-flex s-w-full s-gap-1 s-font-semibold s-text-foreground" },
|
|
171
|
+
React.createElement(Icon, { visual: card.icon, size: "sm" }),
|
|
172
|
+
React.createElement("div", { className: "s-w-full" }, card.title)),
|
|
173
|
+
React.createElement("div", { className: "s-w-full s-truncate s-text-sm s-text-muted-foreground" }, card.description)))); })));
|
|
174
|
+
},
|
|
175
|
+
};
|
|
140
176
|
//# sourceMappingURL=Card.stories.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card.stories.js","sourceRoot":"","sources":["../../../src/stories/Card.stories.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Card.stories.js","sourceRoot":"","sources":["../../../src/stories/Card.stories.tsx"],"names":[],"mappings":"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"}
|
package/dist/sparkle.css
CHANGED
|
@@ -5222,6 +5222,10 @@ select {
|
|
|
5222
5222
|
--tw-ring-inset: inset;
|
|
5223
5223
|
}
|
|
5224
5224
|
|
|
5225
|
+
.s-ring-highlight-200\/70 {
|
|
5226
|
+
--tw-ring-color: rgb(159 219 255 / 0.7);
|
|
5227
|
+
}
|
|
5228
|
+
|
|
5225
5229
|
.s-ring-highlight-300 {
|
|
5226
5230
|
--tw-ring-opacity: 1;
|
|
5227
5231
|
--tw-ring-color: rgb(122 198 255 / var(--tw-ring-opacity));
|
|
@@ -8424,6 +8428,10 @@ select {
|
|
|
8424
8428
|
color: rgb(255 255 255 / var(--tw-text-opacity));
|
|
8425
8429
|
}
|
|
8426
8430
|
|
|
8431
|
+
:is(.s-dark .dark\:s-ring-highlight-300\/60) {
|
|
8432
|
+
--tw-ring-color: rgb(122 198 255 / 0.6);
|
|
8433
|
+
}
|
|
8434
|
+
|
|
8427
8435
|
:is(.s-dark .dark\:s-ring-highlight-night\/0) {
|
|
8428
8436
|
--tw-ring-color: rgb(28 145 255 / 0);
|
|
8429
8437
|
}
|
package/package.json
CHANGED
package/src/components/Card.tsx
CHANGED
|
@@ -60,10 +60,19 @@ const cardVariants = cva(
|
|
|
60
60
|
md: "s-p-4 s-rounded-2xl",
|
|
61
61
|
lg: "s-p-5 s-rounded-3xl",
|
|
62
62
|
},
|
|
63
|
+
selected: {
|
|
64
|
+
true: cn(
|
|
65
|
+
"s-border-highlight-300 dark:s-border-highlight-300-night",
|
|
66
|
+
"s-ring-2 s-ring-highlight-200/70 dark:s-ring-highlight-300/60",
|
|
67
|
+
"s-shadow-sm"
|
|
68
|
+
),
|
|
69
|
+
false: "",
|
|
70
|
+
},
|
|
63
71
|
},
|
|
64
72
|
defaultVariants: {
|
|
65
73
|
variant: "primary",
|
|
66
74
|
size: "md",
|
|
75
|
+
selected: false,
|
|
67
76
|
},
|
|
68
77
|
}
|
|
69
78
|
);
|
|
@@ -72,6 +81,7 @@ interface CommonProps {
|
|
|
72
81
|
variant?: CardVariantType;
|
|
73
82
|
size?: CardSizeType;
|
|
74
83
|
className?: string;
|
|
84
|
+
selected?: boolean;
|
|
75
85
|
}
|
|
76
86
|
|
|
77
87
|
interface CardLinkProps extends CommonProps, LinkWrapperProps {
|
|
@@ -103,6 +113,7 @@ const InnerCard = React.forwardRef<HTMLDivElement, InnerCardProps>(
|
|
|
103
113
|
rel = "",
|
|
104
114
|
replace,
|
|
105
115
|
shallow,
|
|
116
|
+
selected,
|
|
106
117
|
...props
|
|
107
118
|
},
|
|
108
119
|
ref
|
|
@@ -112,9 +123,11 @@ const InnerCard = React.forwardRef<HTMLDivElement, InnerCardProps>(
|
|
|
112
123
|
|
|
113
124
|
// Determine if the card is interactive based on href or onClick
|
|
114
125
|
const isInteractive = Boolean(href || onClick);
|
|
126
|
+
const isSelected = Boolean(selected);
|
|
127
|
+
const hasSelectionProp = typeof selected !== "undefined";
|
|
115
128
|
|
|
116
129
|
const cardButtonClassNames = cn(
|
|
117
|
-
cardVariants({ variant, size }),
|
|
130
|
+
cardVariants({ variant, size, selected: isSelected }),
|
|
118
131
|
// Apply interactive styles when either href or onClick is present
|
|
119
132
|
isInteractive ? interactiveClasses : "",
|
|
120
133
|
className
|
|
@@ -129,6 +142,7 @@ const InnerCard = React.forwardRef<HTMLDivElement, InnerCardProps>(
|
|
|
129
142
|
shallow={shallow}
|
|
130
143
|
target={target}
|
|
131
144
|
rel={rel}
|
|
145
|
+
aria-selected={hasSelectionProp ? isSelected : undefined}
|
|
132
146
|
>
|
|
133
147
|
{children}
|
|
134
148
|
</Link>
|
|
@@ -140,6 +154,11 @@ const InnerCard = React.forwardRef<HTMLDivElement, InnerCardProps>(
|
|
|
140
154
|
ref={ref}
|
|
141
155
|
className={cardButtonClassNames}
|
|
142
156
|
onClick={onClick}
|
|
157
|
+
role={isInteractive ? "button" : undefined}
|
|
158
|
+
aria-pressed={
|
|
159
|
+
isInteractive && hasSelectionProp ? isSelected : undefined
|
|
160
|
+
}
|
|
161
|
+
aria-selected={hasSelectionProp ? isSelected : undefined}
|
|
143
162
|
{...props}
|
|
144
163
|
>
|
|
145
164
|
{children}
|
|
@@ -43,6 +43,10 @@ const meta = {
|
|
|
43
43
|
control: "text",
|
|
44
44
|
description: "Additional CSS classes to apply",
|
|
45
45
|
},
|
|
46
|
+
selected: {
|
|
47
|
+
control: "boolean",
|
|
48
|
+
description: "Visually highlight the card as selected",
|
|
49
|
+
},
|
|
46
50
|
children: {
|
|
47
51
|
control: "text",
|
|
48
52
|
description: "Content to display inside the card",
|
|
@@ -58,6 +62,7 @@ export const Playground: Story = {
|
|
|
58
62
|
variant: "primary",
|
|
59
63
|
size: "md",
|
|
60
64
|
disabled: false,
|
|
65
|
+
selected: false,
|
|
61
66
|
children: "Card Content",
|
|
62
67
|
},
|
|
63
68
|
render: (args) => <Card {...args} />,
|
|
@@ -96,6 +101,15 @@ export const DisabledCard: Story = {
|
|
|
96
101
|
},
|
|
97
102
|
};
|
|
98
103
|
|
|
104
|
+
export const SelectedCard: Story = {
|
|
105
|
+
args: {
|
|
106
|
+
variant: "secondary",
|
|
107
|
+
size: "md",
|
|
108
|
+
selected: true,
|
|
109
|
+
children: "Selected Card",
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
|
|
99
113
|
export const AllVariants: Story = {
|
|
100
114
|
render: () => {
|
|
101
115
|
const variants = CARD_VARIANTS;
|
|
@@ -221,3 +235,65 @@ export const WithActions: Story = {
|
|
|
221
235
|
</CardGrid>
|
|
222
236
|
),
|
|
223
237
|
};
|
|
238
|
+
|
|
239
|
+
export const SelectableGrid: Story = {
|
|
240
|
+
render: () => {
|
|
241
|
+
const [selected, setSelected] = React.useState(0);
|
|
242
|
+
|
|
243
|
+
return (
|
|
244
|
+
<CardGrid>
|
|
245
|
+
{cardData.slice(0, 4).map((card, index) => (
|
|
246
|
+
<Card
|
|
247
|
+
key={card.title}
|
|
248
|
+
variant="primary"
|
|
249
|
+
size="md"
|
|
250
|
+
selected={selected === index}
|
|
251
|
+
onClick={() => setSelected(index)}
|
|
252
|
+
action={<CardActionButton size="mini" icon={XMarkIcon} />}
|
|
253
|
+
>
|
|
254
|
+
<div className="s-flex s-w-full s-flex-col s-gap-1 s-text-sm">
|
|
255
|
+
<div className="s-flex s-w-full s-gap-1 s-font-semibold s-text-foreground">
|
|
256
|
+
<Icon visual={card.icon} size="sm" />
|
|
257
|
+
<div className="s-w-full">{card.title}</div>
|
|
258
|
+
</div>
|
|
259
|
+
<div className="s-w-full s-truncate s-text-sm s-text-muted-foreground">
|
|
260
|
+
{card.description}
|
|
261
|
+
</div>
|
|
262
|
+
</div>
|
|
263
|
+
</Card>
|
|
264
|
+
))}
|
|
265
|
+
</CardGrid>
|
|
266
|
+
);
|
|
267
|
+
},
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
export const DualSelectable: Story = {
|
|
271
|
+
render: () => {
|
|
272
|
+
const [selectedIndex, setSelectedIndex] = React.useState(0);
|
|
273
|
+
const duoCards = cardData.slice(0, 2);
|
|
274
|
+
|
|
275
|
+
return (
|
|
276
|
+
<div className="s-flex s-gap-4">
|
|
277
|
+
{duoCards.map((card, index) => (
|
|
278
|
+
<Card
|
|
279
|
+
key={card.title}
|
|
280
|
+
variant="secondary"
|
|
281
|
+
size="md"
|
|
282
|
+
selected={selectedIndex === index}
|
|
283
|
+
onClick={() => setSelectedIndex(index)}
|
|
284
|
+
>
|
|
285
|
+
<div className="s-flex s-w-full s-flex-col s-gap-1 s-text-sm">
|
|
286
|
+
<div className="s-flex s-w-full s-gap-1 s-font-semibold s-text-foreground">
|
|
287
|
+
<Icon visual={card.icon} size="sm" />
|
|
288
|
+
<div className="s-w-full">{card.title}</div>
|
|
289
|
+
</div>
|
|
290
|
+
<div className="s-w-full s-truncate s-text-sm s-text-muted-foreground">
|
|
291
|
+
{card.description}
|
|
292
|
+
</div>
|
|
293
|
+
</div>
|
|
294
|
+
</Card>
|
|
295
|
+
))}
|
|
296
|
+
</div>
|
|
297
|
+
);
|
|
298
|
+
},
|
|
299
|
+
};
|