@mcp-b/design-tokens 0.40.0 → 0.42.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 +3 -1
- package/src/color-presets.css +23 -23
- package/src/index.css +1 -0
- package/src/layout.css +53 -0
- package/src/seeds.css +4 -2
- package/src/semantic-colors.css +52 -1
- package/src/style-presets.css +6 -6
- package/src/themes.css +4 -0
- package/src/typography.css +12 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcp-b/design-tokens",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.42.0",
|
|
4
4
|
"description": "Shared design tokens for MCP-B React applications.",
|
|
5
5
|
"homepage": "https://mcp-b-design-system-storybook.alexmnahas.workers.dev",
|
|
6
6
|
"bugs": {
|
|
@@ -30,6 +30,8 @@
|
|
|
30
30
|
"./elevation.css": "./src/elevation.css",
|
|
31
31
|
"./focus": "./src/focus.css",
|
|
32
32
|
"./focus.css": "./src/focus.css",
|
|
33
|
+
"./layout": "./src/layout.css",
|
|
34
|
+
"./layout.css": "./src/layout.css",
|
|
33
35
|
"./motion": "./src/motion.css",
|
|
34
36
|
"./motion.css": "./src/motion.css",
|
|
35
37
|
"./palettes": "./src/palettes.css",
|
package/src/color-presets.css
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Color Presets
|
|
3
3
|
*
|
|
4
|
-
* Opt-in accent presets, activated by a data-preset attribute on the root
|
|
5
|
-
*
|
|
4
|
+
* Opt-in accent presets, activated by a data-preset attribute on the root.
|
|
5
|
+
* Without the attribute the primary family keeps its default
|
|
6
6
|
* monochrome values from semantic-colors.css, so nothing changes for
|
|
7
7
|
* consumers who never set it.
|
|
8
8
|
*
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* "@mcp-b/design-tokens/color-presets" after the main tokens to opt in.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
[data-preset] {
|
|
18
|
+
:root[data-preset] {
|
|
19
19
|
--sigvelo-color-primary-bg-subtle-light: var(--sigvelo-color-primary-100);
|
|
20
20
|
--sigvelo-color-primary-bg-subtle-dark: color-mix(
|
|
21
21
|
in oklab,
|
|
@@ -63,84 +63,84 @@
|
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
/* Red and rose collide with the danger seed, so both shift danger to amber. */
|
|
66
|
-
[data-preset="red"] {
|
|
66
|
+
:root[data-preset="red"] {
|
|
67
67
|
--sigvelo-color-primary-seed: #ef5655;
|
|
68
68
|
--sigvelo-color-danger-seed: #e89a26;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
[data-preset="orange"] {
|
|
71
|
+
:root[data-preset="orange"] {
|
|
72
72
|
--sigvelo-color-primary-seed: #f08039;
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
[data-preset="amber"] {
|
|
75
|
+
:root[data-preset="amber"] {
|
|
76
76
|
--sigvelo-color-primary-seed: #e89a26;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
[data-preset="yellow"] {
|
|
79
|
+
:root[data-preset="yellow"] {
|
|
80
80
|
--sigvelo-color-primary-seed: #dcb31e;
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
[data-preset="lime"] {
|
|
83
|
+
:root[data-preset="lime"] {
|
|
84
84
|
--sigvelo-color-primary-seed: #9abb28;
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
[data-preset="green"] {
|
|
87
|
+
:root[data-preset="green"] {
|
|
88
88
|
--sigvelo-color-primary-seed: #5dbb55;
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
-
[data-preset="emerald"] {
|
|
91
|
+
:root[data-preset="emerald"] {
|
|
92
92
|
--sigvelo-color-primary-seed: #47b873;
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
[data-preset="teal"] {
|
|
95
|
+
:root[data-preset="teal"] {
|
|
96
96
|
--sigvelo-color-primary-seed: #37b995;
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
[data-preset="cyan"] {
|
|
99
|
+
:root[data-preset="cyan"] {
|
|
100
100
|
--sigvelo-color-primary-seed: #20b8bc;
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
-
[data-preset="sky"] {
|
|
103
|
+
:root[data-preset="sky"] {
|
|
104
104
|
--sigvelo-color-primary-seed: #1caedd;
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
-
[data-preset="blue"] {
|
|
107
|
+
:root[data-preset="blue"] {
|
|
108
108
|
--sigvelo-color-primary-seed: #4a97f4;
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
-
[data-preset="indigo"] {
|
|
111
|
+
:root[data-preset="indigo"] {
|
|
112
112
|
--sigvelo-color-primary-seed: #6e85f8;
|
|
113
113
|
}
|
|
114
114
|
|
|
115
|
-
[data-preset="violet"] {
|
|
115
|
+
:root[data-preset="violet"] {
|
|
116
116
|
--sigvelo-color-primary-seed: #927cfb;
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
-
[data-preset="purple"] {
|
|
119
|
+
:root[data-preset="purple"] {
|
|
120
120
|
--sigvelo-color-primary-seed: #ae75f6;
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
-
[data-preset="fuchsia"] {
|
|
123
|
+
:root[data-preset="fuchsia"] {
|
|
124
124
|
--sigvelo-color-primary-seed: #d26ae8;
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
-
[data-preset="pink"] {
|
|
127
|
+
:root[data-preset="pink"] {
|
|
128
128
|
--sigvelo-color-primary-seed: #e468b0;
|
|
129
129
|
}
|
|
130
130
|
|
|
131
|
-
[data-preset="rose"] {
|
|
131
|
+
:root[data-preset="rose"] {
|
|
132
132
|
--sigvelo-color-primary-seed: #ee6383;
|
|
133
133
|
--sigvelo-color-danger-seed: #e89a26;
|
|
134
134
|
}
|
|
135
135
|
|
|
136
|
-
[data-preset="slate"] {
|
|
136
|
+
:root[data-preset="slate"] {
|
|
137
137
|
--sigvelo-color-primary-seed: #848da0;
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
-
[data-preset="zinc"] {
|
|
140
|
+
:root[data-preset="zinc"] {
|
|
141
141
|
--sigvelo-color-primary-seed: #8b8c93;
|
|
142
142
|
}
|
|
143
143
|
|
|
144
|
-
[data-preset="stone"] {
|
|
144
|
+
:root[data-preset="stone"] {
|
|
145
145
|
--sigvelo-color-primary-seed: #918c87;
|
|
146
146
|
}
|
package/src/index.css
CHANGED
package/src/layout.css
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Application layout.
|
|
3
|
+
*
|
|
4
|
+
* Spacing.css is the 4px grid. This file names the layout decisions every
|
|
5
|
+
* application plane must share, so switching routes does not change how far
|
|
6
|
+
* content sits from chrome, how wide a sidebar is, or where a page column
|
|
7
|
+
* stops. A length that is only used once is not a layout token; it stays in
|
|
8
|
+
* the component.
|
|
9
|
+
*
|
|
10
|
+
* Container queries cannot read custom properties. The compact breakpoint
|
|
11
|
+
* literal in @container rules is 56rem and must stay in lockstep with
|
|
12
|
+
* --sigvelo-layout-break-compact.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
:root {
|
|
16
|
+
/* Inset of an application plane from its host, and of page content from
|
|
17
|
+
that plane. Codex and Claude both settle on 12px in the side panel. */
|
|
18
|
+
--sigvelo-layout-gutter: var(--sigvelo-spacing-3);
|
|
19
|
+
|
|
20
|
+
/* Gap between sibling regions in a shell (conversation | workbench). */
|
|
21
|
+
--sigvelo-layout-gap: var(--sigvelo-layout-gutter);
|
|
22
|
+
|
|
23
|
+
/* Vertical rhythm between stacked page sections. */
|
|
24
|
+
--sigvelo-layout-stack: var(--sigvelo-spacing-4);
|
|
25
|
+
|
|
26
|
+
/* Gap inside a wrap cluster: toolbars, action groups, compact lists. */
|
|
27
|
+
--sigvelo-layout-cluster: var(--sigvelo-spacing-2);
|
|
28
|
+
|
|
29
|
+
/* Default rail. Hosts may override --responsive-sidebar-shell-sidebar-size;
|
|
30
|
+
this is the fallback before that hook is set, and the documented default. */
|
|
31
|
+
--sigvelo-layout-sidebar: 16rem;
|
|
32
|
+
|
|
33
|
+
/* Conversation column. Sizing this side, not the workbench, keeps one
|
|
34
|
+
readable transcript at any window width. 24.5rem is 392px. */
|
|
35
|
+
--sigvelo-layout-conversation: 24.5rem;
|
|
36
|
+
|
|
37
|
+
/* Compact shell: one track, no inset plane. Used as documentation and by
|
|
38
|
+
script; @container conditions must repeat the 56rem literal. */
|
|
39
|
+
--sigvelo-layout-break-compact: 56rem;
|
|
40
|
+
|
|
41
|
+
/* The flexible track in every 1fr column or row. minmax(0, 1fr) is what
|
|
42
|
+
stops a grid item from overflowing its track. */
|
|
43
|
+
--sigvelo-layout-track-fill: minmax(0, 1fr);
|
|
44
|
+
|
|
45
|
+
/* Capped reading/work column for full-page lists and dossiers. 50rem is
|
|
46
|
+
Ploy's 800px list cap; wider panes stretch a name away from its status. */
|
|
47
|
+
--sigvelo-layout-content: 50rem;
|
|
48
|
+
|
|
49
|
+
/* Application chrome row, before safe-area insets. */
|
|
50
|
+
--sigvelo-layout-chrome: calc(
|
|
51
|
+
var(--sigvelo-density-compact-control-height) + var(--sigvelo-spacing-2)
|
|
52
|
+
);
|
|
53
|
+
}
|
package/src/seeds.css
CHANGED
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
:root {
|
|
11
11
|
--sigvelo-color-primary-seed: #007dba;
|
|
12
12
|
--sigvelo-color-neutral-seed: #8b8c93;
|
|
13
|
-
|
|
13
|
+
/* Success and danger stay desaturated: status color is an accent in an
|
|
14
|
+
otherwise monotone app, not a highlight. */
|
|
15
|
+
--sigvelo-color-success-seed: #5f9d64;
|
|
14
16
|
--sigvelo-color-warning-seed: #e89a26;
|
|
15
|
-
--sigvelo-color-danger-seed: #
|
|
17
|
+
--sigvelo-color-danger-seed: #c75d5a;
|
|
16
18
|
}
|
package/src/semantic-colors.css
CHANGED
|
@@ -90,6 +90,13 @@
|
|
|
90
90
|
color-mix(in oklab, transparent, var(--sigvelo-color-shadow) 5%);
|
|
91
91
|
--sigvelo-elevation-hairline-dark: 0 0 0 var(--sigvelo-border-width-hairline)
|
|
92
92
|
color-mix(in oklab, transparent, white 10%);
|
|
93
|
+
/* bar: chrome rows sitting atop scrolling content. A directional step down
|
|
94
|
+
rather than a ring, so the surface's own edge stays its only outline;
|
|
95
|
+
pair it with a border-block-end hairline. */
|
|
96
|
+
--sigvelo-elevation-bar-light: 0 2px 4px
|
|
97
|
+
color-mix(in oklab, transparent, var(--sigvelo-color-shadow) 4%);
|
|
98
|
+
--sigvelo-elevation-bar-dark: 0 2px 4px
|
|
99
|
+
color-mix(in oklab, transparent, var(--sigvelo-color-shadow) 30%);
|
|
93
100
|
/* raised: rows, cards, anything one step off the page. A broad, low-alpha
|
|
94
101
|
shadow separates the surface without drawing a dark line beneath it. */
|
|
95
102
|
--sigvelo-elevation-raised-light:
|
|
@@ -273,7 +280,7 @@
|
|
|
273
280
|
var(--sigvelo-color-danger-600),
|
|
274
281
|
black 12.5%
|
|
275
282
|
);
|
|
276
|
-
--sigvelo-color-danger-text-dark: var(--sigvelo-color-danger-
|
|
283
|
+
--sigvelo-color-danger-text-dark: var(--sigvelo-color-danger-400);
|
|
277
284
|
--sigvelo-color-danger-border-subtle-light: color-mix(
|
|
278
285
|
in oklab,
|
|
279
286
|
var(--sigvelo-color-danger-100),
|
|
@@ -289,3 +296,47 @@
|
|
|
289
296
|
--sigvelo-color-danger-border-light: var(--sigvelo-color-danger-500);
|
|
290
297
|
--sigvelo-color-danger-border-dark: var(--sigvelo-color-danger-600);
|
|
291
298
|
}
|
|
299
|
+
|
|
300
|
+
/*
|
|
301
|
+
* Interaction fills. Derived from the activated aliases so they follow system
|
|
302
|
+
* preference, data-theme, and data-preset without another light/dark map.
|
|
303
|
+
* Mix toward the on-fill text: that lightens a dark control and darkens a
|
|
304
|
+
* light one, instead of always mixing toward black.
|
|
305
|
+
*/
|
|
306
|
+
:root {
|
|
307
|
+
--sigvelo-color-primary-bg-hover: color-mix(
|
|
308
|
+
in oklab,
|
|
309
|
+
var(--sigvelo-color-primary-bg),
|
|
310
|
+
var(--sigvelo-color-primary-text-on-bg) 10%
|
|
311
|
+
);
|
|
312
|
+
--sigvelo-color-primary-bg-press: color-mix(
|
|
313
|
+
in oklab,
|
|
314
|
+
var(--sigvelo-color-primary-bg),
|
|
315
|
+
var(--sigvelo-color-primary-text-on-bg) 16%
|
|
316
|
+
);
|
|
317
|
+
--sigvelo-color-neutral-bg-hover: color-mix(
|
|
318
|
+
in oklab,
|
|
319
|
+
var(--sigvelo-color-neutral-bg-subtle),
|
|
320
|
+
var(--sigvelo-color-neutral-text-on-subtle) 10%
|
|
321
|
+
);
|
|
322
|
+
--sigvelo-color-neutral-bg-press: color-mix(
|
|
323
|
+
in oklab,
|
|
324
|
+
var(--sigvelo-color-neutral-bg-subtle),
|
|
325
|
+
var(--sigvelo-color-neutral-text-on-subtle) 16%
|
|
326
|
+
);
|
|
327
|
+
--sigvelo-color-danger-bg-hover: color-mix(
|
|
328
|
+
in oklab,
|
|
329
|
+
var(--sigvelo-color-danger-bg),
|
|
330
|
+
var(--sigvelo-color-danger-text-on-bg) 10%
|
|
331
|
+
);
|
|
332
|
+
--sigvelo-color-danger-bg-press: color-mix(
|
|
333
|
+
in oklab,
|
|
334
|
+
var(--sigvelo-color-danger-bg),
|
|
335
|
+
var(--sigvelo-color-danger-text-on-bg) 16%
|
|
336
|
+
);
|
|
337
|
+
--sigvelo-color-neutral-bg-selected: color-mix(
|
|
338
|
+
in oklab,
|
|
339
|
+
var(--sigvelo-color-neutral-bg-subtle),
|
|
340
|
+
var(--sigvelo-color-neutral-text-on-subtle) 14%
|
|
341
|
+
);
|
|
342
|
+
}
|
package/src/style-presets.css
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Style Presets
|
|
3
3
|
*
|
|
4
4
|
* Opt-in design-language presets, activated by a data-style attribute on the
|
|
5
|
-
* root
|
|
5
|
+
* root. Each one re-points shape, elevation, typography,
|
|
6
6
|
* density, and focus tokens to evoke a familiar system — the component CSS
|
|
7
7
|
* never changes. Without the attribute everything keeps its defaults.
|
|
8
8
|
*
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
/* Clean — Radix / shadcn. Balanced radii, system font, understated depth. */
|
|
18
|
-
[data-style="clean"] {
|
|
18
|
+
:root[data-style="clean"] {
|
|
19
19
|
--sigvelo-radius-scale: 1;
|
|
20
20
|
--sigvelo-corner-shape: round;
|
|
21
21
|
--sigvelo-radius-xs-base: 0.125rem; /* 2px */
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
/* Material — Material Design 3. Expressive radii, elevation does the work. */
|
|
54
|
-
[data-style="material"] {
|
|
54
|
+
:root[data-style="material"] {
|
|
55
55
|
--sigvelo-radius-scale: 1;
|
|
56
56
|
--sigvelo-corner-shape: round;
|
|
57
57
|
--sigvelo-radius-xs-base: 0.25rem; /* 4px */
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
/* Fluent — Fluent UI. Restrained radii, compact density, Segoe UI. */
|
|
91
|
-
[data-style="fluent"] {
|
|
91
|
+
:root[data-style="fluent"] {
|
|
92
92
|
--sigvelo-radius-scale: 1;
|
|
93
93
|
--sigvelo-corner-shape: round;
|
|
94
94
|
--sigvelo-radius-xs-base: 0.125rem; /* 2px */
|
|
@@ -127,7 +127,7 @@
|
|
|
127
127
|
}
|
|
128
128
|
|
|
129
129
|
/* Base — Base UI. Sharp edges, hairline separation, zero decoration. */
|
|
130
|
-
[data-style="base"] {
|
|
130
|
+
:root[data-style="base"] {
|
|
131
131
|
--sigvelo-radius-scale: 1;
|
|
132
132
|
--sigvelo-corner-shape: round;
|
|
133
133
|
--sigvelo-radius-xs-base: 0px;
|
|
@@ -160,7 +160,7 @@
|
|
|
160
160
|
}
|
|
161
161
|
|
|
162
162
|
/* Playful — generous radii, bold type, warm prominent shadows. */
|
|
163
|
-
[data-style="playful"] {
|
|
163
|
+
:root[data-style="playful"] {
|
|
164
164
|
--sigvelo-radius-scale: 1;
|
|
165
165
|
--sigvelo-corner-shape: round;
|
|
166
166
|
--sigvelo-radius-xs-base: 0.25rem; /* 4px */
|
package/src/themes.css
CHANGED
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
--sigvelo-color-selection-bg: var(--sigvelo-color-selection-bg-light);
|
|
30
30
|
--sigvelo-color-selection-text: var(--sigvelo-color-selection-text-light);
|
|
31
31
|
--sigvelo-elevation-hairline: var(--sigvelo-elevation-hairline-light);
|
|
32
|
+
--sigvelo-elevation-bar: var(--sigvelo-elevation-bar-light);
|
|
32
33
|
--sigvelo-elevation-raised: var(--sigvelo-elevation-raised-light);
|
|
33
34
|
--sigvelo-elevation-floating: var(--sigvelo-elevation-floating-light);
|
|
34
35
|
--sigvelo-elevation-overlay: var(--sigvelo-elevation-overlay-light);
|
|
@@ -120,6 +121,7 @@
|
|
|
120
121
|
--sigvelo-color-selection-bg: var(--sigvelo-color-selection-bg-dark);
|
|
121
122
|
--sigvelo-color-selection-text: var(--sigvelo-color-selection-text-dark);
|
|
122
123
|
--sigvelo-elevation-hairline: var(--sigvelo-elevation-hairline-dark);
|
|
124
|
+
--sigvelo-elevation-bar: var(--sigvelo-elevation-bar-dark);
|
|
123
125
|
--sigvelo-elevation-raised: var(--sigvelo-elevation-raised-dark);
|
|
124
126
|
--sigvelo-elevation-floating: var(--sigvelo-elevation-floating-dark);
|
|
125
127
|
--sigvelo-elevation-overlay: var(--sigvelo-elevation-overlay-dark);
|
|
@@ -210,6 +212,7 @@
|
|
|
210
212
|
--sigvelo-color-selection-bg: var(--sigvelo-color-selection-bg-light);
|
|
211
213
|
--sigvelo-color-selection-text: var(--sigvelo-color-selection-text-light);
|
|
212
214
|
--sigvelo-elevation-hairline: var(--sigvelo-elevation-hairline-light);
|
|
215
|
+
--sigvelo-elevation-bar: var(--sigvelo-elevation-bar-light);
|
|
213
216
|
--sigvelo-elevation-raised: var(--sigvelo-elevation-raised-light);
|
|
214
217
|
--sigvelo-elevation-floating: var(--sigvelo-elevation-floating-light);
|
|
215
218
|
--sigvelo-elevation-overlay: var(--sigvelo-elevation-overlay-light);
|
|
@@ -300,6 +303,7 @@
|
|
|
300
303
|
--sigvelo-color-selection-bg: var(--sigvelo-color-selection-bg-dark);
|
|
301
304
|
--sigvelo-color-selection-text: var(--sigvelo-color-selection-text-dark);
|
|
302
305
|
--sigvelo-elevation-hairline: var(--sigvelo-elevation-hairline-dark);
|
|
306
|
+
--sigvelo-elevation-bar: var(--sigvelo-elevation-bar-dark);
|
|
303
307
|
--sigvelo-elevation-raised: var(--sigvelo-elevation-raised-dark);
|
|
304
308
|
--sigvelo-elevation-floating: var(--sigvelo-elevation-floating-dark);
|
|
305
309
|
--sigvelo-elevation-overlay: var(--sigvelo-elevation-overlay-dark);
|
package/src/typography.css
CHANGED
|
@@ -108,6 +108,18 @@
|
|
|
108
108
|
/* Code, tables, and diagrams read worse when wrapped than when wide. */
|
|
109
109
|
--sigvelo-measure-wide-block: 100ch;
|
|
110
110
|
|
|
111
|
+
/*
|
|
112
|
+
* Reading roles. Body text is one size across chat, markdown, activity, and
|
|
113
|
+
* workspace. Activity stays that size and fades (Codex conversation-body);
|
|
114
|
+
* headings and metadata are the only size exceptions.
|
|
115
|
+
*/
|
|
116
|
+
--sigvelo-text-prose: var(--sigvelo-text-sm);
|
|
117
|
+
--sigvelo-text-prose-leading: var(--sigvelo-text-sm-leading);
|
|
118
|
+
--sigvelo-text-code: var(--sigvelo-text-prose);
|
|
119
|
+
--sigvelo-text-code-leading: var(--sigvelo-text-prose-leading);
|
|
120
|
+
--sigvelo-text-meta: var(--sigvelo-text-xs);
|
|
121
|
+
--sigvelo-text-meta-leading: var(--sigvelo-text-xs-leading);
|
|
122
|
+
|
|
111
123
|
/*
|
|
112
124
|
* Reader text scale. Applied by .sigvelo-reader-text to prose only, never to
|
|
113
125
|
* chrome: a reader who wants larger message text is not asking for taller
|