@inspirare/design-system 0.0.11 → 0.0.13
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/index.css +2 -2
- package/dist/index.d.ts +717 -154
- package/dist/index.js +11007 -3598
- package/package.json +10 -1
- package/src/components/ui/alert.tsx +59 -0
- package/src/components/ui/aspect-ratio.tsx +7 -0
- package/src/components/ui/breadcrumb.tsx +115 -0
- package/src/components/ui/button-group.tsx +83 -0
- package/src/components/ui/button.tsx +2 -0
- package/src/components/ui/carousel.tsx +262 -0
- package/src/components/ui/chart.tsx +369 -0
- package/src/components/ui/combobox.tsx +112 -0
- package/src/components/ui/context-menu.tsx +200 -0
- package/src/components/ui/empty.tsx +104 -0
- package/src/components/ui/field.tsx +244 -0
- package/src/components/ui/input-group.tsx +170 -0
- package/src/components/ui/input-otp.tsx +71 -0
- package/src/components/ui/item.tsx +193 -0
- package/src/components/ui/kbd.tsx +28 -0
- package/src/components/ui/menubar.tsx +256 -0
- package/src/components/ui/navigation-menu.tsx +128 -0
- package/src/components/ui/pagination.tsx +117 -0
- package/src/components/ui/resizable.tsx +43 -0
- package/src/components/ui/sidebar.tsx +773 -0
- package/src/components/ui/spinner.tsx +16 -0
- package/src/components/ui/theme-toggle.tsx +0 -9
- package/src/hooks/use-mobile.ts +19 -0
- package/src/index.css +71 -174
- package/src/index.ts +22 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Loader2Icon } from "lucide-react"
|
|
2
|
+
|
|
3
|
+
import { cn } from "@/lib/utils"
|
|
4
|
+
|
|
5
|
+
function Spinner({ className, ...props }: React.ComponentProps<"svg">) {
|
|
6
|
+
return (
|
|
7
|
+
<Loader2Icon
|
|
8
|
+
role="status"
|
|
9
|
+
aria-label="Loading"
|
|
10
|
+
className={cn("size-4 animate-spin", className)}
|
|
11
|
+
{...props}
|
|
12
|
+
/>
|
|
13
|
+
)
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export { Spinner }
|
|
@@ -92,15 +92,6 @@ export const ThemeToggle = memo(function ThemeToggle({
|
|
|
92
92
|
)}
|
|
93
93
|
</div>
|
|
94
94
|
</Button>
|
|
95
|
-
|
|
96
|
-
{/* Indicador visual sutil do tema atual */}
|
|
97
|
-
<div
|
|
98
|
-
className={cn(
|
|
99
|
-
"absolute -bottom-1 left-1/2 transform -translate-x-1/2 w-1 h-1 rounded-full transition-all duration-300",
|
|
100
|
-
theme === "light" ? "bg-yellow-500" : "bg-blue-500",
|
|
101
|
-
!mounted && "bg-blue-500"
|
|
102
|
-
)}
|
|
103
|
-
/>
|
|
104
95
|
</div>
|
|
105
96
|
);
|
|
106
97
|
});
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as React from "react"
|
|
2
|
+
|
|
3
|
+
const MOBILE_BREAKPOINT = 768
|
|
4
|
+
|
|
5
|
+
export function useIsMobile() {
|
|
6
|
+
const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)
|
|
7
|
+
|
|
8
|
+
React.useEffect(() => {
|
|
9
|
+
const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)
|
|
10
|
+
const onChange = () => {
|
|
11
|
+
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)
|
|
12
|
+
}
|
|
13
|
+
mql.addEventListener("change", onChange)
|
|
14
|
+
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)
|
|
15
|
+
return () => mql.removeEventListener("change", onChange)
|
|
16
|
+
}, [])
|
|
17
|
+
|
|
18
|
+
return !!isMobile
|
|
19
|
+
}
|
package/src/index.css
CHANGED
|
@@ -125,180 +125,6 @@
|
|
|
125
125
|
--shadow-2xl: 0px 4px 8px 0px hsl(0 0% 0% / 0.3);
|
|
126
126
|
}
|
|
127
127
|
|
|
128
|
-
@theme {
|
|
129
|
-
--color-background: var(--background);
|
|
130
|
-
--color-foreground: var(--foreground);
|
|
131
|
-
--color-card: var(--card);
|
|
132
|
-
--color-card-foreground: var(--card-foreground);
|
|
133
|
-
--color-popover: var(--popover);
|
|
134
|
-
--color-popover-foreground: var(--popover-foreground);
|
|
135
|
-
--color-primary: var(--primary);
|
|
136
|
-
--color-primary-foreground: var(--primary-foreground);
|
|
137
|
-
--color-secondary: var(--secondary);
|
|
138
|
-
--color-secondary-foreground: var(--secondary-foreground);
|
|
139
|
-
--color-muted: var(--muted);
|
|
140
|
-
--color-muted-foreground: var(--muted-foreground);
|
|
141
|
-
--color-accent: var(--accent);
|
|
142
|
-
--color-accent-foreground: var(--accent-foreground);
|
|
143
|
-
--color-destructive: var(--destructive);
|
|
144
|
-
--color-destructive-foreground: var(--destructive-foreground);
|
|
145
|
-
--color-border: var(--border);
|
|
146
|
-
--color-input: var(--input);
|
|
147
|
-
--color-ring: var(--ring);
|
|
148
|
-
--color-chart-1: var(--chart-1);
|
|
149
|
-
--color-chart-2: var(--chart-2);
|
|
150
|
-
--color-chart-3: var(--chart-3);
|
|
151
|
-
--color-chart-4: var(--chart-4);
|
|
152
|
-
--color-chart-5: var(--chart-5);
|
|
153
|
-
--radius-sm: calc(var(--radius) - 4px);
|
|
154
|
-
--radius-md: calc(var(--radius) - 2px);
|
|
155
|
-
--radius-lg: var(--radius);
|
|
156
|
-
--radius-xl: calc(var(--radius) + 4px);
|
|
157
|
-
--color-sidebar: var(--sidebar);
|
|
158
|
-
--color-sidebar-foreground: var(--sidebar-foreground);
|
|
159
|
-
--color-sidebar-primary: var(--sidebar-primary);
|
|
160
|
-
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
|
|
161
|
-
--color-sidebar-accent: var(--sidebar-accent);
|
|
162
|
-
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
|
|
163
|
-
--color-sidebar-border: var(--sidebar-border);
|
|
164
|
-
--color-sidebar-ring: var(--sidebar-ring);
|
|
165
|
-
--font-sans: var(--font-sans);
|
|
166
|
-
--font-serif: var(--font-serif);
|
|
167
|
-
--font-mono: var(--font-mono);
|
|
168
|
-
|
|
169
|
-
/* Inspirare Brand Colors */
|
|
170
|
-
--color-Inspirare-purple-50: oklch(0.95 0.05 270);
|
|
171
|
-
--color-Inspirare-purple-100: oklch(0.9 0.1 270);
|
|
172
|
-
--color-Inspirare-purple-200: oklch(0.85 0.15 270);
|
|
173
|
-
--color-Inspirare-purple-300: oklch(0.8 0.18 270);
|
|
174
|
-
--color-Inspirare-purple-400: oklch(0.7 0.2 270);
|
|
175
|
-
--color-Inspirare-purple-500: oklch(0.6 0.2 270);
|
|
176
|
-
--color-Inspirare-purple-600: oklch(0.55 0.22 270);
|
|
177
|
-
--color-Inspirare-purple-700: oklch(0.5 0.24 270);
|
|
178
|
-
--color-Inspirare-purple-800: oklch(0.4 0.26 270);
|
|
179
|
-
--color-Inspirare-purple-900: oklch(0.3 0.28 270);
|
|
180
|
-
|
|
181
|
-
--color-Inspirare-blue-50: oklch(0.95 0.05 200);
|
|
182
|
-
--color-Inspirare-blue-100: oklch(0.9 0.08 200);
|
|
183
|
-
--color-Inspirare-blue-200: oklch(0.85 0.12 200);
|
|
184
|
-
--color-Inspirare-blue-300: oklch(0.8 0.15 200);
|
|
185
|
-
--color-Inspirare-blue-400: oklch(0.75 0.15 200);
|
|
186
|
-
--color-Inspirare-blue-500: oklch(0.7 0.18 200);
|
|
187
|
-
--color-Inspirare-blue-600: oklch(0.65 0.2 200);
|
|
188
|
-
--color-Inspirare-blue-700: oklch(0.6 0.22 200);
|
|
189
|
-
--color-Inspirare-blue-800: oklch(0.5 0.24 200);
|
|
190
|
-
--color-Inspirare-blue-900: oklch(0.4 0.26 200);
|
|
191
|
-
|
|
192
|
-
/* Animations & Keyframes */
|
|
193
|
-
--animate-accordion-down: accordion-down 0.2s ease-out;
|
|
194
|
-
--animate-accordion-up: accordion-up 0.2s ease-out;
|
|
195
|
-
--animate-fade-in: fade-in 0.3s ease-out;
|
|
196
|
-
--animate-fade-in-up: fade-in-up 0.6s ease-out;
|
|
197
|
-
--animate-slide-in-from-top: slide-in-from-top 0.3s ease-out;
|
|
198
|
-
--animate-slide-in-from-bottom: slide-in-from-bottom 0.3s ease-out;
|
|
199
|
-
--animate-float: float 3s ease-in-out infinite;
|
|
200
|
-
--animate-gradient: gradient 3s ease infinite;
|
|
201
|
-
--animate-glow: glow 2s ease-in-out infinite alternate;
|
|
202
|
-
|
|
203
|
-
@keyframes accordion-down {
|
|
204
|
-
from {
|
|
205
|
-
height: 0;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
to {
|
|
209
|
-
height: var(--radix-accordion-content-height);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
@keyframes accordion-up {
|
|
214
|
-
from {
|
|
215
|
-
height: var(--radix-accordion-content-height);
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
to {
|
|
219
|
-
height: 0;
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
@keyframes fade-in {
|
|
224
|
-
0% {
|
|
225
|
-
opacity: 0;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
100% {
|
|
229
|
-
opacity: 1;
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
@keyframes fade-in-up {
|
|
234
|
-
0% {
|
|
235
|
-
opacity: 0;
|
|
236
|
-
transform: translateY(20px);
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
100% {
|
|
240
|
-
opacity: 1;
|
|
241
|
-
transform: translateY(0);
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
@keyframes slide-in-from-top {
|
|
246
|
-
0% {
|
|
247
|
-
transform: translateY(-100%);
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
100% {
|
|
251
|
-
transform: translateY(0);
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
@keyframes slide-in-from-bottom {
|
|
256
|
-
0% {
|
|
257
|
-
transform: translateY(100%);
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
100% {
|
|
261
|
-
transform: translateY(0);
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
@keyframes float {
|
|
266
|
-
|
|
267
|
-
0%,
|
|
268
|
-
100% {
|
|
269
|
-
transform: translateY(0px);
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
50% {
|
|
273
|
-
transform: translateY(-20px);
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
@keyframes gradient {
|
|
278
|
-
|
|
279
|
-
0%,
|
|
280
|
-
100% {
|
|
281
|
-
background-position: 0% 50%;
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
50% {
|
|
285
|
-
background-position: 100% 50%;
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
@keyframes glow {
|
|
290
|
-
|
|
291
|
-
0%,
|
|
292
|
-
100% {
|
|
293
|
-
box-shadow: 0 0 20px rgba(139, 92, 246, 0.3);
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
50% {
|
|
297
|
-
box-shadow: 0 0 40px rgba(139, 92, 246, 0.6);
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
|
|
302
128
|
@layer utilities {
|
|
303
129
|
.glass {
|
|
304
130
|
@apply bg-white/70 backdrop-blur-xl border-white/20;
|
|
@@ -812,6 +638,77 @@ body {
|
|
|
812
638
|
--font-sans: var(--font-sans);
|
|
813
639
|
--font-serif: var(--font-serif);
|
|
814
640
|
--font-mono: var(--font-mono);
|
|
641
|
+
|
|
642
|
+
/* Inspirare Brand Colors */
|
|
643
|
+
--color-Inspirare-purple-50: oklch(0.95 0.05 270);
|
|
644
|
+
--color-Inspirare-purple-100: oklch(0.9 0.1 270);
|
|
645
|
+
--color-Inspirare-purple-200: oklch(0.85 0.15 270);
|
|
646
|
+
--color-Inspirare-purple-300: oklch(0.8 0.18 270);
|
|
647
|
+
--color-Inspirare-purple-400: oklch(0.7 0.2 270);
|
|
648
|
+
--color-Inspirare-purple-500: oklch(0.6 0.2 270);
|
|
649
|
+
--color-Inspirare-purple-600: oklch(0.55 0.22 270);
|
|
650
|
+
--color-Inspirare-purple-700: oklch(0.5 0.24 270);
|
|
651
|
+
--color-Inspirare-purple-800: oklch(0.4 0.26 270);
|
|
652
|
+
--color-Inspirare-purple-900: oklch(0.3 0.28 270);
|
|
653
|
+
|
|
654
|
+
--color-Inspirare-blue-50: oklch(0.95 0.05 200);
|
|
655
|
+
--color-Inspirare-blue-100: oklch(0.9 0.08 200);
|
|
656
|
+
--color-Inspirare-blue-200: oklch(0.85 0.12 200);
|
|
657
|
+
--color-Inspirare-blue-300: oklch(0.8 0.15 200);
|
|
658
|
+
--color-Inspirare-blue-400: oklch(0.75 0.15 200);
|
|
659
|
+
--color-Inspirare-blue-500: oklch(0.7 0.18 200);
|
|
660
|
+
--color-Inspirare-blue-600: oklch(0.65 0.2 200);
|
|
661
|
+
--color-Inspirare-blue-700: oklch(0.6 0.22 200);
|
|
662
|
+
--color-Inspirare-blue-800: oklch(0.5 0.24 200);
|
|
663
|
+
--color-Inspirare-blue-900: oklch(0.4 0.26 200);
|
|
664
|
+
|
|
665
|
+
/* Animations & Keyframes */
|
|
666
|
+
--animate-accordion-down: accordion-down 0.2s ease-out;
|
|
667
|
+
--animate-accordion-up: accordion-up 0.2s ease-out;
|
|
668
|
+
--animate-fade-in: fade-in 0.3s ease-out;
|
|
669
|
+
--animate-fade-in-up: fade-in-up 0.6s ease-out;
|
|
670
|
+
--animate-slide-in-from-top: slide-in-from-top 0.3s ease-out;
|
|
671
|
+
--animate-slide-in-from-bottom: slide-in-from-bottom 0.3s ease-out;
|
|
672
|
+
--animate-float: float 3s ease-in-out infinite;
|
|
673
|
+
--animate-gradient: gradient 3s ease infinite;
|
|
674
|
+
--animate-glow: glow 2s ease-in-out infinite alternate;
|
|
675
|
+
|
|
676
|
+
@keyframes accordion-down {
|
|
677
|
+
from { height: 0; }
|
|
678
|
+
to { height: var(--radix-accordion-content-height); }
|
|
679
|
+
}
|
|
680
|
+
@keyframes accordion-up {
|
|
681
|
+
from { height: var(--radix-accordion-content-height); }
|
|
682
|
+
to { height: 0; }
|
|
683
|
+
}
|
|
684
|
+
@keyframes fade-in {
|
|
685
|
+
0% { opacity: 0; }
|
|
686
|
+
100% { opacity: 1; }
|
|
687
|
+
}
|
|
688
|
+
@keyframes fade-in-up {
|
|
689
|
+
0% { opacity: 0; transform: translateY(20px); }
|
|
690
|
+
100% { opacity: 1; transform: translateY(0); }
|
|
691
|
+
}
|
|
692
|
+
@keyframes slide-in-from-top {
|
|
693
|
+
0% { transform: translateY(-100%); }
|
|
694
|
+
100% { transform: translateY(0); }
|
|
695
|
+
}
|
|
696
|
+
@keyframes slide-in-from-bottom {
|
|
697
|
+
0% { transform: translateY(100%); }
|
|
698
|
+
100% { transform: translateY(0); }
|
|
699
|
+
}
|
|
700
|
+
@keyframes float {
|
|
701
|
+
0%, 100% { transform: translateY(0px); }
|
|
702
|
+
50% { transform: translateY(-20px); }
|
|
703
|
+
}
|
|
704
|
+
@keyframes gradient {
|
|
705
|
+
0%, 100% { background-position: 0% 50%; }
|
|
706
|
+
50% { background-position: 100% 50%; }
|
|
707
|
+
}
|
|
708
|
+
@keyframes glow {
|
|
709
|
+
0%, 100% { box-shadow: 0 0 20px rgba(139, 92, 246, 0.3); }
|
|
710
|
+
50% { box-shadow: 0 0 40px rgba(139, 92, 246, 0.6); }
|
|
711
|
+
}
|
|
815
712
|
}
|
|
816
713
|
|
|
817
714
|
/* Added glassmorphism utilities and custom styles */
|
package/src/index.ts
CHANGED
|
@@ -1,41 +1,62 @@
|
|
|
1
1
|
import './index.css';
|
|
2
2
|
|
|
3
3
|
export * from './components/ui/accordion';
|
|
4
|
+
export * from './components/ui/alert';
|
|
4
5
|
export * from './components/ui/alert-dialog';
|
|
6
|
+
export * from './components/ui/aspect-ratio';
|
|
5
7
|
export * from './components/ui/avatar';
|
|
6
8
|
export * from './components/ui/badge';
|
|
9
|
+
export * from './components/ui/breadcrumb';
|
|
7
10
|
export * from './components/ui/button';
|
|
11
|
+
export * from './components/ui/button-group';
|
|
8
12
|
export * from './components/ui/calendar';
|
|
9
13
|
export * from './components/ui/card';
|
|
14
|
+
export * from './components/ui/carousel';
|
|
15
|
+
export * from './components/ui/chart';
|
|
10
16
|
export * from './components/ui/checkbox';
|
|
11
17
|
export * from './components/ui/collapsible';
|
|
12
18
|
export * from './components/ui/color-picker';
|
|
19
|
+
export * from './components/ui/combobox';
|
|
13
20
|
export * from './components/ui/command';
|
|
21
|
+
export * from './components/ui/context-menu';
|
|
14
22
|
export * from './components/ui/dialog';
|
|
15
23
|
export * from './components/ui/drawer';
|
|
16
24
|
export * from './components/ui/dropdown-menu';
|
|
25
|
+
export * from './components/ui/empty';
|
|
26
|
+
export * from './components/ui/field';
|
|
17
27
|
export * from './components/ui/form';
|
|
18
28
|
export * from './components/ui/hover-card';
|
|
19
29
|
export * from './components/ui/input';
|
|
30
|
+
export * from './components/ui/input-group';
|
|
31
|
+
export * from './components/ui/input-otp';
|
|
32
|
+
export * from './components/ui/item';
|
|
33
|
+
export * from './components/ui/kbd';
|
|
20
34
|
export * from './components/ui/label';
|
|
35
|
+
export * from './components/ui/menubar';
|
|
36
|
+
export * from './components/ui/navigation-menu';
|
|
37
|
+
export * from './components/ui/pagination';
|
|
21
38
|
export * from './components/ui/popover';
|
|
22
39
|
export * from './components/ui/progress';
|
|
23
40
|
export * from './components/ui/radio-group';
|
|
41
|
+
export * from './components/ui/resizable';
|
|
24
42
|
export * from './components/ui/scroll-area';
|
|
25
43
|
export * from './components/ui/select';
|
|
26
44
|
export * from './components/ui/separator';
|
|
27
45
|
export * from './components/ui/sheet';
|
|
46
|
+
export * from './components/ui/sidebar';
|
|
28
47
|
export * from './components/ui/skeleton';
|
|
29
48
|
export * from './components/ui/slider';
|
|
30
49
|
export * from './components/ui/sonner';
|
|
50
|
+
export * from './components/ui/spinner';
|
|
31
51
|
export * from './components/ui/switch';
|
|
32
52
|
export * from './components/ui/table';
|
|
33
53
|
export * from './components/ui/tabs';
|
|
34
54
|
export * from './components/ui/textarea';
|
|
35
55
|
export * from './components/ui/theme-toggle';
|
|
36
|
-
export * from './components/ui/toggle-group';
|
|
37
56
|
export * from './components/ui/toggle';
|
|
57
|
+
export * from './components/ui/toggle-group';
|
|
38
58
|
export * from './components/ui/tooltip';
|
|
39
59
|
export * from './components/ui/accessibility-improvements';
|
|
40
60
|
|
|
41
61
|
export * from './lib/utils';
|
|
62
|
+
export * from './hooks/use-mobile';
|