@brett_lamy/docstream 1.18.1 → 1.19.1

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.
Files changed (41) hide show
  1. package/README.md +65 -19
  2. package/dist/docs/DocsRenderer.d.ts.map +1 -1
  3. package/dist/docs/DocsRenderer.js +14 -3
  4. package/dist/docs/DocsRenderer.js.map +1 -1
  5. package/dist/gitbook/parse.js +10 -2
  6. package/dist/gitbook/parse.js.map +1 -1
  7. package/dist/openapi/OpenApiOperation.d.ts.map +1 -1
  8. package/dist/openapi/OpenApiOperation.js +13 -5
  9. package/dist/openapi/OpenApiOperation.js.map +1 -1
  10. package/dist/replay/ReplayStageImpl.d.ts.map +1 -1
  11. package/dist/replay/ReplayStageImpl.js +4 -1
  12. package/dist/replay/ReplayStageImpl.js.map +1 -1
  13. package/dist/site/DocsSite.d.ts +74 -0
  14. package/dist/site/DocsSite.d.ts.map +1 -0
  15. package/dist/site/DocsSite.js +479 -0
  16. package/dist/site/DocsSite.js.map +1 -0
  17. package/dist/site/index.d.ts +7 -0
  18. package/dist/site/index.d.ts.map +1 -0
  19. package/dist/site/index.js +5 -0
  20. package/dist/site/index.js.map +1 -0
  21. package/dist/site/search.d.ts +28 -0
  22. package/dist/site/search.d.ts.map +1 -0
  23. package/dist/site/search.js +125 -0
  24. package/dist/site/search.js.map +1 -0
  25. package/dist/site/site.css +816 -0
  26. package/dist/site/tree.d.ts +105 -0
  27. package/dist/site/tree.d.ts.map +1 -0
  28. package/dist/site/tree.js +411 -0
  29. package/dist/site/tree.js.map +1 -0
  30. package/dist/styles.css +1 -0
  31. package/package.json +8 -1
  32. package/src/docs/DocsRenderer.tsx +14 -3
  33. package/src/gitbook/parse.ts +10 -2
  34. package/src/openapi/OpenApiOperation.tsx +13 -5
  35. package/src/replay/ReplayStageImpl.tsx +4 -1
  36. package/src/site/DocsSite.tsx +958 -0
  37. package/src/site/index.ts +18 -0
  38. package/src/site/search.ts +138 -0
  39. package/src/site/site.css +816 -0
  40. package/src/site/tree.ts +482 -0
  41. package/src/styles.css +1 -0
@@ -0,0 +1,816 @@
1
+ /* DocsSite chrome. Part selectors are scoped under `.ds-site` so they outrank docstream's
2
+ content rules (`[data-docstream] a`, …) when a site is embedded inside a docstream page.
3
+ The site reads shadcn-style tokens (--background, --foreground, --card,
4
+ --muted, --muted-foreground, --border, --accent, --primary); with `palette` on (the default)
5
+ it defines them itself, light and dark. Layout follows the site's own width (container
6
+ queries), so an embedded site collapses to its phone layout inside a narrow column. */
7
+ .ds-site[data-palette] {
8
+ color-scheme: light;
9
+ --background: #ffffff;
10
+ --foreground: #16161d;
11
+ --card: #ffffff;
12
+ --card-foreground: #16161d;
13
+ --muted: #f4f4f6;
14
+ --muted-foreground: #6b6b78;
15
+ --border: #e6e6ec;
16
+ --accent: #f1f1f5;
17
+ --accent-foreground: #16161d;
18
+ --primary: var(--ds-site-accent, #5b5bd6);
19
+ --primary-foreground: #ffffff;
20
+ --ds-site-sidebar-bg: #fafafc;
21
+ }
22
+
23
+ .ds-site[data-palette][data-theme="dark"] {
24
+ color-scheme: dark;
25
+ --background: #0e0e12;
26
+ --foreground: #ececf1;
27
+ --card: #16161b;
28
+ --card-foreground: #ececf1;
29
+ --muted: #1b1b22;
30
+ --muted-foreground: #9a9aa8;
31
+ --border: #2a2a34;
32
+ --accent: #22222b;
33
+ --accent-foreground: #ececf1;
34
+ --primary: var(--ds-site-accent, #8b8bf0);
35
+ --primary-foreground: #0e0e12;
36
+ --ds-site-sidebar-bg: #111116;
37
+ }
38
+
39
+ .ds-site[data-palette][data-theme="dark"] [data-docstream] {
40
+ --gb-pill: #2a2a33;
41
+ --gb-pill-shadow: 0 1px 2px rgba(0, 0, 0, 0.5), 0 0 0 0.5px rgba(255, 255, 255, 0.1);
42
+ --gb-menu-shadow: 0 14px 34px -10px rgba(0, 0, 0, 0.6), 0 2px 6px rgba(0, 0, 0, 0.3);
43
+ }
44
+
45
+ .ds-site {
46
+ --ds-site-header-h: 56px;
47
+ --ds-site-sidebar-w: 284px;
48
+ --ds-site-toc-w: 224px;
49
+ --ds-site-content-w: 768px;
50
+ --ds-site-fg: var(--foreground, #16161d);
51
+ --ds-site-bg: var(--background, #ffffff);
52
+ --ds-site-muted: var(--muted-foreground, #6b6b78);
53
+ --ds-site-border: var(--border, #e6e6ec);
54
+ --ds-site-hover: color-mix(in srgb, var(--ds-site-fg) 6%, transparent);
55
+ --ds-site-link: var(--primary, #5b5bd6);
56
+ --ds-site-active-bg: color-mix(in srgb, var(--ds-site-link) 11%, transparent);
57
+ position: relative;
58
+ container: ds-site / inline-size;
59
+ display: flex;
60
+ flex-direction: column;
61
+ box-sizing: border-box;
62
+ height: var(--ds-site-height, 100dvh);
63
+ overflow: hidden;
64
+ background: var(--ds-site-bg);
65
+ color: var(--ds-site-fg);
66
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Roboto, "Helvetica Neue", sans-serif;
67
+ font-size: 15px;
68
+ line-height: 1.5;
69
+ }
70
+
71
+ .ds-site *,
72
+ .ds-site *::before,
73
+ .ds-site *::after {
74
+ box-sizing: border-box;
75
+ }
76
+
77
+ .ds-site :focus-visible {
78
+ outline: 2px solid var(--ds-site-link);
79
+ outline-offset: 2px;
80
+ }
81
+
82
+ .ds-site kbd {
83
+ display: inline-grid;
84
+ place-items: center;
85
+ min-width: 22px;
86
+ height: 20px;
87
+ padding: 0 5px;
88
+ border: 1px solid var(--ds-site-border);
89
+ border-radius: 5px;
90
+ background: var(--ds-site-bg);
91
+ color: var(--ds-site-muted);
92
+ font: 600 11px/1 ui-monospace, SFMono-Regular, Menlo, monospace;
93
+ }
94
+
95
+ /* Header */
96
+ .ds-site .ds-site-header {
97
+ display: flex;
98
+ flex-shrink: 0;
99
+ align-items: center;
100
+ gap: 10px;
101
+ height: var(--ds-site-header-h);
102
+ padding: 0 16px 0 20px;
103
+ border-bottom: 1px solid var(--ds-site-border);
104
+ background: color-mix(in srgb, var(--ds-site-bg) 92%, transparent);
105
+ backdrop-filter: saturate(1.4) blur(10px);
106
+ }
107
+
108
+ .ds-site .ds-site-brand {
109
+ display: inline-flex;
110
+ align-items: center;
111
+ gap: 10px;
112
+ min-width: 0;
113
+ color: inherit;
114
+ font-size: 16px;
115
+ font-weight: 750;
116
+ letter-spacing: -0.2px;
117
+ text-decoration: none;
118
+ }
119
+
120
+ .ds-site .ds-site-logo {
121
+ display: inline-grid;
122
+ flex-shrink: 0;
123
+ place-items: center;
124
+ }
125
+
126
+ .ds-site .ds-site-title {
127
+ overflow: hidden;
128
+ text-overflow: ellipsis;
129
+ white-space: nowrap;
130
+ }
131
+
132
+ .ds-site .ds-site-header-spacer {
133
+ flex: 1;
134
+ }
135
+
136
+ .ds-site .ds-site-icon-btn {
137
+ display: inline-grid;
138
+ flex-shrink: 0;
139
+ place-items: center;
140
+ width: 32px;
141
+ height: 32px;
142
+ padding: 0;
143
+ border: 1px solid var(--ds-site-border);
144
+ border-radius: 8px;
145
+ background: transparent;
146
+ color: var(--ds-site-muted);
147
+ cursor: pointer;
148
+ }
149
+
150
+ .ds-site .ds-site-icon-btn:hover {
151
+ background: var(--ds-site-hover);
152
+ color: var(--ds-site-fg);
153
+ }
154
+
155
+ .ds-site .ds-site-menu {
156
+ display: none;
157
+ margin-left: -6px;
158
+ border-color: transparent;
159
+ }
160
+
161
+ .ds-site .ds-site-search-btn {
162
+ display: inline-flex;
163
+ align-items: center;
164
+ gap: 8px;
165
+ width: min(300px, 34cqi);
166
+ height: 34px;
167
+ padding: 0 6px 0 11px;
168
+ border: 1px solid var(--ds-site-border);
169
+ border-radius: 9px;
170
+ background: var(--muted, #f4f4f6);
171
+ color: var(--ds-site-muted);
172
+ font: inherit;
173
+ font-size: 13.5px;
174
+ cursor: pointer;
175
+ }
176
+
177
+ .ds-site .ds-site-search-btn:hover {
178
+ border-color: color-mix(in srgb, var(--ds-site-fg) 22%, transparent);
179
+ }
180
+
181
+ .ds-site .ds-site-search-btn-label {
182
+ flex: 1;
183
+ text-align: left;
184
+ }
185
+
186
+ .ds-site .ds-site-links {
187
+ display: flex;
188
+ align-items: center;
189
+ gap: 2px;
190
+ }
191
+
192
+ .ds-site .ds-site-header-link {
193
+ display: inline-flex;
194
+ align-items: center;
195
+ gap: 6px;
196
+ padding: 6px 10px;
197
+ border-radius: 8px;
198
+ color: var(--ds-site-muted);
199
+ font-size: 13.5px;
200
+ font-weight: 550;
201
+ text-decoration: none;
202
+ }
203
+
204
+ .ds-site .ds-site-header-link:hover {
205
+ background: var(--ds-site-hover);
206
+ color: var(--ds-site-fg);
207
+ }
208
+
209
+ /* Body: sidebar | scroller (article + outline) */
210
+ .ds-site .ds-site-body {
211
+ display: flex;
212
+ flex: 1;
213
+ min-height: 0;
214
+ }
215
+
216
+ .ds-site .ds-site-sidebar {
217
+ display: flex;
218
+ flex-direction: column;
219
+ flex-shrink: 0;
220
+ width: var(--ds-site-sidebar-w);
221
+ border-right: 1px solid var(--ds-site-border);
222
+ background: var(--ds-site-sidebar-bg, var(--ds-site-bg));
223
+ }
224
+
225
+ .ds-site .ds-site-sidebar-scroll {
226
+ flex: 1;
227
+ min-height: 0;
228
+ padding: 14px 12px 24px;
229
+ overflow-y: auto;
230
+ scrollbar-width: thin;
231
+ }
232
+
233
+ .ds-site .ds-site-sidebar-foot {
234
+ padding: 12px 20px;
235
+ border-top: 1px solid var(--ds-site-border);
236
+ color: var(--ds-site-muted);
237
+ font-size: 12px;
238
+ }
239
+
240
+ .ds-site .ds-site-sidebar-foot a {
241
+ color: var(--ds-site-link);
242
+ }
243
+
244
+ .ds-site .ds-site-nav-list {
245
+ margin: 0;
246
+ padding: 0;
247
+ list-style: none;
248
+ }
249
+
250
+ .ds-site .ds-site-nav-group + .ds-site-nav-group,
251
+ .ds-site .ds-site-nav-list[data-depth="0"] > li:not(.ds-site-nav-group) + .ds-site-nav-group {
252
+ margin-top: 18px;
253
+ }
254
+
255
+ .ds-site .ds-site-nav-group-title {
256
+ padding: 4px 10px 6px;
257
+ color: var(--ds-site-fg);
258
+ font-size: 12px;
259
+ font-weight: 700;
260
+ letter-spacing: 0.02em;
261
+ }
262
+
263
+ .ds-site .ds-site-nav-row {
264
+ display: flex;
265
+ align-items: center;
266
+ border-radius: 7px;
267
+ }
268
+
269
+ .ds-site .ds-site-nav-row:hover {
270
+ background: var(--ds-site-hover);
271
+ }
272
+
273
+ .ds-site .ds-site-nav-row[data-current] {
274
+ background: var(--ds-site-active-bg);
275
+ }
276
+
277
+ .ds-site .ds-site-nav-row .ds-site-nav-link:hover {
278
+ background: transparent;
279
+ }
280
+
281
+ .ds-site .ds-site-nav-link {
282
+ display: flex;
283
+ flex: 1;
284
+ align-items: center;
285
+ gap: 6px;
286
+ width: 100%;
287
+ min-width: 0;
288
+ min-height: 32px;
289
+ padding: 5px 10px;
290
+ border: 0;
291
+ border-radius: 7px;
292
+ background: transparent;
293
+ color: var(--ds-site-muted);
294
+ font: inherit;
295
+ font-size: 14px;
296
+ line-height: 1.35;
297
+ text-align: left;
298
+ text-decoration: none;
299
+ cursor: pointer;
300
+ }
301
+
302
+ .ds-site .ds-site-nav-link:hover {
303
+ background: var(--ds-site-hover);
304
+ color: var(--ds-site-fg);
305
+ }
306
+
307
+ .ds-site .ds-site-nav-link[aria-current="page"] {
308
+ color: var(--ds-site-link);
309
+ font-weight: 600;
310
+ }
311
+
312
+ .ds-site .ds-site-nav-label {
313
+ flex: 1;
314
+ min-width: 0;
315
+ }
316
+
317
+ .ds-site .ds-site-nav-external {
318
+ color: var(--ds-site-muted);
319
+ font-size: 11px;
320
+ }
321
+
322
+ .ds-site .ds-site-nav-toggle {
323
+ display: inline-grid;
324
+ flex-shrink: 0;
325
+ place-items: center;
326
+ width: 26px;
327
+ height: 26px;
328
+ margin-right: 3px;
329
+ padding: 0;
330
+ border: 0;
331
+ border-radius: 6px;
332
+ background: transparent;
333
+ color: var(--ds-site-muted);
334
+ cursor: pointer;
335
+ }
336
+
337
+ .ds-site .ds-site-nav-toggle:hover {
338
+ background: var(--ds-site-hover);
339
+ }
340
+
341
+ .ds-site .ds-site-nav-toggle svg {
342
+ transition: transform 0.16s ease;
343
+ }
344
+
345
+ .ds-site [aria-expanded="true"] > .ds-site-nav-toggle svg,
346
+ .ds-site .ds-site-nav-toggle[aria-expanded="true"] svg {
347
+ transform: rotate(90deg);
348
+ }
349
+
350
+ .ds-site .ds-site-nav-children {
351
+ margin: 2px 0 4px 14px;
352
+ padding-left: 6px;
353
+ border-left: 1px solid var(--ds-site-border);
354
+ }
355
+
356
+ /* Scroller */
357
+ .ds-site .ds-site-scroll {
358
+ flex: 1;
359
+ min-width: 0;
360
+ overflow-y: auto;
361
+ scroll-behavior: smooth;
362
+ }
363
+
364
+ @media (prefers-reduced-motion: reduce) {
365
+ .ds-site .ds-site-scroll {
366
+ scroll-behavior: auto;
367
+ }
368
+ }
369
+
370
+ .ds-site .ds-site-columns {
371
+ display: flex;
372
+ justify-content: center;
373
+ gap: 40px;
374
+ min-height: 100%;
375
+ padding: 0 32px;
376
+ }
377
+
378
+ .ds-site .ds-site-main {
379
+ flex: 1;
380
+ min-width: 0;
381
+ max-width: var(--ds-site-content-w);
382
+ }
383
+
384
+ .ds-site .ds-site-article {
385
+ padding: 36px 0 72px;
386
+ }
387
+
388
+ .ds-site .ds-site-article [id] {
389
+ scroll-margin-top: 20px;
390
+ }
391
+
392
+ .ds-site .ds-site-pagehead {
393
+ margin-bottom: 26px;
394
+ }
395
+
396
+ .ds-site .ds-site-pagehead-row {
397
+ display: flex;
398
+ align-items: center;
399
+ justify-content: space-between;
400
+ gap: 12px;
401
+ min-height: 30px;
402
+ margin-bottom: 6px;
403
+ }
404
+
405
+ .ds-site .ds-site-crumbs {
406
+ display: flex;
407
+ flex-wrap: wrap;
408
+ align-items: center;
409
+ color: var(--ds-site-link);
410
+ font-size: 13px;
411
+ font-weight: 600;
412
+ }
413
+
414
+ .ds-site .ds-site-crumbs span {
415
+ display: inline-flex;
416
+ align-items: center;
417
+ gap: 4px;
418
+ }
419
+
420
+ .ds-site .ds-site-crumbs svg {
421
+ margin: 0 4px 0 2px;
422
+ color: var(--ds-site-muted);
423
+ }
424
+
425
+ .ds-site .ds-site-page-title {
426
+ margin: 0;
427
+ font-size: clamp(28px, 4.2cqi, 38px);
428
+ font-weight: 750;
429
+ line-height: 1.15;
430
+ letter-spacing: -0.025em;
431
+ }
432
+
433
+ .ds-site .ds-site-lede {
434
+ margin: 12px 0 0;
435
+ color: var(--ds-site-muted);
436
+ font-size: 17px;
437
+ line-height: 1.55;
438
+ }
439
+
440
+ .ds-site .ds-site-lede a {
441
+ color: var(--ds-site-link);
442
+ }
443
+
444
+ .ds-site .ds-site-pagefoot {
445
+ margin-top: 56px;
446
+ }
447
+
448
+ .ds-site .ds-site-edit {
449
+ display: inline-flex;
450
+ align-items: center;
451
+ gap: 6px;
452
+ margin-bottom: 16px;
453
+ color: var(--ds-site-muted);
454
+ font-size: 13px;
455
+ text-decoration: none;
456
+ }
457
+
458
+ .ds-site .ds-site-edit:hover {
459
+ color: var(--ds-site-link);
460
+ }
461
+
462
+ .ds-site .ds-site-pager {
463
+ display: grid;
464
+ grid-template-columns: 1fr 1fr;
465
+ gap: 14px;
466
+ padding-top: 20px;
467
+ border-top: 1px solid var(--ds-site-border);
468
+ }
469
+
470
+ .ds-site .ds-site-pager-link {
471
+ display: flex;
472
+ flex-direction: column;
473
+ gap: 3px;
474
+ padding: 14px 16px;
475
+ border: 1px solid var(--ds-site-border);
476
+ border-radius: 12px;
477
+ color: inherit;
478
+ text-decoration: none;
479
+ transition: border-color 0.15s ease;
480
+ }
481
+
482
+ .ds-site .ds-site-pager-link:hover {
483
+ border-color: var(--ds-site-link);
484
+ }
485
+
486
+ .ds-site .ds-site-pager-link[data-dir="next"] {
487
+ grid-column: 2;
488
+ align-items: flex-end;
489
+ text-align: right;
490
+ }
491
+
492
+ .ds-site .ds-site-pager-link small {
493
+ display: inline-flex;
494
+ align-items: center;
495
+ gap: 4px;
496
+ color: var(--ds-site-muted);
497
+ font-size: 12px;
498
+ }
499
+
500
+ .ds-site .ds-site-pager-link strong {
501
+ color: var(--ds-site-fg);
502
+ font-size: 15px;
503
+ font-weight: 650;
504
+ }
505
+
506
+ .ds-site .ds-site-pager-link:hover strong {
507
+ color: var(--ds-site-link);
508
+ }
509
+
510
+ .ds-site .ds-site-footer {
511
+ margin-top: 28px;
512
+ color: var(--ds-site-muted);
513
+ font-size: 12.5px;
514
+ }
515
+
516
+ .ds-site .ds-site-footer a {
517
+ color: var(--ds-site-link);
518
+ }
519
+
520
+ /* On this page */
521
+ .ds-site .ds-site-toc {
522
+ position: sticky;
523
+ top: 0;
524
+ flex-shrink: 0;
525
+ align-self: flex-start;
526
+ width: var(--ds-site-toc-w);
527
+ max-height: calc(var(--ds-site-height, 100dvh) - var(--ds-site-header-h));
528
+ padding: 40px 0 24px;
529
+ overflow-y: auto;
530
+ scrollbar-width: thin;
531
+ }
532
+
533
+ .ds-site .ds-site-toc-title {
534
+ margin-bottom: 10px;
535
+ color: var(--ds-site-fg);
536
+ font-size: 12.5px;
537
+ font-weight: 700;
538
+ }
539
+
540
+ .ds-site .ds-site-toc ul {
541
+ margin: 0;
542
+ padding: 0;
543
+ border-left: 1px solid var(--ds-site-border);
544
+ list-style: none;
545
+ }
546
+
547
+ .ds-site .ds-site-toc a {
548
+ display: block;
549
+ margin-left: -1px;
550
+ padding: 4px 0 4px 13px;
551
+ border-left: 2px solid transparent;
552
+ color: var(--ds-site-muted);
553
+ font-size: 13px;
554
+ line-height: 1.4;
555
+ text-decoration: none;
556
+ }
557
+
558
+ .ds-site .ds-site-toc li[data-level="3"] a {
559
+ padding-left: 25px;
560
+ font-size: 12.5px;
561
+ }
562
+
563
+ .ds-site .ds-site-toc a:hover {
564
+ color: var(--ds-site-fg);
565
+ }
566
+
567
+ .ds-site .ds-site-toc a[aria-current] {
568
+ border-left-color: var(--ds-site-link);
569
+ color: var(--ds-site-link);
570
+ font-weight: 600;
571
+ }
572
+
573
+ /* Overlays (drawer, search): positioned in the site, so an embedded site keeps them inside. */
574
+ .ds-site .ds-site-drawer-layer,
575
+ .ds-site .ds-site-search-layer {
576
+ position: absolute;
577
+ z-index: 50;
578
+ inset: 0;
579
+ background: rgba(10, 10, 16, 0.4);
580
+ animation: ds-site-fade 0.16s ease;
581
+ }
582
+
583
+ .ds-site .ds-site-drawer {
584
+ display: flex;
585
+ flex-direction: column;
586
+ width: min(320px, 86%);
587
+ height: 100%;
588
+ background: var(--ds-site-sidebar-bg, var(--ds-site-bg));
589
+ box-shadow: 0 0 40px rgba(0, 0, 0, 0.25);
590
+ animation: ds-site-slide 0.24s cubic-bezier(0.32, 0.72, 0, 1);
591
+ }
592
+
593
+ .ds-site .ds-site-drawer-head {
594
+ display: flex;
595
+ align-items: center;
596
+ justify-content: space-between;
597
+ height: var(--ds-site-header-h);
598
+ padding: 0 12px 0 20px;
599
+ border-bottom: 1px solid var(--ds-site-border);
600
+ }
601
+
602
+ .ds-site .ds-site-search-layer {
603
+ display: flex;
604
+ justify-content: center;
605
+ padding: min(12vh, 90px) 16px 16px;
606
+ }
607
+
608
+ .ds-site .ds-site-search {
609
+ display: flex;
610
+ flex-direction: column;
611
+ width: 100%;
612
+ max-width: 620px;
613
+ max-height: min(560px, 100%);
614
+ align-self: flex-start;
615
+ overflow: hidden;
616
+ border: 1px solid var(--ds-site-border);
617
+ border-radius: 14px;
618
+ background: var(--card, var(--ds-site-bg));
619
+ box-shadow: 0 24px 60px -12px rgba(0, 0, 0, 0.35);
620
+ animation: ds-site-pop 0.16s ease;
621
+ }
622
+
623
+ .ds-site .ds-site-search-field {
624
+ display: flex;
625
+ align-items: center;
626
+ gap: 10px;
627
+ padding: 0 14px;
628
+ border-bottom: 1px solid var(--ds-site-border);
629
+ color: var(--ds-site-muted);
630
+ }
631
+
632
+ .ds-site .ds-site-search-field input {
633
+ flex: 1;
634
+ min-width: 0;
635
+ height: 52px;
636
+ border: 0;
637
+ outline: 0;
638
+ background: transparent;
639
+ color: var(--ds-site-fg);
640
+ font: inherit;
641
+ font-size: 16px;
642
+ }
643
+
644
+ .ds-site .ds-site-search-field input::-webkit-search-cancel-button {
645
+ display: none;
646
+ }
647
+
648
+ .ds-site .ds-site-search-results {
649
+ padding: 6px;
650
+ overflow-y: auto;
651
+ }
652
+
653
+ .ds-site .ds-site-search-caption {
654
+ padding: 8px 10px 4px;
655
+ color: var(--ds-site-muted);
656
+ font-size: 12px;
657
+ font-weight: 650;
658
+ }
659
+
660
+ .ds-site .ds-site-search-hit {
661
+ display: flex;
662
+ align-items: flex-start;
663
+ gap: 10px;
664
+ width: 100%;
665
+ padding: 9px 10px;
666
+ border: 0;
667
+ border-radius: 9px;
668
+ background: transparent;
669
+ color: var(--ds-site-muted);
670
+ font: inherit;
671
+ text-align: left;
672
+ cursor: pointer;
673
+ }
674
+
675
+ .ds-site .ds-site-search-hit svg {
676
+ flex-shrink: 0;
677
+ margin-top: 2px;
678
+ }
679
+
680
+ .ds-site .ds-site-search-hit:hover,
681
+ .ds-site .ds-site-search-hit[aria-selected="true"] {
682
+ background: var(--ds-site-active-bg);
683
+ }
684
+
685
+ .ds-site .ds-site-search-hit[aria-selected="true"] svg {
686
+ color: var(--ds-site-link);
687
+ }
688
+
689
+ .ds-site .ds-site-search-hit-main {
690
+ display: flex;
691
+ flex-direction: column;
692
+ gap: 2px;
693
+ min-width: 0;
694
+ }
695
+
696
+ .ds-site .ds-site-search-hit-title {
697
+ color: var(--ds-site-fg);
698
+ font-size: 14px;
699
+ font-weight: 600;
700
+ }
701
+
702
+ .ds-site .ds-site-search-hit-page,
703
+ .ds-site .ds-site-search-hit-path {
704
+ color: var(--ds-site-muted);
705
+ font-size: 12.5px;
706
+ font-weight: 450;
707
+ }
708
+
709
+ .ds-site .ds-site-search-hit-snippet {
710
+ display: -webkit-box;
711
+ overflow: hidden;
712
+ font-size: 13px;
713
+ line-height: 1.45;
714
+ -webkit-box-orient: vertical;
715
+ -webkit-line-clamp: 2;
716
+ }
717
+
718
+ .ds-site .ds-site-search-hit mark {
719
+ border-radius: 3px;
720
+ background: color-mix(in srgb, var(--ds-site-link) 22%, transparent);
721
+ color: var(--ds-site-fg);
722
+ }
723
+
724
+ .ds-site .ds-site-search-empty {
725
+ padding: 32px 16px;
726
+ color: var(--ds-site-muted);
727
+ font-size: 14px;
728
+ text-align: center;
729
+ }
730
+
731
+ @keyframes ds-site-fade {
732
+ from {
733
+ opacity: 0;
734
+ }
735
+ }
736
+
737
+ @keyframes ds-site-slide {
738
+ from {
739
+ transform: translateX(-100%);
740
+ }
741
+ }
742
+
743
+ @keyframes ds-site-pop {
744
+ from {
745
+ opacity: 0;
746
+ transform: translateY(-6px) scale(0.99);
747
+ }
748
+ }
749
+
750
+ @media (prefers-reduced-motion: reduce) {
751
+ .ds-site .ds-site-drawer-layer,
752
+ .ds-site .ds-site-search-layer,
753
+ .ds-site .ds-site-drawer,
754
+ .ds-site .ds-site-search {
755
+ animation: none;
756
+ }
757
+ }
758
+
759
+ /* Narrower than a sidebar + content + outline: drop the outline. */
760
+ @container ds-site (max-width: 1240px) {
761
+ .ds-site .ds-site-toc {
762
+ display: none;
763
+ }
764
+ }
765
+
766
+ /* Phone / embedded column: the sidebar becomes a drawer. */
767
+ @container ds-site (max-width: 900px) {
768
+ .ds-site .ds-site-sidebar {
769
+ display: none;
770
+ }
771
+
772
+ .ds-site .ds-site-menu {
773
+ display: inline-grid;
774
+ }
775
+
776
+ .ds-site .ds-site-header {
777
+ padding: 0 12px;
778
+ }
779
+
780
+ .ds-site .ds-site-columns {
781
+ padding: 0 18px;
782
+ }
783
+
784
+ .ds-site .ds-site-article {
785
+ padding-top: 24px;
786
+ }
787
+
788
+ /* A table wider than the column scrolls on its own instead of widening the page. */
789
+ .ds-site .ds-site-article .docs-table {
790
+ display: block;
791
+ max-width: 100%;
792
+ overflow-x: auto;
793
+ }
794
+ }
795
+
796
+ @container ds-site (max-width: 560px) {
797
+ .ds-site .ds-site-search-btn {
798
+ width: 34px;
799
+ padding: 0;
800
+ justify-content: center;
801
+ }
802
+
803
+ .ds-site .ds-site-search-btn-label,
804
+ .ds-site .ds-site-search-btn kbd,
805
+ .ds-site .ds-site-header-link :is(svg, img) + span {
806
+ display: none;
807
+ }
808
+
809
+ .ds-site .ds-site-pager {
810
+ grid-template-columns: 1fr;
811
+ }
812
+
813
+ .ds-site .ds-site-pager-link[data-dir="next"] {
814
+ grid-column: 1;
815
+ }
816
+ }