@somecat/epub-reader 0.1.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/style.css ADDED
@@ -0,0 +1,482 @@
1
+ :root {
2
+ --ebook-reader-panel-bg: #ffffff;
3
+ --ebook-reader-panel-fg: #1f2937;
4
+ --ebook-reader-border: rgba(0, 0, 0, 0.12);
5
+ --ebook-reader-accent: #2563eb;
6
+ --ebook-reader-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
7
+ --ebook-reader-radius: 10px;
8
+ --ebook-reader-bottom-bar-height: 40px;
9
+ }
10
+
11
+ .ebook-reader-icon {
12
+ display: inline-block;
13
+ vertical-align: middle;
14
+ }
15
+
16
+ .ebook-reader[data-theme='dark'] {
17
+ --ebook-reader-panel-bg: #141414;
18
+ --ebook-reader-panel-fg: #e5e7eb;
19
+ --ebook-reader-border: rgba(255, 255, 255, 0.14);
20
+ --ebook-reader-accent: #60a5fa;
21
+ --ebook-reader-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
22
+ }
23
+
24
+ .ebook-reader {
25
+ position: relative;
26
+ width: 100%;
27
+ height: 100%;
28
+ outline: none;
29
+ overflow: hidden;
30
+ }
31
+
32
+ .ebook-reader__viewer {
33
+ width: 100%;
34
+ height: calc(100% - var(--ebook-reader-bottom-bar-height));
35
+ background: var(--ebook-reader-panel-bg);
36
+ transition: background-color 0.2s ease;
37
+ }
38
+
39
+ .ebook-reader__toolbar {
40
+ position: absolute;
41
+ top: 16px;
42
+ right: 16px;
43
+ z-index: 10;
44
+ display: flex;
45
+ flex-direction: column;
46
+ gap: 10px;
47
+ }
48
+
49
+ .ebook-reader[data-layout='wide'] .ebook-reader__toolbar {
50
+ top: 50%;
51
+ transform: translateY(-50%);
52
+ }
53
+
54
+ .ebook-reader__panel {
55
+ width: 88px;
56
+ padding: 8px;
57
+ border: 1px solid var(--ebook-reader-border);
58
+ border-radius: var(--ebook-reader-radius);
59
+ background: color-mix(in srgb, var(--ebook-reader-panel-bg) 92%, transparent);
60
+ color: var(--ebook-reader-panel-fg);
61
+ box-shadow: var(--ebook-reader-shadow);
62
+ backdrop-filter: blur(10px);
63
+ display: flex;
64
+ flex-direction: column;
65
+ gap: 6px;
66
+ align-items: stretch;
67
+ }
68
+
69
+ .ebook-reader__btn {
70
+ appearance: none;
71
+ border: 1px solid var(--ebook-reader-border);
72
+ background: transparent;
73
+ color: inherit;
74
+ padding: 6px 8px;
75
+ border-radius: 8px;
76
+ font-size: 12px;
77
+ line-height: 1;
78
+ cursor: pointer;
79
+ user-select: none;
80
+ }
81
+
82
+ .ebook-reader__btn:disabled {
83
+ opacity: 0.6;
84
+ cursor: not-allowed;
85
+ }
86
+
87
+ .ebook-reader__btn:hover:not(:disabled) {
88
+ border-color: color-mix(in srgb, var(--ebook-reader-accent) 60%, var(--ebook-reader-border));
89
+ }
90
+
91
+ .ebook-reader__divider {
92
+ height: 1px;
93
+ background: var(--ebook-reader-border);
94
+ margin: 2px 0;
95
+ }
96
+
97
+ .ebook-reader__font {
98
+ text-align: center;
99
+ font-size: 12px;
100
+ font-weight: 700;
101
+ color: var(--ebook-reader-accent);
102
+ padding: 2px 0;
103
+ }
104
+
105
+ .ebook-reader__overlay {
106
+ position: absolute;
107
+ inset: 0;
108
+ background: rgba(0, 0, 0, 0.35);
109
+ z-index: 20;
110
+ }
111
+
112
+ .ebook-reader__drawer {
113
+ position: absolute;
114
+ top: 0;
115
+ bottom: 0;
116
+ left: 0;
117
+ width: 320px;
118
+ background: var(--ebook-reader-panel-bg);
119
+ color: var(--ebook-reader-panel-fg);
120
+ border-right: 1px solid var(--ebook-reader-border);
121
+ transform: translateX(-100%);
122
+ transition: transform 0.2s ease;
123
+ z-index: 30;
124
+ display: flex;
125
+ flex-direction: column;
126
+ }
127
+
128
+ .ebook-reader__drawer.right {
129
+ left: auto;
130
+ right: 0;
131
+ border-right: none;
132
+ border-left: 1px solid var(--ebook-reader-border);
133
+ transform: translateX(100%);
134
+ }
135
+
136
+ .ebook-reader__drawer.is-open {
137
+ transform: translateX(0);
138
+ }
139
+
140
+ .ebook-reader__drawer-header {
141
+ display: flex;
142
+ align-items: center;
143
+ justify-content: space-between;
144
+ gap: 8px;
145
+ padding: 12px;
146
+ border-bottom: 1px solid var(--ebook-reader-border);
147
+ }
148
+
149
+ .ebook-reader__drawer-title {
150
+ font-size: 14px;
151
+ font-weight: 700;
152
+ }
153
+
154
+ .ebook-reader__drawer-body {
155
+ padding: 12px;
156
+ overflow: auto;
157
+ flex: 1;
158
+ }
159
+
160
+ .ebook-reader__empty {
161
+ padding: 20px 8px;
162
+ opacity: 0.7;
163
+ text-align: center;
164
+ font-size: 12px;
165
+ }
166
+
167
+ .ebook-reader__toc-list {
168
+ list-style: none;
169
+ padding: 0;
170
+ margin: 0;
171
+ display: flex;
172
+ flex-direction: column;
173
+ gap: 4px;
174
+ }
175
+
176
+ .ebook-reader__toc-item {
177
+ margin: 0;
178
+ }
179
+
180
+ .ebook-reader__toc-btn {
181
+ width: 100%;
182
+ text-align: left;
183
+ padding: 8px 10px;
184
+ border-radius: 8px;
185
+ border: 1px solid var(--ebook-reader-border);
186
+ background: transparent;
187
+ color: inherit;
188
+ cursor: pointer;
189
+ }
190
+
191
+ .ebook-reader__toc-btn:hover {
192
+ border-color: color-mix(in srgb, var(--ebook-reader-accent) 60%, var(--ebook-reader-border));
193
+ }
194
+
195
+ .ebook-reader__toc-details {
196
+ border-radius: 8px;
197
+ }
198
+
199
+ .ebook-reader__toc-summary {
200
+ padding: 8px 10px;
201
+ border-radius: 8px;
202
+ cursor: pointer;
203
+ border: 1px solid var(--ebook-reader-border);
204
+ user-select: none;
205
+ }
206
+
207
+ .ebook-reader__toc-details[open] > .ebook-reader__toc-summary {
208
+ border-color: color-mix(in srgb, var(--ebook-reader-accent) 60%, var(--ebook-reader-border));
209
+ }
210
+
211
+ .ebook-reader__toc-details > .ebook-reader__toc-list {
212
+ padding-left: 12px;
213
+ margin-top: 6px;
214
+ }
215
+
216
+ .ebook-reader__field {
217
+ display: flex;
218
+ align-items: center;
219
+ gap: 8px;
220
+ }
221
+
222
+ .ebook-reader__input {
223
+ width: 100%;
224
+ padding: 8px 10px;
225
+ border-radius: 8px;
226
+ border: 1px solid var(--ebook-reader-border);
227
+ background: transparent;
228
+ color: inherit;
229
+ outline: none;
230
+ }
231
+
232
+ .ebook-reader__checks {
233
+ display: flex;
234
+ flex-wrap: wrap;
235
+ gap: 10px;
236
+ margin: 10px 0;
237
+ font-size: 12px;
238
+ }
239
+
240
+ .ebook-reader__check {
241
+ display: inline-flex;
242
+ align-items: center;
243
+ gap: 6px;
244
+ user-select: none;
245
+ }
246
+
247
+ .ebook-reader__meta {
248
+ display: flex;
249
+ align-items: center;
250
+ justify-content: space-between;
251
+ gap: 8px;
252
+ font-size: 12px;
253
+ opacity: 0.9;
254
+ margin: 6px 0 10px;
255
+ }
256
+
257
+ .ebook-reader__link {
258
+ appearance: none;
259
+ border: none;
260
+ background: transparent;
261
+ color: var(--ebook-reader-accent);
262
+ cursor: pointer;
263
+ padding: 0;
264
+ }
265
+
266
+ .ebook-reader__search-list {
267
+ list-style: none;
268
+ padding: 0;
269
+ margin: 0;
270
+ display: flex;
271
+ flex-direction: column;
272
+ gap: 6px;
273
+ }
274
+
275
+ .ebook-reader__search-item {
276
+ margin: 0;
277
+ }
278
+
279
+ .ebook-reader__search-btn {
280
+ width: 100%;
281
+ text-align: left;
282
+ padding: 10px;
283
+ border-radius: 10px;
284
+ border: 1px solid var(--ebook-reader-border);
285
+ background: transparent;
286
+ color: inherit;
287
+ cursor: pointer;
288
+ display: flex;
289
+ flex-direction: column;
290
+ gap: 6px;
291
+ }
292
+
293
+ .ebook-reader__search-btn:hover {
294
+ border-color: color-mix(in srgb, var(--ebook-reader-accent) 60%, var(--ebook-reader-border));
295
+ }
296
+
297
+ .ebook-reader__search-label {
298
+ font-size: 12px;
299
+ opacity: 0.7;
300
+ }
301
+
302
+ .ebook-reader__search-excerpt {
303
+ font-size: 12px;
304
+ line-height: 1.4;
305
+ word-break: break-word;
306
+ }
307
+
308
+ .ebook-reader__bottom {
309
+ position: absolute;
310
+ left: 0;
311
+ right: 0;
312
+ bottom: 0;
313
+ height: var(--ebook-reader-bottom-bar-height);
314
+ border-top: 1px solid var(--ebook-reader-border);
315
+ background: color-mix(in srgb, var(--ebook-reader-panel-bg) 92%, transparent);
316
+ display: flex;
317
+ align-items: center;
318
+ justify-content: space-between;
319
+ gap: 10px;
320
+ padding: 0 12px;
321
+ z-index: 10;
322
+ backdrop-filter: blur(10px);
323
+ }
324
+
325
+ .ebook-reader__bottom-left {
326
+ display: flex;
327
+ align-items: center;
328
+ gap: 8px;
329
+ min-width: 0;
330
+ }
331
+
332
+ .ebook-reader__status {
333
+ font-size: 12px;
334
+ opacity: 0.8;
335
+ white-space: nowrap;
336
+ }
337
+
338
+ .ebook-reader__section {
339
+ font-size: 12px;
340
+ font-weight: 600;
341
+ white-space: nowrap;
342
+ overflow: hidden;
343
+ text-overflow: ellipsis;
344
+ max-width: 280px;
345
+ }
346
+
347
+ .ebook-reader__bottom-right {
348
+ display: flex;
349
+ align-items: center;
350
+ gap: 10px;
351
+ min-width: 260px;
352
+ }
353
+
354
+ .ebook-reader__range {
355
+ width: 260px;
356
+ }
357
+
358
+ .ebook-reader__percent {
359
+ font-size: 12px;
360
+ font-variant-numeric: tabular-nums;
361
+ min-width: 42px;
362
+ text-align: right;
363
+ }
364
+
365
+ .ebook-reader[data-layout='mobile'] .ebook-reader__viewer {
366
+ height: 100%;
367
+ touch-action: pan-x;
368
+ }
369
+
370
+ .ebook-reader[data-layout='mobile'] .ebook-reader__toolbar,
371
+ .ebook-reader[data-layout='mobile'] .ebook-reader__bottom,
372
+ .ebook-reader[data-layout='mobile'] .ebook-reader__drawer,
373
+ .ebook-reader[data-layout='mobile'] .ebook-reader__overlay {
374
+ display: none;
375
+ }
376
+
377
+ .ebook-reader__mbar {
378
+ position: absolute;
379
+ left: 10px;
380
+ right: 10px;
381
+ bottom: 0;
382
+ z-index: 15;
383
+ display: flex;
384
+ align-items: center;
385
+ gap: 8px;
386
+ padding: 10px;
387
+ border: 1px solid var(--ebook-reader-border);
388
+ border-radius: calc(var(--ebook-reader-radius) + 6px);
389
+ background: color-mix(in srgb, var(--ebook-reader-panel-bg) 92%, transparent);
390
+ color: var(--ebook-reader-panel-fg);
391
+ box-shadow: var(--ebook-reader-shadow);
392
+ backdrop-filter: blur(10px);
393
+ transform: translateY(calc(100% + 10px));
394
+ transition: transform 0.2s ease;
395
+ }
396
+
397
+ .ebook-reader__mbar.is-visible {
398
+ transform: translateY(-4px);
399
+ }
400
+
401
+ .ebook-reader__mbar .ebook-reader__btn {
402
+ flex: 1 1 0;
403
+ text-align: center;
404
+ padding: 10px 8px;
405
+ font-size: 13px;
406
+ }
407
+
408
+ .ebook-reader__moverlay {
409
+ position: absolute;
410
+ inset: 0;
411
+ background: rgba(0, 0, 0, 0.35);
412
+ z-index: 20;
413
+ }
414
+
415
+ .ebook-reader__msheet {
416
+ position: absolute;
417
+ left: 0;
418
+ right: 0;
419
+ bottom: 0;
420
+ height: 60%;
421
+ max-height: calc(100% - 70px);
422
+ background: var(--ebook-reader-panel-bg);
423
+ color: var(--ebook-reader-panel-fg);
424
+ border-top: 1px solid var(--ebook-reader-border);
425
+ border-top-left-radius: calc(var(--ebook-reader-radius) + 10px);
426
+ border-top-right-radius: calc(var(--ebook-reader-radius) + 10px);
427
+ transform: translateY(100%);
428
+ transition: transform 0.25s ease;
429
+ z-index: 30;
430
+ display: flex;
431
+ flex-direction: column;
432
+ pointer-events: none;
433
+ }
434
+
435
+ .ebook-reader__msheet.is-open {
436
+ transform: translateY(0);
437
+ pointer-events: auto;
438
+ }
439
+
440
+ .ebook-reader__msheet-header {
441
+ display: flex;
442
+ align-items: center;
443
+ justify-content: space-between;
444
+ gap: 8px;
445
+ padding: 12px 12px 10px;
446
+ border-bottom: 1px solid var(--ebook-reader-border);
447
+ }
448
+
449
+ .ebook-reader__msheet-title {
450
+ font-size: 14px;
451
+ font-weight: 800;
452
+ }
453
+
454
+ .ebook-reader__msheet-body {
455
+ padding: 12px;
456
+ overflow: auto;
457
+ flex: 1;
458
+ }
459
+
460
+ .ebook-reader__mprogress {
461
+ display: flex;
462
+ flex-direction: column;
463
+ gap: 10px;
464
+ margin-top: 10px;
465
+ }
466
+
467
+ .ebook-reader__mprogress .ebook-reader__range {
468
+ width: 100%;
469
+ }
470
+
471
+ .ebook-reader__mprogress-percent {
472
+ text-align: center;
473
+ font-weight: 800;
474
+ color: var(--ebook-reader-accent);
475
+ }
476
+
477
+ .ebook-reader__mfont {
478
+ display: flex;
479
+ align-items: center;
480
+ justify-content: center;
481
+ gap: 12px;
482
+ }