rshow 0.0.0-stage → 0.0.2
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 +21 -0
- package/README.md +50 -2
- package/dist/main.js +8500 -0
- package/package.json +48 -4
- package/skills/rshow/SKILL.md +144 -0
- package/skills/rshow/reference/cli.md +263 -0
- package/skills/rshow/reference/dashboard.md +122 -0
- package/skills/rshow/reference/mockups.md +113 -0
- package/skills/rshow/reference/page-contract.md +83 -0
- package/skills/rshow/reference/pages.md +174 -0
- package/skills/rshow/reference/poster.md +137 -0
- package/skills/rshow/reference/project-page.md +132 -0
- package/skills/rshow/reference/reports.md +158 -0
- package/skills/rshow/reference/sketch.md +78 -0
- package/skills/rshow/reference/terminal.md +148 -0
- package/skills/rshow/reference/themes.md +139 -0
- package/skills/rshow-implement/SKILL.md +112 -0
- package/skills/rshow-implement/reference/compare.md +156 -0
- package/skills/rshow-implement/reference/handoff.md +125 -0
- package/skills/rshow-implement/reference/map.md +151 -0
- package/skills/rshow-slides/SKILL.md +136 -0
- package/skills/rshow-slides/reference/layouts.md +251 -0
- package/themes/default/dashboard.css +521 -0
- package/themes/default/dashboard.js +1390 -0
- package/themes/default/deck.css +586 -0
- package/themes/default/deck.js +741 -0
- package/themes/default/example/capture.ans +1 -0
- package/themes/default/example/dashboard.html +106 -0
- package/themes/default/example/demo.cast +14 -0
- package/themes/default/example/drawing.excalidraw +377 -0
- package/themes/default/example/index.html +311 -0
- package/themes/default/example/mockup-desktop.html +331 -0
- package/themes/default/example/mockup-platforms.html +742 -0
- package/themes/default/example/mockup.html +416 -0
- package/themes/default/example/page.html +153 -0
- package/themes/default/example/poster-figure.svg +58 -0
- package/themes/default/example/poster.html +181 -0
- package/themes/default/example/project.html +229 -0
- package/themes/default/example/report.html +404 -0
- package/themes/default/example/results.csv +61 -0
- package/themes/default/example/sketch.html +178 -0
- package/themes/default/example/teaser.svg +66 -0
- package/themes/default/example/terminal.html +231 -0
- package/themes/default/example/tui.html +223 -0
- package/themes/default/fonts/IBMPlexMono-Regular-Latin1.woff2 +0 -0
- package/themes/default/fonts/IBMPlexSans-Light-Latin1.woff2 +0 -0
- package/themes/default/fonts/IBMPlexSans-Regular-Latin1.woff2 +0 -0
- package/themes/default/fonts/IBMPlexSans-SemiBold-Latin1.woff2 +0 -0
- package/themes/default/fonts/OFL.txt +93 -0
- package/themes/default/fonts.css +63 -0
- package/themes/default/index.html +573 -0
- package/themes/default/mockup.css +1078 -0
- package/themes/default/mockup.js +1433 -0
- package/themes/default/mode.js +242 -0
- package/themes/default/page.css +320 -0
- package/themes/default/poster.css +480 -0
- package/themes/default/poster.js +223 -0
- package/themes/default/project.css +482 -0
- package/themes/default/project.js +116 -0
- package/themes/default/report.css +776 -0
- package/themes/default/report.js +427 -0
- package/themes/default/sketch.css +166 -0
- package/themes/default/sketch.js +681 -0
- package/themes/default/skins/adwaita.css +669 -0
- package/themes/default/skins/custom.css +596 -0
- package/themes/default/skins/egui.css +639 -0
- package/themes/default/skins/fluent.css +1093 -0
- package/themes/default/skins/fluent.js +458 -0
- package/themes/default/skins/mac.css +647 -0
- package/themes/default/skins/material.css +692 -0
- package/themes/default/skins/sketch.css +436 -0
- package/themes/default/skins/sketch.js +494 -0
- package/themes/default/skins/wire.css +561 -0
- package/themes/default/terminal.css +292 -0
- package/themes/default/terminal.js +433 -0
- package/themes/default/theme.json +149 -0
- package/themes/default/tokens.css +255 -0
- package/themes/default/tui.css +703 -0
- package/themes/default/tui.js +472 -0
- package/worker/index.js +6918 -0
- package/worker/migrations/0001_init.sql +52 -0
- package/worker/migrations/0002_blobs.sql +5 -0
- package/worker/migrations/0003_projects.sql +31 -0
- package/worker/migrations/0004_page_data_blob.sql +19 -0
|
@@ -0,0 +1,639 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* rshow theme "default": the egui skin, layer 3.
|
|
3
|
+
*
|
|
4
|
+
* egui is an immediate mode toolkit that paints every pixel itself, so its
|
|
5
|
+
* default look is the opposite of a platform skin: no chrome, no shadow, one
|
|
6
|
+
* flat gray ground, widgets that are rectangles a shade off it, a 2px corner, a
|
|
7
|
+
* thin stroke, small text and tight spacing. This skin draws the wf-* kit that
|
|
8
|
+
* way, and a mockup in a bare frame with it reads as a tool someone built, not
|
|
9
|
+
* as a window someone shipped.
|
|
10
|
+
*
|
|
11
|
+
* Two visual languages, both egui's: dark (its default, gray 27 ground with
|
|
12
|
+
* gray 60 widgets) and light (its light visuals, gray 248 ground). The dark
|
|
13
|
+
* values are the default and the light values sit behind the light mode, which
|
|
14
|
+
* is the reverse of the other skins and is what the toolkit does.
|
|
15
|
+
*
|
|
16
|
+
* The one colour is the selection blue, #005c80, because egui has exactly one
|
|
17
|
+
* accent and it uses it for a selection and for a hyperlink.
|
|
18
|
+
*
|
|
19
|
+
* Knobs: the custom.css set plus --mk-surface, --mk-surface-2, --mk-on-accent,
|
|
20
|
+
* --mk-accent-soft, --mk-radius-lg, --mk-ctl-h, --mk-line-h, --mk-select.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/* ---------------------------------------------------- the screen, dark -- */
|
|
24
|
+
|
|
25
|
+
/* egui's dark visuals are the default, so they are also what a page with no
|
|
26
|
+
mode preference gets: this skin is dark unless the reader chose light. */
|
|
27
|
+
|
|
28
|
+
[data-skin="egui"] {
|
|
29
|
+
--mk-bg: #1b1b1b;
|
|
30
|
+
|
|
31
|
+
/* the window chrome the frame draws, in the same two modes */
|
|
32
|
+
--mk-chrome-bg: #1b1b1b;
|
|
33
|
+
--mk-chrome-bg-2: #232323;
|
|
34
|
+
--mk-chrome-line: #3c3c3c;
|
|
35
|
+
--mk-chrome-fg: #c8c8c8;
|
|
36
|
+
--mk-surface: #232323;
|
|
37
|
+
--mk-surface-2: #1b1b1b;
|
|
38
|
+
--mk-fg: #c8c8c8;
|
|
39
|
+
--mk-muted: #8c8c8c;
|
|
40
|
+
--mk-line: #3c3c3c;
|
|
41
|
+
--mk-line-strong: #4a4a4a;
|
|
42
|
+
--mk-fill: #2a2a2a;
|
|
43
|
+
|
|
44
|
+
--mk-accent: #005c80;
|
|
45
|
+
--mk-accent-hover: #0072a0;
|
|
46
|
+
--mk-accent-soft: #16323c;
|
|
47
|
+
--mk-on-accent: #ffffff;
|
|
48
|
+
--mk-focus: #5caaff;
|
|
49
|
+
--mk-select: #5caaff;
|
|
50
|
+
|
|
51
|
+
/* egui has no pills and no cards: two pixels on a widget, three on a window */
|
|
52
|
+
--mk-radius: 2px;
|
|
53
|
+
--mk-radius-lg: 3px;
|
|
54
|
+
|
|
55
|
+
--mk-font: system-ui, -apple-system, "Segoe UI", sans-serif;
|
|
56
|
+
--mk-size: 12px;
|
|
57
|
+
--mk-line-h: 16px;
|
|
58
|
+
--mk-ctl-h: 22px;
|
|
59
|
+
--mk-gap: 6px;
|
|
60
|
+
--mk-pad: 8px;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/* --------------------------------------------------- the screen, light -- */
|
|
64
|
+
|
|
65
|
+
@media (prefers-color-scheme: light) {
|
|
66
|
+
:root:not([data-mode="dark"]) [data-skin="egui"] {
|
|
67
|
+
--mk-bg: #f8f8f8;
|
|
68
|
+
|
|
69
|
+
/* the window chrome the frame draws, in the same two modes */
|
|
70
|
+
--mk-chrome-bg: #f0f0f0;
|
|
71
|
+
--mk-chrome-bg-2: #e6e6e6;
|
|
72
|
+
--mk-chrome-line: #bdbdbd;
|
|
73
|
+
--mk-chrome-fg: #1b1b1b;
|
|
74
|
+
--mk-surface: #ffffff;
|
|
75
|
+
--mk-surface-2: #f0f0f0;
|
|
76
|
+
--mk-fg: #1b1b1b;
|
|
77
|
+
--mk-muted: #5a5a5a;
|
|
78
|
+
--mk-line: #bdbdbd;
|
|
79
|
+
--mk-line-strong: #a8a8a8;
|
|
80
|
+
--mk-fill: #e6e6e6;
|
|
81
|
+
--mk-accent: #005c80;
|
|
82
|
+
--mk-accent-hover: #0072a0;
|
|
83
|
+
--mk-accent-soft: #d8ebf2;
|
|
84
|
+
--mk-on-accent: #ffffff;
|
|
85
|
+
--mk-focus: #005c80;
|
|
86
|
+
--mk-select: #002b3d;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
:root[data-mode="light"] [data-skin="egui"] {
|
|
91
|
+
--mk-bg: #f8f8f8;
|
|
92
|
+
|
|
93
|
+
/* the window chrome the frame draws, in the same two modes */
|
|
94
|
+
--mk-chrome-bg: #f0f0f0;
|
|
95
|
+
--mk-chrome-bg-2: #e6e6e6;
|
|
96
|
+
--mk-chrome-line: #bdbdbd;
|
|
97
|
+
--mk-chrome-fg: #1b1b1b;
|
|
98
|
+
--mk-surface: #ffffff;
|
|
99
|
+
--mk-surface-2: #f0f0f0;
|
|
100
|
+
--mk-fg: #1b1b1b;
|
|
101
|
+
--mk-muted: #5a5a5a;
|
|
102
|
+
--mk-line: #bdbdbd;
|
|
103
|
+
--mk-line-strong: #a8a8a8;
|
|
104
|
+
--mk-fill: #e6e6e6;
|
|
105
|
+
--mk-accent: #005c80;
|
|
106
|
+
--mk-accent-hover: #0072a0;
|
|
107
|
+
--mk-accent-soft: #d8ebf2;
|
|
108
|
+
--mk-on-accent: #ffffff;
|
|
109
|
+
--mk-focus: #005c80;
|
|
110
|
+
--mk-select: #002b3d;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/* --------------------------------------------------------------- screen -- */
|
|
114
|
+
|
|
115
|
+
[data-skin="egui"] .mk-screen {
|
|
116
|
+
color: var(--mk-fg);
|
|
117
|
+
background: var(--mk-bg);
|
|
118
|
+
color-scheme: dark;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
@media (prefers-color-scheme: light) {
|
|
122
|
+
:root:not([data-mode="dark"]) [data-skin="egui"] .mk-screen {
|
|
123
|
+
color-scheme: light;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
:root[data-mode="light"] [data-skin="egui"] .mk-screen {
|
|
128
|
+
color-scheme: light;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
[data-skin="egui"] .mk-screen a {
|
|
132
|
+
color: var(--mk-select);
|
|
133
|
+
text-decoration: underline;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/* --------------------------------------------------------------- layout -- */
|
|
137
|
+
|
|
138
|
+
[data-skin="egui"] .wf-row {
|
|
139
|
+
display: flex;
|
|
140
|
+
align-items: center;
|
|
141
|
+
gap: var(--mk-gap);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
[data-skin="egui"] .wf-col {
|
|
145
|
+
display: flex;
|
|
146
|
+
flex-direction: column;
|
|
147
|
+
gap: var(--mk-gap);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
[data-skin="egui"] .wf-row.wf-shell {
|
|
151
|
+
align-items: stretch;
|
|
152
|
+
gap: 0;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
[data-skin="egui"] .wf-row.wf-top {
|
|
156
|
+
align-items: flex-start;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
[data-skin="egui"] .wf-spacer,
|
|
160
|
+
[data-skin="egui"] .wf-grow {
|
|
161
|
+
flex: 1 1 auto;
|
|
162
|
+
min-width: 0;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/* ----------------------------------------------------------------- type -- */
|
|
166
|
+
|
|
167
|
+
[data-skin="egui"] .wf-heading {
|
|
168
|
+
display: block;
|
|
169
|
+
width: 34%;
|
|
170
|
+
max-width: 16em;
|
|
171
|
+
height: 0.75em;
|
|
172
|
+
background: var(--mk-fg);
|
|
173
|
+
border-radius: 1px;
|
|
174
|
+
opacity: 0.8;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
[data-skin="egui"] .wf-heading:not(:empty) {
|
|
178
|
+
width: auto;
|
|
179
|
+
max-width: none;
|
|
180
|
+
height: auto;
|
|
181
|
+
font-size: 14px;
|
|
182
|
+
font-weight: 600;
|
|
183
|
+
line-height: 18px;
|
|
184
|
+
background: none;
|
|
185
|
+
opacity: 1;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
[data-skin="egui"] .wf-text {
|
|
189
|
+
--mk-lines: 2;
|
|
190
|
+
display: block;
|
|
191
|
+
height: calc(var(--mk-lines) * var(--mk-line-h));
|
|
192
|
+
background-image: repeating-linear-gradient(
|
|
193
|
+
to bottom,
|
|
194
|
+
var(--mk-line-strong) 0 5px,
|
|
195
|
+
transparent 5px var(--mk-line-h)
|
|
196
|
+
);
|
|
197
|
+
opacity: 0.8;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
[data-skin="egui"] .wf-text[data-lines="1"] { --mk-lines: 1; }
|
|
201
|
+
[data-skin="egui"] .wf-text[data-lines="2"] { --mk-lines: 2; }
|
|
202
|
+
[data-skin="egui"] .wf-text[data-lines="3"] { --mk-lines: 3; }
|
|
203
|
+
[data-skin="egui"] .wf-text[data-lines="4"] { --mk-lines: 4; }
|
|
204
|
+
[data-skin="egui"] .wf-text[data-lines="5"] { --mk-lines: 5; }
|
|
205
|
+
[data-skin="egui"] .wf-text[data-lines="6"] { --mk-lines: 6; }
|
|
206
|
+
[data-skin="egui"] .wf-text[data-lines="7"] { --mk-lines: 7; }
|
|
207
|
+
[data-skin="egui"] .wf-text[data-lines="8"] { --mk-lines: 8; }
|
|
208
|
+
|
|
209
|
+
[data-skin="egui"] .wf-text:not(:empty) {
|
|
210
|
+
height: auto;
|
|
211
|
+
font-size: 12px;
|
|
212
|
+
line-height: var(--mk-line-h);
|
|
213
|
+
color: var(--mk-muted);
|
|
214
|
+
background: none;
|
|
215
|
+
opacity: 1;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/* --------------------------------------------------------------- blocks -- */
|
|
219
|
+
|
|
220
|
+
/* An egui group is a rectangle with a 1px stroke and nothing else: no shadow,
|
|
221
|
+
no translucency, no second layer. */
|
|
222
|
+
[data-skin="egui"] .wf-box {
|
|
223
|
+
min-height: 32px;
|
|
224
|
+
padding: 6px;
|
|
225
|
+
background: var(--mk-fill);
|
|
226
|
+
border: 1px solid var(--mk-line);
|
|
227
|
+
border-radius: var(--mk-radius);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/* egui paints a selected item with the selection colour and a 1px stroke in the
|
|
231
|
+
selection stroke, which is inline in the same frame and not an overlay. */
|
|
232
|
+
[data-skin="egui"] .wf-box.is-active {
|
|
233
|
+
background: var(--mk-accent-soft);
|
|
234
|
+
box-shadow: inset 0 0 0 1px var(--mk-accent);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
[data-skin="egui"] .wf-card {
|
|
238
|
+
display: flex;
|
|
239
|
+
flex-direction: column;
|
|
240
|
+
gap: var(--mk-gap);
|
|
241
|
+
padding: 8px;
|
|
242
|
+
background: var(--mk-surface);
|
|
243
|
+
border: 1px solid var(--mk-line);
|
|
244
|
+
border-radius: var(--mk-radius-lg);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
[data-skin="egui"] .wf-image {
|
|
248
|
+
min-height: 120px;
|
|
249
|
+
background-color: var(--mk-fill);
|
|
250
|
+
background-image: linear-gradient(
|
|
251
|
+
to top right,
|
|
252
|
+
transparent calc(50% - 0.5px),
|
|
253
|
+
var(--mk-line-strong) calc(50% - 0.5px),
|
|
254
|
+
var(--mk-line-strong) calc(50% + 0.5px),
|
|
255
|
+
transparent calc(50% + 0.5px)
|
|
256
|
+
),
|
|
257
|
+
linear-gradient(
|
|
258
|
+
to bottom right,
|
|
259
|
+
transparent calc(50% - 0.5px),
|
|
260
|
+
var(--mk-line-strong) calc(50% - 0.5px),
|
|
261
|
+
var(--mk-line-strong) calc(50% + 0.5px),
|
|
262
|
+
transparent calc(50% + 0.5px)
|
|
263
|
+
);
|
|
264
|
+
border: 1px solid var(--mk-line);
|
|
265
|
+
border-radius: var(--mk-radius);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
[data-skin="egui"] .wf-avatar {
|
|
269
|
+
flex: 0 0 auto;
|
|
270
|
+
width: 24px;
|
|
271
|
+
height: 24px;
|
|
272
|
+
background: var(--mk-fill);
|
|
273
|
+
border: 1px solid var(--mk-line);
|
|
274
|
+
border-radius: 50%;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
[data-skin="egui"] .wf-avatar[data-size="sm"] {
|
|
278
|
+
width: 18px;
|
|
279
|
+
height: 18px;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
[data-skin="egui"] .wf-avatar[data-size="lg"] {
|
|
283
|
+
width: 32px;
|
|
284
|
+
height: 32px;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
[data-skin="egui"] .wf-icon {
|
|
288
|
+
display: inline-block;
|
|
289
|
+
flex: 0 0 auto;
|
|
290
|
+
width: 12px;
|
|
291
|
+
height: 12px;
|
|
292
|
+
background: var(--mk-fill);
|
|
293
|
+
border: 1px solid var(--mk-line);
|
|
294
|
+
border-radius: 1px;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
[data-skin="egui"] .wf-icon[data-size="lg"] {
|
|
298
|
+
width: 16px;
|
|
299
|
+
height: 16px;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/* ------------------------------------------------------------- controls -- */
|
|
303
|
+
|
|
304
|
+
/* egui's inactive widget is a fill one step off the panel with a 1px stroke in
|
|
305
|
+
the widget stroke grey, and the hovered state is a brighter fill, not a
|
|
306
|
+
colour change. Nothing is a pill and nothing is round. */
|
|
307
|
+
[data-skin="egui"] .wf-button {
|
|
308
|
+
display: inline-flex;
|
|
309
|
+
align-items: center;
|
|
310
|
+
justify-content: center;
|
|
311
|
+
gap: 4px;
|
|
312
|
+
height: var(--mk-ctl-h);
|
|
313
|
+
padding: 0 8px;
|
|
314
|
+
font: inherit;
|
|
315
|
+
font-size: 12px;
|
|
316
|
+
color: var(--mk-fg);
|
|
317
|
+
text-align: center;
|
|
318
|
+
text-decoration: none;
|
|
319
|
+
white-space: nowrap;
|
|
320
|
+
background: var(--mk-fill);
|
|
321
|
+
border: 1px solid var(--mk-line-strong);
|
|
322
|
+
border-radius: var(--mk-radius);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
[data-skin="egui"] .wf-button.primary {
|
|
326
|
+
color: var(--mk-on-accent);
|
|
327
|
+
background: var(--mk-accent);
|
|
328
|
+
border-color: var(--mk-accent-hover);
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
[data-skin="egui"] .wf-button.ghost {
|
|
332
|
+
color: var(--mk-muted);
|
|
333
|
+
background: transparent;
|
|
334
|
+
border-color: var(--mk-line);
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
[data-skin="egui"] .wf-button[disabled] {
|
|
338
|
+
color: var(--mk-muted);
|
|
339
|
+
opacity: 0.5;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
[data-skin="egui"] .wf-button:focus-visible,
|
|
343
|
+
[data-skin="egui"] .wf-button[data-focus] {
|
|
344
|
+
outline: 1px solid var(--mk-focus);
|
|
345
|
+
outline-offset: 1px;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
[data-skin="egui"] .wf-input {
|
|
349
|
+
position: relative;
|
|
350
|
+
display: flex;
|
|
351
|
+
align-items: center;
|
|
352
|
+
min-height: var(--mk-ctl-h);
|
|
353
|
+
padding: 0 6px;
|
|
354
|
+
font-size: 12px;
|
|
355
|
+
color: var(--mk-fg);
|
|
356
|
+
background: var(--mk-surface);
|
|
357
|
+
border: 1px solid var(--mk-line-strong);
|
|
358
|
+
border-radius: var(--mk-radius);
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
/* egui labels a widget above it, in the muted grey, at the same small size. */
|
|
362
|
+
[data-skin="egui"] .wf-input[data-label]::before,
|
|
363
|
+
[data-skin="egui"] .wf-select[data-label]::before,
|
|
364
|
+
[data-skin="egui"] .wf-label {
|
|
365
|
+
position: absolute;
|
|
366
|
+
top: -13px;
|
|
367
|
+
left: 1px;
|
|
368
|
+
z-index: 1;
|
|
369
|
+
padding: 0 2px;
|
|
370
|
+
font-size: 10px;
|
|
371
|
+
line-height: 1.2;
|
|
372
|
+
color: var(--mk-muted);
|
|
373
|
+
background: var(--mk-bg);
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
[data-skin="egui"] .wf-input[data-label]::before,
|
|
377
|
+
[data-skin="egui"] .wf-select[data-label]::before {
|
|
378
|
+
content: attr(data-label);
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
[data-skin="egui"] .wf-input:focus-within {
|
|
382
|
+
border-color: var(--mk-focus);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
/* An empty field still says what it is: the drawing's placeholder is read out
|
|
386
|
+
of the attribute, so a search box in a title bar is not a blank rectangle. */
|
|
387
|
+
[data-skin="egui"] .wf-input[data-placeholder]:empty::after {
|
|
388
|
+
content: attr(data-placeholder);
|
|
389
|
+
color: var(--mk-muted);
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
[data-skin="egui"] .wf-select {
|
|
393
|
+
position: relative;
|
|
394
|
+
display: flex;
|
|
395
|
+
align-items: center;
|
|
396
|
+
min-height: var(--mk-ctl-h);
|
|
397
|
+
padding: 0 22px 0 6px;
|
|
398
|
+
font-size: 12px;
|
|
399
|
+
color: var(--mk-fg);
|
|
400
|
+
background: var(--mk-fill);
|
|
401
|
+
border: 1px solid var(--mk-line-strong);
|
|
402
|
+
border-radius: var(--mk-radius);
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
[data-skin="egui"] .wf-select::after {
|
|
406
|
+
content: "";
|
|
407
|
+
position: absolute;
|
|
408
|
+
top: 50%;
|
|
409
|
+
right: 7px;
|
|
410
|
+
width: 0;
|
|
411
|
+
height: 0;
|
|
412
|
+
margin-top: -2px;
|
|
413
|
+
border-top: 4px solid var(--mk-muted);
|
|
414
|
+
border-right: 3px solid transparent;
|
|
415
|
+
border-left: 3px solid transparent;
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
[data-skin="egui"] .wf-checkbox {
|
|
419
|
+
position: relative;
|
|
420
|
+
display: inline-block;
|
|
421
|
+
flex: 0 0 auto;
|
|
422
|
+
width: 14px;
|
|
423
|
+
height: 14px;
|
|
424
|
+
background: var(--mk-surface);
|
|
425
|
+
border: 1px solid var(--mk-line-strong);
|
|
426
|
+
border-radius: 2px;
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
[data-skin="egui"] .wf-checkbox[data-checked="true"] {
|
|
430
|
+
background: var(--mk-accent);
|
|
431
|
+
border-color: var(--mk-accent);
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
[data-skin="egui"] .wf-checkbox[data-checked="true"]::after {
|
|
435
|
+
content: "";
|
|
436
|
+
position: absolute;
|
|
437
|
+
top: 1px;
|
|
438
|
+
left: 3.5px;
|
|
439
|
+
width: 3px;
|
|
440
|
+
height: 7px;
|
|
441
|
+
border: solid var(--mk-on-accent);
|
|
442
|
+
border-width: 0 1.5px 1.5px 0;
|
|
443
|
+
transform: rotate(45deg);
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
[data-skin="egui"] .wf-toggle {
|
|
447
|
+
position: relative;
|
|
448
|
+
display: inline-block;
|
|
449
|
+
flex: 0 0 auto;
|
|
450
|
+
width: 26px;
|
|
451
|
+
height: 14px;
|
|
452
|
+
background: var(--mk-fill);
|
|
453
|
+
border: 1px solid var(--mk-line-strong);
|
|
454
|
+
border-radius: 2px;
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
[data-skin="egui"] .wf-toggle::after {
|
|
458
|
+
content: "";
|
|
459
|
+
position: absolute;
|
|
460
|
+
top: 1px;
|
|
461
|
+
left: 1px;
|
|
462
|
+
width: 10px;
|
|
463
|
+
height: 10px;
|
|
464
|
+
background: var(--mk-muted);
|
|
465
|
+
border-radius: 1px;
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
[data-skin="egui"] .wf-toggle.on {
|
|
469
|
+
background: var(--mk-accent);
|
|
470
|
+
border-color: var(--mk-accent);
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
[data-skin="egui"] .wf-toggle.on::after {
|
|
474
|
+
left: 13px;
|
|
475
|
+
background: var(--mk-on-accent);
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
/* A selected tab in egui is a selectable label painted with the selection
|
|
479
|
+
colour, which is the one place the blue shows up in a settled window. */
|
|
480
|
+
[data-skin="egui"] .wf-tabs {
|
|
481
|
+
display: flex;
|
|
482
|
+
align-items: stretch;
|
|
483
|
+
gap: 2px;
|
|
484
|
+
border-bottom: 1px solid var(--mk-line);
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
[data-skin="egui"] .wf-tabs > * {
|
|
488
|
+
padding: 4px 8px;
|
|
489
|
+
font-size: 12px;
|
|
490
|
+
line-height: 14px;
|
|
491
|
+
color: var(--mk-fg);
|
|
492
|
+
white-space: nowrap;
|
|
493
|
+
border-radius: var(--mk-radius) var(--mk-radius) 0 0;
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
[data-skin="egui"] .wf-tabs > .is-active,
|
|
497
|
+
[data-skin="egui"] .wf-tabs > [aria-selected="true"] {
|
|
498
|
+
color: var(--mk-select);
|
|
499
|
+
background: var(--mk-accent-soft);
|
|
500
|
+
box-shadow: inset 0 -2px 0 0 var(--mk-accent);
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
/* ---------------------------------------------------------------- shell -- */
|
|
504
|
+
|
|
505
|
+
/* A menu bar is one row of words with no borders and no background, and a side
|
|
506
|
+
* panel is a plain column split by a 1px line. */
|
|
507
|
+
[data-skin="egui"] .wf-nav {
|
|
508
|
+
display: flex;
|
|
509
|
+
align-items: center;
|
|
510
|
+
gap: 10px;
|
|
511
|
+
min-height: 24px;
|
|
512
|
+
padding: 0 6px;
|
|
513
|
+
font-size: 12px;
|
|
514
|
+
border-bottom: 1px solid var(--mk-line);
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
[data-skin="egui"] .wf-sidebar {
|
|
518
|
+
display: flex;
|
|
519
|
+
flex: 0 0 auto;
|
|
520
|
+
flex-direction: column;
|
|
521
|
+
gap: 1px;
|
|
522
|
+
width: 150px;
|
|
523
|
+
padding: 4px;
|
|
524
|
+
border-right: 1px solid var(--mk-line);
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
[data-skin="egui"] .wf-sidebar > .wf-row {
|
|
528
|
+
gap: 6px;
|
|
529
|
+
min-height: 20px;
|
|
530
|
+
padding: 0 6px;
|
|
531
|
+
border-radius: var(--mk-radius);
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
[data-skin="egui"] .wf-sidebar > .wf-row.is-active,
|
|
535
|
+
[data-skin="egui"] .wf-sidebar > .is-active {
|
|
536
|
+
background: var(--mk-accent-soft);
|
|
537
|
+
box-shadow: inset 0 0 0 1px var(--mk-accent);
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
/* ----------------------------------------------------------------- data -- */
|
|
541
|
+
|
|
542
|
+
[data-skin="egui"] .wf-table {
|
|
543
|
+
--mk-rows: 4;
|
|
544
|
+
--mk-cols: 3;
|
|
545
|
+
height: calc(var(--mk-rows) * 20px);
|
|
546
|
+
background-image: repeating-linear-gradient(
|
|
547
|
+
to bottom,
|
|
548
|
+
transparent 0 19px,
|
|
549
|
+
var(--mk-line) 19px 20px
|
|
550
|
+
),
|
|
551
|
+
repeating-linear-gradient(
|
|
552
|
+
to right,
|
|
553
|
+
transparent 0 calc(100% / var(--mk-cols) - 1px),
|
|
554
|
+
var(--mk-line) calc(100% / var(--mk-cols) - 1px) calc(100% / var(--mk-cols))
|
|
555
|
+
);
|
|
556
|
+
border: 1px solid var(--mk-line);
|
|
557
|
+
border-radius: var(--mk-radius);
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
[data-skin="egui"] .wf-table[data-rows="1"] { --mk-rows: 1; }
|
|
561
|
+
[data-skin="egui"] .wf-table[data-rows="2"] { --mk-rows: 2; }
|
|
562
|
+
[data-skin="egui"] .wf-table[data-rows="3"] { --mk-rows: 3; }
|
|
563
|
+
[data-skin="egui"] .wf-table[data-rows="4"] { --mk-rows: 4; }
|
|
564
|
+
[data-skin="egui"] .wf-table[data-rows="5"] { --mk-rows: 5; }
|
|
565
|
+
[data-skin="egui"] .wf-table[data-rows="6"] { --mk-rows: 6; }
|
|
566
|
+
[data-skin="egui"] .wf-table[data-rows="8"] { --mk-rows: 8; }
|
|
567
|
+
[data-skin="egui"] .wf-table[data-rows="10"] { --mk-rows: 10; }
|
|
568
|
+
[data-skin="egui"] .wf-table[data-cols="1"] { --mk-cols: 1; }
|
|
569
|
+
[data-skin="egui"] .wf-table[data-cols="2"] { --mk-cols: 2; }
|
|
570
|
+
[data-skin="egui"] .wf-table[data-cols="3"] { --mk-cols: 3; }
|
|
571
|
+
[data-skin="egui"] .wf-table[data-cols="4"] { --mk-cols: 4; }
|
|
572
|
+
[data-skin="egui"] .wf-table[data-cols="5"] { --mk-cols: 5; }
|
|
573
|
+
[data-skin="egui"] .wf-table[data-cols="6"] { --mk-cols: 6; }
|
|
574
|
+
|
|
575
|
+
/* An egui plot fills columns edge to edge with the plot widget grey. */
|
|
576
|
+
[data-skin="egui"] .wf-chart {
|
|
577
|
+
display: flex;
|
|
578
|
+
align-items: flex-end;
|
|
579
|
+
gap: 2px;
|
|
580
|
+
height: 120px;
|
|
581
|
+
padding: 0 0 0 1px;
|
|
582
|
+
border-bottom: 1px solid var(--mk-line);
|
|
583
|
+
border-left: 1px solid var(--mk-line);
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
[data-skin="egui"] .wf-chart > * {
|
|
587
|
+
flex: 1 1 0;
|
|
588
|
+
min-height: 2px;
|
|
589
|
+
background: var(--mk-line-strong);
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
[data-skin="egui"] .wf-chart > .is-accent {
|
|
593
|
+
background: var(--mk-select);
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
/* -------------------------------------------------------------- overlay -- */
|
|
597
|
+
|
|
598
|
+
[data-skin="egui"] .wf-scrim {
|
|
599
|
+
position: absolute;
|
|
600
|
+
inset: 0;
|
|
601
|
+
z-index: 2;
|
|
602
|
+
background: rgba(0, 0, 0, 0.5);
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
[data-skin="egui"] .wf-modal {
|
|
606
|
+
position: absolute;
|
|
607
|
+
top: 50%;
|
|
608
|
+
left: 50%;
|
|
609
|
+
z-index: 3;
|
|
610
|
+
display: flex;
|
|
611
|
+
flex-direction: column;
|
|
612
|
+
gap: 8px;
|
|
613
|
+
width: min(360px, 84%);
|
|
614
|
+
max-height: 84%;
|
|
615
|
+
padding: 8px;
|
|
616
|
+
overflow: auto;
|
|
617
|
+
background: var(--mk-surface);
|
|
618
|
+
border: 1px solid var(--mk-line-strong);
|
|
619
|
+
border-radius: var(--mk-radius-lg);
|
|
620
|
+
transform: translate(-50%, -50%);
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
[data-skin="egui"] .wf-toast {
|
|
624
|
+
position: absolute;
|
|
625
|
+
bottom: 16px;
|
|
626
|
+
left: 50%;
|
|
627
|
+
z-index: 4;
|
|
628
|
+
display: flex;
|
|
629
|
+
align-items: center;
|
|
630
|
+
gap: 6px;
|
|
631
|
+
max-width: 84%;
|
|
632
|
+
padding: 6px 10px;
|
|
633
|
+
font-size: 12px;
|
|
634
|
+
color: var(--mk-fg);
|
|
635
|
+
background: var(--mk-fill);
|
|
636
|
+
border: 1px solid var(--mk-line-strong);
|
|
637
|
+
border-radius: var(--mk-radius);
|
|
638
|
+
transform: translateX(-50%);
|
|
639
|
+
}
|