@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,9 @@
|
|
|
1
|
+
import { Tome } from './tome.js';
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
tomes: Array<Tome>;
|
|
4
|
+
sidebar?: boolean;
|
|
5
|
+
};
|
|
6
|
+
declare const DocsSecondaryNav: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
7
|
+
type DocsSecondaryNav = ReturnType<typeof DocsSecondaryNav>;
|
|
8
|
+
export default DocsSecondaryNav;
|
|
9
|
+
//# sourceMappingURL=DocsSecondaryNav.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocsSecondaryNav.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/DocsSecondaryNav.svelte"],"names":[],"mappings":"AAIA,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAE9B,KAAK,gBAAgB,GAAI;IACxB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAuBH,QAAA,MAAM,gBAAgB,sDAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import {page} from '$app/state';
|
|
3
|
+
|
|
4
|
+
import DocsModulesList from './DocsModulesList.svelte';
|
|
5
|
+
import DocsPageLinks from './DocsPageLinks.svelte';
|
|
6
|
+
import {to_tome_pathname, Tome} from './tome.js';
|
|
7
|
+
import {docs_links_context, DOCS_API_PATH} from './docs_helpers.svelte.js';
|
|
8
|
+
import {library_context} from './library.svelte.js';
|
|
9
|
+
import TomeLink from './TomeLink.svelte';
|
|
10
|
+
import ModuleLink from './ModuleLink.svelte';
|
|
11
|
+
import DeclarationLink from './DeclarationLink.svelte';
|
|
12
|
+
|
|
13
|
+
const {
|
|
14
|
+
tomes,
|
|
15
|
+
tomes_by_name,
|
|
16
|
+
sidebar = true,
|
|
17
|
+
}: {
|
|
18
|
+
tomes: Array<Tome>;
|
|
19
|
+
tomes_by_name: Map<string, Tome>;
|
|
20
|
+
sidebar?: boolean; // TODO @many dialog navs (this shouldn't exist)
|
|
21
|
+
} = $props();
|
|
22
|
+
|
|
23
|
+
const selected_tome = $derived(tomes.find((t) => to_tome_pathname(t) === page.url.pathname));
|
|
24
|
+
|
|
25
|
+
const tomes_related_to_selected = $derived(
|
|
26
|
+
selected_tome?.related_tomes
|
|
27
|
+
.map((name) => tomes_by_name.get(name))
|
|
28
|
+
.filter((t) => t !== undefined) ?? [],
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
const library = library_context.get();
|
|
32
|
+
|
|
33
|
+
const modules_related_to_selected = $derived(
|
|
34
|
+
selected_tome?.related_modules
|
|
35
|
+
.map((path) => library.lookup_module(path))
|
|
36
|
+
.filter((m) => m !== undefined) ?? [],
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
const declarations_related_to_selected = $derived(
|
|
40
|
+
selected_tome?.related_declarations
|
|
41
|
+
.map((name) => library.lookup_declaration(name))
|
|
42
|
+
.filter((d) => d !== undefined) ?? [],
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
const docs_links = docs_links_context.get();
|
|
46
|
+
|
|
47
|
+
const should_show_page_links = $derived(docs_links.docs_links.length > 0);
|
|
48
|
+
|
|
49
|
+
const at_api_root = $derived(page.url.pathname === DOCS_API_PATH);
|
|
50
|
+
const at_module = $derived(page.url.pathname.startsWith(DOCS_API_PATH + '/'));
|
|
51
|
+
</script>
|
|
52
|
+
|
|
53
|
+
<!-- TODO probably add a `nav` wrapper? around which? -->
|
|
54
|
+
<aside class="docs_tertiary_nav unstyled">
|
|
55
|
+
{#if should_show_page_links}
|
|
56
|
+
<DocsPageLinks {sidebar} expand_width />
|
|
57
|
+
{/if}
|
|
58
|
+
{#if at_api_root || at_module}
|
|
59
|
+
<DocsModulesList expand_width />
|
|
60
|
+
{/if}
|
|
61
|
+
{#if tomes_related_to_selected.length}
|
|
62
|
+
<section class="related_section">
|
|
63
|
+
<h4 class="mb_sm">related tomes</h4>
|
|
64
|
+
<ul class="unstyled">
|
|
65
|
+
{#each tomes_related_to_selected as tome (tome.name)}
|
|
66
|
+
<li><TomeLink name={tome.name} class="menu_item" /></li>
|
|
67
|
+
{/each}
|
|
68
|
+
</ul>
|
|
69
|
+
</section>
|
|
70
|
+
{/if}
|
|
71
|
+
{#if modules_related_to_selected.length}
|
|
72
|
+
<section class="related_section">
|
|
73
|
+
<h4 class="mb_sm">related modules</h4>
|
|
74
|
+
<ul class="unstyled">
|
|
75
|
+
{#each modules_related_to_selected as module (module.path)}
|
|
76
|
+
<li><ModuleLink module_path={module.path} class="menu_item" /></li>
|
|
77
|
+
{/each}
|
|
78
|
+
</ul>
|
|
79
|
+
</section>
|
|
80
|
+
{/if}
|
|
81
|
+
{#if declarations_related_to_selected.length}
|
|
82
|
+
<section class="related_section">
|
|
83
|
+
<h4 class="mb_sm">related declarations</h4>
|
|
84
|
+
<ul class="unstyled">
|
|
85
|
+
{#each declarations_related_to_selected as declaration (declaration.name)}
|
|
86
|
+
<li><DeclarationLink name={declaration.name} class="menu_item" /></li>
|
|
87
|
+
{/each}
|
|
88
|
+
</ul>
|
|
89
|
+
</section>
|
|
90
|
+
{/if}
|
|
91
|
+
</aside>
|
|
92
|
+
|
|
93
|
+
<style>
|
|
94
|
+
.docs_tertiary_nav {
|
|
95
|
+
/* TODO @many lots of duplicate code between `DocsSecondaryNav` and `DocsTertiaryNav` */
|
|
96
|
+
position: fixed;
|
|
97
|
+
right: 0;
|
|
98
|
+
top: var(--docs_primary_nav_height);
|
|
99
|
+
z-index: 1;
|
|
100
|
+
width: var(--docs_sidebar_width);
|
|
101
|
+
height: calc(100% - var(--docs_primary_nav_height));
|
|
102
|
+
padding: var(
|
|
103
|
+
--docs_secondary_nav_padding
|
|
104
|
+
); /* needed with `overflow: auto` to avoid cutting off outline */
|
|
105
|
+
overflow: auto;
|
|
106
|
+
scrollbar-width: thin;
|
|
107
|
+
background-color: var(--fg_1);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/* sync this breakpoint with `/docs/+layout` */
|
|
111
|
+
@media (max-width: 1000px) {
|
|
112
|
+
.docs_tertiary_nav {
|
|
113
|
+
position: static;
|
|
114
|
+
background-color: initial;
|
|
115
|
+
overflow: initial;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
</style>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Tome } from './tome.js';
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
tomes: Array<Tome>;
|
|
4
|
+
tomes_by_name: Map<string, Tome>;
|
|
5
|
+
sidebar?: boolean;
|
|
6
|
+
};
|
|
7
|
+
declare const DocsTertiaryNav: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
8
|
+
type DocsTertiaryNav = ReturnType<typeof DocsTertiaryNav>;
|
|
9
|
+
export default DocsTertiaryNav;
|
|
10
|
+
//# sourceMappingURL=DocsTertiaryNav.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocsTertiaryNav.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/DocsTertiaryNav.svelte"],"names":[],"mappings":"AAOA,OAAO,EAAmB,IAAI,EAAC,MAAM,WAAW,CAAC;AAOhD,KAAK,gBAAgB,GAAI;IACxB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AA6FH,QAAA,MAAM,eAAe,sDAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
const {
|
|
3
|
+
selected,
|
|
4
|
+
}: {
|
|
5
|
+
selected?: 'webdevladder.net' | 'ryanatkn.com'; // 'spiderspace.org' |
|
|
6
|
+
} = $props();
|
|
7
|
+
</script>
|
|
8
|
+
|
|
9
|
+
<ul>
|
|
10
|
+
<li>
|
|
11
|
+
<a rel="me" href="https://www.ryanatkn.com/" class:selected={selected === 'ryanatkn.com'}
|
|
12
|
+
>ryanatkn.com</a
|
|
13
|
+
>
|
|
14
|
+
- my homepage{#if selected === 'ryanatkn.com'}, you are here{/if}
|
|
15
|
+
</li>
|
|
16
|
+
<!-- <li>
|
|
17
|
+
<a rel="me" href="https://www.spiderspace.org/" class:selected={selected === 'spiderspace.org'}
|
|
18
|
+
>spiderspace.org</a
|
|
19
|
+
>
|
|
20
|
+
- nontechnical design videos where we'll make a social website together with
|
|
21
|
+
<a href="https://www.zzz.software/">Zzz</a> when it's ready, YouTube channel
|
|
22
|
+
<a rel="me" href="https://youtube.com/@spiderspace_8000">@spiderspace_8000</a
|
|
23
|
+
>{#if selected === 'spiderspace.org'}, you are here{/if}
|
|
24
|
+
</li> -->
|
|
25
|
+
<li>
|
|
26
|
+
GitHub as <a rel="me" href="https://github.com/ryanatkn">@ryanatkn</a> and Bluesky as
|
|
27
|
+
<a href="https://bsky.app/profile/ryanatkn.com">@ryanatkn.com</a>
|
|
28
|
+
</li>
|
|
29
|
+
<li>
|
|
30
|
+
Mastodon as
|
|
31
|
+
<a rel="me" href="https://fosstodon.org/@ryanatkn">@ryanatkn@fosstodon.org</a> and
|
|
32
|
+
<a rel="me" href="https://fosstodon.org/@webdevladder">@webdevladder@fosstodon.org</a>
|
|
33
|
+
</li>
|
|
34
|
+
<li>
|
|
35
|
+
<a
|
|
36
|
+
rel="me"
|
|
37
|
+
href="https://www.webdevladder.net/"
|
|
38
|
+
class:selected={selected === 'webdevladder.net'}>webdevladder.net</a
|
|
39
|
+
>
|
|
40
|
+
- realworld webdev with TypeScript and Svelte,
|
|
41
|
+
<a href="https://www.webdevladder.net/blog">blog</a>
|
|
42
|
+
and YouTube channels
|
|
43
|
+
<a rel="me" href="https://youtube.com/@webdevladder">@webdevladder</a>
|
|
44
|
+
and
|
|
45
|
+
<a rel="me" href="https://youtube.com/@webdevladder_vods">@webdevladder_vods</a>, also
|
|
46
|
+
@webdevladder on <a rel="me" href="https://www.reddit.com/user/webdevladder/">Reddit</a> and
|
|
47
|
+
<a href="https://news.ycombinator.com/user?id=webdevladder">Hacker News</a
|
|
48
|
+
>{#if selected === 'webdevladder.net'}, you are here{/if}
|
|
49
|
+
</li>
|
|
50
|
+
<!-- <li>
|
|
51
|
+
support me at <a href="https://www.ryanatkn.com/funding">ryanatkn.com/funding</a>
|
|
52
|
+
</li> -->
|
|
53
|
+
</ul>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
type $$ComponentProps = {
|
|
2
|
+
selected?: 'webdevladder.net' | 'ryanatkn.com';
|
|
3
|
+
};
|
|
4
|
+
declare const EcosystemLinks: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
5
|
+
type EcosystemLinks = ReturnType<typeof EcosystemLinks>;
|
|
6
|
+
export default EcosystemLinks;
|
|
7
|
+
//# sourceMappingURL=EcosystemLinks.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EcosystemLinks.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/EcosystemLinks.svelte"],"names":[],"mappings":"AAGC,KAAK,gBAAgB,GAAI;IACxB,QAAQ,CAAC,EAAE,kBAAkB,GAAG,cAAc,CAAC;CAC/C,CAAC;AAsCH,QAAA,MAAM,cAAc,sDAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type {Snippet} from 'svelte';
|
|
3
|
+
|
|
4
|
+
import EcosystemLinks from './EcosystemLinks.svelte';
|
|
5
|
+
import ProjectLinks from './ProjectLinks.svelte';
|
|
6
|
+
|
|
7
|
+
const {
|
|
8
|
+
children,
|
|
9
|
+
}: {
|
|
10
|
+
children?: Snippet;
|
|
11
|
+
} = $props();
|
|
12
|
+
</script>
|
|
13
|
+
|
|
14
|
+
<section class="panel p_lg">
|
|
15
|
+
{#if children}
|
|
16
|
+
{@render children()}
|
|
17
|
+
{:else}
|
|
18
|
+
<h2 class="mt_0 mb_lg">Links</h2>
|
|
19
|
+
{/if}
|
|
20
|
+
<EcosystemLinks />
|
|
21
|
+
<div class="box row"><ProjectLinks /></div>
|
|
22
|
+
</section>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
children?: Snippet;
|
|
4
|
+
};
|
|
5
|
+
declare const EcosystemLinksPanel: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
6
|
+
type EcosystemLinksPanel = ReturnType<typeof EcosystemLinksPanel>;
|
|
7
|
+
export default EcosystemLinksPanel;
|
|
8
|
+
//# sourceMappingURL=EcosystemLinksPanel.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EcosystemLinksPanel.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/EcosystemLinksPanel.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,QAAQ,CAAC;AAKnC,KAAK,gBAAgB,GAAI;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAwBH,QAAA,MAAM,mBAAmB,sDAAwC,CAAC;AAClE,KAAK,mBAAmB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAClE,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import {strip_start} from '@fuzdev/fuz_util/string.js';
|
|
3
|
+
import type {SvelteHTMLElements} from 'svelte/elements';
|
|
4
|
+
import {DEV} from 'esm-env';
|
|
5
|
+
|
|
6
|
+
import Svg from './Svg.svelte';
|
|
7
|
+
import {github_logo} from './logos.js';
|
|
8
|
+
|
|
9
|
+
const {
|
|
10
|
+
path,
|
|
11
|
+
href: href_prop,
|
|
12
|
+
children,
|
|
13
|
+
class: class_prop,
|
|
14
|
+
...rest
|
|
15
|
+
}: SvelteHTMLElements['a'] & {
|
|
16
|
+
/**
|
|
17
|
+
* GitHub path - can be a full URL or a relative path like `owner/repo` or `owner/repo/blob/main/file.ts`
|
|
18
|
+
* @example ryanatkn/fuz
|
|
19
|
+
* @example ryanatkn/fuz/blob/main/src/lib/Card.svelte
|
|
20
|
+
* @example https://github.com/ryanatkn/fuz/issues/123
|
|
21
|
+
*/
|
|
22
|
+
path?: string;
|
|
23
|
+
} = $props();
|
|
24
|
+
|
|
25
|
+
if (DEV && !path && !href_prop) {
|
|
26
|
+
throw new Error('GithubLink requires either `path` or `href` prop');
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const href = $derived(
|
|
30
|
+
href_prop ??
|
|
31
|
+
(path
|
|
32
|
+
? path.startsWith('https://')
|
|
33
|
+
? path
|
|
34
|
+
: `https://github.com/${strip_start(path, '/')}`
|
|
35
|
+
: ''),
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
// extract meaningful display text from the path
|
|
39
|
+
const final_children = $derived(
|
|
40
|
+
children ??
|
|
41
|
+
(() => {
|
|
42
|
+
if (!path) return href || '';
|
|
43
|
+
const path_part = strip_start(path.replace('https://github.com/', ''), '/');
|
|
44
|
+
|
|
45
|
+
// for file/tree paths like "owner/repo/blob/main/src/file.ts" -> "src/file.ts"
|
|
46
|
+
const blob_regex = /^[^/]+\/[^/]+\/(?:blob|tree)\/[^/]+\/(.+)$/;
|
|
47
|
+
const blob_match = blob_regex.exec(path_part);
|
|
48
|
+
if (blob_match) return blob_match[1]!;
|
|
49
|
+
|
|
50
|
+
// for issue/PR like "owner/repo/issues/123" -> "owner/repo#123"
|
|
51
|
+
const issue_regex = /^([^/]+\/[^/]+)\/(issues|pull)\/(\d+)/;
|
|
52
|
+
const issue_match = issue_regex.exec(path_part);
|
|
53
|
+
if (issue_match) return `${issue_match[1]}#${issue_match[3]}`;
|
|
54
|
+
|
|
55
|
+
// default to the full path (typically "owner/repo")
|
|
56
|
+
return path_part;
|
|
57
|
+
})(),
|
|
58
|
+
);
|
|
59
|
+
</script>
|
|
60
|
+
|
|
61
|
+
<!-- TODO -next-line doesnt work? -->
|
|
62
|
+
<!-- eslint-disable svelte/no-navigation-without-resolve -->
|
|
63
|
+
<a {...rest} {href} class="github_link chip white_space_nowrap {class_prop}" rel="noopener"
|
|
64
|
+
><Svg
|
|
65
|
+
data={github_logo}
|
|
66
|
+
inline
|
|
67
|
+
size="var(--icon_size_xs)"
|
|
68
|
+
attrs={{class: 'mx_xs3 vertical_align_middle'}}
|
|
69
|
+
/>
|
|
70
|
+
{#if typeof final_children === 'string'}
|
|
71
|
+
<span class="font_family_mono">{final_children}</span>
|
|
72
|
+
{:else if final_children}
|
|
73
|
+
{@render final_children()}
|
|
74
|
+
{/if}</a
|
|
75
|
+
>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { SvelteHTMLElements } from 'svelte/elements';
|
|
2
|
+
type $$ComponentProps = SvelteHTMLElements['a'] & {
|
|
3
|
+
/**
|
|
4
|
+
* GitHub path - can be a full URL or a relative path like `owner/repo` or `owner/repo/blob/main/file.ts`
|
|
5
|
+
* @example ryanatkn/fuz
|
|
6
|
+
* @example ryanatkn/fuz/blob/main/src/lib/Card.svelte
|
|
7
|
+
* @example https://github.com/ryanatkn/fuz/issues/123
|
|
8
|
+
*/
|
|
9
|
+
path?: string;
|
|
10
|
+
};
|
|
11
|
+
declare const GithubLink: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
12
|
+
type GithubLink = ReturnType<typeof GithubLink>;
|
|
13
|
+
export default GithubLink;
|
|
14
|
+
//# sourceMappingURL=GithubLink.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GithubLink.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/GithubLink.svelte"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,iBAAiB,CAAC;AAMvD,KAAK,gBAAgB,GAAI,kBAAkB,CAAC,GAAG,CAAC,GAAG;IAClD;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAgEH,QAAA,MAAM,UAAU,sDAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type {SvelteHTMLElements} from 'svelte/elements';
|
|
3
|
+
|
|
4
|
+
const {
|
|
5
|
+
glyph,
|
|
6
|
+
size,
|
|
7
|
+
class: class_prop,
|
|
8
|
+
...rest
|
|
9
|
+
}: SvelteHTMLElements['span'] & {
|
|
10
|
+
glyph: string;
|
|
11
|
+
size?: string | undefined;
|
|
12
|
+
} = $props();
|
|
13
|
+
|
|
14
|
+
const DEFAULT_SIZE = 'var(--font_size, 1em)';
|
|
15
|
+
const DEFAULT_FONT_SIZE = 'var(--font_size, inherit)';
|
|
16
|
+
|
|
17
|
+
const final_size = $derived(size ?? DEFAULT_SIZE);
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<span
|
|
21
|
+
{...rest}
|
|
22
|
+
class="glyph display_inline_block text_align_center line_height_1 white_space_nowrap font_weight_400 {class_prop}"
|
|
23
|
+
style:width={final_size}
|
|
24
|
+
style:height={final_size}
|
|
25
|
+
style:min-width={final_size}
|
|
26
|
+
style:min-height={final_size}
|
|
27
|
+
style:font-size={size ?? DEFAULT_FONT_SIZE}>{glyph}</span
|
|
28
|
+
>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { SvelteHTMLElements } from 'svelte/elements';
|
|
2
|
+
type $$ComponentProps = SvelteHTMLElements['span'] & {
|
|
3
|
+
glyph: string;
|
|
4
|
+
size?: string | undefined;
|
|
5
|
+
};
|
|
6
|
+
declare const Glyph: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
7
|
+
type Glyph = ReturnType<typeof Glyph>;
|
|
8
|
+
export default Glyph;
|
|
9
|
+
//# sourceMappingURL=Glyph.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Glyph.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/Glyph.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,iBAAiB,CAAC;AAEvD,KAAK,gBAAgB,GAAI,kBAAkB,CAAC,MAAM,CAAC,GAAG;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B,CAAC;AAqBH,QAAA,MAAM,KAAK,sDAAwC,CAAC;AACpD,KAAK,KAAK,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC;AACtC,eAAe,KAAK,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type {SvelteHTMLElements} from 'svelte/elements';
|
|
3
|
+
|
|
4
|
+
const {
|
|
5
|
+
fragment,
|
|
6
|
+
children,
|
|
7
|
+
class: class_prop,
|
|
8
|
+
...rest
|
|
9
|
+
}: SvelteHTMLElements['a'] & {fragment: string} = $props();
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<a {...rest} class="hashlink {class_prop}" href="#{fragment}" aria-label="hashlink"
|
|
13
|
+
>{#if children}{@render children()}{:else}#{/if}</a
|
|
14
|
+
>
|
|
15
|
+
<span class="hashlink_scroll_target" id={fragment} aria-hidden="true"></span>
|
|
16
|
+
|
|
17
|
+
<style>
|
|
18
|
+
/* TODO @many how can this be done generically so it's composable? currently using `:global` at usage site - ideally we'd continue to use :hover instead of JS */
|
|
19
|
+
/* .some_parent:hover :global(.hashlink) { opacity: 1; } .some_parent { position: relative; } */
|
|
20
|
+
|
|
21
|
+
.hashlink {
|
|
22
|
+
font-size: var(--font_size_lg);
|
|
23
|
+
padding: 0 var(--space_sm);
|
|
24
|
+
margin-left: var(--space_sm);
|
|
25
|
+
opacity: 0;
|
|
26
|
+
transition: opacity var(--duration_2);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.hashlink_scroll_target {
|
|
30
|
+
position: absolute;
|
|
31
|
+
top: calc(var(--font_size, var(--font_size_md)) * -4);
|
|
32
|
+
left: 0;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/* sync this breakpoint with `Docs` */
|
|
36
|
+
@media (max-width: 800px) {
|
|
37
|
+
.hashlink {
|
|
38
|
+
opacity: 1;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
</style>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SvelteHTMLElements } from 'svelte/elements';
|
|
2
|
+
type $$ComponentProps = SvelteHTMLElements['a'] & {
|
|
3
|
+
fragment: string;
|
|
4
|
+
};
|
|
5
|
+
declare const Hashlink: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
6
|
+
type Hashlink = ReturnType<typeof Hashlink>;
|
|
7
|
+
export default Hashlink;
|
|
8
|
+
//# sourceMappingURL=Hashlink.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Hashlink.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/Hashlink.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,iBAAiB,CAAC;AAEvD,KAAK,gBAAgB,GAAI,kBAAkB,CAAC,GAAG,CAAC,GAAG;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAC,CAAC;AAmBvE,QAAA,MAAM,QAAQ,sDAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export default HiddenPersonalLinks;
|
|
2
|
+
type HiddenPersonalLinks = SvelteComponent<{
|
|
3
|
+
[x: string]: never;
|
|
4
|
+
}, {
|
|
5
|
+
[evt: string]: CustomEvent<any>;
|
|
6
|
+
}, {}> & {
|
|
7
|
+
$$bindings?: string | undefined;
|
|
8
|
+
};
|
|
9
|
+
declare const HiddenPersonalLinks: $$__sveltets_2_IsomorphicComponent<{
|
|
10
|
+
[x: string]: never;
|
|
11
|
+
}, {
|
|
12
|
+
[evt: string]: CustomEvent<any>;
|
|
13
|
+
}, {}, {}, string>;
|
|
14
|
+
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> {
|
|
15
|
+
new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
|
|
16
|
+
$$bindings?: Bindings;
|
|
17
|
+
} & Exports;
|
|
18
|
+
(internal: unknown, props: {
|
|
19
|
+
$$events?: Events;
|
|
20
|
+
$$slots?: Slots;
|
|
21
|
+
}): Exports & {
|
|
22
|
+
$set?: any;
|
|
23
|
+
$on?: any;
|
|
24
|
+
};
|
|
25
|
+
z_$$bindings?: Bindings;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=HiddenPersonalLinks.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HiddenPersonalLinks.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/HiddenPersonalLinks.svelte"],"names":[],"mappings":";;;;;;;;AAoBA;;;;mBAA+H;6CATlF,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,OAAO,OAAO,QAAQ;IAC3L,cAAc,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,WAAW,OAAO,SAAS;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;IACtG,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type {Hue} from '@fuzdev/fuz_util/colors.js';
|
|
3
|
+
import type {Snippet} from 'svelte';
|
|
4
|
+
|
|
5
|
+
let {
|
|
6
|
+
value = $bindable(180),
|
|
7
|
+
oninput,
|
|
8
|
+
children,
|
|
9
|
+
}: {
|
|
10
|
+
value?: Hue;
|
|
11
|
+
oninput?: (hue: Hue) => void;
|
|
12
|
+
children?: Snippet;
|
|
13
|
+
} = $props();
|
|
14
|
+
|
|
15
|
+
// TODO probably upstream this to belt
|
|
16
|
+
const parse_hue = (v: any): Hue | null => {
|
|
17
|
+
const t = typeof v;
|
|
18
|
+
if (t === 'number') return v;
|
|
19
|
+
if (t !== 'string') return null;
|
|
20
|
+
const parsed = Number(v);
|
|
21
|
+
if (Number.isNaN(parsed)) return null;
|
|
22
|
+
return parsed;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const update_hue = (v: Hue) => {
|
|
26
|
+
value = v;
|
|
27
|
+
oninput?.(value);
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const on_input_event = (e: Event & {currentTarget: EventTarget & HTMLInputElement}) => {
|
|
31
|
+
const parsed = parse_hue(e.currentTarget.value);
|
|
32
|
+
if (parsed === null) return;
|
|
33
|
+
update_hue(parsed);
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
let el: HTMLInputElement | undefined = $state();
|
|
37
|
+
|
|
38
|
+
const set_hue_from_minimap = (e: MouseEvent & {currentTarget: EventTarget & HTMLElement}) => {
|
|
39
|
+
const rect = e.currentTarget.getBoundingClientRect();
|
|
40
|
+
const pct = (e.clientX - rect.x) / rect.width;
|
|
41
|
+
update_hue(Math.floor(360 * pct));
|
|
42
|
+
el?.focus();
|
|
43
|
+
};
|
|
44
|
+
</script>
|
|
45
|
+
|
|
46
|
+
<!-- TODO consider making this a text input or otherwise editable directly -->
|
|
47
|
+
<div class="hue_input" style:--hue={value}>
|
|
48
|
+
<label>
|
|
49
|
+
{#if children}<div class="title">{@render children()}</div>{/if}
|
|
50
|
+
<div class="preview">
|
|
51
|
+
hue
|
|
52
|
+
<input type="number" step="0" class="hue" {value} oninput={on_input_event} />
|
|
53
|
+
</div>
|
|
54
|
+
</label>
|
|
55
|
+
<div class="minimap_wrapper">
|
|
56
|
+
<div class="minimap" onclick={set_hue_from_minimap} aria-hidden="true"></div>
|
|
57
|
+
</div>
|
|
58
|
+
<input
|
|
59
|
+
bind:this={el}
|
|
60
|
+
type="range"
|
|
61
|
+
aria-label="hue"
|
|
62
|
+
{value}
|
|
63
|
+
oninput={on_input_event}
|
|
64
|
+
min="0"
|
|
65
|
+
max="359"
|
|
66
|
+
/>
|
|
67
|
+
</div>
|
|
68
|
+
|
|
69
|
+
<style>
|
|
70
|
+
.hue_input {
|
|
71
|
+
--outline_color: hsl(var(--hue) 50% 60%);
|
|
72
|
+
/* TODO @many figure these variables out so they're easily customized (similar pattern in a lot of places) */
|
|
73
|
+
/* --thumb_background_color: hsl(var(--hue) 50% 50%); */
|
|
74
|
+
}
|
|
75
|
+
.preview {
|
|
76
|
+
background-color: hsl(var(--hue) 50% 50%);
|
|
77
|
+
height: var(--space_xl5);
|
|
78
|
+
margin: 0;
|
|
79
|
+
display: flex;
|
|
80
|
+
flex-direction: row;
|
|
81
|
+
align-items: center;
|
|
82
|
+
font-weight: 700;
|
|
83
|
+
color: var(--bg);
|
|
84
|
+
padding-left: var(--space_xl);
|
|
85
|
+
border-top-left-radius: var(--border_radius, var(--border_radius_md));
|
|
86
|
+
border-top-right-radius: var(--border_radius, var(--border_radius_md));
|
|
87
|
+
}
|
|
88
|
+
.minimap_wrapper {
|
|
89
|
+
padding: 0 var(--input_padding_x);
|
|
90
|
+
background: hsl(0 50% 50%) 0%;
|
|
91
|
+
}
|
|
92
|
+
.minimap {
|
|
93
|
+
background: linear-gradient(
|
|
94
|
+
90deg,
|
|
95
|
+
hsl(0 50% 50%) 0%,
|
|
96
|
+
hsl(36 50% 50%) 10%,
|
|
97
|
+
hsl(72 50% 50%) 20%,
|
|
98
|
+
hsl(108 50% 50%) 30%,
|
|
99
|
+
hsl(144 50% 50%) 40%,
|
|
100
|
+
hsl(180 50% 50%) 50%,
|
|
101
|
+
hsl(216 50% 50%) 60%,
|
|
102
|
+
hsl(252 50% 50%) 70%,
|
|
103
|
+
hsl(288 50% 50%) 80%,
|
|
104
|
+
hsl(324 50% 50%) 90%,
|
|
105
|
+
hsl(360 50% 50%) 100%
|
|
106
|
+
);
|
|
107
|
+
height: var(--space_lg);
|
|
108
|
+
}
|
|
109
|
+
/* TODO generic way to make this seamless? */
|
|
110
|
+
input {
|
|
111
|
+
border-top-left-radius: 0;
|
|
112
|
+
border-top-right-radius: 0;
|
|
113
|
+
}
|
|
114
|
+
.hue {
|
|
115
|
+
width: 10rem;
|
|
116
|
+
min-width: 10rem;
|
|
117
|
+
margin-left: var(--space_lg);
|
|
118
|
+
font-size: var(--font_size_lg);
|
|
119
|
+
text-align: center;
|
|
120
|
+
background-color: transparent;
|
|
121
|
+
border: none;
|
|
122
|
+
border-radius: var(--border_radius, var(--border_radius_md));
|
|
123
|
+
/* TODO why is this necessary? */
|
|
124
|
+
height: var(--input_height);
|
|
125
|
+
color: var(--bg);
|
|
126
|
+
}
|
|
127
|
+
</style>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Hue } from '@fuzdev/fuz_util/colors.js';
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
type $$ComponentProps = {
|
|
4
|
+
value?: Hue;
|
|
5
|
+
oninput?: (hue: Hue) => void;
|
|
6
|
+
children?: Snippet;
|
|
7
|
+
};
|
|
8
|
+
declare const HueInput: import("svelte").Component<$$ComponentProps, {}, "value">;
|
|
9
|
+
type HueInput = ReturnType<typeof HueInput>;
|
|
10
|
+
export default HueInput;
|
|
11
|
+
//# sourceMappingURL=HueInput.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HueInput.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/HueInput.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,4BAA4B,CAAC;AACpD,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,QAAQ,CAAC;AAEnC,KAAK,gBAAgB,GAAI;IACxB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AA6DH,QAAA,MAAM,QAAQ,2DAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
|