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 `