@fuzdev/fuz_ui 0.212.0 → 0.214.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.
Files changed (39) hide show
  1. package/dist/DeclarationDetail.svelte +17 -3
  2. package/dist/DeclarationDetail.svelte.d.ts.map +1 -1
  3. package/dist/Docs.svelte +1 -1
  4. package/dist/Docs.svelte.d.ts +1 -1
  5. package/dist/Docs.svelte.d.ts.map +1 -1
  6. package/dist/DocsSecondaryNav.svelte +1 -1
  7. package/dist/DocsSecondaryNav.svelte.d.ts +1 -1
  8. package/dist/DocsSecondaryNav.svelte.d.ts.map +1 -1
  9. package/dist/DocsTertiaryNav.svelte +1 -1
  10. package/dist/DocsTertiaryNav.svelte.d.ts +1 -1
  11. package/dist/DocsTertiaryNav.svelte.d.ts.map +1 -1
  12. package/dist/Redirect.svelte +4 -1
  13. package/dist/Redirect.svelte.d.ts.map +1 -1
  14. package/dist/autofocus.svelte.d.ts.map +1 -1
  15. package/dist/autofocus.svelte.js +0 -1
  16. package/dist/csp.d.ts +1 -1
  17. package/dist/csp.js +1 -1
  18. package/dist/docs_helpers.svelte.d.ts +1 -1
  19. package/dist/docs_helpers.svelte.d.ts.map +1 -1
  20. package/dist/logos.d.ts +7 -0
  21. package/dist/logos.d.ts.map +1 -1
  22. package/dist/logos.js +9 -0
  23. package/dist/page_helpers.d.ts +2 -2
  24. package/dist/page_helpers.d.ts.map +1 -1
  25. package/dist/page_helpers.js +3 -3
  26. package/dist/projects.d.ts.map +1 -1
  27. package/dist/projects.js +2 -1
  28. package/dist/tome.d.ts +23 -11
  29. package/dist/tome.d.ts.map +1 -1
  30. package/dist/tome.js +0 -22
  31. package/dist/vite_plugin_pkg_json.d.ts +1 -1
  32. package/dist/vite_plugin_pkg_json.js +1 -1
  33. package/package.json +24 -25
  34. package/src/lib/autofocus.svelte.ts +1 -2
  35. package/src/lib/csp.ts +1 -1
  36. package/src/lib/logos.ts +10 -0
  37. package/src/lib/page_helpers.ts +7 -4
  38. package/src/lib/projects.ts +2 -0
  39. package/src/lib/tome.ts +13 -12
@@ -55,6 +55,7 @@ including parameters, props, members, overloads, external types, and more.
55
55
  examples?: Array<string>;
56
56
  seeAlso?: Array<string>;
57
57
  throws?: Array<{ type?: string; description: string }>;
58
+ mutates?: Record<string, string>;
58
59
  }
59
60
  </script>
60
61
 
@@ -97,7 +98,7 @@ including parameters, props, members, overloads, external types, and more.
97
98
  </div>
98
99
  {/snippet}
99
100
 
100
- <!-- Compact prose metadata for props and members (deprecated, internal, since, examples, see also, throws). -->
101
+ <!-- Compact prose metadata for props and members (deprecated, internal, since, examples, see also, throws, mutates). -->
101
102
  {#snippet doc_extras(item: DocExtras)}
102
103
  <!-- eslint-disable-next-line @typescript-eslint/no-deprecated -->
103
104
  {#if item.deprecatedMessage !== undefined}
@@ -143,6 +144,16 @@ including parameters, props, members, overloads, external types, and more.
143
144
  {/each}
144
145
  </ul>
145
146
  {/if}
147
+ {#if item.mutates && Object.keys(item.mutates).length}
148
+ <p><strong>mutates</strong></p>
149
+ <ul>
150
+ {#each Object.entries(item.mutates) as [target, description] (target)}
151
+ <li>
152
+ <code>{target}</code>{#if description}{' '}— {description}{/if}
153
+ </li>
154
+ {/each}
155
+ </ul>
156
+ {/if}
146
157
  {/snippet}
147
158
 
148
159
  <!-- A comma-separated inline list of type links (extends, implements, external types are rarely more than one). -->
@@ -337,7 +348,8 @@ including parameters, props, members, overloads, external types, and more.
337
348
  {/if}
338
349
 
339
350
  <!-- external types whose contributions are filtered out of (or, on
340
- interfaces/classes, never enumerated in) props/members -->
351
+ interfaces/classes, never enumerated in) props/members; a component prop
352
+ its `$props()` destructuring names is documented anyway -->
341
353
  {#if external_types_not_inherited}
342
354
  <section>
343
355
  <h4>external types</h4>
@@ -435,7 +447,9 @@ including parameters, props, members, overloads, external types, and more.
435
447
  <h4>mutates</h4>
436
448
  <ul>
437
449
  {#each Object.entries(declaration.mutates) as [param, description] (param)}
438
- <li><code>{param}</code> — {description}</li>
450
+ <li>
451
+ <code>{param}</code>{#if description}{' '}— {description}{/if}
452
+ </li>
439
453
  {/each}
440
454
  </ul>
441
455
  </section>
@@ -1 +1 @@
1
- {"version":3,"file":"DeclarationDetail.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/DeclarationDetail.svelte"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAkB1D,KAAK,gBAAgB,GAAI;IAAE,WAAW,EAAE,WAAW,CAAA;CAAE,CAAC;AAigBvD;;;;;;;;GAQG;AACH,QAAA,MAAM,iBAAiB,sDAAwC,CAAC;AAChE,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"DeclarationDetail.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/DeclarationDetail.svelte"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAmB1D,KAAK,gBAAgB,GAAI;IAAE,WAAW,EAAE,WAAW,CAAA;CAAE,CAAC;AA6gBvD;;;;;;;;GAQG;AACH,QAAA,MAAM,iBAAiB,sDAAwC,CAAC;AAChE,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,eAAe,iBAAiB,CAAC"}
package/dist/Docs.svelte CHANGED
@@ -5,7 +5,7 @@
5
5
  import { page } from '$app/state';
6
6
 
7
7
  import Breadcrumb from './Breadcrumb.svelte';
8
- import { Tome, tomes_context } from './tome.js';
8
+ import { type Tome, tomes_context } from './tome.js';
9
9
  import DocsPrimaryNav from './DocsPrimaryNav.svelte';
10
10
  import DocsSecondaryNav from './DocsSecondaryNav.svelte';
11
11
  import DocsTertiaryNav from './DocsTertiaryNav.svelte';
@@ -1,5 +1,5 @@
1
1
  import type { Snippet } from 'svelte';
2
- import { Tome } from './tome.js';
2
+ import { type Tome } from './tome.js';
3
3
  type $$ComponentProps = {
4
4
  tomes: Array<Tome>;
5
5
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Docs.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/Docs.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAMtC,OAAO,EAAE,IAAI,EAAiB,MAAM,WAAW,CAAC;AAW/C,KAAK,gBAAgB,GAAI;IACxB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,gGAAgG;IAChG,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CAClB,CAAC;AAsHH,QAAA,MAAM,IAAI,sDAAwC,CAAC;AACnD,KAAK,IAAI,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;AACpC,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Docs.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/Docs.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAMtC,OAAO,EAAE,KAAK,IAAI,EAAiB,MAAM,WAAW,CAAC;AAWpD,KAAK,gBAAgB,GAAI;IACxB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,gGAAgG;IAChG,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CAClB,CAAC;AAsHH,QAAA,MAAM,IAAI,sDAAwC,CAAC;AACnD,KAAK,IAAI,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;AACpC,eAAe,IAAI,CAAC"}
@@ -3,7 +3,7 @@
3
3
  import type { SvelteHTMLElements } from 'svelte/elements';
4
4
 
5
5
  import DocsMenu from './DocsMenu.svelte';
6
- import { Tome } from './tome.js';
6
+ import type { Tome } from './tome.js';
7
7
 
8
8
  const {
9
9
  tomes,
@@ -1,6 +1,6 @@
1
1
  import type { Snippet } from 'svelte';
2
2
  import type { SvelteHTMLElements } from 'svelte/elements';
3
- import { Tome } from './tome.js';
3
+ import type { Tome } from './tome.js';
4
4
  type $$ComponentProps = SvelteHTMLElements['aside'] & {
5
5
  tomes: Array<Tome>;
6
6
  /** Rendered above the menu, e.g. links to the site's other sections. */
@@ -1 +1 @@
1
- {"version":3,"file":"DocsSecondaryNav.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/DocsSecondaryNav.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG1D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEhC,KAAK,gBAAgB,GAAI,kBAAkB,CAAC,OAAO,CAAC,GAAG;IACtD,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,wEAAwE;IACxE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AA+BH,QAAA,MAAM,gBAAgB,sDAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"DocsSecondaryNav.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/DocsSecondaryNav.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAErC,KAAK,gBAAgB,GAAI,kBAAkB,CAAC,OAAO,CAAC,GAAG;IACtD,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,wEAAwE;IACxE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AA+BH,QAAA,MAAM,gBAAgB,sDAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
@@ -3,7 +3,7 @@
3
3
  import type { SvelteHTMLElements } from 'svelte/elements';
4
4
 
5
5
  import DocsPageLinks from './DocsPageLinks.svelte';
6
- import { tome_to_pathname, Tome } from './tome.js';
6
+ import { tome_to_pathname, type Tome } from './tome.js';
7
7
  import { docs_links_context } from './docs_helpers.svelte.js';
8
8
  import { library_context } from './library.svelte.js';
9
9
  import TomeLink from './TomeLink.svelte';
@@ -1,5 +1,5 @@
1
1
  import type { SvelteHTMLElements } from 'svelte/elements';
2
- import { Tome } from './tome.js';
2
+ import { type Tome } from './tome.js';
3
3
  type $$ComponentProps = SvelteHTMLElements['aside'] & {
4
4
  tomes: Array<Tome>;
5
5
  tomes_by_slug: Map<string, Tome>;
@@ -1 +1 @@
1
- {"version":3,"file":"DocsTertiaryNav.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/DocsTertiaryNav.svelte"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG1D,OAAO,EAAoB,IAAI,EAAE,MAAM,WAAW,CAAC;AAOlD,KAAK,gBAAgB,GAAI,kBAAkB,CAAC,OAAO,CAAC,GAAG;IACtD,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;AAyFH,QAAA,MAAM,eAAe,sDAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"DocsTertiaryNav.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/DocsTertiaryNav.svelte"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG1D,OAAO,EAAoB,KAAK,IAAI,EAAE,MAAM,WAAW,CAAC;AAOvD,KAAK,gBAAgB,GAAI,kBAAkB,CAAC,OAAO,CAAC,GAAG;IACtD,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;AAyFH,QAAA,MAAM,eAAe,sDAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
@@ -28,7 +28,10 @@
28
28
  const url = $derived(host + path);
29
29
 
30
30
  onMount(() => {
31
- if (auto) void goto(url, { replaceState: true }); // eslint-disable-line svelte/no-navigation-without-resolve
31
+ if (!auto) return;
32
+ // `goto` rejects URLs that aren't routes of this app, like static files, other apps,
33
+ // and other hosts, which navigate the browser itself
34
+ goto(url, { replace: true }).catch(() => location.replace(url));
32
35
  });
33
36
  </script>
34
37
 
@@ -1 +1 @@
1
- {"version":3,"file":"Redirect.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/Redirect.svelte"],"names":[],"mappings":"AAMA,OAAO,EAAW,KAAK,OAAO,EAAE,MAAM,QAAQ,CAAC;AAE9C,KAAK,gBAAgB,GAAI;IACxB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;CAClC,CAAC;AAoCH,QAAA,MAAM,QAAQ,sDAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"Redirect.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/Redirect.svelte"],"names":[],"mappings":"AAMA,OAAO,EAAW,KAAK,OAAO,EAAE,MAAM,QAAQ,CAAC;AAE9C,KAAK,gBAAgB,GAAI;IACxB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;CAClC,CAAC;AAuCH,QAAA,MAAM,QAAQ,sDAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"autofocus.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/autofocus.svelte.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GACpB,UAAU,YAAY,KAAG,UAAU,CAAC,WAAW,GAAG,UAAU,CAI5D,CAAC"}
1
+ {"version":3,"file":"autofocus.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/autofocus.svelte.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GACpB,UAAU,YAAY,KAAG,UAAU,CAAC,WAAW,GAAG,UAAU,CAG5D,CAAC"}
@@ -10,6 +10,5 @@
10
10
  * @param options - focus options forwarded to `element.focus()`; defaults to `{focusVisible: true}` to show focus indicators on programmatic focus
11
11
  */
12
12
  export const autofocus = (options) => (el) => {
13
- // focusVisible missing from TS lib.dom.d.ts as of 5.9
14
13
  el.focus({ focusVisible: true, ...options });
15
14
  };
package/dist/csp.d.ts CHANGED
@@ -58,7 +58,7 @@ export interface CreateCspDirectivesOptions {
58
58
  };
59
59
  }
60
60
  /**
61
- * Builds a CSP directives map for use with SvelteKit's `kit.csp.directives` option.
61
+ * Builds a CSP directives map for use with SvelteKit's `csp.directives` option (passed to `sveltekit()`).
62
62
  *
63
63
  * Restrictive by default; opt into specific permissions via `extend` (append) or
64
64
  * `overrides` (replace). Designed to read as an audit log: every user-added source
package/dist/csp.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Builds a CSP directives map for use with SvelteKit's `kit.csp.directives` option.
2
+ * Builds a CSP directives map for use with SvelteKit's `csp.directives` option (passed to `sveltekit()`).
3
3
  *
4
4
  * Restrictive by default; opt into specific permissions via `extend` (append) or
5
5
  * `overrides` (replace). Designed to read as an audit log: every user-added source
@@ -15,7 +15,7 @@ export declare const docs_links_context: {
15
15
  */
16
16
  export declare const docs_slugify: (str: string) => string;
17
17
  export declare const DOCS_PATH_DEFAULT = "/docs";
18
- export declare const DOCS_PATH: string;
18
+ export declare const DOCS_PATH: "/" | "/about" | "/docs" | "/docs/Alert" | "/docs/Breadcrumb" | "/docs/Breadcrumb/a" | "/docs/Breadcrumb/a/b" | "/docs/Breadcrumb/a/b/c" | "/docs/Breadcrumb/a/b/c/d" | "/docs/Card" | "/docs/Contextmenu" | "/docs/Details" | "/docs/Dialog" | "/docs/Docs" | "/docs/HueInput" | "/docs/LibraryDetail" | "/docs/LibrarySummary" | "/docs/Library" | "/docs/PendingAnimation" | "/docs/PendingButton" | "/docs/Redirect" | "/docs/Sparkline" | "/docs/Svg" | "/docs/Teleport" | "/docs/ThemeRoot" | "/docs/api" | "/docs/csp" | "/docs/icons" | "/docs/intersect" | "/docs/introduction" | "/docs/logos" | "/docs/theming" | "/docs/vite_plugin_pkg_json" | "/help" | `/${string}/` | `/${`docs/api/${string}` & {}}` | `/${string}/help` | `/${string}/about` | `/${string}/docs` | `/${string}/docs/Alert` | `/${string}/docs/Breadcrumb` | `/${string}/docs/Breadcrumb/a` | `/${string}/docs/Breadcrumb/a/b` | `/${string}/docs/Breadcrumb/a/b/c` | `/${string}/docs/Breadcrumb/a/b/c/d` | `/${string}/docs/Card` | `/${string}/docs/Contextmenu` | `/${string}/docs/Details` | `/${string}/docs/Dialog` | `/${string}/docs/Docs` | `/${string}/docs/HueInput` | `/${string}/docs/LibraryDetail` | `/${string}/docs/LibrarySummary` | `/${string}/docs/Library` | `/${string}/docs/PendingAnimation` | `/${string}/docs/PendingButton` | `/${string}/docs/Redirect` | `/${string}/docs/Sparkline` | `/${string}/docs/Svg` | `/${string}/docs/Teleport` | `/${string}/docs/ThemeRoot` | `/${string}/docs/api` | `/${string}/${`docs/api/${string}` & {}}` | `/${string}/docs/csp` | `/${string}/docs/icons` | `/${string}/docs/intersect` | `/${string}/docs/introduction` | `/${string}/docs/logos` | `/${string}/docs/theming` | `/${string}/docs/vite_plugin_pkg_json`;
19
19
  export declare const DOCS_API_PATH: string;
20
20
  export declare const to_docs_path_info: (path_slug: string, pathname: string, root_path?: string) => {
21
21
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"docs_helpers.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/docs_helpers.svelte.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAKzD,eAAO,MAAM,kBAAkB;;;;CAA8B,CAAC;AAE9D;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,KAAG,MAY1C,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAAU,CAAC;AACzC,eAAO,MAAM,SAAS,QAAmB,CAAC;AAC1C,eAAO,MAAM,aAAa,QAAqB,CAAC;AAEhD,eAAO,MAAM,iBAAiB,GAC7B,WAAW,MAAM,EACjB,UAAU,MAAM,EAChB,kBAA6B,KAC3B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAA;CAK7E,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7C,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,WAAW,GAAG,SAAS,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED,qBAAa,SAAS;;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC,CAAmB;IAgBlE,UAAU,iBA4BP;IAEH,QAAQ,CAAC,kBAAkB,EAAE,SAAS,CAAC,MAAM,CAAC,CAAmB;gBAErD,SAAS,SAAoB;IAIzC,GAAG,CACF,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,GAAG,CAAC,EAAE,WAAW,EACjB,KAAK,SAAI,EACT,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,GAClB,MAAM;IAkBT,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIxB;;;OAGG;IACH,mBAAmB,IAAI,MAAM;CAG7B"}
1
+ {"version":3,"file":"docs_helpers.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/docs_helpers.svelte.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAKzD,eAAO,MAAM,kBAAkB;;;;CAA8B,CAAC;AAE9D;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,KAAG,MAY1C,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAAU,CAAC;AACzC,eAAO,MAAM,SAAS,6qDAAmB,CAAC;AAC1C,eAAO,MAAM,aAAa,QAAqB,CAAC;AAEhD,eAAO,MAAM,iBAAiB,GAC7B,WAAW,MAAM,EACjB,UAAU,MAAM,EAChB,kBAA6B,KAC3B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAA;CAK7E,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7C,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,WAAW,GAAG,SAAS,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED,qBAAa,SAAS;;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC,CAAmB;IAgBlE,UAAU,iBA4BP;IAEH,QAAQ,CAAC,kBAAkB,EAAE,SAAS,CAAC,MAAM,CAAC,CAAmB;gBAErD,SAAS,SAAoB;IAIzC,GAAG,CACF,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,GAAG,CAAC,EAAE,WAAW,EACjB,KAAK,SAAI,EACT,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,GAClB,MAAM;IAkBT,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIxB;;;OAGG;IACH,mBAAmB,IAAI,MAAM;CAG7B"}
package/dist/logos.d.ts CHANGED
@@ -90,6 +90,13 @@ export declare const logo_fuz_util: {
90
90
  d: string;
91
91
  }[];
92
92
  };
93
+ export declare const logo_fuz_host: {
94
+ label: string;
95
+ fill: string;
96
+ paths: {
97
+ d: string;
98
+ }[];
99
+ };
93
100
  export declare const logo_tsv: {
94
101
  label: string;
95
102
  fill: string;
@@ -1 +1 @@
1
- {"version":3,"file":"logos.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/logos.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,QAAQ;;;;;;CAgCF,CAAC;AAEpB,eAAO,MAAM,QAAQ;;;;;;CAQF,CAAC;AAEpB,eAAO,MAAM,YAAY;;;;;;CAIN,CAAC;AAEpB,eAAO,MAAM,YAAY;;;;;;;CAKN,CAAC;AAEpB,eAAO,MAAM,WAAW;;;;;;CAIL,CAAC;AAEpB,eAAO,MAAM,aAAa;;;;;;CAIP,CAAC;AAEpB,eAAO,MAAM,aAAa;;;;;;CAIP,CAAC;AAEpB,eAAO,MAAM,iBAAiB;;;;;;CAIX,CAAC;AAEpB,eAAO,MAAM,cAAc;;;;;;CAIR,CAAC;AAEpB,eAAO,MAAM,aAAa;;;;;;CAIP,CAAC;AAEpB,eAAO,MAAM,mBAAmB;;;;;;CAQb,CAAC;AAEpB,eAAO,MAAM,iBAAiB;;;;;;CAQX,CAAC;AAEpB,eAAO,MAAM,aAAa;;;;;;CAwBP,CAAC;AAEpB,eAAO,MAAM,QAAQ;;;;;;CAQF,CAAC;AAEpB,eAAO,MAAM,WAAW;;;;;;;;;CAWL,CAAC;AAEpB,eAAO,MAAM,QAAQ;;;;;;CAQF,CAAC"}
1
+ {"version":3,"file":"logos.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/logos.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,QAAQ;;;;;;CAgCF,CAAC;AAEpB,eAAO,MAAM,QAAQ;;;;;;CAQF,CAAC;AAEpB,eAAO,MAAM,YAAY;;;;;;CAIN,CAAC;AAEpB,eAAO,MAAM,YAAY;;;;;;;CAKN,CAAC;AAEpB,eAAO,MAAM,WAAW;;;;;;CAIL,CAAC;AAEpB,eAAO,MAAM,aAAa;;;;;;CAIP,CAAC;AAEpB,eAAO,MAAM,aAAa;;;;;;CAIP,CAAC;AAEpB,eAAO,MAAM,iBAAiB;;;;;;CAIX,CAAC;AAEpB,eAAO,MAAM,cAAc;;;;;;CAIR,CAAC;AAEpB,eAAO,MAAM,aAAa;;;;;;CAIP,CAAC;AAEpB,eAAO,MAAM,mBAAmB;;;;;;CAQb,CAAC;AAEpB,eAAO,MAAM,iBAAiB;;;;;;CAQX,CAAC;AAEpB,eAAO,MAAM,aAAa;;;;;;CAwBP,CAAC;AAEpB,eAAO,MAAM,aAAa;;;;;;CAQP,CAAC;AAEpB,eAAO,MAAM,QAAQ;;;;;;CAQF,CAAC;AAEpB,eAAO,MAAM,WAAW;;;;;;;;;CAWL,CAAC;AAEpB,eAAO,MAAM,QAAQ;;;;;;CAQF,CAAC"}
package/dist/logos.js CHANGED
@@ -143,6 +143,15 @@ export const logo_fuz_util = {
143
143
  }
144
144
  ]
145
145
  };
146
+ export const logo_fuz_host = {
147
+ label: 'a brown nautilus shell, spiraling inward',
148
+ fill: '#84522a',
149
+ paths: [
150
+ {
151
+ d: 'M53.74,61.53 53.57,62.00 53.27,62.41 52.85,62.72 52.37,62.91 51.84,62.96 51.32,62.88 50.81,62.66 50.39,62.33 50.06,61.93 49.82,61.44 49.70,60.94 49.68,60.40 49.78,59.86 49.97,59.36 50.27,58.90 50.66,58.50 51.09,58.19 51.59,57.95 52.14,57.81 52.67,57.76 53.21,57.80 53.75,57.93 54.28,58.16 54.73,58.44 55.15,58.80 55.51,59.22 55.82,59.70 56.05,60.24 56.21,60.81 56.28,61.36 56.27,61.98 56.17,62.55 55.82,63.54 55.22,64.44 54.39,65.21 53.43,65.75 52.35,66.07 51.18,66.15 50.06,65.98 48.97,65.57 48.02,64.98 47.24,64.26 46.54,63.31 46.05,62.30 45.73,61.18 45.62,60.00 45.73,58.79 46.02,57.68 46.35,56.89 46.72,56.23 47.17,55.60 47.68,55.01 48.27,54.47 48.92,53.98 50.27,53.25 51.78,52.79 53.40,52.62 54.30,52.66 55.07,52.77 56.61,53.20 57.48,53.59 58.20,53.99 59.54,55.01 60.71,56.29 61.67,57.79 62.05,58.62 62.35,59.49 62.72,61.17 62.80,62.13 62.80,63.10 62.57,64.90 62.31,65.88 61.96,66.84 61.09,68.54 59.92,70.12 59.17,70.91 58.48,71.52 57.58,72.19 56.79,72.69 55.06,73.52 53.95,73.90 52.99,74.15 50.99,74.42 49.76,74.44 48.52,74.35 47.27,74.14 46.03,73.82 44.80,73.39 43.61,72.84 42.45,72.17 41.34,71.39 40.29,70.51 39.31,69.52 38.41,68.44 37.73,67.46 37.00,66.21 36.48,65.11 35.95,63.72 35.60,62.52 35.26,60.78 35.11,58.98 35.14,57.15 35.32,55.57 35.72,53.72 36.21,52.16 36.86,50.62 37.65,49.13 38.58,47.70 39.65,46.34 40.86,45.06 42.19,43.88 43.64,42.80 45.21,41.85 46.87,41.03 48.63,40.36 50.78,39.76 52.68,39.43 54.97,39.26 56.97,39.30 59.31,39.57 61.32,40.01 63.31,40.64 65.26,41.45 67.15,42.44 68.98,43.62 70.71,44.97 72.34,46.49 73.85,48.18 75.22,50.02 76.43,52.00 77.32,53.75 78.21,55.96 78.92,58.27 79.42,60.66 79.71,63.13 79.78,65.64 79.63,68.18 79.24,70.74 78.61,73.28 77.75,75.80 76.65,78.26 75.32,80.64 74.04,82.55 72.29,84.74 70.68,86.46 68.54,88.38 66.62,89.85 64.14,91.43 61.49,92.81 58.70,93.96 55.77,94.86 52.73,95.51 49.61,95.90 46.42,96.00 43.19,95.81 39.94,95.33 36.71,94.55 33.52,93.47 30.91,92.34 27.86,90.71 25.41,89.13 22.59,86.97 20.38,84.97 18.70,83.23 17.50,81.85 16.36,80.40 15.28,78.90 14.25,77.34 13.30,75.73 12.40,74.06 11.58,72.34 10.60,69.98 9.95,68.16 9.38,66.30 8.89,64.40 8.49,62.47 8.16,60.51 7.93,58.52 7.78,56.51 7.72,54.48 7.76,52.44 7.88,50.39 8.10,48.33 8.41,46.27 8.82,44.21 9.71,40.80 10.37,38.76 11.13,36.75 11.98,34.76 12.93,32.79 13.97,30.86 15.11,28.96 17.20,25.89 19.06,23.53 20.55,21.81 22.13,20.16 23.79,18.57 25.54,17.04 27.36,15.58 29.26,14.20 31.24,12.89 33.98,11.28 36.11,10.17 38.31,9.15 40.56,8.22 42.87,7.39 45.23,6.66 47.64,6.03 50.09,5.48 53.41,4.87 55.95,4.51 58.53,4.24 61.14,4.07 63.79,4.00 66.46,4.04 69.15,4.21 71.86,4.49 74.58,4.91 77.29,5.46 80.00,6.15 81.79,6.69 84.46,7.62 87.09,8.70 89.68,9.94 91.37,10.85 91.75,11.23 92.03,11.68 92.20,12.20 92.28,12.77 92.25,13.41 91.93,14.82 91.65,15.59 90.87,17.25 89.82,19.03 88.55,20.90 87.10,22.83 84.68,25.74 82.95,27.65 80.30,30.39 78.55,32.08 76.05,34.32 73.83,36.12 72.01,37.35 71.09,37.81 70.46,37.93 67.90,36.68 65.47,35.74 63.00,35.04 60.10,34.53 58.03,34.35 55.58,34.34 53.57,34.49 51.21,34.85 48.92,35.40 46.72,36.14 44.63,37.06 42.33,38.34 40.51,39.60 38.83,41.01 37.30,42.54 35.72,44.46 34.74,45.90 33.71,47.71 32.87,49.57 32.20,51.47 31.71,53.40 31.40,55.34 31.27,57.28 31.31,59.19 31.52,61.06 31.89,62.89 32.41,64.64 33.21,66.60 34.03,68.18 34.99,69.65 36.05,71.02 37.43,72.46 38.48,73.39 39.59,74.23 40.74,74.97 42.18,75.74 43.41,76.27 44.91,76.78 46.18,77.10 47.70,77.34 48.97,77.45 50.48,77.44 51.97,77.31 53.41,77.04 54.81,76.66 56.15,76.15 57.42,75.54 58.61,74.82 59.54,74.16 60.41,73.43 61.21,72.65 62.09,71.65 62.73,70.78 63.41,69.67 63.90,68.73 64.38,67.56 64.69,66.57 64.97,65.37 65.13,64.17 65.19,62.97 65.14,61.79 64.98,60.64 64.73,59.51 64.38,58.43 63.95,57.40 63.43,56.43 62.83,55.52 62.16,54.68 61.43,53.91 60.65,53.22 59.82,52.61 58.95,52.08 58.05,51.64 57.12,51.29 56.18,51.03 55.08,50.83 54.13,50.75 53.04,50.77 51.98,50.90 50.95,51.14 49.30,51.77 48.54,52.19 47.71,52.75 46.48,53.88 45.95,54.51 45.42,55.28 45.04,55.98 44.68,56.82 44.44,57.56 44.25,58.43 44.16,59.30 44.16,60.16 44.25,61.00 44.42,61.82 44.80,62.92 45.39,64.03 46.13,65.00 47.00,65.81 47.97,66.46 49.10,66.96 50.27,67.24 51.44,67.31 52.75,67.13 53.96,66.70 55.02,66.05 55.95,65.15 56.63,64.11 57.06,62.90 57.20,61.67 57.04,60.49 56.84,59.87 56.52,59.23 56.17,58.71 55.71,58.21 55.19,57.79 54.63,57.47 54.04,57.23 53.43,57.09 52.83,57.04 52.18,57.09 51.56,57.24 50.99,57.48 50.48,57.81 50.00,58.24 49.62,58.74 49.34,59.28 49.17,59.85 49.11,60.42 49.14,60.98 49.28,61.51 49.50,61.99 49.82,62.45 50.21,62.82 50.65,63.11 51.13,63.29 51.61,63.38 52.13,63.36 52.61,63.25 53.05,63.04 53.44,62.73 53.74,62.36 53.95,61.92 54.06,61.40 54.02,60.90 53.84,60.42 53.56,60.03 53.17,59.74 52.72,59.58 52.24,59.57 51.81,59.71 51.52,59.91 51.21,60.25 51.01,60.59 50.90,60.96 50.88,61.32 50.95,61.67 51.10,62.00 51.32,62.26 51.63,62.49 52.00,62.63 52.38,62.66 52.75,62.60 53.10,62.44 53.40,62.20 53.62,61.88 53.74,61.53Z'
152
+ }
153
+ ]
154
+ };
146
155
  export const logo_tsv = {
147
156
  label: 'a pixelated orange quill drawing a precise line',
148
157
  fill: '#f4672f',
@@ -9,8 +9,8 @@
9
9
  * against `url`, as a browser resolves it.
10
10
  *
11
11
  * @param href - a link's `href`, absolute or relative
12
- * @param url - the current page's url, e.g. `page.url`
12
+ * @param url - the current page's url, e.g. SvelteKit's readonly `page.url`
13
13
  * @returns `false` for an `href` that isn't a valid url
14
14
  */
15
- export declare const href_is_current_page: (href: string, url: URL) => boolean;
15
+ export declare const href_is_current_page: (href: string, url: Pick<URL, "href" | "origin" | "pathname">) => boolean;
16
16
  //# sourceMappingURL=page_helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"page_helpers.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/page_helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,GAAI,MAAM,MAAM,EAAE,KAAK,GAAG,KAAG,OAO7D,CAAC"}
1
+ {"version":3,"file":"page_helpers.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/page_helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,GAChC,MAAM,MAAM,EACZ,KAAK,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC,KAC5C,OAOF,CAAC"}
@@ -11,13 +11,13 @@ const strip_trailing_slash = (pathname) => pathname.length > 1 && pathname.endsW
11
11
  * against `url`, as a browser resolves it.
12
12
  *
13
13
  * @param href - a link's `href`, absolute or relative
14
- * @param url - the current page's url, e.g. `page.url`
14
+ * @param url - the current page's url, e.g. SvelteKit's readonly `page.url`
15
15
  * @returns `false` for an `href` that isn't a valid url
16
16
  */
17
17
  export const href_is_current_page = (href, url) => {
18
- if (!URL.canParse(href, url))
18
+ if (!URL.canParse(href, url.href))
19
19
  return false;
20
- const target = new URL(href, url);
20
+ const target = new URL(href, url.href);
21
21
  return (target.origin === url.origin &&
22
22
  strip_trailing_slash(target.pathname) === strip_trailing_slash(url.pathname));
23
23
  };
@@ -1 +1 @@
1
- {"version":3,"file":"projects.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/projects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAkBxC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACpB;AAID,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,WAAW,CAa5C,CAAC"}
1
+ {"version":3,"file":"projects.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/projects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAmBxC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACpB;AAID,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,WAAW,CAc5C,CAAC"}
package/dist/projects.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  // TODO when fuz.dev is ready
3
3
  // logo_fuz,
4
- logo_fuz_ui, logo_fuz_code, logo_fuz_blog, logo_fuz_mastodon, logo_fuz_repos, logo_fuz_template, logo_fuz_css, logo_fuz_util, logo_gro, logo_svelte_docinfo, logo_fuz_app, logo_tsv } from './logos.js';
4
+ logo_fuz_ui, logo_fuz_code, logo_fuz_blog, logo_fuz_mastodon, logo_fuz_repos, logo_fuz_template, logo_fuz_css, logo_fuz_util, logo_fuz_host, logo_gro, logo_svelte_docinfo, logo_fuz_app, logo_tsv } from './logos.js';
5
5
  // TODO ideally this wouldn't duplicate metadata like descriptions, but adding fuz_repos to this repo is heavy
6
6
  // prettier-ignore
7
7
  export const project_items = [
@@ -15,6 +15,7 @@ export const project_items = [
15
15
  { name: 'fuz_repos', url: 'https://repos.fuz.dev/', logo: logo_fuz_repos, description: 'a tool for managing many repos', glyph: '🪄', color_class: 'color_a_50' },
16
16
  { name: 'svelte-docinfo', url: 'https://svelte-docinfo.fuz.dev/', logo: logo_svelte_docinfo, description: 'static analysis for TypeScript and Svelte', glyph: '📜', color_class: 'color_i_50' },
17
17
  { name: 'fuz_util', url: 'https://util.fuz.dev/', logo: logo_fuz_util, description: 'utility belt for JS', glyph: '🦕', color_class: 'color_f_50' },
18
+ { name: 'fuz_host', url: 'https://host.fuz.dev/', logo: logo_fuz_host, description: 'host APIs for JS: filesystem, processes, and the OS, one import across runtimes', glyph: '🐚', color_class: 'color_f_50' },
18
19
  { name: 'gro', url: 'https://github.com/fuzdev/gro', logo: logo_gro, description: 'task runner and toolkit extending SvelteKit', glyph: '🌰', color_class: 'color_f_50' },
19
20
  { name: 'tsv', url: 'https://tsv.fuz.dev/', logo: logo_tsv, description: 'precise language tools for TypeScript/JS, CSS, and Svelte in Rust', glyph: '🪶', color_class: 'color_h_50' },
20
21
  ];
package/dist/tome.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import type { Component } from 'svelte';
2
- import { z } from 'zod';
3
2
  export declare const tomes_context: {
4
3
  get: (error_message?: string) => () => Map<string, Tome>;
5
4
  get_maybe: () => (() => Map<string, Tome>) | undefined;
@@ -10,16 +9,29 @@ export declare const tome_context: {
10
9
  get_maybe: () => (() => Tome) | undefined;
11
10
  set: (value: () => Tome) => () => Tome;
12
11
  };
13
- export declare const Tome: z.ZodObject<{
14
- slug: z.ZodString;
15
- title: z.ZodOptional<z.ZodString>;
16
- category: z.ZodString;
17
- Component: z.ZodCustom<Component<any, any, string>, Component<any, any, string>>;
18
- related_tomes: z.ZodArray<z.ZodString>;
19
- related_modules: z.ZodArray<z.ZodString>;
20
- related_declarations: z.ZodArray<z.ZodString>;
21
- }, z.core.$strip>;
22
- export type Tome = z.infer<typeof Tome>;
12
+ /**
13
+ * A documentation page registered with `Docs` and looked up through `tomes_context`.
14
+ */
15
+ export interface Tome {
16
+ /**
17
+ * Stable identifier and URL path segment — must be a URL-safe slug
18
+ * (used directly as the route segment, the lookup key, and in
19
+ * `related_tomes` cross-references). Set `title` for the display label.
20
+ */
21
+ slug: string;
22
+ /**
23
+ * Human-readable display label shown in menus, headings, and links.
24
+ * Falls back to `slug` when omitted, so set `title` to give multi-word or
25
+ * specially cased tomes a readable label (e.g. `slug: 'vite-plugin'` →
26
+ * `title: 'vite plugin'`).
27
+ */
28
+ title?: string;
29
+ category: string;
30
+ Component: Component<any, any>;
31
+ related_tomes: Array<string>;
32
+ related_modules: Array<string>;
33
+ related_declarations: Array<string>;
34
+ }
23
35
  /**
24
36
  * @param hash - URL fragment to append, with or without the `#`
25
37
  */
@@ -1 +1 @@
1
- {"version":3,"file":"tome.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/tome.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,aAAa;2CAAwB,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;4BAAjB,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;uBAAjB,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,WAAjB,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;CAAG,CAAC;AAEvE,eAAO,MAAM,YAAY;2CAAwB,IAAI;4BAAJ,IAAI;uBAAJ,IAAI,WAAJ,IAAI;CAAG,CAAC;AAEzD,eAAO,MAAM,IAAI;;;;;;;;iBAoBf,CAAC;AACH,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC5B,MAAM,IAAI,GAAG,MAAM,EACnB,kBAA6B,EAC7B,OAAO,MAAM,KACX,MAIF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,IAAI,KAAG,MAAiC,CAAC;AAE7E,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,KAAG,IAK/C,CAAC"}
1
+ {"version":3,"file":"tome.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/tome.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAMxC,eAAO,MAAM,aAAa;2CAAwB,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;4BAAjB,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;uBAAjB,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,WAAjB,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;CAAG,CAAC;AAEvE,eAAO,MAAM,YAAY;2CAAwB,IAAI;4BAAJ,IAAI;uBAAJ,IAAI,WAAJ,IAAI;CAAG,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,IAAI;IACpB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC/B,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/B,oBAAoB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC5B,MAAM,IAAI,GAAG,MAAM,EACnB,kBAA6B,EAC7B,OAAO,MAAM,KACX,MAIF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,IAAI,KAAG,MAAiC,CAAC;AAE7E,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,KAAG,IAK/C,CAAC"}
package/dist/tome.js CHANGED
@@ -1,31 +1,9 @@
1
1
  import { resolve } from '$app/paths';
2
- import { z } from 'zod';
3
2
  import { ensure_start } from '@fuzdev/fuz_util/string.ts';
4
3
  import { create_context } from './context_helpers.js';
5
4
  import { DOCS_PATH_DEFAULT } from './docs_helpers.svelte.js';
6
5
  export const tomes_context = create_context();
7
6
  export const tome_context = create_context();
8
- export const Tome = z.object({
9
- /**
10
- * Stable identifier and URL path segment — must be a URL-safe slug
11
- * (used directly as the route segment, the lookup key, and in
12
- * `related_tomes` cross-references). Set `title` for the display label.
13
- */
14
- slug: z.string(),
15
- /**
16
- * Human-readable display label shown in menus, headings, and links.
17
- * Falls back to `slug` when omitted, so set `title` to give multi-word or
18
- * specially cased tomes a readable label (e.g. `slug: 'vite-plugin'` →
19
- * `title: 'vite plugin'`).
20
- */
21
- title: z.string().optional(),
22
- // TODO maybe now this makes sense with mdz? summary: z.string(),
23
- category: z.string(),
24
- Component: z.custom(),
25
- related_tomes: z.array(z.string()),
26
- related_modules: z.array(z.string()),
27
- related_declarations: z.array(z.string())
28
- });
29
7
  /**
30
8
  * @param hash - URL fragment to append, with or without the `#`
31
9
  */
@@ -21,7 +21,7 @@
21
21
  *
22
22
  * ```ts
23
23
  * // vite.config.ts
24
- * import {vite_plugin_pkg_json} from './vite_plugin_pkg_json.js';
24
+ * import {vite_plugin_pkg_json} from '@fuzdev/fuz_ui/vite_plugin_pkg_json.ts';
25
25
  * export default defineConfig({plugins: [vite_plugin_pkg_json(), sveltekit()]});
26
26
  * ```
27
27
  *
@@ -21,7 +21,7 @@
21
21
  *
22
22
  * ```ts
23
23
  * // vite.config.ts
24
- * import {vite_plugin_pkg_json} from './vite_plugin_pkg_json.js';
24
+ * import {vite_plugin_pkg_json} from '@fuzdev/fuz_ui/vite_plugin_pkg_json.ts';
25
25
  * export default defineConfig({plugins: [vite_plugin_pkg_json(), sveltekit()]});
26
26
  * ```
27
27
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fuzdev/fuz_ui",
3
- "version": "0.212.0",
3
+ "version": "0.214.0",
4
4
  "description": "Svelte UI library",
5
5
  "tagline": "friendly user zystem",
6
6
  "glyph": "🧶",
@@ -29,6 +29,10 @@
29
29
  "deploy": "gro deploy"
30
30
  },
31
31
  "type": "module",
32
+ "imports": {
33
+ "#lib/*": "./src/lib/*",
34
+ "#routes/*": "./src/routes/*"
35
+ },
32
36
  "engines": {
33
37
  "node": ">=24.14"
34
38
  },
@@ -36,12 +40,11 @@
36
40
  "@fuzdev/fuz_code": ">=0.46.0",
37
41
  "@fuzdev/fuz_css": ">=0.65.0",
38
42
  "@fuzdev/fuz_util": ">=0.72.0",
39
- "@fuzdev/gro": ">=0.204.0",
43
+ "@fuzdev/gro": ">=0.214.0",
40
44
  "@fuzdev/mdz": ">=0.2.0",
41
- "@sveltejs/kit": "^2.47.3",
45
+ "@sveltejs/kit": "^3",
42
46
  "esm-env": "^1",
43
- "svelte": "^5",
44
- "zod": "^4.1.12"
47
+ "svelte": "^5"
45
48
  },
46
49
  "peerDependenciesMeta": {
47
50
  "@fuzdev/fuz_code": {
@@ -55,39 +58,35 @@
55
58
  },
56
59
  "esm-env": {
57
60
  "optional": true
58
- },
59
- "zod": {
60
- "optional": true
61
61
  }
62
62
  },
63
63
  "devDependencies": {
64
64
  "@changesets/changelog-git": "^0.2.1",
65
65
  "@fuzdev/blake3-wasm": "^0.2.0",
66
- "@fuzdev/fuz_code": "^0.50.0",
67
- "@fuzdev/fuz_css": "^0.66.0",
66
+ "@fuzdev/fuz_code": "^0.52.1",
67
+ "@fuzdev/fuz_css": "^0.66.2",
68
68
  "@fuzdev/fuz_util": "^0.72.0",
69
- "@fuzdev/gro": "^0.213.0",
70
- "@fuzdev/mdz": "^0.3.0",
71
- "@ryanatkn/eslint-config": "^0.12.2",
72
- "@sveltejs/adapter-static": "^3.0.10",
73
- "@sveltejs/kit": "^2.69.1",
74
- "@sveltejs/package": "^2.5.7",
75
- "@sveltejs/vite-plugin-svelte": "^6.2.4",
69
+ "@fuzdev/gro": "^0.216.0",
70
+ "@fuzdev/mdz": "^0.4.0",
71
+ "@ryanatkn/eslint-config": "^0.13.0",
72
+ "@sveltejs/adapter-static": "^4.0.0",
73
+ "@sveltejs/kit": "^3.0.1",
74
+ "@sveltejs/package": "^3.0.0",
75
+ "@sveltejs/vite-plugin-svelte": "^7.3.1",
76
76
  "@types/node": "^24.10.1",
77
77
  "@webref/css": "^8.2.0",
78
78
  "eslint": "^9.39.4",
79
79
  "eslint-plugin-svelte": "^3.19.0",
80
80
  "esm-env": "^1.2.2",
81
81
  "jsdom": "^29.1.1",
82
- "svelte": "^5.56.4",
83
- "svelte-check": "^4.7.2",
84
- "svelte-docinfo": "^0.8.0",
82
+ "svelte": "^5.57.2",
83
+ "svelte-check": "^4.7.6",
84
+ "svelte-docinfo": "^0.11.0",
85
85
  "tslib": "^2.8.1",
86
- "typescript": "^5.9.3",
87
- "typescript-eslint": "^8.60.0",
88
- "vite": "^7.3.6",
89
- "vitest": "^5.0.0",
90
- "zod": "^4.3.6"
86
+ "typescript": "^6.0.3",
87
+ "typescript-eslint": "^8.71.1",
88
+ "vite": "^8.3.4",
89
+ "vitest": "^5.0.0"
91
90
  },
92
91
  "sideEffects": [
93
92
  "**/*.css"
@@ -15,6 +15,5 @@ import type { Attachment } from 'svelte/attachments';
15
15
  export const autofocus =
16
16
  (options?: FocusOptions): Attachment<HTMLElement | SVGElement> =>
17
17
  (el) => {
18
- // focusVisible missing from TS lib.dom.d.ts as of 5.9
19
- el.focus({ focusVisible: true, ...options } as FocusOptions);
18
+ el.focus({ focusVisible: true, ...options });
20
19
  };
package/src/lib/csp.ts CHANGED
@@ -65,7 +65,7 @@ export interface CreateCspDirectivesOptions {
65
65
  }
66
66
 
67
67
  /**
68
- * Builds a CSP directives map for use with SvelteKit's `kit.csp.directives` option.
68
+ * Builds a CSP directives map for use with SvelteKit's `csp.directives` option (passed to `sveltekit()`).
69
69
  *
70
70
  * Restrictive by default; opt into specific permissions via `extend` (append) or
71
71
  * `overrides` (replace). Designed to read as an audit log: every user-added source
package/src/lib/logos.ts CHANGED
@@ -160,6 +160,16 @@ export const logo_fuz_util = {
160
160
  ]
161
161
  } satisfies SvgData;
162
162
 
163
+ export const logo_fuz_host = {
164
+ label: 'a brown nautilus shell, spiraling inward',
165
+ fill: '#84522a',
166
+ paths: [
167
+ {
168
+ d: 'M53.74,61.53 53.57,62.00 53.27,62.41 52.85,62.72 52.37,62.91 51.84,62.96 51.32,62.88 50.81,62.66 50.39,62.33 50.06,61.93 49.82,61.44 49.70,60.94 49.68,60.40 49.78,59.86 49.97,59.36 50.27,58.90 50.66,58.50 51.09,58.19 51.59,57.95 52.14,57.81 52.67,57.76 53.21,57.80 53.75,57.93 54.28,58.16 54.73,58.44 55.15,58.80 55.51,59.22 55.82,59.70 56.05,60.24 56.21,60.81 56.28,61.36 56.27,61.98 56.17,62.55 55.82,63.54 55.22,64.44 54.39,65.21 53.43,65.75 52.35,66.07 51.18,66.15 50.06,65.98 48.97,65.57 48.02,64.98 47.24,64.26 46.54,63.31 46.05,62.30 45.73,61.18 45.62,60.00 45.73,58.79 46.02,57.68 46.35,56.89 46.72,56.23 47.17,55.60 47.68,55.01 48.27,54.47 48.92,53.98 50.27,53.25 51.78,52.79 53.40,52.62 54.30,52.66 55.07,52.77 56.61,53.20 57.48,53.59 58.20,53.99 59.54,55.01 60.71,56.29 61.67,57.79 62.05,58.62 62.35,59.49 62.72,61.17 62.80,62.13 62.80,63.10 62.57,64.90 62.31,65.88 61.96,66.84 61.09,68.54 59.92,70.12 59.17,70.91 58.48,71.52 57.58,72.19 56.79,72.69 55.06,73.52 53.95,73.90 52.99,74.15 50.99,74.42 49.76,74.44 48.52,74.35 47.27,74.14 46.03,73.82 44.80,73.39 43.61,72.84 42.45,72.17 41.34,71.39 40.29,70.51 39.31,69.52 38.41,68.44 37.73,67.46 37.00,66.21 36.48,65.11 35.95,63.72 35.60,62.52 35.26,60.78 35.11,58.98 35.14,57.15 35.32,55.57 35.72,53.72 36.21,52.16 36.86,50.62 37.65,49.13 38.58,47.70 39.65,46.34 40.86,45.06 42.19,43.88 43.64,42.80 45.21,41.85 46.87,41.03 48.63,40.36 50.78,39.76 52.68,39.43 54.97,39.26 56.97,39.30 59.31,39.57 61.32,40.01 63.31,40.64 65.26,41.45 67.15,42.44 68.98,43.62 70.71,44.97 72.34,46.49 73.85,48.18 75.22,50.02 76.43,52.00 77.32,53.75 78.21,55.96 78.92,58.27 79.42,60.66 79.71,63.13 79.78,65.64 79.63,68.18 79.24,70.74 78.61,73.28 77.75,75.80 76.65,78.26 75.32,80.64 74.04,82.55 72.29,84.74 70.68,86.46 68.54,88.38 66.62,89.85 64.14,91.43 61.49,92.81 58.70,93.96 55.77,94.86 52.73,95.51 49.61,95.90 46.42,96.00 43.19,95.81 39.94,95.33 36.71,94.55 33.52,93.47 30.91,92.34 27.86,90.71 25.41,89.13 22.59,86.97 20.38,84.97 18.70,83.23 17.50,81.85 16.36,80.40 15.28,78.90 14.25,77.34 13.30,75.73 12.40,74.06 11.58,72.34 10.60,69.98 9.95,68.16 9.38,66.30 8.89,64.40 8.49,62.47 8.16,60.51 7.93,58.52 7.78,56.51 7.72,54.48 7.76,52.44 7.88,50.39 8.10,48.33 8.41,46.27 8.82,44.21 9.71,40.80 10.37,38.76 11.13,36.75 11.98,34.76 12.93,32.79 13.97,30.86 15.11,28.96 17.20,25.89 19.06,23.53 20.55,21.81 22.13,20.16 23.79,18.57 25.54,17.04 27.36,15.58 29.26,14.20 31.24,12.89 33.98,11.28 36.11,10.17 38.31,9.15 40.56,8.22 42.87,7.39 45.23,6.66 47.64,6.03 50.09,5.48 53.41,4.87 55.95,4.51 58.53,4.24 61.14,4.07 63.79,4.00 66.46,4.04 69.15,4.21 71.86,4.49 74.58,4.91 77.29,5.46 80.00,6.15 81.79,6.69 84.46,7.62 87.09,8.70 89.68,9.94 91.37,10.85 91.75,11.23 92.03,11.68 92.20,12.20 92.28,12.77 92.25,13.41 91.93,14.82 91.65,15.59 90.87,17.25 89.82,19.03 88.55,20.90 87.10,22.83 84.68,25.74 82.95,27.65 80.30,30.39 78.55,32.08 76.05,34.32 73.83,36.12 72.01,37.35 71.09,37.81 70.46,37.93 67.90,36.68 65.47,35.74 63.00,35.04 60.10,34.53 58.03,34.35 55.58,34.34 53.57,34.49 51.21,34.85 48.92,35.40 46.72,36.14 44.63,37.06 42.33,38.34 40.51,39.60 38.83,41.01 37.30,42.54 35.72,44.46 34.74,45.90 33.71,47.71 32.87,49.57 32.20,51.47 31.71,53.40 31.40,55.34 31.27,57.28 31.31,59.19 31.52,61.06 31.89,62.89 32.41,64.64 33.21,66.60 34.03,68.18 34.99,69.65 36.05,71.02 37.43,72.46 38.48,73.39 39.59,74.23 40.74,74.97 42.18,75.74 43.41,76.27 44.91,76.78 46.18,77.10 47.70,77.34 48.97,77.45 50.48,77.44 51.97,77.31 53.41,77.04 54.81,76.66 56.15,76.15 57.42,75.54 58.61,74.82 59.54,74.16 60.41,73.43 61.21,72.65 62.09,71.65 62.73,70.78 63.41,69.67 63.90,68.73 64.38,67.56 64.69,66.57 64.97,65.37 65.13,64.17 65.19,62.97 65.14,61.79 64.98,60.64 64.73,59.51 64.38,58.43 63.95,57.40 63.43,56.43 62.83,55.52 62.16,54.68 61.43,53.91 60.65,53.22 59.82,52.61 58.95,52.08 58.05,51.64 57.12,51.29 56.18,51.03 55.08,50.83 54.13,50.75 53.04,50.77 51.98,50.90 50.95,51.14 49.30,51.77 48.54,52.19 47.71,52.75 46.48,53.88 45.95,54.51 45.42,55.28 45.04,55.98 44.68,56.82 44.44,57.56 44.25,58.43 44.16,59.30 44.16,60.16 44.25,61.00 44.42,61.82 44.80,62.92 45.39,64.03 46.13,65.00 47.00,65.81 47.97,66.46 49.10,66.96 50.27,67.24 51.44,67.31 52.75,67.13 53.96,66.70 55.02,66.05 55.95,65.15 56.63,64.11 57.06,62.90 57.20,61.67 57.04,60.49 56.84,59.87 56.52,59.23 56.17,58.71 55.71,58.21 55.19,57.79 54.63,57.47 54.04,57.23 53.43,57.09 52.83,57.04 52.18,57.09 51.56,57.24 50.99,57.48 50.48,57.81 50.00,58.24 49.62,58.74 49.34,59.28 49.17,59.85 49.11,60.42 49.14,60.98 49.28,61.51 49.50,61.99 49.82,62.45 50.21,62.82 50.65,63.11 51.13,63.29 51.61,63.38 52.13,63.36 52.61,63.25 53.05,63.04 53.44,62.73 53.74,62.36 53.95,61.92 54.06,61.40 54.02,60.90 53.84,60.42 53.56,60.03 53.17,59.74 52.72,59.58 52.24,59.57 51.81,59.71 51.52,59.91 51.21,60.25 51.01,60.59 50.90,60.96 50.88,61.32 50.95,61.67 51.10,62.00 51.32,62.26 51.63,62.49 52.00,62.63 52.38,62.66 52.75,62.60 53.10,62.44 53.40,62.20 53.62,61.88 53.74,61.53Z'
169
+ }
170
+ ]
171
+ } satisfies SvgData;
172
+
163
173
  export const logo_tsv = {
164
174
  label: 'a pixelated orange quill drawing a precise line',
165
175
  fill: '#f4672f',
@@ -14,12 +14,15 @@ const strip_trailing_slash = (pathname: string): string =>
14
14
  * against `url`, as a browser resolves it.
15
15
  *
16
16
  * @param href - a link's `href`, absolute or relative
17
- * @param url - the current page's url, e.g. `page.url`
17
+ * @param url - the current page's url, e.g. SvelteKit's readonly `page.url`
18
18
  * @returns `false` for an `href` that isn't a valid url
19
19
  */
20
- export const href_is_current_page = (href: string, url: URL): boolean => {
21
- if (!URL.canParse(href, url)) return false;
22
- const target = new URL(href, url);
20
+ export const href_is_current_page = (
21
+ href: string,
22
+ url: Pick<URL, 'href' | 'origin' | 'pathname'>
23
+ ): boolean => {
24
+ if (!URL.canParse(href, url.href)) return false;
25
+ const target = new URL(href, url.href);
23
26
  return (
24
27
  target.origin === url.origin &&
25
28
  strip_trailing_slash(target.pathname) === strip_trailing_slash(url.pathname)
@@ -10,6 +10,7 @@ import {
10
10
  logo_fuz_template,
11
11
  logo_fuz_css,
12
12
  logo_fuz_util,
13
+ logo_fuz_host,
13
14
  logo_gro,
14
15
  logo_svelte_docinfo,
15
16
  logo_fuz_app,
@@ -41,6 +42,7 @@ export const project_items: Array<ProjectItem> = [
41
42
  {name: 'fuz_repos', url: 'https://repos.fuz.dev/', logo: logo_fuz_repos, description: 'a tool for managing many repos', glyph: '🪄', color_class: 'color_a_50'},
42
43
  {name: 'svelte-docinfo', url: 'https://svelte-docinfo.fuz.dev/', logo: logo_svelte_docinfo, description: 'static analysis for TypeScript and Svelte', glyph: '📜', color_class: 'color_i_50'},
43
44
  {name: 'fuz_util', url: 'https://util.fuz.dev/', logo: logo_fuz_util, description: 'utility belt for JS', glyph: '🦕', color_class: 'color_f_50'},
45
+ {name: 'fuz_host', url: 'https://host.fuz.dev/', logo: logo_fuz_host, description: 'host APIs for JS: filesystem, processes, and the OS, one import across runtimes', glyph: '🐚', color_class: 'color_f_50'},
44
46
  {name: 'gro', url: 'https://github.com/fuzdev/gro', logo: logo_gro, description: 'task runner and toolkit extending SvelteKit', glyph: '🌰', color_class: 'color_f_50'},
45
47
  {name: 'tsv', url: 'https://tsv.fuz.dev/', logo: logo_tsv, description: 'precise language tools for TypeScript/JS, CSS, and Svelte in Rust', glyph: '🪶', color_class: 'color_h_50'},
46
48
  ];
package/src/lib/tome.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  import { resolve } from '$app/paths';
2
2
  import type { Component } from 'svelte';
3
- import { z } from 'zod';
4
3
  import { ensure_start } from '@fuzdev/fuz_util/string.ts';
5
4
 
6
5
  import { create_context } from './context_helpers.ts';
@@ -10,28 +9,30 @@ export const tomes_context = create_context<() => Map<string, Tome>>();
10
9
 
11
10
  export const tome_context = create_context<() => Tome>();
12
11
 
13
- export const Tome = z.object({
12
+ /**
13
+ * A documentation page registered with `Docs` and looked up through `tomes_context`.
14
+ */
15
+ export interface Tome {
14
16
  /**
15
17
  * Stable identifier and URL path segment — must be a URL-safe slug
16
18
  * (used directly as the route segment, the lookup key, and in
17
19
  * `related_tomes` cross-references). Set `title` for the display label.
18
20
  */
19
- slug: z.string(),
21
+ slug: string;
20
22
  /**
21
23
  * Human-readable display label shown in menus, headings, and links.
22
24
  * Falls back to `slug` when omitted, so set `title` to give multi-word or
23
25
  * specially cased tomes a readable label (e.g. `slug: 'vite-plugin'` →
24
26
  * `title: 'vite plugin'`).
25
27
  */
26
- title: z.string().optional(),
27
- // TODO maybe now this makes sense with mdz? summary: z.string(),
28
- category: z.string(),
29
- Component: z.custom<Component<any, any>>(),
30
- related_tomes: z.array(z.string()),
31
- related_modules: z.array(z.string()),
32
- related_declarations: z.array(z.string())
33
- });
34
- export type Tome = z.infer<typeof Tome>;
28
+ title?: string;
29
+ // TODO maybe now this makes sense with mdz? summary: string;
30
+ category: string;
31
+ Component: Component<any, any>;
32
+ related_tomes: Array<string>;
33
+ related_modules: Array<string>;
34
+ related_declarations: Array<string>;
35
+ }
35
36
 
36
37
  /**
37
38
  * @param hash - URL fragment to append, with or without the `#`