@dust-tt/sparkle 0.2.454 → 0.2.456

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.
Files changed (74) hide show
  1. package/dist/cjs/index.js +1 -1
  2. package/dist/esm/components/AnimatedText.d.ts +1 -1
  3. package/dist/esm/components/AnimatedText.d.ts.map +1 -1
  4. package/dist/esm/components/AnimatedText.js +32 -8
  5. package/dist/esm/components/AnimatedText.js.map +1 -1
  6. package/dist/esm/components/Avatar.d.ts.map +1 -1
  7. package/dist/esm/components/Avatar.js +8 -24
  8. package/dist/esm/components/Avatar.js.map +1 -1
  9. package/dist/esm/components/Button.d.ts +1 -1
  10. package/dist/esm/components/Chip.d.ts +1 -1
  11. package/dist/esm/components/Chip.d.ts.map +1 -1
  12. package/dist/esm/components/Chip.js +36 -10
  13. package/dist/esm/components/Chip.js.map +1 -1
  14. package/dist/esm/components/ColorPicker.js +1 -1
  15. package/dist/esm/components/ColorPicker.js.map +1 -1
  16. package/dist/esm/components/ContentMessage.d.ts +1 -1
  17. package/dist/esm/components/ContentMessage.d.ts.map +1 -1
  18. package/dist/esm/components/ContentMessage.js +59 -14
  19. package/dist/esm/components/ContentMessage.js.map +1 -1
  20. package/dist/esm/components/Counter.d.ts +1 -1
  21. package/dist/esm/components/DataTable.d.ts +8 -3
  22. package/dist/esm/components/DataTable.d.ts.map +1 -1
  23. package/dist/esm/components/DataTable.js +61 -10
  24. package/dist/esm/components/DataTable.js.map +1 -1
  25. package/dist/esm/components/Hoverable.d.ts +1 -1
  26. package/dist/esm/components/PriceTable.d.ts.map +1 -1
  27. package/dist/esm/components/PriceTable.js +0 -7
  28. package/dist/esm/components/PriceTable.js.map +1 -1
  29. package/dist/esm/components/index.d.ts +0 -1
  30. package/dist/esm/components/index.d.ts.map +1 -1
  31. package/dist/esm/components/index.js +0 -1
  32. package/dist/esm/components/index.js.map +1 -1
  33. package/dist/esm/stories/Avatar.stories.js +3 -3
  34. package/dist/esm/stories/Avatar.stories.js.map +1 -1
  35. package/dist/esm/stories/Chip.stories.d.ts +3 -3
  36. package/dist/esm/stories/ColorPalette.stories.d.ts +2 -1
  37. package/dist/esm/stories/ColorPalette.stories.d.ts.map +1 -1
  38. package/dist/esm/stories/ColorPalette.stories.js +65 -13
  39. package/dist/esm/stories/ColorPalette.stories.js.map +1 -1
  40. package/dist/esm/stories/ColorPicker.stories.d.ts.map +1 -1
  41. package/dist/esm/stories/ColorPicker.stories.js +48 -128
  42. package/dist/esm/stories/ColorPicker.stories.js.map +1 -1
  43. package/dist/esm/stories/ContentMessage.stories.js +8 -8
  44. package/dist/esm/stories/ContentMessage.stories.js.map +1 -1
  45. package/dist/esm/stories/DataTable.stories.d.ts +1 -0
  46. package/dist/esm/stories/DataTable.stories.d.ts.map +1 -1
  47. package/dist/esm/stories/DataTable.stories.js +27 -3
  48. package/dist/esm/stories/DataTable.stories.js.map +1 -1
  49. package/dist/esm/stories/IconButton.stories.d.ts +1 -1
  50. package/dist/sparkle.css +345 -1439
  51. package/package.json +1 -1
  52. package/src/components/AnimatedText.tsx +64 -19
  53. package/src/components/Avatar.tsx +8 -24
  54. package/src/components/Chip.tsx +72 -22
  55. package/src/components/ColorPicker.tsx +1 -1
  56. package/src/components/ContentMessage.tsx +68 -14
  57. package/src/components/DataTable.tsx +87 -0
  58. package/src/components/PriceTable.tsx +0 -8
  59. package/src/components/index.ts +0 -1
  60. package/src/stories/Avatar.stories.tsx +3 -3
  61. package/src/stories/ColorPalette.stories.tsx +83 -2
  62. package/src/stories/ColorPicker.stories.tsx +48 -128
  63. package/src/stories/ContentMessage.stories.tsx +8 -8
  64. package/src/stories/DataTable.stories.tsx +60 -2
  65. package/dist/esm/components/IconToggleButton.d.ts +0 -17
  66. package/dist/esm/components/IconToggleButton.d.ts.map +0 -1
  67. package/dist/esm/components/IconToggleButton.js +0 -37
  68. package/dist/esm/components/IconToggleButton.js.map +0 -1
  69. package/dist/esm/stories/IconToggleButton.stories.d.ts +0 -11
  70. package/dist/esm/stories/IconToggleButton.stories.d.ts.map +0 -1
  71. package/dist/esm/stories/IconToggleButton.stories.js +0 -24
  72. package/dist/esm/stories/IconToggleButton.stories.js.map +0 -1
  73. package/src/components/IconToggleButton.tsx +0 -106
  74. package/src/stories/IconToggleButton.stories.tsx +0 -30
@@ -24,14 +24,6 @@ const colorTable = {
24
24
  emerald: "s-bg-brand-tea-green",
25
25
  };
26
26
 
27
- // const colorTable = {
28
- // pink: "s-bg-brand-support-rose",
29
- // amber: "s-bg-brand-support-golden ",
30
- // sky: "s-bg-brand-support-blue",
31
- // blue: "s-bg-brand-support-blue",
32
- // emerald: "s-bg-brand-support-green",
33
- // };
34
-
35
27
  const textColorTable = {
36
28
  pink: " s-text-brand-red-rose",
37
29
  amber: "s-text-brand-orange-golden",
@@ -87,7 +87,6 @@ export { Div3D, Hover3D } from "./Hover3D";
87
87
  export { Hoverable } from "./Hoverable";
88
88
  export { Icon } from "./Icon";
89
89
  export { IconButton } from "./IconButton";
90
- export { IconToggleButton } from "./IconToggleButton";
91
90
  export { Input } from "./Input";
92
91
  export { Label } from "./Label";
93
92
  export type { LinkWrapperProps } from "./LinkWrapper";
@@ -48,10 +48,10 @@ export const AvatarExample = () => (
48
48
  <div className="s-flex s-gap-4">
49
49
  <Avatar size="xs" emoji="❤️" backgroundColor="s-bg-red-100" />
50
50
  <Avatar size="sm" emoji="💀" backgroundColor="s-bg-gray-800" />
51
- <Avatar size="md" emoji="😂" backgroundColor="s-bg-amber-200" />
51
+ <Avatar size="md" emoji="😂" backgroundColor="s-bg-info-200" />
52
52
  <Avatar size="lg" emoji="🧑‍🚀" backgroundColor="s-bg-gray-200" />
53
- <Avatar size="xl" emoji="👕" backgroundColor="s-bg-sky-200" />
54
- <Avatar size="xxl" emoji="👕" backgroundColor="s-bg-sky-200" />
53
+ <Avatar size="xl" emoji="👕" backgroundColor="s-bg-blue-200" />
54
+ <Avatar size="xxl" emoji="👕" backgroundColor="s-bg-blue-200" />
55
55
  </div>
56
56
  <div className="s-flex s-gap-4">
57
57
  <Avatar size="sm" name="Eleanor Wright" />
@@ -18,6 +18,16 @@ const semanticColorFamilies = [
18
18
  "warning",
19
19
  "info",
20
20
  ] as const;
21
+ const extendedColorFamilies = [
22
+ "blue",
23
+ "violet",
24
+ "pink",
25
+ "red",
26
+ "orange",
27
+ "golden",
28
+ "lime",
29
+ "emerald",
30
+ ] as const;
21
31
 
22
32
  // Shades to display for each color
23
33
  const shades = [
@@ -34,6 +44,21 @@ const shades = [
34
44
  "950",
35
45
  ] as const;
36
46
 
47
+ const semanticShades = [
48
+ "50",
49
+ "100",
50
+ "200",
51
+ "300",
52
+ "400",
53
+ "500",
54
+ "600",
55
+ "700",
56
+ "800",
57
+ "900",
58
+ "950",
59
+ "muted",
60
+ ] as const;
61
+
37
62
  const ColorSwatch = ({
38
63
  colorClass,
39
64
  label,
@@ -63,9 +88,15 @@ const ColorSwatch = ({
63
88
  </div>
64
89
  );
65
90
 
66
- export const ColorPalette = () => {
91
+ export const UIColorPalette = () => {
67
92
  return (
68
93
  <div className="s-flex s-flex-col s-gap-8">
94
+ <div className="s-flex s-flex-col s-gap-2">
95
+ <h2 className="s-text-xl s-font-semibold">UI Color Palette</h2>
96
+ <p className="s-text-sm s-text-primary-600 dark:s-text-primary-400">
97
+ Colors to use in the UI for all direct color references.
98
+ </p>
99
+ </div>
69
100
  {colorFamilies.map((family) => (
70
101
  <div key={family} className="s-flex s-flex-col s-gap-4">
71
102
  <h3 className="s-text-lg s-font-semibold s-capitalize">{family}</h3>
@@ -88,11 +119,17 @@ export const ColorPalette = () => {
88
119
  export const SemanticColorPalette = () => {
89
120
  return (
90
121
  <div className="s-flex s-flex-col s-gap-8">
122
+ <div className="s-flex s-flex-col s-gap-2">
123
+ <h2 className="s-text-xl s-font-semibold">Semantic Color Palette</h2>
124
+ <p className="s-text-sm s-text-primary-600 dark:s-text-primary-400">
125
+ Colors to use in the UI for all functional elements.
126
+ </p>
127
+ </div>
91
128
  {semanticColorFamilies.map((family) => (
92
129
  <div key={family} className="s-flex s-flex-col s-gap-4">
93
130
  <h3 className="s-text-lg s-font-semibold s-capitalize">{family}</h3>
94
131
  <div className="s-flex s-flex-wrap s-gap-4">
95
- {shades.map((shade) => (
132
+ {semanticShades.map((shade) => (
96
133
  <div key={shade}>
97
134
  <ColorSwatch
98
135
  colorClass={`s-bg-${family}-${shade} dark:s-bg-${family}-${shade}-night`}
@@ -153,6 +190,16 @@ const brandColorFamilies = [
153
190
  export const BrandColorPalette = () => {
154
191
  return (
155
192
  <div className="s-flex s-flex-col s-gap-8">
193
+ <div className="s-flex s-flex-col s-gap-2">
194
+ <h2 className="s-text-xl s-font-semibold">Brand Color Palette</h2>
195
+ <p className="s-text-sm s-text-primary-600 dark:s-text-primary-400">
196
+ Colors to use in Marketing / Brand situations:
197
+ </p>
198
+ <ul className="s-ml-4 s-list-disc s-text-sm s-text-primary-600 dark:s-text-primary-400">
199
+ <li>Block colors on the website</li>
200
+ <li>Communication in the product</li>
201
+ </ul>
202
+ </div>
156
203
  {brandColorFamilies.map((family) => (
157
204
  <div key={family.name} className="s-flex s-flex-col s-gap-4">
158
205
  <h3 className="s-text-lg s-font-semibold s-capitalize">
@@ -173,3 +220,37 @@ export const BrandColorPalette = () => {
173
220
  </div>
174
221
  );
175
222
  };
223
+
224
+ export const ExtendedColorPalette = () => {
225
+ return (
226
+ <div className="s-flex s-flex-col s-gap-8">
227
+ <div className="s-flex s-flex-col s-gap-2">
228
+ <h2 className="s-text-xl s-font-semibold">Extended Color Palette</h2>
229
+ <p className="s-text-sm s-text-primary-600 dark:s-text-primary-400">
230
+ These colors are available for product-specific use cases where
231
+ semantic colors might not be appropriate. Use them when you need to
232
+ create visual distinctions, such as:
233
+ </p>
234
+ <ul className="s-ml-4 s-list-disc s-text-sm s-text-primary-600 dark:s-text-primary-400">
235
+ <li>Avatar background colors</li>
236
+ <li>Data visualization</li>
237
+ </ul>
238
+ </div>
239
+ {extendedColorFamilies.map((family) => (
240
+ <div key={family} className="s-flex s-flex-col s-gap-4">
241
+ <h3 className="s-text-lg s-font-semibold s-capitalize">{family}</h3>
242
+ <div className="s-flex s-flex-wrap s-gap-4">
243
+ {shades.map((shade) => (
244
+ <div key={shade}>
245
+ <ColorSwatch
246
+ colorClass={`s-bg-${family}-${shade} dark:s-bg-${family}-${shade}-night`}
247
+ label={`${family}-${shade}`}
248
+ />
249
+ </div>
250
+ ))}
251
+ </div>
252
+ </div>
253
+ ))}
254
+ </div>
255
+ );
256
+ };
@@ -11,46 +11,6 @@ const meta = {
11
11
  export default meta;
12
12
 
13
13
  const colors = [
14
- "bg-amber-100",
15
- "bg-amber-200",
16
- "bg-amber-300",
17
- "bg-amber-400",
18
- "bg-amber-500",
19
- "bg-amber-600",
20
- "bg-amber-700",
21
- "bg-amber-800",
22
- "bg-blue-100",
23
- "bg-blue-200",
24
- "bg-blue-300",
25
- "bg-blue-400",
26
- "bg-blue-500",
27
- "bg-blue-600",
28
- "bg-blue-700",
29
- "bg-blue-800",
30
- "bg-cyan-100",
31
- "bg-cyan-200",
32
- "bg-cyan-300",
33
- "bg-cyan-400",
34
- "bg-cyan-500",
35
- "bg-cyan-600",
36
- "bg-cyan-700",
37
- "bg-cyan-800",
38
- "bg-emerald-100",
39
- "bg-emerald-200",
40
- "bg-emerald-300",
41
- "bg-emerald-400",
42
- "bg-emerald-500",
43
- "bg-emerald-600",
44
- "bg-emerald-700",
45
- "bg-emerald-800",
46
- "bg-fuchsia-100",
47
- "bg-fuchsia-200",
48
- "bg-fuchsia-300",
49
- "bg-fuchsia-400",
50
- "bg-fuchsia-500",
51
- "bg-fuchsia-600",
52
- "bg-fuchsia-700",
53
- "bg-fuchsia-800",
54
14
  "bg-gray-100",
55
15
  "bg-gray-200",
56
16
  "bg-gray-300",
@@ -59,38 +19,22 @@ const colors = [
59
19
  "bg-gray-600",
60
20
  "bg-gray-700",
61
21
  "bg-gray-800",
62
- "bg-green-100",
63
- "bg-green-200",
64
- "bg-green-300",
65
- "bg-green-400",
66
- "bg-green-500",
67
- "bg-green-600",
68
- "bg-green-700",
69
- "bg-green-800",
70
- "bg-indigo-100",
71
- "bg-indigo-200",
72
- "bg-indigo-300",
73
- "bg-indigo-400",
74
- "bg-indigo-500",
75
- "bg-indigo-600",
76
- "bg-indigo-700",
77
- "bg-indigo-800",
78
- "bg-lime-100",
79
- "bg-lime-200",
80
- "bg-lime-300",
81
- "bg-lime-400",
82
- "bg-lime-500",
83
- "bg-lime-600",
84
- "bg-lime-700",
85
- "bg-lime-800",
86
- "bg-orange-100",
87
- "bg-orange-200",
88
- "bg-orange-300",
89
- "bg-orange-400",
90
- "bg-orange-500",
91
- "bg-orange-600",
92
- "bg-orange-700",
93
- "bg-orange-800",
22
+ "bg-blue-100",
23
+ "bg-blue-200",
24
+ "bg-blue-300",
25
+ "bg-blue-400",
26
+ "bg-blue-500",
27
+ "bg-blue-600",
28
+ "bg-blue-700",
29
+ "bg-blue-800",
30
+ "bg-violet-100",
31
+ "bg-violet-200",
32
+ "bg-violet-300",
33
+ "bg-violet-400",
34
+ "bg-violet-500",
35
+ "bg-violet-600",
36
+ "bg-violet-700",
37
+ "bg-violet-800",
94
38
  "bg-pink-100",
95
39
  "bg-pink-200",
96
40
  "bg-pink-300",
@@ -99,14 +43,6 @@ const colors = [
99
43
  "bg-pink-600",
100
44
  "bg-pink-700",
101
45
  "bg-pink-800",
102
- "bg-purple-100",
103
- "bg-purple-200",
104
- "bg-purple-300",
105
- "bg-purple-400",
106
- "bg-purple-500",
107
- "bg-purple-600",
108
- "bg-purple-700",
109
- "bg-purple-800",
110
46
  "bg-red-100",
111
47
  "bg-red-200",
112
48
  "bg-red-300",
@@ -115,54 +51,38 @@ const colors = [
115
51
  "bg-red-600",
116
52
  "bg-red-700",
117
53
  "bg-red-800",
118
- "bg-rose-100",
119
- "bg-rose-200",
120
- "bg-rose-300",
121
- "bg-rose-400",
122
- "bg-rose-500",
123
- "bg-rose-600",
124
- "bg-rose-700",
125
- "bg-rose-800",
126
- "bg-sky-100",
127
- "bg-sky-200",
128
- "bg-sky-300",
129
- "bg-sky-400",
130
- "bg-sky-500",
131
- "bg-sky-600",
132
- "bg-sky-700",
133
- "bg-sky-800",
134
- "bg-stone-100",
135
- "bg-stone-200",
136
- "bg-stone-300",
137
- "bg-stone-400",
138
- "bg-stone-500",
139
- "bg-stone-600",
140
- "bg-stone-700",
141
- "bg-stone-800",
142
- "bg-teal-100",
143
- "bg-teal-200",
144
- "bg-teal-300",
145
- "bg-teal-400",
146
- "bg-teal-500",
147
- "bg-teal-600",
148
- "bg-teal-700",
149
- "bg-teal-800",
150
- "bg-violet-100",
151
- "bg-violet-200",
152
- "bg-violet-300",
153
- "bg-violet-400",
154
- "bg-violet-500",
155
- "bg-violet-600",
156
- "bg-violet-700",
157
- "bg-violet-800",
158
- "bg-yellow-100",
159
- "bg-yellow-200",
160
- "bg-yellow-300",
161
- "bg-yellow-400",
162
- "bg-yellow-500",
163
- "bg-yellow-600",
164
- "bg-yellow-700",
165
- "bg-yellow-800",
54
+ "bg-orange-100",
55
+ "bg-orange-200",
56
+ "bg-orange-300",
57
+ "bg-orange-400",
58
+ "bg-orange-500",
59
+ "bg-orange-600",
60
+ "bg-orange-700",
61
+ "bg-orange-800",
62
+ "bg-golden-100",
63
+ "bg-golden-200",
64
+ "bg-golden-300",
65
+ "bg-golden-400",
66
+ "bg-golden-500",
67
+ "bg-golden-600",
68
+ "bg-golden-700",
69
+ "bg-golden-800",
70
+ "bg-lime-100",
71
+ "bg-lime-200",
72
+ "bg-lime-300",
73
+ "bg-lime-400",
74
+ "bg-lime-500",
75
+ "bg-lime-600",
76
+ "bg-lime-700",
77
+ "bg-lime-800",
78
+ "bg-emerald-100",
79
+ "bg-emerald-200",
80
+ "bg-emerald-300",
81
+ "bg-emerald-400",
82
+ "bg-emerald-500",
83
+ "bg-emerald-600",
84
+ "bg-emerald-700",
85
+ "bg-emerald-800",
166
86
  ];
167
87
 
168
88
  export const ColorPickerExample = () => (
@@ -29,15 +29,15 @@ const meta = {
29
29
  },
30
30
  variant: {
31
31
  options: [
32
- "amber",
33
- "slate",
34
- "emerald",
35
- "pink",
36
- "purple",
32
+ "primary",
37
33
  "warning",
38
- "sky",
39
- "action",
40
- "red",
34
+ "success",
35
+ "highlight",
36
+ "info",
37
+ "green",
38
+ "blue",
39
+ "rose",
40
+ "golden",
41
41
  ],
42
42
  control: { type: "select" },
43
43
  description: "Visual style variant",
@@ -2,6 +2,7 @@ import type { Meta } from "@storybook/react";
2
2
  import {
3
3
  ColumnDef,
4
4
  PaginationState,
5
+ RowSelectionState,
5
6
  SortingState,
6
7
  } from "@tanstack/react-table";
7
8
  import React, { useCallback, useMemo, useState } from "react";
@@ -19,7 +20,7 @@ import {
19
20
  Input,
20
21
  ScrollableDataTable,
21
22
  } from "@sparkle/components/";
22
- import { MenuItem } from "@sparkle/components/DataTable";
23
+ import { createSelectionColumn, MenuItem } from "@sparkle/components/DataTable";
23
24
  import { FolderIcon } from "@sparkle/icons";
24
25
 
25
26
  const meta = {
@@ -45,6 +46,7 @@ type Data = {
45
46
  React.ComponentPropsWithoutRef<typeof DropdownMenu>,
46
47
  "modal"
47
48
  >;
49
+ id?: number;
48
50
  roundedAvatar?: boolean;
49
51
  };
50
52
 
@@ -529,6 +531,7 @@ const createData = (start: number, count: number) => {
529
531
  return Array(count)
530
532
  .fill(0)
531
533
  .map((_, i) => ({
534
+ id: i,
532
535
  name: `Item ${start + i + 1}`,
533
536
  usedBy: Math.floor(Math.random() * 100),
534
537
  addedBy: `UserUserUserUserUserUserUserUserUserUserUser ${Math.floor(Math.random() * 10) + 1}`,
@@ -542,6 +545,7 @@ const createData = (start: number, count: number) => {
542
545
 
543
546
  export const ScrollableDataTableExample = () => {
544
547
  const [filter, setFilter] = useState("");
548
+ const [rowSelection, setRowSelection] = useState<RowSelectionState>({});
545
549
  const [data, setData] = useState(() => createData(0, 50));
546
550
  const [isLoading, setIsLoading] = useState(false);
547
551
 
@@ -559,6 +563,11 @@ export const ScrollableDataTableExample = () => {
559
563
  const columnsWithSize = columns.map((column, index) => {
560
564
  return { ...column, meta: { sizeRatio: index % 2 === 0 ? 15 : 10 } };
561
565
  });
566
+
567
+ const columnsWithSelection: ColumnDef<Data>[] = useMemo(
568
+ () => [createSelectionColumn<Data>(), ...columnsWithSize],
569
+ []
570
+ );
562
571
  return (
563
572
  <div className="s-flex s-w-full s-max-w-4xl s-flex-col s-gap-6">
564
573
  <h3 className="s-text-lg s-font-medium">
@@ -577,10 +586,13 @@ export const ScrollableDataTableExample = () => {
577
586
  data={data}
578
587
  filter={filter}
579
588
  filterColumn="name"
580
- columns={columnsWithSize}
589
+ columns={columnsWithSelection}
581
590
  onLoadMore={loadMore}
582
591
  isLoading={isLoading}
583
592
  maxHeight="s-max-h-[500px]"
593
+ rowSelection={rowSelection}
594
+ setRowSelection={setRowSelection}
595
+ enableRowSelection={true}
584
596
  />
585
597
 
586
598
  <div className="s-text-sm s-text-muted-foreground">
@@ -590,3 +602,49 @@ export const ScrollableDataTableExample = () => {
590
602
  </div>
591
603
  );
592
604
  };
605
+
606
+ export const DataTableWithRowSelectionExample = () => {
607
+ const [rowSelection, setRowSelection] = useState<RowSelectionState>({});
608
+ const [data] = useState<Data[]>(() => createData(0, 10));
609
+ const [filter, setFilter] = useState("");
610
+
611
+ const columnsWithSelection: ColumnDef<Data>[] = useMemo(
612
+ () => [createSelectionColumn<Data>(), ...columns],
613
+ []
614
+ );
615
+
616
+ return (
617
+ <div className="s-flex s-w-full s-max-w-4xl s-flex-col s-gap-6">
618
+ <h3 className="s-text-lg s-font-medium">DataTable with Row Selection</h3>
619
+
620
+ <div className="s-flex s-flex-col s-gap-4">
621
+ <Input
622
+ name="filter"
623
+ placeholder="Filter"
624
+ value={filter}
625
+ onChange={(e) => setFilter(e.target.value)}
626
+ />
627
+
628
+ <DataTable
629
+ data={data}
630
+ filter={filter}
631
+ filterColumn="name"
632
+ columns={columnsWithSelection}
633
+ rowSelection={rowSelection}
634
+ setRowSelection={setRowSelection}
635
+ enableRowSelection={true}
636
+ />
637
+
638
+ <div className="s-rounded-md s-border s-bg-muted/50 s-p-2">
639
+ <h4 className="s-mb-2 s-font-medium">Selection State:</h4>
640
+ <pre className="s-overflow-auto s-text-xs">
641
+ {JSON.stringify(rowSelection, null, 2)}
642
+ </pre>
643
+ <p className="s-mt-2 s-text-sm">
644
+ Selected {Object.keys(rowSelection).length} of {data.length} rows
645
+ </p>
646
+ </div>
647
+ </div>
648
+ </div>
649
+ );
650
+ };
@@ -1,17 +0,0 @@
1
- import React, { ComponentType, MouseEventHandler } from "react";
2
- import { Tooltip } from "./Tooltip";
3
- type IconToggleButtonProps = {
4
- variant?: "secondary" | "tertiary";
5
- onClick?: MouseEventHandler<HTMLButtonElement>;
6
- size?: "xs" | "sm" | "md";
7
- tooltip?: string;
8
- tooltipPosition?: React.ComponentProps<typeof Tooltip>["side"];
9
- icon: ComponentType;
10
- iconSelected?: ComponentType;
11
- className?: string;
12
- disabled?: boolean;
13
- selected?: boolean;
14
- };
15
- export declare function IconToggleButton({ variant, onClick, disabled, tooltip, tooltipPosition, icon, iconSelected, className, selected, size, }: IconToggleButtonProps): React.JSX.Element;
16
- export {};
17
- //# sourceMappingURL=IconToggleButton.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IconToggleButton.d.ts","sourceRoot":"","sources":["../../../src/components/IconToggleButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAKhE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,KAAK,qBAAqB,GAAG;IAC3B,OAAO,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC;IACnC,OAAO,CAAC,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAC/C,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;IAC/D,IAAI,EAAE,aAAa,CAAC;IACpB,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAkCF,wBAAgB,gBAAgB,CAAC,EAC/B,OAAoB,EACpB,OAAO,EACP,QAAgB,EAChB,OAAO,EACP,eAAuB,EACvB,IAAI,EACJ,YAAY,EACZ,SAAc,EACd,QAAgB,EAChB,IAAW,GACZ,EAAE,qBAAqB,qBA0CvB"}
@@ -1,37 +0,0 @@
1
- import React from "react";
2
- import { classNames, cn } from "../lib/utils";
3
- import { Icon } from "./Icon";
4
- import { Tooltip } from "./Tooltip";
5
- var baseClasses = "s-transition-all s-ease-out s-duration-300 s-cursor-pointer hover:s-scale-110";
6
- var iconClasses = {
7
- secondary: {
8
- idle: cn("s-text-foreground", "dark:s-text-foreground-night"),
9
- selected: cn("s-text-highlight-500", "dark:s-text-highlight-500-night"),
10
- hover: cn("hover:s-text-highlight-400", "dark:hover:s-text-highlight-400-night"),
11
- active: cn("active:s-text-highlight-600", "dark:active:s-text-highlight-600-night"),
12
- disabled: cn("s-text-primary-500", "dark:s-text-primary-500-night"),
13
- },
14
- tertiary: {
15
- idle: cn("s-text-primary-600", "dark:s-text-primary-600-night"),
16
- selected: cn("s-text-highlight-500", "dark:s-text-highlight-500-night"),
17
- hover: cn("hover:s-text-highlight-400", "dark:hover:s-text-highlight-400-night"),
18
- active: cn("active:s-text-highlight-600", "dark:active:s-text-highlight-600-night"),
19
- disabled: cn("s-text-primary-500", "dark:s-text-primary-500-night"),
20
- },
21
- };
22
- export function IconToggleButton(_a) {
23
- var _b = _a.variant, variant = _b === void 0 ? "tertiary" : _b, onClick = _a.onClick, _c = _a.disabled, disabled = _c === void 0 ? false : _c, tooltip = _a.tooltip, _d = _a.tooltipPosition, tooltipPosition = _d === void 0 ? "top" : _d, icon = _a.icon, iconSelected = _a.iconSelected, _e = _a.className, className = _e === void 0 ? "" : _e, _f = _a.selected, selected = _f === void 0 ? false : _f, _g = _a.size, size = _g === void 0 ? "sm" : _g;
24
- var iconGroup = iconClasses[variant];
25
- var finalIconClasses = classNames(className, baseClasses, disabled
26
- ? iconGroup.disabled
27
- : selected
28
- ? iconGroup.selected
29
- : iconGroup.idle, disabled ? "" : selected ? "" : iconGroup.hover, disabled ? "" : iconGroup.active);
30
- var IconButtonToggleContent = (React.createElement("button", { className: finalIconClasses, onClick: function (e) {
31
- if (!disabled) {
32
- onClick === null || onClick === void 0 ? void 0 : onClick(e); // Run passed onClick event
33
- }
34
- }, disabled: disabled }, icon && (React.createElement(Icon, { visual: selected && iconSelected ? iconSelected : icon, size: size }))));
35
- return tooltip ? (React.createElement(Tooltip, { trigger: IconButtonToggleContent, label: tooltip, side: tooltipPosition })) : (IconButtonToggleContent);
36
- }
37
- //# sourceMappingURL=IconToggleButton.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IconToggleButton.js","sourceRoot":"","sources":["../../../src/components/IconToggleButton.tsx"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import type { StoryObj } from "@storybook/react";
2
- import { IconToggleButton } from "../index_with_tw_base";
3
- declare const meta: {
4
- title: string;
5
- component: typeof IconToggleButton;
6
- };
7
- export default meta;
8
- type Story = StoryObj<typeof meta>;
9
- export declare const IconToggleButtonSecondary: Story;
10
- export declare const IconToggleButtonTertiary: Story;
11
- //# sourceMappingURL=IconToggleButton.stories.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IconToggleButton.stories.d.ts","sourceRoot":"","sources":["../../../src/stories/IconToggleButton.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAiB,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAExE,QAAA,MAAM,IAAI;;;CAG+B,CAAC;AAE1C,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,yBAAyB,EAAE,KAQvC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,KAOtC,CAAC"}
@@ -1,24 +0,0 @@
1
- import { Cog6ToothIcon, IconToggleButton } from "../index_with_tw_base";
2
- var meta = {
3
- title: "Primitives/IconToggleButton",
4
- component: IconToggleButton,
5
- };
6
- export default meta;
7
- export var IconToggleButtonSecondary = {
8
- args: {
9
- variant: "secondary",
10
- tooltip: "This a secondary IconButton",
11
- icon: Cog6ToothIcon,
12
- iconSelected: Cog6ToothIcon,
13
- selected: false,
14
- },
15
- };
16
- export var IconToggleButtonTertiary = {
17
- args: {
18
- variant: "tertiary",
19
- tooltip: "This a tertiary IconButton",
20
- icon: Cog6ToothIcon,
21
- selected: false,
22
- },
23
- };
24
- //# sourceMappingURL=IconToggleButton.stories.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IconToggleButton.stories.js","sourceRoot":"","sources":["../../../src/stories/IconToggleButton.stories.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAExE,IAAM,IAAI,GAAG;IACX,KAAK,EAAE,6BAA6B;IACpC,SAAS,EAAE,gBAAgB;CACY,CAAC;AAE1C,eAAe,IAAI,CAAC;AAGpB,MAAM,CAAC,IAAM,yBAAyB,GAAU;IAC9C,IAAI,EAAE;QACJ,OAAO,EAAE,WAAW;QACpB,OAAO,EAAE,6BAA6B;QACtC,IAAI,EAAE,aAAa;QACnB,YAAY,EAAE,aAAa;QAC3B,QAAQ,EAAE,KAAK;KAChB;CACF,CAAC;AAEF,MAAM,CAAC,IAAM,wBAAwB,GAAU;IAC7C,IAAI,EAAE;QACJ,OAAO,EAAE,UAAU;QACnB,OAAO,EAAE,4BAA4B;QACrC,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,KAAK;KAChB;CACF,CAAC"}