@farming-labs/theme 0.1.63 → 0.1.65

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/index.d.mts CHANGED
@@ -6,6 +6,7 @@ import { createDocsLayout, createDocsMetadata, createPageMetadata } from "./docs
6
6
  import { DocsPageClient } from "./docs-page-client.mjs";
7
7
  import { HardlineUIDefaults, hardline } from "./hardline/index.mjs";
8
8
  import { RootProvider } from "./provider.mjs";
9
+ import { LedgerUIDefaults, ledger } from "./ledger/index.mjs";
9
10
  import { DocsClientHooks } from "./docs-client-hooks.mjs";
10
11
  import { DocsFeedback, DocsFeedbackProps } from "./docs-feedback.mjs";
11
12
  import { PageActions } from "./page-actions.mjs";
@@ -18,4 +19,4 @@ import { AIConfig, BreadcrumbConfig, ChangelogConfig, ChangelogFrontmatter, Copy
18
19
  import { DocsBody, DocsPage } from "fumadocs-ui/layouts/docs/page";
19
20
  import { Tab, Tabs } from "fumadocs-ui/components/tabs";
20
21
  import { CodeBlock, CodeBlockTab, CodeBlockTabs, CodeBlockTabsList, CodeBlockTabsTrigger, Pre } from "fumadocs-ui/components/codeblock";
21
- export { type AIConfig, Agent, type BreadcrumbConfig, type ChangelogConfig, type ChangelogFrontmatter, CodeBlock, CodeBlockTab, CodeBlockTabs, CodeBlockTabsList, CodeBlockTabsTrigger, CommandGridUIDefaults, ConcreteUIDefaults, type CopyMarkdownConfig, DocsBody, DocsClientHooks, DocsCommandSearch, type DocsConfig, DocsFeedback, type DocsFeedbackData, type DocsFeedbackProps, type DocsFeedbackValue, DocsLayout, type DocsMetadata, type DocsNav, DocsPage, DocsPageClient, type DocsTheme, type FeedbackConfig, type FontStyle, DefaultUIDefaults as FumadocsUIDefaults, HardlineUIDefaults, HoverLink, type HoverLinkProps, type OGConfig, type OpenDocsConfig, type OpenDocsProvider, PageActions, type PageActionsConfig, type PageFrontmatter, Pre, Prompt, type PromptProps, RootProvider, type SidebarConfig, Tab, Tabs, type ThemeToggleConfig, type TypographyConfig, type UIConfig, commandGrid, concrete, createDocsLayout, createDocsMetadata, createPageMetadata, createTheme, deepMerge, defineDocs, extendTheme, fumadocs, hardline, withLangInUrl };
22
+ export { type AIConfig, Agent, type BreadcrumbConfig, type ChangelogConfig, type ChangelogFrontmatter, CodeBlock, CodeBlockTab, CodeBlockTabs, CodeBlockTabsList, CodeBlockTabsTrigger, CommandGridUIDefaults, ConcreteUIDefaults, type CopyMarkdownConfig, DocsBody, DocsClientHooks, DocsCommandSearch, type DocsConfig, DocsFeedback, type DocsFeedbackData, type DocsFeedbackProps, type DocsFeedbackValue, DocsLayout, type DocsMetadata, type DocsNav, DocsPage, DocsPageClient, type DocsTheme, type FeedbackConfig, type FontStyle, DefaultUIDefaults as FumadocsUIDefaults, HardlineUIDefaults, HoverLink, type HoverLinkProps, LedgerUIDefaults, type OGConfig, type OpenDocsConfig, type OpenDocsProvider, PageActions, type PageActionsConfig, type PageFrontmatter, Pre, Prompt, type PromptProps, RootProvider, type SidebarConfig, Tab, Tabs, type ThemeToggleConfig, type TypographyConfig, type UIConfig, commandGrid, concrete, createDocsLayout, createDocsMetadata, createPageMetadata, createTheme, deepMerge, defineDocs, extendTheme, fumadocs, hardline, ledger, withLangInUrl };
package/dist/index.mjs CHANGED
@@ -9,6 +9,7 @@ import { DefaultUIDefaults, fumadocs } from "./default/index.mjs";
9
9
  import { CommandGridUIDefaults, commandGrid } from "./command-grid/index.mjs";
10
10
  import { ConcreteUIDefaults, concrete } from "./concrete/index.mjs";
11
11
  import { HardlineUIDefaults, hardline } from "./hardline/index.mjs";
12
+ import { LedgerUIDefaults, ledger } from "./ledger/index.mjs";
12
13
  import { DocsClientHooks } from "./docs-client-hooks.mjs";
13
14
  import { HoverLink } from "./hover-link.mjs";
14
15
  import { Prompt } from "./prompt.mjs";
@@ -19,4 +20,4 @@ import { DocsBody, DocsPage } from "fumadocs-ui/layouts/docs/page";
19
20
  import { Tab, Tabs } from "fumadocs-ui/components/tabs";
20
21
  import { CodeBlock, CodeBlockTab, CodeBlockTabs, CodeBlockTabsList, CodeBlockTabsTrigger, Pre } from "fumadocs-ui/components/codeblock";
21
22
 
22
- export { Agent, CodeBlock, CodeBlockTab, CodeBlockTabs, CodeBlockTabsList, CodeBlockTabsTrigger, CommandGridUIDefaults, ConcreteUIDefaults, DocsBody, DocsClientHooks, DocsCommandSearch, DocsFeedback, DocsLayout, DocsPage, DocsPageClient, DefaultUIDefaults as FumadocsUIDefaults, HardlineUIDefaults, HoverLink, PageActions, Pre, Prompt, RootProvider, Tab, Tabs, commandGrid, concrete, createDocsLayout, createDocsMetadata, createPageMetadata, createTheme, deepMerge, defineDocs, extendTheme, fumadocs, hardline, withLangInUrl };
23
+ export { Agent, CodeBlock, CodeBlockTab, CodeBlockTabs, CodeBlockTabsList, CodeBlockTabsTrigger, CommandGridUIDefaults, ConcreteUIDefaults, DocsBody, DocsClientHooks, DocsCommandSearch, DocsFeedback, DocsLayout, DocsPage, DocsPageClient, DefaultUIDefaults as FumadocsUIDefaults, HardlineUIDefaults, HoverLink, LedgerUIDefaults, PageActions, Pre, Prompt, RootProvider, Tab, Tabs, commandGrid, concrete, createDocsLayout, createDocsMetadata, createPageMetadata, createTheme, deepMerge, defineDocs, extendTheme, fumadocs, hardline, ledger, withLangInUrl };
@@ -0,0 +1,102 @@
1
+ import * as _farming_labs_docs0 from "@farming-labs/docs";
2
+
3
+ //#region src/ledger/index.d.ts
4
+ declare const LedgerUIDefaults: {
5
+ colors: {
6
+ primary: string;
7
+ primaryForeground: string;
8
+ background: string;
9
+ foreground: string;
10
+ muted: string;
11
+ mutedForeground: string;
12
+ border: string;
13
+ card: string;
14
+ cardForeground: string;
15
+ accent: string;
16
+ accentForeground: string;
17
+ secondary: string;
18
+ secondaryForeground: string;
19
+ popover: string;
20
+ popoverForeground: string;
21
+ ring: string;
22
+ };
23
+ typography: {
24
+ font: {
25
+ style: {
26
+ sans: string;
27
+ mono: string;
28
+ };
29
+ h1: {
30
+ size: string;
31
+ weight: number;
32
+ lineHeight: string;
33
+ letterSpacing: string;
34
+ };
35
+ h2: {
36
+ size: string;
37
+ weight: number;
38
+ lineHeight: string;
39
+ letterSpacing: string;
40
+ };
41
+ h3: {
42
+ size: string;
43
+ weight: number;
44
+ lineHeight: string;
45
+ letterSpacing: string;
46
+ };
47
+ h4: {
48
+ size: string;
49
+ weight: number;
50
+ lineHeight: string;
51
+ letterSpacing: string;
52
+ };
53
+ body: {
54
+ size: string;
55
+ weight: number;
56
+ lineHeight: string;
57
+ };
58
+ small: {
59
+ size: string;
60
+ weight: number;
61
+ lineHeight: string;
62
+ };
63
+ };
64
+ };
65
+ radius: string;
66
+ layout: {
67
+ contentWidth: number;
68
+ sidebarWidth: number;
69
+ tocWidth: number;
70
+ toc: {
71
+ enabled: boolean;
72
+ depth: number;
73
+ style: "default";
74
+ };
75
+ header: {
76
+ height: number;
77
+ sticky: boolean;
78
+ };
79
+ };
80
+ sidebar: {
81
+ style: "bordered";
82
+ };
83
+ components: {
84
+ Callout: {
85
+ variant: string;
86
+ icon: boolean;
87
+ };
88
+ CodeBlock: {
89
+ showCopyButton: boolean;
90
+ };
91
+ HoverLink: {
92
+ linkLabel: string;
93
+ showIndicator: boolean;
94
+ };
95
+ Tabs: {
96
+ style: string;
97
+ };
98
+ };
99
+ };
100
+ declare const ledger: (overrides?: Partial<_farming_labs_docs0.DocsTheme>) => _farming_labs_docs0.DocsTheme;
101
+ //#endregion
102
+ export { LedgerUIDefaults, ledger };
@@ -0,0 +1,105 @@
1
+ import { createTheme } from "@farming-labs/docs";
2
+
3
+ //#region src/ledger/index.ts
4
+ /**
5
+ * Ledger theme preset.
6
+ * Stripe Docs-inspired product documentation chrome with calm light surfaces,
7
+ * blue-violet actions, tabbed navigation, and deep navy code panels.
8
+ *
9
+ * CSS: `@import "@farming-labs/theme/ledger/css";`
10
+ */
11
+ const LedgerUIDefaults = {
12
+ colors: {
13
+ primary: "#5f6cf6",
14
+ primaryForeground: "#ffffff",
15
+ background: "#f6f8fb",
16
+ foreground: "#30364a",
17
+ muted: "#eef3fb",
18
+ mutedForeground: "#677187",
19
+ border: "#dbe3ef",
20
+ card: "#ffffff",
21
+ cardForeground: "#30364a",
22
+ accent: "#edf2ff",
23
+ accentForeground: "#30364a",
24
+ secondary: "#eef3fb",
25
+ secondaryForeground: "#30364a",
26
+ popover: "#ffffff",
27
+ popoverForeground: "#30364a",
28
+ ring: "#5f6cf6"
29
+ },
30
+ typography: { font: {
31
+ style: {
32
+ sans: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Ubuntu, sans-serif",
33
+ mono: "ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace"
34
+ },
35
+ h1: {
36
+ size: "2.25rem",
37
+ weight: 700,
38
+ lineHeight: "1.18",
39
+ letterSpacing: "0"
40
+ },
41
+ h2: {
42
+ size: "1.625rem",
43
+ weight: 700,
44
+ lineHeight: "1.28",
45
+ letterSpacing: "0"
46
+ },
47
+ h3: {
48
+ size: "1.25rem",
49
+ weight: 700,
50
+ lineHeight: "1.35",
51
+ letterSpacing: "0"
52
+ },
53
+ h4: {
54
+ size: "1.0625rem",
55
+ weight: 700,
56
+ lineHeight: "1.4",
57
+ letterSpacing: "0"
58
+ },
59
+ body: {
60
+ size: "0.9375rem",
61
+ weight: 400,
62
+ lineHeight: "1.7"
63
+ },
64
+ small: {
65
+ size: "0.8125rem",
66
+ weight: 400,
67
+ lineHeight: "1.5"
68
+ }
69
+ } },
70
+ radius: "0.5rem",
71
+ layout: {
72
+ contentWidth: 820,
73
+ sidebarWidth: 292,
74
+ tocWidth: 236,
75
+ toc: {
76
+ enabled: true,
77
+ depth: 3,
78
+ style: "default"
79
+ },
80
+ header: {
81
+ height: 64,
82
+ sticky: true
83
+ }
84
+ },
85
+ sidebar: { style: "bordered" },
86
+ components: {
87
+ Callout: {
88
+ variant: "soft",
89
+ icon: true
90
+ },
91
+ CodeBlock: { showCopyButton: true },
92
+ HoverLink: {
93
+ linkLabel: "Open page",
94
+ showIndicator: false
95
+ },
96
+ Tabs: { style: "default" }
97
+ }
98
+ };
99
+ const ledger = createTheme({
100
+ name: "ledger",
101
+ ui: LedgerUIDefaults
102
+ });
103
+
104
+ //#endregion
105
+ export { LedgerUIDefaults, ledger };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@farming-labs/theme",
3
- "version": "0.1.63",
3
+ "version": "0.1.65",
4
4
  "description": "Theme package for @farming-labs/docs — layout, provider, MDX components, and styles",
5
5
  "keywords": [
6
6
  "docs",
@@ -83,6 +83,11 @@
83
83
  "import": "./dist/command-grid/index.mjs",
84
84
  "default": "./dist/command-grid/index.mjs"
85
85
  },
86
+ "./ledger": {
87
+ "types": "./dist/ledger/index.d.mts",
88
+ "import": "./dist/ledger/index.mjs",
89
+ "default": "./dist/ledger/index.mjs"
90
+ },
86
91
  "./search": {
87
92
  "types": "./dist/search.d.mts",
88
93
  "import": "./dist/search.mjs",
@@ -115,6 +120,7 @@
115
120
  "./hardline/css": "./styles/hardline.css",
116
121
  "./concrete/css": "./styles/concrete.css",
117
122
  "./command-grid/css": "./styles/command-grid.css",
123
+ "./ledger/css": "./styles/ledger.css",
118
124
  "./presets/neutral": "./styles/presets/neutral.css",
119
125
  "./presets/black": "./styles/presets/black.css",
120
126
  "./presets/base": "./styles/presets/base.css"
@@ -133,7 +139,7 @@
133
139
  "tsdown": "^0.20.3",
134
140
  "typescript": "^5.9.3",
135
141
  "vitest": "^3.2.4",
136
- "@farming-labs/docs": "0.1.63"
142
+ "@farming-labs/docs": "0.1.65"
137
143
  },
138
144
  "peerDependencies": {
139
145
  "@farming-labs/docs": ">=0.0.1",
@@ -0,0 +1,586 @@
1
+ /* @farming-labs/theme - ledger theme CSS
2
+ * Stripe Docs-inspired product documentation UI without Stripe branding.
3
+ */
4
+ @import "./presets/neutral.css";
5
+
6
+ :root {
7
+ --color-fd-primary: #5f6cf6;
8
+ --color-fd-primary-foreground: #ffffff;
9
+ --color-fd-ring: #5f6cf6;
10
+
11
+ --color-fd-background: #f6f8fb;
12
+ --color-fd-foreground: #30364a;
13
+ --color-fd-card: #ffffff;
14
+ --color-fd-card-foreground: #30364a;
15
+ --color-fd-popover: #ffffff;
16
+ --color-fd-popover-foreground: #30364a;
17
+ --color-fd-secondary: #eef3fb;
18
+ --color-fd-secondary-foreground: #30364a;
19
+ --color-fd-muted: #eef3fb;
20
+ --color-fd-muted-foreground: #677187;
21
+ --color-fd-accent: #edf2ff;
22
+ --color-fd-accent-foreground: #30364a;
23
+ --color-fd-border: #dbe3ef;
24
+
25
+ --radius: 0.5rem;
26
+ --fd-nav-height: 64px;
27
+ --fd-ledger-header: rgba(246, 248, 251, 0.88);
28
+ --fd-ledger-soft-border: rgba(67, 80, 111, 0.16);
29
+ --fd-ledger-shadow: 0 1px 2px rgba(48, 54, 74, 0.08), 0 10px 32px rgba(48, 54, 74, 0.08);
30
+ --fd-ledger-code-bg: #f8fbff;
31
+ --fd-ledger-code-fg: #26314a;
32
+ --fd-ledger-code-title: #40506b;
33
+ --fd-ledger-code-border: #d7e2f1;
34
+ --fd-ledger-code-shadow: none;
35
+ --fd-ledger-action-bg: #ffffff;
36
+ --fd-ledger-action-hover: #f1f4ff;
37
+ --fd-ledger-action-color: #3f485f;
38
+ --fd-ledger-action-icon: #5f6cf6;
39
+ }
40
+
41
+ :is(html.dark, body.dark, .dark) {
42
+ --color-fd-primary: #9aa8ff;
43
+ --color-fd-primary-foreground: #10131a;
44
+ --color-fd-ring: #9aa8ff;
45
+
46
+ --color-fd-background: #10131a;
47
+ --color-fd-foreground: #edf2f8;
48
+ --color-fd-card: #171c26;
49
+ --color-fd-card-foreground: #edf2f8;
50
+ --color-fd-popover: #171c26;
51
+ --color-fd-popover-foreground: #edf2f8;
52
+ --color-fd-secondary: #202736;
53
+ --color-fd-secondary-foreground: #edf2f8;
54
+ --color-fd-muted: #202736;
55
+ --color-fd-muted-foreground: #aab5c7;
56
+ --color-fd-accent: #252d3f;
57
+ --color-fd-accent-foreground: #edf2f8;
58
+ --color-fd-border: #30384a;
59
+
60
+ --fd-ledger-header: rgba(16, 19, 26, 0.88);
61
+ --fd-ledger-soft-border: rgba(174, 186, 205, 0.16);
62
+ --fd-ledger-shadow: 0 1px 2px rgba(0, 0, 0, 0.32), 0 18px 42px rgba(0, 0, 0, 0.28);
63
+ --fd-ledger-code-bg: #0d1220;
64
+ --fd-ledger-code-fg: #f7f9ff;
65
+ --fd-ledger-code-title: #dbe5ff;
66
+ --fd-ledger-code-border: #30394d;
67
+ --fd-ledger-code-shadow: none;
68
+ --fd-ledger-action-bg: #171c26;
69
+ --fd-ledger-action-hover: #20283a;
70
+ --fd-ledger-action-color: #e7edf7;
71
+ --fd-ledger-action-icon: #a8b5ff;
72
+ }
73
+
74
+ body:has(#nd-docs-layout),
75
+ body:has(.fd-layout) {
76
+ background: var(--color-fd-background);
77
+ color: var(--color-fd-foreground);
78
+ }
79
+
80
+ #nd-docs-layout,
81
+ .fd-layout {
82
+ background: var(--color-fd-background);
83
+ }
84
+
85
+ #nd-docs-layout > header,
86
+ [role="banner"],
87
+ .fd-header {
88
+ min-height: var(--fd-nav-height);
89
+ border-bottom: 1px solid var(--fd-ledger-soft-border) !important;
90
+ background: var(--fd-ledger-header) !important;
91
+ backdrop-filter: blur(14px);
92
+ box-shadow: none !important;
93
+ }
94
+
95
+ #nd-docs-layout > header a,
96
+ [role="banner"] a,
97
+ .fd-header a,
98
+ .fd-nav a {
99
+ color: var(--color-fd-muted-foreground);
100
+ font-size: 0.875rem;
101
+ font-weight: 500;
102
+ letter-spacing: 0;
103
+ text-decoration: none;
104
+ }
105
+
106
+ #nd-docs-layout > header nav a,
107
+ [role="banner"] nav a,
108
+ .fd-nav a {
109
+ border-radius: 999px;
110
+ padding: 0.375rem 0.625rem;
111
+ transition:
112
+ background-color 150ms ease,
113
+ color 150ms ease,
114
+ border-color 150ms ease;
115
+ }
116
+
117
+ #nd-docs-layout > header nav a:hover,
118
+ [role="banner"] nav a:hover,
119
+ .fd-nav a:hover {
120
+ background: color-mix(in srgb, var(--color-fd-primary) 10%, transparent);
121
+ color: var(--color-fd-primary);
122
+ }
123
+
124
+ #nd-docs-layout > header nav a[data-active="true"],
125
+ #nd-docs-layout > header nav a[aria-current="page"],
126
+ [role="banner"] nav a[data-active="true"],
127
+ [role="banner"] nav a[aria-current="page"],
128
+ .fd-nav a[data-active="true"],
129
+ .fd-nav a[aria-current="page"] {
130
+ background: color-mix(in srgb, var(--color-fd-primary) 14%, transparent);
131
+ color: var(--color-fd-primary);
132
+ }
133
+
134
+ button[data-search-full],
135
+ [data-search-full],
136
+ .fd-sidebar-search-btn,
137
+ .fd-search-trigger-mobile {
138
+ min-height: 2.25rem;
139
+ border: 1px solid var(--fd-ledger-soft-border) !important;
140
+ border-radius: 0.5rem !important;
141
+ background: color-mix(in srgb, var(--color-fd-card) 88%, transparent) !important;
142
+ color: var(--color-fd-muted-foreground) !important;
143
+ box-shadow: 0 1px 2px rgba(48, 54, 74, 0.05) !important;
144
+ font-size: 0.875rem !important;
145
+ }
146
+
147
+ button[data-search-full]:hover,
148
+ [data-search-full]:hover,
149
+ .fd-sidebar-search-btn:hover,
150
+ .fd-search-trigger-mobile:hover {
151
+ border-color: color-mix(in srgb, var(--color-fd-primary) 32%, var(--color-fd-border)) !important;
152
+ background: var(--color-fd-card) !important;
153
+ color: var(--color-fd-foreground) !important;
154
+ }
155
+
156
+ button[data-search-full] kbd,
157
+ [data-search-full] kbd,
158
+ .fd-sidebar-search-kbd kbd {
159
+ border: 1px solid var(--color-fd-border) !important;
160
+ border-radius: 0.375rem !important;
161
+ background: var(--color-fd-secondary) !important;
162
+ color: var(--color-fd-muted-foreground) !important;
163
+ font-size: 0.6875rem !important;
164
+ font-weight: 600 !important;
165
+ }
166
+
167
+ aside#nd-sidebar,
168
+ aside#nd-sidebar-mobile,
169
+ .fd-sidebar {
170
+ background: color-mix(in srgb, var(--color-fd-background) 90%, var(--color-fd-card)) !important;
171
+ border-right: 1px solid var(--fd-ledger-soft-border) !important;
172
+ color: var(--color-fd-foreground);
173
+ }
174
+
175
+ aside#nd-sidebar [data-radix-scroll-area-viewport],
176
+ aside#nd-sidebar [data-radix-scroll-area-content],
177
+ aside#nd-sidebar .fd-sidebar,
178
+ aside#nd-sidebar-mobile .fd-sidebar {
179
+ background: transparent !important;
180
+ }
181
+
182
+ aside#nd-sidebar a[data-active],
183
+ aside#nd-sidebar button[aria-expanded],
184
+ aside#nd-sidebar-mobile a[data-active],
185
+ aside#nd-sidebar-mobile button[aria-expanded],
186
+ .fd-sidebar a,
187
+ .fd-sidebar button {
188
+ border-radius: 0.5rem !important;
189
+ color: var(--color-fd-muted-foreground) !important;
190
+ font-size: 0.875rem !important;
191
+ font-weight: 500 !important;
192
+ letter-spacing: 0;
193
+ transition:
194
+ background-color 150ms ease,
195
+ color 150ms ease,
196
+ box-shadow 150ms ease;
197
+ }
198
+
199
+ aside#nd-sidebar a[data-active="false"]:hover,
200
+ aside#nd-sidebar button[aria-expanded]:hover,
201
+ aside#nd-sidebar-mobile a[data-active="false"]:hover,
202
+ aside#nd-sidebar-mobile button[aria-expanded]:hover,
203
+ .fd-sidebar a:hover,
204
+ .fd-sidebar button:hover {
205
+ background: color-mix(in srgb, var(--color-fd-primary) 9%, transparent) !important;
206
+ color: var(--color-fd-foreground) !important;
207
+ }
208
+
209
+ aside#nd-sidebar a[data-active="true"],
210
+ aside#nd-sidebar a[data-active="true"]:hover,
211
+ aside#nd-sidebar-mobile a[data-active="true"],
212
+ aside#nd-sidebar-mobile a[data-active="true"]:hover,
213
+ .fd-sidebar a[data-active="true"],
214
+ .fd-sidebar a[aria-current="page"] {
215
+ background: color-mix(in srgb, var(--color-fd-primary) 13%, transparent) !important;
216
+ color: var(--color-fd-primary) !important;
217
+ box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--color-fd-primary) 18%, transparent);
218
+ }
219
+
220
+ #nd-toc,
221
+ .fd-toc {
222
+ border-left: 0 !important;
223
+ background: transparent !important;
224
+ box-shadow: none !important;
225
+ }
226
+
227
+ #nd-toc .border-s,
228
+ #nd-toc [class*="border-s"],
229
+ .fd-toc .border-s,
230
+ .fd-toc [class*="border-s"] {
231
+ border-inline-start-width: 0 !important;
232
+ border-left: 0 !important;
233
+ }
234
+
235
+ #toc-title,
236
+ .fd-toc-title {
237
+ color: var(--color-fd-muted-foreground) !important;
238
+ font-size: 0.75rem !important;
239
+ font-weight: 700 !important;
240
+ letter-spacing: 0;
241
+ }
242
+
243
+ .fd-toc-link,
244
+ .fd-toc-clerk .fd-toc-link,
245
+ #nd-toc a {
246
+ border-left: 0 !important;
247
+ border-radius: 0.375rem;
248
+ color: var(--color-fd-muted-foreground) !important;
249
+ font-size: 0.8125rem;
250
+ line-height: 1.45;
251
+ padding-left: 0.625rem;
252
+ }
253
+
254
+ .fd-toc-link:hover,
255
+ .fd-toc-clerk .fd-toc-link:hover,
256
+ #nd-toc a:hover {
257
+ background: transparent !important;
258
+ color: var(--color-fd-primary) !important;
259
+ }
260
+
261
+ .fd-toc-link-active,
262
+ .fd-toc-clerk .fd-toc-link[data-active="true"],
263
+ #nd-toc a[data-active="true"] {
264
+ background: transparent !important;
265
+ color: var(--color-fd-primary) !important;
266
+ font-weight: 700;
267
+ }
268
+
269
+ .fd-page-title,
270
+ #nd-page > h1,
271
+ .fd-docs-content article h1,
272
+ #nd-page h1,
273
+ .fd-docs-content h1 {
274
+ color: var(--color-fd-foreground) !important;
275
+ font-size: 2.25rem;
276
+ font-weight: 700 !important;
277
+ letter-spacing: 0 !important;
278
+ line-height: 1.18 !important;
279
+ }
280
+
281
+ .fd-docs-content article h2,
282
+ #nd-page h2,
283
+ .fd-docs-content h2 {
284
+ color: var(--color-fd-foreground) !important;
285
+ font-size: 1.625rem;
286
+ font-weight: 700 !important;
287
+ letter-spacing: 0 !important;
288
+ line-height: 1.28 !important;
289
+ margin-top: 2.5rem;
290
+ }
291
+
292
+ .fd-docs-content article h3,
293
+ #nd-page h3,
294
+ .fd-docs-content h3 {
295
+ color: var(--color-fd-foreground) !important;
296
+ font-size: 1.25rem;
297
+ font-weight: 700 !important;
298
+ letter-spacing: 0 !important;
299
+ }
300
+
301
+ #nd-page :is(h1, h2, h3, h4) > a.peer,
302
+ .fd-docs-content :is(h1, h2, h3, h4) > a.peer {
303
+ border: 0 !important;
304
+ border-radius: 0 !important;
305
+ background: transparent !important;
306
+ box-shadow: none !important;
307
+ color: inherit !important;
308
+ padding: 0 !important;
309
+ text-decoration: none !important;
310
+ }
311
+
312
+ .fd-page-description,
313
+ .fd-docs-content p,
314
+ .fd-docs-content li,
315
+ .fd-docs-content td,
316
+ .fd-docs-content blockquote {
317
+ color: var(--color-fd-muted-foreground);
318
+ line-height: 1.7;
319
+ }
320
+
321
+ .fd-page-description {
322
+ max-width: 68ch;
323
+ font-size: 1.0625rem;
324
+ }
325
+
326
+ .fd-docs-content a:not([data-card]),
327
+ #nd-page a:not([data-card]) {
328
+ color: var(--color-fd-primary);
329
+ text-underline-offset: 3px;
330
+ }
331
+
332
+ .fd-card,
333
+ [data-card],
334
+ .fd-hover-link-card,
335
+ .fd-page-nav,
336
+ .fd-page-nav-card,
337
+ [class*="fd-callout"],
338
+ .fd-page-action-menu,
339
+ .fd-ai-dialog,
340
+ .fd-ai-fm-input-container,
341
+ .fd-ai-fm-suggestion,
342
+ .fd-ai-model-dropdown-menu,
343
+ .omni-content,
344
+ .fd-feedback-input,
345
+ .fd-feedback-choice,
346
+ .fd-feedback-submit {
347
+ border: 1px solid var(--fd-ledger-soft-border) !important;
348
+ border-radius: 0.5rem !important;
349
+ background: color-mix(in srgb, var(--color-fd-card) 96%, transparent) !important;
350
+ box-shadow: 0 1px 2px rgba(48, 54, 74, 0.05) !important;
351
+ }
352
+
353
+ .fd-card:hover,
354
+ [data-card]:hover,
355
+ .fd-hover-link-card:hover,
356
+ .fd-page-nav-card:hover {
357
+ border-color: color-mix(in srgb, var(--color-fd-primary) 28%, var(--color-fd-border)) !important;
358
+ box-shadow: var(--fd-ledger-shadow) !important;
359
+ }
360
+
361
+ .fd-page-action-btn,
362
+ .fd-copy-btn,
363
+ .fd-ai-code-copy,
364
+ .fd-ai-floating-btn,
365
+ .fd-ai-send-btn,
366
+ .fd-ai-fm-send-btn,
367
+ .fd-ai-model-dropdown-btn {
368
+ border-radius: 0.5rem !important;
369
+ }
370
+
371
+ .fd-page-action-btn {
372
+ background: var(--fd-ledger-action-bg) !important;
373
+ color: var(--fd-ledger-action-color) !important;
374
+ border: 1px solid var(--fd-ledger-soft-border) !important;
375
+ box-shadow: 0 1px 2px rgba(48, 54, 74, 0.06) !important;
376
+ }
377
+
378
+ .fd-page-action-btn svg {
379
+ color: var(--fd-ledger-action-icon) !important;
380
+ stroke: currentColor !important;
381
+ }
382
+
383
+ .fd-page-action-btn:hover {
384
+ background: var(--fd-ledger-action-hover) !important;
385
+ border-color: color-mix(in srgb, var(--color-fd-primary) 34%, var(--color-fd-border)) !important;
386
+ color: var(--color-fd-foreground) !important;
387
+ box-shadow: 0 8px 20px color-mix(in srgb, var(--color-fd-primary) 12%, transparent) !important;
388
+ }
389
+
390
+ .fd-feedback-submit,
391
+ .fd-ai-send-btn,
392
+ .fd-ai-fm-send-btn,
393
+ .fd-ai-floating-btn {
394
+ background: var(--color-fd-primary) !important;
395
+ color: var(--color-fd-primary-foreground) !important;
396
+ border: 1px solid transparent !important;
397
+ box-shadow: 0 8px 22px color-mix(in srgb, var(--color-fd-primary) 22%, transparent) !important;
398
+ }
399
+
400
+ .fd-feedback-submit:hover,
401
+ .fd-ai-send-btn:hover,
402
+ .fd-ai-fm-send-btn:hover,
403
+ .fd-ai-floating-btn:hover {
404
+ background: color-mix(in srgb, var(--color-fd-primary) 88%, #000000) !important;
405
+ }
406
+
407
+ .fd-tabs,
408
+ .fd-tabs-list,
409
+ [role="tablist"] {
410
+ border: 1px solid var(--fd-ledger-soft-border) !important;
411
+ border-radius: 0.5rem !important;
412
+ background: var(--color-fd-secondary) !important;
413
+ padding: 0.25rem;
414
+ }
415
+
416
+ .fd-tabs-trigger,
417
+ .fd-tab-trigger,
418
+ [role="tab"] {
419
+ border-radius: 0.375rem !important;
420
+ color: var(--color-fd-muted-foreground) !important;
421
+ font-weight: 600 !important;
422
+ }
423
+
424
+ .fd-tabs-trigger[data-state="active"],
425
+ .fd-tab-trigger[data-state="active"],
426
+ [role="tab"][aria-selected="true"],
427
+ [role="tab"][data-active="true"] {
428
+ background: var(--color-fd-card) !important;
429
+ color: var(--color-fd-primary) !important;
430
+ box-shadow: 0 1px 2px rgba(48, 54, 74, 0.08) !important;
431
+ }
432
+
433
+ .fd-docs-content pre,
434
+ .fd-docs-content .shiki,
435
+ .fd-docs-content [data-codeblock],
436
+ figure.shiki,
437
+ .fd-codeblock,
438
+ .fd-ai-code-block {
439
+ border: 1px solid var(--fd-ledger-code-border) !important;
440
+ border-radius: 0.5rem !important;
441
+ background: var(--fd-ledger-code-bg) !important;
442
+ color: var(--fd-ledger-code-fg) !important;
443
+ box-shadow: var(--fd-ledger-code-shadow) !important;
444
+ overflow: hidden;
445
+ }
446
+
447
+ figure.shiki,
448
+ .fd-docs-content .shiki {
449
+ background: var(--fd-ledger-code-bg) !important;
450
+ color: var(--shiki-light, var(--fd-ledger-code-fg)) !important;
451
+ }
452
+
453
+ figure.shiki :is(pre, code, span),
454
+ .fd-docs-content .shiki :is(pre, code, span) {
455
+ color: var(--shiki-light, var(--fd-ledger-code-fg)) !important;
456
+ }
457
+
458
+ :is(html.dark, body.dark, .dark) figure.shiki,
459
+ :is(html.dark, body.dark, .dark) .fd-docs-content .shiki {
460
+ background: var(--fd-ledger-code-bg) !important;
461
+ color: var(--shiki-dark, var(--fd-ledger-code-fg)) !important;
462
+ }
463
+
464
+ :is(html.dark, body.dark, .dark) figure.shiki :is(pre, code, span),
465
+ :is(html.dark, body.dark, .dark) .fd-docs-content .shiki :is(pre, code, span) {
466
+ color: var(--shiki-dark, var(--fd-ledger-code-fg)) !important;
467
+ }
468
+
469
+ .fd-docs-content pre,
470
+ figure.shiki pre,
471
+ .fd-codeblock pre {
472
+ background: transparent !important;
473
+ box-shadow: none !important;
474
+ }
475
+
476
+ .fd-codeblock-title,
477
+ figure.shiki:has(figcaption) > div:first-child,
478
+ figure.shiki figcaption,
479
+ .fd-ai-code-header {
480
+ display: flex !important;
481
+ min-height: 2.5rem !important;
482
+ align-items: center !important;
483
+ gap: 0 !important;
484
+ border-bottom: 1px solid var(--fd-ledger-code-border) !important;
485
+ background: var(--fd-ledger-code-bg) !important;
486
+ color: var(--fd-ledger-code-title) !important;
487
+ font-size: 0.8125rem !important;
488
+ font-weight: 650 !important;
489
+ letter-spacing: 0 !important;
490
+ line-height: 1.4 !important;
491
+ padding: 0 0.875rem !important;
492
+ }
493
+
494
+ .fd-codeblock-title-text,
495
+ figure.shiki figcaption,
496
+ .fd-ai-code-header span {
497
+ color: var(--fd-ledger-code-title) !important;
498
+ font-weight: 700 !important;
499
+ }
500
+
501
+ .fd-codeblock-title .fd-copy-btn,
502
+ figure.shiki:has(figcaption) > div:first-child > button,
503
+ figure.shiki:has(figcaption) > div:first-child > div:last-child {
504
+ margin-left: auto !important;
505
+ }
506
+
507
+ .fd-copy-btn,
508
+ .fd-ai-code-copy {
509
+ background: color-mix(in srgb, var(--fd-ledger-code-fg) 8%, transparent) !important;
510
+ border: 1px solid color-mix(in srgb, var(--fd-ledger-code-fg) 12%, transparent) !important;
511
+ color: var(--fd-ledger-code-fg) !important;
512
+ }
513
+
514
+ .fd-copy-btn:hover,
515
+ .fd-ai-code-copy:hover {
516
+ background: color-mix(in srgb, var(--fd-ledger-code-fg) 14%, transparent) !important;
517
+ }
518
+
519
+ .fd-docs-content :not(pre) > code {
520
+ border: 1px solid color-mix(in srgb, var(--color-fd-primary) 16%, transparent);
521
+ border-radius: 0.375rem;
522
+ background: color-mix(in srgb, var(--color-fd-primary) 9%, transparent);
523
+ color: var(--color-fd-foreground);
524
+ }
525
+
526
+ .fd-table-wrapper,
527
+ .fd-docs-content table,
528
+ .prose table {
529
+ border: 1px solid var(--fd-ledger-soft-border) !important;
530
+ border-radius: 0.5rem !important;
531
+ background: var(--color-fd-card) !important;
532
+ overflow: hidden;
533
+ }
534
+
535
+ .fd-table-wrapper th,
536
+ .prose th {
537
+ background: var(--color-fd-secondary) !important;
538
+ color: var(--color-fd-foreground) !important;
539
+ font-weight: 700;
540
+ }
541
+
542
+ .fd-callout,
543
+ [class*="fd-callout"] {
544
+ background: color-mix(in srgb, var(--color-fd-primary) 7%, var(--color-fd-card)) !important;
545
+ }
546
+
547
+ .fd-callout-title {
548
+ color: var(--color-fd-foreground);
549
+ font-weight: 700;
550
+ }
551
+
552
+ .omni-header,
553
+ .omni-footer,
554
+ .fd-ai-model-dropdown-menu {
555
+ border-color: var(--fd-ledger-soft-border) !important;
556
+ background: var(--color-fd-card) !important;
557
+ }
558
+
559
+ .omni-item,
560
+ .omni-item-ext,
561
+ .fd-ai-model-dropdown-item {
562
+ border-radius: 0.5rem !important;
563
+ }
564
+
565
+ .omni-item:hover,
566
+ .omni-item[data-selected="true"],
567
+ .fd-ai-model-dropdown-item:hover {
568
+ background: color-mix(in srgb, var(--color-fd-primary) 10%, transparent) !important;
569
+ color: var(--color-fd-primary) !important;
570
+ }
571
+
572
+ @media (max-width: 767px) {
573
+ .fd-page-title,
574
+ #nd-page > h1,
575
+ .fd-docs-content article h1,
576
+ #nd-page h1,
577
+ .fd-docs-content h1 {
578
+ font-size: 1.875rem;
579
+ }
580
+
581
+ .fd-docs-content article h2,
582
+ #nd-page h2,
583
+ .fd-docs-content h2 {
584
+ font-size: 1.375rem;
585
+ }
586
+ }