@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.
@@ -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';