sinho 0.1.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 (117) hide show
  1. package/.github/workflows/ci.yml +24 -0
  2. package/.github/workflows/deploy-docs.yml +47 -0
  3. package/.prettierrc +3 -0
  4. package/LICENSE.md +21 -0
  5. package/README.md +33 -0
  6. package/ci/check-size.js +8 -0
  7. package/dist/array_mutation.d.ts +16 -0
  8. package/dist/array_mutation.js +75 -0
  9. package/dist/array_mutation.js.map +1 -0
  10. package/dist/bundle.d.ts +1126 -0
  11. package/dist/bundle.js +1074 -0
  12. package/dist/bundle.min.js +1 -0
  13. package/dist/component.d.ts +253 -0
  14. package/dist/component.js +256 -0
  15. package/dist/component.js.map +1 -0
  16. package/dist/context.d.ts +21 -0
  17. package/dist/context.js +34 -0
  18. package/dist/context.js.map +1 -0
  19. package/dist/create_element.d.ts +43 -0
  20. package/dist/create_element.js +43 -0
  21. package/dist/create_element.js.map +1 -0
  22. package/dist/dom.d.ts +602 -0
  23. package/dist/dom.js +97 -0
  24. package/dist/dom.js.map +1 -0
  25. package/dist/intrinsic/ClassComponent.d.ts +2 -0
  26. package/dist/intrinsic/ClassComponent.js +10 -0
  27. package/dist/intrinsic/ClassComponent.js.map +1 -0
  28. package/dist/intrinsic/Dynamic.d.ts +33 -0
  29. package/dist/intrinsic/Dynamic.js +53 -0
  30. package/dist/intrinsic/Dynamic.js.map +1 -0
  31. package/dist/intrinsic/ErrorBoundary.d.ts +14 -0
  32. package/dist/intrinsic/ErrorBoundary.js +36 -0
  33. package/dist/intrinsic/ErrorBoundary.js.map +1 -0
  34. package/dist/intrinsic/For.d.ts +10 -0
  35. package/dist/intrinsic/For.js +81 -0
  36. package/dist/intrinsic/For.js.map +1 -0
  37. package/dist/intrinsic/Fragment.d.ts +23 -0
  38. package/dist/intrinsic/Fragment.js +28 -0
  39. package/dist/intrinsic/Fragment.js.map +1 -0
  40. package/dist/intrinsic/If.d.ts +24 -0
  41. package/dist/intrinsic/If.js +47 -0
  42. package/dist/intrinsic/If.js.map +1 -0
  43. package/dist/intrinsic/Portal.d.ts +6 -0
  44. package/dist/intrinsic/Portal.js +15 -0
  45. package/dist/intrinsic/Portal.js.map +1 -0
  46. package/dist/intrinsic/Style.d.ts +7 -0
  47. package/dist/intrinsic/Style.js +70 -0
  48. package/dist/intrinsic/Style.js.map +1 -0
  49. package/dist/intrinsic/TagComponent.d.ts +4 -0
  50. package/dist/intrinsic/TagComponent.js +67 -0
  51. package/dist/intrinsic/TagComponent.js.map +1 -0
  52. package/dist/intrinsic/Text.d.ts +6 -0
  53. package/dist/intrinsic/Text.js +16 -0
  54. package/dist/intrinsic/Text.js.map +1 -0
  55. package/dist/intrinsic/mod.d.ts +5 -0
  56. package/dist/intrinsic/mod.js +6 -0
  57. package/dist/intrinsic/mod.js.map +1 -0
  58. package/dist/jsx-runtime/mod.d.ts +23 -0
  59. package/dist/jsx-runtime/mod.js +11 -0
  60. package/dist/jsx-runtime/mod.js.map +1 -0
  61. package/dist/mod.d.ts +8 -0
  62. package/dist/mod.js +7 -0
  63. package/dist/mod.js.map +1 -0
  64. package/dist/renderer.d.ts +13 -0
  65. package/dist/renderer.js +25 -0
  66. package/dist/renderer.js.map +1 -0
  67. package/dist/scope.d.ts +138 -0
  68. package/dist/scope.js +228 -0
  69. package/dist/scope.js.map +1 -0
  70. package/dist/template.d.ts +10 -0
  71. package/dist/template.js +7 -0
  72. package/dist/template.js.map +1 -0
  73. package/dist/utils.d.ts +6 -0
  74. package/dist/utils.js +13 -0
  75. package/dist/utils.js.map +1 -0
  76. package/package.json +71 -0
  77. package/src/array_mutation.ts +118 -0
  78. package/src/component.ts +624 -0
  79. package/src/context.ts +70 -0
  80. package/src/create_element.ts +89 -0
  81. package/src/dom.ts +819 -0
  82. package/src/intrinsic/ClassComponent.ts +17 -0
  83. package/src/intrinsic/For.ts +122 -0
  84. package/src/intrinsic/Fragment.ts +38 -0
  85. package/src/intrinsic/If.ts +73 -0
  86. package/src/intrinsic/Portal.ts +25 -0
  87. package/src/intrinsic/Style.ts +120 -0
  88. package/src/intrinsic/TagComponent.ts +102 -0
  89. package/src/intrinsic/Text.ts +24 -0
  90. package/src/intrinsic/mod.ts +5 -0
  91. package/src/jsx-runtime/mod.ts +41 -0
  92. package/src/mod.ts +37 -0
  93. package/src/renderer.ts +45 -0
  94. package/src/scope.ts +404 -0
  95. package/src/template.ts +16 -0
  96. package/src/utils.ts +29 -0
  97. package/terser.config.json +16 -0
  98. package/tsconfig.json +18 -0
  99. package/web/README.md +41 -0
  100. package/web/babel.config.js +3 -0
  101. package/web/dist/shingo.min.d.ts +1131 -0
  102. package/web/dist/shingo.min.js +1 -0
  103. package/web/docusaurus.config.ts +151 -0
  104. package/web/package-lock.json +14850 -0
  105. package/web/package.json +54 -0
  106. package/web/sidebars.ts +31 -0
  107. package/web/src/components/monacoEditor.tsx +72 -0
  108. package/web/src/components/playground.tsx +89 -0
  109. package/web/src/components/playgroundComponent.tsx +168 -0
  110. package/web/src/css/custom.css +37 -0
  111. package/web/src/pages/index.module.css +31 -0
  112. package/web/src/pages/index.tsx +73 -0
  113. package/web/src/pages/playground.tsx +64 -0
  114. package/web/static/.nojekyll +0 -0
  115. package/web/static/dist/bundle.d.ts +1126 -0
  116. package/web/static/dist/bundle.min.js +1 -0
  117. package/web/tsconfig.json +8 -0
@@ -0,0 +1,1131 @@
1
+ /**
2
+ * Represents a signal-based computation.
3
+ */
4
+ interface SignalLike<out T> {
5
+ /**
6
+ * Gets the current value of the signal with tracking by default.
7
+ */
8
+ (): T;
9
+ }
10
+ /**
11
+ * Represents a value that tracks changes over time.
12
+ */
13
+ interface Signal<out T> extends SignalLike<T> {
14
+ /** @ignore */
15
+ _effects: Set<Effect>;
16
+ /**
17
+ * Accesses the current value of the signal without tracking.
18
+ */
19
+ peek(): T;
20
+ }
21
+ interface SetSignalOptions {
22
+ /**
23
+ * Whether to force the update of the signal even if the new value has the
24
+ * same reference.
25
+ */
26
+ force?: boolean;
27
+ /**
28
+ * Whether to suppress the update of the signal's effects.
29
+ */
30
+ silent?: boolean;
31
+ }
32
+ /**
33
+ * Can be used to update a signal with a new value.
34
+ */
35
+ interface SignalSetter<in T, out U = T> {
36
+ (update: (value: U) => T, opts?: SetSignalOptions): void;
37
+ (value: T extends Function ? never : T, opts?: SetSignalOptions): void;
38
+ }
39
+ interface SubscopeOptions {
40
+ details?: object;
41
+ }
42
+ interface Effect {
43
+ _clean?: Cleanup;
44
+ _deps: Set<Signal<unknown>>;
45
+ _scope: Scope;
46
+ _run(): void;
47
+ }
48
+ /**
49
+ * Represents the cleanup function of an effect.
50
+ */
51
+ type Cleanup = (() => void) | void | undefined | null;
52
+ interface Scope<out T = {}> {
53
+ readonly _parent?: Scope;
54
+ _effects: Effect[];
55
+ _subscopes: Scope[];
56
+ _details: T;
57
+ _run<T>(fn: () => T): T;
58
+ _cleanup(): void;
59
+ }
60
+ /** @ignore */
61
+ declare const useScope: <T = {}>() => Scope<T>;
62
+ /**
63
+ * Creates a new signal with the given value.
64
+ * @returns A tuple with the signal and its setter.
65
+ */
66
+ declare const useSignal: (<T>(value: T, opts?: SetSignalOptions) => readonly [Signal<T>, SignalSetter<T>]) & (<T>(value?: T, opts?: SetSignalOptions) => readonly [Signal<T | undefined>, SignalSetter<T | undefined>]);
67
+ /**
68
+ * Runs the given function in a batch.
69
+ *
70
+ * @param fn Any calls to signal setters inside the function will be batched
71
+ * and updated at the same time.
72
+ */
73
+ declare const useBatch: <T>(fn: () => T) => T;
74
+ /**
75
+ * Creates a memoized signal.
76
+ *
77
+ * @param fn The computation function.
78
+ */
79
+ declare const useMemo: <T>(fn: () => T, opts?: SetSignalOptions) => Signal<T>;
80
+ /**
81
+ * Provide write capabilities to a signal.
82
+ */
83
+ interface RefSignal<in out T> extends Signal<T>, RefSignalSetter<T> {
84
+ /**
85
+ * Sets the value of the signal.
86
+ */
87
+ set: SignalSetter<T>;
88
+ }
89
+ /**
90
+ * A contravariant variant of {@link RefSignal}.
91
+ */
92
+ interface RefSignalSetter<in T> {
93
+ /**
94
+ * Sets the value of the signal.
95
+ */
96
+ set: SignalSetter<T, unknown>;
97
+ }
98
+ /**
99
+ * Creates a new signal with write capabilities.
100
+ */
101
+ declare const useRef: (<T>(value: T, opts?: SetSignalOptions) => RefSignal<T>) & (<T>(value?: T, opts?: SetSignalOptions) => RefSignal<T | undefined>);
102
+ /**
103
+ * Represents a value that can be a signal or a constant value.
104
+ *
105
+ * Note that functions are not allowed as constant values.
106
+ */
107
+ type MaybeSignal<T> = SignalLike<T> | (T extends Function ? never : T);
108
+ /**
109
+ * @namespace
110
+ */
111
+ declare const MaybeSignal: {
112
+ /**
113
+ * Transforms the given {@link MaybeSignal} into a {@link Signal}.
114
+ */
115
+ upgrade: <T>(signal: MaybeSignal<T>) => SignalLike<T>;
116
+ /**
117
+ * Gets the value of the given {@link MaybeSignal}.
118
+ */
119
+ get: <T_1>(signal: MaybeSignal<T_1>) => T_1;
120
+ /**
121
+ * Accesses the value of the given {@link MaybeSignal} without tracking.
122
+ */
123
+ peek<T_2>(signal: MaybeSignal<T_2>): T_2;
124
+ };
125
+
126
+ interface DomIntrinsicElements {
127
+ a: HtmlProps<HTMLAnchorElement> & DomEventProps<HTMLAnchorElement>;
128
+ abbr: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
129
+ address: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
130
+ area: HtmlProps<HTMLAreaElement> & DomEventProps<HTMLAreaElement>;
131
+ article: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
132
+ aside: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
133
+ audio: HtmlProps<HTMLAudioElement> & DomEventProps<HTMLAudioElement>;
134
+ b: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
135
+ base: HtmlProps<HTMLBaseElement> & DomEventProps<HTMLBaseElement>;
136
+ bdi: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
137
+ bdo: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
138
+ big: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
139
+ blockquote: HtmlProps<HTMLQuoteElement> & DomEventProps<HTMLQuoteElement>;
140
+ body: HtmlProps<HTMLBodyElement> & DomEventProps<HTMLBodyElement>;
141
+ br: HtmlProps<HTMLBRElement> & DomEventProps<HTMLBRElement>;
142
+ button: HtmlProps<HTMLButtonElement> & DomEventProps<HTMLButtonElement>;
143
+ canvas: HtmlProps<HTMLCanvasElement> & DomEventProps<HTMLCanvasElement>;
144
+ caption: HtmlProps<HTMLTableCaptionElement> & DomEventProps<HTMLTableCaptionElement>;
145
+ cite: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
146
+ code: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
147
+ col: HtmlProps<HTMLTableColElement> & DomEventProps<HTMLTableColElement>;
148
+ colgroup: HtmlProps<HTMLTableColElement> & DomEventProps<HTMLTableColElement>;
149
+ data: HtmlProps<HTMLDataElement> & DomEventProps<HTMLDataElement>;
150
+ datalist: HtmlProps<HTMLDataListElement> & DomEventProps<HTMLDataListElement>;
151
+ dd: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
152
+ del: HtmlProps<HTMLModElement> & DomEventProps<HTMLModElement>;
153
+ details: HtmlProps<HTMLDetailsElement> & DomEventProps<HTMLDetailsElement>;
154
+ dfn: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
155
+ dialog: HtmlProps<HTMLDialogElement> & DomEventProps<HTMLDialogElement>;
156
+ div: HtmlProps<HTMLDivElement> & DomEventProps<HTMLDivElement>;
157
+ dl: HtmlProps<HTMLDListElement> & DomEventProps<HTMLDListElement>;
158
+ dt: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
159
+ em: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
160
+ embed: HtmlProps<HTMLEmbedElement> & DomEventProps<HTMLEmbedElement>;
161
+ fieldset: HtmlProps<HTMLFieldSetElement> & DomEventProps<HTMLFieldSetElement>;
162
+ figcaption: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
163
+ figure: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
164
+ footer: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
165
+ form: HtmlProps<HTMLFormElement> & DomEventProps<HTMLFormElement>;
166
+ h1: HtmlProps<HTMLHeadingElement> & DomEventProps<HTMLHeadingElement>;
167
+ h2: HtmlProps<HTMLHeadingElement> & DomEventProps<HTMLHeadingElement>;
168
+ h3: HtmlProps<HTMLHeadingElement> & DomEventProps<HTMLHeadingElement>;
169
+ h4: HtmlProps<HTMLHeadingElement> & DomEventProps<HTMLHeadingElement>;
170
+ h5: HtmlProps<HTMLHeadingElement> & DomEventProps<HTMLHeadingElement>;
171
+ h6: HtmlProps<HTMLHeadingElement> & DomEventProps<HTMLHeadingElement>;
172
+ head: HtmlProps<HTMLHeadElement> & DomEventProps<HTMLHeadElement>;
173
+ header: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
174
+ hgroup: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
175
+ hr: HtmlProps<HTMLHRElement> & DomEventProps<HTMLHRElement>;
176
+ html: HtmlProps<HTMLHtmlElement> & DomEventProps<HTMLHtmlElement>;
177
+ i: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
178
+ iframe: HtmlProps<HTMLIFrameElement> & DomEventProps<HTMLIFrameElement>;
179
+ img: HtmlProps<HTMLImageElement> & DomEventProps<HTMLImageElement>;
180
+ input: HtmlProps<HTMLInputElement> & DomEventProps<HTMLInputElement>;
181
+ ins: HtmlProps<HTMLModElement> & DomEventProps<HTMLModElement>;
182
+ kbd: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
183
+ keygen: HtmlProps<HTMLUnknownElement> & DomEventProps<HTMLUnknownElement>;
184
+ label: HtmlProps<HTMLLabelElement> & DomEventProps<HTMLLabelElement>;
185
+ legend: HtmlProps<HTMLLegendElement> & DomEventProps<HTMLLegendElement>;
186
+ li: HtmlProps<HTMLLIElement> & DomEventProps<HTMLLIElement>;
187
+ link: HtmlProps<HTMLLinkElement> & DomEventProps<HTMLLinkElement>;
188
+ main: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
189
+ map: HtmlProps<HTMLMapElement> & DomEventProps<HTMLMapElement>;
190
+ mark: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
191
+ marquee: HtmlProps<HTMLMarqueeElement> & DomEventProps<HTMLMarqueeElement>;
192
+ menu: HtmlProps<HTMLMenuElement> & DomEventProps<HTMLMenuElement>;
193
+ menuitem: HtmlProps<HTMLUnknownElement> & DomEventProps<HTMLUnknownElement>;
194
+ meta: HtmlProps<HTMLMetaElement> & DomEventProps<HTMLMetaElement>;
195
+ meter: HtmlProps<HTMLMeterElement> & DomEventProps<HTMLMeterElement>;
196
+ nav: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
197
+ noscript: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
198
+ object: HtmlProps<HTMLObjectElement> & DomEventProps<HTMLObjectElement>;
199
+ ol: HtmlProps<HTMLOListElement> & DomEventProps<HTMLOListElement>;
200
+ optgroup: HtmlProps<HTMLOptGroupElement> & DomEventProps<HTMLOptGroupElement>;
201
+ option: HtmlProps<HTMLOptionElement> & DomEventProps<HTMLOptionElement>;
202
+ output: HtmlProps<HTMLOutputElement> & DomEventProps<HTMLOutputElement>;
203
+ p: HtmlProps<HTMLParagraphElement> & DomEventProps<HTMLParagraphElement>;
204
+ param: HtmlProps<HTMLParamElement> & DomEventProps<HTMLParamElement>;
205
+ picture: HtmlProps<HTMLPictureElement> & DomEventProps<HTMLPictureElement>;
206
+ pre: HtmlProps<HTMLPreElement> & DomEventProps<HTMLPreElement>;
207
+ progress: HtmlProps<HTMLProgressElement> & DomEventProps<HTMLProgressElement>;
208
+ q: HtmlProps<HTMLQuoteElement> & DomEventProps<HTMLQuoteElement>;
209
+ rp: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
210
+ rt: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
211
+ ruby: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
212
+ s: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
213
+ samp: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
214
+ script: HtmlProps<HTMLScriptElement> & DomEventProps<HTMLScriptElement>;
215
+ section: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
216
+ select: HtmlProps<HTMLSelectElement> & DomEventProps<HTMLSelectElement>;
217
+ slot: HtmlProps<HTMLSlotElement> & DomEventProps<HTMLSlotElement>;
218
+ small: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
219
+ source: HtmlProps<HTMLSourceElement> & DomEventProps<HTMLSourceElement>;
220
+ span: HtmlProps<HTMLSpanElement> & DomEventProps<HTMLSpanElement>;
221
+ strong: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
222
+ style: HtmlProps<HTMLStyleElement> & DomEventProps<HTMLStyleElement>;
223
+ sub: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
224
+ summary: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
225
+ sup: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
226
+ table: HtmlProps<HTMLTableElement> & DomEventProps<HTMLTableElement>;
227
+ tbody: HtmlProps<HTMLTableSectionElement> & DomEventProps<HTMLTableSectionElement>;
228
+ td: HtmlProps<HTMLTableCellElement> & DomEventProps<HTMLTableCellElement>;
229
+ textarea: HtmlProps<HTMLTextAreaElement> & DomEventProps<HTMLTextAreaElement>;
230
+ tfoot: HtmlProps<HTMLTableSectionElement> & DomEventProps<HTMLTableSectionElement>;
231
+ th: HtmlProps<HTMLTableCellElement> & DomEventProps<HTMLTableCellElement>;
232
+ thead: HtmlProps<HTMLTableSectionElement> & DomEventProps<HTMLTableSectionElement>;
233
+ time: HtmlProps<HTMLTimeElement> & DomEventProps<HTMLTimeElement>;
234
+ title: HtmlProps<HTMLTitleElement> & DomEventProps<HTMLTitleElement>;
235
+ tr: HtmlProps<HTMLTableRowElement> & DomEventProps<HTMLTableRowElement>;
236
+ track: HtmlProps<HTMLTrackElement> & DomEventProps<HTMLTrackElement>;
237
+ u: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
238
+ ul: HtmlProps<HTMLUListElement> & DomEventProps<HTMLUListElement>;
239
+ var: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
240
+ video: HtmlProps<HTMLVideoElement> & DomEventProps<HTMLVideoElement>;
241
+ wbr: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
242
+ svg: SvgProps<SVGSVGElement> & DomEventProps<SVGSVGElement>;
243
+ animate: SvgProps<SVGAnimateElement> & DomEventProps<SVGAnimateElement>;
244
+ circle: SvgProps<SVGCircleElement> & DomEventProps<SVGCircleElement>;
245
+ animateTransform: SvgProps<SVGAnimateElement> & DomEventProps<SVGAnimateElement>;
246
+ clipPath: SvgProps<SVGClipPathElement> & DomEventProps<SVGClipPathElement>;
247
+ defs: SvgProps<SVGDefsElement> & DomEventProps<SVGDefsElement>;
248
+ desc: SvgProps<SVGDescElement> & DomEventProps<SVGDescElement>;
249
+ ellipse: SvgProps<SVGEllipseElement> & DomEventProps<SVGEllipseElement>;
250
+ feBlend: SvgProps<SVGFEBlendElement> & DomEventProps<SVGFEBlendElement>;
251
+ feColorMatrix: SvgProps<SVGFEColorMatrixElement> & DomEventProps<SVGFEColorMatrixElement>;
252
+ feComponentTransfer: SvgProps<SVGFEComponentTransferElement> & DomEventProps<SVGFEComponentTransferElement>;
253
+ feComposite: SvgProps<SVGFECompositeElement> & DomEventProps<SVGFECompositeElement>;
254
+ feConvolveMatrix: SvgProps<SVGFEConvolveMatrixElement> & DomEventProps<SVGFEConvolveMatrixElement>;
255
+ feDiffuseLighting: SvgProps<SVGFEDiffuseLightingElement> & DomEventProps<SVGFEDiffuseLightingElement>;
256
+ feDisplacementMap: SvgProps<SVGFEDisplacementMapElement> & DomEventProps<SVGFEDisplacementMapElement>;
257
+ feDropShadow: SvgProps<SVGFEDropShadowElement> & DomEventProps<SVGFEDropShadowElement>;
258
+ feFlood: SvgProps<SVGFEFloodElement> & DomEventProps<SVGFEFloodElement>;
259
+ feFuncA: SvgProps<SVGFEFuncAElement> & DomEventProps<SVGFEFuncAElement>;
260
+ feFuncB: SvgProps<SVGFEFuncBElement> & DomEventProps<SVGFEFuncBElement>;
261
+ feFuncG: SvgProps<SVGFEFuncGElement> & DomEventProps<SVGFEFuncGElement>;
262
+ feFuncR: SvgProps<SVGFEFuncRElement> & DomEventProps<SVGFEFuncRElement>;
263
+ feGaussianBlur: SvgProps<SVGFEGaussianBlurElement> & DomEventProps<SVGFEGaussianBlurElement>;
264
+ feImage: SvgProps<SVGFEImageElement> & DomEventProps<SVGFEImageElement>;
265
+ feMerge: SvgProps<SVGFEMergeElement> & DomEventProps<SVGFEMergeElement>;
266
+ feMergeNode: SvgProps<SVGFEMergeNodeElement> & DomEventProps<SVGFEMergeNodeElement>;
267
+ feMorphology: SvgProps<SVGFEMorphologyElement> & DomEventProps<SVGFEMorphologyElement>;
268
+ feOffset: SvgProps<SVGFEOffsetElement> & DomEventProps<SVGFEOffsetElement>;
269
+ feSpecularLighting: SvgProps<SVGFESpecularLightingElement> & DomEventProps<SVGFESpecularLightingElement>;
270
+ feTile: SvgProps<SVGFETileElement> & DomEventProps<SVGFETileElement>;
271
+ feTurbulence: SvgProps<SVGFETurbulenceElement> & DomEventProps<SVGFETurbulenceElement>;
272
+ filter: SvgProps<SVGFilterElement> & DomEventProps<SVGFilterElement>;
273
+ foreignObject: SvgProps<SVGForeignObjectElement> & DomEventProps<SVGForeignObjectElement>;
274
+ g: SvgProps<SVGGElement> & DomEventProps<SVGGElement>;
275
+ image: SvgProps<SVGImageElement> & DomEventProps<SVGImageElement>;
276
+ line: SvgProps<SVGLineElement> & DomEventProps<SVGLineElement>;
277
+ linearGradient: SvgProps<SVGLinearGradientElement> & DomEventProps<SVGLinearGradientElement>;
278
+ marker: SvgProps<SVGMarkerElement> & DomEventProps<SVGMarkerElement>;
279
+ mask: SvgProps<SVGMaskElement> & DomEventProps<SVGMaskElement>;
280
+ path: SvgProps<SVGPathElement> & DomEventProps<SVGPathElement>;
281
+ pattern: SvgProps<SVGPatternElement> & DomEventProps<SVGPatternElement>;
282
+ polygon: SvgProps<SVGPolygonElement> & DomEventProps<SVGPolygonElement>;
283
+ polyline: SvgProps<SVGPolylineElement> & DomEventProps<SVGPolylineElement>;
284
+ radialGradient: SvgProps<SVGRadialGradientElement> & DomEventProps<SVGRadialGradientElement>;
285
+ rect: SvgProps<SVGRectElement> & DomEventProps<SVGRectElement>;
286
+ stop: SvgProps<SVGStopElement> & DomEventProps<SVGStopElement>;
287
+ symbol: SvgProps<SVGSymbolElement> & DomEventProps<SVGSymbolElement>;
288
+ text: SvgProps<SVGTextElement> & DomEventProps<SVGTextElement>;
289
+ textPath: SvgProps<SVGTextPathElement> & DomEventProps<SVGTextPathElement>;
290
+ tspan: SvgProps<SVGTSpanElement> & DomEventProps<SVGTSpanElement>;
291
+ use: SvgProps<SVGUseElement> & DomEventProps<SVGUseElement>;
292
+ [tagName: string]: DomProps<any> & Record<string, any>;
293
+ }
294
+ type Styles = {
295
+ [K in Exclude<keyof CSSStyleDeclaration, "item" | "setProperty" | "removeProperty" | "getPropertyValue" | "getPropertyPriority" | typeof Symbol.iterator | number>]?: MaybeSignal<string | number | null | undefined>;
296
+ } & {
297
+ [key: string]: MaybeSignal<string | number | null | undefined>;
298
+ };
299
+ type ExcludeNeverValues<T> = T[Exclude<keyof T, {
300
+ [K in keyof T]: T[K] extends never ? K : never;
301
+ }[keyof T]>];
302
+ type EventMap = Pick<ElementEventMap & DocumentEventMap & GlobalEventHandlersEventMap, ExcludeNeverValues<{
303
+ [K in keyof (ElementEventMap & DocumentEventMap & GlobalEventHandlersEventMap)]: K extends Lowercase<K> ? K : never;
304
+ }>>;
305
+ type EventHandler<K extends keyof EventMap, E> = (this: E, evt: Omit<EventMap[K], "currentTarget"> & {
306
+ currentTarget: E;
307
+ }) => void;
308
+ type DomEventProps<E> = {
309
+ [K in keyof EventMap as `on${K}`]?: EventHandler<K, E>;
310
+ };
311
+ interface DangerousHtml {
312
+ __html: string;
313
+ }
314
+ interface DomProps<in E> {
315
+ ref?: RefSignalSetter<E | undefined>;
316
+ class?: MaybeSignal<string | undefined>;
317
+ style?: Styles;
318
+ dangerouslySetInnerHTML?: MaybeSignal<DangerousHtml>;
319
+ children?: Children;
320
+ }
321
+ interface HtmlProps<in E> extends DomProps<E> {
322
+ accept?: MaybeSignal<string | undefined>;
323
+ acceptCharset?: MaybeSignal<string | undefined>;
324
+ accessKey?: MaybeSignal<string | undefined>;
325
+ action?: MaybeSignal<string | undefined>;
326
+ allow?: MaybeSignal<string | undefined>;
327
+ allowFullScreen?: MaybeSignal<boolean | undefined>;
328
+ allowTransparency?: MaybeSignal<boolean | undefined>;
329
+ alt?: MaybeSignal<string | undefined>;
330
+ as?: MaybeSignal<string | undefined>;
331
+ async?: MaybeSignal<boolean | undefined>;
332
+ autocomplete?: MaybeSignal<string | undefined>;
333
+ autoComplete?: MaybeSignal<string | undefined>;
334
+ autocorrect?: MaybeSignal<string | undefined>;
335
+ autoCorrect?: MaybeSignal<string | undefined>;
336
+ autofocus?: MaybeSignal<boolean | undefined>;
337
+ autoFocus?: MaybeSignal<boolean | undefined>;
338
+ autoPlay?: MaybeSignal<boolean | undefined>;
339
+ capture?: MaybeSignal<string | undefined>;
340
+ cellPadding?: MaybeSignal<string | undefined>;
341
+ cellSpacing?: MaybeSignal<string | undefined>;
342
+ charSet?: MaybeSignal<string | undefined>;
343
+ challenge?: MaybeSignal<string | undefined>;
344
+ checked?: MaybeSignal<boolean | undefined>;
345
+ cite?: MaybeSignal<string | undefined>;
346
+ cols?: MaybeSignal<number | undefined>;
347
+ colSpan?: MaybeSignal<number | undefined>;
348
+ content?: MaybeSignal<string | undefined>;
349
+ contentEditable?: MaybeSignal<boolean | undefined>;
350
+ contextMenu?: MaybeSignal<string | undefined>;
351
+ controls?: MaybeSignal<boolean | undefined>;
352
+ controlsList?: MaybeSignal<string | undefined>;
353
+ coords?: MaybeSignal<string | undefined>;
354
+ crossOrigin?: MaybeSignal<string | undefined>;
355
+ data?: MaybeSignal<string | undefined>;
356
+ dateTime?: MaybeSignal<string | undefined>;
357
+ default?: MaybeSignal<boolean | undefined>;
358
+ defaultChecked?: MaybeSignal<boolean | undefined>;
359
+ defaultValue?: MaybeSignal<string | string[] | number | undefined>;
360
+ defer?: MaybeSignal<boolean | undefined>;
361
+ dir?: MaybeSignal<"auto" | "rtl" | "ltr" | undefined>;
362
+ disabled?: MaybeSignal<boolean | undefined>;
363
+ disableRemotePlayback?: MaybeSignal<boolean | undefined>;
364
+ download?: MaybeSignal<any | undefined>;
365
+ decoding?: MaybeSignal<"sync" | "async" | "auto" | undefined>;
366
+ draggable?: MaybeSignal<boolean | undefined>;
367
+ encType?: MaybeSignal<string | undefined>;
368
+ enterkeyhint?: MaybeSignal<"enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined>;
369
+ for?: MaybeSignal<string | undefined>;
370
+ form?: MaybeSignal<string | undefined>;
371
+ formAction?: MaybeSignal<string | undefined>;
372
+ formEncType?: MaybeSignal<string | undefined>;
373
+ formMethod?: MaybeSignal<string | undefined>;
374
+ formNoValidate?: MaybeSignal<boolean | undefined>;
375
+ formTarget?: MaybeSignal<string | undefined>;
376
+ frameBorder?: MaybeSignal<number | string | undefined>;
377
+ headers?: MaybeSignal<string | undefined>;
378
+ height?: MaybeSignal<number | string | undefined>;
379
+ hidden?: MaybeSignal<boolean | undefined>;
380
+ high?: MaybeSignal<number | undefined>;
381
+ href?: MaybeSignal<string | undefined>;
382
+ hrefLang?: MaybeSignal<string | undefined>;
383
+ httpEquiv?: MaybeSignal<string | undefined>;
384
+ icon?: MaybeSignal<string | undefined>;
385
+ inputMode?: MaybeSignal<string | undefined>;
386
+ integrity?: MaybeSignal<string | undefined>;
387
+ is?: MaybeSignal<string | undefined>;
388
+ keyParams?: MaybeSignal<string | undefined>;
389
+ keyType?: MaybeSignal<string | undefined>;
390
+ kind?: MaybeSignal<string | undefined>;
391
+ label?: MaybeSignal<string | undefined>;
392
+ lang?: MaybeSignal<string | undefined>;
393
+ list?: MaybeSignal<string | undefined>;
394
+ loading?: MaybeSignal<"eager" | "lazy" | undefined>;
395
+ loop?: MaybeSignal<boolean | undefined>;
396
+ low?: MaybeSignal<number | undefined>;
397
+ manifest?: MaybeSignal<string | undefined>;
398
+ marginHeight?: MaybeSignal<number | undefined>;
399
+ marginWidth?: MaybeSignal<number | undefined>;
400
+ max?: MaybeSignal<string | undefined>;
401
+ maxLength?: MaybeSignal<number | undefined>;
402
+ media?: MaybeSignal<string | undefined>;
403
+ mediaGroup?: MaybeSignal<string | undefined>;
404
+ method?: MaybeSignal<string | undefined>;
405
+ min?: MaybeSignal<string | undefined>;
406
+ minLength?: MaybeSignal<number | undefined>;
407
+ multiple?: MaybeSignal<boolean | undefined>;
408
+ muted?: MaybeSignal<boolean | undefined>;
409
+ name?: MaybeSignal<string | undefined>;
410
+ nomodule?: MaybeSignal<boolean | undefined>;
411
+ nonce?: MaybeSignal<string | undefined>;
412
+ noValidate?: MaybeSignal<boolean | undefined>;
413
+ open?: MaybeSignal<boolean | undefined>;
414
+ optimum?: MaybeSignal<number | undefined>;
415
+ part?: MaybeSignal<string | undefined>;
416
+ pattern?: MaybeSignal<string | undefined>;
417
+ ping?: MaybeSignal<string | undefined>;
418
+ placeholder?: MaybeSignal<string | undefined>;
419
+ playsInline?: MaybeSignal<boolean | undefined>;
420
+ poster?: MaybeSignal<string | undefined>;
421
+ preload?: MaybeSignal<string | undefined>;
422
+ radioGroup?: MaybeSignal<string | undefined>;
423
+ readonly?: MaybeSignal<boolean | undefined>;
424
+ readOnly?: MaybeSignal<boolean | undefined>;
425
+ referrerpolicy?: MaybeSignal<"no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url" | undefined>;
426
+ rel?: MaybeSignal<string | undefined>;
427
+ required?: MaybeSignal<boolean | undefined>;
428
+ reversed?: MaybeSignal<boolean | undefined>;
429
+ role?: MaybeSignal<string | undefined>;
430
+ rows?: MaybeSignal<number | undefined>;
431
+ rowSpan?: MaybeSignal<number | undefined>;
432
+ sandbox?: MaybeSignal<string | undefined>;
433
+ scope?: MaybeSignal<string | undefined>;
434
+ scoped?: MaybeSignal<boolean | undefined>;
435
+ scrolling?: MaybeSignal<string | undefined>;
436
+ seamless?: MaybeSignal<boolean | undefined>;
437
+ selected?: MaybeSignal<boolean | undefined>;
438
+ shape?: MaybeSignal<string | undefined>;
439
+ size?: MaybeSignal<number | undefined>;
440
+ sizes?: MaybeSignal<string | undefined>;
441
+ slot?: MaybeSignal<string | undefined>;
442
+ span?: MaybeSignal<number | undefined>;
443
+ spellcheck?: MaybeSignal<boolean | undefined>;
444
+ spellCheck?: MaybeSignal<boolean | undefined>;
445
+ src?: MaybeSignal<string | undefined>;
446
+ srcset?: MaybeSignal<string | undefined>;
447
+ srcDoc?: MaybeSignal<string | undefined>;
448
+ srcLang?: MaybeSignal<string | undefined>;
449
+ srcSet?: MaybeSignal<string | undefined>;
450
+ start?: MaybeSignal<number | undefined>;
451
+ step?: MaybeSignal<number | string | undefined>;
452
+ summary?: MaybeSignal<string | undefined>;
453
+ tabIndex?: MaybeSignal<number | undefined>;
454
+ target?: MaybeSignal<string | undefined>;
455
+ title?: MaybeSignal<string | undefined>;
456
+ type?: MaybeSignal<string | undefined>;
457
+ useMap?: MaybeSignal<string | undefined>;
458
+ value?: MaybeSignal<string | string[] | number | undefined>;
459
+ volume?: MaybeSignal<string | number | undefined>;
460
+ width?: MaybeSignal<number | string | undefined>;
461
+ wmode?: MaybeSignal<string | undefined>;
462
+ wrap?: MaybeSignal<string | undefined>;
463
+ autocapitalize?: MaybeSignal<"off" | "none" | "on" | "sentences" | "words" | "characters" | undefined>;
464
+ autoCapitalize?: MaybeSignal<"off" | "none" | "on" | "sentences" | "words" | "characters" | undefined>;
465
+ disablePictureInPicture?: MaybeSignal<boolean | undefined>;
466
+ results?: MaybeSignal<number | undefined>;
467
+ translate?: MaybeSignal<"yes" | "no" | undefined>;
468
+ about?: MaybeSignal<string | undefined>;
469
+ datatype?: MaybeSignal<string | undefined>;
470
+ inlist?: MaybeSignal<any | undefined>;
471
+ prefix?: MaybeSignal<string | undefined>;
472
+ property?: MaybeSignal<string | undefined>;
473
+ resource?: MaybeSignal<string | undefined>;
474
+ typeof?: MaybeSignal<string | undefined>;
475
+ vocab?: MaybeSignal<string | undefined>;
476
+ itemProp?: MaybeSignal<string | undefined>;
477
+ itemScope?: MaybeSignal<boolean | undefined>;
478
+ itemType?: MaybeSignal<string | undefined>;
479
+ itemID?: MaybeSignal<string | undefined>;
480
+ itemRef?: MaybeSignal<string | undefined>;
481
+ [name: string]: any;
482
+ }
483
+ interface SvgProps<in E> extends HtmlProps<E> {
484
+ accentHeight?: MaybeSignal<number | string | undefined>;
485
+ accumulate?: MaybeSignal<"none" | "sum" | undefined>;
486
+ additive?: MaybeSignal<"replace" | "sum" | undefined>;
487
+ alignmentBaseline?: MaybeSignal<"auto" | "baseline" | "before-edge" | "text-before-edge" | "middle" | "central" | "after-edge" | "text-after-edge" | "ideographic" | "alphabetic" | "hanging" | "mathematical" | "inherit" | undefined>;
488
+ allowReorder?: MaybeSignal<"no" | "yes" | undefined>;
489
+ alphabetic?: MaybeSignal<number | string | undefined>;
490
+ amplitude?: MaybeSignal<number | string | undefined>;
491
+ arabicForm?: MaybeSignal<"initial" | "medial" | "terminal" | "isolated" | undefined>;
492
+ ascent?: MaybeSignal<number | string | undefined>;
493
+ attributeName?: MaybeSignal<string | undefined>;
494
+ attributeType?: MaybeSignal<string | undefined>;
495
+ autoReverse?: MaybeSignal<number | string | undefined>;
496
+ azimuth?: MaybeSignal<number | string | undefined>;
497
+ baseFrequency?: MaybeSignal<number | string | undefined>;
498
+ baselineShift?: MaybeSignal<number | string | undefined>;
499
+ baseProfile?: MaybeSignal<number | string | undefined>;
500
+ bbox?: MaybeSignal<number | string | undefined>;
501
+ begin?: MaybeSignal<number | string | undefined>;
502
+ bias?: MaybeSignal<number | string | undefined>;
503
+ by?: MaybeSignal<number | string | undefined>;
504
+ calcMode?: MaybeSignal<number | string | undefined>;
505
+ capHeight?: MaybeSignal<number | string | undefined>;
506
+ clip?: MaybeSignal<number | string | undefined>;
507
+ clipPath?: MaybeSignal<string | undefined>;
508
+ clipPathUnits?: MaybeSignal<number | string | undefined>;
509
+ clipRule?: MaybeSignal<number | string | undefined>;
510
+ colorInterpolation?: MaybeSignal<number | string | undefined>;
511
+ colorInterpolationFilters?: MaybeSignal<"auto" | "sRGB" | "linearRGB" | "inherit" | undefined>;
512
+ colorProfile?: MaybeSignal<number | string | undefined>;
513
+ colorRendering?: MaybeSignal<number | string | undefined>;
514
+ contentScriptType?: MaybeSignal<number | string | undefined>;
515
+ contentStyleType?: MaybeSignal<number | string | undefined>;
516
+ cursor?: MaybeSignal<number | string | undefined>;
517
+ cx?: MaybeSignal<number | string | undefined>;
518
+ cy?: MaybeSignal<number | string | undefined>;
519
+ d?: MaybeSignal<string | undefined>;
520
+ decelerate?: MaybeSignal<number | string | undefined>;
521
+ descent?: MaybeSignal<number | string | undefined>;
522
+ diffuseConstant?: MaybeSignal<number | string | undefined>;
523
+ direction?: MaybeSignal<number | string | undefined>;
524
+ display?: MaybeSignal<number | string | undefined>;
525
+ divisor?: MaybeSignal<number | string | undefined>;
526
+ dominantBaseline?: MaybeSignal<number | string | undefined>;
527
+ dur?: MaybeSignal<number | string | undefined>;
528
+ dx?: MaybeSignal<number | string | undefined>;
529
+ dy?: MaybeSignal<number | string | undefined>;
530
+ edgeMode?: MaybeSignal<number | string | undefined>;
531
+ elevation?: MaybeSignal<number | string | undefined>;
532
+ enableBackground?: MaybeSignal<number | string | undefined>;
533
+ end?: MaybeSignal<number | string | undefined>;
534
+ exponent?: MaybeSignal<number | string | undefined>;
535
+ externalResourcesRequired?: MaybeSignal<number | string | undefined>;
536
+ fill?: MaybeSignal<string | undefined>;
537
+ fillOpacity?: MaybeSignal<number | string | undefined>;
538
+ fillRule?: MaybeSignal<"nonzero" | "evenodd" | "inherit" | undefined>;
539
+ filter?: MaybeSignal<string | undefined>;
540
+ filterRes?: MaybeSignal<number | string | undefined>;
541
+ filterUnits?: MaybeSignal<number | string | undefined>;
542
+ floodColor?: MaybeSignal<number | string | undefined>;
543
+ floodOpacity?: MaybeSignal<number | string | undefined>;
544
+ focusable?: MaybeSignal<number | string | undefined>;
545
+ fontFamily?: MaybeSignal<string | undefined>;
546
+ fontSize?: MaybeSignal<number | string | undefined>;
547
+ fontSizeAdjust?: MaybeSignal<number | string | undefined>;
548
+ fontStretch?: MaybeSignal<number | string | undefined>;
549
+ fontStyle?: MaybeSignal<number | string | undefined>;
550
+ fontVariant?: MaybeSignal<number | string | undefined>;
551
+ fontWeight?: MaybeSignal<number | string | undefined>;
552
+ format?: MaybeSignal<number | string | undefined>;
553
+ from?: MaybeSignal<number | string | undefined>;
554
+ fx?: MaybeSignal<number | string | undefined>;
555
+ fy?: MaybeSignal<number | string | undefined>;
556
+ g1?: MaybeSignal<number | string | undefined>;
557
+ g2?: MaybeSignal<number | string | undefined>;
558
+ glyphName?: MaybeSignal<number | string | undefined>;
559
+ glyphOrientationHorizontal?: MaybeSignal<number | string | undefined>;
560
+ glyphOrientationVertical?: MaybeSignal<number | string | undefined>;
561
+ glyphRef?: MaybeSignal<number | string | undefined>;
562
+ gradientTransform?: MaybeSignal<string | undefined>;
563
+ gradientUnits?: MaybeSignal<string | undefined>;
564
+ hanging?: MaybeSignal<number | string | undefined>;
565
+ horizAdvX?: MaybeSignal<number | string | undefined>;
566
+ horizOriginX?: MaybeSignal<number | string | undefined>;
567
+ ideographic?: MaybeSignal<number | string | undefined>;
568
+ imageRendering?: MaybeSignal<number | string | undefined>;
569
+ in2?: MaybeSignal<number | string | undefined>;
570
+ in?: MaybeSignal<string | undefined>;
571
+ intercept?: MaybeSignal<number | string | undefined>;
572
+ k1?: MaybeSignal<number | string | undefined>;
573
+ k2?: MaybeSignal<number | string | undefined>;
574
+ k3?: MaybeSignal<number | string | undefined>;
575
+ k4?: MaybeSignal<number | string | undefined>;
576
+ k?: MaybeSignal<number | string | undefined>;
577
+ kernelMatrix?: MaybeSignal<number | string | undefined>;
578
+ kernelUnitLength?: MaybeSignal<number | string | undefined>;
579
+ kerning?: MaybeSignal<number | string | undefined>;
580
+ keyPoints?: MaybeSignal<number | string | undefined>;
581
+ keySplines?: MaybeSignal<number | string | undefined>;
582
+ keyTimes?: MaybeSignal<number | string | undefined>;
583
+ lengthAdjust?: MaybeSignal<number | string | undefined>;
584
+ letterSpacing?: MaybeSignal<number | string | undefined>;
585
+ lightingColor?: MaybeSignal<number | string | undefined>;
586
+ limitingConeAngle?: MaybeSignal<number | string | undefined>;
587
+ local?: MaybeSignal<number | string | undefined>;
588
+ markerEnd?: MaybeSignal<string | undefined>;
589
+ markerHeight?: MaybeSignal<number | string | undefined>;
590
+ markerMid?: MaybeSignal<string | undefined>;
591
+ markerStart?: MaybeSignal<string | undefined>;
592
+ markerUnits?: MaybeSignal<number | string | undefined>;
593
+ markerWidth?: MaybeSignal<number | string | undefined>;
594
+ mask?: MaybeSignal<string | undefined>;
595
+ maskContentUnits?: MaybeSignal<number | string | undefined>;
596
+ maskUnits?: MaybeSignal<number | string | undefined>;
597
+ mathematical?: MaybeSignal<number | string | undefined>;
598
+ mode?: MaybeSignal<number | string | undefined>;
599
+ numOctaves?: MaybeSignal<number | string | undefined>;
600
+ offset?: MaybeSignal<number | string | undefined>;
601
+ opacity?: MaybeSignal<number | string | undefined>;
602
+ operator?: MaybeSignal<number | string | undefined>;
603
+ order?: MaybeSignal<number | string | undefined>;
604
+ orient?: MaybeSignal<number | string | undefined>;
605
+ orientation?: MaybeSignal<number | string | undefined>;
606
+ origin?: MaybeSignal<number | string | undefined>;
607
+ overflow?: MaybeSignal<number | string | undefined>;
608
+ overlinePosition?: MaybeSignal<number | string | undefined>;
609
+ overlineThickness?: MaybeSignal<number | string | undefined>;
610
+ paintOrder?: MaybeSignal<number | string | undefined>;
611
+ panose1?: MaybeSignal<number | string | undefined>;
612
+ pathLength?: MaybeSignal<number | string | undefined>;
613
+ patternContentUnits?: MaybeSignal<string | undefined>;
614
+ patternTransform?: MaybeSignal<number | string | undefined>;
615
+ patternUnits?: MaybeSignal<string | undefined>;
616
+ pointerEvents?: MaybeSignal<number | string | undefined>;
617
+ points?: MaybeSignal<string | undefined>;
618
+ pointsAtX?: MaybeSignal<number | string | undefined>;
619
+ pointsAtY?: MaybeSignal<number | string | undefined>;
620
+ pointsAtZ?: MaybeSignal<number | string | undefined>;
621
+ preserveAlpha?: MaybeSignal<number | string | undefined>;
622
+ preserveAspectRatio?: MaybeSignal<string | undefined>;
623
+ primitiveUnits?: MaybeSignal<number | string | undefined>;
624
+ r?: MaybeSignal<number | string | undefined>;
625
+ radius?: MaybeSignal<number | string | undefined>;
626
+ refX?: MaybeSignal<number | string | undefined>;
627
+ refY?: MaybeSignal<number | string | undefined>;
628
+ renderingIntent?: MaybeSignal<number | string | undefined>;
629
+ repeatCount?: MaybeSignal<number | string | undefined>;
630
+ repeatDur?: MaybeSignal<number | string | undefined>;
631
+ requiredExtensions?: MaybeSignal<number | string | undefined>;
632
+ requiredFeatures?: MaybeSignal<number | string | undefined>;
633
+ restart?: MaybeSignal<number | string | undefined>;
634
+ result?: MaybeSignal<string | undefined>;
635
+ rotate?: MaybeSignal<number | string | undefined>;
636
+ rx?: MaybeSignal<number | string | undefined>;
637
+ ry?: MaybeSignal<number | string | undefined>;
638
+ scale?: MaybeSignal<number | string | undefined>;
639
+ seed?: MaybeSignal<number | string | undefined>;
640
+ shapeRendering?: MaybeSignal<number | string | undefined>;
641
+ slope?: MaybeSignal<number | string | undefined>;
642
+ spacing?: MaybeSignal<number | string | undefined>;
643
+ specularConstant?: MaybeSignal<number | string | undefined>;
644
+ specularExponent?: MaybeSignal<number | string | undefined>;
645
+ speed?: MaybeSignal<number | string | undefined>;
646
+ spreadMethod?: MaybeSignal<string | undefined>;
647
+ startOffset?: MaybeSignal<number | string | undefined>;
648
+ stdDeviation?: MaybeSignal<number | string | undefined>;
649
+ stemh?: MaybeSignal<number | string | undefined>;
650
+ stemv?: MaybeSignal<number | string | undefined>;
651
+ stitchTiles?: MaybeSignal<number | string | undefined>;
652
+ stopColor?: MaybeSignal<string | undefined>;
653
+ stopOpacity?: MaybeSignal<number | string | undefined>;
654
+ strikethroughPosition?: MaybeSignal<number | string | undefined>;
655
+ strikethroughThickness?: MaybeSignal<number | string | undefined>;
656
+ string?: MaybeSignal<number | string | undefined>;
657
+ stroke?: MaybeSignal<string | undefined>;
658
+ strokeDasharray?: MaybeSignal<number | string | undefined>;
659
+ strokeDashoffset?: MaybeSignal<number | string | undefined>;
660
+ strokeLinecap?: MaybeSignal<"butt" | "round" | "square" | "inherit" | undefined>;
661
+ strokeLinejoin?: MaybeSignal<"miter" | "round" | "bevel" | "inherit" | undefined>;
662
+ strokeMiterlimit?: MaybeSignal<number | string | undefined>;
663
+ strokeOpacity?: MaybeSignal<number | string | undefined>;
664
+ strokeWidth?: MaybeSignal<number | string | undefined>;
665
+ surfaceScale?: MaybeSignal<number | string | undefined>;
666
+ systemLanguage?: MaybeSignal<number | string | undefined>;
667
+ tableValues?: MaybeSignal<number | string | undefined>;
668
+ targetX?: MaybeSignal<number | string | undefined>;
669
+ targetY?: MaybeSignal<number | string | undefined>;
670
+ textAnchor?: MaybeSignal<string | undefined>;
671
+ textDecoration?: MaybeSignal<number | string | undefined>;
672
+ textLength?: MaybeSignal<number | string | undefined>;
673
+ textRendering?: MaybeSignal<number | string | undefined>;
674
+ to?: MaybeSignal<number | string | undefined>;
675
+ transform?: MaybeSignal<string | undefined>;
676
+ u1?: MaybeSignal<number | string | undefined>;
677
+ u2?: MaybeSignal<number | string | undefined>;
678
+ underlinePosition?: MaybeSignal<number | string | undefined>;
679
+ underlineThickness?: MaybeSignal<number | string | undefined>;
680
+ unicode?: MaybeSignal<number | string | undefined>;
681
+ unicodeBidi?: MaybeSignal<number | string | undefined>;
682
+ unicodeRange?: MaybeSignal<number | string | undefined>;
683
+ unitsPerEm?: MaybeSignal<number | string | undefined>;
684
+ vAlphabetic?: MaybeSignal<number | string | undefined>;
685
+ values?: MaybeSignal<string | undefined>;
686
+ vectorEffect?: MaybeSignal<number | string | undefined>;
687
+ version?: MaybeSignal<string | undefined>;
688
+ vertAdvY?: MaybeSignal<number | string | undefined>;
689
+ vertOriginX?: MaybeSignal<number | string | undefined>;
690
+ vertOriginY?: MaybeSignal<number | string | undefined>;
691
+ vHanging?: MaybeSignal<number | string | undefined>;
692
+ vIdeographic?: MaybeSignal<number | string | undefined>;
693
+ viewBox?: MaybeSignal<string | undefined>;
694
+ viewTarget?: MaybeSignal<number | string | undefined>;
695
+ visibility?: MaybeSignal<number | string | undefined>;
696
+ vMathematical?: MaybeSignal<number | string | undefined>;
697
+ widths?: MaybeSignal<number | string | undefined>;
698
+ wordSpacing?: MaybeSignal<number | string | undefined>;
699
+ writingMode?: MaybeSignal<number | string | undefined>;
700
+ x1?: MaybeSignal<number | string | undefined>;
701
+ x2?: MaybeSignal<number | string | undefined>;
702
+ x?: MaybeSignal<number | string | undefined>;
703
+ xChannelSelector?: MaybeSignal<string | undefined>;
704
+ xHeight?: MaybeSignal<number | string | undefined>;
705
+ xlinkActuate?: MaybeSignal<string | undefined>;
706
+ xlinkArcrole?: MaybeSignal<string | undefined>;
707
+ xlinkHref?: MaybeSignal<string | undefined>;
708
+ xlinkRole?: MaybeSignal<string | undefined>;
709
+ xlinkShow?: MaybeSignal<string | undefined>;
710
+ xlinkTitle?: MaybeSignal<string | undefined>;
711
+ xlinkType?: MaybeSignal<string | undefined>;
712
+ xmlBase?: MaybeSignal<string | undefined>;
713
+ xmlLang?: MaybeSignal<string | undefined>;
714
+ xmlns?: MaybeSignal<string | undefined>;
715
+ xmlnsXlink?: MaybeSignal<string | undefined>;
716
+ xmlSpace?: MaybeSignal<string | undefined>;
717
+ y1?: MaybeSignal<number | string | undefined>;
718
+ y2?: MaybeSignal<number | string | undefined>;
719
+ y?: MaybeSignal<number | string | undefined>;
720
+ yChannelSelector?: MaybeSignal<string | undefined>;
721
+ z?: MaybeSignal<number | string | undefined>;
722
+ zoomAndPan?: MaybeSignal<string | undefined>;
723
+ }
724
+
725
+ type RemoveOn<S extends string> = S extends `on${infer R}` ? Uncapitalize<R> : never;
726
+ type CamelCaseToKebabCase<S extends string> = S extends `${infer F}${infer R}` ? F extends Lowercase<F> ? `${F}${CamelCaseToKebabCase<R>}` : `-${Lowercase<F>}${CamelCaseToKebabCase<R>}` : Lowercase<S>;
727
+ type JsxPropNameToEventName<S extends string> = CamelCaseToKebabCase<RemoveOn<S>>;
728
+
729
+ declare const contextSym: unique symbol;
730
+ /**
731
+ * A value that can be passed through the component tree without having to be
732
+ * explicitly passed as a prop.
733
+ */
734
+ interface Context<in out T> {
735
+ readonly [contextSym]: string;
736
+ /** @ignore */
737
+ readonly _init: T;
738
+ /** @ignore */
739
+ readonly _opts?: SetSignalOptions;
740
+ }
741
+ /**
742
+ * Creates a new context with the given value.
743
+ */
744
+ declare const createContext: (<T>(value: T, opts?: SetSignalOptions) => Context<T>) & (<T>(value?: T, opts?: SetSignalOptions) => Context<T | undefined>);
745
+ declare const useContext: <T>(context: Context<T>) => Signal<T>;
746
+
747
+ /**
748
+ * Represents a render result of a component.
749
+ */
750
+ interface Template {
751
+ /**
752
+ * Build the DOM elements represented by this template.
753
+ */
754
+ build(): Node[];
755
+ }
756
+
757
+ interface Tagged<in out T> {
758
+ _tag: T;
759
+ }
760
+ type OmitNever<T> = Omit<T, {
761
+ [K in keyof T]: T[K] extends never ? K : never;
762
+ }[keyof T]>;
763
+ type PartialRequire<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;
764
+ /** @ignore */
765
+ interface PropMeta<T> extends PropOptions<T>, Tagged<"p"> {
766
+ _type?: [T];
767
+ _defaultOrContext: T;
768
+ }
769
+ interface AttributeOptions<T> {
770
+ /**
771
+ * The name of the attribute to observe.
772
+ *
773
+ * Defaults to the kebab-case version of the prop.
774
+ */
775
+ name?: string;
776
+ /**
777
+ * A function to transform the attribute value to the prop value.
778
+ */
779
+ transform: (value: string) => T;
780
+ /**
781
+ * Set to `true` to not observe the attribute for changes.
782
+ *
783
+ * @default false
784
+ */
785
+ static?: boolean;
786
+ }
787
+ type PartialPartial<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
788
+ interface PropOptions<T> {
789
+ attribute?: ((value: string) => T) | (string extends T ? PartialPartial<AttributeOptions<T>, "transform"> : AttributeOptions<T>);
790
+ }
791
+ type Props<M> = OmitNever<{
792
+ readonly [K in keyof M]: M[K] extends PropMeta<infer T> ? Signal<T> : never;
793
+ }>;
794
+ type EventConstructor<T = any, E = Event> = new (name: string, arg: T) => E;
795
+ /** @ignore */
796
+ interface EventMeta<out E extends EventConstructor> extends Tagged<"e"> {
797
+ _event: E;
798
+ }
799
+ type Events<M> = OmitNever<Omit<{
800
+ readonly [K in keyof M]: K extends `on${string}` ? M[K] extends EventMeta<infer E> ? E : never : never;
801
+ }, `on${Lowercase<keyof HTMLElementEventMap>}`>>;
802
+ type GeneralJsxProps<T> = Partial<OmitNever<{
803
+ [K in keyof T]: K extends typeof jsxPropsSym | keyof DomProps<any> | `on${string}` | `${Uppercase<infer _>}${string}` | "accessKeyLabel" | "offsetHeight" | "offsetLeft" | "offsetParent" | "offsetTop" | "offsetWidth" | "attributes" | "classList" | "clientHeight" | "clientLeft" | "clientTop" | "clientWidth" | "localName" | "namespaceURI" | "ownerDocument" | "part" | "prefix" | "scrollHeight" | "scrollWidth" | "shadowRoot" | "tagName" | "baseURI" | "childNodes" | "firstChild" | "isConnected" | "lastChild" | "nextSibling" | "nodeName" | "nodeType" | "parentElement" | "parentNode" | "previousSibling" | "nextElementSibling" | "previousElementSibling" | "childElementCount" | "firstElementChild" | "lastElementChild" | "assignedSlot" | "attributeStyleMap" | "isContentEditable" | "dataset" ? never : T[K] extends Function ? never : MaybeSignal<T[K]>;
804
+ }>> & DomProps<any> & DomEventProps<never> & Record<string, any>;
805
+ declare global {
806
+ interface HTMLElement {
807
+ readonly [jsxPropsSym]?: GeneralJsxProps<this>;
808
+ }
809
+ }
810
+ type JsxProps<T extends HTMLElement> = typeof jsxPropsSym extends keyof T ? NonNullable<T[typeof jsxPropsSym]> : never;
811
+ type ComponentJsxProps<M> = Partial<OmitNever<{
812
+ [K in keyof Props<M>]: Props<M>[K] extends Signal<infer T> ? MaybeSignal<T> : never;
813
+ }> & {
814
+ [K in keyof Events<M>]: (evt: InstanceType<Events<M>[K]>) => void;
815
+ }> & GeneralJsxProps<HTMLElement>;
816
+ type EventEmitters<M> = OmitNever<Omit<{
817
+ [K in keyof Events<M>]: Events<M>[K] extends EventConstructor<infer E> ? undefined extends E ? (arg?: E) => boolean : (arg: E) => boolean : never;
818
+ }, `on${Lowercase<keyof HTMLElementEventMap>}`>>;
819
+ /**
820
+ * Defines a property in your component metadata that can be set from outside
821
+ * of the component.
822
+ *
823
+ * Make sure to avoid conflicts with native `HTMLElement` properties.
824
+ *
825
+ * You can get properties by accessing the {@link Signal} in `this.props`.
826
+ * It's also possible to set the properties directly on the component instance.
827
+ *
828
+ * It's also possible to define an attribute for the property by setting the
829
+ * `attribute` option. By default, the attribute name is the kebab-case version
830
+ * of the property name. The attribute will be observed and the signal updated
831
+ * on changes. You can also provide a custom name and a transform function to
832
+ * convert the attribute value to the property value.
833
+ *
834
+ * @example
835
+ * ```tsx
836
+ * class App extends Component("x-app", {
837
+ * greetingMessage: prop<string>("Hello, world!", {
838
+ * attribute: {
839
+ * name: "greeting",
840
+ * }
841
+ * }),
842
+ * }) {
843
+ * render() {
844
+ * return <h1>{this.props.greetingMessage}</h1>;
845
+ * }
846
+ * }
847
+ *
848
+ * defineComponents(App);
849
+ *
850
+ * const app = new App();
851
+ * app.greetingMessage = "Hello, universe!";
852
+ * ```
853
+ */
854
+ declare const prop: (<T>(context: Context<T>, opts?: PropOptions<T>) => PropMeta<T | undefined>) & (<T>(defaultValue: T, opts?: PropOptions<T>) => PropMeta<T>) & (<T>(defaultValue?: T, opts?: PropOptions<T | undefined>) => PropMeta<T | undefined>);
855
+ type _CustomEventContructor<T> = undefined extends T ? typeof CustomEvent<T> : EventConstructor<PartialRequire<CustomEventInit<T>, "detail">, CustomEvent<T>>;
856
+ /**
857
+ * Defines an event in your component metadata that can be dispatched by
858
+ * the component.
859
+ *
860
+ * Make sure your event name starts with `on` and to avoid conflicts with
861
+ * native `HTMLElement` events. The event name will be converted to kebab-case.
862
+ *
863
+ * You can dispatch events either using `HTMLElement.dispatchEvent` or by
864
+ * calling the event emitter function in `this.events` inside the `render`
865
+ * function of a component.
866
+ *
867
+ * @example
868
+ * ```tsx
869
+ * class App extends Component("x-app", {
870
+ * onSomethingHappen: event<string>(),
871
+ * // Event name will be `something-happen`
872
+ * }) {
873
+ * render() {
874
+ * // …
875
+ * this.events.onSomethingHappen({ detail: "Something happened! "});
876
+ * }
877
+ * }
878
+ *
879
+ * const app = new App();
880
+ * app.addEventListener("something-happen", (evt) => {
881
+ * // `evt` is `CustomEvent<string>`
882
+ * console.log(evt.detail);
883
+ * });
884
+ * ```
885
+ *
886
+ * You can also provide a custom event constructor:
887
+ *
888
+ * @example
889
+ * ```tsx
890
+ * class App extends Component("x-app", {
891
+ * onSomethingClick: event(() => MouseEvent),
892
+ * }) {
893
+ * render() {
894
+ * return (
895
+ * <button onclick={evt => this.events.onSomethingClick(evt)}>
896
+ * Click me!
897
+ * </button>
898
+ * );
899
+ * }
900
+ * }
901
+ * ```
902
+ */
903
+ declare const event: (() => EventMeta<_CustomEventContructor<undefined>>) & (<T>() => EventMeta<_CustomEventContructor<T>>) & (<E extends EventConstructor>(eventConstructor: E) => EventMeta<E>);
904
+ type Metadata = {
905
+ [K in keyof ComponentInner<any> | "props" | "events"]?: never;
906
+ } & {
907
+ [K in keyof DomProps<any>]?: never;
908
+ } & {
909
+ [K in keyof HTMLElement]?: never;
910
+ } & {
911
+ [name: string]: PropMeta<any> | EventMeta<any>;
912
+ };
913
+ declare const componentSym: unique symbol;
914
+ declare const jsxPropsSym: unique symbol;
915
+ declare abstract class ComponentInner<M extends Metadata> {
916
+ protected props: Props<M>;
917
+ protected events: EventEmitters<M>;
918
+ readonly [jsxPropsSym]?: ComponentJsxProps<M>;
919
+ readonly [componentSym]: {
920
+ _scope?: ReturnType<typeof useScope>;
921
+ _destroy?: (() => void) | void;
922
+ };
923
+ connectedCallback(): void;
924
+ disconnectedCallback(): void;
925
+ attributeChangedCallback(name: string, oldValue: string | null, value: string | null): void;
926
+ addEventListener<K extends keyof Events<M> & string>(type: JsxPropNameToEventName<K>, listener: (event: InstanceType<Events<M>[K]>) => void, options?: boolean | AddEventListenerOptions): void;
927
+ removeEventListener<K extends keyof Events<M> & string>(type: JsxPropNameToEventName<K>, listener: (event: InstanceType<Events<M>[K]>) => void, options?: boolean | EventListenerOptions): void;
928
+ abstract render(): Template;
929
+ }
930
+ interface ComponentConstructor<M extends Metadata = {}> {
931
+ /** @ignore */
932
+ readonly [componentSym]: {
933
+ readonly _tagName: string;
934
+ };
935
+ readonly observedAttributes: readonly string[];
936
+ new (): Component<M>;
937
+ }
938
+ interface ComponentOptions {
939
+ /**
940
+ * Shadow DOM options. Set to `false` to disable shadow DOM.
941
+ *
942
+ * @default { mode: "open" }
943
+ */
944
+ shadow?: ShadowRootInit | false;
945
+ }
946
+ /**
947
+ * Creates an effect which will rerun when any accessed signal changes.
948
+ *
949
+ * If used inside of a component and the component is not yet mounted, the
950
+ * effect will run only after the component is mounted. Otherwise, the effect
951
+ * will run immediately.
952
+ *
953
+ * @param fn The function to run; it may return a cleanup function.
954
+ */
955
+ declare const useMountEffect: (fn: () => Cleanup, deps?: Signal<unknown>[]) => void;
956
+ type Component<M extends Metadata = {}> = {
957
+ -readonly [K in keyof Props<M>]: Props<M>[K] extends Signal<infer T> ? T : never;
958
+ } & ComponentInner<M> & HTMLElement;
959
+ /**
960
+ * Creates a new web component class.
961
+ *
962
+ * Specify props and events using the `metadata` parameter.
963
+ *
964
+ * @example
965
+ * ```tsx
966
+ * class MyComponent extends Component("my-component", {
967
+ * myProp: prop<string>("Hello, world!"),
968
+ * onMyEvent: event(),
969
+ * }) {
970
+ * render() {
971
+ * return (
972
+ * <>
973
+ * <h1>{this.props.myProp}</h1>
974
+ * <button onclick={() => this.events.onMyEvent()}>Click me</button>
975
+ * </>
976
+ * );
977
+ * },
978
+ * }
979
+ *
980
+ * customElements.define("my-component", MyComponent);
981
+ * ```
982
+ */
983
+ declare const Component: ((tagName: string) => ComponentConstructor<{}>) & (<const M extends Metadata>(tagName: string, metadata: M, opts?: ComponentOptions) => ComponentConstructor<M>);
984
+ /**
985
+ * Determines whether the given value is a component created by
986
+ * extending {@link ComponentConstructor}.
987
+ */
988
+ declare const isComponent: (value: any) => value is ComponentConstructor<{}> | Component<{}>;
989
+ /**
990
+ * Represents a functional component.
991
+ *
992
+ * @example
993
+ * ```tsx
994
+ * const MyComponent: FunctionalComponent<{
995
+ * name: MaybeSignal<string>;
996
+ * }> = ({ name }) => {
997
+ * return <h1>Hello, {name}!</h1>;
998
+ * };
999
+ * ```
1000
+ */
1001
+ interface FunctionalComponent<in P extends object = {}> {
1002
+ (props: P): Template;
1003
+ }
1004
+ /**
1005
+ * Defines a set of components with the given prefix.
1006
+ */
1007
+ declare const defineComponents: ((...components: ComponentConstructor[]) => void) & ((prefix: string, ...components: ComponentConstructor[]) => void);
1008
+
1009
+ type Children = Template | MaybeSignal<string | number | null | undefined> | Children[];
1010
+ /**
1011
+ * Fragment is a component that can be used to wrap multiple children without
1012
+ * introducing an extra DOM element.
1013
+ *
1014
+ * @example
1015
+ * ```tsx
1016
+ * render() {
1017
+ * return (
1018
+ * <>
1019
+ * <h1>Hello World</h1>
1020
+ * <p>This is a paragraph.</p>
1021
+ * </>
1022
+ * );
1023
+ * }
1024
+ * ```
1025
+ */
1026
+ declare const Fragment: FunctionalComponent<{
1027
+ children?: Children;
1028
+ }>;
1029
+
1030
+ /**
1031
+ * Creates a template based on the given component type.
1032
+ *
1033
+ * @example
1034
+ * ```tsx
1035
+ * render() {
1036
+ * return createElement("div", { id: "app" }, [
1037
+ * createElement("h1", {}, "Hello, World!"),
1038
+ * ]);
1039
+ * }
1040
+ * ```
1041
+ */
1042
+ declare const createElement: (<K extends keyof DomIntrinsicElements & string>(type: K, props?: DomIntrinsicElements[K], children?: Children) => Template) & (<T extends HTMLElement>(...args: [
1043
+ type: new () => T,
1044
+ ...({} extends JsxProps<T> ? [props?: JsxProps<T>] : [props: JsxProps<T>]),
1045
+ children?: DomProps<T>["children"]
1046
+ ]) => Template) & (<P extends object>(...args: [
1047
+ type: FunctionalComponent<P>,
1048
+ ...({} extends P ? [props?: P] : [props: P]),
1049
+ ...(P extends {
1050
+ children?: unknown;
1051
+ } ? undefined extends P["children"] ? [children?: P["children"]] : [children: P["children"]] : [])
1052
+ ]) => Template);
1053
+ /**
1054
+ * Shorthand for {@link createElement} with convenience methods for intrinsic
1055
+ * elements.
1056
+ *
1057
+ * @example
1058
+ * ```tsx
1059
+ * render() {
1060
+ * return h.div({ id: "app" }, [
1061
+ * h.h1({}, "Hello, World!"),
1062
+ * ]);
1063
+ * }
1064
+ * ```
1065
+ */
1066
+ declare const h: typeof createElement & {
1067
+ [K in keyof DomIntrinsicElements]: (props?: DomIntrinsicElements[K], children?: Children) => Template;
1068
+ };
1069
+
1070
+ /**
1071
+ * `For` is a component that can be used to render a list of items.
1072
+ */
1073
+ declare const For: <T>(props: {
1074
+ each?: MaybeSignal<readonly T[]> | undefined;
1075
+ key?: ((item: T, index: number) => string | number) | undefined;
1076
+ children?: ((item: Signal<T>, index: Signal<number>, arr: SignalLike<readonly T[]>) => Template) | undefined;
1077
+ }) => Template;
1078
+
1079
+ /**
1080
+ * `If` is a component that can be used to render conditionally.
1081
+ */
1082
+ declare const If: FunctionalComponent<{
1083
+ condition?: MaybeSignal<boolean>;
1084
+ children?: Children;
1085
+ }>;
1086
+ /**
1087
+ * `ElseIf` serves as an `else if` block for {@link If}. It can also be chained
1088
+ * multiple times.
1089
+ */
1090
+ declare const ElseIf: FunctionalComponent<{
1091
+ condition?: MaybeSignal<boolean>;
1092
+ children?: Children;
1093
+ }>;
1094
+ /**
1095
+ * `Else` indicates the `else` block for {@link If} and {@link ElseIf}.
1096
+ */
1097
+ declare const Else: FunctionalComponent<{
1098
+ children?: Children;
1099
+ }>;
1100
+
1101
+ declare const Portal: FunctionalComponent<{
1102
+ mount: Node;
1103
+ children?: Children;
1104
+ }>;
1105
+
1106
+ declare const Style: FunctionalComponent<{
1107
+ light?: boolean;
1108
+ children?: MaybeSignal<string>;
1109
+ }>;
1110
+ declare const css: (strings: TemplateStringsArray, ...values: MaybeSignal<string | number>[]) => MaybeSignal<string>;
1111
+
1112
+ /** @ignore */
1113
+ declare const jsx: (type: any, props?: (object & {
1114
+ key?: unknown;
1115
+ }) | undefined, key?: unknown) => Template;
1116
+ /** @ignore */
1117
+ declare namespace JSX {
1118
+ type Element = Template;
1119
+ type ElementClass = Omit<HTMLElement, typeof jsxPropsSym>;
1120
+ interface ElementAttributesProperty {
1121
+ [jsxPropsSym]: {};
1122
+ }
1123
+ interface ElementChildrenAttribute {
1124
+ children: {};
1125
+ }
1126
+ type IntrinsicElements = DomIntrinsicElements;
1127
+ interface IntrinsicClassAttributes<T> extends DomProps<T>, DomEventProps<T> {
1128
+ }
1129
+ }
1130
+
1131
+ export { type AttributeOptions, type Children, type Cleanup, Component, type ComponentConstructor, type ComponentOptions, type Context, type DangerousHtml, Else, ElseIf, type EventConstructor, For, Fragment, type FunctionalComponent, If, JSX, MaybeSignal, type Metadata, Portal, type PropOptions, type RefSignal, type RefSignalSetter, type SetSignalOptions, type Signal, type SignalLike, type SignalSetter, Style, type Styles, type SubscopeOptions, type Template, createContext, createElement, css, defineComponents, event, h, isComponent, jsx, jsx as jsxDEV, jsx as jsxs, prop, useBatch, useContext, useMountEffect as useEffect, useMemo, useRef, useSignal };