import * as _angular_core from '@angular/core'; import { InjectionToken, EnvironmentProviders, Type, Provider, Signal, OnDestroy, OnInit, TemplateRef } from '@angular/core'; import { SafeHtml, SafeResourceUrl } from '@angular/platform-browser'; import { ControlValueAccessor } from '@angular/forms'; export { ControlValueAccessor } from '@angular/forms'; import * as _a_nemreen_dga_ui from '@a.nemreen/dga-ui'; import * as _a_nemreen_dga_tokens from '@a.nemreen/dga-tokens'; import { DgaLocale } from '@a.nemreen/dga-tokens'; type DgaWritingEffect = 'typewriter' | 'glow'; /** * Headline motion: typewriter reveal or soft glow / light sweep. * * ```html * * * ``` * * Honors `prefers-reduced-motion` and DGA a11y `reduce-motion`. */ declare class DgaWriting { private readonly doc; private readonly destroyRef; /** Full string to type / glow. */ readonly text: _angular_core.InputSignal; /** `typewriter` (default) or soft light sweep `glow`. */ readonly effect: _angular_core.InputSignal; /** Milliseconds per character (typewriter only). */ readonly speed: _angular_core.InputSignalWithTransform; /** Delay before the first character (typewriter only). */ readonly delay: _angular_core.InputSignalWithTransform; /** Blinking caret while typing (typewriter only). */ readonly cursor: _angular_core.InputSignalWithTransform; /** Skip motion entirely. */ readonly disabled: _angular_core.InputSignalWithTransform; readonly displayed: _angular_core.WritableSignal; readonly phase: _angular_core.WritableSignal<"idle" | "writing" | "done">; private timer; private charIndex; readonly showCursor: _angular_core.Signal; constructor(); private start; private tick; private clearTimer; private shouldReduceMotion; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } type DgaButtonVariant = 'primary' | 'secondary' | 'subtle' | 'outline' | 'outlineMuted' | 'outlineInverse' | 'ghost' | 'danger' | 'inverse'; type DgaButtonSize = 'sm' | 'md' | 'lg'; /** Hover / focus motion. Default `opacity` preserves legacy chrome. */ type DgaButtonEffect = 'opacity' | 'ripple' | 'lift' | 'scale' | 'glow' | 'press' | 'bounce' | 'slide' | 'shine' | 'pulse' | 'float' | 'wobble' | 'jelly'; declare class DgaButton { private readonly destroyRef; private readonly host; private readonly renderer; readonly variant: _angular_core.InputSignal; readonly size: _angular_core.InputSignal; /** Hover / focus motion. Default matches legacy opacity chrome. */ readonly effect: _angular_core.InputSignal; /** Square control sized to the icon (no horizontal padding). */ readonly iconOnly: _angular_core.InputSignalWithTransform; /** Stretch to the width of the parent (adds `w-full`). */ readonly fullWidth: _angular_core.InputSignalWithTransform; /** When > 0, disables the host for this many ms after each click and shows a spinner. */ readonly cooldownMs: _angular_core.InputSignal; /** Manual loading state — shows spinner and disables the control. */ readonly loading: _angular_core.InputSignalWithTransform; /** * Extra classes merged with variant styles. * Prefer this over a bare `[class]` on the host — the directive owns `[class]`. */ readonly buttonClass: _angular_core.InputSignal; /** Exposed for host bindings (Angular 22 requires public host expressions). */ readonly cooling: _angular_core.WritableSignal; private cooldownTimer; private spinnerEl; readonly busy: _angular_core.Signal; readonly classes: _angular_core.Signal; constructor(); onPointerDown(event: Event): void; onHostClick(): void; private spawnRipple; private attachSpinner; private detachSpinner; private clearCooldown; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } type DgaBadgeVariant = 'neutral' | 'primary' | 'success' | 'info' | 'warning' | 'error'; type DgaBadgeSize = 'sm' | 'md'; declare class DgaBadge { readonly variant: _angular_core.InputSignal; readonly size: _angular_core.InputSignal; readonly classes: _angular_core.Signal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } type DgaChipVariant = 'neutral' | 'primary' | 'success' | 'info' | 'warning' | 'error'; declare class DgaChip { readonly variant: _angular_core.InputSignal; readonly removable: _angular_core.InputSignalWithTransform; readonly removeLabel: _angular_core.InputSignal; readonly removed: _angular_core.OutputEmitterRef; readonly classes: _angular_core.Signal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Keyboard key badge — mirrors shadcn `Kbd` for shortcut hints. * * @see https://ui.shadcn.com/docs/components/base/kbd * * @example * ```html * Ctrl * * ⌘ * K * * ``` */ declare class DgaKbd { readonly size: _angular_core.InputSignal<"sm" | "md">; readonly classes: _angular_core.Signal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Groups related keyboard keys (e.g. ⌘ + K). */ declare class DgaKbdGroup { static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } type DgaDividerOrientation = 'horizontal' | 'vertical'; declare class DgaDivider { readonly orientation: _angular_core.InputSignal; /** Optional centered label (horizontal only). */ readonly label: _angular_core.InputSignal; readonly classes: _angular_core.Signal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } type DgaLinkVariant = 'primary' | 'plain' | 'neutral' | 'muted' | 'nav' | 'utility'; declare class DgaLink { readonly variant: _angular_core.InputSignal; /** Optional chevron affordance for dropdown-style nav items. */ readonly dropdown: _angular_core.InputSignalWithTransform; readonly classes: _angular_core.Signal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } type DgaSpinnerSize = 'sm' | 'md' | 'lg'; type DgaSpinnerTone = 'primary' | 'neutral' | 'on-color'; declare class DgaSpinner { readonly size: _angular_core.InputSignal; readonly tone: _angular_core.InputSignal; /** Accessible name announced to assistive tech. */ readonly label: _angular_core.InputSignal; readonly classes: _angular_core.Signal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } type DgaSkeletonShape = 'text' | 'rect' | 'circle'; type DgaSkeletonAnimation = 'pulse' | 'shimmer' | 'none'; type DgaSkeletonSize = 'sm' | 'md' | 'lg'; type DgaSkeletonRadius = 'none' | 'sm' | 'md' | 'lg' | 'full'; declare class DgaSkeleton { readonly shape: _angular_core.InputSignal; readonly animation: _angular_core.InputSignal; readonly size: _angular_core.InputSignal; /** Optional width utility class, e.g. `w-full` or `w-5xl`. Ignored for sized circles unless set. */ readonly widthClass: _angular_core.InputSignal; /** Overrides size-based height when set. */ readonly heightClass: _angular_core.InputSignal; /** Number of text lines when `shape` is `text`. */ readonly lines: _angular_core.InputSignalWithTransform; /** Width class for the last line when `lines` > 1. */ readonly lastWidthClass: _angular_core.InputSignal; /** Override corner radius. Circles always use `full`. */ readonly radius: _angular_core.InputSignal; /** Accessible label announced while loading. */ readonly label: _angular_core.InputSignal; /** When false, treats the skeleton as decorative (aria-hidden). */ readonly announce: _angular_core.InputSignalWithTransform; readonly lineCount: _angular_core.Signal; readonly lineIndexes: _angular_core.Signal; readonly gapClass: _angular_core.Signal; boneClasses(isLast: boolean): string; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } type DgaProgressSize = 'sm' | 'md' | 'lg'; type DgaProgressTone = 'primary' | 'success' | 'warning' | 'error'; type DgaProgressAppearance = 'linear' | 'radial'; declare class DgaProgress { private readonly uiLocale; /** 0–100 */ readonly value: _angular_core.InputSignal; readonly size: _angular_core.InputSignal; readonly tone: _angular_core.InputSignal; readonly appearance: _angular_core.InputSignal; /** Show percent label inside the radial meter. */ readonly showValue: _angular_core.InputSignal; /** Override the radial center label (e.g. `1/4`). Falls back to percent. */ readonly valueText: _angular_core.InputSignal; readonly label: _angular_core.InputSignal; readonly resolvedLabel: _angular_core.Signal; readonly radius = 15.5; readonly circumference: number; readonly clamped: _angular_core.Signal; readonly dashOffset: _angular_core.Signal; readonly displayValue: _angular_core.Signal; readonly hostClasses: _angular_core.Signal<"block w-full" | "inline-flex">; readonly trackClasses: _angular_core.Signal; readonly barClasses: _angular_core.Signal; readonly radialWrapClasses: _angular_core.Signal; readonly strokeColor: _angular_core.Signal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } type DgaAvatarSize = 'sm' | 'md' | 'lg' | 'xl'; declare class DgaAvatar { readonly src: _angular_core.InputSignal; readonly name: _angular_core.InputSignal; readonly size: _angular_core.InputSignal; readonly alt: _angular_core.InputSignal; readonly initials: _angular_core.Signal; readonly resolvedAlt: _angular_core.Signal; readonly classes: _angular_core.Signal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Icon name union + RTL-flip set. Kept off the SVG catalog so chrome * components can import names without the HugeIcons glyph map. */ declare const DGA_ICON_NAMES: readonly ["access", "alertCircle", "ambulance", "apple", "arrowDown", "arrowDown02", "arrowLeft", "arrowLeft02", "arrowNext", "arrowNext02", "arrowPrev", "arrowPrev02", "arrowRight", "arrowRight02", "arrowUp", "arrowUp02", "award", "badgeCheck", "bell", "bellAlt", "book", "bookType", "brain", "building", "calendar", "calendarAlt", "cart", "check", "checkCircle", "checkCircleAlt", "chevronDown", "chevronLeft", "chevronRight", "clock", "close", "cloud", "colorPicker", "colors", "cookie", "copy", "desert", "devices", "disability", "door", "download", "droplet", "error", "external", "eye", "eyeOff", "eyeOffSlash", "facebook", "filter", "fire", "flash", "folder", "glasses", "globe", "heading", "headphones", "helpCircle", "highlighter", "home", "huawei", "idCard", "info", "instagram", "letterSpacing", "link", "linkAlt", "linkedin", "location", "lock", "lockPassword", "logout", "mail", "mask", "maximize", "menu", "menuAlt", "message", "mic", "minus", "moon", "moonAlt", "moonCloud", "moreHorizontal", "moreVertical", "paintBoard", "pause", "phone", "playStore", "plus", "plusSign", "police", "printer", "rain", "rainZap", "refresh", "riyal", "search", "share", "shrink", "smartphone", "snow", "sort", "sortDown", "sortUp", "star", "starFilled", "success", "sun", "sunAlt", "sunCloud", "textAlign", "textFont", "textUnderline", "touch", "tradeDown", "tradeUp", "translation", "upload", "user", "users", "warning", "whatsapp", "wheelchair", "wind", "x", "youtube", "zoomIn", "zoomOut"]; type DgaIconName = (typeof DGA_ICON_NAMES)[number]; declare const DGA_LOGICAL_ICON_NAMES: Set<"error" | "success" | "warning" | "info" | "link" | "menu" | "search" | "access" | "alertCircle" | "ambulance" | "apple" | "arrowDown" | "arrowDown02" | "arrowLeft" | "arrowLeft02" | "arrowNext" | "arrowNext02" | "arrowPrev" | "arrowPrev02" | "arrowRight" | "arrowRight02" | "arrowUp" | "arrowUp02" | "award" | "badgeCheck" | "bell" | "bellAlt" | "book" | "bookType" | "brain" | "building" | "calendar" | "calendarAlt" | "cart" | "check" | "checkCircle" | "checkCircleAlt" | "chevronDown" | "chevronLeft" | "chevronRight" | "clock" | "close" | "cloud" | "colorPicker" | "colors" | "cookie" | "copy" | "desert" | "devices" | "disability" | "door" | "download" | "droplet" | "external" | "eye" | "eyeOff" | "eyeOffSlash" | "facebook" | "filter" | "fire" | "flash" | "folder" | "glasses" | "globe" | "heading" | "headphones" | "helpCircle" | "highlighter" | "home" | "huawei" | "idCard" | "instagram" | "letterSpacing" | "linkAlt" | "linkedin" | "location" | "lock" | "lockPassword" | "logout" | "mail" | "mask" | "maximize" | "menuAlt" | "message" | "mic" | "minus" | "moon" | "moonAlt" | "moonCloud" | "moreHorizontal" | "moreVertical" | "paintBoard" | "pause" | "phone" | "playStore" | "plus" | "plusSign" | "police" | "printer" | "rain" | "rainZap" | "refresh" | "riyal" | "share" | "shrink" | "smartphone" | "snow" | "sort" | "sortDown" | "sortUp" | "star" | "starFilled" | "sun" | "sunAlt" | "sunCloud" | "textAlign" | "textFont" | "textUnderline" | "touch" | "tradeDown" | "tradeUp" | "translation" | "upload" | "user" | "users" | "whatsapp" | "wheelchair" | "wind" | "x" | "youtube" | "zoomIn" | "zoomOut">; /** * Platforms Code icon sizes (px): * 2xs 10 · xs 14 · sm 16 · md 18 · lg 20 · xl 24 · 2xl 28 · 3xl 32 * * Migration from 0.1 early sizes: former `sm`(12)→`xs`, `md`(16)→`sm`; * `lg`(20) / `xl`(24) keep the same pixel values under the same names. */ type DgaIconSize = '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl'; type DgaIconTone = 'current' | 'primary' | 'muted' | 'success' | 'warning' | 'error'; /** Accept curated names plus app-registered custom names (keeps autocomplete for DgaIconName). */ type DgaIconNameInput = DgaIconName | (string & {}); declare class DgaIcon { private readonly sanitizer; private readonly iconFont; private readonly registry; /** * Curated HugeIcons (Stroke Rounded) / DGA SVG name for chrome / controls. * Required unless `glyph` is set. App teams may pass names registered via * {@link provideDgaIcons} / {@link DgaIconRegistry.register}. */ readonly name: _angular_core.InputSignal; /** * HugeIcons Stroke Rounded glyph id for content icons (e.g. `search-01`). * Requires `@import '@a.nemreen/dga-tokens/styles/icon-font.css'`. * Prefer curated `name` for chrome controls so first paint does not wait on the font. */ readonly glyph: _angular_core.InputSignal; /** Default `sm` (16px) - common dense UI size; use `xl` (24px) for standard chrome. */ readonly size: _angular_core.InputSignal; readonly tone: _angular_core.InputSignal; /** Optional accessible name; when empty the icon is decorative. */ readonly label: _angular_core.InputSignal; readonly isFont: _angular_core.Signal; readonly logical: _angular_core.Signal; readonly fontClasses: _angular_core.Signal; readonly classes: _angular_core.Signal; readonly svg: _angular_core.Signal; constructor(); static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Marks the document when the content icon font is ready so `.hgi-stroke` * glyphs can fade in without a fallback flash. * No-op when `icon-font.css` was not imported. */ declare class DgaIconFontService { private loading; ensureLoaded(): Promise; private hasToken; private load; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } /** * Multi-provider bag of SVG markup keyed by icon name. * Prefer {@link provideDgaIcons} at app bootstrap. */ declare const DGA_ICON_OVERRIDES: InjectionToken>[]>; /** * Register additional or overriding SVG icons for ``. * * @example * ```ts * bootstrapApplication(App, { * providers: [ * provideDgaIcons({ * myBrand: `…`, * }), * ], * }); * ``` */ declare function provideDgaIcons(icons: Readonly>): EnvironmentProviders; /** * Resolves SVG markup for DgaIcon: runtime register → provideDgaIcons → HugeIcons/DGA catalog → core. * Non-core catalog icons load once via a shared dynamic import (HugeIcons curated subset). */ declare class DgaIconRegistry { private readonly providerOverrides; private readonly runtime; private readonly defaults; private readonly loading; private readonly provided; /** Synchronous lookup — empty until defaults finish loading for non-core names. */ get(name: string): string; /** True when the name is in the first-paint core map. */ isCore(name: string): boolean; /** * Ensure the HugeIcons + DGA default catalog is loaded when `name` is not core / provided. * Safe to call repeatedly; shares one import promise. */ ensureLoaded(name: string): void; /** * Register or override an icon at runtime (e.g. after a lazy feature loads). * Prefer {@link provideDgaIcons} for bootstrap-time icons. */ register(name: string, svg: string): void; /** Register many icons at once. */ registerAll(icons: Readonly>): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } type DgaIconBadgeSize = 'sm' | 'md' | 'lg' | 'xl'; type DgaIconBadgeAppearance = 'filled' | 'outline'; /** * Circular primary well for featured icons (metrics, service / help cards). * Project any icon / glyph via content. */ declare class DgaIconBadge { readonly size: _angular_core.InputSignal; readonly appearance: _angular_core.InputSignal; readonly classes: _angular_core.Signal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** Form control status — maps to design-system `data-status`. */ type DgaFormStatus = 'default' | 'error' | 'success' | 'warning' | 'info'; /** Shared size scale — sm≈32px, md≈40px, lg=48px. */ type DgaFormControlSize = 'sm' | 'md' | 'lg'; declare function dgaFormStatusFromInvalid(invalid: boolean): DgaFormStatus; type DgaInputSize = DgaFormControlSize; declare class DgaInput { readonly size: _angular_core.InputSignal; readonly invalid: _angular_core.InputSignalWithTransform; readonly status: _angular_core.InputSignal; readonly resolvedStatus: _angular_core.Signal; readonly classes: _angular_core.Signal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } /** Marks projected content as the leading (start) addon inside `dga-form-control`. */ declare class DgaFormStart { static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } /** Marks projected content as the trailing (end) addon inside `dga-form-control`. */ declare class DgaFormEnd { static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } /** * Shared input chrome: border, focus accent, optional start/end icons. * * @example * ```html * * * * * * * * * * ``` */ declare class DgaFormControl { readonly size: _angular_core.InputSignal; readonly status: _angular_core.InputSignal; readonly disabled: _angular_core.InputSignalWithTransform; readonly filled: _angular_core.InputSignalWithTransform; /** Built-in leading icon (logical start). */ readonly startIcon: _angular_core.InputSignal<"error" | "success" | "warning" | "info" | "link" | "menu" | "search" | "access" | "alertCircle" | "ambulance" | "apple" | "arrowDown" | "arrowDown02" | "arrowLeft" | "arrowLeft02" | "arrowNext" | "arrowNext02" | "arrowPrev" | "arrowPrev02" | "arrowRight" | "arrowRight02" | "arrowUp" | "arrowUp02" | "award" | "badgeCheck" | "bell" | "bellAlt" | "book" | "bookType" | "brain" | "building" | "calendar" | "calendarAlt" | "cart" | "check" | "checkCircle" | "checkCircleAlt" | "chevronDown" | "chevronLeft" | "chevronRight" | "clock" | "close" | "cloud" | "colorPicker" | "colors" | "cookie" | "copy" | "desert" | "devices" | "disability" | "door" | "download" | "droplet" | "external" | "eye" | "eyeOff" | "eyeOffSlash" | "facebook" | "filter" | "fire" | "flash" | "folder" | "glasses" | "globe" | "heading" | "headphones" | "helpCircle" | "highlighter" | "home" | "huawei" | "idCard" | "instagram" | "letterSpacing" | "linkAlt" | "linkedin" | "location" | "lock" | "lockPassword" | "logout" | "mail" | "mask" | "maximize" | "menuAlt" | "message" | "mic" | "minus" | "moon" | "moonAlt" | "moonCloud" | "moreHorizontal" | "moreVertical" | "paintBoard" | "pause" | "phone" | "playStore" | "plus" | "plusSign" | "police" | "printer" | "rain" | "rainZap" | "refresh" | "riyal" | "share" | "shrink" | "smartphone" | "snow" | "sort" | "sortDown" | "sortUp" | "star" | "starFilled" | "sun" | "sunAlt" | "sunCloud" | "textAlign" | "textFont" | "textUnderline" | "touch" | "tradeDown" | "tradeUp" | "translation" | "upload" | "user" | "users" | "whatsapp" | "wheelchair" | "wind" | "x" | "youtube" | "zoomIn" | "zoomOut" | null>; /** Built-in trailing icon (logical end). */ readonly endIcon: _angular_core.InputSignal<"error" | "success" | "warning" | "info" | "link" | "menu" | "search" | "access" | "alertCircle" | "ambulance" | "apple" | "arrowDown" | "arrowDown02" | "arrowLeft" | "arrowLeft02" | "arrowNext" | "arrowNext02" | "arrowPrev" | "arrowPrev02" | "arrowRight" | "arrowRight02" | "arrowUp" | "arrowUp02" | "award" | "badgeCheck" | "bell" | "bellAlt" | "book" | "bookType" | "brain" | "building" | "calendar" | "calendarAlt" | "cart" | "check" | "checkCircle" | "checkCircleAlt" | "chevronDown" | "chevronLeft" | "chevronRight" | "clock" | "close" | "cloud" | "colorPicker" | "colors" | "cookie" | "copy" | "desert" | "devices" | "disability" | "door" | "download" | "droplet" | "external" | "eye" | "eyeOff" | "eyeOffSlash" | "facebook" | "filter" | "fire" | "flash" | "folder" | "glasses" | "globe" | "heading" | "headphones" | "helpCircle" | "highlighter" | "home" | "huawei" | "idCard" | "instagram" | "letterSpacing" | "linkAlt" | "linkedin" | "location" | "lock" | "lockPassword" | "logout" | "mail" | "mask" | "maximize" | "menuAlt" | "message" | "mic" | "minus" | "moon" | "moonAlt" | "moonCloud" | "moreHorizontal" | "moreVertical" | "paintBoard" | "pause" | "phone" | "playStore" | "plus" | "plusSign" | "police" | "printer" | "rain" | "rainZap" | "refresh" | "riyal" | "share" | "shrink" | "smartphone" | "snow" | "sort" | "sortDown" | "sortUp" | "star" | "starFilled" | "sun" | "sunAlt" | "sunCloud" | "textAlign" | "textFont" | "textUnderline" | "touch" | "tradeDown" | "tradeUp" | "translation" | "upload" | "user" | "users" | "whatsapp" | "wheelchair" | "wind" | "x" | "youtube" | "zoomIn" | "zoomOut" | null>; private readonly focused; private readonly typing; readonly classes: _angular_core.Signal; readonly hasStart: _angular_core.Signal; readonly hasEnd: _angular_core.Signal; readonly stateAttr: _angular_core.Signal; onFocusIn(): void; onFocusOut(event: FocusEvent): void; onInput(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Registers `component` as an `NG_VALUE_ACCESSOR`, so it can be used with * `formControl` / `formControlName` / `ngModel`. * * Usage on a standalone component: * ```ts * @Component({ * ... * providers: [dgaProvideValueAccessor(DgaMyControl)], * }) * export class DgaMyControl implements ControlValueAccessor { ... } * ``` * * Each CVA component should: * - keep its existing `input`/`model`/`output` two-way-binding API untouched; * - implement `writeValue`, `registerOnChange`, `registerOnTouched` and, * when relevant, `setDisabledState`; * - call the registered `onChange` alongside its existing `*Change` output * emit, and call `onTouched` on blur. */ declare function dgaProvideValueAccessor(component: Type): Provider; declare class DgaLabel { /** Optional required indicator styling hook. */ readonly required: _angular_core.InputSignalWithTransform; readonly classes: _angular_core.Signal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } type DgaCheckboxSize = 'sm' | 'md' | 'lg'; declare class DgaCheckbox { readonly size: _angular_core.InputSignal; readonly invalid: _angular_core.InputSignalWithTransform; readonly classes: _angular_core.Signal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } type DgaRadioSize = 'sm' | 'md' | 'lg'; declare class DgaRadio { readonly size: _angular_core.InputSignal; readonly invalid: _angular_core.InputSignalWithTransform; readonly classes: _angular_core.Signal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } type DgaChoiceLayout = 'column' | 'row'; /** * Lays out checkbox or radio options in a column, a wrapping row, or a * fixed column count. Narrow screens always fall back to one column. */ declare class DgaChoiceGroup { readonly layout: _angular_core.InputSignal; readonly columns: _angular_core.InputSignalWithTransform; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } type DgaNativeSelectSize = DgaFormControlSize; /** Styles a native `