@dxos/ui-theme 0.8.4-staging.ac66bdf99f → 0.9.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/LICENSE +102 -5
- package/README.md +1 -1
- package/dist/lib/browser/index.mjs +89 -867
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +89 -867
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/plugin/node-cjs/main.css +252 -119
- package/dist/plugin/node-cjs/main.css.map +3 -3
- package/dist/plugin/node-cjs/meta.json +1 -1
- package/dist/plugin/node-cjs/plugins/ThemePlugin.cjs +82 -10
- package/dist/plugin/node-cjs/plugins/ThemePlugin.cjs.map +3 -3
- package/dist/plugin/node-esm/main.css +252 -119
- package/dist/plugin/node-esm/main.css.map +3 -3
- package/dist/plugin/node-esm/meta.json +1 -1
- package/dist/plugin/node-esm/plugins/ThemePlugin.mjs +84 -12
- package/dist/plugin/node-esm/plugins/ThemePlugin.mjs.map +3 -3
- package/dist/types/src/Theme.stories.d.ts.map +1 -1
- package/dist/types/src/defs.d.ts +1 -1
- package/dist/types/src/defs.d.ts.map +1 -1
- package/dist/types/src/fragments/density.d.ts +2 -2
- package/dist/types/src/fragments/density.d.ts.map +1 -1
- package/dist/types/src/fragments/hover.d.ts +0 -1
- package/dist/types/src/fragments/hover.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +0 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/plugins/ThemePlugin.d.ts +3 -2
- package/dist/types/src/plugins/ThemePlugin.d.ts.map +1 -1
- package/dist/types/src/util/hash-styles.d.ts +12 -2
- package/dist/types/src/util/hash-styles.d.ts.map +1 -1
- package/dist/types/src/util/mx.d.ts +0 -36
- package/dist/types/src/util/mx.d.ts.map +1 -1
- package/dist/types/src/util/size.d.ts.map +1 -1
- package/dist/types/src/util/valence.d.ts +8 -2
- package/dist/types/src/util/valence.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +14 -21
- package/src/Theme.stories.tsx +94 -27
- package/src/css/DESIGN_SYSTEM.md +187 -0
- package/src/css/base/base.css +2 -2
- package/src/css/components/button.css +63 -13
- package/src/css/components/card.css +14 -0
- package/src/css/components/checkbox.css +3 -3
- package/src/css/components/focus.css +12 -12
- package/src/css/components/link.css +4 -1
- package/src/css/components/panel.css +45 -45
- package/src/css/components/state.css +99 -0
- package/src/css/components/state.md +101 -0
- package/src/css/components/surface.css +33 -11
- package/src/css/components/tag.css +25 -24
- package/src/css/integrations/codemirror.css +4 -3
- package/src/css/integrations/tldraw.css +1 -1
- package/src/css/layout/main.css +6 -0
- package/src/css/layout/size.css +16 -3
- package/src/css/theme/animation.css +31 -0
- package/src/css/theme/palette.css +34 -0
- package/src/css/theme/semantic.css +101 -60
- package/src/css/theme/spacing.css +29 -12
- package/src/css/theme/styles.css +172 -119
- package/src/css/utilities.css +42 -0
- package/src/defs.ts +3 -1
- package/src/fragments/AUDIT.md +0 -2
- package/src/fragments/density.ts +34 -7
- package/src/fragments/hover.ts +0 -2
- package/src/index.ts +1 -1
- package/src/main.css +68 -9
- package/src/plugins/ThemePlugin.ts +102 -14
- package/src/plugins/main.css +10 -7
- package/src/util/hash-styles.ts +54 -42
- package/src/util/mx.ts +1 -126
- package/src/util/valence.ts +15 -5
- package/dist/types/src/theme/components/avatar.d.ts +0 -21
- package/dist/types/src/theme/components/avatar.d.ts.map +0 -1
- package/dist/types/src/theme/components/breadcrumb.d.ts +0 -9
- package/dist/types/src/theme/components/breadcrumb.d.ts.map +0 -1
- package/dist/types/src/theme/components/button.d.ts +0 -15
- package/dist/types/src/theme/components/button.d.ts.map +0 -1
- package/dist/types/src/theme/components/card.d.ts +0 -12
- package/dist/types/src/theme/components/card.d.ts.map +0 -1
- package/dist/types/src/theme/components/dialog.d.ts +0 -17
- package/dist/types/src/theme/components/dialog.d.ts.map +0 -1
- package/dist/types/src/theme/components/focus.d.ts +0 -6
- package/dist/types/src/theme/components/focus.d.ts.map +0 -1
- package/dist/types/src/theme/components/icon-button.d.ts +0 -8
- package/dist/types/src/theme/components/icon-button.d.ts.map +0 -1
- package/dist/types/src/theme/components/icon.d.ts +0 -10
- package/dist/types/src/theme/components/icon.d.ts.map +0 -1
- package/dist/types/src/theme/components/index.d.ts +0 -27
- package/dist/types/src/theme/components/index.d.ts.map +0 -1
- package/dist/types/src/theme/components/input.d.ts +0 -115
- package/dist/types/src/theme/components/input.d.ts.map +0 -1
- package/dist/types/src/theme/components/link.d.ts +0 -7
- package/dist/types/src/theme/components/link.d.ts.map +0 -1
- package/dist/types/src/theme/components/list.d.ts +0 -14
- package/dist/types/src/theme/components/list.d.ts.map +0 -1
- package/dist/types/src/theme/components/main.d.ts +0 -28
- package/dist/types/src/theme/components/main.d.ts.map +0 -1
- package/dist/types/src/theme/components/menu.d.ts +0 -13
- package/dist/types/src/theme/components/menu.d.ts.map +0 -1
- package/dist/types/src/theme/components/message.d.ts +0 -12
- package/dist/types/src/theme/components/message.d.ts.map +0 -1
- package/dist/types/src/theme/components/popover.d.ts +0 -11
- package/dist/types/src/theme/components/popover.d.ts.map +0 -1
- package/dist/types/src/theme/components/scroll-area.d.ts +0 -32
- package/dist/types/src/theme/components/scroll-area.d.ts.map +0 -1
- package/dist/types/src/theme/components/select.d.ts +0 -13
- package/dist/types/src/theme/components/select.d.ts.map +0 -1
- package/dist/types/src/theme/components/separator.d.ts +0 -8
- package/dist/types/src/theme/components/separator.d.ts.map +0 -1
- package/dist/types/src/theme/components/skeleton.d.ts +0 -7
- package/dist/types/src/theme/components/skeleton.d.ts.map +0 -1
- package/dist/types/src/theme/components/splitter.d.ts +0 -4
- package/dist/types/src/theme/components/splitter.d.ts.map +0 -1
- package/dist/types/src/theme/components/status.d.ts +0 -9
- package/dist/types/src/theme/components/status.d.ts.map +0 -1
- package/dist/types/src/theme/components/tag.d.ts +0 -7
- package/dist/types/src/theme/components/tag.d.ts.map +0 -1
- package/dist/types/src/theme/components/toast.d.ts +0 -12
- package/dist/types/src/theme/components/toast.d.ts.map +0 -1
- package/dist/types/src/theme/components/toolbar.d.ts +0 -11
- package/dist/types/src/theme/components/toolbar.d.ts.map +0 -1
- package/dist/types/src/theme/components/tooltip.d.ts +0 -8
- package/dist/types/src/theme/components/tooltip.d.ts.map +0 -1
- package/dist/types/src/theme/components/treegrid.d.ts +0 -10
- package/dist/types/src/theme/components/treegrid.d.ts.map +0 -1
- package/dist/types/src/theme/index.d.ts +0 -4
- package/dist/types/src/theme/index.d.ts.map +0 -1
- package/dist/types/src/theme/primitives/column.d.ts +0 -29
- package/dist/types/src/theme/primitives/column.d.ts.map +0 -1
- package/dist/types/src/theme/primitives/index.d.ts +0 -3
- package/dist/types/src/theme/primitives/index.d.ts.map +0 -1
- package/dist/types/src/theme/primitives/panel.d.ts +0 -13
- package/dist/types/src/theme/primitives/panel.d.ts.map +0 -1
- package/dist/types/src/theme/theme.d.ts +0 -5
- package/dist/types/src/theme/theme.d.ts.map +0 -1
- package/src/css/components/selected.css +0 -30
- package/src/theme/components/avatar.ts +0 -95
- package/src/theme/components/breadcrumb.ts +0 -29
- package/src/theme/components/button.ts +0 -48
- package/src/theme/components/card.ts +0 -102
- package/src/theme/components/dialog.ts +0 -61
- package/src/theme/components/focus.ts +0 -33
- package/src/theme/components/icon-button.ts +0 -18
- package/src/theme/components/icon.ts +0 -28
- package/src/theme/components/index.ts +0 -30
- package/src/theme/components/input.ts +0 -171
- package/src/theme/components/link.ts +0 -25
- package/src/theme/components/list.ts +0 -46
- package/src/theme/components/main.ts +0 -34
- package/src/theme/components/menu.ts +0 -50
- package/src/theme/components/message.ts +0 -40
- package/src/theme/components/popover.ts +0 -41
- package/src/theme/components/scroll-area.ts +0 -115
- package/src/theme/components/select.ts +0 -52
- package/src/theme/components/separator.ts +0 -24
- package/src/theme/components/skeleton.ts +0 -23
- package/src/theme/components/splitter.ts +0 -20
- package/src/theme/components/status.ts +0 -32
- package/src/theme/components/tag.ts +0 -23
- package/src/theme/components/toast.ts +0 -53
- package/src/theme/components/toolbar.ts +0 -35
- package/src/theme/components/tooltip.ts +0 -27
- package/src/theme/components/treegrid.ts +0 -37
- package/src/theme/index.ts +0 -7
- package/src/theme/primitives/column.ts +0 -71
- package/src/theme/primitives/index.ts +0 -6
- package/src/theme/primitives/panel.ts +0 -43
- package/src/theme/theme.ts +0 -87
package/src/css/theme/styles.css
CHANGED
|
@@ -1,145 +1,198 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Color styles
|
|
2
|
+
* Color styles.
|
|
3
|
+
*
|
|
4
|
+
* Roles:
|
|
5
|
+
* -bg background fill (e.g., button)
|
|
6
|
+
* -bg-hover hover background fill
|
|
7
|
+
* -fg foreground for text on surface
|
|
8
|
+
* -surface background for surface
|
|
9
|
+
* -text text on base surface
|
|
10
|
+
* -border border for surface
|
|
11
|
+
*
|
|
12
|
+
* Hue/role tokens: each hue exposes bg / bg-hover / surface / fg / text / border.
|
|
13
|
+
* `fg` is the on-color for a colored bg/surface; `text` is the hue as standalone
|
|
14
|
+
* colored text on the neutral background. Semantic names (primary, error, …) alias a source hue.
|
|
15
|
+
*
|
|
16
|
+
* These tokens are literal custom properties on disk (not expanded at PostCSS time) because
|
|
17
|
+
* several pipelines read the theme without our Vite plugin chain — notably Tailwind's
|
|
18
|
+
* `@reference "…/main.css"` loader used by the lit-* packages, and tailwindcss's design-system
|
|
19
|
+
* loader used in tests. Edit them here directly.
|
|
3
20
|
*/
|
|
4
21
|
|
|
5
22
|
@theme {
|
|
6
23
|
/*
|
|
7
|
-
* Semantic
|
|
24
|
+
* Semantic — each name aliases a source hue.
|
|
8
25
|
*/
|
|
9
26
|
|
|
10
|
-
--color-
|
|
27
|
+
--color-primary-bg: var(--color-blue-bg);
|
|
28
|
+
--color-primary-bg-hover: var(--color-blue-bg-hover);
|
|
29
|
+
--color-primary-fg: var(--color-blue-fg);
|
|
30
|
+
--color-primary-surface: var(--color-blue-surface);
|
|
31
|
+
--color-primary-text: var(--color-blue-text);
|
|
32
|
+
--color-primary-border: var(--color-blue-border);
|
|
33
|
+
|
|
34
|
+
--color-secondary-bg: var(--color-green-bg);
|
|
35
|
+
--color-secondary-bg-hover: var(--color-green-bg-hover);
|
|
36
|
+
--color-secondary-fg: var(--color-green-fg);
|
|
37
|
+
--color-secondary-surface: var(--color-green-surface);
|
|
38
|
+
--color-secondary-text: var(--color-green-text);
|
|
39
|
+
--color-secondary-border: var(--color-green-border);
|
|
40
|
+
|
|
41
|
+
--color-info-bg: var(--color-cyan-bg);
|
|
42
|
+
--color-info-bg-hover: var(--color-cyan-bg-hover);
|
|
43
|
+
--color-info-fg: var(--color-cyan-fg);
|
|
11
44
|
--color-info-surface: var(--color-cyan-surface);
|
|
12
|
-
--color-info-surface-text: var(--color-cyan-surface-text);
|
|
13
45
|
--color-info-text: var(--color-cyan-text);
|
|
14
46
|
--color-info-border: var(--color-cyan-border);
|
|
15
47
|
|
|
16
|
-
--color-success-
|
|
48
|
+
--color-success-bg: var(--color-emerald-bg);
|
|
49
|
+
--color-success-bg-hover: var(--color-emerald-bg-hover);
|
|
50
|
+
--color-success-fg: var(--color-emerald-fg);
|
|
17
51
|
--color-success-surface: var(--color-emerald-surface);
|
|
18
|
-
--color-success-surface-text: var(--color-emerald-surface-text);
|
|
19
52
|
--color-success-text: var(--color-emerald-text);
|
|
20
53
|
--color-success-border: var(--color-emerald-border);
|
|
21
54
|
|
|
22
|
-
--color-warning-
|
|
55
|
+
--color-warning-bg: var(--color-amber-bg);
|
|
56
|
+
--color-warning-bg-hover: var(--color-amber-bg-hover);
|
|
57
|
+
--color-warning-fg: var(--color-amber-fg);
|
|
23
58
|
--color-warning-surface: var(--color-amber-surface);
|
|
24
|
-
--color-warning-surface-text: var(--color-amber-surface-text);
|
|
25
59
|
--color-warning-text: var(--color-amber-text);
|
|
26
60
|
--color-warning-border: var(--color-amber-border);
|
|
27
61
|
|
|
28
|
-
--color-error-
|
|
62
|
+
--color-error-bg: var(--color-rose-bg);
|
|
63
|
+
--color-error-bg-hover: var(--color-rose-bg-hover);
|
|
64
|
+
--color-error-fg: var(--color-rose-fg);
|
|
29
65
|
--color-error-surface: var(--color-rose-surface);
|
|
30
|
-
--color-error-surface-text: var(--color-rose-surface-text);
|
|
31
66
|
--color-error-text: var(--color-rose-text);
|
|
32
67
|
--color-error-border: var(--color-rose-border);
|
|
33
68
|
|
|
34
|
-
|
|
35
|
-
* Hue
|
|
69
|
+
/*
|
|
70
|
+
* Hue.
|
|
36
71
|
*/
|
|
37
72
|
|
|
38
|
-
--color-neutral-
|
|
39
|
-
--color-neutral-
|
|
40
|
-
--color-neutral-
|
|
41
|
-
--color-neutral-
|
|
42
|
-
--color-neutral-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
--color-red-
|
|
46
|
-
--color-red-
|
|
47
|
-
--color-red-
|
|
48
|
-
--color-red-
|
|
49
|
-
|
|
50
|
-
--color-
|
|
51
|
-
|
|
52
|
-
--color-orange-
|
|
53
|
-
--color-orange-
|
|
54
|
-
--color-orange-
|
|
55
|
-
|
|
56
|
-
--color-
|
|
57
|
-
--color-
|
|
58
|
-
|
|
59
|
-
--color-amber-
|
|
60
|
-
--color-amber-
|
|
61
|
-
|
|
62
|
-
--color-
|
|
63
|
-
--color-
|
|
64
|
-
--color-
|
|
65
|
-
|
|
66
|
-
--color-yellow-
|
|
67
|
-
|
|
68
|
-
--color-
|
|
69
|
-
--color-
|
|
70
|
-
--color-
|
|
71
|
-
--color-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
--color-
|
|
75
|
-
--color-
|
|
76
|
-
--color-
|
|
77
|
-
--color-
|
|
78
|
-
--color-
|
|
79
|
-
|
|
80
|
-
--color-
|
|
81
|
-
--color-
|
|
82
|
-
--color-
|
|
83
|
-
--color-
|
|
84
|
-
--color-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
--color-
|
|
88
|
-
--color-
|
|
89
|
-
--color-
|
|
90
|
-
--color-
|
|
91
|
-
|
|
92
|
-
--color-
|
|
93
|
-
|
|
94
|
-
--color-
|
|
95
|
-
--color-
|
|
96
|
-
--color-
|
|
97
|
-
|
|
98
|
-
--color-
|
|
99
|
-
--color-
|
|
100
|
-
|
|
101
|
-
--color-
|
|
102
|
-
--color-
|
|
103
|
-
|
|
104
|
-
--color-
|
|
105
|
-
--color-
|
|
106
|
-
--color-
|
|
107
|
-
|
|
108
|
-
--color-
|
|
109
|
-
|
|
110
|
-
--color-
|
|
111
|
-
--color-
|
|
112
|
-
--color-
|
|
113
|
-
--color-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
--color-
|
|
117
|
-
--color-
|
|
118
|
-
--color-
|
|
119
|
-
--color-
|
|
120
|
-
--color-
|
|
121
|
-
|
|
122
|
-
--color-
|
|
123
|
-
--color-
|
|
124
|
-
--color-
|
|
125
|
-
--color-
|
|
126
|
-
--color-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
--color-
|
|
130
|
-
--color-
|
|
131
|
-
--color-
|
|
132
|
-
--color-
|
|
133
|
-
|
|
134
|
-
--color-
|
|
135
|
-
|
|
136
|
-
--color-
|
|
137
|
-
--color-
|
|
138
|
-
--color-
|
|
139
|
-
|
|
140
|
-
--color-
|
|
141
|
-
--color-
|
|
142
|
-
|
|
143
|
-
--color-
|
|
144
|
-
--color-
|
|
73
|
+
--color-neutral-bg: var(--color-neutral-600);
|
|
74
|
+
--color-neutral-bg-hover: var(--color-neutral-700);
|
|
75
|
+
--color-neutral-fg: var(--color-neutral-900);
|
|
76
|
+
--color-neutral-surface: var(--color-neutral-400);
|
|
77
|
+
--color-neutral-text: light-dark(var(--color-neutral-800), var(--color-neutral-500));
|
|
78
|
+
--color-neutral-border: var(--color-neutral-600);
|
|
79
|
+
|
|
80
|
+
--color-red-bg: var(--color-red-600);
|
|
81
|
+
--color-red-bg-hover: var(--color-red-700);
|
|
82
|
+
--color-red-fg: var(--color-red-900);
|
|
83
|
+
--color-red-surface: var(--color-red-400);
|
|
84
|
+
--color-red-text: light-dark(var(--color-red-800), var(--color-red-500));
|
|
85
|
+
--color-red-border: var(--color-red-600);
|
|
86
|
+
|
|
87
|
+
--color-orange-bg: var(--color-orange-600);
|
|
88
|
+
--color-orange-bg-hover: var(--color-orange-700);
|
|
89
|
+
--color-orange-fg: var(--color-orange-900);
|
|
90
|
+
--color-orange-surface: var(--color-orange-400);
|
|
91
|
+
--color-orange-text: light-dark(var(--color-orange-800), var(--color-orange-500));
|
|
92
|
+
--color-orange-border: var(--color-orange-600);
|
|
93
|
+
|
|
94
|
+
--color-amber-bg: var(--color-amber-600);
|
|
95
|
+
--color-amber-bg-hover: var(--color-amber-700);
|
|
96
|
+
--color-amber-fg: var(--color-amber-900);
|
|
97
|
+
--color-amber-surface: var(--color-amber-400);
|
|
98
|
+
--color-amber-text: light-dark(var(--color-amber-800), var(--color-amber-500));
|
|
99
|
+
--color-amber-border: var(--color-amber-600);
|
|
100
|
+
|
|
101
|
+
--color-yellow-bg: var(--color-yellow-600);
|
|
102
|
+
--color-yellow-bg-hover: var(--color-yellow-700);
|
|
103
|
+
--color-yellow-fg: var(--color-yellow-900);
|
|
104
|
+
--color-yellow-surface: var(--color-yellow-400);
|
|
105
|
+
--color-yellow-text: light-dark(var(--color-yellow-800), var(--color-yellow-500));
|
|
106
|
+
--color-yellow-border: var(--color-yellow-600);
|
|
107
|
+
|
|
108
|
+
--color-lime-bg: var(--color-lime-600);
|
|
109
|
+
--color-lime-bg-hover: var(--color-lime-700);
|
|
110
|
+
--color-lime-fg: var(--color-lime-900);
|
|
111
|
+
--color-lime-surface: var(--color-lime-400);
|
|
112
|
+
--color-lime-text: light-dark(var(--color-lime-800), var(--color-lime-500));
|
|
113
|
+
--color-lime-border: var(--color-lime-600);
|
|
114
|
+
|
|
115
|
+
--color-green-bg: var(--color-green-600);
|
|
116
|
+
--color-green-bg-hover: var(--color-green-700);
|
|
117
|
+
--color-green-fg: var(--color-green-900);
|
|
118
|
+
--color-green-surface: var(--color-green-400);
|
|
119
|
+
--color-green-text: light-dark(var(--color-green-800), var(--color-green-500));
|
|
120
|
+
--color-green-border: var(--color-green-600);
|
|
121
|
+
|
|
122
|
+
--color-emerald-bg: var(--color-emerald-600);
|
|
123
|
+
--color-emerald-bg-hover: var(--color-emerald-700);
|
|
124
|
+
--color-emerald-fg: var(--color-emerald-900);
|
|
125
|
+
--color-emerald-surface: var(--color-emerald-400);
|
|
126
|
+
--color-emerald-text: light-dark(var(--color-emerald-800), var(--color-emerald-500));
|
|
127
|
+
--color-emerald-border: var(--color-emerald-600);
|
|
128
|
+
|
|
129
|
+
--color-teal-bg: var(--color-teal-600);
|
|
130
|
+
--color-teal-bg-hover: var(--color-teal-700);
|
|
131
|
+
--color-teal-fg: var(--color-teal-900);
|
|
132
|
+
--color-teal-surface: var(--color-teal-400);
|
|
133
|
+
--color-teal-text: light-dark(var(--color-teal-800), var(--color-teal-500));
|
|
134
|
+
--color-teal-border: var(--color-teal-600);
|
|
135
|
+
|
|
136
|
+
--color-cyan-bg: var(--color-cyan-600);
|
|
137
|
+
--color-cyan-bg-hover: var(--color-cyan-700);
|
|
138
|
+
--color-cyan-fg: var(--color-cyan-900);
|
|
139
|
+
--color-cyan-surface: var(--color-cyan-400);
|
|
140
|
+
--color-cyan-text: light-dark(var(--color-cyan-800), var(--color-cyan-500));
|
|
141
|
+
--color-cyan-border: var(--color-cyan-600);
|
|
142
|
+
|
|
143
|
+
--color-sky-bg: var(--color-sky-600);
|
|
144
|
+
--color-sky-bg-hover: var(--color-sky-700);
|
|
145
|
+
--color-sky-fg: var(--color-sky-900);
|
|
146
|
+
--color-sky-surface: var(--color-sky-400);
|
|
147
|
+
--color-sky-text: light-dark(var(--color-sky-800), var(--color-sky-500));
|
|
148
|
+
--color-sky-border: var(--color-sky-600);
|
|
149
|
+
|
|
150
|
+
--color-blue-bg: var(--color-blue-600);
|
|
151
|
+
--color-blue-bg-hover: var(--color-blue-700);
|
|
152
|
+
--color-blue-fg: var(--color-blue-900);
|
|
153
|
+
--color-blue-surface: var(--color-blue-400);
|
|
154
|
+
--color-blue-text: light-dark(var(--color-blue-800), var(--color-blue-500));
|
|
155
|
+
--color-blue-border: var(--color-blue-600);
|
|
156
|
+
|
|
157
|
+
--color-indigo-bg: var(--color-indigo-600);
|
|
158
|
+
--color-indigo-bg-hover: var(--color-indigo-700);
|
|
159
|
+
--color-indigo-fg: var(--color-indigo-900);
|
|
160
|
+
--color-indigo-surface: var(--color-indigo-400);
|
|
161
|
+
--color-indigo-text: light-dark(var(--color-indigo-800), var(--color-indigo-500));
|
|
162
|
+
--color-indigo-border: var(--color-indigo-600);
|
|
163
|
+
|
|
164
|
+
--color-violet-bg: var(--color-violet-600);
|
|
165
|
+
--color-violet-bg-hover: var(--color-violet-700);
|
|
166
|
+
--color-violet-fg: var(--color-violet-900);
|
|
167
|
+
--color-violet-surface: var(--color-violet-400);
|
|
168
|
+
--color-violet-text: light-dark(var(--color-violet-800), var(--color-violet-500));
|
|
169
|
+
--color-violet-border: var(--color-violet-600);
|
|
170
|
+
|
|
171
|
+
--color-purple-bg: var(--color-purple-600);
|
|
172
|
+
--color-purple-bg-hover: var(--color-purple-700);
|
|
173
|
+
--color-purple-fg: var(--color-purple-900);
|
|
174
|
+
--color-purple-surface: var(--color-purple-400);
|
|
175
|
+
--color-purple-text: light-dark(var(--color-purple-800), var(--color-purple-500));
|
|
176
|
+
--color-purple-border: var(--color-purple-600);
|
|
177
|
+
|
|
178
|
+
--color-fuchsia-bg: var(--color-fuchsia-600);
|
|
179
|
+
--color-fuchsia-bg-hover: var(--color-fuchsia-700);
|
|
180
|
+
--color-fuchsia-fg: var(--color-fuchsia-900);
|
|
181
|
+
--color-fuchsia-surface: var(--color-fuchsia-400);
|
|
182
|
+
--color-fuchsia-text: light-dark(var(--color-fuchsia-800), var(--color-fuchsia-500));
|
|
183
|
+
--color-fuchsia-border: var(--color-fuchsia-600);
|
|
184
|
+
|
|
185
|
+
--color-pink-bg: var(--color-pink-600);
|
|
186
|
+
--color-pink-bg-hover: var(--color-pink-700);
|
|
187
|
+
--color-pink-fg: var(--color-pink-900);
|
|
188
|
+
--color-pink-surface: var(--color-pink-400);
|
|
189
|
+
--color-pink-text: light-dark(var(--color-pink-800), var(--color-pink-500));
|
|
190
|
+
--color-pink-border: var(--color-pink-600);
|
|
191
|
+
|
|
192
|
+
--color-rose-bg: var(--color-rose-600);
|
|
193
|
+
--color-rose-bg-hover: var(--color-rose-700);
|
|
194
|
+
--color-rose-fg: var(--color-rose-900);
|
|
195
|
+
--color-rose-surface: var(--color-rose-400);
|
|
196
|
+
--color-rose-text: light-dark(var(--color-rose-800), var(--color-rose-500));
|
|
197
|
+
--color-rose-border: var(--color-rose-600);
|
|
145
198
|
}
|
package/src/css/utilities.css
CHANGED
|
@@ -74,3 +74,45 @@
|
|
|
74
74
|
@apply relative after:content-[""] after:absolute after:inset-0 after:rounded-[inherit]
|
|
75
75
|
after:pointer-events-none after:ring after:ring-inset after:ring-transparent;
|
|
76
76
|
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Shimmer text — animates opacity left → right across the contained text.
|
|
80
|
+
* See @keyframes shimmer-text in theme/animation.css for the keyframe definition.
|
|
81
|
+
* Geometry: mask-size 200% 100% with mask-repeat: repeat-x means each tile is
|
|
82
|
+
* 2× the element width; the keyframe slides mask-position-x by 200% (one full
|
|
83
|
+
* tile period), giving a seamless loop. The 5-stop gradient (0.4 → 1.0 → 0.4)
|
|
84
|
+
* produces a single bright pulse per cycle that traverses left → right during
|
|
85
|
+
* the first half, with a brief calm interval during the second half.
|
|
86
|
+
*/
|
|
87
|
+
@utility shimmer-text {
|
|
88
|
+
mask-image: linear-gradient(
|
|
89
|
+
90deg,
|
|
90
|
+
rgba(0, 0, 0, 0.4) 0%,
|
|
91
|
+
rgba(0, 0, 0, 0.4) 30%,
|
|
92
|
+
rgba(0, 0, 0, 1) 50%,
|
|
93
|
+
rgba(0, 0, 0, 0.4) 70%,
|
|
94
|
+
rgba(0, 0, 0, 0.4) 100%
|
|
95
|
+
);
|
|
96
|
+
-webkit-mask-image: linear-gradient(
|
|
97
|
+
90deg,
|
|
98
|
+
rgba(0, 0, 0, 0.4) 0%,
|
|
99
|
+
rgba(0, 0, 0, 0.4) 30%,
|
|
100
|
+
rgba(0, 0, 0, 1) 50%,
|
|
101
|
+
rgba(0, 0, 0, 0.4) 70%,
|
|
102
|
+
rgba(0, 0, 0, 0.4) 100%
|
|
103
|
+
);
|
|
104
|
+
mask-size: 200% 100%;
|
|
105
|
+
-webkit-mask-size: 200% 100%;
|
|
106
|
+
mask-repeat: repeat-x;
|
|
107
|
+
-webkit-mask-repeat: repeat-x;
|
|
108
|
+
animation: shimmer-text 2s linear infinite;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
@media (prefers-reduced-motion: reduce) {
|
|
112
|
+
.shimmer-text {
|
|
113
|
+
animation: none;
|
|
114
|
+
mask-image: none;
|
|
115
|
+
-webkit-mask-image: none;
|
|
116
|
+
opacity: 0.6;
|
|
117
|
+
}
|
|
118
|
+
}
|
package/src/defs.ts
CHANGED
|
@@ -34,7 +34,9 @@ export const hues: ChromaticPalette[] = [
|
|
|
34
34
|
|
|
35
35
|
export const hueShades = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950] as const;
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
// NOTE: These are the JS-side style-API role keys (see ColorStyles in util/hash-styles.ts), kept
|
|
38
|
+
// distinct from the renamed CSS custom-property suffixes (`-bg`/`-fg`).
|
|
39
|
+
export const roles = ['fill', 'surface', 'foreground', 'text', 'border'] as const;
|
|
38
40
|
|
|
39
41
|
/**
|
|
40
42
|
* Card size constants (Tailwind spacing units).
|
package/src/fragments/AUDIT.md
CHANGED
|
@@ -16,7 +16,6 @@ External packages importing fragment definitions from `ui-theme/src/fragments`.
|
|
|
16
16
|
| `focus.ts` | `focusRing` | 2 | 5 |
|
|
17
17
|
| `focus.ts` | `subduedFocus` | - | 2 |
|
|
18
18
|
| `focus.ts` | `staticFocusRing` | - | 1 |
|
|
19
|
-
| `hover.ts` | `subtleHover` | 4 | - |
|
|
20
19
|
| `hover.ts` | `ghostHover` | 8 | 2 |
|
|
21
20
|
| `hover.ts` | `ghostFocusWithin` | 1 | - |
|
|
22
21
|
| `hover.ts` | `hoverableControls` | 9 | - |
|
|
@@ -53,5 +52,4 @@ External packages importing fragment definitions from `ui-theme/src/fragments`.
|
|
|
53
52
|
|
|
54
53
|
**Completely unused:** 7 fragments
|
|
55
54
|
|
|
56
|
-
- `subtleHover` from `hover.ts`
|
|
57
55
|
- `hoverableOpenControlItem`, `groupHoverControlItemWithTransition` from `hover.ts` (only 2-3 uses)
|
package/src/fragments/density.ts
CHANGED
|
@@ -4,13 +4,40 @@
|
|
|
4
4
|
|
|
5
5
|
import { type Density } from '@dxos/ui-types';
|
|
6
6
|
|
|
7
|
-
const
|
|
8
|
-
const
|
|
7
|
+
const lgBlockSize = 'min-h-[2.5rem]';
|
|
8
|
+
const mdBlockSize = 'min-h-[2.5rem] pointer-fine:min-h-[2rem]';
|
|
9
|
+
const smBlockSize = 'min-h-[1.75rem]';
|
|
10
|
+
const xsBlockSize = 'min-h-[1.5rem]';
|
|
9
11
|
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
+
const lgDimensions = `${lgBlockSize} px-3`;
|
|
13
|
+
const mdDimensions = `${mdBlockSize} px-2`;
|
|
14
|
+
const smDimensions = `${smBlockSize} px-1.5`;
|
|
15
|
+
const xsDimensions = `${xsBlockSize} px-1`;
|
|
12
16
|
|
|
13
|
-
export const densityDimensions = (density: Density = '
|
|
14
|
-
density
|
|
17
|
+
export const densityDimensions = (density: Density = 'md') => {
|
|
18
|
+
switch (density) {
|
|
19
|
+
case 'lg':
|
|
20
|
+
return lgDimensions;
|
|
21
|
+
case 'sm':
|
|
22
|
+
return smDimensions;
|
|
23
|
+
case 'xs':
|
|
24
|
+
return xsDimensions;
|
|
25
|
+
case 'md':
|
|
26
|
+
default:
|
|
27
|
+
return mdDimensions;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
15
30
|
|
|
16
|
-
export const densityBlockSize = (density: Density = '
|
|
31
|
+
export const densityBlockSize = (density: Density = 'md') => {
|
|
32
|
+
switch (density) {
|
|
33
|
+
case 'lg':
|
|
34
|
+
return lgBlockSize;
|
|
35
|
+
case 'sm':
|
|
36
|
+
return smBlockSize;
|
|
37
|
+
case 'xs':
|
|
38
|
+
return xsBlockSize;
|
|
39
|
+
case 'md':
|
|
40
|
+
default:
|
|
41
|
+
return mdBlockSize;
|
|
42
|
+
}
|
|
43
|
+
};
|
package/src/fragments/hover.ts
CHANGED
package/src/index.ts
CHANGED
package/src/main.css
CHANGED
|
@@ -11,7 +11,17 @@
|
|
|
11
11
|
*/
|
|
12
12
|
@layer properties, theme, dx-tokens, user-tokens, base, tw-base, dx-base, components, tw-components, dx-components, utilities;
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
/**
|
|
15
|
+
* `source(none)` disables Tailwind 4's automatic content discovery (which
|
|
16
|
+
* scans the project root, including `publicDir`). With auto-detection on,
|
|
17
|
+
* every write to `public/icons.svg` from `vite-plugin-icons` triggers a
|
|
18
|
+
* Tailwind CSS regeneration, which invalidates `main.css` through its
|
|
19
|
+
* import graph and produces a 3–5-ping HMR storm per icon-sprite write
|
|
20
|
+
* during cold-start (icons land in tight bursts as plugin chunks stream
|
|
21
|
+
* in). Explicit `@source` directives below replace the auto-scan with a
|
|
22
|
+
* stable, source-only set.
|
|
23
|
+
*/
|
|
24
|
+
@import 'tailwindcss' source(none);
|
|
15
25
|
|
|
16
26
|
/* @theme extensions */
|
|
17
27
|
@import './css/theme/animation.css';
|
|
@@ -28,6 +38,7 @@
|
|
|
28
38
|
|
|
29
39
|
/* @layer dx-components (components) */
|
|
30
40
|
@import './css/components/button.css';
|
|
41
|
+
@import './css/components/card.css';
|
|
31
42
|
@import './css/components/checkbox.css';
|
|
32
43
|
@import './css/components/dialog.css';
|
|
33
44
|
@import './css/components/focus.css';
|
|
@@ -35,7 +46,7 @@
|
|
|
35
46
|
@import './css/components/panel.css';
|
|
36
47
|
@import './css/components/link.css';
|
|
37
48
|
@import './css/components/scrollbar.css';
|
|
38
|
-
@import './css/components/
|
|
49
|
+
@import './css/components/state.css';
|
|
39
50
|
@import './css/components/surface.css';
|
|
40
51
|
@import './css/components/tag.css';
|
|
41
52
|
@import './css/components/text.css';
|
|
@@ -54,15 +65,63 @@
|
|
|
54
65
|
@import './css/integrations/tldraw.css';
|
|
55
66
|
|
|
56
67
|
/**
|
|
57
|
-
*
|
|
68
|
+
* With `source(none)` on the Tailwind import above, these are the *only*
|
|
69
|
+
* paths Tailwind scans for utility classes. Cover every workspace source
|
|
70
|
+
* directory so lazy-loaded plugin / UI / SDK chunks don't surface new
|
|
71
|
+
* utilities mid-session, and root-level HTML entrypoints (index.html,
|
|
72
|
+
* internal.html, …) are visible too.
|
|
73
|
+
*
|
|
74
|
+
* Paths are relative to this file (`packages/ui/ui-theme/src/main.css`):
|
|
75
|
+
* ../../../ → `packages/`
|
|
76
|
+
* ../../../../tools/ → `tools/`
|
|
77
|
+
*
|
|
78
|
+
* Tailwind ignores `node_modules` and common build/output dirs by default,
|
|
79
|
+
* so a broad workspace glob is safe *for scanning*.
|
|
80
|
+
*
|
|
81
|
+
* NOTE: Tailwind's scanner respects `.gitignore` (so `dist/` is never
|
|
82
|
+
* scanned), but it hands Vite a coarse `dir-dependency` glob and Vite
|
|
83
|
+
* re-expands that itself, ignoring only `node_modules`. That re-expansion
|
|
84
|
+
* sweeps `dist/**` `.d.ts` files into the watch set and causes a `main.css`
|
|
85
|
+
* HMR storm on every package rebuild. Build outputs are excluded from the
|
|
86
|
+
* dev watcher in `plugins/ThemePlugin.ts` (`server.watch.ignored`) rather
|
|
87
|
+
* than here, because `@source not` does NOT propagate to the glob Vite
|
|
88
|
+
* re-expands.
|
|
89
|
+
*/
|
|
90
|
+
@source '../../../**/*.{ts,tsx,html}';
|
|
91
|
+
@source '../../../../tools/**/*.{ts,tsx,html}';
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Exclude generated/static data files that have no Tailwind classes but are
|
|
95
|
+
* large enough to dominate scan time. The oxide scanner tokenizes every byte;
|
|
96
|
+
* a single 5MB geo-data file can pin Vite at 100% CPU for tens of seconds on
|
|
97
|
+
* a cold start.
|
|
98
|
+
*/
|
|
99
|
+
@source not '../../../ui/react-ui-geo/data/**';
|
|
100
|
+
@source not '../../../ui/solid-ui-geo/data/**';
|
|
101
|
+
@source not '../../../apps/composer-app/src/plugins/welcome/components/Welcome/hero-image.ts';
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Force-emit CSS variables for the full color palette for all:
|
|
58
105
|
* --color-{hue}-{shade}
|
|
59
106
|
* --color-{hue}-{style}
|
|
60
107
|
*/
|
|
61
|
-
@source inline(
|
|
62
|
-
@source inline(
|
|
63
|
-
@source inline(
|
|
64
|
-
@source inline(
|
|
65
|
-
@source inline(
|
|
108
|
+
@source inline('bg-{neutral,red,orange,amber,yellow,lime,green,emerald,teal,cyan,sky,blue,indigo,violet,purple,fuchsia,pink,rose}-{50,100,200,300,400,500,600,700,800,900,950}');
|
|
109
|
+
@source inline('bg-{neutral,red,orange,amber,yellow,lime,green,emerald,teal,cyan,sky,blue,indigo,violet,purple,fuchsia,pink,rose}-{bg,bg-hover,fg,surface,text,border}');
|
|
110
|
+
@source inline('bg-{primary,secondary}-{50,100,200,300,400,500,600,700,800,900,950}');
|
|
111
|
+
@source inline('border-{neutral,red,orange,amber,yellow,lime,green,emerald,teal,cyan,sky,blue,indigo,violet,purple,fuchsia,pink,rose}-border');
|
|
112
|
+
@source inline('bg-{info,success,warning,error}-{bg,surface,fg,text,border}');
|
|
113
|
+
@source inline('border-{info,success,warning,error}-border');
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Force-emit tokens consumed by web components / .pcss files outside the
|
|
117
|
+
* Tailwind source-scan graph (e.g. lit-grid's dx-grid.pcss uses var(--color-grid-line)).
|
|
118
|
+
*/
|
|
119
|
+
@source inline('bg-grid-{surface,fg,line,highlight,comment,comment-active,selection-surface,selection-fg}');
|
|
120
|
+
/*
|
|
121
|
+
* Sidebar surfaces alias each other (e.g. header-surface -> l0-surface); force-emit so the vars
|
|
122
|
+
* exist in apps that use the alias but not the underlying utility (e.g. devtools).
|
|
123
|
+
*/
|
|
124
|
+
@source inline('bg-{l0,r0,l1,r1}-surface');
|
|
66
125
|
|
|
67
126
|
/**
|
|
68
127
|
* Plugins must come after all imports.
|
|
@@ -84,4 +143,4 @@
|
|
|
84
143
|
/** Supports mouse/trackpad (Web) */
|
|
85
144
|
@custom-variant hover-hover (@media (hover: hover));
|
|
86
145
|
/** Active navigation */
|
|
87
|
-
@custom-variant is-current (&[aria-current]:not([aria-current=
|
|
146
|
+
@custom-variant is-current (&[aria-current]:not([aria-current='false']));
|