@farming-labs/theme 0.2.44 → 0.2.46

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/styles/ledger.css CHANGED
@@ -1,7 +1,18 @@
1
1
  /* @farming-labs/theme - ledger theme CSS
2
2
  * Stripe Docs-inspired product documentation UI without Stripe branding.
3
3
  */
4
- @import "./presets/neutral.css";
4
+ @import "./bundles/shared-framework.css";
5
+
6
+ #nd-docs-layout[data-fd-framework] {
7
+ --fd-framework-page-columns-with-toc: minmax(0, 1fr)
8
+ minmax(0, min(900px, calc(100% - var(--fd-toc-width, 236px))))
9
+ var(--fd-toc-width, 236px) minmax(0, 1fr);
10
+ --fd-framework-article-column: 2;
11
+ --fd-framework-toc-column: 3;
12
+ --fd-framework-article-width: min(900px, 100%);
13
+ --fd-framework-article-justify: center;
14
+ --fd-framework-article-padding: 56px 32px 24px;
15
+ }
5
16
 
6
17
  :root {
7
18
  --color-fd-primary: #5f6cf6;
@@ -312,7 +323,7 @@ aside#nd-sidebar-mobile a[data-active="true"]:hover,
312
323
  .fd-page-description,
313
324
  .fd-docs-content p,
314
325
  .fd-docs-content li,
315
- .fd-docs-content td,
326
+ :is(.fd-docs-content, .prose) td,
316
327
  .fd-docs-content blockquote {
317
328
  color: var(--color-fd-muted-foreground);
318
329
  line-height: 1.7;
@@ -334,7 +345,9 @@ aside#nd-sidebar-mobile a[data-active="true"]:hover,
334
345
  .fd-hover-link-card,
335
346
  .fd-page-nav,
336
347
  .fd-page-nav-card,
337
- [class*="fd-callout"],
348
+ .fd-callout,
349
+ [data-callout],
350
+ [style*="--callout-color"],
338
351
  .fd-page-action-menu,
339
352
  .fd-ai-dialog,
340
353
  .fd-ai-fm-input-container,
@@ -423,6 +436,7 @@ aside#nd-sidebar-mobile a[data-active="true"]:hover,
423
436
 
424
437
  .fd-tabs-trigger[data-state="active"],
425
438
  .fd-tab-trigger[data-state="active"],
439
+ .fd-tab-trigger.fd-tab-active,
426
440
  [role="tab"][aria-selected="true"],
427
441
  [role="tab"][data-active="true"] {
428
442
  background: var(--color-fd-card) !important;
@@ -524,7 +538,7 @@ figure.shiki:has(figcaption) > div:first-child > div:last-child {
524
538
  }
525
539
 
526
540
  .fd-table-wrapper,
527
- .fd-docs-content table,
541
+ :is(.fd-docs-content, .prose) table,
528
542
  .prose table {
529
543
  border: 1px solid var(--fd-ledger-soft-border) !important;
530
544
  border-radius: 0.5rem !important;
@@ -540,7 +554,8 @@ figure.shiki:has(figcaption) > div:first-child > div:last-child {
540
554
  }
541
555
 
542
556
  .fd-callout,
543
- [class*="fd-callout"] {
557
+ [data-callout],
558
+ [style*="--callout-color"] {
544
559
  background: color-mix(in srgb, var(--color-fd-primary) 7%, var(--color-fd-card)) !important;
545
560
  }
546
561
 
@@ -2,7 +2,14 @@
2
2
  * Inspired by better-auth.com — pixel-perfect borders, clean dark UI.
3
3
  * Uses the "black" color preset as the base.
4
4
  */
5
- @import "./presets/black.css";
5
+ @import "./bundles/shared-framework.css";
6
+
7
+ #nd-docs-layout[data-fd-framework] {
8
+ --fd-framework-page-justify: stretch;
9
+ --fd-framework-page-columns-with-toc: minmax(0, calc(100% - var(--fd-toc-width, 268px)))
10
+ var(--fd-toc-width, 268px);
11
+ --fd-framework-article-padding: 56px 32px 24px;
12
+ }
6
13
 
7
14
  :root {
8
15
  --color-fd-background: oklch(1 0 0);
@@ -152,8 +159,8 @@ code:not(pre code) {
152
159
 
153
160
  /* ─── Docs grid: sidebar (sticky left, full height) | content | TOC ─────── */
154
161
  @media (min-width: 768px) {
155
- #nd-docs-layout,
156
- [style*="fd-sidebar-col"] {
162
+ #nd-docs-layout:not([data-fd-framework]),
163
+ #nd-docs-layout:not([data-fd-framework]) [style*="fd-sidebar-col"] {
157
164
  grid-template-columns: var(--fd-sidebar-col, 0px) 1fr min-content !important;
158
165
  }
159
166
  /* Sidebar stretches to end and sticks on scroll; no max-height so content isn't clipped */
@@ -167,7 +174,7 @@ code:not(pre code) {
167
174
  }
168
175
 
169
176
  @media (min-width: 1024px) {
170
- #nd-docs-layout.grid {
177
+ #nd-docs-layout.grid:not([data-fd-framework]) {
171
178
  grid-template:
172
179
  "sidebar header toc"
173
180
  "sidebar toc-popover toc"
@@ -358,6 +365,10 @@ table {
358
365
  overflow: hidden;
359
366
  }
360
367
 
368
+ .fd-table-wrapper {
369
+ border-radius: 0 !important;
370
+ }
371
+
361
372
  th {
362
373
  background: var(--color-fd-muted);
363
374
  color: var(--color-fd-foreground);
@@ -376,7 +387,8 @@ tr:last-child td {
376
387
  /* ─── Code blocks: single border, rounded-none (light + dark) ───────── */
377
388
 
378
389
  /* Target the fumadocs CodeBlock figure (shiki class) */
379
- figure.shiki {
390
+ figure.shiki,
391
+ .fd-codeblock {
380
392
  border: 1px solid var(--color-fd-border) !important;
381
393
  border-radius: 0 !important;
382
394
  overflow: hidden;
@@ -384,27 +396,33 @@ figure.shiki {
384
396
  }
385
397
 
386
398
  /* Copy button inside code blocks */
387
- figure.shiki button {
399
+ figure.shiki button,
400
+ .fd-copy-btn {
388
401
  border-radius: 0 !important;
389
402
  }
390
403
 
391
404
  /* Code block title bar */
392
- figure.shiki > div:first-child {
405
+ figure.shiki > div:first-child,
406
+ .fd-codeblock-title {
393
407
  border-radius: 0 !important;
394
408
  }
395
409
 
396
410
  /* ─── Tabs (package manager / code tabs) — light + dark ────────────── */
397
411
 
398
- [role="tablist"] {
412
+ [role="tablist"],
413
+ .fd-tabs,
414
+ .fd-tabs-list {
399
415
  border-radius: 0 !important;
400
416
  }
401
417
 
402
418
  [role="tablist"] button,
403
- [role="tab"] {
419
+ [role="tab"],
420
+ .fd-tab-trigger {
404
421
  border-radius: 0 !important;
405
422
  }
406
423
 
407
- [role="tabpanel"] {
424
+ [role="tabpanel"],
425
+ .fd-tab-panel {
408
426
  border-radius: 0 !important;
409
427
  }
410
428
 
@@ -425,7 +443,10 @@ div:has(> [role="tablist"]) {
425
443
 
426
444
  /* ─── Callouts: visible border (light + dark) ──────────────────────── */
427
445
 
428
- [class*="bg-fd-card"] {
446
+ [class*="bg-fd-card"],
447
+ .fd-callout,
448
+ [data-callout],
449
+ [style*="--callout-color"] {
429
450
  border-color: var(--color-fd-border);
430
451
  }
431
452
 
package/styles/shiny.css CHANGED
@@ -1,7 +1,7 @@
1
1
  /* @farming-labs/theme — shiny theme CSS
2
2
  * Clerk docs-inspired clean, polished light/dark theme with purple accents.
3
3
  */
4
- @import "./presets/neutral.css";
4
+ @import "./bundles/shared-framework.css";
5
5
 
6
6
  /* ─── Shiny color overrides ───────────────────────────────────────── */
7
7
 
@@ -381,7 +381,8 @@
381
381
 
382
382
  /* ─── Inline code (Clerk style — subtle, no heavy borders) ─────────── */
383
383
 
384
- .fd-docs-content :not(pre) > code {
384
+ .fd-docs-content :not(pre) > code,
385
+ .fd-page-body :not(pre) > code {
385
386
  padding: 2px 6px;
386
387
  border: 1px solid var(--color-fd-border);
387
388
  font-size: 0.8125rem;
@@ -393,7 +394,8 @@
393
394
 
394
395
  /* ─── Links in prose (purple underline like Clerk) ─────────────────── */
395
396
 
396
- .fd-docs-content a:not(.fd-page-nav-card):not([class]) {
397
+ .fd-docs-content a:not(.fd-page-nav-card):not([class]),
398
+ .fd-page-body a:not(.fd-page-nav-card):not([class]) {
397
399
  text-decoration: underline;
398
400
  text-underline-offset: 3px;
399
401
  text-decoration-color: var(--color-fd-primary);
@@ -403,13 +405,19 @@
403
405
  transition: opacity 150ms;
404
406
  }
405
407
 
406
- .fd-docs-content a:not(.fd-page-nav-card):not([class]):hover {
408
+ .fd-docs-content a:not(.fd-page-nav-card):not([class]):hover,
409
+ .fd-page-body a:not(.fd-page-nav-card):not([class]):hover {
407
410
  opacity: 0.8;
408
411
  }
409
412
 
410
413
  /* ─── Tables (clean, rounded like Clerk) ───────────────────────────── */
411
414
 
412
- .fd-docs-content table {
415
+ .fd-table-wrapper {
416
+ border-radius: 0.75rem;
417
+ overflow: hidden;
418
+ }
419
+
420
+ :is(.fd-docs-content, .prose, .fd-page-body) table {
413
421
  border-collapse: separate;
414
422
  border-spacing: 0;
415
423
  background: var(--color-fd-card);
@@ -419,7 +427,7 @@
419
427
  width: 100%;
420
428
  }
421
429
 
422
- .fd-docs-content th {
430
+ :is(.fd-docs-content, .prose, .fd-page-body) th {
423
431
  background: var(--color-fd-muted);
424
432
  font-weight: 600;
425
433
  font-size: 0.8125rem;
@@ -428,20 +436,21 @@
428
436
  color: var(--color-fd-muted-foreground);
429
437
  }
430
438
 
431
- .fd-docs-content th,
432
- .fd-docs-content td {
439
+ :is(.fd-docs-content, .prose, .fd-page-body) th,
440
+ :is(.fd-docs-content, .prose, .fd-page-body) td {
433
441
  padding: 0.75rem 1rem;
434
442
  border-bottom: 1px solid var(--color-fd-border);
435
443
  font-size: 0.875rem;
436
444
  }
437
445
 
438
- .fd-docs-content tr:last-child td {
446
+ :is(.fd-docs-content, .prose, .fd-page-body) tr:last-child td {
439
447
  border-bottom: none;
440
448
  }
441
449
 
442
450
  /* ─── Blockquotes (purple left border like Clerk) ──────────────────── */
443
451
 
444
- .fd-docs-content blockquote {
452
+ .fd-docs-content blockquote,
453
+ .fd-page-body blockquote {
445
454
  border-left: 3px solid var(--color-fd-primary);
446
455
  padding-left: 1rem;
447
456
  color: var(--color-fd-muted-foreground);
@@ -451,33 +460,40 @@
451
460
 
452
461
  /* ─── Horizontal rule ──────────────────────────────────────────────── */
453
462
 
454
- .fd-docs-content hr {
463
+ .fd-docs-content hr,
464
+ .fd-page-body hr {
455
465
  border-color: var(--color-fd-border);
456
466
  }
457
467
 
458
468
  /* ─── Code blocks (Clerk-style dark, no radius on inner, rounded wrapper) */
459
469
 
460
- figure.shiki {
470
+ figure.shiki,
471
+ .fd-codeblock {
461
472
  border-radius: 0.625rem;
462
473
  overflow: hidden;
463
474
  border: 1px solid var(--color-fd-border);
464
475
  }
465
476
 
466
- :root figure.shiki {
477
+ :root figure.shiki,
478
+ :root .fd-codeblock {
467
479
  border-color: hsl(240, 6%, 88%);
468
480
  }
469
481
 
470
- .dark figure.shiki {
482
+ .dark figure.shiki,
483
+ .dark .fd-codeblock {
471
484
  border-color: hsl(240, 5%, 20%);
472
485
  }
473
486
 
474
487
  /* ─── Tabs (Clerk code tab style) ───────────────────────────────────── */
475
488
 
476
- [role="tablist"] {
489
+ [role="tablist"],
490
+ .fd-tabs,
491
+ .fd-tabs-list {
477
492
  border-bottom: 1px solid var(--color-fd-border);
478
493
  }
479
494
 
480
- [role="tab"] {
495
+ [role="tab"],
496
+ .fd-tab-trigger {
481
497
  font-size: 0.8125rem;
482
498
  font-weight: 450;
483
499
  padding: 0.5rem 0.875rem;
@@ -490,7 +506,8 @@ figure.shiki {
490
506
  }
491
507
 
492
508
  [role="tab"][aria-selected="true"],
493
- [role="tab"][data-state="active"] {
509
+ [role="tab"][data-state="active"],
510
+ .fd-tab-trigger.fd-tab-active {
494
511
  color: var(--color-fd-foreground);
495
512
  border-bottom-color: var(--color-fd-primary);
496
513
  font-weight: 500;
@@ -498,7 +515,9 @@ figure.shiki {
498
515
 
499
516
  /* ─── Callout (clean, subtle) ───────────────────────────────────────── */
500
517
 
501
- [style*="--callout-color"] {
518
+ [style*="--callout-color"],
519
+ .fd-callout,
520
+ [data-callout] {
502
521
  border-radius: 0.625rem;
503
522
  border-width: 1px;
504
523
  }
@@ -595,12 +614,15 @@ details > :not(summary) {
595
614
  opacity: 1;
596
615
  }
597
616
 
598
- #nd-toc a[data-active="true"] {
617
+ #nd-toc a[data-active="true"],
618
+ .fd-toc-link.fd-toc-link-active,
619
+ .fd-toc-clerk .fd-toc-link[data-active="true"] {
599
620
  box-shadow: inset 2px 0 0 var(--color-fd-primary);
600
621
  color: var(--color-fd-primary);
601
622
  }
602
623
 
603
- #nd-toc a[data-active="false"] {
624
+ #nd-toc a[data-active="false"],
625
+ .fd-toc-link {
604
626
  box-shadow: none;
605
627
  }
606
628
 
@@ -1,7 +1,7 @@
1
1
  /* @farming-labs/theme - threadline theme CSS
2
2
  * Compact chat-docs UI with neutral shadcn-style surfaces.
3
3
  */
4
- @import "./presets/neutral.css";
4
+ @import "./bundles/shared-framework.css";
5
5
 
6
6
  :root {
7
7
  --radius: 0.625rem;
@@ -141,7 +141,7 @@ body:has(#nd-docs-layout) {
141
141
  }
142
142
 
143
143
  @media (min-width: 1280px) {
144
- #nd-docs-layout {
144
+ #nd-docs-layout:not([data-fd-framework]) {
145
145
  max-width: var(--fd-threadline-frame-width) !important;
146
146
  margin-inline: auto !important;
147
147
  grid-template-columns:
@@ -370,7 +370,7 @@ aside#nd-sidebar-mobile a[data-active="true"]:hover,
370
370
  .fd-page-description,
371
371
  .fd-docs-content p,
372
372
  .fd-docs-content li,
373
- .fd-docs-content td,
373
+ :is(.fd-docs-content, .prose) td,
374
374
  .fd-docs-content blockquote,
375
375
  .prose p,
376
376
  .prose li,
@@ -428,7 +428,7 @@ aside#nd-sidebar-mobile a[data-active="true"]:hover,
428
428
  background: var(--muted) !important;
429
429
  }
430
430
 
431
- #nd-page :is([style*="--callout-color"], .fd-callout, [data-callout]) {
431
+ :is(#nd-page, #nd-docs-layout[data-fd-framework] .fd-page-body) :is([style*="--callout-color"], .fd-callout, [data-callout]) {
432
432
  border: 1px solid color-mix(in srgb, var(--border) 86%, transparent) !important;
433
433
  border-radius: 0.625rem !important;
434
434
  background: color-mix(in srgb, var(--muted) 42%, transparent) !important;
@@ -436,21 +436,21 @@ aside#nd-sidebar-mobile a[data-active="true"]:hover,
436
436
  box-shadow: none !important;
437
437
  }
438
438
 
439
- #nd-page :is([style*="--callout-color"], .fd-callout, [data-callout]) * {
439
+ :is(#nd-page, #nd-docs-layout[data-fd-framework] .fd-page-body) :is([style*="--callout-color"], .fd-callout, [data-callout]) * {
440
440
  color: inherit;
441
441
  }
442
442
 
443
- #nd-page :is([style*="--callout-color"], .fd-callout, [data-callout]) a {
443
+ :is(#nd-page, #nd-docs-layout[data-fd-framework] .fd-page-body) :is([style*="--callout-color"], .fd-callout, [data-callout]) a {
444
444
  color: var(--fd-assistant-link) !important;
445
445
  text-decoration-color: color-mix(in srgb, var(--fd-assistant-link) 35%, transparent);
446
446
  }
447
447
 
448
- #nd-page :is([style*="--callout-color"], .fd-callout, [data-callout]) > svg {
448
+ :is(#nd-page, #nd-docs-layout[data-fd-framework] .fd-page-body) :is([style*="--callout-color"], .fd-callout, [data-callout]) > svg {
449
449
  color: var(--muted-foreground) !important;
450
450
  fill: color-mix(in srgb, var(--muted-foreground) 18%, transparent) !important;
451
451
  }
452
452
 
453
- #nd-page :is([style*="--callout-color"], .fd-callout, [data-callout]) > [role="none"] {
453
+ :is(#nd-page, #nd-docs-layout[data-fd-framework] .fd-page-body) :is([style*="--callout-color"], .fd-callout, [data-callout]) > [role="none"] {
454
454
  background: color-mix(in srgb, var(--muted-foreground) 28%, transparent) !important;
455
455
  }
456
456
 
@@ -516,7 +516,7 @@ figure.shiki button[aria-label*="Copy"]:hover {
516
516
  }
517
517
 
518
518
  .fd-table-wrapper,
519
- .fd-docs-content table,
519
+ :is(.fd-docs-content, .prose) table,
520
520
  .prose table {
521
521
  border: 1px solid color-mix(in srgb, var(--border) 86%, transparent) !important;
522
522
  border-radius: 0.75rem !important;
@@ -525,7 +525,7 @@ figure.shiki button[aria-label*="Copy"]:hover {
525
525
  overflow: hidden;
526
526
  }
527
527
 
528
- .fd-docs-content table,
528
+ :is(.fd-docs-content, .prose) table,
529
529
  .prose table {
530
530
  width: 100% !important;
531
531
  border-collapse: separate !important;
@@ -538,13 +538,13 @@ figure.shiki button[aria-label*="Copy"]:hover {
538
538
  background: transparent !important;
539
539
  }
540
540
 
541
- .fd-docs-content thead,
541
+ :is(.fd-docs-content, .prose) thead,
542
542
  .prose thead {
543
543
  background: color-mix(in srgb, var(--muted) 48%, transparent) !important;
544
544
  }
545
545
 
546
546
  .fd-table-wrapper th,
547
- .fd-docs-content th,
547
+ :is(.fd-docs-content, .prose) th,
548
548
  .prose th {
549
549
  background: transparent !important;
550
550
  color: var(--muted-foreground) !important;
@@ -553,21 +553,21 @@ figure.shiki button[aria-label*="Copy"]:hover {
553
553
 
554
554
  .fd-table-wrapper th,
555
555
  .fd-table-wrapper td,
556
- .fd-docs-content th,
557
- .fd-docs-content td,
556
+ :is(.fd-docs-content, .prose) th,
557
+ :is(.fd-docs-content, .prose) td,
558
558
  .prose th,
559
559
  .prose td {
560
560
  border-color: color-mix(in srgb, var(--border) 86%, transparent) !important;
561
561
  padding: 0.75rem 1rem !important;
562
562
  }
563
563
 
564
- .fd-docs-content tbody tr:nth-child(even),
564
+ :is(.fd-docs-content, .prose) tbody tr:nth-child(even),
565
565
  .prose tbody tr:nth-child(even) {
566
566
  background: color-mix(in srgb, var(--muted) 18%, transparent) !important;
567
567
  }
568
568
 
569
569
  .fd-table-wrapper td,
570
- .fd-docs-content td,
570
+ :is(.fd-docs-content, .prose) td,
571
571
  .prose td {
572
572
  background: transparent !important;
573
573
  }
@@ -1223,6 +1223,7 @@ figure.shiki button[aria-label*="Copy"]:hover {
1223
1223
 
1224
1224
  .fd-tabs-trigger[data-state="active"],
1225
1225
  .fd-tab-trigger[data-state="active"],
1226
+ .fd-tab-trigger.fd-tab-active,
1226
1227
  [role="tab"][aria-selected="true"],
1227
1228
  [role="tab"][data-active="true"] {
1228
1229
  background: var(--background) !important;