@farming-labs/svelte-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,37 @@
1
1
  {
2
2
  "name": "@farming-labs/svelte-theme",
3
- "version": "0.0.2-beta.21",
3
+ "version": "0.0.2-beta.22",
4
4
  "description": "Svelte UI components for @farming-labs/docs — layout, sidebar, TOC, search, and theme toggle",
5
+ "keywords": [
6
+ "docs",
7
+ "documentation",
8
+ "svelte",
9
+ "sveltekit",
10
+ "theme"
11
+ ],
12
+ "license": "MIT",
13
+ "author": "Farming Labs",
14
+ "files": [
15
+ "src",
16
+ "styles"
17
+ ],
5
18
  "type": "module",
19
+ "typesVersions": {
20
+ "*": {
21
+ "pixel-border": [
22
+ "./src/themes/pixel-border.d.ts"
23
+ ],
24
+ "darksharp": [
25
+ "./src/themes/darksharp.d.ts"
26
+ ],
27
+ "fumadocs": [
28
+ "./src/themes/default.d.ts"
29
+ ],
30
+ ".": [
31
+ "./src/index.d.ts"
32
+ ]
33
+ }
34
+ },
6
35
  "svelte": "./src/index.js",
7
36
  "exports": {
8
37
  ".": {
@@ -40,40 +69,11 @@
40
69
  "./styles/colorful.css": "./styles/colorful.css",
41
70
  "./colorful/css": "./styles/colorful-bundle.css"
42
71
  },
43
- "typesVersions": {
44
- "*": {
45
- "pixel-border": [
46
- "./src/themes/pixel-border.d.ts"
47
- ],
48
- "darksharp": [
49
- "./src/themes/darksharp.d.ts"
50
- ],
51
- "fumadocs": [
52
- "./src/themes/default.d.ts"
53
- ],
54
- ".": [
55
- "./src/index.d.ts"
56
- ]
57
- }
58
- },
59
- "files": [
60
- "src",
61
- "styles"
62
- ],
63
- "keywords": [
64
- "docs",
65
- "svelte",
66
- "sveltekit",
67
- "theme",
68
- "documentation"
69
- ],
70
- "author": "Farming Labs",
71
- "license": "MIT",
72
72
  "dependencies": {
73
73
  "gray-matter": "^4.0.3",
74
74
  "sugar-high": "^0.9.5",
75
- "@farming-labs/docs": "0.0.2-beta.21",
76
- "@farming-labs/svelte": "0.0.2-beta.21"
75
+ "@farming-labs/docs": "0.0.2-beta.22",
76
+ "@farming-labs/svelte": "0.0.2-beta.22"
77
77
  },
78
78
  "peerDependencies": {
79
79
  "svelte": ">=5.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 {
@@ -2017,12 +2154,24 @@ html.dark pre.shiki {
2017
2154
  animation: fd-ai-fm-bounce 1s infinite ease-in-out;
2018
2155
  }
2019
2156
 
2020
- .fd-ai-fm-thinking-dot:nth-child(2) { animation-delay: 150ms; }
2021
- .fd-ai-fm-thinking-dot:nth-child(3) { animation-delay: 300ms; }
2157
+ .fd-ai-fm-thinking-dot:nth-child(2) {
2158
+ animation-delay: 150ms;
2159
+ }
2160
+ .fd-ai-fm-thinking-dot:nth-child(3) {
2161
+ animation-delay: 300ms;
2162
+ }
2022
2163
 
2023
2164
  @keyframes fd-ai-fm-bounce {
2024
- 0%, 80%, 100% { transform: scale(0.6); opacity: 0.4; }
2025
- 40% { transform: scale(1); opacity: 1; }
2165
+ 0%,
2166
+ 80%,
2167
+ 100% {
2168
+ transform: scale(0.6);
2169
+ opacity: 0.4;
2170
+ }
2171
+ 40% {
2172
+ transform: scale(1);
2173
+ opacity: 1;
2174
+ }
2026
2175
  }
2027
2176
 
2028
2177
  /* ─── Bottom input bar ───────────────────────────────────────── */
@@ -2030,9 +2179,10 @@ html.dark pre.shiki {
2030
2179
  .fd-ai-fm-input-bar {
2031
2180
  position: fixed;
2032
2181
  z-index: 9999;
2033
- transition: width 300ms cubic-bezier(0.34, 1.56, 0.64, 1),
2034
- height 300ms cubic-bezier(0.34, 1.56, 0.64, 1),
2035
- transform 200ms ease-out;
2182
+ transition:
2183
+ width 300ms cubic-bezier(0.34, 1.56, 0.64, 1),
2184
+ height 300ms cubic-bezier(0.34, 1.56, 0.64, 1),
2185
+ transform 200ms ease-out;
2036
2186
  }
2037
2187
 
2038
2188
  .fd-ai-fm-input-bar--closed {
@@ -2120,8 +2270,20 @@ html.dark pre.shiki {
2120
2270
  gap: 8px;
2121
2271
  overflow-x: auto;
2122
2272
  padding-bottom: 4px;
2123
- mask-image: linear-gradient(to right, transparent 0%, black 1rem, black calc(100% - 1rem), transparent 100%);
2124
- -webkit-mask-image: linear-gradient(to right, transparent 0%, black 1rem, black calc(100% - 1rem), transparent 100%);
2273
+ mask-image: linear-gradient(
2274
+ to right,
2275
+ transparent 0%,
2276
+ black 1rem,
2277
+ black calc(100% - 1rem),
2278
+ transparent 100%
2279
+ );
2280
+ -webkit-mask-image: linear-gradient(
2281
+ to right,
2282
+ transparent 0%,
2283
+ black 1rem,
2284
+ black calc(100% - 1rem),
2285
+ transparent 100%
2286
+ );
2125
2287
  }
2126
2288
 
2127
2289
  .fd-ai-fm-suggestion {
@@ -2131,15 +2293,16 @@ html.dark pre.shiki {
2131
2293
  font-size: 12px;
2132
2294
  font-family: inherit;
2133
2295
  border-radius: 9999px;
2134
- border: 1px solid color-mix(in srgb, var(--color-fd-border, rgba(255,255,255,0.1)) 50%, transparent);
2135
- background: color-mix(in srgb, var(--color-fd-muted, rgba(255,255,255,0.04)) 30%, transparent);
2296
+ border: 1px solid
2297
+ color-mix(in srgb, var(--color-fd-border, rgba(255, 255, 255, 0.1)) 50%, transparent);
2298
+ background: color-mix(in srgb, var(--color-fd-muted, rgba(255, 255, 255, 0.04)) 30%, transparent);
2136
2299
  color: var(--color-fd-muted-foreground, #71717a);
2137
2300
  cursor: pointer;
2138
2301
  transition: all 200ms;
2139
2302
  }
2140
2303
 
2141
2304
  .fd-ai-fm-suggestion:hover {
2142
- background: color-mix(in srgb, var(--color-fd-muted, rgba(255,255,255,0.04)) 50%, transparent);
2305
+ background: color-mix(in srgb, var(--color-fd-muted, rgba(255, 255, 255, 0.04)) 50%, transparent);
2143
2306
  color: var(--color-fd-foreground, #e4e4e7);
2144
2307
  border-color: var(--color-fd-border, rgba(255, 255, 255, 0.1));
2145
2308
  }
@@ -2152,7 +2315,11 @@ html.dark pre.shiki {
2152
2315
  gap: 4px;
2153
2316
  padding: 8px 16px;
2154
2317
  border-top: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.06));
2155
- background: color-mix(in srgb, var(--color-fd-accent, rgba(255,255,255,0.03)) 40%, transparent);
2318
+ background: color-mix(
2319
+ in srgb,
2320
+ var(--color-fd-accent, rgba(255, 255, 255, 0.03)) 40%,
2321
+ transparent
2322
+ );
2156
2323
  font-size: 12px;
2157
2324
  color: var(--color-fd-muted-foreground, #71717a);
2158
2325
  }
@@ -2202,7 +2369,10 @@ html.dark pre.shiki {
2202
2369
  font-size: 14px;
2203
2370
  cursor: pointer;
2204
2371
  box-shadow: 0 1px 3px color-mix(in srgb, var(--color-fd-background, #000) 20%, transparent);
2205
- transition: transform 150ms, background 150ms, color 150ms;
2372
+ transition:
2373
+ transform 150ms,
2374
+ background 150ms,
2375
+ color 150ms;
2206
2376
  animation: fd-ai-fade-in 300ms ease-out;
2207
2377
  white-space: nowrap;
2208
2378
  }
@@ -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 {