@farming-labs/astro-theme 0.0.2-beta.21 → 0.0.2-beta.23
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 +31 -31
- package/src/components/DocsContent.astro +8 -0
- package/src/components/DocsPage.astro +8 -1
- package/src/lib/renderMarkdown.js +21 -11
- package/src/themes/colorful.d.ts +3 -1
- package/styles/colorful.css +3 -1
- package/styles/docs.css +262 -69
- package/styles/pixel-border.css +3 -4
package/package.json
CHANGED
|
@@ -1,8 +1,36 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@farming-labs/astro-theme",
|
|
3
|
-
"version": "0.0.2-beta.
|
|
3
|
+
"version": "0.0.2-beta.23",
|
|
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.
|
|
73
|
-
"@farming-labs/astro": "0.0.2-beta.
|
|
72
|
+
"@farming-labs/docs": "0.0.2-beta.23",
|
|
73
|
+
"@farming-labs/astro": "0.0.2-beta.23"
|
|
74
74
|
},
|
|
75
75
|
"peerDependencies": {
|
|
76
76
|
"astro": ">=4.0.0"
|
|
@@ -20,6 +20,13 @@ const breadcrumbEnabled = (() => {
|
|
|
20
20
|
|
|
21
21
|
const showEditOnGithub = !!config?.github && !!data.editOnGithub;
|
|
22
22
|
const showLastModified = !!data.lastModified;
|
|
23
|
+
|
|
24
|
+
const llmsTxtEnabled = (() => {
|
|
25
|
+
const cfg = config?.llmsTxt;
|
|
26
|
+
if (cfg === true) return true;
|
|
27
|
+
if (typeof cfg === "object" && cfg !== null) return cfg.enabled !== false;
|
|
28
|
+
return false;
|
|
29
|
+
})();
|
|
23
30
|
---
|
|
24
31
|
|
|
25
32
|
<head>
|
|
@@ -36,6 +43,7 @@ const showLastModified = !!data.lastModified;
|
|
|
36
43
|
nextPage={data.nextPage}
|
|
37
44
|
editOnGithub={showEditOnGithub ? data.editOnGithub : null}
|
|
38
45
|
lastModified={showLastModified ? data.lastModified : null}
|
|
46
|
+
llmsTxtEnabled={llmsTxtEnabled}
|
|
39
47
|
>
|
|
40
48
|
{data.description && <p class="fd-page-description">{data.description}</p>}
|
|
41
49
|
<Fragment set:html={data.html} />
|
|
@@ -8,6 +8,7 @@ const {
|
|
|
8
8
|
nextPage = null,
|
|
9
9
|
editOnGithub = null,
|
|
10
10
|
lastModified = null,
|
|
11
|
+
llmsTxtEnabled = false,
|
|
11
12
|
} = Astro.props;
|
|
12
13
|
|
|
13
14
|
const pathname = Astro.url.pathname;
|
|
@@ -38,7 +39,7 @@ const parentUrl = segments.length >= 2
|
|
|
38
39
|
</div>
|
|
39
40
|
|
|
40
41
|
<footer class="fd-page-footer">
|
|
41
|
-
{(editOnGithub || lastModified) && (
|
|
42
|
+
{(editOnGithub || lastModified || llmsTxtEnabled) && (
|
|
42
43
|
<div class="fd-edit-on-github">
|
|
43
44
|
{editOnGithub && (
|
|
44
45
|
<a href={editOnGithub} target="_blank" rel="noopener noreferrer">
|
|
@@ -49,6 +50,12 @@ const parentUrl = segments.length >= 2
|
|
|
49
50
|
Edit on GitHub
|
|
50
51
|
</a>
|
|
51
52
|
)}
|
|
53
|
+
{llmsTxtEnabled && (
|
|
54
|
+
<span class="fd-llms-txt-links">
|
|
55
|
+
<a href="/api/docs?format=llms" target="_blank" rel="noopener noreferrer" class="fd-llms-txt-link">llms.txt</a>
|
|
56
|
+
<a href="/api/docs?format=llms-full" target="_blank" rel="noopener noreferrer" class="fd-llms-txt-link">llms-full.txt</a>
|
|
57
|
+
</span>
|
|
58
|
+
)}
|
|
52
59
|
{lastModified && (
|
|
53
60
|
<span class="fd-last-modified">Last updated: {lastModified}</span>
|
|
54
61
|
)}
|
|
@@ -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
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
+
|
|
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
|
|
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
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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
|
}
|
package/src/themes/colorful.d.ts
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
export declare const colorful: (overrides?: {
|
|
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>;
|
package/styles/colorful.css
CHANGED
|
@@ -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:
|
|
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
|
-
*,
|
|
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,
|
|
80
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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,
|
|
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:
|
|
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:
|
|
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 {
|
|
1063
|
-
|
|
1094
|
+
from {
|
|
1095
|
+
opacity: 0;
|
|
1096
|
+
}
|
|
1097
|
+
to {
|
|
1098
|
+
opacity: 1;
|
|
1099
|
+
}
|
|
1064
1100
|
}
|
|
1065
1101
|
|
|
1066
1102
|
@keyframes fd-slide-up {
|
|
1067
|
-
from {
|
|
1068
|
-
|
|
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 {
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
.fd-callout-
|
|
1100
|
-
|
|
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 {
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
.fd-callout-
|
|
1111
|
-
|
|
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 {
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
.fd-callout-
|
|
1127
|
-
|
|
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;
|
|
@@ -1165,6 +1237,29 @@ html.dark pre.shiki {
|
|
|
1165
1237
|
font-size: 12px;
|
|
1166
1238
|
}
|
|
1167
1239
|
|
|
1240
|
+
.fd-llms-txt-links {
|
|
1241
|
+
display: inline-flex;
|
|
1242
|
+
align-items: center;
|
|
1243
|
+
gap: 0.5rem;
|
|
1244
|
+
}
|
|
1245
|
+
|
|
1246
|
+
.fd-llms-txt-link {
|
|
1247
|
+
color: var(--color-fd-muted-foreground);
|
|
1248
|
+
font-size: 0.75rem;
|
|
1249
|
+
font-family: var(--fd-font-mono, ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace);
|
|
1250
|
+
text-decoration: none;
|
|
1251
|
+
padding: 0.125rem 0.375rem;
|
|
1252
|
+
border-radius: 0.25rem;
|
|
1253
|
+
border: 1px solid var(--color-fd-border, hsl(0 0% 80% / 50%));
|
|
1254
|
+
transition: color 150ms, border-color 150ms;
|
|
1255
|
+
}
|
|
1256
|
+
|
|
1257
|
+
.fd-llms-txt-link:hover {
|
|
1258
|
+
color: var(--color-fd-foreground);
|
|
1259
|
+
border-color: var(--color-fd-foreground);
|
|
1260
|
+
text-decoration: none;
|
|
1261
|
+
}
|
|
1262
|
+
|
|
1168
1263
|
/* ─── Previous / Next Navigation ────────────────────────────────────── */
|
|
1169
1264
|
|
|
1170
1265
|
.fd-page-nav {
|
|
@@ -1185,7 +1280,9 @@ html.dark pre.shiki {
|
|
|
1185
1280
|
border-radius: 8px;
|
|
1186
1281
|
text-decoration: none;
|
|
1187
1282
|
color: var(--color-fd-foreground);
|
|
1188
|
-
transition:
|
|
1283
|
+
transition:
|
|
1284
|
+
background-color 0.15s,
|
|
1285
|
+
border-color 0.15s;
|
|
1189
1286
|
}
|
|
1190
1287
|
|
|
1191
1288
|
.fd-page-nav-card:hover {
|
|
@@ -1233,28 +1330,58 @@ html.dark pre.shiki {
|
|
|
1233
1330
|
* ═══════════════════════════════════════════════════════════════════════ */
|
|
1234
1331
|
|
|
1235
1332
|
@keyframes fd-ai-dot {
|
|
1236
|
-
0%,
|
|
1237
|
-
|
|
1333
|
+
0%,
|
|
1334
|
+
80%,
|
|
1335
|
+
100% {
|
|
1336
|
+
transform: scale(0);
|
|
1337
|
+
opacity: 0.5;
|
|
1338
|
+
}
|
|
1339
|
+
40% {
|
|
1340
|
+
transform: scale(1);
|
|
1341
|
+
opacity: 1;
|
|
1342
|
+
}
|
|
1238
1343
|
}
|
|
1239
1344
|
|
|
1240
1345
|
@keyframes fd-ai-fade-in {
|
|
1241
|
-
from {
|
|
1242
|
-
|
|
1346
|
+
from {
|
|
1347
|
+
opacity: 0;
|
|
1348
|
+
}
|
|
1349
|
+
to {
|
|
1350
|
+
opacity: 1;
|
|
1351
|
+
}
|
|
1243
1352
|
}
|
|
1244
1353
|
|
|
1245
1354
|
@keyframes fd-ai-slide-up {
|
|
1246
|
-
from {
|
|
1247
|
-
|
|
1355
|
+
from {
|
|
1356
|
+
opacity: 0;
|
|
1357
|
+
transform: translate(-50%, -48%) scale(0.96);
|
|
1358
|
+
}
|
|
1359
|
+
to {
|
|
1360
|
+
opacity: 1;
|
|
1361
|
+
transform: translate(-50%, -50%) scale(1);
|
|
1362
|
+
}
|
|
1248
1363
|
}
|
|
1249
1364
|
|
|
1250
1365
|
@keyframes fd-ai-float-in {
|
|
1251
|
-
from {
|
|
1252
|
-
|
|
1366
|
+
from {
|
|
1367
|
+
opacity: 0;
|
|
1368
|
+
transform: translateY(12px) scale(0.95);
|
|
1369
|
+
}
|
|
1370
|
+
to {
|
|
1371
|
+
opacity: 1;
|
|
1372
|
+
transform: translateY(0) scale(1);
|
|
1373
|
+
}
|
|
1253
1374
|
}
|
|
1254
1375
|
|
|
1255
1376
|
@keyframes fd-ai-float-center-in {
|
|
1256
|
-
from {
|
|
1257
|
-
|
|
1377
|
+
from {
|
|
1378
|
+
opacity: 0;
|
|
1379
|
+
transform: translate(-50%, -48%) scale(0.96);
|
|
1380
|
+
}
|
|
1381
|
+
to {
|
|
1382
|
+
opacity: 1;
|
|
1383
|
+
transform: translate(-50%, -50%) scale(1);
|
|
1384
|
+
}
|
|
1258
1385
|
}
|
|
1259
1386
|
|
|
1260
1387
|
.fd-ai-overlay {
|
|
@@ -1303,7 +1430,10 @@ html.dark pre.shiki {
|
|
|
1303
1430
|
border: none;
|
|
1304
1431
|
border-bottom: 2px solid transparent;
|
|
1305
1432
|
cursor: pointer;
|
|
1306
|
-
transition:
|
|
1433
|
+
transition:
|
|
1434
|
+
color 150ms,
|
|
1435
|
+
border-color 150ms,
|
|
1436
|
+
background-color 150ms;
|
|
1307
1437
|
background: transparent;
|
|
1308
1438
|
color: var(--color-fd-muted-foreground);
|
|
1309
1439
|
font-family: inherit;
|
|
@@ -1425,7 +1555,9 @@ html.dark pre.shiki {
|
|
|
1425
1555
|
text-align: left;
|
|
1426
1556
|
font-size: 14px;
|
|
1427
1557
|
font-family: inherit;
|
|
1428
|
-
transition:
|
|
1558
|
+
transition:
|
|
1559
|
+
background 100ms,
|
|
1560
|
+
color 100ms;
|
|
1429
1561
|
color: var(--color-fd-foreground);
|
|
1430
1562
|
background: transparent;
|
|
1431
1563
|
color: var(--color-fd-foreground);
|
|
@@ -1638,8 +1770,12 @@ html.dark pre.shiki {
|
|
|
1638
1770
|
animation: fd-ai-dot 1.4s infinite ease-in-out both;
|
|
1639
1771
|
}
|
|
1640
1772
|
|
|
1641
|
-
.fd-ai-loading-dot:nth-child(2) {
|
|
1642
|
-
|
|
1773
|
+
.fd-ai-loading-dot:nth-child(2) {
|
|
1774
|
+
animation-delay: 0.16s;
|
|
1775
|
+
}
|
|
1776
|
+
.fd-ai-loading-dot:nth-child(3) {
|
|
1777
|
+
animation-delay: 0.32s;
|
|
1778
|
+
}
|
|
1643
1779
|
|
|
1644
1780
|
/* ─── Markdown in AI responses ───────────────────────────────── */
|
|
1645
1781
|
|
|
@@ -1738,7 +1874,11 @@ html.dark pre.shiki {
|
|
|
1738
1874
|
|
|
1739
1875
|
.fd-ai-code-copy:hover {
|
|
1740
1876
|
color: var(--color-fd-foreground, #e4e4e7);
|
|
1741
|
-
background: color-mix(
|
|
1877
|
+
background: color-mix(
|
|
1878
|
+
in srgb,
|
|
1879
|
+
var(--color-fd-accent, rgba(255, 255, 255, 0.05)) 60%,
|
|
1880
|
+
transparent
|
|
1881
|
+
);
|
|
1742
1882
|
}
|
|
1743
1883
|
|
|
1744
1884
|
.fd-ai-code-block pre {
|
|
@@ -1759,7 +1899,10 @@ html.dark pre.shiki {
|
|
|
1759
1899
|
border-radius: 0;
|
|
1760
1900
|
}
|
|
1761
1901
|
|
|
1762
|
-
.fd-ai-code-block .sh__line {
|
|
1902
|
+
.fd-ai-code-block .sh__line {
|
|
1903
|
+
display: block;
|
|
1904
|
+
min-height: 1.2em;
|
|
1905
|
+
}
|
|
1763
1906
|
|
|
1764
1907
|
/* ═══════════════════════════════════════════════════════════════
|
|
1765
1908
|
Default theme AI overrides — rounded, soft, indigo
|
|
@@ -1768,7 +1911,9 @@ html.dark pre.shiki {
|
|
|
1768
1911
|
|
|
1769
1912
|
.fd-ai-dialog {
|
|
1770
1913
|
border-radius: 12px;
|
|
1771
|
-
box-shadow:
|
|
1914
|
+
box-shadow:
|
|
1915
|
+
0 20px 60px rgba(99, 102, 241, 0.08),
|
|
1916
|
+
0 8px 24px rgba(0, 0, 0, 0.12);
|
|
1772
1917
|
}
|
|
1773
1918
|
|
|
1774
1919
|
.fd-ai-bubble-user {
|
|
@@ -1851,7 +1996,10 @@ html.dark pre.shiki {
|
|
|
1851
1996
|
cursor: pointer;
|
|
1852
1997
|
font-size: 14px;
|
|
1853
1998
|
box-shadow: 0 1px 3px color-mix(in srgb, var(--color-fd-background, #000) 20%, transparent);
|
|
1854
|
-
transition:
|
|
1999
|
+
transition:
|
|
2000
|
+
transform 150ms,
|
|
2001
|
+
background 150ms,
|
|
2002
|
+
color 150ms;
|
|
1855
2003
|
animation: fd-ai-fade-in 300ms ease-out;
|
|
1856
2004
|
}
|
|
1857
2005
|
|
|
@@ -1927,8 +2075,20 @@ html.dark pre.shiki {
|
|
|
1927
2075
|
overflow-y: auto;
|
|
1928
2076
|
width: min(800px, 100%);
|
|
1929
2077
|
padding: 24px 0 120px;
|
|
1930
|
-
mask-image: linear-gradient(
|
|
1931
|
-
|
|
2078
|
+
mask-image: linear-gradient(
|
|
2079
|
+
to bottom,
|
|
2080
|
+
transparent,
|
|
2081
|
+
white 3rem,
|
|
2082
|
+
white calc(100% - 8rem),
|
|
2083
|
+
transparent 100%
|
|
2084
|
+
);
|
|
2085
|
+
-webkit-mask-image: linear-gradient(
|
|
2086
|
+
to bottom,
|
|
2087
|
+
transparent,
|
|
2088
|
+
white 3rem,
|
|
2089
|
+
white calc(100% - 8rem),
|
|
2090
|
+
transparent 100%
|
|
2091
|
+
);
|
|
1932
2092
|
}
|
|
1933
2093
|
|
|
1934
2094
|
.fd-ai-fm-messages-inner {
|
|
@@ -2022,12 +2182,24 @@ html.dark pre.shiki {
|
|
|
2022
2182
|
animation: fd-ai-fm-bounce 1s infinite ease-in-out;
|
|
2023
2183
|
}
|
|
2024
2184
|
|
|
2025
|
-
.fd-ai-fm-thinking-dot:nth-child(2) {
|
|
2026
|
-
|
|
2185
|
+
.fd-ai-fm-thinking-dot:nth-child(2) {
|
|
2186
|
+
animation-delay: 150ms;
|
|
2187
|
+
}
|
|
2188
|
+
.fd-ai-fm-thinking-dot:nth-child(3) {
|
|
2189
|
+
animation-delay: 300ms;
|
|
2190
|
+
}
|
|
2027
2191
|
|
|
2028
2192
|
@keyframes fd-ai-fm-bounce {
|
|
2029
|
-
0%,
|
|
2030
|
-
|
|
2193
|
+
0%,
|
|
2194
|
+
80%,
|
|
2195
|
+
100% {
|
|
2196
|
+
transform: scale(0.6);
|
|
2197
|
+
opacity: 0.4;
|
|
2198
|
+
}
|
|
2199
|
+
40% {
|
|
2200
|
+
transform: scale(1);
|
|
2201
|
+
opacity: 1;
|
|
2202
|
+
}
|
|
2031
2203
|
}
|
|
2032
2204
|
|
|
2033
2205
|
/* ─── Bottom input bar ───────────────────────────────────────── */
|
|
@@ -2035,9 +2207,10 @@ html.dark pre.shiki {
|
|
|
2035
2207
|
.fd-ai-fm-input-bar {
|
|
2036
2208
|
position: fixed;
|
|
2037
2209
|
z-index: 9999;
|
|
2038
|
-
transition:
|
|
2039
|
-
|
|
2040
|
-
|
|
2210
|
+
transition:
|
|
2211
|
+
width 300ms cubic-bezier(0.34, 1.56, 0.64, 1),
|
|
2212
|
+
height 300ms cubic-bezier(0.34, 1.56, 0.64, 1),
|
|
2213
|
+
transform 200ms ease-out;
|
|
2041
2214
|
}
|
|
2042
2215
|
|
|
2043
2216
|
.fd-ai-fm-input-bar--closed {
|
|
@@ -2125,8 +2298,20 @@ html.dark pre.shiki {
|
|
|
2125
2298
|
gap: 8px;
|
|
2126
2299
|
overflow-x: auto;
|
|
2127
2300
|
padding-bottom: 4px;
|
|
2128
|
-
mask-image: linear-gradient(
|
|
2129
|
-
|
|
2301
|
+
mask-image: linear-gradient(
|
|
2302
|
+
to right,
|
|
2303
|
+
transparent 0%,
|
|
2304
|
+
black 1rem,
|
|
2305
|
+
black calc(100% - 1rem),
|
|
2306
|
+
transparent 100%
|
|
2307
|
+
);
|
|
2308
|
+
-webkit-mask-image: linear-gradient(
|
|
2309
|
+
to right,
|
|
2310
|
+
transparent 0%,
|
|
2311
|
+
black 1rem,
|
|
2312
|
+
black calc(100% - 1rem),
|
|
2313
|
+
transparent 100%
|
|
2314
|
+
);
|
|
2130
2315
|
}
|
|
2131
2316
|
|
|
2132
2317
|
.fd-ai-fm-suggestion {
|
|
@@ -2136,15 +2321,16 @@ html.dark pre.shiki {
|
|
|
2136
2321
|
font-size: 12px;
|
|
2137
2322
|
font-family: inherit;
|
|
2138
2323
|
border-radius: 9999px;
|
|
2139
|
-
border: 1px solid
|
|
2140
|
-
|
|
2324
|
+
border: 1px solid
|
|
2325
|
+
color-mix(in srgb, var(--color-fd-border, rgba(255, 255, 255, 0.1)) 50%, transparent);
|
|
2326
|
+
background: color-mix(in srgb, var(--color-fd-muted, rgba(255, 255, 255, 0.04)) 30%, transparent);
|
|
2141
2327
|
color: var(--color-fd-muted-foreground, #71717a);
|
|
2142
2328
|
cursor: pointer;
|
|
2143
2329
|
transition: all 200ms;
|
|
2144
2330
|
}
|
|
2145
2331
|
|
|
2146
2332
|
.fd-ai-fm-suggestion:hover {
|
|
2147
|
-
background: color-mix(in srgb, var(--color-fd-muted, rgba(255,255,255,0.04)) 50%, transparent);
|
|
2333
|
+
background: color-mix(in srgb, var(--color-fd-muted, rgba(255, 255, 255, 0.04)) 50%, transparent);
|
|
2148
2334
|
color: var(--color-fd-foreground, #e4e4e7);
|
|
2149
2335
|
border-color: var(--color-fd-border, rgba(255, 255, 255, 0.1));
|
|
2150
2336
|
}
|
|
@@ -2157,7 +2343,11 @@ html.dark pre.shiki {
|
|
|
2157
2343
|
gap: 4px;
|
|
2158
2344
|
padding: 8px 16px;
|
|
2159
2345
|
border-top: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.06));
|
|
2160
|
-
background: color-mix(
|
|
2346
|
+
background: color-mix(
|
|
2347
|
+
in srgb,
|
|
2348
|
+
var(--color-fd-accent, rgba(255, 255, 255, 0.03)) 40%,
|
|
2349
|
+
transparent
|
|
2350
|
+
);
|
|
2161
2351
|
font-size: 12px;
|
|
2162
2352
|
color: var(--color-fd-muted-foreground, #71717a);
|
|
2163
2353
|
}
|
|
@@ -2207,7 +2397,10 @@ html.dark pre.shiki {
|
|
|
2207
2397
|
font-size: 14px;
|
|
2208
2398
|
cursor: pointer;
|
|
2209
2399
|
box-shadow: 0 1px 3px color-mix(in srgb, var(--color-fd-background, #000) 20%, transparent);
|
|
2210
|
-
transition:
|
|
2400
|
+
transition:
|
|
2401
|
+
transform 150ms,
|
|
2402
|
+
background 150ms,
|
|
2403
|
+
color 150ms;
|
|
2211
2404
|
animation: fd-ai-fade-in 300ms ease-out;
|
|
2212
2405
|
white-space: nowrap;
|
|
2213
2406
|
}
|
package/styles/pixel-border.css
CHANGED
|
@@ -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 {
|