@farming-labs/theme 0.2.46 → 0.2.47

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.
@@ -3,6 +3,10 @@ import { CopyMarkdownFormat, DocsFeedbackData, ReadingTimeFormat } from "@farmin
3
3
  import * as react_jsx_runtime0 from "react/jsx-runtime";
4
4
 
5
5
  //#region src/docs-page-client.d.ts
6
+ interface PageNavigationItem {
7
+ name: string;
8
+ url: string;
9
+ }
6
10
  /** Serializable provider — icon is an HTML string, not JSX. */
7
11
  interface SerializedProvider {
8
12
  name: string;
@@ -55,6 +59,8 @@ interface DocsPageClientProps {
55
59
  readingTime?: number | null;
56
60
  /** Reading-time label style. */
57
61
  readingTimeFormat?: ReadingTimeFormat;
62
+ previousPage?: PageNavigationItem | null;
63
+ nextPage?: PageNavigationItem | null;
58
64
  /** Map of pathname → serialized Schema.org JSON-LD. */
59
65
  structuredDataMap?: Record<string, string>;
60
66
  /** Direct serialized Schema.org JSON-LD override for the current page. */
@@ -119,6 +125,8 @@ declare function DocsPageClient({
119
125
  readingTimeMap,
120
126
  readingTime: readingTimeProp,
121
127
  readingTimeFormat,
128
+ previousPage,
129
+ nextPage,
122
130
  structuredDataMap,
123
131
  structuredData: structuredDataProp,
124
132
  readingTimeEnabled,
@@ -255,7 +255,7 @@ function findThreadlineTocActionsContainer() {
255
255
  }
256
256
  return toc.parentElement ?? toc;
257
257
  }
258
- function DocsPageClient({ tocEnabled, tocStyle = "default", breadcrumbEnabled = true, changelogBasePath, entry = "docs", publicPath, locale, copyMarkdown = false, copyMarkdownFormat, copyMarkdownIncludeTitle, copyMarkdownLabel, copyMarkdownCopiedLabel, openDocs = false, openDocsProviders, openDocsTarget, openDocsPrompt, pageActionsPosition = "below-title", pageActionsAlignment = "left", githubUrl, contentDir, githubBranch = "main", githubDirectory, editOnGithubUrl, lastModifiedMap, lastModified: lastModifiedProp, readingTimeMap, readingTime: readingTimeProp, readingTimeFormat = "long", structuredDataMap, structuredData: structuredDataProp, readingTimeEnabled = false, lastUpdatedEnabled = true, lastUpdatedLabel = "Last updated", lastUpdatedPosition = "footer", llmsTxtEnabled = false, descriptionMap, description, feedbackEnabled = false, feedbackQuestion, feedbackPlaceholder, feedbackRequireComment, feedbackPositiveLabel, feedbackNegativeLabel, feedbackSubmitLabel, feedbackSuccessMessage, feedbackErrorMessage, feedbackOnFeedback, analytics = false, children }) {
258
+ function DocsPageClient({ tocEnabled, tocStyle = "default", breadcrumbEnabled = true, changelogBasePath, entry = "docs", publicPath, locale, copyMarkdown = false, copyMarkdownFormat, copyMarkdownIncludeTitle, copyMarkdownLabel, copyMarkdownCopiedLabel, openDocs = false, openDocsProviders, openDocsTarget, openDocsPrompt, pageActionsPosition = "below-title", pageActionsAlignment = "left", githubUrl, contentDir, githubBranch = "main", githubDirectory, editOnGithubUrl, lastModifiedMap, lastModified: lastModifiedProp, readingTimeMap, readingTime: readingTimeProp, readingTimeFormat = "long", previousPage, nextPage, structuredDataMap, structuredData: structuredDataProp, readingTimeEnabled = false, lastUpdatedEnabled = true, lastUpdatedLabel = "Last updated", lastUpdatedPosition = "footer", llmsTxtEnabled = false, descriptionMap, description, feedbackEnabled = false, feedbackQuestion, feedbackPlaceholder, feedbackRequireComment, feedbackPositiveLabel, feedbackNegativeLabel, feedbackSubmitLabel, feedbackSuccessMessage, feedbackErrorMessage, feedbackOnFeedback, analytics = false, children }) {
259
259
  const fdTocStyle = tocStyle === "directional" ? "clerk" : void 0;
260
260
  const [toc, setToc] = useState([]);
261
261
  const [titlePortalHost, setTitlePortalHost] = useState(null);
@@ -437,6 +437,15 @@ function DocsPageClient({ tocEnabled, tocStyle = "default", breadcrumbEnabled =
437
437
  const lastUpdatedLabelText = lastUpdatedLabel.trim();
438
438
  const lastUpdatedText = lastUpdatedLabelText && lastModified ? `${lastUpdatedLabelText} ${lastModified}` : lastModified;
439
439
  const showFooter = !isChangelogRoute && (!!githubFileUrl || showLastUpdatedInFooter || llmsTxtEnabled);
440
+ const localizedPreviousPage = previousPage?.url ? {
441
+ ...previousPage,
442
+ url: withLangInUrl(previousPage.url, activeLocale)
443
+ } : null;
444
+ const localizedNextPage = nextPage?.url ? {
445
+ ...nextPage,
446
+ url: withLangInUrl(nextPage.url, activeLocale)
447
+ } : null;
448
+ const showPageNavigation = !isChangelogRoute && (!!localizedPreviousPage || !!localizedNextPage);
440
449
  const readingTimeBlock = typeof resolvedReadingTime === "number" ? /* @__PURE__ */ jsxs("div", {
441
450
  className: "fd-page-meta not-prose",
442
451
  children: [/* @__PURE__ */ jsx("span", {
@@ -640,7 +649,54 @@ function DocsPageClient({ tocEnabled, tocStyle = "default", breadcrumbEnabled =
640
649
  children: lastUpdatedText
641
650
  }, "last-updated")
642
651
  ]
643
- }, "footer")
652
+ }, "footer"),
653
+ showPageNavigation && /* @__PURE__ */ jsxs("nav", {
654
+ className: "not-prose fd-page-nav",
655
+ "aria-label": "Page navigation",
656
+ children: [localizedPreviousPage ? /* @__PURE__ */ jsxs("a", {
657
+ href: localizedPreviousPage.url,
658
+ className: "fd-page-nav-card fd-page-nav-prev",
659
+ children: [/* @__PURE__ */ jsxs("span", {
660
+ className: "fd-page-nav-title fd-page-nav-title-prev",
661
+ children: [/* @__PURE__ */ jsx("svg", {
662
+ width: "14",
663
+ height: "14",
664
+ viewBox: "0 0 24 24",
665
+ fill: "none",
666
+ stroke: "currentColor",
667
+ strokeWidth: "2",
668
+ strokeLinecap: "round",
669
+ strokeLinejoin: "round",
670
+ "aria-hidden": "true",
671
+ children: /* @__PURE__ */ jsx("polyline", { points: "15 18 9 12 15 6" })
672
+ }), localizedPreviousPage.name]
673
+ }), /* @__PURE__ */ jsx("span", {
674
+ className: "fd-page-nav-description",
675
+ children: "Previous Page"
676
+ })]
677
+ }) : /* @__PURE__ */ jsx("div", { "aria-hidden": "true" }), localizedNextPage ? /* @__PURE__ */ jsxs("a", {
678
+ href: localizedNextPage.url,
679
+ className: "fd-page-nav-card fd-page-nav-next",
680
+ children: [/* @__PURE__ */ jsxs("span", {
681
+ className: "fd-page-nav-title fd-page-nav-title-next",
682
+ children: [localizedNextPage.name, /* @__PURE__ */ jsx("svg", {
683
+ width: "14",
684
+ height: "14",
685
+ viewBox: "0 0 24 24",
686
+ fill: "none",
687
+ stroke: "currentColor",
688
+ strokeWidth: "2",
689
+ strokeLinecap: "round",
690
+ strokeLinejoin: "round",
691
+ "aria-hidden": "true",
692
+ children: /* @__PURE__ */ jsx("polyline", { points: "9 18 15 12 9 6" })
693
+ })]
694
+ }), /* @__PURE__ */ jsx("span", {
695
+ className: "fd-page-nav-description",
696
+ children: "Next Page"
697
+ })]
698
+ }) : /* @__PURE__ */ jsx("div", { "aria-hidden": "true" })]
699
+ }, "page-navigation")
644
700
  ]
645
701
  }, "body")
646
702
  ]
@@ -31,6 +31,14 @@ interface TanstackDocsLayoutProps {
31
31
  description?: string;
32
32
  readingTime?: number | null;
33
33
  lastModified?: string;
34
+ previousPage?: {
35
+ name: string;
36
+ url: string;
37
+ } | null;
38
+ nextPage?: {
39
+ name: string;
40
+ url: string;
41
+ } | null;
34
42
  structuredData?: string;
35
43
  editOnGithubUrl?: string;
36
44
  children: ReactNode;
@@ -42,6 +50,8 @@ declare function TanstackDocsLayout({
42
50
  description,
43
51
  readingTime,
44
52
  lastModified,
53
+ previousPage,
54
+ nextPage,
45
55
  structuredData,
46
56
  editOnGithubUrl,
47
57
  children
@@ -223,7 +223,7 @@ function resolveFeedbackConfig(feedback) {
223
223
  function ForcedThemeScript({ theme }) {
224
224
  return /* @__PURE__ */ jsx("script", { dangerouslySetInnerHTML: { __html: `document.documentElement.classList.remove('light','dark');document.documentElement.classList.add('${theme === "light" || theme === "dark" ? theme : "light"}');` } });
225
225
  }
226
- function TanstackDocsLayout({ config, tree, locale, description, readingTime, lastModified, structuredData, editOnGithubUrl, children }) {
226
+ function TanstackDocsLayout({ config, tree, locale, description, readingTime, lastModified, previousPage, nextPage, structuredData, editOnGithubUrl, children }) {
227
227
  const tocConfig = config.theme?.ui?.layout?.toc;
228
228
  const tocEnabled = tocConfig?.enabled !== false;
229
229
  const tocStyle = tocConfig?.style;
@@ -379,6 +379,8 @@ function TanstackDocsLayout({ config, tree, locale, description, readingTime, la
379
379
  lastUpdatedLabel,
380
380
  lastUpdatedPosition,
381
381
  lastModified,
382
+ previousPage,
383
+ nextPage,
382
384
  readingTimeEnabled,
383
385
  readingTimeFormat: readingTimeOptions.format,
384
386
  readingTime: typeof readingTime === "number" ? readingTime : void 0,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@farming-labs/theme",
3
- "version": "0.2.46",
3
+ "version": "0.2.47",
4
4
  "description": "Theme package for @farming-labs/docs — layout, provider, MDX components, and styles",
5
5
  "keywords": [
6
6
  "docs",
@@ -146,7 +146,7 @@
146
146
  "tsdown": "^0.20.3",
147
147
  "typescript": "^5.9.3",
148
148
  "vitest": "^4.1.8",
149
- "@farming-labs/docs": "0.2.46"
149
+ "@farming-labs/docs": "0.2.47"
150
150
  },
151
151
  "peerDependencies": {
152
152
  "@farming-labs/docs": ">=0.0.1",
@@ -148,6 +148,38 @@ body:has(#nd-docs-layout) {
148
148
  0px var(--fd-sidebar-width, 260px) minmax(0, var(--fd-threadline-main-width))
149
149
  var(--fd-toc-width, 224px) 0px !important;
150
150
  }
151
+
152
+ #nd-docs-layout[data-fd-framework] {
153
+ width: var(--fd-threadline-frame-width) !important;
154
+ max-width: var(--fd-threadline-frame-width) !important;
155
+ margin-inline: auto !important;
156
+ grid-template-columns:
157
+ var(--fd-sidebar-width, 260px)
158
+ minmax(0, calc(var(--fd-threadline-main-width) + var(--fd-toc-width, 224px))) !important;
159
+ }
160
+
161
+ #nd-docs-layout[data-fd-framework] .fd-main {
162
+ width: calc(var(--fd-threadline-main-width) + var(--fd-toc-width, 224px)) !important;
163
+ }
164
+
165
+ #nd-docs-layout[data-fd-framework] .fd-sidebar {
166
+ top: var(--docs-header-height, 48px) !important;
167
+ height: calc(100dvh - var(--docs-header-height, 48px)) !important;
168
+ }
169
+
170
+ #nd-docs-layout[data-fd-framework] .fd-page {
171
+ justify-content: flex-start !important;
172
+ }
173
+
174
+ #nd-docs-layout[data-fd-framework] .fd-page:has(.fd-toc) {
175
+ grid-template-columns:
176
+ minmax(0, var(--fd-threadline-main-width))
177
+ var(--fd-toc-width, 224px) !important;
178
+ }
179
+
180
+ #nd-docs-layout[data-fd-framework] .fd-page:not(:has(.fd-toc)) {
181
+ grid-template-columns: minmax(0, var(--fd-threadline-main-width)) !important;
182
+ }
151
183
  }
152
184
 
153
185
  #nd-docs-layout > header,
@@ -454,6 +486,53 @@ aside#nd-sidebar-mobile a[data-active="true"]:hover,
454
486
  background: color-mix(in srgb, var(--muted-foreground) 28%, transparent) !important;
455
487
  }
456
488
 
489
+ #nd-docs-layout[data-fd-framework] .fd-page-body .fd-callout {
490
+ align-items: flex-start !important;
491
+ gap: 0.5rem !important;
492
+ padding: 0.75rem 0.75rem 0.75rem 0.25rem !important;
493
+ overflow: visible !important;
494
+ font-size: 0.75rem !important;
495
+ line-height: 1.45 !important;
496
+ }
497
+
498
+ #nd-docs-layout[data-fd-framework] .fd-page-body .fd-callout-indicator {
499
+ position: static !important;
500
+ width: 0.125rem !important;
501
+ min-width: 0.125rem !important;
502
+ height: auto !important;
503
+ min-height: 1.5rem !important;
504
+ align-self: stretch !important;
505
+ flex: 0 0 0.125rem !important;
506
+ border-radius: 0.25rem !important;
507
+ background: color-mix(in srgb, var(--muted-foreground) 28%, transparent) !important;
508
+ }
509
+
510
+ #nd-docs-layout[data-fd-framework] .fd-page-body .fd-callout-icon {
511
+ display: none !important;
512
+ }
513
+
514
+ #nd-docs-layout[data-fd-framework] .fd-page-body .fd-callout-content {
515
+ min-width: 0;
516
+ flex: 1;
517
+ color: var(--foreground) !important;
518
+ font-size: 0.875rem !important;
519
+ line-height: 1.7 !important;
520
+ }
521
+
522
+ #nd-docs-layout[data-fd-framework] .fd-page-body .fd-callout-title,
523
+ #nd-docs-layout[data-fd-framework] .fd-page-body .fd-callout-content > p {
524
+ display: inline !important;
525
+ margin: 0 !important;
526
+ color: inherit !important;
527
+ font-size: inherit !important;
528
+ line-height: inherit !important;
529
+ }
530
+
531
+ #nd-docs-layout[data-fd-framework] .fd-page-body .fd-callout-title {
532
+ margin-inline-end: 0.375rem !important;
533
+ font-weight: 600 !important;
534
+ }
535
+
457
536
  .fd-docs-content :not(pre) > code,
458
537
  .prose :not(pre) > code {
459
538
  border: 0 !important;
@@ -491,6 +570,157 @@ figure.shiki > div:first-child:has(figcaption),
491
570
  font-weight: 500 !important;
492
571
  }
493
572
 
573
+ #nd-docs-layout[data-fd-framework] .fd-codeblock.fd-codeblock--titled {
574
+ border: 0 !important;
575
+ border-radius: 0.75rem !important;
576
+ background: var(--fd-assistant-code-bg) !important;
577
+ background-color: var(--fd-assistant-code-bg) !important;
578
+ overflow: hidden;
579
+ }
580
+
581
+ #nd-docs-layout[data-fd-framework] .fd-codeblock.fd-codeblock--titled .fd-codeblock-title {
582
+ position: relative;
583
+ height: 2.375rem;
584
+ min-height: 2.375rem !important;
585
+ padding: 0 1rem !important;
586
+ border: 0 !important;
587
+ border-radius: 0 !important;
588
+ background: transparent !important;
589
+ color: var(--muted-foreground) !important;
590
+ }
591
+
592
+ #nd-docs-layout[data-fd-framework] .fd-codeblock.fd-codeblock--titled .fd-codeblock-title::before {
593
+ content: "";
594
+ position: absolute;
595
+ inset: 0;
596
+ background: repeating-linear-gradient(
597
+ -45deg,
598
+ currentColor,
599
+ currentColor 1px,
600
+ transparent 1px,
601
+ transparent 6px
602
+ );
603
+ opacity: 0.03;
604
+ pointer-events: none;
605
+ }
606
+
607
+ :is(html.dark, body.dark, .dark)
608
+ #nd-docs-layout[data-fd-framework]
609
+ .fd-codeblock.fd-codeblock--titled
610
+ .fd-codeblock-title::before {
611
+ opacity: 0.05;
612
+ }
613
+
614
+ #nd-docs-layout[data-fd-framework] .fd-codeblock.fd-codeblock--titled .fd-codeblock-content {
615
+ padding: 0.875rem 0 !important;
616
+ background: transparent !important;
617
+ font-size: 0.8125rem !important;
618
+ line-height: 1.65 !important;
619
+ overflow: auto;
620
+ }
621
+
622
+ #nd-docs-layout[data-fd-framework] .fd-codeblock.fd-codeblock--titled pre {
623
+ margin: 0 !important;
624
+ padding: 0.15rem 0.5rem !important;
625
+ border: 0 !important;
626
+ border-radius: 0 !important;
627
+ background: transparent !important;
628
+ background-color: transparent !important;
629
+ font-size: 0.8125rem !important;
630
+ line-height: 1.65 !important;
631
+ overflow: visible;
632
+ }
633
+
634
+ #nd-docs-layout[data-fd-framework] .fd-codeblock.fd-codeblock--titled.shiki {
635
+ background: var(--fd-assistant-code-bg) !important;
636
+ background-color: var(--fd-assistant-code-bg) !important;
637
+ }
638
+
639
+ :is(html.dark, body.dark, .dark)
640
+ #nd-docs-layout[data-fd-framework]
641
+ .fd-codeblock.fd-codeblock--titled.shiki {
642
+ background: var(--fd-assistant-code-bg) !important;
643
+ background-color: var(--fd-assistant-code-bg) !important;
644
+ }
645
+
646
+ #nd-docs-layout[data-fd-framework] .fd-codeblock.fd-codeblock--titled pre.shiki,
647
+ :is(html.dark, body.dark, .dark)
648
+ #nd-docs-layout[data-fd-framework]
649
+ .fd-codeblock.fd-codeblock--titled
650
+ pre.shiki {
651
+ background: transparent !important;
652
+ background-color: transparent !important;
653
+ }
654
+
655
+ #nd-docs-layout[data-fd-framework] .fd-codeblock.fd-codeblock--titled pre code {
656
+ font-size: inherit !important;
657
+ line-height: inherit !important;
658
+ }
659
+
660
+ #nd-docs-layout[data-fd-framework] .fd-codeblock:not(.fd-codeblock--titled) {
661
+ background: var(--fd-assistant-code-bg) !important;
662
+ background-color: var(--fd-assistant-code-bg) !important;
663
+ }
664
+
665
+ :is(html.dark, body.dark, .dark)
666
+ #nd-docs-layout[data-fd-framework]
667
+ .fd-codeblock:not(.fd-codeblock--titled) {
668
+ background: var(--fd-assistant-code-bg) !important;
669
+ background-color: var(--fd-assistant-code-bg) !important;
670
+ }
671
+
672
+ #nd-docs-layout[data-fd-framework] .fd-codeblock:not(.fd-codeblock--titled) .fd-codeblock-content {
673
+ padding: 0.875rem 0 !important;
674
+ background: transparent !important;
675
+ font-size: 0.8125rem !important;
676
+ line-height: 1.65 !important;
677
+ overflow: auto;
678
+ }
679
+
680
+ #nd-docs-layout[data-fd-framework] .fd-codeblock:not(.fd-codeblock--titled) pre {
681
+ margin: 0 !important;
682
+ padding: 0.15rem 0.5rem !important;
683
+ border: 0 !important;
684
+ border-radius: 0 !important;
685
+ background: transparent !important;
686
+ background-color: transparent !important;
687
+ font-size: 0.8125rem !important;
688
+ line-height: 1.65 !important;
689
+ overflow: visible;
690
+ }
691
+
692
+ #nd-docs-layout[data-fd-framework] .fd-codeblock:not(.fd-codeblock--titled) pre.shiki,
693
+ :is(html.dark, body.dark, .dark)
694
+ #nd-docs-layout[data-fd-framework]
695
+ .fd-codeblock:not(.fd-codeblock--titled)
696
+ pre.shiki {
697
+ background: transparent !important;
698
+ background-color: transparent !important;
699
+ }
700
+
701
+ #nd-docs-layout[data-fd-framework] .fd-codeblock:not(.fd-codeblock--titled) pre code {
702
+ font-size: inherit !important;
703
+ line-height: inherit !important;
704
+ }
705
+
706
+ #nd-docs-layout[data-fd-framework] .fd-codeblock.fd-codeblock--titled .fd-codeblock-actions {
707
+ margin-inline-end: -0.5rem;
708
+ }
709
+
710
+ #nd-docs-layout[data-fd-framework] .fd-codeblock.fd-codeblock--titled .fd-codeblock-title .fd-copy-btn {
711
+ width: 1.5rem;
712
+ height: 1.5rem;
713
+ border: 0 !important;
714
+ background: transparent !important;
715
+ color: var(--muted-foreground) !important;
716
+ opacity: 0;
717
+ }
718
+
719
+ #nd-docs-layout[data-fd-framework] .fd-codeblock.fd-codeblock--titled:hover .fd-codeblock-title .fd-copy-btn,
720
+ #nd-docs-layout[data-fd-framework] .fd-codeblock.fd-codeblock--titled .fd-codeblock-title .fd-copy-btn:focus-visible {
721
+ opacity: 1;
722
+ }
723
+
494
724
  figure.shiki > div[role="region"] {
495
725
  padding-top: 0.875rem !important;
496
726
  padding-bottom: 0.875rem !important;
@@ -572,6 +802,16 @@ figure.shiki button[aria-label*="Copy"]:hover {
572
802
  background: transparent !important;
573
803
  }
574
804
 
805
+ #nd-docs-layout[data-fd-framework] .fd-page-body th {
806
+ font-size: inherit !important;
807
+ line-height: inherit !important;
808
+ }
809
+
810
+ #nd-docs-layout[data-fd-framework] .fd-page-body td {
811
+ font-size: 0.875rem !important;
812
+ line-height: 1.7 !important;
813
+ }
814
+
575
815
  .fd-actions-toc-portal {
576
816
  display: none;
577
817
  }
@@ -849,6 +1089,52 @@ figure.shiki button[aria-label*="Copy"]:hover {
849
1089
  padding-top: 0.25rem !important;
850
1090
  }
851
1091
 
1092
+ @media (min-width: 1280px) {
1093
+ #nd-docs-layout[data-fd-framework] .fd-toc {
1094
+ position: sticky !important;
1095
+ top: var(--docs-header-height, 48px) !important;
1096
+ width: var(--fd-toc-width, 224px) !important;
1097
+ height: calc(100dvh - var(--docs-header-height, 48px)) !important;
1098
+ padding: 3rem 1rem 0.5rem 0 !important;
1099
+ overflow-y: auto;
1100
+ }
1101
+
1102
+ #nd-docs-layout[data-fd-framework] .fd-toc-title {
1103
+ display: inline-flex !important;
1104
+ align-items: center !important;
1105
+ gap: 0.375rem !important;
1106
+ margin: 0 0 0.75rem !important;
1107
+ color: var(--muted-foreground) !important;
1108
+ font-size: 0.75rem !important;
1109
+ font-weight: 500 !important;
1110
+ line-height: 1.45 !important;
1111
+ }
1112
+
1113
+ #nd-docs-layout[data-fd-framework] .fd-toc-title svg {
1114
+ width: 0.875rem !important;
1115
+ height: 0.875rem !important;
1116
+ opacity: 1 !important;
1117
+ }
1118
+
1119
+ #nd-docs-layout[data-fd-framework] .fd-toc-list {
1120
+ border-left: 0 !important;
1121
+ }
1122
+
1123
+ #nd-docs-layout[data-fd-framework] .fd-toc-link {
1124
+ margin: 0 !important;
1125
+ padding: 0.375rem 0 0.375rem 0.75rem !important;
1126
+ border-left: 0 !important;
1127
+ color: var(--muted-foreground) !important;
1128
+ font-size: 0.875rem !important;
1129
+ line-height: 1.7 !important;
1130
+ }
1131
+
1132
+ #nd-docs-layout[data-fd-framework] .fd-toc-link:hover,
1133
+ #nd-docs-layout[data-fd-framework] .fd-toc-link-active {
1134
+ color: var(--foreground) !important;
1135
+ }
1136
+ }
1137
+
852
1138
  .fd-page-nav {
853
1139
  display: grid !important;
854
1140
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
@@ -1113,6 +1399,12 @@ figure.shiki button[aria-label*="Copy"]:hover {
1113
1399
  display: none !important;
1114
1400
  }
1115
1401
 
1402
+ #nd-docs-layout[data-fd-framework] .fd-page-footer {
1403
+ display: block !important;
1404
+ margin-top: auto !important;
1405
+ padding-top: 1.5rem !important;
1406
+ }
1407
+
1116
1408
  @media (min-width: 1280px) {
1117
1409
  .fd-actions-toc-host {
1118
1410
  display: block;
@@ -1231,6 +1523,61 @@ figure.shiki button[aria-label*="Copy"]:hover {
1231
1523
  box-shadow: none !important;
1232
1524
  }
1233
1525
 
1526
+ #nd-docs-layout[data-fd-framework] .fd-page-body .fd-tabs {
1527
+ margin: 1rem 0 !important;
1528
+ padding: 0 !important;
1529
+ border: 0 !important;
1530
+ border-radius: 0.75rem !important;
1531
+ background: var(--fd-assistant-code-bg) !important;
1532
+ box-shadow: none !important;
1533
+ overflow: hidden;
1534
+ }
1535
+
1536
+ #nd-docs-layout[data-fd-framework] .fd-page-body .fd-tabs-list {
1537
+ min-height: 2.3125rem !important;
1538
+ align-items: center !important;
1539
+ gap: 0 !important;
1540
+ padding: 0.25rem !important;
1541
+ border: 0 !important;
1542
+ border-radius: 0.625rem !important;
1543
+ background: var(--fd-assistant-code-bg) !important;
1544
+ overflow-x: auto;
1545
+ }
1546
+
1547
+ #nd-docs-layout[data-fd-framework] .fd-page-body .fd-tab-trigger {
1548
+ min-height: 1.8125rem !important;
1549
+ padding: 0.375rem 0.5rem !important;
1550
+ border: 0 !important;
1551
+ border-radius: 0.5rem !important;
1552
+ color: var(--muted-foreground) !important;
1553
+ font-size: 0.75rem !important;
1554
+ font-weight: 500 !important;
1555
+ line-height: 1.45 !important;
1556
+ }
1557
+
1558
+ #nd-docs-layout[data-fd-framework] .fd-page-body .fd-tab-trigger.fd-tab-active,
1559
+ #nd-docs-layout[data-fd-framework] .fd-page-body .fd-tab-trigger[data-state="active"] {
1560
+ background: var(--background) !important;
1561
+ color: var(--foreground) !important;
1562
+ box-shadow: none !important;
1563
+ }
1564
+
1565
+ #nd-docs-layout[data-fd-framework] .fd-page-body .fd-tab-panel,
1566
+ #nd-docs-layout[data-fd-framework] .fd-page-body .fd-code-group-panel {
1567
+ margin: 0 !important;
1568
+ padding: 0 !important;
1569
+ background: transparent !important;
1570
+ }
1571
+
1572
+ #nd-docs-layout[data-fd-framework] .fd-page-body .fd-tabs .fd-codeblock {
1573
+ margin: 0 !important;
1574
+ border-radius: 0 0 0.75rem 0.75rem !important;
1575
+ }
1576
+
1577
+ #nd-docs-layout[data-fd-framework] .fd-page-body .fd-tabs .fd-codeblock pre {
1578
+ border-radius: 0 !important;
1579
+ }
1580
+
1234
1581
  .fd-feedback-submit,
1235
1582
  .fd-ai-send-btn,
1236
1583
  .fd-ai-fm-send-btn,