@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.
- package/dist/commands/add.js +97 -25
- package/dist/commands/init.js +85 -18
- package/dist/index.js +1 -1
- package/dist/registry/index.js +126 -2
- package/dist/templates/styles.d.ts +2 -1
- package/dist/templates/styles.js +62 -34
- package/dist/templates/utils.js +9 -0
- package/dist/utils/config.d.ts +2 -1
- package/dist/utils/config.js +1 -0
- package/package.json +2 -2
- package/src/commands/add.ts +106 -25
- package/src/commands/init.ts +98 -18
- package/src/index.ts +1 -1
- package/src/registry/index.ts +126 -2
- package/src/templates/styles.ts +65 -34
- package/src/templates/utils.ts +10 -1
- package/src/utils/config.ts +3 -1
package/src/registry/index.ts
CHANGED
|
@@ -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
|
};
|
package/src/templates/styles.ts
CHANGED
|
@@ -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
|
|
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(
|
|
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(
|
|
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) {
|
package/src/templates/utils.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export function getUtilsTemplate(): string {
|
|
2
|
-
|
|
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
|
}
|
package/src/utils/config.ts
CHANGED
|
@@ -3,10 +3,11 @@ import path from 'path';
|
|
|
3
3
|
|
|
4
4
|
export interface Config {
|
|
5
5
|
$schema: string;
|
|
6
|
-
style: 'default'
|
|
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: {
|