@gallerist/theme-default 0.3.3 → 0.4.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/README.md +13 -0
- package/package.json +1 -1
- package/src/base.css +713 -77
- package/src/console.css +19 -0
- package/src/editorial.css +3 -0
- package/src/gallery.css +3 -0
package/README.md
CHANGED
|
@@ -33,6 +33,19 @@ skin (`gallery.css`) and the plugin add-ons (`grid.css` for plugin-grid, `pins.c
|
|
|
33
33
|
plugin-pins). To build a skin from scratch, import `base.css` plus the add-ons for the plugins you
|
|
34
34
|
use, then your own tokens.
|
|
35
35
|
|
|
36
|
+
On a phone (600px wide or less) the bar leaves out the zoom tool (`@gallerist/plugin-zoom`): a
|
|
37
|
+
pinch or a double tap zooms, and the renderer's reset button shows while zoomed. An overlay viewer's
|
|
38
|
+
bar leaves out fullscreen (`@gallerist/plugin-fullscreen`) too, as the overlay already fills the
|
|
39
|
+
screen; an inline viewer keeps it. Keep them with `--gallerist-phone-zoom: flex` and
|
|
40
|
+
`--gallerist-phone-fullscreen: grid` on `.gallerist` (each tool's own display; there the zoom tool
|
|
41
|
+
shows − and + only). A bar whose only tools are these two (and `controls: false`) still shows on a
|
|
42
|
+
phone, empty: leave the plugins out there, or keep the tools with the tokens.
|
|
43
|
+
|
|
44
|
+
The theme follows `forced-colors: active` (Windows High Contrast): the View popover's chosen segment
|
|
45
|
+
takes the system's selection colours and the focus rings the text colour. The rail's
|
|
46
|
+
item clusters (`thumbnails({ cluster })`) use `--gallerist-cluster-inner` (2px) inside a cluster and
|
|
47
|
+
`--gallerist-cluster-gap` (8px) between two.
|
|
48
|
+
|
|
36
49
|
Full docs: the [monorepo README](https://github.com/shafayet9780/gallerist#readme) and [`docs/`](https://github.com/shafayet9780/gallerist/tree/main/docs).
|
|
37
50
|
|
|
38
51
|
## License
|
package/package.json
CHANGED
package/src/base.css
CHANGED
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
--gallerist-dur-snappy: 340ms;
|
|
33
33
|
--gallerist-dur-gentle: 280ms;
|
|
34
34
|
--gallerist-dur-exit: 180ms; /* exits run shorter than entrances */
|
|
35
|
+
--gallerist-dur-panel: 220ms; /* the rail collapsing, the item column opening (plugin-thumbnails) */
|
|
35
36
|
|
|
36
37
|
/* the accent: each skin names its accents as a dark/light pair, the scheme picks one */
|
|
37
38
|
--gallerist-accent: var(--gallerist-accent-dark);
|
|
@@ -79,6 +80,21 @@
|
|
|
79
80
|
--gallerist-enter-group: gallerist-enter-group;
|
|
80
81
|
--gallerist-enter-item: gallerist-enter-item;
|
|
81
82
|
--gallerist-rail-track-gap: var(--gallerist-rail-bg); /* the ring that cuts the track at a tick */
|
|
83
|
+
/* the line between a flat rail's groups: the hairline, unless a skin's dark scheme lifts it (a
|
|
84
|
+
hairline that reads on a light band all but disappears on a dark one) */
|
|
85
|
+
--gallerist-divider: var(--gallerist-hairline);
|
|
86
|
+
--gallerist-rail-fade: 40px; /* how far a rail's end fades where it has more beyond it */
|
|
87
|
+
/* item clusters (thumbnails `cluster`): the gap inside one, and between two */
|
|
88
|
+
--gallerist-cluster-inner: 2px;
|
|
89
|
+
--gallerist-cluster-gap: 8px;
|
|
90
|
+
|
|
91
|
+
/* popovers (the View menu, the shortcut list) sit a step above the bands; a segmented control
|
|
92
|
+
is a recessed track with its checked segment raised */
|
|
93
|
+
--gallerist-popover-bg: var(--gallerist-panel);
|
|
94
|
+
--gallerist-popover-shadow: var(--gallerist-shadow);
|
|
95
|
+
--gallerist-seg-track: var(--gallerist-bg);
|
|
96
|
+
--gallerist-seg-on: var(--gallerist-surface);
|
|
97
|
+
--gallerist-seg-on-shadow: 0 0 0 1px var(--gallerist-hairline), 0 1px 2px rgb(0 0 0 / 0.25);
|
|
82
98
|
|
|
83
99
|
/* hover: unchanged unless a skin sets one */
|
|
84
100
|
--gallerist-arrow-hover-bg: var(--gallerist-arrow-bg);
|
|
@@ -355,16 +371,56 @@
|
|
|
355
371
|
pointer-events: auto;
|
|
356
372
|
}
|
|
357
373
|
.gallerist-region-toolbar {
|
|
374
|
+
--_gap: 6px; /* between tools: ::before and ::after cancel it */
|
|
358
375
|
display: flex;
|
|
359
376
|
align-items: center;
|
|
360
|
-
gap:
|
|
361
|
-
|
|
377
|
+
gap: var(--_gap);
|
|
378
|
+
/* a scroller clips at its padding box, both ways: room for a focused tool's ring (2px + 2px
|
|
379
|
+
offset; +1px at the ends, where Chromium rounds an RTL scroll range down), given back by the
|
|
380
|
+
margin so nothing moves. A tool focus scrolls in stops as far in. The end's room is ::after. */
|
|
381
|
+
padding: 4px 0;
|
|
382
|
+
padding-inline-start: 5px;
|
|
383
|
+
margin: -4px -5px;
|
|
384
|
+
scroll-padding-inline: 5px;
|
|
362
385
|
/* on a narrow screen the tools scroll sideways so the counter and Close always fit */
|
|
363
|
-
flex:
|
|
386
|
+
flex: 1 1 auto;
|
|
364
387
|
min-width: 0;
|
|
365
388
|
overflow-x: auto;
|
|
366
389
|
scrollbar-width: none;
|
|
367
|
-
pointer-events:
|
|
390
|
+
/* no pointer-events: like every region it passes them through but on its tools, so the bar's
|
|
391
|
+
free space it spans is the bar's (in immersive, the image's under it), and so is the 1px its
|
|
392
|
+
margin takes from what is before it on a phone (the bar's gap is 4px there) */
|
|
393
|
+
}
|
|
394
|
+
/* tools sit at the end of the bar: the strip takes the free space (a shown title shares it), its
|
|
395
|
+
tools after this auto margin (0 once they overflow; the gap after it cancelled) */
|
|
396
|
+
.gallerist-region-toolbar::before {
|
|
397
|
+
content: "";
|
|
398
|
+
margin-inline: auto calc(-1 * var(--_gap));
|
|
399
|
+
}
|
|
400
|
+
/* the room after the last tool, as a box: WebKit leaves a flex scroller's end padding out of its
|
|
401
|
+
scroll range */
|
|
402
|
+
.gallerist-region-toolbar::after {
|
|
403
|
+
content: "";
|
|
404
|
+
flex: none;
|
|
405
|
+
width: 5px;
|
|
406
|
+
margin-inline-start: calc(-1 * var(--_gap));
|
|
407
|
+
}
|
|
408
|
+
/* no tools, or (where :has() works) none shown: no room either, so nothing else moves */
|
|
409
|
+
.gallerist-region-toolbar:empty {
|
|
410
|
+
padding: 0;
|
|
411
|
+
margin: 0;
|
|
412
|
+
}
|
|
413
|
+
.gallerist-region-toolbar:empty::before,
|
|
414
|
+
.gallerist-region-toolbar:empty::after {
|
|
415
|
+
display: none;
|
|
416
|
+
}
|
|
417
|
+
.gallerist-region-toolbar:not(:has(> :not([hidden]))) {
|
|
418
|
+
padding: 0;
|
|
419
|
+
margin: 0;
|
|
420
|
+
}
|
|
421
|
+
.gallerist-region-toolbar:not(:has(> :not([hidden])))::before,
|
|
422
|
+
.gallerist-region-toolbar:not(:has(> :not([hidden])))::after {
|
|
423
|
+
display: none;
|
|
368
424
|
}
|
|
369
425
|
.gallerist-region-toolbar::-webkit-scrollbar {
|
|
370
426
|
display: none;
|
|
@@ -415,26 +471,120 @@
|
|
|
415
471
|
|
|
416
472
|
/* ── thumbnails rail (plugin-thumbnails) ───────────────────────────────────── */
|
|
417
473
|
/* the region wrapper: holds the scrollable rail plus the floating item/peek panels as siblings, so
|
|
418
|
-
the panels escape the rail's overflow-clip yet still ride along when the region is re-mounted.
|
|
474
|
+
the panels escape the rail's overflow-clip yet still ride along when the region is re-mounted. It
|
|
475
|
+
paints the rail's band, so the strip inside can fade its ends without fading the band. */
|
|
419
476
|
.gallerist-thumbs-region {
|
|
420
477
|
position: relative;
|
|
421
478
|
display: flex;
|
|
422
479
|
align-items: center;
|
|
423
480
|
min-width: 0;
|
|
481
|
+
background: var(--gallerist-rail-bg);
|
|
482
|
+
border-block-start: var(--gallerist-rail-border);
|
|
483
|
+
backdrop-filter: var(--gallerist-blur);
|
|
424
484
|
}
|
|
425
485
|
.gallerist-thumbs-region > .gallerist-thumbs {
|
|
426
486
|
flex: 1 1 auto;
|
|
427
487
|
min-width: 0;
|
|
428
488
|
}
|
|
489
|
+
/* the strip: no scrollbar (a mouse drags it, a wheel scrolls it, ‹ › page it; plugin-thumbnails),
|
|
490
|
+
no text or image selection while it's pulled; an end with more beyond it fades */
|
|
429
491
|
.gallerist-thumbs {
|
|
492
|
+
--_fade-to: to right;
|
|
493
|
+
--_fade-start: 0px;
|
|
494
|
+
--_fade-end: 0px;
|
|
430
495
|
display: flex;
|
|
431
496
|
gap: 8px;
|
|
432
497
|
align-items: center;
|
|
433
498
|
padding: 8px 12px;
|
|
434
499
|
overflow-x: auto;
|
|
435
|
-
|
|
436
|
-
|
|
500
|
+
scrollbar-width: none;
|
|
501
|
+
-webkit-user-select: none;
|
|
502
|
+
user-select: none;
|
|
503
|
+
}
|
|
504
|
+
.gallerist-thumbs::-webkit-scrollbar {
|
|
505
|
+
display: none;
|
|
506
|
+
}
|
|
507
|
+
.gallerist-thumbs img {
|
|
508
|
+
-webkit-user-drag: none;
|
|
509
|
+
}
|
|
510
|
+
.gallerist-thumbs[data-gallerist-scroll="y"] {
|
|
511
|
+
--_fade-to: to bottom;
|
|
512
|
+
}
|
|
513
|
+
.gallerist[data-gallerist-dir="rtl"] .gallerist-thumbs[data-gallerist-scroll="x"] {
|
|
514
|
+
--_fade-to: to left;
|
|
515
|
+
}
|
|
516
|
+
.gallerist-thumbs[data-gallerist-more-start] {
|
|
517
|
+
--_fade-start: var(--gallerist-rail-fade);
|
|
518
|
+
}
|
|
519
|
+
.gallerist-thumbs[data-gallerist-more-end] {
|
|
520
|
+
--_fade-end: var(--gallerist-rail-fade);
|
|
521
|
+
}
|
|
522
|
+
.gallerist-thumbs:is([data-gallerist-more-start], [data-gallerist-more-end]) {
|
|
523
|
+
-webkit-mask-image: linear-gradient(
|
|
524
|
+
var(--_fade-to),
|
|
525
|
+
transparent,
|
|
526
|
+
#000 var(--_fade-start),
|
|
527
|
+
#000 calc(100% - var(--_fade-end)),
|
|
528
|
+
transparent
|
|
529
|
+
);
|
|
530
|
+
mask-image: linear-gradient(
|
|
531
|
+
var(--_fade-to),
|
|
532
|
+
transparent,
|
|
533
|
+
#000 var(--_fade-start),
|
|
534
|
+
#000 calc(100% - var(--_fade-end)),
|
|
535
|
+
transparent
|
|
536
|
+
);
|
|
537
|
+
}
|
|
538
|
+
@media (pointer: fine) {
|
|
539
|
+
.gallerist-thumbs:is([data-gallerist-more-start], [data-gallerist-more-end]) {
|
|
540
|
+
cursor: grab;
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
.gallerist-thumbs[data-gallerist-dragging],
|
|
544
|
+
.gallerist-thumbs[data-gallerist-dragging] * {
|
|
545
|
+
cursor: grabbing;
|
|
546
|
+
}
|
|
547
|
+
/* ‹ › at a sideways strip's ends, while there's more that way: for a mouse, on hover (the keys
|
|
548
|
+
already walk the rail, so they're out of the tab order and hidden from assistive tech) */
|
|
549
|
+
.gallerist-rail-page {
|
|
550
|
+
position: absolute;
|
|
551
|
+
z-index: 3;
|
|
552
|
+
display: grid;
|
|
553
|
+
place-items: center;
|
|
554
|
+
width: 30px;
|
|
555
|
+
height: 30px;
|
|
556
|
+
margin-inline: 6px;
|
|
557
|
+
padding: 0;
|
|
558
|
+
translate: 0 -50%;
|
|
559
|
+
border: 1px solid var(--gallerist-hairline);
|
|
560
|
+
border-radius: 50%;
|
|
561
|
+
background: var(--gallerist-chrome-bg);
|
|
562
|
+
color: var(--gallerist-fg);
|
|
563
|
+
box-shadow: 0 2px 8px rgb(0 0 0 / 0.25);
|
|
437
564
|
backdrop-filter: var(--gallerist-blur);
|
|
565
|
+
cursor: pointer;
|
|
566
|
+
opacity: 0;
|
|
567
|
+
pointer-events: none;
|
|
568
|
+
transition: opacity var(--gallerist-dur-exit) var(--gallerist-ease-out);
|
|
569
|
+
}
|
|
570
|
+
.gallerist-rail-page[hidden] {
|
|
571
|
+
display: none;
|
|
572
|
+
}
|
|
573
|
+
.gallerist-rail-page .gallerist-icon {
|
|
574
|
+
width: 16px;
|
|
575
|
+
height: 16px;
|
|
576
|
+
}
|
|
577
|
+
.gallerist[data-gallerist-dir="rtl"] .gallerist-rail-page .gallerist-icon {
|
|
578
|
+
transform: scaleX(-1);
|
|
579
|
+
}
|
|
580
|
+
@media (hover: hover) and (pointer: fine) {
|
|
581
|
+
.gallerist-thumbs-region:hover > .gallerist-rail-page {
|
|
582
|
+
opacity: 1;
|
|
583
|
+
pointer-events: auto;
|
|
584
|
+
}
|
|
585
|
+
.gallerist-rail-page:hover {
|
|
586
|
+
background: var(--gallerist-tool-hover-bg, var(--gallerist-chrome-bg));
|
|
587
|
+
}
|
|
438
588
|
}
|
|
439
589
|
/* cards stack image + (optional) caption band; height grows for the caption */
|
|
440
590
|
.gallerist-thumb {
|
|
@@ -553,7 +703,7 @@
|
|
|
553
703
|
}
|
|
554
704
|
/* collapsing the rail puts its item stack away too (fullscreen, `t`, rail: 'hidden'); a rail switched
|
|
555
705
|
to flat or index leaves the column hidden */
|
|
556
|
-
.gallerist[data-gallerist-rail="collapsed"] .gallerist-thumbs-aside,
|
|
706
|
+
.gallerist[data-gallerist-rail="collapsed"] .gallerist-thumbs-aside:not([data-gallerist-glide]),
|
|
557
707
|
.gallerist-thumbs-aside[hidden] {
|
|
558
708
|
display: none;
|
|
559
709
|
}
|
|
@@ -590,18 +740,16 @@
|
|
|
590
740
|
.gallerist-thumbs[data-timeline] {
|
|
591
741
|
align-items: flex-start;
|
|
592
742
|
}
|
|
593
|
-
.gallerist-thumbs[data-timeline] .gallerist-thumb-wrap {
|
|
594
|
-
flex-direction: column;
|
|
595
|
-
gap: 6px;
|
|
596
|
-
}
|
|
597
743
|
.gallerist-thumb-time {
|
|
598
744
|
position: relative;
|
|
599
745
|
display: flex;
|
|
600
746
|
align-items: center;
|
|
601
747
|
gap: 6px;
|
|
602
748
|
height: 14px;
|
|
603
|
-
/* a label
|
|
604
|
-
|
|
749
|
+
/* a label longer than its card (a range with a host's meta at its end) runs past it: its column
|
|
750
|
+
widens, so it shows whole and clear of the next card's label; past three card heights it ends
|
|
751
|
+
in an ellipsis, the whole label in its title (as a flat rail's group label does) */
|
|
752
|
+
max-width: calc(var(--gallerist-thumb-h) * 3);
|
|
605
753
|
font: 500 11px var(--gallerist-mono);
|
|
606
754
|
font-variant-numeric: tabular-nums;
|
|
607
755
|
color: var(--gallerist-fg-muted);
|
|
@@ -612,22 +760,31 @@
|
|
|
612
760
|
overflow: hidden;
|
|
613
761
|
text-overflow: ellipsis;
|
|
614
762
|
}
|
|
615
|
-
/* a side rail runs top to bottom: no horizontal track between the cards
|
|
763
|
+
/* a side rail runs top to bottom: no horizontal track between the cards, and a label keeps to the
|
|
764
|
+
rail's width (a card's) */
|
|
765
|
+
.gallerist[data-gallerist-orientation="vertical"] .gallerist-thumb-time {
|
|
766
|
+
max-width: calc(var(--gallerist-thumb-h) * 1.4);
|
|
767
|
+
}
|
|
616
768
|
.gallerist[data-gallerist-orientation="vertical"] .gallerist-thumb-time::after {
|
|
617
769
|
display: none;
|
|
618
770
|
}
|
|
619
|
-
/* a timeline label sits above the card, so the touch expand caret moves down onto the card
|
|
771
|
+
/* a timeline label sits above the card, so the touch expand caret moves down onto the card (its
|
|
772
|
+
left corner: right to left, the card keeps to the right of a column a long label widened) */
|
|
620
773
|
.gallerist-thumbs[data-timeline] .gallerist-thumb-expand {
|
|
621
774
|
top: calc(14px + 6px + 4px);
|
|
622
775
|
}
|
|
776
|
+
.gallerist[data-gallerist-dir="rtl"] .gallerist-thumbs[data-timeline] .gallerist-thumb-expand {
|
|
777
|
+
left: auto;
|
|
778
|
+
right: calc(var(--gallerist-thumb-h) * 1.4 - 26px);
|
|
779
|
+
}
|
|
623
780
|
/* a side rail's band edge faces the stage, not the bar */
|
|
624
|
-
.gallerist[data-gallerist-orientation="vertical"] .gallerist-thumbs {
|
|
781
|
+
.gallerist[data-gallerist-orientation="vertical"] .gallerist-thumbs-region {
|
|
625
782
|
border-block-start: 0 none;
|
|
626
783
|
}
|
|
627
|
-
.gallerist[data-gallerist-rail-pos="left"] .gallerist-thumbs {
|
|
784
|
+
.gallerist[data-gallerist-rail-pos="left"] .gallerist-thumbs-region {
|
|
628
785
|
border-right: var(--gallerist-rail-border);
|
|
629
786
|
}
|
|
630
|
-
.gallerist[data-gallerist-rail-pos="right"] .gallerist-thumbs {
|
|
787
|
+
.gallerist[data-gallerist-rail-pos="right"] .gallerist-thumbs-region {
|
|
631
788
|
border-left: var(--gallerist-rail-border);
|
|
632
789
|
}
|
|
633
790
|
.gallerist-thumb-time::before {
|
|
@@ -710,6 +867,8 @@
|
|
|
710
867
|
position: relative;
|
|
711
868
|
flex: 0 0 auto;
|
|
712
869
|
display: flex;
|
|
870
|
+
flex-direction: column; /* a label over the card, a host's meta under it (the caret floats) */
|
|
871
|
+
gap: 6px;
|
|
713
872
|
}
|
|
714
873
|
.gallerist-thumb-expand {
|
|
715
874
|
position: absolute;
|
|
@@ -748,13 +907,21 @@
|
|
|
748
907
|
justify-content: flex-end; /* the item rows line up, labelled or not */
|
|
749
908
|
gap: 6px;
|
|
750
909
|
}
|
|
751
|
-
/* the divider: the same room on both sides of it (the rail's gap, then this padding)
|
|
752
|
-
|
|
910
|
+
/* the divider: the same room on both sides of it (the rail's gap, then this padding); a marker
|
|
911
|
+
between two groups has one on each side */
|
|
912
|
+
/* (as specific as 0.3's `.gallerist-thumb-group + .gallerist-thumb-group`, so a page's rule for it
|
|
913
|
+
still wins) */
|
|
914
|
+
.gallerist-thumbs:where([data-display="flat"])
|
|
915
|
+
> :where(.gallerist-thumb-group, .gallerist-rail-marker)
|
|
916
|
+
+ :is(.gallerist-thumb-group, .gallerist-rail-marker) {
|
|
753
917
|
padding-inline-start: 12px;
|
|
754
|
-
border-inline-start: 1px solid var(--gallerist-
|
|
918
|
+
border-inline-start: 1px solid var(--gallerist-divider);
|
|
755
919
|
}
|
|
920
|
+
/* a label wider than its items widens its group (a one-item group under a time range), so it shows
|
|
921
|
+
whole and clear of the next group's divider; past three card heights it ends in an ellipsis (the
|
|
922
|
+
whole label in its title) */
|
|
756
923
|
.gallerist-thumb-group-cap {
|
|
757
|
-
|
|
924
|
+
max-width: calc(var(--gallerist-thumb-h) * 3);
|
|
758
925
|
font: 500 11px / 14px var(--gallerist-font);
|
|
759
926
|
color: var(--gallerist-fg-muted);
|
|
760
927
|
white-space: nowrap;
|
|
@@ -764,7 +931,7 @@
|
|
|
764
931
|
.gallerist-thumbs[data-timeline] .gallerist-thumb-group-cap {
|
|
765
932
|
font-family: var(--gallerist-mono);
|
|
766
933
|
}
|
|
767
|
-
.gallerist-thumb-group[data-active]
|
|
934
|
+
.gallerist-thumb-group[data-active] .gallerist-thumb-group-cap {
|
|
768
935
|
color: var(--gallerist-accent);
|
|
769
936
|
}
|
|
770
937
|
.gallerist-thumb-group-row {
|
|
@@ -784,10 +951,154 @@
|
|
|
784
951
|
flex-direction: column;
|
|
785
952
|
align-items: flex-start;
|
|
786
953
|
}
|
|
787
|
-
|
|
954
|
+
/* down a side rail a group is the rail's width: a long label ends in an ellipsis there */
|
|
955
|
+
.gallerist[data-gallerist-orientation="vertical"]
|
|
956
|
+
:is(.gallerist-thumb-group-cap, .gallerist-thumb-group-head) {
|
|
957
|
+
contain: inline-size;
|
|
958
|
+
}
|
|
959
|
+
.gallerist[data-gallerist-orientation="vertical"]
|
|
960
|
+
.gallerist-thumbs:where([data-display="flat"])
|
|
961
|
+
> :where(.gallerist-thumb-group, .gallerist-rail-marker)
|
|
962
|
+
+ :is(.gallerist-thumb-group, .gallerist-rail-marker) {
|
|
788
963
|
padding: 12px 0 0;
|
|
789
964
|
border-inline-start: 0;
|
|
790
|
-
border-block-start: 1px solid var(--gallerist-
|
|
965
|
+
border-block-start: 1px solid var(--gallerist-divider);
|
|
966
|
+
}
|
|
967
|
+
|
|
968
|
+
/* ── host decorations (thumbnails `renderGroupMeta`, `renderItemBadge`, `cluster`, `markers`) ──── */
|
|
969
|
+
/* a group's meta: at the end of its label line (flat: the group widens for it, the label still
|
|
970
|
+
capped at three card heights), under a stacked card at its width, or at the end of its time label */
|
|
971
|
+
.gallerist-thumb-meta {
|
|
972
|
+
display: flex;
|
|
973
|
+
align-items: center;
|
|
974
|
+
gap: 4px;
|
|
975
|
+
min-width: 0;
|
|
976
|
+
font: 500 11px / 14px var(--gallerist-mono);
|
|
977
|
+
font-variant-numeric: tabular-nums;
|
|
978
|
+
color: var(--gallerist-fg-muted);
|
|
979
|
+
white-space: nowrap;
|
|
980
|
+
}
|
|
981
|
+
.gallerist-thumb-group-head {
|
|
982
|
+
display: flex;
|
|
983
|
+
align-items: center;
|
|
984
|
+
gap: 8px;
|
|
985
|
+
min-height: 14px;
|
|
986
|
+
}
|
|
987
|
+
.gallerist-thumb-group-head[hidden] {
|
|
988
|
+
display: none;
|
|
989
|
+
}
|
|
990
|
+
:is(.gallerist-thumb-group-head, .gallerist-thumb-time) > .gallerist-thumb-meta {
|
|
991
|
+
flex: none;
|
|
992
|
+
margin-inline-start: auto;
|
|
993
|
+
}
|
|
994
|
+
.gallerist-thumb-wrap > .gallerist-thumb-meta {
|
|
995
|
+
box-sizing: border-box;
|
|
996
|
+
width: calc(var(--gallerist-thumb-h) * 1.4);
|
|
997
|
+
min-height: 14px;
|
|
998
|
+
}
|
|
999
|
+
/* an item's badge: the top end corner (a number from `numberItems` has the start) */
|
|
1000
|
+
.gallerist-thumb-badge {
|
|
1001
|
+
position: absolute;
|
|
1002
|
+
top: 3px;
|
|
1003
|
+
inset-inline-end: 3px;
|
|
1004
|
+
display: flex;
|
|
1005
|
+
align-items: center;
|
|
1006
|
+
gap: 2px;
|
|
1007
|
+
height: 14px;
|
|
1008
|
+
padding: 0 3px;
|
|
1009
|
+
box-sizing: border-box;
|
|
1010
|
+
border-radius: 2px;
|
|
1011
|
+
background: var(--gallerist-badge-bg);
|
|
1012
|
+
color: var(--gallerist-fg);
|
|
1013
|
+
font: 600 9px / 14px var(--gallerist-mono);
|
|
1014
|
+
pointer-events: none;
|
|
1015
|
+
}
|
|
1016
|
+
.gallerist-thumb-badge svg {
|
|
1017
|
+
width: 10px;
|
|
1018
|
+
height: 10px;
|
|
1019
|
+
}
|
|
1020
|
+
/* clusters: close inside one, a wider gap where a new one starts (the rows' gap is 6px) */
|
|
1021
|
+
.gallerist-thumb-item[data-cluster="in"] {
|
|
1022
|
+
--_cluster: calc(var(--gallerist-cluster-inner) - 6px);
|
|
1023
|
+
}
|
|
1024
|
+
.gallerist-thumb-item[data-cluster="start"] {
|
|
1025
|
+
--_cluster: calc(var(--gallerist-cluster-gap) - 6px);
|
|
1026
|
+
}
|
|
1027
|
+
.gallerist-thumb-item[data-cluster]:not(:first-child) {
|
|
1028
|
+
margin-inline-start: var(--_cluster);
|
|
1029
|
+
}
|
|
1030
|
+
/* 2px apart, a neighbour would paint over part of a focused thumb's ring */
|
|
1031
|
+
.gallerist-thumb-item:focus-visible {
|
|
1032
|
+
z-index: 1;
|
|
1033
|
+
}
|
|
1034
|
+
:is(
|
|
1035
|
+
.gallerist-thumb-items[data-axis="vertical"],
|
|
1036
|
+
.gallerist-thumb-peek:not([data-axis="horizontal"]),
|
|
1037
|
+
.gallerist[data-gallerist-orientation="vertical"] .gallerist-thumb-group-row,
|
|
1038
|
+
.gallerist[data-gallerist-orientation="vertical"] .gallerist-thumb-items
|
|
1039
|
+
)
|
|
1040
|
+
> .gallerist-thumb-item[data-cluster]:not(:first-child) {
|
|
1041
|
+
margin-inline-start: 0;
|
|
1042
|
+
margin-block-start: var(--_cluster);
|
|
1043
|
+
}
|
|
1044
|
+
/* a marker between groups (not an item): a dashed box the height of the rail's cards, under a
|
|
1045
|
+
label line like a group's */
|
|
1046
|
+
.gallerist-rail-marker {
|
|
1047
|
+
flex: 0 0 auto;
|
|
1048
|
+
display: flex;
|
|
1049
|
+
flex-direction: column;
|
|
1050
|
+
justify-content: flex-end; /* flat: in line with the item rows */
|
|
1051
|
+
gap: 6px;
|
|
1052
|
+
-webkit-touch-callout: none; /* a long press shows its tip, not the system menu */
|
|
1053
|
+
}
|
|
1054
|
+
.gallerist-rail-marker-cap {
|
|
1055
|
+
height: 14px;
|
|
1056
|
+
font: 500 11px / 14px var(--gallerist-font);
|
|
1057
|
+
color: var(--gallerist-fg-muted);
|
|
1058
|
+
white-space: nowrap;
|
|
1059
|
+
}
|
|
1060
|
+
.gallerist-rail-marker-body {
|
|
1061
|
+
display: flex;
|
|
1062
|
+
align-items: center;
|
|
1063
|
+
justify-content: center;
|
|
1064
|
+
gap: 4px;
|
|
1065
|
+
box-sizing: border-box;
|
|
1066
|
+
min-width: calc(var(--gallerist-thumb-h) * 0.8);
|
|
1067
|
+
height: calc(var(--gallerist-thumb-h) * 0.7 + 4px);
|
|
1068
|
+
padding: 0 10px;
|
|
1069
|
+
border: 1px dashed var(--gallerist-fg-muted);
|
|
1070
|
+
border-radius: var(--gallerist-thumb-radius);
|
|
1071
|
+
color: var(--gallerist-fg-muted);
|
|
1072
|
+
font: 500 11px / 1.2 var(--gallerist-mono);
|
|
1073
|
+
white-space: nowrap;
|
|
1074
|
+
}
|
|
1075
|
+
/* stacked: the cards' height, under the time labels' line */
|
|
1076
|
+
.gallerist-thumbs:not([data-display]) > .gallerist-rail-marker {
|
|
1077
|
+
justify-content: flex-start;
|
|
1078
|
+
}
|
|
1079
|
+
.gallerist-thumbs:not([data-display]) .gallerist-rail-marker-body {
|
|
1080
|
+
height: calc(var(--gallerist-thumb-h) + 4px);
|
|
1081
|
+
}
|
|
1082
|
+
/* down a side rail: a short box across the rail */
|
|
1083
|
+
.gallerist[data-gallerist-orientation="vertical"] .gallerist-rail-marker-body {
|
|
1084
|
+
height: 32px;
|
|
1085
|
+
}
|
|
1086
|
+
/* a marker's tip (hover, long press): in the rail's region, which doesn't clip */
|
|
1087
|
+
.gallerist-rail-tip {
|
|
1088
|
+
position: absolute;
|
|
1089
|
+
top: 0;
|
|
1090
|
+
left: 0;
|
|
1091
|
+
z-index: 8;
|
|
1092
|
+
box-sizing: border-box;
|
|
1093
|
+
max-width: min(280px, 80vw);
|
|
1094
|
+
padding: 8px 10px;
|
|
1095
|
+
border-radius: var(--gallerist-radius);
|
|
1096
|
+
background: var(--gallerist-flyout-bg);
|
|
1097
|
+
color: var(--gallerist-fg);
|
|
1098
|
+
box-shadow: var(--gallerist-shadow);
|
|
1099
|
+
backdrop-filter: var(--gallerist-blur);
|
|
1100
|
+
font: 12px / 1.4 var(--gallerist-font);
|
|
1101
|
+
pointer-events: none;
|
|
791
1102
|
}
|
|
792
1103
|
|
|
793
1104
|
/* ── chrome buttons (one look for bar tools, arrows, item navigator, plugin buttons) ───────── */
|
|
@@ -861,86 +1172,392 @@
|
|
|
861
1172
|
pointer-events: none;
|
|
862
1173
|
}
|
|
863
1174
|
|
|
864
|
-
/* ── the
|
|
1175
|
+
/* ── the zoom tool (plugin-zoom): − 100% + ───────────────────────────────────────── */
|
|
1176
|
+
.gallerist-zoom-tool {
|
|
1177
|
+
display: flex;
|
|
1178
|
+
align-items: center;
|
|
1179
|
+
gap: 2px;
|
|
1180
|
+
}
|
|
1181
|
+
.gallerist-zoom-tool[hidden] {
|
|
1182
|
+
display: none;
|
|
1183
|
+
}
|
|
1184
|
+
.gallerist-bar .gallerist-zoom-level {
|
|
1185
|
+
min-width: 4.5em;
|
|
1186
|
+
padding: 0 4px;
|
|
1187
|
+
font: 600 13px / 1 var(--gallerist-mono);
|
|
1188
|
+
font-variant-numeric: tabular-nums;
|
|
1189
|
+
}
|
|
1190
|
+
/* at fit there's nothing to reset: the percentage keeps its colour */
|
|
1191
|
+
.gallerist-bar .gallerist-zoom-level[aria-disabled="true"] {
|
|
1192
|
+
opacity: 1;
|
|
1193
|
+
cursor: default;
|
|
1194
|
+
}
|
|
1195
|
+
.gallerist-bar .gallerist-zoom-level[aria-disabled="true"]:hover {
|
|
1196
|
+
background: var(--gallerist-tool-bg);
|
|
1197
|
+
}
|
|
1198
|
+
/* the percentage resets the zoom: the renderer's own reset button would say it twice (while the
|
|
1199
|
+
tool shows: a hidden one, or one a phone leaves out, leaves the reset where it was) */
|
|
1200
|
+
.gallerist-bar:has(.gallerist-zoom-tool:not([hidden])) > .gallerist-zoom-reset {
|
|
1201
|
+
display: none;
|
|
1202
|
+
}
|
|
1203
|
+
/* a narrow screen keeps − and + (a pinch zooms there, a double tap fits), where it keeps the tool */
|
|
1204
|
+
@media (max-width: 600px) {
|
|
1205
|
+
.gallerist-bar .gallerist-zoom-level {
|
|
1206
|
+
display: none;
|
|
1207
|
+
}
|
|
1208
|
+
}
|
|
1209
|
+
/* A phone (600px wide or less) leaves the zoom tool out of the bar (a pinch or a double tap zooms),
|
|
1210
|
+
and an overlay viewer's fullscreen (it fills the screen already; an inline one keeps it). A page
|
|
1211
|
+
keeps them by setting --gallerist-phone-zoom: flex and --gallerist-phone-fullscreen: grid (their
|
|
1212
|
+
own display). The renderer's reset shows there while zoomed, as without the tool: the percentage,
|
|
1213
|
+
which resets, is the part of the tool a phone never shows. */
|
|
1214
|
+
@media (max-width: 600px) {
|
|
1215
|
+
.gallerist-bar .gallerist-zoom-tool:not([hidden]) {
|
|
1216
|
+
display: var(--gallerist-phone-zoom, none);
|
|
1217
|
+
}
|
|
1218
|
+
.gallerist-bar:has(.gallerist-zoom-tool:not([hidden])) > .gallerist-zoom-reset:not([hidden]) {
|
|
1219
|
+
display: grid;
|
|
1220
|
+
}
|
|
1221
|
+
.gallerist[data-gallerist-mode="overlay"] .gallerist-bar .gallerist-fullscreen-btn:not([hidden]) {
|
|
1222
|
+
display: var(--gallerist-phone-fullscreen, none);
|
|
1223
|
+
}
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1226
|
+
/* ── the View menu (plugin-view): a popover under its bar tool ───────────────────── */
|
|
865
1227
|
/* The plugin puts it in the viewer root (the toolbar strip scrolls, so it would clip it) and sets its
|
|
866
|
-
top / left under the button; it is as small as its choices, so it covers only the stage's top edge.
|
|
1228
|
+
top / left under the button; it is as small as its choices, so it covers only the stage's top edge.
|
|
1229
|
+
A grid of two columns: each setting's name, then its segmented control; the shortcut row spans. */
|
|
867
1230
|
.gallerist-view-menu {
|
|
868
1231
|
position: absolute;
|
|
869
1232
|
top: 0;
|
|
870
1233
|
left: 0;
|
|
871
1234
|
z-index: 10;
|
|
872
1235
|
box-sizing: border-box;
|
|
873
|
-
|
|
1236
|
+
display: grid;
|
|
1237
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
1238
|
+
align-items: center;
|
|
1239
|
+
gap: 12px 10px;
|
|
1240
|
+
width: max-content;
|
|
874
1241
|
max-width: calc(100% - 16px);
|
|
875
1242
|
overflow-y: auto;
|
|
876
|
-
padding:
|
|
1243
|
+
padding: 12px 12px 6px;
|
|
1244
|
+
padding-inline-start: 16px;
|
|
877
1245
|
border: 1px solid var(--gallerist-hairline);
|
|
878
|
-
border-radius: var(--gallerist-radius);
|
|
879
|
-
background: var(--gallerist-
|
|
1246
|
+
border-radius: calc(var(--gallerist-radius) + 3px);
|
|
1247
|
+
background: var(--gallerist-popover-bg);
|
|
880
1248
|
backdrop-filter: var(--gallerist-blur);
|
|
881
|
-
box-shadow: var(--gallerist-shadow);
|
|
1249
|
+
box-shadow: var(--gallerist-popover-shadow);
|
|
882
1250
|
color: var(--gallerist-fg);
|
|
883
|
-
font: 400
|
|
884
|
-
}
|
|
885
|
-
.gallerist-view-group + .gallerist-view-group {
|
|
886
|
-
margin-block-start: 4px;
|
|
887
|
-
padding-block-start: 4px;
|
|
888
|
-
border-block-start: 1px solid var(--gallerist-hairline);
|
|
1251
|
+
font: 400 12.5px / 1.3 var(--gallerist-font);
|
|
889
1252
|
}
|
|
890
|
-
.gallerist-view-
|
|
891
|
-
padding: 6px 10px 4px;
|
|
1253
|
+
.gallerist-view-label {
|
|
892
1254
|
color: var(--gallerist-fg-muted);
|
|
893
|
-
font-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
1255
|
+
font-weight: 500;
|
|
1256
|
+
}
|
|
1257
|
+
/* a segmented control: a recessed track, the checked segment raised on it */
|
|
1258
|
+
.gallerist-view-seg {
|
|
1259
|
+
display: grid;
|
|
1260
|
+
grid-auto-columns: 1fr;
|
|
1261
|
+
grid-auto-flow: column;
|
|
1262
|
+
gap: 2px;
|
|
1263
|
+
padding: 2px;
|
|
1264
|
+
border: 1px solid var(--gallerist-hairline);
|
|
1265
|
+
border-radius: calc(var(--gallerist-radius) + 1px);
|
|
1266
|
+
background: var(--gallerist-seg-track);
|
|
897
1267
|
}
|
|
898
1268
|
.gallerist-view-item {
|
|
899
|
-
display: flex;
|
|
1269
|
+
display: inline-flex;
|
|
900
1270
|
align-items: center;
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
1271
|
+
justify-content: center;
|
|
1272
|
+
gap: 7px;
|
|
1273
|
+
height: 28px;
|
|
1274
|
+
margin: 0;
|
|
1275
|
+
padding: 0 12px;
|
|
1276
|
+
border: 0;
|
|
1277
|
+
border-radius: max(0px, var(--gallerist-radius) - 1px);
|
|
1278
|
+
background: transparent;
|
|
1279
|
+
color: var(--gallerist-fg-muted);
|
|
1280
|
+
font: inherit;
|
|
1281
|
+
font-weight: 500;
|
|
1282
|
+
white-space: nowrap;
|
|
905
1283
|
cursor: pointer;
|
|
906
1284
|
user-select: none;
|
|
907
1285
|
-webkit-user-select: none;
|
|
908
1286
|
}
|
|
909
|
-
|
|
910
|
-
.gallerist-view-item::before {
|
|
911
|
-
content: "";
|
|
1287
|
+
.gallerist-view-icon {
|
|
912
1288
|
flex: none;
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
border: 1.5px solid currentColor;
|
|
917
|
-
border-radius: 50%;
|
|
918
|
-
opacity: 0.6;
|
|
919
|
-
}
|
|
920
|
-
.gallerist-view-item[aria-checked="true"]::before {
|
|
921
|
-
border-color: var(--gallerist-selection);
|
|
922
|
-
background: radial-gradient(circle, var(--gallerist-selection) 0 3px, transparent 3.5px);
|
|
923
|
-
opacity: 1;
|
|
1289
|
+
width: 15px;
|
|
1290
|
+
height: 15px;
|
|
1291
|
+
stroke-width: 1.75;
|
|
924
1292
|
}
|
|
925
|
-
/* the pointer's item takes the tool hover fill, the keyboard's the focus ring: the two never look
|
|
926
|
-
alike (nor like the checked mark) when they are different items */
|
|
927
1293
|
.gallerist-view-item:hover {
|
|
928
|
-
|
|
1294
|
+
color: var(--gallerist-fg);
|
|
1295
|
+
}
|
|
1296
|
+
/* the checked segment: raised, full-strength text, its glyph in the selection colour */
|
|
1297
|
+
.gallerist-view-item[aria-checked="true"] {
|
|
1298
|
+
background: var(--gallerist-seg-on);
|
|
1299
|
+
box-shadow: var(--gallerist-seg-on-shadow);
|
|
1300
|
+
color: var(--gallerist-fg);
|
|
1301
|
+
}
|
|
1302
|
+
.gallerist-view-item[aria-checked="true"] .gallerist-view-icon {
|
|
1303
|
+
color: var(--gallerist-selection);
|
|
929
1304
|
}
|
|
930
|
-
|
|
1305
|
+
/* the keyboard's segment takes the skin's focus ring, never the selection colour, so focus and the
|
|
1306
|
+
checked value don't look alike */
|
|
1307
|
+
.gallerist-view-item:focus,
|
|
1308
|
+
.gallerist-view-foot:focus {
|
|
931
1309
|
outline: none;
|
|
932
1310
|
}
|
|
933
|
-
.gallerist-view-item:focus-visible
|
|
1311
|
+
.gallerist-view-item:focus-visible,
|
|
1312
|
+
.gallerist-view-foot:focus-visible {
|
|
1313
|
+
position: relative;
|
|
934
1314
|
outline: 2px solid var(--gallerist-focus);
|
|
935
|
-
outline-offset:
|
|
1315
|
+
outline-offset: 1px;
|
|
936
1316
|
}
|
|
937
|
-
/*
|
|
1317
|
+
/* the shortcut list's row (plugin-shortcuts): spans both columns under a hairline */
|
|
1318
|
+
.gallerist-view-foot {
|
|
1319
|
+
grid-column: 1 / -1;
|
|
1320
|
+
display: flex;
|
|
1321
|
+
align-items: center;
|
|
1322
|
+
justify-content: space-between;
|
|
1323
|
+
gap: 12px;
|
|
1324
|
+
margin: 0;
|
|
1325
|
+
margin-inline: -10px -6px;
|
|
1326
|
+
padding: 9px 6px 3px;
|
|
1327
|
+
padding-inline: 10px 6px;
|
|
1328
|
+
border: 0;
|
|
1329
|
+
border-block-start: 1px solid var(--gallerist-hairline);
|
|
1330
|
+
border-radius: 0 0 5px 5px;
|
|
1331
|
+
background: transparent;
|
|
1332
|
+
color: var(--gallerist-fg-muted);
|
|
1333
|
+
font: inherit;
|
|
1334
|
+
text-align: start;
|
|
1335
|
+
cursor: pointer;
|
|
1336
|
+
}
|
|
1337
|
+
.gallerist-view-foot:hover {
|
|
1338
|
+
color: var(--gallerist-fg);
|
|
1339
|
+
}
|
|
1340
|
+
/* a key, as the shortcut list draws them */
|
|
1341
|
+
.gallerist-view-foot kbd,
|
|
1342
|
+
.gallerist-shortcuts kbd {
|
|
1343
|
+
display: inline-grid;
|
|
1344
|
+
place-items: center;
|
|
1345
|
+
box-sizing: border-box;
|
|
1346
|
+
min-width: 22px;
|
|
1347
|
+
height: 22px;
|
|
1348
|
+
padding: 0 6px;
|
|
1349
|
+
border: 1px solid var(--gallerist-hairline);
|
|
1350
|
+
border-bottom-width: 2px;
|
|
1351
|
+
border-radius: 5px;
|
|
1352
|
+
background: var(--gallerist-surface);
|
|
1353
|
+
color: var(--gallerist-fg);
|
|
1354
|
+
font: 500 11.5px / 1 var(--gallerist-mono);
|
|
1355
|
+
}
|
|
1356
|
+
/* its button reads as held while the popover is open */
|
|
938
1357
|
.gallerist-bar button[aria-expanded="true"] {
|
|
939
1358
|
background: var(--gallerist-tool-hover-bg);
|
|
940
1359
|
}
|
|
1360
|
+
/* a finger gets taller segments, and no key to press */
|
|
941
1361
|
@media (pointer: coarse) {
|
|
942
1362
|
.gallerist-view-item {
|
|
943
|
-
|
|
1363
|
+
height: 36px;
|
|
1364
|
+
}
|
|
1365
|
+
.gallerist-view-foot kbd {
|
|
1366
|
+
display: none;
|
|
1367
|
+
}
|
|
1368
|
+
}
|
|
1369
|
+
/* forced colours drop the checked segment's raised surface and shadow: it takes the system's
|
|
1370
|
+
selection colours, and a focus ring the text colour, so focus and the choice still differ */
|
|
1371
|
+
@media (forced-colors: active) {
|
|
1372
|
+
.gallerist-view-item[aria-checked="true"] {
|
|
1373
|
+
forced-color-adjust: none;
|
|
1374
|
+
background: Highlight;
|
|
1375
|
+
color: HighlightText;
|
|
1376
|
+
}
|
|
1377
|
+
.gallerist-view-item[aria-checked="true"] .gallerist-view-icon {
|
|
1378
|
+
color: inherit;
|
|
1379
|
+
}
|
|
1380
|
+
:is(
|
|
1381
|
+
.gallerist-view-item,
|
|
1382
|
+
.gallerist-view-foot,
|
|
1383
|
+
.gallerist-shortcuts-close,
|
|
1384
|
+
.gallerist-shortcuts-body
|
|
1385
|
+
):focus-visible {
|
|
1386
|
+
outline-color: CanvasText;
|
|
1387
|
+
}
|
|
1388
|
+
}
|
|
1389
|
+
|
|
1390
|
+
/* ── the shortcut list (plugin-shortcuts): a modal dialog over the viewer ────────── */
|
|
1391
|
+
/* The plugin puts a scrim over the whole viewer (the rest of it inert) and the dialog in its middle:
|
|
1392
|
+
a header (the title, Esc to close), then a column per section, the moves widest. On a narrow
|
|
1393
|
+
screen it is a sheet from the bottom edge, one column. */
|
|
1394
|
+
.gallerist-shortcuts-scrim {
|
|
1395
|
+
position: absolute;
|
|
1396
|
+
inset: 0;
|
|
1397
|
+
z-index: 20;
|
|
1398
|
+
/* one cell the scrim's size, so the dialog's max-height holds and its list scrolls */
|
|
1399
|
+
display: grid;
|
|
1400
|
+
grid-template: minmax(0, 1fr) / minmax(0, 1fr);
|
|
1401
|
+
place-items: center;
|
|
1402
|
+
padding: 16px;
|
|
1403
|
+
background: var(--gallerist-scrim);
|
|
1404
|
+
animation: gallerist-fade var(--gallerist-dur-exit) var(--gallerist-ease-out);
|
|
1405
|
+
}
|
|
1406
|
+
.gallerist-shortcuts {
|
|
1407
|
+
box-sizing: border-box;
|
|
1408
|
+
display: flex;
|
|
1409
|
+
flex-direction: column;
|
|
1410
|
+
width: min(720px, 100%);
|
|
1411
|
+
max-height: 100%;
|
|
1412
|
+
border: 1px solid var(--gallerist-hairline);
|
|
1413
|
+
border-radius: calc(var(--gallerist-radius) + 5px);
|
|
1414
|
+
background: var(--gallerist-popover-bg);
|
|
1415
|
+
backdrop-filter: var(--gallerist-blur);
|
|
1416
|
+
box-shadow: var(--gallerist-popover-shadow);
|
|
1417
|
+
color: var(--gallerist-fg);
|
|
1418
|
+
font: 400 13px / 1.35 var(--gallerist-font);
|
|
1419
|
+
}
|
|
1420
|
+
.gallerist-shortcuts:focus {
|
|
1421
|
+
outline: none; /* focus starts on the dialog, so a screen reader reads it whole; the ring is the close button's */
|
|
1422
|
+
}
|
|
1423
|
+
.gallerist-shortcuts-head {
|
|
1424
|
+
display: flex;
|
|
1425
|
+
align-items: center;
|
|
1426
|
+
gap: 10px;
|
|
1427
|
+
padding: 12px;
|
|
1428
|
+
padding-inline-start: 20px;
|
|
1429
|
+
border-block-end: 1px solid var(--gallerist-hairline);
|
|
1430
|
+
}
|
|
1431
|
+
.gallerist-shortcuts-head .gallerist-icon {
|
|
1432
|
+
flex: none;
|
|
1433
|
+
width: 17px;
|
|
1434
|
+
height: 17px;
|
|
1435
|
+
}
|
|
1436
|
+
.gallerist-shortcuts-head h2 {
|
|
1437
|
+
margin: 0;
|
|
1438
|
+
font-size: 14px;
|
|
1439
|
+
font-weight: 600;
|
|
1440
|
+
}
|
|
1441
|
+
.gallerist-shortcuts-close {
|
|
1442
|
+
display: inline-flex;
|
|
1443
|
+
align-items: center;
|
|
1444
|
+
gap: 8px;
|
|
1445
|
+
min-height: 32px;
|
|
1446
|
+
margin-inline-start: auto;
|
|
1447
|
+
padding: 0 8px;
|
|
1448
|
+
border: 0;
|
|
1449
|
+
border-radius: var(--gallerist-control-radius, 6px);
|
|
1450
|
+
background: transparent;
|
|
1451
|
+
color: var(--gallerist-fg-muted);
|
|
1452
|
+
font: inherit;
|
|
1453
|
+
font-size: 12.5px;
|
|
1454
|
+
cursor: pointer;
|
|
1455
|
+
}
|
|
1456
|
+
.gallerist-shortcuts-close:hover {
|
|
1457
|
+
background: var(--gallerist-tool-hover-bg);
|
|
1458
|
+
color: var(--gallerist-fg);
|
|
1459
|
+
}
|
|
1460
|
+
.gallerist-shortcuts-close:focus {
|
|
1461
|
+
outline: none;
|
|
1462
|
+
}
|
|
1463
|
+
.gallerist-shortcuts-close:focus-visible {
|
|
1464
|
+
outline: 2px solid var(--gallerist-focus);
|
|
1465
|
+
outline-offset: 1px;
|
|
1466
|
+
}
|
|
1467
|
+
.gallerist-shortcuts-body {
|
|
1468
|
+
display: flex;
|
|
1469
|
+
min-height: 0;
|
|
1470
|
+
flex-wrap: wrap;
|
|
1471
|
+
gap: 4px 28px;
|
|
1472
|
+
overflow-y: auto;
|
|
1473
|
+
padding: 16px 20px 18px;
|
|
1474
|
+
}
|
|
1475
|
+
/* the list takes focus (Tab) so the keys can scroll it when the viewer is short */
|
|
1476
|
+
.gallerist-shortcuts-body:focus {
|
|
1477
|
+
outline: none;
|
|
1478
|
+
}
|
|
1479
|
+
.gallerist-shortcuts-body:focus-visible {
|
|
1480
|
+
outline: 2px solid var(--gallerist-focus);
|
|
1481
|
+
outline-offset: -2px;
|
|
1482
|
+
}
|
|
1483
|
+
.gallerist-shortcuts-body section {
|
|
1484
|
+
flex: 1 1 150px;
|
|
1485
|
+
min-width: 0;
|
|
1486
|
+
}
|
|
1487
|
+
.gallerist-shortcuts-body section:first-child {
|
|
1488
|
+
flex: 1.7 1 250px;
|
|
1489
|
+
}
|
|
1490
|
+
.gallerist-shortcuts h3 {
|
|
1491
|
+
margin: 0 0 6px;
|
|
1492
|
+
color: var(--gallerist-fg-muted);
|
|
1493
|
+
font-size: 12px;
|
|
1494
|
+
font-weight: 500;
|
|
1495
|
+
}
|
|
1496
|
+
.gallerist-shortcuts dl {
|
|
1497
|
+
margin: 0;
|
|
1498
|
+
}
|
|
1499
|
+
.gallerist-shortcuts-row {
|
|
1500
|
+
display: flex;
|
|
1501
|
+
align-items: center;
|
|
1502
|
+
justify-content: space-between;
|
|
1503
|
+
gap: 12px;
|
|
1504
|
+
min-height: 34px;
|
|
1505
|
+
}
|
|
1506
|
+
.gallerist-shortcuts dd {
|
|
1507
|
+
display: flex;
|
|
1508
|
+
flex: none;
|
|
1509
|
+
gap: 4px;
|
|
1510
|
+
margin: 0;
|
|
1511
|
+
color: var(--gallerist-fg-muted);
|
|
1512
|
+
}
|
|
1513
|
+
.gallerist-shortcuts-note {
|
|
1514
|
+
margin: 0;
|
|
1515
|
+
padding: 11px 20px;
|
|
1516
|
+
border-block-start: 1px solid var(--gallerist-hairline);
|
|
1517
|
+
color: var(--gallerist-fg-muted);
|
|
1518
|
+
font-size: 12.5px;
|
|
1519
|
+
}
|
|
1520
|
+
/* the gestures: one list, a hairline between rows */
|
|
1521
|
+
.gallerist-shortcuts[data-gallerist-list="gestures"] .gallerist-shortcuts-body {
|
|
1522
|
+
padding-block: 4px;
|
|
1523
|
+
}
|
|
1524
|
+
.gallerist-shortcuts[data-gallerist-list="gestures"] .gallerist-shortcuts-row {
|
|
1525
|
+
min-height: 42px;
|
|
1526
|
+
}
|
|
1527
|
+
.gallerist-shortcuts[data-gallerist-list="gestures"]
|
|
1528
|
+
.gallerist-shortcuts-row
|
|
1529
|
+
+ .gallerist-shortcuts-row {
|
|
1530
|
+
border-block-start: 1px solid var(--gallerist-hairline);
|
|
1531
|
+
}
|
|
1532
|
+
@media (max-width: 600px) {
|
|
1533
|
+
.gallerist-shortcuts-scrim {
|
|
1534
|
+
place-items: end stretch;
|
|
1535
|
+
padding: 16px 0 0;
|
|
1536
|
+
}
|
|
1537
|
+
.gallerist-shortcuts {
|
|
1538
|
+
width: 100%;
|
|
1539
|
+
border-width: 1px 0 0;
|
|
1540
|
+
border-radius: 14px 14px 0 0;
|
|
1541
|
+
}
|
|
1542
|
+
.gallerist-shortcuts-body {
|
|
1543
|
+
flex-direction: column;
|
|
1544
|
+
gap: 14px;
|
|
1545
|
+
padding-inline: 16px;
|
|
1546
|
+
}
|
|
1547
|
+
.gallerist-shortcuts-body section,
|
|
1548
|
+
.gallerist-shortcuts-body section:first-child {
|
|
1549
|
+
flex: none;
|
|
1550
|
+
}
|
|
1551
|
+
.gallerist-shortcuts-head {
|
|
1552
|
+
padding-inline-start: 16px;
|
|
1553
|
+
}
|
|
1554
|
+
.gallerist-shortcuts-note {
|
|
1555
|
+
padding: 12px 16px 20px;
|
|
1556
|
+
}
|
|
1557
|
+
}
|
|
1558
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1559
|
+
.gallerist-shortcuts-scrim {
|
|
1560
|
+
animation: none;
|
|
944
1561
|
}
|
|
945
1562
|
}
|
|
946
1563
|
|
|
@@ -1418,9 +2035,17 @@
|
|
|
1418
2035
|
display: flex;
|
|
1419
2036
|
flex-direction: column;
|
|
1420
2037
|
}
|
|
1421
|
-
.gallerist[data-gallerist-rail="collapsed"] .gallerist-thumbs-region {
|
|
2038
|
+
.gallerist[data-gallerist-rail="collapsed"] .gallerist-thumbs-region:not([data-gallerist-glide]) {
|
|
1422
2039
|
display: none;
|
|
1423
2040
|
}
|
|
2041
|
+
/* gliding open or shut (plugin-thumbnails animates its size, clipped): the strip keeps to the edge
|
|
2042
|
+
by its handle, so it slides out past the viewer's edge rather than squeezing */
|
|
2043
|
+
.gallerist-thumbs-region[data-gallerist-glide] {
|
|
2044
|
+
align-items: flex-start;
|
|
2045
|
+
}
|
|
2046
|
+
.gallerist-thumbs-aside[data-gallerist-glide] {
|
|
2047
|
+
justify-content: flex-start;
|
|
2048
|
+
}
|
|
1424
2049
|
/* the pull-handle: a grip tab on the rail's edge — clearly part of the gallery */
|
|
1425
2050
|
.gallerist-rail-handle {
|
|
1426
2051
|
flex: 0 0 auto;
|
|
@@ -1462,7 +2087,7 @@
|
|
|
1462
2087
|
.gallerist-rail-toggle .gallerist-icon {
|
|
1463
2088
|
width: 16px;
|
|
1464
2089
|
height: 16px;
|
|
1465
|
-
transition: transform var(--gallerist-dur-
|
|
2090
|
+
transition: transform var(--gallerist-dur-panel, 220ms) var(--gallerist-ease-out, ease);
|
|
1466
2091
|
}
|
|
1467
2092
|
/* expanded = chevron points down (pull down to hide); collapsed = points up (pull up to show) */
|
|
1468
2093
|
.gallerist-rail-toggle[aria-pressed="true"] .gallerist-icon {
|
|
@@ -1653,9 +2278,19 @@
|
|
|
1653
2278
|
min-height: 0;
|
|
1654
2279
|
}
|
|
1655
2280
|
.gallerist[data-gallerist-orientation="vertical"][data-gallerist-rail="collapsed"]
|
|
1656
|
-
.gallerist-thumbs-region {
|
|
2281
|
+
.gallerist-thumbs-region:not([data-gallerist-glide]) {
|
|
1657
2282
|
display: none;
|
|
1658
2283
|
}
|
|
2284
|
+
/* a side rail slides out sideways: its strip keeps to the handle's side (the stage's) */
|
|
2285
|
+
.gallerist[data-gallerist-rail-pos="left"] .gallerist-thumbs-region[data-gallerist-glide],
|
|
2286
|
+
.gallerist[data-gallerist-dir="rtl"][data-gallerist-rail-pos="right"]
|
|
2287
|
+
.gallerist-thumbs-region[data-gallerist-glide] {
|
|
2288
|
+
align-items: flex-end;
|
|
2289
|
+
}
|
|
2290
|
+
.gallerist[data-gallerist-dir="rtl"][data-gallerist-rail-pos="left"]
|
|
2291
|
+
.gallerist-thumbs-region[data-gallerist-glide] {
|
|
2292
|
+
align-items: flex-start;
|
|
2293
|
+
}
|
|
1659
2294
|
.gallerist[data-gallerist-orientation="vertical"] .gallerist-thumbs {
|
|
1660
2295
|
flex: 1 1 auto;
|
|
1661
2296
|
min-height: 0;
|
|
@@ -1729,7 +2364,8 @@
|
|
|
1729
2364
|
.gallerist[data-gallerist-preset="immersive"] .gallerist-caption {
|
|
1730
2365
|
pointer-events: none;
|
|
1731
2366
|
}
|
|
1732
|
-
|
|
2367
|
+
/* (the tools' strip, a region, passes them through itself: it spans the bar's free space) */
|
|
2368
|
+
.gallerist[data-gallerist-preset="immersive"] .gallerist-bar > :not(.gallerist-region-toolbar) {
|
|
1733
2369
|
pointer-events: auto;
|
|
1734
2370
|
}
|
|
1735
2371
|
.gallerist[data-gallerist-preset="immersive"] .gallerist-caption {
|
|
@@ -2063,6 +2699,7 @@
|
|
|
2063
2699
|
.gallerist-region-thumbnails:has(.gallerist-thumbs[data-display="index"])
|
|
2064
2700
|
.gallerist-thumbs-region {
|
|
2065
2701
|
align-items: stretch;
|
|
2702
|
+
border-inline: 0 none;
|
|
2066
2703
|
}
|
|
2067
2704
|
.gallerist[data-gallerist-orientation="vertical"]
|
|
2068
2705
|
.gallerist-region-thumbnails:has(.gallerist-thumbs[data-display="index"])
|
|
@@ -2076,7 +2713,6 @@
|
|
|
2076
2713
|
padding: 8px 12px;
|
|
2077
2714
|
overflow-x: auto;
|
|
2078
2715
|
overflow-y: hidden;
|
|
2079
|
-
border-inline: 0 none;
|
|
2080
2716
|
}
|
|
2081
2717
|
.gallerist[data-gallerist-orientation="vertical"]
|
|
2082
2718
|
.gallerist-thumbs[data-display="index"]
|
package/src/console.css
CHANGED
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
--gallerist-fg-muted: #a3a9b1;
|
|
24
24
|
--gallerist-chrome-bg: #16181b; /* surface 1: bands, panels, arrows */
|
|
25
25
|
--gallerist-hairline: #2a2e34;
|
|
26
|
+
--gallerist-divider: #464c54; /* 2.05:1 on the rail (the hairline is 1.30:1) */
|
|
26
27
|
--gallerist-radius: 6px;
|
|
27
28
|
--gallerist-toolbar-h: 56px;
|
|
28
29
|
--gallerist-thumb-h: 76px;
|
|
@@ -106,6 +107,12 @@
|
|
|
106
107
|
--gallerist-pressed-bg: #272b30;
|
|
107
108
|
--gallerist-pressed-fg: var(--gallerist-accent);
|
|
108
109
|
--gallerist-pressed-shadow: inset 0 -2px 0 var(--gallerist-accent);
|
|
110
|
+
/* popovers: one step above the bar; segments recessed, the checked one raised */
|
|
111
|
+
--gallerist-popover-bg: #1b1d21;
|
|
112
|
+
--gallerist-popover-shadow: 0 14px 36px rgb(0 0 0 / 0.55), 0 2px 6px rgb(0 0 0 / 0.35);
|
|
113
|
+
--gallerist-seg-track: #111215;
|
|
114
|
+
--gallerist-seg-on: #2b2f35;
|
|
115
|
+
--gallerist-seg-on-shadow: inset 0 1px 0 rgb(255 255 255 / 0.05), 0 1px 2px rgb(0 0 0 / 0.5);
|
|
109
116
|
}
|
|
110
117
|
|
|
111
118
|
/* accents */
|
|
@@ -131,6 +138,7 @@
|
|
|
131
138
|
--gallerist-fg-muted: #4a5058;
|
|
132
139
|
--gallerist-chrome-bg: #fff;
|
|
133
140
|
--gallerist-hairline: #d3d6db;
|
|
141
|
+
--gallerist-divider: var(--gallerist-hairline);
|
|
134
142
|
--gallerist-surface: #f4f5f6;
|
|
135
143
|
--gallerist-cell-bg: #f4f5f6;
|
|
136
144
|
--gallerist-panel: rgb(255 255 255 / 0.97);
|
|
@@ -149,6 +157,11 @@
|
|
|
149
157
|
--gallerist-pressed-bg: #e3e5e8;
|
|
150
158
|
--gallerist-accent: var(--gallerist-accent-light);
|
|
151
159
|
--gallerist-accent-fg: var(--gallerist-accent-light-fg);
|
|
160
|
+
--gallerist-popover-bg: #fff;
|
|
161
|
+
--gallerist-popover-shadow: 0 14px 36px rgb(22 24 27 / 0.14), 0 2px 6px rgb(22 24 27 / 0.08);
|
|
162
|
+
--gallerist-seg-track: #eceef1;
|
|
163
|
+
--gallerist-seg-on: #fff;
|
|
164
|
+
--gallerist-seg-on-shadow: 0 1px 2px rgb(22 24 27 / 0.16), 0 0 0 1px rgb(22 24 27 / 0.06);
|
|
152
165
|
}
|
|
153
166
|
|
|
154
167
|
@media (prefers-color-scheme: light) {
|
|
@@ -160,6 +173,7 @@
|
|
|
160
173
|
--gallerist-fg-muted: #4a5058;
|
|
161
174
|
--gallerist-chrome-bg: #fff;
|
|
162
175
|
--gallerist-hairline: #d3d6db;
|
|
176
|
+
--gallerist-divider: var(--gallerist-hairline);
|
|
163
177
|
--gallerist-surface: #f4f5f6;
|
|
164
178
|
--gallerist-cell-bg: #f4f5f6;
|
|
165
179
|
--gallerist-panel: rgb(255 255 255 / 0.97);
|
|
@@ -178,6 +192,11 @@
|
|
|
178
192
|
--gallerist-pressed-bg: #e3e5e8;
|
|
179
193
|
--gallerist-accent: var(--gallerist-accent-light);
|
|
180
194
|
--gallerist-accent-fg: var(--gallerist-accent-light-fg);
|
|
195
|
+
--gallerist-popover-bg: #fff;
|
|
196
|
+
--gallerist-popover-shadow: 0 14px 36px rgb(22 24 27 / 0.14), 0 2px 6px rgb(22 24 27 / 0.08);
|
|
197
|
+
--gallerist-seg-track: #eceef1;
|
|
198
|
+
--gallerist-seg-on: #fff;
|
|
199
|
+
--gallerist-seg-on-shadow: 0 1px 2px rgb(22 24 27 / 0.16), 0 0 0 1px rgb(22 24 27 / 0.06);
|
|
181
200
|
}
|
|
182
201
|
}
|
|
183
202
|
}
|
package/src/editorial.css
CHANGED
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
--gallerist-fg-muted: #58544b;
|
|
24
24
|
--gallerist-chrome-bg: #f3f0e9;
|
|
25
25
|
--gallerist-hairline: #dad4c7;
|
|
26
|
+
--gallerist-divider: var(--gallerist-hairline); /* not Gallery's dark one */
|
|
26
27
|
--gallerist-surface: #fbfaf6;
|
|
27
28
|
--gallerist-cell-bg: #fbfaf6;
|
|
28
29
|
--gallerist-panel: rgb(243 240 233 / 0.98);
|
|
@@ -139,6 +140,7 @@
|
|
|
139
140
|
--gallerist-fg-muted: #aba597;
|
|
140
141
|
--gallerist-chrome-bg: #191816;
|
|
141
142
|
--gallerist-hairline: #36332e;
|
|
143
|
+
--gallerist-divider: #4d4840; /* 1.96:1 on the wall (the hairline is 1.41:1) */
|
|
142
144
|
--gallerist-surface: #262421;
|
|
143
145
|
--gallerist-cell-bg: #262421;
|
|
144
146
|
--gallerist-panel: rgb(25 24 22 / 0.98);
|
|
@@ -168,6 +170,7 @@
|
|
|
168
170
|
--gallerist-fg-muted: #aba597;
|
|
169
171
|
--gallerist-chrome-bg: #191816;
|
|
170
172
|
--gallerist-hairline: #36332e;
|
|
173
|
+
--gallerist-divider: #4d4840;
|
|
171
174
|
--gallerist-surface: #262421;
|
|
172
175
|
--gallerist-cell-bg: #262421;
|
|
173
176
|
--gallerist-panel: rgb(25 24 22 / 0.98);
|
package/src/gallery.css
CHANGED
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
--gallerist-fg-muted: #b9b9b4;
|
|
23
23
|
--gallerist-chrome-bg: rgb(24 24 26 / 0.6);
|
|
24
24
|
--gallerist-hairline: rgb(255 255 255 / 0.12);
|
|
25
|
+
--gallerist-divider: rgb(255 255 255 / 0.22); /* 1.93:1 on the ground (the hairline is 1.34:1) */
|
|
25
26
|
--gallerist-radius: 12px;
|
|
26
27
|
--gallerist-font: "Instrument Sans", system-ui, -apple-system, sans-serif;
|
|
27
28
|
--gallerist-mono: var(--gallerist-font); /* no monospace face: numerals are tabular sans */
|
|
@@ -121,6 +122,7 @@
|
|
|
121
122
|
--gallerist-fg-muted: #55554f;
|
|
122
123
|
--gallerist-chrome-bg: rgb(255 255 255 / 0.85);
|
|
123
124
|
--gallerist-hairline: rgb(21 21 21 / 0.12);
|
|
125
|
+
--gallerist-divider: var(--gallerist-hairline);
|
|
124
126
|
--gallerist-surface: #fff;
|
|
125
127
|
--gallerist-cell-bg: #eceae4;
|
|
126
128
|
--gallerist-panel: rgb(244 243 239 / 0.97);
|
|
@@ -148,6 +150,7 @@
|
|
|
148
150
|
--gallerist-fg-muted: #55554f;
|
|
149
151
|
--gallerist-chrome-bg: rgb(255 255 255 / 0.85);
|
|
150
152
|
--gallerist-hairline: rgb(21 21 21 / 0.12);
|
|
153
|
+
--gallerist-divider: var(--gallerist-hairline);
|
|
151
154
|
--gallerist-surface: #fff;
|
|
152
155
|
--gallerist-cell-bg: #eceae4;
|
|
153
156
|
--gallerist-panel: rgb(244 243 239 / 0.97);
|