css-variants 2.2.0 → 2.2.2

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.
@@ -1,264 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
4
- const sv_1 = require("./sv");
5
- (0, vitest_1.describe)('sv benchmarks', () => {
6
- // Simple base style only
7
- const simpleVariant = (0, sv_1.sv)({
8
- base: { color: 'black', fontSize: '16px' },
9
- });
10
- (0, vitest_1.bench)('base style only', () => {
11
- simpleVariant();
12
- });
13
- // Single variant
14
- const singleVariant = (0, sv_1.sv)({
15
- base: { fontFamily: 'sans-serif' },
16
- variants: {
17
- color: {
18
- primary: { color: 'blue', backgroundColor: '#e3f2fd' },
19
- secondary: { color: 'gray', backgroundColor: '#f5f5f5' },
20
- danger: { color: 'red', backgroundColor: '#ffebee' },
21
- },
22
- },
23
- });
24
- (0, vitest_1.bench)('single variant', () => {
25
- singleVariant({ color: 'primary' });
26
- });
27
- // Multiple variants
28
- const multipleVariants = (0, sv_1.sv)({
29
- base: { display: 'inline-flex', alignItems: 'center', borderRadius: '4px' },
30
- variants: {
31
- color: {
32
- primary: { color: 'blue', backgroundColor: '#1976d2' },
33
- secondary: { color: 'white', backgroundColor: '#757575' },
34
- danger: { color: 'white', backgroundColor: '#d32f2f' },
35
- },
36
- size: {
37
- sm: { padding: '4px 8px', fontSize: '12px' },
38
- md: { padding: '8px 16px', fontSize: '14px' },
39
- lg: { padding: '12px 24px', fontSize: '16px' },
40
- },
41
- fontWeight: {
42
- normal: { fontWeight: '400' },
43
- medium: { fontWeight: '500' },
44
- bold: { fontWeight: '700' },
45
- },
46
- },
47
- });
48
- (0, vitest_1.bench)('multiple variants', () => {
49
- multipleVariants({ color: 'primary', size: 'md', fontWeight: 'medium' });
50
- });
51
- // With default variants
52
- const withDefaults = (0, sv_1.sv)({
53
- base: { display: 'flex', transition: 'all 0.2s' },
54
- variants: {
55
- color: {
56
- primary: { color: 'blue', backgroundColor: '#1976d2' },
57
- secondary: { color: 'white', backgroundColor: '#757575' },
58
- danger: { color: 'white', backgroundColor: '#d32f2f' },
59
- },
60
- size: {
61
- sm: { padding: '4px 8px', fontSize: '12px' },
62
- md: { padding: '8px 16px', fontSize: '14px' },
63
- lg: { padding: '12px 24px', fontSize: '16px' },
64
- },
65
- },
66
- defaultVariants: {
67
- color: 'primary',
68
- size: 'md',
69
- },
70
- });
71
- (0, vitest_1.bench)('with default variants (no props)', () => {
72
- withDefaults();
73
- });
74
- (0, vitest_1.bench)('with default variants (override one)', () => {
75
- withDefaults({ size: 'lg' });
76
- });
77
- // Compound variants
78
- const withCompoundVariants = (0, sv_1.sv)({
79
- base: { display: 'inline-flex', borderRadius: '4px' },
80
- variants: {
81
- color: {
82
- primary: { color: 'white', backgroundColor: '#1976d2' },
83
- secondary: { color: 'white', backgroundColor: '#757575' },
84
- danger: { color: 'white', backgroundColor: '#d32f2f' },
85
- },
86
- size: {
87
- sm: { padding: '4px 8px', fontSize: '12px' },
88
- md: { padding: '8px 16px', fontSize: '14px' },
89
- lg: { padding: '12px 24px', fontSize: '16px' },
90
- },
91
- disabled: {
92
- true: { opacity: 0.5, cursor: 'not-allowed' },
93
- false: { cursor: 'pointer' },
94
- },
95
- },
96
- compoundVariants: [
97
- {
98
- size: 'lg',
99
- color: 'primary',
100
- style: { fontWeight: '700', boxShadow: '0 4px 6px rgba(0,0,0,0.1)' },
101
- },
102
- {
103
- size: ['sm', 'md'],
104
- color: 'danger',
105
- style: { fontWeight: '600' },
106
- },
107
- {
108
- disabled: true,
109
- color: ['primary', 'secondary', 'danger'],
110
- style: { pointerEvents: 'none' },
111
- },
112
- ],
113
- });
114
- (0, vitest_1.bench)('compound variants (no match)', () => {
115
- withCompoundVariants({ color: 'secondary', size: 'sm', disabled: false });
116
- });
117
- (0, vitest_1.bench)('compound variants (single match)', () => {
118
- withCompoundVariants({ color: 'primary', size: 'lg', disabled: false });
119
- });
120
- (0, vitest_1.bench)('compound variants (multiple matches)', () => {
121
- withCompoundVariants({ color: 'danger', size: 'sm', disabled: true });
122
- });
123
- // With style override
124
- const withStyleOverride = (0, sv_1.sv)({
125
- base: { color: 'black' },
126
- variants: {
127
- color: {
128
- primary: { backgroundColor: '#1976d2' },
129
- secondary: { backgroundColor: '#757575' },
130
- },
131
- },
132
- });
133
- (0, vitest_1.bench)('with style override', () => {
134
- withStyleOverride({
135
- color: 'primary',
136
- style: { margin: '8px', border: '1px solid #ccc' },
137
- });
138
- });
139
- // Complex real-world example
140
- const complexCard = (0, sv_1.sv)({
141
- base: {
142
- display: 'flex',
143
- flexDirection: 'column',
144
- borderRadius: '8px',
145
- boxShadow: '0 2px 4px rgba(0,0,0,0.1)',
146
- overflow: 'hidden',
147
- transition: 'all 0.3s ease',
148
- },
149
- variants: {
150
- elevation: {
151
- low: { boxShadow: '0 1px 3px rgba(0,0,0,0.1)' },
152
- medium: { boxShadow: '0 4px 6px rgba(0,0,0,0.1)' },
153
- high: { boxShadow: '0 10px 20px rgba(0,0,0,0.15)' },
154
- },
155
- padding: {
156
- none: { padding: '0' },
157
- sm: { padding: '8px' },
158
- md: { padding: '16px' },
159
- lg: { padding: '24px' },
160
- },
161
- variant: {
162
- outlined: { border: '1px solid #e0e0e0', boxShadow: 'none' },
163
- filled: { backgroundColor: '#f5f5f5' },
164
- elevated: {},
165
- },
166
- },
167
- compoundVariants: [
168
- {
169
- elevation: 'high',
170
- variant: 'elevated',
171
- style: {
172
- transform: 'translateY(-2px)',
173
- boxShadow: '0 12px 24px rgba(0,0,0,0.2)',
174
- },
175
- },
176
- {
177
- variant: 'outlined',
178
- padding: ['sm', 'md'],
179
- style: { borderRadius: '4px' },
180
- },
181
- ],
182
- defaultVariants: {
183
- elevation: 'medium',
184
- padding: 'md',
185
- variant: 'elevated',
186
- },
187
- });
188
- (0, vitest_1.bench)('complex real-world card (defaults)', () => {
189
- complexCard();
190
- });
191
- (0, vitest_1.bench)('complex real-world card (with overrides)', () => {
192
- complexCard({
193
- elevation: 'high',
194
- padding: 'lg',
195
- variant: 'elevated',
196
- style: { width: '100%', maxWidth: '600px' },
197
- });
198
- });
199
- // Boolean variants
200
- const booleanVariants = (0, sv_1.sv)({
201
- base: { display: 'inline-block' },
202
- variants: {
203
- disabled: {
204
- true: { opacity: 0.5, cursor: 'not-allowed', pointerEvents: 'none' },
205
- false: { cursor: 'pointer' },
206
- },
207
- loading: {
208
- true: { opacity: 0.7, cursor: 'wait' },
209
- false: {},
210
- },
211
- fullWidth: {
212
- true: { width: '100%', display: 'block' },
213
- false: { width: 'auto' },
214
- },
215
- },
216
- });
217
- (0, vitest_1.bench)('boolean variants', () => {
218
- booleanVariants({ disabled: true, loading: false, fullWidth: true });
219
- });
220
- // No variants (edge case)
221
- const noVariants = (0, sv_1.sv)({
222
- base: { color: 'black', fontSize: '14px' },
223
- });
224
- (0, vitest_1.bench)('no variants (optimized path)', () => {
225
- noVariants({ style: { margin: '10px' } });
226
- });
227
- // Many CSS properties (stress test)
228
- const manyProperties = (0, sv_1.sv)({
229
- base: {
230
- display: 'flex',
231
- flexDirection: 'column',
232
- alignItems: 'center',
233
- justifyContent: 'center',
234
- padding: '16px',
235
- margin: '8px',
236
- borderRadius: '8px',
237
- backgroundColor: '#ffffff',
238
- color: '#000000',
239
- fontSize: '14px',
240
- fontWeight: '400',
241
- lineHeight: '1.5',
242
- boxShadow: '0 2px 4px rgba(0,0,0,0.1)',
243
- transition: 'all 0.3s ease',
244
- },
245
- variants: {
246
- theme: {
247
- light: {
248
- backgroundColor: '#ffffff',
249
- color: '#000000',
250
- borderColor: '#e0e0e0',
251
- },
252
- dark: {
253
- backgroundColor: '#1a1a1a',
254
- color: '#ffffff',
255
- borderColor: '#333333',
256
- },
257
- },
258
- },
259
- });
260
- (0, vitest_1.bench)('many CSS properties', () => {
261
- manyProperties({ theme: 'dark' });
262
- });
263
- });
264
- //# sourceMappingURL=sv.bench.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sv.bench.js","sourceRoot":"","sources":["../../src/sv.bench.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,205 +0,0 @@
1
- import { bench, describe } from 'vitest';
2
- import { cv } from './cv';
3
- describe('cv benchmarks', () => {
4
- // Simple base class only
5
- const simpleVariant = cv({
6
- base: 'base-class',
7
- });
8
- bench('base class only', () => {
9
- simpleVariant();
10
- });
11
- // Single variant
12
- const singleVariant = cv({
13
- base: 'btn',
14
- variants: {
15
- color: {
16
- primary: 'bg-blue-500 text-white',
17
- secondary: 'bg-gray-500 text-white',
18
- danger: 'bg-red-500 text-white',
19
- },
20
- },
21
- });
22
- bench('single variant', () => {
23
- singleVariant({ color: 'primary' });
24
- });
25
- // Multiple variants
26
- const multipleVariants = cv({
27
- base: 'btn rounded transition',
28
- variants: {
29
- color: {
30
- primary: 'bg-blue-500 text-white hover:bg-blue-600',
31
- secondary: 'bg-gray-500 text-white hover:bg-gray-600',
32
- danger: 'bg-red-500 text-white hover:bg-red-600',
33
- },
34
- size: {
35
- sm: 'px-2 py-1 text-sm',
36
- md: 'px-4 py-2 text-base',
37
- lg: 'px-6 py-3 text-lg',
38
- },
39
- variant: {
40
- solid: 'shadow-md',
41
- outline: 'border-2 bg-transparent',
42
- ghost: 'bg-transparent',
43
- },
44
- },
45
- });
46
- bench('multiple variants', () => {
47
- multipleVariants({ color: 'primary', size: 'md', variant: 'solid' });
48
- });
49
- // With default variants
50
- const withDefaults = cv({
51
- base: 'btn rounded transition',
52
- variants: {
53
- color: {
54
- primary: 'bg-blue-500 text-white hover:bg-blue-600',
55
- secondary: 'bg-gray-500 text-white hover:bg-gray-600',
56
- danger: 'bg-red-500 text-white hover:bg-red-600',
57
- },
58
- size: {
59
- sm: 'px-2 py-1 text-sm',
60
- md: 'px-4 py-2 text-base',
61
- lg: 'px-6 py-3 text-lg',
62
- },
63
- },
64
- defaultVariants: {
65
- color: 'primary',
66
- size: 'md',
67
- },
68
- });
69
- bench('with default variants (no props)', () => {
70
- withDefaults();
71
- });
72
- bench('with default variants (override one)', () => {
73
- withDefaults({ size: 'lg' });
74
- });
75
- // Compound variants
76
- const withCompoundVariants = cv({
77
- base: 'btn rounded transition',
78
- variants: {
79
- color: {
80
- primary: 'bg-blue-500 text-white',
81
- secondary: 'bg-gray-500 text-white',
82
- danger: 'bg-red-500 text-white',
83
- },
84
- size: {
85
- sm: 'px-2 py-1 text-sm',
86
- md: 'px-4 py-2 text-base',
87
- lg: 'px-6 py-3 text-lg',
88
- },
89
- disabled: {
90
- true: 'opacity-50 cursor-not-allowed',
91
- false: 'cursor-pointer',
92
- },
93
- },
94
- compoundVariants: [
95
- {
96
- size: 'lg',
97
- color: 'primary',
98
- className: 'font-bold shadow-lg',
99
- },
100
- {
101
- size: ['sm', 'md'],
102
- color: 'danger',
103
- className: 'font-semibold',
104
- },
105
- {
106
- disabled: true,
107
- color: ['primary', 'secondary', 'danger'],
108
- className: 'pointer-events-none',
109
- },
110
- ],
111
- });
112
- bench('compound variants (no match)', () => {
113
- withCompoundVariants({ color: 'secondary', size: 'sm', disabled: false });
114
- });
115
- bench('compound variants (single match)', () => {
116
- withCompoundVariants({ color: 'primary', size: 'lg', disabled: false });
117
- });
118
- bench('compound variants (multiple matches)', () => {
119
- withCompoundVariants({ color: 'danger', size: 'sm', disabled: true });
120
- });
121
- // With className override
122
- const withClassName = cv({
123
- base: 'btn',
124
- variants: {
125
- color: {
126
- primary: 'bg-blue-500',
127
- secondary: 'bg-gray-500',
128
- },
129
- },
130
- });
131
- bench('with className override', () => {
132
- withClassName({ color: 'primary', className: 'custom-class extra-class' });
133
- });
134
- // Complex real-world example
135
- const complexButton = cv({
136
- base: 'inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',
137
- variants: {
138
- variant: {
139
- default: 'bg-primary text-primary-foreground hover:bg-primary/90',
140
- destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/90',
141
- outline: 'border border-input bg-background hover:bg-accent hover:text-accent-foreground',
142
- secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80',
143
- ghost: 'hover:bg-accent hover:text-accent-foreground',
144
- link: 'text-primary underline-offset-4 hover:underline',
145
- },
146
- size: {
147
- default: 'h-10 px-4 py-2',
148
- sm: 'h-9 rounded-md px-3',
149
- lg: 'h-11 rounded-md px-8',
150
- icon: 'h-10 w-10',
151
- },
152
- },
153
- compoundVariants: [
154
- {
155
- variant: 'destructive',
156
- size: 'lg',
157
- className: 'font-bold',
158
- },
159
- {
160
- variant: ['outline', 'ghost'],
161
- size: ['sm', 'default'],
162
- className: 'font-normal',
163
- },
164
- ],
165
- defaultVariants: {
166
- variant: 'default',
167
- size: 'default',
168
- },
169
- });
170
- bench('complex real-world button (defaults)', () => {
171
- complexButton();
172
- });
173
- bench('complex real-world button (with overrides)', () => {
174
- complexButton({ variant: 'destructive', size: 'lg', className: 'w-full' });
175
- });
176
- // Boolean variants
177
- const booleanVariants = cv({
178
- base: 'btn',
179
- variants: {
180
- disabled: {
181
- true: 'opacity-50 cursor-not-allowed',
182
- false: 'cursor-pointer',
183
- },
184
- loading: {
185
- true: 'animate-pulse pointer-events-none',
186
- false: '',
187
- },
188
- fullWidth: {
189
- true: 'w-full',
190
- false: 'w-auto',
191
- },
192
- },
193
- });
194
- bench('boolean variants', () => {
195
- booleanVariants({ disabled: true, loading: false, fullWidth: true });
196
- });
197
- // No variants (edge case)
198
- const noVariants = cv({
199
- base: 'simple-class',
200
- });
201
- bench('no variants (optimized path)', () => {
202
- noVariants({ className: 'extra' });
203
- });
204
- });
205
- //# sourceMappingURL=cv.bench.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cv.bench.js","sourceRoot":"","sources":["../../src/cv.bench.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};