@zellvora/ng-input 0.1.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zellvora-ng-input.mjs","sources":["../../../projects/ng-input/src/lib/engine/signal-form.ts","../../../projects/ng-input/src/lib/engine/validators.ts","../../../projects/ng-input/src/lib/core/types.ts","../../../projects/ng-input/src/lib/tokens/config.token.ts","../../../projects/ng-input/src/lib/utils/uid.ts","../../../projects/ng-input/src/lib/utils/error-messages.ts","../../../projects/ng-input/src/lib/core/control-base.ts","../../../projects/ng-input/src/lib/core/providers.ts","../../../projects/ng-input/src/lib/components/field-shell.ts","../../../projects/ng-input/src/lib/components/input.component.ts","../../../projects/ng-input/src/lib/core/base-control.ts","../../../projects/ng-input/src/lib/validators/validators.ts","../../../projects/ng-input/src/lib/components/text-control.base.ts","../../../projects/ng-input/src/lib/components/text-template.ts","../../../projects/ng-input/src/lib/components/email.component.ts","../../../projects/ng-input/src/lib/components/password.component.ts","../../../projects/ng-input/src/lib/components/number.component.ts","../../../projects/ng-input/src/lib/components/textarea.component.ts","../../../projects/ng-input/src/lib/components/datepicker.component.ts","../../../projects/ng-input/src/lib/components/timepicker.component.ts","../../../projects/ng-input/src/lib/components/select.component.ts","../../../projects/ng-input/src/lib/components/multiselect.component.ts","../../../projects/ng-input/src/lib/components/checkbox.component.ts","../../../projects/ng-input/src/lib/components/radio.component.ts","../../../projects/ng-input/src/lib/components/switch.component.ts","../../../projects/ng-input/src/lib/components/pin.component.ts","../../../projects/ng-input/src/lib/components/upload.component.ts","../../../projects/ng-input/src/lib/adapters/control-value-accessor.ts","../../../projects/ng-input/src/lib/adapters/ng-validator.ts","../../../projects/ng-input/src/public-api.ts","../../../projects/ng-input/src/zellvora-ng-input.ts"],"sourcesContent":["/**\n * Signal Form Engine — the single source of truth for the whole library.\n *\n * A form is a `WritableSignal<T>` model plus a lazily-created `ZvControl` per\n * field. Every piece of derived state (value, errors, validity, status) is a\n * `computed()`, so it recomputes automatically and never needs subscriptions,\n * `patchValue`, `setValue`, or manual change detection.\n *\n * The Reactive and Template adapters wrap *this* — they add no validation or\n * state logic of their own.\n */\nimport {\n signal,\n computed,\n effect,\n untracked,\n inject,\n Injector,\n DestroyRef,\n type Signal,\n type WritableSignal,\n} from '@angular/core';\nimport type {\n ZvErrors,\n ZvValidator,\n ZvAsyncValidator,\n ZvFieldConfig,\n ZvControlStatus,\n} from './validation.types';\n\n/** Declarative form definition: per-field validator config. */\nexport type ZvFormSchema<T> = {\n [K in keyof T]?: ZvFieldConfig<T[K], T>;\n};\n\nexport interface ZvFormOptions {\n /**\n * Injector used to register async-validation effects. Defaults to the\n * ambient injector when `createForm` is called in an injection context.\n */\n injector?: Injector;\n}\n\n/** A reactive view over one field of the form model. */\nexport interface ZvControl<V> {\n readonly key: string;\n /** Current value (computed view of `model()[key]`). */\n readonly value: Signal<V>;\n /** Two-way friendly model alias (same as `value`). */\n readonly model: Signal<V>;\n\n readonly disabled: Signal<boolean>;\n readonly required: Signal<boolean>;\n readonly dirty: Signal<boolean>;\n readonly touched: Signal<boolean>;\n readonly pending: Signal<boolean>;\n\n readonly errors: Signal<ZvErrors>;\n readonly valid: Signal<boolean>;\n readonly invalid: Signal<boolean>;\n readonly status: Signal<ZvControlStatus>;\n\n setValue(v: V): void;\n update(fn: (v: V) => V): void;\n setDisabled(disabled: boolean): void;\n markTouched(touched?: boolean): void;\n markDirty(dirty?: boolean): void;\n reset(): void;\n}\n\n/** The form object returned by `createForm`. */\nexport interface ZvSignalForm<T extends Record<string, unknown>> {\n /** The model — the writable source of truth. */\n readonly model: WritableSignal<T>;\n\n /** Get (and lazily create) a typed control for a field. */\n control<K extends keyof T & string>(key: K): ZvControl<T[K]>;\n\n readonly value: Signal<T>;\n readonly errors: Signal<Record<string, ZvErrors>>;\n readonly valid: Signal<boolean>;\n readonly invalid: Signal<boolean>;\n readonly dirty: Signal<boolean>;\n readonly touched: Signal<boolean>;\n readonly pending: Signal<boolean>;\n readonly status: Signal<ZvControlStatus>;\n\n patch(partial: Partial<T>): void;\n setValue(value: T): void;\n reset(value?: T): void;\n markAllTouched(): void;\n}\n\n/**\n * Create a Signal Form.\n *\n * @example\n * const form = createForm(\n * { firstName: '', email: '', age: null as number | null },\n * { email: { validators: [ZvValidators.required, ZvValidators.email] } },\n * );\n * form.control('email').invalid(); // computed signal\n */\nexport function createForm<T extends Record<string, unknown>>(\n initial: T,\n schema: ZvFormSchema<T> = {},\n options: ZvFormOptions = {},\n): ZvSignalForm<T> {\n const injector = options.injector ?? inject(Injector);\n const initialSnapshot = structuredClone(initial);\n const model = signal<T>(initial);\n const controls = new Map<string, ZvControl<unknown>>();\n\n function build<K extends keyof T & string>(key: K): ZvControl<T[K]> {\n const cfg = (schema[key] ?? {}) as ZvFieldConfig<T[K], T>;\n const validators = cfg.validators ?? [];\n const asyncValidators = cfg.asyncValidators ?? [];\n\n const disabled = signal(cfg.disabled ?? false);\n const dirty = signal(false);\n const touched = signal(false);\n\n const value = computed(() => model()[key]);\n const required = computed(() => hasRequired(validators));\n\n // Synchronous errors recompute whenever value (or referenced model) changes.\n const syncErrors = computed<ZvErrors>(() => {\n if (disabled()) return null;\n const v = value();\n const m = model();\n for (const fn of validators) {\n const err = fn(v, m);\n if (err) return err;\n }\n return null;\n });\n\n // Async errors live in their own writable signal, fed by an effect.\n const asyncErrors = signal<ZvErrors>(null);\n const pending = signal(false);\n\n if (asyncValidators.length) {\n const debounce = cfg.debounce ?? 300;\n let timer: ReturnType<typeof setTimeout> | undefined;\n let runId = 0;\n\n effect(\n (onCleanup) => {\n const v = value();\n const m = untracked(model);\n // Skip async while a sync error already fails the field.\n if (untracked(syncErrors)) {\n pending.set(false);\n asyncErrors.set(null);\n return;\n }\n pending.set(true);\n const id = ++runId;\n timer = setTimeout(async () => {\n let result: ZvErrors = null;\n for (const fn of asyncValidators) {\n const err = await fn(v, m);\n if (err) {\n result = err;\n break;\n }\n }\n if (id === runId) {\n asyncErrors.set(result);\n pending.set(false);\n }\n }, debounce);\n onCleanup(() => clearTimeout(timer));\n },\n { injector },\n );\n }\n\n const errors = computed<ZvErrors>(() => syncErrors() ?? asyncErrors());\n const valid = computed(() => !pending() && errors() === null);\n const invalid = computed(() => errors() !== null);\n const status = computed<ZvControlStatus>(() =>\n disabled() ? 'DISABLED' : pending() ? 'PENDING' : invalid() ? 'INVALID' : 'VALID',\n );\n\n const ctrl: ZvControl<T[K]> = {\n key,\n value,\n model: value,\n disabled: disabled.asReadonly(),\n required,\n dirty: dirty.asReadonly(),\n touched: touched.asReadonly(),\n pending: pending.asReadonly(),\n errors,\n valid,\n invalid,\n status,\n setValue(v) {\n model.update((m) => ({ ...m, [key]: v }));\n dirty.set(true);\n },\n update(fn) {\n model.update((m) => ({ ...m, [key]: fn(m[key]) }));\n dirty.set(true);\n },\n setDisabled(d) {\n disabled.set(d);\n },\n markTouched(t = true) {\n touched.set(t);\n },\n markDirty(d = true) {\n dirty.set(d);\n },\n reset() {\n model.update((m) => ({ ...m, [key]: structuredClone(initialSnapshot[key]) }));\n dirty.set(false);\n touched.set(false);\n },\n };\n return ctrl;\n }\n\n function control<K extends keyof T & string>(key: K): ZvControl<T[K]> {\n let c = controls.get(key) as ZvControl<T[K]> | undefined;\n if (!c) {\n c = build(key);\n controls.set(key, c as ZvControl<unknown>);\n }\n return c;\n }\n\n // Ensure every declared field has a control so aggregates see them.\n const keys = Object.keys(initial) as (keyof T & string)[];\n const all = () => keys.map((k) => control(k));\n\n const errors = computed<Record<string, ZvErrors>>(() => {\n const out: Record<string, ZvErrors> = {};\n for (const c of all()) if (c.errors()) out[c.key] = c.errors();\n return out;\n });\n const pending = computed(() => all().some((c) => c.pending()));\n const valid = computed(() => !pending() && all().every((c) => c.valid()));\n const invalid = computed(() => all().some((c) => c.invalid()));\n const dirty = computed(() => all().some((c) => c.dirty()));\n const touched = computed(() => all().some((c) => c.touched()));\n const status = computed<ZvControlStatus>(() =>\n pending() ? 'PENDING' : invalid() ? 'INVALID' : 'VALID',\n );\n\n // Cleanup map on destroy when in an injection context.\n try {\n inject(DestroyRef, { optional: true })?.onDestroy(() => controls.clear());\n } catch {\n /* called outside injection context — caller owns lifecycle */\n }\n\n return {\n model,\n control,\n value: model.asReadonly(),\n errors,\n valid,\n invalid,\n dirty,\n touched,\n pending,\n status,\n patch(partial) {\n model.update((m) => ({ ...m, ...partial }));\n },\n setValue(v) {\n model.set(v);\n },\n reset(value) {\n model.set(value ? structuredClone(value) : structuredClone(initialSnapshot));\n for (const c of all()) c.markDirty(false), c.markTouched(false);\n },\n markAllTouched() {\n for (const c of all()) c.markTouched(true);\n },\n };\n}\n\nfunction hasRequired(validators: readonly unknown[]): boolean {\n return validators.some((f) => (f as { zvRequired?: boolean }).zvRequired === true);\n}\n\nexport type { ZvValidator, ZvAsyncValidator, ZvErrors, ZvFieldConfig };\n","/**\n * Built-in signal validators.\n *\n * Each is a pure `ZvValidator` (or a factory returning one). They are shared by\n * the Signal Form Engine, and — via thin wrappers — by the Reactive and\n * Template adapters, so validation logic is written exactly once.\n */\nimport type { ZvValidator, ZvErrors } from './validation.types';\n\n/** null/undefined/'' are \"absent\" — `required` is the only thing that rejects them. */\nconst absent = (v: unknown): boolean =>\n v === null || v === undefined || v === '';\n\nconst re =\n (pattern: RegExp, key: string): ZvValidator<unknown> =>\n (v) =>\n absent(v) || pattern.test(String(v)) ? null : { [key]: true };\n\n// ---- Pattern library -------------------------------------------------------\nexport const ZV_PATTERNS = {\n email: /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/,\n phone: /^\\+?[0-9]{7,15}$/,\n mobile: /^[6-9][0-9]{9}$/, // Indian mobile\n url: /^(https?:\\/\\/)([\\w-]+\\.)+[\\w-]+(\\/[\\w./?%&=#-]*)?$/i,\n pan: /^[A-Z]{5}[0-9]{4}[A-Z]$/,\n gst: /^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z][0-9A-Z]Z[0-9A-Z]$/,\n aadhaar: /^[2-9][0-9]{11}$/,\n cvv: /^[0-9]{3,4}$/,\n passport: /^[A-PR-WY][0-9]{7}$/,\n drivingLicense: /^[A-Z]{2}[0-9]{2}\\s?[0-9]{11}$/,\n pincode: /^[1-9][0-9]{5}$/,\n ifsc: /^[A-Z]{4}0[A-Z0-9]{6}$/,\n swift: /^[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?$/,\n iban: /^[A-Z]{2}[0-9]{2}[A-Z0-9]{11,30}$/,\n time: /^([01]?\\d|2[0-3]):[0-5]\\d$/,\n password: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[^A-Za-z0-9]).{8,}$/,\n} as const;\n\nconst requiredFn: ZvValidator = (v) => {\n const empty = absent(v) || (Array.isArray(v) && v.length === 0) || v === false;\n return empty ? { required: true } : null;\n};\nconst required = Object.assign(requiredFn, { zvRequired: true });\n\nexport const ZvValidators = {\n required,\n\n email: re(ZV_PATTERNS.email, 'email'),\n phone: re(ZV_PATTERNS.phone, 'phone'),\n mobile: re(ZV_PATTERNS.mobile, 'mobile'),\n url: re(ZV_PATTERNS.url, 'url'),\n pincode: re(ZV_PATTERNS.pincode, 'pincode'),\n cvv: re(ZV_PATTERNS.cvv, 'cvv'),\n passport: re(ZV_PATTERNS.passport, 'passport'),\n drivingLicense: re(ZV_PATTERNS.drivingLicense, 'drivingLicense'),\n ifsc: re(ZV_PATTERNS.ifsc, 'ifsc'),\n swift: re(ZV_PATTERNS.swift, 'swift'),\n iban: re(ZV_PATTERNS.iban, 'iban'),\n time: re(ZV_PATTERNS.time, 'time'),\n pan: re(ZV_PATTERNS.pan, 'pan'),\n gst: re(ZV_PATTERNS.gst, 'gst'),\n\n password: re(ZV_PATTERNS.password, 'password'),\n\n pattern:\n (p: string | RegExp): ZvValidator =>\n (v) => {\n const pat = typeof p === 'string' ? new RegExp(p) : p;\n return absent(v) || pat.test(String(v)) ? null : { pattern: true };\n },\n regex: (p: string | RegExp) => ZvValidators.pattern(p),\n\n min:\n (n: number): ZvValidator<number | string | null> =>\n (v) =>\n absent(v) || Number(v) >= n ? null : { min: { min: n, actual: Number(v) } },\n max:\n (n: number): ZvValidator<number | string | null> =>\n (v) =>\n absent(v) || Number(v) <= n ? null : { max: { max: n, actual: Number(v) } },\n\n minLength:\n (n: number): ZvValidator =>\n (v) => {\n const len = absent(v) ? 0 : String(v).length;\n return absent(v) || len >= n\n ? null\n : { minlength: { requiredLength: n, actualLength: len } };\n },\n maxLength:\n (n: number): ZvValidator =>\n (v) => {\n const len = absent(v) ? 0 : String(v).length;\n return len <= n\n ? null\n : { maxlength: { requiredLength: n, actualLength: len } };\n },\n\n date: ((v: unknown): ZvErrors =>\n absent(v) || !isNaN(new Date(v as string).getTime())\n ? null\n : { date: true }) as ZvValidator,\n\n /** Minimum whole-year age relative to today. */\n age:\n (minYears: number): ZvValidator =>\n (v) => {\n if (absent(v)) return null;\n const dob = new Date(v as string);\n if (isNaN(dob.getTime())) return { date: true };\n const now = new Date();\n let age = now.getFullYear() - dob.getFullYear();\n const m = now.getMonth() - dob.getMonth();\n if (m < 0 || (m === 0 && now.getDate() < dob.getDate())) age--;\n return age >= minYears ? null : { age: { required: minYears, actual: age } };\n },\n\n aadhaar: ((v: unknown): ZvErrors => {\n if (absent(v)) return null;\n const s = String(v).replace(/\\s/g, '');\n return ZV_PATTERNS.aadhaar.test(s) && verhoeff(s) ? null : { aadhaar: true };\n }) as ZvValidator,\n\n creditCard: ((v: unknown): ZvErrors => {\n if (absent(v)) return null;\n const s = String(v).replace(/[\\s-]/g, '');\n return /^[0-9]{12,19}$/.test(s) && luhn(s) ? null : { creditCard: true };\n }) as ZvValidator,\n\n /** Max file size in bytes (works on File | File[]). */\n fileSize:\n (maxBytes: number): ZvValidator =>\n (v) => {\n const files = toFiles(v);\n const big = files.find((f) => f.size > maxBytes);\n return big ? { fileSize: { max: maxBytes, actual: big.size } } : null;\n },\n\n /** Allowed MIME types (e.g. ['image/png','application/pdf']). */\n mimeType:\n (allowed: string[]): ZvValidator =>\n (v) => {\n const bad = toFiles(v).find(\n (f) => !allowed.some((a) => matchMime(f.type, a)),\n );\n return bad ? { mimeType: { allowed, actual: bad.type } } : null;\n },\n\n /** Image max width/height (async-free: relies on already-measured dims). */\n imageSize:\n (maxW: number, maxH: number): ZvValidator<{ width: number; height: number } | null> =>\n (v) =>\n !v || (v.width <= maxW && v.height <= maxH)\n ? null\n : { imageSize: { maxW, maxH, actual: v } },\n\n /**\n * Cross-field: a control validator that compares against another model key.\n * Use as a field validator; it receives the full model as 2nd arg.\n */\n confirm:\n (otherField: string, key = 'mismatch'): ZvValidator =>\n (value, model) =>\n value === (model as Record<string, unknown>)[otherField]\n ? null\n : { [key]: true },\n} as const;\n\n// ---- File helpers ----------------------------------------------------------\nfunction toFiles(v: unknown): File[] {\n if (!v) return [];\n if (v instanceof File) return [v];\n if (Array.isArray(v)) return v.filter((x): x is File => x instanceof File);\n if (typeof FileList !== 'undefined' && v instanceof FileList)\n return Array.from(v);\n return [];\n}\nfunction matchMime(actual: string, allowed: string): boolean {\n if (allowed.endsWith('/*')) return actual.startsWith(allowed.slice(0, -1));\n return actual === allowed;\n}\n\n// ---- Checksums -------------------------------------------------------------\nfunction luhn(num: string): boolean {\n let sum = 0;\n let alt = false;\n for (let i = num.length - 1; i >= 0; i--) {\n let d = +num[i];\n if (alt) {\n d *= 2;\n if (d > 9) d -= 9;\n }\n sum += d;\n alt = !alt;\n }\n return sum % 10 === 0;\n}\n\nconst D = [\n [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 0, 6, 7, 8, 9, 5],\n [2, 3, 4, 0, 1, 7, 8, 9, 5, 6], [3, 4, 0, 1, 2, 8, 9, 5, 6, 7],\n [4, 0, 1, 2, 3, 9, 5, 6, 7, 8], [5, 9, 8, 7, 6, 0, 4, 3, 2, 1],\n [6, 5, 9, 8, 7, 1, 0, 4, 3, 2], [7, 6, 5, 9, 8, 2, 1, 0, 4, 3],\n [8, 7, 6, 5, 9, 3, 2, 1, 0, 4], [9, 8, 7, 6, 5, 4, 3, 2, 1, 0],\n];\nconst P = [\n [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 5, 7, 6, 2, 8, 3, 0, 9, 4],\n [5, 8, 0, 3, 7, 9, 6, 1, 4, 2], [8, 9, 1, 6, 0, 4, 3, 5, 2, 7],\n [9, 4, 5, 3, 1, 2, 6, 8, 7, 0], [4, 2, 8, 6, 5, 7, 3, 9, 0, 1],\n [2, 7, 9, 3, 8, 0, 6, 4, 1, 5], [7, 0, 4, 6, 9, 1, 3, 2, 5, 8],\n];\nfunction verhoeff(num: string): boolean {\n let c = 0;\n const digits = num.split('').reverse().map(Number);\n for (let i = 0; i < digits.length; i++) c = D[c][P[i % 8][digits[i]]];\n return c === 0;\n}\n","/** Shared types for all Zellvora form controls. */\n\nexport type ZvAppearance = 'outlined' | 'filled' | 'standard';\nexport type ZvSize = 'sm' | 'md' | 'lg' | 'compact' | 'dense';\nexport type ZvTheme = 'material' | 'bootstrap' | 'custom';\nexport type ZvColor = 'primary' | 'accent' | 'warn' | 'success' | 'info';\nexport type ZvStatus = 'error' | 'success' | 'warning' | 'info' | null;\nexport type ZvDir = 'ltr' | 'rtl';\n\n/** A selectable option for select / multiselect / radio. */\nexport interface ZvOption<T = unknown> {\n label: string;\n value: T;\n disabled?: boolean;\n icon?: string;\n group?: string;\n}\n\n/** Resolved component-wide defaults provided via ZV_INPUT_CONFIG. */\nexport interface ZvInputConfig {\n appearance: ZvAppearance;\n size: ZvSize;\n theme: ZvTheme;\n color: ZvColor;\n floatingLabel: boolean;\n dir: ZvDir;\n clearable: boolean;\n /** Debounce (ms) applied to value emissions for async/server validators. */\n debounce: number;\n}\n\nexport const ZV_DEFAULT_CONFIG: ZvInputConfig = {\n appearance: 'outlined',\n size: 'md',\n theme: 'material',\n color: 'primary',\n floatingLabel: true,\n dir: 'ltr',\n clearable: false,\n debounce: 300,\n};\n","import { InjectionToken, Provider } from '@angular/core';\nimport { ZvInputConfig, ZV_DEFAULT_CONFIG } from '../core/types';\n\n/**\n * App-wide defaults for every Zellvora control. Override at root or per\n * lazy-loaded scope. Tree-shakable: the default is the bundled constant.\n */\nexport const ZV_INPUT_CONFIG = new InjectionToken<ZvInputConfig>(\n 'ZV_INPUT_CONFIG',\n { providedIn: 'root', factory: () => ZV_DEFAULT_CONFIG },\n);\n\n/** Provide partial overrides without restating the full config. */\nexport function provideZvInput(overrides: Partial<ZvInputConfig> = {}): Provider {\n return {\n provide: ZV_INPUT_CONFIG,\n useValue: { ...ZV_DEFAULT_CONFIG, ...overrides },\n };\n}\n","let counter = 0;\n/** Small, SSR-safe unique id (no crypto / DOM dependency). */\nexport function uid(): string {\n return (++counter).toString(36);\n}\n","import type { ZvErrors } from '../engine/validation.types';\n\n/** Default human-readable messages for built-in validator error keys. */\nexport const ZV_DEFAULT_MESSAGES: Record<string, (info: unknown) => string> = {\n required: () => 'This field is required.',\n email: () => 'Enter a valid email address.',\n phone: () => 'Enter a valid phone number.',\n mobile: () => 'Enter a valid 10-digit mobile number.',\n url: () => 'Enter a valid URL.',\n password: () => 'Min 8 chars with upper, lower, number and symbol.',\n pattern: () => 'Value does not match the required format.',\n min: (i) => `Must be at least ${(i as { min: number }).min}.`,\n max: (i) => `Must be at most ${(i as { max: number }).max}.`,\n minlength: (i) => `Min length is ${(i as { requiredLength: number }).requiredLength}.`,\n maxlength: (i) => `Max length is ${(i as { requiredLength: number }).requiredLength}.`,\n date: () => 'Enter a valid date.',\n time: () => 'Enter a valid time.',\n age: (i) => `Must be at least ${(i as { required: number }).required} years old.`,\n pan: () => 'Enter a valid PAN.',\n gst: () => 'Enter a valid GSTIN.',\n aadhaar: () => 'Enter a valid Aadhaar number.',\n passport: () => 'Enter a valid passport number.',\n drivingLicense: () => 'Enter a valid driving licence number.',\n pincode: () => 'Enter a valid PIN code.',\n creditCard: () => 'Enter a valid card number.',\n cvv: () => 'Enter a valid CVV.',\n ifsc: () => 'Enter a valid IFSC code.',\n swift: () => 'Enter a valid SWIFT/BIC code.',\n iban: () => 'Enter a valid IBAN.',\n fileSize: () => 'File is too large.',\n mimeType: () => 'File type is not allowed.',\n imageSize: () => 'Image dimensions are too large.',\n mismatch: () => 'Values do not match.',\n};\n\n/** Resolve the first error in `errors` to a display string. */\nexport function formatError(\n errors: ZvErrors,\n overrides?: Record<string, string>,\n): string | null {\n if (!errors) return null;\n const [key, info] = Object.entries(errors)[0];\n if (overrides?.[key]) return overrides[key];\n return ZV_DEFAULT_MESSAGES[key]?.(info) ?? 'Invalid value.';\n}\n","/**\n * SignalControlAccessor — signal-first base for every Zellvora control.\n *\n * 100% signal API: `input()`, `model()`, `output()`. No `@Input`/`@Output`\n * decorators, no `ControlValueAccessor`, no `FormControl`. A control can bind\n * in three interchangeable ways, all backed by the same internal signals:\n *\n * 1. Standalone two-way: <zv-input [(value)]=\"name\" />\n * 2. Signal Forms: <zv-input [form]=\"form\" controlName=\"name\" />\n * 3. Reactive/Template: via the adapter directives (zvControl / ngModel)\n *\n * The connection to the Signal Form Engine is a single bidirectional `effect`\n * pair: model -> control on read, control -> model on write.\n */\nimport {\n Directive,\n computed,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n booleanAttribute,\n numberAttribute,\n type Signal,\n} from '@angular/core';\nimport { ZV_INPUT_CONFIG } from '../tokens/config.token';\nimport { uid } from '../utils/uid';\nimport { formatError } from '../utils/error-messages';\nimport type {\n ZvAppearance,\n ZvColor,\n ZvSize,\n ZvStatus,\n ZvTheme,\n ZvDir,\n} from './types';\nimport type { ZvSignalForm, ZvControl } from '../engine/signal-form';\nimport type { ZvErrors, ZvControlStatus } from '../engine/validation.types';\n\n@Directive({ host: { '[class]': 'hostClasses()', '[attr.dir]': 'dir()' } })\nexport abstract class SignalControlAccessor<T = unknown> {\n protected readonly config = inject(ZV_INPUT_CONFIG);\n\n /** Override per concrete control: 'input' | 'select' | ... */\n abstract readonly controlType: string;\n\n // ---- Identity ----------------------------------------------------------\n readonly id = signal(`zv-${uid()}`);\n readonly name = input<string>();\n\n // ---- Signal Forms binding ----------------------------------------------\n /** The Signal Form to bind to (use with `controlName`). */\n readonly form = input<ZvSignalForm<Record<string, unknown>>>();\n readonly controlName = input<string>();\n\n // ---- Two-way model (standalone use): [(value)] and [(model)] ------------\n readonly value = model<T | null>(null);\n /** Alias of `value` for `[(model)]` ergonomics. */\n readonly modelValue = model<T | null>(null, { alias: 'model' });\n\n // ---- Developer-experience inputs ---------------------------------------\n readonly label = input<string>();\n readonly placeholder = input('');\n readonly hint = input<string>();\n readonly helperText = input<string>();\n readonly errorMessage = input<string>();\n readonly prefixIcon = input<string>();\n readonly suffixIcon = input<string>();\n readonly tooltip = input<string>();\n readonly ariaLabel = input<string>();\n readonly autocomplete = input('off');\n readonly loadingText = input<string>();\n readonly tabIndex = input(0, { transform: numberAttribute });\n\n readonly clearable = input(this.config.clearable, { transform: booleanAttribute });\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly requiredInput = input(false, { transform: booleanAttribute, alias: 'required' });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly floatingLabel = input(this.config.floatingLabel, { transform: booleanAttribute });\n\n readonly minlength = input<number | undefined>(undefined, { transform: numberAttribute });\n readonly maxlength = input<number | undefined>(undefined, { transform: numberAttribute });\n readonly min = input<number | string | Date>();\n readonly max = input<number | string | Date>();\n readonly mask = input<string>();\n\n readonly appearance = input<ZvAppearance>(this.config.appearance);\n readonly size = input<ZvSize>(this.config.size);\n readonly theme = input<ZvTheme>(this.config.theme);\n readonly color = input<ZvColor>(this.config.color);\n readonly dir = input<ZvDir>(this.config.dir);\n readonly variant = input<string>();\n readonly density = input<string>();\n readonly rounded = input(false, { transform: booleanAttribute });\n readonly statusInput = input<ZvStatus>(null, { alias: 'status' });\n\n // ---- Disabled: input that seeds an internal writable signal ------------\n readonly disabledInput = input(false, { transform: booleanAttribute, alias: 'disabled' });\n private readonly _disabledOverride = signal<boolean | null>(null);\n\n // ---- Native-parity events ----------------------------------------------\n // `value`/`model` models auto-emit `valueChange`/`modelChange`.\n readonly change = output<T | null>();\n readonly inputEvent = output<T | null>({ alias: 'input' });\n readonly focusEvent = output<FocusEvent>({ alias: 'focus' });\n readonly blurEvent = output<FocusEvent>({ alias: 'blur' });\n\n // ---- Internal reactive state -------------------------------------------\n private readonly _touched = signal(false);\n private readonly _focused = signal(false);\n private readonly _dirty = signal(false);\n\n /** The bound engine control, if `[form] + controlName` are set. */\n protected readonly boundControl = computed<ZvControl<T> | null>(() => {\n const f = this.form();\n const key = this.controlName();\n if (!f || !key) return null;\n return f.control(key as never) as unknown as ZvControl<T>;\n });\n\n // ---- Public reactive surface (the spec's control.* signals) ------------\n readonly current: Signal<T | null> = computed(() => {\n const bc = this.boundControl();\n return bc ? (bc.value() as T | null) : this.value();\n });\n\n readonly disabled = computed(() => {\n const o = this._disabledOverride();\n if (o !== null) return o;\n return this.boundControl()?.disabled() ?? this.disabledInput();\n });\n\n /** Errors injected by the Reactive/Template adapter (no bound signal form). */\n private readonly _externalErrors = signal<ZvErrors>(null);\n readonly errors: Signal<ZvErrors> = computed(\n () => this.boundControl()?.errors() ?? this._externalErrors(),\n );\n readonly valid = computed(() => this.boundControl()?.valid() ?? this.errors() === null);\n readonly invalid = computed(() => !this.valid());\n readonly pending = computed(() => this.boundControl()?.pending() ?? false);\n readonly dirty = computed(() => this.boundControl()?.dirty() ?? this._dirty());\n readonly touched = computed(() => this.boundControl()?.touched() ?? this._touched());\n readonly focused = this._focused.asReadonly();\n readonly required = computed(\n () => this.boundControl()?.required() ?? this.requiredInput(),\n );\n readonly status: Signal<ZvControlStatus> = computed(\n () => this.boundControl()?.status() ?? (this.disabled() ? 'DISABLED' : this.invalid() ? 'INVALID' : 'VALID'),\n );\n\n /** Show validation error only once the field has been interacted with. */\n readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n /** Resolved error text: explicit `errorMessage` wins, else the first error. */\n readonly errorText = computed(\n () => this.errorMessage() ?? formatError(this.errors()),\n );\n\n readonly hasValue = computed(() => {\n const v = this.current();\n return v !== null && v !== undefined && (v as unknown) !== '';\n });\n\n constructor() {\n // Keep `value` and `model` aliases in sync for standalone two-way use.\n effect(() => this.modelValue.set(this.value()));\n effect(() => {\n const m = this.modelValue();\n if (m !== this.value()) this.value.set(m);\n });\n }\n\n // ---- Mutators used by concrete templates -------------------------------\n protected commit(v: T | null, kind: 'input' | 'change'): void {\n const bc = this.boundControl();\n if (bc) bc.setValue(v as T);\n // Always update the two-way `value` model so `valueChange` fires in every mode.\n this.value.set(v);\n this._dirty.set(true);\n this.committed.emit(v);\n if (kind === 'input') this.inputEvent.emit(v);\n else this.change.emit(v);\n }\n\n protected onFocus(ev: FocusEvent): void {\n this._focused.set(true);\n this.focusEvent.emit(ev);\n }\n\n protected onBlur(ev: FocusEvent): void {\n this._focused.set(false);\n this._touched.set(true);\n this.boundControl()?.markTouched(true);\n this.blurEvent.emit(ev);\n }\n\n setDisabled(disabled: boolean): void {\n this._disabledOverride.set(disabled);\n this.boundControl()?.setDisabled(disabled);\n }\n\n // ---- Adapter hooks (used by ZvControlValueAccessor; no logic duplicated) -\n /** Accept a value from a Reactive/Template control without re-emitting. */\n acceptExternalValue(v: T | null): void {\n this.value.set(v);\n }\n /** Push validation errors computed by the adapter (same ZvValidators). */\n setExternalErrors(e: ZvErrors): void {\n this._externalErrors.set(e);\n }\n /** Mark touched from the adapter (e.g. on blur). */\n markTouched(): void {\n this.onBlur(new FocusEvent('blur'));\n }\n /** Subscribe to value commits (adapter -> NgControl onChange). */\n readonly committed = output<T | null>({ alias: 'zvCommitted' });\n\n clear(): void {\n this.commit(null, 'change');\n }\n\n protected readonly hostClasses = computed(() => {\n const cls = [\n `zv-${this.controlType}`,\n `zv-appearance-${this.appearance()}`,\n `zv-size-${this.size()}`,\n `zv-theme-${this.theme()}`,\n `zv-color-${this.color()}`,\n ];\n if (this.dir() === 'rtl') cls.push('zv-rtl');\n if (this.disabled()) cls.push('zv-disabled');\n if (this.readonly()) cls.push('zv-readonly');\n if (this.focused()) cls.push('zv-focused');\n if (this.hasValue()) cls.push('zv-has-value');\n if (this.loading()) cls.push('zv-loading');\n if (this.floatingLabel()) cls.push('zv-floating');\n if (this.rounded()) cls.push('zv-rounded');\n if (this.showError()) cls.push('zv-invalid');\n const s = this.statusInput();\n if (s) cls.push(`zv-status-${s}`);\n return cls.join(' ');\n });\n}\n","import { Type, forwardRef, Provider } from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n NG_ASYNC_VALIDATORS,\n} from '@angular/forms';\nimport { SignalControlAccessor } from './control-base';\n\n/**\n * Alias a concrete control to the abstract `SignalControlAccessor` token so the\n * Reactive/Template adapter directive can inject it from the same element.\n */\nexport function provideSignalControl(cmp: Type<unknown>): Provider {\n return { provide: SignalControlAccessor, useExisting: forwardRef(() => cmp) };\n}\n\n/**\n * Standard provider trio every control registers so it integrates with\n * Template-Driven and Reactive forms. `async` is opt-in.\n */\nexport function controlProviders(\n cmp: Type<unknown>,\n opts: { async?: boolean } = {},\n): Provider[] {\n const providers: Provider[] = [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => cmp), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => cmp), multi: true },\n ];\n if (opts.async) {\n providers.push({\n provide: NG_ASYNC_VALIDATORS,\n useExisting: forwardRef(() => cmp),\n multi: true,\n });\n }\n return providers;\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n} from '@angular/core';\n\n/**\n * Presentational wrapper: label, prefix/suffix icons, hint/error row,\n * loading + clear affordances. Controls project their native element into it.\n * Signal-first and OnPush — it never triggers extra change detection.\n */\n@Component({\n selector: 'zv-field-shell',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (label()) {\n <label class=\"zv-label\" [attr.for]=\"for()\">\n {{ label() }}@if (required()) {<span class=\"zv-req\" aria-hidden=\"true\">*</span>}\n </label>\n }\n <div class=\"zv-field\" [class.zv-field--invalid]=\"invalid()\">\n @if (prefixIcon()) {\n <span class=\"zv-affix zv-prefix\" aria-hidden=\"true\"><i [class]=\"prefixIcon()\"></i></span>\n }\n\n <ng-content></ng-content>\n\n @if (loading()) {\n <span class=\"zv-spinner\" role=\"status\" [attr.aria-label]=\"loadingText() || 'Loading'\"></span>\n } @else if (clearable() && hasValue() && !disabled() && !readonly()) {\n <button type=\"button\" class=\"zv-clear\" (click)=\"clear.emit()\" aria-label=\"Clear\" tabindex=\"-1\">×</button>\n }\n\n @if (suffixIcon()) {\n <span class=\"zv-affix zv-suffix\" aria-hidden=\"true\"><i [class]=\"suffixIcon()\"></i></span>\n }\n </div>\n\n @if (invalid() && errorText()) {\n <p class=\"zv-error\" role=\"alert\">{{ errorText() }}</p>\n } @else if (hint() || helperText()) {\n <p class=\"zv-hint\">{{ hint() || helperText() }}</p>\n }\n `,\n styleUrls: ['./field-shell.scss'],\n})\nexport class ZvFieldShell {\n readonly for = input<string>();\n readonly label = input<string>();\n readonly required = input(false);\n readonly hint = input<string>();\n readonly helperText = input<string>();\n readonly errorText = input<string | null>();\n readonly invalid = input(false);\n readonly prefixIcon = input<string>();\n readonly suffixIcon = input<string>();\n readonly loading = input(false);\n readonly loadingText = input<string>();\n readonly clearable = input(false);\n readonly hasValue = input(false);\n readonly disabled = input(false);\n readonly readonly = input(false);\n readonly clear = output<void>();\n}\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\nimport { SignalControlAccessor } from '../core/control-base';\nimport { provideSignalControl } from '../core/providers';\nimport { ZvFieldShell } from './field-shell';\n\n/**\n * Single-line text input. Signal-first: binds via `[(value)]`, or via a Signal\n * Form using `[form]` + `controlName`.\n *\n * @example <zv-input [form]=\"form\" controlName=\"firstName\" label=\"First name\" />\n */\n@Component({\n selector: 'zv-input',\n imports: [ZvFieldShell],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [provideSignalControl(ZvInput)],\n template: `\n <zv-field-shell\n [for]=\"id()\"\n [label]=\"label()\"\n [required]=\"required()\"\n [hint]=\"hint()\"\n [helperText]=\"helperText()\"\n [errorText]=\"errorText()\"\n [invalid]=\"showError()\"\n [prefixIcon]=\"prefixIcon()\"\n [suffixIcon]=\"suffixIcon()\"\n [loading]=\"loading()\"\n [loadingText]=\"loadingText()\"\n [clearable]=\"clearable()\"\n [hasValue]=\"hasValue()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n (clear)=\"clear()\"\n >\n <input\n [id]=\"id()\"\n [type]=\"inputType()\"\n [name]=\"name()\"\n [value]=\"current() ?? ''\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n [attr.maxlength]=\"maxlength()\"\n [attr.minlength]=\"minlength()\"\n [attr.autocomplete]=\"autocomplete()\"\n [attr.aria-label]=\"ariaLabel() || label()\"\n [attr.aria-invalid]=\"showError()\"\n [attr.aria-required]=\"required()\"\n [attr.title]=\"tooltip()\"\n [tabIndex]=\"tabIndex()\"\n (input)=\"commit($any($event.target).value, 'input')\"\n (change)=\"commit($any($event.target).value, 'change')\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n </zv-field-shell>\n `,\n})\nexport class ZvInput extends SignalControlAccessor<string> {\n readonly controlType = 'input';\n readonly inputType = input('text');\n}\n","import {\n Directive,\n EventEmitter,\n inject,\n Input,\n Output,\n computed,\n signal,\n effect,\n DestroyRef,\n ChangeDetectorRef,\n booleanAttribute,\n numberAttribute,\n WritableSignal,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n Validator,\n AbstractControl,\n ValidationErrors,\n ValidatorFn,\n} from '@angular/forms';\nimport { ZV_INPUT_CONFIG } from '../tokens/config.token';\nimport {\n ZvAppearance,\n ZvColor,\n ZvSize,\n ZvStatus,\n ZvTheme,\n ZvDir,\n} from './types';\nimport { uid } from '../utils/uid';\n\n/**\n * Base class shared by every Zellvora control.\n *\n * Implements `ControlValueAccessor` + `Validator` so the same component works\n * unchanged across Template-Driven (`ngModel`), Reactive (`formControlName`)\n * and Signal Forms (via the `zvSignal` directive). Internal state is held in\n * signals, so views can run fully `OnPush` with no manual `markForCheck`.\n *\n * Concrete controls extend this, set `controlType`, and bind `[value]` /\n * `(handleInput)` / `(handleBlur)` in their template.\n */\n@Directive()\nexport abstract class ZvBaseControl<T = unknown>\n implements ControlValueAccessor, Validator\n{\n protected readonly config = inject(ZV_INPUT_CONFIG);\n protected readonly cdr = inject(ChangeDetectorRef);\n protected readonly destroyRef = inject(DestroyRef);\n\n /** Override in subclass: 'input' | 'email' | 'select' ... drives styling/ARIA. */\n abstract readonly controlType: string;\n\n // ---- Identity -----------------------------------------------------------\n get id(): string {\n return `zv-${this.controlType ?? 'ctrl'}-${uid()}`;\n }\n @Input() name?: string;\n\n // ---- Developer-experience inputs ---------------------------------------\n @Input() label?: string;\n @Input() placeholder = '';\n @Input() hint?: string;\n @Input() helperText?: string;\n @Input() errorMessage?: string;\n @Input() prefixIcon?: string;\n @Input() suffixIcon?: string;\n @Input() tooltip?: string;\n @Input() ariaLabel?: string;\n @Input() autocomplete = 'off';\n @Input() loadingText?: string;\n @Input({ transform: numberAttribute }) tabIndex = 0;\n\n // ---- Boolean state (attribute-transformed for `<zv-x clearable>`) -------\n @Input({ transform: booleanAttribute }) clearable = this.config.clearable;\n @Input({ transform: booleanAttribute }) readonly = false;\n @Input({ transform: booleanAttribute }) required = false;\n @Input({ transform: booleanAttribute }) loading = false;\n @Input({ transform: booleanAttribute }) floatingLabel = this.config.floatingLabel;\n\n // ---- Constraint inputs (also fed to validators) -------------------------\n @Input({ transform: numberAttribute }) minlength?: number;\n @Input({ transform: numberAttribute }) maxlength?: number;\n @Input() min?: number | string | Date;\n @Input() max?: number | string | Date;\n @Input() pattern?: string | RegExp;\n @Input() mask?: string;\n\n // ---- Appearance ---------------------------------------------------------\n @Input() appearance: ZvAppearance = this.config.appearance;\n @Input() size: ZvSize = this.config.size;\n @Input() theme: ZvTheme = this.config.theme;\n @Input() color: ZvColor = this.config.color;\n @Input() dir: ZvDir = this.config.dir;\n @Input() status: ZvStatus = null;\n\n // ---- Reactive internal state -------------------------------------------\n protected readonly _value = signal<T | null>(null);\n protected readonly _disabled = signal(false);\n protected readonly _touched = signal(false);\n protected readonly _focused = signal(false);\n\n /** Public readonly value signal — useful for Signal Forms & templates. */\n readonly valueSig = this._value.asReadonly();\n readonly disabledSig = this._disabled.asReadonly();\n readonly focusedSig = this._focused.asReadonly();\n\n /** Has content for floating-label / empty-state styling. */\n readonly hasValue = computed(() => {\n const v = this._value();\n return v !== null && v !== undefined && v !== '';\n });\n\n // ---- Two-way binding & native-parity events -----------------------------\n /** Enables `[(value)]`. */\n @Output() readonly valueChange = new EventEmitter<T | null>();\n @Output() readonly input = new EventEmitter<T | null>();\n @Output() readonly change = new EventEmitter<T | null>();\n @Output() readonly focus = new EventEmitter<FocusEvent>();\n @Output() readonly blur = new EventEmitter<FocusEvent>();\n\n /** `[(value)]` setter for direct (non-forms) usage. */\n @Input()\n set value(v: T | null) {\n if (v !== this._value()) {\n this._value.set(v);\n }\n }\n get value(): T | null {\n return this._value();\n }\n\n @Input({ transform: booleanAttribute })\n set disabled(v: boolean) {\n this._disabled.set(v);\n }\n get disabled(): boolean {\n return this._disabled();\n }\n\n // ---- Signal Forms mode --------------------------------------------------\n /** A writable signal holding the form model, e.g. `signal({ name: '' })`. */\n @Input() signal?: WritableSignal<Record<string, unknown>>;\n /** Key within the signal model this control is bound to. */\n @Input() controlName?: string;\n\n // ---- CVA plumbing -------------------------------------------------------\n private _onChange: (v: T | null) => void = () => {};\n private _onTouched: () => void = () => {};\n private _onValidatorChange: () => void = () => {};\n\n constructor() {\n // Bridge the value signal to the OnPush view without manual CD.\n effect(() => {\n this._value();\n this._disabled();\n this._focused();\n this.cdr.markForCheck();\n });\n\n // Signal Forms: pull model -> control whenever the signal/key changes.\n effect(() => {\n if (this.signal && this.controlName) {\n const model = this.signal();\n const next = model[this.controlName] as T | null;\n if (next !== this._value()) this._value.set(next);\n }\n });\n }\n\n /** Signal Forms: push control -> model (called from setValue). */\n private syncToSignal(v: T | null): void {\n if (this.signal && this.controlName) {\n this.signal.update((m) => ({ ...m, [this.controlName!]: v }));\n }\n }\n\n // ---- ControlValueAccessor ----------------------------------------------\n writeValue(value: T | null): void {\n this._value.set(value);\n }\n registerOnChange(fn: (v: T | null) => void): void {\n this._onChange = fn;\n }\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n setDisabledState(isDisabled: boolean): void {\n this._disabled.set(isDisabled);\n }\n\n // ---- Validator (subclasses add via `ownValidators`) --------------------\n validate(control: AbstractControl): ValidationErrors | null {\n const fns = this.ownValidators();\n if (this.required) fns.unshift(requiredFn);\n for (const fn of fns) {\n const err = fn(control);\n if (err) return err;\n }\n return null;\n }\n registerOnValidatorChange(fn: () => void): void {\n this._onValidatorChange = fn;\n }\n\n /** Override to contribute control-specific validators (email, min, etc.). */\n protected ownValidators(): ValidatorFn[] {\n return [];\n }\n\n /** Call when constraint inputs change so the parent re-runs validation. */\n protected notifyValidatorChange(): void {\n this._onValidatorChange();\n }\n\n // ---- Event handlers used by subclass templates -------------------------\n protected setValue(v: T | null, emitInput = true): void {\n this._value.set(v);\n this._onChange(v);\n this.syncToSignal(v);\n this.valueChange.emit(v);\n if (emitInput) this.input.emit(v);\n }\n\n protected handleInput(v: T | null): void {\n this.setValue(v, true);\n }\n\n protected handleChange(v: T | null): void {\n this.setValue(v, false);\n this.change.emit(v);\n }\n\n protected handleFocus(ev: FocusEvent): void {\n this._focused.set(true);\n this.focus.emit(ev);\n }\n\n protected handleBlur(ev: FocusEvent): void {\n this._focused.set(false);\n this._touched.set(true);\n this._onTouched();\n this.blur.emit(ev);\n }\n\n /** Clear button handler. */\n clear(): void {\n this.setValue(null as T | null);\n this.change.emit(null);\n }\n\n // ---- Host class map for styling ----------------------------------------\n get hostClasses(): Record<string, boolean> {\n return {\n [`zv-${this.controlType}`]: true,\n [`zv-appearance-${this.appearance}`]: true,\n [`zv-size-${this.size}`]: true,\n [`zv-theme-${this.theme}`]: true,\n [`zv-color-${this.color}`]: true,\n 'zv-rtl': this.dir === 'rtl',\n 'zv-disabled': this._disabled(),\n 'zv-readonly': this.readonly,\n 'zv-focused': this._focused(),\n 'zv-has-value': this.hasValue(),\n 'zv-loading': this.loading,\n 'zv-floating': this.floatingLabel,\n [`zv-status-${this.status}`]: !!this.status,\n };\n }\n}\n\nconst requiredFn: ValidatorFn = (c: AbstractControl): ValidationErrors | null => {\n const v = c.value;\n const empty =\n v === null || v === undefined || v === '' || (Array.isArray(v) && !v.length);\n return empty ? { required: true } : null;\n};\n","import {\n AbstractControl,\n ValidationErrors,\n ValidatorFn,\n} from '@angular/forms';\n\n/** Treat null/undefined/'' as \"absent\" — required is a separate validator. */\nconst absent = (v: unknown): boolean =>\n v === null || v === undefined || v === '';\n\nconst test = (re: RegExp, key: string): ValidatorFn => (c) =>\n absent(c.value) || re.test(String(c.value)) ? null : { [key]: true };\n\n// ---- Patterns --------------------------------------------------------------\nconst RE = {\n email: /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/,\n phone: /^\\+?[0-9]{7,15}$/,\n url: /^(https?:\\/\\/)([\\w-]+\\.)+[\\w-]+(\\/[\\w./?%&=#-]*)?$/i,\n pan: /^[A-Z]{5}[0-9]{4}[A-Z]$/,\n gst: /^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z][0-9A-Z]Z[0-9A-Z]$/,\n aadhaar: /^[2-9][0-9]{11}$/,\n cvv: /^[0-9]{3,4}$/,\n passport: /^[A-PR-WY][0-9]{7}$/, // Indian passport format\n drivingLicense: /^[A-Z]{2}[0-9]{2}\\s?[0-9]{11}$/,\n pincode: /^[1-9][0-9]{5}$/,\n // Strong password: 8+, upper, lower, digit, special.\n password: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[^A-Za-z0-9]).{8,}$/,\n};\n\nexport const ZvValidators = {\n required(c: AbstractControl): ValidationErrors | null {\n const v = c.value;\n const empty =\n absent(v) || (Array.isArray(v) && v.length === 0) || v === false;\n return empty ? { required: true } : null;\n },\n\n email: test(RE.email, 'email'),\n phone: test(RE.phone, 'phone'),\n url: test(RE.url, 'url'),\n pincode: test(RE.pincode, 'pincode'),\n cvv: test(RE.cvv, 'cvv'),\n passport: test(RE.passport, 'passport'),\n drivingLicense: test(RE.drivingLicense, 'drivingLicense'),\n password: test(RE.password, 'password'),\n\n pattern(p: string | RegExp): ValidatorFn {\n const re = typeof p === 'string' ? new RegExp(p) : p;\n return test(re, 'pattern');\n },\n regex(p: string | RegExp): ValidatorFn {\n return ZvValidators.pattern(p);\n },\n\n min(n: number): ValidatorFn {\n return (c) => (absent(c.value) || +c.value >= n ? null : { min: { min: n, actual: +c.value } });\n },\n max(n: number): ValidatorFn {\n return (c) => (absent(c.value) || +c.value <= n ? null : { max: { max: n, actual: +c.value } });\n },\n minLength(n: number): ValidatorFn {\n return (c) =>\n absent(c.value) || String(c.value).length >= n\n ? null\n : { minlength: { requiredLength: n, actualLength: String(c.value).length } };\n },\n maxLength(n: number): ValidatorFn {\n return (c) =>\n absent(c.value) || String(c.value).length <= n\n ? null\n : { maxlength: { requiredLength: n, actualLength: String(c.value).length } };\n },\n\n date(c: AbstractControl): ValidationErrors | null {\n if (absent(c.value)) return null;\n const d = new Date(c.value);\n return isNaN(d.getTime()) ? { date: true } : null;\n },\n\n /** Minimum age in whole years relative to today. */\n age(minYears: number): ValidatorFn {\n return (c) => {\n if (absent(c.value)) return null;\n const dob = new Date(c.value);\n if (isNaN(dob.getTime())) return { date: true };\n const now = new Date();\n let age = now.getFullYear() - dob.getFullYear();\n const m = now.getMonth() - dob.getMonth();\n if (m < 0 || (m === 0 && now.getDate() < dob.getDate())) age--;\n return age >= minYears ? null : { age: { required: minYears, actual: age } };\n };\n },\n\n pan: test(RE.pan, 'pan'),\n gst: test(RE.gst, 'gst'),\n\n /** Aadhaar: format + Verhoeff checksum. */\n aadhaar(c: AbstractControl): ValidationErrors | null {\n if (absent(c.value)) return null;\n const s = String(c.value).replace(/\\s/g, '');\n return RE.aadhaar.test(s) && verhoeff(s) ? null : { aadhaar: true };\n },\n\n /** Credit card: digits + Luhn checksum. */\n creditCard(c: AbstractControl): ValidationErrors | null {\n if (absent(c.value)) return null;\n const s = String(c.value).replace(/[\\s-]/g, '');\n return /^[0-9]{12,19}$/.test(s) && luhn(s) ? null : { creditCard: true };\n },\n\n /** Cross-field: confirm `field` matches `other`. Apply on a FormGroup. */\n confirm(field: string, other: string, key = 'mismatch'): ValidatorFn {\n return (group) => {\n const a = group.get(field)?.value;\n const b = group.get(other)?.value;\n return a === b ? null : { [key]: true };\n };\n },\n};\n\n// ---- Checksum helpers ------------------------------------------------------\nfunction luhn(num: string): boolean {\n let sum = 0;\n let alt = false;\n for (let i = num.length - 1; i >= 0; i--) {\n let d = +num[i];\n if (alt) {\n d *= 2;\n if (d > 9) d -= 9;\n }\n sum += d;\n alt = !alt;\n }\n return sum % 10 === 0;\n}\n\nconst D = [\n [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],\n [1, 2, 3, 4, 0, 6, 7, 8, 9, 5],\n [2, 3, 4, 0, 1, 7, 8, 9, 5, 6],\n [3, 4, 0, 1, 2, 8, 9, 5, 6, 7],\n [4, 0, 1, 2, 3, 9, 5, 6, 7, 8],\n [5, 9, 8, 7, 6, 0, 4, 3, 2, 1],\n [6, 5, 9, 8, 7, 1, 0, 4, 3, 2],\n [7, 6, 5, 9, 8, 2, 1, 0, 4, 3],\n [8, 7, 6, 5, 9, 3, 2, 1, 0, 4],\n [9, 8, 7, 6, 5, 4, 3, 2, 1, 0],\n];\nconst P = [\n [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],\n [1, 5, 7, 6, 2, 8, 3, 0, 9, 4],\n [5, 8, 0, 3, 7, 9, 6, 1, 4, 2],\n [8, 9, 1, 6, 0, 4, 3, 5, 2, 7],\n [9, 4, 5, 3, 1, 2, 6, 8, 7, 0],\n [4, 2, 8, 6, 5, 7, 3, 9, 0, 1],\n [2, 7, 9, 3, 8, 0, 6, 4, 1, 5],\n [7, 0, 4, 6, 9, 1, 3, 2, 5, 8],\n];\nfunction verhoeff(num: string): boolean {\n let c = 0;\n const digits = num.split('').reverse().map(Number);\n for (let i = 0; i < digits.length; i++) c = D[c][P[i % 8][digits[i]]];\n return c === 0;\n}\n","import { Directive, Input } from '@angular/core';\nimport { ValidatorFn } from '@angular/forms';\nimport { ZvBaseControl } from '../core/base-control';\nimport { ZvValidators } from '../validators/validators';\n\n/**\n * Base for all single-line / multi-line text controls. Subclasses set\n * `controlType`, the native `inputType`, and any extra validators.\n */\n@Directive()\nexport abstract class ZvTextControlBase extends ZvBaseControl<string> {\n /** Native input type; overridden per control (text/email/password/...). */\n abstract readonly inputType: string;\n\n @Input() maxRows = 4; // textarea only\n\n protected onNativeInput(ev: Event): void {\n const target = ev.target as HTMLInputElement | HTMLTextAreaElement;\n this.handleInput(target.value);\n }\n\n protected onNativeChange(ev: Event): void {\n const target = ev.target as HTMLInputElement | HTMLTextAreaElement;\n this.handleChange(target.value);\n }\n\n protected override ownValidators(): ValidatorFn[] {\n const v: ValidatorFn[] = [];\n if (this.minlength != null) v.push(ZvValidators.minLength(this.minlength));\n if (this.maxlength != null) v.push(ZvValidators.maxLength(this.maxlength));\n if (this.pattern) v.push(ZvValidators.pattern(this.pattern));\n return v;\n }\n}\n","/** Shared template for single-line text controls (input/email/password/number). */\nexport const TEXT_TEMPLATE = `\n <zv-field-shell\n [for]=\"id\" [label]=\"label\" [required]=\"required\" [hint]=\"hint\"\n [helperText]=\"helperText\" [errorText]=\"errorMessage\"\n [invalid]=\"status === 'error'\" [prefixIcon]=\"prefixIcon\" [suffixIcon]=\"suffixIcon\"\n [loading]=\"loading\" [loadingText]=\"loadingText\" [clearable]=\"clearable\"\n [hasValue]=\"hasValue()\" [disabled]=\"disabledSig()\" [readonly]=\"readonly\"\n (clear)=\"clear()\">\n <input\n [id]=\"id\" [type]=\"inputType\" [name]=\"name\" [value]=\"valueSig() ?? ''\"\n [placeholder]=\"placeholder\" [disabled]=\"disabledSig()\" [readOnly]=\"readonly\"\n [attr.maxlength]=\"maxlength\" [attr.minlength]=\"minlength\"\n [attr.min]=\"min\" [attr.max]=\"max\"\n [attr.autocomplete]=\"autocomplete\" [attr.aria-label]=\"ariaLabel || label\"\n [attr.aria-invalid]=\"status === 'error'\" [attr.title]=\"tooltip\" [tabIndex]=\"tabIndex\"\n (input)=\"onNativeInput($event)\" (change)=\"onNativeChange($event)\"\n (focus)=\"handleFocus($event)\" (blur)=\"handleBlur($event)\" />\n </zv-field-shell>\n`;\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { ValidatorFn } from '@angular/forms';\nimport { ZvTextControlBase } from './text-control.base';\nimport { ZvFieldShell } from './field-shell';\nimport { controlProviders } from '../core/providers';\nimport { ZvValidators } from '../validators/validators';\nimport { TEXT_TEMPLATE } from './text-template';\n\n@Component({\n selector: 'zv-email',\n standalone: true,\n imports: [ZvFieldShell],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: controlProviders(ZvEmail),\n template: TEXT_TEMPLATE,\n})\nexport class ZvEmail extends ZvTextControlBase {\n readonly controlType = 'email';\n readonly inputType = 'email';\n override autocomplete = 'email';\n\n protected override ownValidators(): ValidatorFn[] {\n return [...super.ownValidators(), ZvValidators.email];\n }\n}\n","import { Component, ChangeDetectionStrategy, Input, signal, booleanAttribute } from '@angular/core';\nimport { ValidatorFn } from '@angular/forms';\nimport { ZvTextControlBase } from './text-control.base';\nimport { ZvFieldShell } from './field-shell';\nimport { controlProviders } from '../core/providers';\nimport { ZvValidators } from '../validators/validators';\n\n@Component({\n selector: 'zv-password',\n standalone: true,\n imports: [ZvFieldShell],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: controlProviders(ZvPassword),\n template: `\n <zv-field-shell\n [for]=\"id\" [label]=\"label\" [required]=\"required\" [hint]=\"hint\"\n [helperText]=\"helperText\" [errorText]=\"errorMessage\"\n [invalid]=\"status === 'error'\" [prefixIcon]=\"prefixIcon\"\n [loading]=\"loading\" [clearable]=\"false\" [hasValue]=\"hasValue()\"\n [disabled]=\"disabledSig()\" [readonly]=\"readonly\">\n <input\n [id]=\"id\" [type]=\"reveal() ? 'text' : 'password'\" [name]=\"name\"\n [value]=\"valueSig() ?? ''\" [placeholder]=\"placeholder\"\n [disabled]=\"disabledSig()\" [readOnly]=\"readonly\"\n [attr.minlength]=\"minlength\" [attr.maxlength]=\"maxlength\"\n [attr.autocomplete]=\"autocomplete\" [attr.aria-label]=\"ariaLabel || label\"\n [tabIndex]=\"tabIndex\"\n (input)=\"onNativeInput($event)\" (change)=\"onNativeChange($event)\"\n (focus)=\"handleFocus($event)\" (blur)=\"handleBlur($event)\" />\n @if (toggle) {\n <button type=\"button\" class=\"zv-clear\" tabindex=\"-1\"\n [attr.aria-label]=\"reveal() ? 'Hide password' : 'Show password'\"\n (click)=\"reveal.set(!reveal())\">{{ reveal() ? '🙈' : '👁' }}</button>\n }\n </zv-field-shell>\n `,\n})\nexport class ZvPassword extends ZvTextControlBase {\n readonly controlType = 'password';\n readonly inputType = 'password';\n override autocomplete = 'current-password';\n @Input({ transform: booleanAttribute }) toggle = true;\n @Input({ transform: booleanAttribute }) strong = false;\n readonly reveal = signal(false);\n\n protected override ownValidators(): ValidatorFn[] {\n const v = super.ownValidators();\n if (this.strong) v.push(ZvValidators.password);\n return v;\n }\n}\n","import { Component, ChangeDetectionStrategy, Input, numberAttribute } from '@angular/core';\nimport { ValidatorFn } from '@angular/forms';\nimport { ZvBaseControl } from '../core/base-control';\nimport { ZvFieldShell } from './field-shell';\nimport { controlProviders } from '../core/providers';\nimport { ZvValidators } from '../validators/validators';\n\n@Component({\n selector: 'zv-number',\n standalone: true,\n imports: [ZvFieldShell],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: controlProviders(ZvNumber),\n template: `\n <zv-field-shell\n [for]=\"id\" [label]=\"label\" [required]=\"required\" [hint]=\"hint\"\n [helperText]=\"helperText\" [errorText]=\"errorMessage\"\n [invalid]=\"status === 'error'\" [prefixIcon]=\"prefixIcon\" [suffixIcon]=\"suffixIcon\"\n [clearable]=\"clearable\" [hasValue]=\"hasValue()\" [disabled]=\"disabledSig()\"\n [readonly]=\"readonly\" (clear)=\"clear()\">\n <input type=\"number\"\n [id]=\"id\" [name]=\"name\" [value]=\"valueSig() ?? ''\" [placeholder]=\"placeholder\"\n [disabled]=\"disabledSig()\" [readOnly]=\"readonly\"\n [attr.min]=\"min\" [attr.max]=\"max\" [attr.step]=\"step\"\n [attr.aria-label]=\"ariaLabel || label\" [tabIndex]=\"tabIndex\"\n (input)=\"onInput($event)\" (change)=\"onInput($event)\"\n (focus)=\"handleFocus($event)\" (blur)=\"handleBlur($event)\" />\n </zv-field-shell>\n `,\n})\nexport class ZvNumber extends ZvBaseControl<number> {\n readonly controlType = 'number';\n @Input({ transform: numberAttribute }) step = 1;\n\n protected onInput(ev: Event): void {\n const raw = (ev.target as HTMLInputElement).value;\n this.handleInput(raw === '' ? null : Number(raw));\n }\n\n protected override ownValidators(): ValidatorFn[] {\n const v: ValidatorFn[] = [];\n if (this.min != null) v.push(ZvValidators.min(Number(this.min)));\n if (this.max != null) v.push(ZvValidators.max(Number(this.max)));\n return v;\n }\n}\n","import { Component, ChangeDetectionStrategy, Input, numberAttribute } from '@angular/core';\nimport { ZvTextControlBase } from './text-control.base';\nimport { ZvFieldShell } from './field-shell';\nimport { controlProviders } from '../core/providers';\n\n@Component({\n selector: 'zv-textarea',\n standalone: true,\n imports: [ZvFieldShell],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: controlProviders(ZvTextarea),\n template: `\n <zv-field-shell\n [for]=\"id\" [label]=\"label\" [required]=\"required\" [hint]=\"hint\"\n [helperText]=\"helperText\" [errorText]=\"errorMessage\"\n [invalid]=\"status === 'error'\" [clearable]=\"clearable\" [hasValue]=\"hasValue()\"\n [disabled]=\"disabledSig()\" [readonly]=\"readonly\" (clear)=\"clear()\">\n <textarea\n [id]=\"id\" [name]=\"name\" [value]=\"valueSig() ?? ''\" [placeholder]=\"placeholder\"\n [disabled]=\"disabledSig()\" [readOnly]=\"readonly\" [rows]=\"rows\"\n [attr.maxlength]=\"maxlength\" [attr.minlength]=\"minlength\"\n [attr.aria-label]=\"ariaLabel || label\" [tabIndex]=\"tabIndex\"\n (input)=\"onNativeInput($event)\" (change)=\"onNativeChange($event)\"\n (focus)=\"handleFocus($event)\" (blur)=\"handleBlur($event)\"></textarea>\n </zv-field-shell>\n `,\n})\nexport class ZvTextarea extends ZvTextControlBase {\n readonly controlType = 'textarea';\n readonly inputType = 'textarea';\n @Input({ transform: numberAttribute }) rows = 4;\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { ValidatorFn } from '@angular/forms';\nimport { ZvBaseControl } from '../core/base-control';\nimport { ZvFieldShell } from './field-shell';\nimport { controlProviders } from '../core/providers';\nimport { ZvValidators } from '../validators/validators';\n\n/**\n * Wraps the native date input for full a11y + parity, normalizing the value to\n * an ISO `yyyy-MM-dd` string. Swap the inner element for a custom calendar\n * without touching the CVA contract.\n */\n@Component({\n selector: 'zv-datepicker',\n standalone: true,\n imports: [ZvFieldShell],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: controlProviders(ZvDatepicker),\n template: `\n <zv-field-shell\n [for]=\"id\" [label]=\"label\" [required]=\"required\" [hint]=\"hint\"\n [errorText]=\"errorMessage\" [invalid]=\"status === 'error'\" [prefixIcon]=\"prefixIcon\"\n [clearable]=\"clearable\" [hasValue]=\"hasValue()\" [disabled]=\"disabledSig()\"\n (clear)=\"clear()\">\n <input type=\"date\" [id]=\"id\" [name]=\"name\" [value]=\"valueSig() ?? ''\"\n [disabled]=\"disabledSig()\" [readOnly]=\"readonly\"\n [attr.min]=\"min\" [attr.max]=\"max\" [attr.aria-label]=\"ariaLabel || label\"\n [tabIndex]=\"tabIndex\" (input)=\"onInput($event)\" (change)=\"onInput($event)\"\n (focus)=\"handleFocus($event)\" (blur)=\"handleBlur($event)\" />\n </zv-field-shell>\n `,\n})\nexport class ZvDatepicker extends ZvBaseControl<string> {\n readonly controlType = 'datepicker';\n protected onInput(ev: Event): void {\n this.handleInput((ev.target as HTMLInputElement).value || null);\n }\n protected override ownValidators(): ValidatorFn[] {\n return [ZvValidators.date];\n }\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { ZvBaseControl } from '../core/base-control';\nimport { ZvFieldShell } from './field-shell';\nimport { controlProviders } from '../core/providers';\n\n@Component({\n selector: 'zv-timepicker',\n standalone: true,\n imports: [ZvFieldShell],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: controlProviders(ZvTimepicker),\n template: `\n <zv-field-shell\n [for]=\"id\" [label]=\"label\" [required]=\"required\" [hint]=\"hint\"\n [errorText]=\"errorMessage\" [invalid]=\"status === 'error'\" [prefixIcon]=\"prefixIcon\"\n [clearable]=\"clearable\" [hasValue]=\"hasValue()\" [disabled]=\"disabledSig()\"\n (clear)=\"clear()\">\n <input type=\"time\" [id]=\"id\" [name]=\"name\" [value]=\"valueSig() ?? ''\"\n [disabled]=\"disabledSig()\" [readOnly]=\"readonly\"\n [attr.min]=\"min\" [attr.max]=\"max\" [attr.aria-label]=\"ariaLabel || label\"\n [tabIndex]=\"tabIndex\" (input)=\"onInput($event)\" (change)=\"onInput($event)\"\n (focus)=\"handleFocus($event)\" (blur)=\"handleBlur($event)\" />\n </zv-field-shell>\n `,\n})\nexport class ZvTimepicker extends ZvBaseControl<string> {\n readonly controlType = 'timepicker';\n protected onInput(ev: Event): void {\n this.handleInput((ev.target as HTMLInputElement).value || null);\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n computed,\n signal,\n} from '@angular/core';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { SignalControlAccessor } from '../core/control-base';\nimport { provideSignalControl } from '../core/providers';\nimport { ZvFieldShell } from './field-shell';\nimport type { ZvOption } from '../core/types';\n\n/**\n * Single-select with virtual-scrolled listbox + keyboard support.\n * Accepts either `ZvOption[]` or a raw `T[]` via `bindLabel`/`bindValue`.\n */\n@Component({\n selector: 'zv-select',\n imports: [ZvFieldShell, ScrollingModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [provideSignalControl(ZvSelect)],\n template: `\n <zv-field-shell\n [for]=\"id()\" [label]=\"label()\" [required]=\"required()\" [hint]=\"hint()\"\n [helperText]=\"helperText()\" [errorText]=\"errorText()\"\n [invalid]=\"showError()\" [clearable]=\"clearable()\" [hasValue]=\"hasValue()\"\n [disabled]=\"disabled()\" [readonly]=\"readonly()\" (clear)=\"clear()\">\n <button type=\"button\" class=\"zv-select-trigger\" role=\"combobox\"\n [id]=\"id()\" [disabled]=\"disabled()\" [attr.aria-expanded]=\"open()\"\n [attr.aria-haspopup]=\"'listbox'\" [attr.aria-label]=\"ariaLabel() || label()\"\n [tabIndex]=\"tabIndex()\"\n (click)=\"toggle()\" (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur($event)\" (focus)=\"onFocus($event)\">\n {{ selectedLabel() || placeholder() }}\n </button>\n </zv-field-shell>\n\n @if (open()) {\n <ul class=\"zv-listbox\" role=\"listbox\">\n <cdk-virtual-scroll-viewport [itemSize]=\"36\" class=\"zv-vs\">\n <li *cdkVirtualFor=\"let opt of options(); trackBy: trackByValue\"\n role=\"option\" class=\"zv-option\"\n [class.zv-selected]=\"opt.value === current()\"\n [attr.aria-selected]=\"opt.value === current()\"\n [class.zv-disabled]=\"opt.disabled\"\n (click)=\"!opt.disabled && pick(opt)\">\n {{ opt.label }}\n </li>\n </cdk-virtual-scroll-viewport>\n </ul>\n }\n `,\n styles: [`\n .zv-select-trigger { all: unset; flex: 1; cursor: pointer; padding: 0.55rem 0; }\n .zv-listbox { list-style: none; margin: 0.25rem 0 0; padding: 0;\n border: 1px solid var(--zv-border,#d1d5db); border-radius: var(--zv-radius,0.5rem);\n background: var(--zv-bg,#fff); box-shadow: 0 8px 24px rgba(0,0,0,.12); }\n .zv-vs { height: 240px; }\n .zv-option { height: 36px; display: flex; align-items: center; padding: 0 0.75rem; cursor: pointer; }\n .zv-option:hover { background: var(--zv-hover,#f3f4f6); }\n .zv-selected { background: var(--zv-primary,#2563eb); color: #fff; }\n .zv-disabled { opacity: .5; pointer-events: none; }\n `],\n})\nexport class ZvSelect<T = unknown> extends SignalControlAccessor<T> {\n readonly controlType = 'select';\n readonly items = input<ZvOption<T>[] | T[]>([]);\n readonly bindLabel = input('label');\n readonly bindValue = input('value');\n readonly open = signal(false);\n\n readonly options = computed<ZvOption<T>[]>(() => {\n const label = this.bindLabel();\n const value = this.bindValue();\n return (this.items() as unknown[]).map((it) =>\n it && typeof it === 'object' && label in (it as object)\n ? {\n label: String((it as Record<string, unknown>)[label]),\n value: ((it as Record<string, unknown>)[value] ?? it) as T,\n }\n : { label: String(it), value: it as T },\n );\n });\n\n readonly selectedLabel = computed(() => {\n const v = this.current();\n return this.options().find((o) => o.value === v)?.label ?? '';\n });\n\n toggle(): void {\n if (!this.disabled() && !this.readonly()) this.open.set(!this.open());\n }\n\n pick(o: ZvOption<T>): void {\n this.commit(o.value, 'change');\n this.open.set(false);\n }\n\n onKeydown(ev: KeyboardEvent): void {\n if (ev.key === 'Enter' || ev.key === ' ') {\n ev.preventDefault();\n this.toggle();\n } else if (ev.key === 'Escape') {\n this.open.set(false);\n }\n }\n\n trackByValue = (_: number, o: ZvOption<T>): unknown => o.value;\n}\n","import { Component, ChangeDetectionStrategy, Input, computed, signal } from '@angular/core';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { ZvBaseControl } from '../core/base-control';\nimport { ZvFieldShell } from './field-shell';\nimport { controlProviders } from '../core/providers';\nimport { ZvOption } from '../core/types';\n\n@Component({\n selector: 'zv-multiselect',\n standalone: true,\n imports: [ZvFieldShell, ScrollingModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: controlProviders(ZvMultiselect),\n template: `\n <zv-field-shell\n [for]=\"id\" [label]=\"label\" [required]=\"required\" [hint]=\"hint\"\n [errorText]=\"errorMessage\" [invalid]=\"status === 'error'\"\n [clearable]=\"clearable\" [hasValue]=\"hasValue()\" [disabled]=\"disabledSig()\"\n (clear)=\"clear()\">\n <button type=\"button\" class=\"zv-select-trigger\" role=\"combobox\"\n [id]=\"id\" [disabled]=\"disabledSig()\" [attr.aria-expanded]=\"open()\"\n [tabIndex]=\"tabIndex\" (click)=\"toggle()\" (blur)=\"handleBlur($event)\">\n {{ summary() || placeholder }}\n </button>\n </zv-field-shell>\n @if (open()) {\n <ul class=\"zv-listbox\" role=\"listbox\" aria-multiselectable=\"true\">\n <cdk-virtual-scroll-viewport [itemSize]=\"36\" class=\"zv-vs\">\n <li *cdkVirtualFor=\"let opt of options; trackBy: trackByValue\"\n role=\"option\" class=\"zv-option\" [class.zv-selected]=\"isSelected(opt.value)\"\n [attr.aria-selected]=\"isSelected(opt.value)\" (click)=\"picktoggle(opt)\">\n <input type=\"checkbox\" [checked]=\"isSelected(opt.value)\" tabindex=\"-1\" />\n {{ opt.label }}\n </li>\n </cdk-virtual-scroll-viewport>\n </ul>\n }\n `,\n styles: [`\n .zv-select-trigger { all: unset; flex:1; cursor:pointer; padding:.55rem 0; }\n .zv-listbox { list-style:none; margin:.25rem 0 0; padding:0; background:var(--zv-bg,#fff);\n border:1px solid var(--zv-border,#d1d5db); border-radius:var(--zv-radius,.5rem); box-shadow:0 8px 24px rgba(0,0,0,.12);}\n .zv-vs { height:240px; }\n .zv-option { height:36px; display:flex; align-items:center; gap:.5rem; padding:0 .75rem; cursor:pointer; }\n .zv-option:hover { background:var(--zv-hover,#f3f4f6); }\n `],\n})\nexport class ZvMultiselect<T = unknown> extends ZvBaseControl<T[]> {\n readonly controlType = 'multiselect';\n @Input() items: ZvOption<T>[] | T[] = [];\n @Input() bindLabel = 'label';\n @Input() bindValue = 'value';\n readonly open = signal(false);\n\n get options(): ZvOption<T>[] {\n return (this.items as any[]).map((it) =>\n it && typeof it === 'object' && this.bindLabel in it\n ? { label: it[this.bindLabel], value: it[this.bindValue] ?? it }\n : { label: String(it), value: it as T });\n }\n readonly summary = computed(() => {\n const v = this.valueSig() ?? [];\n return v.length ? `${v.length} selected` : '';\n });\n isSelected = (v: T) => (this.valueSig() ?? []).includes(v);\n toggle(): void { if (!this.disabledSig()) this.open.set(!this.open()); }\n picktoggle(o: ZvOption<T>): void {\n const cur = [...(this.valueSig() ?? [])];\n const i = cur.indexOf(o.value);\n i >= 0 ? cur.splice(i, 1) : cur.push(o.value);\n this.handleChange(cur);\n }\n trackByValue = (_: number, o: ZvOption<T>) => o.value;\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { ZvBaseControl } from '../core/base-control';\nimport { controlProviders } from '../core/providers';\n\n@Component({\n selector: 'zv-checkbox',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: controlProviders(ZvCheckbox),\n template: `\n <label class=\"zv-check\">\n <input type=\"checkbox\" [id]=\"id\" [name]=\"name\" [checked]=\"!!valueSig()\"\n [disabled]=\"disabledSig()\" [attr.aria-label]=\"ariaLabel || label\"\n [tabIndex]=\"tabIndex\" (change)=\"onToggle($event)\" (blur)=\"handleBlur($event)\" />\n <span class=\"zv-box\" aria-hidden=\"true\"></span>\n @if (label) { <span class=\"zv-text\">{{ label }}</span> }\n </label>\n @if (status === 'error' && errorMessage) { <p class=\"zv-error\" role=\"alert\">{{ errorMessage }}</p> }\n `,\n styles: [`\n .zv-check { display:inline-flex; align-items:center; gap:.5rem; cursor:pointer; }\n input { position:absolute; opacity:0; width:1.1rem; height:1.1rem; }\n .zv-box { width:1.1rem; height:1.1rem; border:2px solid var(--zv-border,#d1d5db);\n border-radius:.25rem; display:inline-block; transition:.15s; }\n input:checked + .zv-box { background:var(--zv-primary,#2563eb); border-color:var(--zv-primary,#2563eb);\n background-image:url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3'><path d='M5 13l4 4L19 7'/></svg>\");\n background-size:contain; }\n input:focus-visible + .zv-box { box-shadow:0 0 0 3px var(--zv-primary-ring,rgba(37,99,235,.3)); }\n .zv-error { margin:.25rem 0 0; font-size:.75rem; color:var(--zv-warn,#dc2626); }\n `],\n})\nexport class ZvCheckbox extends ZvBaseControl<boolean> {\n readonly controlType = 'checkbox';\n protected onToggle(ev: Event): void {\n this.handleChange((ev.target as HTMLInputElement).checked);\n }\n}\n","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { ZvBaseControl } from '../core/base-control';\nimport { controlProviders } from '../core/providers';\nimport { ZvOption } from '../core/types';\n\n@Component({\n selector: 'zv-radio',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: controlProviders(ZvRadio),\n template: `\n @if (label) { <span class=\"zv-group-label\">{{ label }}</span> }\n <div class=\"zv-radio-group\" role=\"radiogroup\" [attr.aria-label]=\"ariaLabel || label\">\n @for (opt of options; track opt.value) {\n <label class=\"zv-radio\">\n <input type=\"radio\" [name]=\"name || id\" [checked]=\"opt.value === valueSig()\"\n [disabled]=\"disabledSig() || opt.disabled\" [tabIndex]=\"tabIndex\"\n (change)=\"handleChange(opt.value)\" (blur)=\"handleBlur($event)\" />\n <span class=\"zv-dot\" aria-hidden=\"true\"></span>\n <span class=\"zv-text\">{{ opt.label }}</span>\n </label>\n }\n </div>\n @if (status === 'error' && errorMessage) { <p class=\"zv-error\" role=\"alert\">{{ errorMessage }}</p> }\n `,\n styles: [`\n .zv-radio-group { display:flex; flex-direction:column; gap:.4rem; }\n .zv-radio { display:inline-flex; align-items:center; gap:.5rem; cursor:pointer; }\n input { position:absolute; opacity:0; }\n .zv-dot { width:1.1rem; height:1.1rem; border:2px solid var(--zv-border,#d1d5db); border-radius:50%; position:relative; }\n input:checked + .zv-dot { border-color:var(--zv-primary,#2563eb); }\n input:checked + .zv-dot::after { content:''; position:absolute; inset:3px; border-radius:50%; background:var(--zv-primary,#2563eb); }\n .zv-error { margin:.25rem 0 0; font-size:.75rem; color:var(--zv-warn,#dc2626); }\n `],\n})\nexport class ZvRadio<T = unknown> extends ZvBaseControl<T> {\n readonly controlType = 'radio';\n @Input() items: ZvOption<T>[] | T[] = [];\n @Input() bindLabel = 'label';\n @Input() bindValue = 'value';\n get options(): ZvOption<T>[] {\n return (this.items as any[]).map((it) =>\n it && typeof it === 'object' && this.bindLabel in it\n ? { label: it[this.bindLabel], value: it[this.bindValue] ?? it, disabled: it.disabled }\n : { label: String(it), value: it as T });\n }\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { ZvBaseControl } from '../core/base-control';\nimport { controlProviders } from '../core/providers';\n\n@Component({\n selector: 'zv-switch',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: controlProviders(ZvSwitch),\n template: `\n <label class=\"zv-switch\">\n <input type=\"checkbox\" role=\"switch\" [id]=\"id\" [name]=\"name\"\n [checked]=\"!!valueSig()\" [disabled]=\"disabledSig()\"\n [attr.aria-checked]=\"!!valueSig()\" [attr.aria-label]=\"ariaLabel || label\"\n [tabIndex]=\"tabIndex\" (change)=\"onToggle($event)\" (blur)=\"handleBlur($event)\" />\n <span class=\"zv-track\" aria-hidden=\"true\"><span class=\"zv-thumb\"></span></span>\n @if (label) { <span class=\"zv-text\">{{ label }}</span> }\n </label>\n `,\n styles: [`\n .zv-switch { display:inline-flex; align-items:center; gap:.5rem; cursor:pointer; }\n input { position:absolute; opacity:0; }\n .zv-track { width:2.4rem; height:1.3rem; border-radius:1rem; background:var(--zv-border,#d1d5db);\n position:relative; transition:.2s; }\n .zv-thumb { position:absolute; top:2px; left:2px; width:1.1rem; height:1.1rem; border-radius:50%;\n background:#fff; transition:.2s; box-shadow:0 1px 3px rgba(0,0,0,.3); }\n input:checked + .zv-track { background:var(--zv-primary,#2563eb); }\n input:checked + .zv-track .zv-thumb { transform:translateX(1.1rem); }\n input:focus-visible + .zv-track { box-shadow:0 0 0 3px var(--zv-primary-ring,rgba(37,99,235,.3)); }\n `],\n})\nexport class ZvSwitch extends ZvBaseControl<boolean> {\n readonly controlType = 'switch';\n protected onToggle(ev: Event): void {\n this.handleChange((ev.target as HTMLInputElement).checked);\n }\n}\n","import { Component, ChangeDetectionStrategy, Input, numberAttribute } from '@angular/core';\nimport { ZvBaseControl } from '../core/base-control';\nimport { controlProviders } from '../core/providers';\n\n@Component({\n selector: 'zv-pin',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: controlProviders(ZvPin),\n template: `\n @if (label) { <span class=\"zv-group-label\">{{ label }}</span> }\n <div class=\"zv-pin\" [attr.aria-label]=\"ariaLabel || label || 'One time code'\">\n @for (cell of cells; track $index) {\n <input class=\"zv-pin-cell\" inputmode=\"numeric\" maxlength=\"1\"\n [type]=\"masked ? 'password' : 'text'\" [value]=\"digitAt($index)\"\n [disabled]=\"disabledSig()\" [attr.aria-label]=\"'Digit ' + ($index + 1)\"\n (input)=\"onCell($index, $event)\" (keydown)=\"onKey($index, $event)\"\n (focus)=\"handleFocus($event)\" (blur)=\"handleBlur($event)\" />\n }\n </div>\n @if (status === 'error' && errorMessage) { <p class=\"zv-error\" role=\"alert\">{{ errorMessage }}</p> }\n `,\n styles: [`\n .zv-pin { display:flex; gap:.5rem; }\n .zv-pin-cell { width:2.75rem; height:3rem; text-align:center; font-size:1.25rem;\n border:1px solid var(--zv-border,#d1d5db); border-radius:var(--zv-radius,.5rem); }\n .zv-pin-cell:focus { outline:0; border-color:var(--zv-primary,#2563eb);\n box-shadow:0 0 0 3px var(--zv-primary-ring,rgba(37,99,235,.2)); }\n .zv-error { margin:.25rem 0 0; font-size:.75rem; color:var(--zv-warn,#dc2626); }\n `],\n})\nexport class ZvPin extends ZvBaseControl<string> {\n readonly controlType = 'pin';\n @Input({ transform: numberAttribute }) length = 6;\n @Input() masked = false;\n get cells(): number[] { return Array.from({ length: this.length }); }\n digitAt(i: number): string { return (this.valueSig() ?? '')[i] ?? ''; }\n\n onCell(i: number, ev: Event): void {\n const el = ev.target as HTMLInputElement;\n const ch = el.value.replace(/\\D/g, '').slice(-1);\n el.value = ch;\n const arr = (this.valueSig() ?? '').padEnd(this.length, ' ').split('');\n arr[i] = ch || ' ';\n this.handleInput(arr.join('').trimEnd());\n if (ch && i < this.length - 1) this.focusCell(el, 1);\n }\n onKey(i: number, ev: KeyboardEvent): void {\n if (ev.key === 'Backspace' && !(ev.target as HTMLInputElement).value && i > 0)\n this.focusCell(ev.target as HTMLInputElement, -1);\n }\n private focusCell(from: HTMLInputElement, delta: number): void {\n const sib = delta > 0 ? from.nextElementSibling : from.previousElementSibling;\n (sib as HTMLInputElement | null)?.focus();\n }\n}\n","import { DecimalPipe } from '@angular/common';\nimport { Component, ChangeDetectionStrategy, Input, booleanAttribute, signal } from '@angular/core';\nimport { ZvBaseControl } from '../core/base-control';\nimport { controlProviders } from '../core/providers';\n\n@Component({\n selector: 'zv-upload',\n standalone: true,\n imports: [DecimalPipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: controlProviders(ZvUpload),\n template: `\n @if (label) { <span class=\"zv-group-label\">{{ label }}</span> }\n <div class=\"zv-drop\" [class.zv-over]=\"dragging()\" tabindex=\"0\"\n [attr.aria-label]=\"ariaLabel || label || 'File upload'\"\n (click)=\"picker.click()\" (keydown.enter)=\"picker.click()\"\n (dragover)=\"$event.preventDefault(); dragging.set(true)\"\n (dragleave)=\"dragging.set(false)\" (drop)=\"onDrop($event)\">\n <input #picker type=\"file\" hidden [multiple]=\"multiple\" [accept]=\"accept\"\n [disabled]=\"disabledSig()\" (change)=\"onPick($event)\" />\n <p>{{ placeholder || 'Drop files or click to browse' }}</p>\n </div>\n @for (f of files(); track f.name) { <div class=\"zv-file\">{{ f.name }} ({{ (f.size/1024)|number:'1.0-0' }} KB)</div> }\n @if (status === 'error' && errorMessage) { <p class=\"zv-error\" role=\"alert\">{{ errorMessage }}</p> }\n `,\n styles: [`\n .zv-drop { border:2px dashed var(--zv-border,#d1d5db); border-radius:var(--zv-radius,.5rem);\n padding:1.5rem; text-align:center; cursor:pointer; color:var(--zv-muted,#6b7280); }\n .zv-drop.zv-over, .zv-drop:focus-visible { border-color:var(--zv-primary,#2563eb); outline:0; }\n .zv-file { font-size:.8rem; margin-top:.4rem; }\n .zv-error { margin:.25rem 0 0; font-size:.75rem; color:var(--zv-warn,#dc2626); }\n `],\n})\nexport class ZvUpload extends ZvBaseControl<File[]> {\n readonly controlType = 'upload';\n @Input({ transform: booleanAttribute }) multiple = false;\n @Input() accept = '';\n readonly dragging = signal(false);\n readonly files = signal<File[]>([]);\n\n onPick(ev: Event): void { this.commit((ev.target as HTMLInputElement).files); }\n onDrop(ev: DragEvent): void {\n ev.preventDefault();\n this.dragging.set(false);\n this.commit(ev.dataTransfer?.files ?? null);\n }\n private commit(list: FileList | null): void {\n const arr = list ? Array.from(list) : [];\n this.files.set(arr);\n this.handleChange(arr);\n }\n}\n","/**\n * Reactive + Template Forms adapter.\n *\n * A single `ControlValueAccessor` that bridges any Zellvora control to Angular's\n * `formControl` / `formControlName` / `ngModel`. It owns NO state and NO\n * validation — it simply forwards to the host `SignalControlAccessor`, whose\n * signals remain the source of truth. This is the entire \"Reactive/Template\n * wraps Signals\" story.\n */\nimport {\n Directive,\n forwardRef,\n inject,\n effect,\n DestroyRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, type ControlValueAccessor } from '@angular/forms';\nimport { SignalControlAccessor } from '../core/control-base';\n\n@Directive({\n selector:\n 'zv-input[formControl],zv-input[formControlName],zv-input[ngModel],' +\n 'zv-email[formControl],zv-email[formControlName],zv-email[ngModel],' +\n 'zv-password[formControl],zv-password[formControlName],zv-password[ngModel],' +\n 'zv-number[formControl],zv-number[formControlName],zv-number[ngModel],' +\n 'zv-textarea[formControl],zv-textarea[formControlName],zv-textarea[ngModel],' +\n 'zv-select[formControl],zv-select[formControlName],zv-select[ngModel],' +\n 'zv-multiselect[formControl],zv-multiselect[formControlName],zv-multiselect[ngModel],' +\n 'zv-checkbox[formControl],zv-checkbox[formControlName],zv-checkbox[ngModel],' +\n 'zv-radio[formControl],zv-radio[formControlName],zv-radio[ngModel],' +\n 'zv-switch[formControl],zv-switch[formControlName],zv-switch[ngModel],' +\n 'zv-datepicker[formControl],zv-datepicker[formControlName],zv-datepicker[ngModel],' +\n 'zv-timepicker[formControl],zv-timepicker[formControlName],zv-timepicker[ngModel],' +\n 'zv-pin[formControl],zv-pin[formControlName],zv-pin[ngModel],' +\n 'zv-upload[formControl],zv-upload[formControlName],zv-upload[ngModel]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ZvControlValueAccessor),\n multi: true,\n },\n ],\n})\nexport class ZvControlValueAccessor implements ControlValueAccessor {\n private readonly host = inject(SignalControlAccessor);\n private onChange: (v: unknown) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n const ref = inject(DestroyRef);\n // host commit -> Angular onChange + touched\n const sub = this.host.committed.subscribe((v) => {\n this.onChange(v);\n this.onTouched();\n });\n ref.onDestroy(() => sub.unsubscribe());\n\n // host disabled state stays in sync if the host changes it locally.\n effect(() => {\n this.host.disabled();\n });\n }\n\n writeValue(value: unknown): void {\n this.host.acceptExternalValue(value as never);\n }\n registerOnChange(fn: (v: unknown) => void): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n setDisabledState(isDisabled: boolean): void {\n this.host.setDisabled(isDisabled);\n }\n}\n","/**\n * Reactive/Template validator bridge.\n *\n * Wraps the *same* signal `ZvValidators` as Angular `ValidatorFn`s so Reactive\n * and Template forms reuse identical logic — zero duplication.\n *\n * @example\n * new FormControl('', [toNgValidator(ZvValidators.required), toNgValidator(ZvValidators.email)])\n */\nimport type {\n AbstractControl,\n ValidationErrors,\n ValidatorFn,\n AsyncValidatorFn,\n} from '@angular/forms';\nimport type {\n ZvValidator,\n ZvAsyncValidator,\n} from '../engine/validation.types';\n\nexport function toNgValidator(v: ZvValidator): ValidatorFn {\n return (c: AbstractControl): ValidationErrors | null =>\n v(c.value, c.parent?.value ?? {}) as ValidationErrors | null;\n}\n\nexport function toNgAsyncValidator(v: ZvAsyncValidator): AsyncValidatorFn {\n return async (c: AbstractControl): Promise<ValidationErrors | null> =>\n (await v(c.value, c.parent?.value ?? {})) as ValidationErrors | null;\n}\n\n/** Convenience: map many ZvValidators to one Angular ValidatorFn list. */\nexport const ngValidators = (...vs: ZvValidator[]): ValidatorFn[] =>\n vs.map(toNgValidator);\n","/*\n * Public API — @zellvora/ng-input\n *\n * Signal-first enterprise form controls for Angular 22.\n * The Signal Form Engine is the single source of truth; Reactive and Template\n * forms are thin adapters over it.\n */\n\n// ---- Signal Form Engine (source of truth) ---------------------------------\nexport {\n createForm,\n type ZvSignalForm,\n type ZvControl,\n type ZvFormSchema,\n type ZvFormOptions,\n} from './lib/engine/signal-form';\nexport {\n type ZvErrors,\n type ZvValidator,\n type ZvAsyncValidator,\n type ZvFieldConfig,\n type ZvControlStatus,\n} from './lib/engine/validation.types';\nexport { ZvValidators, ZV_PATTERNS } from './lib/engine/validators';\n\n// ---- Core -----------------------------------------------------------------\nexport { SignalControlAccessor } from './lib/core/control-base';\nexport { provideSignalControl } from './lib/core/providers';\nexport * from './lib/core/types';\nexport {\n ZV_INPUT_CONFIG,\n provideZvInput,\n} from './lib/tokens/config.token';\n\n// ---- Components ------------------------------------------------------------\nexport { ZvFieldShell } from './lib/components/field-shell';\nexport { ZvInput } from './lib/components/input.component';\nexport { ZvEmail } from './lib/components/email.component';\nexport { ZvPassword } from './lib/components/password.component';\nexport { ZvNumber } from './lib/components/number.component';\nexport { ZvTextarea } from './lib/components/textarea.component';\nexport { ZvDatepicker } from './lib/components/datepicker.component';\nexport { ZvTimepicker } from './lib/components/timepicker.component';\nexport { ZvSelect } from './lib/components/select.component';\nexport { ZvMultiselect } from './lib/components/multiselect.component';\nexport { ZvCheckbox } from './lib/components/checkbox.component';\nexport { ZvRadio } from './lib/components/radio.component';\nexport { ZvSwitch } from './lib/components/switch.component';\nexport { ZvPin } from './lib/components/pin.component';\nexport { ZvUpload } from './lib/components/upload.component';\n\n// ---- Adapters (Reactive + Template) ---------------------------------------\nexport { ZvControlValueAccessor } from './lib/adapters/control-value-accessor';\nexport {\n toNgValidator,\n toNgAsyncValidator,\n ngValidators,\n} from './lib/adapters/ng-validator';\n\n// ---- Utilities ------------------------------------------------------------\nexport { formatError, ZV_DEFAULT_MESSAGES } from './lib/utils/error-messages';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["absent","requiredFn","ZvValidators","verhoeff","luhn","D","P"],"mappings":"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,CAAC;AAC9B,IAAA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B,IAAA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B,IAAA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B,IAAA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;CAC/B;AACD,MAAM,CAAC,GAAG;AACR,IAAA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B,IAAA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B,IAAA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B,IAAA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B,IAAA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B,IAAA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B,IAA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"}
package/package.json ADDED
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "@zellvora/ng-input",
3
+ "version": "0.1.1",
4
+ "description": "Enterprise Angular 21 form controls supporting Template-Driven, Reactive, and Signal Forms.",
5
+ "peerDependencies": {
6
+ "@angular/common": "^21.0.0",
7
+ "@angular/core": "^21.0.0",
8
+ "@angular/forms": "^21.0.0",
9
+ "@angular/cdk": "^21.0.0"
10
+ },
11
+ "sideEffects": false,
12
+ "module": "fesm2022/zellvora-ng-input.mjs",
13
+ "typings": "types/zellvora-ng-input.d.ts",
14
+ "exports": {
15
+ "./package.json": {
16
+ "default": "./package.json"
17
+ },
18
+ ".": {
19
+ "types": "./types/zellvora-ng-input.d.ts",
20
+ "default": "./fesm2022/zellvora-ng-input.mjs"
21
+ }
22
+ },
23
+ "type": "module",
24
+ "dependencies": {
25
+ "tslib": "^2.3.0"
26
+ }
27
+ }