skrypt-ai 0.3.4 → 0.4.0
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/README.md +1 -1
- package/dist/auth/index.d.ts +0 -1
- package/dist/auth/index.js +3 -5
- package/dist/autofix/index.js +15 -3
- package/dist/cli.js +19 -4
- package/dist/commands/check-links.js +164 -174
- package/dist/commands/deploy.js +5 -2
- package/dist/commands/generate.js +206 -199
- package/dist/commands/i18n.js +3 -20
- package/dist/commands/init.js +47 -40
- package/dist/commands/lint.js +3 -20
- package/dist/commands/mcp.js +125 -122
- package/dist/commands/monitor.js +125 -108
- package/dist/commands/review-pr.js +1 -1
- package/dist/commands/sdk.js +1 -1
- package/dist/config/loader.js +21 -2
- package/dist/generator/organizer.d.ts +3 -0
- package/dist/generator/organizer.js +4 -9
- package/dist/generator/writer.js +2 -10
- package/dist/github/pr-comments.js +21 -8
- package/dist/plugins/index.js +1 -0
- package/dist/scanner/index.js +8 -2
- package/dist/template/docs.json +2 -1
- package/dist/template/next.config.mjs +2 -1
- package/dist/template/package.json +17 -15
- package/dist/template/public/favicon.svg +4 -0
- package/dist/template/public/search-index.json +1 -1
- package/dist/template/scripts/build-search-index.mjs +120 -25
- package/dist/template/src/app/api/chat/route.ts +11 -3
- package/dist/template/src/app/docs/README.md +28 -0
- package/dist/template/src/app/docs/[...slug]/page.tsx +139 -16
- package/dist/template/src/app/docs/auth/page.mdx +589 -0
- package/dist/template/src/app/docs/autofix/page.mdx +624 -0
- package/dist/template/src/app/docs/cli/page.mdx +217 -0
- package/dist/template/src/app/docs/config/page.mdx +428 -0
- package/dist/template/src/app/docs/configuration/page.mdx +86 -0
- package/dist/template/src/app/docs/deployment/page.mdx +112 -0
- package/dist/template/src/app/docs/error.tsx +20 -0
- package/dist/template/src/app/docs/generator/generator.md +504 -0
- package/dist/template/src/app/docs/generator/organizer.md +779 -0
- package/dist/template/src/app/docs/generator/page.mdx +613 -0
- package/dist/template/src/app/docs/github/page.mdx +502 -0
- package/dist/template/src/app/docs/llm/anthropic-client.md +549 -0
- package/dist/template/src/app/docs/llm/index.md +471 -0
- package/dist/template/src/app/docs/llm/page.mdx +428 -0
- package/dist/template/src/app/docs/llms-full.md +256 -0
- package/dist/template/src/app/docs/llms.txt +2971 -0
- package/dist/template/src/app/docs/not-found.tsx +23 -0
- package/dist/template/src/app/docs/page.mdx +0 -3
- package/dist/template/src/app/docs/plugins/page.mdx +1793 -0
- package/dist/template/src/app/docs/pro/page.mdx +121 -0
- package/dist/template/src/app/docs/quickstart/page.mdx +93 -0
- package/dist/template/src/app/docs/scanner/content-type.md +599 -0
- package/dist/template/src/app/docs/scanner/index.md +212 -0
- package/dist/template/src/app/docs/scanner/page.mdx +307 -0
- package/dist/template/src/app/docs/scanner/python.md +469 -0
- package/dist/template/src/app/docs/scanner/python_parser.md +1056 -0
- package/dist/template/src/app/docs/scanner/rust.md +325 -0
- package/dist/template/src/app/docs/scanner/typescript.md +201 -0
- package/dist/template/src/app/error.tsx +3 -3
- package/dist/template/src/app/icon.tsx +29 -0
- package/dist/template/src/app/layout.tsx +42 -0
- package/dist/template/src/app/not-found.tsx +35 -0
- package/dist/template/src/app/page.tsx +62 -28
- package/dist/template/src/components/ai-chat.tsx +26 -21
- package/dist/template/src/components/breadcrumbs.tsx +46 -2
- package/dist/template/src/components/copy-button.tsx +17 -3
- package/dist/template/src/components/docs-layout.tsx +142 -8
- package/dist/template/src/components/feedback.tsx +4 -2
- package/dist/template/src/components/footer.tsx +42 -0
- package/dist/template/src/components/header.tsx +29 -5
- package/dist/template/src/components/mdx/accordion.tsx +7 -6
- package/dist/template/src/components/mdx/card.tsx +19 -7
- package/dist/template/src/components/mdx/code-block.tsx +17 -3
- package/dist/template/src/components/mdx/code-group.tsx +65 -18
- package/dist/template/src/components/mdx/code-playground.tsx +3 -0
- package/dist/template/src/components/mdx/go-playground.tsx +3 -0
- package/dist/template/src/components/mdx/highlighted-code.tsx +171 -76
- package/dist/template/src/components/mdx/python-playground.tsx +2 -0
- package/dist/template/src/components/mdx/tabs.tsx +74 -6
- package/dist/template/src/components/page-header.tsx +19 -0
- package/dist/template/src/components/scroll-to-top.tsx +33 -0
- package/dist/template/src/components/search-dialog.tsx +206 -52
- package/dist/template/src/components/sidebar.tsx +136 -77
- package/dist/template/src/components/table-of-contents.tsx +23 -7
- package/dist/template/src/lib/highlight.ts +90 -31
- package/dist/template/src/lib/search.ts +14 -4
- package/dist/template/src/lib/theme-utils.ts +140 -0
- package/dist/template/src/styles/globals.css +307 -166
- package/dist/template/src/types/remark-gfm.d.ts +2 -0
- package/dist/utils/files.d.ts +9 -0
- package/dist/utils/files.js +33 -0
- package/dist/utils/validation.d.ts +4 -0
- package/dist/utils/validation.js +38 -0
- package/package.json +1 -4
|
@@ -1,88 +1,151 @@
|
|
|
1
1
|
@import "tailwindcss";
|
|
2
2
|
|
|
3
|
+
@custom-variant dark (&:where(.dark, .dark *));
|
|
4
|
+
|
|
5
|
+
/* Skip-to-content link — visible on focus only */
|
|
6
|
+
.skip-to-content {
|
|
7
|
+
position: absolute;
|
|
8
|
+
left: -9999px;
|
|
9
|
+
top: auto;
|
|
10
|
+
width: 1px;
|
|
11
|
+
height: 1px;
|
|
12
|
+
overflow: hidden;
|
|
13
|
+
z-index: 9999;
|
|
14
|
+
}
|
|
15
|
+
.skip-to-content:focus {
|
|
16
|
+
position: fixed;
|
|
17
|
+
top: 0.5rem;
|
|
18
|
+
left: 0.5rem;
|
|
19
|
+
width: auto;
|
|
20
|
+
height: auto;
|
|
21
|
+
overflow: visible;
|
|
22
|
+
padding: 0.5rem 1rem;
|
|
23
|
+
background: var(--color-primary);
|
|
24
|
+
color: var(--color-primary-foreground);
|
|
25
|
+
border-radius: 0.5rem;
|
|
26
|
+
font-size: 0.875rem;
|
|
27
|
+
font-weight: 600;
|
|
28
|
+
text-decoration: none;
|
|
29
|
+
}
|
|
30
|
+
|
|
3
31
|
@theme {
|
|
4
|
-
/*
|
|
32
|
+
/* Primary — configurable per project via docs.json */
|
|
5
33
|
--color-primary: #3b82f6;
|
|
6
34
|
--color-primary-dark: #2563eb;
|
|
7
|
-
--color-primary-light:
|
|
8
|
-
--color-
|
|
9
|
-
|
|
10
|
-
/*
|
|
35
|
+
--color-primary-light: #60a5fa;
|
|
36
|
+
--color-primary-foreground: #ffffff;
|
|
37
|
+
|
|
38
|
+
/* Gray scale (Mintlify-style, subtle warm undertone) */
|
|
39
|
+
--color-gray-50: #f9fafb;
|
|
40
|
+
--color-gray-100: #f3f4f6;
|
|
41
|
+
--color-gray-200: #e5e7eb;
|
|
42
|
+
--color-gray-300: #d1d5db;
|
|
43
|
+
--color-gray-400: #9ca3af;
|
|
44
|
+
--color-gray-500: #6b7280;
|
|
45
|
+
--color-gray-600: #4b5563;
|
|
46
|
+
--color-gray-700: #374151;
|
|
47
|
+
--color-gray-800: #1f2937;
|
|
48
|
+
--color-gray-900: #111827;
|
|
49
|
+
--color-gray-950: #030712;
|
|
50
|
+
|
|
51
|
+
/* Semantic tokens — light mode defaults */
|
|
11
52
|
--color-bg: #ffffff;
|
|
12
53
|
--color-bg-secondary: #f9fafb;
|
|
13
54
|
--color-bg-tertiary: #f3f4f6;
|
|
14
|
-
|
|
15
|
-
/* Text */
|
|
16
55
|
--color-text: #111827;
|
|
17
|
-
--color-text-secondary: #
|
|
56
|
+
--color-text-secondary: #374151;
|
|
18
57
|
--color-text-tertiary: #9ca3af;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
--color-border: rgba(0, 0, 0, 0.08);
|
|
22
|
-
--color-border-strong: rgba(0, 0, 0, 0.15);
|
|
58
|
+
--color-border: rgba(3, 7, 18, 0.1);
|
|
59
|
+
--color-border-strong: rgba(3, 7, 18, 0.15);
|
|
23
60
|
|
|
24
61
|
/* Code */
|
|
25
|
-
--color-code-bg: #
|
|
26
|
-
--color-code-
|
|
62
|
+
--color-code-bg: #ffffff;
|
|
63
|
+
--color-code-border: rgba(3, 7, 18, 0.1);
|
|
64
|
+
--color-code-text: #1f2937;
|
|
27
65
|
|
|
28
66
|
/* Layout */
|
|
29
|
-
--sidebar-width:
|
|
67
|
+
--sidebar-width: 264px;
|
|
30
68
|
--toc-width: 224px;
|
|
31
|
-
--header-height:
|
|
69
|
+
--header-height: 56px;
|
|
32
70
|
--content-max-width: 768px;
|
|
71
|
+
--radius: 1rem;
|
|
33
72
|
}
|
|
34
73
|
|
|
35
|
-
/*
|
|
74
|
+
/* ========================
|
|
75
|
+
Dark Mode
|
|
76
|
+
======================== */
|
|
77
|
+
|
|
36
78
|
@media (prefers-color-scheme: dark) {
|
|
37
79
|
:root:not(.light) {
|
|
38
|
-
--color-bg: #
|
|
39
|
-
--color-bg-secondary: #
|
|
40
|
-
--color-bg-tertiary: #
|
|
41
|
-
--color-text: #
|
|
42
|
-
--color-text-secondary: #
|
|
43
|
-
--color-text-tertiary: #
|
|
44
|
-
--color-border: rgba(255, 255, 255, 0.
|
|
45
|
-
--color-border-strong: rgba(255, 255, 255, 0.
|
|
46
|
-
--color-
|
|
47
|
-
--color-code-
|
|
48
|
-
--color-code-text: #
|
|
80
|
+
--color-bg: #0f1117;
|
|
81
|
+
--color-bg-secondary: #1a1d27;
|
|
82
|
+
--color-bg-tertiary: #252833;
|
|
83
|
+
--color-text: #f3f4f6;
|
|
84
|
+
--color-text-secondary: #d1d5db;
|
|
85
|
+
--color-text-tertiary: #6b7280;
|
|
86
|
+
--color-border: rgba(255, 255, 255, 0.07);
|
|
87
|
+
--color-border-strong: rgba(255, 255, 255, 0.12);
|
|
88
|
+
--color-code-bg: #0b0c0e;
|
|
89
|
+
--color-code-border: rgba(255, 255, 255, 0.1);
|
|
90
|
+
--color-code-text: #f3f4f6;
|
|
49
91
|
}
|
|
50
92
|
}
|
|
51
93
|
|
|
52
|
-
/* Manual dark mode override */
|
|
53
94
|
:root.dark {
|
|
54
|
-
--color-bg: #
|
|
55
|
-
--color-bg-secondary: #
|
|
56
|
-
--color-bg-tertiary: #
|
|
57
|
-
--color-text: #
|
|
58
|
-
--color-text-secondary: #
|
|
59
|
-
--color-text-tertiary: #
|
|
60
|
-
--color-border: rgba(255, 255, 255, 0.
|
|
61
|
-
--color-border-strong: rgba(255, 255, 255, 0.
|
|
62
|
-
--color-
|
|
63
|
-
--color-code-
|
|
64
|
-
--color-code-text: #
|
|
95
|
+
--color-bg: #0f1117;
|
|
96
|
+
--color-bg-secondary: #1a1d27;
|
|
97
|
+
--color-bg-tertiary: #252833;
|
|
98
|
+
--color-text: #f3f4f6;
|
|
99
|
+
--color-text-secondary: #d1d5db;
|
|
100
|
+
--color-text-tertiary: #6b7280;
|
|
101
|
+
--color-border: rgba(255, 255, 255, 0.07);
|
|
102
|
+
--color-border-strong: rgba(255, 255, 255, 0.12);
|
|
103
|
+
--color-code-bg: #0b0c0e;
|
|
104
|
+
--color-code-border: rgba(255, 255, 255, 0.1);
|
|
105
|
+
--color-code-text: #f3f4f6;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/* Error page icon — dark mode overrides (avoids Tailwind dark: variant mismatch) */
|
|
109
|
+
:root.dark .error-icon-bg { background-color: rgba(127, 29, 29, 0.3); }
|
|
110
|
+
:root.dark .error-icon-text { color: #f87171; }
|
|
111
|
+
@media (prefers-color-scheme: dark) {
|
|
112
|
+
:root:not(.light) .error-icon-bg { background-color: rgba(127, 29, 29, 0.3); }
|
|
113
|
+
:root:not(.light) .error-icon-text { color: #f87171; }
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/* Feedback thumbs — dark mode overrides */
|
|
117
|
+
:root.dark .feedback-positive { background-color: rgba(6, 95, 70, 0.3); color: #34d399; }
|
|
118
|
+
:root.dark .feedback-negative { background-color: rgba(127, 29, 29, 0.3); color: #f87171; }
|
|
119
|
+
@media (prefers-color-scheme: dark) {
|
|
120
|
+
:root:not(.light) .feedback-positive { background-color: rgba(6, 95, 70, 0.3); color: #34d399; }
|
|
121
|
+
:root:not(.light) .feedback-negative { background-color: rgba(127, 29, 29, 0.3); color: #f87171; }
|
|
65
122
|
}
|
|
66
123
|
|
|
67
124
|
/* ========================
|
|
68
|
-
Base
|
|
125
|
+
Base — in @layer base so Tailwind utilities can override
|
|
69
126
|
======================== */
|
|
70
127
|
|
|
128
|
+
@layer base {
|
|
129
|
+
|
|
71
130
|
html {
|
|
72
131
|
scroll-behavior: smooth;
|
|
73
132
|
-webkit-font-smoothing: antialiased;
|
|
74
133
|
-moz-osx-font-smoothing: grayscale;
|
|
134
|
+
overscroll-behavior-y: none;
|
|
135
|
+
line-height: 1.5;
|
|
75
136
|
}
|
|
76
137
|
|
|
77
138
|
body {
|
|
78
139
|
background-color: var(--color-bg);
|
|
79
140
|
color: var(--color-text);
|
|
80
|
-
font-
|
|
141
|
+
font-family: var(--font-body, "Inter", ui-sans-serif, system-ui, sans-serif);
|
|
142
|
+
font-feature-settings: "cv02", "cv03", "cv04", "cv11";
|
|
143
|
+
font-size: 15px;
|
|
81
144
|
}
|
|
82
145
|
|
|
83
|
-
/* Global transitions
|
|
146
|
+
/* Global transitions — 150ms on interactive elements */
|
|
84
147
|
a, button, input, select, textarea {
|
|
85
|
-
transition: color 150ms
|
|
148
|
+
transition: color 150ms, background-color 150ms, border-color 150ms, opacity 150ms;
|
|
86
149
|
}
|
|
87
150
|
|
|
88
151
|
::selection {
|
|
@@ -90,51 +153,31 @@ a, button, input, select, textarea {
|
|
|
90
153
|
color: white;
|
|
91
154
|
}
|
|
92
155
|
|
|
156
|
+
/* Links — inherit color by default, primary in prose */
|
|
157
|
+
a {
|
|
158
|
+
text-decoration: none;
|
|
159
|
+
color: inherit;
|
|
160
|
+
}
|
|
161
|
+
|
|
93
162
|
/* ========================
|
|
94
163
|
Typography
|
|
95
164
|
======================== */
|
|
96
165
|
|
|
97
166
|
h1, h2, h3, h4, h5, h6 {
|
|
98
167
|
color: var(--color-text);
|
|
99
|
-
font-weight: 700;
|
|
100
168
|
line-height: 1.2;
|
|
101
|
-
letter-spacing: -0.
|
|
169
|
+
letter-spacing: -0.025em;
|
|
102
170
|
}
|
|
103
171
|
|
|
104
|
-
h1 {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
}
|
|
172
|
+
h1 { font-size: 2.25em; font-weight: 800; }
|
|
173
|
+
h2 { font-size: 1.5em; font-weight: 700; margin-top: 2em; margin-bottom: 0.6667em; }
|
|
174
|
+
h3 { font-size: 1.25em; font-weight: 600; margin-top: 2.4em; margin-bottom: 0.6em; }
|
|
175
|
+
h4 { font-size: 1.125em; font-weight: 600; margin-top: 2em; margin-bottom: 0.5em; }
|
|
108
176
|
|
|
109
|
-
|
|
110
|
-
font-size: 1.
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
border-bottom: 1px solid var(--color-border);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
h3 {
|
|
117
|
-
font-size: 1.25rem;
|
|
118
|
-
margin-top: 2rem;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
h4 {
|
|
122
|
-
font-size: 1.0625rem;
|
|
123
|
-
margin-top: 1.5rem;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/* ========================
|
|
127
|
-
Links
|
|
128
|
-
======================== */
|
|
129
|
-
|
|
130
|
-
a {
|
|
131
|
-
color: var(--color-primary);
|
|
132
|
-
text-decoration: none;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
a:hover {
|
|
136
|
-
text-decoration: underline;
|
|
137
|
-
text-underline-offset: 2px;
|
|
177
|
+
@media (max-width: 640px) {
|
|
178
|
+
h1 { font-size: 1.75em; }
|
|
179
|
+
h2 { font-size: 1.25em; }
|
|
180
|
+
h3 { font-size: 1.125em; }
|
|
138
181
|
}
|
|
139
182
|
|
|
140
183
|
/* ========================
|
|
@@ -143,27 +186,47 @@ a:hover {
|
|
|
143
186
|
|
|
144
187
|
pre {
|
|
145
188
|
background-color: var(--color-code-bg) !important;
|
|
146
|
-
border: 1px solid var(--color-border);
|
|
189
|
+
border: 1px solid var(--color-code-border);
|
|
147
190
|
border-radius: 0.75rem;
|
|
148
|
-
padding: 1rem
|
|
191
|
+
padding: 0.875rem 1rem;
|
|
149
192
|
overflow-x: auto;
|
|
150
|
-
font-size: 0.
|
|
151
|
-
line-height: 1.
|
|
193
|
+
font-size: 0.875em;
|
|
194
|
+
line-height: 1.7142857;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/* Prevent FOUC: code blocks get the right bg before Shiki loads */
|
|
198
|
+
.shiki, .shiki pre {
|
|
199
|
+
background-color: var(--color-code-bg) !important;
|
|
152
200
|
}
|
|
153
201
|
|
|
154
202
|
code {
|
|
155
|
-
font-family: ui-monospace, SFMono-Regular,
|
|
156
|
-
font-size: 0.
|
|
203
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
|
|
204
|
+
font-size: 0.875em;
|
|
205
|
+
font-variant-ligatures: none;
|
|
157
206
|
}
|
|
158
207
|
|
|
159
|
-
/* Inline code */
|
|
208
|
+
/* Inline code — Mintlify style */
|
|
160
209
|
:not(pre) > code {
|
|
161
|
-
background-color: var(--color-
|
|
162
|
-
|
|
163
|
-
padding: 0.125rem 0.375rem;
|
|
210
|
+
background-color: var(--color-gray-100);
|
|
211
|
+
padding: 0.125rem 0.5rem;
|
|
164
212
|
border-radius: 0.375rem;
|
|
165
|
-
font-size: 0.
|
|
166
|
-
|
|
213
|
+
font-size: 0.875em;
|
|
214
|
+
line-height: 1.5;
|
|
215
|
+
color: var(--color-gray-600);
|
|
216
|
+
overflow-wrap: break-word;
|
|
217
|
+
word-break: break-word;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
:root.dark :not(pre) > code {
|
|
221
|
+
background-color: rgba(255, 255, 255, 0.05);
|
|
222
|
+
color: var(--color-gray-200);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
@media (prefers-color-scheme: dark) {
|
|
226
|
+
:root:not(.light) :not(pre) > code {
|
|
227
|
+
background-color: rgba(255, 255, 255, 0.05);
|
|
228
|
+
color: var(--color-gray-200);
|
|
229
|
+
}
|
|
167
230
|
}
|
|
168
231
|
|
|
169
232
|
/* ========================
|
|
@@ -173,152 +236,230 @@ code {
|
|
|
173
236
|
.prose {
|
|
174
237
|
max-width: var(--content-max-width);
|
|
175
238
|
line-height: 1.75;
|
|
239
|
+
color: var(--color-text-secondary);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
.prose a {
|
|
176
243
|
color: var(--color-text);
|
|
244
|
+
font-weight: 600;
|
|
245
|
+
text-decoration: none;
|
|
246
|
+
border-bottom: 1px solid var(--color-primary);
|
|
247
|
+
transition: border-color 150ms, border-bottom-width 150ms;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
.prose a:hover {
|
|
251
|
+
border-bottom-width: 2px;
|
|
177
252
|
}
|
|
178
253
|
|
|
179
254
|
.prose p {
|
|
180
|
-
margin-top: 1.
|
|
181
|
-
margin-bottom: 1.
|
|
182
|
-
color: var(--color-text-secondary);
|
|
255
|
+
margin-top: 1.25em;
|
|
256
|
+
margin-bottom: 1.25em;
|
|
183
257
|
}
|
|
184
258
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
259
|
+
/* Page header description is handled by PageHeader component */
|
|
260
|
+
|
|
261
|
+
.prose strong {
|
|
262
|
+
font-weight: 600;
|
|
263
|
+
color: var(--color-text);
|
|
189
264
|
}
|
|
190
265
|
|
|
266
|
+
/* Lists */
|
|
191
267
|
.prose ul, .prose ol {
|
|
192
|
-
margin-top:
|
|
193
|
-
margin-bottom:
|
|
268
|
+
margin-top: 1em;
|
|
269
|
+
margin-bottom: 1em;
|
|
194
270
|
padding-left: 1.5rem;
|
|
195
271
|
}
|
|
196
272
|
|
|
197
|
-
.prose ul {
|
|
198
|
-
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
.prose ol {
|
|
202
|
-
list-style-type: decimal;
|
|
203
|
-
}
|
|
273
|
+
.prose ul { list-style-type: disc; }
|
|
274
|
+
.prose ol { list-style-type: decimal; }
|
|
204
275
|
|
|
205
276
|
.prose li {
|
|
206
|
-
margin-top: 0.
|
|
207
|
-
margin-bottom: 0.
|
|
208
|
-
color: var(--color-text-secondary);
|
|
277
|
+
margin-top: 0.5em;
|
|
278
|
+
margin-bottom: 0.5em;
|
|
209
279
|
}
|
|
210
280
|
|
|
211
281
|
.prose li::marker {
|
|
212
282
|
color: var(--color-text-tertiary);
|
|
213
283
|
}
|
|
214
284
|
|
|
215
|
-
/*
|
|
285
|
+
/* Headings in prose */
|
|
286
|
+
.prose h1, .prose h2, .prose h3, .prose h4 {
|
|
287
|
+
color: var(--color-text);
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
.prose h2 a, .prose h3 a, .prose h4 a {
|
|
291
|
+
color: inherit;
|
|
292
|
+
border-bottom: none;
|
|
293
|
+
font-weight: inherit;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
.prose h2 a:hover, .prose h3 a:hover, .prose h4 a:hover {
|
|
297
|
+
border-bottom: none;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
/* Tables — Mintlify style: clean, minimal */
|
|
216
301
|
.prose table {
|
|
217
302
|
width: 100%;
|
|
218
303
|
border-collapse: collapse;
|
|
219
|
-
margin: 1.
|
|
304
|
+
margin: 1.5em 0;
|
|
220
305
|
font-size: 0.875rem;
|
|
306
|
+
line-height: 1.5;
|
|
221
307
|
display: table;
|
|
308
|
+
table-layout: auto;
|
|
222
309
|
}
|
|
223
310
|
|
|
224
|
-
.prose thead {
|
|
225
|
-
|
|
226
|
-
}
|
|
311
|
+
.prose thead { display: table-header-group; }
|
|
312
|
+
.prose tbody { display: table-row-group; }
|
|
313
|
+
.prose tr { display: table-row; }
|
|
227
314
|
|
|
228
|
-
.prose
|
|
229
|
-
display: table-
|
|
315
|
+
.prose th {
|
|
316
|
+
display: table-cell;
|
|
317
|
+
font-weight: 600;
|
|
318
|
+
color: var(--color-text);
|
|
319
|
+
vertical-align: bottom;
|
|
320
|
+
padding: 0.625rem 1rem 0.625rem 0;
|
|
321
|
+
text-align: left;
|
|
322
|
+
white-space: nowrap;
|
|
323
|
+
border-bottom: 1px solid var(--color-border-strong);
|
|
230
324
|
}
|
|
231
325
|
|
|
232
|
-
.prose
|
|
233
|
-
display: table-row;
|
|
234
|
-
border-bottom: 1px solid var(--color-border);
|
|
235
|
-
transition: background-color 150ms ease;
|
|
236
|
-
}
|
|
326
|
+
.prose th:last-child { padding-right: 0; }
|
|
237
327
|
|
|
238
|
-
.prose
|
|
239
|
-
padding: 0.75rem 1rem;
|
|
240
|
-
text-align: left;
|
|
328
|
+
.prose td {
|
|
241
329
|
display: table-cell;
|
|
242
330
|
vertical-align: top;
|
|
331
|
+
color: var(--color-text-secondary);
|
|
332
|
+
padding: 0.75rem 1rem 0.75rem 0;
|
|
243
333
|
}
|
|
244
334
|
|
|
245
|
-
.prose
|
|
246
|
-
font-weight: 600;
|
|
247
|
-
font-size: 0.75rem;
|
|
248
|
-
text-transform: uppercase;
|
|
249
|
-
letter-spacing: 0.05em;
|
|
250
|
-
color: var(--color-text-tertiary);
|
|
251
|
-
border-bottom: 2px solid var(--color-border-strong);
|
|
252
|
-
}
|
|
335
|
+
.prose td:last-child { padding-right: 0; }
|
|
253
336
|
|
|
254
|
-
|
|
255
|
-
|
|
337
|
+
/* Inline code inside table cells should never wrap */
|
|
338
|
+
.prose td code, .prose th code {
|
|
339
|
+
white-space: nowrap;
|
|
340
|
+
word-break: normal;
|
|
341
|
+
overflow-wrap: normal;
|
|
256
342
|
}
|
|
257
343
|
|
|
258
|
-
.prose tbody tr
|
|
259
|
-
|
|
344
|
+
.prose tbody tr {
|
|
345
|
+
border-bottom: 1px solid var(--color-border);
|
|
260
346
|
}
|
|
261
347
|
|
|
262
348
|
/* Blockquotes */
|
|
263
349
|
.prose blockquote {
|
|
264
|
-
border-left: 3px solid var(--color-
|
|
265
|
-
padding: 0.
|
|
266
|
-
margin: 1.
|
|
350
|
+
border-left: 3px solid var(--color-border-strong);
|
|
351
|
+
padding: 0.5em 0 0.5em 1.25em;
|
|
352
|
+
margin: 1.5em 0;
|
|
267
353
|
color: var(--color-text-secondary);
|
|
268
354
|
}
|
|
269
355
|
|
|
270
|
-
.prose blockquote p {
|
|
271
|
-
margin: 0;
|
|
272
|
-
}
|
|
356
|
+
.prose blockquote p { margin: 0; }
|
|
273
357
|
|
|
274
358
|
/* Horizontal rules */
|
|
275
359
|
.prose hr {
|
|
276
360
|
border: none;
|
|
277
361
|
border-top: 1px solid var(--color-border);
|
|
278
|
-
margin:
|
|
362
|
+
margin: 3em 0;
|
|
279
363
|
}
|
|
280
364
|
|
|
281
365
|
/* Images */
|
|
282
366
|
.prose img {
|
|
283
367
|
max-width: 100%;
|
|
284
368
|
border-radius: 0.75rem;
|
|
285
|
-
|
|
286
|
-
margin: 1.5rem 0;
|
|
369
|
+
margin: 2em 0;
|
|
287
370
|
}
|
|
288
371
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
372
|
+
/* ========================
|
|
373
|
+
Scrollbar (Mintlify style — thin, subtle)
|
|
374
|
+
======================== */
|
|
375
|
+
|
|
376
|
+
* {
|
|
377
|
+
scrollbar-width: thin;
|
|
378
|
+
scrollbar-color: rgba(0, 0, 0, 0.15) transparent;
|
|
292
379
|
}
|
|
293
380
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
color: inherit;
|
|
297
|
-
text-decoration: none;
|
|
381
|
+
:root.dark * {
|
|
382
|
+
scrollbar-color: rgba(255, 255, 255, 0.2) transparent;
|
|
298
383
|
}
|
|
299
384
|
|
|
300
|
-
|
|
301
|
-
|
|
385
|
+
@media (prefers-color-scheme: dark) {
|
|
386
|
+
:root:not(.light) * {
|
|
387
|
+
scrollbar-color: rgba(255, 255, 255, 0.2) transparent;
|
|
388
|
+
}
|
|
389
|
+
:root:not(.light) ::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.2); }
|
|
390
|
+
:root:not(.light) ::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.3); }
|
|
302
391
|
}
|
|
303
392
|
|
|
393
|
+
:root.dark ::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.2); }
|
|
394
|
+
:root.dark ::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.3); }
|
|
395
|
+
|
|
396
|
+
::-webkit-scrollbar { width: 6px; height: 6px; }
|
|
397
|
+
::-webkit-scrollbar-track { background: transparent; }
|
|
398
|
+
::-webkit-scrollbar-thumb { background: rgba(0, 0, 0, 0.15); border-radius: 3px; }
|
|
399
|
+
::-webkit-scrollbar-thumb:hover { background: rgba(0, 0, 0, 0.2); }
|
|
400
|
+
|
|
304
401
|
/* ========================
|
|
305
|
-
|
|
402
|
+
Focus indicators
|
|
306
403
|
======================== */
|
|
307
404
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
405
|
+
*:focus-visible {
|
|
406
|
+
outline: 2px solid var(--color-primary);
|
|
407
|
+
outline-offset: 2px;
|
|
311
408
|
}
|
|
312
409
|
|
|
313
|
-
|
|
314
|
-
|
|
410
|
+
input:focus-visible, textarea:focus-visible {
|
|
411
|
+
outline-offset: 0;
|
|
315
412
|
}
|
|
316
413
|
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
414
|
+
} /* end @layer base */
|
|
415
|
+
|
|
416
|
+
/* Sidebar scroll shadows — fade content at top/bottom edges */
|
|
417
|
+
.sidebar-scroll-shadow {
|
|
418
|
+
mask-image: linear-gradient(to bottom, transparent, black 1rem, black calc(100% - 1rem), transparent);
|
|
419
|
+
-webkit-mask-image: linear-gradient(to bottom, transparent, black 1rem, black calc(100% - 1rem), transparent);
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
/* Search dialog entrance animation */
|
|
423
|
+
@keyframes dialog-in {
|
|
424
|
+
from { opacity: 0; transform: translate(-50%, -8px) scale(0.98); }
|
|
425
|
+
to { opacity: 1; transform: translate(-50%, 0) scale(1); }
|
|
426
|
+
}
|
|
427
|
+
.dialog-animate-in {
|
|
428
|
+
animation: dialog-in 150ms ease-out;
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
/* ========================
|
|
432
|
+
Terminal-style code blocks
|
|
433
|
+
======================== */
|
|
434
|
+
.terminal-block pre {
|
|
435
|
+
background-color: #0a0a0a !important;
|
|
436
|
+
border-color: rgba(255, 255, 255, 0.08);
|
|
320
437
|
}
|
|
321
438
|
|
|
322
|
-
|
|
323
|
-
|
|
439
|
+
/* ========================
|
|
440
|
+
Copy toast animation
|
|
441
|
+
======================== */
|
|
442
|
+
@keyframes copy-toast-in {
|
|
443
|
+
0% { opacity: 0; transform: translateX(-50%) translateY(-4px); }
|
|
444
|
+
15% { opacity: 1; transform: translateX(-50%) translateY(0); }
|
|
445
|
+
85% { opacity: 1; transform: translateX(-50%) translateY(0); }
|
|
446
|
+
100% { opacity: 0; transform: translateX(-50%) translateY(-4px); }
|
|
447
|
+
}
|
|
448
|
+
.copy-toast {
|
|
449
|
+
animation: copy-toast-in 1.5s ease-in-out forwards;
|
|
450
|
+
pointer-events: none;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
/* ========================
|
|
454
|
+
Search skeleton shimmer
|
|
455
|
+
======================== */
|
|
456
|
+
@keyframes shimmer {
|
|
457
|
+
0% { background-position: -200% 0; }
|
|
458
|
+
100% { background-position: 200% 0; }
|
|
459
|
+
}
|
|
460
|
+
.skeleton {
|
|
461
|
+
background: linear-gradient(90deg, var(--color-bg-secondary) 25%, var(--color-bg-tertiary) 50%, var(--color-bg-secondary) 75%);
|
|
462
|
+
background-size: 200% 100%;
|
|
463
|
+
animation: shimmer 1.5s infinite;
|
|
464
|
+
border-radius: 0.25rem;
|
|
324
465
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recursively find all .md and .mdx files in a directory.
|
|
3
|
+
* Skips hidden directories and node_modules.
|
|
4
|
+
*/
|
|
5
|
+
export declare function findMdxFiles(dir: string): string[];
|
|
6
|
+
/**
|
|
7
|
+
* Convert string to URL-safe slug
|
|
8
|
+
*/
|
|
9
|
+
export declare function slugify(str: string): string;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { readdirSync, statSync } from 'fs';
|
|
2
|
+
import { join, extname } from 'path';
|
|
3
|
+
/**
|
|
4
|
+
* Recursively find all .md and .mdx files in a directory.
|
|
5
|
+
* Skips hidden directories and node_modules.
|
|
6
|
+
*/
|
|
7
|
+
export function findMdxFiles(dir) {
|
|
8
|
+
const files = [];
|
|
9
|
+
function walk(currentDir) {
|
|
10
|
+
const entries = readdirSync(currentDir);
|
|
11
|
+
for (const entry of entries) {
|
|
12
|
+
const fullPath = join(currentDir, entry);
|
|
13
|
+
const stat = statSync(fullPath);
|
|
14
|
+
if (stat.isDirectory() && !entry.startsWith('.') && entry !== 'node_modules') {
|
|
15
|
+
walk(fullPath);
|
|
16
|
+
}
|
|
17
|
+
else if (stat.isFile() && (extname(entry) === '.mdx' || extname(entry) === '.md')) {
|
|
18
|
+
files.push(fullPath);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
walk(dir);
|
|
23
|
+
return files;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Convert string to URL-safe slug
|
|
27
|
+
*/
|
|
28
|
+
export function slugify(str) {
|
|
29
|
+
return str
|
|
30
|
+
.toLowerCase()
|
|
31
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
32
|
+
.replace(/^-|-$/g, '');
|
|
33
|
+
}
|