@skaile/brand 0.4.0 → 0.5.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/package.json +1 -1
- package/src/css/theme.css +100 -30
- package/src/tokens.json +42 -8
package/package.json
CHANGED
package/src/css/theme.css
CHANGED
|
@@ -22,21 +22,25 @@
|
|
|
22
22
|
:root,
|
|
23
23
|
:root[data-theme="light"],
|
|
24
24
|
.light {
|
|
25
|
-
|
|
25
|
+
/* The real property, not a custom one: this is what makes the UA paint
|
|
26
|
+
scrollbars, selects and date pickers to match the theme. */
|
|
27
|
+
color-scheme: light;
|
|
26
28
|
|
|
27
29
|
/* Core palette */
|
|
28
|
-
/*
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
/* Light lifts its panels off the page; dark sets them into it. The two
|
|
31
|
+
directions are deliberate and were chosen against renders of both: on a
|
|
32
|
+
dark ground a panel reads as a recess, on a light one it reads as a card,
|
|
33
|
+
and forcing one rule onto both gave light a set of grey wells. What the
|
|
34
|
+
themes do share is temperature — every grey here has zero saturation, as
|
|
35
|
+
the platform's dark design does. */
|
|
36
|
+
--background: hsl(0 0% 94%);
|
|
34
37
|
--foreground: hsl(0 0% 11%);
|
|
35
|
-
--card: hsl(0 0%
|
|
38
|
+
--card: hsl(0 0% 100%);
|
|
36
39
|
--card-foreground: hsl(0 0% 11%);
|
|
37
|
-
/* Level with the
|
|
38
|
-
|
|
39
|
-
|
|
40
|
+
/* Level with the panel, not with the page: a popover floats above the page,
|
|
41
|
+
so it takes the panel's surface. Card and popover being the same white is
|
|
42
|
+
deliberate and is what stock shadcn light does — not one of them left
|
|
43
|
+
un-bumped. */
|
|
40
44
|
--popover: hsl(0 0% 100%);
|
|
41
45
|
--popover-foreground: hsl(0 0% 11%);
|
|
42
46
|
--primary: hsl(267 100% 50%);
|
|
@@ -55,12 +59,16 @@
|
|
|
55
59
|
--border: hsl(0 0% 86%);
|
|
56
60
|
--input: hsl(0 0% 86%);
|
|
57
61
|
--ring: hsl(267 100% 50%);
|
|
58
|
-
/* Below the
|
|
59
|
-
|
|
60
|
-
--tab-bar: hsl(0 0%
|
|
62
|
+
/* Below the page, so an active tab rises out of the strip and meets the
|
|
63
|
+
panel it belongs to. */
|
|
64
|
+
--tab-bar: hsl(0 0% 91%);
|
|
61
65
|
/* The surface a panel's own content sinks into — the file viewer beside the
|
|
62
|
-
tree.
|
|
63
|
-
|
|
66
|
+
tree. One step below the panel, which here leaves it between the panel and
|
|
67
|
+
the page rather than below both, as in dark.
|
|
68
|
+
It happens to share 96% with --secondary/--muted/--accent above. That is a
|
|
69
|
+
coincidence of this ramp, not a coupling: those three style UI elements,
|
|
70
|
+
this one is a depth. Moving it need not move them. */
|
|
71
|
+
--surface-sunken: hsl(0 0% 96%);
|
|
64
72
|
|
|
65
73
|
/* Skaile-specific */
|
|
66
74
|
--color-success: hsl(161.4 93.5% 30.4%);
|
|
@@ -69,7 +77,7 @@
|
|
|
69
77
|
--color-warning-foreground: hsl(0 0% 11%);
|
|
70
78
|
--color-ai-accent: hsl(37.7 92.1% 50.2%);
|
|
71
79
|
--color-primary-bright: hsl(267 100% 63%);
|
|
72
|
-
--color-surface: hsl(0 0%
|
|
80
|
+
--color-surface: hsl(0 0% 100%);
|
|
73
81
|
|
|
74
82
|
/* Chart palette */
|
|
75
83
|
--chart-1: hsl(267 100% 50%);
|
|
@@ -79,17 +87,50 @@
|
|
|
79
87
|
--chart-5: hsl(161.4 93.5% 30.4%);
|
|
80
88
|
|
|
81
89
|
/* Sidebar */
|
|
82
|
-
/*
|
|
83
|
-
|
|
84
|
-
|
|
90
|
+
/* Chrome recesses below the page rather than matching it, so the content
|
|
91
|
+
ground reads as the surface in front. Inferred: every screen of the shell
|
|
92
|
+
design is dark-only. */
|
|
93
|
+
--sidebar: hsl(0 0% 89%);
|
|
85
94
|
--sidebar-foreground: hsl(0 0% 11%);
|
|
86
95
|
--sidebar-primary: hsl(267 100% 50%);
|
|
87
96
|
--sidebar-primary-foreground: hsl(0 0% 100%);
|
|
88
|
-
|
|
89
|
-
|
|
97
|
+
/* A plain grey lift off the sidebar ground, not a purple tint — that is what
|
|
98
|
+
the design's selected row is. shadcn's SidebarMenuButton binds hover and
|
|
99
|
+
active to this one token; separating the two is the consumer's job. */
|
|
100
|
+
--sidebar-accent: hsl(0 0% 96%);
|
|
101
|
+
--sidebar-accent-foreground: hsl(0 0% 11%);
|
|
90
102
|
--sidebar-border: hsl(0 0% 86%);
|
|
91
103
|
--sidebar-ring: hsl(267 100% 50%);
|
|
92
104
|
|
|
105
|
+
/* Shell — header, tabs, toolbar chrome */
|
|
106
|
+
/* Two ramps run in opposite directions on the same header: a tab lifts off
|
|
107
|
+
the header ground because it is a piece of the page pulled forward, a
|
|
108
|
+
control sinks into it because it is a well. Hence two families, not one. */
|
|
109
|
+
/* Inferred throughout — the shell design exists only in dark. */
|
|
110
|
+
/* White in both themes: a selection marker rather than a surface. */
|
|
111
|
+
--tab-active: hsl(0 0% 100%);
|
|
112
|
+
--tab-active-foreground: hsl(0 0% 11%);
|
|
113
|
+
/* Steps away from the header ground instead of toward the active tab, since
|
|
114
|
+
white is already spoken for at the top of this ramp: lifting into it left
|
|
115
|
+
inactive chrome at 1.06:1 against the header. */
|
|
116
|
+
/* No companion foreground: an inactive tab keeps --foreground at full
|
|
117
|
+
strength. Only the fill recedes, so the label stays as readable as the
|
|
118
|
+
active one. */
|
|
119
|
+
--tab-inactive: hsl(0 0% 82%);
|
|
120
|
+
--tab-inactive-hover: hsl(0 0% 87%);
|
|
121
|
+
/* Sampled from the design, and the one shell value both themes share. */
|
|
122
|
+
--tab-unread: #005eff;
|
|
123
|
+
--control-surface: hsl(0 0% 88%);
|
|
124
|
+
--control-surface-hover: hsl(0 0% 84%);
|
|
125
|
+
--control-selected: hsl(0 0% 100%);
|
|
126
|
+
/* Deliberately dimmer than --muted-foreground, and held at the 3:1 non-text
|
|
127
|
+
floor against --control-surface — the design samples about 2.3:1, and this
|
|
128
|
+
is the one place we knowingly part from it. */
|
|
129
|
+
--control-icon: hsl(0 0% 49%);
|
|
130
|
+
/* Stronger than --border against the same ground, because it is the only
|
|
131
|
+
line the shell has left. */
|
|
132
|
+
--content-border: hsl(0 0% 82%);
|
|
133
|
+
|
|
93
134
|
/* Typography */
|
|
94
135
|
--font-sans: "Inter", sans-serif;
|
|
95
136
|
--font-serif: "Plus Jakarta Sans", sans-serif;
|
|
@@ -118,7 +159,7 @@
|
|
|
118
159
|
|
|
119
160
|
:root[data-theme="dark"],
|
|
120
161
|
.dark {
|
|
121
|
-
|
|
162
|
+
color-scheme: dark;
|
|
122
163
|
|
|
123
164
|
/* Core palette — taken from the platform shell design, and no longer the
|
|
124
165
|
website's canonical dark: that palette is blue-shifted and lifts a card
|
|
@@ -144,10 +185,9 @@
|
|
|
144
185
|
--input: #323131;
|
|
145
186
|
--ring: #7300ff;
|
|
146
187
|
/* See the light block: the strip behind the page that the tab bar sits on.
|
|
147
|
-
It
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
--tab-bar: #161515;
|
|
188
|
+
It used to share the deepest step with --surface-sunken; --sidebar has
|
|
189
|
+
since taken that step, and the strip now sits one above it. */
|
|
190
|
+
--tab-bar: #1f1e1e;
|
|
151
191
|
/* The surface a panel's own content sinks into — the file viewer beside the
|
|
152
192
|
tree. Third step of the ramp, below the panel. */
|
|
153
193
|
--surface-sunken: #161515;
|
|
@@ -169,15 +209,45 @@
|
|
|
169
209
|
--chart-5: #10b981;
|
|
170
210
|
|
|
171
211
|
/* Sidebar */
|
|
172
|
-
|
|
212
|
+
/* Chrome recesses below the page rather than matching it, so the content
|
|
213
|
+
ground reads as the surface in front. Sampled from the shell design; it
|
|
214
|
+
lands on --surface-sunken's value, one behind the page and one inside a
|
|
215
|
+
panel, and the two are free to move apart. */
|
|
216
|
+
--sidebar: #161515;
|
|
173
217
|
--sidebar-foreground: #f5f5f5;
|
|
174
218
|
--sidebar-primary: #7300ff;
|
|
175
219
|
--sidebar-primary-foreground: #ffffff;
|
|
176
|
-
|
|
177
|
-
|
|
220
|
+
/* A plain grey lift off the sidebar ground, not a purple tint — that is what
|
|
221
|
+
the design's selected row is. shadcn's SidebarMenuButton binds hover and
|
|
222
|
+
active to this one token; separating the two is the consumer's job. */
|
|
223
|
+
--sidebar-accent: #1f1f1f;
|
|
224
|
+
--sidebar-accent-foreground: #f5f5f5;
|
|
178
225
|
--sidebar-border: #323131;
|
|
179
226
|
--sidebar-ring: #7300ff;
|
|
180
227
|
|
|
228
|
+
/* Shell — header, tabs, toolbar chrome */
|
|
229
|
+
/* Two ramps run in opposite directions on the same header: a tab lifts off
|
|
230
|
+
the header ground because it is a piece of the page pulled forward, a
|
|
231
|
+
control sinks into it because it is a well. Hence two families, not one. */
|
|
232
|
+
/* Sampled from the shell design throughout. */
|
|
233
|
+
/* White in both themes: a selection marker rather than a surface. */
|
|
234
|
+
--tab-active: #ffffff;
|
|
235
|
+
--tab-active-foreground: hsl(0 0% 11%);
|
|
236
|
+
--tab-inactive: #3e3e3e;
|
|
237
|
+
--tab-inactive-hover: #4a4a4a;
|
|
238
|
+
/* The one shell value both themes share. */
|
|
239
|
+
--tab-unread: #005eff;
|
|
240
|
+
--control-surface: #1a1919;
|
|
241
|
+
--control-surface-hover: #2a2929;
|
|
242
|
+
--control-selected: #343434;
|
|
243
|
+
/* Deliberately dimmer than --muted-foreground, and held at the 3:1 non-text
|
|
244
|
+
floor against --control-surface — the design samples about 2.3:1, and this
|
|
245
|
+
is the one place we knowingly part from it. */
|
|
246
|
+
--control-icon: #666666;
|
|
247
|
+
/* Stronger than --border against the same ground, because it is the only
|
|
248
|
+
line the shell has left. */
|
|
249
|
+
--content-border: #3e3e3e;
|
|
250
|
+
|
|
181
251
|
/* Typography */
|
|
182
252
|
--font-sans: "Inter", sans-serif;
|
|
183
253
|
--font-serif: "Plus Jakarta Sans", sans-serif;
|
package/src/tokens.json
CHANGED
|
@@ -34,26 +34,45 @@
|
|
|
34
34
|
"text-dim": "#777777"
|
|
35
35
|
},
|
|
36
36
|
"platform-light": {
|
|
37
|
-
"background": "hsl(0 0%
|
|
38
|
-
"tab-bar": "hsl(0 0%
|
|
39
|
-
"
|
|
37
|
+
"background": "hsl(0 0% 94%)",
|
|
38
|
+
"tab-bar": "hsl(0 0% 91%)",
|
|
39
|
+
"tab-active": "hsl(0 0% 100%)",
|
|
40
|
+
"tab-active-foreground": "hsl(0 0% 11%)",
|
|
41
|
+
"card": "hsl(0 0% 100%)",
|
|
40
42
|
"popover": "hsl(0 0% 100%)",
|
|
41
|
-
"surface": "hsl(0 0%
|
|
43
|
+
"surface": "hsl(0 0% 100%)",
|
|
42
44
|
"secondary": "hsl(0 0% 96%)",
|
|
43
45
|
"muted": "hsl(0 0% 96%)",
|
|
44
46
|
"accent": "hsl(0 0% 96%)",
|
|
45
|
-
"surface-sunken": "hsl(0 0%
|
|
47
|
+
"surface-sunken": "hsl(0 0% 96%)",
|
|
46
48
|
"foreground": "hsl(0 0% 11%)",
|
|
47
49
|
"muted-foreground": "hsl(0 0% 40%)",
|
|
48
50
|
"border": "hsl(0 0% 86%)",
|
|
49
51
|
"primary": "hsl(267 100% 50%)",
|
|
50
52
|
"primary-bright": "hsl(267 100% 63%)",
|
|
51
53
|
"ring": "hsl(267 100% 50%)",
|
|
52
|
-
"sidebar
|
|
54
|
+
"sidebar": "hsl(0 0% 89%)",
|
|
55
|
+
"sidebar-accent": "hsl(0 0% 96%)",
|
|
56
|
+
"tab-inactive": "hsl(0 0% 82%)",
|
|
57
|
+
"tab-inactive-hover": "hsl(0 0% 87%)",
|
|
58
|
+
"tab-unread": "#005eff",
|
|
59
|
+
"control-surface": "hsl(0 0% 88%)",
|
|
60
|
+
"control-surface-hover": "hsl(0 0% 84%)",
|
|
61
|
+
"control-selected": "hsl(0 0% 100%)",
|
|
62
|
+
"control-icon": "hsl(0 0% 49%)",
|
|
63
|
+
"content-border": "hsl(0 0% 82%)",
|
|
64
|
+
"sidebar-foreground": "hsl(0 0% 11%)",
|
|
65
|
+
"sidebar-primary": "hsl(267 100% 50%)",
|
|
66
|
+
"sidebar-primary-foreground": "hsl(0 0% 100%)",
|
|
67
|
+
"sidebar-accent-foreground": "hsl(0 0% 11%)",
|
|
68
|
+
"sidebar-border": "hsl(0 0% 86%)",
|
|
69
|
+
"sidebar-ring": "hsl(267 100% 50%)"
|
|
53
70
|
},
|
|
54
71
|
"platform-dark": {
|
|
55
72
|
"background": "#242424",
|
|
56
|
-
"tab-bar": "#
|
|
73
|
+
"tab-bar": "#1f1e1e",
|
|
74
|
+
"tab-active": "#ffffff",
|
|
75
|
+
"tab-active-foreground": "hsl(0 0% 11%)",
|
|
57
76
|
"card": "#1a1919",
|
|
58
77
|
"popover": "#2f2f2f",
|
|
59
78
|
"surface": "#2f2f2f",
|
|
@@ -67,7 +86,22 @@
|
|
|
67
86
|
"primary": "#7300ff",
|
|
68
87
|
"primary-bright": "#9b40ff",
|
|
69
88
|
"ring": "#7300ff",
|
|
70
|
-
"sidebar
|
|
89
|
+
"sidebar": "#161515",
|
|
90
|
+
"sidebar-accent": "#1f1f1f",
|
|
91
|
+
"tab-inactive": "#3e3e3e",
|
|
92
|
+
"tab-inactive-hover": "#4a4a4a",
|
|
93
|
+
"tab-unread": "#005eff",
|
|
94
|
+
"control-surface": "#1a1919",
|
|
95
|
+
"control-surface-hover": "#2a2929",
|
|
96
|
+
"control-selected": "#343434",
|
|
97
|
+
"control-icon": "#666666",
|
|
98
|
+
"content-border": "#3e3e3e",
|
|
99
|
+
"sidebar-foreground": "#f5f5f5",
|
|
100
|
+
"sidebar-primary": "#7300ff",
|
|
101
|
+
"sidebar-primary-foreground": "#ffffff",
|
|
102
|
+
"sidebar-accent-foreground": "#f5f5f5",
|
|
103
|
+
"sidebar-border": "#323131",
|
|
104
|
+
"sidebar-ring": "#7300ff"
|
|
71
105
|
}
|
|
72
106
|
}
|
|
73
107
|
}
|