@farming-labs/theme 0.0.2-beta.4

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.
Files changed (41) hide show
  1. package/dist/_virtual/_rolldown/runtime.mjs +7 -0
  2. package/dist/ai-search-dialog.d.mts +37 -0
  3. package/dist/ai-search-dialog.mjs +937 -0
  4. package/dist/darksharp/index.d.mts +97 -0
  5. package/dist/darksharp/index.mjs +111 -0
  6. package/dist/default/index.d.mts +97 -0
  7. package/dist/default/index.mjs +110 -0
  8. package/dist/docs-ai-features.d.mts +23 -0
  9. package/dist/docs-ai-features.mjs +81 -0
  10. package/dist/docs-api.d.mts +68 -0
  11. package/dist/docs-api.mjs +204 -0
  12. package/dist/docs-layout.d.mts +33 -0
  13. package/dist/docs-layout.mjs +331 -0
  14. package/dist/docs-page-client.d.mts +46 -0
  15. package/dist/docs-page-client.mjs +128 -0
  16. package/dist/index.d.mts +11 -0
  17. package/dist/index.mjs +12 -0
  18. package/dist/mdx.d.mts +38 -0
  19. package/dist/mdx.mjs +27 -0
  20. package/dist/page-actions.d.mts +21 -0
  21. package/dist/page-actions.mjs +155 -0
  22. package/dist/pixel-border/index.d.mts +87 -0
  23. package/dist/pixel-border/index.mjs +95 -0
  24. package/dist/provider.d.mts +14 -0
  25. package/dist/provider.mjs +29 -0
  26. package/dist/search.d.mts +34 -0
  27. package/dist/search.mjs +36 -0
  28. package/dist/serialize-icon.d.mts +4 -0
  29. package/dist/serialize-icon.mjs +16 -0
  30. package/dist/theme.d.mts +2 -0
  31. package/dist/theme.mjs +3 -0
  32. package/package.json +90 -0
  33. package/styles/ai.css +894 -0
  34. package/styles/base.css +298 -0
  35. package/styles/darksharp.css +433 -0
  36. package/styles/default.css +88 -0
  37. package/styles/fumadocs.css +2 -0
  38. package/styles/pixel-border.css +671 -0
  39. package/styles/presets/base.css +14 -0
  40. package/styles/presets/black.css +14 -0
  41. package/styles/presets/neutral.css +14 -0
@@ -0,0 +1,433 @@
1
+ /* @farming-labs/theme — darksharp theme CSS
2
+ * Inspired by all-black, sharp edges, minimal radius.
3
+ * Uses the "black" color preset as the base.
4
+ */
5
+ @import "./presets/black.css";
6
+
7
+ :root {
8
+ --color-fd-background: oklch(1 0 0);
9
+ --color-fd-foreground: oklch(0.147 0.004 49.25);
10
+ --color-fd-card: oklch(1 0 0);
11
+ --color-fd-card-foreground: oklch(0.147 0.004 49.25);
12
+ --color-fd-popover: oklch(1 0 0);
13
+ --color-fd-popover-foreground: oklch(0.147 0.004 49.25);
14
+ --color-fd-primary: oklch(0.216 0.006 56.043);
15
+ --color-fd-primary-foreground: oklch(0.985 0.001 106.423);
16
+ --color-fd-secondary: oklch(0.97 0.001 106.424);
17
+ --color-fd-secondary-foreground: oklch(0.216 0.006 56.043);
18
+ --color-fd-muted: oklch(0.97 0.001 106.424);
19
+ --color-fd-muted-foreground: oklch(0.553 0.013 58.071);
20
+ --color-fd-accent: oklch(0.97 0.001 106.424);
21
+ --color-fd-accent-foreground: oklch(0.216 0.006 56.043);
22
+ --color-fd-border: oklch(0.923 0.003 48.717);
23
+ --color-fd-ring: oklch(0.709 0.01 56.259);
24
+ --scrollbar-thumb: var(--color-fd-border);
25
+ --scrollbar-thumb-hover: var(--color-fd-ring);
26
+ --scrollbar-track: transparent;
27
+ --fd-nav-height: 56px;
28
+ --fd-banner-height: 0px;
29
+ --fd-tocnav-height: 0px;
30
+ }
31
+
32
+ .dark {
33
+ --color-fd-background: hsl(0 0% 0%);
34
+ --color-fd-foreground: oklch(0.985 0.001 106.423);
35
+ --color-fd-card: hsl(0 0% 0%);
36
+ --color-fd-card-foreground: oklch(0.985 0.001 106.423);
37
+ --color-fd-popover: hsl(0 0% 6%);
38
+ --color-fd-popover-foreground: oklch(0.985 0.001 106.423);
39
+ --color-fd-primary: oklch(0.985 0.001 106.423);
40
+ --color-fd-primary-foreground: oklch(0.216 0.006 56.043);
41
+ --color-fd-secondary: hsl(0 0% 10%);
42
+ --color-fd-secondary-foreground: oklch(0.985 0.001 106.423);
43
+ --color-fd-muted: hsl(0 0% 10%);
44
+ --color-fd-muted-foreground: hsl(0 0% 55%);
45
+ --color-fd-accent: hsl(0 0% 12%);
46
+ --color-fd-accent-foreground: oklch(0.985 0.001 106.423);
47
+ --color-fd-border: hsl(0 0% 14%);
48
+ --color-fd-ring: hsl(0 0% 30%);
49
+ --scrollbar-thumb: var(--color-fd-border);
50
+ --scrollbar-thumb-hover: var(--color-fd-ring);
51
+ --scrollbar-track: transparent;
52
+ }
53
+
54
+ /* ─── Scroll ──────────────────────────────────────────────────────── */
55
+
56
+ html {
57
+ scroll-behavior: auto;
58
+ scroll-padding-top: calc(
59
+ var(--fd-nav-height, 56px) +
60
+ var(--fd-banner-height, 0px) +
61
+ var(--fd-tocnav-height, 0px) +
62
+ 24px
63
+ );
64
+ }
65
+
66
+ html:not([data-anchor-scrolling]) {
67
+ scroll-behavior: smooth;
68
+ }
69
+
70
+ /* ─── Custom scrollbar ────────────────────────────────────────────── */
71
+
72
+ * {
73
+ scrollbar-width: thin;
74
+ scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track);
75
+ }
76
+
77
+ ::-webkit-scrollbar {
78
+ width: 12px;
79
+ height: 12px;
80
+ }
81
+ ::-webkit-scrollbar-track {
82
+ background: var(--scrollbar-track);
83
+ }
84
+ ::-webkit-scrollbar-thumb {
85
+ background-color: var(--scrollbar-thumb);
86
+ border-radius: 9999px;
87
+ border: 3px solid transparent;
88
+ background-clip: content-box;
89
+ }
90
+ ::-webkit-scrollbar-thumb:hover {
91
+ background-color: var(--scrollbar-thumb-hover);
92
+ }
93
+ ::-webkit-scrollbar-corner {
94
+ background: transparent;
95
+ }
96
+
97
+ /* ─── Selection ───────────────────────────────────────────────────── */
98
+
99
+ body {
100
+ overscroll-behavior: none;
101
+ }
102
+
103
+ ::selection {
104
+ background: var(--color-fd-foreground);
105
+ color: var(--color-fd-background);
106
+ }
107
+
108
+ /* ─── Inline code word break ──────────────────────────────────────── */
109
+
110
+ code:not(pre code) {
111
+ overflow-wrap: break-word;
112
+ word-break: break-word;
113
+ }
114
+
115
+ /* ═══════════════════════════════════════════════════════════════════
116
+ * Global sharp radius — override all rounded Tailwind utilities
117
+ * ═══════════════════════════════════════════════════════════════════ */
118
+
119
+ [class*="rounded-lg"] {
120
+ border-radius: 0.2rem !important;
121
+ }
122
+
123
+ [class*="rounded-md"] {
124
+ border-radius: 0.1rem !important;
125
+ }
126
+
127
+ [class*="rounded-xl"],
128
+ [class*="rounded-2xl"] {
129
+ border-radius: 0.2rem !important;
130
+ }
131
+
132
+ /* ─── Tables ──────────────────────────────────────────────────────── */
133
+
134
+ table {
135
+ border-radius: 0 !important;
136
+ border-collapse: collapse;
137
+ }
138
+
139
+ .prose-no-margin,
140
+ [class*="overflow-auto"] {
141
+ border-radius: 0 !important;
142
+ }
143
+
144
+ th, td {
145
+ border-color: var(--color-fd-border);
146
+ }
147
+
148
+ .dark th {
149
+ background: hsl(0 0% 8%);
150
+ color: hsl(0 0% 80%);
151
+ font-weight: 500;
152
+ }
153
+
154
+ .dark td {
155
+ background: hsl(0 0% 2%);
156
+ }
157
+
158
+ .dark tr {
159
+ border-color: hsl(0 0% 14%);
160
+ }
161
+
162
+ /* ─── Code blocks ─────────────────────────────────────────────────── */
163
+
164
+ figure[data-rehype-pretty-code-figure],
165
+ figure[data-rehype-pretty-code-figure] pre {
166
+ border-radius: 0.2rem !important;
167
+ }
168
+
169
+ article figure {
170
+ border-radius: 0.2rem !important;
171
+ overflow: hidden;
172
+ }
173
+
174
+ .dark article figure {
175
+ border-color: hsl(0 0% 14%);
176
+ }
177
+
178
+ figure button {
179
+ border-radius: 0.1rem !important;
180
+ }
181
+
182
+ /* ─── Inline code ─────────────────────────────────────────────────── */
183
+
184
+ code:not(pre code) {
185
+ border-radius: 0.1rem !important;
186
+ }
187
+
188
+ .dark code:not(pre code) {
189
+ background: hsl(0 0% 10%);
190
+ border: 1px solid hsl(0 0% 16%);
191
+ color: hsl(0 0% 85%);
192
+ }
193
+
194
+ /* ─── KBD (keyboard shortcuts) ────────────────────────────────────── */
195
+
196
+ kbd {
197
+ border-radius: 0.1rem !important;
198
+ }
199
+
200
+ /* ─── Callouts ────────────────────────────────────────────────────── */
201
+
202
+ [class*="bg-fd-card"],
203
+ [class*="fd-callout"],
204
+ [role="alert"] {
205
+ border-radius: 0.2rem !important;
206
+ }
207
+
208
+ .dark [class*="bg-fd-card"] {
209
+ border-color: hsl(0 0% 14%);
210
+ }
211
+
212
+ /* ─── Search dialog ───────────────────────────────────────────────── */
213
+
214
+ [role="dialog"] {
215
+ border-radius: 0.2rem !important;
216
+ }
217
+
218
+ [role="dialog"] [class*="rounded"] {
219
+ border-radius: 0.1rem !important;
220
+ }
221
+
222
+ /* ─── Popover / Dropdown ──────────────────────────────────────────── */
223
+
224
+ [data-radix-popper-content-wrapper] > * {
225
+ border-radius: 0.2rem !important;
226
+ }
227
+
228
+ /* ─── Nav cards (prev/next page links) ────────────────────────────── */
229
+
230
+ article a[class*="border"] {
231
+ border-radius: 0.2rem !important;
232
+ }
233
+
234
+ .dark article a[class*="border"] {
235
+ border-color: hsl(0 0% 14%);
236
+ }
237
+
238
+ .dark article a[class*="border"]:hover {
239
+ background: hsl(0 0% 8%);
240
+ border-color: hsl(0 0% 20%);
241
+ }
242
+
243
+ /* ─── Breadcrumb links ────────────────────────────────────────────── */
244
+
245
+ article a[class*="text-fd-muted-foreground"] {
246
+ border-radius: 0 !important;
247
+ }
248
+
249
+ /* ═══════════════════════════════════════════════════════════════════
250
+ * Sidebar — better-auth inspired dark sidebar
251
+ * ═══════════════════════════════════════════════════════════════════ */
252
+
253
+ .dark aside.bg-fd-card {
254
+ background: hsl(0 0% 0%);
255
+ border-color: hsl(0 0% 12%);
256
+ }
257
+
258
+ .dark aside a[data-active] {
259
+ border-radius: 0.2rem !important;
260
+ padding: 0.4rem 0.5rem;
261
+ font-size: 0.8125rem;
262
+ }
263
+
264
+ .dark aside a[data-active="true"] {
265
+ background: hsl(0 0% 14%) !important;
266
+ color: hsl(0 0% 96%) !important;
267
+ }
268
+
269
+ .dark aside a[data-active]:hover {
270
+ background: hsl(0 0% 10%);
271
+ color: hsl(0 0% 90%);
272
+ }
273
+
274
+ .dark aside button[class*="bg-fd-secondary"] {
275
+ background: hsl(0 0% 8%);
276
+ border-color: hsl(0 0% 14%);
277
+ border-radius: 0.2rem !important;
278
+ }
279
+
280
+ .dark aside button.text-fd-muted-foreground {
281
+ color: hsl(0 0% 60%);
282
+ }
283
+
284
+ .dark aside button[class*="rounded-full"] {
285
+ border-color: hsl(0 0% 14%);
286
+ border-radius: 9999px !important;
287
+ }
288
+
289
+ /* ─── TOC right panel ─────────────────────────────────────────────── */
290
+
291
+ .dark nav[class*="toc"],
292
+ .dark [class*="fd-toc"] {
293
+ border-color: hsl(0 0% 12%);
294
+ }
295
+
296
+ /* ─── Separator/Divider (hr) ──────────────────────────────────────── */
297
+
298
+ .dark hr {
299
+ border-color: hsl(0 0% 14%);
300
+ }
301
+
302
+ /* ─── Page Actions (darksharp overrides) ─────────────────────────── */
303
+
304
+ .fd-page-action-btn {
305
+ border-radius: 0.2rem !important;
306
+ }
307
+
308
+ .fd-page-action-menu {
309
+ border-radius: 0.2rem !important;
310
+ box-shadow: 0 4px 24px hsl(0 0% 0% / 0.4);
311
+ }
312
+
313
+ .fd-page-action-menu-item {
314
+ border-radius: 0.1rem !important;
315
+ }
316
+
317
+ /* ─── Breadcrumb (darksharp overrides) ───────────────────────────── */
318
+
319
+ .fd-breadcrumb {
320
+ font-size: 0.75rem;
321
+ }
322
+
323
+ /* ─── AI Chat (darksharp — sharp edges, high contrast, minimal) ─── */
324
+
325
+ .fd-ai-dialog {
326
+ border-radius: 2px;
327
+ border-width: 1px;
328
+ box-shadow: 0 4px 24px hsl(0 0% 0% / 0.4);
329
+ }
330
+
331
+ .fd-ai-tab {
332
+ border-radius: 2px 2px 0 0;
333
+ }
334
+
335
+ .fd-ai-bubble-user {
336
+ border-radius: 2px;
337
+ }
338
+
339
+ .fd-ai-bubble-ai {
340
+ border-radius: 2px;
341
+ }
342
+
343
+ .fd-ai-input-wrap {
344
+ border-radius: 2px;
345
+ }
346
+
347
+ .fd-ai-send-btn {
348
+ border-radius: 2px;
349
+ }
350
+
351
+ .fd-ai-close-btn {
352
+ border-radius: 2px;
353
+ }
354
+
355
+ .fd-ai-floating-btn {
356
+ border-radius: 2px;
357
+ box-shadow: none;
358
+ }
359
+
360
+ .fd-ai-floating-btn:hover {
361
+ box-shadow: 0 0 0 1px var(--color-fd-ring);
362
+ transform: none;
363
+ }
364
+
365
+ .fd-ai-suggestion {
366
+ border-radius: 2px;
367
+ }
368
+
369
+ .fd-ai-result {
370
+ border-radius: 2px;
371
+ }
372
+
373
+ .fd-ai-esc {
374
+ border-radius: 2px;
375
+ }
376
+
377
+ .fd-ai-clear-btn {
378
+ border-radius: 2px;
379
+ }
380
+
381
+ /* ─── Full-Modal (darksharp) ─────────────────────────────────────── */
382
+
383
+ .fd-ai-fm-input-container {
384
+ border-radius: 2px;
385
+ }
386
+
387
+ .fd-ai-fm-send-btn {
388
+ border-radius: 2px;
389
+ }
390
+
391
+ .fd-ai-fm-close-btn {
392
+ border-radius: 2px;
393
+ }
394
+
395
+ .fd-ai-fm-suggestion {
396
+ border-radius: 2px;
397
+ }
398
+
399
+ .fd-ai-fm-trigger-btn {
400
+ border-radius: 2px;
401
+ box-shadow: none;
402
+ }
403
+
404
+ .fd-ai-fm-trigger-btn:hover {
405
+ transform: none;
406
+ }
407
+
408
+ .fd-ai-fm-msg-content code {
409
+ border-radius: 2px;
410
+ }
411
+
412
+ .fd-ai-fm-thinking-dot {
413
+ border-radius: 2px;
414
+ }
415
+
416
+ /* ─── Code blocks (darksharp) ────────────────────────────────────── */
417
+
418
+ .fd-ai-code-block {
419
+ border-radius: 2px;
420
+ --sh-class: #7dcfff;
421
+ --sh-identifier: #d4d4d8;
422
+ --sh-keyword: #f87171;
423
+ --sh-string: #86efac;
424
+ --sh-property: #93c5fd;
425
+ --sh-entity: #5eead4;
426
+ --sh-sign: #a1a1aa;
427
+ --sh-comment: #52525b;
428
+ --sh-jsxliterals: #c4b5fd;
429
+ }
430
+
431
+ .fd-ai-code-copy {
432
+ border-radius: 2px;
433
+ }
@@ -0,0 +1,88 @@
1
+ /* @farming-labs/theme — default theme CSS (neutral color preset) */
2
+ @import "./presets/neutral.css";
3
+
4
+ /* ─── Page Actions (default theme) ───────────────────────────────── */
5
+
6
+ .fd-page-action-btn {
7
+ border-radius: 0.375rem;
8
+ }
9
+
10
+ .fd-page-action-menu {
11
+ border-radius: 0.5rem;
12
+ }
13
+
14
+ .fd-page-action-menu-item {
15
+ border-radius: 0.25rem;
16
+ }
17
+
18
+ /* ─── AI Chat (default theme — rounded, soft, indigo) ────────────── */
19
+
20
+ .fd-ai-dialog {
21
+ border-radius: 12px;
22
+ box-shadow: 0 20px 60px rgba(99, 102, 241, 0.08), 0 8px 24px rgba(0, 0, 0, 0.12);
23
+ }
24
+
25
+ .fd-ai-bubble-user {
26
+ border-radius: 16px 16px 4px 16px;
27
+ }
28
+
29
+ .fd-ai-bubble-ai {
30
+ border-radius: 16px 16px 16px 4px;
31
+ }
32
+
33
+ .fd-ai-input-wrap {
34
+ border-radius: 10px;
35
+ }
36
+
37
+ .fd-ai-send-btn {
38
+ border-radius: 8px;
39
+ }
40
+
41
+ .fd-ai-floating-btn {
42
+ border-radius: 26px;
43
+ box-shadow: 0 8px 32px rgba(99, 102, 241, 0.3);
44
+ }
45
+
46
+ .fd-ai-floating-btn:hover {
47
+ box-shadow: 0 10px 40px rgba(99, 102, 241, 0.4);
48
+ }
49
+
50
+ .fd-ai-suggestion {
51
+ border-radius: 8px;
52
+ }
53
+
54
+ .fd-ai-result {
55
+ border-radius: 8px;
56
+ }
57
+
58
+ /* ─── Full-Modal (default) ───────────────────────────────────────── */
59
+
60
+ .fd-ai-fm-input-container {
61
+ border-radius: 12px;
62
+ }
63
+
64
+ .fd-ai-fm-send-btn {
65
+ border-radius: 9999px;
66
+ }
67
+
68
+ .fd-ai-fm-suggestion {
69
+ border-radius: 9999px;
70
+ }
71
+
72
+ .fd-ai-fm-trigger-btn {
73
+ border-radius: 16px;
74
+ }
75
+
76
+ .fd-ai-fm-close-btn {
77
+ border-radius: 9999px;
78
+ }
79
+
80
+ /* ─── Code blocks (default) ──────────────────────────────────────── */
81
+
82
+ .fd-ai-code-block {
83
+ border-radius: 8px;
84
+ }
85
+
86
+ .fd-ai-code-copy {
87
+ border-radius: 4px;
88
+ }
@@ -0,0 +1,2 @@
1
+ /* @deprecated — Use @farming-labs/theme/default/css or @farming-labs/theme/darksharp/css */
2
+ @import "./default.css";