/** * Tina4 Component — Base class for web components. * * Extends HTMLElement with reactive props, lifecycle hooks, * optional Shadow DOM, and scoped styles. */ import { type Signal } from './signal'; /** @internal Called when a Tina4Element is connected to the DOM. */ export declare let __debugComponentMount: ((el: Tina4Element) => void) | null; /** @internal Called when a Tina4Element is disconnected from the DOM. */ export declare let __debugComponentUnmount: ((el: Tina4Element) => void) | null; /** @internal Set the debug hooks. */ export declare function __setDebugComponentHooks(onMount: typeof __debugComponentMount, onUnmount: typeof __debugComponentUnmount): void; export type PropType = typeof String | typeof Number | typeof Boolean; export declare abstract class Tina4Element extends HTMLElement { /** Declare reactive props and their types. Override in subclass. */ static props: Record; /** Scoped CSS styles. Override in subclass. */ static styles: string; /** Use Shadow DOM (true) or light DOM (false). Override in subclass. */ static shadow: boolean; /** Internal reactive prop signals. */ private _props; /** The render root (shadow or this). */ private _root; /** Track if we've rendered. */ private _rendered; /** Dispose function for the reactive render effect. */ private _disposeRender; /** Disposers for inner effects created by html`` during render. */ private _innerDisposers; static get observedAttributes(): string[]; constructor(); connectedCallback(): void; disconnectedCallback(): void; attributeChangedCallback(name: string, _old: string | null, value: string | null): void; /** * Get a reactive signal for a declared prop. * * ```ts * render() { * return html`${this.prop('name')}`; * } * ``` */ prop(name: string): Signal; /** * Dispatch a custom event from this component. * * ```ts * this.emit('activate', { detail: 42 }); * ``` */ emit(name: string, init?: CustomEventInit): void; /** Called after first render. */ onMount(): void; /** Called when removed from DOM. */ onUnmount(): void; /** Return DOM content. Override in subclass. */ abstract render(): DocumentFragment | Node | null; private _coerce; } //# sourceMappingURL=component.d.ts.map