@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.
- package/dist/cjs/index.js +1 -1
- package/dist/esm/components/AnimatedText.d.ts +1 -1
- package/dist/esm/components/AnimatedText.d.ts.map +1 -1
- package/dist/esm/components/AnimatedText.js +32 -8
- package/dist/esm/components/AnimatedText.js.map +1 -1
- package/dist/esm/components/Avatar.d.ts.map +1 -1
- package/dist/esm/components/Avatar.js +8 -24
- package/dist/esm/components/Avatar.js.map +1 -1
- package/dist/esm/components/Button.d.ts +1 -1
- package/dist/esm/components/Chip.d.ts +1 -1
- package/dist/esm/components/Chip.d.ts.map +1 -1
- package/dist/esm/components/Chip.js +36 -10
- package/dist/esm/components/Chip.js.map +1 -1
- package/dist/esm/components/ColorPicker.js +1 -1
- package/dist/esm/components/ColorPicker.js.map +1 -1
- package/dist/esm/components/ContentMessage.d.ts +1 -1
- package/dist/esm/components/ContentMessage.d.ts.map +1 -1
- package/dist/esm/components/ContentMessage.js +59 -14
- package/dist/esm/components/ContentMessage.js.map +1 -1
- package/dist/esm/components/Counter.d.ts +1 -1
- package/dist/esm/components/DataTable.d.ts +8 -3
- package/dist/esm/components/DataTable.d.ts.map +1 -1
- package/dist/esm/components/DataTable.js +61 -10
- package/dist/esm/components/DataTable.js.map +1 -1
- package/dist/esm/components/Hoverable.d.ts +1 -1
- package/dist/esm/components/PriceTable.d.ts.map +1 -1
- package/dist/esm/components/PriceTable.js +0 -7
- package/dist/esm/components/PriceTable.js.map +1 -1
- package/dist/esm/components/index.d.ts +0 -1
- package/dist/esm/components/index.d.ts.map +1 -1
- package/dist/esm/components/index.js +0 -1
- package/dist/esm/components/index.js.map +1 -1
- package/dist/esm/stories/Avatar.stories.js +3 -3
- package/dist/esm/stories/Avatar.stories.js.map +1 -1
- package/dist/esm/stories/Chip.stories.d.ts +3 -3
- package/dist/esm/stories/ColorPalette.stories.d.ts +2 -1
- package/dist/esm/stories/ColorPalette.stories.d.ts.map +1 -1
- package/dist/esm/stories/ColorPalette.stories.js +65 -13
- package/dist/esm/stories/ColorPalette.stories.js.map +1 -1
- package/dist/esm/stories/ColorPicker.stories.d.ts.map +1 -1
- package/dist/esm/stories/ColorPicker.stories.js +48 -128
- package/dist/esm/stories/ColorPicker.stories.js.map +1 -1
- package/dist/esm/stories/ContentMessage.stories.js +8 -8
- package/dist/esm/stories/ContentMessage.stories.js.map +1 -1
- package/dist/esm/stories/DataTable.stories.d.ts +1 -0
- package/dist/esm/stories/DataTable.stories.d.ts.map +1 -1
- package/dist/esm/stories/DataTable.stories.js +27 -3
- package/dist/esm/stories/DataTable.stories.js.map +1 -1
- package/dist/esm/stories/IconButton.stories.d.ts +1 -1
- package/dist/sparkle.css +345 -1439
- package/package.json +1 -1
- package/src/components/AnimatedText.tsx +64 -19
- package/src/components/Avatar.tsx +8 -24
- package/src/components/Chip.tsx +72 -22
- package/src/components/ColorPicker.tsx +1 -1
- package/src/components/ContentMessage.tsx +68 -14
- package/src/components/DataTable.tsx +87 -0
- package/src/components/PriceTable.tsx +0 -8
- package/src/components/index.ts +0 -1
- package/src/stories/Avatar.stories.tsx +3 -3
- package/src/stories/ColorPalette.stories.tsx +83 -2
- package/src/stories/ColorPicker.stories.tsx +48 -128
- package/src/stories/ContentMessage.stories.tsx +8 -8
- package/src/stories/DataTable.stories.tsx +60 -2
- package/dist/esm/components/IconToggleButton.d.ts +0 -17
- package/dist/esm/components/IconToggleButton.d.ts.map +0 -1
- package/dist/esm/components/IconToggleButton.js +0 -37
- package/dist/esm/components/IconToggleButton.js.map +0 -1
- package/dist/esm/stories/IconToggleButton.stories.d.ts +0 -11
- package/dist/esm/stories/IconToggleButton.stories.d.ts.map +0 -1
- package/dist/esm/stories/IconToggleButton.stories.js +0 -24
- package/dist/esm/stories/IconToggleButton.stories.js.map +0 -1
- package/src/components/IconToggleButton.tsx +0 -106
- 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",
|
package/src/components/index.ts
CHANGED
|
@@ -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-
|
|
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-
|
|
54
|
-
<Avatar size="xxl" emoji="👕" backgroundColor="s-bg-
|
|
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
|
|
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
|
-
{
|
|
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-
|
|
63
|
-
"bg-
|
|
64
|
-
"bg-
|
|
65
|
-
"bg-
|
|
66
|
-
"bg-
|
|
67
|
-
"bg-
|
|
68
|
-
"bg-
|
|
69
|
-
"bg-
|
|
70
|
-
"bg-
|
|
71
|
-
"bg-
|
|
72
|
-
"bg-
|
|
73
|
-
"bg-
|
|
74
|
-
"bg-
|
|
75
|
-
"bg-
|
|
76
|
-
"bg-
|
|
77
|
-
"bg-
|
|
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-
|
|
119
|
-
"bg-
|
|
120
|
-
"bg-
|
|
121
|
-
"bg-
|
|
122
|
-
"bg-
|
|
123
|
-
"bg-
|
|
124
|
-
"bg-
|
|
125
|
-
"bg-
|
|
126
|
-
"bg-
|
|
127
|
-
"bg-
|
|
128
|
-
"bg-
|
|
129
|
-
"bg-
|
|
130
|
-
"bg-
|
|
131
|
-
"bg-
|
|
132
|
-
"bg-
|
|
133
|
-
"bg-
|
|
134
|
-
"bg-
|
|
135
|
-
"bg-
|
|
136
|
-
"bg-
|
|
137
|
-
"bg-
|
|
138
|
-
"bg-
|
|
139
|
-
"bg-
|
|
140
|
-
"bg-
|
|
141
|
-
"bg-
|
|
142
|
-
"bg-
|
|
143
|
-
"bg-
|
|
144
|
-
"bg-
|
|
145
|
-
"bg-
|
|
146
|
-
"bg-
|
|
147
|
-
"bg-
|
|
148
|
-
"bg-
|
|
149
|
-
"bg-
|
|
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
|
-
"
|
|
33
|
-
"slate",
|
|
34
|
-
"emerald",
|
|
35
|
-
"pink",
|
|
36
|
-
"purple",
|
|
32
|
+
"primary",
|
|
37
33
|
"warning",
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
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={
|
|
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"}
|