import * as i0 from '@angular/core'; import { PipeTransform, InjectionToken, TemplateRef, Type, OnDestroy, Signal, EffectCleanupRegisterFn, CreateEffectOptions, EffectRef, InputOptionsWithTransform } from '@angular/core'; import { UrlTree, ActivatedRoute, Params } from '@angular/router'; export { DecorativePalette, PrClass as LuClass, Palette } from '@lucca/prisme/core'; /** * Extracts the values of an enum as a union type. * * @example * ```ts * enum ExampleEnum { * A = 'a', * B = 'b', * } * * type ExampleEnumValue = EnumValue; // Same as 'a' | 'b' * ``` */ type EnumValue = `${T[keyof T] & string}`; declare class LuTypeGuardPipe implements PipeTransform { transform(obj: T, typeGuardFn: (arg: T) => arg is U): obj is U; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵpipe: i0.ɵɵPipeDeclaration; } type At = 'media' | 'container'; type Breakpoint = 'XXXS' | 'XXS' | 'XS' | 'S' | 'M' | 'L' | 'XL' | 'XXL' | 'XXXL'; /** * Breakpoints in em, useful for media queries * * Equivalent of `$breakpoints` (from scss/src/commons/config.scss) */ declare const defaultBreakpoints: { readonly XXXS: "20em"; readonly XXS: "30em"; readonly XS: "40em"; readonly S: "50em"; readonly M: "64em"; readonly L: "80em"; readonly XL: "85.375em"; readonly XXL: "100em"; readonly XXXL: "120em"; }; type ResponsiveConfig = Partial, V>>; type ResponsiveProperty = `${T}At${Capitalize}Min${Breakpoint}`; declare enum ELuDateGranularity { day = "day", month = "month", year = "year", decade = "decade" } type LuDateGranularity = EnumValue; interface ILuDateAdapter { forge(year: number, month: number, date: number): D; forgeToday(): D; forgeInvalid(): D; isValid(d: D): boolean; compare(a: D, b: D, granularity: LuDateGranularity): number; isParsable(text: string, granularity?: LuDateGranularity): boolean; parse(text: string, granularity?: LuDateGranularity): D; format(d: D, format: string): string; clone(d: D): D; getYear(d: D): number; getMonth(d: D): number; getDate(d: D): number; getDay(d: D): number; add(d: D, count: number, granularity: LuDateGranularity): D; } declare abstract class ALuDateAdapter implements ILuDateAdapter { abstract forge(year: number, month: number, date: number): D; abstract forgeToday(): D; abstract forgeInvalid(): D; abstract isValid(d: D): boolean; compare(a: D, b: D, granularity: LuDateGranularity): number; abstract isParsable(text: string, granularity?: LuDateGranularity): boolean; abstract parse(text: string, granularity?: LuDateGranularity): D; abstract format(d: D, format: string): string; abstract clone(d: D): D; abstract getYear(d: D): number; abstract getMonth(d: D): number; abstract getDate(d: D): number; abstract getDay(d: D): number; abstract add(d: D, count: number, granularity: LuDateGranularity): D; } interface ILuNativeDateAdapterOptions { useUtc?: boolean; } declare const luDefaultNativeDateAdapterOptions: ILuNativeDateAdapterOptions; declare const LU_NATIVE_DATE_ADAPTER_OPTIONS: InjectionToken; declare class LuNativeDateAdapter extends ALuDateAdapter implements ILuDateAdapter { private _locale; private _options; private _regex; private _order; constructor(_locale: string, _options: ILuNativeDateAdapterOptions); private initOrder; private extract; isParsable(text: string, granularity?: LuDateGranularity): boolean; parse(text: string, granularity?: LuDateGranularity): Date; format(d: Date, format: string): string; forge(year: number, month: number, date: number): Date; forgeToday(): Date; forgeInvalid(): Date; isValid(d: Date): boolean; clone(d: Date): Date; getYear(d: Date): number; getMonth(d: Date): number; getDate(d: Date): number; getDay(d: Date): number; add(d: Date, count: number, granularity: LuDateGranularity): Date; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } /** bind to a string with iso 26001 format YYYY-MM-DD */ declare class LuStringDateAdapter extends ALuDateAdapter implements ILuDateAdapter { private _locale; private _nativeAdapter; constructor(_locale: string); forge(year: number, month: number, date: number): string; forgeToday(): string; forgeInvalid(): string; isValid(d: string): boolean; compare(a: string, b: string, granularity: LuDateGranularity): number; isParsable(text: string): boolean; parse(text: string, granularity: LuDateGranularity): string; format(d: string, format: string): string; clone(d: string): string; getYear(d: string): number; getMonth(d: string): number; getDate(d: string): number; getDay(d: string): number; add(d: string, count: number, granularity: LuDateGranularity): string; protected stringToDate(s: string): Date; protected dateToString(d: Date): string; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } interface ILuOnCloseSubscriber { onClose(): void; } declare abstract class ALuOnCloseSubscriber implements ILuOnCloseSubscriber { abstract onClose(): void; } interface ILuOnOpenSubscriber { onOpen(): void; } declare abstract class ALuOnOpenSubscriber implements ILuOnOpenSubscriber { abstract onOpen(): void; } interface ILuOnScrollBottomSubscriber { onScrollBottom(): void; } declare abstract class ALuOnScrollBottomSubscriber implements ILuOnScrollBottomSubscriber { abstract onScrollBottom(): void; } interface ILuGroup { key: TKey; items: TItem[]; } declare function generateId(): string; type Nil = null | undefined; declare const isNil: (value: T | Nil) => value is Nil; declare const isNotNil: (value: T) => value is NonNullable; declare const isNilOrEmptyString: (str: string | Nil) => str is Nil | ""; declare const isNotNilOrEmptyString: (str: string | Nil) => str is string; type PortalContent = string | TemplateRef | Type; declare const PORTAL_CONTEXT: InjectionToken; declare class PortalDirective implements OnDestroy { private viewContainerRef; private renderer; private templateRef; private injector; luPortal: i0.InputSignal>; luPortalContext: i0.InputSignal; private createdTextElement; private embeddedViewRef?; private componentRef?; constructor(); private render; ngOnDestroy(): void; private renderText; private destroyRenderedText; /** * Embeded view context should not be overwritten, but updated. * @see https://github.com/angular/angular/pull/51887 */ private updateEmbeddedViewContext; static ngTemplateContextGuard(_dir: PortalDirective, ctx: unknown): ctx is void; static ɵfac: i0.ɵɵFactoryDeclaration, never>; static ɵdir: i0.ɵɵDirectiveDeclaration, "[luPortal]", never, { "luPortal": { "alias": "luPortal"; "required": true; "isSignal": true; }; "luPortalContext": { "alias": "luPortalContext"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>; } /** * `RouterLinkParam` is an interface that mirrors the options you can pass to Angular `routerLink` helpers. * Commands refers to the link parameters array * https://angular.dev/api/router/RouterLink */ interface RouterLinkParam { commands: string | readonly string[] | UrlTree | null | undefined; relativeTo?: ActivatedRoute | null | undefined; queryParams?: Params | null | undefined; target?: string | undefined; fragment?: string | undefined; preserveFragment?: boolean; skipLocationChange?: boolean; replaceUrl?: boolean; } declare function isRouterLinkParam(routerLinkParam: RouterLinkParam | string | readonly string[] | UrlTree | null | undefined): routerLinkParam is RouterLinkParam; type SignalsValue = T extends readonly unknown[] ? TupleOfSignalValues : [RecordOfSignalValues]; type TupleOfSignalValues = T extends readonly [Signal, ...infer R] ? [U, ...TupleOfSignalValues] : []; type RecordOfSignalValues = { [K in keyof T]: T[K] extends Signal ? U : never; }; type EffectWithDepsInput = ReadonlyArray> | Record>; /** * Effect peut être dangereux car l'action accomplie peut elle-même déclencher des écritures dans des signaux. * C'est une mauvaise pratique, interdite par défaut par Angular. * La plupart du temps, seule la lecture des signaux est intéressante à tracker, pas les actions qui en découlent. */ declare function ɵeffectWithDeps(dependencies: T, action: (...values: [...SignalsValue, EffectCleanupRegisterFn]) => unknown, options?: CreateEffectOptions): EffectRef; /** * @deprecated use `LuTranslation` instead. */ interface ILuTranslation { en: T; fr: T; 'en-GB'?: T; 'en-US'?: T; es?: T; de?: T; pt?: T; } type LuTranslation = Record; declare function getIntl(translationsToken: InjectionToken> | InjectionToken>): T; /** * Creates configuration for an Angular signal input that supports internationalization with optional overrides. * * This function merges translations from one or more injection tokens and returns a tuple * compatible with Angular's `input()` function. Users can override specific translations * via the component's `[intl]` input while inheriting defaults from the provided tokens. * * @example * ```typescript * // In a component * intl = input(...intlInputOptions(LU_SOME_COMPONENT_TRANSLATIONS)); * * // Usage in template * * ``` * * @param tokens - One or more injection tokens containing locale-based translations * @returns A tuple of [defaultValue, inputOptions] to spread into Angular's `input()` function */ declare function intlInputOptions(token1: InjectionToken>): [T1, InputOptionsWithTransform>]; declare function intlInputOptions(token1: InjectionToken>, token2: InjectionToken>): [T1 & T2, InputOptionsWithTransform>]; declare class IntlParamsPipe implements PipeTransform { #private; transform(value: string, args: Record): string; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵpipe: i0.ɵɵPipeDeclaration; } interface ILuTree { value: T; children: ILuTree[]; disabled?: boolean; } export { ALuDateAdapter, ALuOnCloseSubscriber, ALuOnOpenSubscriber, ALuOnScrollBottomSubscriber, ELuDateGranularity, IntlParamsPipe, LU_NATIVE_DATE_ADAPTER_OPTIONS, LuNativeDateAdapter, LuStringDateAdapter, LuTypeGuardPipe, PORTAL_CONTEXT, PortalDirective, defaultBreakpoints, generateId, getIntl, intlInputOptions, isNil, isNilOrEmptyString, isNotNil, isNotNilOrEmptyString, isRouterLinkParam, luDefaultNativeDateAdapterOptions, ɵeffectWithDeps }; export type { At, Breakpoint, EffectWithDepsInput, EnumValue, ILuDateAdapter, ILuGroup, ILuNativeDateAdapterOptions, ILuOnCloseSubscriber, ILuOnOpenSubscriber, ILuOnScrollBottomSubscriber, ILuTranslation, ILuTree, LuDateGranularity, LuTranslation, PortalContent, ResponsiveConfig, ResponsiveProperty, RouterLinkParam };