@pyreon/core 0.7.4 → 0.7.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"jsx-dev-runtime.js","names":[],"sources":["../src/h.ts","../src/jsx-runtime.ts"],"sourcesContent":["import type { ComponentFn, Props, VNode, VNodeChild } from \"./types\"\n\n/** Marker for fragment nodes — renders children without a wrapper element */\nexport const Fragment: unique symbol = Symbol(\"Pyreon.Fragment\")\n\n/**\n * Hyperscript function — the compiled output of JSX.\n * `<div class=\"x\">hello</div>` → `h(\"div\", { class: \"x\" }, \"hello\")`\n *\n * Generic on P so TypeScript validates props match the component's signature\n * at the call site, then stores the result in the loosely-typed VNode.\n */\n/** Shared empty props sentinel — identity-checked in mountElement to skip applyProps. */\nexport const EMPTY_PROPS: Props = {} as Props\n\n/** Makes `children` optional in P (if present) so it can be passed as rest args to h(). */\ntype PropsWithOptionalChildren<P extends Props> = Omit<P, \"children\"> &\n (\"children\" extends keyof P ? { children?: P[\"children\"] } : unknown)\n\n// Overload: component with typed props — children is optional in the props object\n// because it can be passed as rest args. Extra keys are allowed via `& Props`.\nexport function h<P extends Props>(\n type: ComponentFn<P>,\n props: (PropsWithOptionalChildren<P> & Props) | null,\n ...children: VNodeChild[]\n): VNode\n// Overload: intrinsic element, symbol, generic/dynamic component, or mixed union\nexport function h(\n type: string | ((p: any) => VNodeChild) | symbol,\n props: Props | null,\n ...children: VNodeChild[]\n): VNode\nexport function h<P extends Props>(\n type: string | ComponentFn<P> | symbol,\n props: P | null,\n ...children: VNodeChild[]\n): VNode {\n return {\n type: type as string | ComponentFn | symbol,\n props: (props ?? EMPTY_PROPS) as Props,\n children: normalizeChildren(children),\n key: (props?.key as string | number | null) ?? null,\n }\n}\n\nfunction normalizeChildren(children: VNodeChild[]): VNodeChild[] {\n // Fast path: no nested arrays — return as-is without allocating\n for (let i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return flattenChildren(children)\n }\n }\n return children\n}\n\nfunction flattenChildren(children: VNodeChild[]): VNodeChild[] {\n const result: VNodeChild[] = []\n for (const child of children) {\n if (Array.isArray(child)) {\n result.push(...flattenChildren(child as VNodeChild[]))\n } else {\n result.push(child)\n }\n }\n return result\n}\n","/**\n * JSX automatic runtime.\n *\n * When tsconfig has `\"jsxImportSource\": \"@pyreon/core\"`, the TS/bundler compiler\n * rewrites JSX to imports from this file automatically:\n * <div class=\"x\" /> → jsx(\"div\", { class: \"x\" })\n */\nimport { Fragment, h } from \"./h\"\nimport type { ComponentFn, Props, VNode, VNodeChild } from \"./types\"\n\nexport { Fragment }\n\nexport function jsx(\n type: string | ComponentFn | symbol,\n props: Props & { children?: VNodeChild | VNodeChild[] },\n key?: string | number | null,\n): VNode {\n const { children, ...rest } = props\n const propsWithKey = (key != null ? { ...rest, key } : rest) as Props\n\n if (typeof type === \"function\") {\n // Component: keep children in props.children so the component function can access them.\n // Children must NOT be spread as h() rest args because mountComponent only passes vnode.props.\n const componentProps = children !== undefined ? { ...propsWithKey, children } : propsWithKey\n return h(type, componentProps)\n }\n\n // DOM element or symbol (Fragment, ForSymbol): children go in vnode.children\n const childArray = children === undefined ? [] : Array.isArray(children) ? children : [children]\n return h(type, propsWithKey, ...(childArray as VNodeChild[]))\n}\n\n// jsxs is called when there are multiple static children — same signature\nexport const jsxs = jsx\n\n// ─── JSX types ────────────────────────────────────────────────────────────────\n\ntype Booleanish = boolean | \"true\" | \"false\"\ntype CSSProperties = { [K in keyof CSSStyleDeclaration]?: string | number }\ntype StyleValue = string | CSSProperties\n\n/** Common HTML attributes accepted by all Pyreon elements */\ninterface PyreonHTMLAttributes {\n // Identity\n id?: string | undefined\n class?: string | (() => string) | undefined\n className?: string | (() => string) | undefined\n style?: StyleValue | (() => StyleValue) | undefined\n // Accessible\n role?: string | undefined\n tabIndex?: number | (() => number) | undefined\n title?: string | undefined\n lang?: string | undefined\n dir?: \"ltr\" | \"rtl\" | \"auto\" | undefined\n hidden?: boolean | (() => boolean) | undefined\n draggable?: Booleanish | undefined\n // ARIA\n \"aria-label\"?: string | (() => string) | undefined\n \"aria-hidden\"?: Booleanish | (() => Booleanish) | undefined\n \"aria-disabled\"?: Booleanish | (() => Booleanish) | undefined\n \"aria-expanded\"?: Booleanish | (() => Booleanish) | undefined\n \"aria-selected\"?: Booleanish | (() => Booleanish) | undefined\n \"aria-checked\"?: Booleanish | \"mixed\" | (() => Booleanish | \"mixed\") | undefined\n \"aria-current\"?: Booleanish | \"page\" | \"step\" | \"location\" | \"date\" | \"time\" | undefined\n \"aria-live\"?: \"off\" | \"assertive\" | \"polite\" | undefined\n \"aria-atomic\"?: Booleanish | undefined\n \"aria-busy\"?: Booleanish | undefined\n \"aria-controls\"?: string | undefined\n \"aria-describedby\"?: string | undefined\n \"aria-labelledby\"?: string | undefined\n \"aria-placeholder\"?: string | undefined\n \"aria-required\"?: Booleanish | (() => Booleanish) | undefined\n \"aria-invalid\"?: Booleanish | \"grammar\" | \"spelling\" | undefined\n \"aria-valuemin\"?: number | undefined\n \"aria-valuemax\"?: number | undefined\n \"aria-valuenow\"?: number | undefined\n \"aria-valuetext\"?: string | undefined\n \"aria-haspopup\"?: Booleanish | \"menu\" | \"listbox\" | \"tree\" | \"grid\" | \"dialog\" | undefined\n \"aria-posinset\"?: number | undefined\n \"aria-setsize\"?: number | undefined\n \"aria-level\"?: number | undefined\n \"aria-multiline\"?: Booleanish | undefined\n \"aria-multiselectable\"?: Booleanish | undefined\n \"aria-orientation\"?: \"horizontal\" | \"vertical\" | undefined\n \"aria-readonly\"?: Booleanish | (() => Booleanish) | undefined\n \"aria-sort\"?: \"none\" | \"ascending\" | \"descending\" | \"other\" | undefined\n \"aria-autocomplete\"?: \"none\" | \"inline\" | \"list\" | \"both\" | undefined\n \"aria-colcount\"?: number | undefined\n \"aria-colindex\"?: number | undefined\n \"aria-colspan\"?: number | undefined\n \"aria-rowcount\"?: number | undefined\n \"aria-rowindex\"?: number | undefined\n \"aria-rowspan\"?: number | undefined\n // DOM lifecycle ref — object ref or callback ref\n ref?: { current: unknown } | ((el: Element | null) => void) | undefined\n // Key for list reconciliation\n key?: string | number | undefined\n // Children — allows null, undefined, boolean in JSX children positions\n children?: VNodeChild | VNodeChild[]\n // innerHTML\n innerHTML?: string | undefined\n dangerouslySetInnerHTML?: { __html: string } | undefined\n // Events\n onClick?: ((e: MouseEvent) => void) | undefined\n onDblClick?: ((e: MouseEvent) => void) | undefined\n onMouseDown?: ((e: MouseEvent) => void) | undefined\n onMouseUp?: ((e: MouseEvent) => void) | undefined\n onMouseEnter?: ((e: MouseEvent) => void) | undefined\n onMouseLeave?: ((e: MouseEvent) => void) | undefined\n onMouseMove?: ((e: MouseEvent) => void) | undefined\n onMouseOver?: ((e: MouseEvent) => void) | undefined\n onMouseOut?: ((e: MouseEvent) => void) | undefined\n onContextMenu?: ((e: MouseEvent) => void) | undefined\n onKeyDown?: ((e: KeyboardEvent) => void) | undefined\n onKeyUp?: ((e: KeyboardEvent) => void) | undefined\n onKeyPress?: ((e: KeyboardEvent) => void) | undefined\n onFocus?: ((e: FocusEvent) => void) | undefined\n onBlur?: ((e: FocusEvent) => void) | undefined\n onChange?: ((e: Event) => void) | undefined\n onInput?: ((e: InputEvent) => void) | undefined\n onSubmit?: ((e: SubmitEvent) => void) | undefined\n onReset?: ((e: Event) => void) | undefined\n onScroll?: ((e: Event) => void) | undefined\n onWheel?: ((e: WheelEvent) => void) | undefined\n onDragStart?: ((e: DragEvent) => void) | undefined\n onDragEnd?: ((e: DragEvent) => void) | undefined\n onDragOver?: ((e: DragEvent) => void) | undefined\n onDragEnter?: ((e: DragEvent) => void) | undefined\n onDragLeave?: ((e: DragEvent) => void) | undefined\n onDrop?: ((e: DragEvent) => void) | undefined\n onTouchStart?: ((e: TouchEvent) => void) | undefined\n onTouchEnd?: ((e: TouchEvent) => void) | undefined\n onTouchMove?: ((e: TouchEvent) => void) | undefined\n onPointerDown?: ((e: PointerEvent) => void) | undefined\n onPointerUp?: ((e: PointerEvent) => void) | undefined\n onPointerMove?: ((e: PointerEvent) => void) | undefined\n onPointerEnter?: ((e: PointerEvent) => void) | undefined\n onPointerLeave?: ((e: PointerEvent) => void) | undefined\n onPointerCancel?: ((e: PointerEvent) => void) | undefined\n onPointerOver?: ((e: PointerEvent) => void) | undefined\n onPointerOut?: ((e: PointerEvent) => void) | undefined\n onTransitionEnd?: ((e: TransitionEvent) => void) | undefined\n onAnimationStart?: ((e: AnimationEvent) => void) | undefined\n onAnimationEnd?: ((e: AnimationEvent) => void) | undefined\n onAnimationIteration?: ((e: AnimationEvent) => void) | undefined\n onLoad?: ((e: Event) => void) | undefined\n onError?: ((e: Event | string) => void) | undefined\n onAbort?: ((e: Event) => void) | undefined\n onSelect?: ((e: Event) => void) | undefined\n onCopy?: ((e: ClipboardEvent) => void) | undefined\n onCut?: ((e: ClipboardEvent) => void) | undefined\n onPaste?: ((e: ClipboardEvent) => void) | undefined\n // Catch-all for data-* and other arbitrary attributes\n [key: string]: unknown\n}\n\n/** Attributes specific to form inputs */\ninterface InputAttributes extends PyreonHTMLAttributes {\n type?: string | (() => string) | undefined\n value?: string | number | (() => string | number) | undefined\n defaultValue?: string | number | undefined\n checked?: boolean | (() => boolean) | undefined\n defaultChecked?: boolean | undefined\n placeholder?: string | (() => string) | undefined\n disabled?: boolean | (() => boolean) | undefined\n readOnly?: boolean | undefined\n required?: boolean | (() => boolean) | undefined\n min?: string | number | undefined\n max?: string | number | undefined\n step?: string | number | undefined\n minLength?: number | undefined\n maxLength?: number | undefined\n pattern?: string | undefined\n multiple?: boolean | undefined\n name?: string | undefined\n accept?: string | undefined\n autoComplete?: string | undefined\n autoFocus?: boolean | undefined\n form?: string | undefined\n list?: string | undefined\n size?: number | undefined\n src?: string | (() => string) | undefined\n alt?: string | undefined\n width?: number | string | undefined\n height?: number | string | undefined\n}\n\ninterface AnchorAttributes extends PyreonHTMLAttributes {\n href?: string | (() => string) | undefined\n target?: \"_blank\" | \"_self\" | \"_parent\" | \"_top\" | string | undefined\n rel?: string | undefined\n download?: string | boolean | undefined\n}\n\ninterface ButtonAttributes extends PyreonHTMLAttributes {\n type?: \"button\" | \"submit\" | \"reset\" | undefined\n disabled?: boolean | (() => boolean) | undefined\n name?: string | undefined\n value?: string | undefined\n form?: string | undefined\n formAction?: string | undefined\n formMethod?: string | undefined\n formEncType?: string | undefined\n formNoValidate?: boolean | undefined\n formTarget?: string | undefined\n}\n\ninterface TextareaAttributes extends PyreonHTMLAttributes {\n value?: string | (() => string) | undefined\n defaultValue?: string | undefined\n placeholder?: string | (() => string) | undefined\n disabled?: boolean | (() => boolean) | undefined\n readOnly?: boolean | undefined\n required?: boolean | (() => boolean) | undefined\n rows?: number | undefined\n cols?: number | undefined\n minLength?: number | undefined\n maxLength?: number | undefined\n name?: string | undefined\n autoFocus?: boolean | undefined\n form?: string | undefined\n wrap?: \"hard\" | \"soft\" | undefined\n}\n\ninterface SelectAttributes extends PyreonHTMLAttributes {\n value?: string | string[] | (() => string | string[]) | undefined\n defaultValue?: string | string[] | undefined\n disabled?: boolean | (() => boolean) | undefined\n required?: boolean | (() => boolean) | undefined\n multiple?: boolean | undefined\n name?: string | undefined\n size?: number | undefined\n form?: string | undefined\n autoFocus?: boolean | undefined\n}\n\ninterface OptionAttributes extends PyreonHTMLAttributes {\n value?: string | number | (() => string | number) | undefined\n disabled?: boolean | (() => boolean) | undefined\n selected?: boolean | (() => boolean) | undefined\n label?: string | undefined\n}\n\ninterface FormAttributes extends PyreonHTMLAttributes {\n action?: string | undefined\n method?: \"get\" | \"post\" | undefined\n encType?: string | undefined\n noValidate?: boolean | undefined\n target?: string | undefined\n name?: string | undefined\n autoComplete?: string | undefined\n}\n\ninterface ImgAttributes extends PyreonHTMLAttributes {\n src?: string | (() => string) | undefined\n alt?: string | (() => string) | undefined\n width?: number | string | (() => number | string) | undefined\n height?: number | string | (() => number | string) | undefined\n loading?: \"lazy\" | \"eager\" | undefined\n decoding?: \"auto\" | \"async\" | \"sync\" | undefined\n crossOrigin?: \"anonymous\" | \"use-credentials\" | undefined\n referrerPolicy?: string | undefined\n srcSet?: string | undefined\n sizes?: string | undefined\n}\n\ninterface VideoAttributes extends PyreonHTMLAttributes {\n src?: string | (() => string) | undefined\n width?: number | string | undefined\n height?: number | string | undefined\n controls?: boolean | undefined\n autoPlay?: boolean | undefined\n muted?: boolean | undefined\n loop?: boolean | undefined\n poster?: string | undefined\n preload?: \"none\" | \"metadata\" | \"auto\" | undefined\n playsInline?: boolean | undefined\n crossOrigin?: \"anonymous\" | \"use-credentials\" | undefined\n}\n\ninterface AudioAttributes extends PyreonHTMLAttributes {\n src?: string | (() => string) | undefined\n controls?: boolean | undefined\n autoPlay?: boolean | undefined\n muted?: boolean | undefined\n loop?: boolean | undefined\n preload?: \"none\" | \"metadata\" | \"auto\" | undefined\n crossOrigin?: \"anonymous\" | \"use-credentials\" | undefined\n}\n\ninterface LabelAttributes extends PyreonHTMLAttributes {\n htmlFor?: string | undefined\n for?: string | undefined\n form?: string | undefined\n}\n\ninterface ThAttributes extends PyreonHTMLAttributes {\n colSpan?: number | undefined\n rowSpan?: number | undefined\n scope?: \"col\" | \"row\" | \"colgroup\" | \"rowgroup\" | undefined\n abbr?: string | undefined\n headers?: string | undefined\n}\n\ninterface TdAttributes extends PyreonHTMLAttributes {\n colSpan?: number | undefined\n rowSpan?: number | undefined\n headers?: string | undefined\n}\n\ninterface ColAttributes extends PyreonHTMLAttributes {\n span?: number | undefined\n}\n\ninterface IframeAttributes extends PyreonHTMLAttributes {\n src?: string | (() => string) | undefined\n width?: number | string | undefined\n height?: number | string | undefined\n allow?: string | undefined\n allowFullScreen?: boolean | undefined\n loading?: \"lazy\" | \"eager\" | undefined\n name?: string | undefined\n sandbox?: string | undefined\n referrerPolicy?: string | undefined\n title?: string | undefined\n}\n\ninterface LinkAttributes extends PyreonHTMLAttributes {\n href?: string | (() => string) | undefined\n rel?: string | undefined\n type?: string | undefined\n as?: string | undefined\n media?: string | undefined\n crossOrigin?: \"anonymous\" | \"use-credentials\" | undefined\n integrity?: string | undefined\n referrerPolicy?: string | undefined\n}\n\ninterface MetaAttributes extends PyreonHTMLAttributes {\n name?: string | undefined\n content?: string | (() => string) | undefined\n httpEquiv?: string | undefined\n charset?: string | undefined\n property?: string | undefined\n}\n\ninterface ScriptAttributes extends PyreonHTMLAttributes {\n src?: string | (() => string) | undefined\n type?: string | undefined\n async?: boolean | undefined\n defer?: boolean | undefined\n crossOrigin?: \"anonymous\" | \"use-credentials\" | undefined\n integrity?: string | undefined\n noModule?: boolean | undefined\n referrerPolicy?: string | undefined\n}\n\ninterface SourceAttributes extends PyreonHTMLAttributes {\n src?: string | (() => string) | undefined\n type?: string | undefined\n srcSet?: string | undefined\n sizes?: string | undefined\n media?: string | undefined\n}\n\ninterface ProgressAttributes extends PyreonHTMLAttributes {\n value?: number | (() => number) | undefined\n max?: number | undefined\n}\n\ninterface MeterAttributes extends PyreonHTMLAttributes {\n value?: number | (() => number) | undefined\n min?: number | undefined\n max?: number | undefined\n low?: number | undefined\n high?: number | undefined\n optimum?: number | undefined\n}\n\ninterface DetailsAttributes extends PyreonHTMLAttributes {\n open?: boolean | (() => boolean) | undefined\n}\n\ninterface DialogAttributes extends PyreonHTMLAttributes {\n open?: boolean | (() => boolean) | undefined\n}\n\ninterface OlAttributes extends PyreonHTMLAttributes {\n start?: number | undefined\n reversed?: boolean | undefined\n type?: \"1\" | \"a\" | \"A\" | \"i\" | \"I\" | undefined\n}\n\ninterface SvgAttributes extends PyreonHTMLAttributes {\n viewBox?: string | undefined\n xmlns?: string | undefined\n fill?: string | (() => string) | undefined\n stroke?: string | (() => string) | undefined\n \"stroke-width\"?: string | number | undefined\n \"stroke-linecap\"?: \"butt\" | \"round\" | \"square\" | undefined\n \"stroke-linejoin\"?: \"miter\" | \"round\" | \"bevel\" | undefined\n \"fill-rule\"?: \"nonzero\" | \"evenodd\" | undefined\n \"clip-rule\"?: \"nonzero\" | \"evenodd\" | undefined\n \"clip-path\"?: string | undefined\n d?: string | undefined\n cx?: string | number | undefined\n cy?: string | number | undefined\n r?: string | number | undefined\n rx?: string | number | undefined\n ry?: string | number | undefined\n x?: string | number | undefined\n y?: string | number | undefined\n x1?: string | number | undefined\n y1?: string | number | undefined\n x2?: string | number | undefined\n y2?: string | number | undefined\n width?: string | number | undefined\n height?: string | number | undefined\n transform?: string | (() => string) | undefined\n opacity?: string | number | (() => string | number) | undefined\n points?: string | undefined\n \"font-size\"?: string | number | undefined\n \"text-anchor\"?: \"start\" | \"middle\" | \"end\" | undefined\n \"dominant-baseline\"?: string | undefined\n}\n\ndeclare global {\n namespace JSX {\n /** The type that JSX expressions evaluate to */\n type Element = import(\"./types\").VNode\n\n /**\n * Valid JSX tag types — intrinsic strings + component functions.\n * Components may return VNode, null, strings, functions (reactive getters), etc.\n * (TS 5.1+ feature)\n */\n type ElementType = keyof IntrinsicElements | ((props: any) => import(\"./types\").VNodeChild)\n\n /** Tells TS which prop name carries children in component calls */\n interface ElementChildrenAttribute {\n // biome-ignore lint/complexity/noBannedTypes: JSX spec requires {} for ElementChildrenAttribute\n children: {}\n }\n\n interface IntrinsicElements {\n // Document structure\n html: PyreonHTMLAttributes\n head: PyreonHTMLAttributes\n body: PyreonHTMLAttributes\n title: PyreonHTMLAttributes\n base: PyreonHTMLAttributes\n meta: MetaAttributes\n link: LinkAttributes\n script: ScriptAttributes\n style: PyreonHTMLAttributes\n noscript: PyreonHTMLAttributes\n // Sections\n main: PyreonHTMLAttributes\n header: PyreonHTMLAttributes\n footer: PyreonHTMLAttributes\n nav: PyreonHTMLAttributes\n aside: PyreonHTMLAttributes\n section: PyreonHTMLAttributes\n article: PyreonHTMLAttributes\n address: PyreonHTMLAttributes\n h1: PyreonHTMLAttributes\n h2: PyreonHTMLAttributes\n h3: PyreonHTMLAttributes\n h4: PyreonHTMLAttributes\n h5: PyreonHTMLAttributes\n h6: PyreonHTMLAttributes\n hgroup: PyreonHTMLAttributes\n // Block text\n p: PyreonHTMLAttributes\n pre: PyreonHTMLAttributes\n blockquote: PyreonHTMLAttributes\n figure: PyreonHTMLAttributes\n figcaption: PyreonHTMLAttributes\n div: PyreonHTMLAttributes\n hr: PyreonHTMLAttributes\n // Inline text\n span: PyreonHTMLAttributes\n a: AnchorAttributes\n em: PyreonHTMLAttributes\n strong: PyreonHTMLAttributes\n small: PyreonHTMLAttributes\n s: PyreonHTMLAttributes\n cite: PyreonHTMLAttributes\n q: PyreonHTMLAttributes\n abbr: PyreonHTMLAttributes\n time: PyreonHTMLAttributes\n code: PyreonHTMLAttributes\n var: PyreonHTMLAttributes\n samp: PyreonHTMLAttributes\n kbd: PyreonHTMLAttributes\n mark: PyreonHTMLAttributes\n sub: PyreonHTMLAttributes\n sup: PyreonHTMLAttributes\n i: PyreonHTMLAttributes\n b: PyreonHTMLAttributes\n u: PyreonHTMLAttributes\n bdi: PyreonHTMLAttributes\n bdo: PyreonHTMLAttributes\n br: PyreonHTMLAttributes\n wbr: PyreonHTMLAttributes\n ruby: PyreonHTMLAttributes\n rt: PyreonHTMLAttributes\n rp: PyreonHTMLAttributes\n // Lists\n ul: PyreonHTMLAttributes\n ol: OlAttributes\n li: PyreonHTMLAttributes\n dl: PyreonHTMLAttributes\n dt: PyreonHTMLAttributes\n dd: PyreonHTMLAttributes\n // Forms\n form: FormAttributes\n label: LabelAttributes\n input: InputAttributes\n button: ButtonAttributes\n select: SelectAttributes\n datalist: PyreonHTMLAttributes\n optgroup: PyreonHTMLAttributes\n option: OptionAttributes\n textarea: TextareaAttributes\n output: PyreonHTMLAttributes\n progress: ProgressAttributes\n meter: MeterAttributes\n fieldset: PyreonHTMLAttributes\n legend: PyreonHTMLAttributes\n // Tables\n table: PyreonHTMLAttributes\n caption: PyreonHTMLAttributes\n colgroup: PyreonHTMLAttributes\n col: ColAttributes\n thead: PyreonHTMLAttributes\n tbody: PyreonHTMLAttributes\n tfoot: PyreonHTMLAttributes\n tr: PyreonHTMLAttributes\n th: ThAttributes\n td: TdAttributes\n // Media\n img: ImgAttributes\n video: VideoAttributes\n audio: AudioAttributes\n source: SourceAttributes\n track: PyreonHTMLAttributes\n picture: PyreonHTMLAttributes\n canvas: PyreonHTMLAttributes\n svg: SvgAttributes\n path: SvgAttributes\n circle: SvgAttributes\n ellipse: SvgAttributes\n line: SvgAttributes\n polyline: SvgAttributes\n polygon: SvgAttributes\n rect: SvgAttributes\n text: SvgAttributes\n tspan: SvgAttributes\n g: SvgAttributes\n defs: SvgAttributes\n use: SvgAttributes & { href?: string }\n symbol: SvgAttributes\n clipPath: SvgAttributes\n mask: SvgAttributes\n marker: SvgAttributes\n pattern: SvgAttributes\n linearGradient: SvgAttributes\n radialGradient: SvgAttributes\n stop: SvgAttributes & {\n offset?: string | number\n \"stop-color\"?: string\n \"stop-opacity\"?: string | number\n }\n // Interactive / embedding\n details: DetailsAttributes\n summary: PyreonHTMLAttributes\n dialog: DialogAttributes\n iframe: IframeAttributes\n embed: PyreonHTMLAttributes\n object: PyreonHTMLAttributes\n param: PyreonHTMLAttributes\n // Semantic / misc\n menu: PyreonHTMLAttributes\n menuitem: PyreonHTMLAttributes\n template: PyreonHTMLAttributes\n slot: PyreonHTMLAttributes\n portal: PyreonHTMLAttributes\n // Catch-all for custom elements and data-* attrs\n [tagName: string]: PyreonHTMLAttributes\n }\n }\n}\n"],"mappings":";;AAGA,MAAa,WAA0B,OAAO,kBAAkB;;;;;;;;;AAUhE,MAAa,cAAqB,EAAE;AAmBpC,SAAgB,EACd,MACA,OACA,GAAG,UACI;AACP,QAAO;EACC;EACN,OAAQ,SAAS;EACjB,UAAU,kBAAkB,SAAS;EACrC,KAAM,OAAO,OAAkC;EAChD;;AAGH,SAAS,kBAAkB,UAAsC;AAE/D,MAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,IACnC,KAAI,MAAM,QAAQ,SAAS,GAAG,CAC5B,QAAO,gBAAgB,SAAS;AAGpC,QAAO;;AAGT,SAAS,gBAAgB,UAAsC;CAC7D,MAAM,SAAuB,EAAE;AAC/B,MAAK,MAAM,SAAS,SAClB,KAAI,MAAM,QAAQ,MAAM,CACtB,QAAO,KAAK,GAAG,gBAAgB,MAAsB,CAAC;KAEtD,QAAO,KAAK,MAAM;AAGtB,QAAO;;;;;;;;;;;;ACpDT,SAAgB,IACd,MACA,OACA,KACO;CACP,MAAM,EAAE,UAAU,GAAG,SAAS;CAC9B,MAAM,eAAgB,OAAO,OAAO;EAAE,GAAG;EAAM;EAAK,GAAG;AAEvD,KAAI,OAAO,SAAS,WAIlB,QAAO,EAAE,MADc,aAAa,SAAY;EAAE,GAAG;EAAc;EAAU,GAAG,aAClD;AAKhC,QAAO,EAAE,MAAM,cAAc,GADV,aAAa,SAAY,EAAE,GAAG,MAAM,QAAQ,SAAS,GAAG,WAAW,CAAC,SAAS,CACnC;;AAI/D,MAAa,OAAO"}
1
+ {"version":3,"file":"jsx-dev-runtime.js","names":[],"sources":["../src/h.ts","../src/jsx-runtime.ts"],"sourcesContent":["import type { ComponentFn, Props, VNode, VNodeChild } from \"./types\"\n\n/** Marker for fragment nodes — renders children without a wrapper element */\nexport const Fragment: unique symbol = Symbol(\"Pyreon.Fragment\")\n\n/**\n * Hyperscript function — the compiled output of JSX.\n * `<div class=\"x\">hello</div>` → `h(\"div\", { class: \"x\" }, \"hello\")`\n *\n * Generic on P so TypeScript validates props match the component's signature\n * at the call site, then stores the result in the loosely-typed VNode.\n */\n/** Shared empty props sentinel — identity-checked in mountElement to skip applyProps. */\nexport const EMPTY_PROPS: Props = {} as Props\n\n/** Makes `children` optional in P (if present) so it can be passed as rest args to h(). */\ntype PropsWithOptionalChildren<P extends Props> = Omit<P, \"children\"> &\n (\"children\" extends keyof P ? { children?: P[\"children\"] } : unknown)\n\n// Overload: component with typed props — children is optional in the props object\n// because it can be passed as rest args. Extra keys are allowed via `& Props`.\nexport function h<P extends Props>(\n type: ComponentFn<P>,\n props: (PropsWithOptionalChildren<P> & Props) | null,\n ...children: VNodeChild[]\n): VNode\n// Overload: intrinsic element, symbol, generic/dynamic component, or mixed union\nexport function h(\n type: string | ((p: any) => VNodeChild) | symbol,\n props: Props | null,\n ...children: VNodeChild[]\n): VNode\nexport function h<P extends Props>(\n type: string | ComponentFn<P> | symbol,\n props: P | null,\n ...children: VNodeChild[]\n): VNode {\n return {\n type: type as string | ComponentFn | symbol,\n props: (props ?? EMPTY_PROPS) as Props,\n children: normalizeChildren(children),\n key: (props?.key as string | number | null) ?? null,\n }\n}\n\nfunction normalizeChildren(children: VNodeChild[]): VNodeChild[] {\n // Fast path: no nested arrays — return as-is without allocating\n for (let i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return flattenChildren(children)\n }\n }\n return children\n}\n\nfunction flattenChildren(children: VNodeChild[]): VNodeChild[] {\n const result: VNodeChild[] = []\n for (const child of children) {\n if (Array.isArray(child)) {\n result.push(...flattenChildren(child as VNodeChild[]))\n } else {\n result.push(child)\n }\n }\n return result\n}\n","/**\n * JSX automatic runtime.\n *\n * When tsconfig has `\"jsxImportSource\": \"@pyreon/core\"`, the TS/bundler compiler\n * rewrites JSX to imports from this file automatically:\n * <div class=\"x\" /> → jsx(\"div\", { class: \"x\" })\n */\nimport { Fragment, h } from \"./h\"\nimport type { ComponentFn, Props, VNode, VNodeChild } from \"./types\"\n\nexport { Fragment }\n\nexport function jsx(\n type: string | ComponentFn | symbol,\n props: Props & { children?: VNodeChild | VNodeChild[] },\n key?: string | number | null,\n): VNode {\n const { children, ...rest } = props\n const propsWithKey = (key != null ? { ...rest, key } : rest) as Props\n\n if (typeof type === \"function\") {\n // Component: keep children in props.children so the component function can access them.\n // Children must NOT be spread as h() rest args because mountComponent only passes vnode.props.\n const componentProps = children !== undefined ? { ...propsWithKey, children } : propsWithKey\n return h(type, componentProps)\n }\n\n // DOM element or symbol (Fragment, ForSymbol): children go in vnode.children\n const childArray = children === undefined ? [] : Array.isArray(children) ? children : [children]\n return h(type, propsWithKey, ...(childArray as VNodeChild[]))\n}\n\n// jsxs is called when there are multiple static children — same signature\nexport const jsxs = jsx\n\n// ─── JSX types ────────────────────────────────────────────────────────────────\n\ntype Booleanish = boolean | \"true\" | \"false\"\ntype CSSProperties = { [K in keyof CSSStyleDeclaration]?: string | number }\ntype StyleValue = string | CSSProperties\n\n/** Common HTML attributes accepted by all Pyreon elements */\ninterface PyreonHTMLAttributes<E extends Element = HTMLElement> {\n // Identity\n id?: string | undefined\n class?: string | (() => string) | undefined\n className?: string | (() => string) | undefined\n style?: StyleValue | (() => StyleValue) | undefined\n // Accessible\n role?: string | undefined\n tabIndex?: number | (() => number) | undefined\n title?: string | undefined\n lang?: string | undefined\n dir?: \"ltr\" | \"rtl\" | \"auto\" | undefined\n hidden?: boolean | (() => boolean) | undefined\n draggable?: Booleanish | undefined\n // ARIA\n \"aria-label\"?: string | (() => string) | undefined\n \"aria-hidden\"?: Booleanish | (() => Booleanish) | undefined\n \"aria-disabled\"?: Booleanish | (() => Booleanish) | undefined\n \"aria-expanded\"?: Booleanish | (() => Booleanish) | undefined\n \"aria-selected\"?: Booleanish | (() => Booleanish) | undefined\n \"aria-checked\"?: Booleanish | \"mixed\" | (() => Booleanish | \"mixed\") | undefined\n \"aria-current\"?: Booleanish | \"page\" | \"step\" | \"location\" | \"date\" | \"time\" | undefined\n \"aria-live\"?: \"off\" | \"assertive\" | \"polite\" | undefined\n \"aria-atomic\"?: Booleanish | undefined\n \"aria-busy\"?: Booleanish | undefined\n \"aria-controls\"?: string | undefined\n \"aria-describedby\"?: string | undefined\n \"aria-labelledby\"?: string | undefined\n \"aria-placeholder\"?: string | undefined\n \"aria-required\"?: Booleanish | (() => Booleanish) | undefined\n \"aria-invalid\"?: Booleanish | \"grammar\" | \"spelling\" | undefined\n \"aria-valuemin\"?: number | undefined\n \"aria-valuemax\"?: number | undefined\n \"aria-valuenow\"?: number | undefined\n \"aria-valuetext\"?: string | undefined\n \"aria-haspopup\"?: Booleanish | \"menu\" | \"listbox\" | \"tree\" | \"grid\" | \"dialog\" | undefined\n \"aria-posinset\"?: number | undefined\n \"aria-setsize\"?: number | undefined\n \"aria-level\"?: number | undefined\n \"aria-multiline\"?: Booleanish | undefined\n \"aria-multiselectable\"?: Booleanish | undefined\n \"aria-orientation\"?: \"horizontal\" | \"vertical\" | undefined\n \"aria-readonly\"?: Booleanish | (() => Booleanish) | undefined\n \"aria-sort\"?: \"none\" | \"ascending\" | \"descending\" | \"other\" | undefined\n \"aria-autocomplete\"?: \"none\" | \"inline\" | \"list\" | \"both\" | undefined\n \"aria-colcount\"?: number | undefined\n \"aria-colindex\"?: number | undefined\n \"aria-colspan\"?: number | undefined\n \"aria-rowcount\"?: number | undefined\n \"aria-rowindex\"?: number | undefined\n \"aria-rowspan\"?: number | undefined\n // DOM lifecycle ref — object ref or callback ref\n ref?: { current: E | null } | ((el: E | null) => void) | undefined\n // Key for list reconciliation\n key?: string | number | undefined\n // Children — allows null, undefined, boolean in JSX children positions\n children?: VNodeChild | VNodeChild[]\n // innerHTML\n innerHTML?: string | undefined\n dangerouslySetInnerHTML?: { __html: string } | undefined\n // Events\n onClick?: ((e: MouseEvent) => void) | undefined\n onDblClick?: ((e: MouseEvent) => void) | undefined\n onMouseDown?: ((e: MouseEvent) => void) | undefined\n onMouseUp?: ((e: MouseEvent) => void) | undefined\n onMouseEnter?: ((e: MouseEvent) => void) | undefined\n onMouseLeave?: ((e: MouseEvent) => void) | undefined\n onMouseMove?: ((e: MouseEvent) => void) | undefined\n onMouseOver?: ((e: MouseEvent) => void) | undefined\n onMouseOut?: ((e: MouseEvent) => void) | undefined\n onContextMenu?: ((e: MouseEvent) => void) | undefined\n onKeyDown?: ((e: KeyboardEvent) => void) | undefined\n onKeyUp?: ((e: KeyboardEvent) => void) | undefined\n onKeyPress?: ((e: KeyboardEvent) => void) | undefined\n onFocus?: ((e: FocusEvent) => void) | undefined\n onBlur?: ((e: FocusEvent) => void) | undefined\n onChange?: ((e: Event) => void) | undefined\n onInput?: ((e: InputEvent) => void) | undefined\n onSubmit?: ((e: SubmitEvent) => void) | undefined\n onReset?: ((e: Event) => void) | undefined\n onScroll?: ((e: Event) => void) | undefined\n onWheel?: ((e: WheelEvent) => void) | undefined\n onDragStart?: ((e: DragEvent) => void) | undefined\n onDragEnd?: ((e: DragEvent) => void) | undefined\n onDragOver?: ((e: DragEvent) => void) | undefined\n onDragEnter?: ((e: DragEvent) => void) | undefined\n onDragLeave?: ((e: DragEvent) => void) | undefined\n onDrop?: ((e: DragEvent) => void) | undefined\n onTouchStart?: ((e: TouchEvent) => void) | undefined\n onTouchEnd?: ((e: TouchEvent) => void) | undefined\n onTouchMove?: ((e: TouchEvent) => void) | undefined\n onPointerDown?: ((e: PointerEvent) => void) | undefined\n onPointerUp?: ((e: PointerEvent) => void) | undefined\n onPointerMove?: ((e: PointerEvent) => void) | undefined\n onPointerEnter?: ((e: PointerEvent) => void) | undefined\n onPointerLeave?: ((e: PointerEvent) => void) | undefined\n onPointerCancel?: ((e: PointerEvent) => void) | undefined\n onPointerOver?: ((e: PointerEvent) => void) | undefined\n onPointerOut?: ((e: PointerEvent) => void) | undefined\n onTransitionEnd?: ((e: TransitionEvent) => void) | undefined\n onAnimationStart?: ((e: AnimationEvent) => void) | undefined\n onAnimationEnd?: ((e: AnimationEvent) => void) | undefined\n onAnimationIteration?: ((e: AnimationEvent) => void) | undefined\n onLoad?: ((e: Event) => void) | undefined\n onError?: ((e: Event | string) => void) | undefined\n onAbort?: ((e: Event) => void) | undefined\n onSelect?: ((e: Event) => void) | undefined\n onCopy?: ((e: ClipboardEvent) => void) | undefined\n onCut?: ((e: ClipboardEvent) => void) | undefined\n onPaste?: ((e: ClipboardEvent) => void) | undefined\n // Catch-all for data-* and other arbitrary attributes\n [key: string]: unknown\n}\n\n/** Attributes specific to form inputs */\ninterface InputAttributes extends PyreonHTMLAttributes<HTMLInputElement> {\n type?: string | (() => string) | undefined\n value?: string | number | (() => string | number) | undefined\n defaultValue?: string | number | undefined\n checked?: boolean | (() => boolean) | undefined\n defaultChecked?: boolean | undefined\n placeholder?: string | (() => string) | undefined\n disabled?: boolean | (() => boolean) | undefined\n readOnly?: boolean | undefined\n required?: boolean | (() => boolean) | undefined\n min?: string | number | undefined\n max?: string | number | undefined\n step?: string | number | undefined\n minLength?: number | undefined\n maxLength?: number | undefined\n pattern?: string | undefined\n multiple?: boolean | undefined\n name?: string | undefined\n accept?: string | undefined\n autoComplete?: string | undefined\n autoFocus?: boolean | undefined\n form?: string | undefined\n list?: string | undefined\n size?: number | undefined\n src?: string | (() => string) | undefined\n alt?: string | undefined\n width?: number | string | undefined\n height?: number | string | undefined\n}\n\ninterface AnchorAttributes extends PyreonHTMLAttributes<HTMLAnchorElement> {\n href?: string | (() => string) | undefined\n target?: \"_blank\" | \"_self\" | \"_parent\" | \"_top\" | string | undefined\n rel?: string | undefined\n download?: string | boolean | undefined\n}\n\ninterface ButtonAttributes extends PyreonHTMLAttributes<HTMLButtonElement> {\n type?: \"button\" | \"submit\" | \"reset\" | undefined\n disabled?: boolean | (() => boolean) | undefined\n name?: string | undefined\n value?: string | undefined\n form?: string | undefined\n formAction?: string | undefined\n formMethod?: string | undefined\n formEncType?: string | undefined\n formNoValidate?: boolean | undefined\n formTarget?: string | undefined\n}\n\ninterface TextareaAttributes extends PyreonHTMLAttributes<HTMLTextAreaElement> {\n value?: string | (() => string) | undefined\n defaultValue?: string | undefined\n placeholder?: string | (() => string) | undefined\n disabled?: boolean | (() => boolean) | undefined\n readOnly?: boolean | undefined\n required?: boolean | (() => boolean) | undefined\n rows?: number | undefined\n cols?: number | undefined\n minLength?: number | undefined\n maxLength?: number | undefined\n name?: string | undefined\n autoFocus?: boolean | undefined\n form?: string | undefined\n wrap?: \"hard\" | \"soft\" | undefined\n}\n\ninterface SelectAttributes extends PyreonHTMLAttributes<HTMLSelectElement> {\n value?: string | string[] | (() => string | string[]) | undefined\n defaultValue?: string | string[] | undefined\n disabled?: boolean | (() => boolean) | undefined\n required?: boolean | (() => boolean) | undefined\n multiple?: boolean | undefined\n name?: string | undefined\n size?: number | undefined\n form?: string | undefined\n autoFocus?: boolean | undefined\n}\n\ninterface OptionAttributes extends PyreonHTMLAttributes<HTMLOptionElement> {\n value?: string | number | (() => string | number) | undefined\n disabled?: boolean | (() => boolean) | undefined\n selected?: boolean | (() => boolean) | undefined\n label?: string | undefined\n}\n\ninterface FormAttributes extends PyreonHTMLAttributes<HTMLFormElement> {\n action?: string | undefined\n method?: \"get\" | \"post\" | undefined\n encType?: string | undefined\n noValidate?: boolean | undefined\n target?: string | undefined\n name?: string | undefined\n autoComplete?: string | undefined\n}\n\ninterface ImgAttributes extends PyreonHTMLAttributes<HTMLImageElement> {\n src?: string | (() => string) | undefined\n alt?: string | (() => string) | undefined\n width?: number | string | (() => number | string) | undefined\n height?: number | string | (() => number | string) | undefined\n loading?: \"lazy\" | \"eager\" | undefined\n decoding?: \"auto\" | \"async\" | \"sync\" | undefined\n crossOrigin?: \"anonymous\" | \"use-credentials\" | undefined\n referrerPolicy?: string | undefined\n srcSet?: string | undefined\n sizes?: string | undefined\n}\n\ninterface VideoAttributes extends PyreonHTMLAttributes<HTMLVideoElement> {\n src?: string | (() => string) | undefined\n width?: number | string | undefined\n height?: number | string | undefined\n controls?: boolean | undefined\n autoPlay?: boolean | undefined\n muted?: boolean | undefined\n loop?: boolean | undefined\n poster?: string | undefined\n preload?: \"none\" | \"metadata\" | \"auto\" | undefined\n playsInline?: boolean | undefined\n crossOrigin?: \"anonymous\" | \"use-credentials\" | undefined\n}\n\ninterface AudioAttributes extends PyreonHTMLAttributes<HTMLAudioElement> {\n src?: string | (() => string) | undefined\n controls?: boolean | undefined\n autoPlay?: boolean | undefined\n muted?: boolean | undefined\n loop?: boolean | undefined\n preload?: \"none\" | \"metadata\" | \"auto\" | undefined\n crossOrigin?: \"anonymous\" | \"use-credentials\" | undefined\n}\n\ninterface LabelAttributes extends PyreonHTMLAttributes<HTMLLabelElement> {\n htmlFor?: string | undefined\n for?: string | undefined\n form?: string | undefined\n}\n\ninterface ThAttributes extends PyreonHTMLAttributes<HTMLTableCellElement> {\n colSpan?: number | undefined\n rowSpan?: number | undefined\n scope?: \"col\" | \"row\" | \"colgroup\" | \"rowgroup\" | undefined\n abbr?: string | undefined\n headers?: string | undefined\n}\n\ninterface TdAttributes extends PyreonHTMLAttributes<HTMLTableCellElement> {\n colSpan?: number | undefined\n rowSpan?: number | undefined\n headers?: string | undefined\n}\n\ninterface ColAttributes extends PyreonHTMLAttributes<HTMLTableColElement> {\n span?: number | undefined\n}\n\ninterface IframeAttributes extends PyreonHTMLAttributes<HTMLIFrameElement> {\n src?: string | (() => string) | undefined\n width?: number | string | undefined\n height?: number | string | undefined\n allow?: string | undefined\n allowFullScreen?: boolean | undefined\n loading?: \"lazy\" | \"eager\" | undefined\n name?: string | undefined\n sandbox?: string | undefined\n referrerPolicy?: string | undefined\n title?: string | undefined\n}\n\ninterface LinkAttributes extends PyreonHTMLAttributes<HTMLLinkElement> {\n href?: string | (() => string) | undefined\n rel?: string | undefined\n type?: string | undefined\n as?: string | undefined\n media?: string | undefined\n crossOrigin?: \"anonymous\" | \"use-credentials\" | undefined\n integrity?: string | undefined\n referrerPolicy?: string | undefined\n}\n\ninterface MetaAttributes extends PyreonHTMLAttributes<HTMLMetaElement> {\n name?: string | undefined\n content?: string | (() => string) | undefined\n httpEquiv?: string | undefined\n charset?: string | undefined\n property?: string | undefined\n}\n\ninterface ScriptAttributes extends PyreonHTMLAttributes<HTMLScriptElement> {\n src?: string | (() => string) | undefined\n type?: string | undefined\n async?: boolean | undefined\n defer?: boolean | undefined\n crossOrigin?: \"anonymous\" | \"use-credentials\" | undefined\n integrity?: string | undefined\n noModule?: boolean | undefined\n referrerPolicy?: string | undefined\n}\n\ninterface SourceAttributes extends PyreonHTMLAttributes<HTMLSourceElement> {\n src?: string | (() => string) | undefined\n type?: string | undefined\n srcSet?: string | undefined\n sizes?: string | undefined\n media?: string | undefined\n}\n\ninterface ProgressAttributes extends PyreonHTMLAttributes<HTMLProgressElement> {\n value?: number | (() => number) | undefined\n max?: number | undefined\n}\n\ninterface MeterAttributes extends PyreonHTMLAttributes<HTMLMeterElement> {\n value?: number | (() => number) | undefined\n min?: number | undefined\n max?: number | undefined\n low?: number | undefined\n high?: number | undefined\n optimum?: number | undefined\n}\n\ninterface DetailsAttributes extends PyreonHTMLAttributes<HTMLDetailsElement> {\n open?: boolean | (() => boolean) | undefined\n}\n\ninterface DialogAttributes extends PyreonHTMLAttributes<HTMLDialogElement> {\n open?: boolean | (() => boolean) | undefined\n}\n\ninterface OlAttributes extends PyreonHTMLAttributes<HTMLOListElement> {\n start?: number | undefined\n reversed?: boolean | undefined\n type?: \"1\" | \"a\" | \"A\" | \"i\" | \"I\" | undefined\n}\n\ninterface SvgAttributes extends PyreonHTMLAttributes<SVGElement> {\n viewBox?: string | undefined\n xmlns?: string | undefined\n fill?: string | (() => string) | undefined\n stroke?: string | (() => string) | undefined\n \"stroke-width\"?: string | number | undefined\n \"stroke-linecap\"?: \"butt\" | \"round\" | \"square\" | undefined\n \"stroke-linejoin\"?: \"miter\" | \"round\" | \"bevel\" | undefined\n \"fill-rule\"?: \"nonzero\" | \"evenodd\" | undefined\n \"clip-rule\"?: \"nonzero\" | \"evenodd\" | undefined\n \"clip-path\"?: string | undefined\n d?: string | undefined\n cx?: string | number | undefined\n cy?: string | number | undefined\n r?: string | number | undefined\n rx?: string | number | undefined\n ry?: string | number | undefined\n x?: string | number | undefined\n y?: string | number | undefined\n x1?: string | number | undefined\n y1?: string | number | undefined\n x2?: string | number | undefined\n y2?: string | number | undefined\n width?: string | number | undefined\n height?: string | number | undefined\n transform?: string | (() => string) | undefined\n opacity?: string | number | (() => string | number) | undefined\n points?: string | undefined\n \"font-size\"?: string | number | undefined\n \"text-anchor\"?: \"start\" | \"middle\" | \"end\" | undefined\n \"dominant-baseline\"?: string | undefined\n}\n\ndeclare global {\n namespace JSX {\n /** The type that JSX expressions evaluate to */\n type Element = import(\"./types\").VNode\n\n /**\n * Valid JSX tag types — intrinsic strings + component functions.\n * Components may return VNode, null, strings, functions (reactive getters), etc.\n * (TS 5.1+ feature)\n */\n type ElementType = keyof IntrinsicElements | ((props: any) => import(\"./types\").VNodeChild)\n\n /** Tells TS which prop name carries children in component calls */\n interface ElementChildrenAttribute {\n // biome-ignore lint/complexity/noBannedTypes: JSX spec requires {} for ElementChildrenAttribute\n children: {}\n }\n\n interface IntrinsicElements {\n // Document structure\n html: PyreonHTMLAttributes\n head: PyreonHTMLAttributes\n body: PyreonHTMLAttributes\n title: PyreonHTMLAttributes\n base: PyreonHTMLAttributes\n meta: MetaAttributes\n link: LinkAttributes\n script: ScriptAttributes\n style: PyreonHTMLAttributes\n noscript: PyreonHTMLAttributes\n // Sections\n main: PyreonHTMLAttributes\n header: PyreonHTMLAttributes\n footer: PyreonHTMLAttributes\n nav: PyreonHTMLAttributes\n aside: PyreonHTMLAttributes\n section: PyreonHTMLAttributes\n article: PyreonHTMLAttributes\n address: PyreonHTMLAttributes\n h1: PyreonHTMLAttributes\n h2: PyreonHTMLAttributes\n h3: PyreonHTMLAttributes\n h4: PyreonHTMLAttributes\n h5: PyreonHTMLAttributes\n h6: PyreonHTMLAttributes\n hgroup: PyreonHTMLAttributes\n // Block text\n p: PyreonHTMLAttributes\n pre: PyreonHTMLAttributes\n blockquote: PyreonHTMLAttributes\n figure: PyreonHTMLAttributes\n figcaption: PyreonHTMLAttributes\n div: PyreonHTMLAttributes\n hr: PyreonHTMLAttributes\n // Inline text\n span: PyreonHTMLAttributes\n a: AnchorAttributes\n em: PyreonHTMLAttributes\n strong: PyreonHTMLAttributes\n small: PyreonHTMLAttributes\n s: PyreonHTMLAttributes\n cite: PyreonHTMLAttributes\n q: PyreonHTMLAttributes\n abbr: PyreonHTMLAttributes\n time: PyreonHTMLAttributes\n code: PyreonHTMLAttributes\n var: PyreonHTMLAttributes\n samp: PyreonHTMLAttributes\n kbd: PyreonHTMLAttributes\n mark: PyreonHTMLAttributes\n sub: PyreonHTMLAttributes\n sup: PyreonHTMLAttributes\n i: PyreonHTMLAttributes\n b: PyreonHTMLAttributes\n u: PyreonHTMLAttributes\n bdi: PyreonHTMLAttributes\n bdo: PyreonHTMLAttributes\n br: PyreonHTMLAttributes\n wbr: PyreonHTMLAttributes\n ruby: PyreonHTMLAttributes\n rt: PyreonHTMLAttributes\n rp: PyreonHTMLAttributes\n // Lists\n ul: PyreonHTMLAttributes\n ol: OlAttributes\n li: PyreonHTMLAttributes\n dl: PyreonHTMLAttributes\n dt: PyreonHTMLAttributes\n dd: PyreonHTMLAttributes\n // Forms\n form: FormAttributes\n label: LabelAttributes\n input: InputAttributes\n button: ButtonAttributes\n select: SelectAttributes\n datalist: PyreonHTMLAttributes\n optgroup: PyreonHTMLAttributes\n option: OptionAttributes\n textarea: TextareaAttributes\n output: PyreonHTMLAttributes\n progress: ProgressAttributes\n meter: MeterAttributes\n fieldset: PyreonHTMLAttributes\n legend: PyreonHTMLAttributes\n // Tables\n table: PyreonHTMLAttributes\n caption: PyreonHTMLAttributes\n colgroup: PyreonHTMLAttributes\n col: ColAttributes\n thead: PyreonHTMLAttributes\n tbody: PyreonHTMLAttributes\n tfoot: PyreonHTMLAttributes\n tr: PyreonHTMLAttributes\n th: ThAttributes\n td: TdAttributes\n // Media\n img: ImgAttributes\n video: VideoAttributes\n audio: AudioAttributes\n source: SourceAttributes\n track: PyreonHTMLAttributes\n picture: PyreonHTMLAttributes\n canvas: PyreonHTMLAttributes\n svg: SvgAttributes\n path: SvgAttributes\n circle: SvgAttributes\n ellipse: SvgAttributes\n line: SvgAttributes\n polyline: SvgAttributes\n polygon: SvgAttributes\n rect: SvgAttributes\n text: SvgAttributes\n tspan: SvgAttributes\n g: SvgAttributes\n defs: SvgAttributes\n use: SvgAttributes & { href?: string }\n symbol: SvgAttributes\n clipPath: SvgAttributes\n mask: SvgAttributes\n marker: SvgAttributes\n pattern: SvgAttributes\n linearGradient: SvgAttributes\n radialGradient: SvgAttributes\n stop: SvgAttributes & {\n offset?: string | number\n \"stop-color\"?: string\n \"stop-opacity\"?: string | number\n }\n // Interactive / embedding\n details: DetailsAttributes\n summary: PyreonHTMLAttributes\n dialog: DialogAttributes\n iframe: IframeAttributes\n embed: PyreonHTMLAttributes\n object: PyreonHTMLAttributes\n param: PyreonHTMLAttributes\n // Semantic / misc\n menu: PyreonHTMLAttributes\n menuitem: PyreonHTMLAttributes\n template: PyreonHTMLAttributes\n slot: PyreonHTMLAttributes\n portal: PyreonHTMLAttributes\n // Catch-all for custom elements and data-* attrs\n [tagName: string]: PyreonHTMLAttributes<any>\n }\n }\n}\n"],"mappings":";;AAGA,MAAa,WAA0B,OAAO,kBAAkB;;;;;;;;;AAUhE,MAAa,cAAqB,EAAE;AAmBpC,SAAgB,EACd,MACA,OACA,GAAG,UACI;AACP,QAAO;EACC;EACN,OAAQ,SAAS;EACjB,UAAU,kBAAkB,SAAS;EACrC,KAAM,OAAO,OAAkC;EAChD;;AAGH,SAAS,kBAAkB,UAAsC;AAE/D,MAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,IACnC,KAAI,MAAM,QAAQ,SAAS,GAAG,CAC5B,QAAO,gBAAgB,SAAS;AAGpC,QAAO;;AAGT,SAAS,gBAAgB,UAAsC;CAC7D,MAAM,SAAuB,EAAE;AAC/B,MAAK,MAAM,SAAS,SAClB,KAAI,MAAM,QAAQ,MAAM,CACtB,QAAO,KAAK,GAAG,gBAAgB,MAAsB,CAAC;KAEtD,QAAO,KAAK,MAAM;AAGtB,QAAO;;;;;;;;;;;;ACpDT,SAAgB,IACd,MACA,OACA,KACO;CACP,MAAM,EAAE,UAAU,GAAG,SAAS;CAC9B,MAAM,eAAgB,OAAO,OAAO;EAAE,GAAG;EAAM;EAAK,GAAG;AAEvD,KAAI,OAAO,SAAS,WAIlB,QAAO,EAAE,MADc,aAAa,SAAY;EAAE,GAAG;EAAc;EAAU,GAAG,aAClD;AAKhC,QAAO,EAAE,MAAM,cAAc,GADV,aAAa,SAAY,EAAE,GAAG,MAAM,QAAQ,SAAS,GAAG,WAAW,CAAC,SAAS,CACnC;;AAI/D,MAAa,OAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"jsx-runtime.js","names":[],"sources":["../src/h.ts","../src/jsx-runtime.ts"],"sourcesContent":["import type { ComponentFn, Props, VNode, VNodeChild } from \"./types\"\n\n/** Marker for fragment nodes — renders children without a wrapper element */\nexport const Fragment: unique symbol = Symbol(\"Pyreon.Fragment\")\n\n/**\n * Hyperscript function — the compiled output of JSX.\n * `<div class=\"x\">hello</div>` → `h(\"div\", { class: \"x\" }, \"hello\")`\n *\n * Generic on P so TypeScript validates props match the component's signature\n * at the call site, then stores the result in the loosely-typed VNode.\n */\n/** Shared empty props sentinel — identity-checked in mountElement to skip applyProps. */\nexport const EMPTY_PROPS: Props = {} as Props\n\n/** Makes `children` optional in P (if present) so it can be passed as rest args to h(). */\ntype PropsWithOptionalChildren<P extends Props> = Omit<P, \"children\"> &\n (\"children\" extends keyof P ? { children?: P[\"children\"] } : unknown)\n\n// Overload: component with typed props — children is optional in the props object\n// because it can be passed as rest args. Extra keys are allowed via `& Props`.\nexport function h<P extends Props>(\n type: ComponentFn<P>,\n props: (PropsWithOptionalChildren<P> & Props) | null,\n ...children: VNodeChild[]\n): VNode\n// Overload: intrinsic element, symbol, generic/dynamic component, or mixed union\nexport function h(\n type: string | ((p: any) => VNodeChild) | symbol,\n props: Props | null,\n ...children: VNodeChild[]\n): VNode\nexport function h<P extends Props>(\n type: string | ComponentFn<P> | symbol,\n props: P | null,\n ...children: VNodeChild[]\n): VNode {\n return {\n type: type as string | ComponentFn | symbol,\n props: (props ?? EMPTY_PROPS) as Props,\n children: normalizeChildren(children),\n key: (props?.key as string | number | null) ?? null,\n }\n}\n\nfunction normalizeChildren(children: VNodeChild[]): VNodeChild[] {\n // Fast path: no nested arrays — return as-is without allocating\n for (let i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return flattenChildren(children)\n }\n }\n return children\n}\n\nfunction flattenChildren(children: VNodeChild[]): VNodeChild[] {\n const result: VNodeChild[] = []\n for (const child of children) {\n if (Array.isArray(child)) {\n result.push(...flattenChildren(child as VNodeChild[]))\n } else {\n result.push(child)\n }\n }\n return result\n}\n","/**\n * JSX automatic runtime.\n *\n * When tsconfig has `\"jsxImportSource\": \"@pyreon/core\"`, the TS/bundler compiler\n * rewrites JSX to imports from this file automatically:\n * <div class=\"x\" /> → jsx(\"div\", { class: \"x\" })\n */\nimport { Fragment, h } from \"./h\"\nimport type { ComponentFn, Props, VNode, VNodeChild } from \"./types\"\n\nexport { Fragment }\n\nexport function jsx(\n type: string | ComponentFn | symbol,\n props: Props & { children?: VNodeChild | VNodeChild[] },\n key?: string | number | null,\n): VNode {\n const { children, ...rest } = props\n const propsWithKey = (key != null ? { ...rest, key } : rest) as Props\n\n if (typeof type === \"function\") {\n // Component: keep children in props.children so the component function can access them.\n // Children must NOT be spread as h() rest args because mountComponent only passes vnode.props.\n const componentProps = children !== undefined ? { ...propsWithKey, children } : propsWithKey\n return h(type, componentProps)\n }\n\n // DOM element or symbol (Fragment, ForSymbol): children go in vnode.children\n const childArray = children === undefined ? [] : Array.isArray(children) ? children : [children]\n return h(type, propsWithKey, ...(childArray as VNodeChild[]))\n}\n\n// jsxs is called when there are multiple static children — same signature\nexport const jsxs = jsx\n\n// ─── JSX types ────────────────────────────────────────────────────────────────\n\ntype Booleanish = boolean | \"true\" | \"false\"\ntype CSSProperties = { [K in keyof CSSStyleDeclaration]?: string | number }\ntype StyleValue = string | CSSProperties\n\n/** Common HTML attributes accepted by all Pyreon elements */\ninterface PyreonHTMLAttributes {\n // Identity\n id?: string | undefined\n class?: string | (() => string) | undefined\n className?: string | (() => string) | undefined\n style?: StyleValue | (() => StyleValue) | undefined\n // Accessible\n role?: string | undefined\n tabIndex?: number | (() => number) | undefined\n title?: string | undefined\n lang?: string | undefined\n dir?: \"ltr\" | \"rtl\" | \"auto\" | undefined\n hidden?: boolean | (() => boolean) | undefined\n draggable?: Booleanish | undefined\n // ARIA\n \"aria-label\"?: string | (() => string) | undefined\n \"aria-hidden\"?: Booleanish | (() => Booleanish) | undefined\n \"aria-disabled\"?: Booleanish | (() => Booleanish) | undefined\n \"aria-expanded\"?: Booleanish | (() => Booleanish) | undefined\n \"aria-selected\"?: Booleanish | (() => Booleanish) | undefined\n \"aria-checked\"?: Booleanish | \"mixed\" | (() => Booleanish | \"mixed\") | undefined\n \"aria-current\"?: Booleanish | \"page\" | \"step\" | \"location\" | \"date\" | \"time\" | undefined\n \"aria-live\"?: \"off\" | \"assertive\" | \"polite\" | undefined\n \"aria-atomic\"?: Booleanish | undefined\n \"aria-busy\"?: Booleanish | undefined\n \"aria-controls\"?: string | undefined\n \"aria-describedby\"?: string | undefined\n \"aria-labelledby\"?: string | undefined\n \"aria-placeholder\"?: string | undefined\n \"aria-required\"?: Booleanish | (() => Booleanish) | undefined\n \"aria-invalid\"?: Booleanish | \"grammar\" | \"spelling\" | undefined\n \"aria-valuemin\"?: number | undefined\n \"aria-valuemax\"?: number | undefined\n \"aria-valuenow\"?: number | undefined\n \"aria-valuetext\"?: string | undefined\n \"aria-haspopup\"?: Booleanish | \"menu\" | \"listbox\" | \"tree\" | \"grid\" | \"dialog\" | undefined\n \"aria-posinset\"?: number | undefined\n \"aria-setsize\"?: number | undefined\n \"aria-level\"?: number | undefined\n \"aria-multiline\"?: Booleanish | undefined\n \"aria-multiselectable\"?: Booleanish | undefined\n \"aria-orientation\"?: \"horizontal\" | \"vertical\" | undefined\n \"aria-readonly\"?: Booleanish | (() => Booleanish) | undefined\n \"aria-sort\"?: \"none\" | \"ascending\" | \"descending\" | \"other\" | undefined\n \"aria-autocomplete\"?: \"none\" | \"inline\" | \"list\" | \"both\" | undefined\n \"aria-colcount\"?: number | undefined\n \"aria-colindex\"?: number | undefined\n \"aria-colspan\"?: number | undefined\n \"aria-rowcount\"?: number | undefined\n \"aria-rowindex\"?: number | undefined\n \"aria-rowspan\"?: number | undefined\n // DOM lifecycle ref — object ref or callback ref\n ref?: { current: unknown } | ((el: Element | null) => void) | undefined\n // Key for list reconciliation\n key?: string | number | undefined\n // Children — allows null, undefined, boolean in JSX children positions\n children?: VNodeChild | VNodeChild[]\n // innerHTML\n innerHTML?: string | undefined\n dangerouslySetInnerHTML?: { __html: string } | undefined\n // Events\n onClick?: ((e: MouseEvent) => void) | undefined\n onDblClick?: ((e: MouseEvent) => void) | undefined\n onMouseDown?: ((e: MouseEvent) => void) | undefined\n onMouseUp?: ((e: MouseEvent) => void) | undefined\n onMouseEnter?: ((e: MouseEvent) => void) | undefined\n onMouseLeave?: ((e: MouseEvent) => void) | undefined\n onMouseMove?: ((e: MouseEvent) => void) | undefined\n onMouseOver?: ((e: MouseEvent) => void) | undefined\n onMouseOut?: ((e: MouseEvent) => void) | undefined\n onContextMenu?: ((e: MouseEvent) => void) | undefined\n onKeyDown?: ((e: KeyboardEvent) => void) | undefined\n onKeyUp?: ((e: KeyboardEvent) => void) | undefined\n onKeyPress?: ((e: KeyboardEvent) => void) | undefined\n onFocus?: ((e: FocusEvent) => void) | undefined\n onBlur?: ((e: FocusEvent) => void) | undefined\n onChange?: ((e: Event) => void) | undefined\n onInput?: ((e: InputEvent) => void) | undefined\n onSubmit?: ((e: SubmitEvent) => void) | undefined\n onReset?: ((e: Event) => void) | undefined\n onScroll?: ((e: Event) => void) | undefined\n onWheel?: ((e: WheelEvent) => void) | undefined\n onDragStart?: ((e: DragEvent) => void) | undefined\n onDragEnd?: ((e: DragEvent) => void) | undefined\n onDragOver?: ((e: DragEvent) => void) | undefined\n onDragEnter?: ((e: DragEvent) => void) | undefined\n onDragLeave?: ((e: DragEvent) => void) | undefined\n onDrop?: ((e: DragEvent) => void) | undefined\n onTouchStart?: ((e: TouchEvent) => void) | undefined\n onTouchEnd?: ((e: TouchEvent) => void) | undefined\n onTouchMove?: ((e: TouchEvent) => void) | undefined\n onPointerDown?: ((e: PointerEvent) => void) | undefined\n onPointerUp?: ((e: PointerEvent) => void) | undefined\n onPointerMove?: ((e: PointerEvent) => void) | undefined\n onPointerEnter?: ((e: PointerEvent) => void) | undefined\n onPointerLeave?: ((e: PointerEvent) => void) | undefined\n onPointerCancel?: ((e: PointerEvent) => void) | undefined\n onPointerOver?: ((e: PointerEvent) => void) | undefined\n onPointerOut?: ((e: PointerEvent) => void) | undefined\n onTransitionEnd?: ((e: TransitionEvent) => void) | undefined\n onAnimationStart?: ((e: AnimationEvent) => void) | undefined\n onAnimationEnd?: ((e: AnimationEvent) => void) | undefined\n onAnimationIteration?: ((e: AnimationEvent) => void) | undefined\n onLoad?: ((e: Event) => void) | undefined\n onError?: ((e: Event | string) => void) | undefined\n onAbort?: ((e: Event) => void) | undefined\n onSelect?: ((e: Event) => void) | undefined\n onCopy?: ((e: ClipboardEvent) => void) | undefined\n onCut?: ((e: ClipboardEvent) => void) | undefined\n onPaste?: ((e: ClipboardEvent) => void) | undefined\n // Catch-all for data-* and other arbitrary attributes\n [key: string]: unknown\n}\n\n/** Attributes specific to form inputs */\ninterface InputAttributes extends PyreonHTMLAttributes {\n type?: string | (() => string) | undefined\n value?: string | number | (() => string | number) | undefined\n defaultValue?: string | number | undefined\n checked?: boolean | (() => boolean) | undefined\n defaultChecked?: boolean | undefined\n placeholder?: string | (() => string) | undefined\n disabled?: boolean | (() => boolean) | undefined\n readOnly?: boolean | undefined\n required?: boolean | (() => boolean) | undefined\n min?: string | number | undefined\n max?: string | number | undefined\n step?: string | number | undefined\n minLength?: number | undefined\n maxLength?: number | undefined\n pattern?: string | undefined\n multiple?: boolean | undefined\n name?: string | undefined\n accept?: string | undefined\n autoComplete?: string | undefined\n autoFocus?: boolean | undefined\n form?: string | undefined\n list?: string | undefined\n size?: number | undefined\n src?: string | (() => string) | undefined\n alt?: string | undefined\n width?: number | string | undefined\n height?: number | string | undefined\n}\n\ninterface AnchorAttributes extends PyreonHTMLAttributes {\n href?: string | (() => string) | undefined\n target?: \"_blank\" | \"_self\" | \"_parent\" | \"_top\" | string | undefined\n rel?: string | undefined\n download?: string | boolean | undefined\n}\n\ninterface ButtonAttributes extends PyreonHTMLAttributes {\n type?: \"button\" | \"submit\" | \"reset\" | undefined\n disabled?: boolean | (() => boolean) | undefined\n name?: string | undefined\n value?: string | undefined\n form?: string | undefined\n formAction?: string | undefined\n formMethod?: string | undefined\n formEncType?: string | undefined\n formNoValidate?: boolean | undefined\n formTarget?: string | undefined\n}\n\ninterface TextareaAttributes extends PyreonHTMLAttributes {\n value?: string | (() => string) | undefined\n defaultValue?: string | undefined\n placeholder?: string | (() => string) | undefined\n disabled?: boolean | (() => boolean) | undefined\n readOnly?: boolean | undefined\n required?: boolean | (() => boolean) | undefined\n rows?: number | undefined\n cols?: number | undefined\n minLength?: number | undefined\n maxLength?: number | undefined\n name?: string | undefined\n autoFocus?: boolean | undefined\n form?: string | undefined\n wrap?: \"hard\" | \"soft\" | undefined\n}\n\ninterface SelectAttributes extends PyreonHTMLAttributes {\n value?: string | string[] | (() => string | string[]) | undefined\n defaultValue?: string | string[] | undefined\n disabled?: boolean | (() => boolean) | undefined\n required?: boolean | (() => boolean) | undefined\n multiple?: boolean | undefined\n name?: string | undefined\n size?: number | undefined\n form?: string | undefined\n autoFocus?: boolean | undefined\n}\n\ninterface OptionAttributes extends PyreonHTMLAttributes {\n value?: string | number | (() => string | number) | undefined\n disabled?: boolean | (() => boolean) | undefined\n selected?: boolean | (() => boolean) | undefined\n label?: string | undefined\n}\n\ninterface FormAttributes extends PyreonHTMLAttributes {\n action?: string | undefined\n method?: \"get\" | \"post\" | undefined\n encType?: string | undefined\n noValidate?: boolean | undefined\n target?: string | undefined\n name?: string | undefined\n autoComplete?: string | undefined\n}\n\ninterface ImgAttributes extends PyreonHTMLAttributes {\n src?: string | (() => string) | undefined\n alt?: string | (() => string) | undefined\n width?: number | string | (() => number | string) | undefined\n height?: number | string | (() => number | string) | undefined\n loading?: \"lazy\" | \"eager\" | undefined\n decoding?: \"auto\" | \"async\" | \"sync\" | undefined\n crossOrigin?: \"anonymous\" | \"use-credentials\" | undefined\n referrerPolicy?: string | undefined\n srcSet?: string | undefined\n sizes?: string | undefined\n}\n\ninterface VideoAttributes extends PyreonHTMLAttributes {\n src?: string | (() => string) | undefined\n width?: number | string | undefined\n height?: number | string | undefined\n controls?: boolean | undefined\n autoPlay?: boolean | undefined\n muted?: boolean | undefined\n loop?: boolean | undefined\n poster?: string | undefined\n preload?: \"none\" | \"metadata\" | \"auto\" | undefined\n playsInline?: boolean | undefined\n crossOrigin?: \"anonymous\" | \"use-credentials\" | undefined\n}\n\ninterface AudioAttributes extends PyreonHTMLAttributes {\n src?: string | (() => string) | undefined\n controls?: boolean | undefined\n autoPlay?: boolean | undefined\n muted?: boolean | undefined\n loop?: boolean | undefined\n preload?: \"none\" | \"metadata\" | \"auto\" | undefined\n crossOrigin?: \"anonymous\" | \"use-credentials\" | undefined\n}\n\ninterface LabelAttributes extends PyreonHTMLAttributes {\n htmlFor?: string | undefined\n for?: string | undefined\n form?: string | undefined\n}\n\ninterface ThAttributes extends PyreonHTMLAttributes {\n colSpan?: number | undefined\n rowSpan?: number | undefined\n scope?: \"col\" | \"row\" | \"colgroup\" | \"rowgroup\" | undefined\n abbr?: string | undefined\n headers?: string | undefined\n}\n\ninterface TdAttributes extends PyreonHTMLAttributes {\n colSpan?: number | undefined\n rowSpan?: number | undefined\n headers?: string | undefined\n}\n\ninterface ColAttributes extends PyreonHTMLAttributes {\n span?: number | undefined\n}\n\ninterface IframeAttributes extends PyreonHTMLAttributes {\n src?: string | (() => string) | undefined\n width?: number | string | undefined\n height?: number | string | undefined\n allow?: string | undefined\n allowFullScreen?: boolean | undefined\n loading?: \"lazy\" | \"eager\" | undefined\n name?: string | undefined\n sandbox?: string | undefined\n referrerPolicy?: string | undefined\n title?: string | undefined\n}\n\ninterface LinkAttributes extends PyreonHTMLAttributes {\n href?: string | (() => string) | undefined\n rel?: string | undefined\n type?: string | undefined\n as?: string | undefined\n media?: string | undefined\n crossOrigin?: \"anonymous\" | \"use-credentials\" | undefined\n integrity?: string | undefined\n referrerPolicy?: string | undefined\n}\n\ninterface MetaAttributes extends PyreonHTMLAttributes {\n name?: string | undefined\n content?: string | (() => string) | undefined\n httpEquiv?: string | undefined\n charset?: string | undefined\n property?: string | undefined\n}\n\ninterface ScriptAttributes extends PyreonHTMLAttributes {\n src?: string | (() => string) | undefined\n type?: string | undefined\n async?: boolean | undefined\n defer?: boolean | undefined\n crossOrigin?: \"anonymous\" | \"use-credentials\" | undefined\n integrity?: string | undefined\n noModule?: boolean | undefined\n referrerPolicy?: string | undefined\n}\n\ninterface SourceAttributes extends PyreonHTMLAttributes {\n src?: string | (() => string) | undefined\n type?: string | undefined\n srcSet?: string | undefined\n sizes?: string | undefined\n media?: string | undefined\n}\n\ninterface ProgressAttributes extends PyreonHTMLAttributes {\n value?: number | (() => number) | undefined\n max?: number | undefined\n}\n\ninterface MeterAttributes extends PyreonHTMLAttributes {\n value?: number | (() => number) | undefined\n min?: number | undefined\n max?: number | undefined\n low?: number | undefined\n high?: number | undefined\n optimum?: number | undefined\n}\n\ninterface DetailsAttributes extends PyreonHTMLAttributes {\n open?: boolean | (() => boolean) | undefined\n}\n\ninterface DialogAttributes extends PyreonHTMLAttributes {\n open?: boolean | (() => boolean) | undefined\n}\n\ninterface OlAttributes extends PyreonHTMLAttributes {\n start?: number | undefined\n reversed?: boolean | undefined\n type?: \"1\" | \"a\" | \"A\" | \"i\" | \"I\" | undefined\n}\n\ninterface SvgAttributes extends PyreonHTMLAttributes {\n viewBox?: string | undefined\n xmlns?: string | undefined\n fill?: string | (() => string) | undefined\n stroke?: string | (() => string) | undefined\n \"stroke-width\"?: string | number | undefined\n \"stroke-linecap\"?: \"butt\" | \"round\" | \"square\" | undefined\n \"stroke-linejoin\"?: \"miter\" | \"round\" | \"bevel\" | undefined\n \"fill-rule\"?: \"nonzero\" | \"evenodd\" | undefined\n \"clip-rule\"?: \"nonzero\" | \"evenodd\" | undefined\n \"clip-path\"?: string | undefined\n d?: string | undefined\n cx?: string | number | undefined\n cy?: string | number | undefined\n r?: string | number | undefined\n rx?: string | number | undefined\n ry?: string | number | undefined\n x?: string | number | undefined\n y?: string | number | undefined\n x1?: string | number | undefined\n y1?: string | number | undefined\n x2?: string | number | undefined\n y2?: string | number | undefined\n width?: string | number | undefined\n height?: string | number | undefined\n transform?: string | (() => string) | undefined\n opacity?: string | number | (() => string | number) | undefined\n points?: string | undefined\n \"font-size\"?: string | number | undefined\n \"text-anchor\"?: \"start\" | \"middle\" | \"end\" | undefined\n \"dominant-baseline\"?: string | undefined\n}\n\ndeclare global {\n namespace JSX {\n /** The type that JSX expressions evaluate to */\n type Element = import(\"./types\").VNode\n\n /**\n * Valid JSX tag types — intrinsic strings + component functions.\n * Components may return VNode, null, strings, functions (reactive getters), etc.\n * (TS 5.1+ feature)\n */\n type ElementType = keyof IntrinsicElements | ((props: any) => import(\"./types\").VNodeChild)\n\n /** Tells TS which prop name carries children in component calls */\n interface ElementChildrenAttribute {\n // biome-ignore lint/complexity/noBannedTypes: JSX spec requires {} for ElementChildrenAttribute\n children: {}\n }\n\n interface IntrinsicElements {\n // Document structure\n html: PyreonHTMLAttributes\n head: PyreonHTMLAttributes\n body: PyreonHTMLAttributes\n title: PyreonHTMLAttributes\n base: PyreonHTMLAttributes\n meta: MetaAttributes\n link: LinkAttributes\n script: ScriptAttributes\n style: PyreonHTMLAttributes\n noscript: PyreonHTMLAttributes\n // Sections\n main: PyreonHTMLAttributes\n header: PyreonHTMLAttributes\n footer: PyreonHTMLAttributes\n nav: PyreonHTMLAttributes\n aside: PyreonHTMLAttributes\n section: PyreonHTMLAttributes\n article: PyreonHTMLAttributes\n address: PyreonHTMLAttributes\n h1: PyreonHTMLAttributes\n h2: PyreonHTMLAttributes\n h3: PyreonHTMLAttributes\n h4: PyreonHTMLAttributes\n h5: PyreonHTMLAttributes\n h6: PyreonHTMLAttributes\n hgroup: PyreonHTMLAttributes\n // Block text\n p: PyreonHTMLAttributes\n pre: PyreonHTMLAttributes\n blockquote: PyreonHTMLAttributes\n figure: PyreonHTMLAttributes\n figcaption: PyreonHTMLAttributes\n div: PyreonHTMLAttributes\n hr: PyreonHTMLAttributes\n // Inline text\n span: PyreonHTMLAttributes\n a: AnchorAttributes\n em: PyreonHTMLAttributes\n strong: PyreonHTMLAttributes\n small: PyreonHTMLAttributes\n s: PyreonHTMLAttributes\n cite: PyreonHTMLAttributes\n q: PyreonHTMLAttributes\n abbr: PyreonHTMLAttributes\n time: PyreonHTMLAttributes\n code: PyreonHTMLAttributes\n var: PyreonHTMLAttributes\n samp: PyreonHTMLAttributes\n kbd: PyreonHTMLAttributes\n mark: PyreonHTMLAttributes\n sub: PyreonHTMLAttributes\n sup: PyreonHTMLAttributes\n i: PyreonHTMLAttributes\n b: PyreonHTMLAttributes\n u: PyreonHTMLAttributes\n bdi: PyreonHTMLAttributes\n bdo: PyreonHTMLAttributes\n br: PyreonHTMLAttributes\n wbr: PyreonHTMLAttributes\n ruby: PyreonHTMLAttributes\n rt: PyreonHTMLAttributes\n rp: PyreonHTMLAttributes\n // Lists\n ul: PyreonHTMLAttributes\n ol: OlAttributes\n li: PyreonHTMLAttributes\n dl: PyreonHTMLAttributes\n dt: PyreonHTMLAttributes\n dd: PyreonHTMLAttributes\n // Forms\n form: FormAttributes\n label: LabelAttributes\n input: InputAttributes\n button: ButtonAttributes\n select: SelectAttributes\n datalist: PyreonHTMLAttributes\n optgroup: PyreonHTMLAttributes\n option: OptionAttributes\n textarea: TextareaAttributes\n output: PyreonHTMLAttributes\n progress: ProgressAttributes\n meter: MeterAttributes\n fieldset: PyreonHTMLAttributes\n legend: PyreonHTMLAttributes\n // Tables\n table: PyreonHTMLAttributes\n caption: PyreonHTMLAttributes\n colgroup: PyreonHTMLAttributes\n col: ColAttributes\n thead: PyreonHTMLAttributes\n tbody: PyreonHTMLAttributes\n tfoot: PyreonHTMLAttributes\n tr: PyreonHTMLAttributes\n th: ThAttributes\n td: TdAttributes\n // Media\n img: ImgAttributes\n video: VideoAttributes\n audio: AudioAttributes\n source: SourceAttributes\n track: PyreonHTMLAttributes\n picture: PyreonHTMLAttributes\n canvas: PyreonHTMLAttributes\n svg: SvgAttributes\n path: SvgAttributes\n circle: SvgAttributes\n ellipse: SvgAttributes\n line: SvgAttributes\n polyline: SvgAttributes\n polygon: SvgAttributes\n rect: SvgAttributes\n text: SvgAttributes\n tspan: SvgAttributes\n g: SvgAttributes\n defs: SvgAttributes\n use: SvgAttributes & { href?: string }\n symbol: SvgAttributes\n clipPath: SvgAttributes\n mask: SvgAttributes\n marker: SvgAttributes\n pattern: SvgAttributes\n linearGradient: SvgAttributes\n radialGradient: SvgAttributes\n stop: SvgAttributes & {\n offset?: string | number\n \"stop-color\"?: string\n \"stop-opacity\"?: string | number\n }\n // Interactive / embedding\n details: DetailsAttributes\n summary: PyreonHTMLAttributes\n dialog: DialogAttributes\n iframe: IframeAttributes\n embed: PyreonHTMLAttributes\n object: PyreonHTMLAttributes\n param: PyreonHTMLAttributes\n // Semantic / misc\n menu: PyreonHTMLAttributes\n menuitem: PyreonHTMLAttributes\n template: PyreonHTMLAttributes\n slot: PyreonHTMLAttributes\n portal: PyreonHTMLAttributes\n // Catch-all for custom elements and data-* attrs\n [tagName: string]: PyreonHTMLAttributes\n }\n }\n}\n"],"mappings":";;AAGA,MAAa,WAA0B,OAAO,kBAAkB;;;;;;;;;AAUhE,MAAa,cAAqB,EAAE;AAmBpC,SAAgB,EACd,MACA,OACA,GAAG,UACI;AACP,QAAO;EACC;EACN,OAAQ,SAAS;EACjB,UAAU,kBAAkB,SAAS;EACrC,KAAM,OAAO,OAAkC;EAChD;;AAGH,SAAS,kBAAkB,UAAsC;AAE/D,MAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,IACnC,KAAI,MAAM,QAAQ,SAAS,GAAG,CAC5B,QAAO,gBAAgB,SAAS;AAGpC,QAAO;;AAGT,SAAS,gBAAgB,UAAsC;CAC7D,MAAM,SAAuB,EAAE;AAC/B,MAAK,MAAM,SAAS,SAClB,KAAI,MAAM,QAAQ,MAAM,CACtB,QAAO,KAAK,GAAG,gBAAgB,MAAsB,CAAC;KAEtD,QAAO,KAAK,MAAM;AAGtB,QAAO;;;;;;;;;;;;ACpDT,SAAgB,IACd,MACA,OACA,KACO;CACP,MAAM,EAAE,UAAU,GAAG,SAAS;CAC9B,MAAM,eAAgB,OAAO,OAAO;EAAE,GAAG;EAAM;EAAK,GAAG;AAEvD,KAAI,OAAO,SAAS,WAIlB,QAAO,EAAE,MADc,aAAa,SAAY;EAAE,GAAG;EAAc;EAAU,GAAG,aAClD;AAKhC,QAAO,EAAE,MAAM,cAAc,GADV,aAAa,SAAY,EAAE,GAAG,MAAM,QAAQ,SAAS,GAAG,WAAW,CAAC,SAAS,CACnC;;AAI/D,MAAa,OAAO"}
1
+ {"version":3,"file":"jsx-runtime.js","names":[],"sources":["../src/h.ts","../src/jsx-runtime.ts"],"sourcesContent":["import type { ComponentFn, Props, VNode, VNodeChild } from \"./types\"\n\n/** Marker for fragment nodes — renders children without a wrapper element */\nexport const Fragment: unique symbol = Symbol(\"Pyreon.Fragment\")\n\n/**\n * Hyperscript function — the compiled output of JSX.\n * `<div class=\"x\">hello</div>` → `h(\"div\", { class: \"x\" }, \"hello\")`\n *\n * Generic on P so TypeScript validates props match the component's signature\n * at the call site, then stores the result in the loosely-typed VNode.\n */\n/** Shared empty props sentinel — identity-checked in mountElement to skip applyProps. */\nexport const EMPTY_PROPS: Props = {} as Props\n\n/** Makes `children` optional in P (if present) so it can be passed as rest args to h(). */\ntype PropsWithOptionalChildren<P extends Props> = Omit<P, \"children\"> &\n (\"children\" extends keyof P ? { children?: P[\"children\"] } : unknown)\n\n// Overload: component with typed props — children is optional in the props object\n// because it can be passed as rest args. Extra keys are allowed via `& Props`.\nexport function h<P extends Props>(\n type: ComponentFn<P>,\n props: (PropsWithOptionalChildren<P> & Props) | null,\n ...children: VNodeChild[]\n): VNode\n// Overload: intrinsic element, symbol, generic/dynamic component, or mixed union\nexport function h(\n type: string | ((p: any) => VNodeChild) | symbol,\n props: Props | null,\n ...children: VNodeChild[]\n): VNode\nexport function h<P extends Props>(\n type: string | ComponentFn<P> | symbol,\n props: P | null,\n ...children: VNodeChild[]\n): VNode {\n return {\n type: type as string | ComponentFn | symbol,\n props: (props ?? EMPTY_PROPS) as Props,\n children: normalizeChildren(children),\n key: (props?.key as string | number | null) ?? null,\n }\n}\n\nfunction normalizeChildren(children: VNodeChild[]): VNodeChild[] {\n // Fast path: no nested arrays — return as-is without allocating\n for (let i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return flattenChildren(children)\n }\n }\n return children\n}\n\nfunction flattenChildren(children: VNodeChild[]): VNodeChild[] {\n const result: VNodeChild[] = []\n for (const child of children) {\n if (Array.isArray(child)) {\n result.push(...flattenChildren(child as VNodeChild[]))\n } else {\n result.push(child)\n }\n }\n return result\n}\n","/**\n * JSX automatic runtime.\n *\n * When tsconfig has `\"jsxImportSource\": \"@pyreon/core\"`, the TS/bundler compiler\n * rewrites JSX to imports from this file automatically:\n * <div class=\"x\" /> → jsx(\"div\", { class: \"x\" })\n */\nimport { Fragment, h } from \"./h\"\nimport type { ComponentFn, Props, VNode, VNodeChild } from \"./types\"\n\nexport { Fragment }\n\nexport function jsx(\n type: string | ComponentFn | symbol,\n props: Props & { children?: VNodeChild | VNodeChild[] },\n key?: string | number | null,\n): VNode {\n const { children, ...rest } = props\n const propsWithKey = (key != null ? { ...rest, key } : rest) as Props\n\n if (typeof type === \"function\") {\n // Component: keep children in props.children so the component function can access them.\n // Children must NOT be spread as h() rest args because mountComponent only passes vnode.props.\n const componentProps = children !== undefined ? { ...propsWithKey, children } : propsWithKey\n return h(type, componentProps)\n }\n\n // DOM element or symbol (Fragment, ForSymbol): children go in vnode.children\n const childArray = children === undefined ? [] : Array.isArray(children) ? children : [children]\n return h(type, propsWithKey, ...(childArray as VNodeChild[]))\n}\n\n// jsxs is called when there are multiple static children — same signature\nexport const jsxs = jsx\n\n// ─── JSX types ────────────────────────────────────────────────────────────────\n\ntype Booleanish = boolean | \"true\" | \"false\"\ntype CSSProperties = { [K in keyof CSSStyleDeclaration]?: string | number }\ntype StyleValue = string | CSSProperties\n\n/** Common HTML attributes accepted by all Pyreon elements */\ninterface PyreonHTMLAttributes<E extends Element = HTMLElement> {\n // Identity\n id?: string | undefined\n class?: string | (() => string) | undefined\n className?: string | (() => string) | undefined\n style?: StyleValue | (() => StyleValue) | undefined\n // Accessible\n role?: string | undefined\n tabIndex?: number | (() => number) | undefined\n title?: string | undefined\n lang?: string | undefined\n dir?: \"ltr\" | \"rtl\" | \"auto\" | undefined\n hidden?: boolean | (() => boolean) | undefined\n draggable?: Booleanish | undefined\n // ARIA\n \"aria-label\"?: string | (() => string) | undefined\n \"aria-hidden\"?: Booleanish | (() => Booleanish) | undefined\n \"aria-disabled\"?: Booleanish | (() => Booleanish) | undefined\n \"aria-expanded\"?: Booleanish | (() => Booleanish) | undefined\n \"aria-selected\"?: Booleanish | (() => Booleanish) | undefined\n \"aria-checked\"?: Booleanish | \"mixed\" | (() => Booleanish | \"mixed\") | undefined\n \"aria-current\"?: Booleanish | \"page\" | \"step\" | \"location\" | \"date\" | \"time\" | undefined\n \"aria-live\"?: \"off\" | \"assertive\" | \"polite\" | undefined\n \"aria-atomic\"?: Booleanish | undefined\n \"aria-busy\"?: Booleanish | undefined\n \"aria-controls\"?: string | undefined\n \"aria-describedby\"?: string | undefined\n \"aria-labelledby\"?: string | undefined\n \"aria-placeholder\"?: string | undefined\n \"aria-required\"?: Booleanish | (() => Booleanish) | undefined\n \"aria-invalid\"?: Booleanish | \"grammar\" | \"spelling\" | undefined\n \"aria-valuemin\"?: number | undefined\n \"aria-valuemax\"?: number | undefined\n \"aria-valuenow\"?: number | undefined\n \"aria-valuetext\"?: string | undefined\n \"aria-haspopup\"?: Booleanish | \"menu\" | \"listbox\" | \"tree\" | \"grid\" | \"dialog\" | undefined\n \"aria-posinset\"?: number | undefined\n \"aria-setsize\"?: number | undefined\n \"aria-level\"?: number | undefined\n \"aria-multiline\"?: Booleanish | undefined\n \"aria-multiselectable\"?: Booleanish | undefined\n \"aria-orientation\"?: \"horizontal\" | \"vertical\" | undefined\n \"aria-readonly\"?: Booleanish | (() => Booleanish) | undefined\n \"aria-sort\"?: \"none\" | \"ascending\" | \"descending\" | \"other\" | undefined\n \"aria-autocomplete\"?: \"none\" | \"inline\" | \"list\" | \"both\" | undefined\n \"aria-colcount\"?: number | undefined\n \"aria-colindex\"?: number | undefined\n \"aria-colspan\"?: number | undefined\n \"aria-rowcount\"?: number | undefined\n \"aria-rowindex\"?: number | undefined\n \"aria-rowspan\"?: number | undefined\n // DOM lifecycle ref — object ref or callback ref\n ref?: { current: E | null } | ((el: E | null) => void) | undefined\n // Key for list reconciliation\n key?: string | number | undefined\n // Children — allows null, undefined, boolean in JSX children positions\n children?: VNodeChild | VNodeChild[]\n // innerHTML\n innerHTML?: string | undefined\n dangerouslySetInnerHTML?: { __html: string } | undefined\n // Events\n onClick?: ((e: MouseEvent) => void) | undefined\n onDblClick?: ((e: MouseEvent) => void) | undefined\n onMouseDown?: ((e: MouseEvent) => void) | undefined\n onMouseUp?: ((e: MouseEvent) => void) | undefined\n onMouseEnter?: ((e: MouseEvent) => void) | undefined\n onMouseLeave?: ((e: MouseEvent) => void) | undefined\n onMouseMove?: ((e: MouseEvent) => void) | undefined\n onMouseOver?: ((e: MouseEvent) => void) | undefined\n onMouseOut?: ((e: MouseEvent) => void) | undefined\n onContextMenu?: ((e: MouseEvent) => void) | undefined\n onKeyDown?: ((e: KeyboardEvent) => void) | undefined\n onKeyUp?: ((e: KeyboardEvent) => void) | undefined\n onKeyPress?: ((e: KeyboardEvent) => void) | undefined\n onFocus?: ((e: FocusEvent) => void) | undefined\n onBlur?: ((e: FocusEvent) => void) | undefined\n onChange?: ((e: Event) => void) | undefined\n onInput?: ((e: InputEvent) => void) | undefined\n onSubmit?: ((e: SubmitEvent) => void) | undefined\n onReset?: ((e: Event) => void) | undefined\n onScroll?: ((e: Event) => void) | undefined\n onWheel?: ((e: WheelEvent) => void) | undefined\n onDragStart?: ((e: DragEvent) => void) | undefined\n onDragEnd?: ((e: DragEvent) => void) | undefined\n onDragOver?: ((e: DragEvent) => void) | undefined\n onDragEnter?: ((e: DragEvent) => void) | undefined\n onDragLeave?: ((e: DragEvent) => void) | undefined\n onDrop?: ((e: DragEvent) => void) | undefined\n onTouchStart?: ((e: TouchEvent) => void) | undefined\n onTouchEnd?: ((e: TouchEvent) => void) | undefined\n onTouchMove?: ((e: TouchEvent) => void) | undefined\n onPointerDown?: ((e: PointerEvent) => void) | undefined\n onPointerUp?: ((e: PointerEvent) => void) | undefined\n onPointerMove?: ((e: PointerEvent) => void) | undefined\n onPointerEnter?: ((e: PointerEvent) => void) | undefined\n onPointerLeave?: ((e: PointerEvent) => void) | undefined\n onPointerCancel?: ((e: PointerEvent) => void) | undefined\n onPointerOver?: ((e: PointerEvent) => void) | undefined\n onPointerOut?: ((e: PointerEvent) => void) | undefined\n onTransitionEnd?: ((e: TransitionEvent) => void) | undefined\n onAnimationStart?: ((e: AnimationEvent) => void) | undefined\n onAnimationEnd?: ((e: AnimationEvent) => void) | undefined\n onAnimationIteration?: ((e: AnimationEvent) => void) | undefined\n onLoad?: ((e: Event) => void) | undefined\n onError?: ((e: Event | string) => void) | undefined\n onAbort?: ((e: Event) => void) | undefined\n onSelect?: ((e: Event) => void) | undefined\n onCopy?: ((e: ClipboardEvent) => void) | undefined\n onCut?: ((e: ClipboardEvent) => void) | undefined\n onPaste?: ((e: ClipboardEvent) => void) | undefined\n // Catch-all for data-* and other arbitrary attributes\n [key: string]: unknown\n}\n\n/** Attributes specific to form inputs */\ninterface InputAttributes extends PyreonHTMLAttributes<HTMLInputElement> {\n type?: string | (() => string) | undefined\n value?: string | number | (() => string | number) | undefined\n defaultValue?: string | number | undefined\n checked?: boolean | (() => boolean) | undefined\n defaultChecked?: boolean | undefined\n placeholder?: string | (() => string) | undefined\n disabled?: boolean | (() => boolean) | undefined\n readOnly?: boolean | undefined\n required?: boolean | (() => boolean) | undefined\n min?: string | number | undefined\n max?: string | number | undefined\n step?: string | number | undefined\n minLength?: number | undefined\n maxLength?: number | undefined\n pattern?: string | undefined\n multiple?: boolean | undefined\n name?: string | undefined\n accept?: string | undefined\n autoComplete?: string | undefined\n autoFocus?: boolean | undefined\n form?: string | undefined\n list?: string | undefined\n size?: number | undefined\n src?: string | (() => string) | undefined\n alt?: string | undefined\n width?: number | string | undefined\n height?: number | string | undefined\n}\n\ninterface AnchorAttributes extends PyreonHTMLAttributes<HTMLAnchorElement> {\n href?: string | (() => string) | undefined\n target?: \"_blank\" | \"_self\" | \"_parent\" | \"_top\" | string | undefined\n rel?: string | undefined\n download?: string | boolean | undefined\n}\n\ninterface ButtonAttributes extends PyreonHTMLAttributes<HTMLButtonElement> {\n type?: \"button\" | \"submit\" | \"reset\" | undefined\n disabled?: boolean | (() => boolean) | undefined\n name?: string | undefined\n value?: string | undefined\n form?: string | undefined\n formAction?: string | undefined\n formMethod?: string | undefined\n formEncType?: string | undefined\n formNoValidate?: boolean | undefined\n formTarget?: string | undefined\n}\n\ninterface TextareaAttributes extends PyreonHTMLAttributes<HTMLTextAreaElement> {\n value?: string | (() => string) | undefined\n defaultValue?: string | undefined\n placeholder?: string | (() => string) | undefined\n disabled?: boolean | (() => boolean) | undefined\n readOnly?: boolean | undefined\n required?: boolean | (() => boolean) | undefined\n rows?: number | undefined\n cols?: number | undefined\n minLength?: number | undefined\n maxLength?: number | undefined\n name?: string | undefined\n autoFocus?: boolean | undefined\n form?: string | undefined\n wrap?: \"hard\" | \"soft\" | undefined\n}\n\ninterface SelectAttributes extends PyreonHTMLAttributes<HTMLSelectElement> {\n value?: string | string[] | (() => string | string[]) | undefined\n defaultValue?: string | string[] | undefined\n disabled?: boolean | (() => boolean) | undefined\n required?: boolean | (() => boolean) | undefined\n multiple?: boolean | undefined\n name?: string | undefined\n size?: number | undefined\n form?: string | undefined\n autoFocus?: boolean | undefined\n}\n\ninterface OptionAttributes extends PyreonHTMLAttributes<HTMLOptionElement> {\n value?: string | number | (() => string | number) | undefined\n disabled?: boolean | (() => boolean) | undefined\n selected?: boolean | (() => boolean) | undefined\n label?: string | undefined\n}\n\ninterface FormAttributes extends PyreonHTMLAttributes<HTMLFormElement> {\n action?: string | undefined\n method?: \"get\" | \"post\" | undefined\n encType?: string | undefined\n noValidate?: boolean | undefined\n target?: string | undefined\n name?: string | undefined\n autoComplete?: string | undefined\n}\n\ninterface ImgAttributes extends PyreonHTMLAttributes<HTMLImageElement> {\n src?: string | (() => string) | undefined\n alt?: string | (() => string) | undefined\n width?: number | string | (() => number | string) | undefined\n height?: number | string | (() => number | string) | undefined\n loading?: \"lazy\" | \"eager\" | undefined\n decoding?: \"auto\" | \"async\" | \"sync\" | undefined\n crossOrigin?: \"anonymous\" | \"use-credentials\" | undefined\n referrerPolicy?: string | undefined\n srcSet?: string | undefined\n sizes?: string | undefined\n}\n\ninterface VideoAttributes extends PyreonHTMLAttributes<HTMLVideoElement> {\n src?: string | (() => string) | undefined\n width?: number | string | undefined\n height?: number | string | undefined\n controls?: boolean | undefined\n autoPlay?: boolean | undefined\n muted?: boolean | undefined\n loop?: boolean | undefined\n poster?: string | undefined\n preload?: \"none\" | \"metadata\" | \"auto\" | undefined\n playsInline?: boolean | undefined\n crossOrigin?: \"anonymous\" | \"use-credentials\" | undefined\n}\n\ninterface AudioAttributes extends PyreonHTMLAttributes<HTMLAudioElement> {\n src?: string | (() => string) | undefined\n controls?: boolean | undefined\n autoPlay?: boolean | undefined\n muted?: boolean | undefined\n loop?: boolean | undefined\n preload?: \"none\" | \"metadata\" | \"auto\" | undefined\n crossOrigin?: \"anonymous\" | \"use-credentials\" | undefined\n}\n\ninterface LabelAttributes extends PyreonHTMLAttributes<HTMLLabelElement> {\n htmlFor?: string | undefined\n for?: string | undefined\n form?: string | undefined\n}\n\ninterface ThAttributes extends PyreonHTMLAttributes<HTMLTableCellElement> {\n colSpan?: number | undefined\n rowSpan?: number | undefined\n scope?: \"col\" | \"row\" | \"colgroup\" | \"rowgroup\" | undefined\n abbr?: string | undefined\n headers?: string | undefined\n}\n\ninterface TdAttributes extends PyreonHTMLAttributes<HTMLTableCellElement> {\n colSpan?: number | undefined\n rowSpan?: number | undefined\n headers?: string | undefined\n}\n\ninterface ColAttributes extends PyreonHTMLAttributes<HTMLTableColElement> {\n span?: number | undefined\n}\n\ninterface IframeAttributes extends PyreonHTMLAttributes<HTMLIFrameElement> {\n src?: string | (() => string) | undefined\n width?: number | string | undefined\n height?: number | string | undefined\n allow?: string | undefined\n allowFullScreen?: boolean | undefined\n loading?: \"lazy\" | \"eager\" | undefined\n name?: string | undefined\n sandbox?: string | undefined\n referrerPolicy?: string | undefined\n title?: string | undefined\n}\n\ninterface LinkAttributes extends PyreonHTMLAttributes<HTMLLinkElement> {\n href?: string | (() => string) | undefined\n rel?: string | undefined\n type?: string | undefined\n as?: string | undefined\n media?: string | undefined\n crossOrigin?: \"anonymous\" | \"use-credentials\" | undefined\n integrity?: string | undefined\n referrerPolicy?: string | undefined\n}\n\ninterface MetaAttributes extends PyreonHTMLAttributes<HTMLMetaElement> {\n name?: string | undefined\n content?: string | (() => string) | undefined\n httpEquiv?: string | undefined\n charset?: string | undefined\n property?: string | undefined\n}\n\ninterface ScriptAttributes extends PyreonHTMLAttributes<HTMLScriptElement> {\n src?: string | (() => string) | undefined\n type?: string | undefined\n async?: boolean | undefined\n defer?: boolean | undefined\n crossOrigin?: \"anonymous\" | \"use-credentials\" | undefined\n integrity?: string | undefined\n noModule?: boolean | undefined\n referrerPolicy?: string | undefined\n}\n\ninterface SourceAttributes extends PyreonHTMLAttributes<HTMLSourceElement> {\n src?: string | (() => string) | undefined\n type?: string | undefined\n srcSet?: string | undefined\n sizes?: string | undefined\n media?: string | undefined\n}\n\ninterface ProgressAttributes extends PyreonHTMLAttributes<HTMLProgressElement> {\n value?: number | (() => number) | undefined\n max?: number | undefined\n}\n\ninterface MeterAttributes extends PyreonHTMLAttributes<HTMLMeterElement> {\n value?: number | (() => number) | undefined\n min?: number | undefined\n max?: number | undefined\n low?: number | undefined\n high?: number | undefined\n optimum?: number | undefined\n}\n\ninterface DetailsAttributes extends PyreonHTMLAttributes<HTMLDetailsElement> {\n open?: boolean | (() => boolean) | undefined\n}\n\ninterface DialogAttributes extends PyreonHTMLAttributes<HTMLDialogElement> {\n open?: boolean | (() => boolean) | undefined\n}\n\ninterface OlAttributes extends PyreonHTMLAttributes<HTMLOListElement> {\n start?: number | undefined\n reversed?: boolean | undefined\n type?: \"1\" | \"a\" | \"A\" | \"i\" | \"I\" | undefined\n}\n\ninterface SvgAttributes extends PyreonHTMLAttributes<SVGElement> {\n viewBox?: string | undefined\n xmlns?: string | undefined\n fill?: string | (() => string) | undefined\n stroke?: string | (() => string) | undefined\n \"stroke-width\"?: string | number | undefined\n \"stroke-linecap\"?: \"butt\" | \"round\" | \"square\" | undefined\n \"stroke-linejoin\"?: \"miter\" | \"round\" | \"bevel\" | undefined\n \"fill-rule\"?: \"nonzero\" | \"evenodd\" | undefined\n \"clip-rule\"?: \"nonzero\" | \"evenodd\" | undefined\n \"clip-path\"?: string | undefined\n d?: string | undefined\n cx?: string | number | undefined\n cy?: string | number | undefined\n r?: string | number | undefined\n rx?: string | number | undefined\n ry?: string | number | undefined\n x?: string | number | undefined\n y?: string | number | undefined\n x1?: string | number | undefined\n y1?: string | number | undefined\n x2?: string | number | undefined\n y2?: string | number | undefined\n width?: string | number | undefined\n height?: string | number | undefined\n transform?: string | (() => string) | undefined\n opacity?: string | number | (() => string | number) | undefined\n points?: string | undefined\n \"font-size\"?: string | number | undefined\n \"text-anchor\"?: \"start\" | \"middle\" | \"end\" | undefined\n \"dominant-baseline\"?: string | undefined\n}\n\ndeclare global {\n namespace JSX {\n /** The type that JSX expressions evaluate to */\n type Element = import(\"./types\").VNode\n\n /**\n * Valid JSX tag types — intrinsic strings + component functions.\n * Components may return VNode, null, strings, functions (reactive getters), etc.\n * (TS 5.1+ feature)\n */\n type ElementType = keyof IntrinsicElements | ((props: any) => import(\"./types\").VNodeChild)\n\n /** Tells TS which prop name carries children in component calls */\n interface ElementChildrenAttribute {\n // biome-ignore lint/complexity/noBannedTypes: JSX spec requires {} for ElementChildrenAttribute\n children: {}\n }\n\n interface IntrinsicElements {\n // Document structure\n html: PyreonHTMLAttributes\n head: PyreonHTMLAttributes\n body: PyreonHTMLAttributes\n title: PyreonHTMLAttributes\n base: PyreonHTMLAttributes\n meta: MetaAttributes\n link: LinkAttributes\n script: ScriptAttributes\n style: PyreonHTMLAttributes\n noscript: PyreonHTMLAttributes\n // Sections\n main: PyreonHTMLAttributes\n header: PyreonHTMLAttributes\n footer: PyreonHTMLAttributes\n nav: PyreonHTMLAttributes\n aside: PyreonHTMLAttributes\n section: PyreonHTMLAttributes\n article: PyreonHTMLAttributes\n address: PyreonHTMLAttributes\n h1: PyreonHTMLAttributes\n h2: PyreonHTMLAttributes\n h3: PyreonHTMLAttributes\n h4: PyreonHTMLAttributes\n h5: PyreonHTMLAttributes\n h6: PyreonHTMLAttributes\n hgroup: PyreonHTMLAttributes\n // Block text\n p: PyreonHTMLAttributes\n pre: PyreonHTMLAttributes\n blockquote: PyreonHTMLAttributes\n figure: PyreonHTMLAttributes\n figcaption: PyreonHTMLAttributes\n div: PyreonHTMLAttributes\n hr: PyreonHTMLAttributes\n // Inline text\n span: PyreonHTMLAttributes\n a: AnchorAttributes\n em: PyreonHTMLAttributes\n strong: PyreonHTMLAttributes\n small: PyreonHTMLAttributes\n s: PyreonHTMLAttributes\n cite: PyreonHTMLAttributes\n q: PyreonHTMLAttributes\n abbr: PyreonHTMLAttributes\n time: PyreonHTMLAttributes\n code: PyreonHTMLAttributes\n var: PyreonHTMLAttributes\n samp: PyreonHTMLAttributes\n kbd: PyreonHTMLAttributes\n mark: PyreonHTMLAttributes\n sub: PyreonHTMLAttributes\n sup: PyreonHTMLAttributes\n i: PyreonHTMLAttributes\n b: PyreonHTMLAttributes\n u: PyreonHTMLAttributes\n bdi: PyreonHTMLAttributes\n bdo: PyreonHTMLAttributes\n br: PyreonHTMLAttributes\n wbr: PyreonHTMLAttributes\n ruby: PyreonHTMLAttributes\n rt: PyreonHTMLAttributes\n rp: PyreonHTMLAttributes\n // Lists\n ul: PyreonHTMLAttributes\n ol: OlAttributes\n li: PyreonHTMLAttributes\n dl: PyreonHTMLAttributes\n dt: PyreonHTMLAttributes\n dd: PyreonHTMLAttributes\n // Forms\n form: FormAttributes\n label: LabelAttributes\n input: InputAttributes\n button: ButtonAttributes\n select: SelectAttributes\n datalist: PyreonHTMLAttributes\n optgroup: PyreonHTMLAttributes\n option: OptionAttributes\n textarea: TextareaAttributes\n output: PyreonHTMLAttributes\n progress: ProgressAttributes\n meter: MeterAttributes\n fieldset: PyreonHTMLAttributes\n legend: PyreonHTMLAttributes\n // Tables\n table: PyreonHTMLAttributes\n caption: PyreonHTMLAttributes\n colgroup: PyreonHTMLAttributes\n col: ColAttributes\n thead: PyreonHTMLAttributes\n tbody: PyreonHTMLAttributes\n tfoot: PyreonHTMLAttributes\n tr: PyreonHTMLAttributes\n th: ThAttributes\n td: TdAttributes\n // Media\n img: ImgAttributes\n video: VideoAttributes\n audio: AudioAttributes\n source: SourceAttributes\n track: PyreonHTMLAttributes\n picture: PyreonHTMLAttributes\n canvas: PyreonHTMLAttributes\n svg: SvgAttributes\n path: SvgAttributes\n circle: SvgAttributes\n ellipse: SvgAttributes\n line: SvgAttributes\n polyline: SvgAttributes\n polygon: SvgAttributes\n rect: SvgAttributes\n text: SvgAttributes\n tspan: SvgAttributes\n g: SvgAttributes\n defs: SvgAttributes\n use: SvgAttributes & { href?: string }\n symbol: SvgAttributes\n clipPath: SvgAttributes\n mask: SvgAttributes\n marker: SvgAttributes\n pattern: SvgAttributes\n linearGradient: SvgAttributes\n radialGradient: SvgAttributes\n stop: SvgAttributes & {\n offset?: string | number\n \"stop-color\"?: string\n \"stop-opacity\"?: string | number\n }\n // Interactive / embedding\n details: DetailsAttributes\n summary: PyreonHTMLAttributes\n dialog: DialogAttributes\n iframe: IframeAttributes\n embed: PyreonHTMLAttributes\n object: PyreonHTMLAttributes\n param: PyreonHTMLAttributes\n // Semantic / misc\n menu: PyreonHTMLAttributes\n menuitem: PyreonHTMLAttributes\n template: PyreonHTMLAttributes\n slot: PyreonHTMLAttributes\n portal: PyreonHTMLAttributes\n // Catch-all for custom elements and data-* attrs\n [tagName: string]: PyreonHTMLAttributes<any>\n }\n }\n}\n"],"mappings":";;AAGA,MAAa,WAA0B,OAAO,kBAAkB;;;;;;;;;AAUhE,MAAa,cAAqB,EAAE;AAmBpC,SAAgB,EACd,MACA,OACA,GAAG,UACI;AACP,QAAO;EACC;EACN,OAAQ,SAAS;EACjB,UAAU,kBAAkB,SAAS;EACrC,KAAM,OAAO,OAAkC;EAChD;;AAGH,SAAS,kBAAkB,UAAsC;AAE/D,MAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,IACnC,KAAI,MAAM,QAAQ,SAAS,GAAG,CAC5B,QAAO,gBAAgB,SAAS;AAGpC,QAAO;;AAGT,SAAS,gBAAgB,UAAsC;CAC7D,MAAM,SAAuB,EAAE;AAC/B,MAAK,MAAM,SAAS,SAClB,KAAI,MAAM,QAAQ,MAAM,CACtB,QAAO,KAAK,GAAG,gBAAgB,MAAsB,CAAC;KAEtD,QAAO,KAAK,MAAM;AAGtB,QAAO;;;;;;;;;;;;ACpDT,SAAgB,IACd,MACA,OACA,KACO;CACP,MAAM,EAAE,UAAU,GAAG,SAAS;CAC9B,MAAM,eAAgB,OAAO,OAAO;EAAE,GAAG;EAAM;EAAK,GAAG;AAEvD,KAAI,OAAO,SAAS,WAIlB,QAAO,EAAE,MADc,aAAa,SAAY;EAAE,GAAG;EAAc;EAAU,GAAG,aAClD;AAKhC,QAAO,EAAE,MAAM,cAAc,GADV,aAAa,SAAY,EAAE,GAAG,MAAM,QAAQ,SAAS,GAAG,WAAW,CAAC,SAAS,CACnC;;AAI/D,MAAa,OAAO"}
@@ -28,7 +28,7 @@ type Booleanish = boolean | "true" | "false";
28
28
  type CSSProperties = { [K in keyof CSSStyleDeclaration]?: string | number };
29
29
  type StyleValue = string | CSSProperties;
30
30
  /** Common HTML attributes accepted by all Pyreon elements */
31
- interface PyreonHTMLAttributes {
31
+ interface PyreonHTMLAttributes<E extends Element = HTMLElement> {
32
32
  id?: string | undefined;
33
33
  class?: string | (() => string) | undefined;
34
34
  className?: string | (() => string) | undefined;
@@ -77,8 +77,8 @@ interface PyreonHTMLAttributes {
77
77
  "aria-rowindex"?: number | undefined;
78
78
  "aria-rowspan"?: number | undefined;
79
79
  ref?: {
80
- current: unknown;
81
- } | ((el: Element | null) => void) | undefined;
80
+ current: E | null;
81
+ } | ((el: E | null) => void) | undefined;
82
82
  key?: string | number | undefined;
83
83
  children?: VNodeChild | VNodeChild[];
84
84
  innerHTML?: string | undefined;
@@ -137,7 +137,7 @@ interface PyreonHTMLAttributes {
137
137
  [key: string]: unknown;
138
138
  }
139
139
  /** Attributes specific to form inputs */
140
- interface InputAttributes extends PyreonHTMLAttributes {
140
+ interface InputAttributes extends PyreonHTMLAttributes<HTMLInputElement> {
141
141
  type?: string | (() => string) | undefined;
142
142
  value?: string | number | (() => string | number) | undefined;
143
143
  defaultValue?: string | number | undefined;
@@ -166,13 +166,13 @@ interface InputAttributes extends PyreonHTMLAttributes {
166
166
  width?: number | string | undefined;
167
167
  height?: number | string | undefined;
168
168
  }
169
- interface AnchorAttributes extends PyreonHTMLAttributes {
169
+ interface AnchorAttributes extends PyreonHTMLAttributes<HTMLAnchorElement> {
170
170
  href?: string | (() => string) | undefined;
171
171
  target?: "_blank" | "_self" | "_parent" | "_top" | string | undefined;
172
172
  rel?: string | undefined;
173
173
  download?: string | boolean | undefined;
174
174
  }
175
- interface ButtonAttributes extends PyreonHTMLAttributes {
175
+ interface ButtonAttributes extends PyreonHTMLAttributes<HTMLButtonElement> {
176
176
  type?: "button" | "submit" | "reset" | undefined;
177
177
  disabled?: boolean | (() => boolean) | undefined;
178
178
  name?: string | undefined;
@@ -184,7 +184,7 @@ interface ButtonAttributes extends PyreonHTMLAttributes {
184
184
  formNoValidate?: boolean | undefined;
185
185
  formTarget?: string | undefined;
186
186
  }
187
- interface TextareaAttributes extends PyreonHTMLAttributes {
187
+ interface TextareaAttributes extends PyreonHTMLAttributes<HTMLTextAreaElement> {
188
188
  value?: string | (() => string) | undefined;
189
189
  defaultValue?: string | undefined;
190
190
  placeholder?: string | (() => string) | undefined;
@@ -200,7 +200,7 @@ interface TextareaAttributes extends PyreonHTMLAttributes {
200
200
  form?: string | undefined;
201
201
  wrap?: "hard" | "soft" | undefined;
202
202
  }
203
- interface SelectAttributes extends PyreonHTMLAttributes {
203
+ interface SelectAttributes extends PyreonHTMLAttributes<HTMLSelectElement> {
204
204
  value?: string | string[] | (() => string | string[]) | undefined;
205
205
  defaultValue?: string | string[] | undefined;
206
206
  disabled?: boolean | (() => boolean) | undefined;
@@ -211,13 +211,13 @@ interface SelectAttributes extends PyreonHTMLAttributes {
211
211
  form?: string | undefined;
212
212
  autoFocus?: boolean | undefined;
213
213
  }
214
- interface OptionAttributes extends PyreonHTMLAttributes {
214
+ interface OptionAttributes extends PyreonHTMLAttributes<HTMLOptionElement> {
215
215
  value?: string | number | (() => string | number) | undefined;
216
216
  disabled?: boolean | (() => boolean) | undefined;
217
217
  selected?: boolean | (() => boolean) | undefined;
218
218
  label?: string | undefined;
219
219
  }
220
- interface FormAttributes extends PyreonHTMLAttributes {
220
+ interface FormAttributes extends PyreonHTMLAttributes<HTMLFormElement> {
221
221
  action?: string | undefined;
222
222
  method?: "get" | "post" | undefined;
223
223
  encType?: string | undefined;
@@ -226,7 +226,7 @@ interface FormAttributes extends PyreonHTMLAttributes {
226
226
  name?: string | undefined;
227
227
  autoComplete?: string | undefined;
228
228
  }
229
- interface ImgAttributes extends PyreonHTMLAttributes {
229
+ interface ImgAttributes extends PyreonHTMLAttributes<HTMLImageElement> {
230
230
  src?: string | (() => string) | undefined;
231
231
  alt?: string | (() => string) | undefined;
232
232
  width?: number | string | (() => number | string) | undefined;
@@ -238,7 +238,7 @@ interface ImgAttributes extends PyreonHTMLAttributes {
238
238
  srcSet?: string | undefined;
239
239
  sizes?: string | undefined;
240
240
  }
241
- interface VideoAttributes extends PyreonHTMLAttributes {
241
+ interface VideoAttributes extends PyreonHTMLAttributes<HTMLVideoElement> {
242
242
  src?: string | (() => string) | undefined;
243
243
  width?: number | string | undefined;
244
244
  height?: number | string | undefined;
@@ -251,7 +251,7 @@ interface VideoAttributes extends PyreonHTMLAttributes {
251
251
  playsInline?: boolean | undefined;
252
252
  crossOrigin?: "anonymous" | "use-credentials" | undefined;
253
253
  }
254
- interface AudioAttributes extends PyreonHTMLAttributes {
254
+ interface AudioAttributes extends PyreonHTMLAttributes<HTMLAudioElement> {
255
255
  src?: string | (() => string) | undefined;
256
256
  controls?: boolean | undefined;
257
257
  autoPlay?: boolean | undefined;
@@ -260,27 +260,27 @@ interface AudioAttributes extends PyreonHTMLAttributes {
260
260
  preload?: "none" | "metadata" | "auto" | undefined;
261
261
  crossOrigin?: "anonymous" | "use-credentials" | undefined;
262
262
  }
263
- interface LabelAttributes extends PyreonHTMLAttributes {
263
+ interface LabelAttributes extends PyreonHTMLAttributes<HTMLLabelElement> {
264
264
  htmlFor?: string | undefined;
265
265
  for?: string | undefined;
266
266
  form?: string | undefined;
267
267
  }
268
- interface ThAttributes extends PyreonHTMLAttributes {
268
+ interface ThAttributes extends PyreonHTMLAttributes<HTMLTableCellElement> {
269
269
  colSpan?: number | undefined;
270
270
  rowSpan?: number | undefined;
271
271
  scope?: "col" | "row" | "colgroup" | "rowgroup" | undefined;
272
272
  abbr?: string | undefined;
273
273
  headers?: string | undefined;
274
274
  }
275
- interface TdAttributes extends PyreonHTMLAttributes {
275
+ interface TdAttributes extends PyreonHTMLAttributes<HTMLTableCellElement> {
276
276
  colSpan?: number | undefined;
277
277
  rowSpan?: number | undefined;
278
278
  headers?: string | undefined;
279
279
  }
280
- interface ColAttributes extends PyreonHTMLAttributes {
280
+ interface ColAttributes extends PyreonHTMLAttributes<HTMLTableColElement> {
281
281
  span?: number | undefined;
282
282
  }
283
- interface IframeAttributes extends PyreonHTMLAttributes {
283
+ interface IframeAttributes extends PyreonHTMLAttributes<HTMLIFrameElement> {
284
284
  src?: string | (() => string) | undefined;
285
285
  width?: number | string | undefined;
286
286
  height?: number | string | undefined;
@@ -292,7 +292,7 @@ interface IframeAttributes extends PyreonHTMLAttributes {
292
292
  referrerPolicy?: string | undefined;
293
293
  title?: string | undefined;
294
294
  }
295
- interface LinkAttributes extends PyreonHTMLAttributes {
295
+ interface LinkAttributes extends PyreonHTMLAttributes<HTMLLinkElement> {
296
296
  href?: string | (() => string) | undefined;
297
297
  rel?: string | undefined;
298
298
  type?: string | undefined;
@@ -302,14 +302,14 @@ interface LinkAttributes extends PyreonHTMLAttributes {
302
302
  integrity?: string | undefined;
303
303
  referrerPolicy?: string | undefined;
304
304
  }
305
- interface MetaAttributes extends PyreonHTMLAttributes {
305
+ interface MetaAttributes extends PyreonHTMLAttributes<HTMLMetaElement> {
306
306
  name?: string | undefined;
307
307
  content?: string | (() => string) | undefined;
308
308
  httpEquiv?: string | undefined;
309
309
  charset?: string | undefined;
310
310
  property?: string | undefined;
311
311
  }
312
- interface ScriptAttributes extends PyreonHTMLAttributes {
312
+ interface ScriptAttributes extends PyreonHTMLAttributes<HTMLScriptElement> {
313
313
  src?: string | (() => string) | undefined;
314
314
  type?: string | undefined;
315
315
  async?: boolean | undefined;
@@ -319,18 +319,18 @@ interface ScriptAttributes extends PyreonHTMLAttributes {
319
319
  noModule?: boolean | undefined;
320
320
  referrerPolicy?: string | undefined;
321
321
  }
322
- interface SourceAttributes extends PyreonHTMLAttributes {
322
+ interface SourceAttributes extends PyreonHTMLAttributes<HTMLSourceElement> {
323
323
  src?: string | (() => string) | undefined;
324
324
  type?: string | undefined;
325
325
  srcSet?: string | undefined;
326
326
  sizes?: string | undefined;
327
327
  media?: string | undefined;
328
328
  }
329
- interface ProgressAttributes extends PyreonHTMLAttributes {
329
+ interface ProgressAttributes extends PyreonHTMLAttributes<HTMLProgressElement> {
330
330
  value?: number | (() => number) | undefined;
331
331
  max?: number | undefined;
332
332
  }
333
- interface MeterAttributes extends PyreonHTMLAttributes {
333
+ interface MeterAttributes extends PyreonHTMLAttributes<HTMLMeterElement> {
334
334
  value?: number | (() => number) | undefined;
335
335
  min?: number | undefined;
336
336
  max?: number | undefined;
@@ -338,18 +338,18 @@ interface MeterAttributes extends PyreonHTMLAttributes {
338
338
  high?: number | undefined;
339
339
  optimum?: number | undefined;
340
340
  }
341
- interface DetailsAttributes extends PyreonHTMLAttributes {
341
+ interface DetailsAttributes extends PyreonHTMLAttributes<HTMLDetailsElement> {
342
342
  open?: boolean | (() => boolean) | undefined;
343
343
  }
344
- interface DialogAttributes extends PyreonHTMLAttributes {
344
+ interface DialogAttributes extends PyreonHTMLAttributes<HTMLDialogElement> {
345
345
  open?: boolean | (() => boolean) | undefined;
346
346
  }
347
- interface OlAttributes extends PyreonHTMLAttributes {
347
+ interface OlAttributes extends PyreonHTMLAttributes<HTMLOListElement> {
348
348
  start?: number | undefined;
349
349
  reversed?: boolean | undefined;
350
350
  type?: "1" | "a" | "A" | "i" | "I" | undefined;
351
351
  }
352
- interface SvgAttributes extends PyreonHTMLAttributes {
352
+ interface SvgAttributes extends PyreonHTMLAttributes<SVGElement> {
353
353
  viewBox?: string | undefined;
354
354
  xmlns?: string | undefined;
355
355
  fill?: string | (() => string) | undefined;
@@ -531,7 +531,7 @@ declare global {
531
531
  template: PyreonHTMLAttributes;
532
532
  slot: PyreonHTMLAttributes;
533
533
  portal: PyreonHTMLAttributes;
534
- [tagName: string]: PyreonHTMLAttributes;
534
+ [tagName: string]: PyreonHTMLAttributes<any>;
535
535
  }
536
536
  }
537
537
  } //# sourceMappingURL=jsx-runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jsx-dev-runtime2.d.ts","names":[],"sources":["../../../src/types.ts","../../../src/h.ts","../../../src/jsx-runtime.ts"],"mappings":"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"}
1
+ {"version":3,"file":"jsx-dev-runtime2.d.ts","names":[],"sources":["../../../src/types.ts","../../../src/h.ts","../../../src/jsx-runtime.ts"],"mappings":"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"}
@@ -28,7 +28,7 @@ type Booleanish = boolean | "true" | "false";
28
28
  type CSSProperties = { [K in keyof CSSStyleDeclaration]?: string | number };
29
29
  type StyleValue = string | CSSProperties;
30
30
  /** Common HTML attributes accepted by all Pyreon elements */
31
- interface PyreonHTMLAttributes {
31
+ interface PyreonHTMLAttributes<E extends Element = HTMLElement> {
32
32
  id?: string | undefined;
33
33
  class?: string | (() => string) | undefined;
34
34
  className?: string | (() => string) | undefined;
@@ -77,8 +77,8 @@ interface PyreonHTMLAttributes {
77
77
  "aria-rowindex"?: number | undefined;
78
78
  "aria-rowspan"?: number | undefined;
79
79
  ref?: {
80
- current: unknown;
81
- } | ((el: Element | null) => void) | undefined;
80
+ current: E | null;
81
+ } | ((el: E | null) => void) | undefined;
82
82
  key?: string | number | undefined;
83
83
  children?: VNodeChild | VNodeChild[];
84
84
  innerHTML?: string | undefined;
@@ -137,7 +137,7 @@ interface PyreonHTMLAttributes {
137
137
  [key: string]: unknown;
138
138
  }
139
139
  /** Attributes specific to form inputs */
140
- interface InputAttributes extends PyreonHTMLAttributes {
140
+ interface InputAttributes extends PyreonHTMLAttributes<HTMLInputElement> {
141
141
  type?: string | (() => string) | undefined;
142
142
  value?: string | number | (() => string | number) | undefined;
143
143
  defaultValue?: string | number | undefined;
@@ -166,13 +166,13 @@ interface InputAttributes extends PyreonHTMLAttributes {
166
166
  width?: number | string | undefined;
167
167
  height?: number | string | undefined;
168
168
  }
169
- interface AnchorAttributes extends PyreonHTMLAttributes {
169
+ interface AnchorAttributes extends PyreonHTMLAttributes<HTMLAnchorElement> {
170
170
  href?: string | (() => string) | undefined;
171
171
  target?: "_blank" | "_self" | "_parent" | "_top" | string | undefined;
172
172
  rel?: string | undefined;
173
173
  download?: string | boolean | undefined;
174
174
  }
175
- interface ButtonAttributes extends PyreonHTMLAttributes {
175
+ interface ButtonAttributes extends PyreonHTMLAttributes<HTMLButtonElement> {
176
176
  type?: "button" | "submit" | "reset" | undefined;
177
177
  disabled?: boolean | (() => boolean) | undefined;
178
178
  name?: string | undefined;
@@ -184,7 +184,7 @@ interface ButtonAttributes extends PyreonHTMLAttributes {
184
184
  formNoValidate?: boolean | undefined;
185
185
  formTarget?: string | undefined;
186
186
  }
187
- interface TextareaAttributes extends PyreonHTMLAttributes {
187
+ interface TextareaAttributes extends PyreonHTMLAttributes<HTMLTextAreaElement> {
188
188
  value?: string | (() => string) | undefined;
189
189
  defaultValue?: string | undefined;
190
190
  placeholder?: string | (() => string) | undefined;
@@ -200,7 +200,7 @@ interface TextareaAttributes extends PyreonHTMLAttributes {
200
200
  form?: string | undefined;
201
201
  wrap?: "hard" | "soft" | undefined;
202
202
  }
203
- interface SelectAttributes extends PyreonHTMLAttributes {
203
+ interface SelectAttributes extends PyreonHTMLAttributes<HTMLSelectElement> {
204
204
  value?: string | string[] | (() => string | string[]) | undefined;
205
205
  defaultValue?: string | string[] | undefined;
206
206
  disabled?: boolean | (() => boolean) | undefined;
@@ -211,13 +211,13 @@ interface SelectAttributes extends PyreonHTMLAttributes {
211
211
  form?: string | undefined;
212
212
  autoFocus?: boolean | undefined;
213
213
  }
214
- interface OptionAttributes extends PyreonHTMLAttributes {
214
+ interface OptionAttributes extends PyreonHTMLAttributes<HTMLOptionElement> {
215
215
  value?: string | number | (() => string | number) | undefined;
216
216
  disabled?: boolean | (() => boolean) | undefined;
217
217
  selected?: boolean | (() => boolean) | undefined;
218
218
  label?: string | undefined;
219
219
  }
220
- interface FormAttributes extends PyreonHTMLAttributes {
220
+ interface FormAttributes extends PyreonHTMLAttributes<HTMLFormElement> {
221
221
  action?: string | undefined;
222
222
  method?: "get" | "post" | undefined;
223
223
  encType?: string | undefined;
@@ -226,7 +226,7 @@ interface FormAttributes extends PyreonHTMLAttributes {
226
226
  name?: string | undefined;
227
227
  autoComplete?: string | undefined;
228
228
  }
229
- interface ImgAttributes extends PyreonHTMLAttributes {
229
+ interface ImgAttributes extends PyreonHTMLAttributes<HTMLImageElement> {
230
230
  src?: string | (() => string) | undefined;
231
231
  alt?: string | (() => string) | undefined;
232
232
  width?: number | string | (() => number | string) | undefined;
@@ -238,7 +238,7 @@ interface ImgAttributes extends PyreonHTMLAttributes {
238
238
  srcSet?: string | undefined;
239
239
  sizes?: string | undefined;
240
240
  }
241
- interface VideoAttributes extends PyreonHTMLAttributes {
241
+ interface VideoAttributes extends PyreonHTMLAttributes<HTMLVideoElement> {
242
242
  src?: string | (() => string) | undefined;
243
243
  width?: number | string | undefined;
244
244
  height?: number | string | undefined;
@@ -251,7 +251,7 @@ interface VideoAttributes extends PyreonHTMLAttributes {
251
251
  playsInline?: boolean | undefined;
252
252
  crossOrigin?: "anonymous" | "use-credentials" | undefined;
253
253
  }
254
- interface AudioAttributes extends PyreonHTMLAttributes {
254
+ interface AudioAttributes extends PyreonHTMLAttributes<HTMLAudioElement> {
255
255
  src?: string | (() => string) | undefined;
256
256
  controls?: boolean | undefined;
257
257
  autoPlay?: boolean | undefined;
@@ -260,27 +260,27 @@ interface AudioAttributes extends PyreonHTMLAttributes {
260
260
  preload?: "none" | "metadata" | "auto" | undefined;
261
261
  crossOrigin?: "anonymous" | "use-credentials" | undefined;
262
262
  }
263
- interface LabelAttributes extends PyreonHTMLAttributes {
263
+ interface LabelAttributes extends PyreonHTMLAttributes<HTMLLabelElement> {
264
264
  htmlFor?: string | undefined;
265
265
  for?: string | undefined;
266
266
  form?: string | undefined;
267
267
  }
268
- interface ThAttributes extends PyreonHTMLAttributes {
268
+ interface ThAttributes extends PyreonHTMLAttributes<HTMLTableCellElement> {
269
269
  colSpan?: number | undefined;
270
270
  rowSpan?: number | undefined;
271
271
  scope?: "col" | "row" | "colgroup" | "rowgroup" | undefined;
272
272
  abbr?: string | undefined;
273
273
  headers?: string | undefined;
274
274
  }
275
- interface TdAttributes extends PyreonHTMLAttributes {
275
+ interface TdAttributes extends PyreonHTMLAttributes<HTMLTableCellElement> {
276
276
  colSpan?: number | undefined;
277
277
  rowSpan?: number | undefined;
278
278
  headers?: string | undefined;
279
279
  }
280
- interface ColAttributes extends PyreonHTMLAttributes {
280
+ interface ColAttributes extends PyreonHTMLAttributes<HTMLTableColElement> {
281
281
  span?: number | undefined;
282
282
  }
283
- interface IframeAttributes extends PyreonHTMLAttributes {
283
+ interface IframeAttributes extends PyreonHTMLAttributes<HTMLIFrameElement> {
284
284
  src?: string | (() => string) | undefined;
285
285
  width?: number | string | undefined;
286
286
  height?: number | string | undefined;
@@ -292,7 +292,7 @@ interface IframeAttributes extends PyreonHTMLAttributes {
292
292
  referrerPolicy?: string | undefined;
293
293
  title?: string | undefined;
294
294
  }
295
- interface LinkAttributes extends PyreonHTMLAttributes {
295
+ interface LinkAttributes extends PyreonHTMLAttributes<HTMLLinkElement> {
296
296
  href?: string | (() => string) | undefined;
297
297
  rel?: string | undefined;
298
298
  type?: string | undefined;
@@ -302,14 +302,14 @@ interface LinkAttributes extends PyreonHTMLAttributes {
302
302
  integrity?: string | undefined;
303
303
  referrerPolicy?: string | undefined;
304
304
  }
305
- interface MetaAttributes extends PyreonHTMLAttributes {
305
+ interface MetaAttributes extends PyreonHTMLAttributes<HTMLMetaElement> {
306
306
  name?: string | undefined;
307
307
  content?: string | (() => string) | undefined;
308
308
  httpEquiv?: string | undefined;
309
309
  charset?: string | undefined;
310
310
  property?: string | undefined;
311
311
  }
312
- interface ScriptAttributes extends PyreonHTMLAttributes {
312
+ interface ScriptAttributes extends PyreonHTMLAttributes<HTMLScriptElement> {
313
313
  src?: string | (() => string) | undefined;
314
314
  type?: string | undefined;
315
315
  async?: boolean | undefined;
@@ -319,18 +319,18 @@ interface ScriptAttributes extends PyreonHTMLAttributes {
319
319
  noModule?: boolean | undefined;
320
320
  referrerPolicy?: string | undefined;
321
321
  }
322
- interface SourceAttributes extends PyreonHTMLAttributes {
322
+ interface SourceAttributes extends PyreonHTMLAttributes<HTMLSourceElement> {
323
323
  src?: string | (() => string) | undefined;
324
324
  type?: string | undefined;
325
325
  srcSet?: string | undefined;
326
326
  sizes?: string | undefined;
327
327
  media?: string | undefined;
328
328
  }
329
- interface ProgressAttributes extends PyreonHTMLAttributes {
329
+ interface ProgressAttributes extends PyreonHTMLAttributes<HTMLProgressElement> {
330
330
  value?: number | (() => number) | undefined;
331
331
  max?: number | undefined;
332
332
  }
333
- interface MeterAttributes extends PyreonHTMLAttributes {
333
+ interface MeterAttributes extends PyreonHTMLAttributes<HTMLMeterElement> {
334
334
  value?: number | (() => number) | undefined;
335
335
  min?: number | undefined;
336
336
  max?: number | undefined;
@@ -338,18 +338,18 @@ interface MeterAttributes extends PyreonHTMLAttributes {
338
338
  high?: number | undefined;
339
339
  optimum?: number | undefined;
340
340
  }
341
- interface DetailsAttributes extends PyreonHTMLAttributes {
341
+ interface DetailsAttributes extends PyreonHTMLAttributes<HTMLDetailsElement> {
342
342
  open?: boolean | (() => boolean) | undefined;
343
343
  }
344
- interface DialogAttributes extends PyreonHTMLAttributes {
344
+ interface DialogAttributes extends PyreonHTMLAttributes<HTMLDialogElement> {
345
345
  open?: boolean | (() => boolean) | undefined;
346
346
  }
347
- interface OlAttributes extends PyreonHTMLAttributes {
347
+ interface OlAttributes extends PyreonHTMLAttributes<HTMLOListElement> {
348
348
  start?: number | undefined;
349
349
  reversed?: boolean | undefined;
350
350
  type?: "1" | "a" | "A" | "i" | "I" | undefined;
351
351
  }
352
- interface SvgAttributes extends PyreonHTMLAttributes {
352
+ interface SvgAttributes extends PyreonHTMLAttributes<SVGElement> {
353
353
  viewBox?: string | undefined;
354
354
  xmlns?: string | undefined;
355
355
  fill?: string | (() => string) | undefined;
@@ -531,7 +531,7 @@ declare global {
531
531
  template: PyreonHTMLAttributes;
532
532
  slot: PyreonHTMLAttributes;
533
533
  portal: PyreonHTMLAttributes;
534
- [tagName: string]: PyreonHTMLAttributes;
534
+ [tagName: string]: PyreonHTMLAttributes<any>;
535
535
  }
536
536
  }
537
537
  } //# sourceMappingURL=jsx-runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jsx-runtime2.d.ts","names":[],"sources":["../../../src/types.ts","../../../src/h.ts","../../../src/jsx-runtime.ts"],"mappings":"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"}
1
+ {"version":3,"file":"jsx-runtime2.d.ts","names":[],"sources":["../../../src/types.ts","../../../src/h.ts","../../../src/jsx-runtime.ts"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pyreon/core",
3
- "version": "0.7.4",
3
+ "version": "0.7.5",
4
4
  "description": "Core component model and lifecycle for Pyreon",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -49,7 +49,7 @@
49
49
  "prepublishOnly": "bun run build"
50
50
  },
51
51
  "dependencies": {
52
- "@pyreon/reactivity": "^0.7.4"
52
+ "@pyreon/reactivity": "^0.7.5"
53
53
  },
54
54
  "publishConfig": {
55
55
  "access": "public"
@@ -40,7 +40,7 @@ type CSSProperties = { [K in keyof CSSStyleDeclaration]?: string | number }
40
40
  type StyleValue = string | CSSProperties
41
41
 
42
42
  /** Common HTML attributes accepted by all Pyreon elements */
43
- interface PyreonHTMLAttributes {
43
+ interface PyreonHTMLAttributes<E extends Element = HTMLElement> {
44
44
  // Identity
45
45
  id?: string | undefined
46
46
  class?: string | (() => string) | undefined
@@ -92,7 +92,7 @@ interface PyreonHTMLAttributes {
92
92
  "aria-rowindex"?: number | undefined
93
93
  "aria-rowspan"?: number | undefined
94
94
  // DOM lifecycle ref — object ref or callback ref
95
- ref?: { current: unknown } | ((el: Element | null) => void) | undefined
95
+ ref?: { current: E | null } | ((el: E | null) => void) | undefined
96
96
  // Key for list reconciliation
97
97
  key?: string | number | undefined
98
98
  // Children — allows null, undefined, boolean in JSX children positions
@@ -155,7 +155,7 @@ interface PyreonHTMLAttributes {
155
155
  }
156
156
 
157
157
  /** Attributes specific to form inputs */
158
- interface InputAttributes extends PyreonHTMLAttributes {
158
+ interface InputAttributes extends PyreonHTMLAttributes<HTMLInputElement> {
159
159
  type?: string | (() => string) | undefined
160
160
  value?: string | number | (() => string | number) | undefined
161
161
  defaultValue?: string | number | undefined
@@ -185,14 +185,14 @@ interface InputAttributes extends PyreonHTMLAttributes {
185
185
  height?: number | string | undefined
186
186
  }
187
187
 
188
- interface AnchorAttributes extends PyreonHTMLAttributes {
188
+ interface AnchorAttributes extends PyreonHTMLAttributes<HTMLAnchorElement> {
189
189
  href?: string | (() => string) | undefined
190
190
  target?: "_blank" | "_self" | "_parent" | "_top" | string | undefined
191
191
  rel?: string | undefined
192
192
  download?: string | boolean | undefined
193
193
  }
194
194
 
195
- interface ButtonAttributes extends PyreonHTMLAttributes {
195
+ interface ButtonAttributes extends PyreonHTMLAttributes<HTMLButtonElement> {
196
196
  type?: "button" | "submit" | "reset" | undefined
197
197
  disabled?: boolean | (() => boolean) | undefined
198
198
  name?: string | undefined
@@ -205,7 +205,7 @@ interface ButtonAttributes extends PyreonHTMLAttributes {
205
205
  formTarget?: string | undefined
206
206
  }
207
207
 
208
- interface TextareaAttributes extends PyreonHTMLAttributes {
208
+ interface TextareaAttributes extends PyreonHTMLAttributes<HTMLTextAreaElement> {
209
209
  value?: string | (() => string) | undefined
210
210
  defaultValue?: string | undefined
211
211
  placeholder?: string | (() => string) | undefined
@@ -222,7 +222,7 @@ interface TextareaAttributes extends PyreonHTMLAttributes {
222
222
  wrap?: "hard" | "soft" | undefined
223
223
  }
224
224
 
225
- interface SelectAttributes extends PyreonHTMLAttributes {
225
+ interface SelectAttributes extends PyreonHTMLAttributes<HTMLSelectElement> {
226
226
  value?: string | string[] | (() => string | string[]) | undefined
227
227
  defaultValue?: string | string[] | undefined
228
228
  disabled?: boolean | (() => boolean) | undefined
@@ -234,14 +234,14 @@ interface SelectAttributes extends PyreonHTMLAttributes {
234
234
  autoFocus?: boolean | undefined
235
235
  }
236
236
 
237
- interface OptionAttributes extends PyreonHTMLAttributes {
237
+ interface OptionAttributes extends PyreonHTMLAttributes<HTMLOptionElement> {
238
238
  value?: string | number | (() => string | number) | undefined
239
239
  disabled?: boolean | (() => boolean) | undefined
240
240
  selected?: boolean | (() => boolean) | undefined
241
241
  label?: string | undefined
242
242
  }
243
243
 
244
- interface FormAttributes extends PyreonHTMLAttributes {
244
+ interface FormAttributes extends PyreonHTMLAttributes<HTMLFormElement> {
245
245
  action?: string | undefined
246
246
  method?: "get" | "post" | undefined
247
247
  encType?: string | undefined
@@ -251,7 +251,7 @@ interface FormAttributes extends PyreonHTMLAttributes {
251
251
  autoComplete?: string | undefined
252
252
  }
253
253
 
254
- interface ImgAttributes extends PyreonHTMLAttributes {
254
+ interface ImgAttributes extends PyreonHTMLAttributes<HTMLImageElement> {
255
255
  src?: string | (() => string) | undefined
256
256
  alt?: string | (() => string) | undefined
257
257
  width?: number | string | (() => number | string) | undefined
@@ -264,7 +264,7 @@ interface ImgAttributes extends PyreonHTMLAttributes {
264
264
  sizes?: string | undefined
265
265
  }
266
266
 
267
- interface VideoAttributes extends PyreonHTMLAttributes {
267
+ interface VideoAttributes extends PyreonHTMLAttributes<HTMLVideoElement> {
268
268
  src?: string | (() => string) | undefined
269
269
  width?: number | string | undefined
270
270
  height?: number | string | undefined
@@ -278,7 +278,7 @@ interface VideoAttributes extends PyreonHTMLAttributes {
278
278
  crossOrigin?: "anonymous" | "use-credentials" | undefined
279
279
  }
280
280
 
281
- interface AudioAttributes extends PyreonHTMLAttributes {
281
+ interface AudioAttributes extends PyreonHTMLAttributes<HTMLAudioElement> {
282
282
  src?: string | (() => string) | undefined
283
283
  controls?: boolean | undefined
284
284
  autoPlay?: boolean | undefined
@@ -288,13 +288,13 @@ interface AudioAttributes extends PyreonHTMLAttributes {
288
288
  crossOrigin?: "anonymous" | "use-credentials" | undefined
289
289
  }
290
290
 
291
- interface LabelAttributes extends PyreonHTMLAttributes {
291
+ interface LabelAttributes extends PyreonHTMLAttributes<HTMLLabelElement> {
292
292
  htmlFor?: string | undefined
293
293
  for?: string | undefined
294
294
  form?: string | undefined
295
295
  }
296
296
 
297
- interface ThAttributes extends PyreonHTMLAttributes {
297
+ interface ThAttributes extends PyreonHTMLAttributes<HTMLTableCellElement> {
298
298
  colSpan?: number | undefined
299
299
  rowSpan?: number | undefined
300
300
  scope?: "col" | "row" | "colgroup" | "rowgroup" | undefined
@@ -302,17 +302,17 @@ interface ThAttributes extends PyreonHTMLAttributes {
302
302
  headers?: string | undefined
303
303
  }
304
304
 
305
- interface TdAttributes extends PyreonHTMLAttributes {
305
+ interface TdAttributes extends PyreonHTMLAttributes<HTMLTableCellElement> {
306
306
  colSpan?: number | undefined
307
307
  rowSpan?: number | undefined
308
308
  headers?: string | undefined
309
309
  }
310
310
 
311
- interface ColAttributes extends PyreonHTMLAttributes {
311
+ interface ColAttributes extends PyreonHTMLAttributes<HTMLTableColElement> {
312
312
  span?: number | undefined
313
313
  }
314
314
 
315
- interface IframeAttributes extends PyreonHTMLAttributes {
315
+ interface IframeAttributes extends PyreonHTMLAttributes<HTMLIFrameElement> {
316
316
  src?: string | (() => string) | undefined
317
317
  width?: number | string | undefined
318
318
  height?: number | string | undefined
@@ -325,7 +325,7 @@ interface IframeAttributes extends PyreonHTMLAttributes {
325
325
  title?: string | undefined
326
326
  }
327
327
 
328
- interface LinkAttributes extends PyreonHTMLAttributes {
328
+ interface LinkAttributes extends PyreonHTMLAttributes<HTMLLinkElement> {
329
329
  href?: string | (() => string) | undefined
330
330
  rel?: string | undefined
331
331
  type?: string | undefined
@@ -336,7 +336,7 @@ interface LinkAttributes extends PyreonHTMLAttributes {
336
336
  referrerPolicy?: string | undefined
337
337
  }
338
338
 
339
- interface MetaAttributes extends PyreonHTMLAttributes {
339
+ interface MetaAttributes extends PyreonHTMLAttributes<HTMLMetaElement> {
340
340
  name?: string | undefined
341
341
  content?: string | (() => string) | undefined
342
342
  httpEquiv?: string | undefined
@@ -344,7 +344,7 @@ interface MetaAttributes extends PyreonHTMLAttributes {
344
344
  property?: string | undefined
345
345
  }
346
346
 
347
- interface ScriptAttributes extends PyreonHTMLAttributes {
347
+ interface ScriptAttributes extends PyreonHTMLAttributes<HTMLScriptElement> {
348
348
  src?: string | (() => string) | undefined
349
349
  type?: string | undefined
350
350
  async?: boolean | undefined
@@ -355,7 +355,7 @@ interface ScriptAttributes extends PyreonHTMLAttributes {
355
355
  referrerPolicy?: string | undefined
356
356
  }
357
357
 
358
- interface SourceAttributes extends PyreonHTMLAttributes {
358
+ interface SourceAttributes extends PyreonHTMLAttributes<HTMLSourceElement> {
359
359
  src?: string | (() => string) | undefined
360
360
  type?: string | undefined
361
361
  srcSet?: string | undefined
@@ -363,12 +363,12 @@ interface SourceAttributes extends PyreonHTMLAttributes {
363
363
  media?: string | undefined
364
364
  }
365
365
 
366
- interface ProgressAttributes extends PyreonHTMLAttributes {
366
+ interface ProgressAttributes extends PyreonHTMLAttributes<HTMLProgressElement> {
367
367
  value?: number | (() => number) | undefined
368
368
  max?: number | undefined
369
369
  }
370
370
 
371
- interface MeterAttributes extends PyreonHTMLAttributes {
371
+ interface MeterAttributes extends PyreonHTMLAttributes<HTMLMeterElement> {
372
372
  value?: number | (() => number) | undefined
373
373
  min?: number | undefined
374
374
  max?: number | undefined
@@ -377,21 +377,21 @@ interface MeterAttributes extends PyreonHTMLAttributes {
377
377
  optimum?: number | undefined
378
378
  }
379
379
 
380
- interface DetailsAttributes extends PyreonHTMLAttributes {
380
+ interface DetailsAttributes extends PyreonHTMLAttributes<HTMLDetailsElement> {
381
381
  open?: boolean | (() => boolean) | undefined
382
382
  }
383
383
 
384
- interface DialogAttributes extends PyreonHTMLAttributes {
384
+ interface DialogAttributes extends PyreonHTMLAttributes<HTMLDialogElement> {
385
385
  open?: boolean | (() => boolean) | undefined
386
386
  }
387
387
 
388
- interface OlAttributes extends PyreonHTMLAttributes {
388
+ interface OlAttributes extends PyreonHTMLAttributes<HTMLOListElement> {
389
389
  start?: number | undefined
390
390
  reversed?: boolean | undefined
391
391
  type?: "1" | "a" | "A" | "i" | "I" | undefined
392
392
  }
393
393
 
394
- interface SvgAttributes extends PyreonHTMLAttributes {
394
+ interface SvgAttributes extends PyreonHTMLAttributes<SVGElement> {
395
395
  viewBox?: string | undefined
396
396
  xmlns?: string | undefined
397
397
  fill?: string | (() => string) | undefined
@@ -587,7 +587,7 @@ declare global {
587
587
  slot: PyreonHTMLAttributes
588
588
  portal: PyreonHTMLAttributes
589
589
  // Catch-all for custom elements and data-* attrs
590
- [tagName: string]: PyreonHTMLAttributes
590
+ [tagName: string]: PyreonHTMLAttributes<any>
591
591
  }
592
592
  }
593
593
  }