@misoto22/kioku-ui-theme-kioku 0.0.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 ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Misoto22
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,50 @@
1
+ # Kioku theme pack
2
+
3
+ `@misoto22/kioku-ui-theme-kioku` provides the Washi, Muji, and Sumi visual
4
+ identities as an external theme collection for `@misoto22/kioku-ui`.
5
+
6
+ ```tsx
7
+ import {ThemeProvider} from '@misoto22/kioku-ui/theme';
8
+ import {kiokuThemes, washiTheme} from '@misoto22/kioku-ui-theme-kioku';
9
+ import '@misoto22/kioku-ui-theme-kioku/theme.css';
10
+
11
+ export function App({children}: {children: React.ReactNode}) {
12
+ return (
13
+ <ThemeProvider defaultThemeId={washiTheme.id} themes={kiokuThemes}>
14
+ {children}
15
+ </ThemeProvider>
16
+ );
17
+ }
18
+ ```
19
+
20
+ The host owns the selected theme and any persistence adapter. Palette values use
21
+ CSS `light-dark()`, so they follow the host's inherited `color-scheme`. The
22
+ themes share the package's semantic spacing, radius, and control-size scales.
23
+ The stylesheet never targets `:root`, `html`, or `body`.
24
+
25
+ The three skins carry Kioku Console's own palettes, geometry, and type scale:
26
+ warm paper rather than white, one 3px corner for every element including
27
+ controls, a hairline rule instead of a drop shadow, and the console's compact
28
+ spacing. Where a role that this package holds to WCAG AA missed the threshold on
29
+ one of its backgrounds, it keeps the console's hue and loses only lightness.
30
+
31
+ Each skin fulfills the spacing roles at both densities, so a reader selecting
32
+ `standard` widens the same rhythm rather than switching visual identity:
33
+
34
+ ```tsx
35
+ <ThemeProvider
36
+ defaultDensity="standard"
37
+ defaultThemeId={washiTheme.id}
38
+ themes={kiokuThemes}
39
+ >
40
+ ```
41
+
42
+ `typography.fontFeatureSettings` asks for `'palt' 1`, the proportional spacing
43
+ the Japanese faces these skins are set in are cut for; a theme whose type is
44
+ Latin says `normal` instead.
45
+
46
+ `texture.grain` is the paper speckle's own colour. Washi and Muji tint it; Sumi
47
+ sets it transparent, which is how a skin declines the texture.
48
+
49
+ The initial theme release supports core `>=0.0.0 <0.2.0`. A later pre-1 core
50
+ minor must be compatibility-reviewed before this peer range is widened.
@@ -0,0 +1 @@
1
+ export { kiokuThemes, mujiTheme, sumiTheme, washiTheme } from './themes.js';
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ export { kiokuThemes, mujiTheme, sumiTheme, washiTheme } from './themes.js';
package/dist/theme.css ADDED
@@ -0,0 +1,701 @@
1
+ /* Ready-to-use theme CSS. Every selector targets a ThemeProvider data-theme root. */
2
+ [data-theme='washi'],
3
+ [data-theme='muji'],
4
+ [data-theme='sumi'] {
5
+ --kioku-ui-color-canvas: var(--kioku-theme-color-canvas);
6
+ --kioku-ui-color-surface: var(--kioku-theme-color-surface);
7
+ --kioku-ui-color-surface-raised: var(--kioku-theme-color-surface-raised);
8
+ --kioku-ui-color-surface-muted: var(--kioku-theme-color-surface-muted);
9
+ --kioku-ui-color-text: var(--kioku-theme-color-text);
10
+ --kioku-ui-color-text-secondary: var(--kioku-theme-color-text-secondary);
11
+ --kioku-ui-color-text-muted: var(--kioku-theme-color-text-muted);
12
+ --kioku-ui-color-text-on-accent: var(--kioku-theme-color-text-on-accent);
13
+ --kioku-ui-color-accent: var(--kioku-theme-color-accent);
14
+ --kioku-ui-color-accent-hover: var(--kioku-theme-color-accent-hover);
15
+ --kioku-ui-color-accent-active: var(--kioku-theme-color-accent-active);
16
+ --kioku-ui-color-overlay-hover: var(--kioku-theme-color-overlay-hover);
17
+ --kioku-ui-color-overlay-active: var(--kioku-theme-color-overlay-active);
18
+ --kioku-ui-color-disabled-surface: var(--kioku-theme-color-disabled-surface);
19
+ --kioku-ui-color-disabled-text: var(--kioku-theme-color-disabled-text);
20
+ --kioku-ui-color-focus: var(--kioku-theme-color-focus);
21
+ --kioku-ui-border-default: var(--kioku-theme-border-default);
22
+ --kioku-ui-border-strong: var(--kioku-theme-border-strong);
23
+ --kioku-ui-border-interactive: var(--kioku-theme-border-interactive);
24
+ --kioku-ui-border-disabled: var(--kioku-theme-border-disabled);
25
+ --kioku-ui-border-width: var(--kioku-theme-border-width);
26
+ --kioku-ui-border-style: var(--kioku-theme-border-style);
27
+ --kioku-ui-status-info-surface: var(--kioku-theme-status-info-surface);
28
+ --kioku-ui-status-info-text: var(--kioku-theme-status-info-text);
29
+ --kioku-ui-status-success-surface: var(--kioku-theme-status-success-surface);
30
+ --kioku-ui-status-success-text: var(--kioku-theme-status-success-text);
31
+ --kioku-ui-status-warning-surface: var(--kioku-theme-status-warning-surface);
32
+ --kioku-ui-status-warning-text: var(--kioku-theme-status-warning-text);
33
+ --kioku-ui-status-danger-surface: var(--kioku-theme-status-danger-surface);
34
+ --kioku-ui-status-danger-text: var(--kioku-theme-status-danger-text);
35
+ --kioku-ui-focus-width: var(--kioku-theme-focus-width);
36
+ --kioku-ui-focus-offset: var(--kioku-theme-focus-offset);
37
+ --kioku-ui-typography-font-family-body: var(--kioku-theme-font-family-body);
38
+ --kioku-ui-typography-font-family-heading: var(
39
+ --kioku-theme-font-family-heading
40
+ );
41
+ --kioku-ui-typography-font-family-display: var(
42
+ --kioku-theme-font-family-display
43
+ );
44
+ --kioku-ui-typography-font-family-mono: var(--kioku-theme-font-family-mono);
45
+ --kioku-ui-typography-font-feature-settings: var(
46
+ --kioku-theme-font-feature-settings
47
+ );
48
+ --kioku-ui-typography-font-size-xs: var(--kioku-theme-font-size-xs);
49
+ --kioku-ui-typography-font-size-sm: var(--kioku-theme-font-size-sm);
50
+ --kioku-ui-typography-font-size-md: var(--kioku-theme-font-size-md);
51
+ --kioku-ui-typography-font-size-lg: var(--kioku-theme-font-size-lg);
52
+ --kioku-ui-typography-font-size-xl: var(--kioku-theme-font-size-xl);
53
+ --kioku-ui-typography-font-size2xl: var(--kioku-theme-font-size-2xl);
54
+ --kioku-ui-typography-font-weight-regular: var(
55
+ --kioku-theme-font-weight-regular
56
+ );
57
+ --kioku-ui-typography-font-weight-medium: var(
58
+ --kioku-theme-font-weight-medium
59
+ );
60
+ --kioku-ui-typography-font-weight-strong: var(
61
+ --kioku-theme-font-weight-strong
62
+ );
63
+ --kioku-ui-typography-line-height-body: var(--kioku-theme-line-height-body);
64
+ --kioku-ui-typography-line-height-heading: var(
65
+ --kioku-theme-line-height-heading
66
+ );
67
+ --kioku-ui-spacing-xs: var(--kioku-theme-spacing-xs);
68
+ --kioku-ui-spacing-sm: var(--kioku-theme-spacing-sm);
69
+ --kioku-ui-spacing-md: var(--kioku-theme-spacing-md);
70
+ --kioku-ui-spacing-lg: var(--kioku-theme-spacing-lg);
71
+ --kioku-ui-spacing-xl: var(--kioku-theme-spacing-xl);
72
+ --kioku-ui-spacing-2xl: var(--kioku-theme-spacing-2xl);
73
+ --kioku-ui-radius-inner: var(--kioku-theme-radius-inner);
74
+ --kioku-ui-radius-element: var(--kioku-theme-radius-element);
75
+ --kioku-ui-radius-container: var(--kioku-theme-radius-container);
76
+ --kioku-ui-radius-page: var(--kioku-theme-radius-page);
77
+ --kioku-ui-radius-full: var(--kioku-theme-radius-full);
78
+ --kioku-ui-size-control-sm: var(--kioku-theme-size-control-sm);
79
+ --kioku-ui-size-control-md: var(--kioku-theme-size-control-md);
80
+ --kioku-ui-size-control-lg: var(--kioku-theme-size-control-lg);
81
+ --kioku-ui-size-hit-target: var(--kioku-theme-size-hit-target);
82
+ --kioku-ui-elevation-low: var(--kioku-theme-elevation-low);
83
+ --kioku-ui-elevation-medium: var(--kioku-theme-elevation-medium);
84
+ --kioku-ui-elevation-high: var(--kioku-theme-elevation-high);
85
+ --kioku-ui-texture-grain: var(--kioku-theme-texture-grain);
86
+ --kioku-ui-motion-duration-fast: var(--kioku-theme-motion-duration-fast);
87
+ --kioku-ui-motion-duration-moderate: var(
88
+ --kioku-theme-motion-duration-moderate
89
+ );
90
+ --kioku-ui-motion-duration-slow: var(--kioku-theme-motion-duration-slow);
91
+ --kioku-ui-motion-easing-standard: var(--kioku-theme-motion-easing-standard);
92
+ --kioku-ui-motion-easing-emphasized: var(
93
+ --kioku-theme-motion-easing-emphasized
94
+ );
95
+
96
+ --kioku-theme-border-width: 1px;
97
+ --kioku-theme-border-style: solid;
98
+ --kioku-theme-focus-width: 2px;
99
+ --kioku-theme-focus-offset: 2px;
100
+ --kioku-theme-font-family-body:
101
+ 'Zen Kaku Gothic New', -apple-system, BlinkMacSystemFont, 'Segoe UI',
102
+ sans-serif;
103
+ --kioku-theme-font-family-heading:
104
+ 'Zen Kaku Gothic New', -apple-system, BlinkMacSystemFont, 'Segoe UI',
105
+ sans-serif;
106
+ --kioku-theme-font-family-mono:
107
+ 'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
108
+ --kioku-theme-font-feature-settings: 'palt' 1;
109
+ --kioku-theme-font-size-xs: 11px;
110
+ --kioku-theme-font-size-sm: 12.5px;
111
+ --kioku-theme-font-size-md: 13.5px;
112
+ --kioku-theme-font-size-lg: 16px;
113
+ --kioku-theme-font-size-xl: 27px;
114
+ --kioku-theme-font-size-2xl: 30px;
115
+ --kioku-theme-font-weight-regular: 400;
116
+ --kioku-theme-font-weight-medium: 500;
117
+ --kioku-theme-font-weight-strong: 600;
118
+ --kioku-theme-line-height-body: 1.62;
119
+ --kioku-theme-line-height-heading: 1.25;
120
+ --kioku-theme-radius-inner: 3px;
121
+ --kioku-theme-radius-element: 3px;
122
+ --kioku-theme-radius-container: 3px;
123
+ --kioku-theme-radius-page: 3px;
124
+ --kioku-theme-radius-full: 999px;
125
+ --kioku-theme-size-control-sm: 24px;
126
+ --kioku-theme-size-control-md: 28px;
127
+ --kioku-theme-size-control-lg: 32px;
128
+ --kioku-theme-size-hit-target: 44px;
129
+ --kioku-theme-motion-duration-fast: 120ms;
130
+ --kioku-theme-motion-duration-moderate: 220ms;
131
+ --kioku-theme-motion-duration-slow: 760ms;
132
+ --kioku-theme-motion-easing-standard: cubic-bezier(0.22, 0.61, 0.36, 1);
133
+ --kioku-theme-motion-easing-emphasized: cubic-bezier(0.16, 0.84, 0.28, 1);
134
+
135
+ /* compact is the default: this is a tool, not a landing page. */
136
+ --kioku-theme-spacing-xs: 3px;
137
+ --kioku-theme-spacing-sm: 6px;
138
+ --kioku-theme-spacing-md: 10px;
139
+ --kioku-theme-spacing-lg: 14px;
140
+ --kioku-theme-spacing-xl: 20px;
141
+ --kioku-theme-spacing-2xl: 28px;
142
+ }
143
+
144
+ /* Density is a matter of eyesight and screen size, so it stays a knob. */
145
+ [data-theme='washi'][data-density='standard'],
146
+ [data-theme='muji'][data-density='standard'],
147
+ [data-theme='sumi'][data-density='standard'] {
148
+ --kioku-theme-spacing-xs: 4px;
149
+ --kioku-theme-spacing-sm: 8px;
150
+ --kioku-theme-spacing-md: 13px;
151
+ --kioku-theme-spacing-lg: 18px;
152
+ --kioku-theme-spacing-xl: 26px;
153
+ --kioku-theme-spacing-2xl: 38px;
154
+ }
155
+
156
+ /* 和紙: warm paper and sumi ink, with indigo, moss, kerria and madder. */
157
+ [data-theme='washi'] {
158
+ --kioku-theme-color-canvas: light-dark(#efebe0, #191713);
159
+ --kioku-theme-color-surface: light-dark(#f6f3e9, #211e19);
160
+ --kioku-theme-color-surface-raised: light-dark(#f6f3e9, #282419);
161
+ --kioku-theme-color-surface-muted: light-dark(#e7e2d3, #2a2620);
162
+ --kioku-theme-color-text: light-dark(#26221c, #ece6d9);
163
+ --kioku-theme-color-text-secondary: light-dark(#5d574c, #a49c8c);
164
+ --kioku-theme-color-text-muted: light-dark(#696459, #928c82);
165
+ --kioku-theme-color-text-on-accent: light-dark(#f6f3e9, #191713);
166
+ --kioku-theme-color-accent: light-dark(#2f5d8a, #7ba6cf);
167
+ --kioku-theme-color-accent-hover: light-dark(#23486b, #a3c4e2);
168
+ --kioku-theme-color-accent-active: light-dark(#1b3852, #c0d8ee);
169
+ --kioku-theme-color-overlay-hover: light-dark(
170
+ rgb(38 34 28 / 4%),
171
+ rgb(236 230 217 / 6%)
172
+ );
173
+ --kioku-theme-color-overlay-active: light-dark(
174
+ rgb(38 34 28 / 7%),
175
+ rgb(236 230 217 / 10%)
176
+ );
177
+ --kioku-theme-color-disabled-surface: light-dark(#e2dccb, #151310);
178
+ --kioku-theme-color-disabled-text: light-dark(#8a8375, #7d766a);
179
+ --kioku-theme-color-focus: light-dark(#2f5d8a, #7ba6cf);
180
+ --kioku-theme-border-default: light-dark(#ddd7c5, #302b24);
181
+ --kioku-theme-border-strong: light-dark(#c8c0aa, #423b31);
182
+ --kioku-theme-border-interactive: light-dark(#2f5d8a, #7ba6cf);
183
+ --kioku-theme-border-disabled: light-dark(#e3ddcd, #2a2620);
184
+ --kioku-theme-status-info-surface: light-dark(#e3eaf1, #7ba6cf24);
185
+ --kioku-theme-status-info-text: light-dark(#23486b, #a3c4e2);
186
+ --kioku-theme-status-success-surface: light-dark(#e6ecdf, #8fae7620);
187
+ --kioku-theme-status-success-text: light-dark(#4f7043, #8fae76);
188
+ --kioku-theme-status-warning-surface: light-dark(#f6eed9, #d0a85120);
189
+ --kioku-theme-status-warning-text: light-dark(#87650e, #d0a851);
190
+ --kioku-theme-status-danger-surface: light-dark(#f5e3df, #d1786c20);
191
+ --kioku-theme-status-danger-text: light-dark(#a2453b, #d1786c);
192
+ --kioku-theme-texture-grain: light-dark(
193
+ rgb(38 34 28 / 4%),
194
+ rgb(236 230 217 / 6%)
195
+ );
196
+ --kioku-theme-font-family-display:
197
+ 'Shippori Mincho', 'Hiragino Mincho ProN', serif;
198
+ --kioku-theme-elevation-low: 0 0 0 1px light-dark(#ddd7c5, #302b24);
199
+ --kioku-theme-elevation-medium:
200
+ 0 1px 0 light-dark(rgb(38 34 28 / 4%), rgb(0 0 0 / 22%)),
201
+ 0 0 0 1px light-dark(#ddd7c5, #302b24);
202
+ --kioku-theme-elevation-high:
203
+ 0 2px 5px light-dark(rgb(38 34 28 / 7%), rgb(0 0 0 / 34%)),
204
+ 0 0 0 1px light-dark(#ddd7c5, #302b24);
205
+ }
206
+
207
+ /* 無印: cool walls, light timber where you touch it, green-grey accent. */
208
+ [data-theme='muji'] {
209
+ --kioku-theme-color-canvas: light-dark(#f2f2ef, #1a1c19);
210
+ --kioku-theme-color-surface: light-dark(#f9f9f7, #222420);
211
+ --kioku-theme-color-surface-raised: light-dark(#f9f9f7, #292c27);
212
+ --kioku-theme-color-surface-muted: light-dark(#eae4d8, #2b2d27);
213
+ --kioku-theme-color-text: light-dark(#2f322c, #e7e8e2);
214
+ --kioku-theme-color-text-secondary: light-dark(#64675d, #9b9e95);
215
+ --kioku-theme-color-text-muted: light-dark(#656760, #92948d);
216
+ --kioku-theme-color-text-on-accent: light-dark(#f9f9f7, #1a1c19);
217
+ --kioku-theme-color-accent: light-dark(#566b52, #9cb597);
218
+ --kioku-theme-color-accent-hover: light-dark(#41533e, #b8cbb3);
219
+ --kioku-theme-color-accent-active: light-dark(#33422f, #cbdbc7);
220
+ --kioku-theme-color-overlay-hover: light-dark(
221
+ rgb(47 50 44 / 4%),
222
+ rgb(231 232 226 / 6%)
223
+ );
224
+ --kioku-theme-color-overlay-active: light-dark(
225
+ rgb(47 50 44 / 7%),
226
+ rgb(231 232 226 / 10%)
227
+ );
228
+ --kioku-theme-color-disabled-surface: light-dark(#e0d9ca, #141613);
229
+ --kioku-theme-color-disabled-text: light-dark(#93968b, #75786f);
230
+ --kioku-theme-color-focus: light-dark(#566b52, #9cb597);
231
+ --kioku-theme-border-default: light-dark(#dcdcd4, #31342d);
232
+ --kioku-theme-border-strong: light-dark(#c2c3b8, #43463d);
233
+ --kioku-theme-border-interactive: light-dark(#566b52, #9cb597);
234
+ --kioku-theme-border-disabled: light-dark(#e2e2db, #2b2d27);
235
+ --kioku-theme-status-info-surface: light-dark(#e4e9e0, #9cb59720);
236
+ --kioku-theme-status-info-text: light-dark(#41533e, #b8cbb3);
237
+ --kioku-theme-status-success-surface: light-dark(#e6ebe0, #9cb59720);
238
+ --kioku-theme-status-success-text: light-dark(#57704d, #9cb597);
239
+ --kioku-theme-status-warning-surface: light-dark(#f1e9d8, #cbab6b20);
240
+ --kioku-theme-status-warning-text: light-dark(#806630, #cbab6b);
241
+ --kioku-theme-status-danger-surface: light-dark(#f2e2dd, #cc8a7c20);
242
+ --kioku-theme-status-danger-text: light-dark(#95564a, #cc8a7c);
243
+ --kioku-theme-texture-grain: light-dark(
244
+ rgb(47 50 44 / 2%),
245
+ rgb(231 232 226 / 4%)
246
+ );
247
+ --kioku-theme-font-family-display:
248
+ 'Zen Kaku Gothic New', -apple-system, BlinkMacSystemFont, 'Segoe UI',
249
+ sans-serif;
250
+ --kioku-theme-elevation-low: 0 0 0 1px light-dark(#dcdcd4, #31342d);
251
+ --kioku-theme-elevation-medium:
252
+ 0 1px 0 light-dark(rgb(47 50 44 / 4%), rgb(0 0 0 / 24%)),
253
+ 0 0 0 1px light-dark(#dcdcd4, #31342d);
254
+ --kioku-theme-elevation-high:
255
+ 0 2px 5px light-dark(rgb(47 50 44 / 7%), rgb(0 0 0 / 36%)),
256
+ 0 0 0 1px light-dark(#dcdcd4, #31342d);
257
+ }
258
+
259
+ /* 墨: high contrast, near monochrome, one indigo accent, no grain. */
260
+ [data-theme='sumi'] {
261
+ --kioku-theme-color-canvas: light-dark(#f5f5f3, #0f0f0e);
262
+ --kioku-theme-color-surface: light-dark(#ffffff, #191918);
263
+ --kioku-theme-color-surface-raised: light-dark(#ffffff, #212120);
264
+ --kioku-theme-color-surface-muted: light-dark(#edede9, #222220);
265
+ --kioku-theme-color-text: light-dark(#131311, #f2f2ee);
266
+ --kioku-theme-color-text-secondary: light-dark(#4a4a46, #a8a8a2);
267
+ --kioku-theme-color-text-muted: light-dark(#6b6b65, #8a8a84);
268
+ --kioku-theme-color-text-on-accent: light-dark(#ffffff, #0f0f0e);
269
+ --kioku-theme-color-accent: light-dark(#1d4d7c, #79aade);
270
+ --kioku-theme-color-accent-hover: light-dark(#143a60, #a2c6ea);
271
+ --kioku-theme-color-accent-active: light-dark(#0f2c49, #bcd6f0);
272
+ --kioku-theme-color-overlay-hover: light-dark(
273
+ rgb(19 19 17 / 4%),
274
+ rgb(242 242 238 / 6%)
275
+ );
276
+ --kioku-theme-color-overlay-active: light-dark(
277
+ rgb(19 19 17 / 7%),
278
+ rgb(242 242 238 / 10%)
279
+ );
280
+ --kioku-theme-color-disabled-surface: light-dark(#e4e4e0, #090908);
281
+ --kioku-theme-color-disabled-text: light-dark(#7c7c76, #7b7b75);
282
+ --kioku-theme-color-focus: light-dark(#1d4d7c, #79aade);
283
+ --kioku-theme-border-default: light-dark(#dcdcd8, #2a2a27);
284
+ --kioku-theme-border-strong: light-dark(#b4b4ae, #3d3d39);
285
+ --kioku-theme-border-interactive: light-dark(#1d4d7c, #79aade);
286
+ --kioku-theme-border-disabled: light-dark(#e2e2de, #222220);
287
+ --kioku-theme-status-info-surface: light-dark(#e3e9f0, #79aade24);
288
+ --kioku-theme-status-info-text: light-dark(#143a60, #a2c6ea);
289
+ --kioku-theme-status-success-surface: light-dark(#e4ebe2, #8bb37f20);
290
+ --kioku-theme-status-success-text: light-dark(#3f6b3a, #8bb37f);
291
+ --kioku-theme-status-warning-surface: light-dark(#f3ecda, #d3b16420);
292
+ --kioku-theme-status-warning-text: light-dark(#8a6510, #d3b164);
293
+ --kioku-theme-status-danger-surface: light-dark(#f4e0dd, #d5837a20);
294
+ --kioku-theme-status-danger-text: light-dark(#993229, #d5837a);
295
+ --kioku-theme-texture-grain: light-dark(transparent, transparent);
296
+ --kioku-theme-font-family-display:
297
+ 'Shippori Mincho', 'Hiragino Mincho ProN', serif;
298
+ --kioku-theme-elevation-low: 0 0 0 1px light-dark(#dcdcd8, #2a2a27);
299
+ --kioku-theme-elevation-medium:
300
+ 0 1px 0 light-dark(rgb(19 19 17 / 6%), rgb(0 0 0 / 40%)),
301
+ 0 0 0 1px light-dark(#dcdcd8, #2a2a27);
302
+ --kioku-theme-elevation-high:
303
+ 0 2px 5px light-dark(rgb(19 19 17 / 10%), rgb(0 0 0 / 52%)),
304
+ 0 0 0 1px light-dark(#dcdcd8, #2a2a27);
305
+ }
306
+
307
+ /* ThemeDefinition values resolve through a dictionary owned by each skin. */
308
+ [data-theme='washi'] {
309
+ --kioku-theme-washi-color-canvas: var(--kioku-theme-color-canvas);
310
+ --kioku-theme-washi-color-surface: var(--kioku-theme-color-surface);
311
+ --kioku-theme-washi-color-surface-raised: var(
312
+ --kioku-theme-color-surface-raised
313
+ );
314
+ --kioku-theme-washi-color-surface-muted: var(
315
+ --kioku-theme-color-surface-muted
316
+ );
317
+ --kioku-theme-washi-color-text: var(--kioku-theme-color-text);
318
+ --kioku-theme-washi-color-text-secondary: var(
319
+ --kioku-theme-color-text-secondary
320
+ );
321
+ --kioku-theme-washi-color-text-muted: var(--kioku-theme-color-text-muted);
322
+ --kioku-theme-washi-color-text-on-accent: var(
323
+ --kioku-theme-color-text-on-accent
324
+ );
325
+ --kioku-theme-washi-color-accent: var(--kioku-theme-color-accent);
326
+ --kioku-theme-washi-color-accent-hover: var(--kioku-theme-color-accent-hover);
327
+ --kioku-theme-washi-color-accent-active: var(
328
+ --kioku-theme-color-accent-active
329
+ );
330
+ --kioku-theme-washi-color-overlay-hover: var(
331
+ --kioku-theme-color-overlay-hover
332
+ );
333
+ --kioku-theme-washi-color-overlay-active: var(
334
+ --kioku-theme-color-overlay-active
335
+ );
336
+ --kioku-theme-washi-color-disabled-surface: var(
337
+ --kioku-theme-color-disabled-surface
338
+ );
339
+ --kioku-theme-washi-color-disabled-text: var(
340
+ --kioku-theme-color-disabled-text
341
+ );
342
+ --kioku-theme-washi-color-focus: var(--kioku-theme-color-focus);
343
+ --kioku-theme-washi-border-default: var(--kioku-theme-border-default);
344
+ --kioku-theme-washi-border-strong: var(--kioku-theme-border-strong);
345
+ --kioku-theme-washi-border-interactive: var(--kioku-theme-border-interactive);
346
+ --kioku-theme-washi-border-disabled: var(--kioku-theme-border-disabled);
347
+ --kioku-theme-washi-border-width: var(--kioku-theme-border-width);
348
+ --kioku-theme-washi-border-style: var(--kioku-theme-border-style);
349
+ --kioku-theme-washi-status-info-surface: var(
350
+ --kioku-theme-status-info-surface
351
+ );
352
+ --kioku-theme-washi-status-info-text: var(--kioku-theme-status-info-text);
353
+ --kioku-theme-washi-status-success-surface: var(
354
+ --kioku-theme-status-success-surface
355
+ );
356
+ --kioku-theme-washi-status-success-text: var(
357
+ --kioku-theme-status-success-text
358
+ );
359
+ --kioku-theme-washi-status-warning-surface: var(
360
+ --kioku-theme-status-warning-surface
361
+ );
362
+ --kioku-theme-washi-status-warning-text: var(
363
+ --kioku-theme-status-warning-text
364
+ );
365
+ --kioku-theme-washi-status-danger-surface: var(
366
+ --kioku-theme-status-danger-surface
367
+ );
368
+ --kioku-theme-washi-status-danger-text: var(--kioku-theme-status-danger-text);
369
+ --kioku-theme-washi-focus-width: var(--kioku-theme-focus-width);
370
+ --kioku-theme-washi-focus-offset: var(--kioku-theme-focus-offset);
371
+ --kioku-theme-washi-font-family-body: var(--kioku-theme-font-family-body);
372
+ --kioku-theme-washi-font-family-heading: var(
373
+ --kioku-theme-font-family-heading
374
+ );
375
+ --kioku-theme-washi-font-family-display: var(
376
+ --kioku-theme-font-family-display
377
+ );
378
+ --kioku-theme-washi-font-family-mono: var(--kioku-theme-font-family-mono);
379
+ --kioku-theme-washi-font-feature-settings: var(
380
+ --kioku-theme-font-feature-settings
381
+ );
382
+ --kioku-theme-washi-font-size-xs: var(--kioku-theme-font-size-xs);
383
+ --kioku-theme-washi-font-size-sm: var(--kioku-theme-font-size-sm);
384
+ --kioku-theme-washi-font-size-md: var(--kioku-theme-font-size-md);
385
+ --kioku-theme-washi-font-size-lg: var(--kioku-theme-font-size-lg);
386
+ --kioku-theme-washi-font-size-xl: var(--kioku-theme-font-size-xl);
387
+ --kioku-theme-washi-font-size-2xl: var(--kioku-theme-font-size-2xl);
388
+ --kioku-theme-washi-font-weight-regular: var(
389
+ --kioku-theme-font-weight-regular
390
+ );
391
+ --kioku-theme-washi-font-weight-medium: var(--kioku-theme-font-weight-medium);
392
+ --kioku-theme-washi-font-weight-strong: var(--kioku-theme-font-weight-strong);
393
+ --kioku-theme-washi-line-height-body: var(--kioku-theme-line-height-body);
394
+ --kioku-theme-washi-line-height-heading: var(
395
+ --kioku-theme-line-height-heading
396
+ );
397
+ --kioku-theme-washi-spacing-xs: var(--kioku-theme-spacing-xs);
398
+ --kioku-theme-washi-spacing-sm: var(--kioku-theme-spacing-sm);
399
+ --kioku-theme-washi-spacing-md: var(--kioku-theme-spacing-md);
400
+ --kioku-theme-washi-spacing-lg: var(--kioku-theme-spacing-lg);
401
+ --kioku-theme-washi-spacing-xl: var(--kioku-theme-spacing-xl);
402
+ --kioku-theme-washi-spacing-2xl: var(--kioku-theme-spacing-2xl);
403
+ --kioku-theme-washi-radius-inner: var(--kioku-theme-radius-inner);
404
+ --kioku-theme-washi-radius-element: var(--kioku-theme-radius-element);
405
+ --kioku-theme-washi-radius-container: var(--kioku-theme-radius-container);
406
+ --kioku-theme-washi-radius-page: var(--kioku-theme-radius-page);
407
+ --kioku-theme-washi-radius-full: var(--kioku-theme-radius-full);
408
+ --kioku-theme-washi-size-control-sm: var(--kioku-theme-size-control-sm);
409
+ --kioku-theme-washi-size-control-md: var(--kioku-theme-size-control-md);
410
+ --kioku-theme-washi-size-control-lg: var(--kioku-theme-size-control-lg);
411
+ --kioku-theme-washi-size-hit-target: var(--kioku-theme-size-hit-target);
412
+ --kioku-theme-washi-elevation-low: var(--kioku-theme-elevation-low);
413
+ --kioku-theme-washi-elevation-medium: var(--kioku-theme-elevation-medium);
414
+ --kioku-theme-washi-elevation-high: var(--kioku-theme-elevation-high);
415
+ --kioku-theme-washi-texture-grain: var(--kioku-theme-texture-grain);
416
+ --kioku-theme-washi-motion-duration-fast: var(
417
+ --kioku-theme-motion-duration-fast
418
+ );
419
+ --kioku-theme-washi-motion-duration-moderate: var(
420
+ --kioku-theme-motion-duration-moderate
421
+ );
422
+ --kioku-theme-washi-motion-duration-slow: var(
423
+ --kioku-theme-motion-duration-slow
424
+ );
425
+ --kioku-theme-washi-motion-easing-standard: var(
426
+ --kioku-theme-motion-easing-standard
427
+ );
428
+ --kioku-theme-washi-motion-easing-emphasized: var(
429
+ --kioku-theme-motion-easing-emphasized
430
+ );
431
+ }
432
+
433
+ [data-theme='muji'] {
434
+ --kioku-theme-muji-color-canvas: var(--kioku-theme-color-canvas);
435
+ --kioku-theme-muji-color-surface: var(--kioku-theme-color-surface);
436
+ --kioku-theme-muji-color-surface-raised: var(
437
+ --kioku-theme-color-surface-raised
438
+ );
439
+ --kioku-theme-muji-color-surface-muted: var(
440
+ --kioku-theme-color-surface-muted
441
+ );
442
+ --kioku-theme-muji-color-text: var(--kioku-theme-color-text);
443
+ --kioku-theme-muji-color-text-secondary: var(
444
+ --kioku-theme-color-text-secondary
445
+ );
446
+ --kioku-theme-muji-color-text-muted: var(--kioku-theme-color-text-muted);
447
+ --kioku-theme-muji-color-text-on-accent: var(
448
+ --kioku-theme-color-text-on-accent
449
+ );
450
+ --kioku-theme-muji-color-accent: var(--kioku-theme-color-accent);
451
+ --kioku-theme-muji-color-accent-hover: var(--kioku-theme-color-accent-hover);
452
+ --kioku-theme-muji-color-accent-active: var(
453
+ --kioku-theme-color-accent-active
454
+ );
455
+ --kioku-theme-muji-color-overlay-hover: var(
456
+ --kioku-theme-color-overlay-hover
457
+ );
458
+ --kioku-theme-muji-color-overlay-active: var(
459
+ --kioku-theme-color-overlay-active
460
+ );
461
+ --kioku-theme-muji-color-disabled-surface: var(
462
+ --kioku-theme-color-disabled-surface
463
+ );
464
+ --kioku-theme-muji-color-disabled-text: var(
465
+ --kioku-theme-color-disabled-text
466
+ );
467
+ --kioku-theme-muji-color-focus: var(--kioku-theme-color-focus);
468
+ --kioku-theme-muji-border-default: var(--kioku-theme-border-default);
469
+ --kioku-theme-muji-border-strong: var(--kioku-theme-border-strong);
470
+ --kioku-theme-muji-border-interactive: var(--kioku-theme-border-interactive);
471
+ --kioku-theme-muji-border-disabled: var(--kioku-theme-border-disabled);
472
+ --kioku-theme-muji-border-width: var(--kioku-theme-border-width);
473
+ --kioku-theme-muji-border-style: var(--kioku-theme-border-style);
474
+ --kioku-theme-muji-status-info-surface: var(
475
+ --kioku-theme-status-info-surface
476
+ );
477
+ --kioku-theme-muji-status-info-text: var(--kioku-theme-status-info-text);
478
+ --kioku-theme-muji-status-success-surface: var(
479
+ --kioku-theme-status-success-surface
480
+ );
481
+ --kioku-theme-muji-status-success-text: var(
482
+ --kioku-theme-status-success-text
483
+ );
484
+ --kioku-theme-muji-status-warning-surface: var(
485
+ --kioku-theme-status-warning-surface
486
+ );
487
+ --kioku-theme-muji-status-warning-text: var(
488
+ --kioku-theme-status-warning-text
489
+ );
490
+ --kioku-theme-muji-status-danger-surface: var(
491
+ --kioku-theme-status-danger-surface
492
+ );
493
+ --kioku-theme-muji-status-danger-text: var(--kioku-theme-status-danger-text);
494
+ --kioku-theme-muji-focus-width: var(--kioku-theme-focus-width);
495
+ --kioku-theme-muji-focus-offset: var(--kioku-theme-focus-offset);
496
+ --kioku-theme-muji-font-family-body: var(--kioku-theme-font-family-body);
497
+ --kioku-theme-muji-font-family-heading: var(
498
+ --kioku-theme-font-family-heading
499
+ );
500
+ --kioku-theme-muji-font-family-display: var(
501
+ --kioku-theme-font-family-display
502
+ );
503
+ --kioku-theme-muji-font-family-mono: var(--kioku-theme-font-family-mono);
504
+ --kioku-theme-muji-font-feature-settings: var(
505
+ --kioku-theme-font-feature-settings
506
+ );
507
+ --kioku-theme-muji-font-size-xs: var(--kioku-theme-font-size-xs);
508
+ --kioku-theme-muji-font-size-sm: var(--kioku-theme-font-size-sm);
509
+ --kioku-theme-muji-font-size-md: var(--kioku-theme-font-size-md);
510
+ --kioku-theme-muji-font-size-lg: var(--kioku-theme-font-size-lg);
511
+ --kioku-theme-muji-font-size-xl: var(--kioku-theme-font-size-xl);
512
+ --kioku-theme-muji-font-size-2xl: var(--kioku-theme-font-size-2xl);
513
+ --kioku-theme-muji-font-weight-regular: var(
514
+ --kioku-theme-font-weight-regular
515
+ );
516
+ --kioku-theme-muji-font-weight-medium: var(--kioku-theme-font-weight-medium);
517
+ --kioku-theme-muji-font-weight-strong: var(--kioku-theme-font-weight-strong);
518
+ --kioku-theme-muji-line-height-body: var(--kioku-theme-line-height-body);
519
+ --kioku-theme-muji-line-height-heading: var(
520
+ --kioku-theme-line-height-heading
521
+ );
522
+ --kioku-theme-muji-spacing-xs: var(--kioku-theme-spacing-xs);
523
+ --kioku-theme-muji-spacing-sm: var(--kioku-theme-spacing-sm);
524
+ --kioku-theme-muji-spacing-md: var(--kioku-theme-spacing-md);
525
+ --kioku-theme-muji-spacing-lg: var(--kioku-theme-spacing-lg);
526
+ --kioku-theme-muji-spacing-xl: var(--kioku-theme-spacing-xl);
527
+ --kioku-theme-muji-spacing-2xl: var(--kioku-theme-spacing-2xl);
528
+ --kioku-theme-muji-radius-inner: var(--kioku-theme-radius-inner);
529
+ --kioku-theme-muji-radius-element: var(--kioku-theme-radius-element);
530
+ --kioku-theme-muji-radius-container: var(--kioku-theme-radius-container);
531
+ --kioku-theme-muji-radius-page: var(--kioku-theme-radius-page);
532
+ --kioku-theme-muji-radius-full: var(--kioku-theme-radius-full);
533
+ --kioku-theme-muji-size-control-sm: var(--kioku-theme-size-control-sm);
534
+ --kioku-theme-muji-size-control-md: var(--kioku-theme-size-control-md);
535
+ --kioku-theme-muji-size-control-lg: var(--kioku-theme-size-control-lg);
536
+ --kioku-theme-muji-size-hit-target: var(--kioku-theme-size-hit-target);
537
+ --kioku-theme-muji-elevation-low: var(--kioku-theme-elevation-low);
538
+ --kioku-theme-muji-elevation-medium: var(--kioku-theme-elevation-medium);
539
+ --kioku-theme-muji-elevation-high: var(--kioku-theme-elevation-high);
540
+ --kioku-theme-muji-texture-grain: var(--kioku-theme-texture-grain);
541
+ --kioku-theme-muji-motion-duration-fast: var(
542
+ --kioku-theme-motion-duration-fast
543
+ );
544
+ --kioku-theme-muji-motion-duration-moderate: var(
545
+ --kioku-theme-motion-duration-moderate
546
+ );
547
+ --kioku-theme-muji-motion-duration-slow: var(
548
+ --kioku-theme-motion-duration-slow
549
+ );
550
+ --kioku-theme-muji-motion-easing-standard: var(
551
+ --kioku-theme-motion-easing-standard
552
+ );
553
+ --kioku-theme-muji-motion-easing-emphasized: var(
554
+ --kioku-theme-motion-easing-emphasized
555
+ );
556
+ }
557
+
558
+ [data-theme='sumi'] {
559
+ --kioku-theme-sumi-color-canvas: var(--kioku-theme-color-canvas);
560
+ --kioku-theme-sumi-color-surface: var(--kioku-theme-color-surface);
561
+ --kioku-theme-sumi-color-surface-raised: var(
562
+ --kioku-theme-color-surface-raised
563
+ );
564
+ --kioku-theme-sumi-color-surface-muted: var(
565
+ --kioku-theme-color-surface-muted
566
+ );
567
+ --kioku-theme-sumi-color-text: var(--kioku-theme-color-text);
568
+ --kioku-theme-sumi-color-text-secondary: var(
569
+ --kioku-theme-color-text-secondary
570
+ );
571
+ --kioku-theme-sumi-color-text-muted: var(--kioku-theme-color-text-muted);
572
+ --kioku-theme-sumi-color-text-on-accent: var(
573
+ --kioku-theme-color-text-on-accent
574
+ );
575
+ --kioku-theme-sumi-color-accent: var(--kioku-theme-color-accent);
576
+ --kioku-theme-sumi-color-accent-hover: var(--kioku-theme-color-accent-hover);
577
+ --kioku-theme-sumi-color-accent-active: var(
578
+ --kioku-theme-color-accent-active
579
+ );
580
+ --kioku-theme-sumi-color-overlay-hover: var(
581
+ --kioku-theme-color-overlay-hover
582
+ );
583
+ --kioku-theme-sumi-color-overlay-active: var(
584
+ --kioku-theme-color-overlay-active
585
+ );
586
+ --kioku-theme-sumi-color-disabled-surface: var(
587
+ --kioku-theme-color-disabled-surface
588
+ );
589
+ --kioku-theme-sumi-color-disabled-text: var(
590
+ --kioku-theme-color-disabled-text
591
+ );
592
+ --kioku-theme-sumi-color-focus: var(--kioku-theme-color-focus);
593
+ --kioku-theme-sumi-border-default: var(--kioku-theme-border-default);
594
+ --kioku-theme-sumi-border-strong: var(--kioku-theme-border-strong);
595
+ --kioku-theme-sumi-border-interactive: var(--kioku-theme-border-interactive);
596
+ --kioku-theme-sumi-border-disabled: var(--kioku-theme-border-disabled);
597
+ --kioku-theme-sumi-border-width: var(--kioku-theme-border-width);
598
+ --kioku-theme-sumi-border-style: var(--kioku-theme-border-style);
599
+ --kioku-theme-sumi-status-info-surface: var(
600
+ --kioku-theme-status-info-surface
601
+ );
602
+ --kioku-theme-sumi-status-info-text: var(--kioku-theme-status-info-text);
603
+ --kioku-theme-sumi-status-success-surface: var(
604
+ --kioku-theme-status-success-surface
605
+ );
606
+ --kioku-theme-sumi-status-success-text: var(
607
+ --kioku-theme-status-success-text
608
+ );
609
+ --kioku-theme-sumi-status-warning-surface: var(
610
+ --kioku-theme-status-warning-surface
611
+ );
612
+ --kioku-theme-sumi-status-warning-text: var(
613
+ --kioku-theme-status-warning-text
614
+ );
615
+ --kioku-theme-sumi-status-danger-surface: var(
616
+ --kioku-theme-status-danger-surface
617
+ );
618
+ --kioku-theme-sumi-status-danger-text: var(--kioku-theme-status-danger-text);
619
+ --kioku-theme-sumi-focus-width: var(--kioku-theme-focus-width);
620
+ --kioku-theme-sumi-focus-offset: var(--kioku-theme-focus-offset);
621
+ --kioku-theme-sumi-font-family-body: var(--kioku-theme-font-family-body);
622
+ --kioku-theme-sumi-font-family-heading: var(
623
+ --kioku-theme-font-family-heading
624
+ );
625
+ --kioku-theme-sumi-font-family-display: var(
626
+ --kioku-theme-font-family-display
627
+ );
628
+ --kioku-theme-sumi-font-family-mono: var(--kioku-theme-font-family-mono);
629
+ --kioku-theme-sumi-font-feature-settings: var(
630
+ --kioku-theme-font-feature-settings
631
+ );
632
+ --kioku-theme-sumi-font-size-xs: var(--kioku-theme-font-size-xs);
633
+ --kioku-theme-sumi-font-size-sm: var(--kioku-theme-font-size-sm);
634
+ --kioku-theme-sumi-font-size-md: var(--kioku-theme-font-size-md);
635
+ --kioku-theme-sumi-font-size-lg: var(--kioku-theme-font-size-lg);
636
+ --kioku-theme-sumi-font-size-xl: var(--kioku-theme-font-size-xl);
637
+ --kioku-theme-sumi-font-size-2xl: var(--kioku-theme-font-size-2xl);
638
+ --kioku-theme-sumi-font-weight-regular: var(
639
+ --kioku-theme-font-weight-regular
640
+ );
641
+ --kioku-theme-sumi-font-weight-medium: var(--kioku-theme-font-weight-medium);
642
+ --kioku-theme-sumi-font-weight-strong: var(--kioku-theme-font-weight-strong);
643
+ --kioku-theme-sumi-line-height-body: var(--kioku-theme-line-height-body);
644
+ --kioku-theme-sumi-line-height-heading: var(
645
+ --kioku-theme-line-height-heading
646
+ );
647
+ --kioku-theme-sumi-spacing-xs: var(--kioku-theme-spacing-xs);
648
+ --kioku-theme-sumi-spacing-sm: var(--kioku-theme-spacing-sm);
649
+ --kioku-theme-sumi-spacing-md: var(--kioku-theme-spacing-md);
650
+ --kioku-theme-sumi-spacing-lg: var(--kioku-theme-spacing-lg);
651
+ --kioku-theme-sumi-spacing-xl: var(--kioku-theme-spacing-xl);
652
+ --kioku-theme-sumi-spacing-2xl: var(--kioku-theme-spacing-2xl);
653
+ --kioku-theme-sumi-radius-inner: var(--kioku-theme-radius-inner);
654
+ --kioku-theme-sumi-radius-element: var(--kioku-theme-radius-element);
655
+ --kioku-theme-sumi-radius-container: var(--kioku-theme-radius-container);
656
+ --kioku-theme-sumi-radius-page: var(--kioku-theme-radius-page);
657
+ --kioku-theme-sumi-radius-full: var(--kioku-theme-radius-full);
658
+ --kioku-theme-sumi-size-control-sm: var(--kioku-theme-size-control-sm);
659
+ --kioku-theme-sumi-size-control-md: var(--kioku-theme-size-control-md);
660
+ --kioku-theme-sumi-size-control-lg: var(--kioku-theme-size-control-lg);
661
+ --kioku-theme-sumi-size-hit-target: var(--kioku-theme-size-hit-target);
662
+ --kioku-theme-sumi-elevation-low: var(--kioku-theme-elevation-low);
663
+ --kioku-theme-sumi-elevation-medium: var(--kioku-theme-elevation-medium);
664
+ --kioku-theme-sumi-elevation-high: var(--kioku-theme-elevation-high);
665
+ --kioku-theme-sumi-texture-grain: var(--kioku-theme-texture-grain);
666
+ --kioku-theme-sumi-motion-duration-fast: var(
667
+ --kioku-theme-motion-duration-fast
668
+ );
669
+ --kioku-theme-sumi-motion-duration-moderate: var(
670
+ --kioku-theme-motion-duration-moderate
671
+ );
672
+ --kioku-theme-sumi-motion-duration-slow: var(
673
+ --kioku-theme-motion-duration-slow
674
+ );
675
+ --kioku-theme-sumi-motion-easing-standard: var(
676
+ --kioku-theme-motion-easing-standard
677
+ );
678
+ --kioku-theme-sumi-motion-easing-emphasized: var(
679
+ --kioku-theme-motion-easing-emphasized
680
+ );
681
+ }
682
+
683
+ /* Chinese uses complete SC families inside each selected theme. */
684
+ [data-theme='washi']:lang(zh),
685
+ [data-theme='sumi']:lang(zh) {
686
+ --kioku-theme-font-family-body:
687
+ 'Noto Sans SC', 'PingFang SC', 'Hiragino Sans GB', sans-serif;
688
+ --kioku-theme-font-family-heading:
689
+ 'Noto Sans SC', 'PingFang SC', 'Hiragino Sans GB', sans-serif;
690
+ --kioku-theme-font-family-display:
691
+ 'Noto Serif SC', 'Songti SC', 'STSong', serif;
692
+ }
693
+
694
+ [data-theme='muji']:lang(zh) {
695
+ --kioku-theme-font-family-body:
696
+ 'Noto Sans SC', 'PingFang SC', 'Hiragino Sans GB', sans-serif;
697
+ --kioku-theme-font-family-heading:
698
+ 'Noto Sans SC', 'PingFang SC', 'Hiragino Sans GB', sans-serif;
699
+ --kioku-theme-font-family-display:
700
+ 'Noto Sans SC', 'PingFang SC', 'Hiragino Sans GB', sans-serif;
701
+ }
@@ -0,0 +1,5 @@
1
+ import type { ThemeDefinition } from '@misoto22/kioku-ui/theme';
2
+ export declare const washiTheme: ThemeDefinition;
3
+ export declare const mujiTheme: ThemeDefinition;
4
+ export declare const sumiTheme: ThemeDefinition;
5
+ export declare const kiokuThemes: readonly ThemeDefinition[];
package/dist/themes.js ADDED
@@ -0,0 +1,92 @@
1
+ function themeTokenReferences(id) {
2
+ const variable = (role) => `var(--kioku-theme-${id}-${role})`;
3
+ return Object.freeze({
4
+ 'color.canvas': variable('color-canvas'),
5
+ 'color.surface': variable('color-surface'),
6
+ 'color.surfaceRaised': variable('color-surface-raised'),
7
+ 'color.surfaceMuted': variable('color-surface-muted'),
8
+ 'color.text': variable('color-text'),
9
+ 'color.textSecondary': variable('color-text-secondary'),
10
+ 'color.textMuted': variable('color-text-muted'),
11
+ 'color.textOnAccent': variable('color-text-on-accent'),
12
+ 'color.accent': variable('color-accent'),
13
+ 'color.accentHover': variable('color-accent-hover'),
14
+ 'color.accentActive': variable('color-accent-active'),
15
+ 'color.overlayHover': variable('color-overlay-hover'),
16
+ 'color.overlayActive': variable('color-overlay-active'),
17
+ 'color.disabledSurface': variable('color-disabled-surface'),
18
+ 'color.disabledText': variable('color-disabled-text'),
19
+ 'color.focus': variable('color-focus'),
20
+ 'border.default': variable('border-default'),
21
+ 'border.strong': variable('border-strong'),
22
+ 'border.interactive': variable('border-interactive'),
23
+ 'border.disabled': variable('border-disabled'),
24
+ 'border.width': variable('border-width'),
25
+ 'border.style': variable('border-style'),
26
+ 'status.infoSurface': variable('status-info-surface'),
27
+ 'status.infoText': variable('status-info-text'),
28
+ 'status.successSurface': variable('status-success-surface'),
29
+ 'status.successText': variable('status-success-text'),
30
+ 'status.warningSurface': variable('status-warning-surface'),
31
+ 'status.warningText': variable('status-warning-text'),
32
+ 'status.dangerSurface': variable('status-danger-surface'),
33
+ 'status.dangerText': variable('status-danger-text'),
34
+ 'focus.width': variable('focus-width'),
35
+ 'focus.offset': variable('focus-offset'),
36
+ 'typography.fontFamilyBody': variable('font-family-body'),
37
+ 'typography.fontFamilyHeading': variable('font-family-heading'),
38
+ 'typography.fontFamilyDisplay': variable('font-family-display'),
39
+ 'typography.fontFamilyMono': variable('font-family-mono'),
40
+ 'typography.fontFeatureSettings': variable('font-feature-settings'),
41
+ 'typography.fontSizeXs': variable('font-size-xs'),
42
+ 'typography.fontSizeSm': variable('font-size-sm'),
43
+ 'typography.fontSizeMd': variable('font-size-md'),
44
+ 'typography.fontSizeLg': variable('font-size-lg'),
45
+ 'typography.fontSizeXl': variable('font-size-xl'),
46
+ 'typography.fontSize2xl': variable('font-size-2xl'),
47
+ 'typography.fontWeightRegular': variable('font-weight-regular'),
48
+ 'typography.fontWeightMedium': variable('font-weight-medium'),
49
+ 'typography.fontWeightStrong': variable('font-weight-strong'),
50
+ 'typography.lineHeightBody': variable('line-height-body'),
51
+ 'typography.lineHeightHeading': variable('line-height-heading'),
52
+ 'spacing.xs': variable('spacing-xs'),
53
+ 'spacing.sm': variable('spacing-sm'),
54
+ 'spacing.md': variable('spacing-md'),
55
+ 'spacing.lg': variable('spacing-lg'),
56
+ 'spacing.xl': variable('spacing-xl'),
57
+ 'spacing.2xl': variable('spacing-2xl'),
58
+ 'radius.inner': variable('radius-inner'),
59
+ 'radius.element': variable('radius-element'),
60
+ 'radius.container': variable('radius-container'),
61
+ 'radius.page': variable('radius-page'),
62
+ 'radius.full': variable('radius-full'),
63
+ 'size.controlSm': variable('size-control-sm'),
64
+ 'size.controlMd': variable('size-control-md'),
65
+ 'size.controlLg': variable('size-control-lg'),
66
+ 'size.hitTarget': variable('size-hit-target'),
67
+ 'elevation.low': variable('elevation-low'),
68
+ 'elevation.medium': variable('elevation-medium'),
69
+ 'elevation.high': variable('elevation-high'),
70
+ 'texture.grain': variable('texture-grain'),
71
+ 'motion.durationFast': variable('motion-duration-fast'),
72
+ 'motion.durationModerate': variable('motion-duration-moderate'),
73
+ 'motion.durationSlow': variable('motion-duration-slow'),
74
+ 'motion.easingStandard': variable('motion-easing-standard'),
75
+ 'motion.easingEmphasized': variable('motion-easing-emphasized'),
76
+ });
77
+ }
78
+ function defineTheme(id, label) {
79
+ return Object.freeze({
80
+ id,
81
+ label,
82
+ tokens: themeTokenReferences(id),
83
+ });
84
+ }
85
+ export const washiTheme = defineTheme('washi', 'Washi');
86
+ export const mujiTheme = defineTheme('muji', 'Muji');
87
+ export const sumiTheme = defineTheme('sumi', 'Sumi');
88
+ export const kiokuThemes = Object.freeze([
89
+ washiTheme,
90
+ mujiTheme,
91
+ sumiTheme,
92
+ ]);
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@misoto22/kioku-ui-theme-kioku",
3
+ "version": "0.0.0",
4
+ "description": "Kioku Washi, Muji, and Sumi themes for Kioku UI.",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/Misoto22/kioku-ui.git",
9
+ "directory": "packages/themes/kioku"
10
+ },
11
+ "homepage": "https://github.com/Misoto22/kioku-ui#readme",
12
+ "bugs": {
13
+ "url": "https://github.com/Misoto22/kioku-ui/issues"
14
+ },
15
+ "publishConfig": {
16
+ "access": "public"
17
+ },
18
+ "sideEffects": [
19
+ "**/*.css"
20
+ ],
21
+ "type": "module",
22
+ "types": "./dist/index.d.ts",
23
+ "files": [
24
+ "dist",
25
+ "README.md"
26
+ ],
27
+ "exports": {
28
+ ".": {
29
+ "types": "./dist/index.d.ts",
30
+ "import": "./dist/index.js",
31
+ "default": "./dist/index.js"
32
+ },
33
+ "./theme.css": "./dist/theme.css"
34
+ },
35
+ "peerDependencies": {
36
+ "@misoto22/kioku-ui": ">=0.0.0 <0.2.0",
37
+ "react": "^19.0.0",
38
+ "react-dom": "^19.0.0"
39
+ },
40
+ "devDependencies": {
41
+ "@misoto22/kioku-ui": "0.0.0"
42
+ },
43
+ "scripts": {
44
+ "build": "tsc -p tsconfig.build.json && node build.mjs",
45
+ "test": "vitest run src",
46
+ "typecheck": "tsc --noEmit -p tsconfig.json"
47
+ }
48
+ }