@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.
@@ -8,6 +8,7 @@ interface CommonProps {
8
8
  variant?: CardVariantType;
9
9
  size?: CardSizeType;
10
10
  className?: string;
11
+ selected?: boolean;
11
12
  }
12
13
  interface CardLinkProps extends CommonProps, LinkWrapperProps {
13
14
  onClick?: never;
@@ -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;AAqDvD,UAAU,WAAW;IACnB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,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;AA8DD,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"}
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 cardButtonClassNames = cn(cardVariants({ variant: variant, size: size }),
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":"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"}
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BmB,CAAC;AAE9B,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,UAAU,EAAE,KAQxB,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,WAAW,EAAE,KAmCzB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,KAe/B,CAAC;AA8CF,eAAO,MAAM,WAAW,EAAE,KA0BzB,CAAC"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dust-tt/sparkle",
3
- "version": "0.4.2",
3
+ "version": "0.4.3",
4
4
  "scripts": {
5
5
  "build": "rm -rf dist && npm run tailwind && npm run build:esm && npm run build:cjs",
6
6
  "tailwind": "tailwindcss -i ./src/styles/tailwind.css -o dist/sparkle.css",
@@ -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
+ };