@typed/ui 1.0.0-beta.4 → 1.0.0-beta.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.
Files changed (157) hide show
  1. package/README.md +53 -9
  2. package/dist/Alert.d.ts +78 -0
  3. package/dist/Alert.d.ts.map +1 -0
  4. package/dist/Alert.js +37 -0
  5. package/dist/Button.d.ts +144 -0
  6. package/dist/Button.d.ts.map +1 -0
  7. package/dist/Button.js +38 -0
  8. package/dist/Carousel.d.ts +547 -0
  9. package/dist/Carousel.d.ts.map +1 -0
  10. package/dist/Carousel.js +387 -0
  11. package/dist/Checkbox.d.ts +203 -0
  12. package/dist/Checkbox.d.ts.map +1 -0
  13. package/dist/Checkbox.js +140 -0
  14. package/dist/Collection.d.ts +254 -0
  15. package/dist/Collection.d.ts.map +1 -0
  16. package/dist/Collection.js +218 -0
  17. package/dist/Combobox.d.ts +516 -0
  18. package/dist/Combobox.d.ts.map +1 -0
  19. package/dist/Combobox.js +371 -0
  20. package/dist/Component.d.ts +127 -0
  21. package/dist/Component.d.ts.map +1 -0
  22. package/dist/Component.js +60 -0
  23. package/dist/Composite.d.ts +823 -0
  24. package/dist/Composite.d.ts.map +1 -0
  25. package/dist/Composite.js +615 -0
  26. package/dist/Dialog.d.ts +544 -0
  27. package/dist/Dialog.d.ts.map +1 -0
  28. package/dist/Dialog.js +355 -0
  29. package/dist/Disclosure.d.ts +219 -0
  30. package/dist/Disclosure.d.ts.map +1 -0
  31. package/dist/Disclosure.js +128 -0
  32. package/dist/Dom/Events.d.ts +122 -0
  33. package/dist/Dom/Events.d.ts.map +1 -0
  34. package/dist/Dom/Events.js +192 -0
  35. package/dist/Dom/Props.d.ts +161 -0
  36. package/dist/Dom/Props.d.ts.map +1 -0
  37. package/dist/Dom/Props.js +110 -0
  38. package/dist/Dom/Refs.d.ts +58 -0
  39. package/dist/Dom/Refs.d.ts.map +1 -0
  40. package/dist/Dom/Refs.js +61 -0
  41. package/dist/Dom/Render.d.ts +59 -0
  42. package/dist/Dom/Render.d.ts.map +1 -0
  43. package/dist/Dom/Render.js +71 -0
  44. package/dist/Dom/Types.d.ts +570 -0
  45. package/dist/Dom/Types.d.ts.map +1 -0
  46. package/dist/Dom/Types.js +1 -0
  47. package/dist/Dom/index.d.ts +20 -0
  48. package/dist/Dom/index.d.ts.map +1 -0
  49. package/dist/Dom/index.js +8 -0
  50. package/dist/Dom.d.ts +14 -0
  51. package/dist/Dom.d.ts.map +1 -0
  52. package/dist/Dom.js +13 -0
  53. package/dist/Focusable.d.ts +85 -0
  54. package/dist/Focusable.d.ts.map +1 -0
  55. package/dist/Focusable.js +35 -0
  56. package/dist/Form.d.ts +1695 -0
  57. package/dist/Form.d.ts.map +1 -0
  58. package/dist/Form.js +987 -0
  59. package/dist/Grid.d.ts +569 -0
  60. package/dist/Grid.d.ts.map +1 -0
  61. package/dist/Grid.js +379 -0
  62. package/dist/Group.d.ts +147 -0
  63. package/dist/Group.d.ts.map +1 -0
  64. package/dist/Group.js +63 -0
  65. package/dist/Heading.d.ts +86 -0
  66. package/dist/Heading.d.ts.map +1 -0
  67. package/dist/Heading.js +48 -0
  68. package/dist/Hovercard.d.ts +297 -0
  69. package/dist/Hovercard.d.ts.map +1 -0
  70. package/dist/Hovercard.js +188 -0
  71. package/dist/HttpRouter.d.ts +129 -6
  72. package/dist/HttpRouter.d.ts.map +1 -1
  73. package/dist/HttpRouter.js +196 -53
  74. package/dist/Link.d.ts +67 -28
  75. package/dist/Link.d.ts.map +1 -1
  76. package/dist/Link.js +91 -37
  77. package/dist/Listbox.d.ts +437 -0
  78. package/dist/Listbox.d.ts.map +1 -0
  79. package/dist/Listbox.js +316 -0
  80. package/dist/Menu.d.ts +972 -0
  81. package/dist/Menu.d.ts.map +1 -0
  82. package/dist/Menu.js +731 -0
  83. package/dist/Menubar.d.ts +367 -0
  84. package/dist/Menubar.d.ts.map +1 -0
  85. package/dist/Menubar.js +265 -0
  86. package/dist/Meter.d.ts +217 -0
  87. package/dist/Meter.d.ts.map +1 -0
  88. package/dist/Meter.js +94 -0
  89. package/dist/NativeDetails.d.ts +41 -0
  90. package/dist/NativeDetails.d.ts.map +1 -0
  91. package/dist/NativeDetails.js +40 -0
  92. package/dist/NativeDialog.d.ts +64 -0
  93. package/dist/NativeDialog.d.ts.map +1 -0
  94. package/dist/NativeDialog.js +50 -0
  95. package/dist/NativePopover.d.ts +41 -0
  96. package/dist/NativePopover.d.ts.map +1 -0
  97. package/dist/NativePopover.js +46 -0
  98. package/dist/Popover.d.ts +241 -0
  99. package/dist/Popover.d.ts.map +1 -0
  100. package/dist/Popover.js +141 -0
  101. package/dist/RadioGroup.d.ts +432 -0
  102. package/dist/RadioGroup.d.ts.map +1 -0
  103. package/dist/RadioGroup.js +291 -0
  104. package/dist/Role.d.ts +64 -0
  105. package/dist/Role.d.ts.map +1 -0
  106. package/dist/Role.js +27 -0
  107. package/dist/Select.d.ts +529 -0
  108. package/dist/Select.d.ts.map +1 -0
  109. package/dist/Select.js +407 -0
  110. package/dist/Separator.d.ts +54 -0
  111. package/dist/Separator.d.ts.map +1 -0
  112. package/dist/Separator.js +26 -0
  113. package/dist/Slider.d.ts +188 -0
  114. package/dist/Slider.d.ts.map +1 -0
  115. package/dist/Slider.js +96 -0
  116. package/dist/SpinButton.d.ts +188 -0
  117. package/dist/SpinButton.d.ts.map +1 -0
  118. package/dist/SpinButton.js +96 -0
  119. package/dist/Storybook.d.ts +76 -0
  120. package/dist/Storybook.d.ts.map +1 -0
  121. package/dist/Storybook.js +102 -0
  122. package/dist/Switch.d.ts +187 -0
  123. package/dist/Switch.d.ts.map +1 -0
  124. package/dist/Switch.js +116 -0
  125. package/dist/Tab.d.ts +26 -0
  126. package/dist/Tab.d.ts.map +1 -0
  127. package/dist/Tab.js +25 -0
  128. package/dist/Tabs.d.ts +591 -0
  129. package/dist/Tabs.d.ts.map +1 -0
  130. package/dist/Tabs.js +346 -0
  131. package/dist/Toolbar.d.ts +366 -0
  132. package/dist/Toolbar.d.ts.map +1 -0
  133. package/dist/Toolbar.js +245 -0
  134. package/dist/Tooltip.d.ts +296 -0
  135. package/dist/Tooltip.d.ts.map +1 -0
  136. package/dist/Tooltip.js +172 -0
  137. package/dist/Tree.d.ts +591 -0
  138. package/dist/Tree.d.ts.map +1 -0
  139. package/dist/Tree.js +434 -0
  140. package/dist/TreeGrid.d.ts +645 -0
  141. package/dist/TreeGrid.d.ts.map +1 -0
  142. package/dist/TreeGrid.js +420 -0
  143. package/dist/VisuallyHidden.d.ts +54 -0
  144. package/dist/VisuallyHidden.d.ts.map +1 -0
  145. package/dist/VisuallyHidden.js +27 -0
  146. package/dist/WindowSplitter.d.ts +376 -0
  147. package/dist/WindowSplitter.d.ts.map +1 -0
  148. package/dist/WindowSplitter.js +222 -0
  149. package/dist/index.d.ts +49 -0
  150. package/dist/index.d.ts.map +1 -1
  151. package/dist/index.js +49 -0
  152. package/package.json +45 -18
  153. package/src/HttpRouter.test.ts +0 -256
  154. package/src/HttpRouter.ts +0 -165
  155. package/src/Link.test.ts +0 -84
  156. package/src/Link.ts +0 -107
  157. package/src/index.ts +0 -2
package/src/Link.ts DELETED
@@ -1,107 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import type { Scope } from "effect/Scope";
3
- import type { Stream } from "effect/Stream";
4
- import { type Fx, gen } from "@typed/fx/Fx";
5
- import { RefSubject } from "@typed/fx/RefSubject";
6
- import { getUrl, type NavigationError, Navigation } from "@typed/navigation";
7
- import {
8
- EventHandler,
9
- type Renderable,
10
- type RenderEvent,
11
- type RenderTemplate,
12
- html,
13
- } from "@typed/template";
14
-
15
- type EventHandlerProperty = `on${string}`;
16
-
17
- type AnchorEventHandlers = {
18
- readonly [K in keyof HTMLAnchorElement as K extends EventHandlerProperty ? K : never]?:
19
- | Effect.Effect<unknown, any, any>
20
- | EventHandler.EventHandler<Event, any, any>;
21
- };
22
-
23
- type AnchorRef = {
24
- readonly ref?: (
25
- element: HTMLAnchorElement,
26
- ) => void | Effect.Effect<unknown, any, any> | Stream<unknown, any, any> | Fx<unknown, any, any>;
27
- };
28
-
29
- type IfEquals<X, Y, Output> =
30
- (<T>() => T extends X ? 1 : 2) extends <T>() => T extends Y ? 1 : 2 ? Output : never;
31
-
32
- type WritableKeys<T> = {
33
- [P in keyof T]-?: IfEquals<{ [Q in P]: T[P] }, { -readonly [Q in P]: T[P] }, P>;
34
- }[keyof T];
35
-
36
- type AnchorProperties = {
37
- readonly [K in WritableKeys<HTMLAnchorElement> as K extends EventHandlerProperty | "ref"
38
- ? never
39
- : K]?: Renderable<HTMLAnchorElement[K], any, any>;
40
- };
41
-
42
- export interface LinkOptions extends AnchorEventHandlers, AnchorRef, AnchorProperties {
43
- readonly href: Renderable<string, any, any>;
44
- readonly content: Renderable<
45
- string | number | boolean | null | undefined | void | RenderEvent,
46
- any,
47
- any
48
- >;
49
- readonly replace?: boolean; // false
50
- }
51
-
52
- function makeLinkClickHandler(
53
- replace$: RefSubject.RefSubject<boolean>,
54
- ): EventHandler.EventHandler<
55
- MouseEvent & { readonly currentTarget: HTMLAnchorElement },
56
- NavigationError,
57
- Navigation
58
- > {
59
- return EventHandler.make((ev: MouseEvent & { readonly currentTarget: HTMLAnchorElement }) =>
60
- Effect.gen(function* () {
61
- const href = ev.currentTarget.href;
62
- if (ev.ctrlKey || ev.metaKey || ev.shiftKey) return;
63
- const t = ev.currentTarget.target;
64
- if (t && t !== "_self") return;
65
- const nav = yield* Navigation;
66
- const target = getUrl(nav.origin, href);
67
- if (target.origin !== nav.origin) return;
68
- ev.preventDefault();
69
- const replace = yield* replace$;
70
- yield* nav.navigate(href, { history: replace ? "replace" : "push" });
71
- }),
72
- );
73
- }
74
-
75
- /**
76
- * Renders an `<a href="...">` that intercepts same-origin, same-document clicks
77
- * and navigates via `Navigation.navigate` instead of full page load. Requires
78
- * `Navigation` and `RenderTemplate` in the Effect context (e.g. `BrowserRouter`).
79
- */
80
- export function Link<const Opts extends LinkOptions>(
81
- options: Opts,
82
- ): Fx<
83
- RenderEvent,
84
- Renderable.ErrorFromObject<Opts>,
85
- Renderable.ServicesFromObject<Opts> | Scope | RenderTemplate
86
- > {
87
- return gen(function* () {
88
- const { replace = false, onclick, content: children, ...rest } = options;
89
- const replace$ = yield* RefSubject.make(replace);
90
- const navigationHandler = makeLinkClickHandler(replace$);
91
- const userHandler = onclick ? EventHandler.fromEffectOrEventHandler(onclick) : undefined;
92
- const clickHandler = userHandler
93
- ? EventHandler.make(
94
- Effect.fn(function* (ev: MouseEvent & { readonly currentTarget: HTMLAnchorElement }) {
95
- yield* userHandler.handler(ev);
96
- if (ev.defaultPrevented) return;
97
- yield* navigationHandler.handler(ev);
98
- }),
99
- { ...userHandler.options, preventDefault: true },
100
- )
101
- : navigationHandler;
102
-
103
- const props: Record<string, unknown> = { ...rest, onclick: clickHandler };
104
-
105
- return html`<a ...${props}>${children}</a>`;
106
- });
107
- }
package/src/index.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from "./HttpRouter.js";
2
- export * from "./Link.js";