@farming-labs/theme 0.0.2-beta.20 → 0.0.2-beta.22

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,7 +1,19 @@
1
1
  {
2
2
  "name": "@farming-labs/theme",
3
- "version": "0.0.2-beta.20",
3
+ "version": "0.0.2-beta.22",
4
4
  "description": "Theme package for @farming-labs/docs — layout, provider, MDX components, and styles",
5
+ "keywords": [
6
+ "docs",
7
+ "documentation",
8
+ "fumadocs",
9
+ "theme"
10
+ ],
11
+ "license": "MIT",
12
+ "author": "Farming Labs",
13
+ "files": [
14
+ "dist",
15
+ "styles"
16
+ ],
5
17
  "type": "module",
6
18
  "main": "./dist/index.mjs",
7
19
  "types": "./dist/index.d.mts",
@@ -74,18 +86,6 @@
74
86
  "./presets/black": "./styles/presets/black.css",
75
87
  "./presets/base": "./styles/presets/base.css"
76
88
  },
77
- "files": [
78
- "dist",
79
- "styles"
80
- ],
81
- "keywords": [
82
- "docs",
83
- "fumadocs",
84
- "theme",
85
- "documentation"
86
- ],
87
- "author": "Farming Labs",
88
- "license": "MIT",
89
89
  "dependencies": {
90
90
  "fumadocs-core": "^16.6.1",
91
91
  "fumadocs-ui": "^16.6.1",
@@ -98,7 +98,7 @@
98
98
  "next": ">=14.0.0",
99
99
  "tsdown": "^0.20.3",
100
100
  "typescript": "^5.9.3",
101
- "@farming-labs/docs": "0.0.2-beta.20"
101
+ "@farming-labs/docs": "0.0.2-beta.22"
102
102
  },
103
103
  "peerDependencies": {
104
104
  "@farming-labs/docs": ">=0.0.1",
package/styles/ai.css CHANGED
@@ -8,28 +8,58 @@
8
8
  /* ─── Animations ─────────────────────────────────────────────────── */
9
9
 
10
10
  @keyframes fd-ai-dot {
11
- 0%, 80%, 100% { transform: scale(0); opacity: 0.5; }
12
- 40% { transform: scale(1); opacity: 1; }
11
+ 0%,
12
+ 80%,
13
+ 100% {
14
+ transform: scale(0);
15
+ opacity: 0.5;
16
+ }
17
+ 40% {
18
+ transform: scale(1);
19
+ opacity: 1;
20
+ }
13
21
  }
14
22
 
15
23
  @keyframes fd-ai-fade-in {
16
- from { opacity: 0; }
17
- to { opacity: 1; }
24
+ from {
25
+ opacity: 0;
26
+ }
27
+ to {
28
+ opacity: 1;
29
+ }
18
30
  }
19
31
 
20
32
  @keyframes fd-ai-slide-up {
21
- from { opacity: 0; transform: translate(-50%, -48%) scale(0.96); }
22
- to { opacity: 1; transform: translate(-50%, -50%) scale(1); }
33
+ from {
34
+ opacity: 0;
35
+ transform: translate(-50%, -48%) scale(0.96);
36
+ }
37
+ to {
38
+ opacity: 1;
39
+ transform: translate(-50%, -50%) scale(1);
40
+ }
23
41
  }
24
42
 
25
43
  @keyframes fd-ai-float-in {
26
- from { opacity: 0; transform: translateY(12px) scale(0.95); }
27
- to { opacity: 1; transform: translateY(0) scale(1); }
44
+ from {
45
+ opacity: 0;
46
+ transform: translateY(12px) scale(0.95);
47
+ }
48
+ to {
49
+ opacity: 1;
50
+ transform: translateY(0) scale(1);
51
+ }
28
52
  }
29
53
 
30
54
  @keyframes fd-ai-float-center-in {
31
- from { opacity: 0; transform: translate(-50%, -48%) scale(0.96); }
32
- to { opacity: 1; transform: translate(-50%, -50%) scale(1); }
55
+ from {
56
+ opacity: 0;
57
+ transform: translate(-50%, -48%) scale(0.96);
58
+ }
59
+ to {
60
+ opacity: 1;
61
+ transform: translate(-50%, -50%) scale(1);
62
+ }
33
63
  }
34
64
 
35
65
  /* ─── Overlay ────────────────────────────────────────────────────── */
@@ -254,7 +284,7 @@
254
284
  border-radius: var(--radius, 8px);
255
285
  border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.08));
256
286
  background: var(--color-fd-background, rgba(255, 255, 255, 0.01));
257
- opacity: 0.6;
287
+ opacity: 0.6;
258
288
  color: var(--color-fd-foreground, #e4e4e7);
259
289
  font-size: 13px;
260
290
  font-family: inherit;
@@ -394,8 +424,12 @@
394
424
  animation: fd-ai-dot 1.4s infinite ease-in-out both;
395
425
  }
396
426
 
397
- .fd-ai-loading-dot:nth-child(2) { animation-delay: 0.16s; }
398
- .fd-ai-loading-dot:nth-child(3) { animation-delay: 0.32s; }
427
+ .fd-ai-loading-dot:nth-child(2) {
428
+ animation-delay: 0.16s;
429
+ }
430
+ .fd-ai-loading-dot:nth-child(3) {
431
+ animation-delay: 0.32s;
432
+ }
399
433
 
400
434
  /* ─── Floating trigger button ────────────────────────────────────── */
401
435
 
@@ -416,7 +450,10 @@
416
450
  cursor: pointer;
417
451
  font-size: 14px;
418
452
  box-shadow: 0 1px 3px color-mix(in srgb, var(--color-fd-background, #000) 20%, transparent);
419
- transition: transform 150ms, background 150ms, color 150ms;
453
+ transition:
454
+ transform 150ms,
455
+ background 150ms,
456
+ color 150ms;
420
457
  animation: fd-ai-fade-in 300ms ease-out;
421
458
  }
422
459
 
@@ -536,7 +573,11 @@
536
573
 
537
574
  .fd-ai-code-copy:hover {
538
575
  color: var(--color-fd-foreground, #e4e4e7);
539
- background: color-mix(in srgb, var(--color-fd-accent, rgba(255,255,255,0.05)) 60%, transparent);
576
+ background: color-mix(
577
+ in srgb,
578
+ var(--color-fd-accent, rgba(255, 255, 255, 0.05)) 60%,
579
+ transparent
580
+ );
540
581
  }
541
582
 
542
583
  .fd-ai-code-block pre {
@@ -558,7 +599,10 @@
558
599
  }
559
600
 
560
601
  /* sugar-high: each line is a block span, min-height keeps empty lines visible */
561
- .fd-ai-code-block .sh__line { display: block; min-height: 1.2em; }
602
+ .fd-ai-code-block .sh__line {
603
+ display: block;
604
+ min-height: 1.2em;
605
+ }
562
606
 
563
607
  /* ═══════════════════════════════════════════════════════════════════
564
608
  * Full-Modal (better-auth inspired) — fd-ai-fm-*
@@ -615,8 +659,20 @@
615
659
  overflow-y: auto;
616
660
  width: min(800px, 100%);
617
661
  padding: 24px 0 120px;
618
- mask-image: linear-gradient(to bottom, transparent, white 3rem, white calc(100% - 8rem), transparent 100%);
619
- -webkit-mask-image: linear-gradient(to bottom, transparent, white 3rem, white calc(100% - 8rem), transparent 100%);
662
+ mask-image: linear-gradient(
663
+ to bottom,
664
+ transparent,
665
+ white 3rem,
666
+ white calc(100% - 8rem),
667
+ transparent 100%
668
+ );
669
+ -webkit-mask-image: linear-gradient(
670
+ to bottom,
671
+ transparent,
672
+ white 3rem,
673
+ white calc(100% - 8rem),
674
+ transparent 100%
675
+ );
620
676
  }
621
677
 
622
678
  .fd-ai-fm-messages-inner {
@@ -705,12 +761,24 @@
705
761
  animation: fd-ai-fm-bounce 1s infinite ease-in-out;
706
762
  }
707
763
 
708
- .fd-ai-fm-thinking-dot:nth-child(2) { animation-delay: 150ms; }
709
- .fd-ai-fm-thinking-dot:nth-child(3) { animation-delay: 300ms; }
764
+ .fd-ai-fm-thinking-dot:nth-child(2) {
765
+ animation-delay: 150ms;
766
+ }
767
+ .fd-ai-fm-thinking-dot:nth-child(3) {
768
+ animation-delay: 300ms;
769
+ }
710
770
 
711
771
  @keyframes fd-ai-fm-bounce {
712
- 0%, 80%, 100% { transform: scale(0.6); opacity: 0.4; }
713
- 40% { transform: scale(1); opacity: 1; }
772
+ 0%,
773
+ 80%,
774
+ 100% {
775
+ transform: scale(0.6);
776
+ opacity: 0.4;
777
+ }
778
+ 40% {
779
+ transform: scale(1);
780
+ opacity: 1;
781
+ }
714
782
  }
715
783
 
716
784
  /* ─── Bottom input bar ───────────────────────────────────────────── */
@@ -718,9 +786,10 @@
718
786
  .fd-ai-fm-input-bar {
719
787
  position: fixed;
720
788
  z-index: 9999;
721
- transition: width 300ms cubic-bezier(0.34, 1.56, 0.64, 1),
722
- height 300ms cubic-bezier(0.34, 1.56, 0.64, 1),
723
- transform 200ms ease-out;
789
+ transition:
790
+ width 300ms cubic-bezier(0.34, 1.56, 0.64, 1),
791
+ height 300ms cubic-bezier(0.34, 1.56, 0.64, 1),
792
+ transform 200ms ease-out;
724
793
  }
725
794
 
726
795
  .fd-ai-fm-input-bar--closed {
@@ -809,8 +878,20 @@
809
878
  gap: 8px;
810
879
  overflow-x: auto;
811
880
  padding-bottom: 4px;
812
- mask-image: linear-gradient(to right, transparent 0%, black 1rem, black calc(100% - 1rem), transparent 100%);
813
- -webkit-mask-image: linear-gradient(to right, transparent 0%, black 1rem, black calc(100% - 1rem), transparent 100%);
881
+ mask-image: linear-gradient(
882
+ to right,
883
+ transparent 0%,
884
+ black 1rem,
885
+ black calc(100% - 1rem),
886
+ transparent 100%
887
+ );
888
+ -webkit-mask-image: linear-gradient(
889
+ to right,
890
+ transparent 0%,
891
+ black 1rem,
892
+ black calc(100% - 1rem),
893
+ transparent 100%
894
+ );
814
895
  }
815
896
 
816
897
  .fd-ai-fm-suggestion {
@@ -820,15 +901,16 @@
820
901
  font-size: 12px;
821
902
  font-family: inherit;
822
903
  border-radius: 9999px;
823
- border: 1px solid color-mix(in srgb, var(--color-fd-border, rgba(255,255,255,0.1)) 50%, transparent);
824
- background: color-mix(in srgb, var(--color-fd-muted, rgba(255,255,255,0.04)) 30%, transparent);
904
+ border: 1px solid
905
+ color-mix(in srgb, var(--color-fd-border, rgba(255, 255, 255, 0.1)) 50%, transparent);
906
+ background: color-mix(in srgb, var(--color-fd-muted, rgba(255, 255, 255, 0.04)) 30%, transparent);
825
907
  color: var(--color-fd-muted-foreground, #71717a);
826
908
  cursor: pointer;
827
909
  transition: all 200ms;
828
910
  }
829
911
 
830
912
  .fd-ai-fm-suggestion:hover {
831
- background: color-mix(in srgb, var(--color-fd-muted, rgba(255,255,255,0.04)) 50%, transparent);
913
+ background: color-mix(in srgb, var(--color-fd-muted, rgba(255, 255, 255, 0.04)) 50%, transparent);
832
914
  color: var(--color-fd-foreground, #e4e4e7);
833
915
  border-color: var(--color-fd-border, rgba(255, 255, 255, 0.1));
834
916
  }
@@ -841,7 +923,11 @@
841
923
  gap: 4px;
842
924
  padding: 8px 16px;
843
925
  border-top: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.06));
844
- background: color-mix(in srgb, var(--color-fd-accent, rgba(255,255,255,0.03)) 40%, transparent);
926
+ background: color-mix(
927
+ in srgb,
928
+ var(--color-fd-accent, rgba(255, 255, 255, 0.03)) 40%,
929
+ transparent
930
+ );
845
931
  font-size: 12px;
846
932
  color: var(--color-fd-muted-foreground, #71717a);
847
933
  }
@@ -886,7 +972,11 @@
886
972
  gap: 4px;
887
973
  padding: 8px 16px;
888
974
  border-top: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.06));
889
- background: color-mix(in srgb, var(--color-fd-accent, rgba(255,255,255,0.03)) 40%, transparent);
975
+ background: color-mix(
976
+ in srgb,
977
+ var(--color-fd-accent, rgba(255, 255, 255, 0.03)) 40%,
978
+ transparent
979
+ );
890
980
  font-size: 12px;
891
981
  color: var(--color-fd-muted-foreground, #71717a);
892
982
  border-radius: 0 0 var(--radius, 12px) var(--radius, 12px);
@@ -915,7 +1005,10 @@
915
1005
  font-size: 14px;
916
1006
  cursor: pointer;
917
1007
  box-shadow: 0 1px 3px color-mix(in srgb, var(--color-fd-background, #000) 20%, transparent);
918
- transition: transform 150ms, background 150ms, color 150ms;
1008
+ transition:
1009
+ transform 150ms,
1010
+ background 150ms,
1011
+ color 150ms;
919
1012
  animation: fd-ai-fade-in 300ms ease-out;
920
1013
  white-space: nowrap;
921
1014
  }
package/styles/base.css CHANGED
@@ -26,34 +26,52 @@ body {
26
26
  font-family: var(--fd-font-sans, var(--font-geist-sans, ui-sans-serif, system-ui, sans-serif));
27
27
  }
28
28
 
29
- code, kbd, pre, samp {
30
- font-family: var(--fd-font-mono, var(--font-geist-mono, ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, monospace));
29
+ code,
30
+ kbd,
31
+ pre,
32
+ samp {
33
+ font-family: var(
34
+ --fd-font-mono,
35
+ var(
36
+ --font-geist-mono,
37
+ ui-monospace,
38
+ "Cascadia Code",
39
+ "Source Code Pro",
40
+ Menlo,
41
+ Consolas,
42
+ monospace
43
+ )
44
+ );
31
45
  }
32
46
 
33
47
  /* ─── Prose heading typography ───────────────────────────────────────── */
34
48
 
35
- .prose h1, article h1 {
49
+ .prose h1,
50
+ article h1 {
36
51
  font-size: var(--fd-h1-size, 2.25rem);
37
52
  font-weight: var(--fd-h1-weight, 700);
38
53
  line-height: var(--fd-h1-line-height, 1.2);
39
54
  letter-spacing: var(--fd-h1-letter-spacing, -0.02em);
40
55
  }
41
56
 
42
- .prose h2, article h2 {
57
+ .prose h2,
58
+ article h2 {
43
59
  font-size: var(--fd-h2-size, 1.5rem);
44
60
  font-weight: var(--fd-h2-weight, 600);
45
61
  line-height: var(--fd-h2-line-height, 1.3);
46
62
  letter-spacing: var(--fd-h2-letter-spacing, -0.01em);
47
63
  }
48
64
 
49
- .prose h3, article h3 {
65
+ .prose h3,
66
+ article h3 {
50
67
  font-size: var(--fd-h3-size, 1.25rem);
51
68
  font-weight: var(--fd-h3-weight, 600);
52
69
  line-height: var(--fd-h3-line-height, 1.4);
53
70
  letter-spacing: var(--fd-h3-letter-spacing, normal);
54
71
  }
55
72
 
56
- .prose h4, article h4 {
73
+ .prose h4,
74
+ article h4 {
57
75
  font-size: var(--fd-h4-size, 1.125rem);
58
76
  font-weight: var(--fd-h4-weight, 600);
59
77
  line-height: var(--fd-h4-line-height, 1.4);
@@ -62,7 +80,10 @@ code, kbd, pre, samp {
62
80
 
63
81
  /* ─── Body text ──────────────────────────────────────────────────────── */
64
82
 
65
- .prose p, .prose li, .prose td, article p {
83
+ .prose p,
84
+ .prose li,
85
+ .prose td,
86
+ article p {
66
87
  font-size: var(--fd-body-size, 1rem);
67
88
  font-weight: var(--fd-body-weight, 400);
68
89
  line-height: var(--fd-body-line-height, 1.75);
@@ -70,7 +91,9 @@ code, kbd, pre, samp {
70
91
 
71
92
  /* ─── Small text (captions, metadata) ─────────────────────────────── */
72
93
 
73
- .prose small, article small, .text-sm {
94
+ .prose small,
95
+ article small,
96
+ .text-sm {
74
97
  font-size: var(--fd-small-size, 0.875rem);
75
98
  font-weight: var(--fd-small-weight, 400);
76
99
  line-height: var(--fd-small-line-height, 1.5);
@@ -108,6 +131,44 @@ figure.shiki pre > code > [data-line] {
108
131
  padding: 0 0.25rem;
109
132
  }
110
133
 
134
+ /* Titled code blocks: diagonal stripe background on the title bar */
135
+ figure.shiki:has(figcaption) > div:first-child {
136
+ position: relative;
137
+ }
138
+
139
+ figure.shiki:has(figcaption) > div:first-child::before {
140
+ content: "";
141
+ position: absolute;
142
+ inset: 0;
143
+ background: repeating-linear-gradient(
144
+ -45deg,
145
+ currentColor,
146
+ currentColor 1px,
147
+ transparent 1px,
148
+ transparent 6px
149
+ );
150
+ opacity: 0.03;
151
+ pointer-events: none;
152
+ }
153
+
154
+ .dark figure.shiki:has(figcaption) > div:first-child::before {
155
+ opacity: 0.05;
156
+ }
157
+
158
+ figure.shiki:has(figcaption) figcaption {
159
+ font-family: var(
160
+ --fd-font-mono,
161
+ ui-monospace,
162
+ SFMono-Regular,
163
+ "SF Mono",
164
+ Menlo,
165
+ Consolas,
166
+ monospace
167
+ );
168
+ font-size: 0.75rem;
169
+ letter-spacing: 0.01em;
170
+ }
171
+
111
172
  /* ─── Page description (frontmatter) ─────────────────────────────────── */
112
173
 
113
174
  .fd-page-description {
@@ -148,7 +209,9 @@ figure.shiki pre > code > [data-line] {
148
209
  color: inherit;
149
210
  text-decoration: none;
150
211
  cursor: pointer;
151
- transition: opacity 0.15s, color 0.15s;
212
+ transition:
213
+ opacity 0.15s,
214
+ color 0.15s;
152
215
  }
153
216
 
154
217
  .fd-breadcrumb-link:hover {
@@ -221,7 +284,10 @@ figure.shiki pre > code > [data-line] {
221
284
  border-radius: 0.375rem;
222
285
  cursor: pointer;
223
286
  white-space: nowrap;
224
- transition: color 0.15s, background 0.15s, border-color 0.15s;
287
+ transition:
288
+ color 0.15s,
289
+ background 0.15s,
290
+ border-color 0.15s;
225
291
  user-select: none;
226
292
  }
227
293
 
@@ -268,8 +334,14 @@ figure.shiki pre > code > [data-line] {
268
334
  }
269
335
 
270
336
  @keyframes fd-page-actions-fade-in {
271
- from { opacity: 0; transform: translateY(-4px); }
272
- to { opacity: 1; transform: translateY(0); }
337
+ from {
338
+ opacity: 0;
339
+ transform: translateY(-4px);
340
+ }
341
+ to {
342
+ opacity: 1;
343
+ transform: translateY(0);
344
+ }
273
345
  }
274
346
 
275
347
  .fd-page-action-menu-item {
@@ -286,7 +358,9 @@ figure.shiki pre > code > [data-line] {
286
358
  border-radius: 0.25rem;
287
359
  cursor: pointer;
288
360
  text-align: left;
289
- transition: background 0.1s, color 0.1s;
361
+ transition:
362
+ background 0.1s,
363
+ color 0.1s;
290
364
  }
291
365
 
292
366
  .fd-page-action-menu-item:hover {
@@ -372,7 +446,10 @@ figure.shiki:hover > div:first-child button {
372
446
  background: var(--color-fd-secondary, hsl(0 0% 96%));
373
447
  color: var(--color-fd-muted-foreground, hsl(0 0% 45%));
374
448
  cursor: pointer;
375
- transition: background-color 150ms, color 150ms, border-color 150ms;
449
+ transition:
450
+ background-color 150ms,
451
+ color 150ms,
452
+ border-color 150ms;
376
453
  }
377
454
 
378
455
  .fd-sidebar-ai-btn:hover {
@@ -44,7 +44,9 @@
44
44
 
45
45
  .fd-ai-dialog {
46
46
  border-radius: 12px;
47
- box-shadow: 0 20px 60px rgba(180, 140, 20, 0.08), 0 8px 24px rgba(0, 0, 0, 0.12);
47
+ box-shadow:
48
+ 0 20px 60px rgba(180, 140, 20, 0.08),
49
+ 0 8px 24px rgba(0, 0, 0, 0.12);
48
50
  }
49
51
 
50
52
  .fd-ai-bubble-user {
@@ -131,7 +133,9 @@
131
133
  font-size: 0.875rem;
132
134
  color: var(--color-fd-card-foreground);
133
135
  box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1);
134
- transition: background-color 150ms, border-color 150ms;
136
+ transition:
137
+ background-color 150ms,
138
+ border-color 150ms;
135
139
  }
136
140
 
137
141
  .fd-card:hover {
@@ -243,7 +247,9 @@
243
247
  border-radius: 0.75rem;
244
248
  border: 1px solid var(--color-fd-border);
245
249
  background: var(--color-fd-popover);
246
- box-shadow: 0 24px 60px -12px rgba(180, 140, 20, 0.12), 0 0 0 1px rgba(255, 255, 255, 0.04);
250
+ box-shadow:
251
+ 0 24px 60px -12px rgba(180, 140, 20, 0.12),
252
+ 0 0 0 1px rgba(255, 255, 255, 0.04);
247
253
  }
248
254
 
249
255
  .omni-item-active {
@@ -258,4 +264,3 @@
258
264
  .omni-search-input:focus {
259
265
  caret-color: var(--color-fd-primary);
260
266
  }
261
-
@@ -252,7 +252,9 @@ nav[class*="header"] {
252
252
  font-size: 0.875rem;
253
253
  color: var(--color-fd-card-foreground);
254
254
  box-shadow: none;
255
- transition: background-color 150ms, border-color 150ms;
255
+ transition:
256
+ background-color 150ms,
257
+ border-color 150ms;
256
258
  }
257
259
 
258
260
  .fd-card:hover {
@@ -327,7 +329,9 @@ figure.shiki {
327
329
  border-radius: 0;
328
330
  color: var(--color-fd-muted-foreground);
329
331
  border-bottom: 2px solid transparent;
330
- transition: color 150ms, border-color 150ms;
332
+ transition:
333
+ color 150ms,
334
+ border-color 150ms;
331
335
  }
332
336
 
333
337
  [role="tab"][aria-selected="true"],
@@ -455,6 +459,8 @@ details > :not(summary) {
455
459
  .fd-page-action-btn {
456
460
  border-radius: 6px;
457
461
  font-size: 0.8125rem;
462
+ text-transform: uppercase;
463
+ box-shadow: 0 4px 24px hsl(0 0% 0% / 0.4);
458
464
  }
459
465
 
460
466
  .fd-page-action-menu {
@@ -56,10 +56,7 @@
56
56
  html {
57
57
  scroll-behavior: auto;
58
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
59
+ var(--fd-nav-height, 56px) + var(--fd-banner-height, 0px) + var(--fd-tocnav-height, 0px) + 24px
63
60
  );
64
61
  }
65
62
 
@@ -141,7 +138,8 @@ table {
141
138
  border-radius: 0 !important;
142
139
  }
143
140
 
144
- th, td {
141
+ th,
142
+ td {
145
143
  border-color: var(--color-fd-border);
146
144
  }
147
145
 
@@ -19,7 +19,9 @@
19
19
 
20
20
  .fd-ai-dialog {
21
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);
22
+ box-shadow:
23
+ 0 20px 60px rgba(99, 102, 241, 0.08),
24
+ 0 8px 24px rgba(0, 0, 0, 0.12);
23
25
  }
24
26
 
25
27
  .fd-ai-bubble-user {
@@ -93,7 +95,9 @@
93
95
  border-radius: 0.75rem;
94
96
  border: 1px solid var(--color-fd-border, #262626);
95
97
  background: var(--color-fd-popover, hsl(0 0% 5%));
96
- box-shadow: 0 24px 60px -12px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(255, 255, 255, 0.04);
98
+ box-shadow:
99
+ 0 24px 60px -12px rgba(0, 0, 0, 0.3),
100
+ 0 0 0 1px rgba(255, 255, 255, 0.04);
97
101
  }
98
102
 
99
103
  .omni-item {
@@ -6,43 +6,43 @@
6
6
  /* ─── GreenTree color overrides ────────────────────────────────── */
7
7
 
8
8
  :root {
9
- --color-fd-primary: #0D9373;
9
+ --color-fd-primary: #0d9373;
10
10
  --color-fd-primary-foreground: #fff;
11
- --color-fd-ring: #0D9373;
11
+ --color-fd-ring: #0d9373;
12
12
 
13
13
  --color-fd-background: #fff;
14
- --color-fd-foreground: #171A18;
14
+ --color-fd-foreground: #171a18;
15
15
  --color-fd-card: #fff;
16
- --color-fd-card-foreground: #171A18;
16
+ --color-fd-card-foreground: #171a18;
17
17
  --color-fd-popover: #fff;
18
- --color-fd-popover-foreground: #171A18;
18
+ --color-fd-popover-foreground: #171a18;
19
19
  --color-fd-secondary: #f6f8f7;
20
- --color-fd-secondary-foreground: #171A18;
20
+ --color-fd-secondary-foreground: #171a18;
21
21
  --color-fd-muted: #f6f8f7;
22
22
  --color-fd-muted-foreground: #505351;
23
23
  --color-fd-accent: #f0f5f3;
24
- --color-fd-accent-foreground: #171A18;
25
- --color-fd-border: #DFE1E0;
24
+ --color-fd-accent-foreground: #171a18;
25
+ --color-fd-border: #dfe1e0;
26
26
  }
27
27
 
28
28
  .dark {
29
- --color-fd-primary: #26BD6C;
30
- --color-fd-primary-foreground: #0A0D0D;
31
- --color-fd-ring: #26BD6C;
29
+ --color-fd-primary: #26bd6c;
30
+ --color-fd-primary-foreground: #0a0d0d;
31
+ --color-fd-ring: #26bd6c;
32
32
 
33
- --color-fd-background: #0A0D0D;
34
- --color-fd-foreground: #E5E7E6;
33
+ --color-fd-background: #0a0d0d;
34
+ --color-fd-foreground: #e5e7e6;
35
35
  --color-fd-card: #111413;
36
- --color-fd-card-foreground: #E5E7E6;
36
+ --color-fd-card-foreground: #e5e7e6;
37
37
  --color-fd-popover: #111413;
38
- --color-fd-popover-foreground: #E5E7E6;
39
- --color-fd-secondary: #1A1D1C;
40
- --color-fd-secondary-foreground: #E5E7E6;
41
- --color-fd-muted: #1A1D1C;
42
- --color-fd-muted-foreground: #8A8D8B;
43
- --color-fd-accent: #1A1D1C;
44
- --color-fd-accent-foreground: #E5E7E6;
45
- --color-fd-border: #2A2D2C;
38
+ --color-fd-popover-foreground: #e5e7e6;
39
+ --color-fd-secondary: #1a1d1c;
40
+ --color-fd-secondary-foreground: #e5e7e6;
41
+ --color-fd-muted: #1a1d1c;
42
+ --color-fd-muted-foreground: #8a8d8b;
43
+ --color-fd-accent: #1a1d1c;
44
+ --color-fd-accent-foreground: #e5e7e6;
45
+ --color-fd-border: #2a2d2c;
46
46
  }
47
47
 
48
48
  /* ─── Typography — Inter, Mintlify-style values ──────────────── */
@@ -94,7 +94,9 @@ aside a[data-active] {
94
94
  padding: 6px 10px;
95
95
  border-radius: 8px;
96
96
  color: var(--color-fd-muted-foreground);
97
- transition: color 150ms, background-color 150ms;
97
+ transition:
98
+ color 150ms,
99
+ background-color 150ms;
98
100
  }
99
101
 
100
102
  aside a[data-active]:hover {
@@ -265,7 +267,9 @@ nav[class*="header"] {
265
267
  font-size: 0.875rem;
266
268
  color: var(--color-fd-card-foreground);
267
269
  box-shadow: none;
268
- transition: background-color 150ms, border-color 150ms;
270
+ transition:
271
+ background-color 150ms,
272
+ border-color 150ms;
269
273
  }
270
274
 
271
275
  .fd-card:hover {
@@ -340,7 +344,9 @@ figure.shiki {
340
344
  border-radius: 0;
341
345
  color: var(--color-fd-muted-foreground);
342
346
  border-bottom: 2px solid transparent;
343
- transition: color 150ms, border-color 150ms;
347
+ transition:
348
+ color 150ms,
349
+ border-color 150ms;
344
350
  }
345
351
 
346
352
  [role="tab"][aria-selected="true"],
@@ -622,7 +628,10 @@ details > :not(summary) {
622
628
  background: transparent;
623
629
  color: var(--color-fd-muted-foreground);
624
630
  cursor: pointer;
625
- transition: background-color 150ms, color 150ms, border-color 150ms;
631
+ transition:
632
+ background-color 150ms,
633
+ color 150ms,
634
+ border-color 150ms;
626
635
  }
627
636
 
628
637
  .fd-sidebar-ai-btn:hover {
@@ -657,7 +666,9 @@ details > :not(summary) {
657
666
  background: transparent;
658
667
  border: 1px solid var(--color-fd-border);
659
668
  cursor: pointer;
660
- transition: background-color 150ms, color 150ms;
669
+ transition:
670
+ background-color 150ms,
671
+ color 150ms;
661
672
  white-space: nowrap;
662
673
  }
663
674
 
package/styles/omni.css CHANGED
@@ -4,25 +4,49 @@
4
4
  * ═══════════════════════════════════════════════════════════════════ */
5
5
 
6
6
  @keyframes omni-fade-in {
7
- from { opacity: 0; }
8
- to { opacity: 1; }
7
+ from {
8
+ opacity: 0;
9
+ }
10
+ to {
11
+ opacity: 1;
12
+ }
9
13
  }
10
14
  @keyframes omni-fade-out {
11
- from { opacity: 1; }
12
- to { opacity: 0; }
15
+ from {
16
+ opacity: 1;
17
+ }
18
+ to {
19
+ opacity: 0;
20
+ }
13
21
  }
14
22
  @keyframes omni-scale-in {
15
- from { opacity: 0; transform: translateX(-50%) scale(0.96) translateY(-4px); }
16
- to { opacity: 1; transform: translateX(-50%) scale(1) translateY(0); }
23
+ from {
24
+ opacity: 0;
25
+ transform: translateX(-50%) scale(0.96) translateY(-4px);
26
+ }
27
+ to {
28
+ opacity: 1;
29
+ transform: translateX(-50%) scale(1) translateY(0);
30
+ }
17
31
  }
18
32
  @keyframes omni-scale-out {
19
- from { opacity: 1; transform: translateX(-50%) scale(1) translateY(0); }
20
- to { opacity: 0; transform: translateX(-50%) scale(0.96) translateY(-4px); }
33
+ from {
34
+ opacity: 1;
35
+ transform: translateX(-50%) scale(1) translateY(0);
36
+ }
37
+ to {
38
+ opacity: 0;
39
+ transform: translateX(-50%) scale(0.96) translateY(-4px);
40
+ }
21
41
  }
22
42
 
23
43
  @keyframes omni-spin {
24
- from { transform: rotate(0deg); }
25
- to { transform: rotate(360deg); }
44
+ from {
45
+ transform: rotate(0deg);
46
+ }
47
+ to {
48
+ transform: rotate(360deg);
49
+ }
26
50
  }
27
51
 
28
52
  .omni-spin {
@@ -123,8 +147,12 @@
123
147
  overflow: auto;
124
148
  padding: 0.25rem;
125
149
  }
126
- .omni-body::-webkit-scrollbar { width: 6px; }
127
- .omni-body::-webkit-scrollbar-track { background: transparent; }
150
+ .omni-body::-webkit-scrollbar {
151
+ width: 6px;
152
+ }
153
+ .omni-body::-webkit-scrollbar-track {
154
+ background: transparent;
155
+ }
128
156
  .omni-body::-webkit-scrollbar-thumb {
129
157
  background: var(--color-fd-muted, #262626);
130
158
  border-radius: 3px;
@@ -141,7 +169,9 @@
141
169
  }
142
170
 
143
171
  /* Groups */
144
- .omni-group { padding: 0.25rem 0; }
172
+ .omni-group {
173
+ padding: 0.25rem 0;
174
+ }
145
175
  .omni-group-label {
146
176
  padding: 0.25rem 0.75rem;
147
177
  font-size: 10px;
@@ -150,7 +180,10 @@
150
180
  color: var(--color-fd-muted-foreground, #a3a3a3);
151
181
  font-weight: 500;
152
182
  }
153
- .omni-group-items { display: flex; flex-direction: column; }
183
+ .omni-group-items {
184
+ display: flex;
185
+ flex-direction: column;
186
+ }
154
187
 
155
188
  /* Items */
156
189
  .omni-item {
@@ -223,7 +256,9 @@
223
256
  border-radius: 0.25rem;
224
257
  color: var(--color-fd-muted-foreground, #a3a3a3);
225
258
  flex-shrink: 0;
226
- transition: color 100ms, background 100ms;
259
+ transition:
260
+ color 100ms,
261
+ background 100ms;
227
262
  text-decoration: none;
228
263
  }
229
264
  .omni-item-ext:hover {
@@ -238,7 +273,9 @@
238
273
  color: var(--color-fd-muted-foreground, #a3a3a3);
239
274
  }
240
275
  @media (min-width: 640px) {
241
- .omni-item-shortcuts { display: flex; }
276
+ .omni-item-shortcuts {
277
+ display: flex;
278
+ }
242
279
  }
243
280
  .omni-kbd-sm {
244
281
  border-radius: 0.25rem;
@@ -255,7 +292,9 @@
255
292
  transition: opacity 120ms;
256
293
  flex-shrink: 0;
257
294
  }
258
- .omni-item:hover .omni-item-chevron { opacity: 1; }
295
+ .omni-item:hover .omni-item-chevron {
296
+ opacity: 1;
297
+ }
259
298
 
260
299
  /* Highlight */
261
300
  .omni-highlight {
@@ -314,5 +353,7 @@
314
353
  display: none;
315
354
  }
316
355
  @media (min-width: 640px) {
317
- .omni-footer-hint-desktop { display: flex; }
356
+ .omni-footer-hint-desktop {
357
+ display: flex;
358
+ }
318
359
  }
@@ -58,10 +58,7 @@
58
58
  html {
59
59
  scroll-behavior: auto;
60
60
  scroll-padding-top: calc(
61
- var(--fd-nav-height, 56px) +
62
- var(--fd-banner-height, 0px) +
63
- var(--fd-tocnav-height, 0px) +
64
- 24px
61
+ var(--fd-nav-height, 56px) + var(--fd-banner-height, 0px) + var(--fd-tocnav-height, 0px) + 24px
65
62
  );
66
63
  }
67
64
 
@@ -80,18 +77,22 @@ html:not([data-anchor-scrolling]) {
80
77
  width: 12px;
81
78
  height: 12px;
82
79
  }
80
+
83
81
  ::-webkit-scrollbar-track {
84
82
  background: var(--scrollbar-track);
85
83
  }
84
+
86
85
  ::-webkit-scrollbar-thumb {
87
86
  background-color: var(--scrollbar-thumb);
88
87
  border-radius: 9999px;
89
88
  border: 3px solid transparent;
90
89
  background-clip: content-box;
91
90
  }
91
+
92
92
  ::-webkit-scrollbar-thumb:hover {
93
93
  background-color: var(--scrollbar-thumb-hover);
94
94
  }
95
+
95
96
  ::-webkit-scrollbar-corner {
96
97
  background: transparent;
97
98
  }
@@ -412,16 +413,19 @@ figure.shiki > div:first-child {
412
413
  font-size: 0.75rem;
413
414
  letter-spacing: 0.01em;
414
415
  }
416
+
415
417
  .fd-breadcrumb-link {
416
418
  color: inherit;
417
419
  text-decoration: none;
418
420
  text-transform: uppercase;
419
421
  font-family: var(--fd-font-mono, var(--font-geist-mono, ui-monospace, monospace));
420
422
  }
423
+
421
424
  .fd-breadcrumb-current {
422
425
  font-family: var(--fd-font-mono, var(--font-geist-mono, ui-monospace, monospace));
423
426
  text-transform: uppercase;
424
427
  }
428
+
425
429
  /* ─── Page Actions (pixel-border overrides) ───────────────────────── */
426
430
 
427
431
  .fd-page-action-btn {
@@ -661,15 +665,17 @@ figure.shiki > div:first-child {
661
665
  .omni-content {
662
666
  border-radius: 0 !important;
663
667
  border: 2px solid var(--color-fd-border, hsl(0 0% 15%));
664
- box-shadow: 4px 4px 0 0 var(--color-fd-border, hsl(0 0% 15%)),
665
- 0 0 0 1px rgba(255, 255, 255, 0.02);
668
+ box-shadow:
669
+ 3px 3px 0 0 var(--color-fd-border, hsl(0 0% 15%)),
670
+ 0 0 0 1px rgba(255, 255, 255, 0.02);
666
671
  }
667
672
 
668
673
  .omni-item {
669
674
  border-radius: 0 !important;
670
675
  }
671
676
 
672
- .omni-kbd, .omni-kbd-sm {
677
+ .omni-kbd,
678
+ .omni-kbd-sm {
673
679
  border-radius: 0 !important;
674
680
  border: 1px solid var(--color-fd-border, hsl(0 0% 15%));
675
681
  }
package/styles/shiny.css CHANGED
@@ -63,7 +63,9 @@
63
63
 
64
64
  .fd-page-action-menu {
65
65
  border-radius: 0.75rem;
66
- box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(0, 0, 0, 0.04);
66
+ box-shadow:
67
+ 0 8px 30px rgba(0, 0, 0, 0.08),
68
+ 0 0 0 1px rgba(0, 0, 0, 0.04);
67
69
  }
68
70
 
69
71
  .fd-page-action-menu-item {
@@ -74,7 +76,9 @@
74
76
 
75
77
  .fd-ai-dialog {
76
78
  border-radius: 16px;
77
- box-shadow: 0 24px 80px rgba(0, 0, 0, 0.08), 0 8px 32px rgba(0, 0, 0, 0.1);
79
+ box-shadow:
80
+ 0 24px 80px rgba(0, 0, 0, 0.08),
81
+ 0 8px 32px rgba(0, 0, 0, 0.1);
78
82
  }
79
83
 
80
84
  .fd-ai-bubble-user {
@@ -97,13 +101,17 @@
97
101
  border-radius: 6px;
98
102
  background: hsl(240, 6%, 15%);
99
103
  color: #fff;
100
- box-shadow: inset 0 1px 0 0 rgba(255, 255, 255, 0.07), 0 1px 3px rgba(0, 0, 0, 0.2);
104
+ box-shadow:
105
+ inset 0 1px 0 0 rgba(255, 255, 255, 0.07),
106
+ 0 1px 3px rgba(0, 0, 0, 0.2);
101
107
  border: none;
102
108
  }
103
109
 
104
110
  .fd-ai-floating-btn:hover {
105
111
  background: hsl(240, 6%, 20%);
106
- box-shadow: inset 0 1px 0 0 rgba(255, 255, 255, 0.1), 0 2px 6px rgba(0, 0, 0, 0.25);
112
+ box-shadow:
113
+ inset 0 1px 0 0 rgba(255, 255, 255, 0.1),
114
+ 0 2px 6px rgba(0, 0, 0, 0.25);
107
115
  }
108
116
 
109
117
  :root .fd-ai-floating-btn {
@@ -194,8 +202,13 @@
194
202
  padding: 1.25rem;
195
203
  font-size: 0.875rem;
196
204
  color: var(--color-fd-card-foreground);
197
- box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.04), 0 1px 2px -1px rgb(0 0 0 / 0.04);
198
- transition: background-color 150ms, border-color 150ms, box-shadow 150ms;
205
+ box-shadow:
206
+ 0 1px 3px 0 rgb(0 0 0 / 0.04),
207
+ 0 1px 2px -1px rgb(0 0 0 / 0.04);
208
+ transition:
209
+ background-color 150ms,
210
+ border-color 150ms,
211
+ box-shadow 150ms;
199
212
  }
200
213
 
201
214
  .fd-card:hover {
@@ -350,7 +363,9 @@ figure.shiki {
350
363
  border-radius: 0;
351
364
  color: var(--color-fd-muted-foreground);
352
365
  border-bottom: 2px solid transparent;
353
- transition: color 150ms, border-color 150ms;
366
+ transition:
367
+ color 150ms,
368
+ border-color 150ms;
354
369
  }
355
370
 
356
371
  [role="tab"][aria-selected="true"],
@@ -430,7 +445,9 @@ details > :not(summary) {
430
445
  border-radius: 0.875rem;
431
446
  border: 1px solid var(--color-fd-border);
432
447
  background: var(--color-fd-popover);
433
- box-shadow: 0 24px 80px -12px rgba(0, 0, 0, 0.12), 0 8px 30px rgba(0, 0, 0, 0.08);
448
+ box-shadow:
449
+ 0 24px 80px -12px rgba(0, 0, 0, 0.12),
450
+ 0 8px 30px rgba(0, 0, 0, 0.08);
434
451
  }
435
452
 
436
453
  .omni-item {