css-variants 1.1.0 → 1.1.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.
- package/README.md +109 -16
- package/dist/cjs/csv.js +49 -29
- package/dist/cjs/csv.js.map +1 -1
- package/dist/cjs/cv.js +14 -9
- package/dist/cjs/cv.js.map +1 -1
- package/dist/cjs/cx.js +1 -1
- package/dist/cjs/cx.js.map +1 -1
- package/dist/cjs/types.d.ts +3 -1
- package/dist/cjs/utils.d.ts +1 -1
- package/dist/cjs/utils.js +0 -2
- package/dist/cjs/utils.js.map +1 -1
- package/dist/esm/csv.js +49 -29
- package/dist/esm/csv.js.map +1 -1
- package/dist/esm/cv.js +14 -9
- package/dist/esm/cv.js.map +1 -1
- package/dist/esm/cx.js +1 -1
- package/dist/esm/cx.js.map +1 -1
- package/dist/esm/types.d.ts +3 -1
- package/dist/esm/utils.d.ts +1 -1
- package/dist/esm/utils.js +0 -2
- package/dist/esm/utils.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -5,22 +5,30 @@
|
|
|
5
5
|
[](https://npmjs.com/package/css-variants)
|
|
6
6
|

|
|
7
7
|
|
|
8
|
-
#
|
|
8
|
+
# css-variants
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
A lightweight, flexible API for managing CSS class variants in JavaScript and TypeScript projects.
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
## Overview
|
|
13
13
|
|
|
14
|
-
`css-variants`
|
|
14
|
+
`css-variants` provides a simple yet powerful way to handle dynamic class names and inline styles based on component props or state. It's designed to work seamlessly with modern JavaScript frameworks and CSS methodologies, offering a type-safe approach to styling your UI components.
|
|
15
|
+
|
|
16
|
+
`css-variants` is heavily inspired by the following excellent packages:
|
|
17
|
+
|
|
18
|
+
- [CVA (Class Variance Authority)](https://github.com/joe-bell/cva): A powerful utility for creating dynamic class names with variants.
|
|
19
|
+
- [Tailwind Variants](https://github.com/nextui-org/tailwind-variants): A flexible and reusable variant system for Tailwind CSS.
|
|
20
|
+
- [Panda CSS](https://github.com/chakra-ui/panda): A CSS-in-JS solution with a focus on developer experience and performance.
|
|
21
|
+
|
|
22
|
+
Thank you to the authors and contributors of these projects for their innovative work.
|
|
15
23
|
|
|
16
24
|
## Features
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
25
|
+
|
|
26
|
+
- 🎨 Dynamic class name generation based on variants
|
|
27
|
+
- 🔧 Support for inline styles alongside class names
|
|
28
|
+
- 🧩 Slot-based variant system for complex components
|
|
29
|
+
- 📦 Zero dependencies
|
|
30
|
+
- 🔒 Fully type-safe with TypeScript
|
|
31
|
+
- 🚀 Framework-agnostic
|
|
24
32
|
|
|
25
33
|
## Table of Contents
|
|
26
34
|
* [Installation](#installation)
|
|
@@ -33,6 +41,9 @@ Creating variants with the "traditional" CSS approach can become an arduous task
|
|
|
33
41
|
* [Slots](#events)
|
|
34
42
|
* [Basic Usage](#basic-usage)
|
|
35
43
|
* [Slots with variants](#slots-with-variants)
|
|
44
|
+
* [Overriding styles](#overriding-styles)
|
|
45
|
+
* [Overriding styles on a single component](#overriding-styles-on-a-single-component)
|
|
46
|
+
* [Overriding styles on a component with slots](#overriding-styles-on-a-component-with-slots)
|
|
36
47
|
* [Handling Style Conflicts](#handling-style-conflicts)
|
|
37
48
|
* [TypeScript](#typeScript)
|
|
38
49
|
* [Contribute](#contribute)
|
|
@@ -255,7 +266,7 @@ const notification = cv({
|
|
|
255
266
|
style: { fontSize: 16 },
|
|
256
267
|
},
|
|
257
268
|
},
|
|
258
|
-
})
|
|
269
|
+
})
|
|
259
270
|
|
|
260
271
|
notification()
|
|
261
272
|
/**
|
|
@@ -304,7 +315,7 @@ const notification = cv({
|
|
|
304
315
|
},
|
|
305
316
|
}
|
|
306
317
|
},
|
|
307
|
-
})
|
|
318
|
+
})
|
|
308
319
|
|
|
309
320
|
notification({ color: 'primary' })
|
|
310
321
|
/**
|
|
@@ -345,13 +356,95 @@ notification({ color: 'secondary' })
|
|
|
345
356
|
*/
|
|
346
357
|
```
|
|
347
358
|
|
|
359
|
+
## Overriding styles
|
|
360
|
+
|
|
361
|
+
`css-variants` allows you to override or extend the styles of your components. This feature is useful when you need to add custom styles or modify existing ones without changing the original component definition.
|
|
362
|
+
|
|
363
|
+
### Overriding styles on a single component
|
|
364
|
+
|
|
365
|
+
You can override or extend styles for a single component by passing additional `className` and `style` properties when calling the component function. These will be merged with the existing styles.
|
|
366
|
+
|
|
367
|
+
```ts
|
|
368
|
+
import { cv } from 'css-variants'
|
|
369
|
+
|
|
370
|
+
const button = cv({
|
|
371
|
+
base: 'font-semibold',
|
|
372
|
+
variants: {
|
|
373
|
+
color: {
|
|
374
|
+
primary: 'bg-blue-500 hover:bg-blue-700',
|
|
375
|
+
secondary: 'bg-purple-500 hover:bg-purple-700',
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
})
|
|
379
|
+
|
|
380
|
+
button({
|
|
381
|
+
color: 'secondary',
|
|
382
|
+
className: 'border-purple-600',
|
|
383
|
+
style: {
|
|
384
|
+
color: 'purple',
|
|
385
|
+
},
|
|
386
|
+
})
|
|
387
|
+
|
|
388
|
+
/**
|
|
389
|
+
* Result:
|
|
390
|
+
* {
|
|
391
|
+
* className: 'bg-purple-500 hover:bg-purple-700 border-purple-600',
|
|
392
|
+
* style: { color: 'purple' },
|
|
393
|
+
* }
|
|
394
|
+
*/
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
### Overriding styles on a component with slots
|
|
398
|
+
|
|
399
|
+
For components with slots, you can override styles using the `classNames` and `styles` properties. These allow you to target specific slots and apply custom classes or inline styles.
|
|
400
|
+
|
|
401
|
+
```ts
|
|
402
|
+
import { csv } from 'css-variants'
|
|
403
|
+
|
|
404
|
+
const notification = cv({
|
|
405
|
+
slots: ['root', 'title'],
|
|
406
|
+
base: {
|
|
407
|
+
root: 'root',
|
|
408
|
+
title: {
|
|
409
|
+
className: 'title',
|
|
410
|
+
style: { fontSize: 16 },
|
|
411
|
+
},
|
|
412
|
+
},
|
|
413
|
+
})
|
|
414
|
+
|
|
415
|
+
notification({
|
|
416
|
+
classNames: {
|
|
417
|
+
root: 'root-custom-class',
|
|
418
|
+
},
|
|
419
|
+
styles: {
|
|
420
|
+
title: {
|
|
421
|
+
fontSize: 20,
|
|
422
|
+
}
|
|
423
|
+
},
|
|
424
|
+
})
|
|
425
|
+
/**
|
|
426
|
+
* Result:
|
|
427
|
+
* {
|
|
428
|
+
* root: {
|
|
429
|
+
* className: 'root-custom-class',
|
|
430
|
+
* style: {},
|
|
431
|
+
* },
|
|
432
|
+
* title: {
|
|
433
|
+
* className: 'title',
|
|
434
|
+
* style: { fontSize: 20 },
|
|
435
|
+
* },
|
|
436
|
+
* }
|
|
437
|
+
*/
|
|
438
|
+
|
|
439
|
+
```
|
|
440
|
+
|
|
348
441
|
## Handling Style Conflicts
|
|
349
442
|
|
|
350
|
-
Although `css-variants` is designed to help you avoid styling conflicts, there's still a small margin of error.
|
|
443
|
+
Although `css-variants` is designed to help you avoid styling conflicts, there's still a small margin of error when combining multiple classes or variants. To further minimize these conflicts and ensure consistent styling, you can integrate `tailwind-merge` into your project.
|
|
351
444
|
|
|
352
|
-
|
|
445
|
+
`tailwind-merge` is a utility that intelligently combines Tailwind CSS classes, resolving conflicts by giving precedence to the latter class when two classes target the same style property. By incorporating `tailwind-merge` with `css-variants`, you can create more robust components that automatically handle class conflicts.
|
|
353
446
|
|
|
354
|
-
|
|
447
|
+
The following example demonstrates how to extend functions from `css-variants` to use `tailwind-merge`. This integration ensures that your components will have consistent styling, even when multiple classes or variants are applied.
|
|
355
448
|
|
|
356
449
|
```ts
|
|
357
450
|
import { twMerge } from 'tailwind-merge'
|
package/dist/cjs/csv.js
CHANGED
|
@@ -3,20 +3,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.csv = void 0;
|
|
4
4
|
const utils_1 = require("./utils");
|
|
5
5
|
const push = (data, key, value) => {
|
|
6
|
-
if (
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
if (data[key] === undefined)
|
|
7
|
+
data[key] = { className: '', style: {} };
|
|
8
|
+
if (typeof value === 'string') {
|
|
9
|
+
data[key].className && (data[key].className += ' ');
|
|
10
|
+
data[key].className += value;
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
if (value.className) {
|
|
14
|
+
data[key].className && (data[key].className += ' ');
|
|
15
|
+
data[key].className += value.className;
|
|
9
16
|
}
|
|
10
|
-
if (
|
|
11
|
-
data[key].
|
|
12
|
-
}
|
|
13
|
-
else {
|
|
14
|
-
if (value.className) {
|
|
15
|
-
data[key].className += (data[key].className ? ' ' : '') + value.className.trim();
|
|
16
|
-
}
|
|
17
|
-
if (value.style) {
|
|
18
|
-
data[key].style = { ...data[key].style, ...value.style };
|
|
19
|
-
}
|
|
17
|
+
if (value.style) {
|
|
18
|
+
data[key].style = { ...data[key].style, ...value.style };
|
|
20
19
|
}
|
|
21
20
|
}
|
|
22
21
|
};
|
|
@@ -24,28 +23,49 @@ const csv = (config) => {
|
|
|
24
23
|
const { slots, base, variants, compoundVariants, defaultVariants, onDone } = config;
|
|
25
24
|
return (props) => {
|
|
26
25
|
const { classNames: propClassNames, styles: propStyles, ...rest } = props ?? {};
|
|
27
|
-
const data = {};
|
|
28
26
|
const variantProps = { ...defaultVariants, ...(0, utils_1.compact)(rest) };
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
const data = {};
|
|
28
|
+
let tmp;
|
|
29
|
+
if (base) {
|
|
30
|
+
for (const [key, value] of (0, utils_1.entries)(base)) {
|
|
31
|
+
if (value) {
|
|
32
|
+
push(data, key, value);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
31
35
|
}
|
|
32
|
-
|
|
33
|
-
for (const [key,
|
|
34
|
-
|
|
36
|
+
if (variants) {
|
|
37
|
+
for (const [key, variant] of (0, utils_1.entries)(variants)) {
|
|
38
|
+
if ((tmp = variant[variantProps[key]])) {
|
|
39
|
+
for (const [key, value] of (0, utils_1.entries)(tmp)) {
|
|
40
|
+
if (value) {
|
|
41
|
+
push(data, key, value);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
35
45
|
}
|
|
36
46
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
47
|
+
if (compoundVariants) {
|
|
48
|
+
for (const { classNames: cvClassNames, styles: cvStyles, ...compoundVariant } of compoundVariants) {
|
|
49
|
+
if ((0, utils_1.match)(compoundVariant, variantProps)) {
|
|
50
|
+
if (cvClassNames) {
|
|
51
|
+
for (const [key, value] of (0, utils_1.entries)(cvClassNames))
|
|
52
|
+
push(data, key, { className: value });
|
|
53
|
+
}
|
|
54
|
+
if (cvStyles) {
|
|
55
|
+
for (const [key, value] of (0, utils_1.entries)(cvStyles))
|
|
56
|
+
push(data, key, { style: value });
|
|
57
|
+
}
|
|
58
|
+
}
|
|
43
59
|
}
|
|
44
60
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
61
|
+
if (propClassNames) {
|
|
62
|
+
for (const [key, value] of (0, utils_1.entries)(propClassNames))
|
|
63
|
+
push(data, key, { className: value });
|
|
64
|
+
}
|
|
65
|
+
if (propStyles) {
|
|
66
|
+
for (const [key, value] of (0, utils_1.entries)(propStyles))
|
|
67
|
+
push(data, key, { style: value });
|
|
68
|
+
}
|
|
49
69
|
const css = (0, utils_1.fromEntries)(slots.map((slot) => [
|
|
50
70
|
slot,
|
|
51
71
|
{
|
package/dist/cjs/csv.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csv.js","sourceRoot":"","sources":["../../src/csv.ts"],"names":[],"mappings":";;;AAAA,mCAA8D;AAG9D,MAAM,IAAI,GAAG,CACX,IAAoC,EACpC,GAAM,EACN,
|
|
1
|
+
{"version":3,"file":"csv.js","sourceRoot":"","sources":["../../src/csv.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/cv.js
CHANGED
|
@@ -4,11 +4,13 @@ exports.cv = void 0;
|
|
|
4
4
|
const utils_1 = require("./utils");
|
|
5
5
|
const push = (data, value) => {
|
|
6
6
|
if (typeof value === 'string') {
|
|
7
|
-
data.className
|
|
7
|
+
data.className && (data.className += ' ');
|
|
8
|
+
data.className += value.trim();
|
|
8
9
|
}
|
|
9
10
|
else {
|
|
10
11
|
if (value?.className) {
|
|
11
|
-
data.className
|
|
12
|
+
data.className && (data.className += ' ');
|
|
13
|
+
data.className += value.className.trim();
|
|
12
14
|
}
|
|
13
15
|
if (value?.style) {
|
|
14
16
|
data.style = { ...data.style, ...value.style };
|
|
@@ -19,18 +21,20 @@ const cv = (config) => {
|
|
|
19
21
|
const { base, variants, compoundVariants, defaultVariants, onDone } = config;
|
|
20
22
|
return (props) => {
|
|
21
23
|
const { className: propClassName, style: propStyle, ...rest } = props ?? {};
|
|
22
|
-
const css = { className: '', style: {} };
|
|
23
24
|
const variantProps = { ...defaultVariants, ...(0, utils_1.compact)(rest) };
|
|
25
|
+
const css = { className: '', style: {} };
|
|
26
|
+
let tmp;
|
|
24
27
|
if (base) {
|
|
25
28
|
push(css, base);
|
|
26
29
|
}
|
|
27
|
-
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
if (variants) {
|
|
31
|
+
for (const [key, variant] of (0, utils_1.entries)(variants)) {
|
|
32
|
+
if ((tmp = variant[variantProps[key]])) {
|
|
33
|
+
push(css, tmp);
|
|
34
|
+
}
|
|
31
35
|
}
|
|
32
36
|
}
|
|
33
|
-
if (compoundVariants
|
|
37
|
+
if (compoundVariants) {
|
|
34
38
|
for (const { className: cvClassName, style: cvStyle, ...compoundVariant } of compoundVariants) {
|
|
35
39
|
if ((0, utils_1.match)(compoundVariant, variantProps)) {
|
|
36
40
|
push(css, { className: cvClassName, style: cvStyle });
|
|
@@ -38,7 +42,8 @@ const cv = (config) => {
|
|
|
38
42
|
}
|
|
39
43
|
}
|
|
40
44
|
if (propClassName) {
|
|
41
|
-
css.className
|
|
45
|
+
css.className && (css.className += ' ');
|
|
46
|
+
css.className += propClassName;
|
|
42
47
|
}
|
|
43
48
|
if (propStyle) {
|
|
44
49
|
css.style = { ...css.style, ...propStyle };
|
package/dist/cjs/cv.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cv.js","sourceRoot":"","sources":["../../src/cv.ts"],"names":[],"mappings":";;;AAAA,mCAAiD;AAGjD,MAAM,IAAI,GAAG,CAAC,IAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"cv.js","sourceRoot":"","sources":["../../src/cv.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/cx.js
CHANGED
package/dist/cjs/cx.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cx.js","sourceRoot":"","sources":["../../src/cx.ts"],"names":[],"mappings":";;;AAEO,MAAM,EAAE,GAAG,CAAC,GAAG,IAAqB,EAAE,EAAE;IAC7C,IAAI,SAAS,GAAG,EAAE,CAAA;IAClB,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,IAAI,GAAgB,CAAA;IACpB,IAAI,IAAY,CAAA;IAEhB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACpB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5B,SAAS,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,CAAA;gBAC/B,SAAS,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"cx.js","sourceRoot":"","sources":["../../src/cx.ts"],"names":[],"mappings":";;;AAEO,MAAM,EAAE,GAAG,CAAC,GAAG,IAAqB,EAAE,EAAE;IAC7C,IAAI,SAAS,GAAG,EAAE,CAAA;IAClB,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,IAAI,GAAgB,CAAA;IACpB,IAAI,IAAY,CAAA;IAEhB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACpB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5B,SAAS,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,CAAA;gBAC/B,SAAS,IAAI,GAAG,CAAA;YAClB,CAAC;iBAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACnC,SAAS,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,CAAA;gBAC/B,SAAS,IAAI,GAAG,CAAA;YAClB,CAAC;iBAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACnC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oBACvB,IAAI,CAAC,IAAI,GAAG,IAAA,UAAE,EAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;wBACxB,SAAS,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,CAAA;wBAC/B,SAAS,IAAI,IAAI,CAAA;oBACnB,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;wBACtB,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;4BACb,SAAS,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,CAAA;4BAC/B,SAAS,IAAI,GAAG,CAAA;wBAClB,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAjCY,QAAA,EAAE,MAiCd;AAED,kBAAe,UAAE,CAAA"}
|
package/dist/cjs/types.d.ts
CHANGED
|
@@ -5,7 +5,9 @@ export type PartialRecord<S extends string, T> = Partial<Record<S, T>>;
|
|
|
5
5
|
export type RequireAtLeastOne<T> = {
|
|
6
6
|
[K in keyof T]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<keyof T, K>>>;
|
|
7
7
|
}[keyof T];
|
|
8
|
-
export type CssProperties = Properties<string | number
|
|
8
|
+
export type CssProperties = Properties<string | number> & {
|
|
9
|
+
[key: `--${string}`]: string | number;
|
|
10
|
+
};
|
|
9
11
|
export type VariantStyle = {
|
|
10
12
|
className: string;
|
|
11
13
|
style: CssProperties;
|
package/dist/cjs/utils.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const entries: <T extends object, TK extends Extract<keyof T, string>, TV extends T[TK], TEntry extends [TK, TV]>(obj
|
|
1
|
+
export declare const entries: <T extends object, TK extends Extract<keyof T, string>, TV extends T[TK], TEntry extends [TK, TV]>(obj: T) => TEntry[];
|
|
2
2
|
export declare function fromEntries<A extends symbol | string | number, B>(entries: [A, B][]): {
|
|
3
3
|
[key in A]: B;
|
|
4
4
|
};
|
package/dist/cjs/utils.js
CHANGED
|
@@ -3,8 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.match = exports.compact = exports.entries = void 0;
|
|
4
4
|
exports.fromEntries = fromEntries;
|
|
5
5
|
const entries = (obj) => {
|
|
6
|
-
if (!obj)
|
|
7
|
-
return [];
|
|
8
6
|
return Object.entries(obj);
|
|
9
7
|
};
|
|
10
8
|
exports.entries = entries;
|
package/dist/cjs/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;;AAWA,kCAMC;AAjBM,MAAM,OAAO,GAAG,CAMrB,GAAM,EACI,EAAE;IACZ,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAa,CAAA;AACxC,CAAC,CAAA;AATY,QAAA,OAAO,WASnB;AAED,SAAgB,WAAW,CAAwC,OAAiB;IAClF,MAAM,MAAM,GAAsB,EAAuB,CAAA;IACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACvC,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAEM,MAAM,OAAO,GAAG,CAAoC,GAAM,EAAE,EAAE;IACnE,MAAM,MAAM,GAAG,EAAO,CAAA;IAEtB,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QACpB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QACpB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAVY,QAAA,OAAO,WAUnB;AAEM,MAAM,KAAK,GAAG,CAAuC,IAAQ,EAAE,IAAQ,EAAE,EAAE;IAChF,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAwB,CAAC,CAAA;QAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,OAAO,KAAK,CAAA;QACxC,CAAC;aAAM,CAAC;YACN,IAAK,IAAgB,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAA;QAC9C,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAXY,QAAA,KAAK,SAWjB"}
|
package/dist/esm/csv.js
CHANGED
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
import { compact, entries, fromEntries, match } from './utils';
|
|
2
2
|
const push = (data, key, value) => {
|
|
3
|
-
if (
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
if (data[key] === undefined)
|
|
4
|
+
data[key] = { className: '', style: {} };
|
|
5
|
+
if (typeof value === 'string') {
|
|
6
|
+
data[key].className && (data[key].className += ' ');
|
|
7
|
+
data[key].className += value;
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
if (value.className) {
|
|
11
|
+
data[key].className && (data[key].className += ' ');
|
|
12
|
+
data[key].className += value.className;
|
|
6
13
|
}
|
|
7
|
-
if (
|
|
8
|
-
data[key].
|
|
9
|
-
}
|
|
10
|
-
else {
|
|
11
|
-
if (value.className) {
|
|
12
|
-
data[key].className += (data[key].className ? ' ' : '') + value.className.trim();
|
|
13
|
-
}
|
|
14
|
-
if (value.style) {
|
|
15
|
-
data[key].style = { ...data[key].style, ...value.style };
|
|
16
|
-
}
|
|
14
|
+
if (value.style) {
|
|
15
|
+
data[key].style = { ...data[key].style, ...value.style };
|
|
17
16
|
}
|
|
18
17
|
}
|
|
19
18
|
};
|
|
@@ -21,28 +20,49 @@ export const csv = (config) => {
|
|
|
21
20
|
const { slots, base, variants, compoundVariants, defaultVariants, onDone } = config;
|
|
22
21
|
return (props) => {
|
|
23
22
|
const { classNames: propClassNames, styles: propStyles, ...rest } = props ?? {};
|
|
24
|
-
const data = {};
|
|
25
23
|
const variantProps = { ...defaultVariants, ...compact(rest) };
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
const data = {};
|
|
25
|
+
let tmp;
|
|
26
|
+
if (base) {
|
|
27
|
+
for (const [key, value] of entries(base)) {
|
|
28
|
+
if (value) {
|
|
29
|
+
push(data, key, value);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
28
32
|
}
|
|
29
|
-
|
|
30
|
-
for (const [key,
|
|
31
|
-
|
|
33
|
+
if (variants) {
|
|
34
|
+
for (const [key, variant] of entries(variants)) {
|
|
35
|
+
if ((tmp = variant[variantProps[key]])) {
|
|
36
|
+
for (const [key, value] of entries(tmp)) {
|
|
37
|
+
if (value) {
|
|
38
|
+
push(data, key, value);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
32
42
|
}
|
|
33
43
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
44
|
+
if (compoundVariants) {
|
|
45
|
+
for (const { classNames: cvClassNames, styles: cvStyles, ...compoundVariant } of compoundVariants) {
|
|
46
|
+
if (match(compoundVariant, variantProps)) {
|
|
47
|
+
if (cvClassNames) {
|
|
48
|
+
for (const [key, value] of entries(cvClassNames))
|
|
49
|
+
push(data, key, { className: value });
|
|
50
|
+
}
|
|
51
|
+
if (cvStyles) {
|
|
52
|
+
for (const [key, value] of entries(cvStyles))
|
|
53
|
+
push(data, key, { style: value });
|
|
54
|
+
}
|
|
55
|
+
}
|
|
40
56
|
}
|
|
41
57
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
58
|
+
if (propClassNames) {
|
|
59
|
+
for (const [key, value] of entries(propClassNames))
|
|
60
|
+
push(data, key, { className: value });
|
|
61
|
+
}
|
|
62
|
+
if (propStyles) {
|
|
63
|
+
for (const [key, value] of entries(propStyles))
|
|
64
|
+
push(data, key, { style: value });
|
|
65
|
+
}
|
|
46
66
|
const css = fromEntries(slots.map((slot) => [
|
|
47
67
|
slot,
|
|
48
68
|
{
|
package/dist/esm/csv.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csv.js","sourceRoot":"","sources":["../../src/csv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAG9D,MAAM,IAAI,GAAG,CACX,IAAoC,EACpC,GAAM,EACN,
|
|
1
|
+
{"version":3,"file":"csv.js","sourceRoot":"","sources":["../../src/csv.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/cv.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { compact, entries, match } from './utils';
|
|
2
2
|
const push = (data, value) => {
|
|
3
3
|
if (typeof value === 'string') {
|
|
4
|
-
data.className
|
|
4
|
+
data.className && (data.className += ' ');
|
|
5
|
+
data.className += value.trim();
|
|
5
6
|
}
|
|
6
7
|
else {
|
|
7
8
|
if (value?.className) {
|
|
8
|
-
data.className
|
|
9
|
+
data.className && (data.className += ' ');
|
|
10
|
+
data.className += value.className.trim();
|
|
9
11
|
}
|
|
10
12
|
if (value?.style) {
|
|
11
13
|
data.style = { ...data.style, ...value.style };
|
|
@@ -16,18 +18,20 @@ export const cv = (config) => {
|
|
|
16
18
|
const { base, variants, compoundVariants, defaultVariants, onDone } = config;
|
|
17
19
|
return (props) => {
|
|
18
20
|
const { className: propClassName, style: propStyle, ...rest } = props ?? {};
|
|
19
|
-
const css = { className: '', style: {} };
|
|
20
21
|
const variantProps = { ...defaultVariants, ...compact(rest) };
|
|
22
|
+
const css = { className: '', style: {} };
|
|
23
|
+
let tmp;
|
|
21
24
|
if (base) {
|
|
22
25
|
push(css, base);
|
|
23
26
|
}
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
if (variants) {
|
|
28
|
+
for (const [key, variant] of entries(variants)) {
|
|
29
|
+
if ((tmp = variant[variantProps[key]])) {
|
|
30
|
+
push(css, tmp);
|
|
31
|
+
}
|
|
28
32
|
}
|
|
29
33
|
}
|
|
30
|
-
if (compoundVariants
|
|
34
|
+
if (compoundVariants) {
|
|
31
35
|
for (const { className: cvClassName, style: cvStyle, ...compoundVariant } of compoundVariants) {
|
|
32
36
|
if (match(compoundVariant, variantProps)) {
|
|
33
37
|
push(css, { className: cvClassName, style: cvStyle });
|
|
@@ -35,7 +39,8 @@ export const cv = (config) => {
|
|
|
35
39
|
}
|
|
36
40
|
}
|
|
37
41
|
if (propClassName) {
|
|
38
|
-
css.className
|
|
42
|
+
css.className && (css.className += ' ');
|
|
43
|
+
css.className += propClassName;
|
|
39
44
|
}
|
|
40
45
|
if (propStyle) {
|
|
41
46
|
css.style = { ...css.style, ...propStyle };
|
package/dist/esm/cv.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cv.js","sourceRoot":"","sources":["../../src/cv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAGjD,MAAM,IAAI,GAAG,CAAC,IAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"cv.js","sourceRoot":"","sources":["../../src/cv.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/cx.js
CHANGED
package/dist/esm/cx.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cx.js","sourceRoot":"","sources":["../../src/cx.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAqB,EAAE,EAAE;IAC7C,IAAI,SAAS,GAAG,EAAE,CAAA;IAClB,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,IAAI,GAAgB,CAAA;IACpB,IAAI,IAAY,CAAA;IAEhB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACpB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5B,SAAS,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,CAAA;gBAC/B,SAAS,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"cx.js","sourceRoot":"","sources":["../../src/cx.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAqB,EAAE,EAAE;IAC7C,IAAI,SAAS,GAAG,EAAE,CAAA;IAClB,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,IAAI,GAAgB,CAAA;IACpB,IAAI,IAAY,CAAA;IAEhB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACpB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5B,SAAS,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,CAAA;gBAC/B,SAAS,IAAI,GAAG,CAAA;YAClB,CAAC;iBAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACnC,SAAS,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,CAAA;gBAC/B,SAAS,IAAI,GAAG,CAAA;YAClB,CAAC;iBAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACnC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oBACvB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;wBACxB,SAAS,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,CAAA;wBAC/B,SAAS,IAAI,IAAI,CAAA;oBACnB,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;wBACtB,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;4BACb,SAAS,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,CAAA;4BAC/B,SAAS,IAAI,GAAG,CAAA;wBAClB,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED,eAAe,EAAE,CAAA"}
|
package/dist/esm/types.d.ts
CHANGED
|
@@ -5,7 +5,9 @@ export type PartialRecord<S extends string, T> = Partial<Record<S, T>>;
|
|
|
5
5
|
export type RequireAtLeastOne<T> = {
|
|
6
6
|
[K in keyof T]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<keyof T, K>>>;
|
|
7
7
|
}[keyof T];
|
|
8
|
-
export type CssProperties = Properties<string | number
|
|
8
|
+
export type CssProperties = Properties<string | number> & {
|
|
9
|
+
[key: `--${string}`]: string | number;
|
|
10
|
+
};
|
|
9
11
|
export type VariantStyle = {
|
|
10
12
|
className: string;
|
|
11
13
|
style: CssProperties;
|
package/dist/esm/utils.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const entries: <T extends object, TK extends Extract<keyof T, string>, TV extends T[TK], TEntry extends [TK, TV]>(obj
|
|
1
|
+
export declare const entries: <T extends object, TK extends Extract<keyof T, string>, TV extends T[TK], TEntry extends [TK, TV]>(obj: T) => TEntry[];
|
|
2
2
|
export declare function fromEntries<A extends symbol | string | number, B>(entries: [A, B][]): {
|
|
3
3
|
[key in A]: B;
|
|
4
4
|
};
|
package/dist/esm/utils.js
CHANGED
package/dist/esm/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,CAMrB,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,CAMrB,GAAM,EACI,EAAE;IACZ,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAa,CAAA;AACxC,CAAC,CAAA;AAED,MAAM,UAAU,WAAW,CAAwC,OAAiB;IAClF,MAAM,MAAM,GAAsB,EAAuB,CAAA;IACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACvC,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,CAAoC,GAAM,EAAE,EAAE;IACnE,MAAM,MAAM,GAAG,EAAO,CAAA;IAEtB,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QACpB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QACpB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,CAAuC,IAAQ,EAAE,IAAQ,EAAE,EAAE;IAChF,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAwB,CAAC,CAAA;QAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,OAAO,KAAK,CAAA;QACxC,CAAC;aAAM,CAAC;YACN,IAAK,IAAgB,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAA;QAC9C,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
|