fibrae 0.3.1 → 0.3.2

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 (60) hide show
  1. package/dist/cli/vite-plugin.js +39 -0
  2. package/dist/cli/vite-plugin.js.map +1 -1
  3. package/dist/core.js +37 -10
  4. package/dist/core.js.map +1 -1
  5. package/dist/dom.d.ts +9 -0
  6. package/dist/dom.js +30 -4
  7. package/dist/dom.js.map +1 -1
  8. package/dist/fiber-commit.d.ts +2 -0
  9. package/dist/fiber-commit.js +171 -36
  10. package/dist/fiber-commit.js.map +1 -1
  11. package/dist/fiber-render.js +13 -27
  12. package/dist/fiber-render.js.map +1 -1
  13. package/dist/fiber-update.d.ts +1 -1
  14. package/dist/fiber-update.js +26 -11
  15. package/dist/fiber-update.js.map +1 -1
  16. package/dist/h.d.ts +65 -10
  17. package/dist/h.js +98 -22
  18. package/dist/h.js.map +1 -1
  19. package/dist/head.d.ts +64 -0
  20. package/dist/head.js +257 -0
  21. package/dist/head.js.map +1 -0
  22. package/dist/hydration-dev.d.ts +24 -0
  23. package/dist/hydration-dev.js +138 -0
  24. package/dist/hydration-dev.js.map +1 -0
  25. package/dist/index.d.ts +4 -1
  26. package/dist/index.js +2 -1
  27. package/dist/index.js.map +1 -1
  28. package/dist/jsx-runtime/index.d.ts +174 -9
  29. package/dist/jsx-runtime/index.js +2 -0
  30. package/dist/jsx-runtime/index.js.map +1 -1
  31. package/dist/mdx/index.d.ts +4 -4
  32. package/dist/mdx/index.js +1 -1
  33. package/dist/mdx/index.js.map +1 -1
  34. package/dist/mdx/parse.d.ts +1 -1
  35. package/dist/mdx/parse.js.map +1 -1
  36. package/dist/mdx/render.d.ts +6 -5
  37. package/dist/mdx/render.js +62 -64
  38. package/dist/mdx/render.js.map +1 -1
  39. package/dist/router/Link.js +7 -1
  40. package/dist/router/Link.js.map +1 -1
  41. package/dist/router/Navigator.d.ts +24 -0
  42. package/dist/router/Navigator.js +24 -0
  43. package/dist/router/Navigator.js.map +1 -1
  44. package/dist/router/RouterOutlet.js +28 -5
  45. package/dist/router/RouterOutlet.js.map +1 -1
  46. package/dist/router/index.d.ts +5 -1
  47. package/dist/router/index.js +3 -1
  48. package/dist/router/index.js.map +1 -1
  49. package/dist/server.js +7 -3
  50. package/dist/server.js.map +1 -1
  51. package/dist/shared.d.ts +34 -4
  52. package/dist/shared.js +12 -2
  53. package/dist/shared.js.map +1 -1
  54. package/dist/tracking.d.ts +3 -2
  55. package/dist/tracking.js +4 -1
  56. package/dist/tracking.js.map +1 -1
  57. package/dist/transition.d.ts +51 -0
  58. package/dist/transition.js +46 -0
  59. package/dist/transition.js.map +1 -0
  60. package/package.json +2 -2
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Transition service — keeps old UI visible during navigation.
3
+ *
4
+ * Provides an `isPending` atom that is true while a route loader is running.
5
+ * Components can subscribe to show loading indicators without Suspense fallback.
6
+ *
7
+ * When provided:
8
+ * - RouterOutlet sets isPending=true during loader execution
9
+ * - Suspense bypasses its threshold during transitions (no fallback flash)
10
+ * - Stale loaders are cancelled via Stream.switchMap
11
+ *
12
+ * Usage:
13
+ * ```tsx
14
+ * // Provide TransitionLive to your app
15
+ * render(<App />, root, { layer: TransitionLive })
16
+ *
17
+ * // Read isPending in any component
18
+ * const NavBar = () => Effect.gen(function* () {
19
+ * const { isPending } = yield* Transition
20
+ * const pending = yield* Atom.get(isPending)
21
+ * return <nav class={pending ? "loading" : ""}>...</nav>
22
+ * })
23
+ * ```
24
+ */
25
+ import * as Context from "effect/Context";
26
+ import * as Layer from "effect/Layer";
27
+ import { Atom } from "@effect-atom/atom";
28
+ // =============================================================================
29
+ // Service Tag
30
+ // =============================================================================
31
+ /**
32
+ * Context tag for the Transition service.
33
+ * When provided, RouterOutlet sets isPending during loader execution
34
+ * and Suspense bypasses its threshold during transitions.
35
+ */
36
+ export class Transition extends Context.Tag("fibrae/Transition")() {
37
+ }
38
+ // =============================================================================
39
+ // Layer
40
+ // =============================================================================
41
+ /**
42
+ * Live layer for the Transition service.
43
+ * Creates an isPending atom scoped to this layer.
44
+ */
45
+ export const TransitionLive = Layer.succeed(Transition, Transition.of({ isPending: Atom.make(false) }));
46
+ //# sourceMappingURL=transition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transition.js","sourceRoot":"","sources":["../src/transition.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAiBzC,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF;;;;GAIG;AACH,MAAM,OAAO,UAAW,SAAQ,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAiC;CAAG;AAEpG,gFAAgF;AAChF,QAAQ;AACR,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAA4B,KAAK,CAAC,OAAO,CAClE,UAAU,EACV,UAAU,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAC/C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fibrae",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "description": "Effect-first JSX renderer with automatic reactivity",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -76,7 +76,7 @@
76
76
  "@types/hast": "^3.0.4",
77
77
  "@types/mdast": "^4.0.0",
78
78
  "@types/node": "^24.10.0",
79
- "@typescript/native-preview": "^7.0.0-dev.20260314.1",
79
+ "@typescript/native-preview": "catalog:",
80
80
  "typescript": "catalog:",
81
81
  "vite": "^8.0.0"
82
82
  },