css-variants 2.1.2 → 2.2.0

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 (48) hide show
  1. package/README.md +1298 -219
  2. package/dist/cjs/cv.bench.d.ts +1 -0
  3. package/dist/cjs/cv.bench.js +207 -0
  4. package/dist/cjs/cv.bench.js.map +1 -0
  5. package/dist/cjs/cv.js +11 -9
  6. package/dist/cjs/cv.js.map +1 -1
  7. package/dist/cjs/scv.bench.d.ts +1 -0
  8. package/dist/cjs/scv.bench.js +409 -0
  9. package/dist/cjs/scv.bench.js.map +1 -0
  10. package/dist/cjs/scv.js +13 -11
  11. package/dist/cjs/scv.js.map +1 -1
  12. package/dist/cjs/ssv.bench.d.ts +1 -0
  13. package/dist/cjs/ssv.bench.js +506 -0
  14. package/dist/cjs/ssv.bench.js.map +1 -0
  15. package/dist/cjs/ssv.js +14 -12
  16. package/dist/cjs/ssv.js.map +1 -1
  17. package/dist/cjs/sv.bench.d.ts +1 -0
  18. package/dist/cjs/sv.bench.js +264 -0
  19. package/dist/cjs/sv.bench.js.map +1 -0
  20. package/dist/cjs/sv.js +15 -10
  21. package/dist/cjs/sv.js.map +1 -1
  22. package/dist/cjs/utils/merge-props.d.ts +1 -1
  23. package/dist/cjs/utils/merge-props.js +8 -6
  24. package/dist/cjs/utils/merge-props.js.map +1 -1
  25. package/dist/esm/cv.bench.d.ts +1 -0
  26. package/dist/esm/cv.bench.js +205 -0
  27. package/dist/esm/cv.bench.js.map +1 -0
  28. package/dist/esm/cv.js +11 -9
  29. package/dist/esm/cv.js.map +1 -1
  30. package/dist/esm/scv.bench.d.ts +1 -0
  31. package/dist/esm/scv.bench.js +407 -0
  32. package/dist/esm/scv.bench.js.map +1 -0
  33. package/dist/esm/scv.js +13 -11
  34. package/dist/esm/scv.js.map +1 -1
  35. package/dist/esm/ssv.bench.d.ts +1 -0
  36. package/dist/esm/ssv.bench.js +504 -0
  37. package/dist/esm/ssv.bench.js.map +1 -0
  38. package/dist/esm/ssv.js +14 -12
  39. package/dist/esm/ssv.js.map +1 -1
  40. package/dist/esm/sv.bench.d.ts +1 -0
  41. package/dist/esm/sv.bench.js +262 -0
  42. package/dist/esm/sv.bench.js.map +1 -0
  43. package/dist/esm/sv.js +15 -10
  44. package/dist/esm/sv.js.map +1 -1
  45. package/dist/esm/utils/merge-props.d.ts +1 -1
  46. package/dist/esm/utils/merge-props.js +8 -6
  47. package/dist/esm/utils/merge-props.js.map +1 -1
  48. package/package.json +3 -3
@@ -0,0 +1,407 @@
1
+ import { bench, describe } from 'vitest';
2
+ import { scv } from './scv';
3
+ describe('scv benchmarks', () => {
4
+ // Simple base classes only
5
+ const simpleVariant = scv({
6
+ slots: ['root', 'content'],
7
+ base: {
8
+ root: 'card',
9
+ content: 'card-content',
10
+ },
11
+ });
12
+ bench('base classes only', () => {
13
+ simpleVariant();
14
+ });
15
+ // Single variant with two slots
16
+ const singleVariant = scv({
17
+ slots: ['root', 'icon'],
18
+ base: {
19
+ root: 'btn',
20
+ icon: 'btn-icon',
21
+ },
22
+ variants: {
23
+ color: {
24
+ primary: {
25
+ root: 'bg-blue-500 text-white',
26
+ icon: 'text-white',
27
+ },
28
+ secondary: {
29
+ root: 'bg-gray-500 text-white',
30
+ icon: 'text-white',
31
+ },
32
+ },
33
+ },
34
+ });
35
+ bench('single variant (2 slots)', () => {
36
+ singleVariant({ color: 'primary' });
37
+ });
38
+ // Multiple slots (realistic component)
39
+ const multipleSlots = scv({
40
+ slots: ['root', 'header', 'body', 'footer'],
41
+ base: {
42
+ root: 'card rounded shadow',
43
+ header: 'card-header border-b',
44
+ body: 'card-body',
45
+ footer: 'card-footer border-t',
46
+ },
47
+ variants: {
48
+ size: {
49
+ sm: {
50
+ root: 'max-w-sm',
51
+ header: 'p-2 text-sm',
52
+ body: 'p-2',
53
+ footer: 'p-2 text-xs',
54
+ },
55
+ md: {
56
+ root: 'max-w-md',
57
+ header: 'p-4 text-base',
58
+ body: 'p-4',
59
+ footer: 'p-4 text-sm',
60
+ },
61
+ lg: {
62
+ root: 'max-w-lg',
63
+ header: 'p-6 text-lg',
64
+ body: 'p-6',
65
+ footer: 'p-6 text-base',
66
+ },
67
+ },
68
+ },
69
+ });
70
+ bench('multiple slots (4 slots)', () => {
71
+ multipleSlots({ size: 'md' });
72
+ });
73
+ // Multiple variants across multiple slots
74
+ const multipleVariants = scv({
75
+ slots: ['root', 'title', 'description', 'icon'],
76
+ base: {
77
+ root: 'alert flex items-start gap-3 rounded-lg border p-4',
78
+ title: 'font-semibold',
79
+ description: 'text-sm',
80
+ icon: 'shrink-0',
81
+ },
82
+ variants: {
83
+ variant: {
84
+ info: {
85
+ root: 'bg-blue-50 border-blue-200',
86
+ title: 'text-blue-900',
87
+ description: 'text-blue-700',
88
+ icon: 'text-blue-600',
89
+ },
90
+ success: {
91
+ root: 'bg-green-50 border-green-200',
92
+ title: 'text-green-900',
93
+ description: 'text-green-700',
94
+ icon: 'text-green-600',
95
+ },
96
+ warning: {
97
+ root: 'bg-yellow-50 border-yellow-200',
98
+ title: 'text-yellow-900',
99
+ description: 'text-yellow-700',
100
+ icon: 'text-yellow-600',
101
+ },
102
+ error: {
103
+ root: 'bg-red-50 border-red-200',
104
+ title: 'text-red-900',
105
+ description: 'text-red-700',
106
+ icon: 'text-red-600',
107
+ },
108
+ },
109
+ size: {
110
+ sm: {
111
+ root: 'p-3',
112
+ title: 'text-sm',
113
+ description: 'text-xs',
114
+ icon: 'w-4 h-4',
115
+ },
116
+ md: {
117
+ root: 'p-4',
118
+ title: 'text-base',
119
+ description: 'text-sm',
120
+ icon: 'w-5 h-5',
121
+ },
122
+ },
123
+ },
124
+ });
125
+ bench('multiple variants (4 slots)', () => {
126
+ multipleVariants({ variant: 'info', size: 'md' });
127
+ });
128
+ // With default variants
129
+ const withDefaults = scv({
130
+ slots: ['root', 'label', 'input'],
131
+ base: {
132
+ root: 'form-field',
133
+ label: 'form-label',
134
+ input: 'form-input',
135
+ },
136
+ variants: {
137
+ size: {
138
+ sm: {
139
+ label: 'text-xs',
140
+ input: 'px-2 py-1 text-sm',
141
+ },
142
+ md: {
143
+ label: 'text-sm',
144
+ input: 'px-3 py-2 text-base',
145
+ },
146
+ lg: {
147
+ label: 'text-base',
148
+ input: 'px-4 py-3 text-lg',
149
+ },
150
+ },
151
+ variant: {
152
+ outlined: {
153
+ input: 'border-2 rounded',
154
+ },
155
+ filled: {
156
+ input: 'bg-gray-100 border-0 rounded',
157
+ },
158
+ },
159
+ },
160
+ defaultVariants: {
161
+ size: 'md',
162
+ variant: 'outlined',
163
+ },
164
+ });
165
+ bench('with default variants (no props)', () => {
166
+ withDefaults();
167
+ });
168
+ bench('with default variants (override one)', () => {
169
+ withDefaults({ size: 'lg' });
170
+ });
171
+ // Compound variants
172
+ const withCompoundVariants = scv({
173
+ slots: ['root', 'content', 'icon'],
174
+ base: {
175
+ root: 'btn inline-flex items-center gap-2 rounded transition',
176
+ content: 'btn-content',
177
+ icon: 'btn-icon',
178
+ },
179
+ variants: {
180
+ color: {
181
+ primary: {
182
+ root: 'bg-blue-500 text-white hover:bg-blue-600',
183
+ icon: 'text-white',
184
+ },
185
+ secondary: {
186
+ root: 'bg-gray-500 text-white hover:bg-gray-600',
187
+ icon: 'text-white',
188
+ },
189
+ danger: {
190
+ root: 'bg-red-500 text-white hover:bg-red-600',
191
+ icon: 'text-white',
192
+ },
193
+ },
194
+ size: {
195
+ sm: {
196
+ root: 'px-2 py-1',
197
+ content: 'text-sm',
198
+ icon: 'w-3 h-3',
199
+ },
200
+ md: {
201
+ root: 'px-4 py-2',
202
+ content: 'text-base',
203
+ icon: 'w-4 h-4',
204
+ },
205
+ lg: {
206
+ root: 'px-6 py-3',
207
+ content: 'text-lg',
208
+ icon: 'w-5 h-5',
209
+ },
210
+ },
211
+ disabled: {
212
+ true: {
213
+ root: 'opacity-50 cursor-not-allowed',
214
+ },
215
+ false: {
216
+ root: 'cursor-pointer',
217
+ },
218
+ },
219
+ },
220
+ compoundVariants: [
221
+ {
222
+ size: 'lg',
223
+ color: 'primary',
224
+ classNames: {
225
+ root: 'font-bold shadow-lg',
226
+ content: 'tracking-wide',
227
+ },
228
+ },
229
+ {
230
+ size: ['sm', 'md'],
231
+ color: 'danger',
232
+ classNames: {
233
+ root: 'font-semibold',
234
+ },
235
+ },
236
+ {
237
+ disabled: true,
238
+ color: ['primary', 'secondary', 'danger'],
239
+ classNames: {
240
+ root: 'pointer-events-none',
241
+ },
242
+ },
243
+ ],
244
+ });
245
+ bench('compound variants (no match)', () => {
246
+ withCompoundVariants({ color: 'secondary', size: 'sm', disabled: false });
247
+ });
248
+ bench('compound variants (single match)', () => {
249
+ withCompoundVariants({ color: 'primary', size: 'lg', disabled: false });
250
+ });
251
+ bench('compound variants (multiple matches)', () => {
252
+ withCompoundVariants({ color: 'danger', size: 'sm', disabled: true });
253
+ });
254
+ // With classNames override
255
+ const withClassNamesOverride = scv({
256
+ slots: ['root', 'inner'],
257
+ base: {
258
+ root: 'container',
259
+ inner: 'content',
260
+ },
261
+ variants: {
262
+ centered: {
263
+ true: {
264
+ root: 'mx-auto',
265
+ inner: 'text-center',
266
+ },
267
+ },
268
+ },
269
+ });
270
+ bench('with classNames override', () => {
271
+ withClassNamesOverride({
272
+ centered: true,
273
+ classNames: {
274
+ root: 'custom-root extra-class',
275
+ inner: 'custom-inner',
276
+ },
277
+ });
278
+ });
279
+ // Complex real-world card component
280
+ const complexCard = scv({
281
+ slots: ['root', 'header', 'title', 'description', 'content', 'footer', 'actions'],
282
+ base: {
283
+ root: 'card relative rounded-lg border bg-white shadow-sm transition-shadow',
284
+ header: 'card-header space-y-1.5 p-6',
285
+ title: 'card-title text-2xl font-semibold leading-none tracking-tight',
286
+ description: 'card-description text-sm text-gray-500',
287
+ content: 'card-content p-6 pt-0',
288
+ footer: 'card-footer flex items-center p-6 pt-0',
289
+ actions: 'card-actions flex gap-2',
290
+ },
291
+ variants: {
292
+ variant: {
293
+ default: {
294
+ root: 'border-gray-200',
295
+ },
296
+ outlined: {
297
+ root: 'border-2 shadow-none',
298
+ },
299
+ elevated: {
300
+ root: 'border-0 shadow-lg',
301
+ },
302
+ },
303
+ size: {
304
+ sm: {
305
+ root: 'max-w-sm',
306
+ header: 'p-4',
307
+ title: 'text-lg',
308
+ description: 'text-xs',
309
+ content: 'p-4 pt-0',
310
+ footer: 'p-4 pt-0',
311
+ },
312
+ md: {
313
+ root: 'max-w-md',
314
+ },
315
+ lg: {
316
+ root: 'max-w-2xl',
317
+ header: 'p-8',
318
+ title: 'text-3xl',
319
+ content: 'p-8 pt-0',
320
+ footer: 'p-8 pt-0',
321
+ },
322
+ },
323
+ hoverable: {
324
+ true: {
325
+ root: 'hover:shadow-md cursor-pointer',
326
+ },
327
+ },
328
+ },
329
+ compoundVariants: [
330
+ {
331
+ variant: 'elevated',
332
+ hoverable: true,
333
+ classNames: {
334
+ root: 'hover:shadow-xl hover:-translate-y-1',
335
+ },
336
+ },
337
+ ],
338
+ defaultVariants: {
339
+ variant: 'default',
340
+ size: 'md',
341
+ },
342
+ });
343
+ bench('complex real-world card (defaults)', () => {
344
+ complexCard();
345
+ });
346
+ bench('complex real-world card (with overrides)', () => {
347
+ complexCard({
348
+ variant: 'elevated',
349
+ size: 'lg',
350
+ hoverable: true,
351
+ classNames: { root: 'w-full' },
352
+ });
353
+ });
354
+ // Many slots (stress test)
355
+ const manySlots = scv({
356
+ slots: ['slot1', 'slot2', 'slot3', 'slot4', 'slot5', 'slot6', 'slot7', 'slot8'],
357
+ base: {
358
+ slot1: 'class1',
359
+ slot2: 'class2',
360
+ slot3: 'class3',
361
+ slot4: 'class4',
362
+ slot5: 'class5',
363
+ slot6: 'class6',
364
+ slot7: 'class7',
365
+ slot8: 'class8',
366
+ },
367
+ variants: {
368
+ theme: {
369
+ light: {
370
+ slot1: 'bg-white text-black',
371
+ slot2: 'bg-gray-100',
372
+ slot3: 'bg-gray-200',
373
+ slot4: 'bg-gray-300',
374
+ slot5: 'border-gray-400',
375
+ slot6: 'text-gray-600',
376
+ slot7: 'text-gray-700',
377
+ slot8: 'text-gray-800',
378
+ },
379
+ dark: {
380
+ slot1: 'bg-black text-white',
381
+ slot2: 'bg-gray-900',
382
+ slot3: 'bg-gray-800',
383
+ slot4: 'bg-gray-700',
384
+ slot5: 'border-gray-600',
385
+ slot6: 'text-gray-400',
386
+ slot7: 'text-gray-300',
387
+ slot8: 'text-gray-200',
388
+ },
389
+ },
390
+ },
391
+ });
392
+ bench('many slots (8 slots)', () => {
393
+ manySlots({ theme: 'dark' });
394
+ });
395
+ // No variants (edge case)
396
+ const noVariants = scv({
397
+ slots: ['root', 'content'],
398
+ base: {
399
+ root: 'container',
400
+ content: 'content',
401
+ },
402
+ });
403
+ bench('no variants (optimized path)', () => {
404
+ noVariants({ classNames: { root: 'extra' } });
405
+ });
406
+ });
407
+ //# sourceMappingURL=scv.bench.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scv.bench.js","sourceRoot":"","sources":["../../src/scv.bench.ts"],"names":[],"mappings":"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"}
package/dist/esm/scv.js CHANGED
@@ -48,8 +48,7 @@ export const scv = (config) => {
48
48
  };
49
49
  }
50
50
  return (props) => {
51
- const { classNames, ...rest } = props ?? {};
52
- const mergedProps = defaultVariants ? mergeProps(defaultVariants, rest) : rest;
51
+ const mergedProps = mergeProps(defaultVariants, props, ['classNames']);
53
52
  const slotClassValues = {};
54
53
  for (const slot of slots) {
55
54
  if (base?.[slot]) {
@@ -68,26 +67,29 @@ export const scv = (config) => {
68
67
  }
69
68
  }
70
69
  if (compoundVariants) {
71
- for (const { classNames: cls, ...compoundVariant } of compoundVariants) {
70
+ for (let i = 0; i < compoundVariants.length; i++) {
71
+ const compound = compoundVariants[i];
72
72
  let matches = true;
73
- for (const key in compoundVariant) {
74
- const value = compoundVariant[key];
73
+ for (const key in compound) {
74
+ if (key === 'classNames')
75
+ continue;
76
+ const value = compound[key];
75
77
  const propValue = mergedProps[key];
76
78
  if (Array.isArray(value) ? !value.includes(propValue) : value !== propValue) {
77
79
  matches = false;
78
80
  break;
79
81
  }
80
82
  }
81
- if (matches) {
82
- for (const slot in cls) {
83
- slotClassValues[slot]?.push(cls[slot]);
83
+ if (matches && compound.classNames) {
84
+ for (const slot in compound.classNames) {
85
+ slotClassValues[slot]?.push(compound.classNames[slot]);
84
86
  }
85
87
  }
86
88
  }
87
89
  }
88
- if (classNames) {
89
- for (const slot in classNames) {
90
- slotClassValues[slot]?.push(classNames[slot]);
90
+ if (props?.classNames) {
91
+ for (const slot in props.classNames) {
92
+ slotClassValues[slot]?.push(props.classNames[slot]);
91
93
  }
92
94
  }
93
95
  const result = {};
@@ -1 +1 @@
1
- {"version":3,"file":"scv.js","sourceRoot":"","sources":["../../src/scv.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scv.js","sourceRoot":"","sources":["../../src/scv.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};