@digdir/designsystemet 1.8.0 → 1.10.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 (51) hide show
  1. package/configs/test-tokens.config.json +10 -0
  2. package/dist/bin/config.js +12 -1
  3. package/dist/bin/designsystemet.js +56 -22
  4. package/dist/{color.base.template-QGZJKXMN.json → color.base.template-Z7YWN2TF.json} +2 -2
  5. package/dist/config.schema.json +63 -30
  6. package/dist/src/config.d.ts +30 -0
  7. package/dist/src/config.d.ts.map +1 -1
  8. package/dist/src/config.js +12 -1
  9. package/dist/src/index.js +56 -22
  10. package/dist/src/scripts/createJsonSchema.js +12 -1
  11. package/dist/src/scripts/update-preview-tokens.js +50 -58
  12. package/dist/src/scripts/update-template.js +12 -2
  13. package/dist/src/tokens/build.js +14 -17
  14. package/dist/src/tokens/create/generators/$designsystemet.js +7 -16
  15. package/dist/src/tokens/create/generators/color.d.ts.map +1 -1
  16. package/dist/src/tokens/create/generators/color.js +18 -2
  17. package/dist/src/tokens/create/generators/semantic.js +2 -2
  18. package/dist/src/tokens/create/generators/theme.d.ts.map +1 -1
  19. package/dist/src/tokens/create/generators/theme.js +10 -0
  20. package/dist/src/tokens/create/write.js +7 -16
  21. package/dist/src/tokens/create.js +30 -4
  22. package/dist/src/tokens/format.js +44 -21
  23. package/dist/src/tokens/index.js +44 -21
  24. package/dist/src/tokens/process/configs/color.js +0 -1
  25. package/dist/src/tokens/process/configs/semantic.js +0 -1
  26. package/dist/src/tokens/process/configs/size-mode.js +0 -1
  27. package/dist/src/tokens/process/configs/size.js +0 -1
  28. package/dist/src/tokens/process/configs/type-scale.js +0 -1
  29. package/dist/src/tokens/process/configs/typography.js +0 -1
  30. package/dist/src/tokens/process/configs.js +0 -1
  31. package/dist/src/tokens/process/formats/css/color.js +0 -1
  32. package/dist/src/tokens/process/formats/css/semantic.js +0 -1
  33. package/dist/src/tokens/process/formats/css/size-mode.js +0 -1
  34. package/dist/src/tokens/process/formats/css/size.js +0 -1
  35. package/dist/src/tokens/process/formats/css/type-scale.js +0 -1
  36. package/dist/src/tokens/process/formats/css/typography.js +0 -1
  37. package/dist/src/tokens/process/formats/css.js +0 -1
  38. package/dist/src/tokens/process/output/declarations.js +7 -17
  39. package/dist/src/tokens/process/output/theme.js +7 -16
  40. package/dist/src/tokens/process/platform.js +0 -1
  41. package/dist/src/tokens/process/utils/getMultidimensionalThemes.d.ts.map +1 -1
  42. package/dist/src/tokens/process/utils/getMultidimensionalThemes.js +5 -1
  43. package/dist/src/tokens/process/utils/kebab-case.d.ts +5 -0
  44. package/dist/src/tokens/process/utils/kebab-case.d.ts.map +1 -0
  45. package/dist/src/tokens/process/utils/kebab-case.js +7 -0
  46. package/dist/src/tokens/template/design-tokens/semantic/color.base.template.js +1 -1
  47. package/package.json +8 -17
  48. package/configs/digdir.config.json +0 -63
  49. package/dist/src/scripts/update-design-tokens.d.ts +0 -2
  50. package/dist/src/scripts/update-design-tokens.d.ts.map +0 -1
  51. package/dist/src/scripts/update-design-tokens.js +0 -37
package/dist/src/index.js CHANGED
@@ -1512,7 +1512,8 @@ var generateColorScheme = (themeName, colorScheme2, colors, overrides) => {
1512
1512
  (color, colorName) => generateColor(generateColorScale(color, colorScheme2), createColorOverrides(colorName)),
1513
1513
  colors.support
1514
1514
  );
1515
- const neutral = generateColor(generateColorScale(colors.neutral, colorScheme2), createColorOverrides("neutral"));
1515
+ const neutralColorScale = generateColorScale(colors.neutral, colorScheme2);
1516
+ const neutral = generateColor(neutralColorScale, createColorOverrides("neutral"));
1516
1517
  const baseColorsWithOverrides = {
1517
1518
  ...baseColors,
1518
1519
  ...overrides?.severity
@@ -1522,7 +1523,12 @@ var generateColorScheme = (themeName, colorScheme2, colors, overrides) => {
1522
1523
  baseColorsWithOverrides
1523
1524
  );
1524
1525
  const linkColor = generateColor(generateColorScale(dsLinkColor, colorScheme2));
1526
+ const defaultLinkVisited = linkColor[12];
1525
1527
  const linkOverride = overrides?.linkVisited?.[colorScheme2] ? { $type: "color", $value: overrides.linkVisited[colorScheme2] } : void 0;
1528
+ const defaultFocusInner = neutralColorScale[0].hex;
1529
+ const defaultFocusOuter = neutralColorScale[10].hex;
1530
+ const focusInnerOverride = overrides?.focus?.inner?.[colorScheme2];
1531
+ const focusOuterOverride = overrides?.focus?.outer?.[colorScheme2];
1526
1532
  return {
1527
1533
  [themeName]: {
1528
1534
  ...main,
@@ -1530,7 +1536,17 @@ var generateColorScheme = (themeName, colorScheme2, colors, overrides) => {
1530
1536
  neutral,
1531
1537
  ...globalColors,
1532
1538
  link: {
1533
- visited: linkOverride || linkColor[12]
1539
+ visited: linkOverride || defaultLinkVisited
1540
+ },
1541
+ focus: {
1542
+ inner: {
1543
+ $type: "color",
1544
+ $value: focusInnerOverride || defaultFocusInner
1545
+ },
1546
+ outer: {
1547
+ $type: "color",
1548
+ $value: focusOuterOverride || defaultFocusOuter
1549
+ }
1534
1550
  }
1535
1551
  }
1536
1552
  };
@@ -1545,11 +1561,11 @@ var color_base_template_default = {
1545
1561
  focus: {
1546
1562
  inner: {
1547
1563
  $type: "color",
1548
- $value: "{color.neutral.background-default}"
1564
+ $value: "{color.focus.inner-color}"
1549
1565
  },
1550
1566
  outer: {
1551
1567
  $type: "color",
1552
- $value: "{color.neutral.text-default}"
1568
+ $value: "{color.focus.outer-color}"
1553
1569
  }
1554
1570
  }
1555
1571
  },
@@ -1905,6 +1921,16 @@ var generateTheme = (colors, themeName, borderRadius) => {
1905
1921
  $type: "color",
1906
1922
  $value: `{${themeName}.link.visited}`
1907
1923
  }
1924
+ },
1925
+ focus: {
1926
+ "inner-color": {
1927
+ $type: "color",
1928
+ $value: `{${themeName}.focus.inner}`
1929
+ },
1930
+ "outer-color": {
1931
+ $type: "color",
1932
+ $value: `{${themeName}.focus.outer}`
1933
+ }
1908
1934
  }
1909
1935
  },
1910
1936
  ...remainingThemeFile
@@ -2040,10 +2066,21 @@ var linkVisitedOverrideSchema = z.object({
2040
2066
  light: colorSchema.optional().describe("A hex color that overrides light mode"),
2041
2067
  dark: colorSchema.optional().describe("A hex color that overrides dark mode")
2042
2068
  }).describe('Overrides for the "link-visited" color');
2069
+ var focusOverrideSchema = z.object({
2070
+ inner: z.object({
2071
+ light: colorSchema.optional().describe("A hex color that overrides light mode"),
2072
+ dark: colorSchema.optional().describe("A hex color that overrides dark mode")
2073
+ }).optional().describe('Overrides for the "focus-inner" color'),
2074
+ outer: z.object({
2075
+ light: colorSchema.optional().describe("A hex color that overrides light mode"),
2076
+ dark: colorSchema.optional().describe("A hex color that overrides dark mode")
2077
+ }).optional().describe('Overrides for the "focus-outer" color')
2078
+ }).describe("Overrides for the focus colors");
2043
2079
  var overridesSchema = z.object({
2044
2080
  colors: semanticColorOverrideSchema.optional(),
2045
2081
  severity: severityColorOverrideSchema.optional(),
2046
- linkVisited: linkVisitedOverrideSchema.optional()
2082
+ linkVisited: linkVisitedOverrideSchema.optional(),
2083
+ focus: focusOverrideSchema.optional()
2047
2084
  }).describe("Overrides for generated design tokens. Currently only supports colors defined in your theme").optional();
2048
2085
  var themeSchema = z.object({
2049
2086
  colors: z.object({
@@ -2408,7 +2445,7 @@ import * as R9 from "ramda";
2408
2445
  // package.json
2409
2446
  var package_default = {
2410
2447
  name: "@digdir/designsystemet",
2411
- version: "1.8.0",
2448
+ version: "1.10.0",
2412
2449
  description: "CLI for Designsystemet",
2413
2450
  author: "Designsystemet team",
2414
2451
  engines: {
@@ -2460,23 +2497,18 @@ var package_default = {
2460
2497
  "test:tokens-build-config-tailwind": "pnpm run designsystemet tokens build -t ./temp/config/design-tokens -o ./temp/config/build --clean --experimental-tailwind",
2461
2498
  "test:tokens-create-and-build-options": "pnpm test:tokens-create-options && pnpm test:tokens-build",
2462
2499
  "test:tokens-create-and-build-config": "pnpm test:tokens-create-config && pnpm test:tokens-build-config",
2463
- "test:generate-config-from-tokens": "pnpm run designsystemet generate-config-from-tokens -d ../../internal/design-tokens --dry",
2500
+ "test:generate-config-from-tokens": "pnpm run designsystemet generate-config-from-tokens -d ../../internal/digdir/design-tokens --dry",
2464
2501
  test: "node -v && pnpm test:tokens-create-and-build-options && pnpm test:generate-config-from-tokens && pnpm test:tokens-create-and-build-config",
2465
- "digdir:tokens-build": "pnpm run designsystemet tokens build -t ../../internal/design-tokens -o ../../packages/theme/brand --clean --experimental-tailwind",
2466
- "digdir:tokens-create": "pnpm run designsystemet tokens create --config ./configs/digdir.config.json",
2467
2502
  "update:template": "tsx ./src/scripts/update-template.ts",
2468
2503
  "update:preview-tokens": "tsx ./src/scripts/update-preview-tokens.ts",
2469
- "update:theme-digdir": "pnpm digdir:tokens-create && tsx ./src/scripts/update-design-tokens.ts && pnpm digdir:tokens-build",
2470
- verify: "pnpm test && pnpm update:template && pnpm update:theme-digdir && pnpm build:tokens"
2504
+ verify: "pnpm test && pnpm update:template && pnpm --filter @internal/digdir update:theme-digdir"
2471
2505
  },
2472
2506
  dependencies: {
2473
2507
  "@commander-js/extra-typings": "^14.0.0",
2474
2508
  "@digdir/designsystemet-types": "workspace:^",
2475
- "@tokens-studio/sd-transforms": "2.0.2",
2476
- "apca-w3": "^0.1.9",
2477
- "change-case": "^5.4.4",
2509
+ "@tokens-studio/sd-transforms": "2.0.3",
2478
2510
  "chroma-js": "^3.2.0",
2479
- "colorjs.io": "^0.6.0-alpha.1",
2511
+ "colorjs.io": "^0.6.0",
2480
2512
  commander: "^14.0.2",
2481
2513
  "fast-glob": "^3.3.3",
2482
2514
  hsluv: "^1.0.1",
@@ -2485,19 +2517,15 @@ var package_default = {
2485
2517
  postcss: "^8.5.6",
2486
2518
  ramda: "^0.32.0",
2487
2519
  "style-dictionary": "^5.1.1",
2488
- zod: "^4.1.13",
2520
+ zod: "^4.3.5",
2489
2521
  "zod-validation-error": "^4.0.2"
2490
2522
  },
2491
2523
  devDependencies: {
2492
2524
  "@tokens-studio/types": "0.5.2",
2493
- "@types/apca-w3": "^0.1.3",
2494
2525
  "@types/chroma-js": "^3.1.2",
2495
- "@types/fs-extra": "^11.0.4",
2496
- "@types/node": "^22.19.1",
2526
+ "@types/node": "^22.19.3",
2497
2527
  "@types/object-hash": "^3.0.6",
2498
2528
  "@types/ramda": "^0.31.1",
2499
- "fs-extra": "^11.3.2",
2500
- tslib: "^2.8.1",
2501
2529
  tsup: "^8.5.1",
2502
2530
  tsx: "^4.21.0",
2503
2531
  typescript: "^5.9.3"
@@ -3444,9 +3472,15 @@ var typographyVariables = ({ theme, typography: typography2 }) => {
3444
3472
  };
3445
3473
 
3446
3474
  // src/tokens/process/utils/getMultidimensionalThemes.ts
3447
- import { kebabCase } from "change-case";
3448
3475
  import pc3 from "picocolors";
3449
3476
  import * as R21 from "ramda";
3477
+
3478
+ // src/tokens/process/utils/kebab-case.ts
3479
+ function kebabCase(str) {
3480
+ return str.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/[\s_]+/g, "-").toLowerCase();
3481
+ }
3482
+
3483
+ // src/tokens/process/utils/getMultidimensionalThemes.ts
3450
3484
  var getMultidimensionalThemes = (processed$themes, dimensions) => {
3451
3485
  const verboseLogging = buildOptions?.verbose;
3452
3486
  const grouped$themes = groupThemes(processed$themes);
@@ -331,10 +331,21 @@ var linkVisitedOverrideSchema = z.object({
331
331
  light: colorSchema.optional().describe("A hex color that overrides light mode"),
332
332
  dark: colorSchema.optional().describe("A hex color that overrides dark mode")
333
333
  }).describe('Overrides for the "link-visited" color');
334
+ var focusOverrideSchema = z.object({
335
+ inner: z.object({
336
+ light: colorSchema.optional().describe("A hex color that overrides light mode"),
337
+ dark: colorSchema.optional().describe("A hex color that overrides dark mode")
338
+ }).optional().describe('Overrides for the "focus-inner" color'),
339
+ outer: z.object({
340
+ light: colorSchema.optional().describe("A hex color that overrides light mode"),
341
+ dark: colorSchema.optional().describe("A hex color that overrides dark mode")
342
+ }).optional().describe('Overrides for the "focus-outer" color')
343
+ }).describe("Overrides for the focus colors");
334
344
  var overridesSchema = z.object({
335
345
  colors: semanticColorOverrideSchema.optional(),
336
346
  severity: severityColorOverrideSchema.optional(),
337
- linkVisited: linkVisitedOverrideSchema.optional()
347
+ linkVisited: linkVisitedOverrideSchema.optional(),
348
+ focus: focusOverrideSchema.optional()
338
349
  }).describe("Overrides for generated design tokens. Currently only supports colors defined in your theme").optional();
339
350
  var themeSchema = z.object({
340
351
  colors: z.object({
@@ -2,67 +2,27 @@
2
2
  import path from "path";
3
3
  import pc4 from "picocolors";
4
4
 
5
- // configs/digdir.config.json
6
- var digdir_config_default = {
7
- $schema: "../dist/config.schema.json",
8
- outDir: "./temp/digdir/design-tokens",
5
+ // ../../designsystemet.config.json
6
+ var designsystemet_config_default = {
7
+ $schema: "packages/cli/dist/config.schema.json",
8
+ outDir: "design-tokens",
9
9
  clean: true,
10
10
  themes: {
11
- digdir: {
11
+ designsystemet: {
12
12
  colors: {
13
13
  main: {
14
14
  accent: "#0062BA"
15
15
  },
16
16
  support: {
17
- brand1: "#F45F63",
18
- brand2: "#E5AA20",
19
- brand3: "#1E98F5"
17
+ brand1: "#0D7A5F",
18
+ brand2: "#5B3FA0"
20
19
  },
21
- neutral: "#1E2B3C"
20
+ neutral: "#24272B"
22
21
  },
23
22
  borderRadius: 4,
24
23
  typography: {
25
24
  fontFamily: "Inter"
26
25
  }
27
- },
28
- altinn: {
29
- colors: {
30
- main: {
31
- accent: "#0062BA"
32
- },
33
- support: {
34
- brand1: "#0162BA",
35
- brand2: "#3F3161",
36
- brand3: "#E02F4A"
37
- },
38
- neutral: "#1E2B3C"
39
- }
40
- },
41
- uutilsynet: {
42
- colors: {
43
- main: {
44
- accent: "#0062BA"
45
- },
46
- support: {
47
- brand1: "#5B60D1",
48
- brand2: "#FEA769",
49
- brand3: "#5DA290"
50
- },
51
- neutral: "#1E2B3C"
52
- }
53
- },
54
- portal: {
55
- colors: {
56
- main: {
57
- accent: "#38628C"
58
- },
59
- support: {
60
- brand1: "#D9ECFF",
61
- brand2: "#FFCA99",
62
- brand3: "#D96C79"
63
- },
64
- neutral: "#203040"
65
- }
66
26
  }
67
27
  }
68
28
  };
@@ -1773,7 +1733,8 @@ var generateColorScheme = (themeName, colorScheme2, colors, overrides) => {
1773
1733
  (color, colorName) => generateColor(generateColorScale(color, colorScheme2), createColorOverrides(colorName)),
1774
1734
  colors.support
1775
1735
  );
1776
- const neutral = generateColor(generateColorScale(colors.neutral, colorScheme2), createColorOverrides("neutral"));
1736
+ const neutralColorScale = generateColorScale(colors.neutral, colorScheme2);
1737
+ const neutral = generateColor(neutralColorScale, createColorOverrides("neutral"));
1777
1738
  const baseColorsWithOverrides = {
1778
1739
  ...baseColors,
1779
1740
  ...overrides?.severity
@@ -1783,7 +1744,12 @@ var generateColorScheme = (themeName, colorScheme2, colors, overrides) => {
1783
1744
  baseColorsWithOverrides
1784
1745
  );
1785
1746
  const linkColor = generateColor(generateColorScale(dsLinkColor, colorScheme2));
1747
+ const defaultLinkVisited = linkColor[12];
1786
1748
  const linkOverride = overrides?.linkVisited?.[colorScheme2] ? { $type: "color", $value: overrides.linkVisited[colorScheme2] } : void 0;
1749
+ const defaultFocusInner = neutralColorScale[0].hex;
1750
+ const defaultFocusOuter = neutralColorScale[10].hex;
1751
+ const focusInnerOverride = overrides?.focus?.inner?.[colorScheme2];
1752
+ const focusOuterOverride = overrides?.focus?.outer?.[colorScheme2];
1787
1753
  return {
1788
1754
  [themeName]: {
1789
1755
  ...main,
@@ -1791,7 +1757,17 @@ var generateColorScheme = (themeName, colorScheme2, colors, overrides) => {
1791
1757
  neutral,
1792
1758
  ...globalColors,
1793
1759
  link: {
1794
- visited: linkOverride || linkColor[12]
1760
+ visited: linkOverride || defaultLinkVisited
1761
+ },
1762
+ focus: {
1763
+ inner: {
1764
+ $type: "color",
1765
+ $value: focusInnerOverride || defaultFocusInner
1766
+ },
1767
+ outer: {
1768
+ $type: "color",
1769
+ $value: focusOuterOverride || defaultFocusOuter
1770
+ }
1795
1771
  }
1796
1772
  }
1797
1773
  };
@@ -1806,11 +1782,11 @@ var color_base_template_default = {
1806
1782
  focus: {
1807
1783
  inner: {
1808
1784
  $type: "color",
1809
- $value: "{color.neutral.background-default}"
1785
+ $value: "{color.focus.inner-color}"
1810
1786
  },
1811
1787
  outer: {
1812
1788
  $type: "color",
1813
- $value: "{color.neutral.text-default}"
1789
+ $value: "{color.focus.outer-color}"
1814
1790
  }
1815
1791
  }
1816
1792
  },
@@ -2166,6 +2142,16 @@ var generateTheme = (colors, themeName, borderRadius) => {
2166
2142
  $type: "color",
2167
2143
  $value: `{${themeName}.link.visited}`
2168
2144
  }
2145
+ },
2146
+ focus: {
2147
+ "inner-color": {
2148
+ $type: "color",
2149
+ $value: `{${themeName}.focus.inner}`
2150
+ },
2151
+ "outer-color": {
2152
+ $type: "color",
2153
+ $value: `{${themeName}.focus.outer}`
2154
+ }
2169
2155
  }
2170
2156
  },
2171
2157
  ...remainingThemeFile
@@ -3106,9 +3092,15 @@ var typographyVariables = ({ theme, typography: typography2 }) => {
3106
3092
  };
3107
3093
 
3108
3094
  // src/tokens/process/utils/getMultidimensionalThemes.ts
3109
- import { kebabCase } from "change-case";
3110
3095
  import pc from "picocolors";
3111
3096
  import * as R19 from "ramda";
3097
+
3098
+ // src/tokens/process/utils/kebab-case.ts
3099
+ function kebabCase(str) {
3100
+ return str.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/[\s_]+/g, "-").toLowerCase();
3101
+ }
3102
+
3103
+ // src/tokens/process/utils/getMultidimensionalThemes.ts
3112
3104
  var getMultidimensionalThemes = (processed$themes, dimensions) => {
3113
3105
  const verboseLogging = buildOptions?.verbose;
3114
3106
  const grouped$themes = groupThemes(processed$themes);
@@ -3575,13 +3567,13 @@ var formatTheme = async (themeConfig) => {
3575
3567
  };
3576
3568
  formatTheme({
3577
3569
  name: "test",
3578
- borderRadius: digdir_config_default.themes.digdir.borderRadius,
3570
+ borderRadius: designsystemet_config_default.themes.designsystemet.borderRadius,
3579
3571
  colors: {
3580
- main: digdir_config_default.themes.digdir.colors.main,
3581
- support: digdir_config_default.themes.digdir.colors.support,
3582
- neutral: digdir_config_default.themes.digdir.colors.neutral
3572
+ main: designsystemet_config_default.themes.designsystemet.colors.main,
3573
+ support: designsystemet_config_default.themes.designsystemet.colors.support,
3574
+ neutral: designsystemet_config_default.themes.designsystemet.colors.neutral
3583
3575
  },
3584
- typography: digdir_config_default.themes.digdir.typography
3576
+ typography: designsystemet_config_default.themes.designsystemet.typography
3585
3577
  });
3586
3578
  export {
3587
3579
  formatTheme
@@ -603,11 +603,11 @@ var color_default = {
603
603
  focus: {
604
604
  inner: {
605
605
  $type: "color",
606
- $value: "{color.neutral.background-default}"
606
+ $value: "{color.focus.inner-color}"
607
607
  },
608
608
  outer: {
609
609
  $type: "color",
610
- $value: "{color.neutral.text-default}"
610
+ $value: "{color.focus.outer-color}"
611
611
  }
612
612
  }
613
613
  },
@@ -1295,6 +1295,16 @@ var digdir_default = {
1295
1295
  $type: "color",
1296
1296
  $value: "{digdir.link.visited}"
1297
1297
  }
1298
+ },
1299
+ focus: {
1300
+ "inner-color": {
1301
+ $type: "color",
1302
+ $value: "{digdir.focus.inner}"
1303
+ },
1304
+ "outer-color": {
1305
+ $type: "color",
1306
+ $value: "{digdir.focus.outer}"
1307
+ }
1298
1308
  }
1299
1309
  },
1300
1310
  "font-family": {
@@ -49,7 +49,7 @@ import pc4 from "picocolors";
49
49
  // package.json
50
50
  var package_default = {
51
51
  name: "@digdir/designsystemet",
52
- version: "1.8.0",
52
+ version: "1.10.0",
53
53
  description: "CLI for Designsystemet",
54
54
  author: "Designsystemet team",
55
55
  engines: {
@@ -101,23 +101,18 @@ var package_default = {
101
101
  "test:tokens-build-config-tailwind": "pnpm run designsystemet tokens build -t ./temp/config/design-tokens -o ./temp/config/build --clean --experimental-tailwind",
102
102
  "test:tokens-create-and-build-options": "pnpm test:tokens-create-options && pnpm test:tokens-build",
103
103
  "test:tokens-create-and-build-config": "pnpm test:tokens-create-config && pnpm test:tokens-build-config",
104
- "test:generate-config-from-tokens": "pnpm run designsystemet generate-config-from-tokens -d ../../internal/design-tokens --dry",
104
+ "test:generate-config-from-tokens": "pnpm run designsystemet generate-config-from-tokens -d ../../internal/digdir/design-tokens --dry",
105
105
  test: "node -v && pnpm test:tokens-create-and-build-options && pnpm test:generate-config-from-tokens && pnpm test:tokens-create-and-build-config",
106
- "digdir:tokens-build": "pnpm run designsystemet tokens build -t ../../internal/design-tokens -o ../../packages/theme/brand --clean --experimental-tailwind",
107
- "digdir:tokens-create": "pnpm run designsystemet tokens create --config ./configs/digdir.config.json",
108
106
  "update:template": "tsx ./src/scripts/update-template.ts",
109
107
  "update:preview-tokens": "tsx ./src/scripts/update-preview-tokens.ts",
110
- "update:theme-digdir": "pnpm digdir:tokens-create && tsx ./src/scripts/update-design-tokens.ts && pnpm digdir:tokens-build",
111
- verify: "pnpm test && pnpm update:template && pnpm update:theme-digdir && pnpm build:tokens"
108
+ verify: "pnpm test && pnpm update:template && pnpm --filter @internal/digdir update:theme-digdir"
112
109
  },
113
110
  dependencies: {
114
111
  "@commander-js/extra-typings": "^14.0.0",
115
112
  "@digdir/designsystemet-types": "workspace:^",
116
- "@tokens-studio/sd-transforms": "2.0.2",
117
- "apca-w3": "^0.1.9",
118
- "change-case": "^5.4.4",
113
+ "@tokens-studio/sd-transforms": "2.0.3",
119
114
  "chroma-js": "^3.2.0",
120
- "colorjs.io": "^0.6.0-alpha.1",
115
+ "colorjs.io": "^0.6.0",
121
116
  commander: "^14.0.2",
122
117
  "fast-glob": "^3.3.3",
123
118
  hsluv: "^1.0.1",
@@ -126,19 +121,15 @@ var package_default = {
126
121
  postcss: "^8.5.6",
127
122
  ramda: "^0.32.0",
128
123
  "style-dictionary": "^5.1.1",
129
- zod: "^4.1.13",
124
+ zod: "^4.3.5",
130
125
  "zod-validation-error": "^4.0.2"
131
126
  },
132
127
  devDependencies: {
133
128
  "@tokens-studio/types": "0.5.2",
134
- "@types/apca-w3": "^0.1.3",
135
129
  "@types/chroma-js": "^3.1.2",
136
- "@types/fs-extra": "^11.0.4",
137
- "@types/node": "^22.19.1",
130
+ "@types/node": "^22.19.3",
138
131
  "@types/object-hash": "^3.0.6",
139
132
  "@types/ramda": "^0.31.1",
140
- "fs-extra": "^11.3.2",
141
- tslib: "^2.8.1",
142
133
  tsup: "^8.5.1",
143
134
  tsx: "^4.21.0",
144
135
  typescript: "^5.9.3"
@@ -1164,9 +1155,15 @@ var TypographyValues;
1164
1155
  })(TypographyValues || (TypographyValues = {}));
1165
1156
 
1166
1157
  // src/tokens/process/utils/getMultidimensionalThemes.ts
1167
- import { kebabCase } from "change-case";
1168
1158
  import pc2 from "picocolors";
1169
1159
  import * as R13 from "ramda";
1160
+
1161
+ // src/tokens/process/utils/kebab-case.ts
1162
+ function kebabCase(str) {
1163
+ return str.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/[\s_]+/g, "-").toLowerCase();
1164
+ }
1165
+
1166
+ // src/tokens/process/utils/getMultidimensionalThemes.ts
1170
1167
  var getMultidimensionalThemes = (processed$themes, dimensions) => {
1171
1168
  const verboseLogging = buildOptions?.verbose;
1172
1169
  const grouped$themes = groupThemes(processed$themes);
@@ -1,7 +1,7 @@
1
1
  // package.json
2
2
  var package_default = {
3
3
  name: "@digdir/designsystemet",
4
- version: "1.8.0",
4
+ version: "1.10.0",
5
5
  description: "CLI for Designsystemet",
6
6
  author: "Designsystemet team",
7
7
  engines: {
@@ -53,23 +53,18 @@ var package_default = {
53
53
  "test:tokens-build-config-tailwind": "pnpm run designsystemet tokens build -t ./temp/config/design-tokens -o ./temp/config/build --clean --experimental-tailwind",
54
54
  "test:tokens-create-and-build-options": "pnpm test:tokens-create-options && pnpm test:tokens-build",
55
55
  "test:tokens-create-and-build-config": "pnpm test:tokens-create-config && pnpm test:tokens-build-config",
56
- "test:generate-config-from-tokens": "pnpm run designsystemet generate-config-from-tokens -d ../../internal/design-tokens --dry",
56
+ "test:generate-config-from-tokens": "pnpm run designsystemet generate-config-from-tokens -d ../../internal/digdir/design-tokens --dry",
57
57
  test: "node -v && pnpm test:tokens-create-and-build-options && pnpm test:generate-config-from-tokens && pnpm test:tokens-create-and-build-config",
58
- "digdir:tokens-build": "pnpm run designsystemet tokens build -t ../../internal/design-tokens -o ../../packages/theme/brand --clean --experimental-tailwind",
59
- "digdir:tokens-create": "pnpm run designsystemet tokens create --config ./configs/digdir.config.json",
60
58
  "update:template": "tsx ./src/scripts/update-template.ts",
61
59
  "update:preview-tokens": "tsx ./src/scripts/update-preview-tokens.ts",
62
- "update:theme-digdir": "pnpm digdir:tokens-create && tsx ./src/scripts/update-design-tokens.ts && pnpm digdir:tokens-build",
63
- verify: "pnpm test && pnpm update:template && pnpm update:theme-digdir && pnpm build:tokens"
60
+ verify: "pnpm test && pnpm update:template && pnpm --filter @internal/digdir update:theme-digdir"
64
61
  },
65
62
  dependencies: {
66
63
  "@commander-js/extra-typings": "^14.0.0",
67
64
  "@digdir/designsystemet-types": "workspace:^",
68
- "@tokens-studio/sd-transforms": "2.0.2",
69
- "apca-w3": "^0.1.9",
70
- "change-case": "^5.4.4",
65
+ "@tokens-studio/sd-transforms": "2.0.3",
71
66
  "chroma-js": "^3.2.0",
72
- "colorjs.io": "^0.6.0-alpha.1",
67
+ "colorjs.io": "^0.6.0",
73
68
  commander: "^14.0.2",
74
69
  "fast-glob": "^3.3.3",
75
70
  hsluv: "^1.0.1",
@@ -78,19 +73,15 @@ var package_default = {
78
73
  postcss: "^8.5.6",
79
74
  ramda: "^0.32.0",
80
75
  "style-dictionary": "^5.1.1",
81
- zod: "^4.1.13",
76
+ zod: "^4.3.5",
82
77
  "zod-validation-error": "^4.0.2"
83
78
  },
84
79
  devDependencies: {
85
80
  "@tokens-studio/types": "0.5.2",
86
- "@types/apca-w3": "^0.1.3",
87
81
  "@types/chroma-js": "^3.1.2",
88
- "@types/fs-extra": "^11.0.4",
89
- "@types/node": "^22.19.1",
82
+ "@types/node": "^22.19.3",
90
83
  "@types/object-hash": "^3.0.6",
91
84
  "@types/ramda": "^0.31.1",
92
- "fs-extra": "^11.3.2",
93
- tslib: "^2.8.1",
94
85
  tsup: "^8.5.1",
95
86
  tsx: "^4.21.0",
96
87
  typescript: "^5.9.3"
@@ -1 +1 @@
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,EAAS,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAgB9D,eAAO,MAAM,mBAAmB,GAC9B,WAAW,MAAM,EACjB,aAAa,WAAW,EACxB,QAAQ,MAAM,EACd,YAAY,mBAAmB,KAC9B,QAqEF,CAAC"}
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,EAAS,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAgB9D,eAAO,MAAM,mBAAmB,GAC9B,WAAW,MAAM,EACjB,aAAa,WAAW,EACxB,QAAQ,MAAM,EACd,YAAY,mBAAmB,KAC9B,QAwFF,CAAC"}
@@ -379,7 +379,8 @@ var generateColorScheme = (themeName, colorScheme, colors, overrides) => {
379
379
  (color, colorName) => generateColor(generateColorScale(color, colorScheme), createColorOverrides(colorName)),
380
380
  colors.support
381
381
  );
382
- const neutral = generateColor(generateColorScale(colors.neutral, colorScheme), createColorOverrides("neutral"));
382
+ const neutralColorScale = generateColorScale(colors.neutral, colorScheme);
383
+ const neutral = generateColor(neutralColorScale, createColorOverrides("neutral"));
383
384
  const baseColorsWithOverrides = {
384
385
  ...baseColors,
385
386
  ...overrides?.severity
@@ -389,7 +390,12 @@ var generateColorScheme = (themeName, colorScheme, colors, overrides) => {
389
390
  baseColorsWithOverrides
390
391
  );
391
392
  const linkColor = generateColor(generateColorScale(dsLinkColor, colorScheme));
393
+ const defaultLinkVisited = linkColor[12];
392
394
  const linkOverride = overrides?.linkVisited?.[colorScheme] ? { $type: "color", $value: overrides.linkVisited[colorScheme] } : void 0;
395
+ const defaultFocusInner = neutralColorScale[0].hex;
396
+ const defaultFocusOuter = neutralColorScale[10].hex;
397
+ const focusInnerOverride = overrides?.focus?.inner?.[colorScheme];
398
+ const focusOuterOverride = overrides?.focus?.outer?.[colorScheme];
393
399
  return {
394
400
  [themeName]: {
395
401
  ...main,
@@ -397,7 +403,17 @@ var generateColorScheme = (themeName, colorScheme, colors, overrides) => {
397
403
  neutral,
398
404
  ...globalColors,
399
405
  link: {
400
- visited: linkOverride || linkColor[12]
406
+ visited: linkOverride || defaultLinkVisited
407
+ },
408
+ focus: {
409
+ inner: {
410
+ $type: "color",
411
+ $value: focusInnerOverride || defaultFocusInner
412
+ },
413
+ outer: {
414
+ $type: "color",
415
+ $value: focusOuterOverride || defaultFocusOuter
416
+ }
401
417
  }
402
418
  }
403
419
  };
@@ -261,11 +261,11 @@ var color_base_template_default = {
261
261
  focus: {
262
262
  inner: {
263
263
  $type: "color",
264
- $value: "{color.neutral.background-default}"
264
+ $value: "{color.focus.inner-color}"
265
265
  },
266
266
  outer: {
267
267
  $type: "color",
268
- $value: "{color.neutral.text-default}"
268
+ $value: "{color.focus.outer-color}"
269
269
  }
270
270
  }
271
271
  },
@@ -1 +1 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../../../src/tokens/create/generators/theme.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAEvD,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,EAAE,WAAW,MAAM,EAAE,cAAc,MAAM,aA+CpF,CAAC"}
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../../../src/tokens/create/generators/theme.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAEvD,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,EAAE,WAAW,MAAM,EAAE,cAAc,MAAM,aAyDpF,CAAC"}
@@ -403,6 +403,16 @@ var generateTheme = (colors, themeName, borderRadius) => {
403
403
  $type: "color",
404
404
  $value: `{${themeName}.link.visited}`
405
405
  }
406
+ },
407
+ focus: {
408
+ "inner-color": {
409
+ $type: "color",
410
+ $value: `{${themeName}.focus.inner}`
411
+ },
412
+ "outer-color": {
413
+ $type: "color",
414
+ $value: `{${themeName}.focus.outer}`
415
+ }
406
416
  }
407
417
  },
408
418
  ...remainingThemeFile