@skaile/brand 0.4.1 → 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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skaile/brand",
3
- "version": "0.4.1",
3
+ "version": "0.5.0",
4
4
  "description": "Skaile brand: design tokens, CSS custom properties, Tailwind preset, and brand assets",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
package/src/css/theme.css CHANGED
@@ -22,7 +22,9 @@
22
22
  :root,
23
23
  :root[data-theme="light"],
24
24
  .light {
25
- --color-scheme: light;
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
30
  /* Light lifts its panels off the page; dark sets them into it. The two
@@ -59,7 +61,7 @@
59
61
  --ring: hsl(267 100% 50%);
60
62
  /* Below the page, so an active tab rises out of the strip and meets the
61
63
  panel it belongs to. */
62
- --tab-bar: hsl(0 0% 89%);
64
+ --tab-bar: hsl(0 0% 91%);
63
65
  /* The surface a panel's own content sinks into — the file viewer beside the
64
66
  tree. One step below the panel, which here leaves it between the panel and
65
67
  the page rather than below both, as in dark.
@@ -85,17 +87,50 @@
85
87
  --chart-5: hsl(161.4 93.5% 30.4%);
86
88
 
87
89
  /* Sidebar */
88
- /* Tied to the page, as dark ties it. The sidebar is chrome, not a panel, so
89
- it takes the ground the panels sit on. */
90
- --sidebar: hsl(0 0% 94%);
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%);
91
94
  --sidebar-foreground: hsl(0 0% 11%);
92
95
  --sidebar-primary: hsl(267 100% 50%);
93
96
  --sidebar-primary-foreground: hsl(0 0% 100%);
94
- --sidebar-accent: hsl(267 100% 97%);
95
- --sidebar-accent-foreground: hsl(267 100% 50%);
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%);
96
102
  --sidebar-border: hsl(0 0% 86%);
97
103
  --sidebar-ring: hsl(267 100% 50%);
98
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
+
99
134
  /* Typography */
100
135
  --font-sans: "Inter", sans-serif;
101
136
  --font-serif: "Plus Jakarta Sans", sans-serif;
@@ -124,7 +159,7 @@
124
159
 
125
160
  :root[data-theme="dark"],
126
161
  .dark {
127
- --color-scheme: dark;
162
+ color-scheme: dark;
128
163
 
129
164
  /* Core palette — taken from the platform shell design, and no longer the
130
165
  website's canonical dark: that palette is blue-shifted and lifts a card
@@ -150,10 +185,9 @@
150
185
  --input: #323131;
151
186
  --ring: #7300ff;
152
187
  /* See the light block: the strip behind the page that the tab bar sits on.
153
- It shares a value with --surface-sunken below, which is not a copy-paste:
154
- both sit at the deepest step of the ramp, one behind the page and one
155
- inside a panel. They are free to move apart. */
156
- --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;
157
191
  /* The surface a panel's own content sinks into — the file viewer beside the
158
192
  tree. Third step of the ramp, below the panel. */
159
193
  --surface-sunken: #161515;
@@ -175,15 +209,45 @@
175
209
  --chart-5: #10b981;
176
210
 
177
211
  /* Sidebar */
178
- --sidebar: #242424;
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;
179
217
  --sidebar-foreground: #f5f5f5;
180
218
  --sidebar-primary: #7300ff;
181
219
  --sidebar-primary-foreground: #ffffff;
182
- --sidebar-accent: #1b1a3f;
183
- --sidebar-accent-foreground: #9b40ff;
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;
184
225
  --sidebar-border: #323131;
185
226
  --sidebar-ring: #7300ff;
186
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
+
187
251
  /* Typography */
188
252
  --font-sans: "Inter", sans-serif;
189
253
  --font-serif: "Plus Jakarta Sans", sans-serif;
package/src/tokens.json CHANGED
@@ -35,7 +35,9 @@
35
35
  },
36
36
  "platform-light": {
37
37
  "background": "hsl(0 0% 94%)",
38
- "tab-bar": "hsl(0 0% 89%)",
38
+ "tab-bar": "hsl(0 0% 91%)",
39
+ "tab-active": "hsl(0 0% 100%)",
40
+ "tab-active-foreground": "hsl(0 0% 11%)",
39
41
  "card": "hsl(0 0% 100%)",
40
42
  "popover": "hsl(0 0% 100%)",
41
43
  "surface": "hsl(0 0% 100%)",
@@ -49,11 +51,28 @@
49
51
  "primary": "hsl(267 100% 50%)",
50
52
  "primary-bright": "hsl(267 100% 63%)",
51
53
  "ring": "hsl(267 100% 50%)",
52
- "sidebar-accent": "hsl(267 100% 97%)"
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": "#161515",
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-accent": "#1b1a3f"
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
  }