@fuzdev/fuz_ui 0.169.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +93 -0
- package/dist/Alert.svelte +108 -0
- package/dist/Alert.svelte.d.ts +16 -0
- package/dist/Alert.svelte.d.ts.map +1 -0
- package/dist/ApiDeclarationList.svelte +35 -0
- package/dist/ApiDeclarationList.svelte.d.ts +9 -0
- package/dist/ApiDeclarationList.svelte.d.ts.map +1 -0
- package/dist/ApiIndex.svelte +65 -0
- package/dist/ApiIndex.svelte.d.ts +23 -0
- package/dist/ApiIndex.svelte.d.ts.map +1 -0
- package/dist/ApiModule.svelte +124 -0
- package/dist/ApiModule.svelte.d.ts +22 -0
- package/dist/ApiModule.svelte.d.ts.map +1 -0
- package/dist/Breadcrumb.svelte +83 -0
- package/dist/Breadcrumb.svelte.d.ts +23 -0
- package/dist/Breadcrumb.svelte.d.ts.map +1 -0
- package/dist/Card.svelte +157 -0
- package/dist/Card.svelte.d.ts +13 -0
- package/dist/Card.svelte.d.ts.map +1 -0
- package/dist/ColorSchemeInput.svelte +65 -0
- package/dist/ColorSchemeInput.svelte.d.ts +11 -0
- package/dist/ColorSchemeInput.svelte.d.ts.map +1 -0
- package/dist/Contextmenu.svelte +30 -0
- package/dist/Contextmenu.svelte.d.ts +32 -0
- package/dist/Contextmenu.svelte.d.ts.map +1 -0
- package/dist/ContextmenuEntry.svelte +74 -0
- package/dist/ContextmenuEntry.svelte.d.ts +12 -0
- package/dist/ContextmenuEntry.svelte.d.ts.map +1 -0
- package/dist/ContextmenuLinkEntry.svelte +112 -0
- package/dist/ContextmenuLinkEntry.svelte.d.ts +12 -0
- package/dist/ContextmenuLinkEntry.svelte.d.ts.map +1 -0
- package/dist/ContextmenuRoot.svelte +372 -0
- package/dist/ContextmenuRoot.svelte.d.ts +71 -0
- package/dist/ContextmenuRoot.svelte.d.ts.map +1 -0
- package/dist/ContextmenuRootForSafariCompatibility.svelte +541 -0
- package/dist/ContextmenuRootForSafariCompatibility.svelte.d.ts +79 -0
- package/dist/ContextmenuRootForSafariCompatibility.svelte.d.ts.map +1 -0
- package/dist/ContextmenuSeparator.svelte +16 -0
- package/dist/ContextmenuSeparator.svelte.d.ts +4 -0
- package/dist/ContextmenuSeparator.svelte.d.ts.map +1 -0
- package/dist/ContextmenuSubmenu.svelte +116 -0
- package/dist/ContextmenuSubmenu.svelte.d.ts +10 -0
- package/dist/ContextmenuSubmenu.svelte.d.ts.map +1 -0
- package/dist/ContextmenuTextEntry.svelte +21 -0
- package/dist/ContextmenuTextEntry.svelte.d.ts +10 -0
- package/dist/ContextmenuTextEntry.svelte.d.ts.map +1 -0
- package/dist/CopyToClipboard.svelte +81 -0
- package/dist/CopyToClipboard.svelte.d.ts +18 -0
- package/dist/CopyToClipboard.svelte.d.ts.map +1 -0
- package/dist/DeclarationDetail.svelte +340 -0
- package/dist/DeclarationDetail.svelte.d.ts +8 -0
- package/dist/DeclarationDetail.svelte.d.ts.map +1 -0
- package/dist/DeclarationLink.svelte +50 -0
- package/dist/DeclarationLink.svelte.d.ts +8 -0
- package/dist/DeclarationLink.svelte.d.ts.map +1 -0
- package/dist/Details.svelte +51 -0
- package/dist/Details.svelte.d.ts +20 -0
- package/dist/Details.svelte.d.ts.map +1 -0
- package/dist/Dialog.svelte +217 -0
- package/dist/Dialog.svelte.d.ts +30 -0
- package/dist/Dialog.svelte.d.ts.map +1 -0
- package/dist/Dialogs.svelte +28 -0
- package/dist/Dialogs.svelte.d.ts +11 -0
- package/dist/Dialogs.svelte.d.ts.map +1 -0
- package/dist/Docs.svelte +179 -0
- package/dist/Docs.svelte.d.ts +13 -0
- package/dist/Docs.svelte.d.ts.map +1 -0
- package/dist/DocsContent.svelte +40 -0
- package/dist/DocsContent.svelte.d.ts +14 -0
- package/dist/DocsContent.svelte.d.ts.map +1 -0
- package/dist/DocsFooter.svelte +64 -0
- package/dist/DocsFooter.svelte.d.ts +15 -0
- package/dist/DocsFooter.svelte.d.ts.map +1 -0
- package/dist/DocsLink.svelte +41 -0
- package/dist/DocsLink.svelte.d.ts +12 -0
- package/dist/DocsLink.svelte.d.ts.map +1 -0
- package/dist/DocsList.svelte +44 -0
- package/dist/DocsList.svelte.d.ts +11 -0
- package/dist/DocsList.svelte.d.ts.map +1 -0
- package/dist/DocsMenu.svelte +55 -0
- package/dist/DocsMenu.svelte.d.ts +11 -0
- package/dist/DocsMenu.svelte.d.ts.map +1 -0
- package/dist/DocsMenuHeader.svelte +15 -0
- package/dist/DocsMenuHeader.svelte.d.ts +9 -0
- package/dist/DocsMenuHeader.svelte.d.ts.map +1 -0
- package/dist/DocsModulesList.svelte +32 -0
- package/dist/DocsModulesList.svelte.d.ts +7 -0
- package/dist/DocsModulesList.svelte.d.ts.map +1 -0
- package/dist/DocsPageLinks.svelte +61 -0
- package/dist/DocsPageLinks.svelte.d.ts +8 -0
- package/dist/DocsPageLinks.svelte.d.ts.map +1 -0
- package/dist/DocsPrimaryNav.svelte +93 -0
- package/dist/DocsPrimaryNav.svelte.d.ts +11 -0
- package/dist/DocsPrimaryNav.svelte.d.ts.map +1 -0
- package/dist/DocsSearch.svelte +48 -0
- package/dist/DocsSearch.svelte.d.ts +11 -0
- package/dist/DocsSearch.svelte.d.ts.map +1 -0
- package/dist/DocsSecondaryNav.svelte +63 -0
- package/dist/DocsSecondaryNav.svelte.d.ts +9 -0
- package/dist/DocsSecondaryNav.svelte.d.ts.map +1 -0
- package/dist/DocsTertiaryNav.svelte +118 -0
- package/dist/DocsTertiaryNav.svelte.d.ts +10 -0
- package/dist/DocsTertiaryNav.svelte.d.ts.map +1 -0
- package/dist/EcosystemLinks.svelte +53 -0
- package/dist/EcosystemLinks.svelte.d.ts +7 -0
- package/dist/EcosystemLinks.svelte.d.ts.map +1 -0
- package/dist/EcosystemLinksPanel.svelte +22 -0
- package/dist/EcosystemLinksPanel.svelte.d.ts +8 -0
- package/dist/EcosystemLinksPanel.svelte.d.ts.map +1 -0
- package/dist/GithubLink.svelte +75 -0
- package/dist/GithubLink.svelte.d.ts +14 -0
- package/dist/GithubLink.svelte.d.ts.map +1 -0
- package/dist/Glyph.svelte +28 -0
- package/dist/Glyph.svelte.d.ts +9 -0
- package/dist/Glyph.svelte.d.ts.map +1 -0
- package/dist/Hashlink.svelte +41 -0
- package/dist/Hashlink.svelte.d.ts +8 -0
- package/dist/Hashlink.svelte.d.ts.map +1 -0
- package/dist/HiddenPersonalLinks.svelte +6 -0
- package/dist/HiddenPersonalLinks.svelte.d.ts +27 -0
- package/dist/HiddenPersonalLinks.svelte.d.ts.map +1 -0
- package/dist/HueInput.svelte +127 -0
- package/dist/HueInput.svelte.d.ts +11 -0
- package/dist/HueInput.svelte.d.ts.map +1 -0
- package/dist/ImgOrSvg.svelte +58 -0
- package/dist/ImgOrSvg.svelte.d.ts +25 -0
- package/dist/ImgOrSvg.svelte.d.ts.map +1 -0
- package/dist/LibraryDetail.svelte +297 -0
- package/dist/LibraryDetail.svelte.d.ts +15 -0
- package/dist/LibraryDetail.svelte.d.ts.map +1 -0
- package/dist/LibrarySummary.svelte +151 -0
- package/dist/LibrarySummary.svelte.d.ts +16 -0
- package/dist/LibrarySummary.svelte.d.ts.map +1 -0
- package/dist/MdnLink.svelte +40 -0
- package/dist/MdnLink.svelte.d.ts +8 -0
- package/dist/MdnLink.svelte.d.ts.map +1 -0
- package/dist/Mdz.svelte +30 -0
- package/dist/Mdz.svelte.d.ts +10 -0
- package/dist/Mdz.svelte.d.ts.map +1 -0
- package/dist/MdzNodeView.svelte +93 -0
- package/dist/MdzNodeView.svelte.d.ts +9 -0
- package/dist/MdzNodeView.svelte.d.ts.map +1 -0
- package/dist/ModuleLink.svelte +48 -0
- package/dist/ModuleLink.svelte.d.ts +8 -0
- package/dist/ModuleLink.svelte.d.ts.map +1 -0
- package/dist/PasteFromClipboard.svelte +35 -0
- package/dist/PasteFromClipboard.svelte.d.ts +9 -0
- package/dist/PasteFromClipboard.svelte.d.ts.map +1 -0
- package/dist/PendingAnimation.svelte +62 -0
- package/dist/PendingAnimation.svelte.d.ts +13 -0
- package/dist/PendingAnimation.svelte.d.ts.map +1 -0
- package/dist/PendingButton.svelte +75 -0
- package/dist/PendingButton.svelte.d.ts +17 -0
- package/dist/PendingButton.svelte.d.ts.map +1 -0
- package/dist/ProjectLinks.svelte +54 -0
- package/dist/ProjectLinks.svelte.d.ts +19 -0
- package/dist/ProjectLinks.svelte.d.ts.map +1 -0
- package/dist/Redirect.svelte +44 -0
- package/dist/Redirect.svelte.d.ts +23 -0
- package/dist/Redirect.svelte.d.ts.map +1 -0
- package/dist/Spiders.svelte +57 -0
- package/dist/Spiders.svelte.d.ts +9 -0
- package/dist/Spiders.svelte.d.ts.map +1 -0
- package/dist/Svg.svelte +99 -0
- package/dist/Svg.svelte.d.ts +54 -0
- package/dist/Svg.svelte.d.ts.map +1 -0
- package/dist/Teleport.svelte +48 -0
- package/dist/Teleport.svelte.d.ts +15 -0
- package/dist/Teleport.svelte.d.ts.map +1 -0
- package/dist/ThemeInput.svelte +75 -0
- package/dist/ThemeInput.svelte.d.ts +15 -0
- package/dist/ThemeInput.svelte.d.ts.map +1 -0
- package/dist/Themed.svelte +101 -0
- package/dist/Themed.svelte.d.ts +24 -0
- package/dist/Themed.svelte.d.ts.map +1 -0
- package/dist/TomeContent.svelte +67 -0
- package/dist/TomeContent.svelte.d.ts +12 -0
- package/dist/TomeContent.svelte.d.ts.map +1 -0
- package/dist/TomeHeader.svelte +56 -0
- package/dist/TomeHeader.svelte.d.ts +4 -0
- package/dist/TomeHeader.svelte.d.ts.map +1 -0
- package/dist/TomeLink.svelte +29 -0
- package/dist/TomeLink.svelte.d.ts +10 -0
- package/dist/TomeLink.svelte.d.ts.map +1 -0
- package/dist/TomeSection.svelte +65 -0
- package/dist/TomeSection.svelte.d.ts +24 -0
- package/dist/TomeSection.svelte.d.ts.map +1 -0
- package/dist/TomeSectionHeader.svelte +90 -0
- package/dist/TomeSectionHeader.svelte.d.ts +13 -0
- package/dist/TomeSectionHeader.svelte.d.ts.map +1 -0
- package/dist/TypeLink.svelte +19 -0
- package/dist/TypeLink.svelte.d.ts +7 -0
- package/dist/TypeLink.svelte.d.ts.map +1 -0
- package/dist/alert.d.ts +7 -0
- package/dist/alert.d.ts.map +1 -0
- package/dist/alert.js +6 -0
- package/dist/api_search.svelte.d.ts +16 -0
- package/dist/api_search.svelte.d.ts.map +1 -0
- package/dist/api_search.svelte.js +61 -0
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +3 -0
- package/dist/context_helpers.d.ts +17 -0
- package/dist/context_helpers.d.ts.map +1 -0
- package/dist/context_helpers.js +19 -0
- package/dist/contextmenu_helpers.d.ts +16 -0
- package/dist/contextmenu_helpers.d.ts.map +1 -0
- package/dist/contextmenu_helpers.js +39 -0
- package/dist/contextmenu_state.svelte.d.ts +152 -0
- package/dist/contextmenu_state.svelte.d.ts.map +1 -0
- package/dist/contextmenu_state.svelte.js +424 -0
- package/dist/csp.d.ts +160 -0
- package/dist/csp.d.ts.map +1 -0
- package/dist/csp.js +354 -0
- package/dist/csp_of_ryanatkn.d.ts +6 -0
- package/dist/csp_of_ryanatkn.d.ts.map +1 -0
- package/dist/csp_of_ryanatkn.js +14 -0
- package/dist/declaration.svelte.d.ts +84 -0
- package/dist/declaration.svelte.d.ts.map +1 -0
- package/dist/declaration.svelte.js +66 -0
- package/dist/declaration_contextmenu.d.ts +4 -0
- package/dist/declaration_contextmenu.d.ts.map +1 -0
- package/dist/declaration_contextmenu.js +14 -0
- package/dist/dialog.d.ts +24 -0
- package/dist/dialog.d.ts.map +1 -0
- package/dist/dialog.js +12 -0
- package/dist/dimensions.svelte.d.ts +5 -0
- package/dist/dimensions.svelte.d.ts.map +1 -0
- package/dist/dimensions.svelte.js +4 -0
- package/dist/docs_helpers.svelte.d.ts +48 -0
- package/dist/docs_helpers.svelte.d.ts.map +1 -0
- package/dist/docs_helpers.svelte.js +99 -0
- package/dist/helpers.d.ts +2 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +16 -0
- package/dist/intersect.svelte.d.ts +47 -0
- package/dist/intersect.svelte.d.ts.map +1 -0
- package/dist/intersect.svelte.js +92 -0
- package/dist/library.svelte.d.ts +197 -0
- package/dist/library.svelte.d.ts.map +1 -0
- package/dist/library.svelte.js +130 -0
- package/dist/library_gen.d.ts +34 -0
- package/dist/library_gen.d.ts.map +1 -0
- package/dist/library_gen.js +123 -0
- package/dist/library_gen_helpers.d.ts +85 -0
- package/dist/library_gen_helpers.d.ts.map +1 -0
- package/dist/library_gen_helpers.js +188 -0
- package/dist/library_helpers.d.ts +54 -0
- package/dist/library_helpers.d.ts.map +1 -0
- package/dist/library_helpers.js +102 -0
- package/dist/logos.d.ts +134 -0
- package/dist/logos.d.ts.map +1 -0
- package/dist/logos.js +281 -0
- package/dist/mdz.d.ts +106 -0
- package/dist/mdz.d.ts.map +1 -0
- package/dist/mdz.js +1481 -0
- package/dist/mdz_components.d.ts +37 -0
- package/dist/mdz_components.d.ts.map +1 -0
- package/dist/mdz_components.js +12 -0
- package/dist/module.svelte.d.ts +47 -0
- package/dist/module.svelte.d.ts.map +1 -0
- package/dist/module.svelte.js +56 -0
- package/dist/module_contextmenu.d.ts +4 -0
- package/dist/module_contextmenu.d.ts.map +1 -0
- package/dist/module_contextmenu.js +14 -0
- package/dist/module_helpers.d.ts +69 -0
- package/dist/module_helpers.d.ts.map +1 -0
- package/dist/module_helpers.js +87 -0
- package/dist/rune_helpers.svelte.d.ts +6 -0
- package/dist/rune_helpers.svelte.d.ts.map +1 -0
- package/dist/rune_helpers.svelte.js +10 -0
- package/dist/storage.d.ts +13 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +43 -0
- package/dist/svelte_helpers.d.ts +37 -0
- package/dist/svelte_helpers.d.ts.map +1 -0
- package/dist/svelte_helpers.js +245 -0
- package/dist/themer.svelte.d.ts +24 -0
- package/dist/themer.svelte.d.ts.map +1 -0
- package/dist/themer.svelte.js +43 -0
- package/dist/tome.d.ts +80 -0
- package/dist/tome.d.ts.map +1 -0
- package/dist/tome.js +27 -0
- package/dist/ts_helpers.d.ts +110 -0
- package/dist/ts_helpers.d.ts.map +1 -0
- package/dist/ts_helpers.js +533 -0
- package/dist/tsdoc_helpers.d.ts +98 -0
- package/dist/tsdoc_helpers.d.ts.map +1 -0
- package/dist/tsdoc_helpers.js +221 -0
- package/package.json +128 -0
- package/src/lib/alert.ts +14 -0
- package/src/lib/api_search.svelte.ts +85 -0
- package/src/lib/constants.ts +3 -0
- package/src/lib/context_helpers.ts +47 -0
- package/src/lib/contextmenu_helpers.ts +63 -0
- package/src/lib/contextmenu_state.svelte.ts +515 -0
- package/src/lib/csp.ts +576 -0
- package/src/lib/csp_of_ryanatkn.ts +16 -0
- package/src/lib/declaration.svelte.ts +102 -0
- package/src/lib/declaration_contextmenu.ts +22 -0
- package/src/lib/dialog.ts +35 -0
- package/src/lib/dimensions.svelte.ts +4 -0
- package/src/lib/docs_helpers.svelte.ts +149 -0
- package/src/lib/helpers.ts +10 -0
- package/src/lib/intersect.svelte.ts +152 -0
- package/src/lib/library.svelte.ts +162 -0
- package/src/lib/library_gen.ts +160 -0
- package/src/lib/library_gen_helpers.ts +262 -0
- package/src/lib/library_helpers.ts +123 -0
- package/src/lib/logos.ts +302 -0
- package/src/lib/mdz.ts +1819 -0
- package/src/lib/mdz_components.ts +34 -0
- package/src/lib/module.svelte.ts +78 -0
- package/src/lib/module_contextmenu.ts +20 -0
- package/src/lib/module_helpers.ts +113 -0
- package/src/lib/rune_helpers.svelte.ts +10 -0
- package/src/lib/storage.ts +48 -0
- package/src/lib/svelte_helpers.ts +303 -0
- package/src/lib/themer.svelte.ts +68 -0
- package/src/lib/tome.ts +38 -0
- package/src/lib/ts_helpers.ts +662 -0
- package/src/lib/tsdoc_helpers.ts +259 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type {Snippet} from 'svelte';
|
|
3
|
+
import type {SvelteHTMLElements} from 'svelte/elements';
|
|
4
|
+
import {slide} from 'svelte/transition';
|
|
5
|
+
|
|
6
|
+
// TODO it may be possible to cleanly add the transition with eager rendering by intercepting the open user action
|
|
7
|
+
// in this case, lazy rendering is probably the better default to retain `ctrl+f` functionality
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Like `details` but renders children lazily by default.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
let {
|
|
14
|
+
open = $bindable(),
|
|
15
|
+
eager,
|
|
16
|
+
summary_attrs,
|
|
17
|
+
summary,
|
|
18
|
+
children,
|
|
19
|
+
...rest
|
|
20
|
+
}: SvelteHTMLElements['details'] & {
|
|
21
|
+
open?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Children are lazily rendered by default,
|
|
24
|
+
* enabling transitions and improving performance, sometimes significantly.
|
|
25
|
+
* Pass `true` to render children eagerly to gain
|
|
26
|
+
* `ctrl+f` functionality while trading away the benefits.
|
|
27
|
+
* Consider a `<details>` element instead of making this component eager.
|
|
28
|
+
*/
|
|
29
|
+
eager?: boolean;
|
|
30
|
+
summary: string | Snippet;
|
|
31
|
+
summary_attrs?: SvelteHTMLElements['summary'];
|
|
32
|
+
children: Snippet;
|
|
33
|
+
} = $props();
|
|
34
|
+
|
|
35
|
+
// TODO why doesn't the slide out work?
|
|
36
|
+
</script>
|
|
37
|
+
|
|
38
|
+
<details {...rest} bind:open>
|
|
39
|
+
<summary {...summary_attrs}>
|
|
40
|
+
{#if typeof summary === 'string'}
|
|
41
|
+
{summary}
|
|
42
|
+
{:else}
|
|
43
|
+
{@render summary()}
|
|
44
|
+
{/if}
|
|
45
|
+
</summary>
|
|
46
|
+
{#if eager}
|
|
47
|
+
{@render children()}
|
|
48
|
+
{:else if open}
|
|
49
|
+
<div transition:slide>{@render children()}</div>
|
|
50
|
+
{/if}
|
|
51
|
+
</details>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { SvelteHTMLElements } from 'svelte/elements';
|
|
3
|
+
type $$ComponentProps = SvelteHTMLElements['details'] & {
|
|
4
|
+
open?: boolean;
|
|
5
|
+
/**
|
|
6
|
+
* Children are lazily rendered by default,
|
|
7
|
+
* enabling transitions and improving performance, sometimes significantly.
|
|
8
|
+
* Pass `true` to render children eagerly to gain
|
|
9
|
+
* `ctrl+f` functionality while trading away the benefits.
|
|
10
|
+
* Consider a `<details>` element instead of making this component eager.
|
|
11
|
+
*/
|
|
12
|
+
eager?: boolean;
|
|
13
|
+
summary: string | Snippet;
|
|
14
|
+
summary_attrs?: SvelteHTMLElements['summary'];
|
|
15
|
+
children: Snippet;
|
|
16
|
+
};
|
|
17
|
+
declare const Details: import("svelte").Component<$$ComponentProps, {}, "open">;
|
|
18
|
+
type Details = ReturnType<typeof Details>;
|
|
19
|
+
export default Details;
|
|
20
|
+
//# sourceMappingURL=Details.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Details.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/Details.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,QAAQ,CAAC;AACpC,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,iBAAiB,CAAC;AAGvD,KAAK,gBAAgB,GAAI,kBAAkB,CAAC,SAAS,CAAC,GAAG;IACxD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC9C,QAAQ,EAAE,OAAO,CAAC;CAClB,CAAC;AA0CH,QAAA,MAAM,OAAO,0DAAwC,CAAC;AACtD,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAC1C,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type {Snippet} from 'svelte';
|
|
3
|
+
import {is_editable, swallow} from '@fuzdev/fuz_util/dom.js';
|
|
4
|
+
import {wait} from '@fuzdev/fuz_util/async.js';
|
|
5
|
+
|
|
6
|
+
import Teleport from './Teleport.svelte';
|
|
7
|
+
import type {DialogLayout} from './dialog.js';
|
|
8
|
+
|
|
9
|
+
// TODO use `<dialog>` here instead of `Teleport`
|
|
10
|
+
// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog
|
|
11
|
+
|
|
12
|
+
/*
|
|
13
|
+
|
|
14
|
+
This component is a singleton that mounts to a #dialog container element added to the body,
|
|
15
|
+
using a `Teleport` component to avoid ancestor-caused style issues like overflow and z-index.
|
|
16
|
+
It adds `.dialog` to the body when mounted to fix scrolling behavior,
|
|
17
|
+
and adds padding to the body to adjust for any scrollbars.
|
|
18
|
+
It uses a CSS custom property for this to avoid the high complexity of trying to
|
|
19
|
+
correctly revert any preexisting values for overflow and padding on the body.
|
|
20
|
+
We don't want to add restrictions to what users can do to the body on their own!
|
|
21
|
+
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
const {
|
|
25
|
+
container,
|
|
26
|
+
layout = 'centered',
|
|
27
|
+
index = 0,
|
|
28
|
+
active = true,
|
|
29
|
+
content_selector = '.pane',
|
|
30
|
+
onclose,
|
|
31
|
+
children,
|
|
32
|
+
}: {
|
|
33
|
+
// TODO maybe change this API away from an element to a selector? or remove the API completely?
|
|
34
|
+
container?: HTMLElement;
|
|
35
|
+
/**
|
|
36
|
+
* @default 'centered'
|
|
37
|
+
*/
|
|
38
|
+
layout?: DialogLayout;
|
|
39
|
+
/**
|
|
40
|
+
* index 0 is under 1 is under 2 etc -- the topmost dialog is the last in the array
|
|
41
|
+
* @default 0
|
|
42
|
+
*/
|
|
43
|
+
index?: number;
|
|
44
|
+
/**
|
|
45
|
+
* @default true
|
|
46
|
+
*/
|
|
47
|
+
active?: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* If provided, prevents clicks that would close the dialog
|
|
50
|
+
* from bubbling past any elements matching this selector.
|
|
51
|
+
* @default '.pane'
|
|
52
|
+
*/
|
|
53
|
+
content_selector?: string | null;
|
|
54
|
+
onclose?: () => void;
|
|
55
|
+
children: Snippet<[close: (e?: Event) => void]>;
|
|
56
|
+
} = $props();
|
|
57
|
+
|
|
58
|
+
const ROOT_SELECTOR = 'body'; // TODO make configurable
|
|
59
|
+
const CONTAINER_ID = 'fuz_dialog';
|
|
60
|
+
|
|
61
|
+
let container_el: HTMLElement | undefined = $state();
|
|
62
|
+
$effect(() => {
|
|
63
|
+
update_container_el(container);
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
const update_container_el = (container: HTMLElement | undefined): void => {
|
|
67
|
+
if (container) {
|
|
68
|
+
container_el = container;
|
|
69
|
+
} else {
|
|
70
|
+
const found = document.getElementById(CONTAINER_ID);
|
|
71
|
+
if (found) {
|
|
72
|
+
container_el = found;
|
|
73
|
+
} else {
|
|
74
|
+
const root_el = document.querySelector(ROOT_SELECTOR);
|
|
75
|
+
if (!root_el) {
|
|
76
|
+
throw Error(`Cannot find dialog root element with selector '${ROOT_SELECTOR}'`);
|
|
77
|
+
}
|
|
78
|
+
container_el = document.createElement('div');
|
|
79
|
+
container_el.id = CONTAINER_ID;
|
|
80
|
+
container_el.style.display = 'contents';
|
|
81
|
+
root_el.appendChild(container_el);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
let dialog_el: HTMLElement | undefined = $state();
|
|
87
|
+
let content_el: HTMLElement | undefined = $state();
|
|
88
|
+
|
|
89
|
+
const close = (e?: Event) => {
|
|
90
|
+
if (e) swallow(e);
|
|
91
|
+
onclose?.();
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
// TODO hook into a ui input system
|
|
95
|
+
const on_window_keydown = (e: KeyboardEvent) => {
|
|
96
|
+
if (e.key === 'Escape' && !is_editable(e.target)) {
|
|
97
|
+
// apply hotkey only for the top-most dialog
|
|
98
|
+
const parent_el = dialog_el?.parentElement;
|
|
99
|
+
const parents = parent_el?.parentElement?.children;
|
|
100
|
+
const index = Array.prototype.indexOf.call(parents, parent_el);
|
|
101
|
+
if (!parents || index === parents.length - 1 || index === -1) {
|
|
102
|
+
close(e);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
// The dialog isn't "ready" until the teleport moves it.
|
|
108
|
+
// Rendering the the dialog's children only once it's ready fixes things like `autofocus`.
|
|
109
|
+
let ready = $state(false);
|
|
110
|
+
</script>
|
|
111
|
+
|
|
112
|
+
<svelte:window onkeydown={active ? on_window_keydown : undefined} />
|
|
113
|
+
|
|
114
|
+
<!--
|
|
115
|
+
The `tabindex` and `el.focus()` fix scrolling with the keyboard,
|
|
116
|
+
needed because SvelteKit puts `tabindex` on the body,
|
|
117
|
+
but there's more that needs to be done for accessibility, like focus capture.
|
|
118
|
+
For more see: https://www.w3.org/TR/wai-aria-practices-1.1/#dialog_modal
|
|
119
|
+
and https://developer.mozilla.org/en-US/docs/Web/Accessibility/Keyboard-navigable_JavaScript_widgets
|
|
120
|
+
-->
|
|
121
|
+
<Teleport
|
|
122
|
+
to={container_el}
|
|
123
|
+
onmove={async () => {
|
|
124
|
+
await wait(); // TODO this is a hack to get animations working, `Teleport` now mounts synchronously?!
|
|
125
|
+
ready = true;
|
|
126
|
+
dialog_el?.focus(); // TODO make this more declarative? probably want to focus only after moving though, not on mount, which makes an action trickier
|
|
127
|
+
}}
|
|
128
|
+
>
|
|
129
|
+
<div
|
|
130
|
+
class="dialog"
|
|
131
|
+
class:ready
|
|
132
|
+
class:layout_page={layout === 'page'}
|
|
133
|
+
role="dialog"
|
|
134
|
+
aria-modal="true"
|
|
135
|
+
bind:this={dialog_el}
|
|
136
|
+
tabindex="-1"
|
|
137
|
+
style:z-index={100 + index}
|
|
138
|
+
>
|
|
139
|
+
<div class="dialog_layout">
|
|
140
|
+
<div
|
|
141
|
+
class="dialog_wrapper"
|
|
142
|
+
role="none"
|
|
143
|
+
onmousedown={(e) => {
|
|
144
|
+
// Close if clicking outside `content_el` but inside the wrapper
|
|
145
|
+
const target = e.target as Element;
|
|
146
|
+
if (
|
|
147
|
+
content_el &&
|
|
148
|
+
(content_el === target ||
|
|
149
|
+
!content_el.contains(target) ||
|
|
150
|
+
(content_selector && !target.closest(content_selector)))
|
|
151
|
+
) {
|
|
152
|
+
close(e);
|
|
153
|
+
}
|
|
154
|
+
}}
|
|
155
|
+
>
|
|
156
|
+
<div class="dialog_bg" aria-hidden="true"></div>
|
|
157
|
+
<div class="dialog_content" bind:this={content_el}>
|
|
158
|
+
<!-- mount the content only after teleporting to avoid issues -->
|
|
159
|
+
{#if ready}{@render children(close)}{/if}
|
|
160
|
+
</div>
|
|
161
|
+
</div>
|
|
162
|
+
</div>
|
|
163
|
+
</div>
|
|
164
|
+
</Teleport>
|
|
165
|
+
|
|
166
|
+
<style>
|
|
167
|
+
.dialog {
|
|
168
|
+
--pane_shadow: var(--shadow_bottom_xl)
|
|
169
|
+
color-mix(in hsl, var(--shadow_color) var(--shadow_alpha_5), transparent);
|
|
170
|
+
position: fixed;
|
|
171
|
+
inset: 0;
|
|
172
|
+
overflow: auto;
|
|
173
|
+
/* this simplifies the code a lot but doesn't prevent scrolling
|
|
174
|
+
the underlying content when the dialog doesn't overflow, even when `overflow: scroll`
|
|
175
|
+
TODO check if this behaves as desired after switching to use the `dialog` element */
|
|
176
|
+
overscroll-behavior: contain;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
.dialog_wrapper {
|
|
180
|
+
position: relative; /* for the bg */
|
|
181
|
+
min-height: 100%;
|
|
182
|
+
display: flex;
|
|
183
|
+
align-items: center;
|
|
184
|
+
justify-content: center;
|
|
185
|
+
}
|
|
186
|
+
.layout_page .dialog_wrapper {
|
|
187
|
+
align-items: start;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.dialog_bg {
|
|
191
|
+
position: absolute;
|
|
192
|
+
inset: 0;
|
|
193
|
+
z-index: 0;
|
|
194
|
+
opacity: 0;
|
|
195
|
+
transition: opacity var(--duration_3) ease;
|
|
196
|
+
background-color: var(--dialog_bg, var(--darken_6));
|
|
197
|
+
}
|
|
198
|
+
.ready .dialog_bg {
|
|
199
|
+
opacity: 1;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.dialog_layout {
|
|
203
|
+
height: 100%;
|
|
204
|
+
/* makes the content overflow downwards instead of upwards+downwards because it's centered */
|
|
205
|
+
max-height: 100%;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
.dialog_content {
|
|
209
|
+
width: 100%;
|
|
210
|
+
transform: scale(0.99);
|
|
211
|
+
transition: transform var(--duration_1) ease;
|
|
212
|
+
padding: 40px;
|
|
213
|
+
}
|
|
214
|
+
.ready .dialog_content {
|
|
215
|
+
transform: scale(1);
|
|
216
|
+
}
|
|
217
|
+
</style>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { DialogLayout } from './dialog.js';
|
|
3
|
+
type $$ComponentProps = {
|
|
4
|
+
container?: HTMLElement;
|
|
5
|
+
/**
|
|
6
|
+
* @default 'centered'
|
|
7
|
+
*/
|
|
8
|
+
layout?: DialogLayout;
|
|
9
|
+
/**
|
|
10
|
+
* index 0 is under 1 is under 2 etc -- the topmost dialog is the last in the array
|
|
11
|
+
* @default 0
|
|
12
|
+
*/
|
|
13
|
+
index?: number;
|
|
14
|
+
/**
|
|
15
|
+
* @default true
|
|
16
|
+
*/
|
|
17
|
+
active?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* If provided, prevents clicks that would close the dialog
|
|
20
|
+
* from bubbling past any elements matching this selector.
|
|
21
|
+
* @default '.pane'
|
|
22
|
+
*/
|
|
23
|
+
content_selector?: string | null;
|
|
24
|
+
onclose?: () => void;
|
|
25
|
+
children: Snippet<[close: (e?: Event) => void]>;
|
|
26
|
+
};
|
|
27
|
+
declare const Dialog: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
28
|
+
type Dialog = ReturnType<typeof Dialog>;
|
|
29
|
+
export default Dialog;
|
|
30
|
+
//# sourceMappingURL=Dialog.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dialog.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/Dialog.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,QAAQ,CAAC;AAKpC,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAE7C,KAAK,gBAAgB,GAAI;IAExB,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC;CAChD,CAAC;AA4HH,QAAA,MAAM,MAAM,sDAAwC,CAAC;AACrD,KAAK,MAAM,GAAG,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC;AACxC,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type {Snippet} from 'svelte';
|
|
3
|
+
|
|
4
|
+
import type {DialogParams} from './dialog.js';
|
|
5
|
+
import Dialog from './Dialog.svelte';
|
|
6
|
+
|
|
7
|
+
// TODO this is experimental
|
|
8
|
+
|
|
9
|
+
const {
|
|
10
|
+
dialogs,
|
|
11
|
+
onclose,
|
|
12
|
+
children,
|
|
13
|
+
}: {
|
|
14
|
+
dialogs: Array<DialogParams>;
|
|
15
|
+
onclose?: () => void;
|
|
16
|
+
children?: Snippet<[dialog: DialogParams]>;
|
|
17
|
+
} = $props();
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
{#each dialogs as dialog, index (dialog)}<Dialog
|
|
21
|
+
{onclose}
|
|
22
|
+
{...dialog.dialog_props}
|
|
23
|
+
{index}
|
|
24
|
+
active={index === dialogs.length - 1}
|
|
25
|
+
>{#if children}{@render children(dialog)}{:else}<dialog.Component
|
|
26
|
+
{...dialog.props}
|
|
27
|
+
/>{/if}</Dialog
|
|
28
|
+
>{/each}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { DialogParams } from './dialog.js';
|
|
3
|
+
type $$ComponentProps = {
|
|
4
|
+
dialogs: Array<DialogParams>;
|
|
5
|
+
onclose?: () => void;
|
|
6
|
+
children?: Snippet<[dialog: DialogParams]>;
|
|
7
|
+
};
|
|
8
|
+
declare const Dialogs: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
9
|
+
type Dialogs = ReturnType<typeof Dialogs>;
|
|
10
|
+
export default Dialogs;
|
|
11
|
+
//# sourceMappingURL=Dialogs.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dialogs.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/Dialogs.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,QAAQ,CAAC;AAEpC,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAG7C,KAAK,gBAAgB,GAAI;IACxB,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;CAC3C,CAAC;AAoBH,QAAA,MAAM,OAAO,sDAAwC,CAAC;AACtD,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAC1C,eAAe,OAAO,CAAC"}
|
package/dist/Docs.svelte
ADDED
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type {Snippet} from 'svelte';
|
|
3
|
+
import {onNavigate} from '$app/navigation';
|
|
4
|
+
import {innerWidth} from 'svelte/reactivity/window';
|
|
5
|
+
import {page} from '$app/state';
|
|
6
|
+
|
|
7
|
+
import type {Library} from './library.svelte.js';
|
|
8
|
+
import Breadcrumb from './Breadcrumb.svelte';
|
|
9
|
+
import {Tome, tomes_context} from './tome.js';
|
|
10
|
+
import DocsPrimaryNav from './DocsPrimaryNav.svelte';
|
|
11
|
+
import DocsSecondaryNav from './DocsSecondaryNav.svelte';
|
|
12
|
+
import DocsTertiaryNav from './DocsTertiaryNav.svelte';
|
|
13
|
+
import Dialog from './Dialog.svelte';
|
|
14
|
+
import DocsFooter from './DocsFooter.svelte';
|
|
15
|
+
import {DocsLinks, docs_links_context} from './docs_helpers.svelte.js';
|
|
16
|
+
|
|
17
|
+
const {
|
|
18
|
+
tomes,
|
|
19
|
+
library,
|
|
20
|
+
breadcrumb_children,
|
|
21
|
+
children,
|
|
22
|
+
}: {
|
|
23
|
+
tomes: Array<Tome>;
|
|
24
|
+
library: Library;
|
|
25
|
+
breadcrumb_children?: Snippet<[is_primary_nav: boolean]>;
|
|
26
|
+
children: Snippet;
|
|
27
|
+
} = $props();
|
|
28
|
+
|
|
29
|
+
// TODO this API is messy, inconsistent usage of props/context
|
|
30
|
+
const tomes_by_name = new Map(tomes.map((t) => [t.name, t]));
|
|
31
|
+
tomes_context.set(tomes_by_name);
|
|
32
|
+
|
|
33
|
+
// TODO @many dialog navs - this is messy to satisfy SSR with the current design that puts the secondary nav in a dialog
|
|
34
|
+
const TERTIARY_NAV_BREAKPOINT = 1000;
|
|
35
|
+
const SECONDARY_NAV_BREAKPOINT = 800;
|
|
36
|
+
|
|
37
|
+
const docs_menu_width = '180px';
|
|
38
|
+
|
|
39
|
+
let show_secondary_nav_dialog = $state(false);
|
|
40
|
+
const toggle_secondary_nav_dialog = (show?: boolean): void => {
|
|
41
|
+
show_secondary_nav_dialog = show ?? !show_secondary_nav_dialog;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
docs_links_context.set(new DocsLinks());
|
|
45
|
+
|
|
46
|
+
onNavigate(() => {
|
|
47
|
+
show_secondary_nav_dialog = false;
|
|
48
|
+
});
|
|
49
|
+
</script>
|
|
50
|
+
|
|
51
|
+
<svelte:window onhashchange={() => (show_secondary_nav_dialog = false)} />
|
|
52
|
+
|
|
53
|
+
<div class="docs" style:--docs_menu_width={docs_menu_width}>
|
|
54
|
+
<DocsPrimaryNav {library} {breadcrumb_children}>
|
|
55
|
+
<div class="nav_dialog_toggle">
|
|
56
|
+
<button class="plain" type="button" onclick={() => toggle_secondary_nav_dialog()}>menu</button
|
|
57
|
+
>
|
|
58
|
+
</div>
|
|
59
|
+
</DocsPrimaryNav>
|
|
60
|
+
<!-- TODO @many dialog navs -->
|
|
61
|
+
{#if !innerWidth.current || innerWidth.current > SECONDARY_NAV_BREAKPOINT}
|
|
62
|
+
<div class="secondary_nav_wrapper">
|
|
63
|
+
<DocsSecondaryNav {tomes} />
|
|
64
|
+
</div>
|
|
65
|
+
{/if}
|
|
66
|
+
<main>
|
|
67
|
+
{#key page.url.pathname}
|
|
68
|
+
{@render children()}
|
|
69
|
+
{/key}
|
|
70
|
+
<!-- TODO @many dialog navs -->
|
|
71
|
+
{#if !innerWidth.current || innerWidth.current > TERTIARY_NAV_BREAKPOINT}
|
|
72
|
+
<DocsTertiaryNav {tomes} {tomes_by_name} />
|
|
73
|
+
{/if}
|
|
74
|
+
<section class="box">
|
|
75
|
+
<DocsFooter {library}>
|
|
76
|
+
<div class="mb_xl5">
|
|
77
|
+
<Breadcrumb>
|
|
78
|
+
{#if breadcrumb_children}
|
|
79
|
+
{@render breadcrumb_children(false)}
|
|
80
|
+
{:else}
|
|
81
|
+
{library.package_json.glyph ?? '🏠'}
|
|
82
|
+
{/if}
|
|
83
|
+
</Breadcrumb>
|
|
84
|
+
</div>
|
|
85
|
+
</DocsFooter>
|
|
86
|
+
</section>
|
|
87
|
+
</main>
|
|
88
|
+
</div>
|
|
89
|
+
<!-- TODO @many dialog navs - instead of a dialog, probably use a popover (new component) -->
|
|
90
|
+
<!-- TODO this is messy rendering `DocsSecondaryNav` twice to handle responsive states with SSR correctly -->
|
|
91
|
+
{#if show_secondary_nav_dialog && innerWidth.current && innerWidth.current <= TERTIARY_NAV_BREAKPOINT}
|
|
92
|
+
<Dialog onclose={() => (show_secondary_nav_dialog = false)}>
|
|
93
|
+
<div class="pane" style:--docs_menu_width={docs_menu_width}>
|
|
94
|
+
<div class="p_xl pb_0">
|
|
95
|
+
<Breadcrumb>
|
|
96
|
+
{#if breadcrumb_children}
|
|
97
|
+
{@render breadcrumb_children(false)}
|
|
98
|
+
{:else}
|
|
99
|
+
{library.package_json.glyph ?? '🏠'}
|
|
100
|
+
{/if}
|
|
101
|
+
</Breadcrumb>
|
|
102
|
+
</div>
|
|
103
|
+
<div class="px_lg pb_xl">
|
|
104
|
+
<DocsSecondaryNav {tomes} sidebar={false} />
|
|
105
|
+
<DocsTertiaryNav {tomes} {tomes_by_name} sidebar={false} />
|
|
106
|
+
</div>
|
|
107
|
+
</div>
|
|
108
|
+
</Dialog>
|
|
109
|
+
{/if}
|
|
110
|
+
|
|
111
|
+
<style>
|
|
112
|
+
.docs {
|
|
113
|
+
--docs_primary_nav_height: 60px;
|
|
114
|
+
--docs_secondary_nav_padding: var(--space_md); /* also used by the tertiary nav */
|
|
115
|
+
--docs_content_padding: var(--space_xl5);
|
|
116
|
+
--docs_content_max_width: calc(var(--distance_md) + var(--docs_content_padding) * 2);
|
|
117
|
+
/* TODO this is broken for scrollbars, so we add `+ 10px` as a messy safeguard (there may be `+ 1px` needed for scaling issues too) */
|
|
118
|
+
--docs_sidebar_width: max(
|
|
119
|
+
calc(var(--docs_menu_width) + 10px + var(--docs_secondary_nav_padding) * 2),
|
|
120
|
+
calc((100% - var(--docs_content_max_width)) / 2)
|
|
121
|
+
);
|
|
122
|
+
display: contents;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
main {
|
|
126
|
+
position: relative;
|
|
127
|
+
min-height: calc(100vh - var(--docs_primary_nav_height));
|
|
128
|
+
width: calc(100% - var(--docs_sidebar_width) * 2);
|
|
129
|
+
max-width: var(--docs_content_max_width);
|
|
130
|
+
padding: var(--docs_content_padding);
|
|
131
|
+
padding-top: 0;
|
|
132
|
+
margin: 0 auto;
|
|
133
|
+
overflow: hidden; /* TODO maybe heavy handed */
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.secondary_nav_wrapper {
|
|
137
|
+
display: contents;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.nav_dialog_toggle {
|
|
141
|
+
display: none;
|
|
142
|
+
}
|
|
143
|
+
.nav_dialog_toggle button {
|
|
144
|
+
padding-left: var(--space_xl3);
|
|
145
|
+
padding-right: var(--space_xl3);
|
|
146
|
+
border-radius: 0;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/* sync this breakpoint with `DocsTertiaryNav` and `TomeSectionHeader` */
|
|
150
|
+
@media (max-width: 1000px) {
|
|
151
|
+
main {
|
|
152
|
+
--docs_content_padding: var(--space_xl);
|
|
153
|
+
/* handle the moved `DocsTertiaryNav` */
|
|
154
|
+
width: calc(100% - var(--docs_sidebar_width));
|
|
155
|
+
margin-right: 0;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.nav_dialog_toggle {
|
|
159
|
+
display: contents;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/* sync this breakpoint with `DocsPrimaryNav`, `DocsSecondaryNav`, and `TomeSectionHeader` */
|
|
164
|
+
@media (max-width: 800px) {
|
|
165
|
+
main {
|
|
166
|
+
/* handle the moved `DocsSecondaryNav` */
|
|
167
|
+
width: 100%;
|
|
168
|
+
margin-left: 0;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.secondary_nav_wrapper {
|
|
172
|
+
display: none;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
section {
|
|
177
|
+
padding: var(--space_xl2);
|
|
178
|
+
}
|
|
179
|
+
</style>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { Library } from './library.svelte.js';
|
|
3
|
+
import { Tome } from './tome.js';
|
|
4
|
+
type $$ComponentProps = {
|
|
5
|
+
tomes: Array<Tome>;
|
|
6
|
+
library: Library;
|
|
7
|
+
breadcrumb_children?: Snippet<[is_primary_nav: boolean]>;
|
|
8
|
+
children: Snippet;
|
|
9
|
+
};
|
|
10
|
+
declare const Docs: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
11
|
+
type Docs = ReturnType<typeof Docs>;
|
|
12
|
+
export default Docs;
|
|
13
|
+
//# sourceMappingURL=Docs.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Docs.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/Docs.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,QAAQ,CAAC;AAKpC,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAC,IAAI,EAAgB,MAAM,WAAW,CAAC;AAQ7C,KAAK,gBAAgB,GAAI;IACxB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,mBAAmB,CAAC,EAAE,OAAO,CAAC,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;IACzD,QAAQ,EAAE,OAAO,CAAC;CAClB,CAAC;AA6GH,QAAA,MAAM,IAAI,sDAAwC,CAAC;AACnD,KAAK,IAAI,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;AACpC,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type {Snippet} from 'svelte';
|
|
3
|
+
|
|
4
|
+
import type {Library} from './library.svelte.js';
|
|
5
|
+
import type {Tome} from './tome.js';
|
|
6
|
+
import LibrarySummary from './LibrarySummary.svelte';
|
|
7
|
+
|
|
8
|
+
const {
|
|
9
|
+
tomes,
|
|
10
|
+
library,
|
|
11
|
+
repo_name,
|
|
12
|
+
content,
|
|
13
|
+
header,
|
|
14
|
+
}: {
|
|
15
|
+
tomes: Array<Tome>;
|
|
16
|
+
library: Library;
|
|
17
|
+
repo_name?: Snippet<[repo_name: string]>;
|
|
18
|
+
content?: Snippet;
|
|
19
|
+
header?: Snippet;
|
|
20
|
+
} = $props();
|
|
21
|
+
</script>
|
|
22
|
+
|
|
23
|
+
<div class="width_upto_md">
|
|
24
|
+
{#if header}
|
|
25
|
+
{@render header()}
|
|
26
|
+
{:else}
|
|
27
|
+
<div class="box mb_xl5">
|
|
28
|
+
<LibrarySummary {library} {repo_name} />
|
|
29
|
+
</div>
|
|
30
|
+
{/if}
|
|
31
|
+
<div>
|
|
32
|
+
{#if content}
|
|
33
|
+
{@render content()}
|
|
34
|
+
{:else}
|
|
35
|
+
{#each tomes as tome (tome)}
|
|
36
|
+
<tome.Component />
|
|
37
|
+
{/each}
|
|
38
|
+
{/if}
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { Library } from './library.svelte.js';
|
|
3
|
+
import type { Tome } from './tome.js';
|
|
4
|
+
type $$ComponentProps = {
|
|
5
|
+
tomes: Array<Tome>;
|
|
6
|
+
library: Library;
|
|
7
|
+
repo_name?: Snippet<[repo_name: string]>;
|
|
8
|
+
content?: Snippet;
|
|
9
|
+
header?: Snippet;
|
|
10
|
+
};
|
|
11
|
+
declare const DocsContent: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
12
|
+
type DocsContent = ReturnType<typeof DocsContent>;
|
|
13
|
+
export default DocsContent;
|
|
14
|
+
//# sourceMappingURL=DocsContent.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocsContent.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/DocsContent.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,QAAQ,CAAC;AAEpC,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAGnC,KAAK,gBAAgB,GAAI;IACxB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAsCH,QAAA,MAAM,WAAW,sDAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
|