@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/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/data-attributes.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"],"names":["h"],"mappings":"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","file":"icon-button.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","/**\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 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","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"]}
@@ -0,0 +1,35 @@
1
+ import * as _echojs_ecosystem_hyperdom from '@echojs-ecosystem/hyperdom';
2
+ import { I as InputFieldProps } from './field.types-BSyhu0Cf.js';
3
+
4
+ type MaskSlotKind = "9" | "a" | "*";
5
+ type MaskToken = {
6
+ type: "literal";
7
+ char: string;
8
+ } | {
9
+ type: "slot";
10
+ kind: MaskSlotKind;
11
+ };
12
+ type MaskPreset = "phone" | "cpf" | "cnpj" | "date" | "cep" | "time" | "credit-card";
13
+ type MaskPattern = string | MaskPreset;
14
+ type MaskValue = {
15
+ masked: string;
16
+ unmasked: string;
17
+ };
18
+ type AttachInputMaskOptions = {
19
+ mask: MaskPattern;
20
+ onValueChange?: (value: MaskValue) => void;
21
+ };
22
+
23
+ type InputMaskProps = Omit<InputFieldProps, "type" | "value" | "defaultValue"> & {
24
+ mask: MaskPattern;
25
+ value?: string;
26
+ defaultValue?: string;
27
+ onMaskValueChange?: (value: {
28
+ masked: string;
29
+ unmasked: string;
30
+ }) => void;
31
+ };
32
+
33
+ declare const InputMask: (props: InputMaskProps) => _echojs_ecosystem_hyperdom.Child;
34
+
35
+ export { type AttachInputMaskOptions as A, InputMask as I, type MaskToken as M, type MaskValue as a, type MaskPreset as b, type MaskPattern as c, type InputMaskProps as d };
@@ -0,0 +1,87 @@
1
+ import { Child } from '@echojs-ecosystem/hyperdom';
2
+ export { Child, Component, Props } from '@echojs-ecosystem/hyperdom';
3
+ import { UIProviderProps } from './provider.js';
4
+ export { UIProvider } from './provider.js';
5
+ export { UITokens, createTheme, defaultTheme } from './theme.js';
6
+ export { C as ComponentThemeConfig, a as CreateUIContextInput, U as UIContextValue, b as UITheme, c as createUIContextValue, g as getUIContext, d as getUIContextOrDefault, r as resetUIContextStack, e as runWithUIContext } from './theme-context-CyY95LK0.js';
7
+ import { a as TVSlotResult } from './variants-Bj38CFcH.js';
8
+ export { V as VariantProps, c as createComponentVariants, r as resolveVariantClasses } from './variants-Bj38CFcH.js';
9
+ export { C as CreateUIComponentConfig, P as PolymorphicComponentProps, a as PolymorphicProps, U as UIComponentRenderContext, b as ariaBool, c as createId, d as createUIComponent, r as renderSlot, u as useId } from './slots-D2y1YgGz.js';
10
+ export { U as UIComponentBaseProps } from './types-CSHcGa_F.js';
11
+ export { composeEventHandlers, dataDisabled, dataInvalid, dataState, mergeProps, mergeRefs } from './utils.js';
12
+ export { a as ClassDictionary, b as ClassNameMerger, C as ClassValue, c as cn, r as resetClassNameMerger, s as setClassNameMerger } from './cn-rGlUI2mx.js';
13
+ export { Portal, PortalProps, VisuallyHidden, VisuallyHiddenProps } from './primitives.js';
14
+ export { Button, ButtonVariantProps, buttonStyles, defaultButtonSpinner } from './button.js';
15
+ export { IconButton, IconButtonProps, IconButtonSize } from './icon-button.js';
16
+ export { Input, InputProps } from './input.js';
17
+ import { A as AttachInputMaskOptions, M as MaskToken, a as MaskValue, b as MaskPreset, c as MaskPattern } from './index-BhC5sVej.js';
18
+ export { I as InputMask, d as InputMaskProps } from './index-BhC5sVej.js';
19
+ export { InputOtp, InputOtpProps } from './input-otp.js';
20
+ export { InputTags, InputTagsProps } from './input-tags.js';
21
+ export { I as InputFieldProps, a as InputSize, b as InputVariant } from './field.types-BSyhu0Cf.js';
22
+ export { Textarea, TextareaProps, TextareaResize, TextareaSize, TextareaVariant } from './textarea.js';
23
+ export { Label, LabelProps } from './label.js';
24
+ export { Field, FieldContext, FieldProps, getFieldContext, mergeFieldControlProps } from './field.js';
25
+ export { Checkbox, CheckboxProps, CheckboxSize, CheckboxVariantProps } from './checkbox.js';
26
+ export { B as ButtonProps, b as ButtonRadius, a as ButtonSize, c as ButtonVariant } from './button.types-B0SrEYRV.js';
27
+
28
+ type UiProviderOptions = Omit<UIProviderProps, "children">;
29
+ /** @deprecated Use {@link UiProviderOptions} */
30
+ type UiPluginOptions = UiProviderOptions;
31
+ /** Echo app provider that wraps the tree with {@link UIProvider}. */
32
+ type EchoUiProvider = {
33
+ name: "ui";
34
+ wrapRoot: (inner: () => Child) => () => Child;
35
+ };
36
+ /** @deprecated Use {@link EchoUiProvider} */
37
+ type UiPlugin = EchoUiProvider;
38
+ declare const createUiProvider: (options?: UiProviderOptions) => EchoUiProvider;
39
+ /** @deprecated Use {@link createUiProvider} */
40
+ declare const createUiPlugin: (options?: UiProviderOptions) => EchoUiProvider;
41
+ /** @deprecated Use {@link createUiProvider} */
42
+ declare const uiPlugin: (options?: UiProviderOptions) => EchoUiProvider;
43
+
44
+ /**
45
+ * Binds mask formatting to a native `<input>` (vanilla, hyperdom-friendly).
46
+ * Inspired by [use-mask-input](https://github.com/eduardoborges/use-mask-input) / Inputmask.
47
+ */
48
+ declare const attachInputMask: (input: HTMLInputElement, options: AttachInputMaskOptions) => (() => void);
49
+
50
+ /** Applies mask tokens to raw user input. */
51
+ declare const formatMaskedValue: (raw: string, tokens: MaskToken[]) => MaskValue;
52
+
53
+ /** Parses a mask pattern (`9` digit, `a` letter, `*` alphanumeric; other chars are literals). */
54
+ declare const parseMaskPattern: (pattern: string) => MaskToken[];
55
+
56
+ /** Built-in mask patterns (inspired by [use-mask-input](https://github.com/eduardoborges/use-mask-input)). */
57
+ declare const MASK_PRESETS: Record<MaskPreset, string>;
58
+ declare const resolveMaskPattern: (mask: MaskPattern) => string;
59
+
60
+ declare const inputStyles: TVSlotResult<{
61
+ slots: {
62
+ wrapper: string;
63
+ input: string;
64
+ start: string;
65
+ end: string;
66
+ };
67
+ variants: {
68
+ variant: {
69
+ outline: string;
70
+ filled: string;
71
+ ghost: string;
72
+ };
73
+ size: {
74
+ sm: string;
75
+ md: string;
76
+ lg: string;
77
+ };
78
+ };
79
+ defaultVariants: {
80
+ variant: string;
81
+ size: string;
82
+ };
83
+ } & {
84
+ slots: Record<string, string>;
85
+ }>;
86
+
87
+ export { type EchoUiProvider, MASK_PRESETS, MaskPattern, MaskPreset, MaskValue, UIProviderProps, type UiPlugin, type UiPluginOptions, type UiProviderOptions, attachInputMask, createUiPlugin, createUiProvider, formatMaskedValue, inputStyles, parseMaskPattern, resolveMaskPattern, uiPlugin };