ui-foundations 0.1.2 → 0.3.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 (43) hide show
  1. package/README.md +64 -30
  2. package/dist/core/index.css +7 -7
  3. package/dist/main.css +462 -289
  4. package/dist/react/index.js +1 -0
  5. package/dist/react/switch.js +45 -0
  6. package/dist/tokens/css/{color.dark.tokens.css → appearance-(modes).tokens.mode-dark.css} +2 -2
  7. package/dist/tokens/css/{color.light.tokens.css → appearance-(modes).tokens.mode-light.css} +3 -3
  8. package/dist/tokens/css/{component.tokens.css → components-(ui).tokens.css} +70 -54
  9. package/dist/tokens/css/{primitives.tokens.css → core-(primitives).tokens.css} +21 -21
  10. package/dist/tokens/css/{semantic.tokens.css → semantics-(roles).tokens.css} +7 -6
  11. package/dist/tokens/css/{brand-a.tokens.css → themes-(brands).tokens.brand-a.css} +11 -11
  12. package/dist/tokens/css/{brand-b.tokens.css → themes-(brands).tokens.brand-b.css} +10 -10
  13. package/dist/tokens/json/appearance-(modes).tokens.mode-dark.json +182 -0
  14. package/dist/tokens/json/appearance-(modes).tokens.mode-light.json +182 -0
  15. package/dist/tokens/json/components-(ui).tokens.json +739 -0
  16. package/dist/tokens/json/{primitives.tokens.json → core-(primitives).tokens.json} +766 -772
  17. package/dist/tokens/json/semantics-(roles).tokens.json +203 -0
  18. package/dist/tokens/json/themes-(brands).tokens.brand-a.json +115 -0
  19. package/dist/tokens/json/themes-(brands).tokens.brand-b.json +115 -0
  20. package/dist/tokens/tokens.yaml +1068 -847
  21. package/dist/tokens/ts/{color.dark.tokens.ts → appearance-(modes).tokens.mode-dark.ts} +3 -3
  22. package/dist/tokens/ts/{color.light.tokens.ts → appearance-(modes).tokens.mode-light.ts} +4 -4
  23. package/dist/tokens/ts/{component.tokens.ts → components-(ui).tokens.ts} +71 -55
  24. package/dist/tokens/ts/{primitives.tokens.ts → core-(primitives).tokens.ts} +22 -22
  25. package/dist/tokens/ts/{semantic.tokens.ts → semantics-(roles).tokens.ts} +7 -6
  26. package/dist/tokens/ts/{brand-a.tokens.ts → themes-(brands).tokens.brand-a.ts} +13 -13
  27. package/dist/tokens/ts/{brand-b.tokens.ts → themes-(brands).tokens.brand-b.ts} +12 -12
  28. package/dist/ui/index.css +1 -0
  29. package/dist/ui/patterns/button.css +1 -0
  30. package/dist/ui/patterns/switch.css +155 -0
  31. package/docs/agentic/skills/README.md +51 -0
  32. package/docs/agentic/skills/design-ops-specialist/SKILL.md +28 -14
  33. package/docs/agentic/skills/design-system-architect/SKILL.md +106 -0
  34. package/docs/agentic/team-ai-playbook.md +10 -0
  35. package/docs/foundations/foundation-011-branching-and-release-governance.md +42 -0
  36. package/docs/foundations/foundation-012-minimal-markup-and-composition.md +42 -0
  37. package/package.json +20 -11
  38. package/dist/tokens/json/brand-a.tokens.json +0 -192
  39. package/dist/tokens/json/brand-b.tokens.json +0 -192
  40. package/dist/tokens/json/color.dark.tokens.json +0 -364
  41. package/dist/tokens/json/color.light.tokens.json +0 -364
  42. package/dist/tokens/json/component.tokens.json +0 -1101
  43. package/dist/tokens/json/semantic.tokens.json +0 -206
@@ -3,3 +3,4 @@ export { Checkbox } from "./checkbox.js";
3
3
  export { Icon } from "./icon.js";
4
4
  export { Input } from "./input.js";
5
5
  export { LabelContent, FieldLabel } from "./label.js";
6
+ export { Switch } from "./switch.js";
@@ -0,0 +1,45 @@
1
+ import React from "react";
2
+
3
+ function hasLabelContent(value) {
4
+ if (value === null || value === undefined || value === false) return false;
5
+ if (typeof value === "string") return value.trim().length > 0;
6
+ if (Array.isArray(value)) return value.some(hasLabelContent);
7
+ return true;
8
+ }
9
+
10
+ export function Switch({
11
+ className = "",
12
+ wrapperClassName = "",
13
+ label,
14
+ children,
15
+ role = "switch",
16
+ ...props
17
+ }) {
18
+ const classes = ["switch"];
19
+ if (className) classes.push(className);
20
+
21
+ const content = children ?? label;
22
+ const hasLabel = hasLabelContent(content);
23
+ const disabled = Boolean(props.disabled);
24
+ const input = React.createElement("input", {
25
+ type: "checkbox",
26
+ role,
27
+ className: classes.join(" "),
28
+ ...props,
29
+ });
30
+
31
+ if (!hasLabel) return input;
32
+
33
+ const wrapperClasses = ["switch-field"];
34
+ if (disabled) wrapperClasses.push("is-disabled");
35
+ if (wrapperClassName) wrapperClasses.push(wrapperClassName);
36
+
37
+ return React.createElement(
38
+ "label",
39
+ {
40
+ className: wrapperClasses.join(" "),
41
+ },
42
+ input,
43
+ React.createElement("span", { className: "switch-field__text" }, content),
44
+ );
45
+ }
@@ -1,8 +1,7 @@
1
1
  /* Auto-generated design tokens from Figma */
2
- /* Generated on 2026-03-04T21:56:02.559Z */
2
+ /* Generated on 2026-03-31T20:27:09.721Z */
3
3
 
4
4
  :root[data-mode="dark"] {
5
- --color-focus: var(--brand-color-primary-dark);
6
5
  --color-text-default: var(--color-neutral-800);
7
6
  --color-text-inverse: var(--color-neutral-1000);
8
7
  --color-text-disabled: var(--color-neutral-600);
@@ -29,4 +28,5 @@
29
28
  --color-overlay-hover: var(--color-neutral-alpha-200);
30
29
  --color-overlay-active: var(--color-neutral-alpha-400);
31
30
  --color-overlay-selected: var(--color-neutral-alpha-600);
31
+ --color-focus: var(--brand-color-primary-dark);
32
32
  }
@@ -1,8 +1,7 @@
1
1
  /* Auto-generated design tokens from Figma */
2
- /* Generated on 2026-03-04T21:56:02.560Z */
2
+ /* Generated on 2026-03-31T20:27:09.718Z */
3
3
 
4
4
  :root {
5
- --color-focus: var(--brand-color-primary);
6
5
  --color-text-default: var(--color-neutral-800);
7
6
  --color-text-inverse: var(--color-neutral-000);
8
7
  --color-text-disabled: var(--color-neutral-600);
@@ -24,9 +23,10 @@
24
23
  --color-border-strong: var(--color-neutral-1000);
25
24
  --color-border-brand: var(--brand-color-primary);
26
25
  --color-border-disabled: var(--color-neutral-500);
27
- --color-border-danger: var(--brand-color-functional-danger);
26
+ --color-border-danger: rgb(255 0 0);
28
27
  --color-overlay-backdrop: var(--color-neutral-alpha-400);
29
28
  --color-overlay-hover: var(--color-neutral-alpha-200);
30
29
  --color-overlay-active: var(--color-neutral-alpha-400);
31
30
  --color-overlay-selected: var(--color-neutral-alpha-600);
31
+ --color-focus: var(--brand-color-primary);
32
32
  }
@@ -1,61 +1,78 @@
1
1
  /* Auto-generated design tokens from Figma */
2
- /* Generated on 2026-03-04T21:56:02.558Z */
2
+ /* Generated on 2026-03-31T20:27:09.724Z */
3
3
 
4
4
  :root {
5
- --button-font-family: var(--brand-font-lead);
6
- --button-font-weight: var(--typography-label-font-weight);
7
- --button-font-size: var(--typography-label-font-size);
8
- --button-line-height: var(--typography-label-line-height);
9
- --button-border-size-default: var(--size-border-000);
10
5
  --button-border-size-hover: var(--size-border-100);
11
- --button-border-size-active: var(--size-border-200);
12
- --button-border-radius: var(--brand-corner-button);
13
- --button-padding-inline: var(--size-spacing-400);
14
- --button-padding-inline-icon-only: var(--size-spacing-200);
15
- --button-padding-block: var(--size-spacing-200);
16
- --button-gap: var(--size-spacing-200);
17
- --button-text-color-disabled: var(--color-text-disabled);
18
- --button-border-color-disabled: var(--color-border-disabled);
19
- --button-container-background-disabled: var(--color-fill-disabled);
20
- --button-overlay-hover: var(--color-overlay-hover);
21
- --button-overlay-active: var(--color-overlay-active);
22
- --button-height: 2.5rem;
23
- --button-solid-text-color-default: var(--color-text-inverse);
24
- --button-solid-text-color-hover: var(--color-text-inverse);
25
- --button-solid-text-color-active: var(--color-text-inverse);
26
6
  --button-solid-border-color-default: var(--color-border-brand);
27
7
  --button-solid-border-color-hover: var(--color-border-brand);
28
- --button-solid-border-color-focus: var(--color-border-brand);
29
8
  --button-solid-border-color-active: var(--color-border-brand);
9
+ --button-solid-border-color-focus: var(--color-border-brand);
10
+ --button-solid-text-color-default: var(--color-text-inverse);
30
11
  --button-solid-container-background-default: var(--color-fill-brand);
31
12
  --button-solid-container-background-hover: var(--color-fill-brand);
32
- --button-solid-container-background-focus: var(--color-fill-brand);
33
13
  --button-solid-container-background-active: var(--color-fill-brand);
34
- --button-outline-text-color-default: var(--color-text-brand);
35
- --button-outline-text-color-hover: var(--color-text-brand);
36
- --button-outline-text-color-active: var(--color-text-brand);
14
+ --button-solid-container-background-focus: var(--color-fill-brand);
15
+ --button-solid-text-color-hover: var(--color-text-inverse);
16
+ --button-solid-text-color-active: var(--color-text-inverse);
37
17
  --button-outline-border-color-default: var(--color-border-brand);
38
18
  --button-outline-border-color-hover: var(--color-border-brand);
39
19
  --button-outline-border-color-active: var(--color-border-brand);
40
20
  --button-outline-border-color-focus: var(--color-border-brand);
21
+ --button-outline-text-color-default: var(--color-text-brand);
41
22
  --button-outline-container-background-default: var(--color-fill-surface);
23
+ --button-outline-container-background-active: var(--color-fill-surface);
42
24
  --button-outline-container-background-hover: var(--color-fill-surface);
43
25
  --button-outline-container-background-focus: var(--color-fill-surface);
44
- --button-outline-container-background-active: var(--color-fill-surface);
45
- --button-ghost-text-color-default: var(--color-text-brand);
46
- --button-ghost-text-color-hover: var(--color-text-brand);
47
- --button-ghost-text-color-active: var(--color-text-brand);
48
- --button-ghost-border-color-default: var(--color-transparent);
49
- --button-ghost-border-color-hover: var(--color-transparent);
50
- --button-ghost-border-color-focus: var(--color-transparent);
51
- --button-ghost-border-color-active: var(--color-transparent);
26
+ --button-outline-text-color-hover: var(--color-text-brand);
27
+ --button-outline-text-color-active: var(--color-text-brand);
52
28
  --button-ghost-container-background-default: var(--color-fill-surface);
53
29
  --button-ghost-container-background-hover: var(--color-fill-surface);
54
30
  --button-ghost-container-background-focus: var(--color-fill-surface);
55
31
  --button-ghost-container-background-active: var(--color-fill-surface);
32
+ --button-ghost-border-color-default: var(--color-transparent);
33
+ --button-ghost-border-color-hover: var(--color-transparent);
34
+ --button-ghost-border-color-focus: var(--color-transparent);
35
+ --button-ghost-border-color-active: var(--color-transparent);
36
+ --button-ghost-text-color-default: var(--color-text-brand);
37
+ --button-ghost-text-color-hover: var(--color-text-brand);
38
+ --button-ghost-text-color-active: var(--color-text-brand);
39
+ --button-border-size-default: var(--size-border-100);
40
+ --button-font-family: var(--brand-font-lead);
41
+ --button-line-height: var(--typography-label-line-height);
42
+ --button-border-radius: var(--brand-corner-button);
43
+ --button-font-weight: var(--typography-label-font-weight);
44
+ --button-font-size: var(--typography-label-font-size);
45
+ --button-padding-inline: var(--size-spacing-400);
46
+ --button-gap: var(--size-spacing-200);
47
+ --button-padding-block: var(--size-spacing-200);
48
+ --button-container-background-disabled: var(--color-fill-disabled);
49
+ --button-border-color-disabled: var(--color-border-disabled);
50
+ --button-text-color-disabled: var(--color-text-disabled);
51
+ --button-border-size-active: var(--size-border-200);
52
+ --button-overlay-hover: var(--color-overlay-hover);
53
+ --button-overlay-active: var(--color-overlay-active);
54
+ --button-padding-inline-icon-only: var(--size-spacing-200);
55
+ --button-height-min: 2.5rem;
56
+ --button-group-gap: var(--size-spacing-200);
57
+ --button-width-min: 2.5rem;
56
58
  --modal-backdrop-color: var(--color-overlay-backdrop);
57
59
  --modal-surface-color: var(--color-fill-surface);
58
60
  --modal-surface-border-radius: var(--brand-corner-modal);
61
+ --input-text-text-color-default: var(--color-text-default);
62
+ --input-text-text-color-hover: var(--color-text-default);
63
+ --input-text-text-color-active: var(--color-text-default);
64
+ --input-text-border-color-default: var(--color-border-default);
65
+ --input-text-border-color-hover: var(--color-border-brand);
66
+ --input-text-border-color-active: var(--color-border-brand);
67
+ --input-text-border-color-focus: var(--color-border-brand);
68
+ --input-text-border-color-invalid: var(--color-border-danger);
69
+ --input-text-border-color-valid: var(--color-border-strong);
70
+ --input-text-container-background-default: var(--color-fill-surface);
71
+ --input-text-container-background-hover: var(--color-fill-surface);
72
+ --input-text-container-background-focus: var(--color-fill-surface);
73
+ --input-text-container-background-active: var(--color-fill-surface);
74
+ --input-text-text-color-placeholder: var(--color-text-subtle);
75
+ --input-text-height-min: 2.5rem;
59
76
  --input-font-family: var(--brand-font-base);
60
77
  --input-font-weight: var(--typography-body-font-weight);
61
78
  --input-font-size: var(--typography-label-font-size);
@@ -74,30 +91,29 @@
74
91
  --input-overlay-hover: var(--color-transparent);
75
92
  --input-overlay-active: var(--color-transparent);
76
93
  --input-height: 2.5rem;
77
- --input-text-text-color-placeholder: var(--color-text-subtle);
78
- --input-text-text-color-default: var(--color-text-default);
79
- --input-text-text-color-hover: var(--color-text-default);
80
- --input-text-text-color-active: var(--color-text-default);
81
- --input-text-border-color-default: var(--color-border-default);
82
- --input-text-border-color-hover: var(--color-border-brand);
83
- --input-text-border-color-active: var(--color-border-brand);
84
- --input-text-border-color-focus: var(--color-border-brand);
85
- --input-text-border-color-invalid: var(--color-border-danger);
86
- --input-text-border-color-valid: var(--color-border-strong);
87
- --input-text-container-background-default: var(--color-fill-surface);
88
- --input-text-container-background-hover: var(--color-fill-surface);
89
- --input-text-container-background-focus: var(--color-fill-surface);
90
- --input-text-container-background-active: var(--color-fill-surface);
91
- --form-gap: var(--size-spacing-400);
94
+ --input-checkbox-text-color-default: var(--color-text-default);
95
+ --input-checkbox-text-color-hover: var(--color-text-default);
96
+ --input-checkbox-text-color-active: var(--color-text-inverse);
97
+ --input-checkbox-border-color-default: var(--color-border-subtle);
98
+ --input-checkbox-border-color-hover: var(--color-border-brand);
99
+ --input-checkbox-border-color-active: var(--color-border-brand);
100
+ --input-checkbox-border-color-focus: var(--color-border-brand);
101
+ --input-checkbox-border-color-invalid: var(--color-border-danger);
102
+ --input-checkbox-border-color-valid: var(--color-border-strong);
103
+ --input-checkbox-container-background-default: var(--color-fill-surface);
104
+ --input-checkbox-container-background-hover: var(--color-fill-surface);
105
+ --input-checkbox-container-background-focus: var(--color-fill-surface);
106
+ --input-checkbox-container-background-active: var(--color-fill-brand);
107
+ --form-group-gap: var(--size-spacing-400);
108
+ --form-group-title-color: var(--color-text-default);
92
109
  --form-padding-inline: var(--size-spacing-400);
93
110
  --form-padding-block: var(--size-spacing-400);
94
111
  --form-border-radius: var(--brand-corner-card);
95
- --form-border-size: var(--size-border-100);
96
- --form-container-background: var(--color-fill-surface);
97
- --form-container-border-color: var(--color-border-subtle);
98
- --form-group-gap: var(--size-spacing-400);
99
- --form-group-title-color: var(--color-text-default);
112
+ --form-gap: var(--size-spacing-400);
100
113
  --form-field-gap: var(--size-spacing-200);
101
114
  --form-field-helper-text-color-default: var(--color-text-subtle);
102
115
  --form-field-helper-text-color-invalid: var(--color-text-danger);
116
+ --form-container-background: var(--color-fill-surface);
117
+ --form-container-border-color: var(--color-border-subtle);
118
+ --form-border-size: var(--size-border-100);
103
119
  }
@@ -1,8 +1,7 @@
1
1
  /* Auto-generated design tokens from Figma */
2
- /* Generated on 2026-03-04T21:56:02.562Z */
2
+ /* Generated on 2026-03-31T20:27:09.731Z */
3
3
 
4
4
  :root {
5
- --color-transparent: rgba(0 0 0 / 0);
6
5
  --color-neutral-100: rgb(230 230 230);
7
6
  --color-neutral-200: rgb(204 204 204);
8
7
  --color-neutral-300: rgb(179 179 179);
@@ -13,7 +12,6 @@
13
12
  --color-neutral-800: rgb(51 51 51);
14
13
  --color-neutral-900: rgb(26 26 26);
15
14
  --color-neutral-1000: rgb(0 0 0);
16
- --color-neutral-000: rgb(255 255 255);
17
15
  --color-neutral-alpha-100: rgba(0 0 0 / 0.1);
18
16
  --color-neutral-alpha-200: rgba(0 0 0 / 0.2);
19
17
  --color-neutral-alpha-300: rgba(0 0 0 / 0.3);
@@ -24,8 +22,7 @@
24
22
  --color-neutral-alpha-800: rgba(0 0 0 / 0.8);
25
23
  --color-neutral-alpha-900: rgba(0 0 0 / 0.9);
26
24
  --color-neutral-alpha-000: rgba(0 0 0 / 0);
27
- --color-brand-a-red: rgb(255 0 0);
28
- --color-brand-a-green: rgb(19 174 92);
25
+ --color-neutral-000: rgb(255 255 255);
29
26
  --color-brand-a-purple-200: rgb(222 192 255);
30
27
  --color-brand-a-purple-600: rgb(151 71 255);
31
28
  --color-brand-a-purple-800: rgb(85 26 139);
@@ -33,8 +30,8 @@
33
30
  --color-brand-a-blue-500: rgb(112 203 244);
34
31
  --color-brand-a-blue-700: rgb(12 75 243);
35
32
  --color-brand-a-blue-800: rgb(27 17 92);
36
- --color-brand-b-red: rgb(204 0 0);
37
- --color-brand-b-green: rgb(14 129 68);
33
+ --color-brand-a-green: rgb(19 174 92);
34
+ --color-brand-a-red: rgb(255 0 0);
38
35
  --color-brand-b-purple-200: rgb(196 143 255);
39
36
  --color-brand-b-purple-600: rgb(122 20 255);
40
37
  --color-brand-b-purple-800: rgb(58 18 95);
@@ -42,9 +39,12 @@
42
39
  --color-brand-b-blue-500: rgb(66 186 240);
43
40
  --color-brand-b-blue-700: rgb(10 60 194);
44
41
  --color-brand-b-blue-800: rgb(14 9 47);
42
+ --color-brand-b-red: rgb(204 0 0);
43
+ --color-brand-b-green: rgb(14 129 68);
44
+ --color-transparent: rgba(0 0 0 / 0);
45
+ --font-size-md: 1rem;
45
46
  --font-size-xs: .75rem;
46
47
  --font-size-sm: .875rem;
47
- --font-size-md: 1rem;
48
48
  --font-size-lg: 1.25rem;
49
49
  --font-size-xl: 1.5rem;
50
50
  --font-size-xxl: 2rem;
@@ -103,25 +103,25 @@
103
103
  --container-400: 768px;
104
104
  --container-500: 960px;
105
105
  --container-600: 1152px;
106
- --layout-base-grid: .25rem;
106
+ --size-border-100: .0625rem;
107
+ --size-border-200: .125rem;
108
+ --size-border-300: .1875rem;
109
+ --size-border-000: 0;
107
110
  --layout-columns: 12;
108
111
  --layout-gutter: 1rem;
109
112
  --layout-max-width: 1236px;
110
113
  --layout-column-max-width: 412px;
111
114
  --layout-float-breakpoint: 1220px;
112
- --size-border-100: .0625rem;
113
- --size-border-200: .125rem;
114
- --size-border-300: .1875rem;
115
- --size-border-000: 0;
116
- --zindex-hidden: -1;
117
- --zindex-base: 0;
118
- --zindex-raised: 1;
119
- --zindex-dropdown-base: 900;
120
- --zindex-dropdown: 1000;
121
- --zindex-sticky: 1020;
115
+ --layout-base-grid: .25rem;
122
116
  --zindex-fixed: 1030;
123
- --zindex-modal-overlay: 1040;
117
+ --zindex-sticky: 1020;
118
+ --zindex-dropdown: 1000;
119
+ --zindex-dropdown-base: 900;
124
120
  --zindex-modal: 1050;
125
- --zindex-popover: 1060;
121
+ --zindex-base: 0;
126
122
  --zindex-tooltip: 1070;
123
+ --zindex-raised: 1;
124
+ --zindex-popover: 1060;
125
+ --zindex-modal-overlay: 1040;
126
+ --zindex-hidden: -1;
127
127
  }
@@ -1,24 +1,24 @@
1
1
  /* Auto-generated design tokens from Figma */
2
- /* Generated on 2026-03-04T21:56:02.563Z */
2
+ /* Generated on 2026-03-31T20:27:09.733Z */
3
3
 
4
4
  :root {
5
- --typography-code: var(--font-family-mono);
6
5
  --typography-heading-font-family: var(--brand-font-lead);
7
- --typography-heading-font-weight: var(--font-weight-700);
6
+ --typography-heading-font-size-md: var(--font-size-md);
8
7
  --typography-heading-font-size-xs: var(--font-size-xs);
9
8
  --typography-heading-font-size-sm: var(--font-size-sm);
10
- --typography-heading-font-size-md: var(--font-size-md);
11
9
  --typography-heading-font-size-lg: var(--font-size-lg);
12
10
  --typography-heading-font-size-xl: var(--font-size-xl);
13
11
  --typography-heading-font-size-xxl: var(--font-size-xxl);
14
12
  --typography-heading-font-size-xxxl: var(--font-size-xxxl);
13
+ --typography-heading-font-weight: var(--font-weight-700);
14
+ --typography-heading-line-height-md: var(--line-height-md);
15
15
  --typography-heading-line-height-xs: var(--line-height-xs);
16
16
  --typography-heading-line-height-sm: var(--line-height-sm);
17
- --typography-heading-line-height-md: var(--line-height-md);
18
17
  --typography-heading-line-height-lg: var(--line-height-lg);
19
18
  --typography-heading-line-height-xl: var(--line-height-xl);
20
19
  --typography-heading-line-height-xxl: var(--line-height-xxl);
21
20
  --typography-heading-line-height-xxxl: var(--line-height-xxxl);
21
+ --typography-code: var(--font-family-mono);
22
22
  --typography-label-font-family: var(--brand-font-lead);
23
23
  --typography-label-font-weight: var(--font-weight-600);
24
24
  --typography-label-font-size: var(--font-size-md);
@@ -30,6 +30,7 @@
30
30
  --typography-body-line-height: var(--line-height-md);
31
31
  --corner-button-radius: var(--brand-corner-button);
32
32
  --corner-card-radius: var(--brand-corner-card);
33
- --corner-form-radius: var(--brand-corner-card);
34
33
  --corner-modal-radius: var(--brand-corner-modal);
34
+ --corner-form-radius: var(--brand-corner-card);
35
+ --corner-checkbox-radius: var(--brand-corner-input);
35
36
  }
@@ -1,22 +1,22 @@
1
1
  /* Auto-generated design tokens from Figma */
2
- /* Generated on 2026-03-04T21:56:02.552Z */
2
+ /* Generated on 2026-03-31T20:27:09.734Z */
3
3
 
4
4
  :root[data-brand="a"] {
5
+ --brand-color-functional-success: var(--color-brand-a-green);
6
+ --brand-color-functional-danger: var(--color-brand-a-red);
7
+ --brand-color-functional-base: var(--color-brand-a-blue-700);
8
+ --brand-color-functional-base-dark: var(--color-brand-a-blue-800);
5
9
  --brand-color-primary: var(--color-brand-a-purple-600);
6
- --brand-color-primary-dark: var(--color-brand-a-purple-800);
7
10
  --brand-color-accent: var(--color-brand-a-blue-500);
11
+ --brand-color-primary-dark: var(--color-brand-a-purple-800);
12
+ --brand-color-accent-dark: var(--color-brand-a-blue-700);
8
13
  --brand-color-subtle: var(--color-neutral-500);
9
- --brand-color-subtle-light: var(--color-neutral-200);
10
14
  --brand-color-subtle-dark: var(--color-neutral-800);
11
- --brand-color-accent-dark: var(--color-brand-a-blue-700);
12
- --brand-color-functional-base: var(--color-brand-a-blue-700);
13
- --brand-color-functional-base-dark: var(--color-brand-a-blue-800);
14
- --brand-color-functional-success: var(--color-brand-a-green);
15
- --brand-color-functional-danger: var(--color-brand-a-red);
16
- --brand-font-lead: var(--font-family-serif);
15
+ --brand-color-subtle-light: var(--color-neutral-200);
17
16
  --brand-font-base: var(--font-family-sans);
18
- --brand-corner-button: var(--size-radius-full);
19
- --brand-corner-input: var(--size-radius-200);
17
+ --brand-font-lead: var(--font-family-serif);
18
+ --brand-corner-button: var(--size-radius-700);
20
19
  --brand-corner-card: var(--size-radius-200);
21
20
  --brand-corner-modal: var(--size-radius-400);
21
+ --brand-corner-input: var(--size-radius-200);
22
22
  }
@@ -1,22 +1,22 @@
1
1
  /* Auto-generated design tokens from Figma */
2
- /* Generated on 2026-03-04T21:56:02.554Z */
2
+ /* Generated on 2026-03-31T20:27:09.734Z */
3
3
 
4
4
  :root[data-brand="b"] {
5
+ --brand-color-functional-success: var(--color-brand-b-green);
6
+ --brand-color-functional-danger: var(--color-brand-b-red);
7
+ --brand-color-functional-base: var(--color-brand-b-purple-600);
8
+ --brand-color-functional-base-dark: var(--color-brand-b-purple-800);
5
9
  --brand-color-primary: var(--color-brand-b-blue-500);
6
- --brand-color-primary-dark: var(--color-brand-b-blue-700);
7
10
  --brand-color-accent: var(--color-brand-b-purple-600);
11
+ --brand-color-primary-dark: var(--color-brand-b-blue-700);
12
+ --brand-color-accent-dark: var(--color-brand-b-purple-800);
8
13
  --brand-color-subtle: var(--color-neutral-500);
9
- --brand-color-subtle-light: var(--color-neutral-200);
10
14
  --brand-color-subtle-dark: var(--color-neutral-800);
11
- --brand-color-accent-dark: var(--color-brand-b-purple-800);
12
- --brand-color-functional-base: var(--color-brand-b-purple-600);
13
- --brand-color-functional-base-dark: var(--color-brand-b-purple-800);
14
- --brand-color-functional-success: var(--color-brand-b-green);
15
- --brand-color-functional-danger: var(--color-brand-b-red);
16
- --brand-font-lead: var(--font-family-serif);
15
+ --brand-color-subtle-light: var(--color-neutral-200);
17
16
  --brand-font-base: var(--font-family-sans);
17
+ --brand-font-lead: var(--font-family-serif);
18
18
  --brand-corner-button: var(--size-radius-000);
19
- --brand-corner-input: var(--size-radius-000);
20
19
  --brand-corner-card: var(--size-radius-100);
21
20
  --brand-corner-modal: var(--size-radius-200);
21
+ --brand-corner-input: var(--size-radius-000);
22
22
  }
@@ -0,0 +1,182 @@
1
+ {
2
+ "$schema": "https://www.designtokens.org/schemas/2025.10/format.json",
3
+ "Color": {
4
+ "Text": {
5
+ "Default": {
6
+ "$type": "color",
7
+ "$value": {
8
+ "$ref": "Color/Neutral/800"
9
+ }
10
+ },
11
+ "Inverse": {
12
+ "$type": "color",
13
+ "$value": {
14
+ "$ref": "Color/Neutral/000"
15
+ }
16
+ },
17
+ "Disabled": {
18
+ "$type": "color",
19
+ "$value": {
20
+ "$ref": "Color/Neutral/600"
21
+ }
22
+ },
23
+ "Brand": {
24
+ "$type": "color",
25
+ "$value": {
26
+ "$ref": "Brand/Color/Primary"
27
+ }
28
+ },
29
+ "Subtle": {
30
+ "$type": "color",
31
+ "$value": {
32
+ "$ref": "Brand/Color/Subtle"
33
+ }
34
+ },
35
+ "Strong": {
36
+ "$type": "color",
37
+ "$value": {
38
+ "$ref": "Color/Neutral/1000"
39
+ }
40
+ },
41
+ "Danger": {
42
+ "$type": "color",
43
+ "$value": {
44
+ "$ref": "Brand/Color/Functional/Danger"
45
+ }
46
+ },
47
+ "Success": {
48
+ "$type": "color",
49
+ "$value": {
50
+ "$ref": "Brand/Color/Functional/Success"
51
+ }
52
+ }
53
+ },
54
+ "Fill": {
55
+ "Surface": {
56
+ "$type": "color",
57
+ "$value": {
58
+ "$ref": "Color/Neutral/000"
59
+ }
60
+ },
61
+ "Disabled": {
62
+ "$type": "color",
63
+ "$value": {
64
+ "$ref": "Color/Neutral/300"
65
+ }
66
+ },
67
+ "Hover": {
68
+ "$type": "color",
69
+ "$value": {
70
+ "$ref": "Color/Neutral/Alpha/500"
71
+ }
72
+ },
73
+ "Brand": {
74
+ "$type": "color",
75
+ "$value": {
76
+ "$ref": "Brand/Color/Primary"
77
+ }
78
+ },
79
+ "Subtle": {
80
+ "$type": "color",
81
+ "$value": {
82
+ "$ref": "Brand/Color/Subtle Light"
83
+ }
84
+ },
85
+ "Active": {
86
+ "$type": "color",
87
+ "$value": {
88
+ "$ref": "Brand/Color/Accent"
89
+ }
90
+ },
91
+ "Danger": {
92
+ "$type": "color",
93
+ "$value": {
94
+ "$ref": "Brand/Color/Functional/Danger"
95
+ }
96
+ },
97
+ "Success": {
98
+ "$type": "color",
99
+ "$value": {
100
+ "$ref": "Brand/Color/Functional/Success"
101
+ }
102
+ }
103
+ },
104
+ "Border": {
105
+ "Default": {
106
+ "$type": "color",
107
+ "$value": {
108
+ "$ref": "Color/Neutral/800"
109
+ }
110
+ },
111
+ "Subtle": {
112
+ "$type": "color",
113
+ "$value": {
114
+ "$ref": "Brand/Color/Subtle"
115
+ }
116
+ },
117
+ "Strong": {
118
+ "$type": "color",
119
+ "$value": {
120
+ "$ref": "Color/Neutral/1000"
121
+ }
122
+ },
123
+ "Brand": {
124
+ "$type": "color",
125
+ "$value": {
126
+ "$ref": "Brand/Color/Primary"
127
+ }
128
+ },
129
+ "Disabled": {
130
+ "$type": "color",
131
+ "$value": {
132
+ "$ref": "Color/Neutral/500"
133
+ }
134
+ },
135
+ "Danger": {
136
+ "$type": "color",
137
+ "$value": {
138
+ "colorSpace": "srgb",
139
+ "components": [
140
+ 1,
141
+ 0,
142
+ 0
143
+ ],
144
+ "alpha": 1,
145
+ "hex": "#FF0000"
146
+ }
147
+ }
148
+ },
149
+ "Overlay": {
150
+ "Backdrop": {
151
+ "$type": "color",
152
+ "$value": {
153
+ "$ref": "Color/Neutral/Alpha/400"
154
+ }
155
+ },
156
+ "Hover": {
157
+ "$type": "color",
158
+ "$value": {
159
+ "$ref": "Color/Neutral/Alpha/200"
160
+ }
161
+ },
162
+ "Active": {
163
+ "$type": "color",
164
+ "$value": {
165
+ "$ref": "Color/Neutral/Alpha/400"
166
+ }
167
+ },
168
+ "Selected": {
169
+ "$type": "color",
170
+ "$value": {
171
+ "$ref": "Color/Neutral/Alpha/600"
172
+ }
173
+ }
174
+ },
175
+ "Focus": {
176
+ "$type": "color",
177
+ "$value": {
178
+ "$ref": "Brand/Color/Primary"
179
+ }
180
+ }
181
+ }
182
+ }