@turtleclub/ui 0.7.0-beta.3 → 0.7.0-beta.30
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/.turbo/turbo-build.log +143 -132
- package/CHANGELOG.md +152 -0
- package/dist/index.cjs +76 -36
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +36068 -17674
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/types/components/charts/area-chart.d.ts +108 -0
- package/dist/types/components/charts/area-chart.d.ts.map +1 -0
- package/dist/types/components/charts/bar-chart.d.ts +110 -0
- package/dist/types/components/charts/bar-chart.d.ts.map +1 -0
- package/dist/types/components/charts/index.d.ts +5 -0
- package/dist/types/components/charts/index.d.ts.map +1 -0
- package/dist/types/components/charts/pie-chart.d.ts +94 -0
- package/dist/types/components/charts/pie-chart.d.ts.map +1 -0
- package/dist/types/components/charts/radial-chart.d.ts +151 -0
- package/dist/types/components/charts/radial-chart.d.ts.map +1 -0
- package/dist/types/components/features/data-table/data-table.d.ts +7 -4
- package/dist/types/components/features/data-table/data-table.d.ts.map +1 -1
- package/dist/types/components/features/data-table/sort-dropdown.d.ts.map +1 -1
- package/dist/types/components/features/search-bar.d.ts +1 -0
- package/dist/types/components/features/search-bar.d.ts.map +1 -1
- package/dist/types/components/molecules/swap-input.d.ts +3 -0
- package/dist/types/components/molecules/swap-input.d.ts.map +1 -1
- package/dist/types/components/molecules/token-selector.d.ts +2 -1
- package/dist/types/components/molecules/token-selector.d.ts.map +1 -1
- package/dist/types/components/ui/avatar.d.ts +2 -2
- package/dist/types/components/ui/avatar.d.ts.map +1 -1
- package/dist/types/components/ui/chart.d.ts +18 -4
- package/dist/types/components/ui/chart.d.ts.map +1 -1
- package/dist/types/components/ui/combobox.d.ts +21 -0
- package/dist/types/components/ui/combobox.d.ts.map +1 -1
- package/dist/types/components/ui/dialog.d.ts.map +1 -1
- package/dist/types/components/ui/dropdown.d.ts +2 -1
- package/dist/types/components/ui/dropdown.d.ts.map +1 -1
- package/dist/types/components/ui/index.d.ts +1 -0
- package/dist/types/components/ui/index.d.ts.map +1 -1
- package/dist/types/components/ui/multi-select.d.ts.map +1 -1
- package/dist/types/components/ui/segment-control.d.ts +1 -0
- package/dist/types/components/ui/segment-control.d.ts.map +1 -1
- package/dist/types/components/ui/slider.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/components/charts/QUICK_REFERENCE.md +323 -0
- package/src/components/charts/README.md +658 -0
- package/src/components/charts/RECHARTS_FEATURES.md +458 -0
- package/src/components/charts/area-chart.tsx +248 -0
- package/src/components/charts/bar-chart.tsx +362 -0
- package/src/components/charts/index.ts +4 -0
- package/src/components/charts/pie-chart.tsx +277 -0
- package/src/components/charts/radial-chart.tsx +312 -0
- package/src/components/features/data-table/data-table.tsx +136 -125
- package/src/components/features/data-table/sort-dropdown.tsx +8 -11
- package/src/components/features/search-bar.tsx +6 -1
- package/src/components/molecules/swap-input.tsx +44 -30
- package/src/components/molecules/token-selector.tsx +10 -1
- package/src/components/ui/avatar.tsx +8 -15
- package/src/components/ui/chart.tsx +100 -109
- package/src/components/ui/combobox.tsx +150 -137
- package/src/components/ui/dialog.tsx +9 -23
- package/src/components/ui/dropdown.tsx +3 -1
- package/src/components/ui/index.ts +1 -0
- package/src/components/ui/multi-select.tsx +325 -307
- package/src/components/ui/segment-control.tsx +7 -2
- package/src/components/ui/slider.tsx +6 -11
- package/src/index.ts +1 -0
- package/src/styles/globals.css +4 -0
- package/src/styles/themes/semantic.css +26 -56
|
@@ -69,6 +69,7 @@ export type SegmentControlProps<T extends string> = {
|
|
|
69
69
|
items: {
|
|
70
70
|
label: React.ReactNode;
|
|
71
71
|
value: T;
|
|
72
|
+
disabled?: boolean;
|
|
72
73
|
}[];
|
|
73
74
|
cursorPointer?: boolean;
|
|
74
75
|
className?: string;
|
|
@@ -129,8 +130,12 @@ export function SegmentControl<T extends string>({
|
|
|
129
130
|
type="button"
|
|
130
131
|
key={button.value}
|
|
131
132
|
data-active={value === button.value}
|
|
132
|
-
|
|
133
|
-
|
|
133
|
+
disabled={button.disabled}
|
|
134
|
+
className={cn(
|
|
135
|
+
tabVariants({ variant, size, cursorPointer }),
|
|
136
|
+
button.disabled && "cursor-not-allowed opacity-50",
|
|
137
|
+
)}
|
|
138
|
+
onClick={() => !button.disabled && handleClick(button.value)}
|
|
134
139
|
>
|
|
135
140
|
{button.label}
|
|
136
141
|
</button>
|
|
@@ -14,13 +14,8 @@ function Slider({
|
|
|
14
14
|
...props
|
|
15
15
|
}: React.ComponentProps<typeof SliderPrimitive.Root>) {
|
|
16
16
|
const _values = React.useMemo(
|
|
17
|
-
() =>
|
|
18
|
-
|
|
19
|
-
? value
|
|
20
|
-
: Array.isArray(defaultValue)
|
|
21
|
-
? defaultValue
|
|
22
|
-
: [min, max],
|
|
23
|
-
[value, defaultValue, min, max],
|
|
17
|
+
() => (Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max]),
|
|
18
|
+
[value, defaultValue, min, max]
|
|
24
19
|
);
|
|
25
20
|
|
|
26
21
|
return (
|
|
@@ -32,20 +27,20 @@ function Slider({
|
|
|
32
27
|
max={max}
|
|
33
28
|
className={cn(
|
|
34
29
|
"relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",
|
|
35
|
-
className
|
|
30
|
+
className
|
|
36
31
|
)}
|
|
37
32
|
{...props}
|
|
38
33
|
>
|
|
39
34
|
<SliderPrimitive.Track
|
|
40
35
|
data-slot="slider-track"
|
|
41
36
|
className={cn(
|
|
42
|
-
"bg-secondary relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5"
|
|
37
|
+
"bg-secondary relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5"
|
|
43
38
|
)}
|
|
44
39
|
>
|
|
45
40
|
<SliderPrimitive.Range
|
|
46
41
|
data-slot="slider-range"
|
|
47
42
|
className={cn(
|
|
48
|
-
"bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full"
|
|
43
|
+
"bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full"
|
|
49
44
|
)}
|
|
50
45
|
/>
|
|
51
46
|
</SliderPrimitive.Track>
|
|
@@ -53,7 +48,7 @@ function Slider({
|
|
|
53
48
|
<SliderPrimitive.Thumb
|
|
54
49
|
data-slot="slider-thumb"
|
|
55
50
|
key={index}
|
|
56
|
-
className="
|
|
51
|
+
className="bg-primary ring-primary/20 border-background block size-3 shrink-0 rounded-full border-2 ring-2 transition-[color,box-shadow] hover:ring-[6px] focus-visible:ring-[6px] focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50"
|
|
57
52
|
/>
|
|
58
53
|
))}
|
|
59
54
|
</SliderPrimitive.Root>
|
package/src/index.ts
CHANGED
package/src/styles/globals.css
CHANGED
|
@@ -83,6 +83,10 @@
|
|
|
83
83
|
--color-chart-3: var(--chart-3);
|
|
84
84
|
--color-chart-4: var(--chart-4);
|
|
85
85
|
--color-chart-5: var(--chart-5);
|
|
86
|
+
--color-chart-6: var(--chart-6);
|
|
87
|
+
--color-chart-7: var(--chart-7);
|
|
88
|
+
--color-chart-8: var(--chart-8);
|
|
89
|
+
--color-chart-9: var(--chart-9);
|
|
86
90
|
|
|
87
91
|
--border-gradient-white: linear-gradient(
|
|
88
92
|
175deg,
|
|
@@ -17,9 +17,7 @@
|
|
|
17
17
|
/* Default theme: DARK (Turtle's primary brand experience) */
|
|
18
18
|
|
|
19
19
|
/* Background colors */
|
|
20
|
-
--background: var(
|
|
21
|
-
--color-brand-black
|
|
22
|
-
); /* #141514 - Dark background (default) */
|
|
20
|
+
--background: var(--color-brand-black); /* #141514 - Dark background (default) */
|
|
23
21
|
--foreground: var(--color-brand-white); /* #F9F9F9 - Light text (default) */
|
|
24
22
|
|
|
25
23
|
/* Card colors */
|
|
@@ -28,47 +26,31 @@
|
|
|
28
26
|
|
|
29
27
|
/* Popover colors */
|
|
30
28
|
--popover: var(--color-brand-black); /* #141514 - Dark popover */
|
|
31
|
-
--popover-foreground: var(
|
|
32
|
-
--color-brand-white
|
|
33
|
-
); /* #F9F9F9 - Light popover text */
|
|
29
|
+
--popover-foreground: var(--color-brand-white); /* #F9F9F9 - Light popover text */
|
|
34
30
|
|
|
35
31
|
/* Primary colors */
|
|
36
32
|
--primary: var(--color-brand-green); /* #73F36C - Primary brand color */
|
|
37
|
-
--primary-foreground: var(
|
|
38
|
-
--color-brand-black
|
|
39
|
-
); /* #141514 - Black text on green */
|
|
33
|
+
--primary-foreground: var(--color-brand-black); /* #141514 - Black text on green */
|
|
40
34
|
|
|
41
35
|
/* Secondary colors */
|
|
42
|
-
--secondary: var(
|
|
43
|
-
--color-neutral-base-800
|
|
44
|
-
); /* #262626 - Light overlay on dark */
|
|
36
|
+
--secondary: var(--color-neutral-base-800); /* #262626 - Light overlay on dark */
|
|
45
37
|
--secondary-foreground: var(--color-brand-white); /* #F9F9F9 - Light text */
|
|
46
38
|
|
|
47
39
|
/* Muted colors */
|
|
48
40
|
--muted: var(--color-neutral-base-850); /* #191A19 - Subtle overlay */
|
|
49
|
-
--muted-foreground: var(
|
|
50
|
-
--color-neutral-alpha-50
|
|
51
|
-
); /* #FFFFFF80 - Muted text */
|
|
41
|
+
--muted-foreground: var(--color-neutral-alpha-50); /* #FFFFFF80 - Muted text */
|
|
52
42
|
|
|
53
43
|
/* Accent colors */
|
|
54
44
|
--accent: var(--color-brand-green); /* #73F36C - Accent color */
|
|
55
|
-
--accent-foreground: var(
|
|
56
|
-
--color-brand-black
|
|
57
|
-
); /* #141514 - Black text on green */
|
|
45
|
+
--accent-foreground: var(--color-brand-black); /* #141514 - Black text on green */
|
|
58
46
|
|
|
59
47
|
/* Destructive colors */
|
|
60
48
|
--destructive: var(--color-error); /* #EF4444 - Error/destructive */
|
|
61
|
-
--destructive-foreground: var(
|
|
62
|
-
--color-brand-white
|
|
63
|
-
); /* #F9F9F9 - Light text on red */
|
|
49
|
+
--destructive-foreground: var(--color-brand-white); /* #F9F9F9 - Light text on red */
|
|
64
50
|
|
|
65
51
|
/* Border and input colors */
|
|
66
|
-
--border: var(
|
|
67
|
-
|
|
68
|
-
); /* #F9F9F91A - Light borders on dark */
|
|
69
|
-
--input: var(
|
|
70
|
-
--color-neutral-alpha-2
|
|
71
|
-
); /* #F9F9F905 - Subtle input background */
|
|
52
|
+
--border: var(--color-neutral-alpha-10); /* #F9F9F91A - Light borders on dark */
|
|
53
|
+
--input: var(--color-neutral-alpha-2); /* #F9F9F905 - Subtle input background */
|
|
72
54
|
--ring: var(--color-brand-green); /* #73F36C - Focus ring */
|
|
73
55
|
|
|
74
56
|
--sidebar: var(--color-neutral-base-850);
|
|
@@ -78,11 +60,15 @@
|
|
|
78
60
|
--radius: var(--radius-turtle); /* 16px - Default border radius */
|
|
79
61
|
|
|
80
62
|
/* ===== CHART COLORS (FOR DATA VISUALIZATION) ===== */
|
|
81
|
-
--chart-1:
|
|
82
|
-
--chart-2:
|
|
83
|
-
--chart-3:
|
|
84
|
-
--chart-4:
|
|
85
|
-
--chart-5:
|
|
63
|
+
--chart-1: oklch(0.75 0.17 164); /* Emerald */
|
|
64
|
+
--chart-2: oklch(0.72 0.14 200); /* Cyan */
|
|
65
|
+
--chart-3: oklch(0.56 0.18 272); /* Indigo */
|
|
66
|
+
--chart-4: oklch(0.68 0.13 192); /* Teal */
|
|
67
|
+
--chart-5: oklch(0.72 0.18 350); /* Pink */
|
|
68
|
+
--chart-6: oklch(0.75 0.15 75); /* Amber */
|
|
69
|
+
--chart-7: oklch(0.7 0.14 230); /* Sky */
|
|
70
|
+
--chart-8: oklch(0.62 0.02 60); /* Stone */
|
|
71
|
+
--chart-9: oklch(0.58 0.02 240); /* Slate */
|
|
86
72
|
}
|
|
87
73
|
|
|
88
74
|
/* ===== LIGHT THEME ===== */
|
|
@@ -99,17 +85,11 @@
|
|
|
99
85
|
|
|
100
86
|
/* Popover colors */
|
|
101
87
|
--popover: var(--color-brand-white); /* #F9F9F9 - Light popover */
|
|
102
|
-
--popover-foreground: var(
|
|
103
|
-
--color-brand-black
|
|
104
|
-
); /* #141514 - Dark popover text */
|
|
88
|
+
--popover-foreground: var(--color-brand-black); /* #141514 - Dark popover text */
|
|
105
89
|
|
|
106
90
|
/* Primary colors */
|
|
107
|
-
--primary: var(
|
|
108
|
-
|
|
109
|
-
); /* #73F36C - Same green (brand consistency) */
|
|
110
|
-
--primary-foreground: var(
|
|
111
|
-
--color-brand-black
|
|
112
|
-
); /* #141514 - Black text on green */
|
|
91
|
+
--primary: var(--color-brand-green); /* #73F36C - Same green (brand consistency) */
|
|
92
|
+
--primary-foreground: var(--color-brand-black); /* #141514 - Black text on green */
|
|
113
93
|
|
|
114
94
|
/* Secondary colors */
|
|
115
95
|
--secondary: var(--color-neutral-alpha-10); /* #F9F9F91A - Light overlay */
|
|
@@ -117,29 +97,19 @@
|
|
|
117
97
|
|
|
118
98
|
/* Muted colors */
|
|
119
99
|
--muted: var(--color-neutral-alpha-2); /* #F9F9F905 - Subtle overlay */
|
|
120
|
-
--muted-foreground: var(
|
|
121
|
-
--color-neutral-alpha-50
|
|
122
|
-
); /* #FFFFFF80 - Muted text */
|
|
100
|
+
--muted-foreground: var(--color-neutral-alpha-50); /* #FFFFFF80 - Muted text */
|
|
123
101
|
|
|
124
102
|
/* Accent colors */
|
|
125
103
|
--accent: var(--color-brand-green); /* #73F36C - Same accent */
|
|
126
|
-
--accent-foreground: var(
|
|
127
|
-
--color-brand-black
|
|
128
|
-
); /* #141514 - Black text on green */
|
|
104
|
+
--accent-foreground: var(--color-brand-black); /* #141514 - Black text on green */
|
|
129
105
|
|
|
130
106
|
/* Destructive colors */
|
|
131
107
|
--destructive: var(--color-error); /* #EF4444 - Same error color */
|
|
132
|
-
--destructive-foreground: var(
|
|
133
|
-
--color-brand-white
|
|
134
|
-
); /* #F9F9F9 - Light text on red */
|
|
108
|
+
--destructive-foreground: var(--color-brand-white); /* #F9F9F9 - Light text on red */
|
|
135
109
|
|
|
136
110
|
/* Border and input colors */
|
|
137
|
-
--border: var(
|
|
138
|
-
|
|
139
|
-
); /* #1415141A - Dark borders on light */
|
|
140
|
-
--input: var(
|
|
141
|
-
--color-neutral-alpha-2
|
|
142
|
-
); /* #F9F9F905 - Subtle input background */
|
|
111
|
+
--border: var(--color-neutral-alpha-dark-10); /* #1415141A - Dark borders on light */
|
|
112
|
+
--input: var(--color-neutral-alpha-2); /* #F9F9F905 - Subtle input background */
|
|
143
113
|
--ring: var(--color-brand-green); /* #73F36C - Same focus ring */
|
|
144
114
|
|
|
145
115
|
--sidebar: var(--color-neutral-base-850);
|