@farming-labs/nuxt-theme 0.0.2-beta.17

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,6 @@
1
+ /* @farming-labs/svelte-theme — pixel-border theme (bundled)
2
+ * Single import: includes base docs.css + pixel-border overrides.
3
+ * Usage: @import "@farming-labs/svelte-theme/pixel-border/css";
4
+ */
5
+ @import "./docs.css";
6
+ @import "./pixel-border.css";
@@ -0,0 +1,606 @@
1
+ /*
2
+ * @farming-labs/svelte-theme — pixel-border theme
3
+ * Inspired by better-auth.com — clean dark UI, sharp corners, visible borders.
4
+ * Import AFTER docs.css to override the default neutral preset.
5
+ */
6
+
7
+ /* ─── Color Tokens (light) ───────────────────────────────────────── */
8
+
9
+ :root {
10
+ --color-fd-background: oklch(1 0 0);
11
+ --color-fd-foreground: oklch(0.147 0.004 49.25);
12
+ --color-fd-card: oklch(0.985 0.001 106.423);
13
+ --color-fd-card-foreground: oklch(0.147 0.004 49.25);
14
+ --color-fd-popover: oklch(1 0 0);
15
+ --color-fd-popover-foreground: oklch(0.147 0.004 49.25);
16
+ --color-fd-primary: oklch(0.216 0.006 56.043);
17
+ --color-fd-primary-foreground: oklch(0.985 0.001 106.423);
18
+ --color-fd-secondary: oklch(0.97 0.001 106.424);
19
+ --color-fd-secondary-foreground: oklch(0.216 0.006 56.043);
20
+ --color-fd-muted: oklch(0.97 0.001 106.424);
21
+ --color-fd-muted-foreground: oklch(0.553 0.013 58.071);
22
+ --color-fd-accent: oklch(0.97 0.001 106.424);
23
+ --color-fd-accent-foreground: oklch(0.216 0.006 56.043);
24
+ --color-fd-border: oklch(0.923 0.003 48.717);
25
+ --color-fd-ring: oklch(0.709 0.01 56.259);
26
+ }
27
+
28
+ /* ─── Color Tokens (dark) ────────────────────────────────────────── */
29
+
30
+ .dark {
31
+ --color-fd-background: hsl(0 0% 2%);
32
+ --color-fd-foreground: oklch(0.985 0.001 106.423);
33
+ --color-fd-card: hsl(0 0% 4%);
34
+ --color-fd-card-foreground: oklch(0.985 0.001 106.423);
35
+ --color-fd-popover: hsl(0 0% 4%);
36
+ --color-fd-popover-foreground: oklch(0.985 0.001 106.423);
37
+ --color-fd-primary: oklch(0.985 0.001 106.423);
38
+ --color-fd-primary-foreground: oklch(0.216 0.006 56.043);
39
+ --color-fd-secondary: hsl(0 0% 8%);
40
+ --color-fd-secondary-foreground: oklch(0.985 0.001 106.423);
41
+ --color-fd-muted: hsl(0 0% 10%);
42
+ --color-fd-muted-foreground: hsl(0 0% 55%);
43
+ --color-fd-accent: hsl(0 0% 10%);
44
+ --color-fd-accent-foreground: oklch(0.985 0.001 106.423);
45
+ --color-fd-border: hsl(0 0% 15%);
46
+ --color-fd-ring: hsl(0 0% 30%);
47
+ }
48
+
49
+ /* ─── Sharp corners everywhere (both modes) ──────────────────────── */
50
+
51
+ .fd-sidebar-search-btn,
52
+ .fd-search-dialog,
53
+ .fd-search-overlay .fd-search-dialog,
54
+ .fd-search-result,
55
+ .fd-codeblock,
56
+ .fd-codeblock pre,
57
+ .fd-codeblock-title,
58
+ .fd-tabs,
59
+ .fd-tab-trigger,
60
+ .fd-tab-panel,
61
+ .fd-callout,
62
+ .fd-page-nav-card,
63
+ .fd-table-wrapper,
64
+ .fd-copy-btn,
65
+ .fd-sidebar-search-btn kbd,
66
+ .fd-sidebar-collapse-btn,
67
+ .fd-theme-toggle {
68
+ border-radius: 0 !important;
69
+ }
70
+
71
+ /* ─── Sidebar (pixel-border style — BOTH light and dark) ─────────── */
72
+
73
+ /* Full-width border separators between top-level items */
74
+ .fd-sidebar-top-link,
75
+ .fd-sidebar-nav > .fd-sidebar-folder {
76
+ border-top: 1px solid var(--color-fd-border);
77
+ margin-left: -12px;
78
+ margin-right: -12px;
79
+ padding-left: 12px;
80
+ padding-right: 12px;
81
+ }
82
+
83
+ .fd-sidebar-folder-content::before {
84
+ content: '';
85
+ position: absolute;
86
+ left: 4px;
87
+ top: 4px;
88
+ bottom: 4px;
89
+ width: 1px;
90
+ background: var(--color-fd-border);
91
+ }
92
+
93
+ .fd-sidebar-top-link.fd-sidebar-first-item,
94
+ .fd-sidebar-folder.fd-sidebar-first-item {
95
+ border-top: none;
96
+ }
97
+
98
+ .fd-sidebar-top-link:last-child,
99
+ .fd-sidebar-nav > .fd-sidebar-folder:last-child {
100
+ border-bottom: 1px solid var(--color-fd-border);
101
+ }
102
+ .fd-sidebar-folder-content::before {
103
+ content: '';
104
+ position: absolute;
105
+ left: -4px;
106
+ top: 3px;
107
+ bottom: 0px;
108
+ width: 1px;
109
+ height: calc(100% + 0.01px);
110
+ background: var(--color-fd-border);
111
+ }
112
+
113
+ /* Folder trigger — extend to full sidebar width */
114
+ .fd-sidebar-nav > .fd-sidebar-folder > .fd-sidebar-folder-trigger {
115
+ margin-left: -12px;
116
+ margin-right: -12px;
117
+ padding-left: 12px;
118
+ padding-right: 12px;
119
+ }
120
+
121
+ /* All sidebar links — sharp corners, transparent bg */
122
+ .fd-sidebar-link {
123
+ font-size: 0.875rem;
124
+ line-height: 1.6;
125
+ border-radius: 0 !important;
126
+ padding: 0.5rem 0.625rem;
127
+ font-weight: 400;
128
+ background-color: transparent !important;
129
+ transition: color 0.15s ease;
130
+ color: var(--color-fd-muted-foreground);
131
+ }
132
+
133
+ .fd-sidebar-link:hover {
134
+ background: transparent !important;
135
+ background-color: transparent !important;
136
+ color: var(--color-fd-foreground);
137
+ }
138
+
139
+ .fd-sidebar-link-active,
140
+ .fd-sidebar-link[data-active="true"] {
141
+ color: var(--color-fd-foreground) !important;
142
+ font-weight: 600;
143
+ background: transparent !important;
144
+ background-color: transparent !important;
145
+ }
146
+
147
+ .fd-sidebar-link-active:hover,
148
+ .fd-sidebar-link[data-active="true"]:hover {
149
+ background: transparent !important;
150
+ background-color: transparent !important;
151
+ }
152
+
153
+ /* Folder triggers — sharp corners, transparent bg */
154
+ .fd-sidebar-folder-trigger {
155
+ font-size: 0.875rem;
156
+ font-weight: 500;
157
+ border-radius: 0 !important;
158
+ }
159
+
160
+ .fd-sidebar-folder-trigger:hover {
161
+ background: transparent !important;
162
+ }
163
+
164
+ /* Child links — smaller, inside folder content */
165
+ .fd-sidebar-child-link {
166
+ font-size: 0.785rem !important;
167
+ padding-top: 0.25rem !important;
168
+ padding-bottom: 0.25rem !important;
169
+ }
170
+
171
+ .fd-sidebar-child-link.fd-sidebar-link-active {
172
+ font-weight: 600 !important;
173
+ }
174
+
175
+ /* Dark mode — specific color overrides */
176
+ .dark .fd-sidebar {
177
+ background: hsl(0 0% 2%);
178
+ border-color: hsl(0 0% 12%);
179
+ }
180
+
181
+ .dark .fd-sidebar-link {
182
+ color: hsl(0 0% 50%);
183
+ }
184
+
185
+ .dark .fd-sidebar-link:hover {
186
+ color: hsl(0 0% 80%);
187
+ }
188
+
189
+ .dark .fd-sidebar-folder-trigger {
190
+ color: hsl(0 0% 90%);
191
+ }
192
+
193
+ .dark .fd-sidebar-folder-trigger:hover {
194
+ color: hsl(0 0% 100%);
195
+ }
196
+
197
+ .dark .fd-sidebar-link-active,
198
+ .dark .fd-sidebar-link[data-active="true"] {
199
+ color: var(--color-fd-primary, hsl(0 0% 95%)) !important;
200
+ }
201
+
202
+ .dark .fd-sidebar-child-link {
203
+ color: hsl(0 0% 45%) !important;
204
+ }
205
+
206
+ .dark .fd-sidebar-child-link:hover {
207
+ color: hsl(0 0% 75%) !important;
208
+ }
209
+
210
+ .dark .fd-sidebar-child-link.fd-sidebar-link-active {
211
+ color: var(--color-fd-primary, hsl(0 0% 95%)) !important;
212
+ }
213
+
214
+ /* Active indicator bar for child links */
215
+ .fd-sidebar-folder-content .fd-sidebar-link-active::before {
216
+ content: '';
217
+ position: absolute;
218
+ left: -16px;
219
+ top: 25%;
220
+ bottom: 25%;
221
+ width: 2px;
222
+ background: var(--color-fd-foreground);
223
+ border-radius: 0;
224
+ }
225
+
226
+ .dark .fd-sidebar-folder-content .fd-sidebar-link-active::before {
227
+ background: var(--color-fd-primary, hsl(0 0% 95%));
228
+ }
229
+
230
+ /* Sidebar icon */
231
+ .fd-sidebar-icon {
232
+ display: inline-flex;
233
+ align-items: center;
234
+ flex-shrink: 0;
235
+ opacity: 0.7;
236
+ }
237
+
238
+ .fd-sidebar-link-active .fd-sidebar-icon {
239
+ opacity: 1;
240
+ }
241
+
242
+ /* Sidebar search button — full-width, border-y */
243
+ .fd-sidebar-search-btn {
244
+ background: transparent !important;
245
+ border: none !important;
246
+ border-top: 1px solid var(--color-fd-border) !important;
247
+ border-bottom: 1px solid var(--color-fd-border) !important;
248
+ border-radius: 0 !important;
249
+
250
+ }
251
+
252
+ .fd-sidebar-search {
253
+ padding: 0;
254
+ margin-left: -12px;
255
+ margin-right: -12px;
256
+ padding-left: 12px;
257
+ padding-right: 12px;
258
+ }
259
+
260
+ .fd-sidebar-search .fd-sidebar-search-btn {
261
+ width: 100%;
262
+ padding-left: 12px;
263
+ padding-right: 12px;
264
+ margin: 0;
265
+ }
266
+
267
+ .fd-sidebar-search-btn:hover {
268
+ background: var(--color-fd-accent) !important;
269
+ }
270
+
271
+ .dark .fd-sidebar-search-btn {
272
+ color: hsl(0 0% 45%);
273
+ }
274
+
275
+ .dark .fd-sidebar-search-btn:hover {
276
+ background: hsl(0 0% 4%) !important;
277
+ color: hsl(0 0% 65%);
278
+ }
279
+
280
+ /* ─── Tables ─────────────────────────────────────────────────────── */
281
+
282
+ .fd-table-wrapper {
283
+ border-radius: 0 !important;
284
+ }
285
+
286
+ .dark .fd-table-wrapper {
287
+ border-color: hsl(0 0% 15%);
288
+ }
289
+
290
+ .dark .fd-page-body table th {
291
+ background: hsl(0 0% 6%);
292
+ color: hsl(0 0% 80%);
293
+ font-weight: 500;
294
+ border-color: hsl(0 0% 15%);
295
+ }
296
+
297
+ .dark .fd-page-body table td {
298
+ border-color: hsl(0 0% 12%);
299
+ }
300
+
301
+ /* ─── Code blocks ────────────────────────────────────────────────── */
302
+
303
+ .fd-codeblock {
304
+ border: 1px solid var(--color-fd-border);
305
+ border-radius: 0 !important;
306
+ box-shadow: none;
307
+ }
308
+
309
+ .fd-codeblock pre.shiki {
310
+ border-radius: 0 !important;
311
+ }
312
+
313
+ .fd-codeblock-title {
314
+ border-bottom-color: var(--color-fd-border);
315
+ }
316
+
317
+ .fd-codeblock-title .fd-copy-btn {
318
+ border-radius: 0 !important;
319
+ }
320
+
321
+ .fd-copy-btn {
322
+ border-radius: 0 !important;
323
+ }
324
+
325
+ /* ─── Tabs ───────────────────────────────────────────────────────── */
326
+
327
+ .fd-tabs {
328
+ border-radius: 0 !important;
329
+ box-shadow: none;
330
+ }
331
+
332
+ /* ─── Callouts ───────────────────────────────────────────────────── */
333
+
334
+ .fd-callout {
335
+ border-radius: 0 !important;
336
+ }
337
+
338
+ /* ─── Prev/Next nav cards ────────────────────────────────────────── */
339
+
340
+ .fd-page-nav-card {
341
+ border-radius: 0 !important;
342
+ }
343
+
344
+ .dark .fd-page-nav-card {
345
+ border-color: hsl(0 0% 15%);
346
+ }
347
+
348
+ .dark .fd-page-nav-card:hover {
349
+ background: hsl(0 0% 6%);
350
+ border-color: hsl(0 0% 22%);
351
+ }
352
+
353
+ /* ─── Search dialog ──────────────────────────────────────────────── */
354
+
355
+ .fd-search-overlay .fd-search-dialog {
356
+ border-radius: 0;
357
+ }
358
+
359
+ /* ─── Breadcrumb (monospace, uppercase) ───────────────────────────── */
360
+
361
+ .fd-breadcrumb {
362
+ font-size: 0.75rem;
363
+ letter-spacing: 0.01em;
364
+ }
365
+
366
+ .fd-breadcrumb-parent,
367
+ .fd-breadcrumb-current {
368
+ font-family: ui-monospace, monospace;
369
+ text-transform: uppercase;
370
+ }
371
+
372
+ /* ─── Selection ──────────────────────────────────────────────────── */
373
+
374
+ ::selection {
375
+ background: var(--color-fd-foreground);
376
+ color: var(--color-fd-background);
377
+ }
378
+
379
+ /* ─── Scrollbar ──────────────────────────────────────────────────── */
380
+
381
+ * {
382
+ scrollbar-width: thin;
383
+ scrollbar-color: var(--color-fd-border) transparent;
384
+ }
385
+
386
+ /* ─── HR ─────────────────────────────────────────────────────────── */
387
+
388
+ .dark hr {
389
+ border-color: hsl(0 0% 15%);
390
+ }
391
+
392
+ /* ─── AI Chat (pixel-border — zero radius, pixel-art, monospace) ── */
393
+
394
+ .fd-ai-dialog {
395
+ border-radius: 0 !important;
396
+ border-width: 1px;
397
+ box-shadow: 4px 4px 0 0 var(--color-fd-border, hsl(0 0% 15%));
398
+ }
399
+
400
+ .fd-ai-tab-bar {
401
+ gap: 0;
402
+ }
403
+
404
+ .fd-ai-tab {
405
+ border-radius: 0 !important;
406
+ font-size: 12px;
407
+ letter-spacing: 0.04em;
408
+ }
409
+
410
+ .fd-ai-header-title {
411
+ font-size: 13px;
412
+ }
413
+
414
+ .fd-ai-bubble-user {
415
+ border-radius: 0 !important;
416
+ font-size: 12px;
417
+ }
418
+
419
+ .fd-ai-bubble-ai {
420
+ border-radius: 0 !important;
421
+ font-size: 12px;
422
+ }
423
+
424
+ .fd-ai-bubble-ai pre {
425
+ border-radius: 0 !important;
426
+ border: 1px solid var(--color-fd-border, hsl(0 0% 15%));
427
+ }
428
+
429
+ .fd-ai-bubble-ai code {
430
+ border-radius: 0 !important;
431
+ }
432
+
433
+ .fd-ai-input-wrap {
434
+ border-radius: 0 !important;
435
+ }
436
+
437
+ .fd-ai-input {
438
+ font-size: 13px;
439
+ }
440
+
441
+ .fd-ai-send-btn {
442
+ border-radius: 0 !important;
443
+ }
444
+
445
+ .fd-ai-close-btn {
446
+ border-radius: 0 !important;
447
+ }
448
+
449
+ .fd-ai-floating-btn {
450
+ border-radius: 0 !important;
451
+ box-shadow: 3px 3px 0 0 var(--color-fd-border, hsl(0 0% 15%));
452
+ }
453
+
454
+ .fd-ai-floating-btn:hover {
455
+ transform: translate(-1px, -1px);
456
+ box-shadow: 4px 4px 0 0 var(--color-fd-border, hsl(0 0% 15%));
457
+ }
458
+
459
+ .fd-ai-suggestion {
460
+ border-radius: 0 !important;
461
+ font-size: 12px;
462
+ }
463
+
464
+ .fd-ai-result {
465
+ border-radius: 0 !important;
466
+ }
467
+
468
+ .fd-ai-esc {
469
+ border-radius: 0 !important;
470
+ }
471
+
472
+ .fd-ai-clear-btn {
473
+ border-radius: 0 !important;
474
+ letter-spacing: 0.04em;
475
+ }
476
+
477
+ .fd-ai-msg-label {
478
+ letter-spacing: 0.06em;
479
+ }
480
+
481
+ .fd-ai-loading-text {
482
+ text-transform: uppercase;
483
+ letter-spacing: 0.04em;
484
+ font-size: 11px;
485
+ }
486
+
487
+ .fd-ai-loading-dot {
488
+ border-radius: 0;
489
+ width: 4px;
490
+ height: 4px;
491
+ }
492
+
493
+ /* ─── Full-Modal (pixel-border) ──────────────────────────────────── */
494
+
495
+ .fd-ai-fm-input-container {
496
+ border-radius: 0 !important;
497
+ box-shadow: 4px 4px 0 0 var(--color-fd-border, hsl(0 0% 15%));
498
+ }
499
+
500
+ .fd-ai-fm-send-btn {
501
+ border-radius: 0 !important;
502
+ }
503
+
504
+ .fd-ai-fm-close-btn {
505
+ border-radius: 0 !important;
506
+ }
507
+
508
+ .fd-ai-fm-input {
509
+ font-size: 13px;
510
+ }
511
+
512
+ .fd-ai-fm-suggestion {
513
+ border-radius: 0 !important;
514
+ font-family: var(--fd-font-mono, ui-monospace, monospace);
515
+ font-size: 11px;
516
+ text-transform: uppercase;
517
+ letter-spacing: 0.04em;
518
+ }
519
+
520
+ .fd-ai-fm-trigger-btn {
521
+ border-radius: 0 !important;
522
+ font-family: var(--fd-font-mono, ui-monospace, monospace);
523
+ text-transform: uppercase;
524
+ letter-spacing: 0.04em;
525
+ font-size: 12px;
526
+ box-shadow: 3px 3px 0 0 var(--color-fd-border, hsl(0 0% 15%));
527
+ }
528
+
529
+ .fd-ai-fm-trigger-btn:hover {
530
+ transform: translate(-1px, -1px);
531
+ box-shadow: 4px 4px 0 0 var(--color-fd-border, hsl(0 0% 15%));
532
+ }
533
+
534
+ .fd-ai-fm-msg-label {
535
+ font-family: var(--fd-font-mono, ui-monospace, monospace);
536
+ text-transform: uppercase;
537
+ letter-spacing: 0.06em;
538
+ font-size: 11px;
539
+ }
540
+
541
+ .fd-ai-fm-msg-content {
542
+ font-size: 13px;
543
+ }
544
+
545
+ .fd-ai-fm-msg-content code {
546
+ border-radius: 0 !important;
547
+ }
548
+
549
+ .fd-ai-fm-suggestions-label {
550
+ font-family: var(--fd-font-mono, ui-monospace, monospace);
551
+ text-transform: uppercase;
552
+ letter-spacing: 0.04em;
553
+ }
554
+
555
+ .fd-ai-fm-clear-btn {
556
+ font-family: var(--fd-font-mono, ui-monospace, monospace);
557
+ text-transform: uppercase;
558
+ letter-spacing: 0.04em;
559
+ }
560
+
561
+ .fd-ai-fm-footer-hint {
562
+ font-size: 11px;
563
+ }
564
+
565
+ .fd-ai-fm-thinking-dot {
566
+ border-radius: 0;
567
+ width: 5px;
568
+ height: 5px;
569
+ }
570
+
571
+ /* ─── Code blocks in AI chat (pixel-border) ──────────────────────── */
572
+
573
+ .fd-ai-code-block {
574
+ border-radius: 0 !important;
575
+ box-shadow: 3px 3px 0 0 var(--color-fd-border, hsl(0 0% 15%));
576
+ background: transparent;
577
+ --sh-class: #66d9ef;
578
+ --sh-identifier: #f8f8f2;
579
+ --sh-keyword: #f92672;
580
+ --sh-string: #e6db74;
581
+ --sh-property: #a6e22e;
582
+ --sh-entity: #66d9ef;
583
+ --sh-sign: #f8f8f2;
584
+ --sh-comment: #75715e;
585
+ --sh-jsxliterals: #ae81ff;
586
+ }
587
+
588
+ .fd-ai-code-header {
589
+ border-bottom-color: var(--color-fd-border, hsl(0 0% 15%));
590
+ background: transparent;
591
+ }
592
+
593
+ .fd-ai-code-lang {
594
+ font-family: var(--fd-font-mono, ui-monospace, monospace);
595
+ }
596
+
597
+ .fd-ai-code-copy {
598
+ border-radius: 0 !important;
599
+ font-family: var(--fd-font-mono, ui-monospace, monospace);
600
+ text-transform: uppercase;
601
+ letter-spacing: 0.04em;
602
+ }
603
+
604
+ .fd-ai-code-block code {
605
+ font-family: var(--fd-font-mono, ui-monospace, monospace);
606
+ }