ui-foundations 0.1.1 → 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.
- package/README.md +68 -227
- package/dist/core/index.css +7 -7
- package/dist/main.css +462 -289
- package/dist/react/index.js +1 -0
- package/dist/react/switch.js +45 -0
- package/dist/tokens/css/{color.dark.tokens.css → appearance-(modes).tokens.mode-dark.css} +2 -2
- package/dist/tokens/css/{color.light.tokens.css → appearance-(modes).tokens.mode-light.css} +3 -3
- package/dist/tokens/css/{component.tokens.css → components-(ui).tokens.css} +70 -54
- package/dist/tokens/css/{primitives.tokens.css → core-(primitives).tokens.css} +21 -21
- package/dist/tokens/css/{semantic.tokens.css → semantics-(roles).tokens.css} +7 -6
- package/dist/tokens/css/{brand-a.tokens.css → themes-(brands).tokens.brand-a.css} +11 -11
- package/dist/tokens/css/{brand-b.tokens.css → themes-(brands).tokens.brand-b.css} +10 -10
- package/dist/tokens/json/appearance-(modes).tokens.mode-dark.json +182 -0
- package/dist/tokens/json/appearance-(modes).tokens.mode-light.json +182 -0
- package/dist/tokens/json/components-(ui).tokens.json +739 -0
- package/dist/tokens/json/{primitives.tokens.json → core-(primitives).tokens.json} +766 -772
- package/dist/tokens/json/semantics-(roles).tokens.json +203 -0
- package/dist/tokens/json/themes-(brands).tokens.brand-a.json +115 -0
- package/dist/tokens/json/themes-(brands).tokens.brand-b.json +115 -0
- package/dist/tokens/tokens.yaml +1068 -847
- package/dist/tokens/ts/{color.dark.tokens.ts → appearance-(modes).tokens.mode-dark.ts} +3 -3
- package/dist/tokens/ts/{color.light.tokens.ts → appearance-(modes).tokens.mode-light.ts} +4 -4
- package/dist/tokens/ts/{component.tokens.ts → components-(ui).tokens.ts} +71 -55
- package/dist/tokens/ts/{primitives.tokens.ts → core-(primitives).tokens.ts} +22 -22
- package/dist/tokens/ts/{semantic.tokens.ts → semantics-(roles).tokens.ts} +7 -6
- package/dist/tokens/ts/{brand-a.tokens.ts → themes-(brands).tokens.brand-a.ts} +13 -13
- package/dist/tokens/ts/{brand-b.tokens.ts → themes-(brands).tokens.brand-b.ts} +12 -12
- package/dist/ui/index.css +1 -0
- package/dist/ui/patterns/button.css +1 -0
- package/dist/ui/patterns/switch.css +155 -0
- package/docs/agentic/assistant-behavior-rules.md +16 -0
- package/docs/agentic/skills/README.md +51 -0
- package/docs/agentic/skills/design-ops-specialist/SKILL.md +60 -0
- package/docs/agentic/skills/design-system-architect/SKILL.md +106 -0
- package/docs/agentic/team-ai-playbook.md +226 -0
- package/docs/foundations/foundation-010-implementation-and-pipeline-workflow.md +82 -0
- package/docs/foundations/foundation-011-branching-and-release-governance.md +42 -0
- package/docs/foundations/foundation-012-minimal-markup-and-composition.md +42 -0
- package/package.json +24 -12
- package/dist/tokens/json/brand-a.tokens.json +0 -192
- package/dist/tokens/json/brand-b.tokens.json +0 -192
- package/dist/tokens/json/color.dark.tokens.json +0 -364
- package/dist/tokens/json/color.light.tokens.json +0 -364
- package/dist/tokens/json/component.tokens.json +0 -1101
- package/dist/tokens/json/semantic.tokens.json +0 -206
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
// Auto-generated design tokens from Figma
|
|
2
|
-
// Generated on 2026-03-
|
|
2
|
+
// Generated on 2026-03-31T20:27:09.721Z
|
|
3
3
|
|
|
4
4
|
export const tokens = {
|
|
5
5
|
"colors": {
|
|
6
|
-
"--color-focus": "var(--brand-color-primary-dark)",
|
|
7
6
|
"--color-text-default": "var(--color-neutral-800)",
|
|
8
7
|
"--color-text-inverse": "var(--color-neutral-1000)",
|
|
9
8
|
"--color-text-disabled": "var(--color-neutral-600)",
|
|
@@ -29,7 +28,8 @@ export const tokens = {
|
|
|
29
28
|
"--color-overlay-backdrop": "var(--color-neutral-alpha-400)",
|
|
30
29
|
"--color-overlay-hover": "var(--color-neutral-alpha-200)",
|
|
31
30
|
"--color-overlay-active": "var(--color-neutral-alpha-400)",
|
|
32
|
-
"--color-overlay-selected": "var(--color-neutral-alpha-600)"
|
|
31
|
+
"--color-overlay-selected": "var(--color-neutral-alpha-600)",
|
|
32
|
+
"--color-focus": "var(--brand-color-primary-dark)"
|
|
33
33
|
}
|
|
34
34
|
} as const;
|
|
35
35
|
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
// Auto-generated design tokens from Figma
|
|
2
|
-
// Generated on 2026-03-
|
|
2
|
+
// Generated on 2026-03-31T20:27:09.719Z
|
|
3
3
|
|
|
4
4
|
export const tokens = {
|
|
5
5
|
"colors": {
|
|
6
|
-
"--color-focus": "var(--brand-color-primary)",
|
|
7
6
|
"--color-text-default": "var(--color-neutral-800)",
|
|
8
7
|
"--color-text-inverse": "var(--color-neutral-000)",
|
|
9
8
|
"--color-text-disabled": "var(--color-neutral-600)",
|
|
@@ -25,11 +24,12 @@ export const tokens = {
|
|
|
25
24
|
"--color-border-strong": "var(--color-neutral-1000)",
|
|
26
25
|
"--color-border-brand": "var(--brand-color-primary)",
|
|
27
26
|
"--color-border-disabled": "var(--color-neutral-500)",
|
|
28
|
-
"--color-border-danger": "
|
|
27
|
+
"--color-border-danger": "rgb(255 0 0)",
|
|
29
28
|
"--color-overlay-backdrop": "var(--color-neutral-alpha-400)",
|
|
30
29
|
"--color-overlay-hover": "var(--color-neutral-alpha-200)",
|
|
31
30
|
"--color-overlay-active": "var(--color-neutral-alpha-400)",
|
|
32
|
-
"--color-overlay-selected": "var(--color-neutral-alpha-600)"
|
|
31
|
+
"--color-overlay-selected": "var(--color-neutral-alpha-600)",
|
|
32
|
+
"--color-focus": "var(--brand-color-primary)"
|
|
33
33
|
}
|
|
34
34
|
} as const;
|
|
35
35
|
|
|
@@ -1,62 +1,79 @@
|
|
|
1
1
|
// Auto-generated design tokens from Figma
|
|
2
|
-
// Generated on 2026-03-
|
|
2
|
+
// Generated on 2026-03-31T20:27:09.724Z
|
|
3
3
|
|
|
4
4
|
export const tokens = {
|
|
5
5
|
"components": {
|
|
6
|
-
"--button-font-family": "var(--brand-font-lead)",
|
|
7
|
-
"--button-font-weight": "var(--typography-label-font-weight)",
|
|
8
|
-
"--button-font-size": "var(--typography-label-font-size)",
|
|
9
|
-
"--button-line-height": "var(--typography-label-line-height)",
|
|
10
|
-
"--button-border-size-default": "var(--size-border-000)",
|
|
11
6
|
"--button-border-size-hover": "var(--size-border-100)",
|
|
12
|
-
"--button-border-size-active": "var(--size-border-200)",
|
|
13
|
-
"--button-border-radius": "var(--brand-corner-button)",
|
|
14
|
-
"--button-padding-inline": "var(--size-spacing-400)",
|
|
15
|
-
"--button-padding-inline-icon-only": "var(--size-spacing-200)",
|
|
16
|
-
"--button-padding-block": "var(--size-spacing-200)",
|
|
17
|
-
"--button-gap": "var(--size-spacing-200)",
|
|
18
|
-
"--button-text-color-disabled": "var(--color-text-disabled)",
|
|
19
|
-
"--button-border-color-disabled": "var(--color-border-disabled)",
|
|
20
|
-
"--button-container-background-disabled": "var(--color-fill-disabled)",
|
|
21
|
-
"--button-overlay-hover": "var(--color-overlay-hover)",
|
|
22
|
-
"--button-overlay-active": "var(--color-overlay-active)",
|
|
23
|
-
"--button-height": "2.5rem",
|
|
24
|
-
"--button-solid-text-color-default": "var(--color-text-inverse)",
|
|
25
|
-
"--button-solid-text-color-hover": "var(--color-text-inverse)",
|
|
26
|
-
"--button-solid-text-color-active": "var(--color-text-inverse)",
|
|
27
7
|
"--button-solid-border-color-default": "var(--color-border-brand)",
|
|
28
8
|
"--button-solid-border-color-hover": "var(--color-border-brand)",
|
|
29
|
-
"--button-solid-border-color-focus": "var(--color-border-brand)",
|
|
30
9
|
"--button-solid-border-color-active": "var(--color-border-brand)",
|
|
10
|
+
"--button-solid-border-color-focus": "var(--color-border-brand)",
|
|
11
|
+
"--button-solid-text-color-default": "var(--color-text-inverse)",
|
|
31
12
|
"--button-solid-container-background-default": "var(--color-fill-brand)",
|
|
32
13
|
"--button-solid-container-background-hover": "var(--color-fill-brand)",
|
|
33
|
-
"--button-solid-container-background-focus": "var(--color-fill-brand)",
|
|
34
14
|
"--button-solid-container-background-active": "var(--color-fill-brand)",
|
|
35
|
-
"--button-
|
|
36
|
-
"--button-
|
|
37
|
-
"--button-
|
|
15
|
+
"--button-solid-container-background-focus": "var(--color-fill-brand)",
|
|
16
|
+
"--button-solid-text-color-hover": "var(--color-text-inverse)",
|
|
17
|
+
"--button-solid-text-color-active": "var(--color-text-inverse)",
|
|
38
18
|
"--button-outline-border-color-default": "var(--color-border-brand)",
|
|
39
19
|
"--button-outline-border-color-hover": "var(--color-border-brand)",
|
|
40
20
|
"--button-outline-border-color-active": "var(--color-border-brand)",
|
|
41
21
|
"--button-outline-border-color-focus": "var(--color-border-brand)",
|
|
22
|
+
"--button-outline-text-color-default": "var(--color-text-brand)",
|
|
42
23
|
"--button-outline-container-background-default": "var(--color-fill-surface)",
|
|
24
|
+
"--button-outline-container-background-active": "var(--color-fill-surface)",
|
|
43
25
|
"--button-outline-container-background-hover": "var(--color-fill-surface)",
|
|
44
26
|
"--button-outline-container-background-focus": "var(--color-fill-surface)",
|
|
45
|
-
"--button-outline-
|
|
46
|
-
"--button-
|
|
47
|
-
"--button-ghost-text-color-hover": "var(--color-text-brand)",
|
|
48
|
-
"--button-ghost-text-color-active": "var(--color-text-brand)",
|
|
49
|
-
"--button-ghost-border-color-default": "var(--color-transparent)",
|
|
50
|
-
"--button-ghost-border-color-hover": "var(--color-transparent)",
|
|
51
|
-
"--button-ghost-border-color-focus": "var(--color-transparent)",
|
|
52
|
-
"--button-ghost-border-color-active": "var(--color-transparent)",
|
|
27
|
+
"--button-outline-text-color-hover": "var(--color-text-brand)",
|
|
28
|
+
"--button-outline-text-color-active": "var(--color-text-brand)",
|
|
53
29
|
"--button-ghost-container-background-default": "var(--color-fill-surface)",
|
|
54
30
|
"--button-ghost-container-background-hover": "var(--color-fill-surface)",
|
|
55
31
|
"--button-ghost-container-background-focus": "var(--color-fill-surface)",
|
|
56
32
|
"--button-ghost-container-background-active": "var(--color-fill-surface)",
|
|
33
|
+
"--button-ghost-border-color-default": "var(--color-transparent)",
|
|
34
|
+
"--button-ghost-border-color-hover": "var(--color-transparent)",
|
|
35
|
+
"--button-ghost-border-color-focus": "var(--color-transparent)",
|
|
36
|
+
"--button-ghost-border-color-active": "var(--color-transparent)",
|
|
37
|
+
"--button-ghost-text-color-default": "var(--color-text-brand)",
|
|
38
|
+
"--button-ghost-text-color-hover": "var(--color-text-brand)",
|
|
39
|
+
"--button-ghost-text-color-active": "var(--color-text-brand)",
|
|
40
|
+
"--button-border-size-default": "var(--size-border-100)",
|
|
41
|
+
"--button-font-family": "var(--brand-font-lead)",
|
|
42
|
+
"--button-line-height": "var(--typography-label-line-height)",
|
|
43
|
+
"--button-border-radius": "var(--brand-corner-button)",
|
|
44
|
+
"--button-font-weight": "var(--typography-label-font-weight)",
|
|
45
|
+
"--button-font-size": "var(--typography-label-font-size)",
|
|
46
|
+
"--button-padding-inline": "var(--size-spacing-400)",
|
|
47
|
+
"--button-gap": "var(--size-spacing-200)",
|
|
48
|
+
"--button-padding-block": "var(--size-spacing-200)",
|
|
49
|
+
"--button-container-background-disabled": "var(--color-fill-disabled)",
|
|
50
|
+
"--button-border-color-disabled": "var(--color-border-disabled)",
|
|
51
|
+
"--button-text-color-disabled": "var(--color-text-disabled)",
|
|
52
|
+
"--button-border-size-active": "var(--size-border-200)",
|
|
53
|
+
"--button-overlay-hover": "var(--color-overlay-hover)",
|
|
54
|
+
"--button-overlay-active": "var(--color-overlay-active)",
|
|
55
|
+
"--button-padding-inline-icon-only": "var(--size-spacing-200)",
|
|
56
|
+
"--button-height-min": "2.5rem",
|
|
57
|
+
"--button-group-gap": "var(--size-spacing-200)",
|
|
58
|
+
"--button-width-min": "2.5rem",
|
|
57
59
|
"--modal-backdrop-color": "var(--color-overlay-backdrop)",
|
|
58
60
|
"--modal-surface-color": "var(--color-fill-surface)",
|
|
59
61
|
"--modal-surface-border-radius": "var(--brand-corner-modal)",
|
|
62
|
+
"--input-text-text-color-default": "var(--color-text-default)",
|
|
63
|
+
"--input-text-text-color-hover": "var(--color-text-default)",
|
|
64
|
+
"--input-text-text-color-active": "var(--color-text-default)",
|
|
65
|
+
"--input-text-border-color-default": "var(--color-border-default)",
|
|
66
|
+
"--input-text-border-color-hover": "var(--color-border-brand)",
|
|
67
|
+
"--input-text-border-color-active": "var(--color-border-brand)",
|
|
68
|
+
"--input-text-border-color-focus": "var(--color-border-brand)",
|
|
69
|
+
"--input-text-border-color-invalid": "var(--color-border-danger)",
|
|
70
|
+
"--input-text-border-color-valid": "var(--color-border-strong)",
|
|
71
|
+
"--input-text-container-background-default": "var(--color-fill-surface)",
|
|
72
|
+
"--input-text-container-background-hover": "var(--color-fill-surface)",
|
|
73
|
+
"--input-text-container-background-focus": "var(--color-fill-surface)",
|
|
74
|
+
"--input-text-container-background-active": "var(--color-fill-surface)",
|
|
75
|
+
"--input-text-text-color-placeholder": "var(--color-text-subtle)",
|
|
76
|
+
"--input-text-height-min": "2.5rem",
|
|
60
77
|
"--input-font-family": "var(--brand-font-base)",
|
|
61
78
|
"--input-font-weight": "var(--typography-body-font-weight)",
|
|
62
79
|
"--input-font-size": "var(--typography-label-font-size)",
|
|
@@ -75,32 +92,31 @@ export const tokens = {
|
|
|
75
92
|
"--input-overlay-hover": "var(--color-transparent)",
|
|
76
93
|
"--input-overlay-active": "var(--color-transparent)",
|
|
77
94
|
"--input-height": "2.5rem",
|
|
78
|
-
"--input-
|
|
79
|
-
"--input-
|
|
80
|
-
"--input-
|
|
81
|
-
"--input-
|
|
82
|
-
"--input-
|
|
83
|
-
"--input-
|
|
84
|
-
"--input-
|
|
85
|
-
"--input-
|
|
86
|
-
"--input-
|
|
87
|
-
"--input-
|
|
88
|
-
"--input-
|
|
89
|
-
"--input-
|
|
90
|
-
"--input-
|
|
91
|
-
"--
|
|
92
|
-
"--form-
|
|
95
|
+
"--input-checkbox-text-color-default": "var(--color-text-default)",
|
|
96
|
+
"--input-checkbox-text-color-hover": "var(--color-text-default)",
|
|
97
|
+
"--input-checkbox-text-color-active": "var(--color-text-inverse)",
|
|
98
|
+
"--input-checkbox-border-color-default": "var(--color-border-subtle)",
|
|
99
|
+
"--input-checkbox-border-color-hover": "var(--color-border-brand)",
|
|
100
|
+
"--input-checkbox-border-color-active": "var(--color-border-brand)",
|
|
101
|
+
"--input-checkbox-border-color-focus": "var(--color-border-brand)",
|
|
102
|
+
"--input-checkbox-border-color-invalid": "var(--color-border-danger)",
|
|
103
|
+
"--input-checkbox-border-color-valid": "var(--color-border-strong)",
|
|
104
|
+
"--input-checkbox-container-background-default": "var(--color-fill-surface)",
|
|
105
|
+
"--input-checkbox-container-background-hover": "var(--color-fill-surface)",
|
|
106
|
+
"--input-checkbox-container-background-focus": "var(--color-fill-surface)",
|
|
107
|
+
"--input-checkbox-container-background-active": "var(--color-fill-brand)",
|
|
108
|
+
"--form-group-gap": "var(--size-spacing-400)",
|
|
109
|
+
"--form-group-title-color": "var(--color-text-default)",
|
|
93
110
|
"--form-padding-inline": "var(--size-spacing-400)",
|
|
94
111
|
"--form-padding-block": "var(--size-spacing-400)",
|
|
95
112
|
"--form-border-radius": "var(--brand-corner-card)",
|
|
96
|
-
"--form-
|
|
97
|
-
"--form-container-background": "var(--color-fill-surface)",
|
|
98
|
-
"--form-container-border-color": "var(--color-border-subtle)",
|
|
99
|
-
"--form-group-gap": "var(--size-spacing-400)",
|
|
100
|
-
"--form-group-title-color": "var(--color-text-default)",
|
|
113
|
+
"--form-gap": "var(--size-spacing-400)",
|
|
101
114
|
"--form-field-gap": "var(--size-spacing-200)",
|
|
102
115
|
"--form-field-helper-text-color-default": "var(--color-text-subtle)",
|
|
103
|
-
"--form-field-helper-text-color-invalid": "var(--color-text-danger)"
|
|
116
|
+
"--form-field-helper-text-color-invalid": "var(--color-text-danger)",
|
|
117
|
+
"--form-container-background": "var(--color-fill-surface)",
|
|
118
|
+
"--form-container-border-color": "var(--color-border-subtle)",
|
|
119
|
+
"--form-border-size": "var(--size-border-100)"
|
|
104
120
|
}
|
|
105
121
|
} as const;
|
|
106
122
|
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
// Auto-generated design tokens from Figma
|
|
2
|
-
// Generated on 2026-03-
|
|
2
|
+
// Generated on 2026-03-31T20:27:09.731Z
|
|
3
3
|
|
|
4
4
|
export const tokens = {
|
|
5
5
|
"colors": {
|
|
6
|
-
"--color-transparent": "rgba(0 0 0 / 0)",
|
|
7
6
|
"--color-neutral-100": "rgb(230 230 230)",
|
|
8
7
|
"--color-neutral-200": "rgb(204 204 204)",
|
|
9
8
|
"--color-neutral-300": "rgb(179 179 179)",
|
|
@@ -14,7 +13,6 @@ export const tokens = {
|
|
|
14
13
|
"--color-neutral-800": "rgb(51 51 51)",
|
|
15
14
|
"--color-neutral-900": "rgb(26 26 26)",
|
|
16
15
|
"--color-neutral-1000": "rgb(0 0 0)",
|
|
17
|
-
"--color-neutral-000": "rgb(255 255 255)",
|
|
18
16
|
"--color-neutral-alpha-100": "rgba(0 0 0 / 0.1)",
|
|
19
17
|
"--color-neutral-alpha-200": "rgba(0 0 0 / 0.2)",
|
|
20
18
|
"--color-neutral-alpha-300": "rgba(0 0 0 / 0.3)",
|
|
@@ -25,8 +23,7 @@ export const tokens = {
|
|
|
25
23
|
"--color-neutral-alpha-800": "rgba(0 0 0 / 0.8)",
|
|
26
24
|
"--color-neutral-alpha-900": "rgba(0 0 0 / 0.9)",
|
|
27
25
|
"--color-neutral-alpha-000": "rgba(0 0 0 / 0)",
|
|
28
|
-
"--color-
|
|
29
|
-
"--color-brand-a-green": "rgb(19 174 92)",
|
|
26
|
+
"--color-neutral-000": "rgb(255 255 255)",
|
|
30
27
|
"--color-brand-a-purple-200": "rgb(222 192 255)",
|
|
31
28
|
"--color-brand-a-purple-600": "rgb(151 71 255)",
|
|
32
29
|
"--color-brand-a-purple-800": "rgb(85 26 139)",
|
|
@@ -34,20 +31,23 @@ export const tokens = {
|
|
|
34
31
|
"--color-brand-a-blue-500": "rgb(112 203 244)",
|
|
35
32
|
"--color-brand-a-blue-700": "rgb(12 75 243)",
|
|
36
33
|
"--color-brand-a-blue-800": "rgb(27 17 92)",
|
|
37
|
-
"--color-brand-
|
|
38
|
-
"--color-brand-
|
|
34
|
+
"--color-brand-a-green": "rgb(19 174 92)",
|
|
35
|
+
"--color-brand-a-red": "rgb(255 0 0)",
|
|
39
36
|
"--color-brand-b-purple-200": "rgb(196 143 255)",
|
|
40
37
|
"--color-brand-b-purple-600": "rgb(122 20 255)",
|
|
41
38
|
"--color-brand-b-purple-800": "rgb(58 18 95)",
|
|
42
39
|
"--color-brand-b-blue-200": "rgb(179 226 250)",
|
|
43
40
|
"--color-brand-b-blue-500": "rgb(66 186 240)",
|
|
44
41
|
"--color-brand-b-blue-700": "rgb(10 60 194)",
|
|
45
|
-
"--color-brand-b-blue-800": "rgb(14 9 47)"
|
|
42
|
+
"--color-brand-b-blue-800": "rgb(14 9 47)",
|
|
43
|
+
"--color-brand-b-red": "rgb(204 0 0)",
|
|
44
|
+
"--color-brand-b-green": "rgb(14 129 68)",
|
|
45
|
+
"--color-transparent": "rgba(0 0 0 / 0)"
|
|
46
46
|
},
|
|
47
47
|
"typography": {
|
|
48
|
+
"--font-size-md": "1rem",
|
|
48
49
|
"--font-size-xs": ".75rem",
|
|
49
50
|
"--font-size-sm": ".875rem",
|
|
50
|
-
"--font-size-md": "1rem",
|
|
51
51
|
"--font-size-lg": "1.25rem",
|
|
52
52
|
"--font-size-xl": "1.5rem",
|
|
53
53
|
"--font-size-xxl": "2rem",
|
|
@@ -102,27 +102,27 @@ export const tokens = {
|
|
|
102
102
|
"--shadow-focus": ".5rem"
|
|
103
103
|
},
|
|
104
104
|
"components": {
|
|
105
|
-
"--
|
|
105
|
+
"--size-border-100": ".0625rem",
|
|
106
|
+
"--size-border-200": ".125rem",
|
|
107
|
+
"--size-border-300": ".1875rem",
|
|
108
|
+
"--size-border-000": "0",
|
|
106
109
|
"--layout-columns": 12,
|
|
107
110
|
"--layout-gutter": "1rem",
|
|
108
111
|
"--layout-max-width": "1236px",
|
|
109
112
|
"--layout-column-max-width": "412px",
|
|
110
113
|
"--layout-float-breakpoint": "1220px",
|
|
111
|
-
"--
|
|
112
|
-
"--size-border-200": ".125rem",
|
|
113
|
-
"--size-border-300": ".1875rem",
|
|
114
|
-
"--size-border-000": "0",
|
|
115
|
-
"--zindex-hidden": -1,
|
|
116
|
-
"--zindex-base": 0,
|
|
117
|
-
"--zindex-raised": 1,
|
|
118
|
-
"--zindex-dropdown-base": 900,
|
|
119
|
-
"--zindex-dropdown": 1000,
|
|
120
|
-
"--zindex-sticky": 1020,
|
|
114
|
+
"--layout-base-grid": ".25rem",
|
|
121
115
|
"--zindex-fixed": 1030,
|
|
122
|
-
"--zindex-
|
|
116
|
+
"--zindex-sticky": 1020,
|
|
117
|
+
"--zindex-dropdown": 1000,
|
|
118
|
+
"--zindex-dropdown-base": 900,
|
|
123
119
|
"--zindex-modal": 1050,
|
|
120
|
+
"--zindex-base": 0,
|
|
121
|
+
"--zindex-tooltip": 1070,
|
|
122
|
+
"--zindex-raised": 1,
|
|
124
123
|
"--zindex-popover": 1060,
|
|
125
|
-
"--zindex-
|
|
124
|
+
"--zindex-modal-overlay": 1040,
|
|
125
|
+
"--zindex-hidden": -1
|
|
126
126
|
},
|
|
127
127
|
"breakpoints": {
|
|
128
128
|
"--breakpoint-100": "580px",
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
// Auto-generated design tokens from Figma
|
|
2
|
-
// Generated on 2026-03-
|
|
2
|
+
// Generated on 2026-03-31T20:27:09.733Z
|
|
3
3
|
|
|
4
4
|
export const tokens = {
|
|
5
5
|
"typography": {
|
|
6
|
-
"--typography-code": "var(--font-family-mono)",
|
|
7
6
|
"--typography-heading-font-family": "var(--brand-font-lead)",
|
|
8
|
-
"--typography-heading-font-
|
|
7
|
+
"--typography-heading-font-size-md": "var(--font-size-md)",
|
|
9
8
|
"--typography-heading-font-size-xs": "var(--font-size-xs)",
|
|
10
9
|
"--typography-heading-font-size-sm": "var(--font-size-sm)",
|
|
11
|
-
"--typography-heading-font-size-md": "var(--font-size-md)",
|
|
12
10
|
"--typography-heading-font-size-lg": "var(--font-size-lg)",
|
|
13
11
|
"--typography-heading-font-size-xl": "var(--font-size-xl)",
|
|
14
12
|
"--typography-heading-font-size-xxl": "var(--font-size-xxl)",
|
|
15
13
|
"--typography-heading-font-size-xxxl": "var(--font-size-xxxl)",
|
|
14
|
+
"--typography-heading-font-weight": "var(--font-weight-700)",
|
|
15
|
+
"--typography-heading-line-height-md": "var(--line-height-md)",
|
|
16
16
|
"--typography-heading-line-height-xs": "var(--line-height-xs)",
|
|
17
17
|
"--typography-heading-line-height-sm": "var(--line-height-sm)",
|
|
18
|
-
"--typography-heading-line-height-md": "var(--line-height-md)",
|
|
19
18
|
"--typography-heading-line-height-lg": "var(--line-height-lg)",
|
|
20
19
|
"--typography-heading-line-height-xl": "var(--line-height-xl)",
|
|
21
20
|
"--typography-heading-line-height-xxl": "var(--line-height-xxl)",
|
|
22
21
|
"--typography-heading-line-height-xxxl": "var(--line-height-xxxl)",
|
|
22
|
+
"--typography-code": "var(--font-family-mono)",
|
|
23
23
|
"--typography-label-font-family": "var(--brand-font-lead)",
|
|
24
24
|
"--typography-label-font-weight": "var(--font-weight-600)",
|
|
25
25
|
"--typography-label-font-size": "var(--font-size-md)",
|
|
@@ -33,8 +33,9 @@ export const tokens = {
|
|
|
33
33
|
"radii": {
|
|
34
34
|
"--corner-button-radius": "var(--brand-corner-button)",
|
|
35
35
|
"--corner-card-radius": "var(--brand-corner-card)",
|
|
36
|
+
"--corner-modal-radius": "var(--brand-corner-modal)",
|
|
36
37
|
"--corner-form-radius": "var(--brand-corner-card)",
|
|
37
|
-
"--corner-
|
|
38
|
+
"--corner-checkbox-radius": "var(--brand-corner-input)"
|
|
38
39
|
}
|
|
39
40
|
} as const;
|
|
40
41
|
|
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
// Auto-generated design tokens from Figma
|
|
2
|
-
// Generated on 2026-03-
|
|
2
|
+
// Generated on 2026-03-31T20:27:09.734Z
|
|
3
3
|
|
|
4
4
|
export const tokens = {
|
|
5
5
|
"colors": {
|
|
6
|
+
"--brand-color-functional-success": "var(--color-brand-a-green)",
|
|
7
|
+
"--brand-color-functional-danger": "var(--color-brand-a-red)",
|
|
8
|
+
"--brand-color-functional-base": "var(--color-brand-a-blue-700)",
|
|
9
|
+
"--brand-color-functional-base-dark": "var(--color-brand-a-blue-800)",
|
|
6
10
|
"--brand-color-primary": "var(--color-brand-a-purple-600)",
|
|
7
|
-
"--brand-color-primary-dark": "var(--color-brand-a-purple-800)",
|
|
8
11
|
"--brand-color-accent": "var(--color-brand-a-blue-500)",
|
|
12
|
+
"--brand-color-primary-dark": "var(--color-brand-a-purple-800)",
|
|
13
|
+
"--brand-color-accent-dark": "var(--color-brand-a-blue-700)",
|
|
9
14
|
"--brand-color-subtle": "var(--color-neutral-500)",
|
|
10
|
-
"--brand-color-subtle-light": "var(--color-neutral-200)",
|
|
11
15
|
"--brand-color-subtle-dark": "var(--color-neutral-800)",
|
|
12
|
-
"--brand-color-
|
|
13
|
-
"--brand-color-functional-base": "var(--color-brand-a-blue-700)",
|
|
14
|
-
"--brand-color-functional-base-dark": "var(--color-brand-a-blue-800)",
|
|
15
|
-
"--brand-color-functional-success": "var(--color-brand-a-green)",
|
|
16
|
-
"--brand-color-functional-danger": "var(--color-brand-a-red)"
|
|
16
|
+
"--brand-color-subtle-light": "var(--color-neutral-200)"
|
|
17
17
|
},
|
|
18
18
|
"typography": {
|
|
19
|
-
"--brand-font-
|
|
20
|
-
"--brand-font-
|
|
19
|
+
"--brand-font-base": "var(--font-family-sans)",
|
|
20
|
+
"--brand-font-lead": "var(--font-family-serif)"
|
|
21
21
|
},
|
|
22
22
|
"radii": {
|
|
23
|
-
"--brand-corner-button": "var(--size-radius-
|
|
24
|
-
"--brand-corner-input": "var(--size-radius-200)",
|
|
23
|
+
"--brand-corner-button": "var(--size-radius-700)",
|
|
25
24
|
"--brand-corner-card": "var(--size-radius-200)",
|
|
26
|
-
"--brand-corner-modal": "var(--size-radius-400)"
|
|
25
|
+
"--brand-corner-modal": "var(--size-radius-400)",
|
|
26
|
+
"--brand-corner-input": "var(--size-radius-200)"
|
|
27
27
|
}
|
|
28
28
|
} as const;
|
|
29
29
|
|
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
// Auto-generated design tokens from Figma
|
|
2
|
-
// Generated on 2026-03-
|
|
2
|
+
// Generated on 2026-03-31T20:27:09.734Z
|
|
3
3
|
|
|
4
4
|
export const tokens = {
|
|
5
5
|
"colors": {
|
|
6
|
+
"--brand-color-functional-success": "var(--color-brand-b-green)",
|
|
7
|
+
"--brand-color-functional-danger": "var(--color-brand-b-red)",
|
|
8
|
+
"--brand-color-functional-base": "var(--color-brand-b-purple-600)",
|
|
9
|
+
"--brand-color-functional-base-dark": "var(--color-brand-b-purple-800)",
|
|
6
10
|
"--brand-color-primary": "var(--color-brand-b-blue-500)",
|
|
7
|
-
"--brand-color-primary-dark": "var(--color-brand-b-blue-700)",
|
|
8
11
|
"--brand-color-accent": "var(--color-brand-b-purple-600)",
|
|
12
|
+
"--brand-color-primary-dark": "var(--color-brand-b-blue-700)",
|
|
13
|
+
"--brand-color-accent-dark": "var(--color-brand-b-purple-800)",
|
|
9
14
|
"--brand-color-subtle": "var(--color-neutral-500)",
|
|
10
|
-
"--brand-color-subtle-light": "var(--color-neutral-200)",
|
|
11
15
|
"--brand-color-subtle-dark": "var(--color-neutral-800)",
|
|
12
|
-
"--brand-color-
|
|
13
|
-
"--brand-color-functional-base": "var(--color-brand-b-purple-600)",
|
|
14
|
-
"--brand-color-functional-base-dark": "var(--color-brand-b-purple-800)",
|
|
15
|
-
"--brand-color-functional-success": "var(--color-brand-b-green)",
|
|
16
|
-
"--brand-color-functional-danger": "var(--color-brand-b-red)"
|
|
16
|
+
"--brand-color-subtle-light": "var(--color-neutral-200)"
|
|
17
17
|
},
|
|
18
18
|
"typography": {
|
|
19
|
-
"--brand-font-
|
|
20
|
-
"--brand-font-
|
|
19
|
+
"--brand-font-base": "var(--font-family-sans)",
|
|
20
|
+
"--brand-font-lead": "var(--font-family-serif)"
|
|
21
21
|
},
|
|
22
22
|
"radii": {
|
|
23
23
|
"--brand-corner-button": "var(--size-radius-000)",
|
|
24
|
-
"--brand-corner-input": "var(--size-radius-000)",
|
|
25
24
|
"--brand-corner-card": "var(--size-radius-100)",
|
|
26
|
-
"--brand-corner-modal": "var(--size-radius-200)"
|
|
25
|
+
"--brand-corner-modal": "var(--size-radius-200)",
|
|
26
|
+
"--brand-corner-input": "var(--size-radius-000)"
|
|
27
27
|
}
|
|
28
28
|
} as const;
|
|
29
29
|
|
package/dist/ui/index.css
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
align-items: center;
|
|
7
7
|
justify-content: center;
|
|
8
8
|
white-space: nowrap;
|
|
9
|
+
min-height: var(--button-height-min);
|
|
9
10
|
background: var(--button-solid-container-background-default);
|
|
10
11
|
border-color: var(--button-solid-border-color-default);
|
|
11
12
|
border-width: var(--button-solid-border-size);
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
.switch-field {
|
|
3
|
+
display: inline-flex;
|
|
4
|
+
align-items: center;
|
|
5
|
+
gap: var(--typography-label-gap);
|
|
6
|
+
font-family: var(--typography-label-font-family);
|
|
7
|
+
font-weight: var(--typography-label-font-weight);
|
|
8
|
+
font-size: var(--typography-label-font-size);
|
|
9
|
+
line-height: var(--typography-label-line-height);
|
|
10
|
+
color: var(--color-text-default);
|
|
11
|
+
cursor: pointer;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.switch-field.is-disabled {
|
|
15
|
+
color: var(--color-text-disabled);
|
|
16
|
+
cursor: not-allowed;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.switch {
|
|
20
|
+
--_switch-inline-size: var(--size-spacing-1000);
|
|
21
|
+
--_switch-block-size: var(--size-spacing-600);
|
|
22
|
+
--_switch-padding: var(--size-spacing-100);
|
|
23
|
+
--_switch-thumb-size: calc(
|
|
24
|
+
var(--_switch-block-size) - (var(--_switch-padding) * 2)
|
|
25
|
+
);
|
|
26
|
+
inline-size: var(--_switch-inline-size);
|
|
27
|
+
block-size: var(--_switch-block-size);
|
|
28
|
+
box-sizing: border-box;
|
|
29
|
+
margin: 0;
|
|
30
|
+
appearance: none;
|
|
31
|
+
position: relative;
|
|
32
|
+
flex: 0 0 auto;
|
|
33
|
+
border-style: solid;
|
|
34
|
+
border-width: var(--size-border-100);
|
|
35
|
+
border-color: var(--color-border-default);
|
|
36
|
+
border-radius: var(--size-radius-full);
|
|
37
|
+
background: var(--color-fill-surface);
|
|
38
|
+
cursor: pointer;
|
|
39
|
+
transition:
|
|
40
|
+
background-color 160ms ease,
|
|
41
|
+
border-color 160ms ease,
|
|
42
|
+
opacity 160ms ease;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.switch::after {
|
|
46
|
+
content: "";
|
|
47
|
+
position: absolute;
|
|
48
|
+
inset-block-start: 50%;
|
|
49
|
+
inset-inline-start: var(--_switch-padding);
|
|
50
|
+
inline-size: var(--_switch-thumb-size);
|
|
51
|
+
block-size: var(--_switch-thumb-size);
|
|
52
|
+
box-sizing: border-box;
|
|
53
|
+
border-radius: var(--size-radius-full);
|
|
54
|
+
background: var(--color-border-default);
|
|
55
|
+
transform: translate(0, -50%);
|
|
56
|
+
transition:
|
|
57
|
+
transform 160ms ease,
|
|
58
|
+
background-color 160ms ease;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.switch:checked,
|
|
62
|
+
.switch.is-checked {
|
|
63
|
+
border-color: var(--color-border-brand);
|
|
64
|
+
background: var(--color-fill-brand);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.switch:checked::after,
|
|
68
|
+
.switch.is-checked::after {
|
|
69
|
+
background: var(--color-fill-surface);
|
|
70
|
+
transform: translate(
|
|
71
|
+
calc(var(--_switch-inline-size) - var(--_switch-block-size)),
|
|
72
|
+
-50%
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.switch:hover,
|
|
77
|
+
.switch.is-hover {
|
|
78
|
+
background:
|
|
79
|
+
linear-gradient(0deg, var(--color-overlay-hover), var(--color-overlay-hover)),
|
|
80
|
+
var(--color-fill-surface);
|
|
81
|
+
border-color: var(--color-border-brand);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.switch:hover::after,
|
|
85
|
+
.switch.is-hover::after {
|
|
86
|
+
background: var(--color-border-brand);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.switch:checked:hover,
|
|
90
|
+
.switch.is-checked.is-hover {
|
|
91
|
+
background:
|
|
92
|
+
linear-gradient(0deg, var(--color-overlay-hover), var(--color-overlay-hover)),
|
|
93
|
+
var(--color-fill-brand);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.switch:checked:hover::after,
|
|
97
|
+
.switch.is-checked.is-hover::after {
|
|
98
|
+
background: var(--color-fill-surface);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.switch:active,
|
|
102
|
+
.switch.is-active {
|
|
103
|
+
background:
|
|
104
|
+
linear-gradient(0deg, var(--color-overlay-active), var(--color-overlay-active)),
|
|
105
|
+
var(--color-fill-surface);
|
|
106
|
+
border-color: var(--color-border-brand);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.switch:active::after,
|
|
110
|
+
.switch.is-active::after {
|
|
111
|
+
background: var(--color-border-brand);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.switch:checked:active,
|
|
115
|
+
.switch.is-checked.is-active {
|
|
116
|
+
background:
|
|
117
|
+
linear-gradient(0deg, var(--color-overlay-active), var(--color-overlay-active)),
|
|
118
|
+
var(--color-fill-brand);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.switch:checked:active::after,
|
|
122
|
+
.switch.is-checked.is-active::after {
|
|
123
|
+
background: var(--color-fill-surface);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.switch:focus-visible,
|
|
127
|
+
.switch.is-focus-visible {
|
|
128
|
+
border-color: var(--color-border-brand);
|
|
129
|
+
outline: none;
|
|
130
|
+
box-shadow: 0 0 0 var(--shadow-focus, 0) var(--color-focus, transparent);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.switch:disabled,
|
|
134
|
+
.switch.is-disabled {
|
|
135
|
+
cursor: not-allowed;
|
|
136
|
+
opacity: 0.6;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.switch:disabled:not(:checked),
|
|
140
|
+
.switch.is-disabled:not(.is-checked) {
|
|
141
|
+
border-color: var(--color-border-disabled);
|
|
142
|
+
background: var(--color-fill-disabled);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.switch:disabled::after,
|
|
146
|
+
.switch.is-disabled::after {
|
|
147
|
+
background: var(--color-fill-surface);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.switch:checked:disabled,
|
|
151
|
+
.switch.is-checked.is-disabled {
|
|
152
|
+
border-color: var(--color-border-disabled);
|
|
153
|
+
background: var(--color-fill-brand);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Assistant rules (UI Foundations)
|
|
2
|
+
|
|
3
|
+
1. Always follow foundation rules in `/docs/foundations` as the source of truth.
|
|
4
|
+
2. Keep the 4-layer architecture: Core → Color Modes → Semantics → Components.
|
|
5
|
+
3. Components may only reference Semantics/Core tokens; no raw values in components.
|
|
6
|
+
4. Typography tokens never include color; text color lives in `Color.Text.*`.
|
|
7
|
+
5. Responsive thresholds:
|
|
8
|
+
- Viewport breakpoints in `Core.Breakpoint.*`
|
|
9
|
+
- Container query thresholds in `Core.Container.*`
|
|
10
|
+
6. Use variant-first naming: `Component.variant.part.property.state`.
|
|
11
|
+
7. Before creating a new component, run a boundary check:
|
|
12
|
+
- Prefer composition inside an existing component family when behavior is mainly layout/wrapping/grouping.
|
|
13
|
+
- Create a standalone component only if it introduces distinct semantics, API surface, or lifecycle.
|
|
14
|
+
- This decision is independent from token work: new tokens alone are not sufficient reason for a standalone component.
|
|
15
|
+
- Apply the Snowflake check: local one-off solutions stay local; shared utility can enter the system.
|
|
16
|
+
- Source of truth: `docs/foundations/foundation-009-component-boundaries-and-utility.md`.
|