css-variants 1.1.3 → 2.0.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 (70) hide show
  1. package/README.md +113 -153
  2. package/dist/cjs/cv.d.ts +48 -2
  3. package/dist/cjs/cv.js +49 -37
  4. package/dist/cjs/cv.js.map +1 -1
  5. package/dist/cjs/cx.d.ts +4 -2
  6. package/dist/cjs/cx.js +49 -34
  7. package/dist/cjs/cx.js.map +1 -1
  8. package/dist/cjs/index.d.ts +3 -2
  9. package/dist/cjs/index.js +3 -1
  10. package/dist/cjs/index.js.map +1 -1
  11. package/dist/cjs/scv.d.ts +56 -0
  12. package/dist/cjs/scv.js +90 -0
  13. package/dist/cjs/scv.js.map +1 -0
  14. package/dist/cjs/ssv.d.ts +51 -0
  15. package/dist/cjs/ssv.js +77 -0
  16. package/dist/cjs/ssv.js.map +1 -0
  17. package/dist/cjs/sv.d.ts +44 -0
  18. package/dist/cjs/sv.js +63 -0
  19. package/dist/cjs/sv.js.map +1 -0
  20. package/dist/cjs/utils/compact.d.ts +1 -0
  21. package/dist/cjs/utils/compact.js +13 -0
  22. package/dist/cjs/utils/compact.js.map +1 -0
  23. package/dist/cjs/utils/entries.d.ts +1 -0
  24. package/dist/cjs/utils/entries.js +7 -0
  25. package/dist/cjs/utils/entries.js.map +1 -0
  26. package/dist/cjs/utils/types.d.ts +14 -0
  27. package/dist/cjs/{types.js.map → utils/types.js.map} +1 -1
  28. package/dist/esm/cv.d.ts +48 -2
  29. package/dist/esm/cv.js +49 -37
  30. package/dist/esm/cv.js.map +1 -1
  31. package/dist/esm/cx.d.ts +4 -2
  32. package/dist/esm/cx.js +47 -31
  33. package/dist/esm/cx.js.map +1 -1
  34. package/dist/esm/index.d.ts +3 -2
  35. package/dist/esm/index.js +3 -1
  36. package/dist/esm/index.js.map +1 -1
  37. package/dist/esm/scv.d.ts +56 -0
  38. package/dist/esm/scv.js +86 -0
  39. package/dist/esm/scv.js.map +1 -0
  40. package/dist/esm/ssv.d.ts +51 -0
  41. package/dist/esm/ssv.js +73 -0
  42. package/dist/esm/ssv.js.map +1 -0
  43. package/dist/esm/sv.d.ts +44 -0
  44. package/dist/esm/sv.js +59 -0
  45. package/dist/esm/sv.js.map +1 -0
  46. package/dist/esm/utils/compact.d.ts +1 -0
  47. package/dist/esm/utils/compact.js +10 -0
  48. package/dist/esm/utils/compact.js.map +1 -0
  49. package/dist/esm/utils/entries.d.ts +1 -0
  50. package/dist/esm/utils/entries.js +4 -0
  51. package/dist/esm/utils/entries.js.map +1 -0
  52. package/dist/esm/utils/types.d.ts +14 -0
  53. package/dist/esm/{types.js.map → utils/types.js.map} +1 -1
  54. package/package.json +13 -10
  55. package/dist/cjs/csv.d.ts +0 -3
  56. package/dist/cjs/csv.js +0 -83
  57. package/dist/cjs/csv.js.map +0 -1
  58. package/dist/cjs/types.d.ts +0 -46
  59. package/dist/cjs/utils.d.ts +0 -6
  60. package/dist/cjs/utils.js +0 -42
  61. package/dist/cjs/utils.js.map +0 -1
  62. package/dist/esm/csv.d.ts +0 -3
  63. package/dist/esm/csv.js +0 -79
  64. package/dist/esm/csv.js.map +0 -1
  65. package/dist/esm/types.d.ts +0 -46
  66. package/dist/esm/utils.d.ts +0 -6
  67. package/dist/esm/utils.js +0 -35
  68. package/dist/esm/utils.js.map +0 -1
  69. /package/dist/cjs/{types.js → utils/types.js} +0 -0
  70. /package/dist/esm/{types.js → utils/types.js} +0 -0
@@ -0,0 +1,10 @@
1
+ export function compact(obj) {
2
+ const newObj = {};
3
+ for (const k in obj) {
4
+ if (obj[k] !== undefined) {
5
+ newObj[k] = obj[k];
6
+ }
7
+ }
8
+ return newObj;
9
+ }
10
+ //# sourceMappingURL=compact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compact.js","sourceRoot":"","sources":["../../../src/utils/compact.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,OAAO,CAAoC,GAAM;IAC/D,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"}
@@ -0,0 +1 @@
1
+ export declare function entries<T extends object, TK extends Extract<keyof T, string>, TV extends T[TK], TEntry extends [TK, TV]>(obj: T): TEntry[];
@@ -0,0 +1,4 @@
1
+ export function entries(obj) {
2
+ return Object.keys(obj).map((key) => [key, obj[key]]);
3
+ }
4
+ //# sourceMappingURL=entries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entries.js","sourceRoot":"","sources":["../../../src/utils/entries.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,OAAO,CAKrB,GAAM;IACN,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAS,CAAC,CAAC,CAAa,CAAA;AACzE,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { Properties } from 'csstype';
2
+ export type OneOrMore<T> = T | T[];
3
+ export type PartialRecord<S extends string, T> = Partial<Record<S, T>>;
4
+ export type RequireAtLeastOne<T> = {
5
+ [K in keyof T]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<keyof T, K>>>;
6
+ }[keyof T];
7
+ export type StringToBoolean<T> = T extends 'true' | 'false' ? boolean : T;
8
+ export type ObjectKeyPicker<T> = T extends undefined ? Record<string, unknown> : {
9
+ [K in keyof T]?: StringToBoolean<keyof T[K]> | undefined;
10
+ };
11
+ export type ObjectKeyArrayPicker<T> = T extends undefined ? Record<string, unknown> : {
12
+ [K in keyof T]?: OneOrMore<StringToBoolean<keyof T[K]>> | undefined;
13
+ };
14
+ export type CssProperties = Properties<string | number>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/utils/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "css-variants",
3
- "version": "1.1.3",
4
- "description": "Variant API for plain class names",
3
+ "version": "2.0.0",
4
+ "description": "A lightweight, flexible API for managing CSS class variants.",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
7
7
  "types": "dist/esm/index.d.ts",
@@ -9,6 +9,10 @@
9
9
  ".": {
10
10
  "require": "./dist/cjs/index.js",
11
11
  "import": "./dist/esm/index.js"
12
+ },
13
+ "./*": {
14
+ "require": "./dist/cjs/*",
15
+ "import": "./dist/esm/*"
12
16
  }
13
17
  },
14
18
  "files": [
@@ -17,6 +21,7 @@
17
21
  "scripts": {
18
22
  "lint": "eslint .",
19
23
  "test": "vitest run --coverage",
24
+ "bench": "vitest bench",
20
25
  "build:cjs": "tsc --project tsconfig.cjs.json",
21
26
  "build:esm": "tsc --project tsconfig.esm.json",
22
27
  "build": "rimraf ./dist && yarn build:cjs && yarn build:esm"
@@ -45,20 +50,18 @@
45
50
  ],
46
51
  "license": "MIT",
47
52
  "devDependencies": {
48
- "@eslint/js": "^9.7.0",
53
+ "@eslint/js": "^9.17.0",
49
54
  "@types/eslint__js": "^8.42.3",
50
55
  "@types/node": "^20.12.12",
51
- "@vitest/coverage-v8": "^1.6.0",
52
- "eslint": "^9.7.0",
56
+ "@vitest/coverage-v8": "^2.1.8",
57
+ "csstype": "^3.1.3",
58
+ "eslint": "^9.17.0",
53
59
  "eslint-config-prettier": "^9.1.0",
54
60
  "eslint-plugin-prettier": "^5.2.1",
55
- "prettier": "^3.3.0",
61
+ "prettier": "^3.4.2",
56
62
  "rimraf": "^5.0.7",
57
63
  "typescript": "^5.4.5",
58
64
  "typescript-eslint": "^7.16.1",
59
- "vitest": "^1.6.0"
60
- },
61
- "dependencies": {
62
- "csstype": "^3.1.3"
65
+ "vitest": "^2.1.8"
63
66
  }
64
67
  }
package/dist/cjs/csv.d.ts DELETED
@@ -1,3 +0,0 @@
1
- import { SlotVariantCreatorFn } from './types';
2
- export declare const csv: SlotVariantCreatorFn;
3
- export default csv;
package/dist/cjs/csv.js DELETED
@@ -1,83 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.csv = void 0;
4
- const utils_1 = require("./utils");
5
- const push = (data, key, value) => {
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;
16
- }
17
- if (value.style) {
18
- data[key].style = { ...data[key].style, ...value.style };
19
- }
20
- }
21
- };
22
- const csv = (config) => {
23
- const { slots, base, variants, compoundVariants, defaultVariants, onDone } = config;
24
- return (props) => {
25
- const { classNames: propClassNames, styles: propStyles, ...rest } = props ?? {};
26
- const variantProps = { ...defaultVariants, ...(0, utils_1.compact)(rest) };
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
- }
35
- }
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
- }
45
- }
46
- }
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
- }
59
- }
60
- }
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
- }
69
- const css = (0, utils_1.fromEntries)(slots.map((slot) => [
70
- slot,
71
- {
72
- className: data[slot]?.className ?? '',
73
- style: data[slot]?.style ?? {},
74
- },
75
- ]));
76
- if (onDone)
77
- return onDone(css);
78
- return css;
79
- };
80
- };
81
- exports.csv = csv;
82
- exports.default = exports.csv;
83
- //# sourceMappingURL=csv.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"csv.js","sourceRoot":"","sources":["../../src/csv.ts"],"names":[],"mappings":"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"}
@@ -1,46 +0,0 @@
1
- import { Properties } from 'csstype';
2
- export type StringToBoolean<T> = T extends 'true' | 'false' ? boolean : T;
3
- export type OneOrMore<T> = T | T[];
4
- export type PartialRecord<S extends string, T> = Partial<Record<S, T>>;
5
- export type RequireAtLeastOne<T> = {
6
- [K in keyof T]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<keyof T, K>>>;
7
- }[keyof T];
8
- export type CssProperties = Properties<string | number> & {
9
- [key: `--${string}`]: string | number;
10
- };
11
- export type VariantStyle = {
12
- className: string;
13
- style: CssProperties;
14
- };
15
- export type VariantRecord = Record<string, Record<string, string | RequireAtLeastOne<VariantStyle>>>;
16
- export type VariantSelection<T> = T extends undefined ? Record<string, unknown> : {
17
- [K in keyof T]?: StringToBoolean<keyof T[K]> | undefined;
18
- };
19
- export type VariantCompoundSelection<T> = T extends undefined ? Record<string, unknown> : {
20
- [K in keyof T]?: OneOrMore<StringToBoolean<keyof T[K]>> | undefined;
21
- };
22
- export interface VariantDefinition<T extends VariantRecord | undefined> {
23
- base?: string | RequireAtLeastOne<VariantStyle>;
24
- variants?: T;
25
- compoundVariants?: (VariantCompoundSelection<T> & RequireAtLeastOne<VariantStyle>)[];
26
- defaultVariants?: VariantSelection<T>;
27
- onDone?: (css: VariantStyle) => VariantStyle;
28
- }
29
- export type VariantFn<T extends VariantRecord | undefined> = (props?: VariantSelection<T> & Partial<VariantStyle>) => VariantStyle;
30
- export type VariantCreatorFn = <T extends VariantRecord | undefined>(config: VariantDefinition<T>) => VariantFn<T>;
31
- export type SlotVariantStyle<S extends string> = {
32
- classNames: PartialRecord<S, string>;
33
- styles: PartialRecord<S, CssProperties>;
34
- };
35
- export type SlotVariantRecord<S extends string> = Record<string, Record<string, PartialRecord<S, string | RequireAtLeastOne<VariantStyle>>>>;
36
- export interface SlotVariantDefinition<S extends string, T extends SlotVariantRecord<S> | undefined> {
37
- slots: S[] | Readonly<S[]>;
38
- base?: PartialRecord<S, string | RequireAtLeastOne<VariantStyle>>;
39
- variants?: T;
40
- compoundVariants?: (VariantCompoundSelection<T> & RequireAtLeastOne<SlotVariantStyle<S>>)[];
41
- defaultVariants?: VariantSelection<T>;
42
- onDone?: (css: Record<S, VariantStyle>) => Record<S, VariantStyle>;
43
- }
44
- export type SlotVariantFn<S extends string, T extends SlotVariantRecord<S> | undefined> = (props?: VariantSelection<T> & Partial<SlotVariantStyle<S>>) => Record<S, VariantStyle>;
45
- export type SlotVariantCreatorFn = <S extends string, T extends SlotVariantRecord<S> | undefined>(config: SlotVariantDefinition<S, T>) => SlotVariantFn<S, T>;
46
- export type VariantProps<T extends VariantFn<VariantRecord> | SlotVariantFn<string, SlotVariantRecord<string>>> = Parameters<T>[0];
@@ -1,6 +0,0 @@
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
- export declare function fromEntries<A extends symbol | string | number, B>(entries: [A, B][]): {
3
- [key in A]: B;
4
- };
5
- export declare const compact: <T extends Record<string, unknown>>(obj: T) => T;
6
- export declare const match: <T1 extends object, T2 extends object>(obj1: T1, obj2: T2) => boolean;
package/dist/cjs/utils.js DELETED
@@ -1,42 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.match = exports.compact = exports.entries = void 0;
4
- exports.fromEntries = fromEntries;
5
- const entries = (obj) => {
6
- return Object.keys(obj).map((key) => [key, obj[key]]);
7
- };
8
- exports.entries = entries;
9
- function fromEntries(entries) {
10
- const result = {};
11
- for (let i = 0; i < entries.length; i++) {
12
- result[entries[i][0]] = entries[i][1];
13
- }
14
- return result;
15
- }
16
- const compact = (obj) => {
17
- const newObj = {};
18
- for (const k in obj) {
19
- if (obj[k] !== undefined) {
20
- newObj[k] = obj[k];
21
- }
22
- }
23
- return newObj;
24
- };
25
- exports.compact = compact;
26
- const match = (obj1, obj2) => {
27
- for (const k in obj1) {
28
- const val1 = obj1[k];
29
- const val2 = obj2[k];
30
- if (Array.isArray(val1)) {
31
- if (!val1.includes(val2))
32
- return false;
33
- }
34
- else {
35
- if (val1 !== val2)
36
- return false;
37
- }
38
- }
39
- return true;
40
- };
41
- exports.match = match;
42
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
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,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAS,CAAC,CAAC,CAAa,CAAA;AACzE,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.d.ts DELETED
@@ -1,3 +0,0 @@
1
- import { SlotVariantCreatorFn } from './types';
2
- export declare const csv: SlotVariantCreatorFn;
3
- export default csv;
package/dist/esm/csv.js DELETED
@@ -1,79 +0,0 @@
1
- import { compact, entries, fromEntries, match } from './utils';
2
- const push = (data, key, value) => {
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;
13
- }
14
- if (value.style) {
15
- data[key].style = { ...data[key].style, ...value.style };
16
- }
17
- }
18
- };
19
- export const csv = (config) => {
20
- const { slots, base, variants, compoundVariants, defaultVariants, onDone } = config;
21
- return (props) => {
22
- const { classNames: propClassNames, styles: propStyles, ...rest } = props ?? {};
23
- const variantProps = { ...defaultVariants, ...compact(rest) };
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
- }
32
- }
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
- }
42
- }
43
- }
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
- }
56
- }
57
- }
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
- }
66
- const css = fromEntries(slots.map((slot) => [
67
- slot,
68
- {
69
- className: data[slot]?.className ?? '',
70
- style: data[slot]?.style ?? {},
71
- },
72
- ]));
73
- if (onDone)
74
- return onDone(css);
75
- return css;
76
- };
77
- };
78
- export default csv;
79
- //# sourceMappingURL=csv.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"csv.js","sourceRoot":"","sources":["../../src/csv.ts"],"names":[],"mappings":"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"}
@@ -1,46 +0,0 @@
1
- import { Properties } from 'csstype';
2
- export type StringToBoolean<T> = T extends 'true' | 'false' ? boolean : T;
3
- export type OneOrMore<T> = T | T[];
4
- export type PartialRecord<S extends string, T> = Partial<Record<S, T>>;
5
- export type RequireAtLeastOne<T> = {
6
- [K in keyof T]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<keyof T, K>>>;
7
- }[keyof T];
8
- export type CssProperties = Properties<string | number> & {
9
- [key: `--${string}`]: string | number;
10
- };
11
- export type VariantStyle = {
12
- className: string;
13
- style: CssProperties;
14
- };
15
- export type VariantRecord = Record<string, Record<string, string | RequireAtLeastOne<VariantStyle>>>;
16
- export type VariantSelection<T> = T extends undefined ? Record<string, unknown> : {
17
- [K in keyof T]?: StringToBoolean<keyof T[K]> | undefined;
18
- };
19
- export type VariantCompoundSelection<T> = T extends undefined ? Record<string, unknown> : {
20
- [K in keyof T]?: OneOrMore<StringToBoolean<keyof T[K]>> | undefined;
21
- };
22
- export interface VariantDefinition<T extends VariantRecord | undefined> {
23
- base?: string | RequireAtLeastOne<VariantStyle>;
24
- variants?: T;
25
- compoundVariants?: (VariantCompoundSelection<T> & RequireAtLeastOne<VariantStyle>)[];
26
- defaultVariants?: VariantSelection<T>;
27
- onDone?: (css: VariantStyle) => VariantStyle;
28
- }
29
- export type VariantFn<T extends VariantRecord | undefined> = (props?: VariantSelection<T> & Partial<VariantStyle>) => VariantStyle;
30
- export type VariantCreatorFn = <T extends VariantRecord | undefined>(config: VariantDefinition<T>) => VariantFn<T>;
31
- export type SlotVariantStyle<S extends string> = {
32
- classNames: PartialRecord<S, string>;
33
- styles: PartialRecord<S, CssProperties>;
34
- };
35
- export type SlotVariantRecord<S extends string> = Record<string, Record<string, PartialRecord<S, string | RequireAtLeastOne<VariantStyle>>>>;
36
- export interface SlotVariantDefinition<S extends string, T extends SlotVariantRecord<S> | undefined> {
37
- slots: S[] | Readonly<S[]>;
38
- base?: PartialRecord<S, string | RequireAtLeastOne<VariantStyle>>;
39
- variants?: T;
40
- compoundVariants?: (VariantCompoundSelection<T> & RequireAtLeastOne<SlotVariantStyle<S>>)[];
41
- defaultVariants?: VariantSelection<T>;
42
- onDone?: (css: Record<S, VariantStyle>) => Record<S, VariantStyle>;
43
- }
44
- export type SlotVariantFn<S extends string, T extends SlotVariantRecord<S> | undefined> = (props?: VariantSelection<T> & Partial<SlotVariantStyle<S>>) => Record<S, VariantStyle>;
45
- export type SlotVariantCreatorFn = <S extends string, T extends SlotVariantRecord<S> | undefined>(config: SlotVariantDefinition<S, T>) => SlotVariantFn<S, T>;
46
- export type VariantProps<T extends VariantFn<VariantRecord> | SlotVariantFn<string, SlotVariantRecord<string>>> = Parameters<T>[0];
@@ -1,6 +0,0 @@
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
- export declare function fromEntries<A extends symbol | string | number, B>(entries: [A, B][]): {
3
- [key in A]: B;
4
- };
5
- export declare const compact: <T extends Record<string, unknown>>(obj: T) => T;
6
- export declare const match: <T1 extends object, T2 extends object>(obj1: T1, obj2: T2) => boolean;
package/dist/esm/utils.js DELETED
@@ -1,35 +0,0 @@
1
- export const entries = (obj) => {
2
- return Object.keys(obj).map((key) => [key, obj[key]]);
3
- };
4
- export function fromEntries(entries) {
5
- const result = {};
6
- for (let i = 0; i < entries.length; i++) {
7
- result[entries[i][0]] = entries[i][1];
8
- }
9
- return result;
10
- }
11
- export const compact = (obj) => {
12
- const newObj = {};
13
- for (const k in obj) {
14
- if (obj[k] !== undefined) {
15
- newObj[k] = obj[k];
16
- }
17
- }
18
- return newObj;
19
- };
20
- export const match = (obj1, obj2) => {
21
- for (const k in obj1) {
22
- const val1 = obj1[k];
23
- const val2 = obj2[k];
24
- if (Array.isArray(val1)) {
25
- if (!val1.includes(val2))
26
- return false;
27
- }
28
- else {
29
- if (val1 !== val2)
30
- return false;
31
- }
32
- }
33
- return true;
34
- };
35
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
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,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAS,CAAC,CAAC,CAAa,CAAA;AACzE,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"}
File without changes
File without changes