@echojs-ecosystem/ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +102 -0
  2. package/dist/button.d.ts +20 -0
  3. package/dist/button.js +559 -0
  4. package/dist/button.js.map +1 -0
  5. package/dist/button.types-B0SrEYRV.d.ts +27 -0
  6. package/dist/checkbox.d.ts +42 -0
  7. package/dist/checkbox.js +388 -0
  8. package/dist/checkbox.js.map +1 -0
  9. package/dist/cn-rGlUI2mx.d.ts +16 -0
  10. package/dist/core.d.ts +16 -0
  11. package/dist/core.js +294 -0
  12. package/dist/core.js.map +1 -0
  13. package/dist/field.d.ts +72 -0
  14. package/dist/field.js +479 -0
  15. package/dist/field.js.map +1 -0
  16. package/dist/field.types-BSyhu0Cf.d.ts +24 -0
  17. package/dist/icon-button.d.ts +15 -0
  18. package/dist/icon-button.js +606 -0
  19. package/dist/icon-button.js.map +1 -0
  20. package/dist/index-BhC5sVej.d.ts +35 -0
  21. package/dist/index.d.ts +87 -0
  22. package/dist/index.js +1604 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/input-mask.d.ts +5 -0
  25. package/dist/input-mask.js +568 -0
  26. package/dist/input-mask.js.map +1 -0
  27. package/dist/input-otp.d.ts +16 -0
  28. package/dist/input-otp.js +475 -0
  29. package/dist/input-otp.js.map +1 -0
  30. package/dist/input-tags.d.ts +16 -0
  31. package/dist/input-tags.js +549 -0
  32. package/dist/input-tags.js.map +1 -0
  33. package/dist/input.d.ts +14 -0
  34. package/dist/input.js +466 -0
  35. package/dist/input.js.map +1 -0
  36. package/dist/label.d.ts +17 -0
  37. package/dist/label.js +345 -0
  38. package/dist/label.js.map +1 -0
  39. package/dist/primitives.d.ts +23 -0
  40. package/dist/primitives.js +301 -0
  41. package/dist/primitives.js.map +1 -0
  42. package/dist/provider.d.ts +19 -0
  43. package/dist/provider.js +124 -0
  44. package/dist/provider.js.map +1 -0
  45. package/dist/slots-D2y1YgGz.d.ts +58 -0
  46. package/dist/textarea.d.ts +27 -0
  47. package/dist/textarea.js +361 -0
  48. package/dist/textarea.js.map +1 -0
  49. package/dist/theme-context-CyY95LK0.d.ts +39 -0
  50. package/dist/theme.d.ts +20 -0
  51. package/dist/theme.js +155 -0
  52. package/dist/theme.js.map +1 -0
  53. package/dist/types-CSHcGa_F.d.ts +13 -0
  54. package/dist/utils.d.ts +36 -0
  55. package/dist/utils.js +101 -0
  56. package/dist/utils.js.map +1 -0
  57. package/dist/variants-Bj38CFcH.d.ts +51 -0
  58. package/package.json +134 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/theme/default-theme.ts","../src/theme/create-theme.ts","../src/theme/theme-context.ts","../src/providers/UIProvider.ts","../src/plugin/ui-plugin.ts","../src/theme/variants.ts","../src/core/variant-keys.ts","../src/utils/cn.ts","../src/utils/compose-event-handlers.ts","../src/utils/merge-props.ts","../src/core/component.ts","../src/utils/merge-refs.ts","../src/utils/data-attributes.ts","../src/core/aria.ts","../src/core/ids.ts","../src/core/slots.ts","../src/primitives/visually-hidden.ts","../src/primitives/portal.ts","../src/components/button/button-spinner.ts","../src/components/button/button.styles.ts","../src/components/button/button.ts","../src/components/icon-button/icon-button.styles.ts","../src/components/icon-button/icon-button.ts","../src/components/input-shared/input.styles.ts","../src/components/input-shared/render-input-field.ts","../src/components/input/input.ts","../src/utils/input-mask/format-mask.ts","../src/utils/input-mask/parse-mask.ts","../src/utils/input-mask/presets.ts","../src/utils/input-mask/attach-input-mask.ts","../src/components/input-mask/input-mask.ts","../src/components/input-otp/input-otp.ts","../src/components/input-tags/input-tags.ts","../src/components/textarea/textarea.styles.ts","../src/components/textarea/textarea.ts","../src/components/label/label.styles.ts","../src/components/label/label.ts","../src/components/field/field.styles.ts","../src/components/field/field-context.ts","../src/components/field/field.ts","../src/components/field/merge-field-control-props.ts","../src/components/checkbox/checkbox.styles.ts","../src/components/checkbox/checkbox.ts"],"names":["defaultProps","h","stack","INTERNAL_KEYS","pickDomProps"],"mappings":"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","file":"index.js","sourcesContent":["import type { UITheme } from \"./types\";\n\n/** Built-in theme used when no provider is mounted. */\nexport const defaultTheme: UITheme = {\n prefix: \"echo\",\n headless: false,\n components: {\n button: {\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n radius: \"full\",\n },\n },\n input: {\n defaultVariants: {\n variant: \"outline\",\n size: \"md\",\n },\n },\n inputMask: {\n defaultVariants: {\n variant: \"outline\",\n size: \"md\",\n },\n },\n inputOtp: {\n defaultVariants: {\n variant: \"outline\",\n size: \"md\",\n },\n },\n inputTags: {\n defaultVariants: {\n variant: \"outline\",\n size: \"md\",\n },\n },\n textarea: {\n defaultVariants: {\n variant: \"outline\",\n size: \"md\",\n resize: \"vertical\",\n },\n },\n checkbox: {\n defaultVariants: {\n size: \"md\",\n },\n },\n iconButton: {\n defaultVariants: {\n variant: \"ghost\",\n size: \"md\",\n },\n },\n },\n};\n","import { defaultTheme } from \"./default-theme\";\nimport type { ComponentThemeConfig, UITheme } from \"./types\";\n\nconst mergeComponentConfig = (\n base: ComponentThemeConfig | undefined,\n next: ComponentThemeConfig | undefined,\n): ComponentThemeConfig | undefined => {\n if (!base && !next) return undefined;\n if (!base) return next ? { ...next } : undefined;\n if (!next) return { ...base };\n\n return {\n baseClass: next.baseClass ?? base.baseClass,\n className: next.className ?? base.className,\n defaultProps: { ...base.defaultProps, ...next.defaultProps },\n defaultVariants: { ...base.defaultVariants, ...next.defaultVariants },\n variants: { ...base.variants, ...next.variants },\n };\n};\n\nconst mergeComponents = (\n base: UITheme[\"components\"],\n next: UITheme[\"components\"],\n): UITheme[\"components\"] => {\n const keys = new Set([...Object.keys(base ?? {}), ...Object.keys(next ?? {})]);\n const merged: Record<string, ComponentThemeConfig> = {};\n\n for (const key of keys) {\n const slice = mergeComponentConfig(base?.[key], next?.[key]);\n if (slice) merged[key] = slice;\n }\n\n return merged;\n};\n\n/**\n * Merges partial theme config into a base theme (defaults to {@link defaultTheme}).\n */\nexport const createTheme = (input: Partial<UITheme>, base: UITheme = defaultTheme): UITheme => ({\n prefix: input.prefix ?? base.prefix,\n headless: input.headless ?? base.headless,\n components: mergeComponents(base.components, input.components),\n});\n","import { createTheme } from \"./create-theme\";\nimport { defaultTheme } from \"./default-theme\";\nimport type { UITheme } from \"./types\";\n\n/** Resolved runtime configuration from {@link UIProvider}. */\nexport type UIContextValue = {\n theme: UITheme;\n headless: boolean;\n};\n\nconst stack: UIContextValue[] = [];\n\n/** Returns the active UI context or `undefined` outside a provider. */\nexport const getUIContext = (): UIContextValue | undefined => stack[stack.length - 1];\n\n/** Returns the active UI context, falling back to defaults. */\nexport const getUIContextOrDefault = (): UIContextValue => getUIContext() ?? createUIContextValue({});\n\nexport type CreateUIContextInput = {\n theme?: Partial<UITheme>;\n headless?: boolean;\n};\n\n/** Builds a fully resolved context value from partial provider props. */\nexport const createUIContextValue = (\n input: CreateUIContextInput,\n parent: UIContextValue | undefined = getUIContext(),\n): UIContextValue => {\n const parentTheme = parent?.theme ?? defaultTheme;\n const theme = createTheme(input.theme ?? {}, parentTheme);\n\n const headless = input.headless ?? theme.headless ?? parent?.headless ?? false;\n\n return {\n theme: { ...theme, headless },\n headless,\n };\n};\n\n/** Runs `fn` with `value` pushed onto the UI context stack. */\nexport const runWithUIContext = <T>(value: UIContextValue, fn: () => T): T => {\n stack.push(value);\n try {\n return fn();\n } finally {\n stack.pop();\n }\n};\n\n/** @internal Resets the context stack — for tests only. */\nexport const resetUIContextStack = (): void => {\n stack.length = 0;\n};\n","import type { Child } from \"@echojs-ecosystem/hyperdom\";\nimport {\n createUIContextValue,\n runWithUIContext,\n type CreateUIContextInput,\n} from \"../theme/theme-context\";\nimport type { UITheme } from \"../theme/types\";\n\nexport type UIProviderProps = CreateUIContextInput & {\n theme?: Partial<UITheme>;\n children?: Child | (() => Child);\n};\n\nconst resolveChildren = (children: UIProviderProps[\"children\"]): Child | undefined => {\n if (typeof children === \"function\") {\n return children();\n }\n return children;\n};\n\n/**\n * Root provider for global UI configuration (theme, headless mode, defaults).\n *\n * Prefer lazy children so descendants render inside context:\n *\n * ```ts\n * UIProvider({ theme, children: () => App() })\n * ```\n */\nexport const UIProvider = (props: UIProviderProps): Child => {\n const value = createUIContextValue({\n theme: props.theme,\n headless: props.headless,\n });\n\n return runWithUIContext(value, () => resolveChildren(props.children));\n};\n","import type { Child } from \"@echojs-ecosystem/hyperdom\";\n\nimport { UIProvider, type UIProviderProps } from \"../providers/UIProvider\";\n\nexport type UiProviderOptions = Omit<UIProviderProps, \"children\">;\n\n/** @deprecated Use {@link UiProviderOptions} */\nexport type UiPluginOptions = UiProviderOptions;\n\n/** Echo app provider that wraps the tree with {@link UIProvider}. */\nexport type EchoUiProvider = {\n name: \"ui\";\n wrapRoot: (inner: () => Child) => () => Child;\n};\n\n/** @deprecated Use {@link EchoUiProvider} */\nexport type UiPlugin = EchoUiProvider;\n\nexport const createUiProvider = (options: UiProviderOptions = {}): EchoUiProvider => ({\n name: \"ui\",\n wrapRoot(inner) {\n return () => UIProvider({ ...options, children: inner });\n },\n});\n\n/** @deprecated Use {@link createUiProvider} */\nexport const createUiPlugin = createUiProvider;\n\n/** @deprecated Use {@link createUiProvider} */\nexport const uiPlugin = createUiProvider;\n","/**\n * Stage 1 note:\n * We keep a small abstraction layer around variant class resolution so we can\n * plug `tailwind-variants` later without changing component code.\n */\n\nexport type TVVariantsShape = Record<string, Record<string, string>>;\nexport type TVBooleanVariantShape = Record<string, { true?: string; false?: string }>;\n\nexport type TVCompoundVariant = Record<string, string | boolean> & { class: string };\n\nexport type TVConfig = {\n base?: string;\n variants?: TVVariantsShape & TVBooleanVariantShape;\n compoundVariants?: TVCompoundVariant[];\n defaultVariants?: Record<string, string | boolean>;\n slots?: Record<string, string>;\n};\n\nexport type TVSlotResult<T extends TVConfig & { slots: Record<string, string> }> = {\n [K in keyof T[\"slots\"]]: (slotOptions?: Record<string, unknown>) => string;\n} & { _config: T };\n\nexport type TVResult<T extends TVConfig> = T extends { slots: Record<string, any> }\n ? TVSlotResult<T & { slots: Record<string, string> }>\n : ((options?: Record<string, unknown>) => string) & { _config: T };\n\n/** Roughly compatible `tv()` subset (Stage 2). */\nexport const tv = <T extends TVConfig>(config: T): TVResult<T> => {\n const resolve = (options?: Record<string, unknown>): string => {\n const parts: string[] = [];\n if (config.base) parts.push(config.base);\n\n const resolved = { ...(config.defaultVariants ?? {}), ...(options ?? {}) } as Record<\n string,\n string | boolean | undefined\n >;\n\n const variants = config.variants ?? {};\n for (const [variantName, map] of Object.entries(variants)) {\n const value = resolved[variantName];\n if (value === undefined) continue;\n\n const key = typeof value === \"boolean\" ? (value ? \"true\" : \"false\") : String(value);\n const cls = (map as any)[key] as string | undefined;\n if (cls) parts.push(cls);\n }\n\n for (const compound of config.compoundVariants ?? []) {\n const { class: compoundClass, ...conditions } = compound;\n const matches = Object.entries(conditions).every(([name, value]) => resolved[name] === value);\n if (matches && compoundClass) parts.push(compoundClass);\n }\n\n return parts.filter(Boolean).join(\" \");\n };\n\n if (config.slots) {\n const slotFns: any = {};\n for (const [slot, slotBase] of Object.entries(config.slots)) {\n slotFns[slot] = (slotOptions?: Record<string, unknown>) => {\n const composed = [slotBase, resolve(slotOptions)].filter(Boolean).join(\" \");\n return composed.trim();\n };\n }\n slotFns._config = config;\n return slotFns as TVResult<T>;\n }\n\n const fn: any = (options?: Record<string, unknown>) => resolve(options);\n fn._config = config;\n return fn as TVResult<T>;\n};\n\nexport type VariantProps<T> = T extends { _config: infer C }\n ? C extends { variants: infer V }\n ? {\n [K in keyof V]?: V[K] extends Record<infer Key, any>\n ? Key extends \"true\" | \"false\"\n ? boolean\n : Key\n : never;\n }\n : Record<string, never>\n : Record<string, never>;\n\n/** Compatibility export (mirrors tailwind-variants). */\nexport const createComponentVariants = tv;\n\n/**\n * Resolves variant classes when styling is enabled.\n */\nexport const resolveVariantClasses = (\n variantFn: ((options?: Record<string, unknown>) => string) | undefined,\n options: Record<string, unknown> | undefined,\n headless: boolean,\n): string | undefined => {\n if (headless || !variantFn) return undefined;\n return variantFn(options);\n};\n","import type { TVConfig } from \"../theme/variants\";\n\ntype VariantFn = ((options?: Record<string, unknown>) => unknown) & {\n _config?: TVConfig;\n};\n\n/** Collects variant prop names from a `tv()` config attached to the variants function. */\nexport const getVariantKeysFromFn = (variantsFn?: VariantFn): string[] => {\n const variants = variantsFn?._config?.variants;\n if (!variants) return [];\n return Object.keys(variants);\n};\n\nexport const resolveVariantOptions = (\n variantsFn: VariantFn | undefined,\n themeDefaults: Record<string, unknown> | undefined,\n props: Record<string, unknown>,\n): Record<string, unknown> => {\n const keys = [\n ...new Set([\n ...getVariantKeysFromFn(variantsFn),\n ...Object.keys(variantsFn?._config?.defaultVariants ?? {}),\n ...Object.keys(themeDefaults ?? {}),\n ]),\n ];\n\n const picked: Record<string, unknown> = {};\n for (const key of keys) {\n if (props[key] !== undefined) picked[key] = props[key];\n }\n\n return {\n ...variantsFn?._config?.defaultVariants,\n ...themeDefaults,\n ...picked,\n };\n};\n","export type ClassDictionary = Record<string, boolean | null | undefined>;\nexport type ClassValue =\n | string\n | null\n | undefined\n | false\n | ClassDictionary\n | readonly ClassValue[];\n\n/** Optional hook to swap in tailwind-merge later. */\nexport type ClassNameMerger = (...values: ClassValue[]) => string;\n\nconst defaultClassNameMerger: ClassNameMerger = (...values) => {\n const out: string[] = [];\n\n const walk = (value: ClassValue): void => {\n if (value == null || value === false) return;\n\n if (typeof value === \"string\") {\n if (value) out.push(value);\n return;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) walk(item);\n return;\n }\n\n for (const [key, enabled] of Object.entries(value)) {\n if (enabled) out.push(key);\n }\n };\n\n for (const value of values) walk(value);\n return out.join(\" \");\n};\n\nlet classNameMerger: ClassNameMerger = defaultClassNameMerger;\n\n/** Replaces the global className merger (e.g. with tailwind-merge). */\nexport const setClassNameMerger = (merger: ClassNameMerger): void => {\n classNameMerger = merger;\n};\n\n/** Resets the className merger to the built-in implementation. */\nexport const resetClassNameMerger = (): void => {\n classNameMerger = defaultClassNameMerger;\n};\n\n/**\n * Joins class name fragments.\n *\n * Supports strings, arrays, conditional maps, and falsy values.\n */\nexport const cn: ClassNameMerger = (...values) => classNameMerger(...values);\n","export type ComposeEventHandlersOptions = {\n /** When true, skips `internalHandler` if `userHandler` called `preventDefault`. */\n checkDefaultPrevented?: boolean;\n};\n\ntype EventHandler<E extends Event = Event> = (event: E) => void;\n\n/**\n * Composes two event handlers. `userHandler` runs first.\n */\nexport const composeEventHandlers = <E extends Event>(\n userHandler: EventHandler<E> | undefined,\n internalHandler: EventHandler<E> | undefined,\n options: ComposeEventHandlersOptions = {},\n): EventHandler<E> | undefined => {\n if (!userHandler && !internalHandler) return undefined;\n if (!userHandler) return internalHandler;\n if (!internalHandler) return userHandler;\n\n const { checkDefaultPrevented = false } = options;\n\n return (event) => {\n userHandler(event);\n if (checkDefaultPrevented && event?.defaultPrevented) return;\n internalHandler(event);\n };\n};\n","import { composeEventHandlers } from \"./compose-event-handlers\";\nimport { cn, type ClassValue } from \"./cn\";\n\nexport type MergeableProps = Record<string, unknown>;\n\nconst CLASS_KEYS = new Set([\"class\", \"className\"]);\n\nconst isEventHandlerKey = (key: string): boolean =>\n key.startsWith(\"on\") || key.startsWith(\"on:\");\n\nconst mergeClassValues = (...values: unknown[]): string | undefined => {\n const merged = cn(...(values as ClassValue[]));\n return merged || undefined;\n};\n\nconst mergePair = (target: MergeableProps, source: MergeableProps | undefined): void => {\n if (!source) return;\n\n for (const [key, value] of Object.entries(source)) {\n if (value === undefined) continue;\n\n if (CLASS_KEYS.has(key)) {\n const mergedClass = mergeClassValues(target.className, value);\n if (mergedClass !== undefined) {\n target.className = mergedClass;\n target.class = mergedClass;\n }\n continue;\n }\n\n if (isEventHandlerKey(key)) {\n const existing = target[key];\n target[key] = composeEventHandlers(\n value as (...args: never[]) => void,\n existing as (...args: never[]) => void,\n { checkDefaultPrevented: true },\n );\n continue;\n }\n\n target[key] = value;\n }\n};\n\n/**\n * Merges props with priority (lowest → highest): `defaultProps`, `providerProps`, `componentProps`.\n *\n * `class` / `className` are joined; event handlers are composed.\n */\nexport const mergeProps = <T extends MergeableProps>(\n defaultProps: MergeableProps | undefined,\n providerProps: MergeableProps | undefined,\n componentProps: T,\n): T => {\n const merged: MergeableProps = {};\n\n mergePair(merged, defaultProps);\n mergePair(merged, providerProps);\n mergePair(merged, componentProps);\n\n return merged as T;\n};\n","import { h, type Child, type Props } from \"@echojs-ecosystem/hyperdom\";\nimport type { UIContextValue } from \"../theme/theme-context\";\nimport { getUIContextOrDefault } from \"../theme/theme-context\";\nimport { resolveVariantClasses } from \"../theme/variants\";\nimport { resolveVariantOptions } from \"./variant-keys\";\nimport { cn } from \"../utils/cn\";\nimport { mergeProps } from \"../utils/merge-props\";\nimport type { UIComponentBaseProps } from \"./types\";\n\nexport type UIComponentRenderContext<\n TProps extends UIComponentBaseProps,\n TElement extends Element = HTMLElement,\n> = {\n props: TProps & Props<TElement>;\n headless: boolean;\n className: string | undefined;\n ctx: UIContextValue;\n};\n\nexport type CreateUIComponentConfig<\n TProps extends UIComponentBaseProps,\n TElement extends Element = HTMLElement,\n> = {\n /** PascalCase component name (used for theme key: `Button` → `button`). */\n name: string;\n defaultTag: keyof HTMLElementTagNameMap;\n defaultProps?: Partial<TProps>;\n variants?: (options?: Record<string, unknown>) => string;\n render?: (context: UIComponentRenderContext<TProps, TElement>) => Child;\n};\n\nconst themeKeyFromName = (name: string): string => name.charAt(0).toLowerCase() + name.slice(1);\n\n/**\n * Factory for hyperdom UI components with theme, provider, and headless support.\n */\nexport const createUIComponent = <\n TProps extends UIComponentBaseProps,\n TElement extends HTMLElement = HTMLElement,\n>(\n config: CreateUIComponentConfig<TProps, TElement>,\n): ((props: TProps) => Child) => {\n const themeKey = themeKeyFromName(config.name);\n\n return (props: TProps): Child => {\n const ctx = getUIContextOrDefault();\n const themeSlice = ctx.theme.components?.[themeKey];\n\n const headless = props.headless ?? ctx.headless ?? ctx.theme.headless ?? false;\n\n const providerProps: Record<string, unknown> = {\n ...themeSlice?.defaultProps,\n ...themeSlice?.defaultVariants,\n };\n\n if (themeSlice?.className) {\n providerProps.className = themeSlice.className;\n }\n\n const merged = mergeProps(\n config.defaultProps as Record<string, unknown> | undefined,\n providerProps,\n props as Record<string, unknown>,\n ) as TProps & Record<string, unknown>;\n\n const variantOptions = resolveVariantOptions(\n config.variants as Parameters<typeof resolveVariantOptions>[0],\n themeSlice?.defaultVariants,\n merged,\n );\n\n const variantClass = resolveVariantClasses(config.variants, variantOptions, headless);\n\n const visualClass = headless\n ? undefined\n : cn(themeSlice?.baseClass, themeSlice?.className, variantClass, merged.className, merged.class);\n\n const finalProps = {\n ...merged,\n className: visualClass,\n class: visualClass,\n } as TProps & Props<TElement>;\n\n if (config.render) {\n return config.render({\n props: finalProps,\n headless,\n className: visualClass,\n ctx,\n });\n }\n\n const { children, as, ...rest } = finalProps as TProps &\n Props<TElement> & { as?: keyof HTMLElementTagNameMap };\n const tag = (as ?? config.defaultTag) as keyof HTMLElementTagNameMap;\n\n // `h()` has a narrow tag type; `as` is runtime-configurable, so we cast here.\n return h(tag as any, rest as Props<TElement>, children);\n };\n};\n","export type RefCallback<T> = (instance: T | null) => void;\nexport type RefValue<T> = RefCallback<T> | null | undefined;\n\n/**\n * Merges multiple ref callbacks into one.\n */\nexport const mergeRefs =\n <T>(...refs: RefValue<T>[]): RefCallback<T> | undefined => {\n const filtered = refs.filter(Boolean) as RefCallback<T>[];\n if (filtered.length === 0) return undefined;\n if (filtered.length === 1) return filtered[0];\n\n return (instance) => {\n for (const ref of filtered) ref(instance);\n };\n };\n","export type DataAttributeProps = Record<`data-${string}`, string | number | boolean | undefined>;\n\n/** `data-state` helper for styling hooks. */\nexport const dataState = (value: string): DataAttributeProps => ({\n \"data-state\": value,\n});\n\n/** `data-disabled` — present when disabled. */\nexport const dataDisabled = (disabled?: boolean): DataAttributeProps =>\n disabled ? { \"data-disabled\": \"\" } : {};\n\n/** `data-invalid` — present when invalid. */\nexport const dataInvalid = (invalid?: boolean): DataAttributeProps =>\n invalid ? { \"data-invalid\": \"\" } : {};\n\n/** `data-pending` — present while async action is in progress (HeroUI-style). */\nexport const dataPending = (pending?: boolean): DataAttributeProps =>\n pending ? { \"data-pending\": \"\" } : {};\n","export type AriaBoolean = \"true\" | \"false\";\n\n/** Converts a boolean to an ARIA boolean string (`\"true\"` | `\"false\"`). */\nexport const ariaBool = (value: boolean): AriaBoolean => (value ? \"true\" : \"false\");\n\nexport { dataDisabled, dataInvalid, dataState } from \"../utils/data-attributes\";\n","import { getUIContextOrDefault } from \"../theme/theme-context\";\n\nlet idCounter = 0;\n\n/** @internal Resets the id counter — for tests only. */\nexport const resetIdCounter = (): void => {\n idCounter = 0;\n};\n\n/**\n * Creates a unique id string.\n *\n * Uses the theme `prefix` from the active {@link UIProvider} when available.\n */\nexport const createId = (prefix?: string): string => {\n const ctx = getUIContextOrDefault();\n const base = prefix ?? ctx.theme.prefix ?? \"echo\";\n idCounter += 1;\n return `${base}-${idCounter}`;\n};\n\n/**\n * Alias for {@link createId} — hyperdom has no hook runtime; ids are created per call.\n */\nexport const useId = (prefix?: string): string => createId(prefix);\n","import type { Child } from \"@echojs-ecosystem/hyperdom\";\n\nexport type SlotProps = {\n children?: Child;\n};\n\n/**\n * Returns slot children unchanged.\n *\n * Placeholder for future slot composition (icons, labels, etc.).\n */\nexport const renderSlot = (props: SlotProps): Child | undefined => props.children;\n","import { h } from \"@echojs-ecosystem/hyperdom\";\nimport type { Child } from \"@echojs-ecosystem/hyperdom\";\nimport type { UIComponentBaseProps } from \"../core/types\";\nimport { createUIComponent } from \"../core/component\";\n\nexport type VisuallyHiddenProps = UIComponentBaseProps & {\n as?: keyof HTMLElementTagNameMap;\n};\n\nconst defaultProps: Partial<VisuallyHiddenProps> = {\n as: \"span\",\n};\n\n/**\n * Hides content visually while keeping it available to assistive tech.\n */\nexport const VisuallyHidden = createUIComponent<VisuallyHiddenProps>({\n name: \"VisuallyHidden\",\n defaultTag: \"span\",\n defaultProps: {\n ...defaultProps,\n className: \"sr-only\",\n },\n render: ({ props, headless, className }) => {\n const { as = \"span\", children, ...rest } = props;\n const classes = headless ? undefined : className ?? \"sr-only\";\n return h(as, { ...rest, className: classes, class: classes }, children as Child);\n },\n});\n","import type { Child } from \"@echojs-ecosystem/hyperdom\";\n\nexport type PortalProps = {\n children?: Child;\n /** Target container. Defaults to `document.body`. */\n container?: Element;\n};\n\nconst appendChild = (host: Element, child: Child): void => {\n if (child == null || child === false || child === true) return;\n\n if (typeof child === \"string\" || typeof child === \"number\") {\n host.appendChild(document.createTextNode(String(child)));\n return;\n }\n\n if (child instanceof Node) {\n host.appendChild(child);\n return;\n }\n\n if (Array.isArray(child)) {\n for (const item of child) appendChild(host, item);\n }\n};\n\n/**\n * Renders children into a portal container (defaults to `document.body`).\n */\nexport const Portal = (props: PortalProps): Child => {\n const container = props.container ?? document.body;\n const host = document.createElement(\"div\");\n container.appendChild(host);\n\n if (props.children !== undefined) {\n appendChild(host, props.children);\n }\n\n return host;\n};\n","import { h, type Child } from \"@echojs-ecosystem/hyperdom\";\n\nimport type { ButtonSize } from \"./button.types\";\n\nconst spinnerSizeClass: Record<ButtonSize, string> = {\n xs: \"size-3.5 border\",\n sm: \"size-4 border\",\n md: \"size-4 border-2\",\n lg: \"size-5 border-2\",\n xl: \"size-5 border-2\",\n};\n\n/** Default spinner for {@link Button} pending state (`data-slot=\"spinner\"`). */\nexport const defaultButtonSpinner = (size: ButtonSize = \"md\"): Child =>\n h(\n \"span\",\n {\n \"data-slot\": \"spinner\",\n \"data-btn-icon\": \"\",\n className: [\n \"inline-block shrink-0 animate-spin rounded-full border-current border-t-transparent\",\n spinnerSizeClass[size],\n ].join(\" \"),\n \"aria-hidden\": \"true\",\n },\n );\n","import { tv } from \"../../theme/variants\";\n\n/** HeroUI v3–inspired button styles (Tailwind + CSS variables). */\nexport const buttonStyles = tv({\n base: [\n \"relative isolate inline-flex w-fit origin-center items-center justify-center gap-2\",\n \"font-medium whitespace-nowrap select-none outline-none\",\n \"rounded-3xl\",\n \"transition-[transform,background-color,box-shadow,color] duration-200 ease-out\",\n \"motion-reduce:transition-none\",\n \"cursor-pointer\",\n \"bg-[var(--button-bg)] text-[var(--button-fg)]\",\n \"hover:bg-[var(--button-bg-hover)]\",\n \"active:scale-[0.97] active:bg-[var(--button-bg-pressed)]\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-zinc-400\",\n \"disabled:opacity-50 disabled:pointer-events-none\",\n \"data-[disabled]:opacity-50 data-[disabled]:pointer-events-none\",\n \"data-[pending]:pointer-events-none data-[pending]:cursor-wait\",\n \"[&_svg:not([data-slot=spinner]_svg)]:pointer-events-none [&_svg:not([data-slot=spinner]_svg)]:shrink-0\",\n \"[&_[data-btn-icon]]:inline-flex [&_[data-btn-icon]]:shrink-0\",\n ].join(\" \"),\n variants: {\n variant: {\n primary: [\n \"[--button-bg:var(--color-accent)]\",\n \"[--button-bg-hover:var(--color-accent-hover)]\",\n \"[--button-bg-pressed:var(--color-accent-hover)]\",\n \"[--button-fg:var(--color-accent-foreground)]\",\n \"focus-visible:ring-zinc-900\",\n ].join(\" \"),\n secondary: [\n \"[--button-bg:var(--color-default)]\",\n \"[--button-bg-hover:var(--color-default-hover)]\",\n \"[--button-bg-pressed:var(--color-default-hover)]\",\n \"[--button-fg:var(--color-default-foreground)]\",\n ].join(\" \"),\n tertiary: [\n \"[--button-bg:var(--color-default)]\",\n \"[--button-bg-hover:var(--color-default-hover)]\",\n \"[--button-bg-pressed:var(--color-default-hover)]\",\n \"[--button-fg:var(--color-zinc-700)]\",\n ].join(\" \"),\n outline: [\n \"border border-[var(--color-border)]\",\n \"[--button-bg:transparent]\",\n \"[--button-bg-hover:color-mix(in_srgb,var(--color-default)_60%,transparent)]\",\n \"[--button-bg-pressed:var(--color-default)]\",\n \"[--button-fg:var(--color-default-foreground)]\",\n ].join(\" \"),\n ghost: [\n \"[--button-bg:transparent]\",\n \"[--button-bg-hover:var(--color-default)]\",\n \"[--button-bg-pressed:var(--color-default)]\",\n \"[--button-fg:var(--color-default-foreground)]\",\n ].join(\" \"),\n danger: [\n \"[--button-bg:var(--color-danger)]\",\n \"[--button-bg-hover:var(--color-danger-hover)]\",\n \"[--button-bg-pressed:var(--color-danger-hover)]\",\n \"[--button-fg:var(--color-danger-foreground)]\",\n \"focus-visible:ring-red-600\",\n ].join(\" \"),\n dangerSoft: [\n \"[--button-bg:var(--color-danger-soft)]\",\n \"[--button-bg-hover:var(--color-danger-soft-hover)]\",\n \"[--button-bg-pressed:var(--color-danger-soft-hover)]\",\n \"[--button-fg:var(--color-danger-soft-foreground)]\",\n \"focus-visible:ring-red-400\",\n ].join(\" \"),\n /** @deprecated Use `danger`. */\n destructive: [\n \"[--button-bg:var(--color-danger)]\",\n \"[--button-bg-hover:var(--color-danger-hover)]\",\n \"[--button-bg-pressed:var(--color-danger-hover)]\",\n \"[--button-fg:var(--color-danger-foreground)]\",\n \"focus-visible:ring-red-600\",\n ].join(\" \"),\n link: [\n \"h-auto min-h-0 w-auto gap-1 rounded-none px-0\",\n \"[--button-bg:transparent] [--button-bg-hover:transparent] [--button-bg-pressed:transparent]\",\n \"[--button-fg:var(--color-zinc-900)]\",\n \"underline-offset-4 hover:underline active:scale-100\",\n ].join(\" \"),\n },\n size: {\n xs: \"h-8 gap-1.5 px-2.5 text-xs md:h-7 [&_[data-btn-icon]]:size-3.5 active:scale-[0.98]\",\n sm: \"h-9 gap-2 px-3 text-sm md:h-8 [&_[data-btn-icon]]:size-4 active:scale-[0.98]\",\n md: \"h-10 gap-2 px-4 text-sm md:h-9 [&_[data-btn-icon]]:size-4\",\n lg: \"h-11 gap-2 px-4 text-base md:h-10 [&_[data-btn-icon]]:size-5 active:scale-[0.96]\",\n xl: \"h-12 gap-2.5 px-5 text-base [&_[data-btn-icon]]:size-5 active:scale-[0.96]\",\n },\n radius: {\n none: \"!rounded-none\",\n sm: \"!rounded-sm\",\n md: \"!rounded-md\",\n lg: \"!rounded-lg\",\n full: \"!rounded-full\",\n },\n fullWidth: {\n true: \"w-full\",\n false: \"\",\n },\n iconOnly: {\n true: \"aspect-square p-0 [&_[data-btn-icon]]:mx-0\",\n false: \"\",\n },\n pending: {\n true: \"\",\n false: \"\",\n },\n /** @deprecated Alias for `pending` (variant key resolution). */\n loading: {\n true: \"\",\n false: \"\",\n },\n },\n compoundVariants: [\n { iconOnly: true, size: \"xs\", class: \"size-8 md:size-7\" },\n { iconOnly: true, size: \"sm\", class: \"size-9 md:size-8\" },\n { iconOnly: true, size: \"md\", class: \"size-10 md:size-9\" },\n { iconOnly: true, size: \"lg\", class: \"size-11 md:size-10\" },\n { iconOnly: true, size: \"xl\", class: \"size-12\" },\n { variant: \"link\", iconOnly: true, class: \"size-auto aspect-auto p-0\" },\n ],\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n radius: \"full\",\n fullWidth: false,\n iconOnly: false,\n pending: false,\n },\n});\n","import { h, type Child } from \"@echojs-ecosystem/hyperdom\";\n\nimport { createUIComponent } from \"../../core/component\";\nimport { composeEventHandlers } from \"../../utils/compose-event-handlers\";\nimport { dataDisabled, dataPending } from \"../../utils/data-attributes\";\nimport { defaultButtonSpinner } from \"./button-spinner\";\nimport { buttonStyles } from \"./button.styles\";\nimport type { ButtonProps, ButtonSize } from \"./button.types\";\n\nconst INTERNAL_KEYS = new Set([\n \"variant\",\n \"size\",\n \"radius\",\n \"fullWidth\",\n \"iconOnly\",\n \"pending\",\n \"loading\",\n \"disabled\",\n \"leftIcon\",\n \"rightIcon\",\n \"spinner\",\n \"headless\",\n \"children\",\n \"onClick\",\n]);\n\nconst pickDomProps = (props: Record<string, unknown>): Record<string, unknown> => {\n const out: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(props)) {\n if (!INTERNAL_KEYS.has(key)) out[key] = value;\n }\n return out;\n};\n\nconst wrapIcon = (node: Child): Child =>\n h(\n \"span\",\n { \"data-btn-icon\": \"\", className: \"inline-flex shrink-0\", \"aria-hidden\": \"true\" } as any,\n node,\n );\n\nconst buildContent = (options: {\n pending: boolean;\n size: ButtonSize;\n leftIcon?: Child;\n rightIcon?: Child;\n spinner?: Child;\n children?: Child;\n}): Child => {\n const { pending, size, leftIcon, rightIcon, spinner, children } = options;\n const parts: Child[] = [];\n\n if (pending) {\n parts.push(spinner ?? defaultButtonSpinner(size));\n } else if (leftIcon) {\n parts.push(wrapIcon(leftIcon));\n }\n\n if (children !== undefined && children !== null && children !== false) {\n parts.push(children);\n }\n\n if (!pending && rightIcon) {\n parts.push(wrapIcon(rightIcon));\n }\n\n if (parts.length === 1) return parts[0]!;\n return parts;\n};\n\nexport const Button = createUIComponent<ButtonProps, HTMLButtonElement>({\n name: \"Button\",\n defaultTag: \"button\",\n defaultProps: {\n variant: \"primary\",\n size: \"md\",\n radius: \"full\",\n type: \"button\",\n fullWidth: false,\n iconOnly: false,\n pending: false,\n loading: false,\n disabled: false,\n },\n variants: buttonStyles,\n render: ({ props, className, headless }) => {\n const {\n pending: pendingProp,\n loading: loadingProp = false,\n disabled: disabledProp = false,\n type,\n leftIcon,\n rightIcon,\n spinner,\n children,\n size = \"md\",\n onClick,\n ...rest\n } = props as ButtonProps & Record<string, unknown>;\n\n const pending = Boolean(pendingProp || loadingProp);\n const inactive = Boolean(disabledProp || pending);\n\n const content = buildContent({\n pending,\n size: size as ButtonSize,\n leftIcon,\n rightIcon,\n spinner,\n children,\n });\n\n const domProps = pickDomProps(rest as Record<string, unknown>);\n const visualClass = headless ? undefined : className;\n\n const handleClick = composeEventHandlers(\n onClick as ((e: MouseEvent) => void) | undefined,\n inactive ? (event: MouseEvent) => event.preventDefault() : undefined,\n { checkDefaultPrevented: true },\n );\n\n return h(\n \"button\",\n {\n ...domProps,\n type: type ?? \"button\",\n disabled: inactive,\n className: visualClass,\n class: visualClass,\n ...dataDisabled(inactive),\n ...dataPending(pending),\n \"aria-disabled\": inactive ? \"true\" : undefined,\n \"aria-busy\": pending ? \"true\" : undefined,\n onClick: inactive ? handleClick : onClick,\n } as any,\n content as Child,\n );\n },\n});\n","import { tv } from \"../../theme/variants\";\n\nexport const iconButtonStyles = tv({\n base: \"shrink-0 p-0\",\n variants: {\n size: {\n xs: \"h-7 w-7\",\n sm: \"h-8 w-8\",\n md: \"h-10 w-10\",\n lg: \"h-12 w-12\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n\n","import { createUIComponent } from \"../../core/component\";\nimport { Button } from \"../button/button\";\nimport { iconButtonStyles } from \"./icon-button.styles\";\nimport type { IconButtonProps } from \"./icon-button.types\";\n\nconst isDev = (): boolean => {\n const env = (globalThis as { process?: { env?: { NODE_ENV?: string } } }).process?.env?.NODE_ENV;\n return env !== \"production\";\n};\n\nexport const IconButton = createUIComponent<IconButtonProps, HTMLElement>({\n name: \"IconButton\",\n defaultTag: \"button\",\n defaultProps: {\n variant: \"ghost\",\n size: \"md\",\n },\n variants: (options) => iconButtonStyles(options as Record<string, unknown>),\n render: ({ props, className, headless }) => {\n const ariaLabel = props[\"aria-label\"];\n if (isDev() && (!ariaLabel || String(ariaLabel).trim().length === 0)) {\n throw new Error(\n 'IconButton: prop \"aria-label\" is required (e.g. IconButton({ \"aria-label\": \"Close\", children: ... })).',\n );\n }\n\n const { size: _iconSize, children, ...rest } = props;\n\n return Button({\n ...rest,\n headless,\n size: \"md\",\n className,\n children,\n });\n },\n});\n","import { tv } from \"../../theme/variants\";\n\nexport const inputStyles = tv({\n slots: {\n wrapper: [\n \"flex items-center gap-2\",\n \"transition-colors\",\n \"focus-within:ring-2 focus-within:ring-offset-2 focus-within:ring-zinc-400\",\n \"data-[disabled]:opacity-50 data-[disabled]:pointer-events-none\",\n \"data-[invalid]:ring-2 data-[invalid]:ring-red-500 data-[invalid]:ring-offset-2\",\n ].join(\" \"),\n input: [\n \"w-full bg-transparent outline-none\",\n \"placeholder:text-zinc-400\",\n \"disabled:cursor-not-allowed\",\n ].join(\" \"),\n start: \"text-zinc-500\",\n end: \"text-zinc-500\",\n },\n variants: {\n variant: {\n outline: \"border border-zinc-300 bg-white text-zinc-900\",\n filled: \"bg-zinc-100 text-zinc-900\",\n ghost: \"bg-transparent text-zinc-900\",\n },\n size: {\n sm: \"h-8 px-3 text-sm rounded-md\",\n md: \"h-10 px-3 text-sm rounded-md\",\n lg: \"h-12 px-4 text-base rounded-md\",\n },\n },\n defaultVariants: {\n variant: \"outline\",\n size: \"md\",\n },\n});\n","import { h, type Child } from \"@echojs-ecosystem/hyperdom\";\n\nimport { cn } from \"../../utils/cn\";\nimport { dataDisabled, dataInvalid } from \"../../utils/data-attributes\";\nimport { inputStyles } from \"./input.styles\";\nimport type { InputSize, InputVariant } from \"./field.types\";\n\nexport const INPUT_INTERNAL_KEYS = new Set([\n \"variant\",\n \"size\",\n \"startContent\",\n \"endContent\",\n \"invalid\",\n \"disabled\",\n \"readonly\",\n \"readOnly\",\n \"required\",\n \"headless\",\n \"children\",\n \"className\",\n \"class\",\n]);\n\nexport const pickInputDomProps = (props: Record<string, unknown>): Record<string, unknown> => {\n const out: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(props)) {\n if (!INPUT_INTERNAL_KEYS.has(key)) out[key] = value;\n }\n return out;\n};\n\nexport type RenderInputFieldOptions = {\n headless: boolean;\n className?: string;\n variant?: InputVariant;\n size?: InputSize;\n disabled?: boolean;\n invalid?: boolean;\n readonly?: boolean;\n required?: boolean;\n describedBy?: string;\n startContent?: Child;\n endContent?: Child;\n inputProps: Record<string, unknown>;\n wrapperProps?: Record<string, unknown>;\n inputRef?: (element: HTMLInputElement | null) => void;\n};\n\nexport const renderInputField = (options: RenderInputFieldOptions): Child => {\n const {\n headless,\n className,\n variant = \"outline\",\n size = \"md\",\n disabled,\n invalid,\n readonly,\n required,\n describedBy,\n startContent,\n endContent,\n inputProps,\n wrapperProps,\n inputRef,\n } = options;\n\n const ariaInvalid = invalid ? \"true\" : (inputProps[\"aria-invalid\"] as string | undefined);\n const dataReadonly = readonly ? { \"data-readonly\": \"\" } : {};\n const slotOptions = { variant, size };\n const slots = inputStyles;\n\n const nativeInputProps = {\n ...inputProps,\n disabled,\n readonly,\n required,\n \"aria-invalid\": ariaInvalid,\n \"aria-describedby\": describedBy ?? inputProps[\"aria-describedby\"],\n ref: inputRef ?? inputProps.ref,\n };\n\n if (!startContent && !endContent) {\n const visualClass = headless ? undefined : className;\n return h(\"input\", {\n ...nativeInputProps,\n ...dataDisabled(Boolean(disabled)),\n ...dataInvalid(Boolean(invalid)),\n ...dataReadonly,\n className: visualClass,\n class: visualClass,\n } as any);\n }\n\n const wrapperClass = headless ? undefined : cn(slots.wrapper(slotOptions), className);\n const inputClass = headless ? undefined : slots.input(slotOptions);\n\n return h(\n \"div\",\n {\n ...wrapperProps,\n className: wrapperClass,\n class: wrapperClass,\n ...dataDisabled(Boolean(disabled)),\n ...dataInvalid(Boolean(invalid)),\n ...dataReadonly,\n } as any,\n [\n startContent\n ? h(\n \"span\",\n { \"data-input-slot\": \"start\", className: headless ? undefined : slots.start() },\n startContent,\n )\n : null,\n h(\"input\", {\n ...nativeInputProps,\n className: inputClass,\n class: inputClass,\n } as any),\n endContent\n ? h(\"span\", { \"data-input-slot\": \"end\", className: headless ? undefined : slots.end() }, endContent)\n : null,\n ],\n );\n};\n","import { createUIComponent } from \"../../core/component\";\nimport { inputStyles } from \"../input-shared/input.styles\";\nimport { pickInputDomProps, renderInputField } from \"../input-shared/render-input-field\";\nimport type { InputProps } from \"./input.types\";\n\nexport const Input = createUIComponent<InputProps, HTMLInputElement>({\n name: \"Input\",\n defaultTag: \"input\",\n defaultProps: {\n type: \"text\",\n variant: \"outline\",\n size: \"md\",\n },\n variants: (options) => inputStyles.wrapper(options as Record<string, unknown>),\n render: ({ props, headless, className }) => {\n const {\n startContent,\n endContent,\n invalid,\n disabled,\n readonly: readonlyProp,\n readOnly,\n required,\n variant,\n size,\n ...rest\n } = props as InputProps & Record<string, unknown>;\n\n const readonly = readonlyProp ?? readOnly;\n const domProps = pickInputDomProps(rest as Record<string, unknown>);\n\n return renderInputField({\n headless,\n className,\n variant: variant as InputProps[\"variant\"],\n size: size as InputProps[\"size\"],\n disabled,\n invalid,\n readonly,\n required,\n startContent,\n endContent,\n inputProps: domProps,\n });\n },\n});\n","import type { MaskToken, MaskValue } from \"./types\";\n\nconst slotPattern = (kind: MaskToken & { type: \"slot\" }): RegExp => {\n switch (kind.kind) {\n case \"9\":\n return /\\d/;\n case \"a\":\n return /[A-Za-z]/;\n case \"*\":\n return /[A-Za-z0-9]/;\n }\n};\n\nconst extractSlotChars = (raw: string, tokens: MaskToken[]): string[] => {\n const slots = tokens.filter((t): t is MaskToken & { type: \"slot\" } => t.type === \"slot\");\n const out: string[] = [];\n\n for (const char of raw) {\n if (out.length >= slots.length) break;\n const slot = slots[out.length]!;\n if (slotPattern(slot).test(char)) out.push(char);\n }\n\n return out;\n};\n\n/** Applies mask tokens to raw user input. */\nexport const formatMaskedValue = (raw: string, tokens: MaskToken[]): MaskValue => {\n const slotChars = extractSlotChars(raw, tokens);\n let slotIndex = 0;\n let masked = \"\";\n const unmaskedParts: string[] = [];\n\n for (const token of tokens) {\n if (token.type === \"literal\") {\n masked += token.char;\n continue;\n }\n\n const char = slotChars[slotIndex];\n if (char === undefined) break;\n\n masked += char;\n unmaskedParts.push(char);\n slotIndex += 1;\n }\n\n return {\n masked,\n unmasked: unmaskedParts.join(\"\"),\n };\n};\n\n/** Maximum number of slot characters for a mask. */\nexport const maskSlotCount = (tokens: MaskToken[]): number =>\n tokens.filter((t) => t.type === \"slot\").length;\n","import type { MaskSlotKind, MaskToken } from \"./types\";\n\nconst SLOT_KINDS = new Set<MaskSlotKind>([\"9\", \"a\", \"*\"]);\n\n/** Parses a mask pattern (`9` digit, `a` letter, `*` alphanumeric; other chars are literals). */\nexport const parseMaskPattern = (pattern: string): MaskToken[] => {\n const tokens: MaskToken[] = [];\n\n for (const char of pattern) {\n if (SLOT_KINDS.has(char as MaskSlotKind)) {\n tokens.push({ type: \"slot\", kind: char as MaskSlotKind });\n continue;\n }\n tokens.push({ type: \"literal\", char });\n }\n\n return tokens;\n};\n","import type { MaskPattern, MaskPreset } from \"./types\";\n\n/** Built-in mask patterns (inspired by [use-mask-input](https://github.com/eduardoborges/use-mask-input)). */\nexport const MASK_PRESETS: Record<MaskPreset, string> = {\n phone: \"(99) 99999-9999\",\n cpf: \"999.999.999-99\",\n cnpj: \"99.999.999/9999-99\",\n date: \"99/99/9999\",\n cep: \"99999-999\",\n time: \"99:99\",\n \"credit-card\": \"9999 9999 9999 9999\",\n};\n\nexport const resolveMaskPattern = (mask: MaskPattern): string =>\n mask in MASK_PRESETS ? MASK_PRESETS[mask as MaskPreset] : mask;\n","import { formatMaskedValue } from \"./format-mask\";\nimport { parseMaskPattern } from \"./parse-mask\";\nimport { resolveMaskPattern } from \"./presets\";\nimport type { AttachInputMaskOptions } from \"./types\";\n\n/**\n * Binds mask formatting to a native `<input>` (vanilla, hyperdom-friendly).\n * Inspired by [use-mask-input](https://github.com/eduardoborges/use-mask-input) / Inputmask.\n */\nexport const attachInputMask = (\n input: HTMLInputElement,\n options: AttachInputMaskOptions,\n): (() => void) => {\n const pattern = resolveMaskPattern(options.mask);\n const tokens = parseMaskPattern(pattern);\n\n const apply = (raw: string, notify = true): void => {\n const result = formatMaskedValue(raw, tokens);\n if (input.value !== result.masked) {\n input.value = result.masked;\n }\n if (notify) options.onValueChange?.(result);\n };\n\n const onInput = (): void => apply(input.value);\n const onBlur = (): void => apply(input.value);\n\n input.addEventListener(\"input\", onInput);\n input.addEventListener(\"blur\", onBlur);\n\n if (input.value) apply(input.value, true);\n\n return () => {\n input.removeEventListener(\"input\", onInput);\n input.removeEventListener(\"blur\", onBlur);\n };\n};\n","import { createUIComponent } from \"../../core/component\";\nimport { attachInputMask } from \"../../utils/input-mask\";\nimport type { MaskPattern } from \"../../utils/input-mask\";\nimport { inputStyles } from \"../input-shared/input.styles\";\nimport { pickInputDomProps, renderInputField } from \"../input-shared/render-input-field\";\nimport type { InputSize, InputVariant } from \"../input-shared/field.types\";\nimport type { InputMaskProps } from \"./input-mask.types\";\n\nexport const InputMask = createUIComponent<InputMaskProps, HTMLInputElement>({\n name: \"InputMask\",\n defaultTag: \"input\",\n defaultProps: {\n mask: \"phone\",\n variant: \"outline\",\n size: \"md\",\n },\n variants: (options) => inputStyles.wrapper(options as Record<string, unknown>),\n render: ({ props, headless, className }) => {\n const p = props as unknown as Record<string, unknown>;\n const mask = p.mask as MaskPattern;\n const onMaskValueChange = p.onMaskValueChange as InputMaskProps[\"onMaskValueChange\"];\n const onInput = p.onInput as InputMaskProps[\"onInput\"];\n\n const domProps = pickInputDomProps(p);\n const readonly = Boolean(p.readonly ?? p.readOnly);\n\n let disposeMask: (() => void) | undefined;\n\n const inputRef = (element: HTMLInputElement | null) => {\n disposeMask?.();\n disposeMask = undefined;\n if (!element) return;\n\n disposeMask = attachInputMask(element, {\n mask,\n onValueChange: onMaskValueChange,\n });\n\n const userRef = domProps.ref;\n if (typeof userRef === \"function\") userRef(element);\n };\n\n const { ref: _ref, ...inputRest } = domProps;\n\n return renderInputField({\n headless,\n className,\n variant: p.variant as InputVariant | undefined,\n size: p.size as InputSize | undefined,\n disabled: p.disabled as boolean | undefined,\n invalid: p.invalid as boolean | undefined,\n readonly,\n required: p.required as boolean | undefined,\n startContent: p.startContent as InputMaskProps[\"startContent\"],\n endContent: p.endContent as InputMaskProps[\"endContent\"],\n inputRef,\n inputProps: {\n ...inputRest,\n type: \"text\",\n inputMode: \"numeric\",\n onInput,\n },\n });\n },\n});\n","import { h } from \"@echojs-ecosystem/hyperdom\";\n\nimport { createUIComponent } from \"../../core/component\";\nimport { cn } from \"../../utils/cn\";\nimport { dataDisabled, dataInvalid } from \"../../utils/data-attributes\";\nimport { inputStyles } from \"../input-shared/input.styles\";\nimport { pickInputDomProps } from \"../input-shared/render-input-field\";\nimport type { InputOtpProps } from \"./input-otp.types\";\n\nconst OTP_PROP_KEYS = new Set([\"length\", \"onValueChange\", \"value\", \"defaultValue\"]);\n\nconst pickOtpDomProps = (props: Record<string, unknown>): Record<string, unknown> => {\n const out: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(props)) {\n if (OTP_PROP_KEYS.has(key)) continue;\n out[key] = value;\n }\n return pickInputDomProps(out);\n};\n\nconst normalizeOtp = (value: string, length: number): string =>\n value.replace(/\\D/g, \"\").slice(0, length);\n\nexport const InputOtp = createUIComponent<InputOtpProps, HTMLDivElement>({\n name: \"InputOtp\",\n defaultTag: \"div\",\n defaultProps: {\n length: 6,\n variant: \"outline\",\n size: \"md\",\n autocomplete: \"one-time-code\",\n },\n variants: (options) => inputStyles.wrapper(options as Record<string, unknown>),\n render: ({ props, headless, className }) => {\n const {\n length = 6,\n value = \"\",\n invalid,\n disabled,\n readonly: readonlyProp,\n readOnly,\n required,\n variant = \"outline\",\n size = \"md\",\n autocomplete = \"one-time-code\",\n onValueChange,\n onInput,\n ...rest\n } = props as InputOtpProps & Record<string, unknown>;\n\n const readonly = readonlyProp ?? readOnly;\n const domProps = pickOtpDomProps(rest as Record<string, unknown>);\n const digits = normalizeOtp(String(value), length);\n const slotOptions = { variant, size };\n const cellClass = headless\n ? undefined\n : cn(\n inputStyles.input(slotOptions),\n \"w-10 text-center px-0\",\n size === \"sm\" && \"w-8\",\n size === \"lg\" && \"w-12\",\n );\n\n const groupClass = headless\n ? \"flex gap-2\"\n : cn(\"flex gap-2\", inputStyles.wrapper(slotOptions), className);\n\n const emitChange = (next: string, input?: HTMLInputElement): void => {\n const normalized = normalizeOtp(next, length);\n onValueChange?.(normalized);\n if (input) {\n input.dispatchEvent(new Event(\"input\", { bubbles: true }));\n }\n };\n\n const cells = Array.from({ length }, (_, index) => {\n const char = digits[index] ?? \"\";\n\n return h(\"input\", {\n type: \"text\",\n inputMode: \"numeric\",\n pattern: \"[0-9]*\",\n maxlength: 1,\n value: char,\n disabled,\n readonly,\n required,\n autocomplete: index === 0 ? autocomplete : \"off\",\n \"aria-label\": `Digit ${index + 1} of ${length}`,\n className: cellClass,\n class: cellClass,\n onInput: (event: Event) => {\n const input = event.currentTarget as HTMLInputElement;\n const digit = normalizeOtp(input.value, 1).slice(-1);\n input.value = digit;\n\n const chars = [...digits];\n while (chars.length < length) chars.push(\"\");\n chars[index] = digit;\n emitChange(chars.join(\"\"), input);\n\n if (digit && index < length - 1) {\n const group = input.parentElement;\n const nextInput = group?.querySelectorAll(\"input\")[index + 1] as HTMLInputElement | undefined;\n nextInput?.focus();\n }\n\n onInput?.(event as Event & { currentTarget: HTMLInputElement });\n },\n onKeyDown: (event: KeyboardEvent) => {\n const input = event.currentTarget as HTMLInputElement;\n if (event.key === \"Backspace\" && !input.value && index > 0) {\n const group = input.parentElement;\n const prevInput = group?.querySelectorAll(\"input\")[index - 1] as HTMLInputElement | undefined;\n prevInput?.focus();\n const chars = digits.split(\"\");\n chars[index - 1] = \"\";\n emitChange(chars.join(\"\"), input);\n }\n },\n onPaste: (event: ClipboardEvent) => {\n event.preventDefault();\n const text = event.clipboardData?.getData(\"text\") ?? \"\";\n emitChange(text, event.currentTarget as HTMLInputElement);\n },\n } as any);\n });\n\n return h(\n \"div\",\n {\n ...domProps,\n role: \"group\",\n \"aria-label\": domProps[\"aria-label\"] ?? \"One-time code\",\n className: groupClass,\n class: groupClass,\n ...dataDisabled(Boolean(disabled)),\n ...dataInvalid(Boolean(invalid)),\n ...(readonly ? { \"data-readonly\": \"\" } : {}),\n } as any,\n cells,\n );\n },\n});\n","import { h, type Child } from \"@echojs-ecosystem/hyperdom\";\n\nimport { createUIComponent } from \"../../core/component\";\nimport { cn } from \"../../utils/cn\";\nimport { dataDisabled, dataInvalid } from \"../../utils/data-attributes\";\nimport { inputStyles } from \"../input-shared/input.styles\";\nimport { pickInputDomProps, renderInputField } from \"../input-shared/render-input-field\";\nimport type { InputTagsProps } from \"./input-tags.types\";\n\nconst TAG_PROP_KEYS = new Set([\"value\", \"onValueChange\", \"separators\", \"allowDuplicates\", \"maxTags\"]);\n\nconst pickTagsDomProps = (props: Record<string, unknown>): Record<string, unknown> => {\n const out: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(props)) {\n if (TAG_PROP_KEYS.has(key)) continue;\n out[key] = value;\n }\n return pickInputDomProps(out);\n};\n\nconst normalizeTag = (raw: string): string => raw.trim();\n\nconst canAddTag = (\n tags: string[],\n tag: string,\n options: { allowDuplicates?: boolean; maxTags?: number },\n): boolean => {\n if (!tag) return false;\n if (options.maxTags !== undefined && tags.length >= options.maxTags) return false;\n if (!options.allowDuplicates && tags.includes(tag)) return false;\n return true;\n};\n\nexport const InputTags = createUIComponent<InputTagsProps, HTMLDivElement>({\n name: \"InputTags\",\n defaultTag: \"div\",\n defaultProps: {\n value: [],\n separators: [\",\", \"Enter\"],\n allowDuplicates: false,\n variant: \"outline\",\n size: \"md\",\n placeholder: \"Add tag…\",\n },\n variants: (options) => inputStyles.wrapper(options as Record<string, unknown>),\n render: ({ props, headless, className }) => {\n const {\n value = [],\n separators = [\",\", \"Enter\"],\n allowDuplicates = false,\n maxTags,\n startContent,\n endContent,\n invalid,\n disabled,\n readonly: readonlyProp,\n readOnly,\n required,\n variant = \"outline\",\n size = \"md\",\n placeholder,\n onValueChange,\n onInput,\n ...rest\n } = props as InputTagsProps & Record<string, unknown>;\n\n const readonly = readonlyProp ?? readOnly;\n const domProps = pickTagsDomProps(rest as Record<string, unknown>);\n const tags = Array.isArray(value) ? value : [];\n const slotOptions = { variant, size };\n\n const addTag = (draft: string, input: HTMLInputElement): void => {\n const tag = normalizeTag(draft);\n if (!canAddTag(tags, tag, { allowDuplicates, maxTags })) return;\n onValueChange?.([...tags, tag]);\n input.value = \"\";\n };\n\n const removeTag = (index: number): void => {\n onValueChange?.(tags.filter((_, i) => i !== index));\n };\n\n const tagChips: Child[] = tags.map((tag, index) =>\n h(\n \"span\",\n {\n \"data-tag\": \"\",\n className: headless\n ? undefined\n : \"inline-flex items-center gap-1 rounded-md bg-zinc-100 px-2 py-0.5 text-sm text-zinc-800\",\n },\n [\n tag,\n readonly || disabled\n ? null\n : h(\n \"button\",\n {\n type: \"button\",\n className: \"text-zinc-500 hover:text-zinc-800\",\n \"aria-label\": `Remove ${tag}`,\n onClick: () => removeTag(index),\n },\n \"×\",\n ),\n ],\n ),\n );\n\n const innerInput = renderInputField({\n headless: true,\n variant: variant as InputTagsProps[\"variant\"],\n size: size as InputTagsProps[\"size\"],\n disabled,\n invalid,\n readonly,\n required,\n inputProps: {\n type: \"text\",\n className: \"min-w-24 flex-1 border-0 bg-transparent shadow-none outline-none\",\n placeholder: tags.length === 0 ? placeholder : undefined,\n onInput,\n onKeyDown: (event: KeyboardEvent) => {\n const input = event.currentTarget as HTMLInputElement;\n if (separators.includes(event.key)) {\n event.preventDefault();\n addTag(input.value, input);\n return;\n }\n if (event.key === \"Backspace\" && input.value === \"\" && tags.length > 0) {\n removeTag(tags.length - 1);\n }\n },\n },\n });\n\n const wrapperClass = headless\n ? cn(\"flex min-w-0 flex-1 flex-wrap items-center gap-1.5\")\n : cn(inputStyles.wrapper(slotOptions), \"min-h-10 flex-wrap items-center gap-1.5 py-1\", className);\n\n return h(\n \"div\",\n {\n ...domProps,\n className: wrapperClass,\n class: wrapperClass,\n ...dataDisabled(Boolean(disabled)),\n ...dataInvalid(Boolean(invalid)),\n ...(readonly ? { \"data-readonly\": \"\" } : {}),\n } as any,\n [\n startContent\n ? h(\n \"span\",\n { \"data-input-slot\": \"start\", className: headless ? undefined : inputStyles.start() },\n startContent,\n )\n : null,\n ...tagChips,\n innerInput,\n endContent\n ? h(\"span\", { \"data-input-slot\": \"end\", className: headless ? undefined : inputStyles.end() }, endContent)\n : null,\n ],\n );\n },\n});\n","import { tv } from \"../../theme/variants\";\n\nexport const textareaStyles = tv({\n base: [\n \"w-full\",\n \"transition-colors\",\n \"outline-none\",\n \"focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-zinc-400\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n \"data-[invalid]:ring-2 data-[invalid]:ring-red-500 data-[invalid]:ring-offset-2\",\n ].join(\" \"),\n variants: {\n variant: {\n outline: \"border border-zinc-300 bg-white text-zinc-900\",\n filled: \"bg-zinc-100 text-zinc-900\",\n ghost: \"bg-transparent text-zinc-900\",\n },\n size: {\n sm: \"min-h-20 px-3 py-2 text-sm rounded-md\",\n md: \"min-h-24 px-3 py-2 text-sm rounded-md\",\n lg: \"min-h-28 px-4 py-3 text-base rounded-md\",\n },\n resize: {\n none: \"resize-none\",\n vertical: \"resize-y\",\n horizontal: \"resize-x\",\n both: \"resize\",\n },\n },\n defaultVariants: {\n variant: \"outline\",\n size: \"md\",\n resize: \"vertical\",\n },\n});\n\n","import { h } from \"@echojs-ecosystem/hyperdom\";\nimport { createUIComponent } from \"../../core/component\";\nimport { dataDisabled, dataInvalid } from \"../../utils/data-attributes\";\nimport { textareaStyles } from \"./textarea.styles\";\nimport type { TextareaProps } from \"./textarea.types\";\n\nexport const Textarea = createUIComponent<TextareaProps, HTMLTextAreaElement>({\n name: \"Textarea\",\n defaultTag: \"textarea\",\n defaultProps: {\n variant: \"outline\",\n size: \"md\",\n resize: \"vertical\",\n },\n variants: (options) => textareaStyles(options as any),\n render: ({ props, headless, className }) => {\n const { invalid, disabled, readonly, required, ...rest } = props as any;\n\n const ariaInvalid = invalid ? \"true\" : (rest[\"aria-invalid\"] as any);\n const dataReadonly = readonly ? { \"data-readonly\": \"\" } : {};\n\n return h(\"textarea\", {\n ...rest,\n disabled,\n readonly,\n required,\n \"aria-invalid\": ariaInvalid,\n ...dataDisabled(Boolean(disabled)),\n ...dataInvalid(Boolean(invalid)),\n ...dataReadonly,\n className: headless ? undefined : className,\n class: headless ? undefined : className,\n });\n },\n});\n\n","import { tv } from \"../../theme/variants\";\n\nexport const labelStyles = tv({\n base: [\n \"text-sm font-medium leading-none\",\n \"data-[disabled]:opacity-50\",\n \"data-[invalid]:text-red-700\",\n ].join(\" \"),\n});\n\n","import { h, type Child } from \"@echojs-ecosystem/hyperdom\";\nimport { createUIComponent } from \"../../core/component\";\nimport { cn } from \"../../utils/cn\";\nimport { dataDisabled, dataInvalid } from \"../../utils/data-attributes\";\nimport { labelStyles } from \"./label.styles\";\nimport type { LabelProps } from \"./label.types\";\n\nexport const Label = createUIComponent<LabelProps, HTMLLabelElement>({\n name: \"Label\",\n defaultTag: \"label\",\n defaultProps: {\n requiredIndicator: \"*\",\n },\n variants: () => labelStyles({} as any),\n render: ({ props, headless, className }) => {\n const {\n for: htmlFor,\n required,\n disabled,\n invalid,\n requiredIndicator,\n optionalIndicator,\n children,\n ...rest\n } = props as any;\n\n const indicator =\n required === true\n ? requiredIndicator\n : required === false && optionalIndicator\n ? optionalIndicator\n : null;\n\n const visualClass = headless ? undefined : cn(className);\n\n return h(\n \"label\",\n {\n ...rest,\n for: htmlFor,\n ...dataDisabled(Boolean(disabled)),\n ...dataInvalid(Boolean(invalid)),\n className: visualClass,\n class: visualClass,\n } as any,\n [\n children as Child,\n indicator ? h(\"span\", { \"aria-hidden\": \"true\", className: headless ? undefined : \"ml-1\" }, indicator) : null,\n ],\n );\n },\n});\n\n","import { tv } from \"../../theme/variants\";\n\nexport const fieldStyles = tv({\n slots: {\n root: \"grid gap-1.5\",\n label: \"\",\n description: \"text-sm text-zinc-500\",\n error: \"text-sm text-red-600\",\n },\n});\n\n","import type { FieldContext } from \"./field.types\";\n\nconst stack: FieldContext[] = [];\n\nexport const getFieldContext = (): FieldContext | undefined => stack[stack.length - 1];\n\nexport const runWithFieldContext = <T>(value: FieldContext, fn: () => T): T => {\n stack.push(value);\n try {\n return fn();\n } finally {\n stack.pop();\n }\n};\n\n","import { h, type Child } from \"@echojs-ecosystem/hyperdom\";\nimport { createId } from \"../../core/ids\";\nimport { getUIContextOrDefault } from \"../../theme/theme-context\";\nimport { cn } from \"../../utils/cn\";\nimport { dataDisabled, dataInvalid } from \"../../utils/data-attributes\";\nimport { mergeProps } from \"../../utils/merge-props\";\nimport { Label } from \"../label/label\";\nimport { fieldStyles } from \"./field.styles\";\nimport type { FieldContext, FieldProps } from \"./field.types\";\nimport { runWithFieldContext } from \"./field-context\";\n\nconst isFnChild = (children: FieldProps[\"children\"]): children is (ctx: FieldContext) => Child =>\n typeof children === \"function\";\n\nexport const Field = (props: FieldProps): Child => {\n const ui = getUIContextOrDefault();\n const slice = ui.theme.components?.field;\n const headless = props.headless ?? ui.headless ?? ui.theme.headless ?? false;\n\n const themeDefaults: Record<string, unknown> = {\n ...slice?.defaultProps,\n };\n\n if (!headless) {\n if (slice?.baseClass) themeDefaults.className = cn(themeDefaults.className as any, slice.baseClass);\n if (slice?.className) themeDefaults.className = cn(themeDefaults.className as any, slice.className);\n }\n\n const merged = mergeProps(undefined, themeDefaults, props as any) as FieldProps & Record<string, unknown>;\n\n const id = merged.id ?? createId(\"field\");\n const inputId = createId(`${id}-input`);\n const labelId = createId(`${id}-label`);\n const descriptionId = merged.description ? createId(`${id}-description`) : undefined;\n const errorId = merged.error ? createId(`${id}-error`) : undefined;\n\n const invalid = Boolean(merged.invalid || merged.error);\n const disabled = Boolean(merged.disabled);\n const required = Boolean(merged.required);\n\n const describedBy = [descriptionId, errorId].filter(Boolean).join(\" \") || undefined;\n\n const ctx: FieldContext = {\n id,\n inputId,\n labelId,\n descriptionId,\n errorId,\n\n invalid,\n disabled,\n required,\n\n inputProps: {\n id: inputId,\n \"aria-labelledby\": labelId,\n \"aria-describedby\": describedBy,\n \"aria-invalid\": invalid ? \"true\" : undefined,\n \"aria-required\": required ? \"true\" : undefined,\n required: required || undefined,\n disabled: disabled || undefined,\n invalid: invalid || undefined,\n },\n\n labelProps: {\n id: labelId,\n for: inputId,\n required: required || undefined,\n disabled: disabled || undefined,\n invalid: invalid || undefined,\n },\n\n descriptionProps: descriptionId ? { id: descriptionId } : undefined,\n errorProps: errorId ? { id: errorId, role: \"alert\" } : undefined,\n };\n\n const rootClass = headless\n ? undefined\n : cn(fieldStyles.root(), merged.className as string | undefined, merged.class as string | undefined);\n\n const content = isFnChild(merged.children) ? merged.children(ctx) : merged.children;\n\n return runWithFieldContext(ctx, () =>\n h(\n \"div\",\n {\n className: rootClass,\n class: rootClass,\n ...dataInvalid(invalid),\n ...dataDisabled(disabled),\n ...(required ? { \"data-required\": \"\" } : {}),\n } as any,\n [\n merged.label\n ? Label({\n ...ctx.labelProps,\n headless,\n children: merged.label,\n } as any)\n : null,\n\n content,\n\n merged.description\n ? h(\n \"div\",\n {\n id: descriptionId,\n className: headless ? undefined : fieldStyles.description(),\n } as any,\n merged.description as Child,\n )\n : null,\n\n merged.error\n ? h(\n \"div\",\n {\n id: errorId,\n role: \"alert\",\n className: headless ? undefined : fieldStyles.error(),\n } as any,\n merged.error as Child,\n )\n : null,\n ],\n ),\n );\n};\n\n","import { mergeProps } from \"../../utils/merge-props\";\nimport { getFieldContext } from \"./field-context\";\n\n/**\n * Merges {@link Field} context a11y props with control-specific props (Input, Textarea, …).\n *\n * @example\n * ```ts\n * Field({\n * label: \"Email\",\n * children: (ctx) =>\n * Input(mergeFieldControlProps(ctx.inputProps, {\n * value: email.value(),\n * onInput: (e) => email.set(e.currentTarget.value),\n * })),\n * });\n * ```\n */\nexport const mergeFieldControlProps = <T extends Record<string, unknown>>(\n base: T,\n overrides?: Record<string, unknown>,\n): T => {\n const ctx = getFieldContext();\n if (!ctx) {\n return mergeProps(undefined, base, overrides ?? {}) as T;\n }\n return mergeProps(ctx.inputProps, base, overrides ?? {}) as T;\n};\n","import { tv } from \"../../theme/variants\";\n\nexport const checkboxStyles = tv({\n base: [\n \"shrink-0 cursor-pointer appearance-none rounded border border-zinc-400 bg-white\",\n \"transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-zinc-500\",\n \"checked:border-zinc-900 checked:bg-zinc-900\",\n \"indeterminate:border-zinc-500 indeterminate:bg-zinc-500\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50\",\n \"data-[invalid]:border-red-500 data-[invalid]:ring-red-500\",\n \"data-[indeterminate]:border-zinc-500 data-[indeterminate]:bg-zinc-500\",\n ].join(\" \"),\n variants: {\n size: {\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n","import { h } from \"@echojs-ecosystem/hyperdom\";\n\nimport { createUIComponent } from \"../../core/component\";\nimport { ariaBool } from \"../../core/aria\";\nimport { dataDisabled, dataInvalid } from \"../../utils/data-attributes\";\nimport { checkboxStyles } from \"./checkbox.styles\";\nimport type { CheckboxProps } from \"./checkbox.types\";\n\nconst INTERNAL_KEYS = new Set([\n \"size\",\n \"indeterminate\",\n \"invalid\",\n \"disabled\",\n \"checked\",\n \"defaultChecked\",\n \"required\",\n \"headless\",\n \"children\",\n \"className\",\n \"class\",\n]);\n\nconst pickDomProps = (props: Record<string, unknown>): Record<string, unknown> => {\n const out: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(props)) {\n if (!INTERNAL_KEYS.has(key)) out[key] = value;\n }\n return out;\n};\n\nexport const Checkbox = createUIComponent<CheckboxProps, HTMLInputElement>({\n name: \"Checkbox\",\n defaultTag: \"input\",\n defaultProps: {\n size: \"md\",\n },\n variants: checkboxStyles,\n render: ({ props, headless, className }) => {\n const {\n checked,\n defaultChecked,\n indeterminate = false,\n disabled,\n invalid,\n required,\n ...rest\n } = props as CheckboxProps & Record<string, unknown>;\n\n const domProps = pickDomProps(rest as Record<string, unknown>);\n const visualClass = headless ? undefined : className;\n\n return h(\n \"input\",\n {\n ...domProps,\n type: \"checkbox\",\n checked,\n defaultChecked,\n disabled,\n required,\n indeterminate,\n \"aria-checked\": indeterminate\n ? \"mixed\"\n : checked !== undefined\n ? ariaBool(Boolean(checked))\n : undefined,\n \"aria-invalid\": invalid ? \"true\" : undefined,\n \"aria-required\": required ? \"true\" : undefined,\n ...dataDisabled(Boolean(disabled)),\n ...dataInvalid(Boolean(invalid)),\n ...(indeterminate ? { \"data-indeterminate\": \"\" } : {}),\n className: visualClass,\n class: visualClass,\n } as any,\n );\n },\n});\n"]}
@@ -0,0 +1,5 @@
1
+ export { I as InputMask, d as InputMaskProps } from './index-BhC5sVej.js';
2
+ import '@echojs-ecosystem/hyperdom';
3
+ import './field.types-BSyhu0Cf.js';
4
+ import './types-CSHcGa_F.js';
5
+ import './cn-rGlUI2mx.js';