@farming-labs/svelte-theme 0.0.68 → 0.0.72

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@farming-labs/svelte-theme",
3
- "version": "0.0.68",
3
+ "version": "0.0.72",
4
4
  "description": "Svelte UI components for @farming-labs/docs — layout, sidebar, TOC, search, and theme toggle",
5
5
  "keywords": [
6
6
  "docs",
@@ -32,6 +32,12 @@
32
32
  ],
33
33
  "greentree": [
34
34
  "./src/themes/greentree.d.ts"
35
+ ],
36
+ "concrete": [
37
+ "./src/themes/concrete.d.ts"
38
+ ],
39
+ "hardline": [
40
+ "./src/themes/hardline.d.ts"
35
41
  ]
36
42
  }
37
43
  },
@@ -63,6 +69,16 @@
63
69
  "import": "./src/themes/colorful.js",
64
70
  "default": "./src/themes/colorful.js"
65
71
  },
72
+ "./hardline": {
73
+ "types": "./src/themes/hardline.d.ts",
74
+ "import": "./src/themes/hardline.js",
75
+ "default": "./src/themes/hardline.js"
76
+ },
77
+ "./concrete": {
78
+ "types": "./src/themes/concrete.d.ts",
79
+ "import": "./src/themes/concrete.js",
80
+ "default": "./src/themes/concrete.js"
81
+ },
66
82
  "./css": "./styles/docs.css",
67
83
  "./fumadocs/css": "./styles/docs.css",
68
84
  "./styles/pixel-border.css": "./styles/pixel-border.css",
@@ -77,13 +93,17 @@
77
93
  "default": "./src/themes/greentree.js"
78
94
  },
79
95
  "./styles/greentree.css": "./styles/greentree.css",
80
- "./greentree/css": "./styles/greentree-bundle.css"
96
+ "./greentree/css": "./styles/greentree-bundle.css",
97
+ "./styles/hardline.css": "./styles/hardline.css",
98
+ "./hardline/css": "./styles/hardline-bundle.css",
99
+ "./styles/concrete.css": "./styles/concrete.css",
100
+ "./concrete/css": "./styles/concrete-bundle.css"
81
101
  },
82
102
  "dependencies": {
83
103
  "gray-matter": "^4.0.3",
84
104
  "sugar-high": "^0.9.5",
85
- "@farming-labs/docs": "0.0.68",
86
- "@farming-labs/svelte": "0.0.68"
105
+ "@farming-labs/docs": "0.0.72",
106
+ "@farming-labs/svelte": "0.0.72"
87
107
  },
88
108
  "peerDependencies": {
89
109
  "svelte": ">=5.0.0"
package/src/index.d.ts CHANGED
@@ -21,3 +21,9 @@ export declare const PixelBorderUIDefaults: Record<string, any>;
21
21
 
22
22
  export declare const darksharp: (overrides?: Partial<DocsTheme>) => DocsTheme;
23
23
  export declare const DarksharpUIDefaults: Record<string, any>;
24
+
25
+ export declare const concrete: (overrides?: { ui?: Record<string, unknown> }) => DocsTheme;
26
+ export declare const ConcreteUIDefaults: Record<string, unknown>;
27
+
28
+ export declare const hardline: (overrides?: { ui?: Record<string, unknown> }) => DocsTheme;
29
+ export declare const HardlineUIDefaults: Record<string, unknown>;
package/src/index.js CHANGED
@@ -21,3 +21,5 @@ export { default as Callout } from "./components/Callout.svelte";
21
21
  export { fumadocs, DefaultUIDefaults } from "./themes/default.js";
22
22
  export { pixelBorder, PixelBorderUIDefaults } from "./themes/pixel-border.js";
23
23
  export { darksharp, DarksharpUIDefaults } from "./themes/darksharp.js";
24
+ export { concrete, ConcreteUIDefaults } from "./themes/concrete.js";
25
+ export { hardline, HardlineUIDefaults } from "./themes/hardline.js";
@@ -0,0 +1,4 @@
1
+ export declare const concrete: (overrides?: {
2
+ ui?: Record<string, unknown>;
3
+ }) => import("@farming-labs/docs").DocsTheme;
4
+ export declare const ConcreteUIDefaults: Record<string, unknown>;
@@ -0,0 +1,47 @@
1
+ import { createTheme } from "@farming-labs/docs";
2
+
3
+ const ConcreteUIDefaults = {
4
+ colors: {
5
+ primary: "#ff5b31",
6
+ background: "#f6ead9",
7
+ muted: "#5a4c42",
8
+ border: "#141210",
9
+ },
10
+ typography: {
11
+ font: {
12
+ style: {
13
+ sans: "'Archivo', 'IBM Plex Sans', 'Space Grotesk', system-ui, sans-serif",
14
+ mono: "'Space Mono', 'IBM Plex Mono', ui-monospace, monospace",
15
+ },
16
+ h1: { size: "2.85rem", weight: 900, lineHeight: "0.98", letterSpacing: "-0.05em" },
17
+ h2: { size: "2.05rem", weight: 850, lineHeight: "1.04", letterSpacing: "-0.035em" },
18
+ h3: { size: "1.52rem", weight: 800, lineHeight: "1.14", letterSpacing: "-0.02em" },
19
+ h4: { size: "1.16rem", weight: 750, lineHeight: "1.28", letterSpacing: "-0.01em" },
20
+ body: { size: "1.02rem", weight: 550, lineHeight: "1.68" },
21
+ small: { size: "0.83rem", weight: 600, lineHeight: "1.42", letterSpacing: "0.02em" },
22
+ },
23
+ },
24
+ radius: "0px",
25
+ layout: {
26
+ contentWidth: 896,
27
+ sidebarWidth: 316,
28
+ toc: { enabled: true, depth: 3, style: "directional" },
29
+ header: { height: 68, sticky: true },
30
+ },
31
+ sidebar: {
32
+ style: "bordered",
33
+ },
34
+ components: {
35
+ Callout: { variant: "outline", icon: true },
36
+ CodeBlock: { showCopyButton: true },
37
+ HoverLink: { linkLabel: "View doc", showIndicator: false },
38
+ Tabs: { style: "default" },
39
+ },
40
+ };
41
+
42
+ export const concrete = createTheme({
43
+ name: "concrete",
44
+ ui: ConcreteUIDefaults,
45
+ });
46
+
47
+ export { ConcreteUIDefaults };
@@ -0,0 +1,4 @@
1
+ export declare const hardline: (overrides?: {
2
+ ui?: Record<string, unknown>;
3
+ }) => import("@farming-labs/docs").DocsTheme;
4
+ export declare const HardlineUIDefaults: Record<string, unknown>;
@@ -0,0 +1,47 @@
1
+ import { createTheme } from "@farming-labs/docs";
2
+
3
+ const HardlineUIDefaults = {
4
+ colors: {
5
+ primary: "#ffd335",
6
+ background: "#f2efe8",
7
+ muted: "#4b4944",
8
+ border: "#121212",
9
+ },
10
+ typography: {
11
+ font: {
12
+ style: {
13
+ sans: "'IBM Plex Sans', 'Space Grotesk', system-ui, sans-serif",
14
+ mono: "'IBM Plex Mono', 'JetBrains Mono', ui-monospace, monospace",
15
+ },
16
+ h1: { size: "2.6rem", weight: 800, lineHeight: "1.05", letterSpacing: "-0.03em" },
17
+ h2: { size: "1.95rem", weight: 800, lineHeight: "1.15", letterSpacing: "-0.02em" },
18
+ h3: { size: "1.45rem", weight: 700, lineHeight: "1.2", letterSpacing: "-0.015em" },
19
+ h4: { size: "1.15rem", weight: 700, lineHeight: "1.3" },
20
+ body: { size: "1rem", weight: 500, lineHeight: "1.65" },
21
+ small: { size: "0.875rem", weight: 500, lineHeight: "1.45" },
22
+ },
23
+ },
24
+ radius: "0px",
25
+ layout: {
26
+ contentWidth: 860,
27
+ sidebarWidth: 300,
28
+ toc: { enabled: true, depth: 3, style: "default" },
29
+ header: { height: 64, sticky: true },
30
+ },
31
+ sidebar: {
32
+ style: "bordered",
33
+ },
34
+ components: {
35
+ Callout: { variant: "outline", icon: true },
36
+ CodeBlock: { showCopyButton: true },
37
+ HoverLink: { linkLabel: "Open page", showIndicator: true },
38
+ Tabs: { style: "underline" },
39
+ },
40
+ };
41
+
42
+ export const hardline = createTheme({
43
+ name: "hardline",
44
+ ui: HardlineUIDefaults,
45
+ });
46
+
47
+ export { HardlineUIDefaults };
@@ -0,0 +1,2 @@
1
+ @import "./docs.css";
2
+ @import "./concrete.css";
@@ -0,0 +1,345 @@
1
+ @import "./hardline.css";
2
+
3
+ :root {
4
+ --color-fd-primary: #ff5b31;
5
+ --color-fd-primary-foreground: #140f0c;
6
+ --color-fd-ring: #141210;
7
+ --color-fd-background: #f6ead9;
8
+ --color-fd-foreground: #15120f;
9
+ --color-fd-card: #fbf4ea;
10
+ --color-fd-card-foreground: #15120f;
11
+ --color-fd-popover: #fbf4ea;
12
+ --color-fd-popover-foreground: #15120f;
13
+ --color-fd-secondary: #eadcc9;
14
+ --color-fd-secondary-foreground: #15120f;
15
+ --color-fd-muted: #e2d0b9;
16
+ --color-fd-muted-foreground: #5b4e42;
17
+ --color-fd-accent: #245dff;
18
+ --color-fd-accent-foreground: #f8f5ef;
19
+ --color-fd-border: #141210;
20
+ --fd-nav-height: 68px;
21
+ }
22
+
23
+ .dark {
24
+ --color-fd-primary: #ff744d;
25
+ --color-fd-primary-foreground: #180f0b;
26
+ --color-fd-ring: #ff744d;
27
+ --color-fd-background: #12100f;
28
+ --color-fd-foreground: #f6eee2;
29
+ --color-fd-card: #1a1614;
30
+ --color-fd-card-foreground: #f6eee2;
31
+ --color-fd-popover: #1a1614;
32
+ --color-fd-popover-foreground: #f6eee2;
33
+ --color-fd-secondary: #211b18;
34
+ --color-fd-secondary-foreground: #f6eee2;
35
+ --color-fd-muted: #2d2520;
36
+ --color-fd-muted-foreground: #c8b6a5;
37
+ --color-fd-accent: #7ba2ff;
38
+ --color-fd-accent-foreground: #101216;
39
+ --color-fd-border: rgba(246, 238, 226, 0.88);
40
+ }
41
+
42
+ #nd-docs-layout > header,
43
+ [role="banner"] {
44
+ background: linear-gradient(180deg, color-mix(in srgb, var(--color-fd-primary) 10%, var(--color-fd-background)), var(--color-fd-background));
45
+ }
46
+
47
+ aside a[data-active] {
48
+ text-transform: uppercase;
49
+ letter-spacing: 0.045em;
50
+ font-size: 0.79rem;
51
+ }
52
+
53
+ aside a[data-active="true"],
54
+ .fd-page-action-btn:hover,
55
+ .fd-page-action-btn[data-selected="true"],
56
+ .fd-page-action-btn[data-copied="true"],
57
+ .fd-feedback-choice:hover,
58
+ .fd-feedback-choice[data-selected="true"],
59
+ .fd-ai-tab[data-active="true"] {
60
+ box-shadow: 5px 5px 0 var(--color-fd-border);
61
+ transform: translate(-2px, -2px);
62
+ }
63
+
64
+ .dark aside a[data-active="true"],
65
+ .dark .fd-page-action-btn:hover,
66
+ .dark .fd-page-action-btn[data-selected="true"],
67
+ .dark .fd-page-action-btn[data-copied="true"],
68
+ .dark .fd-feedback-choice:hover,
69
+ .dark .fd-feedback-choice[data-selected="true"],
70
+ .dark .fd-ai-tab[data-active="true"] {
71
+ box-shadow: 5px 5px 0 color-mix(in srgb, var(--color-fd-primary) 55%, transparent);
72
+ }
73
+
74
+ .omni-item-active {
75
+ background: color-mix(in srgb, var(--color-fd-primary) 20%, var(--color-fd-card)) !important;
76
+ color: var(--color-fd-foreground) !important;
77
+ }
78
+
79
+ .omni-item-active .omni-item-icon,
80
+ .omni-item-active .omni-item-badge,
81
+ .omni-item-active .omni-item-ext,
82
+ .omni-item-active .omni-item-chevron {
83
+ color: var(--color-fd-foreground) !important;
84
+ }
85
+
86
+ .omni-item-active .omni-item-subtitle,
87
+ .omni-item-active .omni-item-shortcuts {
88
+ color: color-mix(in srgb, var(--color-fd-foreground) 78%, var(--color-fd-muted-foreground)) !important;
89
+ opacity: 1;
90
+ }
91
+
92
+ .dark .omni-item-active {
93
+ background: color-mix(in srgb, var(--color-fd-primary) 26%, var(--color-fd-card)) !important;
94
+ }
95
+
96
+ .fd-card,
97
+ [data-card],
98
+ [class*="fd-callout"],
99
+ .fd-page-action-menu,
100
+ .fd-page-action-btn,
101
+ .fd-docs-content pre,
102
+ .fd-docs-content .shiki,
103
+ .fd-docs-content [data-codeblock],
104
+ .fd-page-nav,
105
+ .fd-page-nav-card,
106
+ [class*="page-nav"] a,
107
+ .fd-hover-link-card {
108
+ box-shadow: 6px 6px 0 var(--color-fd-border);
109
+ }
110
+
111
+ .dark .fd-card,
112
+ .dark [data-card],
113
+ .dark [class*="fd-callout"],
114
+ .dark .fd-page-action-menu,
115
+ .dark .fd-page-action-btn,
116
+ .dark .fd-docs-content pre,
117
+ .dark .fd-docs-content .shiki,
118
+ .dark .fd-docs-content [data-codeblock],
119
+ .dark .fd-page-nav,
120
+ .dark .fd-page-nav-card,
121
+ .dark [class*="page-nav"] a,
122
+ .dark .fd-hover-link-card {
123
+ box-shadow: 6px 6px 0 color-mix(in srgb, var(--color-fd-primary) 42%, transparent);
124
+ }
125
+
126
+ .fd-page-body .fd-table-wrapper,
127
+ .fd-docs-content table {
128
+ border: 3px solid var(--color-fd-border);
129
+ box-shadow: 6px 6px 0 var(--color-fd-border);
130
+ background: var(--color-fd-card);
131
+ }
132
+
133
+ .dark .fd-page-body .fd-table-wrapper,
134
+ .dark .fd-docs-content table {
135
+ box-shadow: 6px 6px 0 color-mix(in srgb, var(--color-fd-primary) 42%, transparent);
136
+ }
137
+
138
+ .fd-docs-content th,
139
+ .fd-page-body th {
140
+ background: var(--color-fd-foreground);
141
+ color: var(--color-fd-background);
142
+ text-transform: uppercase;
143
+ letter-spacing: 0.08em;
144
+ font-family: var(--fd-font-mono, ui-monospace, monospace);
145
+ font-size: 0.74rem;
146
+ }
147
+
148
+ .fd-docs-content td,
149
+ .fd-page-body td {
150
+ font-weight: 550;
151
+ }
152
+
153
+ .fd-docs-content tbody tr:nth-child(odd) td,
154
+ .fd-page-body tbody tr:nth-child(odd) td {
155
+ background: color-mix(in srgb, var(--color-fd-secondary) 72%, white 28%);
156
+ }
157
+
158
+ .dark .fd-docs-content tbody tr:nth-child(odd) td,
159
+ .dark .fd-page-body tbody tr:nth-child(odd) td {
160
+ background: color-mix(in srgb, var(--color-fd-secondary) 92%, black 8%);
161
+ }
162
+
163
+ .fd-docs-content tbody tr:hover td,
164
+ .fd-page-body tbody tr:hover td {
165
+ background: color-mix(in srgb, var(--color-fd-primary) 16%, var(--color-fd-card));
166
+ }
167
+
168
+ .fd-docs-content pre,
169
+ .fd-docs-content .shiki,
170
+ .fd-docs-content [data-codeblock],
171
+ .fd-docs-content .fd-codeblock,
172
+ .fd-ai-code-block {
173
+ border-width: 3px !important;
174
+ box-shadow: 6px 6px 0 var(--color-fd-border);
175
+ background:
176
+ linear-gradient(180deg, color-mix(in srgb, var(--color-fd-primary) 7%, var(--color-fd-card)) 0, var(--color-fd-card) 56px) !important;
177
+ }
178
+
179
+ .dark .fd-docs-content pre,
180
+ .dark .fd-docs-content .shiki,
181
+ .dark .fd-docs-content [data-codeblock],
182
+ .dark .fd-docs-content .fd-codeblock,
183
+ .dark .fd-ai-code-block {
184
+ box-shadow: 6px 6px 0 color-mix(in srgb, var(--color-fd-primary) 42%, transparent);
185
+ background:
186
+ linear-gradient(180deg, color-mix(in srgb, var(--color-fd-primary) 10%, var(--color-fd-card)) 0, var(--color-fd-card) 56px) !important;
187
+ }
188
+
189
+ .fd-codeblock-title {
190
+ font-family: var(--fd-font-mono, ui-monospace, monospace);
191
+ text-transform: uppercase;
192
+ letter-spacing: 0.08em;
193
+ font-size: 0.72rem;
194
+ font-weight: 700;
195
+ padding-block: 0.8rem;
196
+ padding-inline: 1rem;
197
+ border-bottom: 3px solid var(--color-fd-border);
198
+ background: color-mix(in srgb, var(--color-fd-primary) 12%, var(--color-fd-card));
199
+ }
200
+
201
+ .fd-copy-btn,
202
+ .fd-ai-code-copy {
203
+ border: 2px solid var(--color-fd-border) !important;
204
+ border-radius: 0 !important;
205
+ background: var(--color-fd-background) !important;
206
+ color: var(--color-fd-foreground) !important;
207
+ box-shadow: 3px 3px 0 var(--color-fd-border);
208
+ font-family: var(--fd-font-mono, ui-monospace, monospace);
209
+ font-size: 0.7rem;
210
+ letter-spacing: 0.06em;
211
+ text-transform: uppercase;
212
+ }
213
+
214
+ .fd-copy-btn:hover,
215
+ .fd-ai-code-copy:hover {
216
+ background: var(--color-fd-primary) !important;
217
+ color: var(--color-fd-primary-foreground) !important;
218
+ transform: translate(-1px, -1px);
219
+ }
220
+
221
+ .fd-tabs {
222
+ border: 3px solid var(--color-fd-border);
223
+ box-shadow: 6px 6px 0 var(--color-fd-border);
224
+ background: var(--color-fd-card);
225
+ }
226
+
227
+ .dark .fd-tabs {
228
+ box-shadow: 6px 6px 0 color-mix(in srgb, var(--color-fd-primary) 42%, transparent);
229
+ }
230
+
231
+ .fd-tabs-list {
232
+ border-bottom: 3px solid var(--color-fd-border);
233
+ background: var(--color-fd-foreground);
234
+ }
235
+
236
+ .fd-tab-trigger {
237
+ font-family: var(--fd-font-mono, ui-monospace, monospace);
238
+ text-transform: uppercase;
239
+ letter-spacing: 0.08em;
240
+ font-size: 0.72rem;
241
+ color: color-mix(in srgb, var(--color-fd-background) 82%, transparent);
242
+ border-bottom-width: 0;
243
+ }
244
+
245
+ .fd-tab-trigger:hover {
246
+ color: var(--color-fd-background);
247
+ background: color-mix(in srgb, var(--color-fd-primary) 18%, transparent);
248
+ }
249
+
250
+ .fd-tab-trigger.fd-tab-active {
251
+ color: var(--color-fd-primary-foreground);
252
+ background: var(--color-fd-primary);
253
+ box-shadow: inset -3px 0 0 var(--color-fd-border);
254
+ }
255
+
256
+ .fd-callout,
257
+ [class*="fd-callout"] {
258
+ border-width: 3px !important;
259
+ box-shadow: 6px 6px 0 var(--color-fd-border);
260
+ background: color-mix(in srgb, var(--color-fd-secondary) 82%, white 18%);
261
+ }
262
+
263
+ .dark .fd-callout,
264
+ .dark [class*="fd-callout"] {
265
+ box-shadow: 6px 6px 0 color-mix(in srgb, var(--color-fd-primary) 42%, transparent);
266
+ background: color-mix(in srgb, var(--color-fd-secondary) 92%, black 8%);
267
+ }
268
+
269
+ .fd-callout-indicator {
270
+ width: 10px;
271
+ }
272
+
273
+ .fd-callout-title {
274
+ font-family: var(--fd-font-mono, ui-monospace, monospace);
275
+ text-transform: uppercase;
276
+ letter-spacing: 0.08em;
277
+ font-size: 0.72rem;
278
+ }
279
+
280
+ .fd-page-nav,
281
+ .fd-page-nav-card,
282
+ [class*="page-nav"] a,
283
+ .fd-hover-link-card,
284
+ .fd-page-action-menu,
285
+ .fd-ai-dialog,
286
+ .fd-ai-input-wrap,
287
+ .fd-ai-model-dropdown-menu,
288
+ .fd-ai-fm-topbar,
289
+ .fd-ai-fm-input-container,
290
+ .fd-feedback {
291
+ border-width: 3px !important;
292
+ }
293
+
294
+ .fd-page-nav-card:hover,
295
+ [class*="page-nav"] a:hover {
296
+ transform: translate(-2px, -2px);
297
+ }
298
+
299
+ .fd-hover-link-card {
300
+ background:
301
+ linear-gradient(180deg, color-mix(in srgb, var(--color-fd-primary) 10%, var(--color-fd-card)) 0, var(--color-fd-card) 52px);
302
+ }
303
+
304
+ .fd-hover-link-title,
305
+ .fd-hover-link-description + a {
306
+ text-transform: uppercase;
307
+ letter-spacing: 0.04em;
308
+ }
309
+
310
+ .fd-toc-link,
311
+ .fd-toc-clerk .fd-toc-link {
312
+ font-family: var(--fd-font-mono, ui-monospace, monospace);
313
+ text-transform: uppercase;
314
+ letter-spacing: 0.05em;
315
+ font-size: 0.7rem;
316
+ border-left: 2px solid transparent;
317
+ padding-left: 0.75rem;
318
+ }
319
+
320
+ .fd-toc-link:hover,
321
+ .fd-toc-clerk .fd-toc-link:hover {
322
+ border-left-color: var(--color-fd-border);
323
+ background: color-mix(in srgb, var(--color-fd-primary) 12%, transparent);
324
+ }
325
+
326
+ .fd-toc-link-active,
327
+ .fd-toc-clerk .fd-toc-link[data-active="true"] {
328
+ border-left-color: var(--color-fd-primary);
329
+ color: var(--color-fd-foreground);
330
+ background: color-mix(in srgb, var(--color-fd-primary) 16%, transparent);
331
+ }
332
+
333
+ .fd-ai-tab,
334
+ .fd-feedback-choice,
335
+ .fd-feedback-submit,
336
+ .fd-ai-send-btn,
337
+ .fd-ai-clear-btn,
338
+ .fd-ai-model-dropdown-btn,
339
+ .fd-ai-fm-send-btn,
340
+ .fd-ai-fm-trigger-btn {
341
+ font-family: var(--fd-font-mono, ui-monospace, monospace);
342
+ text-transform: uppercase;
343
+ letter-spacing: 0.07em;
344
+ box-shadow: 3px 3px 0 var(--color-fd-border);
345
+ }
@@ -0,0 +1,2 @@
1
+ @import "./docs.css";
2
+ @import "./hardline.css";
@@ -0,0 +1,556 @@
1
+ /* @farming-labs/theme - hardline theme CSS */
2
+
3
+ :root {
4
+ --color-fd-primary: #ffd335;
5
+ --color-fd-primary-foreground: #121212;
6
+ --color-fd-ring: #121212;
7
+
8
+ --color-fd-background: #f2efe8;
9
+ --color-fd-foreground: #111111;
10
+ --color-fd-card: #f7f4ed;
11
+ --color-fd-card-foreground: #111111;
12
+ --color-fd-popover: #f7f4ed;
13
+ --color-fd-popover-foreground: #111111;
14
+ --color-fd-secondary: #ece7de;
15
+ --color-fd-secondary-foreground: #111111;
16
+ --color-fd-muted: #e5dfd3;
17
+ --color-fd-muted-foreground: #47423a;
18
+ --color-fd-accent: #ffe16e;
19
+ --color-fd-accent-foreground: #111111;
20
+ --color-fd-border: #111111;
21
+
22
+ --radius: 0px;
23
+ --fd-nav-height: 64px;
24
+ }
25
+
26
+ .dark {
27
+ --color-fd-primary: #ffcf3a;
28
+ --color-fd-primary-foreground: #101010;
29
+ --color-fd-ring: #ffcf3a;
30
+
31
+ --color-fd-background: #0f0f10;
32
+ --color-fd-foreground: #f4f1e8;
33
+ --color-fd-card: #171718;
34
+ --color-fd-card-foreground: #f4f1e8;
35
+ --color-fd-popover: #171718;
36
+ --color-fd-popover-foreground: #f4f1e8;
37
+ --color-fd-secondary: #1e1e20;
38
+ --color-fd-secondary-foreground: #f4f1e8;
39
+ --color-fd-muted: #242427;
40
+ --color-fd-muted-foreground: #b8b09f;
41
+ --color-fd-accent: #2d2612;
42
+ --color-fd-accent-foreground: #ffcf3a;
43
+ --color-fd-border: rgba(213, 204, 185, 0.82);
44
+ }
45
+
46
+ * {
47
+ scrollbar-width: auto;
48
+ }
49
+
50
+ ::selection {
51
+ background: var(--color-fd-primary);
52
+ color: var(--color-fd-primary-foreground);
53
+ }
54
+
55
+ /* Hard-edge layout baseline */
56
+ #nd-docs-layout [class*="rounded-"],
57
+ #nd-docs-layout [style*="border-radius"],
58
+ #nd-docs-layout code:not(pre code) {
59
+ border-radius: 0 !important;
60
+ }
61
+
62
+ #nd-docs-layout [class*="shadow-"] {
63
+ box-shadow: none !important;
64
+ }
65
+
66
+ /* Header and sidebar structure */
67
+ #nd-docs-layout > header,
68
+ [role="banner"] {
69
+ border-bottom: 2px solid var(--color-fd-border);
70
+ background: var(--color-fd-background);
71
+ }
72
+
73
+ aside#nd-sidebar,
74
+ #nd-docs-layout aside {
75
+ background: var(--color-fd-background);
76
+ border-right: 2px solid var(--color-fd-border);
77
+ }
78
+
79
+ /* Sidebar links and categories */
80
+ aside a[data-active] {
81
+ font-weight: 600;
82
+ font-size: 0.92rem;
83
+ letter-spacing: 0.01em;
84
+ padding: 0.5rem 0.625rem;
85
+ border: 1px solid transparent;
86
+ color: var(--color-fd-foreground);
87
+ }
88
+
89
+ aside a[data-active]:hover {
90
+ border-color: var(--color-fd-border);
91
+ background: color-mix(in srgb, var(--color-fd-primary) 24%, transparent);
92
+ }
93
+
94
+ aside a[data-active="true"] {
95
+ font-weight: 800;
96
+ background: var(--color-fd-primary);
97
+ color: var(--color-fd-primary-foreground);
98
+ border-color: var(--color-fd-border);
99
+ }
100
+
101
+ aside a[data-active="true"]::before {
102
+ display: none !important;
103
+ }
104
+
105
+ aside button.text-fd-muted-foreground {
106
+ font-size: 0.83rem;
107
+ font-weight: 800;
108
+ letter-spacing: 0.06em;
109
+ text-transform: uppercase;
110
+ color: var(--color-fd-muted-foreground);
111
+ }
112
+
113
+ /* Search/action inputs in sidebar */
114
+ aside button[class*="bg-fd-secondary"] {
115
+ border: 2px solid var(--color-fd-border);
116
+ background: var(--color-fd-card);
117
+ font-weight: 600;
118
+ }
119
+
120
+ .dark aside a[data-active]:hover {
121
+ background: color-mix(in srgb, var(--color-fd-primary) 16%, transparent);
122
+ }
123
+
124
+ .dark aside button[class*="bg-fd-secondary"] {
125
+ background: #151516;
126
+ }
127
+
128
+ /* Search UI (sidebar + command palette) */
129
+ .fd-sidebar-search-ai-row {
130
+ display: flex;
131
+ gap: 8px;
132
+ align-items: stretch;
133
+ width: 100%;
134
+ }
135
+
136
+ .fd-sidebar-search-ai-row > .fd-sidebar-search-btn,
137
+ .fd-sidebar-search-btn {
138
+ flex: 1;
139
+ min-width: 0;
140
+ display: flex;
141
+ align-items: center;
142
+ gap: 8px;
143
+ padding: 8px 10px;
144
+ border: 2px solid var(--color-fd-border) !important;
145
+ border-radius: 0 !important;
146
+ background: var(--color-fd-card) !important;
147
+ color: var(--color-fd-foreground) !important;
148
+ font-weight: 600;
149
+ }
150
+
151
+ .fd-sidebar-search-ai-row > .fd-sidebar-search-btn:hover,
152
+ .fd-sidebar-search-btn:hover {
153
+ background: color-mix(in srgb, var(--color-fd-primary) 18%, var(--color-fd-card)) !important;
154
+ }
155
+
156
+ .fd-sidebar-search-kbd {
157
+ margin-left: auto;
158
+ display: flex;
159
+ gap: 3px;
160
+ }
161
+
162
+ .fd-sidebar-search-kbd kbd {
163
+ border: 1px solid var(--color-fd-border);
164
+ border-radius: 0 !important;
165
+ background: var(--color-fd-secondary);
166
+ color: var(--color-fd-muted-foreground);
167
+ padding: 1px 4px;
168
+ font-size: 0.68rem;
169
+ }
170
+
171
+ .fd-sidebar-search-ai-row > .fd-sidebar-ai-btn,
172
+ .fd-sidebar-ai-btn {
173
+ width: 38px;
174
+ min-width: 38px;
175
+ display: inline-flex;
176
+ align-items: center;
177
+ justify-content: center;
178
+ border: 2px solid var(--color-fd-border) !important;
179
+ border-radius: 0 !important;
180
+ background: var(--color-fd-card) !important;
181
+ color: var(--color-fd-foreground) !important;
182
+ }
183
+
184
+ .fd-sidebar-search-ai-row > .fd-sidebar-ai-btn:hover,
185
+ .fd-sidebar-ai-btn:hover {
186
+ background: var(--color-fd-primary) !important;
187
+ color: var(--color-fd-primary-foreground) !important;
188
+ }
189
+
190
+ .omni-content {
191
+ border-radius: 0 !important;
192
+ border: 2px solid var(--color-fd-border) !important;
193
+ background: var(--color-fd-popover);
194
+ box-shadow: 6px 6px 0 var(--color-fd-border);
195
+ }
196
+
197
+ .omni-header {
198
+ border-bottom: 2px solid var(--color-fd-border) !important;
199
+ }
200
+
201
+ .omni-search-row {
202
+ gap: 0.625rem;
203
+ padding: 0.625rem 0.75rem;
204
+ }
205
+
206
+ .omni-search-input {
207
+ font-weight: 600;
208
+ }
209
+
210
+ .omni-search-input:focus {
211
+ caret-color: var(--color-fd-primary);
212
+ }
213
+
214
+ .omni-kbd,
215
+ .omni-kbd-sm,
216
+ .omni-close-btn {
217
+ border-radius: 0 !important;
218
+ }
219
+
220
+ .omni-kbd,
221
+ .omni-kbd-sm {
222
+ border: 1px solid var(--color-fd-border);
223
+ background: var(--color-fd-secondary);
224
+ }
225
+
226
+ .omni-close-btn:hover {
227
+ background: var(--color-fd-primary);
228
+ color: var(--color-fd-primary-foreground);
229
+ }
230
+
231
+ .omni-item {
232
+ border-radius: 0 !important;
233
+ border: 1px solid transparent;
234
+ font-weight: 600;
235
+ }
236
+
237
+ .omni-item:hover,
238
+ .omni-item-active {
239
+ border-color: var(--color-fd-border);
240
+ background: color-mix(in srgb, var(--color-fd-primary) 16%, transparent);
241
+ }
242
+
243
+ .omni-highlight {
244
+ border-radius: 0 !important;
245
+ background: color-mix(in srgb, var(--color-fd-primary) 36%, transparent);
246
+ }
247
+
248
+ /* Top-level content width and spacing */
249
+ @media (min-width: 1024px) {
250
+ #nd-docs-layout article#nd-page {
251
+ max-width: none;
252
+ }
253
+
254
+ #nd-docs-layout article#nd-page > .prose {
255
+ max-width: none;
256
+ }
257
+ }
258
+
259
+ /* Typography */
260
+ .fd-docs-content h1,
261
+ .fd-docs-content h2,
262
+ .fd-docs-content h3,
263
+ .fd-docs-content h4 {
264
+ text-transform: uppercase;
265
+ letter-spacing: 0.01em;
266
+ }
267
+
268
+ .fd-docs-content h1 {
269
+ font-weight: 900;
270
+ }
271
+
272
+ .fd-docs-content p {
273
+ font-weight: 500;
274
+ }
275
+
276
+ .fd-docs-content a:not(.fd-page-nav-card):not([class]) {
277
+ color: inherit;
278
+ text-decoration: underline;
279
+ text-decoration-thickness: 2px;
280
+ text-underline-offset: 3px;
281
+ text-decoration-color: var(--color-fd-primary);
282
+ }
283
+
284
+ /* Cards, callouts, tabs, and generic surfaces */
285
+ .fd-card,
286
+ [data-card],
287
+ [class*="fd-callout"],
288
+ .fd-page-action-menu,
289
+ .fd-page-action-btn {
290
+ border: 2px solid var(--color-fd-border) !important;
291
+ background: var(--color-fd-card);
292
+ box-shadow: 4px 4px 0 var(--color-fd-border);
293
+ }
294
+
295
+ .dark .fd-card,
296
+ .dark [data-card],
297
+ .dark [class*="fd-callout"],
298
+ .dark .fd-page-action-menu,
299
+ .dark .fd-page-action-btn {
300
+ box-shadow: 4px 4px 0 color-mix(in srgb, var(--color-fd-primary) 40%, transparent);
301
+ }
302
+
303
+ /* Page actions: hardline hard edges */
304
+ .fd-page-action-btn,
305
+ .fd-page-action-menu,
306
+ .fd-page-action-menu-item,
307
+ .fd-page-action-dropdown {
308
+ border-radius: 0 !important;
309
+ }
310
+
311
+ .fd-page-action-btn {
312
+ border: 2px solid var(--color-fd-border) !important;
313
+ background: var(--color-fd-card) !important;
314
+ color: var(--color-fd-foreground) !important;
315
+ font-weight: 700;
316
+ letter-spacing: 0.01em;
317
+ }
318
+
319
+ .fd-page-action-btn:hover,
320
+ .fd-page-action-btn[data-selected="true"],
321
+ .fd-page-action-btn[data-copied="true"] {
322
+ background: var(--color-fd-primary) !important;
323
+ color: var(--color-fd-primary-foreground) !important;
324
+ border-color: var(--color-fd-border) !important;
325
+ }
326
+
327
+ .fd-page-action-btn svg,
328
+ .fd-page-action-btn[data-selected="true"] svg,
329
+ .fd-page-action-btn[data-copied="true"] svg {
330
+ color: currentColor;
331
+ }
332
+
333
+ .fd-page-action-menu {
334
+ border: 2px solid var(--color-fd-border);
335
+ padding: 0.35rem;
336
+ }
337
+
338
+ .fd-page-action-menu-item {
339
+ border: 1px solid transparent;
340
+ font-weight: 600;
341
+ }
342
+
343
+ .fd-page-action-menu-item:hover {
344
+ border-color: var(--color-fd-border);
345
+ background: color-mix(in srgb, var(--color-fd-primary) 20%, transparent);
346
+ }
347
+
348
+ .fd-docs-content :not(pre) > code {
349
+ border: 2px solid var(--color-fd-border);
350
+ background: var(--color-fd-secondary);
351
+ padding: 1px 6px;
352
+ font-weight: 700;
353
+ }
354
+
355
+ .fd-docs-content pre,
356
+ .fd-docs-content .shiki,
357
+ .fd-docs-content [data-codeblock] {
358
+ border: 2px solid var(--color-fd-border) !important;
359
+ background: var(--color-fd-card) !important;
360
+ }
361
+
362
+ .dark .fd-docs-content pre,
363
+ .dark .fd-docs-content .shiki,
364
+ .dark .fd-docs-content [data-codeblock] {
365
+ background: #121214 !important;
366
+ }
367
+
368
+ .fd-docs-content table {
369
+ border-collapse: collapse;
370
+ border: 2px solid var(--color-fd-border);
371
+ width: 100%;
372
+ background: var(--color-fd-card);
373
+ }
374
+
375
+ .fd-docs-content th,
376
+ .fd-docs-content td {
377
+ border: 2px solid var(--color-fd-border);
378
+ padding: 0.7rem 0.85rem;
379
+ }
380
+
381
+ .fd-docs-content th {
382
+ text-transform: uppercase;
383
+ letter-spacing: 0.05em;
384
+ font-size: 0.78rem;
385
+ background: var(--color-fd-primary);
386
+ color: var(--color-fd-primary-foreground);
387
+ }
388
+
389
+ .fd-docs-content tbody tr:nth-child(even) td {
390
+ background: color-mix(in srgb, var(--color-fd-secondary) 85%, transparent);
391
+ }
392
+
393
+ .dark .fd-docs-content tbody tr:nth-child(even) td {
394
+ background: #1a1a1d;
395
+ }
396
+
397
+ /* Prev/next cards */
398
+ .fd-page-nav,
399
+ .fd-page-nav-card,
400
+ [class*="page-nav"] a {
401
+ border: 2px solid var(--color-fd-border);
402
+ background: var(--color-fd-card);
403
+ box-shadow: 4px 4px 0 var(--color-fd-border);
404
+ border-radius: 0 !important;
405
+ }
406
+
407
+ .fd-page-nav-card:hover,
408
+ [class*="page-nav"] a:hover {
409
+ background: color-mix(in srgb, var(--color-fd-primary) 18%, var(--color-fd-card));
410
+ }
411
+
412
+ .fd-page-nav-card [class*="text-"] {
413
+ text-transform: uppercase;
414
+ letter-spacing: 0.03em;
415
+ }
416
+
417
+ .dark .fd-page-nav,
418
+ .dark .fd-page-nav-card,
419
+ .dark [class*="page-nav"] a {
420
+ box-shadow: 4px 4px 0 color-mix(in srgb, var(--color-fd-primary) 35%, transparent);
421
+ }
422
+
423
+ /* Ask AI and feedback - hardline treatment */
424
+ .fd-ai-dialog,
425
+ .fd-ai-tab,
426
+ .fd-ai-input-wrap,
427
+ .fd-ai-send-btn,
428
+ .fd-ai-close-btn,
429
+ .fd-ai-clear-btn,
430
+ .fd-ai-floating-btn,
431
+ .fd-ai-suggestion,
432
+ .fd-ai-result,
433
+ .fd-ai-model-dropdown-btn,
434
+ .fd-ai-model-dropdown-menu,
435
+ .fd-ai-model-dropdown-item,
436
+ .fd-ai-fm-input-container,
437
+ .fd-ai-fm-send-btn,
438
+ .fd-ai-fm-suggestion,
439
+ .fd-ai-fm-trigger-btn,
440
+ .fd-ai-fm-close-btn,
441
+ .fd-ai-code-block,
442
+ .fd-ai-code-copy,
443
+ .fd-feedback-input,
444
+ .fd-feedback-submit,
445
+ .fd-feedback-choice {
446
+ border-radius: 0 !important;
447
+ }
448
+
449
+ .fd-ai-dialog,
450
+ .fd-ai-input-wrap,
451
+ .fd-ai-model-dropdown-menu,
452
+ .fd-ai-fm-topbar,
453
+ .fd-ai-fm-input-container,
454
+ .fd-ai-code-block {
455
+ border: 2px solid var(--color-fd-border) !important;
456
+ background: var(--color-fd-card) !important;
457
+ box-shadow: 4px 4px 0 var(--color-fd-border);
458
+ }
459
+
460
+ .dark .fd-ai-dialog,
461
+ .dark .fd-ai-input-wrap,
462
+ .dark .fd-ai-model-dropdown-menu,
463
+ .dark .fd-ai-fm-topbar,
464
+ .dark .fd-ai-fm-input-container,
465
+ .dark .fd-ai-code-block {
466
+ box-shadow: 4px 4px 0 color-mix(in srgb, var(--color-fd-primary) 35%, transparent);
467
+ }
468
+
469
+ .fd-ai-send-btn,
470
+ .fd-ai-close-btn,
471
+ .fd-ai-clear-btn,
472
+ .fd-ai-floating-btn,
473
+ .fd-ai-model-dropdown-btn,
474
+ .fd-ai-fm-send-btn,
475
+ .fd-ai-fm-trigger-btn,
476
+ .fd-ai-fm-close-btn,
477
+ .fd-feedback-submit,
478
+ .fd-feedback-choice {
479
+ border: 2px solid var(--color-fd-border) !important;
480
+ background: var(--color-fd-secondary) !important;
481
+ color: var(--color-fd-foreground) !important;
482
+ font-weight: 700;
483
+ }
484
+
485
+ .fd-ai-send-btn:hover,
486
+ .fd-ai-clear-btn:hover,
487
+ .fd-ai-floating-btn:hover,
488
+ .fd-ai-model-dropdown-btn:hover,
489
+ .fd-ai-fm-send-btn:hover,
490
+ .fd-ai-fm-trigger-btn:hover,
491
+ .fd-feedback-submit:hover,
492
+ .fd-feedback-choice:hover,
493
+ .fd-feedback-choice[data-selected="true"] {
494
+ background: var(--color-fd-primary) !important;
495
+ color: var(--color-fd-primary-foreground) !important;
496
+ }
497
+
498
+ .fd-ai-tab {
499
+ border: 2px solid transparent;
500
+ font-weight: 700;
501
+ text-transform: uppercase;
502
+ letter-spacing: 0.04em;
503
+ }
504
+
505
+ .fd-ai-tab[data-active="true"] {
506
+ border-color: var(--color-fd-border);
507
+ background: var(--color-fd-primary);
508
+ color: var(--color-fd-primary-foreground);
509
+ }
510
+
511
+ .fd-ai-bubble-user,
512
+ .fd-ai-bubble-ai {
513
+ border: 2px solid var(--color-fd-border);
514
+ border-radius: 0 !important;
515
+ }
516
+
517
+ .fd-ai-bubble-user {
518
+ background: var(--color-fd-primary);
519
+ color: var(--color-fd-primary-foreground);
520
+ }
521
+
522
+ .fd-ai-bubble-ai {
523
+ background: var(--color-fd-card);
524
+ color: var(--color-fd-card-foreground);
525
+ }
526
+
527
+ .fd-ai-bubble-ai table,
528
+ .fd-ai-fm-msg-content table {
529
+ border-collapse: collapse;
530
+ border: 2px solid var(--color-fd-border);
531
+ }
532
+
533
+ .fd-ai-bubble-ai th,
534
+ .fd-ai-bubble-ai td,
535
+ .fd-ai-fm-msg-content th,
536
+ .fd-ai-fm-msg-content td {
537
+ border: 2px solid var(--color-fd-border);
538
+ }
539
+
540
+ /* API reference panels */
541
+ [data-api-reference] [class*="border"],
542
+ [class*="fd-api"] [class*="border"] {
543
+ border-color: var(--color-fd-border) !important;
544
+ }
545
+
546
+ [class*="fd-api"] button,
547
+ [class*="fd-api"] [role="tab"] {
548
+ border-radius: 0 !important;
549
+ border: 2px solid transparent;
550
+ }
551
+
552
+ [class*="fd-api"] [role="tab"][data-state="active"] {
553
+ border-color: var(--color-fd-border);
554
+ background: var(--color-fd-primary);
555
+ color: var(--color-fd-primary-foreground);
556
+ }