unholy-design-tokens 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/.github/workflows/lint-format-build.yml +35 -0
  2. package/.github/workflows/publish_release.yml +18 -0
  3. package/.prettierrc +9 -0
  4. package/ANALOGY_HOUSE.md +139 -0
  5. package/ANALOGY_I18NEXT.md +160 -0
  6. package/LICENSE +201 -0
  7. package/README.md +90 -0
  8. package/WHY_THIS_EXISTS.md +74 -0
  9. package/bin/build-tokens.ts +34 -0
  10. package/build/css/bg/bg.css +60 -0
  11. package/build/css/border/border.css +51 -0
  12. package/build/css/colors.css +204 -0
  13. package/build/css/conditional.css +8 -0
  14. package/build/css/cube/cube.block.css +18 -0
  15. package/build/css/cube/cube.composition.css +16 -0
  16. package/build/css/cube/cube.utility.css +185 -0
  17. package/build/css/font/font.css +24 -0
  18. package/build/css/space.css +20 -0
  19. package/build/css/text/text.css +48 -0
  20. package/build/css/themes/private-theme.css +228 -0
  21. package/build/css/themes/public-theme.css +228 -0
  22. package/build/css/variant/variant.css +42 -0
  23. package/build/css/variants.css +167 -0
  24. package/build/types/theme.d.ts +932 -0
  25. package/build/types/tokens.ts +653 -0
  26. package/dist/bin/build-tokens.js +27 -0
  27. package/dist/scripts/build-style-dictionary.js +32 -0
  28. package/dist/scripts/generate-typography-tokens.js +125 -0
  29. package/dist/src/colors/color.config.js +45 -0
  30. package/dist/src/colors/color.filter.js +19 -0
  31. package/dist/src/colors/color.formatter.js +25 -0
  32. package/dist/src/colors/index.js +2 -0
  33. package/dist/src/cube-css/cube.config.js +42 -0
  34. package/dist/src/cube-css/cube.formatter.js +89 -0
  35. package/dist/src/style-dictionary.config.js +143 -0
  36. package/dist/src/type-declarations/type-declarations.config.js +29 -0
  37. package/dist/src/type-declarations/type-declarations.formatter.js +111 -0
  38. package/dist/src/utils/helpers.js +9 -0
  39. package/dist/src/utils/index.js +4 -0
  40. package/dist/src/utils/template.js +83 -0
  41. package/dist/src/utils/tokens.js +80 -0
  42. package/dist/src/utils/utopia.js +19 -0
  43. package/eslint.config.js +67 -0
  44. package/package.json +60 -0
  45. package/scripts/build-style-dictionary.ts +44 -0
  46. package/scripts/generate-typography-tokens.ts +138 -0
  47. package/src/LICENSE +201 -0
  48. package/src/README.md +88 -0
  49. package/src/colors/color.config.ts +48 -0
  50. package/src/colors/color.filter.ts +28 -0
  51. package/src/colors/color.formatter.ts +43 -0
  52. package/src/colors/index.ts +6 -0
  53. package/src/cube-css/cube.config.ts +50 -0
  54. package/src/cube-css/cube.formatter.ts +104 -0
  55. package/src/formatters/spacing.js +95 -0
  56. package/src/style-dictionary.config.ts +151 -0
  57. package/src/theme/README.md +256 -0
  58. package/src/theme/cube-theme-addon.js +44 -0
  59. package/src/theme/helper.js +38 -0
  60. package/src/theme/index.js +6 -0
  61. package/src/theme/theme.config.js +42 -0
  62. package/src/theme/theme.filter.js +42 -0
  63. package/src/theme/theme.formatter.js +71 -0
  64. package/src/tokens/1 - primitives/README.md +58 -0
  65. package/src/tokens/1 - primitives/border.json +54 -0
  66. package/src/tokens/1 - primitives/breakpoint.json +10 -0
  67. package/src/tokens/1 - primitives/color-pool.json +266 -0
  68. package/src/tokens/1 - primitives/color.json +266 -0
  69. package/src/tokens/1 - primitives/font-scale.json +27 -0
  70. package/src/tokens/1 - primitives/font.json +23 -0
  71. package/src/tokens/1 - primitives/shadow.json +26 -0
  72. package/src/tokens/1 - primitives/space.json +27 -0
  73. package/src/tokens/2 - semantic/README.md +49 -0
  74. package/src/tokens/2 - semantic/border.json +27 -0
  75. package/src/tokens/2 - semantic/color.json +263 -0
  76. package/src/tokens/2 - semantic/details.md +1 -0
  77. package/src/tokens/2 - semantic/layout.json +52 -0
  78. package/src/tokens/2 - semantic/radius.json +13 -0
  79. package/src/tokens/2 - semantic/shadow.json +19 -0
  80. package/src/tokens/2 - semantic/spacing.json +25 -0
  81. package/src/tokens/3 - intent/README.md +43 -0
  82. package/src/tokens/3 - intent/background.json +135 -0
  83. package/src/tokens/3 - intent/color.json +265 -0
  84. package/src/tokens/3 - intent/font.json +61 -0
  85. package/src/tokens/3 - intent/text +67 -0
  86. package/src/tokens/README.md +176 -0
  87. package/src/tokens/color/brand.json +316 -0
  88. package/src/tokens/component/theming.json +69 -0
  89. package/src/tokens/conditional.json +40 -0
  90. package/src/tokens/custom/4 - (OPTIONAL) cube css/README.md +38 -0
  91. package/src/tokens/custom/4 - (OPTIONAL) cube css/block.json +24 -0
  92. package/src/tokens/custom/4 - (OPTIONAL) cube css/composition.json +26 -0
  93. package/src/tokens/custom/4 - (OPTIONAL) cube css/global.json +15 -0
  94. package/src/tokens/custom/4 - (OPTIONAL) cube css/utility.json +224 -0
  95. package/src/tokens/custom/OKlch/color.json +61 -0
  96. package/src/tokens/custom/OKlch/state.json +107 -0
  97. package/src/tokens/custom/OKlch/theme-color.json +34 -0
  98. package/src/tokens/custom/OKlch/variant.json +67 -0
  99. package/src/tokens/custom/components/highlighted.json +16 -0
  100. package/src/tokens/state.js +29 -0
  101. package/src/tokens/theme-color.json +34 -0
  102. package/src/type-declarations/type-declarations.config.ts +34 -0
  103. package/src/type-declarations/type-declarations.formatter.ts +122 -0
  104. package/src/utils/helpers.ts +11 -0
  105. package/src/utils/index.ts +4 -0
  106. package/src/utils/template.ts +110 -0
  107. package/src/utils/tokens.ts +95 -0
  108. package/src/utils/utopia.ts +36 -0
  109. package/tailwind.md +720 -0
  110. package/tsconfig.json +19 -0
  111. package/turbowatch.ts +14 -0
@@ -0,0 +1,74 @@
1
+ # 🎯 Why this exists
2
+
3
+ Design tokens are often explained in abstract, design-heavy language that makes them hard to adopt for engineers
4
+
5
+ ## _What are design tokens_?
6
+
7
+ Here are some definitions from popular design systems:
8
+
9
+ <details>
10
+ <summary>Expand all definitions</summary>
11
+
12
+ [Material Design](https://m3.material.io/foundations/design-tokens/overview):
13
+
14
+ > Design tokens are small, reusable design decisions that make up a design system's visual style. Tokens replace static values with self-explanatory names.
15
+
16
+ [Atlassian](https://atlassian.design/foundations/tokens/design-tokens)
17
+
18
+ > Design tokens are name and value pairings that represent small, repeatable design decisions. A token can be a color, font style, unit of white space, or even a motion animation designed for a specific need.
19
+
20
+ [Pajamas Design System](https://design.gitlab.com/product-foundations/design-tokens/)
21
+
22
+ > Design tokens are a methodology to pair design decisions with options from the design system. Design tokens abstract out variables like color, typography, and spacing for consistent and meaningful user interface (UI) design across tools and platforms. The following is a basic example of a design token, where design.token.name is the name, and #abcdef is the value.
23
+
24
+ [Spectrum](https://spectrum.adobe.com/page/design-tokens/)
25
+
26
+ > Design tokens are design decisions, translated into data. They act as a “source of truth” to help ensure that product experiences feel unified and cohesive.
27
+
28
+ The [Specs](https://www.designtokens.org/tr/2025.10/#abstract)
29
+
30
+ > Design tokens are indivisible pieces of a design system such as colors, spacing, typography scale.
31
+
32
+ The [Specs Glossary](https://www.designtokens.org/glossary/#design-token)
33
+
34
+ > The single source of truth to name and store a design decision, distributed so teams can use it across design tools and coding languages.
35
+
36
+ </details>
37
+
38
+ ## There's a lot of confusion around different terminology and practical implementation.
39
+
40
+ The best example is `semantic tokens`. _What are semantic tokens_?
41
+
42
+ The most common explanation is:
43
+
44
+ > Semantic tokens are design tokens that are named according to their meaning and purpose within the design system, rather than their specific visual attributes.
45
+
46
+ Sometimes it includes "context" or not.
47
+
48
+ They are different answers which cause mismatches in understanding:
49
+
50
+ ### From a designer's perspective, semantic tokens are often colors with meaning (e.g., "error", "warning"). Some teams use:
51
+
52
+ ```css
53
+ --color-primary-700: var(--color-blue-700);
54
+ --color-error: var(--color-red-600);
55
+ ```
56
+
57
+ ### From a developer's perspective, semantic tokens are colors that adapt based on context (e.g "background", "text"). Some teams use:
58
+
59
+ ```css
60
+ --color-bg-primary-hover: var(--color-blue-700);
61
+ --color-text-error: var(--color-red-600);
62
+ ```
63
+
64
+ Some article project the future _semantic_ ([Figma - The future of design systems is semantic](https://www.figma.com/blog/the-future-of-design-systems-is-semantic/#closing-the-gap-between-design-and-code)) without mentoning the word `semantic`after.
65
+
66
+ ---
67
+
68
+ 1. Primitives = raw hues (never touched)
69
+ 2. Brand palette = brand colors (rarely changed)
70
+ 3. Semantic roles = meaning (design language) ← you use this
71
+ 4. Components = actual bg/fg/border config ← you use this
72
+
73
+ // emoji arrow
74
+ :arrow_right: This project is a playground to try to simplify the concept of design tokens and provide a practical framework for implementing and customize them using Style Dictionary.
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { program } from 'commander'
4
+ import fs from 'node:fs/promises'
5
+ import os from 'node:os'
6
+ import path from 'node:path'
7
+ import { buildStyleDictionary } from '../scripts/build-style-dictionary'
8
+
9
+ program
10
+ .name('build-tokens')
11
+ .description('Build and copy tokens to the destination folder.')
12
+ .argument('[dir]', 'target directory', './build/')
13
+ .option('-f, --force', 'overwrite existing files')
14
+ .action(async (dir, options) => {
15
+ const targetDir = path.resolve(process.cwd(), dir)
16
+
17
+ // 1) temp dir
18
+ const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), 'tokens-'))
19
+
20
+ // 2) build Style Dictionary into temp
21
+ await buildStyleDictionary(tmpDir)
22
+
23
+ // 3) copy result to target
24
+ await fs.mkdir(targetDir, { recursive: true })
25
+ await fs.cp(tmpDir, targetDir, {
26
+ recursive: true,
27
+ force: options.force ?? true,
28
+ })
29
+
30
+ // 4) cleanup
31
+ await fs.rm(tmpDir, { recursive: true, force: true })
32
+ })
33
+
34
+ program.parse()
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Do not edit directly, this file was auto-generated.
3
+ */
4
+
5
+ :root {
6
+ --color-bg-page: #edda9f;
7
+ --color-bg-subtle: #edda9f;
8
+ --color-bg-elevated: #ffffff;
9
+ --color-bg-inset: #c2b382;
10
+ --color-bg-primary: #65572a;
11
+ --color-bg-primary-hover: oklch(from #65572a lightness(+7%));
12
+ --color-bg-primary-active: #1e1908;
13
+ --color-bg-primary-subtle: #fbefd2;
14
+ --color-bg-accent: #b4363b;
15
+ --color-bg-accent-hover: #7a2225;
16
+ --color-bg-accent-subtle: #fbeeee;
17
+ --color-bg-neutral: #494b49;
18
+ --color-bg-neutral-strong: #010101;
19
+ --color-bg-info: #ac9f70;
20
+ --color-bg-warning: #fbefd2;
21
+ --color-bg-success: #dce0dc;
22
+ --color-bg-secondary-lightness: var(--color-secondary-lightness, 0);
23
+ --color-bg-secondary-chroma: var(--color-secondary-chroma, 0);
24
+ --color-bg-secondary-hue: var(--color-secondary-hue, 0);
25
+ --color-bg-secondary-opacity: var(--color-secondary-opacity, 0);
26
+ --color-bg-secondary: oklch(var(--color-bg-secondary-lightness) var(--color-bg-secondary-chroma) var(--color-bg-secondary-hue) / var(--color-bg-secondary-opacity));
27
+ --color-bg-danger-lightness: var(--color-danger-lightness, 0);
28
+ --color-bg-danger-chroma: var(--color-danger-chroma, 0);
29
+ --color-bg-danger-hue: var(--color-danger-hue, 0);
30
+ --color-bg-danger-opacity: var(--color-danger-opacity, 1);
31
+ --color-bg-danger: oklch(var(--color-bg-danger-lightness) var(--color-bg-danger-chroma) var(--color-bg-danger-hue) / var(--color-bg-danger-opacity));
32
+ --color-bg-hue: var(--color-primary-hue) * var(--primary, 1) + var(--color-secondary-hue) * var(--secondary, 0) + var(--color-danger-hue) * var(--danger, 0);
33
+ --color-bg-h: var(--theme-color-bg-hue);
34
+ --color-bg-lightness: var(--color-primary-lightness) * var(--primary, 1) + var(--color-secondary-lightness) * var(--secondary, 0) + var(--color-danger-lightness) * var(--danger, 0);
35
+ --color-bg-l: var(--theme-color-bg-lightness);
36
+ --color-bg-opacity: var(--color-primary-opacity);
37
+ --color-bg-o: var(--theme-color-bg-opacity);
38
+ --bg-primary: #65572a;
39
+ --bg-primary-hover: #403718;
40
+ --bg-primary-active: #1e1908;
41
+ --bg-primary-focus: #fbefd2;
42
+ --bg-primary-disable: #fbefd2;
43
+ --bg-accent: #b4363b;
44
+ --bg-accent-hover: #7a2225;
45
+ --bg-accent-active: #450f11;
46
+ --bg-accent-focus: #fbeeee;
47
+ --bg-accent-disable: #fbeeee;
48
+ --bg-neutral: #494b49;
49
+ --bg-neutral-hover: #2a2b2a;
50
+ --bg-neutral-active: #101110;
51
+ --bg-neutral-focus: #dce0dc;
52
+ --bg-neutral-disable: #dce0dc;
53
+ --bg-info: #fbeeee;
54
+ --bg-warning: #fbefd2;
55
+ --bg-success: #dce0dc;
56
+ --component-bg-lightness: calc(var(--color-bg-lightness) + var(--variant-bg-lightness) + var(--state-bg-lightness));
57
+ --component-bg-chroma: calc(var(--color-bg-chroma) + var(--variant-bg-chroma) + var(--state-bg-chroma));
58
+ --component-bg-hue: calc(var(--color-bg-hue));
59
+ --component-bg-opacity: calc(var(--color-bg-opacity) + var(--variant-bg-opacity) + var(--state-bg-opacity));
60
+ }
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Do not edit directly, this file was auto-generated.
3
+ */
4
+
5
+ :root {
6
+ --border-width-base: 2px;
7
+ --border-width-scale: 1.25;
8
+ --border-width-default: var(--border-width-base);
9
+ --border-width-xsmall: calc(var(--border-width-base) / 2 * var(--border-width-scale));
10
+ --border-width-small: calc(var(--border-width-base) * var(--border-width-scale));
11
+ --border-width-medium: var(--border-width-base);
12
+ --border-width-large: calc(var(--border-width-base) * 2 * var(--border-width-scale));
13
+ --border-style-solid: solid;
14
+ --border-style-dashed: dashed;
15
+ --border-style-dotted: dotted;
16
+ --border-style-double: double;
17
+ --border-style-none: none;
18
+ --border-style-default: var(--border-style-solid);
19
+ --border-radius-1: 1px;
20
+ --border-radius-2: 2px;
21
+ --border-radius-4: 4px;
22
+ --border-radius-base: 0;
23
+ --border-radius-0-5: 0.5px;
24
+ --border-radius-scale: 1.5;
25
+ --color-border-subtle: #c2b382;
26
+ --color-border-default: #998d65;
27
+ --color-border-strong: #72694b;
28
+ --color-border-primary: #65572a;
29
+ --color-border-focus: #b4363b;
30
+ --color-border-info: #f3cbcc;
31
+ --color-border-warning: #e3c567;
32
+ --color-border-success: #b5b8b5;
33
+ --color-border-neutral: #8f928f;
34
+ --color-border-secondary-lightness: var(--color-secondary-lightness, 0);
35
+ --color-border-secondary-chroma: var(--color-secondary-chroma, 0);
36
+ --color-border-secondary-hue: var(--color-secondary-hue, 0);
37
+ --color-border-secondary-opacity: var(--color-secondary-opacity, 1);
38
+ --color-border-secondary: oklch(var(--color-border-secondary-lightness) var(--color-border-secondary-chroma) var(--color-border-secondary-hue) / var(--color-border-secondary-opacity));
39
+ --color-border-danger-lightness: var(--color-danger-lightness, 0);
40
+ --color-border-danger-chroma: var(--color-danger-chroma, 0);
41
+ --color-border-danger-hue: var(--color-danger-hue, 0);
42
+ --color-border-danger-opacity: var(--color-danger-opacity, 1);
43
+ --color-border-danger: oklch(var(--color-border-danger-lightness) var(--color-border-danger-chroma) var(--color-border-danger-hue) / var(--color-border-danger-opacity));
44
+ --color-border-hue: var(--color-primary-hue) * var(--primary, 1) + var(--color-secondary-hue) * var(--secondary, 0) + var(--color-danger-hue) * var(--danger, 0);
45
+ --color-border-lightness: var(--color-primary-lightness) * var(--primary, 1) + var(--color-secondary-lightness) * var(--secondary, 0) + var(--color-danger-lightness) * var(--danger, 0);
46
+ --color-border-opacity: var(--color-primary-opacity);
47
+ --component-border-lightness: calc(var(--color-border-lightness) + var(--variant-border-lightness) + var(--state-border-lightness));
48
+ --component-border-chroma: calc(var(--color-border-chroma) + var(--variant-border-chroma) + var(--state-border-chroma));
49
+ --component-border-hue: calc(var(--color-border-hue));
50
+ --component-border-opacity: calc(var(--color-border-opacity) + var(--variant-border-opacity) + var(--state-border-opacity));
51
+ }
@@ -0,0 +1,204 @@
1
+ /* Collection name: Color Color-pool */
2
+ /* Mode: Light */
3
+ :root {
4
+
5
+ /* ------------------------------------------------------------ */
6
+ /* Color-pool */
7
+ /* ------------------------------------------------------------ */
8
+ --color-pool-straw-gold-100: #fbefd2;
9
+ --color-pool-straw-gold-200: #e3c567;
10
+ --color-pool-straw-gold-300: #b79f52;
11
+ --color-pool-straw-gold-400: #8d7a3d;
12
+ --color-pool-straw-gold-500: #65572a;
13
+ --color-pool-straw-gold-600: #403718;
14
+ --color-pool-straw-gold-700: #1e1908;
15
+ --color-pool-straw-gold-800: #0a0600;
16
+ --color-pool-straw-gold-900: #030200;
17
+ --color-pool-straw-gold-base: #e3c567;
18
+ --color-pool-graphite-100: #dce0dc;
19
+ --color-pool-graphite-200: #b5b8b5;
20
+ --color-pool-graphite-300: #8f928f;
21
+ --color-pool-graphite-400: #6b6d6b;
22
+ --color-pool-graphite-500: #494b49;
23
+ --color-pool-graphite-600: #2a2b2a;
24
+ --color-pool-graphite-700: #101110;
25
+ --color-pool-graphite-800: #050505;
26
+ --color-pool-graphite-900: #010101;
27
+ --color-pool-graphite-base: #2a2b2a;
28
+ --color-pool-intense-cherry-100: #fbeeee;
29
+ --color-pool-intense-cherry-200: #f3cbcc;
30
+ --color-pool-intense-cherry-300: #ea9799;
31
+ --color-pool-intense-cherry-400: #e4595d;
32
+ --color-pool-intense-cherry-500: #b4363b;
33
+ --color-pool-intense-cherry-600: #7a2225;
34
+ --color-pool-intense-cherry-700: #450f11;
35
+ --color-pool-intense-cherry-800: #1c0304;
36
+ --color-pool-intense-cherry-900: #060001;
37
+ --color-pool-intense-cherry-base: #b4363b;
38
+ --color-pool-vanilla-custard-100: #edda9f;
39
+ --color-pool-vanilla-custard-200: #c2b382;
40
+ --color-pool-vanilla-custard-300: #998d65;
41
+ --color-pool-vanilla-custard-400: #72694b;
42
+ --color-pool-vanilla-custard-500: #4e4731;
43
+ --color-pool-vanilla-custard-600: #2c271a;
44
+ --color-pool-vanilla-custard-700: #131109;
45
+ --color-pool-vanilla-custard-800: #040302;
46
+ --color-pool-vanilla-custard-900: #010101;
47
+ --color-pool-vanilla-custard-base: #edda9f;
48
+ --color-pool-vanilla-cream-100: #f7eed3;
49
+ --color-pool-vanilla-cream-200: #d6c68c;
50
+ --color-pool-vanilla-cream-300: #ac9f70;
51
+ --color-pool-vanilla-cream-400: #857a55;
52
+ --color-pool-vanilla-cream-500: #5f573b;
53
+ --color-pool-vanilla-cream-600: #3b3624;
54
+ --color-pool-vanilla-cream-700: #1b180e;
55
+ --color-pool-vanilla-cream-800: #060503;
56
+ --color-pool-vanilla-cream-900: #010101;
57
+ --color-pool-vanilla-cream-base: #f7eed3;
58
+
59
+ /* ------------------------------------------------------------ */
60
+ /* Primitive */
61
+ /* ------------------------------------------------------------ */
62
+ --color-yellow-100: var(--color-pool-straw-gold-100);
63
+ --color-yellow-200: var(--color-pool-straw-gold-200);
64
+ --color-yellow-300: var(--color-pool-straw-gold-300);
65
+ --color-yellow-400: var(--color-pool-straw-gold-400);
66
+ --color-yellow-500: var(--color-pool-straw-gold-500);
67
+ --color-yellow-600: var(--color-pool-straw-gold-600);
68
+ --color-yellow-700: var(--color-pool-straw-gold-700);
69
+ --color-yellow-800: var(--color-pool-straw-gold-800);
70
+ --color-yellow-900: var(--color-pool-straw-gold-900);
71
+ --color-yellow-base: var(--color-pool-straw-gold-base);
72
+ --color-graphite-100: var(--color-pool-graphite-100);
73
+ --color-graphite-200: var(--color-pool-graphite-200);
74
+ --color-graphite-300: var(--color-pool-graphite-300);
75
+ --color-graphite-400: var(--color-pool-graphite-400);
76
+ --color-graphite-500: var(--color-pool-graphite-500);
77
+ --color-graphite-600: var(--color-pool-graphite-600);
78
+ --color-graphite-700: var(--color-pool-graphite-700);
79
+ --color-graphite-800: var(--color-pool-graphite-800);
80
+ --color-graphite-900: var(--color-pool-graphite-900);
81
+ --color-graphite-base: var(--color-pool-graphite-base);
82
+ --color-intense-cherry-100: var(--color-pool-intense-cherry-100);
83
+ --color-intense-cherry-200: var(--color-pool-intense-cherry-200);
84
+ --color-intense-cherry-300: var(--color-pool-intense-cherry-300);
85
+ --color-intense-cherry-400: var(--color-pool-intense-cherry-400);
86
+ --color-intense-cherry-500: var(--color-pool-intense-cherry-500);
87
+ --color-intense-cherry-600: var(--color-pool-intense-cherry-600);
88
+ --color-intense-cherry-700: var(--color-pool-intense-cherry-700);
89
+ --color-intense-cherry-800: var(--color-pool-intense-cherry-800);
90
+ --color-intense-cherry-900: var(--color-pool-intense-cherry-900);
91
+ --color-intense-cherry-base: var(--color-pool-intense-cherry-base);
92
+ --color-vanilla-custard-100: var(--color-pool-vanilla-custard-100);
93
+ --color-vanilla-custard-200: var(--color-pool-vanilla-custard-200);
94
+ --color-vanilla-custard-300: var(--color-pool-vanilla-custard-300);
95
+ --color-vanilla-custard-400: var(--color-pool-vanilla-custard-400);
96
+ --color-vanilla-custard-500: var(--color-pool-vanilla-custard-500);
97
+ --color-vanilla-custard-600: var(--color-pool-vanilla-custard-600);
98
+ --color-vanilla-custard-700: var(--color-pool-vanilla-custard-700);
99
+ --color-vanilla-custard-800: var(--color-pool-vanilla-custard-800);
100
+ --color-vanilla-custard-900: var(--color-pool-vanilla-custard-900);
101
+ --color-vanilla-custard-base: var(--color-pool-vanilla-custard-base);
102
+ --color-vanilla-cream-100: var(--color-pool-vanilla-cream-100);
103
+ --color-vanilla-cream-200: var(--color-pool-vanilla-cream-200);
104
+ --color-vanilla-cream-300: var(--color-pool-vanilla-cream-300);
105
+ --color-vanilla-cream-400: var(--color-pool-vanilla-cream-400);
106
+ --color-vanilla-cream-500: var(--color-pool-vanilla-cream-500);
107
+ --color-vanilla-cream-600: var(--color-pool-vanilla-cream-600);
108
+ --color-vanilla-cream-700: var(--color-pool-vanilla-cream-700);
109
+ --color-vanilla-cream-800: var(--color-pool-vanilla-cream-800);
110
+ --color-vanilla-cream-900: var(--color-pool-vanilla-cream-900);
111
+ --color-vanilla-cream-base: var(--color-pool-vanilla-cream-base);
112
+
113
+ /* ------------------------------------------------------------ */
114
+ /* Semantic */
115
+ /* ------------------------------------------------------------ */
116
+ --color-primary-100: var(--color-yellow-100);
117
+ --color-primary-200: var(--color-yellow-200);
118
+ --color-primary-300: var(--color-yellow-300);
119
+ --color-primary-400: var(--color-yellow-400);
120
+ --color-primary-500: var(--color-yellow-500);
121
+ --color-primary-600: var(--color-yellow-600);
122
+ --color-primary-700: var(--color-yellow-700);
123
+ --color-primary-800: var(--color-yellow-800);
124
+ --color-primary-900: var(--color-yellow-900);
125
+ --color-primary-base: var(--color-yellow-base);
126
+ --color-secondary-100: var(--color-vanilla-custard-100);
127
+ --color-secondary-200: var(--color-vanilla-custard-200);
128
+ --color-secondary-300: var(--color-vanilla-custard-300);
129
+ --color-secondary-400: var(--color-vanilla-custard-400);
130
+ --color-secondary-500: var(--color-vanilla-custard-500);
131
+ --color-secondary-600: var(--color-vanilla-custard-600);
132
+ --color-secondary-700: var(--color-vanilla-custard-700);
133
+ --color-secondary-800: var(--color-vanilla-custard-800);
134
+ --color-secondary-900: var(--color-vanilla-custard-900);
135
+ --color-secondary-base: var(--color-vanilla-custard-base);
136
+ --color-accent-100: var(--color-intense-cherry-100);
137
+ --color-accent-200: var(--color-intense-cherry-200);
138
+ --color-accent-300: var(--color-intense-cherry-300);
139
+ --color-accent-400: var(--color-intense-cherry-400);
140
+ --color-accent-500: var(--color-intense-cherry-500);
141
+ --color-accent-600: var(--color-intense-cherry-600);
142
+ --color-accent-700: var(--color-intense-cherry-700);
143
+ --color-accent-800: var(--color-intense-cherry-800);
144
+ --color-accent-900: var(--color-intense-cherry-900);
145
+ --color-accent-base: var(--color-intense-cherry-base);
146
+ --color-neutral-100: var(--color-graphite-100);
147
+ --color-neutral-200: var(--color-graphite-200);
148
+ --color-neutral-300: var(--color-graphite-300);
149
+ --color-neutral-400: var(--color-graphite-400);
150
+ --color-neutral-500: var(--color-graphite-500);
151
+ --color-neutral-600: var(--color-graphite-600);
152
+ --color-neutral-700: var(--color-graphite-700);
153
+ --color-neutral-800: var(--color-graphite-800);
154
+ --color-neutral-900: var(--color-graphite-900);
155
+ --color-neutral-base: var(--color-graphite-base);
156
+ --color-info-100: var(--color-vanilla-cream-300);
157
+ --color-info-200: var(--color-vanilla-cream-500);
158
+ --color-info-300: var(--color-vanilla-cream-700);
159
+ --color-info-400: var(--color-vanilla-cream-900);
160
+ --color-info-500: var(--color-vanilla-cream-base);
161
+ --color-info-600: var(--color-vanilla-cream-100);
162
+ --color-info-700: var(--color-vanilla-cream-200);
163
+ --color-info-800: var(--color-vanilla-cream-400);
164
+ --color-info-900: var(--color-vanilla-cream-600);
165
+
166
+ /* ------------------------------------------------------------ */
167
+ /* Intent */
168
+ /* ------------------------------------------------------------ */
169
+ --color-bg-page: var(--color-secondary-base);
170
+ --color-bg-subtle: var(--color-secondary-100);
171
+ --color-bg-elevated: #ffffff;
172
+ --color-bg-inset: var(--color-secondary-200);
173
+ --color-bg-primary: var(--color-primary-500);
174
+ --color-bg-primary-hover: oklch(from var(--color-primary-500) lightness(+7%));
175
+ --color-bg-primary-active: var(--color-primary-700);
176
+ --color-bg-primary-subtle: var(--color-primary-100);
177
+ --color-bg-accent: var(--color-accent-500);
178
+ --color-bg-accent-hover: var(--color-accent-600);
179
+ --color-bg-accent-subtle: var(--color-accent-100);
180
+ --color-bg-neutral: var(--color-neutral-500);
181
+ --color-bg-neutral-strong: var(--color-neutral-900);
182
+ --color-bg-info: var(--color-info-100);
183
+ --color-bg-warning: var(--color-primary-100);
184
+ --color-bg-success: var(--color-neutral-100);
185
+ --color-text-primary: var(--color-secondary-900);
186
+ --color-text-secondary: var(--color-secondary-700);
187
+ --color-text-muted: var(--color-secondary-500);
188
+ --color-text-subtle: var(--color-secondary-400);
189
+ --color-text-link: var(--color-accent-700);
190
+ --color-text-link-hover: var(--color-accent-800);
191
+ --color-text-info: var(--color-accent-700);
192
+ --color-text-warning: var(--color-primary-700);
193
+ --color-text-success: var(--color-neutral-700);
194
+ --color-border-subtle: var(--color-secondary-200);
195
+ --color-border-default: var(--color-secondary-300);
196
+ --color-border-strong: var(--color-secondary-400);
197
+ --color-border-primary: var(--color-primary-500);
198
+ --color-border-focus: var(--color-accent-500);
199
+ --color-border-info: var(--color-accent-200);
200
+ --color-border-warning: var(--color-primary-200);
201
+ --color-border-success: var(--color-neutral-200);
202
+ --color-border-neutral: var(--color-neutral-300);
203
+ --color-feedback-error: var(--color-accent-base);
204
+ }
@@ -0,0 +1,8 @@
1
+ :root {
2
+ --not-primary: calc(var(--secondary) + var(--danger));
3
+ --not-secondary: calc(var(--primary) + var(--danger));
4
+ --not-danger: calc(var(--primary) + var(--secondary));
5
+ --light: 80;
6
+ --threshold: 10;
7
+ --switch: calc((var(--light) - var(--threshold)) * 100%);
8
+ }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Do not edit directly, this file was auto-generated.
3
+ */
4
+
5
+ :root {
6
+ --cube-block-card-bg: var(--_color-bg-neutral);
7
+ --cube-block-card-border: var(--_color-border-subtle);
8
+ --cube-block-card-radius: var(--_border-radius-medium);
9
+ --cube-block-card-padding: var(--_spacing-md);
10
+ --cube-block-button-padding-x: var(--_spacing-sm);
11
+ --cube-block-button-padding-y: var(--_spacing-xs);
12
+ --cube-block-button-radius: var(--_border-radius-medium);
13
+ --cube-block-button-text: var(--_color-text-primary);
14
+ --cube-block-button-bg: var(--_color-bg-primary);
15
+ --cube-block-button-bg-hover: var(--_color-bg-primary-hover);
16
+ --cube-block-checkbox-bg: var(--_color-bg-primary);
17
+ --cube-block-checkbox-padding: var(--_spacing-xs);
18
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Do not edit directly, this file was auto-generated.
3
+ */
4
+
5
+ :root {
6
+ --cube-composition-flow-space: var(--gutter);
7
+ --cube-composition-stack-gap: var(--gutter);
8
+ --cube-composition-stack-align: start;
9
+ --cube-composition-stack-direction: var(--layout-direction);
10
+ --cube-composition-cluster-gap: var(--gutter);
11
+ --cube-composition-cluster-align: center;
12
+ --cube-composition-center-max-width: 72ch;
13
+ --cube-composition-center-padding-inline: var(--gutter);
14
+ --cube-composition-switcher-modifier: var(--layout-break-at);
15
+ --cube-composition-switcher-gap: var(--gutter);
16
+ }
@@ -0,0 +1,185 @@
1
+
2
+ /* ------------------------------------------------------------ */
3
+ /* Margin */
4
+ /* ------------------------------------------------------------ */
5
+ .margin-t-0 { margin-block-start: 0 }
6
+ .margin-t-xs { margin-block-start: var(--spacing-xs) }
7
+ .margin-t-sm { margin-block-start: var(--spacing-sm) }
8
+ .margin-t-md { margin-block-end: var(--spacing-md) }
9
+ .margin-t-lg { margin-block-end: var(--spacing-lg) }
10
+ .margin-t-xl { margin-block-start: var(--spacing-xl) }
11
+ .margin-b-0 { margin-block-end: 0 }
12
+ .margin-b-xs { margin-block-end: var(--spacing-xs) }
13
+ .margin-b-sm { margin-block-end: var(--spacing-sm) }
14
+ .margin-b-md { margin-block-end: var(--spacing-md) }
15
+ .margin-b-lg { margin-block-end: var(--spacing-lg) }
16
+ .margin-b-xl { margin-block-end: var(--spacing-xl) }
17
+ .margin-auto { margin: auto }
18
+
19
+ /* ------------------------------------------------------------ */
20
+ /* Position */
21
+ /* ------------------------------------------------------------ */
22
+ .position-relative { position: relative }
23
+ .position-absolute { position: absolute }
24
+ .position-fixed { position: fixed }
25
+ .position-top-0 { top: 0 }
26
+ .position-right-0 { right: 0 }
27
+ .position-bottom-0 { bottom: 0 }
28
+ .position-left-0 { left: 0 }
29
+
30
+ /* ------------------------------------------------------------ */
31
+ /* Display */
32
+ /* ------------------------------------------------------------ */
33
+ .none { display: none }
34
+ .block { display: block }
35
+ .inline-block { display: inline-block }
36
+ .grid { display: grid }
37
+ .flex { display: flex }
38
+ .sticky { position: sticky }
39
+
40
+ /* ------------------------------------------------------------ */
41
+ /* Align */
42
+ /* ------------------------------------------------------------ */
43
+ .align-start { --layout-align: flex-start }
44
+ .align-end { --layout-align: flex-end }
45
+ .align-center { --layout-align: center }
46
+
47
+ /* ------------------------------------------------------------ */
48
+ /* Justify */
49
+ /* ------------------------------------------------------------ */
50
+ .justify-start { --layout-justify: flex-start }
51
+ .justify-end { --layout-justify: flex-end }
52
+ .justify-center { --layout-justify: center }
53
+ .justify-between { --layout-justify: space-between }
54
+
55
+ /* ------------------------------------------------------------ */
56
+ /* Flex */
57
+ /* ------------------------------------------------------------ */
58
+ .flex-column { --layout-direction: column }
59
+ .flex-row { --layout-direction: row }
60
+ .flex-wrap { flex-wrap: wrap }
61
+
62
+ /* ------------------------------------------------------------ */
63
+ /* Gap */
64
+ /* ------------------------------------------------------------ */
65
+ .gap-xs { gap: var(--spacing-xs) }
66
+ .gap-sm { gap: var(--spacing-sm) }
67
+ .gap-md { gap: var(--spacing-md) }
68
+ .gap-lg { gap: var(--spacing-lg) }
69
+ .gap-xl { gap: var(--spacing-xl) }
70
+
71
+ /* ------------------------------------------------------------ */
72
+ /* Padding */
73
+ /* ------------------------------------------------------------ */
74
+ .padding-xs { padding: var(--spacing-xs) }
75
+ .padding-sm { padding: var(--spacing-sm) }
76
+ .padding-md { padding: var(--spacing-md) }
77
+ .padding-lg { padding: var(--spacing-lg) }
78
+ .padding-xl { padding: var(--spacing-xl) }
79
+ .padding-x-0 { padding-inline: 0 }
80
+ .padding-x-xs { padding-inline: var(--spacing-xs) }
81
+ .padding-x-sm { padding-inline: var(--spacing-sm) }
82
+ .padding-x-md { padding-inline: var(--spacing-md) }
83
+ .padding-x-lg { padding-inline: var(--spacing-lg) }
84
+ .padding-x-xl { padding-inline: var(--spacing-xl) }
85
+ .padding-y-0 { padding-block: 0 }
86
+ .padding-y-xs { padding-block: var(--spacing-xs) }
87
+ .padding-y-sm { padding-block: var(--spacing-sm) }
88
+ .padding-y-md { padding-block: var(--spacing-md) }
89
+ .padding-y-lg { padding-block: var(--spacing-lg) }
90
+ .padding-y-xl { padding-block: var(--spacing-xl) }
91
+ .padding-auto { padding: 0 }
92
+ .padding-top-0 { padding-top: 0 }
93
+ .padding-top-xs { padding-top: var(--spacing-xs) }
94
+ .padding-top-sm { padding-top: var(--spacing-sm) }
95
+ .padding-top-md { padding-top: var(--spacing-md) }
96
+ .padding-top-lg { padding-top: var(--spacing-lg) }
97
+ .padding-top-xl { padding-top: var(--spacing-xl) }
98
+ .padding-bottom-0 { padding-bottom: 0 }
99
+
100
+ /* ------------------------------------------------------------ */
101
+ /* Text */
102
+ /* ------------------------------------------------------------ */
103
+ .text-center { text-align: center }
104
+ .text-dim { opacity: 0.7 }
105
+
106
+ /* ------------------------------------------------------------ */
107
+ /* Border */
108
+ /* ------------------------------------------------------------ */
109
+ .border-solid { border-style: solid }
110
+ .border-dashed { border-style: dashed }
111
+ .border-dotted { border-style: dotted }
112
+ .border-none { border-style: none }
113
+ .border-primary { border-color: var(--color-border-primary) }
114
+ .border-secondary { border-color: var(--color-border-secondary) }
115
+ .border-accent { border-color: var(--color-border-accent) }
116
+ .border-neutral { border-color: var(--color-border-neutral) }
117
+ .border-info { border-color: var(--color-border-info) }
118
+ .border-success { border-color: var(--color-border-success) }
119
+ .border-top { border-top-width: var(--border-width-default) }
120
+ .border-bottom { border-bottom-width: var(--border-width-default) }
121
+ .border-left { border-left-width: var(--border-width-default) }
122
+ .border-right { border-right-width: var(--border-width-default) }
123
+ .border-all { border-width: var(--border-width-default) }
124
+ .border-theme-10 { border: var(--border-width-10) solid var(--theme-color) }
125
+ .border-theme-25 { border: var(--border-width-25) solid var(--theme-color) }
126
+ .border-theme-50 { border: var(--border-width-50) solid var(--theme-color) }
127
+ .border-theme-75 { border: var(--border-width-75) solid var(--theme-color) }
128
+ .border-theme-100 { border: var(--border-width-100) solid var(--theme-color) }
129
+ .border-theme-light { border: var(--border-width-small) solid var(--theme-color) }
130
+ .border-theme-medium { border: var(--border-width-medium) solid var(--theme-color) }
131
+ .border-theme-large { border: var(--border-width-large) solid var(--theme-color) }
132
+ .border-width-xsmall { border-width: var(--border-width-xsmall) }
133
+ .border-width-small { border-width: var(--border-width-small) }
134
+ .border-width-medium { border-width: var(--border-width-medium) }
135
+ .border-width-large { border-width: var(--border-width-large) }
136
+
137
+ /* ------------------------------------------------------------ */
138
+ /* Radius */
139
+ /* ------------------------------------------------------------ */
140
+ .radius-light { border-radius: var(--radius-light) }
141
+ .radius-medium { border-radius: var(--radius-medium) }
142
+ .radius-heavy { border-radius: var(--radius-heavy) }
143
+
144
+ /* ------------------------------------------------------------ */
145
+ /* Height */
146
+ /* ------------------------------------------------------------ */
147
+ .height-auto { height: auto }
148
+ .height-full { height: 100% }
149
+ .height-half { height: 50% }
150
+ .height-quarter { height: 25% }
151
+ .height-screen { height: 100svh }
152
+
153
+ /* ------------------------------------------------------------ */
154
+ /* Width */
155
+ /* ------------------------------------------------------------ */
156
+ .width-auto { width: auto }
157
+ .width-full { width: 100% }
158
+ .width-half { width: 50% }
159
+ .width-quarter { width: 25% }
160
+ .width-screen { width: 100svw }
161
+
162
+ /* ------------------------------------------------------------ */
163
+ /* Overflow */
164
+ /* ------------------------------------------------------------ */
165
+ .overflow-auto { overflow: auto }
166
+ .overflow-hidden { overflow: hidden }
167
+ .overflow-scroll { overflow: scroll }
168
+ .overflow-visible { overflow: visible }
169
+ .overflow-x-hidden { overflow-x: hidden }
170
+ .overflow-y-hidden { overflow-y: hidden }
171
+
172
+ /* ------------------------------------------------------------ */
173
+ /* Bg */
174
+ /* ------------------------------------------------------------ */
175
+ .bg-primary { background-color: var(--color-bg-primary) }
176
+ .bg-secondary { background-color: var(--color-bg-secondary) }
177
+ .bg-accent { background-color: var(--color-bg-accent) }
178
+ .bg-accent-subtle { background-color: var(--color-bg-accent-subtle) }
179
+ .bg-neutral { background-color: var(--color-bg-neutral) }
180
+ .bg-page { background-color: var(--color-bg-page) }
181
+ .bg-subtle { background-color: var(--color-bg-subtle) }
182
+ .bg-elevated { background-color: var(--color-bg-elevated) }
183
+ .bg-inset { background-color: var(--color-bg-inset) }
184
+ .bg-info { background-color: var(--color-bg-info) }
185
+ .bg-success { background-color: var(--color-bg-success) }