lildocs 0.1.14 → 0.1.16

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.
@@ -26,17 +26,19 @@ body {
26
26
  }
27
27
 
28
28
  :where(h1, h2, h3, h4, h5, h6) {
29
+ letter-spacing: -0.018em;
29
30
  text-wrap: balance;
30
31
  }
31
32
 
32
33
  :target {
33
- scroll-margin-block: 2rem;
34
+ scroll-margin-top: 70px;
34
35
  }
35
36
 
36
37
  .pageShell {
37
- width: 92vw;
38
- max-width: 1280px;
39
- margin-inline: auto;
38
+ --ld-sidebar-width: clamp(240px, 25vw, 320px);
39
+ display: grid;
40
+ min-height: 100vh;
41
+ grid-template-columns: var(--ld-sidebar-width) minmax(0, 1fr);
40
42
  color: var(--ld-color-text);
41
43
  font-family: var(--ld-font-body);
42
44
  }
@@ -50,13 +52,37 @@ body {
50
52
  background-repeat: no-repeat;
51
53
  }
52
54
 
53
- .siteHeader {
54
- min-height: 64px;
55
+ .sidebar {
56
+ display: flex;
57
+ flex-direction: column;
58
+ position: sticky;
59
+ top: 0;
60
+ z-index: 20;
61
+ min-width: 0;
62
+ height: 100vh;
63
+ max-height: 100vh;
64
+ overflow: auto;
65
+ overscroll-behavior: contain;
66
+ padding: 20px;
67
+ border-right: 1px solid var(--ld-color-border);
68
+ background: var(--ld-color-sidebar-background);
69
+ transition:
70
+ padding var(--ld-navigation-duration) var(--ld-navigation-easing),
71
+ border-color var(--ld-navigation-duration) var(--ld-navigation-easing);
72
+ }
73
+
74
+ .sidebarContents {
75
+ align-self: stretch;
76
+ display: grid;
77
+ gap: 24px;
78
+ transition: opacity var(--ld-navigation-duration) var(--ld-navigation-easing);
79
+ }
80
+
81
+ .sidebarHeader {
55
82
  display: flex;
56
83
  align-items: center;
57
84
  justify-content: space-between;
58
- gap: 24px;
59
- border-bottom: 1px solid var(--ld-color-border);
85
+ gap: 12px;
60
86
  }
61
87
 
62
88
  .brand {
@@ -77,13 +103,51 @@ body {
77
103
  object-fit: contain;
78
104
  }
79
105
 
106
+ .sidebarToggle {
107
+ display: inline-flex;
108
+ align-items: center;
109
+ justify-content: center;
110
+ width: 36px;
111
+ height: 36px;
112
+ flex: 0 0 auto;
113
+ padding: 0;
114
+ border: 1px solid var(--ld-color-border);
115
+ border-radius: 10px;
116
+ background: var(--ld-color-background);
117
+ color: var(--ld-color-muted-text);
118
+ cursor: pointer;
119
+ }
120
+
121
+ .sidebarToggle:hover,
122
+ .sidebarToggle:focus-visible {
123
+ border-color: var(--ld-color-link);
124
+ color: var(--ld-color-link);
125
+ }
126
+
127
+ .sidebarToggle:focus-visible {
128
+ outline: 2px solid color-mix(in srgb, var(--ld-color-link) 45%, transparent);
129
+ outline-offset: 2px;
130
+ }
131
+
132
+ .sidebarFloatingControls {
133
+ position: fixed;
134
+ top: 24px;
135
+ left: 24px;
136
+ z-index: 20;
137
+ display: none;
138
+ gap: 8px;
139
+ }
140
+
80
141
  .contentGrid {
81
142
  display: grid;
82
- grid-template-columns: minmax(180px, 18vw) minmax(0, 1fr) minmax(160px, 16vw);
83
- gap: 32px;
143
+ grid-template-columns: minmax(0, 1fr) minmax(160px, 16vw);
144
+ gap: clamp(28px, 5vw, 72px);
145
+ width: min(100% - 48px, 1280px);
146
+ margin-inline: auto;
84
147
  }
85
148
 
86
- html.is-changing :where(.transition-fade, .transition-slide, .transition-scale) {
149
+ html.is-changing
150
+ :where(.transition-fade, .transition-slide, .transition-scale) {
87
151
  transition:
88
152
  opacity var(--ld-navigation-duration) var(--ld-navigation-easing),
89
153
  transform var(--ld-navigation-duration) var(--ld-navigation-easing);
@@ -106,7 +170,8 @@ html.is-animating .transition-scale {
106
170
  }
107
171
 
108
172
  @media (prefers-reduced-motion: reduce) {
109
- html.is-changing :where(.transition-fade, .transition-slide, .transition-scale) {
173
+ html.is-changing
174
+ :where(.transition-fade, .transition-slide, .transition-scale) {
110
175
  transition: none;
111
176
  }
112
177
 
@@ -115,24 +180,18 @@ html.is-animating .transition-scale {
115
180
  }
116
181
  }
117
182
 
118
- .sidebar,
119
183
  .toc {
120
184
  position: sticky;
121
185
  top: 0;
122
186
  align-self: start;
123
187
  max-height: 100vh;
124
188
  overflow: auto;
125
- padding-block: 28px 24px;
126
- }
127
-
128
- .sidebar {
129
- overscroll-behavior: contain;
130
- padding-bottom: calc(24px + 40vh);
189
+ padding-block: 70px 24px;
131
190
  }
132
191
 
133
192
  .content {
134
193
  min-width: 0;
135
- padding-block: 28px 64px;
194
+ padding-block: 70px 64px;
136
195
  line-height: 1.65;
137
196
  }
138
197
 
@@ -146,9 +205,43 @@ html.is-animating .transition-scale {
146
205
  }
147
206
 
148
207
  .content article :where(h1, h2, h3, h4, h5, h6) {
208
+ position: relative;
149
209
  margin-block: 2em 0.667em;
150
210
  }
151
211
 
212
+ .content article :where(h1, h2, h3, h4, h5, h6)[id] {
213
+ cursor: copy;
214
+ }
215
+
216
+ .content article :where(h1, h2, h3, h4, h5, h6).headingLinkCopied::after {
217
+ margin-left: 0.6em;
218
+ color: var(--ld-color-accent);
219
+ content: "Link copied";
220
+ font-family: var(--ld-font-body);
221
+ font-size: 0.7rem;
222
+ font-weight: 600;
223
+ vertical-align: middle;
224
+ }
225
+
226
+ .content article :where(h2, h3).sectionHighlight {
227
+ animation: section-highlight 2.4s ease-out;
228
+ border-radius: 6px;
229
+ }
230
+
231
+ @keyframes section-highlight {
232
+ 0%,
233
+ 35% {
234
+ background: color-mix(in srgb, var(--ld-color-accent) 22%, transparent);
235
+ box-shadow: 0 0 0 6px
236
+ color-mix(in srgb, var(--ld-color-accent) 22%, transparent);
237
+ }
238
+
239
+ 100% {
240
+ background: transparent;
241
+ box-shadow: 0 0 0 6px transparent;
242
+ }
243
+ }
244
+
152
245
  .content article h1 {
153
246
  font-size: 2.2rem;
154
247
  }
@@ -187,7 +280,11 @@ html.is-animating .transition-scale {
187
280
  padding: 10px 16px;
188
281
  border-left: 4px solid var(--ld-color-border);
189
282
  border-radius: 0 6px 6px 0;
190
- background: color-mix(in srgb, var(--ld-color-code-background) 72%, transparent);
283
+ background: color-mix(
284
+ in srgb,
285
+ var(--ld-color-code-background) 72%,
286
+ transparent
287
+ );
191
288
  color: var(--ld-color-muted-text);
192
289
  }
193
290
 
@@ -198,7 +295,11 @@ html.is-animating .transition-scale {
198
295
  border-left: 0;
199
296
  border-radius: 0;
200
297
  background: transparent;
201
- color: color-mix(in srgb, var(--ld-color-muted-text) 88%, var(--ld-color-text));
298
+ color: color-mix(
299
+ in srgb,
300
+ var(--ld-color-muted-text) 88%,
301
+ var(--ld-color-text)
302
+ );
202
303
  font-size: 1.15em;
203
304
  line-height: 1.45;
204
305
  }
@@ -261,7 +362,8 @@ html.is-animating .transition-scale {
261
362
  .navList a,
262
363
  .navDisclosure summary {
263
364
  padding-left: 7px;
264
- border-left: 1px solid color-mix(in srgb, var(--ld-color-border) 65%, transparent);
365
+ border-left: 1px solid
366
+ color-mix(in srgb, var(--ld-color-border) 65%, transparent);
265
367
  color: var(--ld-color-muted-text);
266
368
  text-decoration: none;
267
369
  }
@@ -293,7 +395,11 @@ html.is-animating .transition-scale {
293
395
  }
294
396
 
295
397
  .navFolder {
296
- color: color-mix(in srgb, var(--ld-color-muted-text) 72%, var(--ld-color-sidebar-background));
398
+ color: color-mix(
399
+ in srgb,
400
+ var(--ld-color-muted-text) 72%,
401
+ var(--ld-color-sidebar-background)
402
+ );
297
403
  font-size: 0.78rem;
298
404
  font-weight: 600;
299
405
  }
@@ -377,7 +483,7 @@ html.is-animating .transition-scale {
377
483
  height: 28px;
378
484
  padding: 0;
379
485
  border: 1px solid var(--ld-color-border);
380
- border-radius: 6px;
486
+ border-radius: 10px;
381
487
  background: color-mix(in srgb, var(--ld-color-background) 88%, transparent);
382
488
  color: var(--ld-color-muted-text);
383
489
  line-height: 1;
@@ -418,6 +524,107 @@ html.is-animating .transition-scale {
418
524
  border-collapse: collapse;
419
525
  }
420
526
 
527
+ .tableFrame {
528
+ margin-block: 1em;
529
+ }
530
+
531
+ .tableToolbar {
532
+ display: flex;
533
+ justify-content: flex-end;
534
+ margin-top: 8px;
535
+ }
536
+
537
+ .tableViewport {
538
+ max-width: 100%;
539
+ overflow-x: auto;
540
+ }
541
+
542
+ .content .tableViewport table {
543
+ display: table;
544
+ margin: 0;
545
+ }
546
+
547
+ .tableExpandButton,
548
+ .tableFullscreenClose {
549
+ display: inline-flex;
550
+ align-items: center;
551
+ justify-content: center;
552
+ width: 34px;
553
+ height: 34px;
554
+ padding: 0;
555
+ border: 1px solid var(--ld-color-border);
556
+ border-radius: 10px;
557
+ background: var(--ld-color-background);
558
+ color: var(--ld-color-muted-text);
559
+ font-size: 0.78rem;
560
+ font-weight: 600;
561
+ cursor: pointer;
562
+ }
563
+
564
+ .tableExpandButton .ti,
565
+ .tableFullscreenClose .ti {
566
+ font-size: 18px;
567
+ }
568
+
569
+ .tableExpandButton:hover,
570
+ .tableExpandButton:focus-visible,
571
+ .tableFullscreenClose:hover,
572
+ .tableFullscreenClose:focus-visible {
573
+ border-color: var(--ld-color-link);
574
+ color: var(--ld-color-link);
575
+ }
576
+
577
+ .tableFullscreenDialog {
578
+ width: 100vw;
579
+ max-width: none;
580
+ height: 100vh;
581
+ max-height: none;
582
+ margin: 0;
583
+ padding: 0;
584
+ border: 0;
585
+ background: var(--ld-color-background);
586
+ color: var(--ld-color-text);
587
+ font-family: var(--ld-font-body);
588
+ }
589
+
590
+ .tableFullscreenDialog::backdrop {
591
+ background: color-mix(in srgb, black 35%, transparent);
592
+ }
593
+
594
+ .tableFullscreenContent {
595
+ display: grid;
596
+ height: 100%;
597
+ grid-template-rows: auto minmax(0, 1fr);
598
+ }
599
+
600
+ .tableFullscreenHeader {
601
+ display: flex;
602
+ align-items: center;
603
+ justify-content: space-between;
604
+ gap: 16px;
605
+ padding: 16px 20px;
606
+ border-bottom: 1px solid var(--ld-color-border);
607
+ font-family: var(--ld-font-heading);
608
+ }
609
+
610
+ .tableFullscreenViewport {
611
+ overflow: auto;
612
+ padding: 20px;
613
+ font-size: 105%;
614
+ }
615
+
616
+ .tableFullscreenViewport table {
617
+ display: table;
618
+ width: max-content;
619
+ min-width: 100%;
620
+ overflow: visible;
621
+ border-collapse: collapse;
622
+ }
623
+
624
+ html.tableFullscreenOpen {
625
+ overflow: hidden;
626
+ }
627
+
421
628
  .markdown-alert {
422
629
  margin-block: 18px;
423
630
  padding: 8px 16px;
@@ -463,55 +670,21 @@ html.is-animating .transition-scale {
463
670
  }
464
671
 
465
672
  .content th,
466
- .content td {
673
+ .content td,
674
+ .tableFullscreenViewport th,
675
+ .tableFullscreenViewport td {
467
676
  padding: 8px;
468
677
  border: 1px solid var(--ld-color-border);
469
678
  }
470
679
 
471
680
  .pageNav {
472
- display: grid;
473
- grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
474
- gap: 16px;
475
681
  margin-top: 48px;
476
682
  padding-top: 24px;
477
683
  border-top: 1px solid var(--ld-color-border);
478
684
  }
479
685
 
480
- .pageNavLink {
481
- display: block;
482
- min-width: 0;
483
- padding: 12px 14px;
484
- border: 1px solid var(--ld-color-border);
485
- border-radius: 8px;
486
- color: var(--ld-color-link);
487
- line-height: 1.25;
488
- text-decoration: none;
489
- }
490
-
491
- .content .pageNavLink,
492
- .content .pageNavLink:hover {
493
- text-decoration: none;
494
- }
495
-
496
- .pageNavLink span {
497
- display: block;
498
- margin-bottom: 2px;
499
- color: var(--ld-color-muted-text);
500
- font-size: 0.84rem;
501
- }
502
-
503
- .pageNavNext {
504
- text-align: right;
505
- }
506
-
507
- .pageNavLink:hover {
508
- background: var(--ld-color-code-background);
509
- text-decoration: none;
510
- }
511
-
512
- .pageNavLink:focus-visible {
513
- outline: 2px solid var(--ld-color-link);
514
- outline-offset: 2px;
686
+ .pageNav p {
687
+ margin: 0;
515
688
  }
516
689
 
517
690
  .toc {
@@ -541,36 +714,6 @@ html.is-animating .transition-scale {
541
714
  padding-left: 12px;
542
715
  }
543
716
 
544
- .headerActions {
545
- display: flex;
546
- align-items: center;
547
- gap: 10px;
548
- }
549
-
550
- .repoButton {
551
- display: inline-flex;
552
- align-items: center;
553
- justify-content: center;
554
- width: 38px;
555
- height: 38px;
556
- flex: 0 0 auto;
557
- border: 1px solid var(--ld-color-border);
558
- border-radius: 6px;
559
- color: var(--ld-color-muted-text);
560
- text-decoration: none;
561
- }
562
-
563
- .repoButton:hover,
564
- .repoButton:focus-visible {
565
- border-color: var(--ld-color-link);
566
- color: var(--ld-color-link);
567
- }
568
-
569
- .repoButton:focus-visible {
570
- outline: 2px solid color-mix(in srgb, var(--ld-color-link) 45%, transparent);
571
- outline-offset: 2px;
572
- }
573
-
574
717
  .repoIcon {
575
718
  display: block;
576
719
  width: 20px;
@@ -582,9 +725,7 @@ html.is-animating .transition-scale {
582
725
 
583
726
  .searchBox {
584
727
  position: relative;
585
- flex: 1 1 min(340px, 42vw);
586
728
  min-width: 0;
587
- width: min(340px, 42vw);
588
729
  }
589
730
 
590
731
  .searchIcon {
@@ -603,7 +744,7 @@ html.is-animating .transition-scale {
603
744
  width: 100%;
604
745
  padding: 9px 10px 9px 36px;
605
746
  border: 1px solid var(--ld-color-border);
606
- border-radius: 6px;
747
+ border-radius: 10px;
607
748
  background: var(--ld-color-background);
608
749
  color: var(--ld-color-text);
609
750
  }
@@ -614,53 +755,121 @@ html.is-animating .transition-scale {
614
755
 
615
756
  .searchBox input:focus {
616
757
  border-color: var(--ld-color-link);
617
- outline: 2px solid color-mix(in srgb, var(--ld-color-link) 45%, transparent);
618
- outline-offset: 2px;
758
+ outline: none;
619
759
  }
620
760
 
621
761
  .searchResults {
622
- z-index: 10;
623
- width: min(420px, 88vw);
624
- max-height: 56vh;
762
+ position: fixed;
763
+ top: 0;
764
+ right: 0;
765
+ bottom: 0;
766
+ left: var(--ld-sidebar-width);
767
+ z-index: 1;
768
+ width: auto;
769
+ max-height: none;
625
770
  overflow: auto;
626
- border: 1px solid var(--ld-color-border);
627
- border-radius: 8px;
628
771
  background: var(--ld-color-background);
629
- box-shadow: 0 12px 30px rgb(0 0 0 / 12%);
630
772
  color: var(--ld-color-text);
631
773
  font-family: var(--ld-font-body);
632
774
  line-height: 1.4;
633
775
  }
634
776
 
635
- .searchResults a,
636
- .searchResults p {
637
- display: block;
777
+ .searchResultsContent {
778
+ width: min(100%, 900px);
779
+ min-height: 100%;
780
+ margin-inline: auto;
781
+ padding-top: 70px;
782
+ }
783
+
784
+ .searchResultsHeader {
785
+ margin-bottom: 16px;
786
+ padding-bottom: 28px;
787
+ border-bottom: 1px solid var(--ld-color-border);
788
+ }
789
+
790
+ .searchResultsEyebrow {
791
+ margin: 0 0 8px;
792
+ color: var(--ld-color-accent);
793
+ font-size: 0.75rem;
794
+ font-weight: 700;
795
+ letter-spacing: 0.08em;
796
+ text-transform: uppercase;
797
+ }
798
+
799
+ .searchResultsHeader h2 {
638
800
  margin: 0;
639
- padding: 10px 12px;
801
+ color: var(--ld-color-text);
802
+ font-family: var(--ld-font-heading);
803
+ font-size: clamp(1.75rem, 3vw, 2.5rem);
804
+ line-height: 1.15;
805
+ }
806
+
807
+ .searchResultsHeader h2 span {
808
+ color: var(--ld-color-accent);
809
+ }
810
+
811
+ .searchResultsSummary {
812
+ margin: 12px 0 0;
813
+ color: var(--ld-color-muted-text);
814
+ font-size: 0.9rem;
640
815
  }
641
816
 
642
- .searchResults a {
817
+ .searchResultList {
818
+ display: grid;
819
+ }
820
+
821
+ .searchResult {
822
+ display: grid;
823
+ gap: 6px;
824
+ margin: 0;
825
+ padding: 22px 14px;
826
+ border-bottom: 1px solid var(--ld-color-border);
643
827
  color: var(--ld-color-text);
644
828
  text-decoration: none;
645
829
  }
646
830
 
647
- .searchResults a.selected,
648
- .searchResults a:hover {
649
- background: var(--ld-color-code-background);
831
+ .searchResultType {
832
+ color: var(--ld-color-accent);
833
+ font-size: 0.72rem;
834
+ font-weight: 650;
835
+ letter-spacing: 0.06em;
836
+ text-transform: uppercase;
650
837
  }
651
838
 
652
- .searchResults span {
653
- display: block;
839
+ .searchResultTitle {
840
+ font-family: var(--ld-font-heading);
841
+ font-size: clamp(1.2rem, 2vw, 1.5rem);
842
+ font-weight: 700;
843
+ line-height: 1.25;
844
+ }
845
+
846
+ .searchResultSnippet {
654
847
  color: var(--ld-color-muted-text);
655
- font-size: 0.84rem;
848
+ font-size: 0.9rem;
849
+ font-weight: 400;
850
+ }
851
+
852
+ .searchResult.selected,
853
+ .searchResult:hover {
854
+ background: color-mix(
855
+ in srgb,
856
+ var(--ld-color-code-background) 78%,
857
+ transparent
858
+ );
859
+ }
860
+
861
+ .searchEmpty {
862
+ padding: 22px 14px;
656
863
  }
657
864
 
658
865
  .searchEmpty p {
866
+ margin: 0;
659
867
  color: var(--ld-color-muted-text);
660
868
  }
661
869
 
662
870
  .searchResults .searchEmpty a {
663
- padding-top: 0;
871
+ display: inline-block;
872
+ margin-top: 12px;
664
873
  color: var(--ld-color-link);
665
874
  }
666
875
 
@@ -676,45 +885,89 @@ html.is-animating .transition-scale {
676
885
  color: inherit;
677
886
  }
678
887
 
679
- @media (max-width: 860px) {
680
- .pageShell {
681
- width: 94vw;
682
- }
888
+ .tocRepoLink {
889
+ display: flex;
890
+ align-items: center;
891
+ gap: 7px;
892
+ margin-top: 20px;
893
+ padding-top: 12px;
894
+ border-top: 1px solid var(--ld-color-border);
895
+ color: var(--ld-color-text);
896
+ font-size: 0.8rem;
897
+ font-weight: 600;
898
+ text-decoration: none;
899
+ }
683
900
 
684
- .siteHeader {
685
- align-items: stretch;
686
- flex-direction: column;
687
- padding-block: 14px;
901
+ .tocRepoLink:hover,
902
+ .tocRepoLink:focus-visible {
903
+ color: var(--ld-color-link);
904
+ }
905
+
906
+ .tocRepoLink .repoIcon {
907
+ width: 16px;
908
+ height: 16px;
909
+ }
910
+
911
+ @media (min-width: 861px) {
912
+ html.sidebar-collapsed .pageShell {
913
+ grid-template-columns: 0 minmax(0, 1fr);
688
914
  }
689
915
 
690
- .headerActions {
916
+ html.sidebar-collapsed .contentGrid {
917
+ grid-template-columns: minmax(0, 1fr) clamp(240px, 20vw, 400px);
918
+ gap: clamp(48px, 6vw, 120px);
691
919
  width: 100%;
920
+ margin: 0;
921
+ padding-right: clamp(32px, 3vw, 64px);
922
+ padding-left: clamp(180px, 14vw, 285px);
692
923
  }
693
924
 
694
- .searchBox {
695
- width: 100%;
925
+ html.sidebar-collapsed .sidebar {
926
+ padding-inline: 0;
927
+ border-color: transparent;
696
928
  }
697
929
 
698
- .contentGrid {
930
+ html.sidebar-collapsed .sidebarContents {
931
+ opacity: 0;
932
+ pointer-events: none;
933
+ }
934
+
935
+ html.sidebar-collapsed .sidebarFloatingControls {
936
+ display: flex;
937
+ }
938
+ }
939
+
940
+ @media (max-width: 860px) {
941
+ .pageShell {
699
942
  display: block;
700
943
  }
701
944
 
702
- .sidebar,
703
- .toc {
945
+ .sidebar {
704
946
  position: static;
947
+ height: auto;
705
948
  max-height: none;
706
949
  border-bottom: 1px solid var(--ld-color-border);
950
+ border-right: 0;
707
951
  }
708
952
 
709
- .sidebar {
710
- padding-bottom: 24px;
953
+ .searchResults {
954
+ position: absolute;
955
+ top: calc(100% + 8px);
956
+ right: 20px;
957
+ bottom: auto;
958
+ left: 20px;
959
+ width: auto;
960
+ max-height: 56vh;
711
961
  }
712
962
 
713
- .pageNav {
714
- grid-template-columns: 1fr;
963
+ .contentGrid {
964
+ display: block;
965
+ width: 94vw;
715
966
  }
716
967
 
717
- .pageNavNext {
718
- text-align: left;
968
+ .toc {
969
+ position: static;
970
+ max-height: none;
971
+ border-bottom: 1px solid var(--ld-color-border);
719
972
  }
720
973
  }