svedocs 0.1.0-beta.2

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 (192) hide show
  1. package/LICENSE +5 -0
  2. package/README.md +38 -0
  3. package/dist/ai/openai-compatible.d.ts +13 -0
  4. package/dist/ai/openai-compatible.d.ts.map +1 -0
  5. package/dist/ai/openai-compatible.js +92 -0
  6. package/dist/ai/providers.d.ts +19 -0
  7. package/dist/ai/providers.d.ts.map +1 -0
  8. package/dist/ai/providers.js +185 -0
  9. package/dist/ai/rate-limit.d.ts +18 -0
  10. package/dist/ai/rate-limit.d.ts.map +1 -0
  11. package/dist/ai/rate-limit.js +52 -0
  12. package/dist/ai/response.d.ts +4 -0
  13. package/dist/ai/response.d.ts.map +1 -0
  14. package/dist/ai/response.js +151 -0
  15. package/dist/ai/runtime.d.ts +30 -0
  16. package/dist/ai/runtime.d.ts.map +1 -0
  17. package/dist/ai/runtime.js +105 -0
  18. package/dist/ai/types.d.ts +93 -0
  19. package/dist/ai/types.d.ts.map +1 -0
  20. package/dist/ai/types.js +1 -0
  21. package/dist/ai.d.ts +7 -0
  22. package/dist/ai.d.ts.map +1 -0
  23. package/dist/ai.js +6 -0
  24. package/dist/ambient.d.ts +5 -0
  25. package/dist/cloudflare.d.ts +27 -0
  26. package/dist/cloudflare.d.ts.map +1 -0
  27. package/dist/cloudflare.js +146 -0
  28. package/dist/config.d.ts +311 -0
  29. package/dist/config.d.ts.map +1 -0
  30. package/dist/config.js +243 -0
  31. package/dist/core/checks.d.ts +4 -0
  32. package/dist/core/checks.d.ts.map +1 -0
  33. package/dist/core/checks.js +252 -0
  34. package/dist/core/config.d.ts +5 -0
  35. package/dist/core/config.d.ts.map +1 -0
  36. package/dist/core/config.js +182 -0
  37. package/dist/core/content.d.ts +7 -0
  38. package/dist/core/content.d.ts.map +1 -0
  39. package/dist/core/content.js +211 -0
  40. package/dist/core/links.d.ts +8 -0
  41. package/dist/core/links.d.ts.map +1 -0
  42. package/dist/core/links.js +94 -0
  43. package/dist/core/navigation.d.ts +5 -0
  44. package/dist/core/navigation.d.ts.map +1 -0
  45. package/dist/core/navigation.js +144 -0
  46. package/dist/core/search.d.ts +5 -0
  47. package/dist/core/search.d.ts.map +1 -0
  48. package/dist/core/search.js +41 -0
  49. package/dist/core/types.d.ts +269 -0
  50. package/dist/core/types.d.ts.map +1 -0
  51. package/dist/core/types.js +4 -0
  52. package/dist/core/utils.d.ts +12 -0
  53. package/dist/core/utils.d.ts.map +1 -0
  54. package/dist/core/utils.js +52 -0
  55. package/dist/core.d.ts +8 -0
  56. package/dist/core.d.ts.map +1 -0
  57. package/dist/core.js +7 -0
  58. package/dist/index.d.ts +6 -0
  59. package/dist/index.d.ts.map +1 -0
  60. package/dist/index.js +3 -0
  61. package/dist/mdx/ast.d.ts +32 -0
  62. package/dist/mdx/ast.d.ts.map +1 -0
  63. package/dist/mdx/ast.js +148 -0
  64. package/dist/mdx/code.d.ts +14 -0
  65. package/dist/mdx/code.d.ts.map +1 -0
  66. package/dist/mdx/code.js +315 -0
  67. package/dist/mdx/compile.d.ts +26 -0
  68. package/dist/mdx/compile.d.ts.map +1 -0
  69. package/dist/mdx/compile.js +63 -0
  70. package/dist/mdx/diff.d.ts +5 -0
  71. package/dist/mdx/diff.d.ts.map +1 -0
  72. package/dist/mdx/diff.js +160 -0
  73. package/dist/mdx/utils.d.ts +10 -0
  74. package/dist/mdx/utils.d.ts.map +1 -0
  75. package/dist/mdx/utils.js +64 -0
  76. package/dist/og/image.d.ts +21 -0
  77. package/dist/og/image.d.ts.map +1 -0
  78. package/dist/og/image.js +216 -0
  79. package/dist/og/metadata.d.ts +7 -0
  80. package/dist/og/metadata.d.ts.map +1 -0
  81. package/dist/og/metadata.js +160 -0
  82. package/dist/og/types.d.ts +59 -0
  83. package/dist/og/types.d.ts.map +1 -0
  84. package/dist/og/types.js +1 -0
  85. package/dist/og.d.ts +4 -0
  86. package/dist/og.d.ts.map +1 -0
  87. package/dist/og.js +3 -0
  88. package/dist/search/algolia.d.ts +10 -0
  89. package/dist/search/algolia.d.ts.map +1 -0
  90. package/dist/search/algolia.js +82 -0
  91. package/dist/search/cloudflare-sync.d.ts +5 -0
  92. package/dist/search/cloudflare-sync.d.ts.map +1 -0
  93. package/dist/search/cloudflare-sync.js +169 -0
  94. package/dist/search/cloudflare.d.ts +9 -0
  95. package/dist/search/cloudflare.d.ts.map +1 -0
  96. package/dist/search/cloudflare.js +115 -0
  97. package/dist/search/local.d.ts +9 -0
  98. package/dist/search/local.d.ts.map +1 -0
  99. package/dist/search/local.js +122 -0
  100. package/dist/search/runtime.d.ts +41 -0
  101. package/dist/search/runtime.d.ts.map +1 -0
  102. package/dist/search/runtime.js +151 -0
  103. package/dist/search/types.d.ts +172 -0
  104. package/dist/search/types.d.ts.map +1 -0
  105. package/dist/search/types.js +1 -0
  106. package/dist/search/typesense.d.ts +11 -0
  107. package/dist/search/typesense.d.ts.map +1 -0
  108. package/dist/search/typesense.js +91 -0
  109. package/dist/search/utils.d.ts +10 -0
  110. package/dist/search/utils.d.ts.map +1 -0
  111. package/dist/search/utils.js +55 -0
  112. package/dist/search.d.ts +8 -0
  113. package/dist/search.d.ts.map +1 -0
  114. package/dist/search.js +7 -0
  115. package/dist/svelte.d.ts +24 -0
  116. package/dist/svelte.d.ts.map +1 -0
  117. package/dist/svelte.js +51 -0
  118. package/dist/testing.d.ts +3 -0
  119. package/dist/testing.d.ts.map +1 -0
  120. package/dist/testing.js +23 -0
  121. package/dist/theme/AskAiPanel.svelte +433 -0
  122. package/dist/theme/AskAiPanel.svelte.d.ts +27 -0
  123. package/dist/theme/AskAiPanel.svelte.d.ts.map +1 -0
  124. package/dist/theme/Button.svelte +34 -0
  125. package/dist/theme/Button.svelte.d.ts +41 -0
  126. package/dist/theme/Button.svelte.d.ts.map +1 -0
  127. package/dist/theme/Checkbox.svelte +63 -0
  128. package/dist/theme/Checkbox.svelte.d.ts +45 -0
  129. package/dist/theme/Checkbox.svelte.d.ts.map +1 -0
  130. package/dist/theme/CodeBlock.svelte +6 -0
  131. package/dist/theme/CodeBlock.svelte.d.ts +22 -0
  132. package/dist/theme/CodeBlock.svelte.d.ts.map +1 -0
  133. package/dist/theme/DocPage.svelte +121 -0
  134. package/dist/theme/DocPage.svelte.d.ts +33 -0
  135. package/dist/theme/DocPage.svelte.d.ts.map +1 -0
  136. package/dist/theme/DocsApp.svelte +78 -0
  137. package/dist/theme/DocsApp.svelte.d.ts +63 -0
  138. package/dist/theme/DocsApp.svelte.d.ts.map +1 -0
  139. package/dist/theme/DocsLayout.svelte +167 -0
  140. package/dist/theme/DocsLayout.svelte.d.ts +40 -0
  141. package/dist/theme/DocsLayout.svelte.d.ts.map +1 -0
  142. package/dist/theme/FloatingToolbar.svelte +73 -0
  143. package/dist/theme/FloatingToolbar.svelte.d.ts +22 -0
  144. package/dist/theme/FloatingToolbar.svelte.d.ts.map +1 -0
  145. package/dist/theme/FormField.svelte +41 -0
  146. package/dist/theme/FormField.svelte.d.ts +35 -0
  147. package/dist/theme/FormField.svelte.d.ts.map +1 -0
  148. package/dist/theme/HomePage.svelte +228 -0
  149. package/dist/theme/HomePage.svelte.d.ts +58 -0
  150. package/dist/theme/HomePage.svelte.d.ts.map +1 -0
  151. package/dist/theme/Input.svelte +36 -0
  152. package/dist/theme/Input.svelte.d.ts +34 -0
  153. package/dist/theme/Input.svelte.d.ts.map +1 -0
  154. package/dist/theme/PageLayout.svelte +36 -0
  155. package/dist/theme/PageLayout.svelte.d.ts +31 -0
  156. package/dist/theme/PageLayout.svelte.d.ts.map +1 -0
  157. package/dist/theme/RootLayout.svelte +330 -0
  158. package/dist/theme/RootLayout.svelte.d.ts +40 -0
  159. package/dist/theme/RootLayout.svelte.d.ts.map +1 -0
  160. package/dist/theme/ScopeSwitcher.svelte +103 -0
  161. package/dist/theme/ScopeSwitcher.svelte.d.ts +24 -0
  162. package/dist/theme/ScopeSwitcher.svelte.d.ts.map +1 -0
  163. package/dist/theme/SearchDialog.svelte +253 -0
  164. package/dist/theme/SearchDialog.svelte.d.ts +28 -0
  165. package/dist/theme/SearchDialog.svelte.d.ts.map +1 -0
  166. package/dist/theme/Select.svelte +37 -0
  167. package/dist/theme/Select.svelte.d.ts +42 -0
  168. package/dist/theme/Select.svelte.d.ts.map +1 -0
  169. package/dist/theme/SidebarTree.svelte +136 -0
  170. package/dist/theme/SidebarTree.svelte.d.ts +24 -0
  171. package/dist/theme/SidebarTree.svelte.d.ts.map +1 -0
  172. package/dist/theme/Textarea.svelte +33 -0
  173. package/dist/theme/Textarea.svelte.d.ts +33 -0
  174. package/dist/theme/Textarea.svelte.d.ts.map +1 -0
  175. package/dist/theme/ThemeToggle.svelte +39 -0
  176. package/dist/theme/ThemeToggle.svelte.d.ts +21 -0
  177. package/dist/theme/ThemeToggle.svelte.d.ts.map +1 -0
  178. package/dist/theme/forms.d.ts +4 -0
  179. package/dist/theme/forms.d.ts.map +1 -0
  180. package/dist/theme/forms.js +3 -0
  181. package/dist/theme/index.d.ts +21 -0
  182. package/dist/theme/index.d.ts.map +1 -0
  183. package/dist/theme/index.js +19 -0
  184. package/dist/theme/portal.d.ts +5 -0
  185. package/dist/theme/portal.d.ts.map +1 -0
  186. package/dist/theme/portal.js +19 -0
  187. package/dist/theme/styles.css +3697 -0
  188. package/dist/virtual.d.ts +59 -0
  189. package/dist/vite.d.ts +10 -0
  190. package/dist/vite.d.ts.map +1 -0
  191. package/dist/vite.js +304 -0
  192. package/package.json +118 -0
@@ -0,0 +1,41 @@
1
+ <script lang="ts">
2
+ import { classNames } from './forms.js';
3
+
4
+ interface $$Props {
5
+ class?: string;
6
+ description?: string;
7
+ error?: string;
8
+ for?: string;
9
+ label?: string;
10
+ required?: boolean;
11
+ }
12
+
13
+ export let label = '';
14
+ export let description = '';
15
+ export let error = '';
16
+ export let required = false;
17
+
18
+ let className = '';
19
+ let forId = '';
20
+
21
+ export { className as class, forId as for };
22
+ </script>
23
+
24
+ <div class={classNames('sd-field', className)} data-invalid={error ? 'true' : undefined}>
25
+ {#if label}
26
+ <label class="sd-field-label" for={forId || undefined}>
27
+ <span>{label}</span>
28
+ {#if required}
29
+ <span class="sd-field-required" aria-hidden="true">*</span>
30
+ {/if}
31
+ </label>
32
+ {/if}
33
+
34
+ <slot />
35
+
36
+ {#if error}
37
+ <p class="sd-field-error">{error}</p>
38
+ {:else if description}
39
+ <p class="sd-field-description">{description}</p>
40
+ {/if}
41
+ </div>
@@ -0,0 +1,35 @@
1
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
+ $$bindings?: Bindings;
4
+ } & Exports;
5
+ (internal: unknown, props: Props & {
6
+ $$events?: Events;
7
+ $$slots?: Slots;
8
+ }): Exports & {
9
+ $set?: any;
10
+ $on?: any;
11
+ };
12
+ z_$$bindings?: Bindings;
13
+ }
14
+ type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
15
+ default: any;
16
+ } ? Props extends Record<string, never> ? any : {
17
+ children?: any;
18
+ } : {});
19
+ declare const FormField: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
20
+ class?: string;
21
+ description?: string;
22
+ error?: string;
23
+ for?: string;
24
+ label?: string;
25
+ required?: boolean;
26
+ }, {
27
+ default: {};
28
+ }>, {
29
+ [evt: string]: CustomEvent<any>;
30
+ }, {
31
+ default: {};
32
+ }, {}, string>;
33
+ type FormField = InstanceType<typeof FormField>;
34
+ export default FormField;
35
+ //# sourceMappingURL=FormField.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormField.svelte.d.ts","sourceRoot":"","sources":["../../src/theme/FormField.svelte.ts"],"names":[],"mappings":"AAiDA,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AACD,KAAK,gCAAgC,CAAC,KAAK,EAAE,KAAK,IAAI,KAAK,GACvD,CAAC,KAAK,SAAS;IAAE,OAAO,EAAE,GAAG,CAAA;CAAE,GACzB,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GACnC,GAAG,GACH;IAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;CAAE,GAClB,EAAE,CAAC,CAAC;AAId,QAAA,MAAM,SAAS;YAtDH,MAAM;kBACA,MAAM;YACZ,MAAM;UACR,MAAM;YACJ,MAAM;eACH,OAAO;;;;;;;cAiD8E,CAAC;AACnF,KAAK,SAAS,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,CAAC;AAClD,eAAe,SAAS,CAAC"}
@@ -0,0 +1,228 @@
1
+ <script lang="ts">
2
+ import type { Component } from 'svelte';
3
+ import type { SvedocsPage, SvedocsResolvedConfig, SvedocsSearchRecord } from '../core/types.js';
4
+ import RootLayout from './RootLayout.svelte';
5
+
6
+ export let page: SvedocsPage;
7
+ export let pages: SvedocsPage[] = [];
8
+ export let search: SvedocsSearchRecord[] = [];
9
+ export let config: SvedocsResolvedConfig;
10
+ export let loadSearch: (() => Promise<SvedocsSearchRecord[]>) | undefined = undefined;
11
+ export let content: Component | undefined = undefined;
12
+ export let hasBackgroundSlot: boolean | undefined = undefined;
13
+ export let hasLandingSlot: boolean | undefined = undefined;
14
+ export let hasHomeHeroVisualSlot: boolean | undefined = undefined;
15
+ export let hasHomeFeaturesSlot: boolean | undefined = undefined;
16
+
17
+ interface PixelCell {
18
+ index: number;
19
+ hot: boolean;
20
+ accent: boolean;
21
+ style: string;
22
+ }
23
+
24
+ interface HomeCard {
25
+ label: string;
26
+ title: string;
27
+ description: string;
28
+ href: string;
29
+ glyph: string;
30
+ }
31
+
32
+ const homePillars = [
33
+ {
34
+ label: 'Start',
35
+ title: 'Quick Start',
36
+ description: 'Get a site running, open the docs route, and move straight into the installed docs tree.',
37
+ glyph: '1011\n1101\n0110\n1011',
38
+ match: /quick\s*start|getting-started|index/i,
39
+ fallback: '/docs'
40
+ },
41
+ {
42
+ label: 'Install',
43
+ title: 'Manual Installation',
44
+ description: 'Add svedocs to an existing SvelteKit app and wire the Vite plugin plus theme styles.',
45
+ glyph: '0110\n1111\n1001\n0110',
46
+ match: /installation/i,
47
+ fallback: '/docs/installation'
48
+ },
49
+ {
50
+ label: 'Write',
51
+ title: 'Writing',
52
+ description: 'Use Markdown, frontmatter, and Svelte components in one content tree.',
53
+ glyph: '1010\n0101\n1010\n0101',
54
+ match: /writing|content|components/i,
55
+ fallback: '/docs/writing'
56
+ },
57
+ {
58
+ label: 'Integrate',
59
+ title: 'Integrations',
60
+ description: 'Add search, Ask AI, Cloudflare deployment, SEO, and OG assets when the content is ready.',
61
+ glyph: '1111\n1001\n1001\n1111',
62
+ match: /integrations|search|ai|cloudflare|seo|og/i,
63
+ fallback: '/docs/integrations'
64
+ }
65
+ ] as const;
66
+
67
+ // Hand-tuned bitmap (14 cols × 9 rows) — pixel-art glyph forming a soft "S" mark
68
+ // with scattered ambient cells. 1 = on, 2 = accent-2 hot, 0 = ambient.
69
+ const heroBitmap = [
70
+ '00011112221100',
71
+ '00111111111110',
72
+ '01110000000110',
73
+ '01111000000000',
74
+ '00111122100000',
75
+ '00000022111100',
76
+ '00000000001110',
77
+ '01100000001110',
78
+ '01111122211100'
79
+ ];
80
+
81
+ const cells: PixelCell[] = (() => {
82
+ const result: PixelCell[] = [];
83
+ heroBitmap.forEach((row, y) => {
84
+ const chars = row.split('');
85
+ chars.forEach((ch, x) => {
86
+ const lit = ch !== '0';
87
+ const accent = ch === '2';
88
+ const distance = Math.hypot(x - 6.5, y - 4) / 7;
89
+ const mix = lit ? 78 - Math.floor(distance * 32) : 14 + ((x + y) % 5) * 3;
90
+ const delay = ((x * 73 + y * 41) % 9) * -260;
91
+ result.push({
92
+ index: y * chars.length + x,
93
+ hot: lit,
94
+ accent,
95
+ style: `--mix:${mix}%; --wave-delay:${delay}ms;`
96
+ });
97
+ });
98
+ });
99
+ return result;
100
+ })();
101
+ $: docPages = pages.filter((item) => item.kind === 'doc');
102
+ $: docs = docPages.slice(0, 4);
103
+ $: homeCards = createHomeCards(pages);
104
+ $: primaryDoc = docPages[0];
105
+ $: secondaryDoc = docPages.find((doc) => /configuration|config/i.test(doc.routePath)) ?? docPages[1];
106
+ $: primaryAction = config.theme.home.primaryAction ?? (
107
+ primaryDoc ? { label: 'Read docs', href: primaryDoc.routePath } : { label: 'Read docs', href: page.routePath }
108
+ );
109
+ $: secondaryAction = config.theme.home.secondaryAction ?? (
110
+ secondaryDoc ? { label: secondaryDoc.title, href: secondaryDoc.routePath } : undefined
111
+ );
112
+ $: showBackgroundSlot = hasBackgroundSlot ?? Boolean($$slots.background);
113
+ $: showLandingSlot = hasLandingSlot ?? Boolean($$slots.landing);
114
+ $: showHomeHeroVisualSlot = hasHomeHeroVisualSlot ?? Boolean($$slots['home-hero-visual']);
115
+ $: showHomeFeaturesSlot = hasHomeFeaturesSlot ?? Boolean($$slots['home-features']);
116
+
117
+ function createHomeCards(pages: SvedocsPage[]): HomeCard[] {
118
+ const docs = pages.filter((candidate) => candidate.kind === 'doc');
119
+ const fallbackDoc = docs[0];
120
+
121
+ return homePillars.map((pillar) => {
122
+ const target = docs.find((candidate) => pillar.match.test(`${candidate.title} ${candidate.routePath}`));
123
+ const fallbackTarget = docs.find((candidate) => candidate.routePath === pillar.fallback);
124
+
125
+ return {
126
+ label: pillar.label,
127
+ title: pillar.title,
128
+ description: pillar.description,
129
+ glyph: pillar.glyph,
130
+ href: target?.routePath ?? fallbackTarget?.routePath ?? fallbackDoc?.routePath ?? page.routePath
131
+ };
132
+ });
133
+ }
134
+
135
+ function glyphRows(glyph: string): string[][] {
136
+ return glyph.split('\n').map((row) => row.split(''));
137
+ }
138
+ </script>
139
+
140
+ <RootLayout {config} {page} {pages} {search} {loadSearch} hasBackgroundSlot={showBackgroundSlot}>
141
+ <svelte:fragment slot="background">
142
+ <slot name="background" />
143
+ </svelte:fragment>
144
+ {#if showLandingSlot}
145
+ <main id="content" class="sd-home">
146
+ <slot name="landing" {page} {pages} {search} {config} {content} />
147
+ </main>
148
+ {:else}
149
+ <main id="content" class="sd-home">
150
+ <section class="sd-home-hero">
151
+ <span class="sd-home-hero-tape" aria-hidden="true"></span>
152
+ <div class="sd-home-copy">
153
+ <p class="sd-kicker">
154
+ <span class="sd-kicker-mark" aria-hidden="true"></span>
155
+ {config.theme.home.kicker}
156
+ </p>
157
+ <h1>{page.title}</h1>
158
+ {#if page.description}
159
+ <p>{page.description}</p>
160
+ {/if}
161
+ <div class="sd-actions">
162
+ <a class="sd-button sd-button-primary" href={primaryAction.href}>
163
+ <span>{primaryAction.label}</span>
164
+ <span class="sd-button-arrow" aria-hidden="true"></span>
165
+ </a>
166
+ {#if secondaryAction}
167
+ <a class="sd-button" href={secondaryAction.href}>{secondaryAction.label}</a>
168
+ {/if}
169
+ </div>
170
+ </div>
171
+ {#if showHomeHeroVisualSlot}
172
+ <slot name="home-hero-visual" {page} {pages} {config} />
173
+ {:else if config.theme.home.visual.type === 'image' && config.theme.home.visual.src}
174
+ <img class="sd-home-visual" src={config.theme.home.visual.src} alt={config.theme.home.visual.alt} draggable="false" />
175
+ {:else}
176
+ <div class="sd-pixel-stage" aria-hidden="true">
177
+ <span class="sd-pixel-frame" data-corner="tl"></span>
178
+ <span class="sd-pixel-frame" data-corner="tr"></span>
179
+ <span class="sd-pixel-frame" data-corner="bl"></span>
180
+ <span class="sd-pixel-frame" data-corner="br"></span>
181
+ <div class="sd-pixel-grid">
182
+ {#each cells as cell}
183
+ <span
184
+ class:sd-pixel-hot={cell.hot}
185
+ class:sd-pixel-accent={cell.accent}
186
+ style={cell.style}
187
+ ></span>
188
+ {/each}
189
+ </div>
190
+ </div>
191
+ {/if}
192
+ </section>
193
+ {#if showHomeFeaturesSlot}
194
+ <slot name="home-features" {page} {pages} {config} cards={homeCards} />
195
+ {:else}
196
+ <section class="sd-home-grid" aria-label="Documentation entry points">
197
+ {#each homeCards as card, i}
198
+ <a href={card.href} style={`--card-index:${i};`}>
199
+ <span class="sd-home-card-tag">
200
+ <i aria-hidden="true"></i>
201
+ {card.label}
202
+ </span>
203
+ <div class="sd-home-card-glyph" aria-hidden="true">
204
+ {#each glyphRows(card.glyph) as row}
205
+ <div>
206
+ {#each row as cell}
207
+ <i data-on={cell === '1' ? 'true' : 'false'}></i>
208
+ {/each}
209
+ </div>
210
+ {/each}
211
+ </div>
212
+ <strong>{card.title}</strong>
213
+ <small>{card.description}</small>
214
+ <span class="sd-home-card-arrow" aria-hidden="true">→</span>
215
+ </a>
216
+ {/each}
217
+ </section>
218
+ {/if}
219
+ <section class="sd-prose sd-home-body">
220
+ {#if content}
221
+ <svelte:component this={content} />
222
+ {:else}
223
+ {@html page.html}
224
+ {/if}
225
+ </section>
226
+ </main>
227
+ {/if}
228
+ </RootLayout>
@@ -0,0 +1,58 @@
1
+ import type { Component } from 'svelte';
2
+ import type { SvedocsPage, SvedocsResolvedConfig, SvedocsSearchRecord } from '../core/types.js';
3
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
4
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
5
+ $$bindings?: Bindings;
6
+ } & Exports;
7
+ (internal: unknown, props: Props & {
8
+ $$events?: Events;
9
+ $$slots?: Slots;
10
+ }): Exports & {
11
+ $set?: any;
12
+ $on?: any;
13
+ };
14
+ z_$$bindings?: Bindings;
15
+ }
16
+ declare const HomePage: $$__sveltets_2_IsomorphicComponent<{
17
+ page: SvedocsPage;
18
+ pages?: SvedocsPage[];
19
+ search?: SvedocsSearchRecord[];
20
+ config: SvedocsResolvedConfig;
21
+ loadSearch?: (() => Promise<SvedocsSearchRecord[]>) | undefined;
22
+ content?: Component | undefined;
23
+ hasBackgroundSlot?: boolean | undefined;
24
+ hasLandingSlot?: boolean | undefined;
25
+ hasHomeHeroVisualSlot?: boolean | undefined;
26
+ hasHomeFeaturesSlot?: boolean | undefined;
27
+ }, {
28
+ [evt: string]: CustomEvent<any>;
29
+ }, {
30
+ background: {};
31
+ landing: {
32
+ page: SvedocsPage;
33
+ pages: SvedocsPage[];
34
+ search: SvedocsSearchRecord[];
35
+ config: SvedocsResolvedConfig;
36
+ content: Component<{}, {}, string> | undefined;
37
+ };
38
+ 'home-hero-visual': {
39
+ page: SvedocsPage;
40
+ pages: SvedocsPage[];
41
+ config: SvedocsResolvedConfig;
42
+ };
43
+ 'home-features': {
44
+ page: SvedocsPage;
45
+ pages: SvedocsPage[];
46
+ config: SvedocsResolvedConfig;
47
+ cards: {
48
+ label: string;
49
+ title: string;
50
+ description: string;
51
+ href: string;
52
+ glyph: string;
53
+ }[];
54
+ };
55
+ }, {}, string>;
56
+ type HomePage = InstanceType<typeof HomePage>;
57
+ export default HomePage;
58
+ //# sourceMappingURL=HomePage.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HomePage.svelte.d.ts","sourceRoot":"","sources":["../../src/theme/HomePage.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAsOhG,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAUD,QAAA,MAAM,QAAQ;UAfwR,WAAW;YAAU,WAAW,EAAE;aAAW,mBAAmB,EAAE;YAAU,qBAAqB;iBAAe,CAAC,MAAM,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,SAAS;cAAY,SAAS,GAAG,SAAS;wBAAsB,OAAO,GAAG,SAAS;qBAAmB,OAAO,GAAG,SAAS;4BAA0B,OAAO,GAAG,SAAS;0BAAwB,OAAO,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;;;mBA1MroB,MAAM;mBACN,MAAM;yBACA,MAAM;kBACb,MAAM;mBACL,MAAM;;;cAqNkF,CAAC;AAClF,KAAK,QAAQ,GAAG,YAAY,CAAC,OAAO,QAAQ,CAAC,CAAC;AAChD,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,36 @@
1
+ <script lang="ts">
2
+ import type { HTMLInputAttributes } from 'svelte/elements';
3
+ import { classNames, type SvedocsControlDensity } from './forms.js';
4
+
5
+ interface $$Props extends Omit<HTMLInputAttributes, 'class' | 'type' | 'value'> {
6
+ class?: string;
7
+ density?: SvedocsControlDensity;
8
+ invalid?: boolean;
9
+ type?: HTMLInputAttributes['type'];
10
+ value?: HTMLInputAttributes['value'];
11
+ }
12
+
13
+ export let value: HTMLInputAttributes['value'] = '';
14
+ export let type: HTMLInputAttributes['type'] = 'text';
15
+ export let invalid = false;
16
+ export let density: SvedocsControlDensity = 'md';
17
+
18
+ let className = '';
19
+
20
+ export { className as class };
21
+ </script>
22
+
23
+ <input
24
+ {...$$restProps}
25
+ class={classNames('sd-input', className)}
26
+ data-density={density}
27
+ aria-invalid={invalid ? 'true' : undefined}
28
+ {type}
29
+ bind:value
30
+ on:blur
31
+ on:change
32
+ on:focus
33
+ on:input
34
+ on:keydown
35
+ on:keyup
36
+ />
@@ -0,0 +1,34 @@
1
+ import type { HTMLInputAttributes } from 'svelte/elements';
2
+ import { type SvedocsControlDensity } from './forms.js';
3
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
4
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
5
+ $$bindings?: Bindings;
6
+ } & Exports;
7
+ (internal: unknown, props: Props & {
8
+ $$events?: Events;
9
+ $$slots?: Slots;
10
+ }): Exports & {
11
+ $set?: any;
12
+ $on?: any;
13
+ };
14
+ z_$$bindings?: Bindings;
15
+ }
16
+ declare const Input: $$__sveltets_2_IsomorphicComponent<Omit<HTMLInputAttributes, "type" | "value" | "class"> & {
17
+ class?: string;
18
+ density?: SvedocsControlDensity;
19
+ invalid?: boolean;
20
+ type?: HTMLInputAttributes["type"];
21
+ value?: HTMLInputAttributes["value"];
22
+ }, {
23
+ blur: FocusEvent;
24
+ change: Event;
25
+ focus: FocusEvent;
26
+ input: InputEvent;
27
+ keydown: KeyboardEvent;
28
+ keyup: KeyboardEvent;
29
+ } & {
30
+ [evt: string]: CustomEvent<any>;
31
+ }, {}, {}, string>;
32
+ type Input = InstanceType<typeof Input>;
33
+ export default Input;
34
+ //# sourceMappingURL=Input.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.svelte.d.ts","sourceRoot":"","sources":["../../src/theme/Input.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAc,KAAK,qBAAqB,EAAE,MAAM,YAAY,CAAC;AA4BpE,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,KAAK;YA9BC,MAAM;cACJ,qBAAqB;cACrB,OAAO;WACV,mBAAmB,CAAC,MAAM,CAAC;YAC1B,mBAAmB,CAAC,OAAO,CAAC;;;;;;;;;;kBA0BkD,CAAC;AACzE,KAAK,KAAK,GAAG,YAAY,CAAC,OAAO,KAAK,CAAC,CAAC;AAC1C,eAAe,KAAK,CAAC"}
@@ -0,0 +1,36 @@
1
+ <script lang="ts">
2
+ import type { Component } from 'svelte';
3
+ import type { SvedocsPage, SvedocsResolvedConfig, SvedocsSearchRecord } from '../core/types.js';
4
+ import RootLayout from './RootLayout.svelte';
5
+
6
+ export let page: SvedocsPage;
7
+ export let pages: SvedocsPage[] = [];
8
+ export let search: SvedocsSearchRecord[] = [];
9
+ export let config: SvedocsResolvedConfig;
10
+ export let loadSearch: (() => Promise<SvedocsSearchRecord[]>) | undefined = undefined;
11
+ export let content: Component | undefined = undefined;
12
+ export let hasBackgroundSlot: boolean | undefined = undefined;
13
+ $: showBackgroundSlot = hasBackgroundSlot ?? Boolean($$slots.background);
14
+ </script>
15
+
16
+ <RootLayout {config} {page} {pages} {search} {loadSearch} hasBackgroundSlot={showBackgroundSlot}>
17
+ <svelte:fragment slot="background">
18
+ <slot name="background" />
19
+ </svelte:fragment>
20
+ <main id="content" class="sd-page">
21
+ <section class="sd-page-hero">
22
+ <p class="sd-kicker">{config.site.name}</p>
23
+ <h1>{page.title}</h1>
24
+ {#if page.description}
25
+ <p>{page.description}</p>
26
+ {/if}
27
+ </section>
28
+ <section class="sd-prose">
29
+ {#if content}
30
+ <svelte:component this={content} />
31
+ {:else}
32
+ {@html page.html}
33
+ {/if}
34
+ </section>
35
+ </main>
36
+ </RootLayout>
@@ -0,0 +1,31 @@
1
+ import type { Component } from 'svelte';
2
+ import type { SvedocsPage, SvedocsResolvedConfig, SvedocsSearchRecord } from '../core/types.js';
3
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
4
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
5
+ $$bindings?: Bindings;
6
+ } & Exports;
7
+ (internal: unknown, props: Props & {
8
+ $$events?: Events;
9
+ $$slots?: Slots;
10
+ }): Exports & {
11
+ $set?: any;
12
+ $on?: any;
13
+ };
14
+ z_$$bindings?: Bindings;
15
+ }
16
+ declare const PageLayout: $$__sveltets_2_IsomorphicComponent<{
17
+ page: SvedocsPage;
18
+ pages?: SvedocsPage[];
19
+ search?: SvedocsSearchRecord[];
20
+ config: SvedocsResolvedConfig;
21
+ loadSearch?: (() => Promise<SvedocsSearchRecord[]>) | undefined;
22
+ content?: Component | undefined;
23
+ hasBackgroundSlot?: boolean | undefined;
24
+ }, {
25
+ [evt: string]: CustomEvent<any>;
26
+ }, {
27
+ background: {};
28
+ }, {}, string>;
29
+ type PageLayout = InstanceType<typeof PageLayout>;
30
+ export default PageLayout;
31
+ //# sourceMappingURL=PageLayout.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageLayout.svelte.d.ts","sourceRoot":"","sources":["../../src/theme/PageLayout.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AA0ChG,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAUD,QAAA,MAAM,UAAU;UAf2J,WAAW;YAAU,WAAW,EAAE;aAAW,mBAAmB,EAAE;YAAU,qBAAqB;iBAAe,CAAC,MAAM,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,SAAS;cAAY,SAAS,GAAG,SAAS;wBAAsB,OAAO,GAAG,SAAS;;;;;cAelT,CAAC;AACpF,KAAK,UAAU,GAAG,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;AACpD,eAAe,UAAU,CAAC"}