@terrazzo/plugin-css 0.7.4 → 0.8.1

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/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@terrazzo/plugin-css",
3
- "version": "0.7.4",
4
- "description": "Convert DTCG tokens into CSS variables for use in any web application or native app with webview.",
3
+ "version": "0.8.1",
4
+ "description": "Convert DTCG design tokens JSON into CSS variables for use in any web application or native app with webview.",
5
+ "license": "MIT",
5
6
  "type": "module",
6
7
  "author": {
7
8
  "name": "Drew Powers",
@@ -15,30 +16,32 @@
15
16
  "css"
16
17
  ],
17
18
  "main": "./dist/index.js",
19
+ "exports": {
20
+ ".": "./dist/index.js",
21
+ "./package.json": "./package.json"
22
+ },
18
23
  "homepage": "https://terrazzo.app/docs/cli/integrations/css",
19
24
  "repository": {
20
25
  "type": "git",
21
26
  "url": "https://github.com/terrazzoapp/terrazzo.git",
22
27
  "directory": "./packages/plugin-css/"
23
28
  },
24
- "license": "MIT",
25
29
  "peerDependencies": {
26
- "@terrazzo/cli": "^0.7.0"
30
+ "@terrazzo/cli": "^0.8.0"
27
31
  },
28
32
  "dependencies": {
29
- "@terrazzo/token-tools": "^0.7.4"
33
+ "@terrazzo/token-tools": "^0.8.1"
30
34
  },
31
35
  "devDependencies": {
32
- "dtcg-examples": "^0.2.0",
33
- "@terrazzo/cli": "^0.7.4",
34
- "@terrazzo/parser": "^0.7.3"
36
+ "dtcg-examples": "^0.3.3",
37
+ "@terrazzo/cli": "^0.8.1",
38
+ "@terrazzo/parser": "^0.8.1"
35
39
  },
36
40
  "scripts": {
37
- "build": "pnpm run build:ts && pnpm -w run inject-license @terrazzo/plugin-css dist/index.js",
38
- "build:ts": "tsc -p tsconfig.build.json",
39
- "dev": "tsc -p tsconfig.build.json -w",
41
+ "build": "rolldown -c && attw --profile esm-only --pack .",
42
+ "dev": "rolldown -c -w",
40
43
  "format": "biome check --fix --unsafe .",
41
- "lint": "pnpm --filter @terrazzo/plugin-css run \"/^lint:.*/\"",
44
+ "lint": "pnpm --filter @terrazzo/plugin-css run \"/^lint:(js|ts)/\"",
42
45
  "lint:js": "biome check .",
43
46
  "lint:ts": "tsc --noEmit",
44
47
  "test": "vitest run"
@@ -1,11 +0,0 @@
1
- import type { BuildHookOptions } from '@terrazzo/parser';
2
- import { type CSSPluginOptions } from '../lib.js';
3
- export interface BuildFormatOptions {
4
- exclude: CSSPluginOptions['exclude'];
5
- getTransforms: BuildHookOptions['getTransforms'];
6
- modeSelectors: CSSPluginOptions['modeSelectors'];
7
- utility: CSSPluginOptions['utility'];
8
- baseSelector: string;
9
- }
10
- export default function buildFormat({ getTransforms, exclude, utility, modeSelectors, baseSelector, }: BuildFormatOptions): string;
11
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/build/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGzD,OAAO,EAAE,KAAK,gBAAgB,EAAuC,MAAM,WAAW,CAAC;AAMvF,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACrC,aAAa,EAAE,gBAAgB,CAAC,eAAe,CAAC,CAAC;IACjD,aAAa,EAAE,gBAAgB,CAAC,eAAe,CAAC,CAAC;IACjD,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,aAAa,EACb,OAAO,EACP,OAAO,EACP,aAAa,EACb,YAAY,GACb,EAAE,kBAAkB,GAAG,MAAM,CAiJ7B"}
@@ -1,132 +0,0 @@
1
- import { isTokenMatch } from '@terrazzo/token-tools';
2
- import { generateShorthand } from '@terrazzo/token-tools/css';
3
- import { FORMAT_ID, printRules } from '../lib.js';
4
- import generateUtilityCSS from './utility-css.js';
5
- const P3_MQ = '@media (color-gamut: p3)';
6
- const REC2020_MQ = '@media (color-gamut: rec2020)';
7
- export default function buildFormat({ getTransforms, exclude, utility, modeSelectors, baseSelector, }) {
8
- const rules = [];
9
- // :root
10
- const rootTokens = getTransforms({ format: FORMAT_ID, mode: '.' });
11
- if (rootTokens.length) {
12
- const rootRule = { selectors: [baseSelector], declarations: {} };
13
- // note: `nestedQuery` was designed specifically for higher-gamut colors to
14
- // apply color-gamut media queries to existing selectors (i.e. keep the same
15
- // targets, and apply another nested layer of media query filtering based on
16
- // hardware). Because of how CSS works they need to get built out into their
17
- // own selectors that have different structures depending on whether
18
- // `selectors` has a media query or not.
19
- const p3Rule = { selectors: [baseSelector], nestedQuery: P3_MQ, declarations: {} };
20
- const rec2020Rule = { selectors: [baseSelector], nestedQuery: REC2020_MQ, declarations: {} };
21
- rules.push(rootRule, p3Rule, rec2020Rule);
22
- for (const token of rootTokens) {
23
- // handle exclude (if any)
24
- if (isTokenMatch(token.token.id, exclude ?? [])) {
25
- continue;
26
- }
27
- const localID = token.localID ?? token.token.id;
28
- // `aliasTokens` are an important concept unique to CSS: if the root value
29
- // changes in a scope, all downstream aliases MUST be redeclared,
30
- // otherwise the values are stale. here, `aliasedBy` is a reverse lookup
31
- // that lets us redeclare all CSS values again that are minimally-needed.
32
- const aliasTokens = token.token.aliasedBy?.length
33
- ? getTransforms({ format: FORMAT_ID, id: token.token.aliasedBy })
34
- : [];
35
- // single-value token
36
- if (token.type === 'SINGLE_VALUE') {
37
- rootRule.declarations[localID] = token.value;
38
- }
39
- // multi-value token (wide gamut color)
40
- else if (token.value.srgb && token.value.p3 && token.value.rec2020) {
41
- rootRule.declarations[localID] = token.value.srgb;
42
- if (token.value.p3 !== token.value.srgb) {
43
- p3Rule.declarations[localID] = token.value.p3;
44
- rec2020Rule.declarations[localID] = token.value.rec2020;
45
- // handle aliases within color gamut media queries
46
- for (const alias of aliasTokens) {
47
- if (alias.localID && typeof alias.value === 'string') {
48
- p3Rule.declarations[alias.localID] ??= alias.value;
49
- rec2020Rule.declarations[alias.localID] ??= alias.value;
50
- }
51
- }
52
- }
53
- }
54
- // multi-value token
55
- else if (token.type === 'MULTI_VALUE') {
56
- const shorthand = generateShorthand({ $type: token.token.$type, localID });
57
- if (shorthand) {
58
- rootRule.declarations[token.localID ?? token.token.id] = shorthand;
59
- }
60
- for (const [name, value] of Object.entries(token.value)) {
61
- rootRule.declarations[name === '.' ? localID : [localID, name].join('-')] = value;
62
- }
63
- }
64
- }
65
- }
66
- // modeSelectors (note: without these, modes won’t get written to CSS)
67
- for (const { selectors, tokens, mode } of modeSelectors ?? []) {
68
- if (!selectors.length) {
69
- continue;
70
- }
71
- const selectorTokens = getTransforms({ format: FORMAT_ID, id: tokens, mode });
72
- if (!selectorTokens.length) {
73
- continue;
74
- }
75
- const selectorRule = { selectors, declarations: {} };
76
- const selectorP3Rule = { selectors, nestedQuery: P3_MQ, declarations: {} };
77
- const selectorRec2020Rule = { selectors, nestedQuery: REC2020_MQ, declarations: {} };
78
- const selectorAliasDeclarations = {};
79
- rules.push(selectorRule, selectorP3Rule, selectorRec2020Rule);
80
- for (const token of selectorTokens) {
81
- const localID = token.localID ?? token.token.id;
82
- const aliasTokens = token.token.aliasedBy?.length
83
- ? getTransforms({ format: FORMAT_ID, id: token.token.aliasedBy })
84
- : [];
85
- // single-value token
86
- if (token.type === 'SINGLE_VALUE') {
87
- selectorRule.declarations[localID] = token.value;
88
- }
89
- // multi-value token (wide gamut color)
90
- else if (token.value.srgb && token.value.p3 && token.value.rec2020) {
91
- selectorRule.declarations[localID] = token.value.srgb;
92
- if (token.value.p3 !== token.value.srgb) {
93
- selectorP3Rule.declarations[localID] = token.value.p3;
94
- selectorRec2020Rule.declarations[localID] = token.value.rec2020;
95
- // handle aliases within color gamut media queries
96
- for (const alias of aliasTokens) {
97
- if (alias.localID && typeof alias.value === 'string') {
98
- selectorP3Rule.declarations[alias.localID] ??= alias.value;
99
- selectorRec2020Rule.declarations[alias.localID] ??= alias.value;
100
- }
101
- }
102
- }
103
- }
104
- // multi-value token
105
- else {
106
- const shorthand = generateShorthand({ $type: token.token.$type, localID });
107
- if (shorthand) {
108
- selectorRule.declarations[localID] = shorthand;
109
- }
110
- for (const [name, subvalue] of Object.entries(token.value)) {
111
- selectorRule.declarations[`${localID}-${name}`] = subvalue;
112
- }
113
- }
114
- // redeclare aliases so they have the correct scope
115
- for (const alias of aliasTokens) {
116
- if (alias.localID && typeof alias.value === 'string') {
117
- selectorAliasDeclarations[alias.localID] = alias.value;
118
- }
119
- }
120
- }
121
- // after selector has settled, add in aliases if there are no conflicts
122
- for (const [name, value] of Object.entries(selectorAliasDeclarations)) {
123
- selectorRule.declarations[name] ??= value;
124
- }
125
- }
126
- // add utility CSS
127
- if (utility && Object.keys(utility).length) {
128
- rules.push(...generateUtilityCSS(utility, getTransforms({ format: FORMAT_ID, mode: '.' })));
129
- }
130
- return printRules(rules);
131
- }
132
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/build/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import type { TokenTransformed } from '@terrazzo/parser';
2
- import type { CSSRule, UtilityCSSGroup } from '../lib.js';
3
- export default function generateUtilityCSS(groups: Record<UtilityCSSGroup, string[]>, tokens: TokenTransformed[]): CSSRule[];
4
- //# sourceMappingURL=utility-css.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utility-css.d.ts","sourceRoot":"","sources":["../../src/build/utility-css.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGzD,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAoB,MAAM,WAAW,CAAC;AAuB5E,MAAM,CAAC,OAAO,UAAU,kBAAkB,CACxC,MAAM,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC,EACzC,MAAM,EAAE,gBAAgB,EAAE,GACzB,OAAO,EAAE,CA2MX"}
@@ -1,215 +0,0 @@
1
- import { isTokenMatch, kebabCase } from '@terrazzo/token-tools';
2
- import { makeCSSVar } from '@terrazzo/token-tools/css';
3
- // micro-optimization: precompile all RegExs (which can be known) because dynamic compilation is a waste of resources
4
- const GROUP_REGEX = {
5
- bg: /(^bg-|-bg-)/,
6
- border: /(^border-|-border-)/,
7
- font: /(^font-|-font-)/,
8
- gap: /(^gap-|-gap-)/,
9
- m: /(^margin-|-margin-|)/,
10
- p: /(^padding-|-padding-|)/,
11
- shadow: /(^shadow-|-shadow-)/,
12
- text: /(^text-|-text-)/,
13
- };
14
- /** Make CSS class name from transformed token */
15
- function makeSelector(token, prefix, subgroup) {
16
- return `.${prefix}${subgroup || ''}-${kebabCase(token.token.id).replace(GROUP_REGEX[prefix], '')}`;
17
- }
18
- function makeVarValue(token) {
19
- return makeCSSVar(token.localID ?? token.token.id, { wrapVar: true });
20
- }
21
- export default function generateUtilityCSS(groups, tokens) {
22
- const output = [];
23
- const groupEntries = Object.entries(groups);
24
- groupEntries.sort((a, b) => a[0].localeCompare(b[0]));
25
- for (const [group, selectors] of groupEntries) {
26
- const matchingTokens = tokens.filter((token) => isTokenMatch(token.token.id, selectors));
27
- if (!matchingTokens.length) {
28
- // biome-ignore lint/suspicious/noConsole: intentional user log
29
- console.warn(`[@terrazzo/plugin-css] utility group "${group}" matched 0 tokens: ${JSON.stringify(selectors)}`);
30
- break;
31
- }
32
- switch (group) {
33
- case 'bg': {
34
- for (const token of matchingTokens) {
35
- const selector = makeSelector(token, 'bg');
36
- switch (token.token.$type) {
37
- case 'color': {
38
- output.push({ selectors: [selector], declarations: { 'background-color': makeVarValue(token) } });
39
- break;
40
- }
41
- case 'gradient': {
42
- output.push({
43
- selectors: [selector],
44
- declarations: {
45
- 'background-image': `linear-gradient(${makeCSSVar(token.localID ?? token.token.id, { wrapVar: true })})`,
46
- },
47
- });
48
- }
49
- }
50
- }
51
- break;
52
- }
53
- case 'border': {
54
- // ALL generic properties must come before specific properties
55
- for (const token of matchingTokens) {
56
- const property = {
57
- border: 'border',
58
- color: 'border-color',
59
- dimension: 'border-width',
60
- strokeStyle: 'border-style',
61
- }[token.token.$type];
62
- if (property) {
63
- output.push({
64
- selectors: [makeSelector(token, 'border')],
65
- declarations: { [property]: makeVarValue(token) },
66
- });
67
- }
68
- }
69
- // specific properties
70
- for (const token of matchingTokens) {
71
- for (const side of ['top', 'right', 'bottom', 'left']) {
72
- const property = {
73
- border: `border-${side}`,
74
- color: `border-${side}-color`,
75
- dimension: `border-${side}-width`,
76
- strokeStyle: `border-${side}-style`,
77
- }[token.token.$type];
78
- if (property) {
79
- output.push({
80
- selectors: [makeSelector(token, 'border', `-${side}`)],
81
- declarations: { [property]: makeVarValue(token) },
82
- });
83
- }
84
- }
85
- }
86
- break;
87
- }
88
- case 'font': {
89
- for (const token of matchingTokens) {
90
- const selector = makeSelector(token, 'font');
91
- if (token.token.$type === 'typography' && token.type === 'MULTI_VALUE') {
92
- const declarations = {};
93
- for (const k of Object.keys(token.value)) {
94
- declarations[k] = makeCSSVar(`${token.localID ?? token.token.id}-${k}`, { wrapVar: true });
95
- }
96
- output.push({ selectors: [selector], declarations });
97
- }
98
- else {
99
- const property = {
100
- dimension: 'font-size',
101
- fontFamily: 'font-family',
102
- fontWeight: 'font-weight',
103
- }[token.token.$type];
104
- if (property) {
105
- output.push({
106
- selectors: [selector],
107
- declarations: { [property]: makeVarValue(token) },
108
- });
109
- }
110
- }
111
- }
112
- break;
113
- }
114
- case 'layout': {
115
- const filteredTokens = matchingTokens.filter((t) => t.token.$type === 'dimension'); // only dimension tokens here
116
- // gap
117
- // ALL generic properties (gap) must come before specific properties (column-gap)
118
- for (const token of filteredTokens) {
119
- output.push({ selectors: [makeSelector(token, 'gap')], declarations: { gap: makeVarValue(token) } });
120
- }
121
- // specific properties
122
- for (const token of filteredTokens) {
123
- output.push({
124
- selectors: [makeSelector(token, 'gap', '-col')],
125
- declarations: { 'column-gap': makeVarValue(token) },
126
- });
127
- }
128
- // specific properties
129
- for (const token of filteredTokens) {
130
- output.push({
131
- selectors: [makeSelector(token, 'gap', '-row')],
132
- declarations: { 'row-gap': makeVarValue(token) },
133
- });
134
- }
135
- // margin/padding
136
- for (const prefix of ['m', 'p']) {
137
- const property = prefix === 'm' ? 'margin' : 'padding';
138
- // note: ALL generic properties (margin: [value]) MUST come before specific properties (margin-top: [value])
139
- // this is why we loop through all tokens so many times
140
- for (const token of filteredTokens) {
141
- output.push({
142
- selectors: [makeSelector(token, prefix, 'a')],
143
- declarations: { [property]: makeVarValue(token) },
144
- });
145
- }
146
- for (const token of filteredTokens) {
147
- const value = makeVarValue(token);
148
- output.push({
149
- selectors: [makeSelector(token, prefix, 'x')],
150
- declarations: { [`${property}-left`]: value, [`${property}-right`]: value },
151
- }, {
152
- selectors: [makeSelector(token, prefix, 'y')],
153
- declarations: { [`${property}-bottom`]: value, [`${property}-top`]: value },
154
- });
155
- }
156
- for (const side of ['top', 'right', 'bottom', 'left']) {
157
- for (const token of filteredTokens) {
158
- output.push({
159
- selectors: [makeSelector(token, prefix, side[0])],
160
- declarations: { [`${property}-${side}`]: makeVarValue(token) },
161
- });
162
- }
163
- }
164
- for (const token of filteredTokens) {
165
- const value = makeVarValue(token);
166
- output.push({ selectors: [makeSelector(token, prefix, 's')], declarations: { [`${property}-inline-start`]: value } }, { selectors: [makeSelector(token, prefix, 'e')], declarations: { [`${property}-inline-end`]: value } });
167
- }
168
- }
169
- break;
170
- }
171
- case 'shadow': {
172
- for (const token of matchingTokens) {
173
- if (token.token.$type === 'shadow') {
174
- output.push({
175
- selectors: [makeSelector(token, 'shadow')],
176
- declarations: { 'box-shadow': makeVarValue(token) },
177
- });
178
- }
179
- }
180
- break;
181
- }
182
- case 'text': {
183
- for (const token of matchingTokens) {
184
- const selector = makeSelector(token, 'text');
185
- const value = makeVarValue(token);
186
- switch (token.token.$type) {
187
- case 'color': {
188
- output.push({ selectors: [selector], declarations: { color: value } });
189
- break;
190
- }
191
- case 'gradient': {
192
- output.push({
193
- selectors: [selector],
194
- declarations: {
195
- background: `-webkit-linear-gradient(${value})`,
196
- '-webkit-background-clip': 'text',
197
- '-webkit-text-fill-color': 'transparent',
198
- },
199
- });
200
- break;
201
- }
202
- }
203
- }
204
- break;
205
- }
206
- default: {
207
- // biome-ignore lint/suspicious/noConsole: intentional user log
208
- console.warn(`[@terrazzo/plugin-css] unknown utility CSS group "${group}", ignoring`);
209
- break;
210
- }
211
- }
212
- }
213
- return output;
214
- }
215
- //# sourceMappingURL=utility-css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utility-css.js","sourceRoot":"","sources":["../../src/build/utility-css.ts"],"names":[],"mappings":"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"}
package/dist/lib.d.ts DELETED
@@ -1,57 +0,0 @@
1
- import type { TokenNormalized, TokenTransformed } from '@terrazzo/parser';
2
- export type UtilityCSSGroup = 'bg' | 'border' | 'font' | 'layout' | 'shadow' | 'text';
3
- export type UtilityCSSPrefix = 'bg' | 'border' | 'font' | 'gap' | 'm' | 'p' | 'shadow' | 'text';
4
- export declare const FORMAT_ID = "css";
5
- export declare const FILE_PREFIX = "/* -------------------------------------------\n * Autogenerated by \u26CB Terrazzo. DO NOT EDIT!\n * ------------------------------------------- */";
6
- export interface CSSPluginOptions {
7
- /**
8
- * Where to output CSS
9
- * @default "index.css"
10
- */
11
- filename?: string;
12
- /** Glob patterns to exclude tokens from output */
13
- exclude?: string[];
14
- /** Define mode selectors as media queries or CSS classes */
15
- modeSelectors?: ModeSelector[];
16
- /** Control the final CSS variable name */
17
- variableName?: (token: TokenNormalized) => string;
18
- /** Override certain token values */
19
- transform?: (token: TokenNormalized, mode: string) => TokenTransformed['value'];
20
- /** Generate utility CSS from groups */
21
- utility?: Record<UtilityCSSGroup, string[]>;
22
- /**
23
- * Output colors as hex-6/hex-8 instead of color() function
24
- * @default false
25
- */
26
- legacyHex?: boolean;
27
- /**
28
- * Skip generating any `.css` files (useful if you are consuming values in your own plugin and don’t need any `.css` files written to disk).
29
- * @default false
30
- */
31
- skipBuild?: boolean;
32
- /**
33
- * Set the base selector, like ":root" or ":host".
34
- * @default ":root"
35
- */
36
- baseSelector?: string;
37
- }
38
- export interface ModeSelector {
39
- /** The name of the mode to match */
40
- mode: string;
41
- /** Provide token IDs to match. Globs are allowed (e.g: `["color.*", "shadow.dark"]`) */
42
- tokens?: string[];
43
- /** Provide CSS selectors to generate. (e.g.: `["@media (prefers-color-scheme: dark)", "[data-color-theme='dark']"]` ) */
44
- selectors: string[];
45
- }
46
- export interface CSSRule {
47
- selectors: string[];
48
- nestedQuery?: string;
49
- declarations: Record<string, string>;
50
- }
51
- /** Convert CSSRules into a formatted, indented CSS string */
52
- export declare function printRules(rules: CSSRule[]): string;
53
- export interface GetRuleOptions {
54
- /** Combine a selector with parent selectors (e.g. if adding a @media-query within another selector list) */
55
- parentSelectors?: string[];
56
- }
57
- //# sourceMappingURL=lib.d.ts.map
package/dist/lib.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE1E,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEtF,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEhG,eAAO,MAAM,SAAS,QAAQ,CAAC;AAE/B,eAAO,MAAM,WAAW,0JAE0B,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B,0CAA0C;IAC1C,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,MAAM,CAAC;IAClD,oCAAoC;IACpC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,KAAK,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAChF,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,wFAAwF;IACxF,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,yHAAyH;IACzH,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAKD,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,6DAA6D;AAC7D,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAsBnD;AA8CD,MAAM,WAAW,cAAc;IAC7B,4GAA4G;IAC5G,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B"}
package/dist/lib.js DELETED
@@ -1,66 +0,0 @@
1
- export const FORMAT_ID = 'css';
2
- export const FILE_PREFIX = `/* -------------------------------------------
3
- * Autogenerated by ⛋ Terrazzo. DO NOT EDIT!
4
- * ------------------------------------------- */`;
5
- /** Convert CSSRules into a formatted, indented CSS string */
6
- export function printRules(rules) {
7
- const output = [];
8
- for (const rule of rules) {
9
- if (!rule.selectors.length || !Object.keys(rule.declarations).length) {
10
- continue;
11
- }
12
- const mqSelectors = [];
13
- const joinableSelectors = [];
14
- for (const s of rule.selectors) {
15
- (s.startsWith('@') ? mqSelectors : joinableSelectors).push(s);
16
- }
17
- // @media-query selectors get pushed individually
18
- for (const s of mqSelectors) {
19
- output.push(_printRule({ ...rule, selectors: [s] }));
20
- }
21
- // all other selectors get joined as one
22
- if (joinableSelectors.length) {
23
- output.push(_printRule({ ...rule, selectors: joinableSelectors }));
24
- }
25
- }
26
- return output.join('\n\n');
27
- }
28
- function _printRule(rule) {
29
- const output = [];
30
- const isMediaQuery = rule.selectors.some((s) => s.startsWith('@'));
31
- let indent = '';
32
- // if both levels are media queries, preserve order
33
- if (rule.nestedQuery && isMediaQuery) {
34
- output.push(`${indent}${rule.selectors.join(`,\n${indent}`)} {`);
35
- indent += ' ';
36
- output.push(`${indent}${rule.nestedQuery} {`);
37
- }
38
- // otherwise if nested query exists but parens aren’t media queries, reverse order (media queries on top)
39
- else if (rule.nestedQuery && !isMediaQuery) {
40
- output.push(`${indent}${rule.nestedQuery} {`);
41
- indent += ' ';
42
- output.push(`${indent}${rule.selectors.join(`,\n${indent}`)} {`);
43
- }
44
- // if no media queries, just print selectors
45
- else {
46
- output.push(`${indent}${rule.selectors.join(`,\n${indent}`)} {`);
47
- }
48
- indent += ' ';
49
- // note: this is ONLY dependent on whether the top level is a media query (ignores nestedQuery)
50
- if (isMediaQuery) {
51
- output.push(`${indent}:root {`);
52
- indent += ' ';
53
- }
54
- const declarations = Object.entries(rule.declarations);
55
- declarations.sort((a, b) => a[0].localeCompare(b[0], 'en-us', { numeric: true }));
56
- for (const [k, v] of declarations) {
57
- output.push(`${indent}${k}: ${v};`);
58
- }
59
- // base closing brackets on indent level
60
- while (indent !== '') {
61
- indent = indent.substring(0, indent.length - 2);
62
- output.push(`${indent}}`);
63
- }
64
- return output.join('\n');
65
- }
66
- //# sourceMappingURL=lib.js.map
package/dist/lib.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"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"}