ugly-app 0.1.603 → 0.1.604

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/CLAUDE.md CHANGED
@@ -42,6 +42,37 @@ was that `trackDoc` (singular) never sent an **initial snapshot** — it only re
42
42
  mutations — so any static doc looked dead regardless of its id. Fixed in `createWorkersApp.ts`:
43
43
  `trackDoc` now `pgGetDoc`-snapshots before subscribing, exactly like `trackDocs`.)
44
44
 
45
+ ## Critical rule: client navigation (no bare `<a href>` for routes)
46
+
47
+ This is a **single-page app**. A plain `<a href="/podcast">` triggers a full
48
+ document reload — the screen goes white and everything repaints, exactly like
49
+ loading a new page. That defeats the router's smooth transitions and reloads all
50
+ JS/CSS.
51
+
52
+ **For any internal route, navigate through the router — never a bare anchor:**
53
+
54
+ ```tsx
55
+ // shared/router.ts already exports a typed Link bound to your pages:
56
+ import { Link, useRouter } from '../router';
57
+
58
+ // Declarative — renders a real <a> (right-click / cmd-click / SEO still work)
59
+ // but intercepts a plain left-click and does an in-app transition:
60
+ <Link to="podcast" params={{}}>Listen</Link>
61
+ <Link to="article/:id" params={{ id }}>Read</Link>
62
+
63
+ // Imperative (onClick handlers, after some async work, etc.):
64
+ const router = useRouter();
65
+ router.push('article/:id', { id });
66
+ ```
67
+
68
+ - `to` / `params` are **type-checked** against the pages in `shared/pages.ts`.
69
+ - `Link` is returned from `createRouter()` (see `templates/client/router.ts`); a
70
+ standalone `Link` is also exported from `ugly-app/client` (pass `router=` or
71
+ rely on `<RouterProvider>` context).
72
+ - A bare `<a href>` is correct **only** for: external/cross-origin links,
73
+ `target="_blank"`/`download`, and same-page hash anchors (`#section`) — these
74
+ are not SPA route changes.
75
+
45
76
  ## Commands
46
77
  - `npm run build` — Build TypeScript to dist
47
78
  - `npm run dev` — Start dev server (requires ugly.bot tunnel)
@@ -1,2 +1,2 @@
1
- export declare const CLI_VERSION = "0.1.603";
1
+ export declare const CLI_VERSION = "0.1.604";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // Auto-generated by prebuild — do not edit manually
2
- export const CLI_VERSION = "0.1.603";
2
+ export const CLI_VERSION = "0.1.604";
3
3
  //# sourceMappingURL=version.js.map
@@ -49,6 +49,27 @@ export declare function createRouter<Pages extends PageRegistry>(config: {
49
49
  renderPage?: (state: RouterStateRaw) => ReactElement;
50
50
  }) => ReactElement;
51
51
  useRouter: () => RouterContextValue<Pages>;
52
+ /**
53
+ * Typed SPA link bound to this router. Renders a real `<a>` (so right-click,
54
+ * cmd/ctrl-click and SEO keep working) but intercepts a plain left-click and
55
+ * routes it through `push`/`replace` — no full-page reload. `to`/`params` are
56
+ * type-checked against the app's registered pages; no `router` prop needed.
57
+ *
58
+ * Use this instead of a bare `<a href="/route">`, which triggers a full
59
+ * document reload (white flash + repaint).
60
+ */
61
+ Link: <K extends keyof Pages & string>(props: {
62
+ to: K;
63
+ params: PageParams<Pages[K]>;
64
+ replace?: boolean;
65
+ children: ReactNode;
66
+ className?: string;
67
+ style?: CSSProperties;
68
+ target?: React.HTMLAttributeAnchorTarget;
69
+ 'aria-label'?: string;
70
+ 'data-id'?: string;
71
+ onClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;
72
+ }) => ReactElement;
52
73
  };
53
74
  /**
54
75
  * Sugar for the common case: lazy-imports a React component and renders it
@@ -78,13 +99,25 @@ export declare function lazyPage<Params extends Record<string, unknown>>(factory
78
99
  export declare function lazyPageLoader<Params extends Record<string, unknown>>(factory: () => Promise<{
79
100
  default: PageEntry<Params>;
80
101
  }>): PageEntry<Params>;
102
+ /**
103
+ * Standalone SPA link. Prefer the typed `Link` returned by `createRouter()`
104
+ * (no `router` prop, `to`/`params` checked against your pages). This variant
105
+ * exists for code that imports `Link` directly from `ugly-app/client`; if you
106
+ * omit `router` it falls back to the nearest `<RouterProvider>` via context.
107
+ *
108
+ * Either way it renders a real `<a>` but intercepts a plain left-click and
109
+ * routes through the router — use it instead of a bare `<a href>`, which does
110
+ * a full-page reload (white flash + repaint).
111
+ */
81
112
  export declare function Link<Pages extends PageRegistry, K extends keyof Pages & string>(props: {
82
- router: RouterContextValue<Pages>;
113
+ /** Optional — falls back to the enclosing <RouterProvider> when omitted. */
114
+ router?: RouterContextValue<Pages>;
83
115
  to: K;
84
116
  params: PageParams<Pages[K]>;
85
117
  replace?: boolean;
86
118
  children: ReactNode;
87
119
  className?: string;
88
120
  style?: CSSProperties;
121
+ target?: React.HTMLAttributeAnchorTarget;
89
122
  }): ReactElement;
90
123
  //# sourceMappingURL=Router.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../../src/client/Router.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../../src/client/Router.tsx"],"names":[],"mappings":"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"}
@@ -290,7 +290,37 @@ export function createRouter(config) {
290
290
  throw new Error('useRouter() must be used inside <RouterProvider>');
291
291
  return ctx;
292
292
  }
293
- return { RouterProvider, RouterView, useRouter };
293
+ // ── Link ────────────────────────────────────────────────────────────────────
294
+ // Typed, context-bound SPA link. Prefer this over a bare `<a href>` for
295
+ // internal navigation — a raw anchor does a full document reload (white flash
296
+ // + repaint); this routes through the router and transitions smoothly.
297
+ function Link(props) {
298
+ const router = useRouter();
299
+ const href = buildUrl(props.to, props.params);
300
+ function handleClick(e) {
301
+ props.onClick?.(e);
302
+ // Let the browser handle anything that isn't a plain left-click, plus
303
+ // new-tab/window intents and explicit non-self targets.
304
+ if (e.defaultPrevented ||
305
+ e.button !== 0 ||
306
+ e.metaKey ||
307
+ e.ctrlKey ||
308
+ e.shiftKey ||
309
+ e.altKey ||
310
+ (props.target && props.target !== '_self')) {
311
+ return;
312
+ }
313
+ e.preventDefault();
314
+ if (props.replace) {
315
+ router.replace(props.to, props.params);
316
+ }
317
+ else {
318
+ router.push(props.to, props.params);
319
+ }
320
+ }
321
+ return (_jsx("a", { href: href, onClick: handleClick, className: props.className, style: props.style, target: props.target, "aria-label": props['aria-label'], "data-id": props['data-id'], children: props.children }));
322
+ }
323
+ return { RouterProvider, RouterView, useRouter, Link };
294
324
  }
295
325
  // ─── lazyPage ─────────────────────────────────────────────────────────────────
296
326
  /**
@@ -329,19 +359,42 @@ export function lazyPageLoader(factory) {
329
359
  };
330
360
  }
331
361
  // ─── Link ─────────────────────────────────────────────────────────────────────
362
+ /**
363
+ * Standalone SPA link. Prefer the typed `Link` returned by `createRouter()`
364
+ * (no `router` prop, `to`/`params` checked against your pages). This variant
365
+ * exists for code that imports `Link` directly from `ugly-app/client`; if you
366
+ * omit `router` it falls back to the nearest `<RouterProvider>` via context.
367
+ *
368
+ * Either way it renders a real `<a>` but intercepts a plain left-click and
369
+ * routes through the router — use it instead of a bare `<a href>`, which does
370
+ * a full-page reload (white flash + repaint).
371
+ */
332
372
  export function Link(props) {
373
+ const ctxRouter = useContext(RouterContext);
374
+ const router = (props.router ??
375
+ ctxRouter);
376
+ if (!router) {
377
+ throw new Error('Link requires a `router` prop or an enclosing <RouterProvider>');
378
+ }
333
379
  const href = buildUrl(props.to, props.params);
334
380
  function handleClick(e) {
335
- if (e.ctrlKey || e.metaKey)
381
+ if (e.defaultPrevented ||
382
+ e.button !== 0 ||
383
+ e.metaKey ||
384
+ e.ctrlKey ||
385
+ e.shiftKey ||
386
+ e.altKey ||
387
+ (props.target && props.target !== '_self')) {
336
388
  return;
389
+ }
337
390
  e.preventDefault();
338
391
  if (props.replace) {
339
- props.router.replace(props.to, props.params);
392
+ router.replace(props.to, props.params);
340
393
  }
341
394
  else {
342
- props.router.push(props.to, props.params);
395
+ router.push(props.to, props.params);
343
396
  }
344
397
  }
345
- return (_jsx("a", { href: href, onClick: handleClick, className: props.className, style: props.style, children: props.children }));
398
+ return (_jsx("a", { href: href, onClick: handleClick, className: props.className, style: props.style, target: props.target, children: props.children }));
346
399
  }
347
400
  //# sourceMappingURL=Router.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Router.js","sourceRoot":"","sources":["../../src/client/Router.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Router.js","sourceRoot":"","sources":["../../src/client/Router.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ugly-app",
3
- "version": "0.1.603",
3
+ "version": "0.1.604",
4
4
  "type": "module",
5
5
  "main": "./dist/server/index.js",
6
6
  "exports": {
@@ -1,2 +1,2 @@
1
1
  // Auto-generated by prebuild — do not edit manually
2
- export const CLI_VERSION = "0.1.603";
2
+ export const CLI_VERSION = "0.1.604";
@@ -228,6 +228,27 @@ export function createRouter<Pages extends PageRegistry>(config: {
228
228
  renderPage?: (state: RouterStateRaw) => ReactElement;
229
229
  }) => ReactElement;
230
230
  useRouter: () => RouterContextValue<Pages>;
231
+ /**
232
+ * Typed SPA link bound to this router. Renders a real `<a>` (so right-click,
233
+ * cmd/ctrl-click and SEO keep working) but intercepts a plain left-click and
234
+ * routes it through `push`/`replace` — no full-page reload. `to`/`params` are
235
+ * type-checked against the app's registered pages; no `router` prop needed.
236
+ *
237
+ * Use this instead of a bare `<a href="/route">`, which triggers a full
238
+ * document reload (white flash + repaint).
239
+ */
240
+ Link: <K extends keyof Pages & string>(props: {
241
+ to: K;
242
+ params: PageParams<Pages[K]>;
243
+ replace?: boolean;
244
+ children: ReactNode;
245
+ className?: string;
246
+ style?: CSSProperties;
247
+ target?: React.HTMLAttributeAnchorTarget;
248
+ 'aria-label'?: string;
249
+ 'data-id'?: string;
250
+ onClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;
251
+ }) => ReactElement;
231
252
  } {
232
253
  // ── RouterProvider ──────────────────────────────────────────────────────────
233
254
 
@@ -552,7 +573,65 @@ export function createRouter<Pages extends PageRegistry>(config: {
552
573
  return ctx as unknown as RouterContextValue<Pages>;
553
574
  }
554
575
 
555
- return { RouterProvider, RouterView, useRouter };
576
+ // ── Link ────────────────────────────────────────────────────────────────────
577
+ // Typed, context-bound SPA link. Prefer this over a bare `<a href>` for
578
+ // internal navigation — a raw anchor does a full document reload (white flash
579
+ // + repaint); this routes through the router and transitions smoothly.
580
+
581
+ function Link<K extends keyof Pages & string>(props: {
582
+ to: K;
583
+ params: PageParams<Pages[K]>;
584
+ replace?: boolean;
585
+ children: ReactNode;
586
+ className?: string;
587
+ style?: CSSProperties;
588
+ target?: React.HTMLAttributeAnchorTarget;
589
+ 'aria-label'?: string;
590
+ 'data-id'?: string;
591
+ onClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;
592
+ }): ReactElement {
593
+ const router = useRouter();
594
+ const href = buildUrl(props.to, props.params as Record<string, unknown>);
595
+
596
+ function handleClick(e: React.MouseEvent<HTMLAnchorElement>) {
597
+ props.onClick?.(e);
598
+ // Let the browser handle anything that isn't a plain left-click, plus
599
+ // new-tab/window intents and explicit non-self targets.
600
+ if (
601
+ e.defaultPrevented ||
602
+ e.button !== 0 ||
603
+ e.metaKey ||
604
+ e.ctrlKey ||
605
+ e.shiftKey ||
606
+ e.altKey ||
607
+ (props.target && props.target !== '_self')
608
+ ) {
609
+ return;
610
+ }
611
+ e.preventDefault();
612
+ if (props.replace) {
613
+ router.replace(props.to, props.params);
614
+ } else {
615
+ router.push(props.to, props.params);
616
+ }
617
+ }
618
+
619
+ return (
620
+ <a
621
+ href={href}
622
+ onClick={handleClick}
623
+ className={props.className}
624
+ style={props.style}
625
+ target={props.target}
626
+ aria-label={props['aria-label']}
627
+ data-id={props['data-id']}
628
+ >
629
+ {props.children}
630
+ </a>
631
+ );
632
+ }
633
+
634
+ return { RouterProvider, RouterView, useRouter, Link };
556
635
  }
557
636
 
558
637
  // ─── lazyPage ─────────────────────────────────────────────────────────────────
@@ -601,27 +680,57 @@ export function lazyPageLoader<Params extends Record<string, unknown>>(
601
680
 
602
681
  // ─── Link ─────────────────────────────────────────────────────────────────────
603
682
 
683
+ /**
684
+ * Standalone SPA link. Prefer the typed `Link` returned by `createRouter()`
685
+ * (no `router` prop, `to`/`params` checked against your pages). This variant
686
+ * exists for code that imports `Link` directly from `ugly-app/client`; if you
687
+ * omit `router` it falls back to the nearest `<RouterProvider>` via context.
688
+ *
689
+ * Either way it renders a real `<a>` but intercepts a plain left-click and
690
+ * routes through the router — use it instead of a bare `<a href>`, which does
691
+ * a full-page reload (white flash + repaint).
692
+ */
604
693
  export function Link<
605
694
  Pages extends PageRegistry,
606
695
  K extends keyof Pages & string,
607
696
  >(props: {
608
- router: RouterContextValue<Pages>;
697
+ /** Optional — falls back to the enclosing <RouterProvider> when omitted. */
698
+ router?: RouterContextValue<Pages>;
609
699
  to: K;
610
700
  params: PageParams<Pages[K]>;
611
701
  replace?: boolean;
612
702
  children: ReactNode;
613
703
  className?: string;
614
704
  style?: CSSProperties;
705
+ target?: React.HTMLAttributeAnchorTarget;
615
706
  }): ReactElement {
707
+ const ctxRouter = useContext(RouterContext);
708
+ const router = (props.router ??
709
+ ctxRouter) as RouterContextValue<Pages> | null;
710
+ if (!router) {
711
+ throw new Error(
712
+ 'Link requires a `router` prop or an enclosing <RouterProvider>',
713
+ );
714
+ }
616
715
  const href = buildUrl(props.to, props.params as Record<string, unknown>);
617
716
 
618
717
  function handleClick(e: React.MouseEvent<HTMLAnchorElement>) {
619
- if (e.ctrlKey || e.metaKey) return;
718
+ if (
719
+ e.defaultPrevented ||
720
+ e.button !== 0 ||
721
+ e.metaKey ||
722
+ e.ctrlKey ||
723
+ e.shiftKey ||
724
+ e.altKey ||
725
+ (props.target && props.target !== '_self')
726
+ ) {
727
+ return;
728
+ }
620
729
  e.preventDefault();
621
730
  if (props.replace) {
622
- props.router.replace(props.to, props.params);
731
+ router!.replace(props.to, props.params);
623
732
  } else {
624
- props.router.push(props.to, props.params);
733
+ router!.push(props.to, props.params);
625
734
  }
626
735
  }
627
736
 
@@ -631,6 +740,7 @@ export function Link<
631
740
  onClick={handleClick}
632
741
  className={props.className}
633
742
  style={props.style}
743
+ target={props.target}
634
744
  >
635
745
  {props.children}
636
746
  </a>
@@ -2,7 +2,10 @@ import { createRouter } from 'ugly-app/client';
2
2
  import { pages } from '../shared/pages';
3
3
  import { allPages } from './allPages';
4
4
 
5
- export const { RouterProvider, RouterView, useRouter } = createRouter({
5
+ // `Link` is the typed SPA link for internal navigation. Use it (or
6
+ // `useRouter().push(...)`) instead of a bare `<a href="/route">`, which does a
7
+ // full-page reload (white flash + repaint) instead of a smooth transition.
8
+ export const { RouterProvider, RouterView, useRouter, Link } = createRouter({
6
9
  pages,
7
10
  allPages,
8
11
  });