@srcroot/ui 0.0.30 → 0.0.32

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.
Files changed (77) hide show
  1. package/dist/index.js +377 -574
  2. package/package.json +2 -2
  3. package/src/registry/analytics/google-analytics.tsx +36 -0
  4. package/src/registry/analytics/google-tag-manager.tsx +62 -0
  5. package/src/registry/analytics/meta-pixel.tsx +44 -0
  6. package/src/registry/analytics/microsoft-clarity.tsx +31 -0
  7. package/src/registry/analytics/tiktok-pixel.tsx +34 -0
  8. package/src/registry/lib/utils.ts +6 -0
  9. package/src/registry/themes/gradients.css +236 -0
  10. package/{registry/themes → src/registry/themes/v3}/gray.css +45 -1
  11. package/{registry/themes → src/registry/themes/v3}/neutral.css +45 -1
  12. package/{registry/themes → src/registry/themes/v3}/slate.css +45 -1
  13. package/{registry/themes → src/registry/themes/v3}/stone.css +45 -1
  14. package/{registry/themes → src/registry/themes/v3}/zinc.css +45 -1
  15. package/src/registry/themes/v4/gray.css +183 -0
  16. package/src/registry/themes/v4/neutral.css +183 -0
  17. package/src/registry/themes/v4/slate.css +183 -0
  18. package/src/registry/themes/v4/stone.css +183 -0
  19. package/src/registry/themes/v4/zinc.css +183 -0
  20. package/src/registry/ui/chatbot.tsx +96 -0
  21. package/registry/design-tokens.css +0 -217
  22. package/registry/themes/index.css +0 -19
  23. /package/{registry → src/registry/ui}/accordion.tsx +0 -0
  24. /package/{registry → src/registry/ui}/alert-dialog.tsx +0 -0
  25. /package/{registry → src/registry/ui}/alert.tsx +0 -0
  26. /package/{registry → src/registry/ui}/aspect-ratio.tsx +0 -0
  27. /package/{registry → src/registry/ui}/avatar.tsx +0 -0
  28. /package/{registry → src/registry/ui}/badge.tsx +0 -0
  29. /package/{registry → src/registry/ui}/breadcrumb.tsx +0 -0
  30. /package/{registry → src/registry/ui}/button-group.tsx +0 -0
  31. /package/{registry → src/registry/ui}/button.tsx +0 -0
  32. /package/{registry → src/registry/ui}/calendar.tsx +0 -0
  33. /package/{registry → src/registry/ui}/card.tsx +0 -0
  34. /package/{registry → src/registry/ui}/carousel.tsx +0 -0
  35. /package/{registry → src/registry/ui}/checkbox.tsx +0 -0
  36. /package/{registry → src/registry/ui}/collapsible.tsx +0 -0
  37. /package/{registry → src/registry/ui}/combobox.tsx +0 -0
  38. /package/{registry → src/registry/ui}/command.tsx +0 -0
  39. /package/{registry → src/registry/ui}/container.tsx +0 -0
  40. /package/{registry → src/registry/ui}/context-menu.tsx +0 -0
  41. /package/{registry → src/registry/ui}/date-picker.tsx +0 -0
  42. /package/{registry → src/registry/ui}/dialog.tsx +0 -0
  43. /package/{registry → src/registry/ui}/drawer.tsx +0 -0
  44. /package/{registry → src/registry/ui}/dropdown-menu.tsx +0 -0
  45. /package/{registry → src/registry/ui}/file-upload.tsx +0 -0
  46. /package/{registry → src/registry/ui}/hover-card.tsx +0 -0
  47. /package/{registry → src/registry/ui}/image.tsx +0 -0
  48. /package/{registry → src/registry/ui}/input.tsx +0 -0
  49. /package/{registry → src/registry/ui}/kbd.tsx +0 -0
  50. /package/{registry → src/registry/ui}/label.tsx +0 -0
  51. /package/{registry → src/registry/ui}/loading-spinner.tsx +0 -0
  52. /package/{registry → src/registry/ui}/menubar.tsx +0 -0
  53. /package/{registry → src/registry/ui}/native-select.tsx +0 -0
  54. /package/{registry → src/registry/ui}/otp-input.tsx +0 -0
  55. /package/{registry → src/registry/ui}/pagination.tsx +0 -0
  56. /package/{registry → src/registry/ui}/popover.tsx +0 -0
  57. /package/{registry → src/registry/ui}/progress.tsx +0 -0
  58. /package/{registry → src/registry/ui}/radio.tsx +0 -0
  59. /package/{registry → src/registry/ui}/resizable.tsx +0 -0
  60. /package/{registry → src/registry/ui}/scroll-area.tsx +0 -0
  61. /package/{registry → src/registry/ui}/search.tsx +0 -0
  62. /package/{registry → src/registry/ui}/select.tsx +0 -0
  63. /package/{registry → src/registry/ui}/separator.tsx +0 -0
  64. /package/{registry → src/registry/ui}/sheet.tsx +0 -0
  65. /package/{registry → src/registry/ui}/sidebar.tsx +0 -0
  66. /package/{registry → src/registry/ui}/skeleton.tsx +0 -0
  67. /package/{registry → src/registry/ui}/slider.tsx +0 -0
  68. /package/{registry → src/registry/ui}/star-rating.tsx +0 -0
  69. /package/{registry → src/registry/ui}/switch.tsx +0 -0
  70. /package/{registry → src/registry/ui}/table.tsx +0 -0
  71. /package/{registry → src/registry/ui}/tabs.tsx +0 -0
  72. /package/{registry → src/registry/ui}/text.tsx +0 -0
  73. /package/{registry → src/registry/ui}/textarea.tsx +0 -0
  74. /package/{registry → src/registry/ui}/toast.tsx +0 -0
  75. /package/{registry → src/registry/ui}/toggle-group.tsx +0 -0
  76. /package/{registry → src/registry/ui}/toggle.tsx +0 -0
  77. /package/{registry → src/registry/ui}/tooltip.tsx +0 -0
@@ -0,0 +1,183 @@
1
+ /**
2
+ * @srcroot/ui - Stone Theme (Tailwind 4)
3
+ * Warm gray with subtle brown undertones
4
+ */
5
+
6
+ @import "tailwindcss";
7
+
8
+ :root {
9
+ --background: hsl(0 0% 100%);
10
+ --foreground: hsl(24 9.8% 10%);
11
+
12
+ --card: hsl(0 0% 100%);
13
+ --card-foreground: hsl(24 9.8% 10%);
14
+
15
+ --popover: hsl(0 0% 100%);
16
+ --popover-foreground: hsl(24 9.8% 10%);
17
+
18
+ --primary: hsl(24 9.8% 10%);
19
+ --primary-foreground: hsl(60 9.1% 97.8%);
20
+
21
+ --secondary: hsl(60 4.8% 95.9%);
22
+ --secondary-foreground: hsl(24 9.8% 10%);
23
+
24
+ --muted: hsl(60 4.8% 95.9%);
25
+ --muted-foreground: hsl(25 5.3% 44.7%);
26
+
27
+ --accent: hsl(60 4.8% 95.9%);
28
+ --accent-foreground: hsl(24 9.8% 10%);
29
+
30
+ --destructive: hsl(0 84.2% 60.2%);
31
+ --destructive-foreground: hsl(60 9.1% 97.8%);
32
+
33
+ --success: hsl(142.1 76.2% 36.3%);
34
+ --success-foreground: hsl(60 9.1% 97.8%);
35
+
36
+ --warning: hsl(45.4 93.4% 47.5%);
37
+ --warning-foreground: hsl(24 9.8% 10%);
38
+
39
+ --info: hsl(201.3 96.3% 32.2%);
40
+ --info-foreground: hsl(60 9.1% 97.8%);
41
+
42
+ --border: hsl(20 5.9% 90%);
43
+ --input: hsl(20 5.9% 90%);
44
+ --ring: hsl(24 9.8% 10%);
45
+
46
+ --radius: 0.5rem;
47
+
48
+ --sidebar-width: 16rem;
49
+ --sidebar-width-mobile: 18rem;
50
+ --sidebar-width-collapsed: 3rem;
51
+ --sidebar-width-icon: 3rem;
52
+ --header-height: 3.5rem;
53
+
54
+ --sidebar-background: hsl(0 0% 98%);
55
+ --sidebar-foreground: hsl(24 9.8% 10%);
56
+ --sidebar-primary: hsl(24 9.8% 10%);
57
+ --sidebar-primary-foreground: hsl(60 9.1% 97.8%);
58
+ --sidebar-accent: hsl(60 4.8% 95.9%);
59
+ --sidebar-accent-foreground: hsl(24 9.8% 10%);
60
+ --sidebar-border: hsl(20 5.9% 90%);
61
+ --sidebar-ring: hsl(24 9.8% 10%);
62
+ }
63
+
64
+ @theme inline {
65
+ --color-border: var(--border);
66
+ --color-input: var(--input);
67
+ --color-ring: var(--ring);
68
+ --color-background: var(--background);
69
+ --color-foreground: var(--foreground);
70
+
71
+ --color-primary: var(--primary);
72
+ --color-primary-foreground: var(--primary-foreground);
73
+
74
+ --color-secondary: var(--secondary);
75
+ --color-secondary-foreground: var(--secondary-foreground);
76
+
77
+ --color-destructive: var(--destructive);
78
+ --color-destructive-foreground: var(--destructive-foreground);
79
+
80
+ --color-muted: var(--muted);
81
+ --color-muted-foreground: var(--muted-foreground);
82
+
83
+ --color-accent: var(--accent);
84
+ --color-accent-foreground: var(--accent-foreground);
85
+
86
+ --color-popover: var(--popover);
87
+ --color-popover-foreground: var(--popover-foreground);
88
+
89
+ --color-card: var(--card);
90
+ --color-card-foreground: var(--card-foreground);
91
+
92
+ --color-sidebar: var(--sidebar-background);
93
+ --color-sidebar-foreground: var(--sidebar-foreground);
94
+ --color-sidebar-primary: var(--sidebar-primary);
95
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
96
+ --color-sidebar-accent: var(--sidebar-accent);
97
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
98
+ --color-sidebar-border: var(--sidebar-border);
99
+ --color-sidebar-ring: var(--sidebar-ring);
100
+
101
+ --radius-lg: var(--radius);
102
+ --radius-md: calc(var(--radius) - 2px);
103
+ --radius-sm: calc(var(--radius) - 4px);
104
+
105
+ --animate-accordion-down: accordion-down 0.2s ease-out;
106
+ --animate-accordion-up: accordion-up 0.2s ease-out;
107
+
108
+ @keyframes accordion-down {
109
+ from {
110
+ height: 0;
111
+ }
112
+
113
+ to {
114
+ height: var(--radix-accordion-content-height);
115
+ }
116
+ }
117
+
118
+ @keyframes accordion-up {
119
+ from {
120
+ height: var(--radix-accordion-content-height);
121
+ }
122
+
123
+ to {
124
+ height: 0;
125
+ }
126
+ }
127
+ }
128
+
129
+ @media (prefers-color-scheme: dark) {
130
+ :root {
131
+ --background: hsl(24 9.8% 10%);
132
+ --foreground: hsl(60 9.1% 97.8%);
133
+
134
+ --card: hsl(24 9.8% 10%);
135
+ --card-foreground: hsl(60 9.1% 97.8%);
136
+
137
+ --popover: hsl(24 9.8% 10%);
138
+ --popover-foreground: hsl(60 9.1% 97.8%);
139
+
140
+ --primary: hsl(60 9.1% 97.8%);
141
+ --primary-foreground: hsl(24 9.8% 10%);
142
+
143
+ --secondary: hsl(12 6.5% 15.1%);
144
+ --secondary-foreground: hsl(60 9.1% 97.8%);
145
+
146
+ --muted: hsl(12 6.5% 15.1%);
147
+ --muted-foreground: hsl(24 5.4% 63.9%);
148
+
149
+ --accent: hsl(12 6.5% 15.1%);
150
+ --accent-foreground: hsl(60 9.1% 97.8%);
151
+
152
+ --destructive: hsl(0 62.8% 30.6%);
153
+ --destructive-foreground: hsl(60 9.1% 97.8%);
154
+
155
+ --success: hsl(142.1 70.6% 45.3%);
156
+ --success-foreground: hsl(24 9.8% 10%);
157
+
158
+ --warning: hsl(48 96.5% 53.1%);
159
+ --warning-foreground: hsl(24 9.8% 10%);
160
+
161
+ --info: hsl(199.4 95.5% 53.8%);
162
+ --info-foreground: hsl(24 9.8% 10%);
163
+
164
+ --border: hsl(12 6.5% 15.1%);
165
+ --input: hsl(12 6.5% 15.1%);
166
+ --ring: hsl(24 5.7% 82.9%);
167
+
168
+ --sidebar-background: hsl(24 9.8% 14%);
169
+ --sidebar-foreground: hsl(60 9.1% 97.8%);
170
+ --sidebar-primary: hsl(60 9.1% 97.8%);
171
+ --sidebar-primary-foreground: hsl(24 9.8% 10%);
172
+ --sidebar-accent: hsl(12 6.5% 15.1%);
173
+ --sidebar-accent-foreground: hsl(60 9.1% 97.8%);
174
+ --sidebar-border: hsl(12 6.5% 15.1%);
175
+ --sidebar-ring: hsl(24 5.7% 82.9%);
176
+ }
177
+ }
178
+
179
+ body {
180
+ background: var(--background);
181
+ color: var(--foreground);
182
+ font-family: Arial, Helvetica, sans-serif;
183
+ }
@@ -0,0 +1,183 @@
1
+ /**
2
+ * @srcroot/ui - Zinc Theme (Tailwind 4)
3
+ * Cool gray with subtle blue undertones
4
+ */
5
+
6
+ @import "tailwindcss";
7
+
8
+ :root {
9
+ --background: hsl(0 0% 100%);
10
+ --foreground: hsl(240 10% 3.9%);
11
+
12
+ --card: hsl(0 0% 100%);
13
+ --card-foreground: hsl(240 10% 3.9%);
14
+
15
+ --popover: hsl(0 0% 100%);
16
+ --popover-foreground: hsl(240 10% 3.9%);
17
+
18
+ --primary: hsl(240 5.9% 10%);
19
+ --primary-foreground: hsl(0 0% 98%);
20
+
21
+ --secondary: hsl(240 4.8% 95.9%);
22
+ --secondary-foreground: hsl(240 5.9% 10%);
23
+
24
+ --muted: hsl(240 4.8% 95.9%);
25
+ --muted-foreground: hsl(240 3.8% 46.1%);
26
+
27
+ --accent: hsl(240 4.8% 95.9%);
28
+ --accent-foreground: hsl(240 5.9% 10%);
29
+
30
+ --destructive: hsl(0 84.2% 60.2%);
31
+ --destructive-foreground: hsl(0 0% 98%);
32
+
33
+ --success: hsl(142.1 76.2% 36.3%);
34
+ --success-foreground: hsl(0 0% 98%);
35
+
36
+ --warning: hsl(45.4 93.4% 47.5%);
37
+ --warning-foreground: hsl(240 5.9% 10%);
38
+
39
+ --info: hsl(201.3 96.3% 32.2%);
40
+ --info-foreground: hsl(0 0% 98%);
41
+
42
+ --border: hsl(240 5.9% 90%);
43
+ --input: hsl(240 5.9% 90%);
44
+ --ring: hsl(240 10% 3.9%);
45
+
46
+ --radius: 0.5rem;
47
+
48
+ --sidebar-width: 16rem;
49
+ --sidebar-width-mobile: 18rem;
50
+ --sidebar-width-collapsed: 3rem;
51
+ --sidebar-width-icon: 3rem;
52
+ --header-height: 3.5rem;
53
+
54
+ --sidebar-background: hsl(0 0% 98%);
55
+ --sidebar-foreground: hsl(240 5.3% 26.1%);
56
+ --sidebar-primary: hsl(240 5.9% 10%);
57
+ --sidebar-primary-foreground: hsl(0 0% 98%);
58
+ --sidebar-accent: hsl(240 4.8% 95.9%);
59
+ --sidebar-accent-foreground: hsl(240 5.9% 10%);
60
+ --sidebar-border: hsl(220 13% 91%);
61
+ --sidebar-ring: hsl(217.2 91.2% 59.8%);
62
+ }
63
+
64
+ @theme inline {
65
+ --color-border: var(--border);
66
+ --color-input: var(--input);
67
+ --color-ring: var(--ring);
68
+ --color-background: var(--background);
69
+ --color-foreground: var(--foreground);
70
+
71
+ --color-primary: var(--primary);
72
+ --color-primary-foreground: var(--primary-foreground);
73
+
74
+ --color-secondary: var(--secondary);
75
+ --color-secondary-foreground: var(--secondary-foreground);
76
+
77
+ --color-destructive: var(--destructive);
78
+ --color-destructive-foreground: var(--destructive-foreground);
79
+
80
+ --color-muted: var(--muted);
81
+ --color-muted-foreground: var(--muted-foreground);
82
+
83
+ --color-accent: var(--accent);
84
+ --color-accent-foreground: var(--accent-foreground);
85
+
86
+ --color-popover: var(--popover);
87
+ --color-popover-foreground: var(--popover-foreground);
88
+
89
+ --color-card: var(--card);
90
+ --color-card-foreground: var(--card-foreground);
91
+
92
+ --color-sidebar: var(--sidebar-background);
93
+ --color-sidebar-foreground: var(--sidebar-foreground);
94
+ --color-sidebar-primary: var(--sidebar-primary);
95
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
96
+ --color-sidebar-accent: var(--sidebar-accent);
97
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
98
+ --color-sidebar-border: var(--sidebar-border);
99
+ --color-sidebar-ring: var(--sidebar-ring);
100
+
101
+ --radius-lg: var(--radius);
102
+ --radius-md: calc(var(--radius) - 2px);
103
+ --radius-sm: calc(var(--radius) - 4px);
104
+
105
+ --animate-accordion-down: accordion-down 0.2s ease-out;
106
+ --animate-accordion-up: accordion-up 0.2s ease-out;
107
+
108
+ @keyframes accordion-down {
109
+ from {
110
+ height: 0;
111
+ }
112
+
113
+ to {
114
+ height: var(--radix-accordion-content-height);
115
+ }
116
+ }
117
+
118
+ @keyframes accordion-up {
119
+ from {
120
+ height: var(--radix-accordion-content-height);
121
+ }
122
+
123
+ to {
124
+ height: 0;
125
+ }
126
+ }
127
+ }
128
+
129
+ @media (prefers-color-scheme: dark) {
130
+ :root {
131
+ --background: hsl(240 10% 3.9%);
132
+ --foreground: hsl(0 0% 98%);
133
+
134
+ --card: hsl(240 10% 3.9%);
135
+ --card-foreground: hsl(0 0% 98%);
136
+
137
+ --popover: hsl(240 10% 3.9%);
138
+ --popover-foreground: hsl(0 0% 98%);
139
+
140
+ --primary: hsl(0 0% 98%);
141
+ --primary-foreground: hsl(240 5.9% 10%);
142
+
143
+ --secondary: hsl(240 3.7% 15.9%);
144
+ --secondary-foreground: hsl(0 0% 98%);
145
+
146
+ --muted: hsl(240 3.7% 15.9%);
147
+ --muted-foreground: hsl(240 5% 64.9%);
148
+
149
+ --accent: hsl(240 3.7% 15.9%);
150
+ --accent-foreground: hsl(0 0% 98%);
151
+
152
+ --destructive: hsl(0 62.8% 30.6%);
153
+ --destructive-foreground: hsl(0 0% 98%);
154
+
155
+ --success: hsl(142.1 70.6% 45.3%);
156
+ --success-foreground: hsl(240 5.9% 10%);
157
+
158
+ --warning: hsl(48 96.5% 53.1%);
159
+ --warning-foreground: hsl(240 5.9% 10%);
160
+
161
+ --info: hsl(199.4 95.5% 53.8%);
162
+ --info-foreground: hsl(240 5.9% 10%);
163
+
164
+ --border: hsl(240 3.7% 15.9%);
165
+ --input: hsl(240 3.7% 15.9%);
166
+ --ring: hsl(240 4.9% 83.9%);
167
+
168
+ --sidebar-background: hsl(240 5.9% 10%);
169
+ --sidebar-foreground: hsl(240 4.8% 95.9%);
170
+ --sidebar-primary: hsl(224.3 76.3% 48%);
171
+ --sidebar-primary-foreground: hsl(0 0% 100%);
172
+ --sidebar-accent: hsl(240 3.7% 15.9%);
173
+ --sidebar-accent-foreground: hsl(240 4.8% 95.9%);
174
+ --sidebar-border: hsl(240 3.7% 15.9%);
175
+ --sidebar-ring: hsl(217.2 91.2% 59.8%);
176
+ }
177
+ }
178
+
179
+ body {
180
+ background: var(--background);
181
+ color: var(--foreground);
182
+ font-family: Arial, Helvetica, sans-serif;
183
+ }
@@ -0,0 +1,96 @@
1
+ import * as React from "react"
2
+ import { cva, type VariantProps } from "class-variance-authority"
3
+ import { cn } from "@/lib/utils"
4
+
5
+ import { ScrollArea } from "@/components/ui/scroll-area"
6
+
7
+ const Chatbot = React.forwardRef<
8
+ HTMLDivElement,
9
+ React.HTMLAttributes<HTMLDivElement>
10
+ >(({ className, ...props }, ref) => (
11
+ <div
12
+ ref={ref}
13
+ className={cn(
14
+ "flex flex-col w-full h-[500px] border rounded-lg bg-background text-foreground shadow-sm overflow-hidden",
15
+ className
16
+ )}
17
+ {...props}
18
+ />
19
+ ))
20
+ Chatbot.displayName = "Chatbot"
21
+
22
+ const ChatbotHeader = React.forwardRef<
23
+ HTMLDivElement,
24
+ React.HTMLAttributes<HTMLDivElement>
25
+ >(({ className, ...props }, ref) => (
26
+ <div
27
+ ref={ref}
28
+ className={cn(
29
+ "flex items-center px-4 py-3 border-b bg-muted/40",
30
+ className
31
+ )}
32
+ {...props}
33
+ />
34
+ ))
35
+ ChatbotHeader.displayName = "ChatbotHeader"
36
+
37
+ const ChatbotContent = React.forwardRef<
38
+ HTMLDivElement,
39
+ React.HTMLAttributes<HTMLDivElement>
40
+ >(({ className, ...props }, ref) => (
41
+ <ScrollArea
42
+ ref={ref}
43
+ className={cn("flex-1 p-2 space-y-4 flex flex-col", className)}
44
+ scrollbarSize="thin"
45
+ {...props}
46
+ />
47
+ ))
48
+ ChatbotContent.displayName = "ChatbotContent"
49
+
50
+ const chatbotMessageVariants = cva(
51
+ "max-w-[80%] rounded-2xl px-4 py-2 text-sm break-words",
52
+ {
53
+ variants: {
54
+ variant: {
55
+ user: "bg-primary text-primary-foreground rounded-br-none ml-auto",
56
+ bot: "bg-muted text-foreground rounded-bl-none mr-auto",
57
+ },
58
+ },
59
+ defaultVariants: {
60
+ variant: "bot",
61
+ },
62
+ }
63
+ )
64
+
65
+ const ChatbotMessage = React.forwardRef<
66
+ HTMLDivElement,
67
+ React.HTMLAttributes<HTMLDivElement> &
68
+ VariantProps<typeof chatbotMessageVariants>
69
+ >(({ className, variant, ...props }, ref) => (
70
+ <div
71
+ ref={ref}
72
+ className={cn(chatbotMessageVariants({ variant }), className)}
73
+ {...props}
74
+ />
75
+ ))
76
+ ChatbotMessage.displayName = "ChatbotMessage"
77
+
78
+ const ChatbotFooter = React.forwardRef<
79
+ HTMLDivElement,
80
+ React.HTMLAttributes<HTMLDivElement>
81
+ >(({ className, ...props }, ref) => (
82
+ <div
83
+ ref={ref}
84
+ className={cn("flex items-center p-3 border-t bg-background rounded-b-lg", className)}
85
+ {...props}
86
+ />
87
+ ))
88
+ ChatbotFooter.displayName = "ChatbotFooter"
89
+
90
+ export {
91
+ Chatbot,
92
+ ChatbotHeader,
93
+ ChatbotContent,
94
+ ChatbotMessage,
95
+ ChatbotFooter,
96
+ }
@@ -1,217 +0,0 @@
1
- /**
2
- * @srcroot/ui Design Tokens
3
- *
4
- * A comprehensive design token system for consistent styling.
5
- * Copy this file to your project and import it in your main CSS file.
6
- */
7
-
8
- @tailwind base;
9
- @tailwind components;
10
- @tailwind utilities;
11
-
12
- @layer base {
13
- :root {
14
- /* ========================================
15
- COLOR TOKENS (HSL format for Tailwind)
16
- ======================================== */
17
-
18
- /* Semantic Colors */
19
- --background: 0 0% 100%;
20
- --foreground: 222.2 84% 4.9%;
21
-
22
- /* Surfaces */
23
- --card: 0 0% 100%;
24
- --card-foreground: 222.2 84% 4.9%;
25
- --popover: 0 0% 100%;
26
- --popover-foreground: 222.2 84% 4.9%;
27
-
28
- /* Brand Colors */
29
- --primary: 222.2 47.4% 11.2%;
30
- --primary-foreground: 210 40% 98%;
31
- --secondary: 210 40% 96.1%;
32
- --secondary-foreground: 222.2 47.4% 11.2%;
33
-
34
- /* UI Colors */
35
- --muted: 210 40% 96.1%;
36
- --muted-foreground: 215.4 16.3% 46.9%;
37
- --accent: 210 40% 96.1%;
38
- --accent-foreground: 222.2 47.4% 11.2%;
39
-
40
- /* Status Colors */
41
- --destructive: 0 84.2% 60.2%;
42
- --destructive-foreground: 210 40% 98%;
43
- --success: 142.1 76.2% 36.3%;
44
- --success-foreground: 355.7 100% 97.3%;
45
- --warning: 45.4 93.4% 47.5%;
46
- --warning-foreground: 26 83.3% 14.1%;
47
- --info: 201.3 96.3% 32.2%;
48
- --info-foreground: 210 40% 98%;
49
-
50
- /* Form & Border Colors */
51
- --border: 214.3 31.8% 91.4%;
52
- --input: 214.3 31.8% 91.4%;
53
- --ring: 222.2 84% 4.9%;
54
-
55
- /* ========================================
56
- RADIUS TOKENS
57
- ======================================== */
58
- --radius: 0.5rem;
59
- --radius-sm: 0.25rem;
60
- --radius-md: 0.5rem;
61
- --radius-lg: 0.75rem;
62
- --radius-xl: 1rem;
63
- --radius-2xl: 1.5rem;
64
- --radius-full: 9999px;
65
-
66
- /* ========================================
67
- SPACING TOKENS
68
- ======================================== */
69
- --spacing-0: 0;
70
- --spacing-1: 0.25rem;
71
- --spacing-2: 0.5rem;
72
- --spacing-3: 0.75rem;
73
- --spacing-4: 1rem;
74
- --spacing-6: 1.5rem;
75
- --spacing-8: 2rem;
76
- --spacing-12: 3rem;
77
- --spacing-16: 4rem;
78
-
79
- /* ========================================
80
- TYPOGRAPHY TOKENS
81
- ======================================== */
82
- --font-sans: ui-sans-serif, system-ui, sans-serif;
83
- --font-mono: ui-monospace, monospace;
84
-
85
- --text-xs: 0.75rem;
86
- --text-sm: 0.875rem;
87
- --text-base: 1rem;
88
- --text-lg: 1.125rem;
89
- --text-xl: 1.25rem;
90
- --text-2xl: 1.5rem;
91
- --text-3xl: 1.875rem;
92
- --text-4xl: 2.25rem;
93
-
94
- /* ========================================
95
- SHADOW TOKENS
96
- ======================================== */
97
- --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
98
- --shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
99
- --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
100
- --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
101
-
102
- /* ========================================
103
- COMPONENT TOKENS
104
- ======================================== */
105
- --sidebar-width: 16rem;
106
- --sidebar-width-mobile: 18rem;
107
- --sidebar-width-collapsed: 3rem;
108
- --sidebar-width-icon: 3rem;
109
- --header-height: 3.5rem;
110
-
111
- --sidebar-background: 0 0% 98%;
112
- --sidebar-foreground: 240 5.3% 26.1%;
113
- --sidebar-primary: 240 5.9% 10%;
114
- --sidebar-primary-foreground: 0 0% 98%;
115
- --sidebar-accent: 240 4.8% 95.9%;
116
- --sidebar-accent-foreground: 240 5.9% 10%;
117
- --sidebar-border: 220 13% 91%;
118
- --sidebar-ring: 217.2 91.2% 59.8%;
119
- }
120
-
121
- /* ========================================
122
- DARK MODE TOKENS
123
- ======================================== */
124
- .dark {
125
- --background: 222.2 84% 4.9%;
126
- --foreground: 210 40% 98%;
127
-
128
- --card: 222.2 84% 4.9%;
129
- --card-foreground: 210 40% 98%;
130
- --popover: 222.2 84% 4.9%;
131
- --popover-foreground: 210 40% 98%;
132
-
133
- --primary: 210 40% 98%;
134
- --primary-foreground: 222.2 47.4% 11.2%;
135
- --secondary: 217.2 32.6% 17.5%;
136
- --secondary-foreground: 210 40% 98%;
137
-
138
- --muted: 217.2 32.6% 17.5%;
139
- --muted-foreground: 215 20.2% 65.1%;
140
- --accent: 217.2 32.6% 17.5%;
141
- --accent-foreground: 210 40% 98%;
142
-
143
- --destructive: 0 62.8% 30.6%;
144
- --destructive-foreground: 210 40% 98%;
145
- --success: 142.1 70.6% 45.3%;
146
- --success-foreground: 144.9 80.4% 10%;
147
- --warning: 48 96.5% 53.1%;
148
- --warning-foreground: 20.9 91.7% 14.1%;
149
- --info: 199.4 95.5% 53.8%;
150
- --info-foreground: 204.9 73.1% 12.9%;
151
-
152
- --border: 217.2 32.6% 17.5%;
153
- --input: 217.2 32.6% 17.5%;
154
- --ring: 212.7 26.8% 83.9%;
155
-
156
- --sidebar-background: 240 5.9% 10%;
157
- --sidebar-foreground: 240 4.8% 95.9%;
158
- --sidebar-primary: 224.3 76.3% 48%;
159
- --sidebar-primary-foreground: 0 0% 100%;
160
- --sidebar-accent: 240 3.7% 15.9%;
161
- --sidebar-accent-foreground: 240 4.8% 95.9%;
162
- --sidebar-border: 240 3.7% 15.9%;
163
- --sidebar-ring: 217.2 91.2% 59.8%;
164
-
165
- --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.3);
166
- --shadow: 0 1px 3px 0 rgb(0 0 0 / 0.4);
167
- --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.4);
168
- --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.4);
169
- }
170
- }
171
-
172
- /* ========================================
173
- BASE STYLES
174
- ======================================== */
175
- @layer base {
176
- * {
177
- @apply border-border;
178
- }
179
-
180
- body {
181
- @apply bg-background text-foreground;
182
- font-feature-settings: "rlig" 1, "calt" 1;
183
- }
184
- }
185
-
186
- /* ========================================
187
- ACCORDION ANIMATION (required)
188
- ======================================== */
189
- @layer utilities {
190
- @keyframes accordion-down {
191
- from {
192
- height: 0;
193
- }
194
-
195
- to {
196
- height: var(--radix-accordion-content-height);
197
- }
198
- }
199
-
200
- @keyframes accordion-up {
201
- from {
202
- height: var(--radix-accordion-content-height);
203
- }
204
-
205
- to {
206
- height: 0;
207
- }
208
- }
209
-
210
- .animate-accordion-down {
211
- animation: accordion-down 0.2s ease-out;
212
- }
213
-
214
- .animate-accordion-up {
215
- animation: accordion-up 0.2s ease-out;
216
- }
217
- }
@@ -1,19 +0,0 @@
1
- /**
2
- * @srcroot/ui Theme Index
3
- *
4
- * Available themes:
5
- * - neutral.css - Pure gray, no undertones
6
- * - stone.css - Warm gray with brown undertones
7
- * - zinc.css - Cool gray with subtle blue undertones
8
- * - gray.css - True neutral gray
9
- * - slate.css - Cool gray with strong blue undertones (default)
10
- *
11
- * Usage:
12
- * Copy the theme file contents into your globals.css or import it:
13
- *
14
- * @import '@srcroot/ui/themes/slate.css';
15
- *
16
- * Or with the base tokens:
17
- * @import '@srcroot/ui/design-tokens.css';
18
- * @import '@srcroot/ui/themes/zinc.css';
19
- */
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes