@skaile/brand 0.3.0 → 0.4.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 +79 -61
- package/src/tokens.json +42 -13
package/package.json
CHANGED
package/src/css/theme.css
CHANGED
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
* Falls back to light mode on :root.
|
|
11
11
|
*
|
|
12
12
|
* Brand color: #7300FF (Skaile purple)
|
|
13
|
-
*
|
|
13
|
+
* The platform palettes (`platform-light`, `platform-dark` in tokens.json) come
|
|
14
|
+
* from the platform shell design. They are no longer the website's canonical
|
|
15
|
+
* dark, which `marketing-dark` still carries.
|
|
14
16
|
*/
|
|
15
17
|
|
|
16
18
|
/* ---------------------------------------------------------------------------
|
|
@@ -23,44 +25,51 @@
|
|
|
23
25
|
--color-scheme: light;
|
|
24
26
|
|
|
25
27
|
/* Core palette */
|
|
26
|
-
/* The page
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
the
|
|
30
|
-
|
|
31
|
-
--background: hsl(
|
|
32
|
-
--foreground: hsl(
|
|
33
|
-
--card: hsl(0 0%
|
|
34
|
-
--card-foreground: hsl(
|
|
28
|
+
/* The page is the lightest surface and a panel sits *into* it, not on it.
|
|
29
|
+
That direction is taken from the platform's dark design, and light follows
|
|
30
|
+
it so one sentence describes both themes. The 6-point page/panel gap is
|
|
31
|
+
the one the previous ramp used; only its sign changed. Neutral throughout,
|
|
32
|
+
as the design is: every grey here has zero saturation. */
|
|
33
|
+
--background: hsl(0 0% 100%);
|
|
34
|
+
--foreground: hsl(0 0% 11%);
|
|
35
|
+
--card: hsl(0 0% 94%);
|
|
36
|
+
--card-foreground: hsl(0 0% 11%);
|
|
37
|
+
/* Level with the page, as stock shadcn light is: a popover is told apart by
|
|
38
|
+
its border and shadow, which every popover surface in ui-components
|
|
39
|
+
draws, not by its fill. */
|
|
35
40
|
--popover: hsl(0 0% 100%);
|
|
36
|
-
--popover-foreground: hsl(
|
|
41
|
+
--popover-foreground: hsl(0 0% 11%);
|
|
37
42
|
--primary: hsl(267 100% 50%);
|
|
38
43
|
--primary-foreground: hsl(0 0% 100%);
|
|
39
|
-
--secondary: hsl(
|
|
40
|
-
--secondary-foreground: hsl(
|
|
41
|
-
--muted: hsl(
|
|
42
|
-
--muted-foreground: hsl(
|
|
43
|
-
--accent: hsl(
|
|
44
|
-
--accent-foreground: hsl(
|
|
44
|
+
--secondary: hsl(0 0% 96%);
|
|
45
|
+
--secondary-foreground: hsl(0 0% 40%);
|
|
46
|
+
--muted: hsl(0 0% 96%);
|
|
47
|
+
--muted-foreground: hsl(0 0% 40%);
|
|
48
|
+
--accent: hsl(0 0% 96%);
|
|
49
|
+
--accent-foreground: hsl(0 0% 11%);
|
|
45
50
|
--destructive: hsl(0 72.2% 50.6%);
|
|
46
51
|
--destructive-foreground: hsl(0 0% 100%);
|
|
47
|
-
/*
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
--
|
|
52
|
+
/* The design draws no borders at all — it separates surfaces by step and by
|
|
53
|
+
gap. These stay for the components that still ask for one, dark enough to
|
|
54
|
+
read against a white page. */
|
|
55
|
+
--border: hsl(0 0% 86%);
|
|
56
|
+
--input: hsl(0 0% 86%);
|
|
51
57
|
--ring: hsl(267 100% 50%);
|
|
52
|
-
/*
|
|
53
|
-
of it
|
|
54
|
-
--tab-bar: hsl(
|
|
58
|
+
/* Below the panel, as in dark: the strip recedes and an active tab rises out
|
|
59
|
+
of it. */
|
|
60
|
+
--tab-bar: hsl(0 0% 89%);
|
|
61
|
+
/* The surface a panel's own content sinks into — the file viewer beside the
|
|
62
|
+
tree. Third step of the ramp, below the panel. */
|
|
63
|
+
--surface-sunken: hsl(0 0% 91%);
|
|
55
64
|
|
|
56
65
|
/* Skaile-specific */
|
|
57
66
|
--color-success: hsl(161.4 93.5% 30.4%);
|
|
58
67
|
--color-success-foreground: hsl(0 0% 100%);
|
|
59
68
|
--color-warning: hsl(32.1 94.6% 43.7%);
|
|
60
|
-
--color-warning-foreground: hsl(
|
|
69
|
+
--color-warning-foreground: hsl(0 0% 11%);
|
|
61
70
|
--color-ai-accent: hsl(37.7 92.1% 50.2%);
|
|
62
71
|
--color-primary-bright: hsl(267 100% 63%);
|
|
63
|
-
--color-surface: hsl(0 0%
|
|
72
|
+
--color-surface: hsl(0 0% 96%);
|
|
64
73
|
|
|
65
74
|
/* Chart palette */
|
|
66
75
|
--chart-1: hsl(267 100% 50%);
|
|
@@ -70,15 +79,15 @@
|
|
|
70
79
|
--chart-5: hsl(161.4 93.5% 30.4%);
|
|
71
80
|
|
|
72
81
|
/* Sidebar */
|
|
73
|
-
/* Tied to the page, as dark
|
|
74
|
-
|
|
75
|
-
--sidebar: hsl(
|
|
76
|
-
--sidebar-foreground: hsl(
|
|
82
|
+
/* Tied to the page, as dark ties it. The sidebar is chrome, not a panel, so
|
|
83
|
+
it takes the ground the panels sit in. */
|
|
84
|
+
--sidebar: hsl(0 0% 100%);
|
|
85
|
+
--sidebar-foreground: hsl(0 0% 11%);
|
|
77
86
|
--sidebar-primary: hsl(267 100% 50%);
|
|
78
87
|
--sidebar-primary-foreground: hsl(0 0% 100%);
|
|
79
88
|
--sidebar-accent: hsl(267 100% 97%);
|
|
80
89
|
--sidebar-accent-foreground: hsl(267 100% 50%);
|
|
81
|
-
--sidebar-border: hsl(
|
|
90
|
+
--sidebar-border: hsl(0 0% 86%);
|
|
82
91
|
--sidebar-ring: hsl(267 100% 50%);
|
|
83
92
|
|
|
84
93
|
/* Typography */
|
|
@@ -93,14 +102,14 @@
|
|
|
93
102
|
--spacing: 0.25rem;
|
|
94
103
|
|
|
95
104
|
/* Shadows */
|
|
96
|
-
--shadow-2xs: 0 1px 2px 0px hsl(
|
|
97
|
-
--shadow-xs: 0 1px 2px 0px hsl(
|
|
98
|
-
--shadow-sm: 0 1px 2px 0px hsl(
|
|
99
|
-
--shadow: 0 4px 6px 0px hsl(
|
|
100
|
-
--shadow-md: 0 4px 6px 0px hsl(
|
|
101
|
-
--shadow-lg: 0 10px 15px 0px hsl(
|
|
102
|
-
--shadow-xl: 0 20px 25px -5px hsl(
|
|
103
|
-
--shadow-2xl: 0 25px 50px -12px hsl(
|
|
105
|
+
--shadow-2xs: 0 1px 2px 0px hsl(0 0% 11% / 0.03);
|
|
106
|
+
--shadow-xs: 0 1px 2px 0px hsl(0 0% 11% / 0.05);
|
|
107
|
+
--shadow-sm: 0 1px 2px 0px hsl(0 0% 11% / 0.05);
|
|
108
|
+
--shadow: 0 4px 6px 0px hsl(0 0% 11% / 0.07);
|
|
109
|
+
--shadow-md: 0 4px 6px 0px hsl(0 0% 11% / 0.07);
|
|
110
|
+
--shadow-lg: 0 10px 15px 0px hsl(0 0% 11% / 0.1);
|
|
111
|
+
--shadow-xl: 0 20px 25px -5px hsl(0 0% 11% / 0.1);
|
|
112
|
+
--shadow-2xl: 0 25px 50px -12px hsl(0 0% 11% / 0.25);
|
|
104
113
|
}
|
|
105
114
|
|
|
106
115
|
/* ---------------------------------------------------------------------------
|
|
@@ -111,37 +120,46 @@
|
|
|
111
120
|
.dark {
|
|
112
121
|
--color-scheme: dark;
|
|
113
122
|
|
|
114
|
-
/* Core palette —
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
--
|
|
119
|
-
--
|
|
120
|
-
--
|
|
123
|
+
/* Core palette — taken from the platform shell design, and no longer the
|
|
124
|
+
website's canonical dark: that palette is blue-shifted and lifts a card
|
|
125
|
+
above its page, where this one is neutral and sets a panel into it.
|
|
126
|
+
`marketing-dark` in tokens.json still carries the website values. */
|
|
127
|
+
--background: #242424;
|
|
128
|
+
--foreground: #f5f5f5;
|
|
129
|
+
--card: #1a1919;
|
|
130
|
+
--card-foreground: #f5f5f5;
|
|
131
|
+
--popover: #2f2f2f;
|
|
132
|
+
--popover-foreground: #f5f5f5;
|
|
121
133
|
--primary: #7300ff;
|
|
122
134
|
--primary-foreground: #ffffff;
|
|
123
|
-
--secondary: #
|
|
124
|
-
--secondary-foreground: #
|
|
125
|
-
--muted: #
|
|
126
|
-
--muted-foreground: #
|
|
127
|
-
--accent: #
|
|
128
|
-
--accent-foreground: #
|
|
135
|
+
--secondary: #2f2f2f;
|
|
136
|
+
--secondary-foreground: #f5f5f5;
|
|
137
|
+
--muted: #2f2f2f;
|
|
138
|
+
--muted-foreground: #a1a1a1;
|
|
139
|
+
--accent: #323131;
|
|
140
|
+
--accent-foreground: #f5f5f5;
|
|
129
141
|
--destructive: hsl(0 84.2% 60.2%);
|
|
130
142
|
--destructive-foreground: #ffffff;
|
|
131
|
-
--border: #
|
|
132
|
-
--input: #
|
|
143
|
+
--border: #323131;
|
|
144
|
+
--input: #323131;
|
|
133
145
|
--ring: #7300ff;
|
|
134
|
-
/* See the light block: the strip behind the page that the tab bar sits on.
|
|
135
|
-
|
|
146
|
+
/* See the light block: the strip behind the page that the tab bar sits on.
|
|
147
|
+
It shares a value with --surface-sunken below, which is not a copy-paste:
|
|
148
|
+
both sit at the deepest step of the ramp, one behind the page and one
|
|
149
|
+
inside a panel. They are free to move apart. */
|
|
150
|
+
--tab-bar: #161515;
|
|
151
|
+
/* The surface a panel's own content sinks into — the file viewer beside the
|
|
152
|
+
tree. Third step of the ramp, below the panel. */
|
|
153
|
+
--surface-sunken: #161515;
|
|
136
154
|
|
|
137
155
|
/* Skaile-specific */
|
|
138
156
|
--color-success: hsl(160.1 84.1% 39.4%);
|
|
139
157
|
--color-success-foreground: #ffffff;
|
|
140
158
|
--color-warning: hsl(37.7 92.1% 50.2%);
|
|
141
|
-
--color-warning-foreground: #
|
|
159
|
+
--color-warning-foreground: #242424;
|
|
142
160
|
--color-ai-accent: hsl(43.3 96.4% 56.3%);
|
|
143
161
|
--color-primary-bright: #9b40ff;
|
|
144
|
-
--color-surface: #
|
|
162
|
+
--color-surface: #2f2f2f;
|
|
145
163
|
|
|
146
164
|
/* Chart palette */
|
|
147
165
|
--chart-1: #7300ff;
|
|
@@ -151,13 +169,13 @@
|
|
|
151
169
|
--chart-5: #10b981;
|
|
152
170
|
|
|
153
171
|
/* Sidebar */
|
|
154
|
-
--sidebar: #
|
|
155
|
-
--sidebar-foreground: #
|
|
172
|
+
--sidebar: #242424;
|
|
173
|
+
--sidebar-foreground: #f5f5f5;
|
|
156
174
|
--sidebar-primary: #7300ff;
|
|
157
175
|
--sidebar-primary-foreground: #ffffff;
|
|
158
176
|
--sidebar-accent: #1b1a3f;
|
|
159
177
|
--sidebar-accent-foreground: #9b40ff;
|
|
160
|
-
--sidebar-border: #
|
|
178
|
+
--sidebar-border: #323131;
|
|
161
179
|
--sidebar-ring: #7300ff;
|
|
162
180
|
|
|
163
181
|
/* Typography */
|
package/src/tokens.json
CHANGED
|
@@ -9,8 +9,18 @@
|
|
|
9
9
|
"body": "Inter",
|
|
10
10
|
"mono": "JetBrains Mono"
|
|
11
11
|
},
|
|
12
|
-
"radius": {
|
|
13
|
-
|
|
12
|
+
"radius": {
|
|
13
|
+
"sm": "4px",
|
|
14
|
+
"DEFAULT": "8px",
|
|
15
|
+
"lg": "12px",
|
|
16
|
+
"xl": "20px",
|
|
17
|
+
"full": "9999px"
|
|
18
|
+
},
|
|
19
|
+
"status": {
|
|
20
|
+
"success": "#10b981",
|
|
21
|
+
"warning": "#f59e0b",
|
|
22
|
+
"error": "#ef4444"
|
|
23
|
+
},
|
|
14
24
|
"palettes": {
|
|
15
25
|
"marketing-dark": {
|
|
16
26
|
"bg": "#13151a",
|
|
@@ -23,18 +33,37 @@
|
|
|
23
33
|
"text-muted": "#a1a1aa",
|
|
24
34
|
"text-dim": "#777777"
|
|
25
35
|
},
|
|
36
|
+
"platform-light": {
|
|
37
|
+
"background": "hsl(0 0% 100%)",
|
|
38
|
+
"tab-bar": "hsl(0 0% 89%)",
|
|
39
|
+
"card": "hsl(0 0% 94%)",
|
|
40
|
+
"popover": "hsl(0 0% 100%)",
|
|
41
|
+
"surface": "hsl(0 0% 96%)",
|
|
42
|
+
"secondary": "hsl(0 0% 96%)",
|
|
43
|
+
"muted": "hsl(0 0% 96%)",
|
|
44
|
+
"accent": "hsl(0 0% 96%)",
|
|
45
|
+
"surface-sunken": "hsl(0 0% 91%)",
|
|
46
|
+
"foreground": "hsl(0 0% 11%)",
|
|
47
|
+
"muted-foreground": "hsl(0 0% 40%)",
|
|
48
|
+
"border": "hsl(0 0% 86%)",
|
|
49
|
+
"primary": "hsl(267 100% 50%)",
|
|
50
|
+
"primary-bright": "hsl(267 100% 63%)",
|
|
51
|
+
"ring": "hsl(267 100% 50%)",
|
|
52
|
+
"sidebar-accent": "hsl(267 100% 97%)"
|
|
53
|
+
},
|
|
26
54
|
"platform-dark": {
|
|
27
|
-
"background": "#
|
|
28
|
-
"tab-bar": "#
|
|
29
|
-
"card": "#
|
|
30
|
-
"popover": "#
|
|
31
|
-
"surface": "#
|
|
32
|
-
"secondary": "#
|
|
33
|
-
"muted": "#
|
|
34
|
-
"accent": "#
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
55
|
+
"background": "#242424",
|
|
56
|
+
"tab-bar": "#161515",
|
|
57
|
+
"card": "#1a1919",
|
|
58
|
+
"popover": "#2f2f2f",
|
|
59
|
+
"surface": "#2f2f2f",
|
|
60
|
+
"secondary": "#2f2f2f",
|
|
61
|
+
"muted": "#2f2f2f",
|
|
62
|
+
"accent": "#323131",
|
|
63
|
+
"surface-sunken": "#161515",
|
|
64
|
+
"foreground": "#f5f5f5",
|
|
65
|
+
"muted-foreground": "#a1a1a1",
|
|
66
|
+
"border": "#323131",
|
|
38
67
|
"primary": "#7300ff",
|
|
39
68
|
"primary-bright": "#9b40ff",
|
|
40
69
|
"ring": "#7300ff",
|