@owear/cli 0.1.3 → 0.1.5
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 +4 -4
- package/src/ow.js +83 -4
- package/template/README.md +34 -28
- package/template/app/main.ts +273 -4
- package/template/index.html +117 -28
- package/template/package.json +1 -1
- package/template/public/favicon.svg +4 -0
- package/template/src/assets/dancing-script.woff2 +0 -0
- package/template/src/assets/jetbrains-mono.woff2 +0 -0
- package/template/src/ow.d.ts +9 -1
- package/template/src/renderer.ts +489 -1
- package/template/src/style.css +280 -56
- package/template-installer/index.html +36 -26
- package/template-installer/src/assets/dancing-script.woff2 +0 -0
- package/template-installer/src/assets/jetbrains-mono.woff2 +0 -0
- package/template-installer/src/installer.ts +44 -25
- package/template-installer/src/style.css +429 -53
- package/template-installer/uninstaller/index.html +22 -16
- package/template-installer/uninstaller/src/uninstaller.ts +53 -28
- package/tools/owear-installer.mjs +5 -0
- package/tools/owear-sign.mjs +204 -0
- package/tools/owear-update.mjs +150 -0
package/template/src/style.css
CHANGED
|
@@ -4,18 +4,74 @@
|
|
|
4
4
|
|
|
5
5
|
:root {
|
|
6
6
|
color-scheme: dark;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
--
|
|
10
|
-
--
|
|
11
|
-
--
|
|
12
|
-
--
|
|
13
|
-
--
|
|
14
|
-
--
|
|
15
|
-
--
|
|
16
|
-
--
|
|
17
|
-
--
|
|
18
|
-
--
|
|
7
|
+
|
|
8
|
+
/* colores base */
|
|
9
|
+
--bg: #282c34;
|
|
10
|
+
--bg-deep: #21252b;
|
|
11
|
+
--panel: #2c313a;
|
|
12
|
+
--panel-2: #21252b;
|
|
13
|
+
--line: #3b4048;
|
|
14
|
+
--line-2: #4b5263;
|
|
15
|
+
--text: #abb2bf;
|
|
16
|
+
--text-strong: #dcdfe4;
|
|
17
|
+
--muted: #5c6370;
|
|
18
|
+
--purple: #c678dd;
|
|
19
|
+
--green: #98c379;
|
|
20
|
+
--red: #e06c75;
|
|
21
|
+
--cyan: #56b6c2;
|
|
22
|
+
|
|
23
|
+
/* acento: rosado seco */
|
|
24
|
+
--accent: #d3869b;
|
|
25
|
+
--accent-hover: #c06f86;
|
|
26
|
+
--accent-ink: #241820;
|
|
27
|
+
|
|
28
|
+
--radius: 10px;
|
|
29
|
+
|
|
30
|
+
--btn: #2c313a;
|
|
31
|
+
--hover: rgba(255, 255, 255, 0.06);
|
|
32
|
+
--hover-strong: rgba(255, 255, 255, 0.14);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/* Tema CLARO: lo aplica el renderer con data-theme (según theme.setSource). */
|
|
36
|
+
:root[data-theme="light"] {
|
|
37
|
+
color-scheme: light;
|
|
38
|
+
--bg: #fafafa;
|
|
39
|
+
--bg-deep: #f0f0f1;
|
|
40
|
+
--panel: #ffffff;
|
|
41
|
+
--panel-2: #f0f0f1;
|
|
42
|
+
--line: #d7d7d9;
|
|
43
|
+
--line-2: #b9b9bc;
|
|
44
|
+
--text: #383a42;
|
|
45
|
+
--text-strong: #1f2126;
|
|
46
|
+
--muted: #9aa0a6;
|
|
47
|
+
--purple: #a626a4;
|
|
48
|
+
--green: #50a14f;
|
|
49
|
+
--red: #e45649;
|
|
50
|
+
--cyan: #0184bc;
|
|
51
|
+
--accent: #b5586e;
|
|
52
|
+
--accent-hover: #9d4760;
|
|
53
|
+
--accent-ink: #ffffff;
|
|
54
|
+
--btn: #e8e8ea;
|
|
55
|
+
--hover: rgba(0, 0, 0, 0.05);
|
|
56
|
+
--hover-strong: rgba(0, 0, 0, 0.10);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/* Cursiva real (self-hosted → funciona offline) */
|
|
60
|
+
@font-face {
|
|
61
|
+
font-family: "Dancing Script";
|
|
62
|
+
font-style: normal;
|
|
63
|
+
font-weight: 600;
|
|
64
|
+
font-display: swap;
|
|
65
|
+
src: url("./assets/dancing-script.woff2") format("woff2");
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/* UI (JetBrains Mono, self-hosted, variable 400–700) */
|
|
69
|
+
@font-face {
|
|
70
|
+
font-family: "JetBrains Mono";
|
|
71
|
+
font-style: normal;
|
|
72
|
+
font-weight: 400 700;
|
|
73
|
+
font-display: swap;
|
|
74
|
+
src: url("./assets/jetbrains-mono.woff2") format("woff2");
|
|
19
75
|
}
|
|
20
76
|
|
|
21
77
|
* {
|
|
@@ -31,7 +87,8 @@ body {
|
|
|
31
87
|
margin: 0;
|
|
32
88
|
background: var(--bg);
|
|
33
89
|
color: var(--text);
|
|
34
|
-
font: 14px/1.55
|
|
90
|
+
font: 14px/1.55 "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo,
|
|
91
|
+
Consolas, monospace;
|
|
35
92
|
display: flex;
|
|
36
93
|
flex-direction: column;
|
|
37
94
|
overflow: hidden;
|
|
@@ -45,8 +102,7 @@ body {
|
|
|
45
102
|
flex: 0 0 auto;
|
|
46
103
|
display: flex;
|
|
47
104
|
align-items: stretch;
|
|
48
|
-
background:
|
|
49
|
-
border-bottom: 1px solid var(--line);
|
|
105
|
+
background: var(--bg-deep);
|
|
50
106
|
}
|
|
51
107
|
|
|
52
108
|
.titlebar__drag {
|
|
@@ -66,6 +122,7 @@ body {
|
|
|
66
122
|
}
|
|
67
123
|
|
|
68
124
|
.brand__name {
|
|
125
|
+
color: var(--text-strong);
|
|
69
126
|
font-weight: 600;
|
|
70
127
|
letter-spacing: 0.2px;
|
|
71
128
|
white-space: nowrap;
|
|
@@ -73,10 +130,26 @@ body {
|
|
|
73
130
|
text-overflow: ellipsis;
|
|
74
131
|
}
|
|
75
132
|
|
|
133
|
+
/* Los controles del web se ocultan por DEFECTO y solo se muestran si el SO no
|
|
134
|
+
provee botones nativos (el renderer añade .ow-web-controls). Así nunca
|
|
135
|
+
parpadean detrás del overlay nativo (que es transparente). */
|
|
76
136
|
.titlebar__controls {
|
|
137
|
+
display: none;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
html.ow-web-controls .titlebar__controls {
|
|
77
141
|
display: flex;
|
|
78
142
|
}
|
|
79
143
|
|
|
144
|
+
/* titleBarOverlay activo: reservar el hueco a la derecha y ajustar la altura. */
|
|
145
|
+
html.ow-native-overlay .titlebar__drag {
|
|
146
|
+
padding-right: var(--ow-overlay-width, 0px);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
html.ow-native-overlay .titlebar {
|
|
150
|
+
height: var(--ow-overlay-height, 40px);
|
|
151
|
+
}
|
|
152
|
+
|
|
80
153
|
.winbtn {
|
|
81
154
|
width: 46px;
|
|
82
155
|
border: 0;
|
|
@@ -94,12 +167,12 @@ body {
|
|
|
94
167
|
}
|
|
95
168
|
|
|
96
169
|
.winbtn:hover {
|
|
97
|
-
background: var(--
|
|
98
|
-
color: var(--text);
|
|
170
|
+
background: var(--btn);
|
|
171
|
+
color: var(--text-strong);
|
|
99
172
|
}
|
|
100
173
|
|
|
101
174
|
.winbtn--close:hover {
|
|
102
|
-
background: var(--
|
|
175
|
+
background: var(--red);
|
|
103
176
|
color: #fff;
|
|
104
177
|
}
|
|
105
178
|
|
|
@@ -123,19 +196,14 @@ body {
|
|
|
123
196
|
gap: 12px;
|
|
124
197
|
}
|
|
125
198
|
|
|
126
|
-
.eyebrow {
|
|
127
|
-
font-size: 12px;
|
|
128
|
-
font-weight: 600;
|
|
129
|
-
letter-spacing: 0.08em;
|
|
130
|
-
text-transform: uppercase;
|
|
131
|
-
color: var(--muted);
|
|
132
|
-
}
|
|
133
|
-
|
|
134
199
|
h1 {
|
|
135
200
|
margin: 0;
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
201
|
+
color: var(--text-strong);
|
|
202
|
+
font-family: "Dancing Script", cursive;
|
|
203
|
+
font-weight: 600;
|
|
204
|
+
font-size: clamp(30px, 4vw, 44px);
|
|
205
|
+
line-height: 1.15;
|
|
206
|
+
letter-spacing: 0;
|
|
139
207
|
}
|
|
140
208
|
|
|
141
209
|
.lead {
|
|
@@ -157,39 +225,68 @@ h1 {
|
|
|
157
225
|
}
|
|
158
226
|
|
|
159
227
|
.btn {
|
|
228
|
+
position: relative;
|
|
229
|
+
isolation: isolate;
|
|
160
230
|
font: inherit;
|
|
161
231
|
color: var(--text);
|
|
162
|
-
background:
|
|
163
|
-
border:
|
|
164
|
-
border-radius:
|
|
232
|
+
background: var(--btn);
|
|
233
|
+
border: 0;
|
|
234
|
+
border-radius: 10px;
|
|
165
235
|
padding: 8px 14px;
|
|
166
236
|
cursor: pointer;
|
|
167
237
|
}
|
|
168
238
|
|
|
169
|
-
|
|
170
|
-
|
|
239
|
+
/* Hover tipo menú contextual: el resaltado va DENTRO, con margen.
|
|
240
|
+
Al pulsar, se expande hasta llenar el botón. */
|
|
241
|
+
.btn::before {
|
|
242
|
+
content: "";
|
|
243
|
+
position: absolute;
|
|
244
|
+
inset: 3px;
|
|
245
|
+
border-radius: 7px;
|
|
246
|
+
background: transparent;
|
|
247
|
+
transition: inset 0.12s ease, border-radius 0.12s ease, background 0.12s ease;
|
|
248
|
+
z-index: -1;
|
|
249
|
+
pointer-events: none;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
.btn:hover::before {
|
|
253
|
+
background: var(--hover);
|
|
171
254
|
}
|
|
172
255
|
|
|
173
|
-
.btn:active {
|
|
174
|
-
|
|
256
|
+
.btn:active::before {
|
|
257
|
+
inset: 0;
|
|
258
|
+
border-radius: 10px;
|
|
259
|
+
background: var(--hover-strong);
|
|
175
260
|
}
|
|
176
261
|
|
|
177
262
|
.btn--primary {
|
|
178
263
|
background: var(--accent);
|
|
179
|
-
|
|
180
|
-
color: #fff;
|
|
264
|
+
color: var(--accent-ink);
|
|
181
265
|
font-weight: 600;
|
|
182
266
|
}
|
|
183
267
|
|
|
184
|
-
.btn--primary:hover {
|
|
185
|
-
background:
|
|
186
|
-
|
|
268
|
+
.btn--primary:hover::before {
|
|
269
|
+
background: rgba(255, 255, 255, 0.16);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
.btn--primary:active::before {
|
|
273
|
+
background: rgba(255, 255, 255, 0.3);
|
|
187
274
|
}
|
|
188
275
|
|
|
189
276
|
.btn--ghost {
|
|
190
277
|
background: transparent;
|
|
191
278
|
}
|
|
192
279
|
|
|
280
|
+
/* Contenedor con fondo propio que agrupa las cards de abajo */
|
|
281
|
+
.board {
|
|
282
|
+
display: flex;
|
|
283
|
+
flex-direction: column;
|
|
284
|
+
gap: 16px;
|
|
285
|
+
padding: 16px;
|
|
286
|
+
background: var(--bg-deep);
|
|
287
|
+
border-radius: var(--radius);
|
|
288
|
+
}
|
|
289
|
+
|
|
193
290
|
.grid {
|
|
194
291
|
display: grid;
|
|
195
292
|
grid-template-columns: minmax(240px, 300px) 1fr;
|
|
@@ -204,7 +301,6 @@ h1 {
|
|
|
204
301
|
|
|
205
302
|
.card {
|
|
206
303
|
background: var(--panel);
|
|
207
|
-
border: 1px solid var(--line);
|
|
208
304
|
border-radius: var(--radius);
|
|
209
305
|
padding: 16px 18px;
|
|
210
306
|
}
|
|
@@ -232,7 +328,7 @@ h1 {
|
|
|
232
328
|
|
|
233
329
|
.badge {
|
|
234
330
|
font-size: 12px;
|
|
235
|
-
color: var(--
|
|
331
|
+
color: var(--purple);
|
|
236
332
|
background: var(--panel-2);
|
|
237
333
|
border: 1px solid var(--line);
|
|
238
334
|
border-radius: 999px;
|
|
@@ -259,12 +355,19 @@ h1 {
|
|
|
259
355
|
|
|
260
356
|
.kv dd {
|
|
261
357
|
margin: 0;
|
|
358
|
+
color: var(--text-strong);
|
|
262
359
|
font-variant-numeric: tabular-nums;
|
|
263
360
|
}
|
|
264
361
|
|
|
362
|
+
.kv dd.mono {
|
|
363
|
+
font-family: var(--font-mono, ui-monospace, monospace);
|
|
364
|
+
font-size: 11px;
|
|
365
|
+
word-break: break-all;
|
|
366
|
+
}
|
|
367
|
+
|
|
265
368
|
.ua {
|
|
266
369
|
margin: 14px 0 0;
|
|
267
|
-
color:
|
|
370
|
+
color: var(--muted);
|
|
268
371
|
font-size: 12px;
|
|
269
372
|
word-break: break-word;
|
|
270
373
|
}
|
|
@@ -275,11 +378,11 @@ h1 {
|
|
|
275
378
|
max-height: 46vh;
|
|
276
379
|
margin: 0;
|
|
277
380
|
overflow: auto;
|
|
278
|
-
background:
|
|
279
|
-
border: 1px solid var(--line);
|
|
381
|
+
background: var(--bg-deep);
|
|
280
382
|
border-radius: 8px;
|
|
281
383
|
padding: 12px 14px;
|
|
282
|
-
font: 12.5px/1.6 ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
|
|
384
|
+
font: 12.5px/1.6 "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
|
|
385
|
+
color: var(--text);
|
|
283
386
|
white-space: pre-wrap;
|
|
284
387
|
word-break: break-word;
|
|
285
388
|
user-select: text;
|
|
@@ -287,11 +390,11 @@ h1 {
|
|
|
287
390
|
}
|
|
288
391
|
|
|
289
392
|
.console .line--ok {
|
|
290
|
-
color: var(--
|
|
393
|
+
color: var(--green);
|
|
291
394
|
}
|
|
292
395
|
|
|
293
396
|
.console .line--err {
|
|
294
|
-
color:
|
|
397
|
+
color: var(--red);
|
|
295
398
|
}
|
|
296
399
|
|
|
297
400
|
.console .line--muted {
|
|
@@ -307,7 +410,7 @@ h1 {
|
|
|
307
410
|
}
|
|
308
411
|
|
|
309
412
|
.linkbtn:hover {
|
|
310
|
-
color: var(--
|
|
413
|
+
color: var(--accent);
|
|
311
414
|
}
|
|
312
415
|
|
|
313
416
|
.hint {
|
|
@@ -318,25 +421,146 @@ h1 {
|
|
|
318
421
|
.code {
|
|
319
422
|
margin: 0;
|
|
320
423
|
overflow: auto;
|
|
321
|
-
background:
|
|
322
|
-
border: 1px solid var(--line);
|
|
424
|
+
background: var(--bg-deep);
|
|
323
425
|
border-radius: 8px;
|
|
324
426
|
padding: 14px;
|
|
325
|
-
font: 12.5px/1.7 ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
|
|
326
|
-
color:
|
|
427
|
+
font: 12.5px/1.7 "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
|
|
428
|
+
color: var(--text);
|
|
327
429
|
user-select: text;
|
|
328
430
|
-webkit-user-select: text;
|
|
329
431
|
}
|
|
330
432
|
|
|
331
433
|
code {
|
|
332
|
-
color:
|
|
434
|
+
color: var(--purple);
|
|
333
435
|
}
|
|
334
436
|
|
|
335
437
|
.hint code,
|
|
336
438
|
.lead code {
|
|
337
|
-
background:
|
|
439
|
+
background: var(--panel-2);
|
|
338
440
|
border: 1px solid var(--line);
|
|
339
441
|
border-radius: 6px;
|
|
340
442
|
padding: 1px 6px;
|
|
341
443
|
font-size: 12.5px;
|
|
342
444
|
}
|
|
445
|
+
|
|
446
|
+
/* ── Navegador embebido (webview nativa dentro de #wv-slot) ───────────── */
|
|
447
|
+
.browser {
|
|
448
|
+
display: flex;
|
|
449
|
+
flex-direction: column;
|
|
450
|
+
gap: 8px;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
.browser__bar {
|
|
454
|
+
display: flex;
|
|
455
|
+
align-items: center;
|
|
456
|
+
gap: 6px;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
.iconbtn {
|
|
460
|
+
width: 30px;
|
|
461
|
+
height: 30px;
|
|
462
|
+
border: 0;
|
|
463
|
+
border-radius: 8px;
|
|
464
|
+
background: var(--panel);
|
|
465
|
+
color: var(--text-strong);
|
|
466
|
+
font-size: 16px;
|
|
467
|
+
line-height: 1;
|
|
468
|
+
cursor: pointer;
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
.iconbtn:hover {
|
|
472
|
+
background: var(--line);
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
.browser__url {
|
|
476
|
+
flex: 1;
|
|
477
|
+
min-width: 0;
|
|
478
|
+
font: inherit;
|
|
479
|
+
color: var(--text);
|
|
480
|
+
background: var(--bg-deep);
|
|
481
|
+
border: 0;
|
|
482
|
+
border-radius: 8px;
|
|
483
|
+
padding: 7px 10px;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
/* El placeholder define la zona donde se coloca la webview nativa encima. */
|
|
487
|
+
.browser__slot {
|
|
488
|
+
height: min(64vh, 600px);
|
|
489
|
+
min-height: 380px;
|
|
490
|
+
border-radius: 8px;
|
|
491
|
+
background: var(--bg-deep);
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
/* ── C10: pantallas (multi-monitor) ─────────────────────────────────────── */
|
|
495
|
+
.monmap {
|
|
496
|
+
position: relative;
|
|
497
|
+
width: 100%;
|
|
498
|
+
height: 190px;
|
|
499
|
+
margin-bottom: 10px;
|
|
500
|
+
background: var(--bg-deep);
|
|
501
|
+
border: 1px solid var(--line);
|
|
502
|
+
border-radius: 8px;
|
|
503
|
+
overflow: hidden;
|
|
504
|
+
}
|
|
505
|
+
.monmap__hint {
|
|
506
|
+
position: absolute;
|
|
507
|
+
inset: 0;
|
|
508
|
+
display: flex;
|
|
509
|
+
align-items: center;
|
|
510
|
+
justify-content: center;
|
|
511
|
+
color: var(--muted);
|
|
512
|
+
font-size: 12.5px;
|
|
513
|
+
}
|
|
514
|
+
.monmap__cell {
|
|
515
|
+
position: absolute;
|
|
516
|
+
box-sizing: border-box;
|
|
517
|
+
border: 1px solid var(--line-2);
|
|
518
|
+
border-radius: 6px;
|
|
519
|
+
background: var(--panel);
|
|
520
|
+
padding: 4px 6px;
|
|
521
|
+
overflow: hidden;
|
|
522
|
+
}
|
|
523
|
+
.monmap__cell--primary {
|
|
524
|
+
border-color: var(--accent);
|
|
525
|
+
box-shadow: inset 0 0 0 1px var(--accent);
|
|
526
|
+
}
|
|
527
|
+
.monmap__id {
|
|
528
|
+
display: block;
|
|
529
|
+
font: 600 11px/1.3 "JetBrains Mono", ui-monospace, monospace;
|
|
530
|
+
color: var(--text-strong);
|
|
531
|
+
}
|
|
532
|
+
.monmap__meta {
|
|
533
|
+
display: block;
|
|
534
|
+
font: 10.5px/1.3 "JetBrains Mono", ui-monospace, monospace;
|
|
535
|
+
color: var(--muted);
|
|
536
|
+
white-space: nowrap;
|
|
537
|
+
}
|
|
538
|
+
.monmap__cursor {
|
|
539
|
+
position: absolute;
|
|
540
|
+
width: 9px;
|
|
541
|
+
height: 9px;
|
|
542
|
+
margin: -5px 0 0 -5px;
|
|
543
|
+
border-radius: 50%;
|
|
544
|
+
background: var(--cyan);
|
|
545
|
+
box-shadow: 0 0 0 3px rgba(86, 182, 194, 0.25);
|
|
546
|
+
}
|
|
547
|
+
.monlist {
|
|
548
|
+
display: flex;
|
|
549
|
+
flex-direction: column;
|
|
550
|
+
gap: 4px;
|
|
551
|
+
max-height: 150px;
|
|
552
|
+
overflow: auto;
|
|
553
|
+
user-select: text;
|
|
554
|
+
-webkit-user-select: text;
|
|
555
|
+
}
|
|
556
|
+
.monlist__row {
|
|
557
|
+
font: 12px/1.5 "JetBrains Mono", ui-monospace, monospace;
|
|
558
|
+
color: var(--text);
|
|
559
|
+
}
|
|
560
|
+
.monlist__row code {
|
|
561
|
+
color: var(--accent);
|
|
562
|
+
}
|
|
563
|
+
.console--short {
|
|
564
|
+
min-height: 120px;
|
|
565
|
+
max-height: 28vh;
|
|
566
|
+
}
|
|
@@ -6,14 +6,22 @@
|
|
|
6
6
|
<head>
|
|
7
7
|
<meta charset="UTF-8" />
|
|
8
8
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
9
|
-
<title>Instalador
|
|
9
|
+
<title>Instalador · __APP_NAME__</title>
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
12
|
+
<!-- Titlebar propia: el kernel convierte [data-ow-drag] en zona de arrastre. -->
|
|
12
13
|
<header class="titlebar">
|
|
13
14
|
<div class="titlebar__drag" data-ow-drag>
|
|
15
|
+
<span class="brand__mark" aria-hidden="true"></span>
|
|
14
16
|
<span class="brand__name">Instalador · __APP_NAME__</span>
|
|
15
17
|
</div>
|
|
16
18
|
<div class="titlebar__controls">
|
|
19
|
+
<button id="win-min" class="winbtn" title="Minimizar" aria-label="Minimizar">
|
|
20
|
+
<svg viewBox="0 0 12 12" width="12" height="12"><path d="M2 6h8" /></svg>
|
|
21
|
+
</button>
|
|
22
|
+
<button id="win-max" class="winbtn" title="Maximizar" aria-label="Maximizar">
|
|
23
|
+
<svg viewBox="0 0 12 12" width="12" height="12"><rect x="2.5" y="2.5" width="7" height="7" rx="1" /></svg>
|
|
24
|
+
</button>
|
|
17
25
|
<button id="win-close" class="winbtn winbtn--close" title="Cerrar" aria-label="Cerrar">
|
|
18
26
|
<svg viewBox="0 0 12 12" width="12" height="12"><path d="M2.5 2.5l7 7M9.5 2.5l-7 7" /></svg>
|
|
19
27
|
</button>
|
|
@@ -22,39 +30,41 @@
|
|
|
22
30
|
|
|
23
31
|
<main class="page">
|
|
24
32
|
<section class="hero">
|
|
25
|
-
<span class="eyebrow">Owear Installer</span>
|
|
26
33
|
<h1>Instalar __APP_NAME__</h1>
|
|
27
34
|
<p class="lead" id="summary">Cargando metadatos…</p>
|
|
28
35
|
</section>
|
|
29
36
|
|
|
30
|
-
<section class="
|
|
31
|
-
<
|
|
32
|
-
|
|
33
|
-
<
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
<
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
<section class="board">
|
|
38
|
+
<article class="card">
|
|
39
|
+
<header class="card__head"><h2>Destino</h2></header>
|
|
40
|
+
<div class="row">
|
|
41
|
+
<input id="dir" class="field" type="text" spellcheck="false" aria-label="Directorio de instalación" />
|
|
42
|
+
<button id="pick" class="btn">Elegir…</button>
|
|
43
|
+
</div>
|
|
44
|
+
<div class="row">
|
|
45
|
+
<label class="opt"><input type="checkbox" id="shortcut" checked /> Acceso directo</label>
|
|
46
|
+
<label class="opt"><input type="checkbox" id="launch" checked /> Abrir al terminar</label>
|
|
47
|
+
</div>
|
|
48
|
+
</article>
|
|
41
49
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
50
|
+
<article class="card card--grow">
|
|
51
|
+
<header class="card__head">
|
|
52
|
+
<h2>Contenido</h2>
|
|
53
|
+
<span class="badge" id="count">—</span>
|
|
54
|
+
</header>
|
|
55
|
+
<pre id="plan" class="console">—</pre>
|
|
56
|
+
</article>
|
|
48
57
|
</section>
|
|
49
|
-
|
|
50
|
-
<footer class="actions">
|
|
51
|
-
<progress id="bar" max="100" value="0" hidden></progress>
|
|
52
|
-
<span id="status" class="status"></span>
|
|
53
|
-
<button id="install" class="btn btn--primary" disabled>Instalar</button>
|
|
54
|
-
<button id="cancel" class="btn btn--ghost" hidden>Cancelar</button>
|
|
55
|
-
</footer>
|
|
56
58
|
</main>
|
|
57
59
|
|
|
60
|
+
<footer class="foot">
|
|
61
|
+
<span id="status" class="status"></span>
|
|
62
|
+
<span class="foot__spacer"></span>
|
|
63
|
+
<progress id="bar" max="100" value="0" hidden></progress>
|
|
64
|
+
<button id="cancel" class="btn btn--ghost" hidden>Cancelar</button>
|
|
65
|
+
<button id="install" class="btn btn--primary" disabled>Instalar</button>
|
|
66
|
+
</footer>
|
|
67
|
+
|
|
58
68
|
<script type="module" src="/src/installer.ts"></script>
|
|
59
69
|
</body>
|
|
60
70
|
</html>
|
|
Binary file
|
|
Binary file
|