/**
* 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}
*
* `;
* },
* });
* ```
*/
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';