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,22 @@
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
+ declare const CodeBlock: $$__sveltets_2_IsomorphicComponent<{
15
+ code?: string;
16
+ language?: string;
17
+ }, {
18
+ [evt: string]: CustomEvent<any>;
19
+ }, {}, {}, string>;
20
+ type CodeBlock = InstanceType<typeof CodeBlock>;
21
+ export default CodeBlock;
22
+ //# sourceMappingURL=CodeBlock.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeBlock.svelte.d.ts","sourceRoot":"","sources":["../../src/theme/CodeBlock.svelte.ts"],"names":[],"mappings":"AAYA,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,SAAS;;;;;kBAA+E,CAAC;AAC7E,KAAK,SAAS,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,CAAC;AAClD,eAAe,SAAS,CAAC"}
@@ -0,0 +1,121 @@
1
+ <script lang="ts">
2
+ import { onMount } from 'svelte';
3
+ import type { Component } from 'svelte';
4
+ import type { SvedocsPage } from '../core/types.js';
5
+
6
+ export let page: SvedocsPage;
7
+ export let content: Component | undefined = undefined;
8
+ export let hasDocHeaderSlot: boolean | undefined = undefined;
9
+ $: breadcrumbs = createBreadcrumbs(page);
10
+ $: kind = page.kind === 'doc' ? 'Documentation' : 'Page';
11
+ $: eyebrow = breadcrumbs.length > 0 ? breadcrumbs : [{ label: kind, path: page.kind === 'doc' ? '/docs' : '/' }];
12
+ $: showDocHeaderSlot = hasDocHeaderSlot ?? Boolean($$slots['doc-header']);
13
+
14
+ const copyIconSvg = '<svg viewBox="0 0 24 24" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M9 5h9v14H9zM6 8v12h10"/></svg>';
15
+ const checkIconSvg = '<svg viewBox="0 0 24 24" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12l4 4 10-10"/></svg>';
16
+
17
+ onMount(() => {
18
+ const root = document.querySelector<HTMLElement>('.sd-prose');
19
+ if (!root) return;
20
+ function handleClick(event: MouseEvent) {
21
+ const target = event.target as HTMLElement | null;
22
+ const button = target?.closest<HTMLButtonElement>('button.sd-code-copy');
23
+ if (!button) return;
24
+ event.preventDefault();
25
+ const block = button.closest<HTMLElement>('.sd-code');
26
+ if (!block) return;
27
+ const source = block.dataset.copy
28
+ ?? block.querySelector<HTMLElement>('code[data-copy]')?.dataset.copy
29
+ ?? block.querySelector('code')?.textContent
30
+ ?? block.textContent
31
+ ?? '';
32
+ void copyToClipboard(button, source);
33
+ }
34
+ root.addEventListener('click', handleClick);
35
+ return () => root.removeEventListener('click', handleClick);
36
+ });
37
+
38
+ async function copyToClipboard(button: HTMLButtonElement, source: string) {
39
+ try {
40
+ await navigator.clipboard.writeText(source.trim());
41
+ button.dataset.state = 'copied';
42
+ button.innerHTML = checkIconSvg;
43
+ button.setAttribute('aria-label', 'Copied');
44
+ window.setTimeout(() => {
45
+ button.dataset.state = 'idle';
46
+ button.innerHTML = copyIconSvg;
47
+ button.setAttribute('aria-label', 'Copy code');
48
+ }, 1600);
49
+ } catch {
50
+ button.dataset.state = 'error';
51
+ }
52
+ }
53
+
54
+ function createBreadcrumbs(page: SvedocsPage) {
55
+ const segments = page.routePath.split('/').filter(Boolean);
56
+ const parentSegments = segments.slice(0, -1);
57
+ return parentSegments.map((segment, index) => {
58
+ const path = `/${segments.slice(0, index + 1).join('/')}`;
59
+ return { label: titleFromSegment(segment), path };
60
+ });
61
+ }
62
+
63
+ function titleFromSegment(segment: string): string {
64
+ return segment
65
+ .replace(/[-_]+/g, ' ')
66
+ .replace(/\b\w/g, (letter) => letter.toUpperCase());
67
+ }
68
+ </script>
69
+
70
+ <article class="sd-doc">
71
+ <span class="sd-doc-corner" data-corner="tl" aria-hidden="true"></span>
72
+ <span class="sd-doc-corner" data-corner="tr" aria-hidden="true"></span>
73
+ {#if showDocHeaderSlot}
74
+ <slot name="doc-header" {page} breadcrumbs={eyebrow} />
75
+ {:else}
76
+ <header class="sd-doc-header">
77
+ <nav class="sd-doc-eyebrow" aria-label="Breadcrumb">
78
+ <span class="sd-doc-eyebrow-mark" aria-hidden="true"></span>
79
+ {#each eyebrow as item, i}
80
+ {#if i > 0}<span class="sd-doc-eyebrow-sep" aria-hidden="true">/</span>{/if}
81
+ <a href={item.path}>{item.label}</a>
82
+ {/each}
83
+ </nav>
84
+ <h1>{page.title}</h1>
85
+ {#if page.description}
86
+ <p class="sd-doc-lede">{page.description}</p>
87
+ {/if}
88
+ </header>
89
+ {/if}
90
+ <div class="sd-prose">
91
+ {#if content}
92
+ <svelte:component this={content} />
93
+ {:else}
94
+ {@html page.html}
95
+ {/if}
96
+ </div>
97
+ <footer class="sd-doc-footer">
98
+ <div class="sd-doc-meta">
99
+ {#if page.lastUpdated}
100
+ <span>Updated {new Date(page.lastUpdated).toLocaleDateString()}</span>
101
+ {/if}
102
+ {#if page.editUrl}
103
+ <a href={page.editUrl}>Edit this page</a>
104
+ {/if}
105
+ </div>
106
+ {#if page.prev}
107
+ <a class="sd-prev-next" data-direction="prev" href={page.prev.path}>
108
+ <span><i aria-hidden="true"></i>Previous</span>
109
+ <strong>{page.prev.title}</strong>
110
+ <em class="sd-prev-next-arrow" aria-hidden="true">←</em>
111
+ </a>
112
+ {/if}
113
+ {#if page.next}
114
+ <a class="sd-prev-next" data-direction="next" href={page.next.path}>
115
+ <span>Next<i aria-hidden="true"></i></span>
116
+ <strong>{page.next.title}</strong>
117
+ <em class="sd-prev-next-arrow" aria-hidden="true">→</em>
118
+ </a>
119
+ {/if}
120
+ </footer>
121
+ </article>
@@ -0,0 +1,33 @@
1
+ import type { Component } from 'svelte';
2
+ import type { SvedocsPage } 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 DocPage: $$__sveltets_2_IsomorphicComponent<{
17
+ page: SvedocsPage;
18
+ content?: Component | undefined;
19
+ hasDocHeaderSlot?: boolean | undefined;
20
+ }, {
21
+ [evt: string]: CustomEvent<any>;
22
+ }, {
23
+ 'doc-header': {
24
+ page: SvedocsPage;
25
+ breadcrumbs: {
26
+ label: string;
27
+ path: string;
28
+ }[];
29
+ };
30
+ }, {}, string>;
31
+ type DocPage = InstanceType<typeof DocPage>;
32
+ export default DocPage;
33
+ //# sourceMappingURL=DocPage.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocPage.svelte.d.ts","sourceRoot":"","sources":["../../src/theme/DocPage.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AA8HpD,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,OAAO;UAfkF,WAAW;cAAY,SAAS,GAAG,SAAS;uBAAqB,OAAO,GAAG,SAAS;;;;;;;;;;;cAejF,CAAC;AACjF,KAAK,OAAO,GAAG,YAAY,CAAC,OAAO,OAAO,CAAC,CAAC;AAC9C,eAAe,OAAO,CAAC"}
@@ -0,0 +1,78 @@
1
+ <script lang="ts">
2
+ import type { Component } from 'svelte';
3
+ import type { SvedocsPage, SvedocsResolvedConfig, SvedocsSearchRecord, SvedocsTreeItem } from '../core/types.js';
4
+ import DocsLayout from './DocsLayout.svelte';
5
+ import HomePage from './HomePage.svelte';
6
+ import PageLayout from './PageLayout.svelte';
7
+
8
+ export let page: SvedocsPage;
9
+ export let pages: SvedocsPage[] = [];
10
+ export let tree: SvedocsTreeItem[] = [];
11
+ export let search: SvedocsSearchRecord[] = [];
12
+ export let config: SvedocsResolvedConfig;
13
+ export let components: Record<string, Component> = {};
14
+ export let layouts: Record<string, Component> = {};
15
+ export let loadSearch: (() => Promise<SvedocsSearchRecord[]>) | undefined = undefined;
16
+
17
+ $: layoutName = typeof page.frontmatter.layout === 'string' ? page.frontmatter.layout : '';
18
+ $: customLayout = layoutName && layoutName !== 'home' && layoutName !== 'docs' ? layouts[layoutName] : undefined;
19
+ $: hasBackgroundSlot = Boolean($$slots.background);
20
+ $: hasLandingSlot = Boolean($$slots.landing);
21
+ $: hasHomeHeroVisualSlot = Boolean($$slots['home-hero-visual']);
22
+ $: hasHomeFeaturesSlot = Boolean($$slots['home-features']);
23
+ $: hasDocHeaderSlot = Boolean($$slots['doc-header']);
24
+ </script>
25
+
26
+ {#if customLayout}
27
+ <svelte:component
28
+ this={customLayout}
29
+ {page}
30
+ {pages}
31
+ {tree}
32
+ {search}
33
+ {config}
34
+ {loadSearch}
35
+ content={components[page.id]}
36
+ />
37
+ {:else if page.routePath === '/' || page.frontmatter.layout === 'home'}
38
+ <HomePage
39
+ {page}
40
+ {pages}
41
+ {search}
42
+ {config}
43
+ {loadSearch}
44
+ content={components[page.id]}
45
+ {hasBackgroundSlot}
46
+ {hasLandingSlot}
47
+ {hasHomeHeroVisualSlot}
48
+ {hasHomeFeaturesSlot}
49
+ >
50
+ <svelte:fragment slot="background">
51
+ <slot name="background" />
52
+ </svelte:fragment>
53
+ <svelte:fragment slot="landing" let:page let:pages let:search let:config let:content>
54
+ <slot name="landing" {page} {pages} {search} {config} {content} />
55
+ </svelte:fragment>
56
+ <svelte:fragment slot="home-hero-visual" let:page let:pages let:config>
57
+ <slot name="home-hero-visual" {page} {pages} {config} />
58
+ </svelte:fragment>
59
+ <svelte:fragment slot="home-features" let:page let:pages let:config let:cards>
60
+ <slot name="home-features" {page} {pages} {config} {cards} />
61
+ </svelte:fragment>
62
+ </HomePage>
63
+ {:else if page.kind === 'page' || page.frontmatter.layout === 'page'}
64
+ <PageLayout {page} {pages} {search} {config} {loadSearch} content={components[page.id]} {hasBackgroundSlot}>
65
+ <svelte:fragment slot="background">
66
+ <slot name="background" />
67
+ </svelte:fragment>
68
+ </PageLayout>
69
+ {:else}
70
+ <DocsLayout {page} {pages} {tree} {search} {config} {loadSearch} content={components[page.id]} {hasBackgroundSlot} {hasDocHeaderSlot}>
71
+ <svelte:fragment slot="background">
72
+ <slot name="background" />
73
+ </svelte:fragment>
74
+ <svelte:fragment slot="doc-header" let:page let:breadcrumbs>
75
+ <slot name="doc-header" {page} {breadcrumbs} />
76
+ </svelte:fragment>
77
+ </DocsLayout>
78
+ {/if}
@@ -0,0 +1,63 @@
1
+ import type { Component } from 'svelte';
2
+ import type { SvedocsPage, SvedocsResolvedConfig, SvedocsSearchRecord, SvedocsTreeItem } 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 DocsApp: $$__sveltets_2_IsomorphicComponent<{
17
+ page: SvedocsPage;
18
+ pages?: SvedocsPage[];
19
+ tree?: SvedocsTreeItem[];
20
+ search?: SvedocsSearchRecord[];
21
+ config: SvedocsResolvedConfig;
22
+ components?: Record<string, Component>;
23
+ layouts?: Record<string, Component>;
24
+ loadSearch?: (() => Promise<SvedocsSearchRecord[]>) | undefined;
25
+ }, {
26
+ [evt: string]: CustomEvent<any>;
27
+ }, {
28
+ background: {};
29
+ landing: {
30
+ page: SvedocsPage;
31
+ pages: SvedocsPage[];
32
+ search: SvedocsSearchRecord[];
33
+ config: SvedocsResolvedConfig;
34
+ content: Component<{}, {}, string> | undefined;
35
+ };
36
+ 'home-hero-visual': {
37
+ page: SvedocsPage;
38
+ pages: SvedocsPage[];
39
+ config: SvedocsResolvedConfig;
40
+ };
41
+ 'home-features': {
42
+ page: SvedocsPage;
43
+ pages: SvedocsPage[];
44
+ config: SvedocsResolvedConfig;
45
+ cards: {
46
+ label: string;
47
+ title: string;
48
+ description: string;
49
+ href: string;
50
+ glyph: string;
51
+ }[];
52
+ };
53
+ 'doc-header': {
54
+ page: SvedocsPage;
55
+ breadcrumbs: {
56
+ label: string;
57
+ path: string;
58
+ }[];
59
+ };
60
+ }, {}, string>;
61
+ type DocsApp = InstanceType<typeof DocsApp>;
62
+ export default DocsApp;
63
+ //# sourceMappingURL=DocsApp.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocsApp.svelte.d.ts","sourceRoot":"","sources":["../../src/theme/DocsApp.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAkEjH,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,OAAO;UAf6J,WAAW;YAAU,WAAW,EAAE;WAAS,eAAe,EAAE;aAAW,mBAAmB,EAAE;YAAU,qBAAqB;iBAAe,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC;cAAY,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC;iBAAe,CAAC,MAAM,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAejV,CAAC;AACjF,KAAK,OAAO,GAAG,YAAY,CAAC,OAAO,OAAO,CAAC,CAAC;AAC9C,eAAe,OAAO,CAAC"}
@@ -0,0 +1,167 @@
1
+ <script lang="ts">
2
+ import { onMount, tick } from 'svelte';
3
+ import type { Component } from 'svelte';
4
+ import type { SvedocsPage, SvedocsResolvedConfig, SvedocsSearchRecord, SvedocsTreeItem } from '../core/types.js';
5
+ import { createPageTree as createCorePageTree } from '../core/navigation.js';
6
+ import DocPage from './DocPage.svelte';
7
+ import RootLayout from './RootLayout.svelte';
8
+ import SidebarTree from './SidebarTree.svelte';
9
+
10
+ export let page: SvedocsPage;
11
+ export let pages: SvedocsPage[] = [];
12
+ export let tree: SvedocsTreeItem[] = [];
13
+ export let search: SvedocsSearchRecord[] = [];
14
+ export let config: SvedocsResolvedConfig;
15
+ export let loadSearch: (() => Promise<SvedocsSearchRecord[]>) | undefined = undefined;
16
+ export let content: Component | undefined = undefined;
17
+ export let hasBackgroundSlot: boolean | undefined = undefined;
18
+ export let hasDocHeaderSlot: boolean | undefined = undefined;
19
+
20
+ let activeHeading = page.headings[0]?.id ?? '';
21
+ let tocEl: HTMLElement | null = null;
22
+ let indicatorTop = 0;
23
+ let indicatorHeight = 0;
24
+ let indicatorReady = false;
25
+ let headingFrame: number | undefined;
26
+ let stopHeadingTracking: (() => void) | undefined;
27
+ let headingTrackingVersion = 0;
28
+ let mounted = false;
29
+ $: scopedTree = createCorePageTree(filterPagesForCurrentScope(pages, page));
30
+ $: navigationTree = scopedTree.length ? scopedTree : tree;
31
+ $: showBackgroundSlot = hasBackgroundSlot ?? Boolean($$slots.background);
32
+ $: showDocHeaderSlot = hasDocHeaderSlot ?? Boolean($$slots['doc-header']);
33
+
34
+ onMount(() => {
35
+ mounted = true;
36
+ return () => {
37
+ headingTrackingVersion += 1;
38
+ stopHeadingTracking?.();
39
+ cancelHeadingFrame();
40
+ };
41
+ });
42
+
43
+ $: if (mounted) void attachHeadingTracker(page);
44
+
45
+ async function attachHeadingTracker(currentPage: SvedocsPage) {
46
+ const version = headingTrackingVersion + 1;
47
+ headingTrackingVersion = version;
48
+ stopHeadingTracking?.();
49
+ stopHeadingTracking = undefined;
50
+ cancelHeadingFrame();
51
+ indicatorReady = false;
52
+ activeHeading = currentPage.headings[0]?.id ?? '';
53
+ await tick();
54
+ if (version !== headingTrackingVersion) return;
55
+ const headings = currentPage.headings
56
+ .map((heading) => document.getElementById(heading.id))
57
+ .filter((element): element is HTMLElement => Boolean(element));
58
+ if (headings.length === 0) return;
59
+ const syncActiveHeading = () => {
60
+ headingFrame = undefined;
61
+ const nextHeading = getActiveHeading(headings);
62
+ if (nextHeading) activeHeading = nextHeading.id;
63
+ };
64
+ const scheduleActiveHeadingSync = () => {
65
+ if (headingFrame !== undefined) return;
66
+ headingFrame = requestAnimationFrame(syncActiveHeading);
67
+ };
68
+ window.addEventListener('scroll', scheduleActiveHeadingSync, { passive: true });
69
+ window.addEventListener('resize', scheduleActiveHeadingSync);
70
+ stopHeadingTracking = () => {
71
+ window.removeEventListener('scroll', scheduleActiveHeadingSync);
72
+ window.removeEventListener('resize', scheduleActiveHeadingSync);
73
+ };
74
+ scheduleActiveHeadingSync();
75
+ }
76
+
77
+ $: if (typeof document !== 'undefined' && tocEl && activeHeading) {
78
+ void updateIndicator(activeHeading);
79
+ }
80
+
81
+ async function updateIndicator(id: string) {
82
+ await tick();
83
+ if (!tocEl) return;
84
+ const link = tocEl.querySelector<HTMLElement>(`a.sd-toc-link[href="#${cssEscape(id)}"]`);
85
+ if (!link) return;
86
+ const markerHeight = Math.min(24, Math.max(16, link.offsetHeight - 12));
87
+ indicatorTop = link.offsetTop + (link.offsetHeight - markerHeight) / 2;
88
+ indicatorHeight = markerHeight;
89
+ indicatorReady = true;
90
+ }
91
+
92
+ function handleTocClick(event: MouseEvent, id: string) {
93
+ activeHeading = id;
94
+ }
95
+
96
+ function cssEscape(value: string): string {
97
+ if (typeof CSS !== 'undefined' && typeof CSS.escape === 'function') return CSS.escape(value);
98
+ return value.replace(/([^a-zA-Z0-9_-])/g, '\\$1');
99
+ }
100
+
101
+ function cancelHeadingFrame() {
102
+ if (headingFrame === undefined) return;
103
+ cancelAnimationFrame(headingFrame);
104
+ headingFrame = undefined;
105
+ }
106
+
107
+ function getActiveHeading(headings: HTMLElement[]): HTMLElement | undefined {
108
+ const viewportTop = 80;
109
+ const viewportBottom = window.innerHeight || document.documentElement.clientHeight;
110
+ const snapshots = headings.map((heading) => ({
111
+ element: heading,
112
+ top: heading.getBoundingClientRect().top
113
+ }));
114
+ const visible = snapshots.filter((heading) => heading.top >= viewportTop && heading.top <= viewportBottom);
115
+ if (visible.length > 0) {
116
+ return visible.reduce((lowest, heading) => heading.top > lowest.top ? heading : lowest).element;
117
+ }
118
+ return snapshots.filter((heading) => heading.top < viewportTop).at(-1)?.element ?? snapshots[0]?.element;
119
+ }
120
+
121
+ function filterPagesForCurrentScope(pages: SvedocsPage[], current: SvedocsPage): SvedocsPage[] {
122
+ return pages.filter((candidate) => candidate.kind === 'doc'
123
+ && candidate.locale === current.locale);
124
+ }
125
+
126
+ </script>
127
+
128
+ <RootLayout {config} {page} {pages} {search} {loadSearch} mobileTree={navigationTree} mobileCurrentPath={page.routePath} hasBackgroundSlot={showBackgroundSlot}>
129
+ <svelte:fragment slot="background">
130
+ <slot name="background" />
131
+ </svelte:fragment>
132
+ <div class="sd-doc-shell">
133
+ <aside class="sd-sidebar" aria-label="Documentation">
134
+ <nav>
135
+ <SidebarTree items={navigationTree} currentPath={page.routePath} />
136
+ </nav>
137
+ </aside>
138
+ <main id="content" class="sd-content">
139
+ <DocPage {page} {content} hasDocHeaderSlot={showDocHeaderSlot}>
140
+ <svelte:fragment slot="doc-header" let:page let:breadcrumbs>
141
+ <slot name="doc-header" {page} {breadcrumbs} />
142
+ </svelte:fragment>
143
+ </DocPage>
144
+ </main>
145
+ <aside
146
+ bind:this={tocEl}
147
+ class="sd-toc"
148
+ class:sd-toc-ready={indicatorReady}
149
+ aria-label="On this page"
150
+ style={`--toc-indicator-top:${indicatorTop}px;--toc-indicator-height:${indicatorHeight}px;`}
151
+ >
152
+ {#if page.headings.length > 0}
153
+ <div class="sd-toc-title">On this page</div>
154
+ {#each page.headings as heading}
155
+ <a
156
+ class:sd-active={heading.id === activeHeading}
157
+ class="sd-toc-link sd-depth-{heading.depth}"
158
+ href={'#' + heading.id}
159
+ on:click={(event) => handleTocClick(event, heading.id)}
160
+ >
161
+ {heading.text}
162
+ </a>
163
+ {/each}
164
+ {/if}
165
+ </aside>
166
+ </div>
167
+ </RootLayout>
@@ -0,0 +1,40 @@
1
+ import type { Component } from 'svelte';
2
+ import type { SvedocsPage, SvedocsResolvedConfig, SvedocsSearchRecord, SvedocsTreeItem } 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 DocsLayout: $$__sveltets_2_IsomorphicComponent<{
17
+ page: SvedocsPage;
18
+ pages?: SvedocsPage[];
19
+ tree?: SvedocsTreeItem[];
20
+ search?: SvedocsSearchRecord[];
21
+ config: SvedocsResolvedConfig;
22
+ loadSearch?: (() => Promise<SvedocsSearchRecord[]>) | undefined;
23
+ content?: Component | undefined;
24
+ hasBackgroundSlot?: boolean | undefined;
25
+ hasDocHeaderSlot?: boolean | undefined;
26
+ }, {
27
+ [evt: string]: CustomEvent<any>;
28
+ }, {
29
+ background: {};
30
+ 'doc-header': {
31
+ page: SvedocsPage;
32
+ breadcrumbs: {
33
+ label: string;
34
+ path: string;
35
+ }[];
36
+ };
37
+ }, {}, string>;
38
+ type DocsLayout = InstanceType<typeof DocsLayout>;
39
+ export default DocsLayout;
40
+ //# sourceMappingURL=DocsLayout.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocsLayout.svelte.d.ts","sourceRoot":"","sources":["../../src/theme/DocsLayout.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAqKjH,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;UAf6M,WAAW;YAAU,WAAW,EAAE;WAAS,eAAe,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;uBAAqB,OAAO,GAAG,SAAS;;;;;;;;;;;;cAeta,CAAC;AACpF,KAAK,UAAU,GAAG,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;AACpD,eAAe,UAAU,CAAC"}
@@ -0,0 +1,73 @@
1
+ <script lang="ts">
2
+ import { onMount } from 'svelte';
3
+ import type { SvedocsResolvedConfig } from '../core/types.js';
4
+
5
+ export let config: SvedocsResolvedConfig;
6
+
7
+ let scrolled = false;
8
+
9
+ $: aiEnabled = config.ai.enabled;
10
+ $: showBackToTop = scrolled;
11
+ $: visible = aiEnabled || showBackToTop;
12
+ $: mode = aiEnabled ? 'pill' : 'solo';
13
+ $: aiCollapsed = aiEnabled && showBackToTop;
14
+
15
+ function openAskAi() {
16
+ window.dispatchEvent(new CustomEvent('svedocs:open-ai'));
17
+ }
18
+
19
+ function backToTop() {
20
+ const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
21
+ window.scrollTo({ top: 0, behavior: reduceMotion ? 'auto' : 'smooth' });
22
+ }
23
+
24
+ onMount(() => {
25
+ function updateScrolled() {
26
+ scrolled = window.scrollY > 240;
27
+ }
28
+
29
+ updateScrolled();
30
+ window.addEventListener('scroll', updateScrolled, { passive: true });
31
+ return () => window.removeEventListener('scroll', updateScrolled);
32
+ });
33
+ </script>
34
+
35
+ {#if visible}
36
+ <div
37
+ class="sd-floating-toolbar"
38
+ role="toolbar"
39
+ aria-label="Page tools"
40
+ data-mode={mode}
41
+ data-scrolled={scrolled}
42
+ >
43
+ {#if aiEnabled}
44
+ <button
45
+ class="sd-floating-tool sd-floating-tool-ai"
46
+ type="button"
47
+ aria-label={config.ai.label}
48
+ title={config.ai.label}
49
+ data-collapsed={aiCollapsed}
50
+ on:click={openAskAi}
51
+ >
52
+ <svg class="sd-floating-tool-glyph" aria-hidden="true" viewBox="0 0 24 24">
53
+ <path d="M5 5h14v10H9l-4 4V5Z" />
54
+ <path d="M8 9h8M8 12h5" />
55
+ </svg>
56
+ <span class="sd-floating-tool-label">{config.ai.label}</span>
57
+ </button>
58
+ {/if}
59
+ {#if showBackToTop}
60
+ <button
61
+ class="sd-floating-tool sd-floating-tool-icon sd-floating-tool-back"
62
+ type="button"
63
+ aria-label="Back to top"
64
+ title="Back to top"
65
+ on:click={backToTop}
66
+ >
67
+ <svg aria-hidden="true" viewBox="0 0 24 24">
68
+ <path d="M12 5l-7 7m7-7 7 7M12 6v13" />
69
+ </svg>
70
+ </button>
71
+ {/if}
72
+ </div>
73
+ {/if}
@@ -0,0 +1,22 @@
1
+ import type { SvedocsResolvedConfig } from '../core/types.js';
2
+ 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> {
3
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
+ $$bindings?: Bindings;
5
+ } & Exports;
6
+ (internal: unknown, props: Props & {
7
+ $$events?: Events;
8
+ $$slots?: Slots;
9
+ }): Exports & {
10
+ $set?: any;
11
+ $on?: any;
12
+ };
13
+ z_$$bindings?: Bindings;
14
+ }
15
+ declare const FloatingToolbar: $$__sveltets_2_IsomorphicComponent<{
16
+ config: SvedocsResolvedConfig;
17
+ }, {
18
+ [evt: string]: CustomEvent<any>;
19
+ }, {}, {}, string>;
20
+ type FloatingToolbar = InstanceType<typeof FloatingToolbar>;
21
+ export default FloatingToolbar;
22
+ //# sourceMappingURL=FloatingToolbar.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FloatingToolbar.svelte.d.ts","sourceRoot":"","sources":["../../src/theme/FloatingToolbar.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AA2D9D,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,eAAe;YAVwB,qBAAqB;;;kBAUkC,CAAC;AACnF,KAAK,eAAe,GAAG,YAAY,CAAC,OAAO,eAAe,CAAC,CAAC;AAC9D,eAAe,eAAe,CAAC"}