docs-i18n 0.6.2 → 0.7.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/{src/admin/ui → admin/app}/components/JobDialog.tsx +21 -2
- package/{src/admin/ui → admin/app}/components/JobPanel.tsx +1 -1
- package/{src/admin/ui → admin/app}/components/Preview.tsx +2 -5
- package/{src/admin/ui → admin/app}/lib/api.ts +18 -39
- package/admin/app/routeTree.gen.ts +68 -0
- package/admin/app/router.tsx +23 -0
- package/admin/app/routes/__root.tsx +55 -0
- package/admin/app/routes/index.tsx +416 -0
- package/{src/admin/ui → admin/app}/styles.css +36 -3
- package/admin/package.json +27 -0
- package/admin/server/functions/jobs.ts +53 -0
- package/admin/server/functions/misc.ts +84 -0
- package/{src/admin/server/routes → admin/server/functions}/models.ts +16 -29
- package/admin/server/functions/status.ts +61 -0
- package/admin/server/index.ts +35 -0
- package/admin/server/init.ts +46 -0
- package/{src/admin → admin}/server/services/job-manager.ts +39 -10
- package/{src/admin → admin}/server/services/status.ts +6 -6
- package/admin/tsconfig.json +19 -0
- package/{src/admin → admin}/vite.config.ts +8 -2
- package/dist/{assemble-7H4QCW35.js → assemble-CP2BRYQJ.js} +6 -4
- package/dist/{chunk-A3YQNPKZ.js → chunk-CLYUAWZE.js} +1 -1
- package/dist/{chunk-YN4VJHCQ.js → chunk-JHBSHTXC.js} +1 -1
- package/dist/chunk-L64GJ4OB.js +32 -0
- package/dist/{chunk-SKKZIV3L.js → chunk-PNKVD2UK.js} +1 -29
- package/dist/{chunk-XEOYZUHS.js → chunk-QKIR7RKQ.js} +4 -31
- package/dist/chunk-TRURQFP4.js +31 -0
- package/dist/cli.js +108 -23
- package/dist/index.d.ts +41 -1
- package/dist/index.js +92 -3
- package/dist/{rescan-O5D3CYC2.js → rescan-HXMWFAOC.js} +5 -3
- package/dist/{status-F4MYIAAY.js → status-AGZDXOTZ.js} +4 -2
- package/dist/{translate-ZIVKNAC4.js → translate-A5X6MX4Y.js} +14 -7
- package/dist/upload-XL6KG6S2.js +132 -0
- package/package.json +17 -15
- package/template/app/components/BlogArticle.tsx +159 -0
- package/template/app/components/BlogList.tsx +88 -0
- package/template/app/components/Breadcrumbs.tsx +81 -0
- package/template/app/components/Card.tsx +31 -0
- package/template/app/components/Doc.tsx +191 -0
- package/template/app/components/DocBreadcrumb.tsx +60 -0
- package/template/app/components/DocContainer.tsx +13 -0
- package/template/app/components/DocTitle.tsx +11 -0
- package/template/app/components/DocsLayout.tsx +715 -0
- package/template/app/components/Dropdown.tsx +116 -0
- package/template/app/components/FallbackBanner.tsx +36 -0
- package/template/app/components/Footer.tsx +29 -0
- package/template/app/components/FrameworkSelect.tsx +150 -0
- package/template/app/components/LibraryCard.tsx +178 -0
- package/template/app/components/LocaleSwitcher.tsx +43 -0
- package/template/app/components/Navbar.tsx +430 -0
- package/template/app/components/PostNotFound.tsx +20 -0
- package/template/app/components/SearchButton.tsx +32 -0
- package/template/app/components/Select.tsx +103 -0
- package/template/app/components/Spinner.tsx +18 -0
- package/template/app/components/ThemeProvider.tsx +141 -0
- package/template/app/components/ThemeToggle.tsx +31 -0
- package/template/app/components/Toc.tsx +86 -0
- package/template/app/components/VersionSelect.tsx +118 -0
- package/template/app/components/icons/BSkyIcon.tsx +27 -0
- package/template/app/components/icons/BaseballCapIcon.tsx +25 -0
- package/template/app/components/icons/BrandXIcon.tsx +28 -0
- package/template/app/components/icons/CheckCircleIcon.tsx +28 -0
- package/template/app/components/icons/CogsIcon.tsx +25 -0
- package/template/app/components/icons/DiscordIcon.tsx +24 -0
- package/template/app/components/icons/GithubIcon.tsx +24 -0
- package/template/app/components/icons/GoogleIcon.tsx +24 -0
- package/template/app/components/icons/InstagramIcon.tsx +24 -0
- package/template/app/components/icons/NpmIcon.tsx +26 -0
- package/template/app/components/icons/YinYangIcon.tsx +26 -0
- package/template/app/components/icons/YouTubeIcon.tsx +24 -0
- package/template/app/components/markdown/CodeBlock.tsx +254 -0
- package/template/app/components/markdown/FileTabs.tsx +58 -0
- package/template/app/components/markdown/FrameworkContent.tsx +76 -0
- package/template/app/components/markdown/Markdown.tsx +216 -0
- package/template/app/components/markdown/MarkdownContent.tsx +89 -0
- package/template/app/components/markdown/MarkdownFrameworkHandler.tsx +66 -0
- package/template/app/components/markdown/MarkdownHeadingContext.tsx +35 -0
- package/template/app/components/markdown/MarkdownLink.tsx +46 -0
- package/template/app/components/markdown/MarkdownTabsHandler.tsx +109 -0
- package/template/app/components/markdown/PackageManagerTabs.tsx +95 -0
- package/template/app/components/markdown/Tabs.tsx +139 -0
- package/template/app/components/markdown/index.ts +15 -0
- package/template/app/components/ui/Button.tsx +141 -0
- package/template/app/components/ui/InlineCode.tsx +16 -0
- package/template/app/components/ui/MarkdownImg.tsx +21 -0
- package/template/app/config/frameworks.ts +93 -0
- package/template/app/contexts/SearchContext.tsx +36 -0
- package/template/app/db/index.ts +17 -0
- package/template/app/db/schema.ts +74 -0
- package/template/app/hooks/useClickOutside.ts +106 -0
- package/template/app/routeTree.gen.ts +584 -0
- package/template/app/router.tsx +29 -0
- package/template/app/routes/$lang.$project.$version.docs.$.tsx +128 -0
- package/template/app/routes/$lang.$project.$version.docs.framework.$framework.$.tsx +106 -0
- package/template/app/routes/$lang.$project.$version.docs.framework.$framework.index.tsx +27 -0
- package/template/app/routes/$lang.$project.$version.docs.framework.index.tsx +44 -0
- package/template/app/routes/$lang.$project.$version.docs.index.tsx +27 -0
- package/template/app/routes/$lang.$project.$version.docs.tsx +70 -0
- package/template/app/routes/$lang.$project.$version.tsx +69 -0
- package/template/app/routes/$lang.$project.docs.$.tsx +104 -0
- package/template/app/routes/$lang.$project.docs.index.tsx +20 -0
- package/template/app/routes/$lang.$project.docs.tsx +79 -0
- package/template/app/routes/$lang.$project.tsx +89 -0
- package/template/app/routes/$lang.blog.$.tsx +82 -0
- package/template/app/routes/$lang.blog.index.tsx +56 -0
- package/template/app/routes/$lang.blog.tsx +26 -0
- package/template/app/routes/$lang.docs.$.tsx +100 -0
- package/template/app/routes/$lang.docs.framework.$framework.$.tsx +104 -0
- package/template/app/routes/$lang.docs.framework.$framework.index.tsx +32 -0
- package/template/app/routes/$lang.docs.framework.index.tsx +47 -0
- package/template/app/routes/$lang.docs.index.tsx +20 -0
- package/template/app/routes/$lang.docs.tsx +90 -0
- package/template/app/routes/$lang.tsx +16 -0
- package/template/app/routes/__root.tsx +180 -0
- package/template/app/routes/index.tsx +89 -0
- package/template/app/site.config.ts +182 -0
- package/template/app/styles/app.css +1029 -0
- package/template/app/types/index.ts +77 -0
- package/template/app/utils/blog.server.ts +193 -0
- package/template/app/utils/blog.ts +42 -0
- package/template/app/utils/config.ts +120 -0
- package/template/app/utils/content-loader.ts +400 -0
- package/template/app/utils/dates.ts +29 -0
- package/template/app/utils/docs.server.ts +150 -0
- package/template/app/utils/markdown/filterFrameworkContent.ts +233 -0
- package/template/app/utils/markdown/index.ts +2 -0
- package/template/app/utils/markdown/installCommand.ts +143 -0
- package/template/app/utils/markdown/plugins/collectHeadings.ts +104 -0
- package/template/app/utils/markdown/plugins/extractCodeMeta.ts +57 -0
- package/template/app/utils/markdown/plugins/helpers.ts +33 -0
- package/template/app/utils/markdown/plugins/index.ts +8 -0
- package/template/app/utils/markdown/plugins/parseCommentComponents.ts +103 -0
- package/template/app/utils/markdown/plugins/transformCommentComponents.ts +23 -0
- package/template/app/utils/markdown/plugins/transformFrameworkComponent.ts +217 -0
- package/template/app/utils/markdown/plugins/transformTabsComponent.ts +359 -0
- package/template/app/utils/markdown/processor.ts +75 -0
- package/template/app/utils/site-config.tsx +11 -0
- package/template/app/utils/upload.ts +232 -0
- package/template/app/utils/useLocalStorage.ts +65 -0
- package/template/app/utils/utils.ts +23 -0
- package/template/package.json +54 -0
- package/template/public/favicon.svg +1 -0
- package/template/public/fonts/Inter-latin-ext.woff2 +0 -0
- package/template/public/fonts/Inter-latin.woff2 +0 -0
- package/template/public/images/frameworks/angular-logo.svg +1 -0
- package/template/public/images/frameworks/js-logo.svg +1 -0
- package/template/public/images/frameworks/lit-logo.svg +1 -0
- package/template/public/images/frameworks/preact-logo.svg +6 -0
- package/template/public/images/frameworks/qwik-logo.svg +1 -0
- package/template/public/images/frameworks/react-logo.svg +1 -0
- package/template/public/images/frameworks/solid-logo.svg +1 -0
- package/template/public/images/frameworks/svelte-logo.svg +1 -0
- package/template/public/images/frameworks/vue-logo.svg +4 -0
- package/template/tsconfig.json +24 -0
- package/template/vite.config.ts +43 -0
- package/template/wrangler.jsonc +16 -0
- package/README.md +0 -161
- package/dist/server-73AVSOL5.js +0 -598
- package/src/admin/index.html +0 -13
- package/src/admin/server/index.ts +0 -138
- package/src/admin/server/routes/jobs.ts +0 -113
- package/src/admin/server/routes/status.ts +0 -57
- package/src/admin/ui/App.tsx +0 -332
- package/src/admin/ui/main.tsx +0 -19
- /package/{src/admin/ui → admin/app}/components/FileList.tsx +0 -0
- /package/{src/admin/ui → admin/app}/components/LangGrid.tsx +0 -0
- /package/{src/admin/ui → admin/app}/components/ProgressBar.tsx +0 -0
- /package/{src/admin/ui → admin/app}/lib/flags.ts +0 -0
|
@@ -0,0 +1,1029 @@
|
|
|
1
|
+
@import 'tailwindcss';
|
|
2
|
+
|
|
3
|
+
@plugin "@tailwindcss/typography";
|
|
4
|
+
|
|
5
|
+
@custom-variant dark (&:is(.dark, .dark *));
|
|
6
|
+
@custom-variant light (&:is(.light, .light *));
|
|
7
|
+
@custom-variant auto (&:is(.auto, .auto *));
|
|
8
|
+
@custom-variant aria-current (&[aria-current="location"]);
|
|
9
|
+
|
|
10
|
+
@theme {
|
|
11
|
+
/* Breakpoints */
|
|
12
|
+
--breakpoint-xs: 480px;
|
|
13
|
+
|
|
14
|
+
/* Fonts */
|
|
15
|
+
--font-sans:
|
|
16
|
+
'Inter', ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji',
|
|
17
|
+
'Segoe UI Emoji', Segoe UI Symbol, 'Noto Color Emoji';
|
|
18
|
+
|
|
19
|
+
/* Shadows */
|
|
20
|
+
--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.03);
|
|
21
|
+
--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.05), 0 1px 2px 0 rgba(0, 0, 0, 0.03);
|
|
22
|
+
--shadow-md:
|
|
23
|
+
0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03);
|
|
24
|
+
--shadow-lg:
|
|
25
|
+
0 10px 15px -3px rgba(0, 0, 0, 0.05), 0 4px 6px -2px rgba(0, 0, 0, 0.03);
|
|
26
|
+
--shadow-xl:
|
|
27
|
+
0 20px 25px -5px rgba(0, 0, 0, 0.05), 0 10px 10px -5px rgba(0, 0, 0, 0.02);
|
|
28
|
+
--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.2);
|
|
29
|
+
--shadow-3xl: 0 35px 60px -15px rgba(0, 0, 0, 0.25);
|
|
30
|
+
--shadow-inset: inset 0 2px 4px 0 rgba(0, 0, 0, 0.04);
|
|
31
|
+
|
|
32
|
+
/* Colors */
|
|
33
|
+
--color-twine-50: #f8f5ee;
|
|
34
|
+
--color-twine-100: #eee6d3;
|
|
35
|
+
--color-twine-200: #dfcda9;
|
|
36
|
+
--color-twine-300: #cdac77;
|
|
37
|
+
--color-twine-400: #bd9051;
|
|
38
|
+
--color-twine-500: #ae7d44;
|
|
39
|
+
--color-twine-600: #956339;
|
|
40
|
+
--color-twine-700: #784b30;
|
|
41
|
+
--color-twine-800: #653f2e;
|
|
42
|
+
--color-twine-900: #58362b;
|
|
43
|
+
--color-twine-950: #321c16;
|
|
44
|
+
|
|
45
|
+
--color-discord: #536bbd;
|
|
46
|
+
|
|
47
|
+
/* Neutral gray scale (no blue tint) */
|
|
48
|
+
--color-gray-50: #fafafa;
|
|
49
|
+
--color-gray-100: #f5f5f5;
|
|
50
|
+
--color-gray-200: #e5e5e5;
|
|
51
|
+
--color-gray-300: #d4d4d4;
|
|
52
|
+
--color-gray-400: #a3a3a3;
|
|
53
|
+
--color-gray-500: #737373;
|
|
54
|
+
--color-gray-600: #525252;
|
|
55
|
+
--color-gray-700: #404040;
|
|
56
|
+
--color-gray-800: #262626;
|
|
57
|
+
--color-gray-900: #171717;
|
|
58
|
+
--color-gray-950: #0a0a0a;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/* Safelist for dynamic colors */
|
|
62
|
+
@source inline('{bg-blue-{4,5,6}00,bg-emerald-500,bg-purple-500,bg-pink-500,bg-cyan-500,bg-slate-{4,5}00,bg-twine-700,bg-orange-{5,6,7}00,bg-yellow-500,bg-lime-700,bg-red-500,bg-green-500}/{20,30,40,80}');
|
|
63
|
+
@source inline('{hover:{bg-blue-{4,5,6}00,bg-emerald-500,bg-purple-500,bg-pink-500,bg-cyan-500,bg-slate-{4,5}00,bg-twine-700,bg-orange-{5,6,7}00,bg-yellow-500,bg-lime-700,bg-red-500,bg-green-500}/40}');
|
|
64
|
+
/* Black/gray-100 theme colors for ranger, config, devtools, mcp */
|
|
65
|
+
@source inline('dark:text-gray-100 dark:bg-gray-100 dark:border-gray-100/50 dark:from-gray-100 dark:via-gray-400/50 text-black bg-black border-black/50 from-black via-gray-600/50 to-gray-600 to-gray-400 dark:text-gray-900');
|
|
66
|
+
/* Accent colors for docs UI (sidebar, TOC, prev/next) */
|
|
67
|
+
@source inline('from-gray-700 to-gray-900 text-gray-700 dark:text-gray-300');
|
|
68
|
+
/* Library gradient/text colors used dynamically in DocsLayout, Navbar, LibraryCard */
|
|
69
|
+
@source inline('from-red-500 to-amber-500 text-amber-500 border-red-500/50 text-red-500');
|
|
70
|
+
@source inline('from-emerald-500 to-lime-600 text-emerald-500 border-emerald-500/50');
|
|
71
|
+
@source inline('from-cyan-500 to-blue-600 text-blue-600 text-cyan-500 border-blue-500/50 text-blue-500 bg-blue-500');
|
|
72
|
+
@source inline('from-yellow-500 to-yellow-600 text-yellow-600 text-yellow-500 border-yellow-500/50 bg-yellow-500');
|
|
73
|
+
@source inline('from-purple-500 to-violet-600 text-purple-600 text-purple-500 border-purple-500/50 bg-purple-500');
|
|
74
|
+
@source inline('from-blue-500 to-cyan-500 text-cyan-500 border-blue-500/50 bg-emerald-500 bg-red-500');
|
|
75
|
+
|
|
76
|
+
@layer base {
|
|
77
|
+
*,
|
|
78
|
+
::after,
|
|
79
|
+
::before,
|
|
80
|
+
::backdrop,
|
|
81
|
+
::file-selector-button {
|
|
82
|
+
border-color: var(--color-gray-200, currentcolor);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
:root {
|
|
86
|
+
--navbar-height: 50px;
|
|
87
|
+
scroll-padding-top: var(--navbar-height);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
button {
|
|
92
|
+
@apply cursor-pointer;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
@layer base {
|
|
96
|
+
html,
|
|
97
|
+
body {
|
|
98
|
+
@apply text-gray-900 dark:text-gray-200;
|
|
99
|
+
background-color: #fdfdfd; /* 99% white */
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
html.dark,
|
|
103
|
+
html.dark body {
|
|
104
|
+
background-color: #0a0a0a; /* 96% black */
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.using-mouse * {
|
|
108
|
+
outline: none !important;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
* {
|
|
112
|
+
scrollbar-color: var(--color-gray-400) var(--color-gray-100);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
*::-webkit-scrollbar,
|
|
116
|
+
* scrollbar {
|
|
117
|
+
width: 1rem;
|
|
118
|
+
height: 1rem;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
*::-webkit-scrollbar-track,
|
|
122
|
+
* scrollbar-track {
|
|
123
|
+
background: var(--color-gray-100);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
*::-webkit-scrollbar-thumb,
|
|
127
|
+
* scrollbar-thumb {
|
|
128
|
+
background: var(--color-gray-300);
|
|
129
|
+
border-radius: 0.5rem;
|
|
130
|
+
border: 3px solid var(--color-gray-100);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
html.dark {
|
|
134
|
+
&,
|
|
135
|
+
* {
|
|
136
|
+
color-scheme: dark;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
&,
|
|
140
|
+
* {
|
|
141
|
+
scrollbar-color: var(--color-gray-700) var(--color-gray-800);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
&::-webkit-scrollbar,
|
|
145
|
+
*::-webkit-scrollbar,
|
|
146
|
+
* scrollbar {
|
|
147
|
+
width: 1rem;
|
|
148
|
+
height: 1rem;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
& *::-webkit-scrollbar-track,
|
|
152
|
+
*::-webkit-scrollbar-track,
|
|
153
|
+
* scrollbar-track {
|
|
154
|
+
background: var(--color-gray-800);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
&::-webkit-scrollbar-thumb,
|
|
158
|
+
*::-webkit-scrollbar-thumb,
|
|
159
|
+
* scrollbar-thumb {
|
|
160
|
+
background: var(--color-gray-600);
|
|
161
|
+
border-radius: 0.5rem;
|
|
162
|
+
border: 3px solid var(--color-gray-800);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
[disabled] {
|
|
167
|
+
@apply opacity-50 pointer-events-none;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
#docs-details summary::-webkit-details-marker {
|
|
171
|
+
display: none;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
#docs-details .icon-close {
|
|
175
|
+
display: none;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
#docs-details[open] .icon-close {
|
|
179
|
+
display: block;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
#docs-details[open] .icon-open {
|
|
183
|
+
display: none;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
#docs-details[open] > summary + * {
|
|
187
|
+
height: auto;
|
|
188
|
+
max-height: calc(100vh - 62px);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
.anchor-heading {
|
|
192
|
+
text-decoration: none !important;
|
|
193
|
+
display: inline;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
.anchor-heading > *:after {
|
|
197
|
+
content: '#';
|
|
198
|
+
@apply relative opacity-0 ml-2 transition duration-100;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.anchor-heading:hover > *:after {
|
|
202
|
+
@apply opacity-50;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
:has(+ .anchor-heading) {
|
|
206
|
+
margin-bottom: 0 !important;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
.anchor-heading + * {
|
|
210
|
+
margin-top: 0 !important;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/* ============================================================================
|
|
215
|
+
Design System Utilities
|
|
216
|
+
============================================================================ */
|
|
217
|
+
|
|
218
|
+
/* Buttons - base styles applied to all .btn-* classes */
|
|
219
|
+
.btn-primary,
|
|
220
|
+
.btn-secondary,
|
|
221
|
+
.btn-danger,
|
|
222
|
+
.btn-ghost,
|
|
223
|
+
.btn-icon {
|
|
224
|
+
@apply inline-flex items-center justify-center gap-2 font-medium transition-colors;
|
|
225
|
+
@apply disabled:opacity-50 disabled:cursor-not-allowed;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
.btn-primary {
|
|
229
|
+
@apply px-4 py-2 rounded-lg;
|
|
230
|
+
@apply bg-blue-600 text-white hover:bg-blue-700;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
.btn-secondary {
|
|
234
|
+
@apply px-4 py-2 rounded-lg;
|
|
235
|
+
@apply bg-gray-100 text-gray-700 hover:bg-gray-200;
|
|
236
|
+
@apply dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
.btn-danger {
|
|
240
|
+
@apply px-4 py-2 rounded-lg;
|
|
241
|
+
@apply bg-red-600 text-white hover:bg-red-700;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
.btn-ghost {
|
|
245
|
+
@apply px-3 py-2 rounded-lg;
|
|
246
|
+
@apply text-gray-600 hover:bg-gray-100;
|
|
247
|
+
@apply dark:text-gray-400 dark:hover:bg-gray-800;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
.btn-icon {
|
|
251
|
+
@apply p-2 rounded-lg;
|
|
252
|
+
@apply text-gray-600 hover:bg-gray-100;
|
|
253
|
+
@apply dark:text-gray-400 dark:hover:bg-gray-700;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/* Form Inputs */
|
|
257
|
+
.input-base {
|
|
258
|
+
@apply w-full px-3 py-2 text-sm rounded-lg transition-colors;
|
|
259
|
+
@apply border border-gray-300 dark:border-gray-600;
|
|
260
|
+
@apply bg-white dark:bg-gray-800;
|
|
261
|
+
@apply text-gray-900 dark:text-white;
|
|
262
|
+
@apply placeholder:text-gray-400 dark:placeholder:text-gray-500;
|
|
263
|
+
@apply focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent;
|
|
264
|
+
@apply disabled:opacity-50 disabled:cursor-not-allowed;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/* Cards */
|
|
268
|
+
.card {
|
|
269
|
+
@apply rounded-xl transition-all duration-200;
|
|
270
|
+
@apply bg-white dark:bg-gray-800;
|
|
271
|
+
@apply border border-gray-200 dark:border-gray-700;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
.card-elevated {
|
|
275
|
+
@apply rounded-xl transition-all duration-200 shadow-md;
|
|
276
|
+
@apply bg-white/90 dark:bg-black/40 backdrop-blur-sm;
|
|
277
|
+
@apply border border-gray-200 dark:border-gray-700;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
.card-interactive {
|
|
281
|
+
@apply rounded-xl transition-all duration-200 shadow-md cursor-pointer;
|
|
282
|
+
@apply bg-white/90 dark:bg-black/40 backdrop-blur-sm;
|
|
283
|
+
@apply border border-gray-200 dark:border-gray-700;
|
|
284
|
+
@apply hover:shadow-lg;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/* Dropdown/Menu Containers */
|
|
288
|
+
.dropdown-menu {
|
|
289
|
+
@apply rounded-lg shadow-md overflow-hidden;
|
|
290
|
+
@apply bg-white dark:bg-gray-800;
|
|
291
|
+
@apply border border-gray-200 dark:border-gray-700;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
.dropdown-item {
|
|
295
|
+
@apply w-full px-4 py-2 text-left text-sm transition-colors;
|
|
296
|
+
@apply text-gray-700 dark:text-gray-300;
|
|
297
|
+
@apply hover:bg-gray-50 dark:hover:bg-gray-700;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
.dropdown-item-active {
|
|
301
|
+
@apply bg-blue-50 text-blue-600 dark:bg-blue-900/30 dark:text-blue-400;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
/* Badges - base styles applied to all .badge-* classes */
|
|
305
|
+
.badge-blue,
|
|
306
|
+
.badge-green,
|
|
307
|
+
.badge-red,
|
|
308
|
+
.badge-yellow,
|
|
309
|
+
.badge-gray {
|
|
310
|
+
@apply inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
.badge-blue {
|
|
314
|
+
@apply bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
.badge-green {
|
|
318
|
+
@apply bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
.badge-red {
|
|
322
|
+
@apply bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
.badge-yellow {
|
|
326
|
+
@apply bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
.badge-gray {
|
|
330
|
+
@apply bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-300;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
/* Text utilities */
|
|
334
|
+
.text-secondary {
|
|
335
|
+
@apply text-gray-600 dark:text-gray-400;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
.text-tertiary {
|
|
339
|
+
@apply text-gray-500 dark:text-gray-500;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
.text-link {
|
|
343
|
+
@apply text-blue-600 hover:text-blue-700 dark:text-blue-400 dark:hover:text-blue-300;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
/* ============================================================================ */
|
|
347
|
+
|
|
348
|
+
/* https://github.com/shikijs/twoslash/tree/main/packages/remark-shiki-twoslash#plugin-setup */
|
|
349
|
+
pre {
|
|
350
|
+
/* All code samples get a grey border, twoslash ones get a different color */
|
|
351
|
+
@apply text-black overflow-x-auto relative leading-tight;
|
|
352
|
+
}
|
|
353
|
+
pre.shiki {
|
|
354
|
+
overflow-x: auto;
|
|
355
|
+
padding: 1rem;
|
|
356
|
+
|
|
357
|
+
@apply bg-white;
|
|
358
|
+
|
|
359
|
+
&.aurora-x {
|
|
360
|
+
@apply text-gray-400 bg-gray-950;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
pre.shiki:hover .dim {
|
|
364
|
+
opacity: 1;
|
|
365
|
+
}
|
|
366
|
+
pre.shiki div.dim {
|
|
367
|
+
opacity: 0.5;
|
|
368
|
+
}
|
|
369
|
+
pre.shiki div.dim,
|
|
370
|
+
pre.shiki div.highlight {
|
|
371
|
+
margin: 0;
|
|
372
|
+
padding: 0;
|
|
373
|
+
}
|
|
374
|
+
pre.shiki div.highlight {
|
|
375
|
+
opacity: 1;
|
|
376
|
+
background-color: #f1f8ff;
|
|
377
|
+
}
|
|
378
|
+
pre.shiki div.line {
|
|
379
|
+
min-height: auto;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
/** Don't show the language identifiers */
|
|
383
|
+
pre.shiki .language-id {
|
|
384
|
+
display: none;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
span.line {
|
|
388
|
+
display: inline-block;
|
|
389
|
+
width: 100%;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
pre.has-diff span.diff {
|
|
393
|
+
width: calc(100% + 20px);
|
|
394
|
+
margin-left: -10px;
|
|
395
|
+
padding-right: 20px;
|
|
396
|
+
padding-left: 10px;
|
|
397
|
+
padding-top: 4px;
|
|
398
|
+
padding-bottom: 4px;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
pre.has-diff span.remove {
|
|
402
|
+
background-color: #f43f5e29;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
pre.has-diff span.add {
|
|
406
|
+
background-color: #10b98129;
|
|
407
|
+
}
|
|
408
|
+
/* Visually differentiates twoslash code samples */
|
|
409
|
+
pre.twoslash {
|
|
410
|
+
border-color: #719af4;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
/** When you mouse over the pre, show the underlines */
|
|
414
|
+
pre.twoslash:hover data-lsp {
|
|
415
|
+
border-color: #747474;
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
/** The tooltip-like which provides the LSP response */
|
|
419
|
+
pre.twoslash data-lsp:hover::before {
|
|
420
|
+
content: attr(lsp);
|
|
421
|
+
position: absolute;
|
|
422
|
+
transform: translate(0, 1rem);
|
|
423
|
+
|
|
424
|
+
color: #fff;
|
|
425
|
+
text-align: left;
|
|
426
|
+
padding: 5px 8px;
|
|
427
|
+
border-radius: 2px;
|
|
428
|
+
font-family:
|
|
429
|
+
'JetBrains Mono',
|
|
430
|
+
Menlo,
|
|
431
|
+
Monaco,
|
|
432
|
+
Consolas,
|
|
433
|
+
monospace,
|
|
434
|
+
Courier New;
|
|
435
|
+
font-size: 14px;
|
|
436
|
+
white-space: pre-wrap;
|
|
437
|
+
z-index: 100;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
pre .code-container {
|
|
441
|
+
overflow: auto;
|
|
442
|
+
}
|
|
443
|
+
/* The try button */
|
|
444
|
+
pre .code-container > a {
|
|
445
|
+
position: absolute;
|
|
446
|
+
right: 8px;
|
|
447
|
+
bottom: 8px;
|
|
448
|
+
border-radius: 4px;
|
|
449
|
+
border: 1px solid #719af4;
|
|
450
|
+
padding: 0 8px;
|
|
451
|
+
color: #719af4;
|
|
452
|
+
text-decoration: none;
|
|
453
|
+
opacity: 0;
|
|
454
|
+
transition-timing-function: ease;
|
|
455
|
+
transition: opacity 0.3s;
|
|
456
|
+
}
|
|
457
|
+
/* Respect no animations */
|
|
458
|
+
@media (prefers-reduced-motion: reduce) {
|
|
459
|
+
pre .code-container > a {
|
|
460
|
+
transition: none;
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
pre .code-container > a:hover {
|
|
464
|
+
color: white;
|
|
465
|
+
background-color: #719af4;
|
|
466
|
+
}
|
|
467
|
+
pre .code-container:hover a {
|
|
468
|
+
opacity: 1;
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
pre code {
|
|
472
|
+
font-size: 12px;
|
|
473
|
+
font-family:
|
|
474
|
+
'JetBrains Mono',
|
|
475
|
+
Menlo,
|
|
476
|
+
Monaco,
|
|
477
|
+
Consolas,
|
|
478
|
+
monospace,
|
|
479
|
+
Courier New;
|
|
480
|
+
white-space: pre;
|
|
481
|
+
-webkit-overflow-scrolling: touch;
|
|
482
|
+
}
|
|
483
|
+
pre code a {
|
|
484
|
+
text-decoration: none;
|
|
485
|
+
}
|
|
486
|
+
pre data-err {
|
|
487
|
+
/* Extracted from VS Code */
|
|
488
|
+
background: url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%206%203'%20enable-background%3D'new%200%200%206%203'%20height%3D'3'%20width%3D'6'%3E%3Cg%20fill%3D'%23c94824'%3E%3Cpolygon%20points%3D'5.5%2C0%202.5%2C3%201.1%2C3%204.1%2C0'%2F%3E%3Cpolygon%20points%3D'4%2C0%206%2C2%206%2C0.6%205.4%2C0'%2F%3E%3Cpolygon%20points%3D'0%2C2%201%2C3%202.4%2C3%200%2C0.6'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")
|
|
489
|
+
repeat-x bottom left;
|
|
490
|
+
padding-bottom: 3px;
|
|
491
|
+
}
|
|
492
|
+
pre .query {
|
|
493
|
+
margin-bottom: 10px;
|
|
494
|
+
color: #137998;
|
|
495
|
+
display: inline-block;
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
/* In order to have the 'popped out' style design and to not break the layout
|
|
499
|
+
/* we need to place a fake and un-selectable copy of the error which _isn't_ broken out
|
|
500
|
+
/* behind the actual error message.
|
|
501
|
+
|
|
502
|
+
/* This sections keeps both of those two in in sync */
|
|
503
|
+
|
|
504
|
+
pre .error,
|
|
505
|
+
pre .error-behind {
|
|
506
|
+
margin-left: -14px;
|
|
507
|
+
margin-top: 8px;
|
|
508
|
+
margin-bottom: 4px;
|
|
509
|
+
padding: 6px;
|
|
510
|
+
padding-left: 14px;
|
|
511
|
+
width: calc(100% - 20px);
|
|
512
|
+
white-space: pre-wrap;
|
|
513
|
+
display: block;
|
|
514
|
+
}
|
|
515
|
+
pre .error {
|
|
516
|
+
position: absolute;
|
|
517
|
+
background-color: #fee;
|
|
518
|
+
border-left: 2px solid #bf1818;
|
|
519
|
+
/* Give the space to the error code */
|
|
520
|
+
display: flex;
|
|
521
|
+
align-items: center;
|
|
522
|
+
color: black;
|
|
523
|
+
}
|
|
524
|
+
pre .error .code {
|
|
525
|
+
display: none;
|
|
526
|
+
}
|
|
527
|
+
pre .error-behind {
|
|
528
|
+
user-select: none;
|
|
529
|
+
visibility: transparent;
|
|
530
|
+
color: #fee;
|
|
531
|
+
}
|
|
532
|
+
/* Queries */
|
|
533
|
+
pre .arrow {
|
|
534
|
+
/* Transparent background */
|
|
535
|
+
background-color: #eee;
|
|
536
|
+
position: relative;
|
|
537
|
+
top: -7px;
|
|
538
|
+
margin-left: 0.1rem;
|
|
539
|
+
/* Edges */
|
|
540
|
+
border-left: 1px solid #eee;
|
|
541
|
+
border-top: 1px solid #eee;
|
|
542
|
+
transform: translateY(25%) rotate(45deg);
|
|
543
|
+
/* Size */
|
|
544
|
+
height: 8px;
|
|
545
|
+
width: 8px;
|
|
546
|
+
}
|
|
547
|
+
pre .popover {
|
|
548
|
+
margin-bottom: 10px;
|
|
549
|
+
background-color: #eee;
|
|
550
|
+
display: inline-block;
|
|
551
|
+
padding: 0 0.5rem 0.3rem;
|
|
552
|
+
margin-top: 10px;
|
|
553
|
+
border-radius: 3px;
|
|
554
|
+
}
|
|
555
|
+
/* Completion */
|
|
556
|
+
pre .inline-completions ul.dropdown {
|
|
557
|
+
display: inline-block;
|
|
558
|
+
position: absolute;
|
|
559
|
+
width: 240px;
|
|
560
|
+
background-color: gainsboro;
|
|
561
|
+
color: grey;
|
|
562
|
+
padding-top: 4px;
|
|
563
|
+
font-family: var(--code-font);
|
|
564
|
+
font-size: 0.8rem;
|
|
565
|
+
margin: 0;
|
|
566
|
+
padding: 0;
|
|
567
|
+
border-left: 4px solid #4b9edd;
|
|
568
|
+
}
|
|
569
|
+
pre .inline-completions ul.dropdown::before {
|
|
570
|
+
background-color: #4b9edd;
|
|
571
|
+
width: 2px;
|
|
572
|
+
position: absolute;
|
|
573
|
+
top: -1.2rem;
|
|
574
|
+
left: -3px;
|
|
575
|
+
content: ' ';
|
|
576
|
+
}
|
|
577
|
+
pre .inline-completions ul.dropdown li {
|
|
578
|
+
overflow-x: hidden;
|
|
579
|
+
padding-left: 4px;
|
|
580
|
+
margin-bottom: 4px;
|
|
581
|
+
}
|
|
582
|
+
pre .inline-completions ul.dropdown li.deprecated {
|
|
583
|
+
text-decoration: line-through;
|
|
584
|
+
}
|
|
585
|
+
pre .inline-completions ul.dropdown li span.result-found {
|
|
586
|
+
color: #4b9edd;
|
|
587
|
+
}
|
|
588
|
+
pre .inline-completions ul.dropdown li span.result {
|
|
589
|
+
width: 100px;
|
|
590
|
+
color: black;
|
|
591
|
+
display: inline-block;
|
|
592
|
+
}
|
|
593
|
+
.dark-theme .markdown pre {
|
|
594
|
+
background-color: #d8d8d8;
|
|
595
|
+
border-color: #ddd;
|
|
596
|
+
filter: invert(98%) hue-rotate(180deg);
|
|
597
|
+
}
|
|
598
|
+
data-lsp {
|
|
599
|
+
/* Ensures there's no 1px jump when the hover happens */
|
|
600
|
+
border-bottom: 1px dotted transparent;
|
|
601
|
+
/* Fades in unobtrusively */
|
|
602
|
+
transition-timing-function: ease;
|
|
603
|
+
transition: border-color 0.3s;
|
|
604
|
+
}
|
|
605
|
+
/* Respect people's wishes to not have animations */
|
|
606
|
+
@media (prefers-reduced-motion: reduce) {
|
|
607
|
+
data-lsp {
|
|
608
|
+
transition: none;
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
/** Annotations support, providing a tool for meta commentary */
|
|
613
|
+
.tag-container {
|
|
614
|
+
position: relative;
|
|
615
|
+
}
|
|
616
|
+
.tag-container .twoslash-annotation {
|
|
617
|
+
position: absolute;
|
|
618
|
+
font-family:
|
|
619
|
+
'JetBrains Mono',
|
|
620
|
+
Menlo,
|
|
621
|
+
Monaco,
|
|
622
|
+
Consolas,
|
|
623
|
+
monospace,
|
|
624
|
+
Courier New;
|
|
625
|
+
right: -10px;
|
|
626
|
+
/** Default annotation text to 200px */
|
|
627
|
+
width: 200px;
|
|
628
|
+
color: #187abf;
|
|
629
|
+
background-color: #fcf3d9 bb;
|
|
630
|
+
}
|
|
631
|
+
.tag-container .twoslash-annotation p {
|
|
632
|
+
text-align: left;
|
|
633
|
+
font-size: 0.8rem;
|
|
634
|
+
line-height: 0.9rem;
|
|
635
|
+
}
|
|
636
|
+
.tag-container .twoslash-annotation svg {
|
|
637
|
+
float: left;
|
|
638
|
+
margin-left: -44px;
|
|
639
|
+
}
|
|
640
|
+
.tag-container .twoslash-annotation.left {
|
|
641
|
+
right: auto;
|
|
642
|
+
left: -200px;
|
|
643
|
+
}
|
|
644
|
+
.tag-container .twoslash-annotation.left svg {
|
|
645
|
+
float: right;
|
|
646
|
+
margin-right: -5px;
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
/** Support for showing console log/warn/errors inline */
|
|
650
|
+
pre .logger {
|
|
651
|
+
display: flex;
|
|
652
|
+
align-items: center;
|
|
653
|
+
color: black;
|
|
654
|
+
padding: 6px;
|
|
655
|
+
padding-left: 8px;
|
|
656
|
+
width: calc(100% - 19px);
|
|
657
|
+
white-space: pre-wrap;
|
|
658
|
+
}
|
|
659
|
+
pre .logger svg {
|
|
660
|
+
margin-right: 9px;
|
|
661
|
+
}
|
|
662
|
+
pre .logger.error-log {
|
|
663
|
+
background-color: #fee;
|
|
664
|
+
border-left: 2px solid #bf1818;
|
|
665
|
+
}
|
|
666
|
+
pre .logger.warn-log {
|
|
667
|
+
background-color: #ffe;
|
|
668
|
+
border-left: 2px solid #eae662;
|
|
669
|
+
}
|
|
670
|
+
pre .logger.log-log {
|
|
671
|
+
background-color: #e9e9e9;
|
|
672
|
+
border-left: 2px solid #ababab;
|
|
673
|
+
}
|
|
674
|
+
pre .logger.log-log svg {
|
|
675
|
+
margin-left: 6px;
|
|
676
|
+
margin-right: 9px;
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
html:not(.dark) .shiki.aurora-x {
|
|
680
|
+
display: none;
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
html.dark .shiki.github-light {
|
|
684
|
+
display: none;
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
/* Improve comment contrast in dark mode */
|
|
688
|
+
html.dark .shiki.aurora-x .token.comment,
|
|
689
|
+
html.dark .shiki.aurora-x span[style*='color:#546E7A'],
|
|
690
|
+
html.dark .shiki.aurora-x span[style*='color:#546E7A'],
|
|
691
|
+
html.dark .shiki.aurora-x span[style*='color:#546E7A'],
|
|
692
|
+
html.dark .shiki.aurora-x span[style*='color:#546E7A'] {
|
|
693
|
+
color: #9099c0 !important;
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
/* TanStack Router Devtools */
|
|
697
|
+
|
|
698
|
+
.TanStackRouterDevtools > button {
|
|
699
|
+
@apply rotate-90 origin-top-right -translate-y-[50px] translate-x-2 rounded-t-none bg-white dark:bg-gray-900;
|
|
700
|
+
@apply border-t-0 border-gray-500/10 shadow-md text-gray-800;
|
|
701
|
+
}
|
|
702
|
+
|
|
703
|
+
/* Hubspot */
|
|
704
|
+
|
|
705
|
+
#hubspot-messages-iframe-container {
|
|
706
|
+
@apply translate-x-[10px] translate-y-[10px];
|
|
707
|
+
@apply dark:scheme-dark;
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
/* Markdown Alerts */
|
|
711
|
+
|
|
712
|
+
.not-prose .markdown-alert {
|
|
713
|
+
@apply pt-2 pb-4 px-3 flex flex-col gap-2;
|
|
714
|
+
p {
|
|
715
|
+
@apply my-2;
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
.markdown-alert {
|
|
720
|
+
@apply border-l-4 pl-4 py-1.5 my-2 bg-white dark:bg-gray-900 rounded-r-sm;
|
|
721
|
+
}
|
|
722
|
+
|
|
723
|
+
.markdown-alert > * {
|
|
724
|
+
@apply m-0;
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
.markdown-alert.markdown-alert-note {
|
|
728
|
+
@apply border-blue-500/90;
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
.markdown-alert.markdown-alert-note .markdown-alert-title svg {
|
|
732
|
+
@apply fill-blue-500/90;
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
.markdown-alert.markdown-alert-warning {
|
|
736
|
+
@apply border-yellow-500/90;
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
.markdown-alert.markdown-alert-warning .markdown-alert-title svg {
|
|
740
|
+
@apply fill-yellow-500/90;
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
.markdown-alert.markdown-alert-caution {
|
|
744
|
+
@apply border-red-500/90;
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
.markdown-alert.markdown-alert-caution .markdown-alert-title svg {
|
|
748
|
+
@apply fill-red-500/90;
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
.markdown-alert.markdown-alert-tip {
|
|
752
|
+
@apply border-green-500/90;
|
|
753
|
+
}
|
|
754
|
+
|
|
755
|
+
.markdown-alert.markdown-alert-tip .markdown-alert-title svg {
|
|
756
|
+
@apply fill-green-500/90;
|
|
757
|
+
}
|
|
758
|
+
|
|
759
|
+
.markdown-alert.markdown-alert-important {
|
|
760
|
+
@apply border-purple-500/90;
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
.markdown-alert.markdown-alert-important .markdown-alert-title svg {
|
|
764
|
+
@apply fill-purple-500/90;
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
.markdown-alert .markdown-alert-title {
|
|
768
|
+
@apply flex justify-start items-center font-medium;
|
|
769
|
+
}
|
|
770
|
+
|
|
771
|
+
.markdown-alert .markdown-alert-content {
|
|
772
|
+
@apply pr-5;
|
|
773
|
+
}
|
|
774
|
+
|
|
775
|
+
.bg-clip-text {
|
|
776
|
+
@apply print:text-gray-800;
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
[data-tab] {
|
|
780
|
+
@apply text-sm leading-normal;
|
|
781
|
+
}
|
|
782
|
+
|
|
783
|
+
[data-tab] a {
|
|
784
|
+
@apply underline font-[500];
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
[data-tab] .markdown-alert {
|
|
788
|
+
@apply bg-gray-100 dark:bg-gray-900;
|
|
789
|
+
}
|
|
790
|
+
|
|
791
|
+
[data-tab] > .markdown-alert [aria-label] svg {
|
|
792
|
+
@apply stroke-current fill-current;
|
|
793
|
+
}
|
|
794
|
+
|
|
795
|
+
mark {
|
|
796
|
+
@apply bg-yellow-400 rounded-md px-px mx-px;
|
|
797
|
+
}
|
|
798
|
+
|
|
799
|
+
.dark g[aria-label='tip'] > g > path {
|
|
800
|
+
@apply fill-gray-800/90 stroke-gray-500/20;
|
|
801
|
+
}
|
|
802
|
+
|
|
803
|
+
@font-face {
|
|
804
|
+
font-display: swap;
|
|
805
|
+
font-family: 'Inter';
|
|
806
|
+
font-style: normal;
|
|
807
|
+
font-weight: 100 900;
|
|
808
|
+
src: url('/fonts/Inter-latin-ext.woff2') format('woff2');
|
|
809
|
+
unicode-range:
|
|
810
|
+
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304,
|
|
811
|
+
U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB,
|
|
812
|
+
U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
|
813
|
+
}
|
|
814
|
+
|
|
815
|
+
@font-face {
|
|
816
|
+
font-display: swap;
|
|
817
|
+
font-family: 'Inter';
|
|
818
|
+
font-style: normal;
|
|
819
|
+
font-weight: 100 900;
|
|
820
|
+
src: url('/fonts/Inter-latin.woff2') format('woff2');
|
|
821
|
+
unicode-range:
|
|
822
|
+
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
|
|
823
|
+
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212,
|
|
824
|
+
U+2215, U+FEFF, U+FFFD;
|
|
825
|
+
}
|
|
826
|
+
|
|
827
|
+
@keyframes fadeIn {
|
|
828
|
+
from {
|
|
829
|
+
opacity: 0;
|
|
830
|
+
filter: blur(4px);
|
|
831
|
+
transform: scale(0.97);
|
|
832
|
+
}
|
|
833
|
+
to {
|
|
834
|
+
opacity: 1;
|
|
835
|
+
filter: blur(0);
|
|
836
|
+
transform: scale(1);
|
|
837
|
+
}
|
|
838
|
+
}
|
|
839
|
+
|
|
840
|
+
@keyframes pulseScale {
|
|
841
|
+
0% {
|
|
842
|
+
transform: scale(1);
|
|
843
|
+
}
|
|
844
|
+
50% {
|
|
845
|
+
transform: scale(var(--scale-factor, 1.1));
|
|
846
|
+
}
|
|
847
|
+
100% {
|
|
848
|
+
transform: scale(1);
|
|
849
|
+
}
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
@property --ship-x {
|
|
853
|
+
syntax: '<length>';
|
|
854
|
+
inherits: true;
|
|
855
|
+
initial-value: 70px;
|
|
856
|
+
}
|
|
857
|
+
|
|
858
|
+
@property --ship-y {
|
|
859
|
+
syntax: '<length>';
|
|
860
|
+
inherits: true;
|
|
861
|
+
initial-value: 2.5rem;
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
@keyframes ship-peek {
|
|
865
|
+
0%,
|
|
866
|
+
100% {
|
|
867
|
+
transform: translateX(-50%) translateY(0) scale(1) scaleX(-1);
|
|
868
|
+
}
|
|
869
|
+
12% {
|
|
870
|
+
transform: translateX(calc(-50% - var(--ship-x)))
|
|
871
|
+
translateY(calc(-1 * var(--ship-y))) scale(1.15) scaleX(-1);
|
|
872
|
+
}
|
|
873
|
+
32% {
|
|
874
|
+
transform: translateX(calc(-50% - var(--ship-x)))
|
|
875
|
+
translateY(calc(-1 * var(--ship-y))) scale(1.15) scaleX(-1);
|
|
876
|
+
}
|
|
877
|
+
35% {
|
|
878
|
+
transform: translateX(-50%) translateY(0) scale(1) scaleX(-1);
|
|
879
|
+
}
|
|
880
|
+
}
|
|
881
|
+
|
|
882
|
+
@keyframes ship-pointer-events {
|
|
883
|
+
0%,
|
|
884
|
+
11%,
|
|
885
|
+
33%,
|
|
886
|
+
100% {
|
|
887
|
+
pointer-events: none;
|
|
888
|
+
}
|
|
889
|
+
12%,
|
|
890
|
+
32% {
|
|
891
|
+
pointer-events: auto;
|
|
892
|
+
}
|
|
893
|
+
}
|
|
894
|
+
|
|
895
|
+
.animate-ship-peek {
|
|
896
|
+
animation: ship-peek 10s ease-in-out infinite;
|
|
897
|
+
transform: translateX(-50%);
|
|
898
|
+
}
|
|
899
|
+
|
|
900
|
+
.animate-ship-peek-clickable {
|
|
901
|
+
animation:
|
|
902
|
+
ship-peek 10s ease-in-out infinite,
|
|
903
|
+
ship-pointer-events 10s ease-in-out infinite;
|
|
904
|
+
transform: translateX(-50%);
|
|
905
|
+
pointer-events: none;
|
|
906
|
+
}
|
|
907
|
+
|
|
908
|
+
/* Dropdown animations */
|
|
909
|
+
@keyframes dropdown-in {
|
|
910
|
+
from {
|
|
911
|
+
opacity: 0;
|
|
912
|
+
transform: scale(0.95) translateY(-4px);
|
|
913
|
+
}
|
|
914
|
+
to {
|
|
915
|
+
opacity: 1;
|
|
916
|
+
transform: scale(1) translateY(0);
|
|
917
|
+
}
|
|
918
|
+
}
|
|
919
|
+
|
|
920
|
+
@keyframes dropdown-out {
|
|
921
|
+
from {
|
|
922
|
+
opacity: 1;
|
|
923
|
+
transform: scale(1) translateY(0);
|
|
924
|
+
}
|
|
925
|
+
to {
|
|
926
|
+
opacity: 0;
|
|
927
|
+
transform: scale(0.95) translateY(-4px);
|
|
928
|
+
}
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
.dropdown-content {
|
|
932
|
+
animation: dropdown-in 150ms ease-out;
|
|
933
|
+
}
|
|
934
|
+
|
|
935
|
+
.dropdown-content[data-state='closed'] {
|
|
936
|
+
animation: dropdown-out 100ms ease-in;
|
|
937
|
+
}
|
|
938
|
+
|
|
939
|
+
/* Doc Feedback Styles */
|
|
940
|
+
.doc-feedback-block {
|
|
941
|
+
transition:
|
|
942
|
+
background-color 0.2s ease,
|
|
943
|
+
outline-color 0.2s ease;
|
|
944
|
+
outline: 1px solid transparent;
|
|
945
|
+
outline-offset: -1px;
|
|
946
|
+
}
|
|
947
|
+
|
|
948
|
+
.doc-feedback-block-highlighted {
|
|
949
|
+
background-color: rgba(59, 130, 246, 0.03);
|
|
950
|
+
outline-color: rgba(59, 130, 246, 0.2);
|
|
951
|
+
border-radius: 0.25rem;
|
|
952
|
+
}
|
|
953
|
+
|
|
954
|
+
.dark .doc-feedback-block-highlighted {
|
|
955
|
+
background-color: rgba(59, 130, 246, 0.05);
|
|
956
|
+
outline-color: rgba(59, 130, 246, 0.3);
|
|
957
|
+
}
|
|
958
|
+
|
|
959
|
+
/* Icons */
|
|
960
|
+
|
|
961
|
+
.lucide {
|
|
962
|
+
stroke-width: 2.25;
|
|
963
|
+
width: 1em;
|
|
964
|
+
height: 1em;
|
|
965
|
+
}
|
|
966
|
+
|
|
967
|
+
/* Consecutive code blocks - no gap when under headings */
|
|
968
|
+
[data-tab] .codeblock + .codeblock {
|
|
969
|
+
@apply mt-0 border-t-0 rounded-t-none;
|
|
970
|
+
}
|
|
971
|
+
|
|
972
|
+
[data-tab] .codeblock:has(+ .codeblock) {
|
|
973
|
+
@apply rounded-b-none;
|
|
974
|
+
}
|
|
975
|
+
/* File tabs variant - minimal code blocks with floating copy button */
|
|
976
|
+
.file-tabs-panel .codeblock {
|
|
977
|
+
@apply rounded-t-none border-t-0 my-0;
|
|
978
|
+
}
|
|
979
|
+
|
|
980
|
+
/* Hide the title bar but keep copy button accessible */
|
|
981
|
+
.file-tabs-panel .codeblock > div:first-child {
|
|
982
|
+
@apply absolute right-2 top-2 bg-transparent border-none p-0 z-10;
|
|
983
|
+
}
|
|
984
|
+
|
|
985
|
+
/* Hide the title text, keep only the button */
|
|
986
|
+
.file-tabs-panel .codeblock > div:first-child > div:first-child {
|
|
987
|
+
@apply hidden;
|
|
988
|
+
}
|
|
989
|
+
|
|
990
|
+
/* Package manager tabs - minimal code blocks with floating copy button */
|
|
991
|
+
.package-manager-tabs [data-tab] .codeblock {
|
|
992
|
+
@apply rounded-t-none border-t-0 my-0;
|
|
993
|
+
}
|
|
994
|
+
|
|
995
|
+
.package-manager-tabs [data-tab] .codeblock > div:first-child {
|
|
996
|
+
@apply absolute right-2 top-2 bg-transparent border-none p-0 z-10;
|
|
997
|
+
}
|
|
998
|
+
|
|
999
|
+
.package-manager-tabs .codeblock {
|
|
1000
|
+
border: none;
|
|
1001
|
+
}
|
|
1002
|
+
|
|
1003
|
+
.package-manager-tabs
|
|
1004
|
+
[data-tab]
|
|
1005
|
+
.codeblock
|
|
1006
|
+
> div:first-child
|
|
1007
|
+
> div:first-child {
|
|
1008
|
+
@apply hidden;
|
|
1009
|
+
}
|
|
1010
|
+
|
|
1011
|
+
/* Remove padding from tab content wrapper for package manager */
|
|
1012
|
+
.package-manager-tabs .not-prose > div:last-child {
|
|
1013
|
+
@apply p-0 border-none rounded-b-none bg-transparent;
|
|
1014
|
+
}
|
|
1015
|
+
|
|
1016
|
+
/* Restore bottom border radius on the code block itself */
|
|
1017
|
+
.package-manager-tabs [data-tab] .codeblock {
|
|
1018
|
+
@apply rounded-b-md;
|
|
1019
|
+
}
|
|
1020
|
+
|
|
1021
|
+
/* Framework code blocks - single blocks look like regular code blocks */
|
|
1022
|
+
.framework-code-block > .codeblock {
|
|
1023
|
+
@apply my-4;
|
|
1024
|
+
}
|
|
1025
|
+
|
|
1026
|
+
/* Tab content - add padding when it's not just a code block */
|
|
1027
|
+
[data-tab]:not(:has(> .codeblock:only-child)) {
|
|
1028
|
+
@apply px-4;
|
|
1029
|
+
}
|