radiant-docs 0.1.58 → 0.1.60
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 +1 -1
- package/template/astro.config.mjs +24 -2
- package/template/package-lock.json +216 -513
- package/template/package.json +13 -3
- package/template/scripts/generate-og-images.mjs +338 -6
- package/template/scripts/generate-og-metadata.mjs +29 -0
- package/template/src/components/Footer.astro +1 -1
- package/template/src/components/Header.astro +6 -13
- package/template/src/components/MdxPage.astro +3 -1
- package/template/src/components/OpenApiPage.astro +26 -832
- package/template/src/components/Sidebar.astro +1 -1
- package/template/src/components/SidebarGroup.astro +1 -1
- package/template/src/components/ThemeSwitcher.astro +5 -15
- package/template/src/components/chat/AssistantEmbedPanel.tsx +1 -1
- package/template/src/components/chat/AssistantEmbedPanelPage.astro +15 -2
- package/template/src/components/endpoint/PlaygroundButton.astro +1 -1
- package/template/src/components/endpoint/PlaygroundField.astro +1 -1
- package/template/src/components/endpoint/PlaygroundForm.astro +9 -5
- package/template/src/components/endpoint/ResponseFields.astro +3 -3
- package/template/src/components/ui/Field.astro +4 -4
- package/template/src/components/user/Callout.astro +2 -2
- package/template/src/components/user/Card.astro +2 -2
- package/template/src/components/user/Step.astro +3 -1
- package/template/src/layouts/Layout.astro +21 -46
- package/template/src/lib/ai-artifacts.ts +792 -0
- package/template/src/lib/font-css.ts +376 -0
- package/template/src/lib/mdx/remark-resolve-internal-links.ts +22 -8
- package/template/src/lib/oas.ts +5 -1
- package/template/src/lib/openapi/operation-doc.ts +1150 -0
- package/template/src/lib/page-description.ts +20 -0
- package/template/src/lib/routes.ts +73 -18
- package/template/src/pages/-/fonts/[...font].ts +50 -0
- package/template/src/pages/404.astro +2 -2
- package/template/src/pages/[...slug]/index.md.ts +35 -0
- package/template/src/pages/[...spec].json.ts +33 -0
- package/template/src/pages/[...spec].yaml.ts +33 -0
- package/template/src/pages/[...spec].yml.ts +33 -0
- package/template/src/pages/index.md.ts +17 -0
- package/template/src/pages/llms-full.txt.ts +11 -0
- package/template/src/pages/llms.txt.ts +11 -0
- package/template/src/styles/global.css +32 -7
- package/template/src/assets/fonts/geist-mono/cyrillic.woff2 +0 -0
- package/template/src/assets/fonts/geist-mono/latin-ext.woff2 +0 -0
- package/template/src/assets/fonts/geist-mono/latin.woff2 +0 -0
- package/template/src/assets/fonts/google-sans-flex/canadian-aboriginal.woff2 +0 -0
- package/template/src/assets/fonts/google-sans-flex/cherokee.woff2 +0 -0
- package/template/src/assets/fonts/google-sans-flex/latin-ext.woff2 +0 -0
- package/template/src/assets/fonts/google-sans-flex/latin.woff2 +0 -0
- package/template/src/assets/fonts/google-sans-flex/math.woff2 +0 -0
- package/template/src/assets/fonts/google-sans-flex/nushu.woff2 +0 -0
- package/template/src/assets/fonts/google-sans-flex/symbols.woff2 +0 -0
- package/template/src/assets/fonts/google-sans-flex/syriac.woff2 +0 -0
- package/template/src/assets/fonts/google-sans-flex/tifinagh.woff2 +0 -0
- package/template/src/assets/fonts/google-sans-flex/vietnamese.woff2 +0 -0
- package/template/src/styles/geist-mono.css +0 -33
- package/template/src/styles/google-sans-flex.css +0 -143
- package/template/src/styles/vaul.css +0 -255
|
@@ -24,7 +24,7 @@ const config: DocsConfig = await getConfig();
|
|
|
24
24
|
askAiEnabled ? "justify-start" : "justify-end",
|
|
25
25
|
]}
|
|
26
26
|
>
|
|
27
|
-
<span class="text-neutral-400 text-xs font-
|
|
27
|
+
<span class="text-neutral-400 text-xs font-normal">Theme</span>
|
|
28
28
|
<ThemeSwitcher />
|
|
29
29
|
</div>
|
|
30
30
|
</aside>
|
|
@@ -18,7 +18,7 @@ const groupSlug = slugify(item.group);
|
|
|
18
18
|
const currentPrefix = parentSlug ? `${parentSlug}/${groupSlug}` : groupSlug;
|
|
19
19
|
---
|
|
20
20
|
|
|
21
|
-
<li class="my-8 first:
|
|
21
|
+
<li class="my-8 first:mt-0 last:mb-0">
|
|
22
22
|
<div class:list={["text-sm font-semibold mb-2 flex items-center gap-2 px-2"]}>
|
|
23
23
|
{item.icon && <Icon name={item.icon} class="size-4 text-neutral-500" />}
|
|
24
24
|
{item.group}
|
|
@@ -4,15 +4,15 @@ import { Icon } from "astro-icon/components";
|
|
|
4
4
|
|
|
5
5
|
<div
|
|
6
6
|
x-data="{
|
|
7
|
-
|
|
7
|
+
initialTheme: (() => {
|
|
8
8
|
const mode = new URLSearchParams(window.location.search).get('mode');
|
|
9
9
|
return mode === 'light' || mode === 'dark' ? mode : null;
|
|
10
10
|
})(),
|
|
11
11
|
theme: localStorage.getItem('theme') || 'system',
|
|
12
12
|
themeSwitchFrameId: null,
|
|
13
13
|
init() {
|
|
14
|
-
if (this.
|
|
15
|
-
this.theme = this.
|
|
14
|
+
if (this.initialTheme) {
|
|
15
|
+
this.theme = this.initialTheme;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
this.updateDOM();
|
|
@@ -22,13 +22,6 @@ import { Icon } from "astro-icon/components";
|
|
|
22
22
|
|
|
23
23
|
// Watch for changes to the 'theme' state
|
|
24
24
|
this.$watch('theme', val => {
|
|
25
|
-
if (this.forcedTheme) {
|
|
26
|
-
this.theme = this.forcedTheme;
|
|
27
|
-
this.updateDOM();
|
|
28
|
-
this.$nextTick(() => this.updateMarker());
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
25
|
localStorage.setItem('theme', val);
|
|
33
26
|
this.updateDOM();
|
|
34
27
|
this.$nextTick(() => this.updateMarker())
|
|
@@ -46,7 +39,7 @@ import { Icon } from "astro-icon/components";
|
|
|
46
39
|
updateDOM() {
|
|
47
40
|
const root = document.documentElement;
|
|
48
41
|
root.classList.add('is-switching-theme');
|
|
49
|
-
const activeTheme = this.
|
|
42
|
+
const activeTheme = this.theme;
|
|
50
43
|
const isDark = activeTheme === 'dark' ||
|
|
51
44
|
(activeTheme === 'system' && window.matchMedia('(prefers-color-scheme: dark)').matches);
|
|
52
45
|
|
|
@@ -64,7 +57,7 @@ import { Icon } from "astro-icon/components";
|
|
|
64
57
|
markerStyle: { left: null, width: null },
|
|
65
58
|
updateMarker() {
|
|
66
59
|
// Use the theme name as the ref key
|
|
67
|
-
const markerTheme = this.
|
|
60
|
+
const markerTheme = this.theme;
|
|
68
61
|
const el = this.$refs[markerTheme];
|
|
69
62
|
if (el) {
|
|
70
63
|
this.markerStyle = {
|
|
@@ -86,7 +79,6 @@ import { Icon } from "astro-icon/components";
|
|
|
86
79
|
x-ref="light"
|
|
87
80
|
@click="theme = 'light'"
|
|
88
81
|
:class="theme === 'light' ? 'text-neutral-800' : 'text-neutral-500'"
|
|
89
|
-
:disabled="Boolean(forcedTheme)"
|
|
90
82
|
class="p-[5px] rounded-full text-sm font-medium transition-all cursor-pointer z-10"
|
|
91
83
|
>
|
|
92
84
|
<Icon name="lucide:sun-medium" class="size-[13px]" />
|
|
@@ -96,7 +88,6 @@ import { Icon } from "astro-icon/components";
|
|
|
96
88
|
x-ref="dark"
|
|
97
89
|
@click="theme = 'dark'"
|
|
98
90
|
:class="theme === 'dark' ? 'text-neutral-300' : 'text-neutral-500'"
|
|
99
|
-
:disabled="Boolean(forcedTheme)"
|
|
100
91
|
class="p-[5px] rounded-full text-sm font-medium transition-all cursor-pointer z-10"
|
|
101
92
|
>
|
|
102
93
|
<Icon name="lucide:moon" class="size-[13px]" />
|
|
@@ -106,7 +97,6 @@ import { Icon } from "astro-icon/components";
|
|
|
106
97
|
x-ref="system"
|
|
107
98
|
@click="theme = 'system'"
|
|
108
99
|
:class="theme === 'system' ? 'text-neutral-800 dark:text-neutral-300' : 'text-neutral-500'"
|
|
109
|
-
:disabled="Boolean(forcedTheme)"
|
|
110
100
|
class="p-[6px] rounded-full text-sm font-medium transition-all cursor-pointer z-10"
|
|
111
101
|
>
|
|
112
102
|
<Icon name="lucide:monitor" class="size-[12px]" />
|
|
@@ -2054,7 +2054,7 @@ export default function AssistantEmbedPanel({
|
|
|
2054
2054
|
}
|
|
2055
2055
|
/>
|
|
2056
2056
|
<p
|
|
2057
|
-
className="assistant-empty-state-item mt-3 text-3xl font-
|
|
2057
|
+
className="assistant-empty-state-item mt-3 text-3xl font-medium leading-9 text-neutral-900 dark:text-neutral-50"
|
|
2058
2058
|
style={
|
|
2059
2059
|
{
|
|
2060
2060
|
"--assistant-empty-state-delay": "300ms",
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
import "../../styles/global.css";
|
|
3
|
-
import "../../styles/google-sans-flex.css";
|
|
4
|
-
import "../../styles/geist-mono.css";
|
|
5
3
|
import AssistantEmbedPanel from "./AssistantEmbedPanel";
|
|
6
4
|
import { getAssistantPanelRuntimeConfig } from "../../lib/assistant-panel-config";
|
|
5
|
+
import { getDocsFontCss, getDocsFontPreloads } from "../../lib/font-css";
|
|
7
6
|
import { getDocsThemeCss } from "../../lib/theme-css";
|
|
8
7
|
import { getConfig } from "../../lib/validation";
|
|
9
8
|
|
|
10
9
|
const config = await getConfig();
|
|
11
10
|
const themeCss = getDocsThemeCss(config.theme);
|
|
11
|
+
const fontCss = getDocsFontCss(config.theme);
|
|
12
|
+
const fontPreloads = getDocsFontPreloads(config.theme);
|
|
12
13
|
const assistantConfig = getAssistantPanelRuntimeConfig(config);
|
|
13
14
|
---
|
|
14
15
|
|
|
@@ -19,6 +20,18 @@ const assistantConfig = getAssistantPanelRuntimeConfig(config);
|
|
|
19
20
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
20
21
|
<meta name="robots" content="noindex" />
|
|
21
22
|
<style is:inline is:global set:html={themeCss}></style>
|
|
23
|
+
<style is:inline is:global set:html={fontCss}></style>
|
|
24
|
+
{
|
|
25
|
+
fontPreloads.map((font) => (
|
|
26
|
+
<link
|
|
27
|
+
rel="preload"
|
|
28
|
+
href={font.href}
|
|
29
|
+
as="font"
|
|
30
|
+
type={font.type}
|
|
31
|
+
crossorigin
|
|
32
|
+
/>
|
|
33
|
+
))
|
|
34
|
+
}
|
|
22
35
|
<script is:inline>
|
|
23
36
|
(() => {
|
|
24
37
|
const applyTheme = (theme) => {
|
|
@@ -38,7 +38,7 @@ import { Icon } from "astro-icon/components";
|
|
|
38
38
|
>
|
|
39
39
|
<button
|
|
40
40
|
x-on:click="open = true"
|
|
41
|
-
class="
|
|
41
|
+
class="flex h-8 items-center gap-2 rounded-lg [corner-shape:superellipse(1.2)] bg-linear-to-b from-neutral-900/85 to-neutral-900 dark:from-neutral-100 dark:to-neutral-200 px-3 text-[13px] font-normal text-white dark:font-medium dark:text-neutral-950 shadow-sm transition-all duration-200 whitespace-nowrap cursor-pointer"
|
|
42
42
|
>
|
|
43
43
|
<Icon class="-ml-px size-3.5" name="lucide:square-mouse-pointer" />
|
|
44
44
|
Try it
|
|
@@ -5,15 +5,18 @@ import type { OpenApiRoute } from "../../lib/routes";
|
|
|
5
5
|
import { getConfig } from "../../lib/validation";
|
|
6
6
|
import { renderMarkdown } from "../../lib/utils";
|
|
7
7
|
import {
|
|
8
|
-
|
|
9
|
-
type
|
|
10
|
-
type
|
|
11
|
-
} from "
|
|
8
|
+
OPENAPI_REQUEST_SECTION_LABELS,
|
|
9
|
+
type OpenApiRequestFields,
|
|
10
|
+
type OpenApiRequestSectionVariantData,
|
|
11
|
+
} from "../../lib/openapi/operation-doc";
|
|
12
12
|
import Accordion from "../user/Accordion.astro";
|
|
13
13
|
import PlaygroundBar from "./PlaygroundBar.astro";
|
|
14
14
|
import ResponseDisplay from "./ResponseDisplay.astro";
|
|
15
15
|
import PlaygroundField from "./PlaygroundField.astro";
|
|
16
16
|
|
|
17
|
+
type RequestFields = OpenApiRequestFields;
|
|
18
|
+
type RequestSectionVariantData = OpenApiRequestSectionVariantData;
|
|
19
|
+
|
|
17
20
|
interface Props {
|
|
18
21
|
route: OpenApiRoute;
|
|
19
22
|
serverUrl?: string;
|
|
@@ -33,6 +36,7 @@ const {
|
|
|
33
36
|
bodyDescription = "",
|
|
34
37
|
bodyDefaultKind,
|
|
35
38
|
} = Astro.props;
|
|
39
|
+
const headers: Record<string, string> = OPENAPI_REQUEST_SECTION_LABELS;
|
|
36
40
|
const config = await getConfig();
|
|
37
41
|
const configuredProxyUrl =
|
|
38
42
|
typeof import.meta.env.PUBLIC_PROXY_URL === "string"
|
|
@@ -541,7 +545,7 @@ const sectionVariantFieldNames = Object.fromEntries(
|
|
|
541
545
|
<button
|
|
542
546
|
@click="sendRequest($event)"
|
|
543
547
|
:disabled="loading"
|
|
544
|
-
class="
|
|
548
|
+
class="relative flex h-8 items-center gap-2 rounded-lg [corner-shape:superellipse(1.2)] bg-linear-to-b from-neutral-900/85 to-neutral-900 dark:from-neutral-100 dark:to-neutral-200 px-3 text-[13px] font-normal text-white dark:font-medium dark:text-neutral-950 shadow-sm transition-all duration-200 whitespace-nowrap cursor-pointer disabled:opacity-70 disabled:cursor-not-allowed"
|
|
545
549
|
>
|
|
546
550
|
<span class="flex items-center gap-2">
|
|
547
551
|
<Icon
|
|
@@ -744,7 +744,7 @@ Object.entries(responses)
|
|
|
744
744
|
---
|
|
745
745
|
|
|
746
746
|
<div>
|
|
747
|
-
<h4 class="text-xl font-semibold mt-10">Responses</h4>
|
|
747
|
+
<h4 class="rd-document-heading text-xl font-semibold mt-10">Responses</h4>
|
|
748
748
|
{
|
|
749
749
|
responseFields.map((response) => (
|
|
750
750
|
<div class="mt-6">
|
|
@@ -756,9 +756,9 @@ Object.entries(responses)
|
|
|
756
756
|
getStatusCodeDotClass(response.statusCode),
|
|
757
757
|
]}
|
|
758
758
|
/>
|
|
759
|
-
<
|
|
759
|
+
<span class="text-lg font-medium leading-none">
|
|
760
760
|
{response.statusCode}
|
|
761
|
-
</
|
|
761
|
+
</span>
|
|
762
762
|
</div>
|
|
763
763
|
{response.description && (
|
|
764
764
|
<span class="mt-1 text-sm text-neutral-500 dark:text-neutral-400">
|
|
@@ -77,23 +77,23 @@ if (hasMinLength && hasMaxLength) {
|
|
|
77
77
|
|
|
78
78
|
<div class="space-y-3">
|
|
79
79
|
<div class="flex flex-wrap items-center gap-x-2 gap-y-px">
|
|
80
|
-
<
|
|
80
|
+
<span class="font-medium leading-4">
|
|
81
81
|
{name}
|
|
82
|
-
</
|
|
82
|
+
</span>
|
|
83
83
|
<code
|
|
84
84
|
class="text-[10px] font-medium text-neutral-500 border border-neutral-200/80 bg-neutral-50 px-1 rounded-sm dark:text-neutral-300 dark:border-neutral-700/70 dark:bg-neutral-900/70"
|
|
85
85
|
>{type}</code
|
|
86
86
|
>
|
|
87
87
|
{
|
|
88
88
|
required && (
|
|
89
|
-
<div class="text-red-700/70 bg-red-50 border border-red-700/10 rounded-full px-1.5 text-[10px] font-mono leading-none py-0.5 pb-0.5
|
|
89
|
+
<div class="text-red-700/70 bg-red-50 border border-red-700/10 rounded-full px-1.5 text-[10px] font-mono font-medium leading-none py-0.5 pb-0.5 h-fit dark:text-red-300 dark:bg-red-950/40 dark:border-red-900/40">
|
|
90
90
|
required
|
|
91
91
|
</div>
|
|
92
92
|
)
|
|
93
93
|
}
|
|
94
94
|
{
|
|
95
95
|
optional && (
|
|
96
|
-
<div class="text-blue-700/70 bg-blue-50 border border-blue-700/10 rounded-full px-1.5 font-mono text-[10px] leading-none py-0.5 pb-0.5
|
|
96
|
+
<div class="text-blue-700/70 bg-blue-50 border border-blue-700/10 rounded-full px-1.5 font-mono text-[10px] font-medium leading-none py-0.5 pb-0.5 h-fit dark:text-blue-300 dark:bg-blue-950/40 dark:border-blue-900/40">
|
|
97
97
|
optional
|
|
98
98
|
</div>
|
|
99
99
|
)
|
|
@@ -100,13 +100,13 @@ const hasTitle = typeof resolvedTitle === "string" && resolvedTitle.length > 0;
|
|
|
100
100
|
class="shrink-0 border border-white"
|
|
101
101
|
/>
|
|
102
102
|
) : null}
|
|
103
|
-
<
|
|
103
|
+
<div
|
|
104
104
|
class:list={[
|
|
105
105
|
"font-semibold text-sm text-neutral-900 dark:text-neutral-100",
|
|
106
106
|
]}
|
|
107
107
|
>
|
|
108
108
|
{resolvedTitle}
|
|
109
|
-
</
|
|
109
|
+
</div>
|
|
110
110
|
</div>
|
|
111
111
|
<div class="prose-rules prose-sm! max-w-none! *:max-w-none! text-neutral-700 dark:text-neutral-300">
|
|
112
112
|
<slot />
|
|
@@ -239,7 +239,7 @@ const CardGradient = hasCover
|
|
|
239
239
|
)
|
|
240
240
|
}
|
|
241
241
|
<div class="ml-1 self-center min-w-0 flex-1">
|
|
242
|
-
<
|
|
242
|
+
<div
|
|
243
243
|
class="not-prose m-0 flex min-w-0 items-center text-base font-semibold text-neutral-900 dark:text-neutral-100"
|
|
244
244
|
>
|
|
245
245
|
{
|
|
@@ -267,7 +267,7 @@ const CardGradient = hasCover
|
|
|
267
267
|
</>
|
|
268
268
|
)
|
|
269
269
|
}
|
|
270
|
-
</
|
|
270
|
+
</div>
|
|
271
271
|
{
|
|
272
272
|
descriptionHtml && (
|
|
273
273
|
<div
|
|
@@ -21,7 +21,9 @@ const { title } = Astro.props;
|
|
|
21
21
|
"step-number before:leading-none before:size-7 before:bg-neutral-900/6 dark:before:bg-neutral-50/6 before:rounded-full before:text-neutral-700 dark:before:text-neutral-100 before:flex before:items-center before:justify-center before:text-[13px] before:font-medium before:absolute before:left-0 before:top-0",
|
|
22
22
|
]}
|
|
23
23
|
>
|
|
24
|
-
<h3
|
|
24
|
+
<h3
|
|
25
|
+
class="rd-document-heading text-lg font-semibold text-neutral-900 dark:text-neutral-100"
|
|
26
|
+
>
|
|
25
27
|
{title}
|
|
26
28
|
</h3>
|
|
27
29
|
</div>
|
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
---
|
|
2
2
|
import "../styles/global.css";
|
|
3
|
-
import "../styles/google-sans-flex.css";
|
|
4
|
-
import "../styles/geist-mono.css";
|
|
5
|
-
import googleSansLatinWoff2 from "../assets/fonts/google-sans-flex/latin.woff2?url";
|
|
6
|
-
import googleSansLatinExtWoff2 from "../assets/fonts/google-sans-flex/latin-ext.woff2?url";
|
|
7
|
-
import geistMonoLatinWoff2 from "../assets/fonts/geist-mono/latin.woff2?url";
|
|
8
|
-
import geistMonoLatinExtWoff2 from "../assets/fonts/geist-mono/latin-ext.woff2?url";
|
|
9
3
|
import Sidebar from "../components/Sidebar.astro";
|
|
10
4
|
import { getConfig } from "../lib/validation";
|
|
11
5
|
import Header from "../components/Header.astro";
|
|
@@ -14,8 +8,10 @@ import AssistantDocsWidget from "../components/chat/AssistantDocsWidget.astro";
|
|
|
14
8
|
import { ClientRouter } from "astro:transitions";
|
|
15
9
|
import { prependBasePath, stripBasePath } from "../lib/base-path";
|
|
16
10
|
import { getFaviconConfig } from "../lib/favicon";
|
|
11
|
+
import { getDocsFontCss, getDocsFontPreloads } from "../lib/font-css";
|
|
17
12
|
import { resolveStaticAssetUrl } from "../lib/static-asset-url";
|
|
18
13
|
import { getDocsThemeCss } from "../lib/theme-css";
|
|
14
|
+
import { resolvePageDescription } from "../lib/page-description";
|
|
19
15
|
|
|
20
16
|
interface Props {
|
|
21
17
|
pageTitle?: string;
|
|
@@ -41,15 +37,14 @@ const { pageTitle, pageDescription } = Astro.props as Props;
|
|
|
41
37
|
const config = await getConfig();
|
|
42
38
|
const favicon = getFaviconConfig();
|
|
43
39
|
const neutralPaletteCss = getDocsThemeCss(config.theme);
|
|
40
|
+
const fontCss = getDocsFontCss(config.theme);
|
|
41
|
+
const fontPreloads = getDocsFontPreloads(config.theme);
|
|
44
42
|
const resolvedPageTitle = pageTitle?.trim();
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
? `Learn about ${resolvedPageTitle} in the ${config.title} documentation.`
|
|
51
|
-
: `${config.title} documentation.`;
|
|
52
|
-
const resolvedMetaDescription = resolvedPageDescription ?? fallbackDescription;
|
|
43
|
+
const resolvedMetaDescription = resolvePageDescription({
|
|
44
|
+
pageTitle: resolvedPageTitle,
|
|
45
|
+
pageDescription,
|
|
46
|
+
docsTitle: config.title,
|
|
47
|
+
});
|
|
53
48
|
const documentTitle = resolvedPageTitle
|
|
54
49
|
? `${resolvedPageTitle} | ${config.title}`
|
|
55
50
|
: `${config.title} Docs`;
|
|
@@ -77,6 +72,7 @@ const askAiEnabled = isDev || orgTier >= 3;
|
|
|
77
72
|
<html lang="en">
|
|
78
73
|
<head>
|
|
79
74
|
<style is:inline is:global set:html={neutralPaletteCss}></style>
|
|
75
|
+
<style is:inline is:global set:html={fontCss}></style>
|
|
80
76
|
<ClientRouter />
|
|
81
77
|
<script is:inline>
|
|
82
78
|
const applyTheme = () => {
|
|
@@ -196,34 +192,17 @@ const askAiEnabled = isDev || orgTier >= 3;
|
|
|
196
192
|
}
|
|
197
193
|
})();
|
|
198
194
|
</script>
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
type="font/woff2"
|
|
211
|
-
crossorigin
|
|
212
|
-
/>
|
|
213
|
-
<link
|
|
214
|
-
rel="preload"
|
|
215
|
-
href={geistMonoLatinWoff2}
|
|
216
|
-
as="font"
|
|
217
|
-
type="font/woff2"
|
|
218
|
-
crossorigin
|
|
219
|
-
/>
|
|
220
|
-
<link
|
|
221
|
-
rel="preload"
|
|
222
|
-
href={geistMonoLatinExtWoff2}
|
|
223
|
-
as="font"
|
|
224
|
-
type="font/woff2"
|
|
225
|
-
crossorigin
|
|
226
|
-
/>
|
|
195
|
+
{
|
|
196
|
+
fontPreloads.map((font) => (
|
|
197
|
+
<link
|
|
198
|
+
rel="preload"
|
|
199
|
+
href={font.href}
|
|
200
|
+
as="font"
|
|
201
|
+
type={font.type}
|
|
202
|
+
crossorigin
|
|
203
|
+
/>
|
|
204
|
+
))
|
|
205
|
+
}
|
|
227
206
|
<meta charset="UTF-8" />
|
|
228
207
|
<meta name="viewport" content="width=device-width" />
|
|
229
208
|
<link
|
|
@@ -259,18 +238,15 @@ const askAiEnabled = isDev || orgTier >= 3;
|
|
|
259
238
|
<!-- Edges -->
|
|
260
239
|
<div
|
|
261
240
|
class="fixed top-1 inset-x-1 h-16 -z-10 bg-background-dark"
|
|
262
|
-
data-vaul-scale-chrome
|
|
263
241
|
>
|
|
264
242
|
<div class="bg-background w-full h-full rounded-t-2xl"></div>
|
|
265
243
|
</div>
|
|
266
244
|
<div
|
|
267
245
|
class="fixed top-[63px] z-30 w-[5px] right-0 bottom-0 bg-background-dark border-l border-l-border"
|
|
268
|
-
data-vaul-scale-chrome
|
|
269
246
|
>
|
|
270
247
|
</div>
|
|
271
248
|
<div
|
|
272
249
|
class="fixed top-[63px] z-30 w-[5px] left-0 bottom-0 bg-background-dark border-r border-r-border"
|
|
273
|
-
data-vaul-scale-chrome
|
|
274
250
|
>
|
|
275
251
|
</div>
|
|
276
252
|
|
|
@@ -298,7 +274,6 @@ const askAiEnabled = isDev || orgTier >= 3;
|
|
|
298
274
|
<!-- Main Content -->
|
|
299
275
|
<div
|
|
300
276
|
class="mx-1 mt-1 px-4 sm:px-6 lg:pl-[calc(288px+32px)] pt-16 lg:pr-8 bg-background"
|
|
301
|
-
data-vaul-scale-chrome
|
|
302
277
|
>
|
|
303
278
|
<main class="mx-auto pt-16 pb-16 min-h-[calc(100vh-64px)]">
|
|
304
279
|
<slot />
|