/** * Minimal Web Component helper for building custom elements. * * This module provides a declarative API for defining Web Components * without complex build steps. Features include: * - Type-safe props with automatic attribute coercion * - Reactive state management * - Shadow DOM encapsulation with scoped styles * - Lifecycle hooks (connected, disconnected) * - Event emission helpers * * @module bquery/component * * @example * ```ts * import { component, html } from 'bquery/component'; * * component('user-card', { * props: { * username: { type: String, required: true }, * avatar: { type: String, default: '/default-avatar.png' }, * }, * styles: ` * .card { padding: 1rem; border: 1px solid #ccc; } * `, * render({ props }) { * return html` *
* ${props.username} *

${props.username}

*
* `; * }, * }); * ``` */ export { component, defineComponent } from './component'; export { bool, html, safeHtml } from './html'; export { registerDefaultComponents } from './library'; export { useComputed, useEffect, useSignal } from './scope'; export { useRef } from './refs'; export type { Ref } from './refs'; export { hasSlot, slotText, useSlot } from './slots'; export { bindDelegatedEvents, on, onChange, onClick, onInput, onSubmit, } from './events'; export { formContextKey, inject, injectionKey, provide, } from './inject'; export type { InjectionKey } from './inject'; export { useAsync, whenIdle } from './async'; export type { UseAsyncResult } from './async'; export { applyAdoptedStyles, css, isComponentStyles } from './css'; export type { ComponentStyles } from './css'; export { keyedList, reconcileKeyed } from './keyed-list'; export type { DefaultComponentLibraryOptions, RegisteredDefaultComponents } from './library'; export type { AttributeChange, ComponentClass, ComponentDefinition, ComponentElement, ComponentRenderContext, ComponentSignalLike, ComponentSignals, ComponentStateKey, ComponentStateShape, PropDefinition, ShadowMode, } from './types';