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.
Files changed (57) hide show
  1. package/package.json +1 -1
  2. package/template/astro.config.mjs +24 -2
  3. package/template/package-lock.json +216 -513
  4. package/template/package.json +13 -3
  5. package/template/scripts/generate-og-images.mjs +338 -6
  6. package/template/scripts/generate-og-metadata.mjs +29 -0
  7. package/template/src/components/Footer.astro +1 -1
  8. package/template/src/components/Header.astro +6 -13
  9. package/template/src/components/MdxPage.astro +3 -1
  10. package/template/src/components/OpenApiPage.astro +26 -832
  11. package/template/src/components/Sidebar.astro +1 -1
  12. package/template/src/components/SidebarGroup.astro +1 -1
  13. package/template/src/components/ThemeSwitcher.astro +5 -15
  14. package/template/src/components/chat/AssistantEmbedPanel.tsx +1 -1
  15. package/template/src/components/chat/AssistantEmbedPanelPage.astro +15 -2
  16. package/template/src/components/endpoint/PlaygroundButton.astro +1 -1
  17. package/template/src/components/endpoint/PlaygroundField.astro +1 -1
  18. package/template/src/components/endpoint/PlaygroundForm.astro +9 -5
  19. package/template/src/components/endpoint/ResponseFields.astro +3 -3
  20. package/template/src/components/ui/Field.astro +4 -4
  21. package/template/src/components/user/Callout.astro +2 -2
  22. package/template/src/components/user/Card.astro +2 -2
  23. package/template/src/components/user/Step.astro +3 -1
  24. package/template/src/layouts/Layout.astro +21 -46
  25. package/template/src/lib/ai-artifacts.ts +792 -0
  26. package/template/src/lib/font-css.ts +376 -0
  27. package/template/src/lib/mdx/remark-resolve-internal-links.ts +22 -8
  28. package/template/src/lib/oas.ts +5 -1
  29. package/template/src/lib/openapi/operation-doc.ts +1150 -0
  30. package/template/src/lib/page-description.ts +20 -0
  31. package/template/src/lib/routes.ts +73 -18
  32. package/template/src/pages/-/fonts/[...font].ts +50 -0
  33. package/template/src/pages/404.astro +2 -2
  34. package/template/src/pages/[...slug]/index.md.ts +35 -0
  35. package/template/src/pages/[...spec].json.ts +33 -0
  36. package/template/src/pages/[...spec].yaml.ts +33 -0
  37. package/template/src/pages/[...spec].yml.ts +33 -0
  38. package/template/src/pages/index.md.ts +17 -0
  39. package/template/src/pages/llms-full.txt.ts +11 -0
  40. package/template/src/pages/llms.txt.ts +11 -0
  41. package/template/src/styles/global.css +32 -7
  42. package/template/src/assets/fonts/geist-mono/cyrillic.woff2 +0 -0
  43. package/template/src/assets/fonts/geist-mono/latin-ext.woff2 +0 -0
  44. package/template/src/assets/fonts/geist-mono/latin.woff2 +0 -0
  45. package/template/src/assets/fonts/google-sans-flex/canadian-aboriginal.woff2 +0 -0
  46. package/template/src/assets/fonts/google-sans-flex/cherokee.woff2 +0 -0
  47. package/template/src/assets/fonts/google-sans-flex/latin-ext.woff2 +0 -0
  48. package/template/src/assets/fonts/google-sans-flex/latin.woff2 +0 -0
  49. package/template/src/assets/fonts/google-sans-flex/math.woff2 +0 -0
  50. package/template/src/assets/fonts/google-sans-flex/nushu.woff2 +0 -0
  51. package/template/src/assets/fonts/google-sans-flex/symbols.woff2 +0 -0
  52. package/template/src/assets/fonts/google-sans-flex/syriac.woff2 +0 -0
  53. package/template/src/assets/fonts/google-sans-flex/tifinagh.woff2 +0 -0
  54. package/template/src/assets/fonts/google-sans-flex/vietnamese.woff2 +0 -0
  55. package/template/src/styles/geist-mono.css +0 -33
  56. package/template/src/styles/google-sans-flex.css +0 -143
  57. 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-light">Theme</span>
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:my-0 last:my-0">
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
- forcedTheme: (() => {
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.forcedTheme) {
15
- this.theme = this.forcedTheme;
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.forcedTheme || this.theme;
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.forcedTheme || this.theme;
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-[450] leading-9 text-neutral-900 dark:text-neutral-50"
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="font-[350] dark:font-[450] 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] text-white dark:text-neutral-950 shadow-sm transition-all duration-200 whitespace-nowrap cursor-pointer"
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
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  import { Icon } from "astro-icon/components";
3
- import type { Field as FieldType } from "../OpenApiPage.astro";
3
+ import type { OpenApiField as FieldType } from "../../lib/openapi/operation-doc";
4
4
  import Field from "../ui/Field.astro";
5
5
 
6
6
  interface Props {
@@ -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
- headers,
9
- type RequestFields,
10
- type RequestSectionVariantData,
11
- } from "../OpenApiPage.astro";
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="font-[350] dark:font-[450] 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] text-white dark:text-neutral-950 shadow-sm transition-all duration-200 whitespace-nowrap cursor-pointer disabled:opacity-70 disabled:cursor-not-allowed"
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
- <h5 class="text-lg font-medium leading-none">
759
+ <span class="text-lg font-medium leading-none">
760
760
  {response.statusCode}
761
- </h5>
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
- <h5 class="font-medium leading-4">
80
+ <span class="font-medium leading-4">
81
81
  {name}
82
- </h5>
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 font-[450] h-fit dark:text-red-300 dark:bg-red-950/40 dark:border-red-900/40">
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 font-[450] h-fit dark:text-blue-300 dark:bg-blue-950/40 dark:border-blue-900/40">
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
- <h6
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
- </h6>
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
- <h4
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
- </h4>
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 class="text-lg font-semibold text-neutral-900 dark:text-neutral-100">
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 resolvedPageDescription =
46
- typeof pageDescription === "string" && pageDescription.trim().length > 0
47
- ? pageDescription.trim()
48
- : undefined;
49
- const fallbackDescription = resolvedPageTitle
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
- <link
200
- rel="preload"
201
- href={googleSansLatinWoff2}
202
- as="font"
203
- type="font/woff2"
204
- crossorigin
205
- />
206
- <link
207
- rel="preload"
208
- href={googleSansLatinExtWoff2}
209
- as="font"
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 />