@farming-labs/astro-theme 0.0.2-beta.21 → 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,8 +1,36 @@
1
1
  {
2
2
  "name": "@farming-labs/astro-theme",
3
- "version": "0.0.2-beta.21",
3
+ "version": "0.0.2-beta.22",
4
4
  "description": "Astro UI components for @farming-labs/docs — layout, sidebar, TOC, search, and theme toggle",
5
+ "keywords": [
6
+ "astro",
7
+ "docs",
8
+ "documentation",
9
+ "theme"
10
+ ],
11
+ "license": "MIT",
12
+ "author": "Farming Labs",
13
+ "files": [
14
+ "src",
15
+ "styles"
16
+ ],
5
17
  "type": "module",
18
+ "typesVersions": {
19
+ "*": {
20
+ "pixel-border": [
21
+ "./src/themes/pixel-border.d.ts"
22
+ ],
23
+ "darksharp": [
24
+ "./src/themes/darksharp.d.ts"
25
+ ],
26
+ "fumadocs": [
27
+ "./src/themes/default.d.ts"
28
+ ],
29
+ ".": [
30
+ "./src/index.d.ts"
31
+ ]
32
+ }
33
+ },
6
34
  "exports": {
7
35
  ".": {
8
36
  "types": "./src/index.d.ts",
@@ -39,38 +67,10 @@
39
67
  "./styles/colorful.css": "./styles/colorful.css",
40
68
  "./colorful/css": "./styles/colorful-bundle.css"
41
69
  },
42
- "typesVersions": {
43
- "*": {
44
- "pixel-border": [
45
- "./src/themes/pixel-border.d.ts"
46
- ],
47
- "darksharp": [
48
- "./src/themes/darksharp.d.ts"
49
- ],
50
- "fumadocs": [
51
- "./src/themes/default.d.ts"
52
- ],
53
- ".": [
54
- "./src/index.d.ts"
55
- ]
56
- }
57
- },
58
- "files": [
59
- "src",
60
- "styles"
61
- ],
62
- "keywords": [
63
- "docs",
64
- "astro",
65
- "theme",
66
- "documentation"
67
- ],
68
- "author": "Farming Labs",
69
- "license": "MIT",
70
70
  "dependencies": {
71
71
  "sugar-high": "^0.9.5",
72
- "@farming-labs/docs": "0.0.2-beta.21",
73
- "@farming-labs/astro": "0.0.2-beta.21"
72
+ "@farming-labs/docs": "0.0.2-beta.22",
73
+ "@farming-labs/astro": "0.0.2-beta.22"
74
74
  },
75
75
  "peerDependencies": {
76
76
  "astro": ">=4.0.0"
@@ -16,10 +16,12 @@ function buildCodeBlock(lang, code) {
16
16
  const highlighted = highlight(trimmed).replace(/<\/span>\n<span/g, "</span><span");
17
17
  const langLabel = lang ? `<div class="fd-ai-code-lang">${escapeHtml(lang)}</div>` : "";
18
18
  const copyBtn = `<button class="fd-ai-code-copy" onclick="(function(btn){var code=btn.closest('.fd-ai-code-block').querySelector('code').textContent;navigator.clipboard.writeText(code).then(function(){btn.textContent='Copied!';setTimeout(function(){btn.textContent='Copy'},1500)})})(this)">Copy</button>`;
19
- return `<div class="fd-ai-code-block">`
20
- + `<div class="fd-ai-code-header">${langLabel}${copyBtn}</div>`
21
- + `<pre><code>${highlighted}</code></pre>`
22
- + `</div>`;
19
+ return (
20
+ `<div class="fd-ai-code-block">` +
21
+ `<div class="fd-ai-code-header">${langLabel}${copyBtn}</div>` +
22
+ `<pre><code>${highlighted}</code></pre>` +
23
+ `</div>`
24
+ );
23
25
  }
24
26
 
25
27
  function isTableRow(line) {
@@ -33,15 +35,23 @@ function isTableSeparator(line) {
33
35
 
34
36
  function renderTable(rows) {
35
37
  const parseRow = (row) =>
36
- row.trim().replace(/^\|/, "").replace(/\|$/, "").split("|").map(c => c.trim());
38
+ row
39
+ .trim()
40
+ .replace(/^\|/, "")
41
+ .replace(/\|$/, "")
42
+ .split("|")
43
+ .map((c) => c.trim());
37
44
 
38
45
  const headerCells = parseRow(rows[0]);
39
- const thead = `<thead><tr>${headerCells.map(c => `<th>${c}</th>`).join("")}</tr></thead>`;
40
-
41
- const bodyRows = rows.slice(1).map(row => {
42
- const cells = parseRow(row);
43
- return `<tr>${cells.map(c => `<td>${c}</td>`).join("")}</tr>`;
44
- }).join("");
46
+ const thead = `<thead><tr>${headerCells.map((c) => `<th>${c}</th>`).join("")}</tr></thead>`;
47
+
48
+ const bodyRows = rows
49
+ .slice(1)
50
+ .map((row) => {
51
+ const cells = parseRow(row);
52
+ return `<tr>${cells.map((c) => `<td>${c}</td>`).join("")}</tr>`;
53
+ })
54
+ .join("");
45
55
 
46
56
  return `<table>${thead}<tbody>${bodyRows}</tbody></table>`;
47
57
  }
@@ -1,2 +1,4 @@
1
- export declare const colorful: (overrides?: { ui?: Record<string, unknown> }) => import("@farming-labs/docs").DocsTheme;
1
+ export declare const colorful: (overrides?: {
2
+ ui?: Record<string, unknown>;
3
+ }) => import("@farming-labs/docs").DocsTheme;
2
4
  export declare const ColorfulUIDefaults: Record<string, unknown>;
@@ -45,7 +45,9 @@
45
45
  font-size: 0.875rem;
46
46
  color: var(--color-fd-card-foreground);
47
47
  box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1);
48
- transition: background-color 150ms, border-color 150ms;
48
+ transition:
49
+ background-color 150ms,
50
+ border-color 150ms;
49
51
  }
50
52
 
51
53
  .fd-card:hover {
package/styles/docs.css CHANGED
@@ -8,7 +8,9 @@
8
8
 
9
9
  /* ─── CSS Reset ──────────────────────────────────────────────────────── */
10
10
 
11
- *, *::before, *::after {
11
+ *,
12
+ *::before,
13
+ *::after {
12
14
  box-sizing: border-box;
13
15
  margin: 0;
14
16
  }
@@ -76,8 +78,18 @@ body {
76
78
  -moz-osx-font-smoothing: grayscale;
77
79
  }
78
80
 
79
- code, kbd, pre, samp {
80
- font-family: var(--fd-font-mono, ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, monospace);
81
+ code,
82
+ kbd,
83
+ pre,
84
+ samp {
85
+ font-family: var(
86
+ --fd-font-mono,
87
+ ui-monospace,
88
+ "Cascadia Code",
89
+ "Source Code Pro",
90
+ Menlo,
91
+ monospace
92
+ );
81
93
  }
82
94
 
83
95
  /* ─── Layout (sidebar + content, TOC lives inside content area) ──────── */
@@ -123,7 +135,9 @@ code, kbd, pre, samp {
123
135
  border-radius: 8px;
124
136
  color: var(--color-fd-muted-foreground);
125
137
  cursor: pointer;
126
- transition: background 0.15s, color 0.15s;
138
+ transition:
139
+ background 0.15s,
140
+ color 0.15s;
127
141
  }
128
142
 
129
143
  .fd-menu-btn:hover,
@@ -196,7 +210,9 @@ code, kbd, pre, samp {
196
210
  border-radius: 6px;
197
211
  color: var(--color-fd-muted-foreground);
198
212
  cursor: pointer;
199
- transition: background 0.15s, color 0.15s;
213
+ transition:
214
+ background 0.15s,
215
+ color 0.15s;
200
216
  flex-shrink: 0;
201
217
  }
202
218
 
@@ -224,7 +240,9 @@ code, kbd, pre, samp {
224
240
  border: 1px solid var(--color-fd-border);
225
241
  border-radius: 8px;
226
242
  cursor: pointer;
227
- transition: border-color 0.15s, background 0.15s;
243
+ transition:
244
+ border-color 0.15s,
245
+ background 0.15s;
228
246
  }
229
247
 
230
248
  .fd-sidebar-search-btn:hover {
@@ -270,7 +288,9 @@ code, kbd, pre, samp {
270
288
  text-decoration: none;
271
289
  border-radius: 8px;
272
290
  position: relative;
273
- transition: color 0.15s, background 0.15s;
291
+ transition:
292
+ color 0.15s,
293
+ background 0.15s;
274
294
  }
275
295
 
276
296
  .fd-sidebar-link:hover {
@@ -287,7 +307,7 @@ code, kbd, pre, samp {
287
307
  }
288
308
 
289
309
  .fd-sidebar-folder-content .fd-sidebar-link-active::before {
290
- content: '';
310
+ content: "";
291
311
  position: absolute;
292
312
  left: -9px;
293
313
  top: 25%;
@@ -346,7 +366,7 @@ code, kbd, pre, samp {
346
366
  }
347
367
 
348
368
  .fd-sidebar-folder-content::before {
349
- content: '';
369
+ content: "";
350
370
  position: absolute;
351
371
  left: 4px;
352
372
  top: 4px;
@@ -464,7 +484,9 @@ code, kbd, pre, samp {
464
484
  text-decoration: none;
465
485
  border-left: 2px solid transparent;
466
486
  margin-left: -1px;
467
- transition: color 0.15s, border-color 0.15s;
487
+ transition:
488
+ color 0.15s,
489
+ border-color 0.15s;
468
490
  }
469
491
 
470
492
  .fd-toc-link:hover {
@@ -568,7 +590,9 @@ code, kbd, pre, samp {
568
590
  color: inherit;
569
591
  text-decoration: none;
570
592
  cursor: pointer;
571
- transition: opacity 0.15s, color 0.15s;
593
+ transition:
594
+ opacity 0.15s,
595
+ color 0.15s;
572
596
  }
573
597
 
574
598
  .fd-breadcrumb-link:hover {
@@ -595,7 +619,9 @@ code, kbd, pre, samp {
595
619
  border-radius: 8px;
596
620
  color: var(--color-fd-muted-foreground);
597
621
  cursor: pointer;
598
- transition: color 0.15s, background 0.15s;
622
+ transition:
623
+ color 0.15s,
624
+ background 0.15s;
599
625
  }
600
626
 
601
627
  .fd-theme-toggle:hover {
@@ -771,7 +797,8 @@ code, kbd, pre, samp {
771
797
  margin: 0 0 16px;
772
798
  }
773
799
 
774
- .fd-page-body ul, .fd-page-body ol {
800
+ .fd-page-body ul,
801
+ .fd-page-body ol {
775
802
  margin: 0 0 16px;
776
803
  padding-left: 24px;
777
804
  }
@@ -904,7 +931,10 @@ html.dark pre.shiki {
904
931
  color: var(--color-fd-muted-foreground);
905
932
  cursor: pointer;
906
933
  opacity: 0;
907
- transition: opacity 0.15s, color 0.15s, background 0.15s;
934
+ transition:
935
+ opacity 0.15s,
936
+ color 0.15s,
937
+ background 0.15s;
908
938
  }
909
939
 
910
940
  .fd-codeblock:hover .fd-copy-btn {
@@ -949,7 +979,9 @@ html.dark pre.shiki {
949
979
  border: none;
950
980
  border-bottom: 2px solid transparent;
951
981
  cursor: pointer;
952
- transition: color 0.15s, border-color 0.15s;
982
+ transition:
983
+ color 0.15s,
984
+ border-color 0.15s;
953
985
  white-space: nowrap;
954
986
  }
955
987
 
@@ -1059,13 +1091,23 @@ html.dark pre.shiki {
1059
1091
  }
1060
1092
 
1061
1093
  @keyframes fd-fade-in {
1062
- from { opacity: 0; }
1063
- to { opacity: 1; }
1094
+ from {
1095
+ opacity: 0;
1096
+ }
1097
+ to {
1098
+ opacity: 1;
1099
+ }
1064
1100
  }
1065
1101
 
1066
1102
  @keyframes fd-slide-up {
1067
- from { opacity: 0; transform: translateY(8px) scale(0.98); }
1068
- to { opacity: 1; transform: translateY(0) scale(1); }
1103
+ from {
1104
+ opacity: 0;
1105
+ transform: translateY(8px) scale(0.98);
1106
+ }
1107
+ to {
1108
+ opacity: 1;
1109
+ transform: translateY(0) scale(1);
1110
+ }
1069
1111
  }
1070
1112
 
1071
1113
  /* ─── Callout / Admonition ──────────────────────────────────────────── */
@@ -1093,22 +1135,42 @@ html.dark pre.shiki {
1093
1135
  border-radius: 8px 0 0 8px;
1094
1136
  }
1095
1137
 
1096
- .fd-callout-note .fd-callout-indicator { background: hsl(221, 83%, 53%); }
1097
- .fd-callout-warning .fd-callout-indicator { background: hsl(38, 92%, 50%); }
1098
- .fd-callout-tip .fd-callout-indicator { background: hsl(142, 71%, 45%); }
1099
- .fd-callout-important .fd-callout-indicator { background: hsl(262, 83%, 58%); }
1100
- .fd-callout-caution .fd-callout-indicator { background: hsl(0, 72%, 51%); }
1138
+ .fd-callout-note .fd-callout-indicator {
1139
+ background: hsl(221, 83%, 53%);
1140
+ }
1141
+ .fd-callout-warning .fd-callout-indicator {
1142
+ background: hsl(38, 92%, 50%);
1143
+ }
1144
+ .fd-callout-tip .fd-callout-indicator {
1145
+ background: hsl(142, 71%, 45%);
1146
+ }
1147
+ .fd-callout-important .fd-callout-indicator {
1148
+ background: hsl(262, 83%, 58%);
1149
+ }
1150
+ .fd-callout-caution .fd-callout-indicator {
1151
+ background: hsl(0, 72%, 51%);
1152
+ }
1101
1153
 
1102
1154
  .fd-callout-icon {
1103
1155
  flex-shrink: 0;
1104
1156
  margin-top: 2px;
1105
1157
  }
1106
1158
 
1107
- .fd-callout-note .fd-callout-icon { color: hsl(221, 83%, 53%); }
1108
- .fd-callout-warning .fd-callout-icon { color: hsl(38, 92%, 50%); }
1109
- .fd-callout-tip .fd-callout-icon { color: hsl(142, 71%, 45%); }
1110
- .fd-callout-important .fd-callout-icon { color: hsl(262, 83%, 58%); }
1111
- .fd-callout-caution .fd-callout-icon { color: hsl(0, 72%, 51%); }
1159
+ .fd-callout-note .fd-callout-icon {
1160
+ color: hsl(221, 83%, 53%);
1161
+ }
1162
+ .fd-callout-warning .fd-callout-icon {
1163
+ color: hsl(38, 92%, 50%);
1164
+ }
1165
+ .fd-callout-tip .fd-callout-icon {
1166
+ color: hsl(142, 71%, 45%);
1167
+ }
1168
+ .fd-callout-important .fd-callout-icon {
1169
+ color: hsl(262, 83%, 58%);
1170
+ }
1171
+ .fd-callout-caution .fd-callout-icon {
1172
+ color: hsl(0, 72%, 51%);
1173
+ }
1112
1174
 
1113
1175
  .fd-callout-content {
1114
1176
  flex: 1;
@@ -1120,11 +1182,21 @@ html.dark pre.shiki {
1120
1182
  font-size: 13px;
1121
1183
  }
1122
1184
 
1123
- .fd-callout-note .fd-callout-title { color: hsl(221, 83%, 53%); }
1124
- .fd-callout-warning .fd-callout-title { color: hsl(38, 92%, 50%); }
1125
- .fd-callout-tip .fd-callout-title { color: hsl(142, 71%, 45%); }
1126
- .fd-callout-important .fd-callout-title { color: hsl(262, 83%, 58%); }
1127
- .fd-callout-caution .fd-callout-title { color: hsl(0, 72%, 51%); }
1185
+ .fd-callout-note .fd-callout-title {
1186
+ color: hsl(221, 83%, 53%);
1187
+ }
1188
+ .fd-callout-warning .fd-callout-title {
1189
+ color: hsl(38, 92%, 50%);
1190
+ }
1191
+ .fd-callout-tip .fd-callout-title {
1192
+ color: hsl(142, 71%, 45%);
1193
+ }
1194
+ .fd-callout-important .fd-callout-title {
1195
+ color: hsl(262, 83%, 58%);
1196
+ }
1197
+ .fd-callout-caution .fd-callout-title {
1198
+ color: hsl(0, 72%, 51%);
1199
+ }
1128
1200
 
1129
1201
  .fd-callout-content p:last-child {
1130
1202
  margin-bottom: 0;
@@ -1185,7 +1257,9 @@ html.dark pre.shiki {
1185
1257
  border-radius: 8px;
1186
1258
  text-decoration: none;
1187
1259
  color: var(--color-fd-foreground);
1188
- transition: background-color 0.15s, border-color 0.15s;
1260
+ transition:
1261
+ background-color 0.15s,
1262
+ border-color 0.15s;
1189
1263
  }
1190
1264
 
1191
1265
  .fd-page-nav-card:hover {
@@ -1233,28 +1307,58 @@ html.dark pre.shiki {
1233
1307
  * ═══════════════════════════════════════════════════════════════════════ */
1234
1308
 
1235
1309
  @keyframes fd-ai-dot {
1236
- 0%, 80%, 100% { transform: scale(0); opacity: 0.5; }
1237
- 40% { transform: scale(1); opacity: 1; }
1310
+ 0%,
1311
+ 80%,
1312
+ 100% {
1313
+ transform: scale(0);
1314
+ opacity: 0.5;
1315
+ }
1316
+ 40% {
1317
+ transform: scale(1);
1318
+ opacity: 1;
1319
+ }
1238
1320
  }
1239
1321
 
1240
1322
  @keyframes fd-ai-fade-in {
1241
- from { opacity: 0; }
1242
- to { opacity: 1; }
1323
+ from {
1324
+ opacity: 0;
1325
+ }
1326
+ to {
1327
+ opacity: 1;
1328
+ }
1243
1329
  }
1244
1330
 
1245
1331
  @keyframes fd-ai-slide-up {
1246
- from { opacity: 0; transform: translate(-50%, -48%) scale(0.96); }
1247
- to { opacity: 1; transform: translate(-50%, -50%) scale(1); }
1332
+ from {
1333
+ opacity: 0;
1334
+ transform: translate(-50%, -48%) scale(0.96);
1335
+ }
1336
+ to {
1337
+ opacity: 1;
1338
+ transform: translate(-50%, -50%) scale(1);
1339
+ }
1248
1340
  }
1249
1341
 
1250
1342
  @keyframes fd-ai-float-in {
1251
- from { opacity: 0; transform: translateY(12px) scale(0.95); }
1252
- to { opacity: 1; transform: translateY(0) scale(1); }
1343
+ from {
1344
+ opacity: 0;
1345
+ transform: translateY(12px) scale(0.95);
1346
+ }
1347
+ to {
1348
+ opacity: 1;
1349
+ transform: translateY(0) scale(1);
1350
+ }
1253
1351
  }
1254
1352
 
1255
1353
  @keyframes fd-ai-float-center-in {
1256
- from { opacity: 0; transform: translate(-50%, -48%) scale(0.96); }
1257
- to { opacity: 1; transform: translate(-50%, -50%) scale(1); }
1354
+ from {
1355
+ opacity: 0;
1356
+ transform: translate(-50%, -48%) scale(0.96);
1357
+ }
1358
+ to {
1359
+ opacity: 1;
1360
+ transform: translate(-50%, -50%) scale(1);
1361
+ }
1258
1362
  }
1259
1363
 
1260
1364
  .fd-ai-overlay {
@@ -1303,7 +1407,10 @@ html.dark pre.shiki {
1303
1407
  border: none;
1304
1408
  border-bottom: 2px solid transparent;
1305
1409
  cursor: pointer;
1306
- transition: color 150ms, border-color 150ms, background-color 150ms;
1410
+ transition:
1411
+ color 150ms,
1412
+ border-color 150ms,
1413
+ background-color 150ms;
1307
1414
  background: transparent;
1308
1415
  color: var(--color-fd-muted-foreground);
1309
1416
  font-family: inherit;
@@ -1425,7 +1532,9 @@ html.dark pre.shiki {
1425
1532
  text-align: left;
1426
1533
  font-size: 14px;
1427
1534
  font-family: inherit;
1428
- transition: background 100ms, color 100ms;
1535
+ transition:
1536
+ background 100ms,
1537
+ color 100ms;
1429
1538
  color: var(--color-fd-foreground);
1430
1539
  background: transparent;
1431
1540
  color: var(--color-fd-foreground);
@@ -1638,8 +1747,12 @@ html.dark pre.shiki {
1638
1747
  animation: fd-ai-dot 1.4s infinite ease-in-out both;
1639
1748
  }
1640
1749
 
1641
- .fd-ai-loading-dot:nth-child(2) { animation-delay: 0.16s; }
1642
- .fd-ai-loading-dot:nth-child(3) { animation-delay: 0.32s; }
1750
+ .fd-ai-loading-dot:nth-child(2) {
1751
+ animation-delay: 0.16s;
1752
+ }
1753
+ .fd-ai-loading-dot:nth-child(3) {
1754
+ animation-delay: 0.32s;
1755
+ }
1643
1756
 
1644
1757
  /* ─── Markdown in AI responses ───────────────────────────────── */
1645
1758
 
@@ -1738,7 +1851,11 @@ html.dark pre.shiki {
1738
1851
 
1739
1852
  .fd-ai-code-copy:hover {
1740
1853
  color: var(--color-fd-foreground, #e4e4e7);
1741
- background: color-mix(in srgb, var(--color-fd-accent, rgba(255,255,255,0.05)) 60%, transparent);
1854
+ background: color-mix(
1855
+ in srgb,
1856
+ var(--color-fd-accent, rgba(255, 255, 255, 0.05)) 60%,
1857
+ transparent
1858
+ );
1742
1859
  }
1743
1860
 
1744
1861
  .fd-ai-code-block pre {
@@ -1759,7 +1876,10 @@ html.dark pre.shiki {
1759
1876
  border-radius: 0;
1760
1877
  }
1761
1878
 
1762
- .fd-ai-code-block .sh__line { display: block; min-height: 1.2em; }
1879
+ .fd-ai-code-block .sh__line {
1880
+ display: block;
1881
+ min-height: 1.2em;
1882
+ }
1763
1883
 
1764
1884
  /* ═══════════════════════════════════════════════════════════════
1765
1885
  Default theme AI overrides — rounded, soft, indigo
@@ -1768,7 +1888,9 @@ html.dark pre.shiki {
1768
1888
 
1769
1889
  .fd-ai-dialog {
1770
1890
  border-radius: 12px;
1771
- box-shadow: 0 20px 60px rgba(99, 102, 241, 0.08), 0 8px 24px rgba(0, 0, 0, 0.12);
1891
+ box-shadow:
1892
+ 0 20px 60px rgba(99, 102, 241, 0.08),
1893
+ 0 8px 24px rgba(0, 0, 0, 0.12);
1772
1894
  }
1773
1895
 
1774
1896
  .fd-ai-bubble-user {
@@ -1851,7 +1973,10 @@ html.dark pre.shiki {
1851
1973
  cursor: pointer;
1852
1974
  font-size: 14px;
1853
1975
  box-shadow: 0 1px 3px color-mix(in srgb, var(--color-fd-background, #000) 20%, transparent);
1854
- transition: transform 150ms, background 150ms, color 150ms;
1976
+ transition:
1977
+ transform 150ms,
1978
+ background 150ms,
1979
+ color 150ms;
1855
1980
  animation: fd-ai-fade-in 300ms ease-out;
1856
1981
  }
1857
1982
 
@@ -1927,8 +2052,20 @@ html.dark pre.shiki {
1927
2052
  overflow-y: auto;
1928
2053
  width: min(800px, 100%);
1929
2054
  padding: 24px 0 120px;
1930
- mask-image: linear-gradient(to bottom, transparent, white 3rem, white calc(100% - 8rem), transparent 100%);
1931
- -webkit-mask-image: linear-gradient(to bottom, transparent, white 3rem, white calc(100% - 8rem), transparent 100%);
2055
+ mask-image: linear-gradient(
2056
+ to bottom,
2057
+ transparent,
2058
+ white 3rem,
2059
+ white calc(100% - 8rem),
2060
+ transparent 100%
2061
+ );
2062
+ -webkit-mask-image: linear-gradient(
2063
+ to bottom,
2064
+ transparent,
2065
+ white 3rem,
2066
+ white calc(100% - 8rem),
2067
+ transparent 100%
2068
+ );
1932
2069
  }
1933
2070
 
1934
2071
  .fd-ai-fm-messages-inner {
@@ -2022,12 +2159,24 @@ html.dark pre.shiki {
2022
2159
  animation: fd-ai-fm-bounce 1s infinite ease-in-out;
2023
2160
  }
2024
2161
 
2025
- .fd-ai-fm-thinking-dot:nth-child(2) { animation-delay: 150ms; }
2026
- .fd-ai-fm-thinking-dot:nth-child(3) { animation-delay: 300ms; }
2162
+ .fd-ai-fm-thinking-dot:nth-child(2) {
2163
+ animation-delay: 150ms;
2164
+ }
2165
+ .fd-ai-fm-thinking-dot:nth-child(3) {
2166
+ animation-delay: 300ms;
2167
+ }
2027
2168
 
2028
2169
  @keyframes fd-ai-fm-bounce {
2029
- 0%, 80%, 100% { transform: scale(0.6); opacity: 0.4; }
2030
- 40% { transform: scale(1); opacity: 1; }
2170
+ 0%,
2171
+ 80%,
2172
+ 100% {
2173
+ transform: scale(0.6);
2174
+ opacity: 0.4;
2175
+ }
2176
+ 40% {
2177
+ transform: scale(1);
2178
+ opacity: 1;
2179
+ }
2031
2180
  }
2032
2181
 
2033
2182
  /* ─── Bottom input bar ───────────────────────────────────────── */
@@ -2035,9 +2184,10 @@ html.dark pre.shiki {
2035
2184
  .fd-ai-fm-input-bar {
2036
2185
  position: fixed;
2037
2186
  z-index: 9999;
2038
- transition: width 300ms cubic-bezier(0.34, 1.56, 0.64, 1),
2039
- height 300ms cubic-bezier(0.34, 1.56, 0.64, 1),
2040
- transform 200ms ease-out;
2187
+ transition:
2188
+ width 300ms cubic-bezier(0.34, 1.56, 0.64, 1),
2189
+ height 300ms cubic-bezier(0.34, 1.56, 0.64, 1),
2190
+ transform 200ms ease-out;
2041
2191
  }
2042
2192
 
2043
2193
  .fd-ai-fm-input-bar--closed {
@@ -2125,8 +2275,20 @@ html.dark pre.shiki {
2125
2275
  gap: 8px;
2126
2276
  overflow-x: auto;
2127
2277
  padding-bottom: 4px;
2128
- mask-image: linear-gradient(to right, transparent 0%, black 1rem, black calc(100% - 1rem), transparent 100%);
2129
- -webkit-mask-image: linear-gradient(to right, transparent 0%, black 1rem, black calc(100% - 1rem), transparent 100%);
2278
+ mask-image: linear-gradient(
2279
+ to right,
2280
+ transparent 0%,
2281
+ black 1rem,
2282
+ black calc(100% - 1rem),
2283
+ transparent 100%
2284
+ );
2285
+ -webkit-mask-image: linear-gradient(
2286
+ to right,
2287
+ transparent 0%,
2288
+ black 1rem,
2289
+ black calc(100% - 1rem),
2290
+ transparent 100%
2291
+ );
2130
2292
  }
2131
2293
 
2132
2294
  .fd-ai-fm-suggestion {
@@ -2136,15 +2298,16 @@ html.dark pre.shiki {
2136
2298
  font-size: 12px;
2137
2299
  font-family: inherit;
2138
2300
  border-radius: 9999px;
2139
- border: 1px solid color-mix(in srgb, var(--color-fd-border, rgba(255,255,255,0.1)) 50%, transparent);
2140
- background: color-mix(in srgb, var(--color-fd-muted, rgba(255,255,255,0.04)) 30%, transparent);
2301
+ border: 1px solid
2302
+ color-mix(in srgb, var(--color-fd-border, rgba(255, 255, 255, 0.1)) 50%, transparent);
2303
+ background: color-mix(in srgb, var(--color-fd-muted, rgba(255, 255, 255, 0.04)) 30%, transparent);
2141
2304
  color: var(--color-fd-muted-foreground, #71717a);
2142
2305
  cursor: pointer;
2143
2306
  transition: all 200ms;
2144
2307
  }
2145
2308
 
2146
2309
  .fd-ai-fm-suggestion:hover {
2147
- background: color-mix(in srgb, var(--color-fd-muted, rgba(255,255,255,0.04)) 50%, transparent);
2310
+ background: color-mix(in srgb, var(--color-fd-muted, rgba(255, 255, 255, 0.04)) 50%, transparent);
2148
2311
  color: var(--color-fd-foreground, #e4e4e7);
2149
2312
  border-color: var(--color-fd-border, rgba(255, 255, 255, 0.1));
2150
2313
  }
@@ -2157,7 +2320,11 @@ html.dark pre.shiki {
2157
2320
  gap: 4px;
2158
2321
  padding: 8px 16px;
2159
2322
  border-top: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.06));
2160
- background: color-mix(in srgb, var(--color-fd-accent, rgba(255,255,255,0.03)) 40%, transparent);
2323
+ background: color-mix(
2324
+ in srgb,
2325
+ var(--color-fd-accent, rgba(255, 255, 255, 0.03)) 40%,
2326
+ transparent
2327
+ );
2161
2328
  font-size: 12px;
2162
2329
  color: var(--color-fd-muted-foreground, #71717a);
2163
2330
  }
@@ -2207,7 +2374,10 @@ html.dark pre.shiki {
2207
2374
  font-size: 14px;
2208
2375
  cursor: pointer;
2209
2376
  box-shadow: 0 1px 3px color-mix(in srgb, var(--color-fd-background, #000) 20%, transparent);
2210
- transition: transform 150ms, background 150ms, color 150ms;
2377
+ transition:
2378
+ transform 150ms,
2379
+ background 150ms,
2380
+ color 150ms;
2211
2381
  animation: fd-ai-fade-in 300ms ease-out;
2212
2382
  white-space: nowrap;
2213
2383
  }
@@ -81,7 +81,7 @@
81
81
  }
82
82
 
83
83
  .fd-sidebar-folder-content::before {
84
- content: '';
84
+ content: "";
85
85
  position: absolute;
86
86
  left: 4px;
87
87
  top: 4px;
@@ -100,7 +100,7 @@
100
100
  border-bottom: 1px solid var(--color-fd-border);
101
101
  }
102
102
  .fd-sidebar-folder-content::before {
103
- content: '';
103
+ content: "";
104
104
  position: absolute;
105
105
  left: -4px;
106
106
  top: 3px;
@@ -213,7 +213,7 @@
213
213
 
214
214
  /* Active indicator bar for child links */
215
215
  .fd-sidebar-folder-content .fd-sidebar-link-active::before {
216
- content: '';
216
+ content: "";
217
217
  position: absolute;
218
218
  left: -16px;
219
219
  top: 25%;
@@ -246,7 +246,6 @@
246
246
  border-top: 1px solid var(--color-fd-border) !important;
247
247
  border-bottom: 1px solid var(--color-fd-border) !important;
248
248
  border-radius: 0 !important;
249
-
250
249
  }
251
250
 
252
251
  .fd-sidebar-search {