@void/svelte 0.7.4 → 0.7.5

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/README.md CHANGED
@@ -34,6 +34,7 @@ Main runtime APIs live at `@void/svelte`:
34
34
 
35
35
  - `Link`
36
36
  - `useRouter()`
37
+ - `useParams()`
37
38
  - `useNavigation()`
38
39
  - `useShared()`
39
40
  - `useForm()`
package/dist/plugin.mjs CHANGED
@@ -387,6 +387,7 @@ export async function renderIslandPage(pageObj, assetTags) {
387
387
  pageProps: pageObj.props,
388
388
  shared: pageObj.shared || {},
389
389
  errors: pageObj.errors || {},
390
+ params: pageObj.params || {},
390
391
  router: null,
391
392
  stores: null,
392
393
  },
@@ -548,7 +549,8 @@ export async function renderPage(pageObj, assetTags) {
548
549
  pageProps: pageObj.props,
549
550
  shared: pageObj.shared || {},
550
551
  errors: pageObj.errors || {},
551
- router: createSsrRouter(pageObj.url || "/"),
552
+ params: pageObj.params || {},
553
+ router: createSsrRouter(pageObj.url || "/", pageObj.params || {}),
552
554
  routeUrl: pageObj.url || "/",
553
555
  navigation: idleNavigationState(),
554
556
  stores: null,
@@ -588,7 +590,9 @@ const propsStore = writable({});
588
590
  const layoutsStore = writable([]);
589
591
  const sharedStore = writable({});
590
592
  const errorsStore = writable({});
593
+ const paramsStore = writable({});
591
594
  let routeUrl = window.location.pathname + window.location.search + window.location.hash;
595
+ let routeParams = {};
592
596
  const routeStore = writable(routeUrl);
593
597
  const navigationStore = writable(idleNavigationState());
594
598
 
@@ -603,6 +607,8 @@ const { router, initialPageData, initialComponent, initialLayouts, start } =
603
607
  propsStore.set(pageData.props);
604
608
  sharedStore.update((s) => ({ ...s, ...(pageData.shared || {}) }));
605
609
  errorsStore.set(pageData.errors || {});
610
+ routeParams = pageData.params || {};
611
+ paramsStore.set(routeParams);
606
612
  layoutsStore.set(layouts);
607
613
  pageStore.set(comp);
608
614
  },
@@ -625,7 +631,7 @@ const { router, initialPageData, initialComponent, initialLayouts, start } =
625
631
  },
626
632
  });
627
633
 
628
- const reactiveRouter = createRouterFacade(router, () => routeUrl);
634
+ const reactiveRouter = createRouterFacade(router, () => routeUrl, () => routeParams);
629
635
 
630
636
  setActionRouter(reactiveRouter);
631
637
 
@@ -634,6 +640,8 @@ propsStore.set(initialPageData.props);
634
640
  layoutsStore.set(initialLayouts);
635
641
  sharedStore.set(initialPageData.shared || {});
636
642
  errorsStore.set(initialPageData.errors || {});
643
+ routeParams = initialPageData.params || {};
644
+ paramsStore.set(routeParams);
637
645
 
638
646
  const appEl = document.getElementById("app");
639
647
  hydrate(App, {
@@ -644,6 +652,7 @@ hydrate(App, {
644
652
  pageProps: initialPageData.props,
645
653
  shared: initialPageData.shared || {},
646
654
  errors: initialPageData.errors || {},
655
+ params: initialPageData.params || {},
647
656
  router,
648
657
  routeUrl,
649
658
  navigation: idleNavigationState(),
@@ -653,6 +662,7 @@ hydrate(App, {
653
662
  layouts: layoutsStore,
654
663
  shared: sharedStore,
655
664
  errors: errorsStore,
665
+ params: paramsStore,
656
666
  route: routeStore,
657
667
  navigation: navigationStore,
658
668
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@void/svelte",
3
- "version": "0.7.4",
3
+ "version": "0.7.5",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/voidzero-dev/void.git",
@@ -44,12 +44,12 @@
44
44
  "svelte": "^5.55.5",
45
45
  "vite": "npm:@voidzero-dev/vite-plus-core@0.1.20",
46
46
  "vite-plus": "^0.1.20",
47
- "void": "0.7.4"
47
+ "void": "0.7.5"
48
48
  },
49
49
  "peerDependencies": {
50
50
  "svelte": "^5.0.0",
51
51
  "vite": "npm:@voidzero-dev/vite-plus-core@0.1.20",
52
- "void": "0.7.4"
52
+ "void": "0.7.5"
53
53
  },
54
54
  "scripts": {
55
55
  "build": "vp pack",
@@ -13,6 +13,7 @@
13
13
  pageProps: props.pageProps,
14
14
  shared: props.shared,
15
15
  errors: props.errors,
16
+ params: props.params,
16
17
  router: props.router,
17
18
  routeUrl: props.routeUrl,
18
19
  navigation: props.navigation,
@@ -25,9 +26,10 @@
25
26
  let currentPageProps = $state(init.pageProps);
26
27
  let shared = $state(init.shared);
27
28
  let errors = $state(init.errors);
29
+ let params = $state(init.params || {});
28
30
  let routeUrl = $state(init.routeUrl || "/");
29
31
  let navigation = $state(init.navigation || idleNavigationState());
30
- const router = createRouterFacade(init.router, () => routeUrl);
32
+ const router = createRouterFacade(init.router, () => routeUrl, () => params);
31
33
 
32
34
  // Capitalized alias for dynamic component rendering
33
35
  let Page = $derived(currentPage);
@@ -39,6 +41,9 @@
39
41
  setContext("__void_errors", {
40
42
  get value() { return errors; },
41
43
  });
44
+ setContext("__void_params", {
45
+ get value() { return params; },
46
+ });
42
47
  setContext("__void_router", router);
43
48
  setContext("__void_navigation", {
44
49
  get value() { return navigation; },
@@ -54,6 +59,7 @@
54
59
  init.stores.layouts.subscribe((v) => { currentLayouts = v; }),
55
60
  init.stores.shared.subscribe((v) => { shared = v; }),
56
61
  init.stores.errors.subscribe((v) => { errors = v; }),
62
+ init.stores.params.subscribe((v) => { params = v; }),
57
63
  init.stores.route.subscribe((v) => { routeUrl = v; }),
58
64
  init.stores.navigation.subscribe((v) => { navigation = v; }),
59
65
  ];
@@ -1,5 +1,6 @@
1
1
  export { default as Link } from './Link.svelte';
2
2
  export { useRouter } from './use-router.ts';
3
+ export { useParams } from './use-params.ts';
3
4
  export { useShared } from './use-shared.ts';
4
5
  export { useForm } from './use-form.svelte.ts';
5
6
  export { useNavigation } from './use-navigation.ts';
@@ -0,0 +1,9 @@
1
+ import { getContext } from 'svelte';
2
+
3
+ export function useParams<T extends Record<string, string> = Record<string, string>>(): T {
4
+ const ctx = getContext<{ value: T }>('__void_params');
5
+ if (!ctx) {
6
+ throw new Error('useParams(): must be used inside a Void page.');
7
+ }
8
+ return ctx.value;
9
+ }