@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
package/package.json
CHANGED
|
@@ -4,30 +4,75 @@ import React, { ReactNode } from "react";
|
|
|
4
4
|
import { cn } from "@sparkle/lib/utils";
|
|
5
5
|
|
|
6
6
|
const ANIMATED_TEXT_VARIANTS = [
|
|
7
|
+
"primary",
|
|
7
8
|
"muted",
|
|
9
|
+
"white",
|
|
8
10
|
"highlight",
|
|
11
|
+
"success",
|
|
12
|
+
"warning",
|
|
13
|
+
"info",
|
|
14
|
+
"green",
|
|
15
|
+
"blue",
|
|
16
|
+
"rose",
|
|
17
|
+
"golden",
|
|
18
|
+
//to be removed
|
|
9
19
|
"emerald",
|
|
10
20
|
"amber",
|
|
11
21
|
"slate",
|
|
12
22
|
"purple",
|
|
13
|
-
"warning",
|
|
14
23
|
"sky",
|
|
15
24
|
"pink",
|
|
16
25
|
"red",
|
|
17
|
-
"white",
|
|
18
26
|
] as const;
|
|
19
27
|
|
|
20
28
|
type AnimatedTextVariantType = (typeof ANIMATED_TEXT_VARIANTS)[number];
|
|
21
29
|
|
|
22
30
|
const animatedVariants: Record<AnimatedTextVariantType, string> = {
|
|
31
|
+
primary: cn(
|
|
32
|
+
"s-from-primary-800 s-via-primary-950 s-via-50% s-to-primary-800",
|
|
33
|
+
"dark:s-from-primary-800-night dark:s-via-primary-950-night dark:s-via-50% dark:s-to-primary-800-night"
|
|
34
|
+
),
|
|
23
35
|
muted: cn(
|
|
24
36
|
"s-from-transparent s-via-primary-950/80 s-via-50% s-to-transparent",
|
|
25
37
|
"dark:s-from-transparent dark:s-via-primary-50/80 dark:s-via-50% dark:s-to-transparent"
|
|
26
38
|
),
|
|
39
|
+
white: cn(
|
|
40
|
+
"s-from-primary-600 s-via-primary-950 s-via-50% s-to-primary-600",
|
|
41
|
+
"dark:s-from-primary-600-night dark:s-via-primary-950-night dark:s-via-50% dark:s-to-primary-600-night"
|
|
42
|
+
),
|
|
27
43
|
highlight: cn(
|
|
28
44
|
"s-from-highlight s-via-highlight-800 s-via-50% s-to-highlight",
|
|
29
45
|
"dark:s-from-highlight-night dark:s-via-highlight-800-night dark:s-via-50% dark:s-to-highlight-night"
|
|
30
46
|
),
|
|
47
|
+
warning: cn(
|
|
48
|
+
"s-from-warning-800 s-via-warning-950 s-via-50% s-to-warning-800",
|
|
49
|
+
"dark:s-from-warning-800-night dark:s-via-warning-950-night dark:s-via-50% dark:s-to-warning-800-night"
|
|
50
|
+
),
|
|
51
|
+
success: cn(
|
|
52
|
+
"s-from-success-800 s-via-success-950 s-via-50% s-to-success-800",
|
|
53
|
+
"dark:s-from-success-800-night dark:s-via-success-950-night dark:s-via-50% dark:s-to-success-800-night"
|
|
54
|
+
),
|
|
55
|
+
info: cn(
|
|
56
|
+
"s-from-info-800 s-via-info-950 s-via-50% s-to-info-800",
|
|
57
|
+
"dark:s-from-info-800-night dark:s-via-info-950-night dark:s-via-50% dark:s-to-info-800-night"
|
|
58
|
+
),
|
|
59
|
+
green: cn(
|
|
60
|
+
"s-from-emerald-800 s-via-emerald-950 s-via-50% s-to-emerald-800",
|
|
61
|
+
"dark:s-from-emerald-800-night dark:s-via-emerald-950-night dark:s-via-50% dark:s-to-emerald-800-night"
|
|
62
|
+
),
|
|
63
|
+
blue: cn(
|
|
64
|
+
"s-from-sky-800 s-via-sky-950 s-via-50% s-to-sky-800",
|
|
65
|
+
"dark:s-from-sky-800-night dark:s-via-sky-950-night dark:s-via-50% dark:s-to-sky-800-night"
|
|
66
|
+
),
|
|
67
|
+
rose: cn(
|
|
68
|
+
"s-from-rose-800 s-via-rose-950 s-via-50% s-to-rose-800",
|
|
69
|
+
"dark:s-from-rose-800-night dark:s-via-rose-950-night dark:s-via-50% dark:s-to-rose-800-night"
|
|
70
|
+
),
|
|
71
|
+
golden: cn(
|
|
72
|
+
"s-from-golden-800 s-via-golden-950 s-via-50% s-to-golden-800",
|
|
73
|
+
"dark:s-from-golden-800-night dark:s-via-golden-950-night dark:s-via-50% dark:s-to-golden-800-night"
|
|
74
|
+
),
|
|
75
|
+
// To be removed
|
|
31
76
|
emerald: cn(
|
|
32
77
|
"s-from-emerald-800 s-via-emerald-950 s-via-50% s-to-emerald-800",
|
|
33
78
|
"dark:s-from-emerald-800-night dark:s-via-emerald-950-night dark:s-via-50% dark:s-to-emerald-800-night"
|
|
@@ -36,9 +81,13 @@ const animatedVariants: Record<AnimatedTextVariantType, string> = {
|
|
|
36
81
|
"s-from-amber-800 s-via-amber-950 s-via-50% s-to-amber-800",
|
|
37
82
|
"dark:s-from-amber-800-night dark:s-via-amber-950-night dark:s-via-50% dark:s-to-amber-800-night"
|
|
38
83
|
),
|
|
39
|
-
|
|
40
|
-
"s-from-
|
|
41
|
-
"dark:s-from-
|
|
84
|
+
red: cn(
|
|
85
|
+
"s-from-red-800 s-via-red-950 s-via-50% s-to-red-800",
|
|
86
|
+
"dark:s-from-red-800-night dark:s-via-red-950-night dark:s-via-50% dark:s-to-red-800-night"
|
|
87
|
+
),
|
|
88
|
+
sky: cn(
|
|
89
|
+
"s-from-sky-800 s-via-sky-950 s-via-50% s-to-sky-800",
|
|
90
|
+
"dark:s-from-sky-800-night dark:s-via-sky-950-night dark:s-via-50% dark:s-to-sky-800-night"
|
|
42
91
|
),
|
|
43
92
|
slate: cn(
|
|
44
93
|
"s-from-primary-600 s-via-primary-950 s-via-50% s-to-primary-600",
|
|
@@ -48,22 +97,10 @@ const animatedVariants: Record<AnimatedTextVariantType, string> = {
|
|
|
48
97
|
"s-from-purple-800 s-via-purple-950 s-via-50% s-to-purple-800",
|
|
49
98
|
"dark:s-from-purple-800-night dark:s-via-purple-950-night dark:s-via-50% dark:s-to-purple-800-night"
|
|
50
99
|
),
|
|
51
|
-
warning: cn(
|
|
52
|
-
"s-from-warning-800 s-via-warning-950 s-via-50% s-to-warning-800",
|
|
53
|
-
"dark:s-from-warning-800-night dark:s-via-warning-950-night dark:s-via-50% dark:s-to-warning-800-night"
|
|
54
|
-
),
|
|
55
|
-
sky: cn(
|
|
56
|
-
"s-from-sky-800 s-via-sky-950 s-via-50% s-to-sky-800",
|
|
57
|
-
"dark:s-from-sky-800-night dark:s-via-sky-950-night dark:s-via-50% dark:s-to-sky-800-night"
|
|
58
|
-
),
|
|
59
100
|
pink: cn(
|
|
60
101
|
"s-from-pink-800 s-via-pink-950 s-via-50% s-to-pink-800",
|
|
61
102
|
"dark:s-from-pink-800-night dark:s-via-pink-950-night dark:s-via-50% dark:s-to-pink-800-night"
|
|
62
103
|
),
|
|
63
|
-
red: cn(
|
|
64
|
-
"s-from-red-800 s-via-red-950 s-via-50% s-to-red-800",
|
|
65
|
-
"dark:s-from-red-800-night dark:s-via-red-950-night dark:s-via-50% dark:s-to-red-800-night"
|
|
66
|
-
),
|
|
67
104
|
};
|
|
68
105
|
|
|
69
106
|
const animVariants = cva(
|
|
@@ -79,14 +116,22 @@ const animVariants = cva(
|
|
|
79
116
|
);
|
|
80
117
|
|
|
81
118
|
const animatedTextVariants: Record<AnimatedTextVariantType, string> = {
|
|
119
|
+
primary: "s-text-primary-800 dark:s-text-primary-800-night",
|
|
120
|
+
white: "s-text-muted-foreground dark:s-text-muted-foreground-night",
|
|
82
121
|
muted: "s-text-muted-foreground dark:s-text-muted-foreground-night",
|
|
83
122
|
highlight: "s-text-highlight dark:s-text-highlight-night",
|
|
123
|
+
success: "s-text-success-800 dark:s-text-success-800-night",
|
|
124
|
+
info: "s-text-info-800 dark:s-text-info-800-night",
|
|
125
|
+
warning: "s-text-warning-800 dark:s-text-warning-800-night",
|
|
126
|
+
green: "s-text-emerald-800 dark:s-text-emerald-800-night",
|
|
127
|
+
blue: "s-text-sky-800 dark:s-text-sky-800-night",
|
|
128
|
+
rose: "s-text-rose-800 dark:s-text-rose-800-night",
|
|
129
|
+
golden: "s-text-golden-800 dark:s-text-rose-golden-night",
|
|
130
|
+
//To be removed
|
|
84
131
|
emerald: "s-text-emerald-800 dark:s-text-emerald-800-night",
|
|
85
132
|
amber: "s-text-amber-800 dark:s-text-amber-800-night",
|
|
86
133
|
slate: "s-text-muted-foreground dark:s-text-muted-foreground-night",
|
|
87
|
-
white: "s-text-muted-foreground dark:s-text-muted-foreground-night",
|
|
88
134
|
purple: "s-text-purple-800 dark:s-text-purple-800-night",
|
|
89
|
-
warning: "s-text-warning-800 dark:s-text-warning-800-night",
|
|
90
135
|
sky: "s-text-sky-800 dark:s-text-sky-800-night",
|
|
91
136
|
pink: "s-text-pink-800 dark:s-text-pink-800-night",
|
|
92
137
|
red: "s-text-red-800 dark:s-text-red-800-night",
|
|
@@ -106,22 +106,14 @@ const getColor = (name: string) => {
|
|
|
106
106
|
hash = name.charCodeAt(i) + ((hash << 5) - hash);
|
|
107
107
|
}
|
|
108
108
|
const colors = [
|
|
109
|
+
"s-bg-blue-300",
|
|
110
|
+
"s-bg-violet-300",
|
|
111
|
+
"s-bg-pink-300",
|
|
109
112
|
"s-bg-red-300",
|
|
110
113
|
"s-bg-orange-300",
|
|
111
|
-
"s-bg-
|
|
112
|
-
"s-bg-yellow-300",
|
|
114
|
+
"s-bg-golden-300",
|
|
113
115
|
"s-bg-lime-300",
|
|
114
|
-
"s-bg-green-300",
|
|
115
116
|
"s-bg-emerald-300",
|
|
116
|
-
"s-bg-teal-300",
|
|
117
|
-
"s-bg-cyan-300",
|
|
118
|
-
"s-bg-sky-300",
|
|
119
|
-
"s-bg-blue-300",
|
|
120
|
-
"s-bg-indigo-300",
|
|
121
|
-
"s-bg-violet-300",
|
|
122
|
-
"s-bg-purple-300",
|
|
123
|
-
"s-bg-fuchsia-300",
|
|
124
|
-
"s-bg-rose-300",
|
|
125
117
|
];
|
|
126
118
|
return colors[Math.abs(hash) % colors.length];
|
|
127
119
|
};
|
|
@@ -135,22 +127,14 @@ const getTextVariant = (name: string) => {
|
|
|
135
127
|
hash = name.charCodeAt(i) + ((hash << 5) - hash);
|
|
136
128
|
}
|
|
137
129
|
const txtColors = [
|
|
130
|
+
"s-text-blue-700",
|
|
131
|
+
"s-text-violet-700",
|
|
132
|
+
"s-text-pink-700",
|
|
138
133
|
"s-text-red-700",
|
|
139
134
|
"s-text-orange-700",
|
|
140
|
-
"s-text-
|
|
141
|
-
"s-text-yellow-700",
|
|
135
|
+
"s-text-golden-700",
|
|
142
136
|
"s-text-lime-700",
|
|
143
|
-
"s-text-green-700",
|
|
144
137
|
"s-text-emerald-700",
|
|
145
|
-
"s-text-teal-700",
|
|
146
|
-
"s-text-cyan-700",
|
|
147
|
-
"s-text-sky-700",
|
|
148
|
-
"s-text-blue-700",
|
|
149
|
-
"s-text-indigo-700",
|
|
150
|
-
"s-text-violet-700",
|
|
151
|
-
"s-text-purple-700",
|
|
152
|
-
"s-text-fuchsia-700",
|
|
153
|
-
"s-text-rose-700",
|
|
154
138
|
];
|
|
155
139
|
return txtColors[Math.abs(hash) % txtColors.length];
|
|
156
140
|
};
|
package/src/components/Chip.tsx
CHANGED
|
@@ -16,15 +16,23 @@ export const CHIP_SIZES = ["xs", "sm"] as const;
|
|
|
16
16
|
type ChipSizeType = (typeof CHIP_SIZES)[number];
|
|
17
17
|
|
|
18
18
|
export const CHIP_COLORS = [
|
|
19
|
+
"primary",
|
|
20
|
+
"white",
|
|
21
|
+
"success",
|
|
22
|
+
"warning",
|
|
23
|
+
"info",
|
|
24
|
+
"highlight",
|
|
25
|
+
"green",
|
|
26
|
+
"blue",
|
|
27
|
+
"rose",
|
|
28
|
+
"golden",
|
|
19
29
|
"emerald",
|
|
20
30
|
"amber",
|
|
21
31
|
"slate",
|
|
22
|
-
"purple",
|
|
23
|
-
"warning",
|
|
24
32
|
"sky",
|
|
25
33
|
"pink",
|
|
26
34
|
"red",
|
|
27
|
-
"
|
|
35
|
+
"purple",
|
|
28
36
|
] as const;
|
|
29
37
|
|
|
30
38
|
type ChipColorType = (typeof CHIP_COLORS)[number];
|
|
@@ -35,6 +43,55 @@ const sizeVariants: Record<ChipSizeType, string> = {
|
|
|
35
43
|
};
|
|
36
44
|
|
|
37
45
|
const backgroundVariants: Record<ChipColorType, string> = {
|
|
46
|
+
primary: cn(
|
|
47
|
+
"s-bg-muted-background s-border-border",
|
|
48
|
+
"dark:s-bg-muted-background-night dark:s-border-border-night"
|
|
49
|
+
),
|
|
50
|
+
white: cn(
|
|
51
|
+
"s-bg-background s-border-border",
|
|
52
|
+
"dark:s-bg-muted-background-night dark:s-border-border-night"
|
|
53
|
+
),
|
|
54
|
+
highlight: cn(
|
|
55
|
+
"s-bg-highlight-100 s-border-highlight-200",
|
|
56
|
+
"dark:s-bg-highlight-100-night dark:s-border-highlight-200-night"
|
|
57
|
+
),
|
|
58
|
+
success: cn(
|
|
59
|
+
"s-bg-success-100 s-border-success-200",
|
|
60
|
+
"dark:s-bg-success-100-night dark:s-border-success-200-night"
|
|
61
|
+
),
|
|
62
|
+
info: cn(
|
|
63
|
+
"s-bg-info-100 s-border-info-200",
|
|
64
|
+
"dark:s-bg-info-100-night dark:s-border-info-200-night"
|
|
65
|
+
),
|
|
66
|
+
warning: cn(
|
|
67
|
+
"s-bg-warning-100 s-border-warning-200",
|
|
68
|
+
"dark:s-bg-warning-100-night dark:s-border-warning-200-night"
|
|
69
|
+
),
|
|
70
|
+
green: cn(
|
|
71
|
+
"s-bg-green-100 s-border-green-200",
|
|
72
|
+
"dark:s-bg-green-100-night dark:s-border-green-200-night"
|
|
73
|
+
),
|
|
74
|
+
blue: cn(
|
|
75
|
+
"s-bg-sky-100 s-border-sky-200",
|
|
76
|
+
"dark:s-bg-sky-100-night dark:s-border-sky-200-night"
|
|
77
|
+
),
|
|
78
|
+
rose: cn(
|
|
79
|
+
"s-bg-rose-100 s-border-rose-200",
|
|
80
|
+
"dark:s-bg-rose-100-night dark:s-border-rose-200-night"
|
|
81
|
+
),
|
|
82
|
+
golden: cn(
|
|
83
|
+
"s-bg-golden-100 s-border-golden-200",
|
|
84
|
+
"dark:s-bg-golden-100-night dark:s-border-golden-200-night"
|
|
85
|
+
),
|
|
86
|
+
// To be removed
|
|
87
|
+
slate: cn(
|
|
88
|
+
"s-bg-muted-background s-border-border",
|
|
89
|
+
"dark:s-bg-muted-background-night dark:s-border-border-night"
|
|
90
|
+
),
|
|
91
|
+
red: cn(
|
|
92
|
+
"s-bg-red-100 s-border-red-200",
|
|
93
|
+
"dark:s-bg-red-100-night dark:s-border-red-200-night"
|
|
94
|
+
),
|
|
38
95
|
emerald: cn(
|
|
39
96
|
"s-bg-emerald-100 s-border-emerald-200",
|
|
40
97
|
"dark:s-bg-emerald-100-night dark:s-border-emerald-200-night"
|
|
@@ -43,22 +100,10 @@ const backgroundVariants: Record<ChipColorType, string> = {
|
|
|
43
100
|
"s-bg-amber-100 s-border-amber-200",
|
|
44
101
|
"dark:s-bg-amber-100-night dark:s-border-amber-200-night"
|
|
45
102
|
),
|
|
46
|
-
slate: cn(
|
|
47
|
-
"s-bg-muted-background s-border-border",
|
|
48
|
-
"dark:s-bg-muted-background-night dark:s-border-border-night"
|
|
49
|
-
),
|
|
50
103
|
purple: cn(
|
|
51
104
|
"s-bg-purple-100 s-border-purple-200",
|
|
52
105
|
"dark:s-bg-purple-100-night dark:s-border-purple-200-night"
|
|
53
106
|
),
|
|
54
|
-
white: cn(
|
|
55
|
-
"s-bg-background s-border-border",
|
|
56
|
-
"dark:s-bg-muted-background-night dark:s-border-border-night"
|
|
57
|
-
),
|
|
58
|
-
warning: cn(
|
|
59
|
-
"s-bg-warning-100 s-border-warning-200",
|
|
60
|
-
"dark:s-bg-warning-100-night dark:s-border-warning-200-night"
|
|
61
|
-
),
|
|
62
107
|
sky: cn(
|
|
63
108
|
"s-bg-sky-100 s-border-sky-200",
|
|
64
109
|
"dark:s-bg-sky-100-night dark:s-border-sky-200-night"
|
|
@@ -67,22 +112,27 @@ const backgroundVariants: Record<ChipColorType, string> = {
|
|
|
67
112
|
"s-bg-pink-100 s-border-pink-200",
|
|
68
113
|
"dark:s-bg-pink-100-night dark:s-border-pink-200-night"
|
|
69
114
|
),
|
|
70
|
-
red: cn(
|
|
71
|
-
"s-bg-red-100 s-border-red-200",
|
|
72
|
-
"dark:s-bg-red-100-night dark:s-border-red-200-night"
|
|
73
|
-
),
|
|
74
115
|
};
|
|
75
116
|
|
|
76
117
|
const textVariants: Record<ChipColorType, string> = {
|
|
118
|
+
primary: "s-text-primary-900 dark:s-text-primary-900-night",
|
|
119
|
+
white: "s-text-foreground dark:s-text-foreground-night",
|
|
120
|
+
highlight: "s-text-highlight-900 dark:s-text-highlight-900-night",
|
|
121
|
+
success: "s-text-success-900 dark:s-text-success-900-night",
|
|
122
|
+
warning: "s-text-warning-900 dark:s-text-warning-900-night",
|
|
123
|
+
info: "s-text-info-900 dark:s-text-info-900-night",
|
|
124
|
+
green: "s-text-green-900 dark:s-text-green-900-night",
|
|
125
|
+
blue: "s-text-sky-900 dark:s-text-sky-900-night",
|
|
126
|
+
rose: "s-text-rose-900 dark:s-text-rose-900-night",
|
|
127
|
+
golden: "s-text-golden-900 dark:s-text-golden-900-night",
|
|
128
|
+
// To be removed
|
|
77
129
|
emerald: "s-text-emerald-900 dark:s-text-emerald-900-night",
|
|
78
130
|
amber: "s-text-amber-900 dark:s-text-amber-900-night",
|
|
79
131
|
slate: "s-text-foreground dark:s-text-foreground-night",
|
|
80
|
-
purple: "s-text-purple-900 dark:s-text-purple-900-night",
|
|
81
|
-
warning: "s-text-warning-900 dark:s-text-warning-900-night",
|
|
82
132
|
sky: "s-text-sky-900 dark:s-text-sky-900-night",
|
|
83
133
|
pink: "s-text-pink-900 dark:s-text-pink-900-night",
|
|
84
134
|
red: "s-text-red-900 dark:s-text-red-900-night",
|
|
85
|
-
|
|
135
|
+
purple: "s-text-purple-900 dark:s-text-purple-900-night",
|
|
86
136
|
};
|
|
87
137
|
|
|
88
138
|
const chipVariants = cva("s-inline-flex s-box-border s-items-center", {
|
|
@@ -24,7 +24,7 @@ export function ColorPicker<T extends string>({
|
|
|
24
24
|
onColorSelect,
|
|
25
25
|
}: ColorPickerProps<T>) {
|
|
26
26
|
return (
|
|
27
|
-
<div className="s-grid-rows-20 w-auto s-grid s-grid-cols-8 s-gap-1.5 s-rounded s-p-2
|
|
27
|
+
<div className="s-grid-rows-20 w-auto s-grid s-grid-cols-8 s-gap-1.5 s-rounded s-p-2">
|
|
28
28
|
{colors.map((color) => {
|
|
29
29
|
return (
|
|
30
30
|
<ColorSwatch
|
|
@@ -9,11 +9,20 @@ const CONTENT_MESSAGE_VARIANTS = [
|
|
|
9
9
|
"amber",
|
|
10
10
|
"slate",
|
|
11
11
|
"purple",
|
|
12
|
-
"warning",
|
|
13
12
|
"sky",
|
|
14
13
|
"pink",
|
|
15
14
|
"action",
|
|
16
15
|
"red",
|
|
16
|
+
//New variants
|
|
17
|
+
"primary",
|
|
18
|
+
"warning",
|
|
19
|
+
"success",
|
|
20
|
+
"highlight",
|
|
21
|
+
"info",
|
|
22
|
+
"green",
|
|
23
|
+
"blue",
|
|
24
|
+
"rose",
|
|
25
|
+
"golden",
|
|
17
26
|
] as const;
|
|
18
27
|
|
|
19
28
|
type ContentMessageVariantType = (typeof CONTENT_MESSAGE_VARIANTS)[number];
|
|
@@ -23,20 +32,38 @@ const CONTENT_MESSAGE_SIZES = ["sm", "md", "lg"] as const;
|
|
|
23
32
|
type ContentMessageSizeType = (typeof CONTENT_MESSAGE_SIZES)[number];
|
|
24
33
|
|
|
25
34
|
const contentMessageVariants = cva(
|
|
26
|
-
"s-flex s-flex-col s-gap-1 s-rounded-2xl s-p-4",
|
|
35
|
+
"s-flex s-flex-col s-gap-1 s-rounded-2xl s-p-4 s-border",
|
|
27
36
|
{
|
|
28
37
|
variants: {
|
|
29
38
|
variant: {
|
|
30
|
-
emerald:
|
|
31
|
-
|
|
39
|
+
emerald:
|
|
40
|
+
"s-bg-green-100 dark:s-bg-green-100-night s-border-transparent",
|
|
41
|
+
amber:
|
|
42
|
+
"s-bg-golden-100 dark:s-bg-golden-100-night s-border-transparent",
|
|
32
43
|
slate:
|
|
33
44
|
"s-bg-muted-background dark:s-bg-muted-background-night s-border s-border-border dark:s-border-border-night",
|
|
34
|
-
purple:
|
|
35
|
-
|
|
36
|
-
sky: "s-bg-sky-100 dark:s-bg-sky-100-night",
|
|
37
|
-
pink: "s-bg-pink-100 dark:s-bg-pink-100-night",
|
|
38
|
-
action:
|
|
39
|
-
|
|
45
|
+
purple:
|
|
46
|
+
"s-bg-purple-100 dark:s-bg-purple-100-night s-border-transparent",
|
|
47
|
+
sky: "s-bg-sky-100 dark:s-bg-sky-100-night s-border-transparent",
|
|
48
|
+
pink: "s-bg-pink-100 dark:s-bg-pink-100-night s-border-transparent",
|
|
49
|
+
action:
|
|
50
|
+
"s-bg-highlight-100 dark:s-bg-highlight-100-night s-border-transparent",
|
|
51
|
+
red: "s-bg-red-100 dark:s-bg-red-100-night s-border-transparent",
|
|
52
|
+
// tbr
|
|
53
|
+
primary:
|
|
54
|
+
"s-bg-muted-background dark:s-bg-muted-background-night s-border-border dark:s-border-border-night",
|
|
55
|
+
success:
|
|
56
|
+
"s-bg-success-100 dark:s-bg-success-100-night s-border-transparent",
|
|
57
|
+
warning:
|
|
58
|
+
"s-bg-warning-100 dark:s-bg-warning-100-night s-border-transparent",
|
|
59
|
+
highlight:
|
|
60
|
+
"s-bg-highlight-100 dark:s-bg-highlight-100-night s-border-transparent",
|
|
61
|
+
info: "s-bg-info-100 dark:s-bg-info-100-night s-border-transparent",
|
|
62
|
+
green: "s-bg-green-100 dark:s-bg-green-100-night s-border-transparent",
|
|
63
|
+
blue: "s-bg-blue-100 dark:s-bg-blue-100-night s-border-transparent",
|
|
64
|
+
rose: "s-bg-rose-100 dark:s-bg-rose-100-night s-border-transparent",
|
|
65
|
+
golden:
|
|
66
|
+
"s-bg-golden-100 dark:s-bg-golden-100-night s-border-transparent",
|
|
40
67
|
},
|
|
41
68
|
size: {
|
|
42
69
|
lg: "",
|
|
@@ -45,7 +72,7 @@ const contentMessageVariants = cva(
|
|
|
45
72
|
},
|
|
46
73
|
},
|
|
47
74
|
defaultVariants: {
|
|
48
|
-
variant: "
|
|
75
|
+
variant: "info",
|
|
49
76
|
size: "md",
|
|
50
77
|
},
|
|
51
78
|
}
|
|
@@ -58,11 +85,20 @@ const iconVariants = cva("s-shrink-0", {
|
|
|
58
85
|
amber: "s-text-golden-800 dark:s-text-golden-800-night",
|
|
59
86
|
slate: "s-text-primary-800 dark:s-text-primary-800-night",
|
|
60
87
|
purple: "s-text-purple-800 dark:s-text-purple-800-night",
|
|
61
|
-
warning: "s-text-warning-800 dark:s-text-warning-800-night",
|
|
62
88
|
sky: "s-text-sky-800 dark:s-text-sky-800-night",
|
|
63
89
|
pink: "s-text-pink-800 dark:s-text-pink-800-night",
|
|
64
90
|
action: "s-text-highlight-800 dark:s-text-highlight-800-night",
|
|
65
91
|
red: "s-text-red-800 dark:s-text-red-800-night",
|
|
92
|
+
// tbr
|
|
93
|
+
primary: "s-text-primary-800 dark:s-text-primary-800-night",
|
|
94
|
+
warning: "s-text-warning-800 dark:s-text-warning-800-night",
|
|
95
|
+
success: "s-text-success-800 dark:s-text-success-800-night",
|
|
96
|
+
highlight: "s-text-highlight-800 dark:s-text-highlight-800-night",
|
|
97
|
+
info: "s-text-info-800 dark:s-text-info-800-night",
|
|
98
|
+
green: "s-text-green-800 dark:s-text-green-800-night",
|
|
99
|
+
blue: "s-text-blue-800 dark:s-text-blue-800-night",
|
|
100
|
+
rose: "s-text-rose-800 dark:s-text-rose-800-night",
|
|
101
|
+
golden: "s-text-golden-800 dark:s-text-golden-800-night",
|
|
66
102
|
},
|
|
67
103
|
},
|
|
68
104
|
});
|
|
@@ -74,11 +110,20 @@ const titleVariants = cva("s-text-sm s-font-semibold", {
|
|
|
74
110
|
amber: "s-text-golden-800 dark:s-text-golden-800-night",
|
|
75
111
|
slate: "s-text-foreground dark:s-text-foreground-night",
|
|
76
112
|
purple: "s-text-purple-800 dark:s-text-purple-800-night",
|
|
77
|
-
warning: "s-text-warning-800 dark:s-text-warning-800-night",
|
|
78
113
|
sky: "s-text-sky-800 dark:s-text-sky-800-night",
|
|
79
114
|
pink: "s-text-pink-800 dark:s-text-pink-800-night",
|
|
80
115
|
action: "s-text-highlight-800 dark:s-text-highlight-800-night",
|
|
81
116
|
red: "s-text-red-800 dark:s-text-red-800-night",
|
|
117
|
+
// tbr
|
|
118
|
+
primary: "s-text-foreground dark:s-text-foreground-night",
|
|
119
|
+
warning: "s-text-warning-800 dark:s-text-warning-800-night",
|
|
120
|
+
success: "s-text-success-800 dark:s-text-success-800-night",
|
|
121
|
+
highlight: "s-text-highlight-800 dark:s-text-highlight-800-night",
|
|
122
|
+
info: "s-text-info-800 dark:s-text-info-800-night",
|
|
123
|
+
green: "s-text-green-800 dark:s-text-green-800-night",
|
|
124
|
+
blue: "s-text-blue-800 dark:s-text-blue-800-night",
|
|
125
|
+
rose: "s-text-rose-800 dark:s-text-rose-800-night",
|
|
126
|
+
golden: "s-text-golden-800 dark:s-text-golden-800-night",
|
|
82
127
|
},
|
|
83
128
|
},
|
|
84
129
|
});
|
|
@@ -90,11 +135,20 @@ const textVariants = cva("s-text-sm", {
|
|
|
90
135
|
amber: "s-text-golden-950 dark:s-text-golden-950-night",
|
|
91
136
|
slate: "s-text-muted-foreground dark:s-text-muted-foreground-night",
|
|
92
137
|
purple: "s-text-purple-950 dark:s-text-purple-950-night",
|
|
93
|
-
warning: "s-text-warning-950 dark:s-text-warning-950-night",
|
|
94
138
|
sky: "s-text-sky-950 dark:s-text-sky-950-night",
|
|
95
139
|
pink: "s-text-pink-950 dark:s-text-pink-950-night",
|
|
96
140
|
action: "s-text-highlight-950 dark:s-text-highlight-950-night",
|
|
97
141
|
red: "s-text-red-950 dark:s-text-red-950-night",
|
|
142
|
+
// tbr
|
|
143
|
+
primary: "s-text-muted-foreground dark:s-text-muted-foreground-night",
|
|
144
|
+
warning: "s-text-warning-950 dark:s-text-warning-950-night",
|
|
145
|
+
success: "s-text-success-950 dark:s-text-success-950-night",
|
|
146
|
+
highlight: "s-text-highlight-950 dark:s-text-highlight-950-night",
|
|
147
|
+
info: "s-text-info-950 dark:s-text-info-950-night",
|
|
148
|
+
green: "s-text-green-950 dark:s-text-green-950-night",
|
|
149
|
+
blue: "s-text-blue-950 dark:s-text-blue-950-night",
|
|
150
|
+
rose: "s-text-rose-950 dark:s-text-rose-950-night",
|
|
151
|
+
golden: "s-text-golden-950 dark:s-text-golden-950-night",
|
|
98
152
|
},
|
|
99
153
|
},
|
|
100
154
|
});
|
|
@@ -8,6 +8,8 @@ import {
|
|
|
8
8
|
getPaginationRowModel,
|
|
9
9
|
getSortedRowModel,
|
|
10
10
|
PaginationState,
|
|
11
|
+
Row,
|
|
12
|
+
RowSelectionState,
|
|
11
13
|
type SortingState,
|
|
12
14
|
Updater,
|
|
13
15
|
useReactTable,
|
|
@@ -18,6 +20,7 @@ import React, { ReactNode, useEffect, useRef, useState } from "react";
|
|
|
18
20
|
import {
|
|
19
21
|
Avatar,
|
|
20
22
|
Button,
|
|
23
|
+
Checkbox,
|
|
21
24
|
DropdownMenu,
|
|
22
25
|
DropdownMenuContent,
|
|
23
26
|
DropdownMenuGroup,
|
|
@@ -95,6 +98,9 @@ interface DataTableProps<TData extends TBaseData> {
|
|
|
95
98
|
setSorting?: (sorting: SortingState) => void;
|
|
96
99
|
isServerSideSorting?: boolean;
|
|
97
100
|
disablePaginationNumbers?: boolean;
|
|
101
|
+
rowSelection?: RowSelectionState;
|
|
102
|
+
setRowSelection?: (rowSelection: RowSelectionState) => void;
|
|
103
|
+
enableRowSelection?: boolean | ((row: Row<TData>) => boolean);
|
|
98
104
|
}
|
|
99
105
|
|
|
100
106
|
export function DataTable<TData extends TBaseData>({
|
|
@@ -113,6 +119,9 @@ export function DataTable<TData extends TBaseData>({
|
|
|
113
119
|
setSorting,
|
|
114
120
|
isServerSideSorting = false,
|
|
115
121
|
disablePaginationNumbers = false,
|
|
122
|
+
rowSelection,
|
|
123
|
+
setRowSelection,
|
|
124
|
+
enableRowSelection = false,
|
|
116
125
|
}: DataTableProps<TData>) {
|
|
117
126
|
const windowSize = useWindowSize();
|
|
118
127
|
|
|
@@ -140,6 +149,15 @@ export function DataTable<TData extends TBaseData>({
|
|
|
140
149
|
}
|
|
141
150
|
: undefined;
|
|
142
151
|
|
|
152
|
+
const onRowSelectionChange =
|
|
153
|
+
rowSelection && setRowSelection
|
|
154
|
+
? (updater: Updater<RowSelectionState>) => {
|
|
155
|
+
const newValue =
|
|
156
|
+
typeof updater === "function" ? updater(rowSelection) : updater;
|
|
157
|
+
setRowSelection(newValue);
|
|
158
|
+
}
|
|
159
|
+
: undefined;
|
|
160
|
+
|
|
143
161
|
const table = useReactTable({
|
|
144
162
|
data,
|
|
145
163
|
columns,
|
|
@@ -157,17 +175,20 @@ export function DataTable<TData extends TBaseData>({
|
|
|
157
175
|
getFilteredRowModel: getFilteredRowModel(),
|
|
158
176
|
getPaginationRowModel: pagination ? getPaginationRowModel() : undefined,
|
|
159
177
|
onColumnFiltersChange: setColumnFilters,
|
|
178
|
+
onRowSelectionChange,
|
|
160
179
|
state: {
|
|
161
180
|
columnFilters,
|
|
162
181
|
...(isServerSideSorting && {
|
|
163
182
|
sorting,
|
|
164
183
|
}),
|
|
165
184
|
pagination,
|
|
185
|
+
rowSelection,
|
|
166
186
|
},
|
|
167
187
|
initialState: {
|
|
168
188
|
sorting,
|
|
169
189
|
},
|
|
170
190
|
onPaginationChange,
|
|
191
|
+
enableRowSelection,
|
|
171
192
|
});
|
|
172
193
|
|
|
173
194
|
useEffect(() => {
|
|
@@ -235,6 +256,7 @@ export function DataTable<TData extends TBaseData>({
|
|
|
235
256
|
widthClassName={widthClassName}
|
|
236
257
|
key={row.id}
|
|
237
258
|
onClick={row.original.onClick}
|
|
259
|
+
data-selected={row.getIsSelected()}
|
|
238
260
|
>
|
|
239
261
|
{row.getVisibleCells().map((cell) => {
|
|
240
262
|
const breakpoint = columnsBreakpoints[cell.column.id];
|
|
@@ -291,6 +313,9 @@ export function ScrollableDataTable<TData extends TBaseData>({
|
|
|
291
313
|
maxHeight = "s-h-100",
|
|
292
314
|
onLoadMore,
|
|
293
315
|
isLoading = false,
|
|
316
|
+
rowSelection,
|
|
317
|
+
setRowSelection,
|
|
318
|
+
enableRowSelection,
|
|
294
319
|
}: ScrollableDataTableProps<TData>) {
|
|
295
320
|
const windowSize = useWindowSize();
|
|
296
321
|
const tableContainerRef = useRef<HTMLDivElement>(null);
|
|
@@ -316,12 +341,26 @@ export function ScrollableDataTable<TData extends TBaseData>({
|
|
|
316
341
|
};
|
|
317
342
|
}, []);
|
|
318
343
|
|
|
344
|
+
const onRowSelectionChange =
|
|
345
|
+
rowSelection && setRowSelection
|
|
346
|
+
? (updater: Updater<RowSelectionState>) => {
|
|
347
|
+
const newValue =
|
|
348
|
+
typeof updater === "function" ? updater(rowSelection) : updater;
|
|
349
|
+
setRowSelection(newValue);
|
|
350
|
+
}
|
|
351
|
+
: undefined;
|
|
352
|
+
|
|
319
353
|
const table = useReactTable({
|
|
320
354
|
data,
|
|
321
355
|
columns,
|
|
322
356
|
rowCount: totalRowCount,
|
|
323
357
|
getCoreRowModel: getCoreRowModel(),
|
|
324
358
|
enableColumnResizing: true,
|
|
359
|
+
onRowSelectionChange,
|
|
360
|
+
enableRowSelection,
|
|
361
|
+
state: {
|
|
362
|
+
rowSelection,
|
|
363
|
+
},
|
|
325
364
|
});
|
|
326
365
|
|
|
327
366
|
useEffect(() => {
|
|
@@ -466,6 +505,7 @@ export function ScrollableDataTable<TData extends TBaseData>({
|
|
|
466
505
|
widthClassName={widthClassName}
|
|
467
506
|
onClick={row.original.onClick}
|
|
468
507
|
className="s-absolute s-w-full"
|
|
508
|
+
data-selected={row.getIsSelected()}
|
|
469
509
|
style={{
|
|
470
510
|
transform: `translateY(${virtualRow.start}px)`,
|
|
471
511
|
}}
|
|
@@ -616,6 +656,7 @@ interface RowProps extends React.HTMLAttributes<HTMLTableRowElement> {
|
|
|
616
656
|
children: ReactNode;
|
|
617
657
|
onClick?: () => void;
|
|
618
658
|
widthClassName: string;
|
|
659
|
+
"data-selected"?: boolean;
|
|
619
660
|
}
|
|
620
661
|
|
|
621
662
|
DataTable.Row = function Row({
|
|
@@ -633,6 +674,8 @@ DataTable.Row = function Row({
|
|
|
633
674
|
onClick
|
|
634
675
|
? "s-cursor-pointer hover:s-bg-muted dark:hover:s-bg-muted-night"
|
|
635
676
|
: "",
|
|
677
|
+
props["data-selected"] &&
|
|
678
|
+
"s-bg-highlight-50 dark:s-bg-highlight-900/10",
|
|
636
679
|
widthClassName,
|
|
637
680
|
className
|
|
638
681
|
)}
|
|
@@ -1013,3 +1056,47 @@ DataTable.Caption = function Caption({
|
|
|
1013
1056
|
</caption>
|
|
1014
1057
|
);
|
|
1015
1058
|
};
|
|
1059
|
+
|
|
1060
|
+
export function createSelectionColumn<TData>(): ColumnDef<TData> {
|
|
1061
|
+
return {
|
|
1062
|
+
id: "select",
|
|
1063
|
+
enableSorting: false,
|
|
1064
|
+
enableHiding: false,
|
|
1065
|
+
header: ({ table }) => (
|
|
1066
|
+
<Checkbox
|
|
1067
|
+
size="xs"
|
|
1068
|
+
checked={
|
|
1069
|
+
table.getIsAllRowsSelected()
|
|
1070
|
+
? true
|
|
1071
|
+
: table.getIsSomeRowsSelected()
|
|
1072
|
+
? "partial"
|
|
1073
|
+
: false
|
|
1074
|
+
}
|
|
1075
|
+
onCheckedChange={(state) => {
|
|
1076
|
+
if (state === "indeterminate") {
|
|
1077
|
+
return;
|
|
1078
|
+
}
|
|
1079
|
+
table.toggleAllRowsSelected(state);
|
|
1080
|
+
}}
|
|
1081
|
+
/>
|
|
1082
|
+
),
|
|
1083
|
+
cell: ({ row }) => (
|
|
1084
|
+
<div className="s-flex s-h-full s-w-full s-items-center">
|
|
1085
|
+
<Checkbox
|
|
1086
|
+
size="xs"
|
|
1087
|
+
checked={row.getIsSelected()}
|
|
1088
|
+
disabled={!row.getCanSelect()}
|
|
1089
|
+
onCheckedChange={(state) => {
|
|
1090
|
+
if (state === "indeterminate") {
|
|
1091
|
+
return;
|
|
1092
|
+
}
|
|
1093
|
+
row.toggleSelected(state);
|
|
1094
|
+
}}
|
|
1095
|
+
/>
|
|
1096
|
+
</div>
|
|
1097
|
+
),
|
|
1098
|
+
meta: {
|
|
1099
|
+
className: "s-w-10",
|
|
1100
|
+
},
|
|
1101
|
+
};
|
|
1102
|
+
}
|