@farming-labs/theme 0.2.97 → 0.2.99
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/dist/browser.d.mts +25 -0
- package/dist/browser.mjs +74 -0
- package/dist/docs-client-hooks.mjs +1 -1
- package/dist/docs-command-search.mjs +13 -2
- package/dist/docs-layout.mjs +60 -4
- package/dist/docs-page-client.d.mts +9 -0
- package/dist/docs-page-client.mjs +49 -10
- package/dist/mdx.mjs +1 -1
- package/dist/open-docs-provider-icons.mjs +14 -0
- package/dist/open-docs-providers.mjs +17 -2
- package/dist/page-actions.mjs +3 -8
- package/dist/pixel-border/index.d.mts +1 -0
- package/dist/pixel-border/index.mjs +11 -10
- package/dist/reading-time-options.mjs +27 -0
- package/dist/reading-time.mjs +2 -24
- package/dist/tablet-sidebar-bridge.mjs +64 -0
- package/dist/tanstack-layout.d.mts +2 -0
- package/dist/tanstack-layout.mjs +8 -4
- package/dist/tanstack.d.mts +1 -1
- package/dist/tanstack.mjs +1 -1
- package/package.json +9 -2
- package/styles/bundles/browser-framework.css +10585 -0
- package/styles/bundles/shared-framework.css +3 -3
- package/styles/pixel-border.css +1097 -68
package/styles/pixel-border.css
CHANGED
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
--scrollbar-track: transparent;
|
|
36
36
|
/* Sharp corners — no rounding */
|
|
37
37
|
--radius: 0px;
|
|
38
|
-
--fd-nav-height:
|
|
38
|
+
--fd-nav-height: 44px;
|
|
39
39
|
--fd-banner-height: 0px;
|
|
40
40
|
--fd-tocnav-height: 0px;
|
|
41
41
|
}
|
|
@@ -149,21 +149,76 @@ code:not(pre code) {
|
|
|
149
149
|
* Pixel-border theme — better-auth inspired sidebar, clean dark UI
|
|
150
150
|
* ═══════════════════════════════════════════════════════════════════ */
|
|
151
151
|
|
|
152
|
-
/* ───
|
|
152
|
+
/* ─── Production shell geometry ─────────────────────────────────── */
|
|
153
153
|
|
|
154
154
|
@media (min-width: 1024px) {
|
|
155
155
|
:root {
|
|
156
156
|
--fd-layout-width: 1400px;
|
|
157
157
|
}
|
|
158
|
-
}
|
|
159
158
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
159
|
+
#nd-docs-layout.grid:not([data-fd-framework]) {
|
|
160
|
+
--fd-header-height: 44px;
|
|
161
|
+
grid-template:
|
|
162
|
+
"sidebar header header" 44px
|
|
163
|
+
"sidebar main toc" 1fr /
|
|
164
|
+
var(--fd-sidebar-col) minmax(0, 1fr) var(--fd-toc-width) !important;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
#nd-docs-layout #nd-subnav {
|
|
168
|
+
position: sticky;
|
|
169
|
+
top: 0;
|
|
170
|
+
z-index: 30;
|
|
171
|
+
display: flex !important;
|
|
172
|
+
grid-area: header;
|
|
173
|
+
grid-column: 2 / -1;
|
|
174
|
+
height: 44px;
|
|
175
|
+
padding: 0 105px 0 0;
|
|
176
|
+
border-bottom: 1px solid var(--color-fd-border);
|
|
177
|
+
background: color-mix(in srgb, var(--color-fd-background) 92%, transparent);
|
|
178
|
+
backdrop-filter: blur(12px);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
#nd-docs-layout #nd-subnav > a,
|
|
182
|
+
#nd-docs-layout #nd-subnav button[aria-label="Open Sidebar"] {
|
|
183
|
+
display: none !important;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
#nd-docs-layout #nd-subnav button[data-search] {
|
|
187
|
+
width: 56px;
|
|
188
|
+
height: 44px;
|
|
189
|
+
margin-left: auto;
|
|
190
|
+
padding: 0;
|
|
191
|
+
border-left: 1px solid var(--color-fd-border);
|
|
192
|
+
color: var(--color-fd-muted-foreground);
|
|
165
193
|
}
|
|
166
|
-
|
|
194
|
+
|
|
195
|
+
/* Farm's desktop header uses the compact keyboard hint in place of the
|
|
196
|
+
* magnifier while keeping Fumadocs' search trigger and shortcut behavior. */
|
|
197
|
+
#nd-docs-layout #nd-subnav button[data-search] svg {
|
|
198
|
+
display: none !important;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
#nd-docs-layout #nd-subnav button[data-search]::after {
|
|
202
|
+
content: "⌘ K";
|
|
203
|
+
display: inline-flex;
|
|
204
|
+
width: 35px;
|
|
205
|
+
height: 22px;
|
|
206
|
+
align-items: center;
|
|
207
|
+
justify-content: center;
|
|
208
|
+
border: 1px solid var(--color-fd-border);
|
|
209
|
+
background: linear-gradient(
|
|
210
|
+
to right,
|
|
211
|
+
transparent calc(50% - 0.5px),
|
|
212
|
+
var(--color-fd-border) calc(50% - 0.5px),
|
|
213
|
+
var(--color-fd-border) calc(50% + 0.5px),
|
|
214
|
+
transparent calc(50% + 0.5px)
|
|
215
|
+
);
|
|
216
|
+
font-family: var(--fd-font-mono, ui-monospace, monospace);
|
|
217
|
+
font-size: 10px;
|
|
218
|
+
line-height: 1;
|
|
219
|
+
letter-spacing: 1px;
|
|
220
|
+
}
|
|
221
|
+
|
|
167
222
|
#nd-docs-layout aside#nd-sidebar {
|
|
168
223
|
position: sticky;
|
|
169
224
|
top: 0;
|
|
@@ -171,49 +226,516 @@ code:not(pre code) {
|
|
|
171
226
|
min-height: 0;
|
|
172
227
|
height: 100vh;
|
|
173
228
|
}
|
|
229
|
+
|
|
230
|
+
#nd-docs-layout [data-sidebar-placeholder] {
|
|
231
|
+
justify-self: stretch;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
#nd-docs-layout article#nd-page {
|
|
235
|
+
width: min(100%, var(--fd-content-width));
|
|
236
|
+
max-width: none;
|
|
237
|
+
margin-inline: auto;
|
|
238
|
+
padding: 47px 40px 80px !important;
|
|
239
|
+
gap: 0;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
#nd-docs-layout article#nd-page > .prose {
|
|
243
|
+
max-width: none;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
#nd-docs-layout #nd-toc {
|
|
247
|
+
display: flex !important;
|
|
248
|
+
width: var(--fd-toc-width);
|
|
249
|
+
padding: 48px 16px 8px 0;
|
|
250
|
+
}
|
|
174
251
|
}
|
|
175
252
|
|
|
176
|
-
|
|
253
|
+
/* Keep the compact shell through tablet sizes. The sidebar itself stays on
|
|
254
|
+
* Fumadocs' native mobile lifecycle so focus, scroll locking, Escape, and
|
|
255
|
+
* backdrop dismissal work consistently at every touch breakpoint. */
|
|
256
|
+
@media (max-width: 1023px) {
|
|
257
|
+
:root {
|
|
258
|
+
--fd-mobile-nav-height: 56px;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/* Farm's server-rendered sidebar brand defaults to a 44px row followed by
|
|
262
|
+
* an 18px gap. On tablet, that puts its divider below the 56px mobile
|
|
263
|
+
* topbar. Give both sides of the shell one shared header edge instead. */
|
|
264
|
+
#nd-docs-layout aside#nd-sidebar > .sidebar-brand {
|
|
265
|
+
height: var(--fd-mobile-nav-height);
|
|
266
|
+
min-height: var(--fd-mobile-nav-height);
|
|
267
|
+
max-height: var(--fd-mobile-nav-height);
|
|
268
|
+
flex-basis: var(--fd-mobile-nav-height);
|
|
269
|
+
margin-bottom: 0;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
body {
|
|
273
|
+
overflow-x: hidden;
|
|
274
|
+
}
|
|
275
|
+
|
|
177
276
|
#nd-docs-layout.grid:not([data-fd-framework]) {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
var(--fd-sidebar-col) minmax(0, 1fr) var(--fd-toc-width) !important;
|
|
277
|
+
--fd-header-height: 56px;
|
|
278
|
+
display: block !important;
|
|
279
|
+
min-height: 100dvh;
|
|
280
|
+
padding-top: 56px;
|
|
183
281
|
}
|
|
184
282
|
|
|
185
|
-
#nd-docs-layout
|
|
186
|
-
|
|
283
|
+
#nd-docs-layout #nd-subnav {
|
|
284
|
+
position: fixed;
|
|
285
|
+
inset: 0 0 auto;
|
|
286
|
+
z-index: 80;
|
|
287
|
+
display: flex !important;
|
|
288
|
+
width: 100%;
|
|
289
|
+
height: 56px;
|
|
290
|
+
padding: 0 105px 0 0;
|
|
291
|
+
border-bottom: 1px solid var(--color-fd-border);
|
|
292
|
+
background: color-mix(in srgb, var(--color-fd-background) 94%, transparent);
|
|
293
|
+
backdrop-filter: blur(12px);
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
#nd-docs-layout #nd-subnav > a {
|
|
297
|
+
display: none;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
#nd-docs-layout #nd-subnav > div.flex-1 {
|
|
301
|
+
order: 2;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
#nd-docs-layout #nd-subnav button[aria-label="Open Sidebar"] {
|
|
305
|
+
order: 1;
|
|
306
|
+
width: 56px;
|
|
307
|
+
height: 56px;
|
|
308
|
+
padding: 0;
|
|
309
|
+
border-right: 1px solid var(--color-fd-border);
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
#nd-docs-layout #nd-subnav button[aria-label="Open Sidebar"] svg {
|
|
313
|
+
display: none;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
#nd-docs-layout #nd-subnav button[aria-label="Open Sidebar"]::before {
|
|
317
|
+
content: "";
|
|
318
|
+
width: 18px;
|
|
319
|
+
height: 1.5px;
|
|
320
|
+
background: currentColor;
|
|
321
|
+
box-shadow:
|
|
322
|
+
0 -6px 0 currentColor,
|
|
323
|
+
0 6px 0 currentColor;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
#nd-docs-layout #nd-subnav button[data-search] {
|
|
327
|
+
order: 3;
|
|
328
|
+
width: 44px;
|
|
329
|
+
height: 56px;
|
|
330
|
+
margin-left: auto;
|
|
331
|
+
padding: 0;
|
|
332
|
+
border-left: 1px solid var(--color-fd-border);
|
|
333
|
+
color: var(--color-fd-muted-foreground);
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
#nd-docs-layout [data-sidebar-placeholder],
|
|
337
|
+
#nd-docs-layout [data-sidebar-panel],
|
|
338
|
+
#nd-docs-layout [data-toc-popover],
|
|
339
|
+
#nd-docs-layout #nd-toc {
|
|
340
|
+
display: none !important;
|
|
187
341
|
}
|
|
188
342
|
|
|
189
343
|
#nd-docs-layout article#nd-page {
|
|
344
|
+
width: 100%;
|
|
190
345
|
max-width: none;
|
|
191
|
-
margin
|
|
346
|
+
margin: 0;
|
|
347
|
+
padding: 34px 20px 64px !important;
|
|
348
|
+
gap: 0;
|
|
192
349
|
}
|
|
193
350
|
|
|
194
351
|
#nd-docs-layout article#nd-page > .prose {
|
|
195
352
|
max-width: none;
|
|
196
353
|
}
|
|
197
|
-
}
|
|
198
354
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
355
|
+
html:has([data-fd-tablet-sidebar-state="open"]) {
|
|
356
|
+
overflow: hidden;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
#nd-docs-layout:has([data-fd-tablet-sidebar-state="open"])
|
|
360
|
+
[data-sidebar-placeholder] {
|
|
361
|
+
position: fixed;
|
|
362
|
+
inset: 0 auto 0 0;
|
|
363
|
+
z-index: 100;
|
|
364
|
+
display: block !important;
|
|
365
|
+
width: min(342px, calc(100vw - 42px));
|
|
366
|
+
height: 100dvh;
|
|
367
|
+
pointer-events: auto;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
#nd-docs-layout:has([data-fd-tablet-sidebar-state="open"])
|
|
371
|
+
[data-sidebar-placeholder]
|
|
372
|
+
> aside {
|
|
373
|
+
position: absolute;
|
|
374
|
+
inset: 0;
|
|
375
|
+
width: 100% !important;
|
|
376
|
+
height: 100dvh;
|
|
202
377
|
max-height: none;
|
|
203
|
-
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
/* Fumadocs keeps the desktop sidebar's internal width on its direct
|
|
381
|
+
* children. The tablet drawer is wider, so the end-aligned children left a
|
|
382
|
+
* large empty gutter at the start of the panel. Let the header and tree use
|
|
383
|
+
* the full overlay width instead. */
|
|
384
|
+
#nd-docs-layout:has([data-fd-tablet-sidebar-state="open"])
|
|
385
|
+
[data-sidebar-placeholder]
|
|
386
|
+
> aside
|
|
387
|
+
> * {
|
|
388
|
+
width: 100% !important;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
#nd-docs-layout:has([data-fd-tablet-sidebar-state="open"])
|
|
392
|
+
aside#nd-sidebar
|
|
393
|
+
> div:first-child {
|
|
394
|
+
height: 56px;
|
|
395
|
+
min-height: 56px;
|
|
396
|
+
max-height: 56px;
|
|
397
|
+
flex-basis: 56px;
|
|
398
|
+
padding-right: 58px;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
.fd-tablet-sidebar-backdrop {
|
|
402
|
+
position: fixed;
|
|
403
|
+
inset: 0;
|
|
404
|
+
z-index: 95;
|
|
405
|
+
display: block;
|
|
406
|
+
border: 0;
|
|
407
|
+
background: color-mix(in srgb, var(--color-fd-background) 72%, transparent);
|
|
408
|
+
backdrop-filter: blur(2px);
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
.fd-tablet-sidebar-close {
|
|
412
|
+
position: fixed;
|
|
413
|
+
top: 6px;
|
|
414
|
+
left: calc(min(342px, calc(100vw - 42px)) - 50px);
|
|
415
|
+
z-index: 101;
|
|
416
|
+
display: inline-flex;
|
|
417
|
+
width: 44px;
|
|
418
|
+
height: 44px;
|
|
419
|
+
align-items: center;
|
|
420
|
+
justify-content: center;
|
|
421
|
+
border: 0;
|
|
422
|
+
color: var(--color-fd-muted-foreground);
|
|
423
|
+
background: transparent;
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
.fd-tablet-sidebar-close:hover,
|
|
427
|
+
.fd-tablet-sidebar-close:focus-visible {
|
|
428
|
+
color: var(--color-fd-foreground);
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
.fd-tablet-sidebar-close:focus-visible {
|
|
432
|
+
outline: 1px solid var(--color-fd-ring);
|
|
433
|
+
outline-offset: -1px;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
.fd-tablet-sidebar-close > span,
|
|
437
|
+
.fd-tablet-sidebar-close > span::after {
|
|
438
|
+
display: block;
|
|
439
|
+
width: 18px;
|
|
440
|
+
height: 1px;
|
|
441
|
+
background: currentColor;
|
|
442
|
+
content: "";
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
.fd-tablet-sidebar-close > span {
|
|
446
|
+
transform: rotate(45deg);
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
.fd-tablet-sidebar-close > span::after {
|
|
450
|
+
transform: rotate(90deg);
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
#nd-docs-layout > div[data-state]:has(+ aside#nd-sidebar-mobile) {
|
|
454
|
+
z-index: 95;
|
|
455
|
+
background: color-mix(in srgb, var(--color-fd-background) 72%, transparent);
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
aside#nd-sidebar-mobile {
|
|
459
|
+
--fd-pixel-rail-width: 12px;
|
|
460
|
+
inset: 0 auto 0 0 !important;
|
|
461
|
+
z-index: 100;
|
|
462
|
+
width: min(342px, calc(100vw - 42px));
|
|
463
|
+
max-width: none;
|
|
464
|
+
border-right: 1px solid var(--color-fd-border);
|
|
465
|
+
border-left: 0;
|
|
466
|
+
background-color: var(--color-fd-background);
|
|
467
|
+
background-image:
|
|
468
|
+
linear-gradient(var(--color-fd-border), var(--color-fd-border)),
|
|
469
|
+
linear-gradient(var(--color-fd-border), var(--color-fd-border)),
|
|
470
|
+
repeating-linear-gradient(
|
|
471
|
+
-45deg,
|
|
472
|
+
color-mix(in srgb, var(--color-fd-border) 2%, transparent),
|
|
473
|
+
color-mix(in srgb, var(--color-fd-foreground) 7%, transparent) 1px,
|
|
474
|
+
transparent 1px,
|
|
475
|
+
transparent 6px
|
|
476
|
+
),
|
|
477
|
+
repeating-linear-gradient(
|
|
478
|
+
-45deg,
|
|
479
|
+
color-mix(in srgb, var(--color-fd-border) 2%, transparent),
|
|
480
|
+
color-mix(in srgb, var(--color-fd-foreground) 7%, transparent) 1px,
|
|
481
|
+
transparent 1px,
|
|
482
|
+
transparent 6px
|
|
483
|
+
);
|
|
484
|
+
background-position:
|
|
485
|
+
var(--fd-pixel-rail-width) 0,
|
|
486
|
+
calc(100% - var(--fd-pixel-rail-width)) 0,
|
|
487
|
+
left top,
|
|
488
|
+
right top;
|
|
489
|
+
background-repeat: repeat-y;
|
|
490
|
+
background-size:
|
|
491
|
+
1px 100%,
|
|
492
|
+
1px 100%,
|
|
493
|
+
var(--fd-pixel-rail-width) 100%,
|
|
494
|
+
var(--fd-pixel-rail-width) 100%;
|
|
495
|
+
box-shadow: none;
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
aside#nd-sidebar-mobile[data-state="open"] {
|
|
499
|
+
animation: fd-pixel-sidebar-in 180ms ease-out both !important;
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
aside#nd-sidebar-mobile[data-state="closed"] {
|
|
503
|
+
animation: fd-pixel-sidebar-out 150ms ease-in both !important;
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
aside#nd-sidebar-mobile > div:first-child {
|
|
507
|
+
box-sizing: border-box;
|
|
508
|
+
min-height: 56px;
|
|
509
|
+
flex: 0 0 56px;
|
|
510
|
+
gap: 0;
|
|
511
|
+
padding: 0 calc(var(--fd-pixel-rail-width) + 8px);
|
|
512
|
+
border-bottom: 1px solid var(--color-fd-border);
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
aside#nd-sidebar-mobile > div:first-child > div {
|
|
516
|
+
height: 100%;
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
aside#nd-sidebar-mobile > div:first-child > div::before {
|
|
520
|
+
content: "/ DOCS";
|
|
521
|
+
flex: 0 0 auto;
|
|
522
|
+
color: var(--color-fd-foreground);
|
|
523
|
+
font-family: var(--fd-font-mono, ui-monospace, monospace);
|
|
524
|
+
font-size: 12px;
|
|
525
|
+
letter-spacing: 0.03em;
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
aside#nd-sidebar-mobile
|
|
529
|
+
> div:first-child
|
|
530
|
+
> div
|
|
531
|
+
> button[aria-label="Open Sidebar"]:last-child {
|
|
532
|
+
position: relative;
|
|
533
|
+
width: 44px;
|
|
534
|
+
height: 44px;
|
|
535
|
+
padding: 0;
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
aside#nd-sidebar-mobile
|
|
539
|
+
> div:first-child
|
|
540
|
+
> div
|
|
541
|
+
> button[aria-label="Open Sidebar"]:last-child
|
|
542
|
+
svg {
|
|
543
|
+
display: none;
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
aside#nd-sidebar-mobile
|
|
547
|
+
> div:first-child
|
|
548
|
+
> div
|
|
549
|
+
> button[aria-label="Open Sidebar"]:last-child::before,
|
|
550
|
+
aside#nd-sidebar-mobile
|
|
551
|
+
> div:first-child
|
|
552
|
+
> div
|
|
553
|
+
> button[aria-label="Open Sidebar"]:last-child::after {
|
|
554
|
+
position: absolute;
|
|
555
|
+
width: 18px;
|
|
556
|
+
height: 1px;
|
|
557
|
+
background: currentColor;
|
|
558
|
+
content: "";
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
aside#nd-sidebar-mobile
|
|
562
|
+
> div:first-child
|
|
563
|
+
> div
|
|
564
|
+
> button[aria-label="Open Sidebar"]:last-child::before {
|
|
565
|
+
transform: rotate(45deg);
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
aside#nd-sidebar-mobile
|
|
569
|
+
> div:first-child
|
|
570
|
+
> div
|
|
571
|
+
> button[aria-label="Open Sidebar"]:last-child::after {
|
|
572
|
+
transform: rotate(-45deg);
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
aside#nd-sidebar-mobile > div:nth-child(2) > div:last-child {
|
|
576
|
+
padding-inline: calc(var(--fd-pixel-rail-width) + 4px) !important;
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
@keyframes fd-pixel-sidebar-in {
|
|
581
|
+
from {
|
|
582
|
+
transform: translateX(-100%);
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
to {
|
|
586
|
+
transform: translateX(0);
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
@keyframes fd-pixel-sidebar-out {
|
|
591
|
+
from {
|
|
592
|
+
transform: translateX(0);
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
to {
|
|
596
|
+
transform: translateX(-100%);
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
@media (prefers-reduced-motion: reduce) {
|
|
601
|
+
aside#nd-sidebar-mobile[data-state] {
|
|
602
|
+
animation-duration: 1ms !important;
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
.fd-agent-llms-directive[data-visible-in-header="true"] {
|
|
607
|
+
position: fixed;
|
|
608
|
+
top: 0;
|
|
609
|
+
right: 0;
|
|
610
|
+
z-index: 90;
|
|
611
|
+
display: inline-flex;
|
|
612
|
+
width: 105px;
|
|
613
|
+
height: 44px;
|
|
614
|
+
align-items: center;
|
|
615
|
+
justify-content: center;
|
|
616
|
+
border-left: 1px solid var(--color-fd-border);
|
|
617
|
+
border-bottom: 1px solid var(--color-fd-border);
|
|
618
|
+
color: var(--color-fd-muted-foreground);
|
|
619
|
+
background: color-mix(in srgb, var(--color-fd-background) 94%, transparent);
|
|
620
|
+
font-family: var(--fd-font-mono, ui-monospace, monospace);
|
|
621
|
+
font-size: 12px;
|
|
622
|
+
letter-spacing: 0.03em;
|
|
623
|
+
text-decoration: none;
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
.fd-agent-llms-directive[data-visible-in-header="true"]:hover {
|
|
627
|
+
color: var(--color-fd-foreground);
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
@media (max-width: 1023px) {
|
|
631
|
+
.fd-agent-llms-directive[data-visible-in-header="true"] {
|
|
632
|
+
height: 56px;
|
|
204
633
|
}
|
|
205
634
|
}
|
|
206
635
|
|
|
207
636
|
/* ─── Sidebar (better-auth style) — light + dark ───────────────────── */
|
|
208
637
|
/* Sidebar container: use theme variables for both modes */
|
|
209
638
|
aside#nd-sidebar {
|
|
639
|
+
--fd-pixel-rail-width: 12px;
|
|
210
640
|
background: var(--color-fd-background);
|
|
641
|
+
background-image:
|
|
642
|
+
linear-gradient(var(--color-fd-border), var(--color-fd-border)),
|
|
643
|
+
linear-gradient(var(--color-fd-border), var(--color-fd-border)),
|
|
644
|
+
repeating-linear-gradient(
|
|
645
|
+
-45deg,
|
|
646
|
+
color-mix(in srgb, var(--color-fd-border) 2%, transparent),
|
|
647
|
+
color-mix(in srgb, var(--color-fd-foreground) 7%, transparent) 1px,
|
|
648
|
+
transparent 1px,
|
|
649
|
+
transparent 6px
|
|
650
|
+
),
|
|
651
|
+
repeating-linear-gradient(
|
|
652
|
+
-45deg,
|
|
653
|
+
color-mix(in srgb, var(--color-fd-border) 2%, transparent),
|
|
654
|
+
color-mix(in srgb, var(--color-fd-foreground) 7%, transparent) 1px,
|
|
655
|
+
transparent 1px,
|
|
656
|
+
transparent 6px
|
|
657
|
+
);
|
|
658
|
+
background-position:
|
|
659
|
+
var(--fd-pixel-rail-width) 0,
|
|
660
|
+
calc(100% - var(--fd-pixel-rail-width)) 0,
|
|
661
|
+
left top,
|
|
662
|
+
right top;
|
|
663
|
+
background-repeat: repeat-y;
|
|
664
|
+
background-size:
|
|
665
|
+
1px 100%,
|
|
666
|
+
1px 100%,
|
|
667
|
+
var(--fd-pixel-rail-width) 100%,
|
|
668
|
+
var(--fd-pixel-rail-width) 100%;
|
|
669
|
+
border-left: 1px solid var(--color-fd-border);
|
|
211
670
|
border-color: var(--color-fd-border);
|
|
212
671
|
}
|
|
213
672
|
|
|
673
|
+
aside#nd-sidebar > div:first-child {
|
|
674
|
+
box-sizing: border-box;
|
|
675
|
+
height: 44px;
|
|
676
|
+
min-height: 44px;
|
|
677
|
+
max-height: 44px;
|
|
678
|
+
flex: 0 0 44px;
|
|
679
|
+
gap: 0;
|
|
680
|
+
justify-content: center;
|
|
681
|
+
padding: 0 calc(var(--fd-pixel-rail-width) + 12px);
|
|
682
|
+
border-bottom: 1px solid var(--color-fd-border);
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
aside#nd-sidebar > div:first-child > div:first-child {
|
|
686
|
+
width: 100%;
|
|
687
|
+
height: 100%;
|
|
688
|
+
align-items: center;
|
|
689
|
+
font-family: var(--fd-font-mono, ui-monospace, monospace);
|
|
690
|
+
font-size: 12px;
|
|
691
|
+
letter-spacing: 0.03em;
|
|
692
|
+
text-transform: uppercase;
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
aside#nd-sidebar > div:first-child > div:first-child::after {
|
|
696
|
+
content: "/ DOCS";
|
|
697
|
+
flex: 0 0 auto;
|
|
698
|
+
margin-left: auto;
|
|
699
|
+
color: var(--color-fd-foreground);
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
aside#nd-sidebar > div:first-child > div:first-child > a {
|
|
703
|
+
gap: 8px;
|
|
704
|
+
font-size: 12px;
|
|
705
|
+
font-weight: 500;
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
aside#nd-sidebar > div:first-child > div:first-child > a::before {
|
|
709
|
+
content: "";
|
|
710
|
+
width: 16px;
|
|
711
|
+
height: 16px;
|
|
712
|
+
flex: 0 0 16px;
|
|
713
|
+
background:
|
|
714
|
+
linear-gradient(currentColor 0 0) 0 0 / 6px 6px no-repeat,
|
|
715
|
+
linear-gradient(currentColor 0 0) 8px 0 / 8px 6px no-repeat,
|
|
716
|
+
linear-gradient(color-mix(in srgb, currentColor 64%, transparent) 0 0) 0 8px / 6px 6px
|
|
717
|
+
no-repeat,
|
|
718
|
+
linear-gradient(color-mix(in srgb, currentColor 64%, transparent) 0 0) 8px 8px / 8px 6px
|
|
719
|
+
no-repeat;
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
aside#nd-sidebar > div:first-child button[aria-label="Collapse Sidebar"],
|
|
723
|
+
aside#nd-sidebar > div:first-child button[data-search-full] {
|
|
724
|
+
display: none !important;
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
/* Production keeps the tree scrollable to the bottom without a pinned
|
|
728
|
+
* Fumadocs appearance switcher occupying the last row. Farm's server-rendered
|
|
729
|
+
* layout uses `.sidebar-scroll` as its last child, so never hide that tree. */
|
|
730
|
+
#nd-docs-layout:not([data-fd-framework])
|
|
731
|
+
aside#nd-sidebar
|
|
732
|
+
> div:last-child:not(.sidebar-scroll) {
|
|
733
|
+
display: none !important;
|
|
734
|
+
}
|
|
735
|
+
|
|
214
736
|
/* ── Full-width border separators between top-level items ─────────── */
|
|
215
737
|
aside .overscroll-contain > div {
|
|
216
|
-
margin-top:
|
|
738
|
+
margin-top: 3px;
|
|
217
739
|
}
|
|
218
740
|
|
|
219
741
|
aside .overscroll-contain > div > a[data-active] {
|
|
@@ -227,13 +749,19 @@ aside .overscroll-contain > div > a[data-active] {
|
|
|
227
749
|
|
|
228
750
|
aside .overscroll-contain > div > div {
|
|
229
751
|
border-top: 1px solid var(--color-fd-border);
|
|
230
|
-
margin-left: -
|
|
752
|
+
margin-left: -0.875rem;
|
|
231
753
|
margin-right: -1rem;
|
|
232
754
|
padding: 0 !important;
|
|
233
755
|
}
|
|
234
756
|
|
|
235
|
-
|
|
236
|
-
|
|
757
|
+
/* Keep every top-level section title in its own bordered row. The child
|
|
758
|
+
* threadline starts immediately below this edge, matching the pixel grid. */
|
|
759
|
+
aside .overscroll-contain > div > div > button[aria-controls][aria-expanded] {
|
|
760
|
+
width: 100%;
|
|
761
|
+
border-bottom: 1px solid var(--color-fd-border);
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
aside .overscroll-contain > div > a[data-active]:first-child {
|
|
237
765
|
border-top: none;
|
|
238
766
|
}
|
|
239
767
|
|
|
@@ -246,10 +774,7 @@ aside .overscroll-contain > div > div:last-child {
|
|
|
246
774
|
|
|
247
775
|
aside a[data-active],
|
|
248
776
|
aside button[aria-controls][aria-expanded] {
|
|
249
|
-
font-size: 0.875rem;
|
|
250
|
-
line-height: 1.6;
|
|
251
777
|
border-radius: 0 !important;
|
|
252
|
-
padding: 0.5rem 0.625rem !important;
|
|
253
778
|
transition: color 0.15s ease;
|
|
254
779
|
overflow: hidden;
|
|
255
780
|
background-color: transparent !important;
|
|
@@ -265,7 +790,7 @@ aside a[data-active="true"]:hover {
|
|
|
265
790
|
background: transparent !important;
|
|
266
791
|
background-color: transparent !important;
|
|
267
792
|
color: var(--color-fd-primary) !important;
|
|
268
|
-
font-weight:
|
|
793
|
+
font-weight: 400;
|
|
269
794
|
}
|
|
270
795
|
|
|
271
796
|
aside a[data-active="false"]:hover {
|
|
@@ -277,10 +802,11 @@ aside a[data-active="false"]:hover {
|
|
|
277
802
|
/* ── Child links inside collapsible folders ──────────────────────── */
|
|
278
803
|
|
|
279
804
|
aside div.overflow-hidden[data-state] a[data-active] {
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
padding
|
|
283
|
-
|
|
805
|
+
position: relative;
|
|
806
|
+
min-height: 31.5703125px;
|
|
807
|
+
padding: 6px 30px 6px 68px !important;
|
|
808
|
+
font-size: 13.5px !important;
|
|
809
|
+
line-height: 1.45 !important;
|
|
284
810
|
color: var(--color-fd-muted-foreground) !important;
|
|
285
811
|
overflow: hidden;
|
|
286
812
|
}
|
|
@@ -288,7 +814,7 @@ aside div.overflow-hidden[data-state] a[data-active] {
|
|
|
288
814
|
aside div.overflow-hidden[data-state] a[data-active="true"],
|
|
289
815
|
aside div.overflow-hidden[data-state] a[data-active="true"]:hover {
|
|
290
816
|
color: var(--color-fd-primary) !important;
|
|
291
|
-
font-weight:
|
|
817
|
+
font-weight: 400 !important;
|
|
292
818
|
}
|
|
293
819
|
|
|
294
820
|
aside div.overflow-hidden[data-state] a[data-active="false"]:hover {
|
|
@@ -297,31 +823,124 @@ aside div.overflow-hidden[data-state] a[data-active="false"]:hover {
|
|
|
297
823
|
|
|
298
824
|
/* ── Folder toggle buttons (section headers) ─────────────────────── */
|
|
299
825
|
|
|
300
|
-
aside button.text-fd-muted-foreground
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
826
|
+
aside#nd-sidebar button.text-fd-muted-foreground,
|
|
827
|
+
aside#nd-sidebar-mobile button.text-fd-muted-foreground {
|
|
828
|
+
height: 35px;
|
|
829
|
+
min-height: 35px;
|
|
830
|
+
padding: 8px 30px !important;
|
|
831
|
+
color: var(--color-fd-muted-foreground) !important;
|
|
832
|
+
font-size: 12px !important;
|
|
833
|
+
font-weight: 600 !important;
|
|
834
|
+
line-height: 18px !important;
|
|
304
835
|
letter-spacing: normal;
|
|
305
836
|
text-transform: none;
|
|
306
837
|
}
|
|
307
838
|
|
|
308
|
-
aside button.text-fd-muted-foreground:hover
|
|
309
|
-
|
|
839
|
+
aside#nd-sidebar button.text-fd-muted-foreground:hover,
|
|
840
|
+
aside#nd-sidebar-mobile button.text-fd-muted-foreground:hover {
|
|
841
|
+
color: var(--color-fd-foreground) !important;
|
|
310
842
|
}
|
|
311
843
|
|
|
312
844
|
aside a[data-active="true"]::before {
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
845
|
+
content: none !important;
|
|
846
|
+
}
|
|
847
|
+
|
|
848
|
+
aside div.overflow-hidden[data-state] > div {
|
|
849
|
+
gap: 0 !important;
|
|
850
|
+
padding: 8px 0 6px !important;
|
|
851
|
+
}
|
|
852
|
+
|
|
853
|
+
/* Nested folders keep their labels visible so the configured information
|
|
854
|
+
* architecture survives in adapters with deeper sidebar trees. */
|
|
855
|
+
aside div.overflow-hidden[data-state] > div > div[data-state] {
|
|
856
|
+
position: relative;
|
|
857
|
+
padding: 2px 0 4px;
|
|
858
|
+
}
|
|
859
|
+
|
|
860
|
+
aside div.overflow-hidden[data-state] > div > div[data-state]::before {
|
|
861
|
+
content: "";
|
|
862
|
+
position: absolute;
|
|
863
|
+
top: 17px;
|
|
864
|
+
bottom: 19px;
|
|
865
|
+
inset-inline-start: 75px;
|
|
866
|
+
width: 1px;
|
|
867
|
+
background: color-mix(in srgb, var(--color-fd-border) 88%, transparent);
|
|
868
|
+
}
|
|
869
|
+
|
|
870
|
+
aside#nd-sidebar div.overflow-hidden[data-state] button[aria-expanded],
|
|
871
|
+
aside#nd-sidebar-mobile div.overflow-hidden[data-state] button[aria-expanded] {
|
|
872
|
+
position: relative;
|
|
873
|
+
display: flex !important;
|
|
874
|
+
height: 31.5703125px;
|
|
875
|
+
min-height: 31.5703125px;
|
|
876
|
+
padding: 6px 30px 6px 68px !important;
|
|
877
|
+
color: var(--color-fd-muted-foreground) !important;
|
|
878
|
+
font-size: 13.5px !important;
|
|
879
|
+
font-weight: 500 !important;
|
|
880
|
+
line-height: 1.45 !important;
|
|
881
|
+
}
|
|
882
|
+
|
|
883
|
+
aside div.overflow-hidden[data-state] div.overflow-hidden[data-state] > div {
|
|
884
|
+
padding: 0 0 4px !important;
|
|
885
|
+
}
|
|
886
|
+
|
|
887
|
+
aside div.overflow-hidden[data-state] button[aria-expanded]::after {
|
|
888
|
+
content: "";
|
|
889
|
+
position: absolute;
|
|
890
|
+
top: calc(50% - 0.5px);
|
|
891
|
+
inset-inline-start: 46px;
|
|
892
|
+
width: 29px;
|
|
893
|
+
height: 1px;
|
|
894
|
+
background: color-mix(in srgb, var(--color-fd-border) 88%, transparent);
|
|
895
|
+
}
|
|
896
|
+
|
|
897
|
+
aside
|
|
898
|
+
div.overflow-hidden[data-state]
|
|
899
|
+
div.overflow-hidden[data-state]
|
|
900
|
+
a[data-active] {
|
|
901
|
+
padding-inline-start: 103px !important;
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
aside div.overflow-hidden[data-state] a[data-active]::after {
|
|
905
|
+
content: "";
|
|
906
|
+
position: absolute;
|
|
907
|
+
top: calc(50% - 0.5px);
|
|
908
|
+
inset-inline-start: 46px;
|
|
909
|
+
width: 22px;
|
|
910
|
+
height: 1px;
|
|
911
|
+
background: color-mix(in srgb, var(--color-fd-border) 88%, transparent);
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
aside div.overflow-hidden[data-state] a[data-active="true"]::after {
|
|
915
|
+
background: var(--color-fd-primary);
|
|
319
916
|
}
|
|
320
917
|
|
|
321
918
|
aside div.overflow-hidden[data-state]::before {
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
919
|
+
top: 0 !important;
|
|
920
|
+
bottom: 0 !important;
|
|
921
|
+
inset-inline-start: 46px !important;
|
|
922
|
+
width: 1px !important;
|
|
923
|
+
height: auto !important;
|
|
924
|
+
margin: 0 !important;
|
|
925
|
+
}
|
|
926
|
+
|
|
927
|
+
aside
|
|
928
|
+
div.overflow-hidden[data-state]
|
|
929
|
+
div.overflow-hidden[data-state]
|
|
930
|
+
a[data-active]::after {
|
|
931
|
+
inset-inline-start: 75px;
|
|
932
|
+
width: 28px;
|
|
933
|
+
}
|
|
934
|
+
|
|
935
|
+
aside
|
|
936
|
+
div.overflow-hidden[data-state]
|
|
937
|
+
div.overflow-hidden[data-state]::before {
|
|
938
|
+
content: none !important;
|
|
939
|
+
}
|
|
940
|
+
|
|
941
|
+
aside button[aria-expanded] > .lucide-chevron-down,
|
|
942
|
+
aside button[aria-expanded] > .lucide-chevron-right {
|
|
943
|
+
display: none !important;
|
|
325
944
|
}
|
|
326
945
|
|
|
327
946
|
aside div[data-state="open"] > :last-child {
|
|
@@ -359,6 +978,100 @@ aside button[class*="rounded-full"] {
|
|
|
359
978
|
|
|
360
979
|
/* ─── Tables: visible borders, rounded-none (light + dark) ─────────── */
|
|
361
980
|
|
|
981
|
+
/* ─── Page rhythm and typography ─────────────────────────────────── */
|
|
982
|
+
|
|
983
|
+
#nd-docs-layout {
|
|
984
|
+
background: var(--color-fd-background);
|
|
985
|
+
font-family: var(--fd-font-sans, ui-sans-serif, system-ui, sans-serif);
|
|
986
|
+
}
|
|
987
|
+
|
|
988
|
+
#nd-page > .prose h1 {
|
|
989
|
+
margin: 0 0 16px;
|
|
990
|
+
font-size: 36px;
|
|
991
|
+
font-weight: 400;
|
|
992
|
+
line-height: 1.14;
|
|
993
|
+
letter-spacing: -0.02em;
|
|
994
|
+
}
|
|
995
|
+
|
|
996
|
+
#nd-page > .prose h2 {
|
|
997
|
+
margin: 44px 0 14px;
|
|
998
|
+
padding-top: 26px;
|
|
999
|
+
border-top: 1px solid var(--color-fd-border);
|
|
1000
|
+
font-size: 24px;
|
|
1001
|
+
font-weight: 400;
|
|
1002
|
+
line-height: 1.24;
|
|
1003
|
+
letter-spacing: -0.01em;
|
|
1004
|
+
}
|
|
1005
|
+
|
|
1006
|
+
#nd-page > .prose h3 {
|
|
1007
|
+
margin: 30px 0 12px;
|
|
1008
|
+
font-size: 20px;
|
|
1009
|
+
font-weight: 400;
|
|
1010
|
+
line-height: 1.3;
|
|
1011
|
+
letter-spacing: 0;
|
|
1012
|
+
}
|
|
1013
|
+
|
|
1014
|
+
#nd-page > .prose h4,
|
|
1015
|
+
#nd-page > .prose h5,
|
|
1016
|
+
#nd-page > .prose h6 {
|
|
1017
|
+
margin: 24px 0 10px;
|
|
1018
|
+
font-weight: 400;
|
|
1019
|
+
letter-spacing: 0;
|
|
1020
|
+
}
|
|
1021
|
+
|
|
1022
|
+
#nd-page > .prose p {
|
|
1023
|
+
margin: 14px 0;
|
|
1024
|
+
color: color-mix(in srgb, var(--color-fd-foreground) 74%, transparent);
|
|
1025
|
+
font-size: 15.6px;
|
|
1026
|
+
line-height: 1.8;
|
|
1027
|
+
}
|
|
1028
|
+
|
|
1029
|
+
#nd-page > .prose ul,
|
|
1030
|
+
#nd-page > .prose ol {
|
|
1031
|
+
margin: 16px 0;
|
|
1032
|
+
padding-left: 24px;
|
|
1033
|
+
color: color-mix(in srgb, var(--color-fd-foreground) 78%, transparent);
|
|
1034
|
+
line-height: 1.75;
|
|
1035
|
+
}
|
|
1036
|
+
|
|
1037
|
+
#nd-page > .prose li {
|
|
1038
|
+
margin: 6px 0;
|
|
1039
|
+
}
|
|
1040
|
+
|
|
1041
|
+
#nd-docs-layout .fd-title-separator {
|
|
1042
|
+
display: none;
|
|
1043
|
+
}
|
|
1044
|
+
|
|
1045
|
+
/* The adapter portals title actions beside an MDX-owned h1. Removing the
|
|
1046
|
+
* portal wrapper from layout makes that block flow like the native page. */
|
|
1047
|
+
#nd-docs-layout .fd-title-decorations-host {
|
|
1048
|
+
display: contents;
|
|
1049
|
+
}
|
|
1050
|
+
|
|
1051
|
+
#nd-docs-layout .fd-below-title-block {
|
|
1052
|
+
display: flex;
|
|
1053
|
+
width: 100%;
|
|
1054
|
+
margin: 0 0 20px;
|
|
1055
|
+
}
|
|
1056
|
+
|
|
1057
|
+
#nd-docs-layout .fd-below-title-block .fd-actions-portal {
|
|
1058
|
+
width: 100%;
|
|
1059
|
+
}
|
|
1060
|
+
|
|
1061
|
+
@media (max-width: 1023px) {
|
|
1062
|
+
#nd-page > .prose h1 {
|
|
1063
|
+
font-size: 32px;
|
|
1064
|
+
line-height: 1.16;
|
|
1065
|
+
letter-spacing: 0;
|
|
1066
|
+
}
|
|
1067
|
+
|
|
1068
|
+
#nd-page > .prose h2 {
|
|
1069
|
+
margin-top: 34px;
|
|
1070
|
+
padding-top: 22px;
|
|
1071
|
+
font-size: 23px;
|
|
1072
|
+
}
|
|
1073
|
+
}
|
|
1074
|
+
|
|
362
1075
|
table {
|
|
363
1076
|
border: 1px solid var(--color-fd-border);
|
|
364
1077
|
border-radius: 0 !important;
|
|
@@ -389,10 +1102,59 @@ tr:last-child td {
|
|
|
389
1102
|
/* Target the fumadocs CodeBlock figure (shiki class) */
|
|
390
1103
|
figure.shiki,
|
|
391
1104
|
.fd-codeblock {
|
|
1105
|
+
--padding-left: 0px;
|
|
1106
|
+
--padding-right: 0px;
|
|
392
1107
|
border: 1px solid var(--color-fd-border) !important;
|
|
393
1108
|
border-radius: 0 !important;
|
|
1109
|
+
background: #141414 !important;
|
|
394
1110
|
overflow: hidden;
|
|
395
|
-
box-shadow:
|
|
1111
|
+
box-shadow: 3px 3px 0 0 var(--color-fd-border) !important;
|
|
1112
|
+
}
|
|
1113
|
+
|
|
1114
|
+
@media (min-width: 1024px) {
|
|
1115
|
+
figure.shiki,
|
|
1116
|
+
.fd-codeblock {
|
|
1117
|
+
margin: 20px 0 !important;
|
|
1118
|
+
}
|
|
1119
|
+
|
|
1120
|
+
figure.shiki span[style*="--shiki-dark"],
|
|
1121
|
+
.fd-codeblock span[style*="--shiki-dark"] {
|
|
1122
|
+
color: color-mix(in srgb, var(--color-fd-foreground) 74%, transparent) !important;
|
|
1123
|
+
}
|
|
1124
|
+
}
|
|
1125
|
+
|
|
1126
|
+
figure.shiki pre,
|
|
1127
|
+
.fd-codeblock pre {
|
|
1128
|
+
margin: 0;
|
|
1129
|
+
padding: 18px 20px !important;
|
|
1130
|
+
font-family: var(--fd-font-mono, ui-monospace, monospace) !important;
|
|
1131
|
+
font-size: 13px;
|
|
1132
|
+
line-height: 1.6;
|
|
1133
|
+
}
|
|
1134
|
+
|
|
1135
|
+
figure.shiki > div[role="region"],
|
|
1136
|
+
.fd-codeblock > div[role="region"] {
|
|
1137
|
+
padding-block: 0 !important;
|
|
1138
|
+
}
|
|
1139
|
+
|
|
1140
|
+
figure.shiki code,
|
|
1141
|
+
.fd-codeblock code {
|
|
1142
|
+
font-family: inherit !important;
|
|
1143
|
+
}
|
|
1144
|
+
|
|
1145
|
+
@media (max-width: 1023px) {
|
|
1146
|
+
figure.shiki,
|
|
1147
|
+
.fd-codeblock {
|
|
1148
|
+
margin: 16px 0;
|
|
1149
|
+
box-shadow: 2px 2px 0 0 var(--color-fd-border) !important;
|
|
1150
|
+
}
|
|
1151
|
+
|
|
1152
|
+
figure.shiki pre,
|
|
1153
|
+
.fd-codeblock pre {
|
|
1154
|
+
padding: 12px 11px !important;
|
|
1155
|
+
font-size: 12px;
|
|
1156
|
+
line-height: 1.5;
|
|
1157
|
+
}
|
|
396
1158
|
}
|
|
397
1159
|
|
|
398
1160
|
/* Copy button inside code blocks */
|
|
@@ -401,6 +1163,12 @@ figure.shiki button,
|
|
|
401
1163
|
border-radius: 0 !important;
|
|
402
1164
|
}
|
|
403
1165
|
|
|
1166
|
+
figure.shiki button[aria-label="Copy Text"],
|
|
1167
|
+
.fd-copy-btn {
|
|
1168
|
+
opacity: 1 !important;
|
|
1169
|
+
visibility: visible !important;
|
|
1170
|
+
}
|
|
1171
|
+
|
|
404
1172
|
/* Code block title bar */
|
|
405
1173
|
figure.shiki > div:first-child,
|
|
406
1174
|
.fd-codeblock-title {
|
|
@@ -450,16 +1218,108 @@ div:has(> [role="tablist"]) {
|
|
|
450
1218
|
border-color: var(--color-fd-border);
|
|
451
1219
|
}
|
|
452
1220
|
|
|
453
|
-
/* ───
|
|
1221
|
+
/* ─── Page footer + previous/next navigation ─────────────────────── */
|
|
454
1222
|
|
|
455
|
-
|
|
456
|
-
border-color: var(--color-fd-border);
|
|
1223
|
+
#nd-docs-layout .fd-page-footer > a {
|
|
457
1224
|
border-radius: 0 !important;
|
|
458
1225
|
}
|
|
459
1226
|
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
1227
|
+
#nd-docs-layout .fd-page-nav,
|
|
1228
|
+
#nd-docs-layout[data-fd-framework] .fd-page-nav {
|
|
1229
|
+
display: grid;
|
|
1230
|
+
width: 100%;
|
|
1231
|
+
max-width: 100%;
|
|
1232
|
+
grid-template-columns: 1fr;
|
|
1233
|
+
gap: 1rem;
|
|
1234
|
+
margin-top: 1rem;
|
|
1235
|
+
border-top: 0;
|
|
1236
|
+
padding-top: 0;
|
|
1237
|
+
}
|
|
1238
|
+
|
|
1239
|
+
#nd-docs-layout .fd-page-nav:has(.fd-page-nav-prev):has(.fd-page-nav-next),
|
|
1240
|
+
#nd-docs-layout[data-fd-framework]
|
|
1241
|
+
.fd-page-nav:has(.fd-page-nav-prev):has(.fd-page-nav-next) {
|
|
1242
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
1243
|
+
}
|
|
1244
|
+
|
|
1245
|
+
#nd-docs-layout .fd-page-nav-card,
|
|
1246
|
+
#nd-docs-layout[data-fd-framework] .fd-page-nav-card {
|
|
1247
|
+
display: flex;
|
|
1248
|
+
min-width: 0;
|
|
1249
|
+
min-height: 6.125rem;
|
|
1250
|
+
flex-direction: column;
|
|
1251
|
+
justify-content: flex-start;
|
|
1252
|
+
gap: 0.5rem;
|
|
1253
|
+
border: 1px solid var(--color-fd-border);
|
|
1254
|
+
border-radius: 0 !important;
|
|
1255
|
+
background: transparent;
|
|
1256
|
+
padding: 1rem;
|
|
1257
|
+
color: var(--color-fd-foreground);
|
|
1258
|
+
text-decoration: none;
|
|
1259
|
+
transition:
|
|
1260
|
+
background-color 150ms ease,
|
|
1261
|
+
border-color 150ms ease;
|
|
1262
|
+
}
|
|
1263
|
+
|
|
1264
|
+
#nd-docs-layout .fd-page-nav-card:hover,
|
|
1265
|
+
#nd-docs-layout[data-fd-framework] .fd-page-nav-card:hover {
|
|
1266
|
+
border-color: color-mix(in srgb, var(--color-fd-foreground) 28%, transparent);
|
|
1267
|
+
background: color-mix(in srgb, var(--color-fd-muted) 80%, transparent);
|
|
1268
|
+
}
|
|
1269
|
+
|
|
1270
|
+
#nd-docs-layout .fd-page-nav-next,
|
|
1271
|
+
#nd-docs-layout[data-fd-framework] .fd-page-nav-next {
|
|
1272
|
+
align-items: flex-end;
|
|
1273
|
+
text-align: right;
|
|
1274
|
+
}
|
|
1275
|
+
|
|
1276
|
+
#nd-docs-layout .fd-page-nav-title,
|
|
1277
|
+
#nd-docs-layout[data-fd-framework] .fd-page-nav-title {
|
|
1278
|
+
display: inline-flex;
|
|
1279
|
+
max-width: 100%;
|
|
1280
|
+
min-height: 0;
|
|
1281
|
+
align-items: center;
|
|
1282
|
+
gap: 0.375rem;
|
|
1283
|
+
overflow: hidden;
|
|
1284
|
+
color: var(--color-fd-foreground);
|
|
1285
|
+
font-size: 0.875rem;
|
|
1286
|
+
font-weight: 500;
|
|
1287
|
+
line-height: 1.5;
|
|
1288
|
+
overflow-wrap: anywhere;
|
|
1289
|
+
}
|
|
1290
|
+
|
|
1291
|
+
#nd-docs-layout .fd-page-nav-title svg,
|
|
1292
|
+
#nd-docs-layout[data-fd-framework] .fd-page-nav-title svg {
|
|
1293
|
+
width: 1rem;
|
|
1294
|
+
height: 1rem;
|
|
1295
|
+
flex-shrink: 0;
|
|
1296
|
+
}
|
|
1297
|
+
|
|
1298
|
+
#nd-docs-layout .fd-page-nav-description,
|
|
1299
|
+
#nd-docs-layout[data-fd-framework] .fd-page-nav-description {
|
|
1300
|
+
display: block;
|
|
1301
|
+
max-width: 100%;
|
|
1302
|
+
min-height: 0;
|
|
1303
|
+
overflow: hidden;
|
|
1304
|
+
color: var(--color-fd-muted-foreground);
|
|
1305
|
+
font-size: 0.975rem;
|
|
1306
|
+
font-weight: 400;
|
|
1307
|
+
line-height: 1.8;
|
|
1308
|
+
text-overflow: ellipsis;
|
|
1309
|
+
white-space: nowrap;
|
|
1310
|
+
}
|
|
1311
|
+
|
|
1312
|
+
@media (max-width: 640px) {
|
|
1313
|
+
#nd-docs-layout .fd-page-nav,
|
|
1314
|
+
#nd-docs-layout[data-fd-framework] .fd-page-nav {
|
|
1315
|
+
grid-template-columns: 1fr !important;
|
|
1316
|
+
}
|
|
1317
|
+
|
|
1318
|
+
#nd-docs-layout .fd-page-nav-next,
|
|
1319
|
+
#nd-docs-layout[data-fd-framework] .fd-page-nav-next {
|
|
1320
|
+
align-items: flex-start;
|
|
1321
|
+
text-align: left;
|
|
1322
|
+
}
|
|
463
1323
|
}
|
|
464
1324
|
|
|
465
1325
|
/* ─── Search dialog ───────────────────────────────────────────────── */
|
|
@@ -526,6 +1386,9 @@ hr {
|
|
|
526
1386
|
|
|
527
1387
|
/* ─── Page Actions (pixel-border overrides) ───────────────────────── */
|
|
528
1388
|
.fd-page-action-btn {
|
|
1389
|
+
height: 34px;
|
|
1390
|
+
gap: 8px;
|
|
1391
|
+
padding: 0 12px;
|
|
529
1392
|
border-radius: 0 !important;
|
|
530
1393
|
font-size: 0.75rem;
|
|
531
1394
|
letter-spacing: 0.03em;
|
|
@@ -959,43 +1822,158 @@ hr {
|
|
|
959
1822
|
|
|
960
1823
|
/* ─── Omni Command Palette (pixel-border theme) ─────────────────── */
|
|
961
1824
|
|
|
1825
|
+
.omni-overlay {
|
|
1826
|
+
z-index: 200;
|
|
1827
|
+
background: color-mix(in srgb, var(--color-fd-background) 64%, transparent);
|
|
1828
|
+
backdrop-filter: blur(3px);
|
|
1829
|
+
}
|
|
1830
|
+
|
|
962
1831
|
.omni-content {
|
|
1832
|
+
--omni-content-top: clamp(72px, 14vh, 104px);
|
|
1833
|
+
z-index: 201;
|
|
1834
|
+
width: min(680px, calc(100% - 24px));
|
|
1835
|
+
overflow: hidden;
|
|
963
1836
|
border-radius: 0 !important;
|
|
964
1837
|
border: 1px solid var(--fd-pixel-modal-border);
|
|
1838
|
+
background: var(--color-fd-background);
|
|
965
1839
|
box-shadow:
|
|
966
1840
|
2px 2px 0 0 var(--fd-pixel-modal-shadow),
|
|
967
1841
|
0 0 0 1px color-mix(in srgb, var(--color-fd-foreground) 3%, transparent);
|
|
968
1842
|
}
|
|
969
1843
|
|
|
970
|
-
.omni-
|
|
971
|
-
|
|
1844
|
+
.omni-header {
|
|
1845
|
+
background: color-mix(in srgb, var(--color-fd-background) 96%, var(--color-fd-foreground));
|
|
972
1846
|
}
|
|
973
1847
|
|
|
974
|
-
.omni-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
1848
|
+
.omni-search-row {
|
|
1849
|
+
min-height: 54px;
|
|
1850
|
+
padding: 0 14px;
|
|
1851
|
+
}
|
|
1852
|
+
|
|
1853
|
+
.omni-search-icon svg {
|
|
1854
|
+
width: 18px;
|
|
1855
|
+
height: 18px;
|
|
1856
|
+
}
|
|
1857
|
+
|
|
1858
|
+
.omni-search-input {
|
|
1859
|
+
font-family: var(--fd-font-sans, system-ui, -apple-system, sans-serif);
|
|
1860
|
+
font-size: 15.5px;
|
|
1861
|
+
line-height: 1.5;
|
|
978
1862
|
}
|
|
979
1863
|
|
|
980
1864
|
.omni-close-btn {
|
|
1865
|
+
min-width: 36px;
|
|
1866
|
+
height: 30px;
|
|
1867
|
+
padding: 0 8px;
|
|
981
1868
|
border-radius: 0 !important;
|
|
1869
|
+
font-size: 10px;
|
|
1870
|
+
letter-spacing: 0.04em;
|
|
982
1871
|
}
|
|
983
1872
|
|
|
984
|
-
.omni-
|
|
985
|
-
|
|
1873
|
+
.omni-close-btn:focus-visible,
|
|
1874
|
+
.omni-filter-button:focus-visible,
|
|
1875
|
+
.omni-filter-option:focus-visible,
|
|
1876
|
+
.omni-item:focus-visible {
|
|
1877
|
+
outline: 1px solid var(--color-fd-ring, var(--color-fd-foreground));
|
|
1878
|
+
outline-offset: -2px;
|
|
986
1879
|
}
|
|
987
1880
|
|
|
988
|
-
.omni-
|
|
989
|
-
|
|
1881
|
+
.omni-body {
|
|
1882
|
+
max-height: min(500px, calc(100dvh - var(--omni-content-top) - 112px));
|
|
1883
|
+
padding: 0;
|
|
1884
|
+
}
|
|
1885
|
+
|
|
1886
|
+
.omni-group + .omni-group {
|
|
1887
|
+
border-top: 1px solid var(--color-fd-border);
|
|
990
1888
|
}
|
|
991
1889
|
|
|
992
1890
|
.omni-group-label {
|
|
1891
|
+
display: block;
|
|
1892
|
+
padding: 8px 14px 6px;
|
|
1893
|
+
border-bottom: 1px solid var(--color-fd-border);
|
|
1894
|
+
color: var(--color-fd-muted-foreground);
|
|
993
1895
|
font-family: var(--fd-font-mono, ui-monospace, monospace);
|
|
1896
|
+
font-size: 10px;
|
|
1897
|
+
line-height: 1.2;
|
|
994
1898
|
letter-spacing: 0.08em;
|
|
1899
|
+
text-transform: uppercase;
|
|
1900
|
+
}
|
|
1901
|
+
|
|
1902
|
+
.omni-group-items {
|
|
1903
|
+
gap: 0;
|
|
1904
|
+
}
|
|
1905
|
+
|
|
1906
|
+
.omni-item {
|
|
1907
|
+
border-radius: 0 !important;
|
|
1908
|
+
padding: 11px 14px;
|
|
1909
|
+
border-bottom: 1px solid var(--color-fd-border);
|
|
1910
|
+
transition:
|
|
1911
|
+
color 80ms ease,
|
|
1912
|
+
background-color 80ms ease;
|
|
1913
|
+
}
|
|
1914
|
+
|
|
1915
|
+
.omni-group-items > .omni-item:last-child {
|
|
1916
|
+
border-bottom: 0;
|
|
1917
|
+
}
|
|
1918
|
+
|
|
1919
|
+
.omni-item:hover,
|
|
1920
|
+
.omni-item-active {
|
|
1921
|
+
background: color-mix(in srgb, var(--color-fd-foreground) 7%, transparent);
|
|
1922
|
+
}
|
|
1923
|
+
|
|
1924
|
+
.omni-item-active {
|
|
1925
|
+
box-shadow: inset 2px 0 0 var(--color-fd-foreground);
|
|
1926
|
+
}
|
|
1927
|
+
|
|
1928
|
+
.omni-item-subtitle {
|
|
1929
|
+
margin-bottom: 2px;
|
|
1930
|
+
font-family: var(--fd-font-mono, ui-monospace, monospace);
|
|
1931
|
+
font-size: 10.5px;
|
|
1932
|
+
line-height: 1.4;
|
|
1933
|
+
letter-spacing: 0.01em;
|
|
1934
|
+
}
|
|
1935
|
+
|
|
1936
|
+
.omni-item-label {
|
|
1937
|
+
font-size: 14px;
|
|
1938
|
+
line-height: 1.35;
|
|
1939
|
+
}
|
|
1940
|
+
|
|
1941
|
+
.omni-item-description {
|
|
1942
|
+
-webkit-line-clamp: 2;
|
|
1943
|
+
margin-top: 6px;
|
|
1944
|
+
padding-left: 0;
|
|
1945
|
+
border-left: 0;
|
|
1946
|
+
color: var(--color-fd-muted-foreground);
|
|
1947
|
+
font-size: 12.5px;
|
|
1948
|
+
line-height: 1.5;
|
|
1949
|
+
}
|
|
1950
|
+
|
|
1951
|
+
.omni-empty {
|
|
1952
|
+
display: flex;
|
|
1953
|
+
min-height: 132px;
|
|
1954
|
+
flex-direction: column;
|
|
1955
|
+
align-items: center;
|
|
1956
|
+
justify-content: center;
|
|
1957
|
+
padding: 24px 16px;
|
|
1958
|
+
}
|
|
1959
|
+
|
|
1960
|
+
.omni-empty-icon {
|
|
1961
|
+
border-radius: 0 !important;
|
|
1962
|
+
border: 1px solid var(--color-fd-border);
|
|
1963
|
+
background: transparent;
|
|
1964
|
+
}
|
|
1965
|
+
|
|
1966
|
+
.omni-kbd,
|
|
1967
|
+
.omni-kbd-sm {
|
|
1968
|
+
border-radius: 0 !important;
|
|
1969
|
+
border: 1px solid var(--color-fd-border, hsl(0 0% 15%));
|
|
995
1970
|
}
|
|
996
1971
|
|
|
997
1972
|
.omni-footer-inner {
|
|
1973
|
+
min-height: 42px;
|
|
1974
|
+
padding: 8px 12px;
|
|
998
1975
|
font-family: var(--fd-font-mono, ui-monospace, monospace);
|
|
1976
|
+
font-size: 10.5px;
|
|
999
1977
|
}
|
|
1000
1978
|
|
|
1001
1979
|
.omni-footer-hint svg {
|
|
@@ -1010,6 +1988,57 @@ hr {
|
|
|
1010
1988
|
.omni-highlight {
|
|
1011
1989
|
background: color-mix(in srgb, var(--color-fd-primary, #6366f1) 25%, transparent);
|
|
1012
1990
|
border-radius: 0 !important;
|
|
1991
|
+
color: inherit;
|
|
1992
|
+
text-decoration: none;
|
|
1993
|
+
}
|
|
1994
|
+
|
|
1995
|
+
@media (max-width: 639px) {
|
|
1996
|
+
.omni-content {
|
|
1997
|
+
--omni-content-top: 8px;
|
|
1998
|
+
width: calc(100% - 16px);
|
|
1999
|
+
max-height: calc(100dvh - 16px);
|
|
2000
|
+
}
|
|
2001
|
+
|
|
2002
|
+
.omni-search-row {
|
|
2003
|
+
min-height: 52px;
|
|
2004
|
+
padding: 0 12px;
|
|
2005
|
+
}
|
|
2006
|
+
|
|
2007
|
+
.omni-search-input {
|
|
2008
|
+
font-size: 16px;
|
|
2009
|
+
}
|
|
2010
|
+
|
|
2011
|
+
.omni-body {
|
|
2012
|
+
max-height: min(500px, calc(100dvh - 108px));
|
|
2013
|
+
}
|
|
2014
|
+
|
|
2015
|
+
.omni-item {
|
|
2016
|
+
padding: 10px 12px;
|
|
2017
|
+
}
|
|
2018
|
+
|
|
2019
|
+
.omni-item-description {
|
|
2020
|
+
font-size: 12px;
|
|
2021
|
+
line-height: 1.45;
|
|
2022
|
+
}
|
|
2023
|
+
|
|
2024
|
+
.omni-footer-inner {
|
|
2025
|
+
min-height: 40px;
|
|
2026
|
+
gap: 8px;
|
|
2027
|
+
padding: 7px 10px;
|
|
2028
|
+
font-size: 10px;
|
|
2029
|
+
}
|
|
2030
|
+
|
|
2031
|
+
.omni-footer-hints {
|
|
2032
|
+
gap: 7px;
|
|
2033
|
+
}
|
|
2034
|
+
|
|
2035
|
+
.omni-footer-hint {
|
|
2036
|
+
gap: 3px;
|
|
2037
|
+
}
|
|
2038
|
+
|
|
2039
|
+
.omni-filter-label {
|
|
2040
|
+
display: none;
|
|
2041
|
+
}
|
|
1013
2042
|
}
|
|
1014
2043
|
|
|
1015
2044
|
/* ─── Feedback (pixel-border theme) ──────────────────────────────── */
|