@farming-labs/theme 0.1.7 → 0.1.8

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.
@@ -0,0 +1,90 @@
1
+ import * as _farming_labs_docs0 from "@farming-labs/docs";
2
+
3
+ //#region src/command-grid/index.d.ts
4
+ declare const CommandGridUIDefaults: {
5
+ colors: {
6
+ primary: string;
7
+ background: string;
8
+ muted: string;
9
+ border: string;
10
+ };
11
+ typography: {
12
+ font: {
13
+ style: {
14
+ sans: string;
15
+ mono: string;
16
+ };
17
+ h1: {
18
+ size: string;
19
+ weight: number;
20
+ lineHeight: string;
21
+ letterSpacing: string;
22
+ };
23
+ h2: {
24
+ size: string;
25
+ weight: number;
26
+ lineHeight: string;
27
+ letterSpacing: string;
28
+ };
29
+ h3: {
30
+ size: string;
31
+ weight: number;
32
+ lineHeight: string;
33
+ letterSpacing: string;
34
+ };
35
+ h4: {
36
+ size: string;
37
+ weight: number;
38
+ lineHeight: string;
39
+ letterSpacing: string;
40
+ };
41
+ body: {
42
+ size: string;
43
+ weight: number;
44
+ lineHeight: string;
45
+ };
46
+ small: {
47
+ size: string;
48
+ weight: number;
49
+ lineHeight: string;
50
+ letterSpacing: string;
51
+ };
52
+ };
53
+ };
54
+ radius: string;
55
+ layout: {
56
+ contentWidth: number;
57
+ sidebarWidth: number;
58
+ toc: {
59
+ enabled: boolean;
60
+ depth: number;
61
+ style: "directional";
62
+ };
63
+ header: {
64
+ height: number;
65
+ sticky: boolean;
66
+ };
67
+ };
68
+ sidebar: {
69
+ style: "bordered";
70
+ };
71
+ components: {
72
+ Callout: {
73
+ variant: string;
74
+ icon: boolean;
75
+ };
76
+ CodeBlock: {
77
+ showCopyButton: boolean;
78
+ };
79
+ HoverLink: {
80
+ linkLabel: string;
81
+ showIndicator: boolean;
82
+ };
83
+ Tabs: {
84
+ style: "default";
85
+ };
86
+ };
87
+ };
88
+ declare const commandGrid: (overrides?: Partial<_farming_labs_docs0.DocsTheme>) => _farming_labs_docs0.DocsTheme;
89
+ //#endregion
90
+ export { CommandGridUIDefaults, commandGrid };
@@ -0,0 +1,92 @@
1
+ import { createTheme } from "@farming-labs/docs";
2
+
3
+ //#region src/command-grid/index.ts
4
+ /**
5
+ * Command Grid theme preset.
6
+ * Better-cmdk-inspired light theme over the concrete base, without offset shadows.
7
+ *
8
+ * CSS: `@import "@farming-labs/theme/command-grid/css";`
9
+ */
10
+ const CommandGridUIDefaults = {
11
+ colors: {
12
+ primary: "#141414",
13
+ background: "#f8f6ed",
14
+ muted: "#3d3d3d",
15
+ border: "#141210"
16
+ },
17
+ typography: { font: {
18
+ style: {
19
+ sans: "var(--font-ibm-plex-mono), 'IBM Plex Mono', 'Geist Mono', ui-monospace, monospace",
20
+ mono: "var(--font-ibm-plex-mono), 'IBM Plex Mono', 'Geist Mono', ui-monospace, monospace"
21
+ },
22
+ h1: {
23
+ size: "3.3rem",
24
+ weight: 400,
25
+ lineHeight: "0.86",
26
+ letterSpacing: "0.01em"
27
+ },
28
+ h2: {
29
+ size: "2.4rem",
30
+ weight: 400,
31
+ lineHeight: "0.92",
32
+ letterSpacing: "0.012em"
33
+ },
34
+ h3: {
35
+ size: "1.42rem",
36
+ weight: 600,
37
+ lineHeight: "1.18",
38
+ letterSpacing: "-0.01em"
39
+ },
40
+ h4: {
41
+ size: "1.05rem",
42
+ weight: 600,
43
+ lineHeight: "1.34",
44
+ letterSpacing: "0em"
45
+ },
46
+ body: {
47
+ size: "0.98rem",
48
+ weight: 400,
49
+ lineHeight: "1.7"
50
+ },
51
+ small: {
52
+ size: "0.8rem",
53
+ weight: 500,
54
+ lineHeight: "1.45",
55
+ letterSpacing: "0.02em"
56
+ }
57
+ } },
58
+ radius: "0px",
59
+ layout: {
60
+ contentWidth: 900,
61
+ sidebarWidth: 304,
62
+ toc: {
63
+ enabled: true,
64
+ depth: 3,
65
+ style: "directional"
66
+ },
67
+ header: {
68
+ height: 64,
69
+ sticky: true
70
+ }
71
+ },
72
+ sidebar: { style: "bordered" },
73
+ components: {
74
+ Callout: {
75
+ variant: "soft",
76
+ icon: true
77
+ },
78
+ CodeBlock: { showCopyButton: true },
79
+ HoverLink: {
80
+ linkLabel: "Open page",
81
+ showIndicator: false
82
+ },
83
+ Tabs: { style: "default" }
84
+ }
85
+ };
86
+ const commandGrid = createTheme({
87
+ name: "command-grid",
88
+ ui: CommandGridUIDefaults
89
+ });
90
+
91
+ //#endregion
92
+ export { CommandGridUIDefaults, commandGrid };
package/dist/index.d.mts CHANGED
@@ -1,3 +1,4 @@
1
+ import { CommandGridUIDefaults, commandGrid } from "./command-grid/index.mjs";
1
2
  import { ConcreteUIDefaults, concrete } from "./concrete/index.mjs";
2
3
  import { DefaultUIDefaults, fumadocs } from "./default/index.mjs";
3
4
  import { DocsCommandSearch } from "./docs-command-search.mjs";
@@ -15,4 +16,4 @@ import { AIConfig, BreadcrumbConfig, CopyMarkdownConfig, DocsConfig, DocsFeedbac
15
16
  import { DocsBody, DocsPage } from "fumadocs-ui/layouts/docs/page";
16
17
  import { Tab, Tabs } from "fumadocs-ui/components/tabs";
17
18
  import { CodeBlock, CodeBlockTab, CodeBlockTabs, CodeBlockTabsList, CodeBlockTabsTrigger, Pre } from "fumadocs-ui/components/codeblock";
18
- export { type AIConfig, type BreadcrumbConfig, CodeBlock, CodeBlockTab, CodeBlockTabs, CodeBlockTabsList, CodeBlockTabsTrigger, 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, RootProvider, type SidebarConfig, Tab, Tabs, type ThemeToggleConfig, type TypographyConfig, type UIConfig, concrete, createDocsLayout, createDocsMetadata, createPageMetadata, createTheme, deepMerge, defineDocs, extendTheme, fumadocs, hardline, withLangInUrl };
19
+ export { type AIConfig, type BreadcrumbConfig, 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, RootProvider, type SidebarConfig, Tab, Tabs, type ThemeToggleConfig, type TypographyConfig, type UIConfig, commandGrid, concrete, createDocsLayout, createDocsMetadata, createPageMetadata, createTheme, deepMerge, defineDocs, extendTheme, fumadocs, hardline, withLangInUrl };
package/dist/index.mjs CHANGED
@@ -6,6 +6,7 @@ import { DocsCommandSearch } from "./docs-command-search.mjs";
6
6
  import { createDocsLayout, createDocsMetadata, createPageMetadata } from "./docs-layout.mjs";
7
7
  import { RootProvider } from "./provider.mjs";
8
8
  import { DefaultUIDefaults, fumadocs } from "./default/index.mjs";
9
+ import { CommandGridUIDefaults, commandGrid } from "./command-grid/index.mjs";
9
10
  import { ConcreteUIDefaults, concrete } from "./concrete/index.mjs";
10
11
  import { HardlineUIDefaults, hardline } from "./hardline/index.mjs";
11
12
  import { DocsClientHooks } from "./docs-client-hooks.mjs";
@@ -16,4 +17,4 @@ import { DocsBody, DocsPage } from "fumadocs-ui/layouts/docs/page";
16
17
  import { Tab, Tabs } from "fumadocs-ui/components/tabs";
17
18
  import { CodeBlock, CodeBlockTab, CodeBlockTabs, CodeBlockTabsList, CodeBlockTabsTrigger, Pre } from "fumadocs-ui/components/codeblock";
18
19
 
19
- export { CodeBlock, CodeBlockTab, CodeBlockTabs, CodeBlockTabsList, CodeBlockTabsTrigger, ConcreteUIDefaults, DocsBody, DocsClientHooks, DocsCommandSearch, DocsFeedback, DocsLayout, DocsPage, DocsPageClient, DefaultUIDefaults as FumadocsUIDefaults, HardlineUIDefaults, HoverLink, PageActions, Pre, RootProvider, Tab, Tabs, concrete, createDocsLayout, createDocsMetadata, createPageMetadata, createTheme, deepMerge, defineDocs, extendTheme, fumadocs, hardline, withLangInUrl };
20
+ export { CodeBlock, CodeBlockTab, CodeBlockTabs, CodeBlockTabsList, CodeBlockTabsTrigger, CommandGridUIDefaults, ConcreteUIDefaults, DocsBody, DocsClientHooks, DocsCommandSearch, DocsFeedback, DocsLayout, DocsPage, DocsPageClient, DefaultUIDefaults as FumadocsUIDefaults, HardlineUIDefaults, HoverLink, PageActions, Pre, RootProvider, Tab, Tabs, commandGrid, concrete, createDocsLayout, createDocsMetadata, createPageMetadata, createTheme, deepMerge, defineDocs, extendTheme, fumadocs, hardline, withLangInUrl };
package/dist/mdx.d.mts CHANGED
@@ -10,8 +10,12 @@ import * as fumadocs_ui_components_card0 from "fumadocs-ui/components/card";
10
10
  import * as fumadocs_ui_components_callout0 from "fumadocs-ui/components/callout";
11
11
 
12
12
  //#region src/mdx.d.ts
13
+ declare function Table(props: React.ComponentPropsWithoutRef<"table">): React.DetailedReactHTMLElement<{
14
+ className: string;
15
+ }, HTMLElement>;
13
16
  declare const extendedMdxComponents: {
14
17
  img: typeof MDXImg;
18
+ table: typeof Table;
15
19
  HoverLink: typeof HoverLink;
16
20
  Tab: typeof Tab;
17
21
  Tabs: typeof Tabs;
@@ -29,7 +33,6 @@ declare const extendedMdxComponents: {
29
33
  h4: (props: React.HTMLAttributes<HTMLHeadingElement>) => react_jsx_runtime0.JSX.Element;
30
34
  h5: (props: React.HTMLAttributes<HTMLHeadingElement>) => react_jsx_runtime0.JSX.Element;
31
35
  h6: (props: React.HTMLAttributes<HTMLHeadingElement>) => react_jsx_runtime0.JSX.Element;
32
- table: (props: React.TableHTMLAttributes<HTMLTableElement>) => react_jsx_runtime0.JSX.Element;
33
36
  Callout: typeof fumadocs_ui_components_callout0.Callout;
34
37
  CalloutContainer: typeof fumadocs_ui_components_callout0.CalloutContainer;
35
38
  CalloutTitle: typeof fumadocs_ui_components_callout0.CalloutTitle;
package/dist/mdx.mjs CHANGED
@@ -24,9 +24,13 @@ import defaultMdxComponents from "fumadocs-ui/mdx";
24
24
  * { onCopyClick: docsConfig.onCopyClick, theme: docsConfig.theme }
25
25
  * );
26
26
  */
27
+ function Table(props) {
28
+ return React.createElement("div", { className: "fd-table-wrapper relative overflow-auto prose-no-margin my-6" }, React.createElement("table", props));
29
+ }
27
30
  const extendedMdxComponents = {
28
31
  ...defaultMdxComponents,
29
32
  img: MDXImg,
33
+ table: Table,
30
34
  HoverLink,
31
35
  Tab,
32
36
  Tabs
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@farming-labs/theme",
3
- "version": "0.1.7",
3
+ "version": "0.1.8",
4
4
  "description": "Theme package for @farming-labs/docs — layout, provider, MDX components, and styles",
5
5
  "keywords": [
6
6
  "docs",
@@ -78,6 +78,11 @@
78
78
  "import": "./dist/concrete/index.mjs",
79
79
  "default": "./dist/concrete/index.mjs"
80
80
  },
81
+ "./command-grid": {
82
+ "types": "./dist/command-grid/index.d.mts",
83
+ "import": "./dist/command-grid/index.mjs",
84
+ "default": "./dist/command-grid/index.mjs"
85
+ },
81
86
  "./search": {
82
87
  "types": "./dist/search.d.mts",
83
88
  "import": "./dist/search.mjs",
@@ -109,6 +114,7 @@
109
114
  "./greentree/css": "./styles/greentree.css",
110
115
  "./hardline/css": "./styles/hardline.css",
111
116
  "./concrete/css": "./styles/concrete.css",
117
+ "./command-grid/css": "./styles/command-grid.css",
112
118
  "./presets/neutral": "./styles/presets/neutral.css",
113
119
  "./presets/black": "./styles/presets/black.css",
114
120
  "./presets/base": "./styles/presets/base.css"
@@ -127,7 +133,7 @@
127
133
  "tsdown": "^0.20.3",
128
134
  "typescript": "^5.9.3",
129
135
  "vitest": "^3.2.4",
130
- "@farming-labs/docs": "0.1.7"
136
+ "@farming-labs/docs": "0.1.8"
131
137
  },
132
138
  "peerDependencies": {
133
139
  "@farming-labs/docs": ">=0.0.1",
@@ -0,0 +1,726 @@
1
+ /* @farming-labs/theme - command-grid theme CSS */
2
+ @import "./concrete.css";
3
+
4
+ :root {
5
+ --color-fd-primary: #141414;
6
+ --color-fd-primary-foreground: #f8f6ed;
7
+ --color-fd-ring: #141414;
8
+
9
+ --color-fd-background: #f8f6ed;
10
+ --color-fd-foreground: #141414;
11
+ --color-fd-card: #fdfcf8;
12
+ --color-fd-card-foreground: #141414;
13
+ --color-fd-popover: #fdfcf8;
14
+ --color-fd-popover-foreground: #141414;
15
+ --color-fd-secondary: #e6dfca;
16
+ --color-fd-secondary-foreground: #141414;
17
+ --color-fd-muted: #e6dfca;
18
+ --color-fd-muted-foreground: #3d3d3d;
19
+ --color-fd-accent: #d1c0a9;
20
+ --color-fd-accent-foreground: #141414;
21
+ --color-fd-border: #141414;
22
+
23
+ --radius: 0px;
24
+ --fd-nav-height: 64px;
25
+ }
26
+
27
+ :is(html.dark, body.dark) {
28
+ --color-fd-primary: #f8f6ed;
29
+ --color-fd-primary-foreground: #121212;
30
+ --color-fd-ring: #f8f6ed;
31
+
32
+ --color-fd-background: #121212;
33
+ --color-fd-foreground: #f8f6ed;
34
+ --color-fd-card: #1a1a1a;
35
+ --color-fd-card-foreground: #f8f6ed;
36
+ --color-fd-popover: #1a1a1a;
37
+ --color-fd-popover-foreground: #f8f6ed;
38
+ --color-fd-secondary: #292929;
39
+ --color-fd-secondary-foreground: #f8f6ed;
40
+ --color-fd-muted: #292929;
41
+ --color-fd-muted-foreground: #c5c0b5;
42
+ --color-fd-accent: #b6a791;
43
+ --color-fd-accent-foreground: #121212;
44
+ --color-fd-border: #f8f6ed;
45
+ }
46
+
47
+ body:has(#nd-docs-layout) {
48
+ background: var(--color-fd-background);
49
+ background-image:
50
+ linear-gradient(to right, rgb(20 20 20 / 6%) 1px, transparent 1px),
51
+ linear-gradient(to bottom, rgb(20 20 20 / 6%) 1px, transparent 1px);
52
+ background-size: 48px 48px;
53
+ background-attachment: fixed;
54
+ }
55
+
56
+ :is(html.dark, body.dark) body:has(#nd-docs-layout) {
57
+ background-image:
58
+ linear-gradient(to right, rgb(248 246 237 / 5%) 1px, transparent 1px),
59
+ linear-gradient(to bottom, rgb(248 246 237 / 5%) 1px, transparent 1px);
60
+ }
61
+
62
+ #nd-docs-layout > header,
63
+ [role="banner"] {
64
+ border-bottom: 4px solid var(--color-fd-border) !important;
65
+ background: color-mix(in srgb, var(--color-fd-background) 95%, transparent) !important;
66
+ backdrop-filter: blur(8px);
67
+ box-shadow: none !important;
68
+ }
69
+
70
+ aside#nd-sidebar {
71
+ border-right: 2px solid var(--color-fd-border) !important;
72
+ background: var(--color-fd-background) !important;
73
+ }
74
+
75
+ aside#nd-sidebar,
76
+ .fd-sidebar {
77
+ color: var(--color-fd-foreground);
78
+ }
79
+
80
+ aside#nd-sidebar [data-radix-scroll-area-viewport],
81
+ aside#nd-sidebar [data-radix-scroll-area-content],
82
+ aside#nd-sidebar .fd-sidebar {
83
+ background: transparent !important;
84
+ }
85
+
86
+ aside#nd-sidebar > *,
87
+ .fd-sidebar > * {
88
+ background: transparent;
89
+ }
90
+
91
+ aside a[data-active],
92
+ aside button[data-active],
93
+ .fd-sidebar a,
94
+ .fd-sidebar button {
95
+ text-transform: uppercase;
96
+ letter-spacing: 0.08em;
97
+ font-size: 0.77rem;
98
+ font-family: var(--fd-font-mono, ui-monospace, monospace);
99
+ }
100
+
101
+ aside#nd-sidebar a:not(.fd-sidebar-search-btn):not(.fd-sidebar-ai-btn),
102
+ aside#nd-sidebar button:not(.fd-sidebar-search-btn):not(.fd-sidebar-ai-btn),
103
+ .fd-sidebar a:not(.fd-sidebar-search-btn):not(.fd-sidebar-ai-btn),
104
+ .fd-sidebar button:not(.fd-sidebar-search-btn):not(.fd-sidebar-ai-btn) {
105
+ border: 2px solid transparent;
106
+ border-radius: 0 !important;
107
+ min-height: 2.9rem;
108
+ }
109
+
110
+ aside#nd-sidebar a:not(.fd-sidebar-search-btn):not(.fd-sidebar-ai-btn):hover,
111
+ aside#nd-sidebar button:not(.fd-sidebar-search-btn):not(.fd-sidebar-ai-btn):hover,
112
+ .fd-sidebar a:not(.fd-sidebar-search-btn):not(.fd-sidebar-ai-btn):hover,
113
+ .fd-sidebar button:not(.fd-sidebar-search-btn):not(.fd-sidebar-ai-btn):hover {
114
+ background: color-mix(in srgb, var(--color-fd-secondary) 70%, transparent) !important;
115
+ color: var(--color-fd-foreground) !important;
116
+ border-color: var(--color-fd-border) !important;
117
+ }
118
+
119
+ aside#nd-sidebar a.inline-flex,
120
+ .fd-sidebar a.inline-flex {
121
+ font-family: var(--fd-font-mono, ui-monospace, monospace);
122
+ font-size: 0.92rem;
123
+ letter-spacing: 0.08em;
124
+ text-transform: uppercase;
125
+ }
126
+
127
+ aside [data-active="false"] {
128
+ color: color-mix(in srgb, var(--color-fd-foreground) 80%, transparent) !important;
129
+ }
130
+
131
+ aside a[data-active="true"] {
132
+ background: var(--color-fd-foreground) !important;
133
+ color: var(--color-fd-background) !important;
134
+ border-color: var(--color-fd-border) !important;
135
+ }
136
+
137
+ aside div.overflow-hidden.relative[data-state]::before {
138
+ inset-inline-start: 1.125rem !important;
139
+ }
140
+
141
+ aside div.overflow-hidden.relative[data-state] a[data-active] {
142
+ padding-inline-start: 1.75rem !important;
143
+ }
144
+
145
+ aside div.overflow-hidden.relative[data-state] a[data-active="true"]::before {
146
+ inset-inline-start: 1.125rem !important;
147
+ }
148
+
149
+ #nd-toc {
150
+ border-left: 2px solid var(--color-fd-border) !important;
151
+ padding-left: 1rem;
152
+ background: transparent !important;
153
+ }
154
+
155
+ #toc-title,
156
+ .fd-toc-link,
157
+ .fd-toc-clerk .fd-toc-link {
158
+ font-family: var(--fd-font-mono, ui-monospace, monospace) !important;
159
+ text-transform: uppercase;
160
+ }
161
+
162
+ #toc-title {
163
+ letter-spacing: 0.16em;
164
+ font-size: 0.72rem;
165
+ color: color-mix(in srgb, var(--color-fd-foreground) 72%, transparent) !important;
166
+ }
167
+
168
+ .fd-toc-link,
169
+ .fd-toc-clerk .fd-toc-link {
170
+ letter-spacing: 0.08em;
171
+ font-size: 0.72rem;
172
+ border-left: 2px solid transparent;
173
+ padding-left: 0.8rem;
174
+ color: color-mix(in srgb, var(--color-fd-foreground) 82%, transparent);
175
+ }
176
+
177
+ .fd-toc-link:hover,
178
+ .fd-toc-clerk .fd-toc-link:hover {
179
+ border-left-color: var(--color-fd-border);
180
+ background: color-mix(in srgb, var(--color-fd-secondary) 58%, transparent);
181
+ color: var(--color-fd-foreground);
182
+ }
183
+
184
+ .fd-toc-link-active,
185
+ .fd-toc-clerk .fd-toc-link[data-active="true"] {
186
+ border-left-color: var(--color-fd-foreground);
187
+ color: var(--color-fd-foreground);
188
+ }
189
+
190
+ .fd-page-title,
191
+ #nd-page > h1,
192
+ .fd-docs-content article h1,
193
+ #nd-page h1,
194
+ .fd-docs-content h1,
195
+ .fd-docs-content article h2,
196
+ #nd-page h2,
197
+ .fd-docs-content h2 {
198
+ max-width: none;
199
+ font-family: var(--font-bebas), var(--fd-font-sans), sans-serif !important;
200
+ font-weight: 400 !important;
201
+ text-transform: uppercase !important;
202
+ line-height: 0.9 !important;
203
+ color: var(--color-fd-foreground) !important;
204
+ }
205
+
206
+ .fd-page-title,
207
+ #nd-page > h1,
208
+ .fd-docs-content article h1,
209
+ #nd-page h1,
210
+ .fd-docs-content h1 {
211
+ font-size: clamp(3.1rem, 7vw, 5.75rem);
212
+ letter-spacing: 0.04em;
213
+ text-wrap: balance;
214
+ margin-bottom: 0.9rem;
215
+ }
216
+
217
+ .fd-docs-content article h2,
218
+ #nd-page h2,
219
+ .fd-docs-content h2 {
220
+ font-size: clamp(2rem, 4vw, 3.25rem);
221
+ letter-spacing: 0.045em;
222
+ margin-top: 3rem;
223
+ margin-bottom: 1rem;
224
+ }
225
+
226
+ .fd-page-title > a,
227
+ #nd-page > h1 > a,
228
+ .fd-docs-content article h1 > a,
229
+ #nd-page h1 > a,
230
+ .fd-docs-content h1 > a,
231
+ .fd-docs-content article h2 > a,
232
+ #nd-page h2 > a,
233
+ .fd-docs-content h2 > a {
234
+ font-family: inherit !important;
235
+ font-size: inherit !important;
236
+ font-weight: inherit !important;
237
+ letter-spacing: inherit !important;
238
+ text-transform: inherit !important;
239
+ line-height: inherit !important;
240
+ }
241
+
242
+ .fd-docs-content article h3,
243
+ #nd-page h3,
244
+ .fd-docs-content h3,
245
+ .fd-docs-content article h4,
246
+ #nd-page h4,
247
+ .fd-docs-content h4 {
248
+ font-family: var(--fd-font-mono, ui-monospace, monospace);
249
+ text-transform: uppercase;
250
+ letter-spacing: 0.12em;
251
+ color: color-mix(in srgb, var(--color-fd-foreground) 88%, transparent);
252
+ }
253
+
254
+ .fd-docs-content h3 {
255
+ font-size: 0.96rem;
256
+ margin-top: 2rem;
257
+ margin-bottom: 0.8rem;
258
+ }
259
+
260
+ .fd-docs-content h4 {
261
+ font-size: 0.82rem;
262
+ margin-top: 1.6rem;
263
+ margin-bottom: 0.7rem;
264
+ }
265
+
266
+ .fd-page-description,
267
+ .fd-docs-content p,
268
+ .fd-docs-content li,
269
+ .fd-docs-content td,
270
+ .fd-docs-content blockquote {
271
+ font-family: var(--fd-font-mono, ui-monospace, monospace);
272
+ }
273
+
274
+ .fd-page-description {
275
+ color: color-mix(in srgb, var(--color-fd-foreground) 90%, transparent);
276
+ text-transform: uppercase;
277
+ letter-spacing: 0.08em;
278
+ font-size: 0.82rem;
279
+ line-height: 1.75;
280
+ max-width: 72ch;
281
+ }
282
+
283
+ .fd-card,
284
+ [data-card],
285
+ [class*="fd-callout"],
286
+ .fd-page-action-menu,
287
+ .fd-page-action-btn,
288
+ .fd-docs-content pre,
289
+ .fd-docs-content .shiki,
290
+ .fd-docs-content [data-codeblock],
291
+ .fd-page-nav,
292
+ .fd-page-nav-card,
293
+ [class*="page-nav"] a,
294
+ .fd-hover-link-card,
295
+ .fd-page-body .fd-table-wrapper,
296
+ .fd-docs-content table,
297
+ .fd-tabs,
298
+ .fd-tabs-list,
299
+ .fd-tabs-trigger,
300
+ .fd-feedback-input,
301
+ .fd-feedback-submit,
302
+ .fd-feedback-choice,
303
+ .fd-ai-dialog,
304
+ .fd-ai-fm-input-container,
305
+ .fd-ai-fm-suggestion,
306
+ .fd-ai-model-dropdown-btn,
307
+ .fd-ai-model-dropdown-menu,
308
+ .fd-ai-model-dropdown-item,
309
+ .fd-ai-floating-btn,
310
+ .omni-content,
311
+ .omni-item,
312
+ .omni-item-ext,
313
+ .fd-copy-btn,
314
+ .fd-ai-code-copy {
315
+ box-shadow: none !important;
316
+ border-radius: 0 !important;
317
+ }
318
+
319
+ .fd-card,
320
+ [data-card],
321
+ [class*="fd-callout"],
322
+ .fd-page-action-menu,
323
+ .fd-page-action-btn,
324
+ .fd-page-nav,
325
+ .fd-page-nav-card,
326
+ [class*="page-nav"] a,
327
+ .fd-hover-link-card,
328
+ .fd-feedback-input,
329
+ .fd-feedback-submit,
330
+ .fd-feedback-choice,
331
+ .fd-ai-dialog,
332
+ .fd-ai-fm-input-container,
333
+ .fd-ai-fm-suggestion,
334
+ .fd-ai-model-dropdown-btn,
335
+ .fd-ai-model-dropdown-menu,
336
+ .fd-ai-model-dropdown-item,
337
+ .fd-ai-floating-btn,
338
+ .omni-content,
339
+ .omni-item,
340
+ .omni-item-ext,
341
+ .fd-copy-btn,
342
+ .fd-ai-code-copy {
343
+ border: 2px solid var(--color-fd-border) !important;
344
+ background: var(--color-fd-card) !important;
345
+ background-image: none !important;
346
+ }
347
+
348
+ .fd-page-action-btn,
349
+ .fd-feedback-submit,
350
+ .fd-feedback-choice,
351
+ .fd-ai-tab,
352
+ .fd-copy-btn,
353
+ .fd-ai-code-copy,
354
+ .fd-ai-floating-btn,
355
+ .fd-ai-model-dropdown-btn,
356
+ .fd-ai-model-dropdown-item,
357
+ .fd-ai-fm-suggestion {
358
+ font-family: var(--fd-font-mono, ui-monospace, monospace) !important;
359
+ text-transform: uppercase;
360
+ letter-spacing: 0.12em;
361
+ transition:
362
+ background-color 140ms ease,
363
+ color 140ms ease,
364
+ border-color 140ms ease,
365
+ transform 140ms ease !important;
366
+ }
367
+
368
+ aside a[data-active="true"],
369
+ aside a[data-active="true"]:hover,
370
+ .fd-page-action-btn:hover,
371
+ .fd-page-action-btn[data-selected="true"],
372
+ .fd-page-action-btn[data-copied="true"],
373
+ .fd-feedback-choice:hover,
374
+ .fd-feedback-choice[data-selected="true"],
375
+ .fd-ai-tab[data-active="true"],
376
+ .fd-copy-btn:hover,
377
+ .fd-ai-code-copy:hover,
378
+ .fd-sidebar-search-btn:hover,
379
+ .fd-sidebar-ai-btn:hover,
380
+ .fd-ai-floating-btn:hover,
381
+ .fd-ai-model-dropdown-item:hover,
382
+ .fd-ai-fm-suggestion:hover {
383
+ box-shadow: none !important;
384
+ transform: translateY(-2px);
385
+ }
386
+
387
+ .dark aside a[data-active="true"],
388
+ .dark .fd-page-action-btn:hover,
389
+ .dark .fd-page-action-btn[data-selected="true"],
390
+ .dark .fd-page-action-btn[data-copied="true"],
391
+ .dark .fd-feedback-choice:hover,
392
+ .dark .fd-feedback-choice[data-selected="true"],
393
+ .dark .fd-ai-tab[data-active="true"] {
394
+ box-shadow: none !important;
395
+ }
396
+
397
+ .fd-sidebar-search-btn,
398
+ .fd-sidebar-ai-btn {
399
+ border: 2px solid var(--color-fd-border) !important;
400
+ background: var(--color-fd-secondary) !important;
401
+ font-family: var(--fd-font-mono, ui-monospace, monospace);
402
+ text-transform: uppercase;
403
+ letter-spacing: 0.12em;
404
+ color: var(--color-fd-foreground) !important;
405
+ }
406
+
407
+ .fd-sidebar-search-btn:hover,
408
+ .fd-sidebar-ai-btn:hover {
409
+ background: var(--color-fd-foreground) !important;
410
+ color: var(--color-fd-background) !important;
411
+ border-color: var(--color-fd-border) !important;
412
+ }
413
+
414
+ .fd-sidebar-search-kbd,
415
+ .fd-sidebar-search-kbd kbd {
416
+ color: inherit !important;
417
+ border-color: currentColor !important;
418
+ }
419
+
420
+ button[data-search-full],
421
+ [data-search-full] {
422
+ border: 2px solid var(--color-fd-border) !important;
423
+ border-radius: 0 !important;
424
+ background: var(--color-fd-secondary) !important;
425
+ color: var(--color-fd-foreground) !important;
426
+ font-family: var(--fd-font-mono, ui-monospace, monospace) !important;
427
+ font-size: 0.76rem !important;
428
+ letter-spacing: 0.12em;
429
+ text-transform: uppercase;
430
+ box-shadow: none !important;
431
+ }
432
+
433
+ button[data-search-full]:hover,
434
+ [data-search-full]:hover {
435
+ background: var(--color-fd-foreground) !important;
436
+ color: var(--color-fd-background) !important;
437
+ border-color: var(--color-fd-border) !important;
438
+ }
439
+
440
+ button[data-search-full] kbd,
441
+ [data-search-full] kbd {
442
+ border: 1px solid currentColor !important;
443
+ border-radius: 0 !important;
444
+ background: transparent !important;
445
+ color: inherit !important;
446
+ font-family: var(--fd-font-mono, ui-monospace, monospace) !important;
447
+ }
448
+
449
+ .fd-docs-content pre,
450
+ .fd-docs-content .shiki,
451
+ .fd-docs-content [data-codeblock],
452
+ .fd-ai-code-block {
453
+ border: 2px solid var(--color-fd-border) !important;
454
+ background: var(--color-fd-card) !important;
455
+ background-image: none !important;
456
+ }
457
+
458
+ .fd-codeblock-title,
459
+ figure.shiki:has(figcaption) > div:first-child,
460
+ .fd-ai-code-header {
461
+ background: var(--color-fd-secondary) !important;
462
+ border-bottom: 2px solid var(--color-fd-border) !important;
463
+ }
464
+
465
+ .fd-copy-btn,
466
+ .fd-ai-code-copy {
467
+ background: var(--color-fd-foreground) !important;
468
+ color: var(--color-fd-background) !important;
469
+ border: 2px solid var(--color-fd-border) !important;
470
+ }
471
+
472
+ .fd-copy-btn:hover,
473
+ .fd-ai-code-copy:hover {
474
+ background: var(--color-fd-card) !important;
475
+ color: var(--color-fd-foreground) !important;
476
+ }
477
+
478
+ .fd-table-wrapper,
479
+ .fd-table-wrapper table,
480
+ .prose table {
481
+ border: 2px solid var(--color-fd-border) !important;
482
+ background: var(--color-fd-card) !important;
483
+ border-radius: 0 !important;
484
+ }
485
+
486
+ .fd-page-nav,
487
+ .fd-page-nav-card,
488
+ [class*="page-nav"] a {
489
+ transition:
490
+ background-color 140ms ease,
491
+ color 140ms ease,
492
+ border-color 140ms ease,
493
+ transform 140ms ease !important;
494
+ }
495
+
496
+ .fd-page-nav-card:hover,
497
+ [class*="page-nav"] a:hover {
498
+ background: var(--color-fd-foreground) !important;
499
+ color: var(--color-fd-background) !important;
500
+ border-color: var(--color-fd-border) !important;
501
+ box-shadow: none !important;
502
+ transform: none !important;
503
+ }
504
+
505
+ .fd-page-nav-card:hover *,
506
+ [class*="page-nav"] a:hover * {
507
+ color: inherit !important;
508
+ }
509
+
510
+ .fd-table-wrapper {
511
+ overflow: hidden;
512
+ }
513
+
514
+ .fd-table-wrapper table,
515
+ .prose .fd-table-wrapper table {
516
+ border: 0 !important;
517
+ background: transparent !important;
518
+ border-radius: 0 !important;
519
+ }
520
+
521
+ .prose table,
522
+ .prose thead,
523
+ .prose tbody,
524
+ .prose tr,
525
+ .prose th,
526
+ .prose td,
527
+ .prose table *,
528
+ .fd-table-wrapper,
529
+ .fd-table-wrapper *,
530
+ .fd-table-wrapper table,
531
+ .fd-table-wrapper thead,
532
+ .fd-table-wrapper tbody,
533
+ .fd-table-wrapper tr,
534
+ .fd-table-wrapper th,
535
+ .fd-table-wrapper td {
536
+ border-radius: 0 !important;
537
+ }
538
+
539
+ .prose thead tr:first-child th:first-child,
540
+ .prose thead tr:first-child th:last-child,
541
+ .prose tbody tr:last-child td:first-child,
542
+ .prose tbody tr:last-child td:last-child,
543
+ .fd-table-wrapper thead tr:first-child th:first-child,
544
+ .fd-table-wrapper thead tr:first-child th:last-child,
545
+ .fd-table-wrapper tbody tr:last-child td:first-child,
546
+ .fd-table-wrapper tbody tr:last-child td:last-child {
547
+ border-radius: 0 !important;
548
+ }
549
+
550
+ .prose th,
551
+ .fd-table-wrapper th {
552
+ background: var(--color-fd-foreground) !important;
553
+ color: var(--color-fd-background) !important;
554
+ text-transform: uppercase;
555
+ letter-spacing: 0.08em;
556
+ font-family: var(--fd-font-mono, ui-monospace, monospace);
557
+ }
558
+
559
+ .fd-callout,
560
+ [class*="fd-callout"] {
561
+ border: 2px solid var(--color-fd-border) !important;
562
+ background: color-mix(
563
+ in srgb,
564
+ var(--color-fd-card) 88%,
565
+ var(--color-fd-secondary) 12%
566
+ ) !important;
567
+ border-radius: 0 !important;
568
+ }
569
+
570
+ .fd-callout-indicator {
571
+ width: 8px;
572
+ background: var(--color-fd-accent) !important;
573
+ }
574
+
575
+ .fd-callout-title {
576
+ font-family: var(--fd-font-mono, ui-monospace, monospace);
577
+ text-transform: uppercase;
578
+ letter-spacing: 0.08em;
579
+ font-size: 0.72rem;
580
+ }
581
+
582
+ .fd-docs-content :not(pre) > code {
583
+ background: var(--color-fd-secondary);
584
+ }
585
+
586
+ .omni-content {
587
+ border: 2px solid var(--color-fd-border) !important;
588
+ background: var(--color-fd-card) !important;
589
+ }
590
+
591
+ .omni-header,
592
+ .omni-footer {
593
+ border-color: var(--color-fd-border) !important;
594
+ background: var(--color-fd-secondary) !important;
595
+ }
596
+
597
+ .omni-search-input,
598
+ .omni-item-label,
599
+ .omni-item-subtitle,
600
+ .omni-group-label,
601
+ .omni-footer-inner,
602
+ .omni-kbd,
603
+ .omni-close-btn {
604
+ font-family: var(--fd-font-mono, ui-monospace, monospace) !important;
605
+ }
606
+
607
+ .omni-group-label {
608
+ letter-spacing: 0.14em;
609
+ color: color-mix(in srgb, var(--color-fd-foreground) 72%, transparent) !important;
610
+ }
611
+
612
+ .omni-item {
613
+ border: 1px solid transparent !important;
614
+ }
615
+
616
+ .omni-item:hover {
617
+ border-color: var(--color-fd-border) !important;
618
+ }
619
+
620
+ .omni-kbd,
621
+ .omni-close-btn,
622
+ .omni-item-ext {
623
+ border: 1px solid var(--color-fd-border) !important;
624
+ border-radius: 0 !important;
625
+ background: transparent !important;
626
+ }
627
+
628
+ .omni-item-active {
629
+ background: var(--color-fd-foreground) !important;
630
+ color: var(--color-fd-background) !important;
631
+ border-color: var(--color-fd-border) !important;
632
+ }
633
+
634
+ .omni-item-active .omni-item-icon,
635
+ .omni-item-active .omni-item-badge,
636
+ .omni-item-active .omni-item-ext,
637
+ .omni-item-active .omni-item-chevron,
638
+ .omni-item-active .omni-item-subtitle,
639
+ .omni-item-active .omni-item-shortcuts {
640
+ color: inherit !important;
641
+ opacity: 1 !important;
642
+ }
643
+
644
+ .fd-ai-dialog,
645
+ .fd-ai-header,
646
+ .fd-ai-tab-bar,
647
+ .fd-ai-search-wrap,
648
+ .fd-ai-chat-footer,
649
+ .fd-ai-fm-topbar,
650
+ .fd-ai-input-wrap,
651
+ .fd-ai-results,
652
+ .fd-ai-messages {
653
+ border-color: var(--color-fd-border) !important;
654
+ box-shadow: none !important;
655
+ }
656
+
657
+ .fd-ai-header,
658
+ .fd-ai-tab-bar,
659
+ .fd-ai-search-wrap,
660
+ .fd-ai-chat-footer,
661
+ .fd-ai-fm-topbar,
662
+ .fd-ai-fm-input-container {
663
+ background: var(--color-fd-secondary) !important;
664
+ }
665
+
666
+ .fd-ai-header-title,
667
+ .fd-ai-tab,
668
+ .fd-ai-input,
669
+ .fd-ai-result,
670
+ .fd-ai-result-empty,
671
+ .fd-ai-esc,
672
+ .fd-ai-close-btn,
673
+ .fd-ai-fm-close-btn,
674
+ .fd-ai-model-dropdown-btn,
675
+ .fd-ai-model-dropdown-item,
676
+ .fd-ai-model-dropdown-label,
677
+ .fd-ai-fm-suggestion,
678
+ .fd-ai-floating-btn {
679
+ font-family: var(--fd-font-mono, ui-monospace, monospace) !important;
680
+ }
681
+
682
+ .fd-ai-header-title,
683
+ .fd-ai-tab,
684
+ .fd-ai-floating-btn {
685
+ text-transform: uppercase;
686
+ letter-spacing: 0.12em;
687
+ }
688
+
689
+ .fd-ai-esc,
690
+ .fd-ai-close-btn,
691
+ .fd-ai-fm-close-btn,
692
+ .fd-ai-tab,
693
+ .fd-ai-model-dropdown-btn,
694
+ .fd-ai-model-dropdown-item,
695
+ .fd-ai-fm-suggestion,
696
+ .fd-ai-floating-btn {
697
+ border: 2px solid var(--color-fd-border) !important;
698
+ border-radius: 0 !important;
699
+ background: var(--color-fd-card) !important;
700
+ box-shadow: none !important;
701
+ }
702
+
703
+ .fd-ai-fm-close-btn {
704
+ margin-block-start: 0.5rem;
705
+ margin-inline-end: 0.5rem;
706
+ }
707
+
708
+ .fd-ai-tab[data-active="true"],
709
+ .fd-ai-close-btn:hover,
710
+ .fd-ai-fm-close-btn:hover,
711
+ .fd-ai-model-dropdown-item[data-active="true"],
712
+ .fd-ai-floating-btn:hover,
713
+ .fd-ai-model-dropdown-btn:hover,
714
+ .fd-ai-model-dropdown-item:hover,
715
+ .fd-ai-fm-suggestion:hover,
716
+ .fd-ai-result[data-active="true"] {
717
+ background: var(--color-fd-foreground) !important;
718
+ color: var(--color-fd-background) !important;
719
+ border-color: var(--color-fd-border) !important;
720
+ box-shadow: none !important;
721
+ }
722
+
723
+ .fd-ai-input,
724
+ .fd-ai-input::placeholder {
725
+ font-family: var(--fd-font-mono, ui-monospace, monospace) !important;
726
+ }