@gilav21/shadcn-angular 0.0.9 → 0.0.11

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.
@@ -16,6 +16,11 @@ export const registry: Record<string, ComponentDefinition> = {
16
16
  name: 'accordion',
17
17
  files: ['accordion.component.ts'],
18
18
  },
19
+ autocomplete: {
20
+ name: 'autocomplete',
21
+ files: ['autocomplete.component.ts', 'highlight.pipe.ts'],
22
+ dependencies: ['popover', 'command', 'badge'],
23
+ },
19
24
  alert: {
20
25
  name: 'alert',
21
26
  files: ['alert.component.ts'],
@@ -70,6 +75,15 @@ export const registry: Record<string, ComponentDefinition> = {
70
75
  name: 'collapsible',
71
76
  files: ['collapsible.component.ts'],
72
77
  },
78
+ 'color-picker': {
79
+ name: 'color-picker',
80
+ files: ['color-picker.component.ts'],
81
+ dependencies: ['popover', 'input', 'tabs'],
82
+ },
83
+ confetti: {
84
+ name: 'confetti',
85
+ files: ['confetti.directive.ts'],
86
+ },
73
87
  command: {
74
88
  name: 'command',
75
89
  files: ['command.component.ts'],
@@ -84,6 +98,25 @@ export const registry: Record<string, ComponentDefinition> = {
84
98
  files: ['date-picker.component.ts'],
85
99
  dependencies: ['calendar'],
86
100
  },
101
+ 'data-table': {
102
+ name: 'data-table',
103
+ files: [
104
+ 'data-table/data-table.component.ts',
105
+ 'data-table/data-table-column-header.component.ts',
106
+ 'data-table/data-table-pagination.component.ts',
107
+ 'data-table/data-table.types.ts',
108
+ 'data-table/cell-host.directive.ts',
109
+ ],
110
+ dependencies: [
111
+ 'table',
112
+ 'input',
113
+ 'button',
114
+ 'checkbox',
115
+ 'select',
116
+ 'pagination',
117
+ 'popover',
118
+ ],
119
+ },
87
120
  dialog: {
88
121
  name: 'dialog',
89
122
  files: ['dialog.component.ts'],
@@ -104,6 +137,11 @@ export const registry: Record<string, ComponentDefinition> = {
104
137
  name: 'field',
105
138
  files: ['field.component.ts'],
106
139
  },
140
+ 'file-upload': {
141
+ name: 'file-upload',
142
+ files: ['file-upload.component.ts'],
143
+ dependencies: ['button', 'progress'],
144
+ },
107
145
  'hover-card': {
108
146
  name: 'hover-card',
109
147
  files: ['hover-card.component.ts'],
@@ -114,7 +152,8 @@ export const registry: Record<string, ComponentDefinition> = {
114
152
  },
115
153
  'input-group': {
116
154
  name: 'input-group',
117
- files: ['input-group.component.ts'],
155
+ files: ['input-group.component.ts', 'input-group.token.ts'],
156
+ dependencies: ['input'],
118
157
  },
119
158
  'input-otp': {
120
159
  name: 'input-otp',
@@ -140,6 +179,10 @@ export const registry: Record<string, ComponentDefinition> = {
140
179
  name: 'navigation-menu',
141
180
  files: ['navigation-menu.component.ts'],
142
181
  },
182
+ 'number-ticker': {
183
+ name: 'number-ticker',
184
+ files: ['number-ticker.component.ts'],
185
+ },
143
186
  pagination: {
144
187
  name: 'pagination',
145
188
  files: ['pagination.component.ts'],
@@ -156,6 +199,10 @@ export const registry: Record<string, ComponentDefinition> = {
156
199
  name: 'radio-group',
157
200
  files: ['radio-group.component.ts'],
158
201
  },
202
+ rating: {
203
+ name: 'rating',
204
+ files: ['rating.component.ts'],
205
+ },
159
206
  resizable: {
160
207
  name: 'resizable',
161
208
  files: ['resizable.component.ts'],
@@ -192,6 +239,10 @@ export const registry: Record<string, ComponentDefinition> = {
192
239
  name: 'spinner',
193
240
  files: ['spinner.component.ts'],
194
241
  },
242
+ stepper: {
243
+ name: 'stepper',
244
+ files: ['stepper.component.ts'],
245
+ },
195
246
  switch: {
196
247
  name: 'switch',
197
248
  files: ['switch.component.ts'],
@@ -208,6 +259,10 @@ export const registry: Record<string, ComponentDefinition> = {
208
259
  name: 'textarea',
209
260
  files: ['textarea.component.ts'],
210
261
  },
262
+ timeline: {
263
+ name: 'timeline',
264
+ files: ['timeline.component.ts'],
265
+ },
211
266
  toast: {
212
267
  name: 'toast',
213
268
  files: ['toast.component.ts'],
@@ -224,6 +279,10 @@ export const registry: Record<string, ComponentDefinition> = {
224
279
  name: 'tooltip',
225
280
  files: ['tooltip.component.ts'],
226
281
  },
282
+ tree: {
283
+ name: 'tree',
284
+ files: ['tree.component.ts'],
285
+ },
227
286
  'speed-dial': {
228
287
  name: 'speed-dial',
229
288
  files: ['speed-dial.component.ts'],
@@ -232,7 +291,7 @@ export const registry: Record<string, ComponentDefinition> = {
232
291
  'chip-list': {
233
292
  name: 'chip-list',
234
293
  files: ['chip-list.component.ts'],
235
- dependencies: ['badge', 'button'],
294
+ dependencies: ['badge', 'button', 'input', 'input-group'],
236
295
  },
237
296
  'emoji-picker': {
238
297
  name: 'emoji-picker',
@@ -259,4 +318,69 @@ export const registry: Record<string, ComponentDefinition> = {
259
318
  'scroll-area',
260
319
  ],
261
320
  },
321
+ // Chart Components
322
+ 'pie-chart': {
323
+ name: 'pie-chart',
324
+ files: [
325
+ 'charts/pie-chart.component.ts',
326
+ 'charts/chart.types.ts',
327
+ 'charts/chart.utils.ts',
328
+ ],
329
+ },
330
+ 'pie-chart-drilldown': {
331
+ name: 'pie-chart-drilldown',
332
+ files: [
333
+ 'charts/pie-chart-drilldown.component.ts',
334
+ 'charts/chart.types.ts',
335
+ 'charts/chart.utils.ts',
336
+ ],
337
+ },
338
+ 'bar-chart': {
339
+ name: 'bar-chart',
340
+ files: [
341
+ 'charts/bar-chart.component.ts',
342
+ 'charts/chart.types.ts',
343
+ 'charts/chart.utils.ts',
344
+ ],
345
+ },
346
+ 'bar-chart-drilldown': {
347
+ name: 'bar-chart-drilldown',
348
+ files: [
349
+ 'charts/bar-chart-drilldown.component.ts',
350
+ 'charts/chart.types.ts',
351
+ 'charts/chart.utils.ts',
352
+ ],
353
+ },
354
+ 'stacked-bar-chart': {
355
+ name: 'stacked-bar-chart',
356
+ files: [
357
+ 'charts/stacked-bar-chart.component.ts',
358
+ 'charts/chart.types.ts',
359
+ 'charts/chart.utils.ts',
360
+ ],
361
+ },
362
+ 'column-range-chart': {
363
+ name: 'column-range-chart',
364
+ files: [
365
+ 'charts/column-range-chart.component.ts',
366
+ 'charts/chart.types.ts',
367
+ 'charts/chart.utils.ts',
368
+ ],
369
+ },
370
+ 'bar-race-chart': {
371
+ name: 'bar-race-chart',
372
+ files: [
373
+ 'charts/bar-race-chart.component.ts',
374
+ 'charts/chart.types.ts',
375
+ 'charts/chart.utils.ts',
376
+ ],
377
+ },
378
+ 'org-chart': {
379
+ name: 'org-chart',
380
+ files: [
381
+ 'charts/org-chart.component.ts',
382
+ 'charts/chart.types.ts',
383
+ 'charts/chart.utils.ts',
384
+ ],
385
+ },
262
386
  };
@@ -1,4 +1,5 @@
1
1
  type BaseColor = 'neutral' | 'slate' | 'stone' | 'gray' | 'zinc';
2
+ type ThemeColor = 'zinc' | 'slate' | 'stone' | 'gray' | 'neutral' | 'red' | 'rose' | 'orange' | 'green' | 'blue' | 'yellow' | 'violet' | 'amber';
2
3
 
3
4
  const baseColors: Record<BaseColor, { light: Record<string, string>; dark: Record<string, string> }> = {
4
5
  neutral: {
@@ -9,8 +10,6 @@ const baseColors: Record<BaseColor, { light: Record<string, string>; dark: Recor
9
10
  '--card-foreground': 'oklch(0.145 0 0)',
10
11
  '--popover': 'oklch(1 0 0)',
11
12
  '--popover-foreground': 'oklch(0.145 0 0)',
12
- '--primary': 'oklch(0.205 0 0)',
13
- '--primary-foreground': 'oklch(0.985 0 0)',
14
13
  '--secondary': 'oklch(0.97 0 0)',
15
14
  '--secondary-foreground': 'oklch(0.205 0 0)',
16
15
  '--muted': 'oklch(0.97 0 0)',
@@ -20,7 +19,6 @@ const baseColors: Record<BaseColor, { light: Record<string, string>; dark: Recor
20
19
  '--destructive': 'oklch(0.577 0.245 27.325)',
21
20
  '--border': 'oklch(0.922 0 0)',
22
21
  '--input': 'oklch(0.922 0 0)',
23
- '--ring': 'oklch(0.708 0 0)',
24
22
  },
25
23
  dark: {
26
24
  '--background': 'oklch(0.145 0 0)',
@@ -29,8 +27,6 @@ const baseColors: Record<BaseColor, { light: Record<string, string>; dark: Recor
29
27
  '--card-foreground': 'oklch(0.985 0 0)',
30
28
  '--popover': 'oklch(0.269 0 0)',
31
29
  '--popover-foreground': 'oklch(0.985 0 0)',
32
- '--primary': 'oklch(0.922 0 0)',
33
- '--primary-foreground': 'oklch(0.205 0 0)',
34
30
  '--secondary': 'oklch(0.269 0 0)',
35
31
  '--secondary-foreground': 'oklch(0.985 0 0)',
36
32
  '--muted': 'oklch(0.269 0 0)',
@@ -40,7 +36,6 @@ const baseColors: Record<BaseColor, { light: Record<string, string>; dark: Recor
40
36
  '--destructive': 'oklch(0.704 0.191 22.216)',
41
37
  '--border': 'oklch(1 0 0 / 10%)',
42
38
  '--input': 'oklch(1 0 0 / 15%)',
43
- '--ring': 'oklch(0.556 0 0)',
44
39
  },
45
40
  },
46
41
  slate: {
@@ -51,8 +46,6 @@ const baseColors: Record<BaseColor, { light: Record<string, string>; dark: Recor
51
46
  '--card-foreground': 'oklch(0.129 0.042 264.695)',
52
47
  '--popover': 'oklch(1 0 0)',
53
48
  '--popover-foreground': 'oklch(0.129 0.042 264.695)',
54
- '--primary': 'oklch(0.208 0.042 265.755)',
55
- '--primary-foreground': 'oklch(0.984 0.003 247.858)',
56
49
  '--secondary': 'oklch(0.968 0.007 247.896)',
57
50
  '--secondary-foreground': 'oklch(0.208 0.042 265.755)',
58
51
  '--muted': 'oklch(0.968 0.007 247.896)',
@@ -62,7 +55,6 @@ const baseColors: Record<BaseColor, { light: Record<string, string>; dark: Recor
62
55
  '--destructive': 'oklch(0.577 0.245 27.325)',
63
56
  '--border': 'oklch(0.929 0.013 255.508)',
64
57
  '--input': 'oklch(0.929 0.013 255.508)',
65
- '--ring': 'oklch(0.704 0.04 256.788)',
66
58
  },
67
59
  dark: {
68
60
  '--background': 'oklch(0.129 0.042 264.695)',
@@ -71,8 +63,6 @@ const baseColors: Record<BaseColor, { light: Record<string, string>; dark: Recor
71
63
  '--card-foreground': 'oklch(0.984 0.003 247.858)',
72
64
  '--popover': 'oklch(0.269 0.04 260.031)',
73
65
  '--popover-foreground': 'oklch(0.984 0.003 247.858)',
74
- '--primary': 'oklch(0.929 0.013 255.508)',
75
- '--primary-foreground': 'oklch(0.208 0.042 265.755)',
76
66
  '--secondary': 'oklch(0.269 0.04 260.031)',
77
67
  '--secondary-foreground': 'oklch(0.984 0.003 247.858)',
78
68
  '--muted': 'oklch(0.269 0.04 260.031)',
@@ -82,7 +72,6 @@ const baseColors: Record<BaseColor, { light: Record<string, string>; dark: Recor
82
72
  '--destructive': 'oklch(0.704 0.191 22.216)',
83
73
  '--border': 'oklch(1 0 0 / 10%)',
84
74
  '--input': 'oklch(1 0 0 / 15%)',
85
- '--ring': 'oklch(0.554 0.046 257.417)',
86
75
  },
87
76
  },
88
77
  stone: {
@@ -93,8 +82,6 @@ const baseColors: Record<BaseColor, { light: Record<string, string>; dark: Recor
93
82
  '--card-foreground': 'oklch(0.147 0.004 49.25)',
94
83
  '--popover': 'oklch(1 0 0)',
95
84
  '--popover-foreground': 'oklch(0.147 0.004 49.25)',
96
- '--primary': 'oklch(0.216 0.006 56.043)',
97
- '--primary-foreground': 'oklch(0.985 0.001 106.423)',
98
85
  '--secondary': 'oklch(0.97 0.001 106.424)',
99
86
  '--secondary-foreground': 'oklch(0.216 0.006 56.043)',
100
87
  '--muted': 'oklch(0.97 0.001 106.424)',
@@ -104,7 +91,6 @@ const baseColors: Record<BaseColor, { light: Record<string, string>; dark: Recor
104
91
  '--destructive': 'oklch(0.577 0.245 27.325)',
105
92
  '--border': 'oklch(0.923 0.003 48.717)',
106
93
  '--input': 'oklch(0.923 0.003 48.717)',
107
- '--ring': 'oklch(0.709 0.01 56.259)',
108
94
  },
109
95
  dark: {
110
96
  '--background': 'oklch(0.147 0.004 49.25)',
@@ -113,8 +99,6 @@ const baseColors: Record<BaseColor, { light: Record<string, string>; dark: Recor
113
99
  '--card-foreground': 'oklch(0.985 0.001 106.423)',
114
100
  '--popover': 'oklch(0.268 0.007 34.298)',
115
101
  '--popover-foreground': 'oklch(0.985 0.001 106.423)',
116
- '--primary': 'oklch(0.923 0.003 48.717)',
117
- '--primary-foreground': 'oklch(0.216 0.006 56.043)',
118
102
  '--secondary': 'oklch(0.268 0.007 34.298)',
119
103
  '--secondary-foreground': 'oklch(0.985 0.001 106.423)',
120
104
  '--muted': 'oklch(0.268 0.007 34.298)',
@@ -124,7 +108,6 @@ const baseColors: Record<BaseColor, { light: Record<string, string>; dark: Recor
124
108
  '--destructive': 'oklch(0.704 0.191 22.216)',
125
109
  '--border': 'oklch(1 0 0 / 10%)',
126
110
  '--input': 'oklch(1 0 0 / 15%)',
127
- '--ring': 'oklch(0.553 0.013 58.071)',
128
111
  },
129
112
  },
130
113
  gray: {
@@ -135,8 +118,6 @@ const baseColors: Record<BaseColor, { light: Record<string, string>; dark: Recor
135
118
  '--card-foreground': 'oklch(0.13 0.028 261.692)',
136
119
  '--popover': 'oklch(1 0 0)',
137
120
  '--popover-foreground': 'oklch(0.13 0.028 261.692)',
138
- '--primary': 'oklch(0.21 0.028 264.532)',
139
- '--primary-foreground': 'oklch(0.985 0.002 247.839)',
140
121
  '--secondary': 'oklch(0.967 0.003 264.542)',
141
122
  '--secondary-foreground': 'oklch(0.21 0.028 264.532)',
142
123
  '--muted': 'oklch(0.967 0.003 264.542)',
@@ -146,7 +127,6 @@ const baseColors: Record<BaseColor, { light: Record<string, string>; dark: Recor
146
127
  '--destructive': 'oklch(0.577 0.245 27.325)',
147
128
  '--border': 'oklch(0.928 0.006 264.531)',
148
129
  '--input': 'oklch(0.928 0.006 264.531)',
149
- '--ring': 'oklch(0.707 0.022 264.436)',
150
130
  },
151
131
  dark: {
152
132
  '--background': 'oklch(0.13 0.028 261.692)',
@@ -155,8 +135,6 @@ const baseColors: Record<BaseColor, { light: Record<string, string>; dark: Recor
155
135
  '--card-foreground': 'oklch(0.985 0.002 247.839)',
156
136
  '--popover': 'oklch(0.274 0.029 256.848)',
157
137
  '--popover-foreground': 'oklch(0.985 0.002 247.839)',
158
- '--primary': 'oklch(0.928 0.006 264.531)',
159
- '--primary-foreground': 'oklch(0.21 0.028 264.532)',
160
138
  '--secondary': 'oklch(0.274 0.029 256.848)',
161
139
  '--secondary-foreground': 'oklch(0.985 0.002 247.839)',
162
140
  '--muted': 'oklch(0.274 0.029 256.848)',
@@ -166,7 +144,6 @@ const baseColors: Record<BaseColor, { light: Record<string, string>; dark: Recor
166
144
  '--destructive': 'oklch(0.704 0.191 22.216)',
167
145
  '--border': 'oklch(1 0 0 / 10%)',
168
146
  '--input': 'oklch(1 0 0 / 15%)',
169
- '--ring': 'oklch(0.551 0.027 264.364)',
170
147
  },
171
148
  },
172
149
  zinc: {
@@ -177,8 +154,6 @@ const baseColors: Record<BaseColor, { light: Record<string, string>; dark: Recor
177
154
  '--card-foreground': 'oklch(0.141 0.005 285.823)',
178
155
  '--popover': 'oklch(1 0 0)',
179
156
  '--popover-foreground': 'oklch(0.141 0.005 285.823)',
180
- '--primary': 'oklch(0.21 0.006 285.885)',
181
- '--primary-foreground': 'oklch(0.985 0 0)',
182
157
  '--secondary': 'oklch(0.967 0.001 286.375)',
183
158
  '--secondary-foreground': 'oklch(0.21 0.006 285.885)',
184
159
  '--muted': 'oklch(0.967 0.001 286.375)',
@@ -188,7 +163,6 @@ const baseColors: Record<BaseColor, { light: Record<string, string>; dark: Recor
188
163
  '--destructive': 'oklch(0.577 0.245 27.325)',
189
164
  '--border': 'oklch(0.92 0.004 286.32)',
190
165
  '--input': 'oklch(0.92 0.004 286.32)',
191
- '--ring': 'oklch(0.705 0.015 286.067)',
192
166
  },
193
167
  dark: {
194
168
  '--background': 'oklch(0.141 0.005 285.823)',
@@ -197,8 +171,6 @@ const baseColors: Record<BaseColor, { light: Record<string, string>; dark: Recor
197
171
  '--card-foreground': 'oklch(0.985 0 0)',
198
172
  '--popover': 'oklch(0.274 0.006 286.033)',
199
173
  '--popover-foreground': 'oklch(0.985 0 0)',
200
- '--primary': 'oklch(0.92 0.004 286.32)',
201
- '--primary-foreground': 'oklch(0.21 0.006 285.885)',
202
174
  '--secondary': 'oklch(0.274 0.006 286.033)',
203
175
  '--secondary-foreground': 'oklch(0.985 0 0)',
204
176
  '--muted': 'oklch(0.274 0.006 286.033)',
@@ -208,19 +180,77 @@ const baseColors: Record<BaseColor, { light: Record<string, string>; dark: Recor
208
180
  '--destructive': 'oklch(0.704 0.191 22.216)',
209
181
  '--border': 'oklch(1 0 0 / 10%)',
210
182
  '--input': 'oklch(1 0 0 / 15%)',
211
- '--ring': 'oklch(0.552 0.016 285.938)',
212
183
  },
213
184
  },
214
185
  };
215
186
 
187
+ const themeColors: Record<ThemeColor, { light: Record<string, string>; dark: Record<string, string> }> = {
188
+ neutral: {
189
+ light: { '--primary': 'oklch(0.205 0 0)', '--primary-foreground': 'oklch(0.985 0 0)', '--ring': 'oklch(0.708 0 0)' },
190
+ dark: { '--primary': 'oklch(0.985 0 0)', '--primary-foreground': 'oklch(0.205 0 0)', '--ring': 'oklch(0.708 0 0)' },
191
+ },
192
+ zinc: { // Same as neutral for now
193
+ light: { '--primary': 'oklch(0.205 0 0)', '--primary-foreground': 'oklch(0.985 0 0)', '--ring': 'oklch(0.708 0 0)' },
194
+ dark: { '--primary': 'oklch(0.985 0 0)', '--primary-foreground': 'oklch(0.205 0 0)', '--ring': 'oklch(0.708 0 0)' },
195
+ },
196
+ slate: {
197
+ light: { '--primary': 'oklch(0.208 0.042 265.755)', '--primary-foreground': 'oklch(0.984 0.003 247.858)', '--ring': 'oklch(0.704 0.04 256.788)' },
198
+ dark: { '--primary': 'oklch(0.929 0.013 255.508)', '--primary-foreground': 'oklch(0.208 0.042 265.755)', '--ring': 'oklch(0.704 0.04 256.788)' },
199
+ },
200
+ stone: {
201
+ light: { '--primary': 'oklch(0.216 0.006 56.043)', '--primary-foreground': 'oklch(0.985 0.001 106.423)', '--ring': 'oklch(0.709 0.01 56.259)' },
202
+ dark: { '--primary': 'oklch(0.923 0.003 48.717)', '--primary-foreground': 'oklch(0.216 0.006 56.043)', '--ring': 'oklch(0.553 0.013 58.071)' },
203
+ },
204
+ gray: {
205
+ light: { '--primary': 'oklch(0.21 0.028 264.532)', '--primary-foreground': 'oklch(0.985 0.002 247.839)', '--ring': 'oklch(0.707 0.022 264.436)' },
206
+ dark: { '--primary': 'oklch(0.928 0.006 264.531)', '--primary-foreground': 'oklch(0.21 0.028 264.532)', '--ring': 'oklch(0.551 0.027 264.364)' },
207
+ },
208
+ red: {
209
+ light: { '--primary': 'oklch(0.577 0.245 27.325)', '--primary-foreground': 'oklch(0.985 0 0)', '--ring': 'oklch(0.577 0.245 27.325)' },
210
+ dark: { '--primary': 'oklch(0.577 0.245 27.325)', '--primary-foreground': 'oklch(0.985 0 0)', '--ring': 'oklch(0.577 0.245 27.325)' },
211
+ },
212
+ rose: {
213
+ light: { '--primary': 'oklch(0.645 0.246 16.439)', '--primary-foreground': 'oklch(0.985 0 0)', '--ring': 'oklch(0.645 0.246 16.439)' },
214
+ dark: { '--primary': 'oklch(0.645 0.246 16.439)', '--primary-foreground': 'oklch(0.985 0 0)', '--ring': 'oklch(0.645 0.246 16.439)' },
215
+ },
216
+ orange: {
217
+ light: { '--primary': 'oklch(0.646 0.222 41.116)', '--primary-foreground': 'oklch(0.985 0 0)', '--ring': 'oklch(0.646 0.222 41.116)' },
218
+ dark: { '--primary': 'oklch(0.646 0.222 41.116)', '--primary-foreground': 'oklch(0.985 0 0)', '--ring': 'oklch(0.646 0.222 41.116)' },
219
+ },
220
+ green: {
221
+ light: { '--primary': 'oklch(0.623 0.214 131.655)', '--primary-foreground': 'oklch(0.985 0 0)', '--ring': 'oklch(0.623 0.214 131.655)' },
222
+ dark: { '--primary': 'oklch(0.623 0.214 131.655)', '--primary-foreground': 'oklch(0.985 0 0)', '--ring': 'oklch(0.623 0.214 131.655)' },
223
+ },
224
+ blue: {
225
+ light: { '--primary': 'oklch(0.546 0.245 262.881)', '--primary-foreground': 'oklch(0.985 0 0)', '--ring': 'oklch(0.546 0.245 262.881)' },
226
+ dark: { '--primary': 'oklch(0.546 0.245 262.881)', '--primary-foreground': 'oklch(0.985 0 0)', '--ring': 'oklch(0.546 0.245 262.881)' },
227
+ },
228
+ yellow: {
229
+ light: { '--primary': 'oklch(0.82 0.185 84.67)', '--primary-foreground': 'oklch(0.205 0 0)', '--ring': 'oklch(0.82 0.185 84.67)' },
230
+ dark: { '--primary': 'oklch(0.82 0.185 84.67)', '--primary-foreground': 'oklch(0.205 0 0)', '--ring': 'oklch(0.82 0.185 84.67)' },
231
+ },
232
+ violet: {
233
+ light: { '--primary': 'oklch(0.558 0.288 302.321)', '--primary-foreground': 'oklch(0.985 0 0)', '--ring': 'oklch(0.558 0.288 302.321)' },
234
+ dark: { '--primary': 'oklch(0.558 0.288 302.321)', '--primary-foreground': 'oklch(0.985 0 0)', '--ring': 'oklch(0.558 0.288 302.321)' },
235
+ },
236
+ amber: {
237
+ light: { '--primary': 'oklch(0.77 0.16 70)', '--primary-foreground': 'oklch(0.145 0 0)', '--ring': 'oklch(0.77 0.16 70)' },
238
+ dark: { '--primary': 'oklch(0.77 0.16 70)', '--primary-foreground': 'oklch(0.145 0 0)', '--ring': 'oklch(0.77 0.16 70)' },
239
+ },
240
+ };
241
+
216
242
  function generateCssVars(vars: Record<string, string>, indent: string = ' '): string {
217
243
  return Object.entries(vars)
218
244
  .map(([key, value]) => `${indent}${key}: ${value};`)
219
245
  .join('\n');
220
246
  }
221
247
 
222
- export function getStylesTemplate(baseColor: BaseColor = 'neutral'): string {
223
- const colors = baseColors[baseColor];
248
+ export function getStylesTemplate(baseColor: BaseColor = 'neutral', themeColor: ThemeColor = 'zinc'): string {
249
+ const base = baseColors[baseColor];
250
+ const theme = themeColors[themeColor] || themeColors.neutral;
251
+
252
+ const lightVars = { ...base.light, ...theme.light };
253
+ const darkVars = { ...base.dark, ...theme.dark };
224
254
 
225
255
  return `@import "tailwindcss";
226
256
 
@@ -232,7 +262,7 @@ export function getStylesTemplate(baseColor: BaseColor = 'neutral'): string {
232
262
 
233
263
  :root {
234
264
  --radius: 0.625rem;
235
- ${generateCssVars(colors.light)}
265
+ ${generateCssVars(lightVars)}
236
266
  --chart-1: oklch(0.646 0.222 41.116);
237
267
  --chart-2: oklch(0.6 0.118 184.704);
238
268
  --chart-3: oklch(0.398 0.07 227.392);
@@ -249,7 +279,7 @@ ${generateCssVars(colors.light)}
249
279
  }
250
280
 
251
281
  .dark {
252
- ${generateCssVars(colors.dark)}
282
+ ${generateCssVars(darkVars)}
253
283
  --chart-1: oklch(0.488 0.243 264.376);
254
284
  --chart-2: oklch(0.696 0.17 162.48);
255
285
  --chart-3: oklch(0.769 0.188 70.08);
@@ -319,6 +349,7 @@ ${generateCssVars(colors.dark)}
319
349
  }
320
350
  html {
321
351
  font-family: var(--font-sans);
352
+ font-size: 16px;
322
353
  }
323
354
  button:not(:disabled),
324
355
  [role="button"]:not(:disabled) {
@@ -1,5 +1,5 @@
1
1
  export function getUtilsTemplate(): string {
2
- return `import { clsx, type ClassValue } from 'clsx';
2
+ return `import { clsx, type ClassValue } from 'clsx';
3
3
  import { twMerge } from 'tailwind-merge';
4
4
 
5
5
  /**
@@ -8,5 +8,14 @@ import { twMerge } from 'tailwind-merge';
8
8
  export function cn(...inputs: ClassValue[]): string {
9
9
  return twMerge(clsx(inputs));
10
10
  }
11
+
12
+ /**
13
+ * Check if the current direction is RTL by reading the computed style of the element.
14
+ * This allows components to detect RTL without needing an explicit input.
15
+ */
16
+ export function isRtl(el: HTMLElement): boolean {
17
+ return getComputedStyle(el).direction === 'rtl';
18
+ }
19
+
11
20
  `;
12
21
  }
@@ -3,10 +3,11 @@ import path from 'path';
3
3
 
4
4
  export interface Config {
5
5
  $schema: string;
6
- style: 'default' | 'new-york';
6
+ style: 'default';
7
7
  tailwind: {
8
8
  css: string;
9
9
  baseColor: 'neutral' | 'slate' | 'stone' | 'gray' | 'zinc';
10
+ theme?: 'zinc' | 'slate' | 'stone' | 'gray' | 'neutral' | 'red' | 'rose' | 'orange' | 'green' | 'blue' | 'yellow' | 'violet' | 'amber';
10
11
  cssVariables: boolean;
11
12
  };
12
13
  aliases: {
@@ -24,6 +25,7 @@ export function getDefaultConfig(): Config {
24
25
  tailwind: {
25
26
  css: 'src/styles.scss',
26
27
  baseColor: 'neutral',
28
+ theme: 'zinc',
27
29
  cssVariables: true,
28
30
  },
29
31
  aliases: {