@digdir/designsystemet 1.0.8 → 1.1.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.
Files changed (65) hide show
  1. package/dist/bin/config.d.ts +3 -3
  2. package/dist/bin/config.d.ts.map +1 -1
  3. package/dist/bin/config.js +45 -45
  4. package/dist/bin/designsystemet.js +827 -748
  5. package/dist/config.schema.json +4 -4
  6. package/dist/src/colors/index.d.ts +2 -2
  7. package/dist/src/colors/index.d.ts.map +1 -1
  8. package/dist/src/colors/index.js +143 -143
  9. package/dist/src/colors/theme.d.ts +1 -2
  10. package/dist/src/colors/theme.d.ts.map +1 -1
  11. package/dist/src/config.d.ts +6 -21
  12. package/dist/src/config.d.ts.map +1 -1
  13. package/dist/src/config.js +43 -40
  14. package/dist/src/index.js +418 -430
  15. package/dist/src/scripts/createJsonSchema.js +23 -24
  16. package/dist/src/scripts/update-template.d.ts.map +1 -1
  17. package/dist/src/tokens/build.d.ts +1 -1
  18. package/dist/src/tokens/build.d.ts.map +1 -1
  19. package/dist/src/tokens/build.js +359 -280
  20. package/dist/src/tokens/create/generators/$designsystemet.js +16 -15
  21. package/dist/src/tokens/create/generators/color.js +21 -21
  22. package/dist/src/tokens/create/write.js +17 -16
  23. package/dist/src/tokens/create.d.ts +1 -0
  24. package/dist/src/tokens/create.d.ts.map +1 -1
  25. package/dist/src/tokens/create.js +22 -21
  26. package/dist/src/tokens/format.d.ts.map +1 -1
  27. package/dist/src/tokens/format.js +931 -944
  28. package/dist/src/tokens/index.d.ts +2 -2
  29. package/dist/src/tokens/index.d.ts.map +1 -1
  30. package/dist/src/tokens/index.js +295 -307
  31. package/dist/src/tokens/process/configs/color.d.ts.map +1 -1
  32. package/dist/src/tokens/process/configs/color.js +5 -5
  33. package/dist/src/tokens/process/configs/semantic.d.ts.map +1 -1
  34. package/dist/src/tokens/process/configs/semantic.js +5 -5
  35. package/dist/src/tokens/process/configs/storefront.d.ts.map +1 -1
  36. package/dist/src/tokens/process/configs/storefront.js +1 -1
  37. package/dist/src/tokens/process/configs/typography.d.ts.map +1 -1
  38. package/dist/src/tokens/process/configs/typography.js +5 -5
  39. package/dist/src/tokens/process/configs.d.ts.map +1 -1
  40. package/dist/src/tokens/process/configs.js +5 -5
  41. package/dist/src/tokens/process/formats/css/color.js +2 -2
  42. package/dist/src/tokens/process/formats/css/semantic.js +2 -2
  43. package/dist/src/tokens/process/formats/css/typography.js +1 -1
  44. package/dist/src/tokens/process/formats/css.js +5 -5
  45. package/dist/src/tokens/process/formats/js-tokens.js +1 -1
  46. package/dist/src/tokens/process/output/declarations.d.ts +4 -0
  47. package/dist/src/tokens/process/output/declarations.d.ts.map +1 -0
  48. package/dist/src/tokens/process/output/declarations.js +860 -0
  49. package/dist/src/tokens/process/output/tailwind.d.ts +3 -0
  50. package/dist/src/tokens/process/output/tailwind.d.ts.map +1 -0
  51. package/dist/src/tokens/process/output/tailwind.js +59 -0
  52. package/dist/src/tokens/process/{theme.d.ts → output/theme.d.ts} +2 -2
  53. package/dist/src/tokens/process/output/theme.d.ts.map +1 -0
  54. package/dist/src/tokens/process/{theme.js → output/theme.js} +20 -19
  55. package/dist/src/tokens/process/platform.d.ts +8 -4
  56. package/dist/src/tokens/process/platform.d.ts.map +1 -1
  57. package/dist/src/tokens/process/platform.js +27 -56
  58. package/dist/src/tokens/process/utils/getMultidimensionalThemes.d.ts +1 -0
  59. package/dist/src/tokens/process/utils/getMultidimensionalThemes.d.ts.map +1 -1
  60. package/dist/src/tokens/process/utils/getMultidimensionalThemes.js +12 -5
  61. package/dist/src/tokens/types.d.ts +1 -1
  62. package/dist/src/tokens/types.d.ts.map +1 -1
  63. package/dist/src/tokens/utils.d.ts.map +1 -1
  64. package/package.json +16 -15
  65. package/dist/src/tokens/process/theme.d.ts.map +0 -1
@@ -1,12 +1,12 @@
1
1
  import type { Command, OptionValues } from '@commander-js/extra-typings';
2
- import { type ConfigSchemaBuild, type ConfigSchemaCreate } from '../src/config.js';
2
+ import { type BuildConfigSchema, type CreateConfigSchema } from '../src/config.js';
3
3
  export declare function readConfigFile(configPath: string, allowFileNotFound?: boolean): Promise<string>;
4
4
  export declare function parseCreateConfig(configFile: string, options: {
5
5
  theme: string;
6
6
  cmd: Command<unknown[], OptionValues>;
7
7
  configPath: string;
8
- }): Promise<ConfigSchemaCreate>;
8
+ }): Promise<CreateConfigSchema>;
9
9
  export declare function parseBuildConfig(configFile: string, { configPath }: {
10
10
  configPath: string;
11
- }): Promise<ConfigSchemaBuild>;
11
+ }): Promise<BuildConfigSchema>;
12
12
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../bin/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGzE,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAKxB,MAAM,kBAAkB,CAAC;AAI1B,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,iBAAiB,UAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBlG;AAED,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACpF,OAAO,CAAC,kBAAkB,CAAC,CAqE7B;AAED,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,EAAE,UAAU,EAAE,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GACrC,OAAO,CAAC,iBAAiB,CAAC,CAI5B"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../bin/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGzE,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAKxB,MAAM,kBAAkB,CAAC;AAI1B,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,iBAAiB,UAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBlG;AAED,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACpF,OAAO,CAAC,kBAAkB,CAAC,CAiE7B;AAED,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,EAAE,UAAU,EAAE,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GACrC,OAAO,CAAC,iBAAiB,CAAC,CAI5B"}
@@ -6,26 +6,8 @@ import * as R8 from "ramda";
6
6
  // src/config.ts
7
7
  import chalk from "chalk";
8
8
  import * as R7 from "ramda";
9
- import { fromError } from "zod-validation-error";
10
9
  import { z } from "zod/v4";
11
-
12
- // src/colors/utils.ts
13
- import chroma from "chroma-js";
14
- import Colorjs from "colorjs.io";
15
- import { Hsluv } from "hsluv";
16
- var convertToHex = (color) => {
17
- if (!color) {
18
- return "#000000";
19
- }
20
- if (/^#[0-9A-Fa-f]{6}$/.test(color)) {
21
- return color;
22
- }
23
- return chroma(color).hex();
24
- };
25
-
26
- // src/colors/theme.ts
27
- import chroma2 from "chroma-js";
28
- import * as R2 from "ramda";
10
+ import { fromError } from "zod-validation-error/v4";
29
11
 
30
12
  // src/colors/colorMetadata.ts
31
13
  import * as R from "ramda";
@@ -273,6 +255,24 @@ var colorMetadata = {
273
255
  };
274
256
  var colorMetadataByNumber = R.indexBy((metadata) => metadata.number, Object.values(colorMetadata));
275
257
 
258
+ // src/colors/theme.ts
259
+ import chroma2 from "chroma-js";
260
+ import * as R2 from "ramda";
261
+
262
+ // src/colors/utils.ts
263
+ import chroma from "chroma-js";
264
+ import Colorjs from "colorjs.io";
265
+ import { Hsluv } from "hsluv";
266
+ var convertToHex = (color) => {
267
+ if (!color) {
268
+ return "#000000";
269
+ }
270
+ if (/^#[0-9A-Fa-f]{6}$/.test(color)) {
271
+ return color;
272
+ }
273
+ return chroma(color).hex();
274
+ };
275
+
276
276
  // src/colors/theme.ts
277
277
  var RESERVED_COLORS = [
278
278
  "neutral",
@@ -303,6 +303,7 @@ import * as R6 from "ramda";
303
303
  var cliOptions = {
304
304
  outDir: "out-dir",
305
305
  clean: "clean",
306
+ tailwind: "tailwind",
306
307
  theme: {
307
308
  colors: {
308
309
  main: "main-colors",
@@ -326,16 +327,21 @@ function mapPathToOptionName(path3) {
326
327
  return option;
327
328
  }
328
329
  function makeFriendlyError(err) {
329
- return fromError(err, {
330
- messageBuilder: (issues) => issues.map((issue) => {
331
- const issuePath = issue.path.join(".");
332
- const optionName = mapPathToOptionName(issue.path);
333
- const errorCode = `(error code: ${issue.code})`;
334
- const optionMessage = optionName ? ` or CLI option --${optionName}` : "";
335
- return ` - Error in JSON value ${chalk.red(issuePath)}${optionMessage}:
336
- ${issue.message} ${chalk.dim(errorCode)}`;
337
- }).join("\n")
338
- });
330
+ try {
331
+ return fromError(err, {
332
+ messageBuilder: (issues) => issues.map((issue) => {
333
+ const issuePath = issue.path.join(".");
334
+ const optionName = mapPathToOptionName(issue.path);
335
+ const errorCode = `(error code: ${issue.code})`;
336
+ const optionMessage = optionName ? ` or CLI option --${optionName}` : "";
337
+ return ` - Error in JSON value ${chalk.red(issuePath)}${optionMessage}:
338
+ ${issue.message} ${chalk.dim(errorCode)}`;
339
+ }).join("\n")
340
+ });
341
+ } catch (_err2) {
342
+ console.error(chalk.red(err instanceof Error ? err.message : "Unknown error occurred while parsing config file"));
343
+ console.error(err instanceof Error ? err.stack : "No stack trace available");
344
+ }
339
345
  }
340
346
  function validateConfig(schema, unvalidatedConfig, configPath) {
341
347
  try {
@@ -343,21 +349,20 @@ function validateConfig(schema, unvalidatedConfig, configPath) {
343
349
  } catch (err) {
344
350
  console.error(chalk.redBright(`Invalid config file at ${chalk.red(configPath)}`));
345
351
  const validationError = makeFriendlyError(err);
346
- console.error(validationError.toString());
352
+ console.error(validationError?.toString());
347
353
  process.exit(1);
348
354
  }
349
355
  }
350
- function parseConfig(schema, configFile, configPath) {
356
+ function parseConfig(configFile, configPath) {
351
357
  if (!configFile) {
352
358
  return {};
353
359
  }
354
360
  try {
355
- const parsedConfig = JSON.parse(configFile);
356
- return schema.parse(parsedConfig);
361
+ return JSON.parse(configFile);
357
362
  } catch (err) {
358
363
  console.error(chalk.redBright(`Failed parsing config file at ${chalk.red(configPath)}`));
359
364
  const validationError = makeFriendlyError(err);
360
- console.error(validationError.toString());
365
+ console.error(validationError?.toString());
361
366
  process.exit(1);
362
367
  }
363
368
  }
@@ -395,17 +400,16 @@ var themeSchema = z.object({
395
400
  }).describe("Defines the typography for a given theme").optional(),
396
401
  borderRadius: z.number().meta({ description: "Defines the border-radius for this theme" }).optional()
397
402
  }).meta({ description: "An object defining a theme. The property name holding the object becomes the theme name." });
398
- var configFileBuildSchema = z.object({
403
+ var commonConfig = z.object({
399
404
  clean: z.boolean().meta({ description: "Delete the output directory before building or creating tokens" }).optional()
400
405
  });
401
- var configFileCreateSchema = z.object({
406
+ var _configFileCreateSchema = z.object({
402
407
  outDir: z.string().meta({ description: "Path to the output directory for the created design tokens" }),
403
- clean: z.boolean().meta({ description: "Delete the output directory before building or creating tokens" }).optional(),
404
408
  themes: z.record(z.string(), themeSchema).meta({
405
409
  description: "An object with one or more themes. Each property defines a theme, and the property name is used as the theme name."
406
410
  })
407
411
  }).required();
408
- var combinedConfigSchema = configFileCreateSchema.extend(configFileBuildSchema.shape);
412
+ var configFileCreateSchema = _configFileCreateSchema.extend(commonConfig.shape);
409
413
 
410
414
  // src/utils.ts
411
415
  import fs from "fs/promises";
@@ -456,11 +460,7 @@ async function readConfigFile(configPath, allowFileNotFound = true) {
456
460
  }
457
461
  async function parseCreateConfig(configFile, options) {
458
462
  const { cmd, theme = "theme", configPath } = options;
459
- const configParsed = parseConfig(
460
- configFileCreateSchema,
461
- configFile,
462
- configPath
463
- );
463
+ const configParsed = parseConfig(configFile, configPath);
464
464
  const themeColors = Object.values(configParsed?.themes ?? {}).map(
465
465
  (x) => /* @__PURE__ */ new Set([...R8.keys(x.colors.main), ...R8.keys(x.colors.support)])
466
466
  );
@@ -506,8 +506,8 @@ async function parseCreateConfig(configFile, options) {
506
506
  return validateConfig(configFileCreateSchema, unvalidatedConfig, configPath);
507
507
  }
508
508
  async function parseBuildConfig(configFile, { configPath }) {
509
- const configParsed = parseConfig(configFileBuildSchema, configFile, configPath);
510
- return validateConfig(configFileBuildSchema, configParsed, configPath);
509
+ const configParsed = parseConfig(configFile, configPath);
510
+ return validateConfig(commonConfig, configParsed, configPath);
511
511
  }
512
512
  export {
513
513
  parseBuildConfig,