@digdir/designsystemet 1.5.0 → 1.6.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.
- package/configs/test-tokens.config.json +15 -1
- package/dist/bin/config.js +14 -3
- package/dist/bin/designsystemet.js +105 -43
- package/dist/config.schema.json +52 -0
- package/dist/src/colors/colorMetadata.d.ts +1 -0
- package/dist/src/colors/colorMetadata.d.ts.map +1 -1
- package/dist/src/colors/colorMetadata.js +2 -0
- package/dist/src/colors/index.js +2 -0
- package/dist/src/colors/theme.js +1 -0
- package/dist/src/config.d.ts +70 -0
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +12 -1
- package/dist/src/index.js +90 -37
- package/dist/src/scripts/createJsonSchema.js +12 -1
- package/dist/src/scripts/update-preview-tokens.js +80 -28
- package/dist/src/tokens/build.js +45 -27
- package/dist/src/tokens/create/generators/$designsystemet.js +9 -9
- package/dist/src/tokens/create/generators/color.d.ts +2 -1
- package/dist/src/tokens/create/generators/color.d.ts.map +1 -1
- package/dist/src/tokens/create/generators/color.js +40 -6
- package/dist/src/tokens/create/write.js +9 -9
- package/dist/src/tokens/create.js +44 -10
- package/dist/src/tokens/format.js +89 -37
- package/dist/src/tokens/index.js +89 -37
- package/dist/src/tokens/process/configs/color.js +31 -13
- package/dist/src/tokens/process/configs/semantic.js +31 -13
- package/dist/src/tokens/process/configs/size-mode.js +31 -13
- package/dist/src/tokens/process/configs/size.js +31 -13
- package/dist/src/tokens/process/configs/type-scale.js +31 -13
- package/dist/src/tokens/process/configs/typography.js +31 -13
- package/dist/src/tokens/process/configs.js +36 -18
- package/dist/src/tokens/process/formats/css/color.js +31 -13
- package/dist/src/tokens/process/formats/css/semantic.js +31 -13
- package/dist/src/tokens/process/formats/css/size-mode.js +31 -13
- package/dist/src/tokens/process/formats/css/size.d.ts +4 -0
- package/dist/src/tokens/process/formats/css/size.d.ts.map +1 -1
- package/dist/src/tokens/process/formats/css/size.js +33 -14
- package/dist/src/tokens/process/formats/css/type-scale.d.ts.map +1 -1
- package/dist/src/tokens/process/formats/css/type-scale.js +31 -13
- package/dist/src/tokens/process/formats/css/typography.js +33 -15
- package/dist/src/tokens/process/formats/css.js +31 -13
- package/dist/src/tokens/process/output/declarations.js +40 -22
- package/dist/src/tokens/process/output/theme.js +9 -9
- package/dist/src/tokens/process/platform.js +36 -18
- package/dist/src/tokens/process/utils/getMultidimensionalThemes.js +31 -13
- package/dist/src/tokens/types.d.ts +1 -1
- package/dist/src/tokens/types.d.ts.map +1 -1
- package/package.json +9 -9
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ColorScheme } from '../../../colors/types.js';
|
|
2
|
+
import type { ColorOverrideSchema } from '../../../config.js';
|
|
2
3
|
import type { Colors, TokenSet } from '../../types.js';
|
|
3
|
-
export declare const generateColorScheme: (themeName: string, colorScheme: ColorScheme, colors: Colors) => TokenSet;
|
|
4
|
+
export declare const generateColorScheme: (themeName: string, colorScheme: ColorScheme, colors: Colors, overrides?: ColorOverrideSchema) => TokenSet;
|
|
4
5
|
export declare const generateColorGlobal: (colorScheme: ColorScheme) => TokenSet;
|
|
5
6
|
//# sourceMappingURL=color.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../../../src/tokens/create/generators/color.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../../../src/tokens/create/generators/color.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAS,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAgBvD,eAAO,MAAM,mBAAmB,GAC9B,WAAW,MAAM,EACjB,aAAa,WAAW,EACxB,QAAQ,MAAM,EACd,YAAY,mBAAmB,KAC9B,QAkDF,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,aAAa,WAAW,KAAG,QAgB9D,CAAC"}
|
|
@@ -253,6 +253,7 @@ var colorMetadata = {
|
|
|
253
253
|
}
|
|
254
254
|
};
|
|
255
255
|
var colorMetadataByNumber = R.indexBy((metadata) => metadata.number, Object.values(colorMetadata));
|
|
256
|
+
var colorNames = Object.keys(colorMetadata);
|
|
256
257
|
|
|
257
258
|
// src/colors/theme.ts
|
|
258
259
|
import chroma2 from "chroma-js";
|
|
@@ -333,18 +334,51 @@ var generateColorContrast = (color, type) => {
|
|
|
333
334
|
};
|
|
334
335
|
|
|
335
336
|
// src/tokens/create/generators/color.ts
|
|
336
|
-
var generateColor = (colorArray) => {
|
|
337
|
+
var generateColor = (colorArray, overrides) => {
|
|
337
338
|
const obj = {};
|
|
338
339
|
const $type = "color";
|
|
339
340
|
for (const index in colorArray) {
|
|
340
|
-
|
|
341
|
+
const position = Number(index) + 1;
|
|
342
|
+
const overrideValue = overrides?.[position];
|
|
343
|
+
obj[position] = {
|
|
344
|
+
$type,
|
|
345
|
+
$value: overrideValue || colorArray[index].hex
|
|
346
|
+
};
|
|
341
347
|
}
|
|
342
348
|
return obj;
|
|
343
349
|
};
|
|
344
|
-
var generateColorScheme = (themeName, colorScheme, colors) => {
|
|
345
|
-
const
|
|
346
|
-
|
|
347
|
-
|
|
350
|
+
var generateColorScheme = (themeName, colorScheme, colors, overrides) => {
|
|
351
|
+
const createColorOverrides = (colorName) => {
|
|
352
|
+
if (!overrides?.colors || !(colorName in overrides.colors)) {
|
|
353
|
+
return void 0;
|
|
354
|
+
}
|
|
355
|
+
const colorOverrides = overrides.colors[colorName];
|
|
356
|
+
const positionOverrides = {};
|
|
357
|
+
Object.entries(colorOverrides).forEach(([semanticTokenName, modeOverrides]) => {
|
|
358
|
+
const position = colorMetadata[semanticTokenName].number;
|
|
359
|
+
if (position) {
|
|
360
|
+
let overrideValue;
|
|
361
|
+
if (colorScheme === "light" && modeOverrides.light) {
|
|
362
|
+
overrideValue = modeOverrides.light;
|
|
363
|
+
} else if (colorScheme === "dark" && modeOverrides.dark) {
|
|
364
|
+
overrideValue = modeOverrides.dark;
|
|
365
|
+
}
|
|
366
|
+
if (overrideValue) {
|
|
367
|
+
positionOverrides[position] = overrideValue;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
});
|
|
371
|
+
return Object.keys(positionOverrides).length > 0 ? positionOverrides : void 0;
|
|
372
|
+
};
|
|
373
|
+
const main = R3.mapObjIndexed(
|
|
374
|
+
(color, colorName) => generateColor(generateColorScale(color, colorScheme), createColorOverrides(colorName)),
|
|
375
|
+
colors.main
|
|
376
|
+
);
|
|
377
|
+
const support = R3.mapObjIndexed(
|
|
378
|
+
(color, colorName) => generateColor(generateColorScale(color, colorScheme), createColorOverrides(colorName)),
|
|
379
|
+
colors.support
|
|
380
|
+
);
|
|
381
|
+
const neutral = generateColor(generateColorScale(colors.neutral, colorScheme), createColorOverrides("neutral"));
|
|
348
382
|
return {
|
|
349
383
|
[themeName]: {
|
|
350
384
|
...main,
|
|
@@ -46,11 +46,11 @@ var readFile = async (path2, dry, allowFileNotFound) => {
|
|
|
46
46
|
// package.json
|
|
47
47
|
var package_default = {
|
|
48
48
|
name: "@digdir/designsystemet",
|
|
49
|
-
version: "1.
|
|
49
|
+
version: "1.6.0",
|
|
50
50
|
description: "CLI for Designsystemet",
|
|
51
51
|
author: "Designsystemet team",
|
|
52
52
|
engines: {
|
|
53
|
-
node: ">=
|
|
53
|
+
node: ">=20 <25"
|
|
54
54
|
},
|
|
55
55
|
repository: {
|
|
56
56
|
type: "git",
|
|
@@ -98,7 +98,7 @@ var package_default = {
|
|
|
98
98
|
"test:tokens-build-config-tailwind": "pnpm run designsystemet tokens build -t ./temp/config/design-tokens -o ./temp/config/build --clean --experimental-tailwind",
|
|
99
99
|
"test:tokens-create-and-build-options": "pnpm test:tokens-create-options && pnpm test:tokens-build",
|
|
100
100
|
"test:tokens-create-and-build-config": "pnpm test:tokens-create-config && pnpm test:tokens-build-config",
|
|
101
|
-
test: "pnpm test:tokens-create-and-build-options && pnpm test:tokens-create-and-build-config",
|
|
101
|
+
test: "node -v && pnpm test:tokens-create-and-build-options && pnpm test:tokens-create-and-build-config",
|
|
102
102
|
"digdir:tokens-build": "pnpm run designsystemet tokens build -t ../../internal/design-tokens -o ../../packages/theme/brand --clean --experimental-tailwind",
|
|
103
103
|
"digdir:tokens-create": "pnpm run designsystemet tokens create --config ./configs/digdir.config.json",
|
|
104
104
|
"update:template": "tsx ./src/scripts/update-template.ts",
|
|
@@ -113,7 +113,7 @@ var package_default = {
|
|
|
113
113
|
"change-case": "^5.4.4",
|
|
114
114
|
"chroma-js": "^3.1.2",
|
|
115
115
|
"colorjs.io": "^0.6.0-alpha.1",
|
|
116
|
-
commander: "^14.0.
|
|
116
|
+
commander: "^14.0.1",
|
|
117
117
|
"fast-glob": "^3.3.3",
|
|
118
118
|
hsluv: "^1.0.1",
|
|
119
119
|
"object-hash": "^3.0.0",
|
|
@@ -121,18 +121,18 @@ var package_default = {
|
|
|
121
121
|
postcss: "^8.5.6",
|
|
122
122
|
ramda: "^0.31.3",
|
|
123
123
|
"style-dictionary": "^5.0.4",
|
|
124
|
-
zod: "^4.1.
|
|
125
|
-
"zod-validation-error": "^4.0.
|
|
124
|
+
zod: "^4.1.11",
|
|
125
|
+
"zod-validation-error": "^4.0.2"
|
|
126
126
|
},
|
|
127
127
|
devDependencies: {
|
|
128
128
|
"@tokens-studio/types": "0.5.2",
|
|
129
129
|
"@types/apca-w3": "^0.1.3",
|
|
130
130
|
"@types/chroma-js": "^3.1.1",
|
|
131
131
|
"@types/fs-extra": "^11.0.4",
|
|
132
|
-
"@types/node": "^22.18.
|
|
132
|
+
"@types/node": "^22.18.6",
|
|
133
133
|
"@types/object-hash": "^3.0.6",
|
|
134
|
-
"@types/ramda": "^0.31.
|
|
135
|
-
"fs-extra": "^11.3.
|
|
134
|
+
"@types/ramda": "^0.31.1",
|
|
135
|
+
"fs-extra": "^11.3.2",
|
|
136
136
|
tslib: "^2.8.1",
|
|
137
137
|
tsup: "^8.5.0",
|
|
138
138
|
tsx: "^4.20.5",
|
|
@@ -1248,6 +1248,7 @@ var colorMetadata = {
|
|
|
1248
1248
|
}
|
|
1249
1249
|
};
|
|
1250
1250
|
var colorMetadataByNumber = R2.indexBy((metadata) => metadata.number, Object.values(colorMetadata));
|
|
1251
|
+
var colorNames = Object.keys(colorMetadata);
|
|
1251
1252
|
|
|
1252
1253
|
// src/colors/theme.ts
|
|
1253
1254
|
import chroma2 from "chroma-js";
|
|
@@ -1328,18 +1329,51 @@ var generateColorContrast = (color, type) => {
|
|
|
1328
1329
|
};
|
|
1329
1330
|
|
|
1330
1331
|
// src/tokens/create/generators/color.ts
|
|
1331
|
-
var generateColor = (colorArray) => {
|
|
1332
|
+
var generateColor = (colorArray, overrides) => {
|
|
1332
1333
|
const obj = {};
|
|
1333
1334
|
const $type = "color";
|
|
1334
1335
|
for (const index in colorArray) {
|
|
1335
|
-
|
|
1336
|
+
const position = Number(index) + 1;
|
|
1337
|
+
const overrideValue = overrides?.[position];
|
|
1338
|
+
obj[position] = {
|
|
1339
|
+
$type,
|
|
1340
|
+
$value: overrideValue || colorArray[index].hex
|
|
1341
|
+
};
|
|
1336
1342
|
}
|
|
1337
1343
|
return obj;
|
|
1338
1344
|
};
|
|
1339
|
-
var generateColorScheme = (themeName, colorScheme, colors) => {
|
|
1340
|
-
const
|
|
1341
|
-
|
|
1342
|
-
|
|
1345
|
+
var generateColorScheme = (themeName, colorScheme, colors, overrides) => {
|
|
1346
|
+
const createColorOverrides = (colorName) => {
|
|
1347
|
+
if (!overrides?.colors || !(colorName in overrides.colors)) {
|
|
1348
|
+
return void 0;
|
|
1349
|
+
}
|
|
1350
|
+
const colorOverrides = overrides.colors[colorName];
|
|
1351
|
+
const positionOverrides = {};
|
|
1352
|
+
Object.entries(colorOverrides).forEach(([semanticTokenName, modeOverrides]) => {
|
|
1353
|
+
const position = colorMetadata[semanticTokenName].number;
|
|
1354
|
+
if (position) {
|
|
1355
|
+
let overrideValue;
|
|
1356
|
+
if (colorScheme === "light" && modeOverrides.light) {
|
|
1357
|
+
overrideValue = modeOverrides.light;
|
|
1358
|
+
} else if (colorScheme === "dark" && modeOverrides.dark) {
|
|
1359
|
+
overrideValue = modeOverrides.dark;
|
|
1360
|
+
}
|
|
1361
|
+
if (overrideValue) {
|
|
1362
|
+
positionOverrides[position] = overrideValue;
|
|
1363
|
+
}
|
|
1364
|
+
}
|
|
1365
|
+
});
|
|
1366
|
+
return Object.keys(positionOverrides).length > 0 ? positionOverrides : void 0;
|
|
1367
|
+
};
|
|
1368
|
+
const main = R4.mapObjIndexed(
|
|
1369
|
+
(color, colorName) => generateColor(generateColorScale(color, colorScheme), createColorOverrides(colorName)),
|
|
1370
|
+
colors.main
|
|
1371
|
+
);
|
|
1372
|
+
const support = R4.mapObjIndexed(
|
|
1373
|
+
(color, colorName) => generateColor(generateColorScale(color, colorScheme), createColorOverrides(colorName)),
|
|
1374
|
+
colors.support
|
|
1375
|
+
);
|
|
1376
|
+
const neutral = generateColor(generateColorScale(colors.neutral, colorScheme), createColorOverrides("neutral"));
|
|
1343
1377
|
return {
|
|
1344
1378
|
[themeName]: {
|
|
1345
1379
|
...main,
|
|
@@ -1804,8 +1838,8 @@ var generateSemantic = (colors) => {
|
|
|
1804
1838
|
["main-color", mainColorNames],
|
|
1805
1839
|
["support-color", supportColorNames]
|
|
1806
1840
|
];
|
|
1807
|
-
for (const [colorCategory,
|
|
1808
|
-
for (const colorName of
|
|
1841
|
+
for (const [colorCategory, colorNames2] of categories) {
|
|
1842
|
+
for (const colorName of colorNames2) {
|
|
1809
1843
|
const category = colorCategory.replace("-color", "");
|
|
1810
1844
|
const customColorTokens = {
|
|
1811
1845
|
color: {
|
|
@@ -2061,7 +2095,7 @@ var cliOptions = {
|
|
|
2061
2095
|
}
|
|
2062
2096
|
};
|
|
2063
2097
|
var createTokens = async (opts) => {
|
|
2064
|
-
const { colors, typography, name, borderRadius } = opts;
|
|
2098
|
+
const { colors, typography, name, borderRadius, overrides } = opts;
|
|
2065
2099
|
const colorSchemes = ["light", "dark"];
|
|
2066
2100
|
const semantic = generateSemantic(colors);
|
|
2067
2101
|
const tokenSets = new Map([
|
|
@@ -2079,7 +2113,7 @@ var createTokens = async (opts) => {
|
|
|
2079
2113
|
[`primitives/modes/typography/secondary/${name}`, generateTypography(name, typography)],
|
|
2080
2114
|
...colorSchemes.flatMap((scheme) => [
|
|
2081
2115
|
[`primitives/modes/color-scheme/${scheme}/global`, generateColorGlobal(scheme)],
|
|
2082
|
-
[`primitives/modes/color-scheme/${scheme}/${name}`, generateColorScheme(name, scheme, colors)]
|
|
2116
|
+
[`primitives/modes/color-scheme/${scheme}/${name}`, generateColorScheme(name, scheme, colors, overrides)]
|
|
2083
2117
|
]),
|
|
2084
2118
|
[`themes/${name}`, generateTheme(colors, name, borderRadius)],
|
|
2085
2119
|
["semantic/color", semantic.color],
|
|
@@ -1582,6 +1582,7 @@ var colorMetadata = {
|
|
|
1582
1582
|
}
|
|
1583
1583
|
};
|
|
1584
1584
|
var colorMetadataByNumber = R2.indexBy((metadata) => metadata.number, Object.values(colorMetadata));
|
|
1585
|
+
var colorNames = Object.keys(colorMetadata);
|
|
1585
1586
|
|
|
1586
1587
|
// src/colors/theme.ts
|
|
1587
1588
|
import chroma2 from "chroma-js";
|
|
@@ -1662,18 +1663,51 @@ var generateColorContrast = (color, type) => {
|
|
|
1662
1663
|
};
|
|
1663
1664
|
|
|
1664
1665
|
// src/tokens/create/generators/color.ts
|
|
1665
|
-
var generateColor = (colorArray) => {
|
|
1666
|
+
var generateColor = (colorArray, overrides) => {
|
|
1666
1667
|
const obj = {};
|
|
1667
1668
|
const $type = "color";
|
|
1668
1669
|
for (const index in colorArray) {
|
|
1669
|
-
|
|
1670
|
+
const position = Number(index) + 1;
|
|
1671
|
+
const overrideValue = overrides?.[position];
|
|
1672
|
+
obj[position] = {
|
|
1673
|
+
$type,
|
|
1674
|
+
$value: overrideValue || colorArray[index].hex
|
|
1675
|
+
};
|
|
1670
1676
|
}
|
|
1671
1677
|
return obj;
|
|
1672
1678
|
};
|
|
1673
|
-
var generateColorScheme = (themeName, colorScheme2, colors) => {
|
|
1674
|
-
const
|
|
1675
|
-
|
|
1676
|
-
|
|
1679
|
+
var generateColorScheme = (themeName, colorScheme2, colors, overrides) => {
|
|
1680
|
+
const createColorOverrides = (colorName) => {
|
|
1681
|
+
if (!overrides?.colors || !(colorName in overrides.colors)) {
|
|
1682
|
+
return void 0;
|
|
1683
|
+
}
|
|
1684
|
+
const colorOverrides = overrides.colors[colorName];
|
|
1685
|
+
const positionOverrides = {};
|
|
1686
|
+
Object.entries(colorOverrides).forEach(([semanticTokenName, modeOverrides]) => {
|
|
1687
|
+
const position = colorMetadata[semanticTokenName].number;
|
|
1688
|
+
if (position) {
|
|
1689
|
+
let overrideValue;
|
|
1690
|
+
if (colorScheme2 === "light" && modeOverrides.light) {
|
|
1691
|
+
overrideValue = modeOverrides.light;
|
|
1692
|
+
} else if (colorScheme2 === "dark" && modeOverrides.dark) {
|
|
1693
|
+
overrideValue = modeOverrides.dark;
|
|
1694
|
+
}
|
|
1695
|
+
if (overrideValue) {
|
|
1696
|
+
positionOverrides[position] = overrideValue;
|
|
1697
|
+
}
|
|
1698
|
+
}
|
|
1699
|
+
});
|
|
1700
|
+
return Object.keys(positionOverrides).length > 0 ? positionOverrides : void 0;
|
|
1701
|
+
};
|
|
1702
|
+
const main = R4.mapObjIndexed(
|
|
1703
|
+
(color, colorName) => generateColor(generateColorScale(color, colorScheme2), createColorOverrides(colorName)),
|
|
1704
|
+
colors.main
|
|
1705
|
+
);
|
|
1706
|
+
const support = R4.mapObjIndexed(
|
|
1707
|
+
(color, colorName) => generateColor(generateColorScale(color, colorScheme2), createColorOverrides(colorName)),
|
|
1708
|
+
colors.support
|
|
1709
|
+
);
|
|
1710
|
+
const neutral = generateColor(generateColorScale(colors.neutral, colorScheme2), createColorOverrides("neutral"));
|
|
1677
1711
|
return {
|
|
1678
1712
|
[themeName]: {
|
|
1679
1713
|
...main,
|
|
@@ -2138,8 +2172,8 @@ var generateSemantic = (colors) => {
|
|
|
2138
2172
|
["main-color", mainColorNames],
|
|
2139
2173
|
["support-color", supportColorNames]
|
|
2140
2174
|
];
|
|
2141
|
-
for (const [colorCategory2,
|
|
2142
|
-
for (const colorName of
|
|
2175
|
+
for (const [colorCategory2, colorNames2] of categories) {
|
|
2176
|
+
for (const colorName of colorNames2) {
|
|
2143
2177
|
const category = colorCategory2.replace("-color", "");
|
|
2144
2178
|
const customColorTokens = {
|
|
2145
2179
|
color: {
|
|
@@ -2379,7 +2413,7 @@ var generateTypography = (themeName, { fontFamily }) => {
|
|
|
2379
2413
|
|
|
2380
2414
|
// src/tokens/create.ts
|
|
2381
2415
|
var createTokens = async (opts) => {
|
|
2382
|
-
const { colors, typography: typography2, name, borderRadius } = opts;
|
|
2416
|
+
const { colors, typography: typography2, name, borderRadius, overrides } = opts;
|
|
2383
2417
|
const colorSchemes = ["light", "dark"];
|
|
2384
2418
|
const semantic2 = generateSemantic(colors);
|
|
2385
2419
|
const tokenSets = new Map([
|
|
@@ -2397,7 +2431,7 @@ var createTokens = async (opts) => {
|
|
|
2397
2431
|
[`primitives/modes/typography/secondary/${name}`, generateTypography(name, typography2)],
|
|
2398
2432
|
...colorSchemes.flatMap((scheme) => [
|
|
2399
2433
|
[`primitives/modes/color-scheme/${scheme}/global`, generateColorGlobal(scheme)],
|
|
2400
|
-
[`primitives/modes/color-scheme/${scheme}/${name}`, generateColorScheme(name, scheme, colors)]
|
|
2434
|
+
[`primitives/modes/color-scheme/${scheme}/${name}`, generateColorScheme(name, scheme, colors, overrides)]
|
|
2401
2435
|
]),
|
|
2402
2436
|
[`themes/${name}`, generateTheme(colors, name, borderRadius)],
|
|
2403
2437
|
["semantic/color", semantic2.color],
|
|
@@ -2417,11 +2451,11 @@ import * as R8 from "ramda";
|
|
|
2417
2451
|
// package.json
|
|
2418
2452
|
var package_default = {
|
|
2419
2453
|
name: "@digdir/designsystemet",
|
|
2420
|
-
version: "1.
|
|
2454
|
+
version: "1.6.0",
|
|
2421
2455
|
description: "CLI for Designsystemet",
|
|
2422
2456
|
author: "Designsystemet team",
|
|
2423
2457
|
engines: {
|
|
2424
|
-
node: ">=
|
|
2458
|
+
node: ">=20 <25"
|
|
2425
2459
|
},
|
|
2426
2460
|
repository: {
|
|
2427
2461
|
type: "git",
|
|
@@ -2469,7 +2503,7 @@ var package_default = {
|
|
|
2469
2503
|
"test:tokens-build-config-tailwind": "pnpm run designsystemet tokens build -t ./temp/config/design-tokens -o ./temp/config/build --clean --experimental-tailwind",
|
|
2470
2504
|
"test:tokens-create-and-build-options": "pnpm test:tokens-create-options && pnpm test:tokens-build",
|
|
2471
2505
|
"test:tokens-create-and-build-config": "pnpm test:tokens-create-config && pnpm test:tokens-build-config",
|
|
2472
|
-
test: "pnpm test:tokens-create-and-build-options && pnpm test:tokens-create-and-build-config",
|
|
2506
|
+
test: "node -v && pnpm test:tokens-create-and-build-options && pnpm test:tokens-create-and-build-config",
|
|
2473
2507
|
"digdir:tokens-build": "pnpm run designsystemet tokens build -t ../../internal/design-tokens -o ../../packages/theme/brand --clean --experimental-tailwind",
|
|
2474
2508
|
"digdir:tokens-create": "pnpm run designsystemet tokens create --config ./configs/digdir.config.json",
|
|
2475
2509
|
"update:template": "tsx ./src/scripts/update-template.ts",
|
|
@@ -2484,7 +2518,7 @@ var package_default = {
|
|
|
2484
2518
|
"change-case": "^5.4.4",
|
|
2485
2519
|
"chroma-js": "^3.1.2",
|
|
2486
2520
|
"colorjs.io": "^0.6.0-alpha.1",
|
|
2487
|
-
commander: "^14.0.
|
|
2521
|
+
commander: "^14.0.1",
|
|
2488
2522
|
"fast-glob": "^3.3.3",
|
|
2489
2523
|
hsluv: "^1.0.1",
|
|
2490
2524
|
"object-hash": "^3.0.0",
|
|
@@ -2492,18 +2526,18 @@ var package_default = {
|
|
|
2492
2526
|
postcss: "^8.5.6",
|
|
2493
2527
|
ramda: "^0.31.3",
|
|
2494
2528
|
"style-dictionary": "^5.0.4",
|
|
2495
|
-
zod: "^4.1.
|
|
2496
|
-
"zod-validation-error": "^4.0.
|
|
2529
|
+
zod: "^4.1.11",
|
|
2530
|
+
"zod-validation-error": "^4.0.2"
|
|
2497
2531
|
},
|
|
2498
2532
|
devDependencies: {
|
|
2499
2533
|
"@tokens-studio/types": "0.5.2",
|
|
2500
2534
|
"@types/apca-w3": "^0.1.3",
|
|
2501
2535
|
"@types/chroma-js": "^3.1.1",
|
|
2502
2536
|
"@types/fs-extra": "^11.0.4",
|
|
2503
|
-
"@types/node": "^22.18.
|
|
2537
|
+
"@types/node": "^22.18.6",
|
|
2504
2538
|
"@types/object-hash": "^3.0.6",
|
|
2505
|
-
"@types/ramda": "^0.31.
|
|
2506
|
-
"fs-extra": "^11.3.
|
|
2539
|
+
"@types/ramda": "^0.31.1",
|
|
2540
|
+
"fs-extra": "^11.3.2",
|
|
2507
2541
|
tslib: "^2.8.1",
|
|
2508
2542
|
tsup: "^8.5.0",
|
|
2509
2543
|
tsx: "^4.20.5",
|
|
@@ -2566,11 +2600,11 @@ function isColorCategoryToken(token, category) {
|
|
|
2566
2600
|
var isDigit = (s) => /^\d+$/.test(s);
|
|
2567
2601
|
function traverseObj(obj, fn) {
|
|
2568
2602
|
for (const key in obj) {
|
|
2569
|
-
const
|
|
2570
|
-
if (
|
|
2571
|
-
fn.apply(null, [obj, key,
|
|
2572
|
-
if (typeof
|
|
2573
|
-
traverseObj(
|
|
2603
|
+
const prop3 = obj[key];
|
|
2604
|
+
if (prop3 != null) {
|
|
2605
|
+
fn.apply(null, [obj, key, prop3]);
|
|
2606
|
+
if (typeof prop3 === "object") {
|
|
2607
|
+
traverseObj(prop3, fn);
|
|
2574
2608
|
}
|
|
2575
2609
|
}
|
|
2576
2610
|
}
|
|
@@ -3101,13 +3135,33 @@ ${content}
|
|
|
3101
3135
|
// src/tokens/process/formats/css/type-scale.ts
|
|
3102
3136
|
import * as R15 from "ramda";
|
|
3103
3137
|
import { createPropertyFormatter as createPropertyFormatter6 } from "style-dictionary/utils";
|
|
3104
|
-
var
|
|
3138
|
+
var isTypographyFontFamilyToken = R15.allPass([
|
|
3105
3139
|
R15.pathSatisfies(R15.includes("typography"), ["path"]),
|
|
3106
3140
|
R15.pathSatisfies(R15.includes("fontFamily"), ["path"])
|
|
3107
3141
|
]);
|
|
3108
|
-
|
|
3109
|
-
|
|
3110
|
-
|
|
3142
|
+
var formatTypographySizeToken = (format, token) => {
|
|
3143
|
+
const [name, value] = format(token).replace(/;$/, "").split(": ");
|
|
3144
|
+
let calc;
|
|
3145
|
+
let round;
|
|
3146
|
+
if (R15.startsWith(["font-size"], token.path)) {
|
|
3147
|
+
calc = `calc(${value} * var(--_ds-font-size-factor))`;
|
|
3148
|
+
round = `round(${calc}, 1px)`;
|
|
3149
|
+
} else {
|
|
3150
|
+
calc = value;
|
|
3151
|
+
}
|
|
3152
|
+
return { name, calc, round: round ?? calc };
|
|
3153
|
+
};
|
|
3154
|
+
var formatTypographySizeTokens = (format, tokens) => R15.reduce(
|
|
3155
|
+
(acc, token) => {
|
|
3156
|
+
const { name, calc, round } = formatTypographySizeToken(format, token);
|
|
3157
|
+
acc.tokens.push(token);
|
|
3158
|
+
acc.calc.push(`${name}: ${calc};`);
|
|
3159
|
+
acc.round.push(`${name}: ${round};`);
|
|
3160
|
+
return acc;
|
|
3161
|
+
},
|
|
3162
|
+
{ tokens: [], calc: [], round: [] },
|
|
3163
|
+
tokens
|
|
3164
|
+
);
|
|
3111
3165
|
var typeScale = {
|
|
3112
3166
|
name: "ds/css-type-scale",
|
|
3113
3167
|
format: async ({ dictionary, file, options, platform }) => {
|
|
@@ -3120,18 +3174,16 @@ var typeScale = {
|
|
|
3120
3174
|
format: "css",
|
|
3121
3175
|
usesDtcg
|
|
3122
3176
|
});
|
|
3123
|
-
const filteredTokens = R15.reject(
|
|
3124
|
-
const
|
|
3125
|
-
const formattedMap =
|
|
3126
|
-
token,
|
|
3127
|
-
formatted:
|
|
3177
|
+
const filteredTokens = R15.reject(R15.anyPass([isTypographyFontFamilyToken]), dictionary.allTokens);
|
|
3178
|
+
const formattedTokens = formatTypographySizeTokens(format, filteredTokens);
|
|
3179
|
+
const formattedMap = formattedTokens.round.map((t, i) => ({
|
|
3180
|
+
token: formattedTokens.tokens[i],
|
|
3181
|
+
formatted: t
|
|
3128
3182
|
}));
|
|
3129
3183
|
buildOptions.buildTokenFormats[destination] = formattedMap;
|
|
3130
|
-
const formattedTokens = formattedMap.map(R15.prop("formatted")).join("\n");
|
|
3131
3184
|
const sizeFactor = ` --_ds-font-size-factor: calc(var(--ds-size-mode-font-size) / (var(--ds-size-base) / ${basePxFontSize}));`;
|
|
3132
3185
|
const content = `${selector} {
|
|
3133
|
-
${sizeFactor}
|
|
3134
|
-
${formattedTokens}
|
|
3186
|
+
${sizeFactor}${sizingTemplate(formattedTokens)}
|
|
3135
3187
|
}`;
|
|
3136
3188
|
const body = R15.isNotNil(layer) ? `@layer ${layer} {
|
|
3137
3189
|
${content}
|
|
@@ -3344,7 +3396,7 @@ var sizeModeVariables = ({ theme, size: size2 }) => {
|
|
|
3344
3396
|
};
|
|
3345
3397
|
|
|
3346
3398
|
// src/tokens/process/configs/type-scale.ts
|
|
3347
|
-
var typeScaleVariables = ({ theme
|
|
3399
|
+
var typeScaleVariables = ({ theme }) => {
|
|
3348
3400
|
const selector = ":root, [data-size]";
|
|
3349
3401
|
const layer = `ds.theme.type-scale`;
|
|
3350
3402
|
return {
|