mn-angular-lib 0.0.26 → 0.0.28

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.
@@ -401,19 +401,19 @@ const mnButtonVariants = tv({
401
401
  },
402
402
  compoundVariants: [
403
403
  // Fill
404
- { variant: 'fill', color: 'primary', class: 'bg-blue-600 text-white hover:bg-blue-700' },
404
+ { variant: 'fill', color: 'primary', class: 'bg-brand-600 text-white hover:bg-brand-700' },
405
405
  { variant: 'fill', color: 'secondary', class: 'bg-gray-600 text-white hover:bg-gray-700' },
406
406
  { variant: 'fill', color: 'danger', class: 'bg-red-600 text-white hover:bg-red-700' },
407
407
  { variant: 'fill', color: 'warning', class: 'bg-amber-500 text-black hover:bg-amber-600' },
408
408
  { variant: 'fill', color: 'success', class: 'bg-green-600 text-white hover:bg-green-700' },
409
409
  // Outline
410
- { variant: 'outline', color: 'primary', class: 'border-blue-600 text-blue-600 hover:bg-blue-100' },
410
+ { variant: 'outline', color: 'primary', class: 'border-brand-600 text-blue-600 hover:bg-brand-100' },
411
411
  { variant: 'outline', color: 'secondary', class: 'border-gray-600 text-gray-700 hover:bg-gray-100' },
412
412
  { variant: 'outline', color: 'danger', class: 'border-red-600 text-red-600 hover:bg-red-100' },
413
413
  { variant: 'outline', color: 'warning', class: 'border-amber-500 text-amber-600 hover:bg-amber-100' },
414
414
  { variant: 'outline', color: 'success', class: 'border-green-600 text-green-600 hover:bg-green-100' },
415
415
  // Text
416
- { variant: 'text', color: 'primary', class: 'text-blue-600 hover:bg-blue-100' },
416
+ { variant: 'text', color: 'primary', class: 'text-brand-600 hover:bg-brand-100' },
417
417
  { variant: 'text', color: 'secondary', class: 'text-gray-700 hover:bg-gray-100' },
418
418
  { variant: 'text', color: 'danger', class: 'text-red-600 hover:bg-red-100' },
419
419
  { variant: 'text', color: 'warning', class: 'text-amber-600 hover:bg-amber-100' },
@@ -1127,13 +1127,15 @@ class MnDualHorizontalImage {
1127
1127
  return this._images;
1128
1128
  }
1129
1129
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: MnDualHorizontalImage, deps: [], target: i0.ɵɵFactoryTarget.Component });
1130
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: MnDualHorizontalImage, isStandalone: true, selector: "lib-mn-dual-horizontal-image", inputs: { images: "images" }, ngImport: i0, template: "<div class=\"flex flex-col w-full -space-y-5 md:-space-y-10 lg:-space-y-5\">\n @for (image of images; track image.id) {\n <div class=\"w-[75%] overflow-hidden rounded-3xl shadow-md md:w-[65%] lg:w-[80%] first:self-start last:self-end last:mb-4\">\n <img [ngSrc]=\"image.url\" width=\"150\" height=\"100\" class=\"size-full object-cover\" [alt]=\"image.alt\" />\n </div>\n } @empty {\n <p>No images found</p>\n }\n</div>\n\n", dependencies: [{ kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "decoding", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }] });
1130
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: MnDualHorizontalImage, isStandalone: true, selector: "lib-mn-dual-horizontal-image", inputs: { images: "images" }, host: { classAttribute: "block" }, ngImport: i0, template: "<div class=\"flex flex-col h-full w-full -space-y-5 md:-space-y-10 lg:-space-y-5\">\n @for (image of images; track image.id) {\n <div class=\"w-[75%] h-1/2 overflow-hidden rounded-3xl shadow-md md:w-[65%] lg:w-[80%] first:self-start last:self-end last:mb-4\">\n <img [ngSrc]=\"image.url\" width=\"150\" height=\"100\" class=\"size-full object-cover\" [alt]=\"image.alt\" />\n </div>\n } @empty {\n <p>No images found</p>\n }\n</div>\n\n", dependencies: [{ kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "decoding", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }] });
1131
1131
  }
1132
1132
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: MnDualHorizontalImage, decorators: [{
1133
1133
  type: Component,
1134
1134
  args: [{ selector: 'lib-mn-dual-horizontal-image', standalone: true, imports: [
1135
1135
  NgOptimizedImage
1136
- ], template: "<div class=\"flex flex-col w-full -space-y-5 md:-space-y-10 lg:-space-y-5\">\n @for (image of images; track image.id) {\n <div class=\"w-[75%] overflow-hidden rounded-3xl shadow-md md:w-[65%] lg:w-[80%] first:self-start last:self-end last:mb-4\">\n <img [ngSrc]=\"image.url\" width=\"150\" height=\"100\" class=\"size-full object-cover\" [alt]=\"image.alt\" />\n </div>\n } @empty {\n <p>No images found</p>\n }\n</div>\n\n" }]
1136
+ ], host: {
1137
+ class: 'block'
1138
+ }, template: "<div class=\"flex flex-col h-full w-full -space-y-5 md:-space-y-10 lg:-space-y-5\">\n @for (image of images; track image.id) {\n <div class=\"w-[75%] h-1/2 overflow-hidden rounded-3xl shadow-md md:w-[65%] lg:w-[80%] first:self-start last:self-end last:mb-4\">\n <img [ngSrc]=\"image.url\" width=\"150\" height=\"100\" class=\"size-full object-cover\" [alt]=\"image.alt\" />\n </div>\n } @empty {\n <p>No images found</p>\n }\n</div>\n\n" }]
1137
1139
  }], propDecorators: { images: [{
1138
1140
  type: Input
1139
1141
  }] } });
@@ -1290,5 +1292,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
1290
1292
  * Generated bundle index. Do not edit.
1291
1293
  */
1292
1294
 
1293
- export { DEFAULT_MN_ALERT_CONFIG, MN_ALERT_CONFIG, MN_INPUT_FIELD_CONFIG, MN_INSTANCE_ID, MN_SECTION_PATH, MN_TEST_COMPONENT_CONFIG, MN_THEME, MN_THEME_DEFAULTS, MnAlertOutletComponent, MnAlertService, MnAlertStore, MnButton, MnConfigService, MnDualHorizontalImage, MnInformationCard, MnInputField, MnInstanceDirective, MnSectionDirective, MnTestComponent, MnThemeService, Test, dateTimeAdapter, defaultTextAdapter, injectTheme, injectThemeSignal, mnInformationCardVariants, mnInputFieldVariants, numberAdapter, pickAdapter, provideMnAlerts, provideMnComponentConfig, provideMnConfig, provideMnTheme, provideMnThemeDynamic };
1295
+ export { DEFAULT_MN_ALERT_CONFIG, MN_ALERT_CONFIG, MN_INPUT_FIELD_CONFIG, MN_INSTANCE_ID, MN_SECTION_PATH, MN_TEST_COMPONENT_CONFIG, MN_THEME, MN_THEME_DEFAULTS, MnAlertOutletComponent, MnAlertService, MnAlertStore, MnButton, MnConfigService, MnDualHorizontalImage, MnInformationCard, MnInputField, MnInstanceDirective, MnSectionDirective, MnTestComponent, MnThemeService, Test, dateTimeAdapter, defaultTextAdapter, injectTheme, injectThemeSignal, mnButtonVariants, mnInformationCardVariants, mnInputFieldVariants, numberAdapter, pickAdapter, provideMnAlerts, provideMnComponentConfig, provideMnConfig, provideMnTheme, provideMnThemeDynamic };
1294
1296
  //# sourceMappingURL=mn-angular-lib.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"mn-angular-lib.mjs","sources":["../../../projects/mn-angular-lib/src/lib/styles/theme.service.ts","../../../projects/mn-angular-lib/src/lib/styles/themes.ts","../../../projects/mn-angular-lib/src/lib/features/mn-alert/mn-alert.tokens.ts","../../../projects/mn-angular-lib/src/lib/features/mn-alert/mn-alert.providers.ts","../../../projects/mn-angular-lib/src/lib/features/mn-alert/mn-alert.store.ts","../../../projects/mn-angular-lib/src/lib/features/mn-alert/mn-alert.service.ts","../../../projects/mn-angular-lib/src/lib/features/mn-alert/mn-alert-outlet/mn-alert-outlet.ts","../../../projects/mn-angular-lib/src/lib/features/mn-alert/mn-alert-outlet/mn-alert-outlet.html","../../../projects/mn-angular-lib/src/lib/features/test/test.ts","../../../projects/mn-angular-lib/src/lib/features/test/test.html","../../../projects/mn-angular-lib/src/lib/features/mn-button/mn-buttonVariants.ts","../../../projects/mn-angular-lib/src/lib/features/mn-button/mn-button.ts","../../../projects/mn-angular-lib/src/lib/features/mn-button/mn-button.html","../../../projects/mn-angular-lib/src/lib/features/mn-input-field/mn-input-field-adapters.ts","../../../projects/mn-angular-lib/src/lib/features/mn-input-field/mn-input-fieldVariants.ts","../../../projects/mn-angular-lib/src/lib/features/mn-error-message/mn-error-message.ts","../../../projects/mn-angular-lib/src/lib/features/mn-error-message/mn-error-message.html","../../../projects/mn-angular-lib/src/lib/config/mn-config.service.ts","../../../projects/mn-angular-lib/src/lib/context/mn-context.tokens.ts","../../../projects/mn-angular-lib/src/lib/features/mn-input-field/mn-input-field.ts","../../../projects/mn-angular-lib/src/lib/features/mn-input-field/mn-input-field.html","../../../projects/mn-angular-lib/src/lib/config/mn-component-config.providers.ts","../../../projects/mn-angular-lib/src/lib/features/mn-test-component/mn-test-component.ts","../../../projects/mn-angular-lib/src/lib/features/mn-dual-horizontal-image/mn-dual-horizontal-image.ts","../../../projects/mn-angular-lib/src/lib/features/mn-dual-horizontal-image/mn-dual-horizontal-image.html","../../../projects/mn-angular-lib/src/lib/features/mn-information-card/mn-information-cardVariants.ts","../../../projects/mn-angular-lib/src/lib/features/mn-information-card/mn-information-card.ts","../../../projects/mn-angular-lib/src/lib/features/mn-information-card/mn-information-card.html","../../../projects/mn-angular-lib/src/lib/config/mn-config.types.ts","../../../projects/mn-angular-lib/src/lib/config/mn-config.providers.ts","../../../projects/mn-angular-lib/src/lib/context/mn-section.directive.ts","../../../projects/mn-angular-lib/src/lib/context/mn-instance.directive.ts","../../../projects/mn-angular-lib/src/public-api.ts","../../../projects/mn-angular-lib/src/mn-angular-lib.ts"],"sourcesContent":["import {Injectable, signal, WritableSignal, inject, Signal, effect} from '@angular/core';\nimport { MnTheme, MN_THEME_DEFAULTS } from './themes';\n\n/**\n * MnThemeService is responsible for managing the theme configuration of the application.\n * It provides methods to modify, reset, and access the current theme state.\n *\n * The theming is handled using a WritableSignal object, enabling reactive updates to the theme properties.\n */\n@Injectable({ providedIn: 'root' })\nexport class MnThemeService {\n private readonly _theme: WritableSignal<MnTheme> = signal<MnTheme>(MN_THEME_DEFAULTS);\n\n theme = this._theme.asReadonly();\n\n private initialTheme: Partial<MnTheme> = {};\n\n constructor() {\n effect(() => {\n const t = this.theme();\n document.documentElement.style.setProperty('--mn-primary', t.primary);\n });\n }\n\n /**\n * Updates the current theme by merging the provided partial theme properties with the existing theme.\n *\n * @param {Partial<MnTheme>} partial - An object containing partial theme properties to update the current theme.\n * @return {void} No return value.\n */\n setTheme(partial: Partial<MnTheme>) {\n const merged = { ...this._theme(), ...partial } as MnTheme;\n this._theme.set(merged);\n }\n\n /**\n * Sets the provided theme as the current theme.\n *\n * @param {MnTheme} next - The new theme to be set.\n * @return {void} This method does not return a value.\n */\n setAll(next: MnTheme) {\n this._theme.set(next);\n }\n\n /**\n * Resets the theme configuration to its default values.\n * This method updates the theme settings to reflect the predefined default theme constants.\n *\n * @return {void} Does not return any value.\n */\n reset(): void {\n this.setTheme(this.initialTheme);\n }\n\n setInitialTheme(initialTheme: Partial<MnTheme>) {\n const merged = { ...this._theme(), ...initialTheme } as MnTheme;\n this._theme.set(merged);\n this.initialTheme = initialTheme;\n }\n}\n\n/**\n * Provides a dynamically configurable theme service for the MnTheme module.\n * This function creates an Angular provider with a factory for initializing\n * the MnThemeService. If an initial theme configuration is supplied, it\n * will be used to set the theme upon service creation.\n *\n * @param {Partial<MnTheme>} [initial] An optional partial configuration object\n * for initializing the theme within the MnThemeService.\n * @return {Object} An object containing the provider configuration for the MnThemeService.\n */\nexport function provideMnThemeDynamic(initial?: Partial<MnTheme>) {\n return {\n provide: MnThemeService,\n useFactory: () => {\n const svc = new MnThemeService();\n if (initial) {\n svc.setInitialTheme({ ...initial });\n }\n return svc;\n }\n };\n}\n","import { InjectionToken, inject, Signal, computed } from '@angular/core';\nimport { MnThemeService } from './theme.service';\n\n/**\n * Represents the theme configuration for a UI component or application.\n *\n * This interface defines the structure for theming properties such as primary colors,\n * border radius, and padding specifications. It allows customization of visual appearance.\n *\n * Properties:\n * - `primary`: Specifies the primary color used in the theme, represented as a string.\n * - `radius`: Defines the border radius applied to elements for rounded corners, represented as a string.\n * - `padding`: Determines the default padding size for elements, represented as a string.\n */\nexport interface MnTheme {\n primary: string;\n radius: string;\n padding: string;\n}\n\n/**\n * Default theme configuration object for the MN framework.\n *\n * This variable contains the default values for the theme, including primary color,\n * border radius, and padding. The values are retrieved using the `getCssVar` function,\n * which falls back to predefined default values if the corresponding CSS variables are not set.\n *\n * Properties:\n * - `primary`: The primary color used across the theme.\n * - `radius`: The border radius applied to UI elements.\n * - `padding`: The default padding applied to components.\n */\nexport const MN_THEME_DEFAULTS: MnTheme = {\n primary: getCssVar('--mn-primary', '#ff0000'),\n radius: getCssVar('--mn-radius', '0.375rem'),\n padding: getCssVar('--mn-padding', '0.5rem 0.75rem'),\n};\n\n/**\n * Retrieves the value of a CSS variable from the root element.\n *\n * @param {string} name - The name of the CSS variable to retrieve, including the leading '--'.\n * @param {string} [fallback=''] - The fallback value to return if the variable is not set or empty.\n * @return {string} The value of the CSS variable, trimmed of whitespace. Returns the fallback value if the variable is not set.\n */\nfunction getCssVar(name: string, fallback: string = ''): string {\n const value = getComputedStyle(document.documentElement).getPropertyValue(name);\n return value ? value.trim() : fallback;\n}\n\n/**\n * Injection token used to provide a customizable theme configuration for the application.\n *\n * This token allows the injection of a theme object that can be used application-wide\n * for defining consistent styles, colors, and other design-related settings. By default,\n * it uses the fallback configuration `MN_THEME_DEFAULTS`.\n *\n * Scope: The token is provided in the root injector, ensuring it is available\n * throughout the application.\n *\n * Factory: The default factory function returns the value of `MN_THEME_DEFAULTS`,\n * providing a default theme configuration if no custom theme is explicitly provided.\n */\nexport const MN_THEME = new InjectionToken<MnTheme>('MN_THEME', {\n providedIn: 'root',\n factory: () => MN_THEME_DEFAULTS,\n});\n\n/**\n * Provides a theme configuration by merging the partial values with the default theme values.\n *\n * @param {Partial<MnTheme>} partial - A partial MnTheme object containing theme customizations.\n * @return {object} An object with provide and useValue properties to configure the theme.\n */\nexport function provideMnTheme(partial: Partial<MnTheme>) {\n return {\n provide: MN_THEME,\n useValue: { ...MN_THEME_DEFAULTS, ...partial },\n };\n}\n\n/**\n * Injects the theme configuration into the application.\n * This method attempts to retrieve a theme instance from the dependency injection system.\n * If no theme instance is found, it falls back to default theme settings.\n *\n * @return {MnTheme} The injected theme instance or the default theme settings.\n */\nexport function injectTheme(): MnTheme {\n const t = inject<MnTheme>(MN_THEME, { optional: true });\n return t ?? MN_THEME_DEFAULTS;\n}\n\n/**\n * Injects a theme signal, allowing access to the current theme state.\n * This method retrieves the theme signal from the MnThemeService, if available.\n * If the service is not available, it falls back to a computed snapshot of the theme.\n *\n * @return {Signal<MnTheme>} The theme signal representing the current theme.\n */\nexport function injectThemeSignal(): Signal<MnTheme> {\n const svc = inject(MnThemeService, { optional: true });\n\n if (svc) {\n return (('asReadonly' in svc.theme) ? (svc.theme as any).asReadonly() : svc.theme) as Signal<MnTheme>;\n }\n const snap = injectTheme();\n return computed(() => snap);\n}\n","// projects/mn-angular-lib/src/lib/mn-mn-alert/mn-mn-alert.tokens.ts\nimport { InjectionToken } from '@angular/core';\nimport { MnAlert } from './mn-alert.types';\n\nexport type MnAlertKind = 'success' | 'info' | 'warning' | 'error' | 'default';\n\nexport interface MnAlertConfig {\n durations?: Partial<Record<MnAlertKind, number | null>>;\n cssClasses?: Partial<Record<MnAlertKind, string>>;\n icons?: Partial<Record<MnAlertKind, unknown>>;\n fallbackDuration?: number | null;\n finalize?: (a: MnAlert) => MnAlert;\n}\n\nexport const MN_ALERT_CONFIG = new InjectionToken<MnAlertConfig>('MN_ALERT_CONFIG');\n\nexport const DEFAULT_MN_ALERT_CONFIG: Required<MnAlertConfig> = {\n durations: { success: 3000, info: 4000, warning: 5000, error: 7000, default: 4000 },\n cssClasses: {\n success: 'mn-alert-success',\n info: 'mn-alert-info',\n warning: 'mn-alert-warning',\n error: 'mn-alert-error',\n default: 'alert'\n },\n icons: {},\n fallbackDuration: 4000,\n finalize: (a) => a\n};\n","// projects/mn-angular-lib/src/lib/mn-mn-alert/mn-mn-alert.providers.ts\nimport { Provider } from '@angular/core';\nimport { MN_ALERT_CONFIG, MnAlertConfig, DEFAULT_MN_ALERT_CONFIG } from './mn-alert.tokens';\n\nexport function provideMnAlerts(config: MnAlertConfig = {}): Provider {\n const merged: MnAlertConfig = {\n ...DEFAULT_MN_ALERT_CONFIG,\n ...config,\n durations: { ...DEFAULT_MN_ALERT_CONFIG.durations, ...(config.durations ?? {}) },\n cssClasses: { ...DEFAULT_MN_ALERT_CONFIG.cssClasses, ...(config.cssClasses ?? {}) },\n icons: { ...DEFAULT_MN_ALERT_CONFIG.icons, ...(config.icons ?? {}) }\n };\n return { provide: MN_ALERT_CONFIG, useValue: merged };\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { MnAlert, MnAlertId } from './mn-alert.types';\nimport { DEFAULT_MN_ALERT_CONFIG } from './mn-alert.tokens';\n\nlet COUNTER = 0;\nconst uid = () => `mn_${++COUNTER}`;\n\n@Injectable({ providedIn: 'root' })\nexport class MnAlertStore {\n private readonly _alerts$ = new BehaviorSubject<MnAlert[]>([]);\n readonly alerts$ = this._alerts$.asObservable();\n\n show(partial: Omit<MnAlert, 'id'>): MnAlertId {\n // Ensure every alert has a numeric duration: use provided or fall back to per-kind default\n const computedDuration = (partial as any).duration ?? (DEFAULT_MN_ALERT_CONFIG.durations as any)[(partial as any).kind] ?? DEFAULT_MN_ALERT_CONFIG.fallbackDuration;\n const a: MnAlert = { id: uid(), ...partial, duration: computedDuration } as MnAlert;\n this._alerts$.next([...this._alerts$.value, a]);\n\n if (typeof a.duration === 'number' && a.duration > 0) {\n setTimeout(() => this.dismiss(a.id), a.duration);\n }\n return a.id;\n }\n\n dismiss(id: MnAlertId) {\n const list = this._alerts$.value;\n if (list.some(x => x.id === id)) {\n this._alerts$.next(list.filter(x => x.id !== id));\n }\n }\n\n clear() {\n this._alerts$.next([]);\n }\n}\n","// projects/mn-angular-lib/src/lib/mn-mn-alert/mn-mn-alert.service.ts\nimport { Injectable, Inject, Optional } from '@angular/core';\nimport { MnAlertStore } from './mn-alert.store';\nimport { MnAlert, MnAlertId } from './mn-alert.types';\nimport { MN_ALERT_CONFIG, DEFAULT_MN_ALERT_CONFIG, MnAlertConfig, MnAlertKind } from './mn-alert.tokens';\n\nexport interface MnShowInput {\n title: string;\n subTitle?: string;\n duration?: number;\n icon?: unknown;\n cssClass?: string;\n meta?: Record<string, unknown>;\n kind: MnAlertKind;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class MnAlertService {\n private readonly cfg: Required<MnAlertConfig>;\n private readonly userDurations?: Partial<Record<MnAlertKind, number | null>>;\n private readonly hasUserDurations: boolean;\n\n constructor(\n private readonly store: MnAlertStore,\n @Optional() @Inject(MN_ALERT_CONFIG) cfg: MnAlertConfig | null\n ) {\n this.userDurations = cfg?.durations;\n this.hasUserDurations = !!cfg?.durations;\n this.cfg = {\n ...DEFAULT_MN_ALERT_CONFIG,\n ...(cfg ?? {}),\n // Do not pre-merge durations; keep defaults separate and use logic in kind()\n durations: DEFAULT_MN_ALERT_CONFIG.durations,\n cssClasses: { ...DEFAULT_MN_ALERT_CONFIG.cssClasses, ...(cfg?.cssClasses ?? {}) },\n icons: { ...DEFAULT_MN_ALERT_CONFIG.icons, ...(cfg?.icons ?? {}) }\n };\n }\n\n show(input: MnShowInput): MnAlertId {\n // Always ensure a numeric duration is set\n let duration = input.duration;\n if (duration == null) {\n // Prefer user defaultDuration if provided and not null, otherwise use library per-kind default\n const userDefault = this.cfg.fallbackDuration;\n if (typeof userDefault === 'number') {\n duration = userDefault;\n } else {\n duration = DEFAULT_MN_ALERT_CONFIG.durations[input.kind as keyof typeof DEFAULT_MN_ALERT_CONFIG.durations] as number;\n }\n }\n\n const a: Omit<MnAlert, 'id'> = {\n title: input.title,\n subTitle: input.subTitle,\n duration,\n icon: input.icon,\n cssClass: input.cssClass,\n meta: input.meta,\n kind: input.kind\n };\n return this.store.show(this.cfg.finalize(a as MnAlert));\n }\n\n success(title: string, subTitle?: string, extra?: Partial<MnShowInput>) {\n return this.kind('success', title, subTitle, extra);\n }\n info(title: string, subTitle?: string, extra?: Partial<MnShowInput>) {\n return this.kind('info', title, subTitle, extra);\n }\n warning(title: string, subTitle?: string, extra?: Partial<MnShowInput>) {\n return this.kind('warning', title, subTitle, extra);\n }\n error(title: string, subTitle?: string, extra?: Partial<MnShowInput>) {\n return this.kind('error', title, subTitle, extra);\n }\n\n dismiss(id: MnAlertId) { this.store.dismiss(id); }\n clear() { this.store.clear(); }\n\n private kind(kind: MnAlertKind, title: string, subTitle?: string, extra?: Partial<MnShowInput>) {\n let duration: number | null | undefined = extra?.duration;\n\n if (duration == null) {\n if (this.hasUserDurations) {\n const userDur = this.userDurations?.[kind];\n if (typeof userDur === 'number') {\n duration = userDur;\n } else {\n // userDur is undefined or null -> fallback to user defaultDuration if numeric\n if (typeof this.cfg.fallbackDuration === 'number') {\n duration = this.cfg.fallbackDuration;\n } else {\n duration = this.cfg.durations[kind as keyof typeof this.cfg.durations];\n }\n }\n } else {\n // No user durations provided at all; use library defaults per kind\n duration = this.cfg.durations[kind as keyof typeof this.cfg.durations];\n }\n }\n\n const cssClass = extra?.cssClass ?? this.cfg.cssClasses[kind];\n const icon = (extra?.icon ?? this.cfg.icons[kind]) as unknown;\n\n return this.show({ title, subTitle, duration: duration as number, cssClass, icon, meta: extra?.meta , kind: kind});\n }\n}\n","\nimport {Component, Input, TemplateRef, ChangeDetectionStrategy, inject} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Observable } from 'rxjs';\nimport {MnAlertStore} from '../mn-alert.store';\nimport {MnAlert} from '../mn-alert.types';\n\nexport interface MnAlertTemplateContext {\n $implicit: MnAlert;\n alert: MnAlert;\n dismiss: () => void;\n}\n\n@Component({\n selector: 'mn-alert-outlet',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './mn-alert-outlet.html',\n styleUrl: './mn-alert-outlet.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MnAlertOutletComponent {\n @Input({ required: true }) template!: TemplateRef<MnAlertTemplateContext>;\n\n private store = inject(MnAlertStore);\n alerts$: Observable<MnAlert[]> = this.store.alerts$;\n\n constructor() {}\n\n dismissAlert(id: string) {\n this.store.dismiss(id);\n }\n\n trackById = (_: number, a: MnAlert) => a.id;\n\n contextFor(a: MnAlert) {\n return {\n $implicit: a,\n alert: a,\n dismiss: () => this.dismissAlert(a.id)\n } as const;\n }\n\n}\n","@if (alerts$ | async; as alerts) {\n @for (a of alerts; track trackById($index, a)) {\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"contextFor(a)\">\n </ng-container>\n }\n}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'lib-test',\n standalone: true,\n imports: [ ],\n templateUrl: './test.html',\n styleUrl: './test.css',\n})\nexport class Test {\n}\n","<p>test works!</p>\n","import { tv, type VariantProps } from 'tailwind-variants';\n\nexport const mnButtonVariants = tv({\n base: 'hover:cursor-pointer',\n variants: {\n size: {\n sm: 'px-2 py-1 text-sm',\n md: 'px-3 py-1.5 text-base',\n lg: 'px-4 py-2 text-lg',\n },\n\n variant: {\n fill: '',\n outline: 'bg-transparent border',\n text: 'bg-transparent',\n },\n\n // Intentionally empty; resolved via compoundVariants\n color: {\n primary: '',\n secondary: '',\n danger: '',\n warning: '',\n success: '',\n },\n\n borderRadius: {\n none: 'rounded-none',\n xs: 'rounded-xs',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n two_xl: 'rounded-2xl',\n three_xl: 'rounded-3xl',\n four_xl: 'rounded-4xl',\n },\n disabled: {\n true: 'opacity-50 pointer-events-none',\n }\n },\n\n compoundVariants: [\n // Fill\n { variant: 'fill', color: 'primary', class: 'bg-blue-600 text-white hover:bg-blue-700' },\n { variant: 'fill', color: 'secondary', class: 'bg-gray-600 text-white hover:bg-gray-700' },\n { variant: 'fill', color: 'danger', class: 'bg-red-600 text-white hover:bg-red-700' },\n { variant: 'fill', color: 'warning', class: 'bg-amber-500 text-black hover:bg-amber-600' },\n { variant: 'fill', color: 'success', class: 'bg-green-600 text-white hover:bg-green-700' },\n\n // Outline\n { variant: 'outline', color: 'primary', class: 'border-blue-600 text-blue-600 hover:bg-blue-100' },\n { variant: 'outline', color: 'secondary', class: 'border-gray-600 text-gray-700 hover:bg-gray-100' },\n { variant: 'outline', color: 'danger', class: 'border-red-600 text-red-600 hover:bg-red-100' },\n { variant: 'outline', color: 'warning', class: 'border-amber-500 text-amber-600 hover:bg-amber-100' },\n { variant: 'outline', color: 'success', class: 'border-green-600 text-green-600 hover:bg-green-100' },\n\n // Text\n { variant: 'text', color: 'primary', class: 'text-blue-600 hover:bg-blue-100' },\n { variant: 'text', color: 'secondary', class: 'text-gray-700 hover:bg-gray-100' },\n { variant: 'text', color: 'danger', class: 'text-red-600 hover:bg-red-100' },\n { variant: 'text', color: 'warning', class: 'text-amber-600 hover:bg-amber-100' },\n { variant: 'text', color: 'success', class: 'text-green-600 hover:bg-green-100' },\n ],\n\n defaultVariants: {\n size: 'md',\n variant: 'fill',\n color: 'primary',\n borderRadius: 'xl',\n disabled: false,\n },\n});\n\nexport type MnButtonVariants = VariantProps<typeof mnButtonVariants>;\n","import {Component, HostBinding, Input } from '@angular/core';\nimport { MnButtonTypes } from './mn-buttonTypes';\nimport { mnButtonVariants } from './mn-buttonVariants';\n\n@Component({\n selector: 'button[mnButton], a[mnButton]',\n standalone: true,\n templateUrl: './mn-button.html',\n})\nexport class MnButton {\n @Input() data: Partial<MnButtonTypes> = {};\n\n // Bind the computed classes to the host element\n @HostBinding('class')\n get hostClasses(): string {\n return mnButtonVariants({\n size: this.data.size,\n variant: this.data.variant,\n color: this.data.color,\n borderRadius: this.data.borderRadius,\n disabled: this.data.disabled,\n });\n }\n // For accessibility (works for both <button> and <a>)\n @HostBinding('attr.aria-disabled')\n get ariaDisabled() {\n return this.data.disabled ? 'true' : null;\n }\n\n // Only meaningful for <button>. For <a> it does nothing semantically.\n @HostBinding('attr.disabled')\n get disabledAttr() {\n return this.data.disabled ? '' : null;\n }\n\n // Make disabled anchors unfocusable + prevent activation\n @HostBinding('attr.tabindex')\n get tabIndex() {\n return this.data.disabled ? '-1' : null;\n }\n\n}\n","<ng-content></ng-content>\n","/**\n * MnInputField Adapters\n *\n * This module implements the Adapter Pattern to handle type-specific behavior\n * for different HTML input types in the MnInputField component.\n *\n * The adapter pattern allows the component to support multiple input types\n * (text, number, date, time, etc.) without coupling the component logic to\n * type-specific implementations. Each adapter handles:\n * - Parsing: converting raw string input to the appropriate data type\n * - Formatting: converting typed values back to string for display\n * - Attributes: providing type-specific DOM attributes (min, max, step, inputmode)\n * - Validation: implementing type-specific validation rules\n *\n * This approach keeps the component code clean and makes it easy to add\n * support for new input types by creating new adapters.\n */\n\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\nimport { MnInputDateTimeProps, MnInputProps, MnInputType } from './mn-input-fieldTypes';\n\n/**\n * DOM attributes that can be dynamically set on input elements.\n * These attributes are type-specific and provided by adapters.\n */\nexport type MnDomAttrs = {\n /** Minimum value for date/time/number inputs */\n min?: string | null;\n /** Maximum value for date/time/number inputs */\n max?: string | null;\n /** Step increment for number/date/time inputs */\n step?: string | null;\n /** Mobile keyboard hint (e.g., 'decimal' for number inputs) */\n inputmode?: string | null;\n};\n\n/**\n * Adapter interface for handling input type-specific behavior.\n *\n * Each adapter implementation defines how to handle a specific input type\n * (or group of related types) throughout the component lifecycle.\n *\n * @template TOut - The output type after parsing (e.g., string | null, number | null)\n */\nexport interface MnInputAdapter<TOut = string | null> {\n /**\n * Parses the raw string value from the input element into the typed value\n * that will be sent to the FormControl.\n *\n * @param raw - Raw string value from the input element\n * @returns Typed value to store in the FormControl\n *\n * @example\n * // Text adapter\n * parse('hello') // => 'hello'\n * parse('') // => null\n *\n * // Number adapter\n * parse('42') // => 42\n * parse('') // => null\n * parse('abc') // => null\n */\n parse(raw: string): TOut;\n\n /**\n * Formats the typed value from the FormControl into a string\n * that will be displayed in the input element.\n *\n * @param val - Typed value from the FormControl\n * @returns String representation for the input element's value attribute\n *\n * @example\n * // Text adapter\n * format('hello') // => 'hello'\n * format(null) // => ''\n *\n * // Number adapter\n * format(42) // => '42'\n * format(null) // => ''\n */\n format(val: unknown): string;\n\n /**\n * Returns type-specific DOM attributes for the input element.\n * These attributes are applied dynamically based on the input type and props.\n *\n * @param props - Input field properties\n * @returns Object containing DOM attributes (min, max, step, inputmode)\n *\n * @example\n * // Date adapter with date range\n * attrs({ startDate: '2024-01-01', endDate: '2024-12-31' })\n * // => { min: '2024-01-01', max: '2024-12-31' }\n *\n * // Number adapter\n * attrs({}) // => { inputmode: 'decimal' }\n */\n attrs(props: MnInputProps): MnDomAttrs;\n\n /**\n * Performs type-specific validation on the current input value.\n * This validation runs in addition to Angular's built-in validators.\n *\n * @param props - Input field properties (may contain validation constraints)\n * @param control - The AbstractControl being validated\n * @param currentRaw - Current raw string value from the input element\n * @returns ValidationErrors object if invalid, null if valid\n *\n * @example\n * // Date adapter validation\n * validate(props, control, '2024-06-15')\n * // Returns { mnMin: { min: '2024-07-01', actual: '2024-06-15' } }\n * // if startDate is '2024-07-01'\n */\n validate(props: MnInputProps, control: AbstractControl, currentRaw: string | null): ValidationErrors | null;\n}\n\n/**\n * Utility function to convert empty strings to null.\n * This is a common pattern for optional form fields where empty input\n * should be treated as \"no value\" rather than an empty string.\n *\n * @param raw - Raw input string\n * @returns The input string if non-empty, null if empty\n *\n * @example\n * emptyToNull('hello') // => 'hello'\n * emptyToNull('') // => null\n */\nconst emptyToNull = (raw: string): string | null => (raw === '' ? null : raw);\n\n/**\n * Default adapter for text-based input types.\n * Used for: text, email, password, search, tel, url\n *\n * Behavior:\n * - Empty strings are converted to null\n * - Values are stored as strings in the FormControl\n * - No special DOM attributes\n * - No additional validation (relies on Angular's built-in validators)\n */\nexport const defaultTextAdapter: MnInputAdapter<string | null> = {\n parse: (raw) => emptyToNull(raw),\n format: (val) => (val == null ? '' : String(val)),\n attrs: () => ({}),\n validate: () => null,\n};\n\n/**\n * Adapter for date and time input types.\n * Used for: date, time, datetime-local\n *\n * Behavior:\n * - Empty strings are converted to null\n * - Values are stored as ISO 8601 strings in the FormControl\n * - Provides min/max attributes from startDate/endDate props\n * - Validates date/time ranges using string comparison\n *\n * Note: String comparison works for ISO 8601 dates/times because they are\n * lexicographically ordered (e.g., '2024-01-15' < '2024-12-31').\n */\nexport const dateTimeAdapter: MnInputAdapter<string | null> = {\n parse: (raw) => emptyToNull(raw),\n format: (val) => (val == null ? '' : String(val)),\n attrs: (props) => ({\n min: (props as MnInputDateTimeProps).startDate ?? null,\n max: (props as MnInputDateTimeProps).endDate ?? null,\n }),\n validate: (props, _control, currentRaw) => {\n const value = currentRaw;\n if (!value) return null; // Don't validate empty values (use 'required' validator for that)\n\n const min = (props as MnInputDateTimeProps).startDate as string | undefined;\n const max = (props as MnInputDateTimeProps).endDate as string | undefined;\n\n // Validate minimum date/time constraint\n if (min && value < min) {\n return { mnMin: { min, actual: value } };\n }\n\n // Validate maximum date/time constraint\n if (max && value > max) {\n return { mnMax: { max, actual: value } };\n }\n\n return null;\n },\n};\n\n/**\n * Adapter for number input type.\n *\n * Behavior:\n * - Empty strings are converted to null\n * - Valid numbers are parsed to number type\n * - Invalid numbers (NaN, Infinity) are converted to null\n * - Values are stored as numbers (or null) in the FormControl\n * - Sets inputmode='decimal' for optimized mobile keyboards\n * - No additional validation (relies on Angular's built-in validators)\n *\n * Note: The browser's native number input validation handles\n * basic number format validation automatically.\n */\nexport const numberAdapter: MnInputAdapter<number | null> = {\n parse: (raw) => {\n if (raw === '') return null;\n const num = Number(raw);\n return Number.isFinite(num) ? num : null;\n },\n format: (val) => (val == null ? '' : String(val)),\n attrs: () => ({\n inputmode: 'decimal',\n }),\n validate: () => null,\n};\n\n/**\n * Selects the appropriate adapter based on the input type.\n * This is the main factory function used by the MnInputField component\n * to determine which adapter to use for a given input type.\n *\n * @param type - The input type (e.g., 'text', 'email', 'date', 'number')\n * @returns The appropriate adapter instance\n *\n * @example\n * pickAdapter('text') // => defaultTextAdapter\n * pickAdapter('email') // => defaultTextAdapter\n * pickAdapter('date') // => dateTimeAdapter\n * pickAdapter('number') // => numberAdapter\n */\nexport function pickAdapter(type: MnInputType): MnInputAdapter<any> {\n // Date/time inputs use the dateTimeAdapter for range validation\n if (type === 'date' || type === 'time' || type === 'datetime-local') {\n return dateTimeAdapter;\n }\n\n // Number inputs use the numberAdapter for type conversion\n if (type === 'number') {\n return numberAdapter;\n }\n\n // All other input types use the default text adapter\n return defaultTextAdapter;\n}\n","import { tv, type VariantProps } from 'tailwind-variants';\n\nexport const mnInputFieldVariants = tv({\n base: 'bg-white border-1 border-gray-500 placeholder-gray-500 text-sm',\n variants: {\n\n shadow: {\n true: 'shadow-lg',\n },\n size: {\n sm: 'p-2',\n md: 'p-3',\n lg: 'p-4',\n },\n borderRadius: {\n none: 'rounded-none',\n xs: 'rounded-xs',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n two_xl: 'rounded-2xl',\n three_xl: 'rounded-3xl',\n four_xl: 'rounded-4xl',\n },\n fullWidth: {\n true: 'w-full',\n }\n },\n defaultVariants: {\n size: 'md',\n borderRadius: 'md',\n }\n});\n\nexport type MnInputVariants = VariantProps<typeof mnInputFieldVariants>;\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'lib-mn-error-message',\n imports: [],\n templateUrl: './mn-error-message.html',\n})\nexport class MnErrorMessage {\n @Input({ required: true }) errorMessage! :string;\n @Input({ required: true }) id!: string;\n}\n","<div [id]=\"id + '-error'\" class=\"text-red-500 mt-2 text-sm\">\n {{ errorMessage }}\n</div>\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { firstValueFrom } from 'rxjs';\nimport { MnConfigFile } from './mn-config.types';\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return (\n typeof value === 'object' &&\n value !== null &&\n Object.prototype.toString.call(value) === '[object Object]'\n );\n}\n\n@Injectable({ providedIn: 'root' })\nexport class MnConfigService {\n private _config: MnConfigFile | null = null;\n\n constructor(private readonly http: HttpClient) {}\n\n /**\n * Load the configuration JSON from the provided URL and cache it in memory.\n * Consumers should typically call this via the APP_INITIALIZER helper.\n */\n async load(url: string): Promise<void> {\n let json = await firstValueFrom(this.http.get<unknown>(url, { responseType: 'json' as const }));\n if (typeof json === 'string') {\n try {\n json = JSON.parse(json);\n } catch {\n json = {};\n }\n }\n const cfg = (isPlainObject(json) ? json : {}) as any;\n const defaults = (isPlainObject(cfg.defaults) ? cfg.defaults : {}) as Record<string, unknown>;\n const overrides = isPlainObject(cfg.overrides) ? cfg.overrides : cfg.overrides ?? {};\n this._config = { defaults, overrides };\n }\n\n /**\n * Resolve a configuration object for a component, optionally scoped to a section path\n * and optionally overridden by an instance id.\n */\n resolve<T extends object = any>(\n componentName: string,\n sectionPath: string[] = [],\n instanceId?: string,\n ): T {\n const baseConfig: Record<string, unknown> = isPlainObject(this._config?.defaults)\n ? (isPlainObject((this._config as MnConfigFile).defaults[componentName])\n ? { ...(this._config as MnConfigFile).defaults[componentName] as Record<string, unknown> }\n : {})\n : {};\n\n const leaf = this.walkOverrides(this._config?.overrides ?? {}, sectionPath);\n\n let resolved: Record<string, unknown> = baseConfig;\n\n if (leaf && isPlainObject((leaf as any)[componentName])) {\n resolved = this.deepMerge(resolved, (leaf as any)[componentName] as Record<string, unknown>);\n }\n\n if (instanceId) {\n const instKey = `#${instanceId}`;\n if (leaf && isPlainObject((leaf as any)[instKey])) {\n resolved = this.deepMerge(resolved, (leaf as any)[instKey] as Record<string, unknown>);\n }\n }\n\n console.debug(`[MnConfig] Resolving for ${componentName}`, {\n sectionPath,\n instanceId,\n resolved,\n });\n\n return resolved as T;\n }\n\n /**\n * Walk the overrides nested object using the provided section path and return the leaf node.\n * If any segment is missing or the current node is not a plain object, returns undefined.\n */\n walkOverrides(overridesRoot: unknown, sectionPath: string[]): unknown | undefined {\n let node: unknown = overridesRoot;\n for (const segment of sectionPath) {\n if (!isPlainObject(node)) return undefined;\n node = (node as Record<string, unknown>)[segment];\n if (node === undefined) return undefined;\n }\n return node;\n }\n\n /**\n * Deep merge two plain-object trees. Arrays and non-plain values are replaced by the patch.\n * Does not mutate inputs; returns a new object.\n */\n deepMerge<A extends Record<string, any>, B extends Record<string, any>>(base: A, patch: B): A & B {\n const out: Record<string, any> = { ...base };\n for (const key of Object.keys(patch)) {\n const bVal = (base as any)[key];\n const pVal = (patch as any)[key];\n\n if (isPlainObject(bVal) && isPlainObject(pVal)) {\n out[key] = this.deepMerge(bVal, pVal);\n } else {\n // replace for arrays, primitives, null, undefined, and non-plain objects\n out[key] = pVal;\n }\n }\n return out as A & B;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\n/**\n * Represents the current section path based on nested mn-section directives.\n */\nexport const MN_SECTION_PATH = new InjectionToken<string[]>(\n 'MN_SECTION_PATH',\n {\n providedIn: 'root',\n factory: () => [],\n },\n);\n\n/**\n * Represents the current component instance id provided by [mn-instance].\n */\nexport const MN_INSTANCE_ID = new InjectionToken<string | null>(\n 'MN_INSTANCE_ID',\n {\n providedIn: 'root',\n factory: () => null,\n },\n);\n","import {Component, inject, InjectionToken, Input, OnInit, Optional, Self} from '@angular/core';\nimport {NgClass} from '@angular/common';\nimport {MnInputProps, MnErrorMessageData, MnInputFieldUIConfig} from './mn-input-fieldTypes';\nimport {AbstractControl, NgControl, ValidationErrors, Validators} from '@angular/forms';\nimport {pickAdapter} from './mn-input-field-adapters';\nimport {mnInputFieldVariants} from './mn-input-fieldVariants';\nimport {MnErrorMessage} from '../mn-error-message/mn-error-message';\nimport {MnConfigService} from \"../../config/mn-config.service\";\nimport {MN_INSTANCE_ID, MN_SECTION_PATH} from \"../../context/mn-context.tokens\";\n\nexport const MN_INPUT_FIELD_CONFIG = new InjectionToken<MnInputFieldUIConfig>('MN_INPUT_FIELD_CONFIG');\n\n/**\n * MnInputField Component\n *\n * A flexible, accessible input field component that implements Angular's ControlValueAccessor\n * and Validator interfaces. Supports multiple input types, custom validation messages,\n * and configurable error display (single or multiple errors).\n *\n * Features:\n * - Works with Angular Reactive Forms (FormControl, FormGroup)\n * - Supports standard and date/time input types\n * - Built-in error messages with internationalization support\n * - Custom error messages per field\n * - Priority-based error display or show all errors\n * - Full accessibility (ARIA attributes)\n * - Type-safe adapter pattern for different input types\n *\n * @example\n * ```typescript\n * <mn-input-field\n * formControlName=\"email\"\n * [props]=\"{\n * id: 'email',\n * type: 'email',\n * label: 'Email Address',\n * size: 'md',\n * borderRadius: 'md',\n * errorMessages: { required: 'Email is required' }\n * }\"\n * ></mn-input-field>\n * ```\n */\n@Component({\n selector: 'mn-input-field',\n standalone: true,\n imports: [NgClass, MnErrorMessage],\n templateUrl: './mn-input-field.html',\n})\nexport class MnInputField implements OnInit {\n /** Resolved UI configuration for the input field */\n protected uiConfig: MnInputFieldUIConfig = {};\n\n /** Configuration properties for the input field */\n @Input({ required: true }) props!: MnInputProps;\n\n private readonly configService = inject(MnConfigService);\n private readonly sectionPath = inject(MN_SECTION_PATH, { optional: true }) ?? [];\n private readonly explicitInstanceId = inject(MN_INSTANCE_ID, { optional: true });\n\n /** Current raw string value of the input element */\n value: string | null = null;\n\n /** Whether the input is disabled */\n isDisabled = false;\n\n /** Callback function to notify Angular forms of value changes */\n private onChange: (val: any) => void = () => {};\n\n /** Callback function to notify Angular forms when input is touched/blurred */\n private onTouched: () => void = () => {};\n\n /**\n * Built-in default error messages in English.\n * These are used when useBuiltInErrorMessages is true (default).\n * Can be overridden per-field using props.errorMessages.\n */\n private readonly builtInErrorMessages: Record<string, MnErrorMessageData> = {\n required: 'This field is required',\n email: 'Please enter a valid email address',\n minlength: (args: any) => `Minimum ${args.requiredLength} characters required`,\n maxlength: (args: any) => `Maximum ${args.requiredLength} characters allowed`,\n mnMin: (args: any) => `Date/time must be from ${args.min} onwards`,\n mnMax: (args: any) => `Date/time must be up to ${args.max}`,\n };\n\n /**\n * Constructor - Registers this component as the ControlValueAccessor\n * for the injected NgControl (FormControl).\n *\n * @param ngControl - Angular's NgControl (injected via Dependency Injection)\n */\n constructor(@Optional() @Self() public ngControl: NgControl) {\n if (this.ngControl) this.ngControl.valueAccessor = this;\n }\n\n ngOnInit() {\n this.resolveConfig();\n }\n\n private resolveConfig() {\n const instanceId = this.explicitInstanceId || `mn-input-${this.props.id}`;\n this.uiConfig = this.configService.resolve<MnInputFieldUIConfig>(\n 'mn-input-field',\n this.sectionPath,\n instanceId\n );\n }\n\n /**\n * Gets the appropriate adapter based on the input type.\n * Adapters handle type-specific formatting, parsing, and validation.\n */\n private get adapter() {\n return pickAdapter(this.props.type);\n }\n\n // ========== ControlValueAccessor Implementation ==========\n\n /**\n * Writes a new value to the input element (called by Angular Forms).\n * Formats the value using the type-specific adapter.\n *\n * @param val - The value to write (type depends on input type)\n */\n writeValue(val: unknown): void {\n this.value = this.adapter.format(val);\n }\n\n /**\n * Registers a callback function to be called when the input value changes.\n *\n * @param fn - Callback function to notify Angular Forms of changes\n */\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n /**\n * Registers a callback function to be called when the input is touched/blurred.\n *\n * @param fn - Callback function to notify Angular Forms of touch events\n */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the input element.\n *\n * @param isDisabled - Whether the input should be disabled\n */\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n }\n\n // ========== Event Handlers ==========\n\n /**\n * Handles input events from the input element.\n * Parses the raw string value and notifies Angular Forms.\n *\n * @param raw - Raw string value from the input element\n */\n handleInput(raw: string): void {\n this.value = raw;\n this.onChange(this.adapter.parse(raw));\n }\n\n /**\n * Handles blur events from the input element.\n * Notifies Angular Forms that the input has been touched.\n */\n handleBlur(): void {\n this.onTouched();\n }\n\n // ========== Validator Implementation ==========\n\n /**\n * Validates the control using the type-specific adapter.\n * Called by Angular Forms during validation.\n *\n * @param control - The AbstractControl to validate\n * @returns ValidationErrors if invalid, null if valid\n */\n validate(control: AbstractControl): ValidationErrors | null {\n return this.adapter.validate(this.props, control, this.value);\n }\n\n // ========== Template Attribute Getters ==========\n\n /**\n * Gets all DOM attributes from the adapter.\n * These are input-type-specific attributes (min, max, step, inputmode).\n */\n get domAttrs() {\n return this.adapter.attrs(this.props);\n }\n\n /** Min attribute for date/time/number inputs */\n get minAttr() {\n return this.domAttrs.min ?? null;\n }\n\n /** Max attribute for date/time/number inputs */\n get maxAttr() {\n return this.domAttrs.max ?? null;\n }\n\n /** Step attribute for number/date/time inputs */\n get stepAttr() {\n return this.domAttrs.step ?? null;\n }\n\n /** Inputmode attribute for mobile keyboard optimization */\n get inputmodeAttr() {\n return this.domAttrs.inputmode ?? null;\n }\n\n // ========== Error Handling ==========\n\n /**\n * Gets the FormControl instance from Angular Forms.\n * Returns null if no control is attached.\n */\n get control() {\n return this.ngControl?.control ?? null;\n }\n\n /**\n * Determines whether to show error messages.\n * Errors are shown when the control is invalid and has been touched or modified.\n */\n get showError(): boolean {\n const c = this.control;\n return !!c && c.invalid && (c.touched || c.dirty);\n }\n\n /**\n * Picks the error key to display based on errorPriority.\n * Used when showAllErrors is false (default).\n *\n * @param errors - ValidationErrors object from the control\n * @returns The error key to display\n */\n private pickErrorKey(errors: ValidationErrors): string {\n // If priority is specified, use the first matching error from the priority list\n if (this.props.errorPriority) {\n for (const key of this.props.errorPriority) {\n if (errors[key] !== undefined) {\n return key;\n }\n }\n }\n // Otherwise, use the first error key\n return Object.keys(errors)[0];\n }\n\n protected isRequired(): boolean {\n if (!this.control) return false;\n return this.control.hasValidator(Validators.required);\n }\n\n /**\n * Resolves a single error message for a specific error key.\n * Checks custom messages, built-in messages, and fallback in order.\n *\n * @param errorKey - The error key (e.g., 'required', 'email')\n * @param errors - All validation errors on the control\n * @returns The resolved error message string\n */\n private resolveErrorMessageForKey(errorKey: string, errors: ValidationErrors): string {\n const errorArgs = errors[errorKey];\n\n // Priority: custom > built-in > fallback > default\n const customMsg = this.props.errorMessages?.[errorKey];\n const useBuiltIn = this.props.useBuiltInErrorMessages !== false;\n const builtInMsg = useBuiltIn ? this.builtInErrorMessages[errorKey] : undefined;\n const fallbackMsg = this.props.defaultErrorMessage;\n\n const msgDef = customMsg ?? builtInMsg ?? fallbackMsg ?? 'Invalid input';\n\n // If the message is a function, call it with error arguments\n if (typeof msgDef === 'function') {\n return msgDef(errorArgs, errors);\n }\n return msgDef;\n }\n\n /**\n * Gets all error messages for the current control state.\n * Returns an array of error messages (used when showAllErrors is true).\n *\n * @returns Array of error message strings\n */\n get errorMessages(): string[] {\n const errors = this.control?.errors;\n if (!errors) return [];\n\n const errorKeys = Object.keys(errors);\n return errorKeys.map(key => this.resolveErrorMessageForKey(key, errors));\n }\n\n /**\n * Gets a single error message for the current control state.\n * Uses errorPriority to determine which error to show (when showAllErrors is false).\n *\n * @returns Single error message string, or null if no errors\n */\n get errorMessage(): string | null {\n const errors = this.control?.errors;\n if (!errors) return null;\n\n const errorKey = this.pickErrorKey(errors);\n return this.resolveErrorMessageForKey(errorKey, errors);\n }\n\n // ========== Resolved Properties ==========\n\n /** Resolved ID for the input element */\n get resolvedId(): string {\n return this.props.id;\n }\n\n /** Resolved name attribute for the input element */\n get resolvedName(): string | null {\n return this.props?.name ?? null;\n }\n\n /**\n * Computes the CSS classes from tailwind-variants based on the props.\n * Returns the variant classes for styling the input element.\n */\n get inputClasses(): string {\n return mnInputFieldVariants({\n size: this.props.size,\n borderRadius: this.props.borderRadius,\n shadow: this.props.shadow,\n fullWidth: this.props.fullWidth,\n });\n }\n}\n","<div class=\"flex flex-col\" [class.is-fullwidth]=\"props.fullWidth\">\n <!-- Label -->\n @if (uiConfig.label) {\n <label class=\"pl-2 pb-1 flex flex-row gap-x-0.5! text-base!\" [attr.for]=\"resolvedId\">\n <p>{{ uiConfig.label }}</p>\n @if (isRequired()) {\n <span class=\"text-red-500 \">*</span>\n }\n </label>\n }\n\n <!-- Input Element -->\n <input\n [id]=\"resolvedId\"\n [attr.name]=\"resolvedName\"\n [type]=\"props.type\"\n [attr.placeholder]=\"uiConfig.placeholder || null\"\n [attr.aria-label]=\"uiConfig.ariaLabel || uiConfig.label || null\"\n [attr.aria-invalid]=\"showError || null\"\n [attr.aria-describedby]=\"showError ? resolvedId + '-error' : null\"\n [disabled]=\"isDisabled\"\n [attr.min]=\"minAttr\"\n [attr.max]=\"maxAttr\"\n [value]=\"value ?? ''\"\n [ngClass]=\"inputClasses\"\n (input)=\"handleInput(($any($event.target)).value)\"\n (blur)=\"handleBlur()\"\n />\n\n <!-- Error Messages -->\n @if (showError) {\n <!-- Show all errors mode -->\n @if (props.showAllErrors) {\n <div class=\"flex flex-col gap-y-1\">\n @for (error of errorMessages; track $index) {\n <lib-mn-error-message [errorMessage]=\"error\" [id]=\"resolvedId + '-' + $index\"></lib-mn-error-message>\n }\n </div>\n } @else {\n @if (errorMessage != null) {\n <lib-mn-error-message [errorMessage]=\"errorMessage\" [id]=\"resolvedId\"></lib-mn-error-message>\n\n }\n }\n }\n</div>\n","import { InjectionToken, Optional, Provider } from '@angular/core';\nimport { MN_INSTANCE_ID, MN_SECTION_PATH } from '../context/mn-context.tokens';\nimport { MnConfigService } from './mn-config.service';\n\n/**\n * Helper to provide a resolved, typed component config via DI.\n *\n * Usage in a component/module providers:\n * const MY_CFG = new InjectionToken<MyCfg>('MY_CFG');\n * providers: [ provideMnComponentConfig(MY_CFG, 'my-component') ]\n * Then in the component:\n * readonly cfg = inject(MY_CFG)\n */\nexport function provideMnComponentConfig<T extends object>(\n token: InjectionToken<T>,\n componentName: string,\n initial?: Partial<T>,\n): Provider {\n return {\n provide: token,\n deps: [MnConfigService, [new Optional(), MN_SECTION_PATH], [new Optional(), MN_INSTANCE_ID]],\n useFactory: (svc: MnConfigService, sectionPath: string[] | null, instanceId: string | null): T => {\n const resolved = svc.resolve<T>(componentName, sectionPath ?? [], instanceId ?? undefined);\n // Apply optional initial (local defaults) over resolved? We prefer resolved to override initial local defaults,\n // so merge initial first, then resolved on top.\n return Object.assign({}, initial ?? {}, resolved);\n },\n };\n}\n","import { Component, InjectionToken, inject } from '@angular/core';\n\nimport { provideMnComponentConfig } from '../../config/mn-component-config.providers';\n\ninterface TestConfig {\n text?: string;\n color?: string;\n}\n\nexport const MN_TEST_COMPONENT_CONFIG = new InjectionToken<TestConfig>('MN_TEST_COMPONENT_CONFIG');\n\n@Component({\n selector: 'mn-test-component',\n standalone: true,\n imports: [],\n providers: [\n provideMnComponentConfig<TestConfig>(MN_TEST_COMPONENT_CONFIG, 'test-component'),\n ],\n template: `\n <div class=\"mn-test\" [style.color]=\"(cfg.color ?? 'inherit')\">\n {{ cfg.text ?? 'Hello from component' }}\n </div>\n `,\n styles: [`\n .mn-test { font-weight: 600; padding: 8px 12px; border: 1px dashed #ddd; border-radius: 6px; }\n `]\n})\nexport class MnTestComponent {\n readonly cfg = inject(MN_TEST_COMPONENT_CONFIG);\n}\n","import {Component, Input} from '@angular/core';\nimport {NgOptimizedImage} from '@angular/common';\nimport { MnDualHorizontalImageTypes } from './mn-dual-horizontal-imageTypes';\n\n@Component({\n selector: 'lib-mn-dual-horizontal-image',\n standalone: true,\n imports: [\n NgOptimizedImage\n ],\n templateUrl: './mn-dual-horizontal-image.html',\n})\nexport class MnDualHorizontalImage {\n private _images: MnDualHorizontalImageTypes[] = [];\n\n @Input()\n set images(value: MnDualHorizontalImageTypes[]) {\n this._images = (value ?? []).slice(0, 2);\n }\n\n get images(): MnDualHorizontalImageTypes[] {\n return this._images;\n }\n}\n","<div class=\"flex flex-col w-full -space-y-5 md:-space-y-10 lg:-space-y-5\">\n @for (image of images; track image.id) {\n <div class=\"w-[75%] overflow-hidden rounded-3xl shadow-md md:w-[65%] lg:w-[80%] first:self-start last:self-end last:mb-4\">\n <img [ngSrc]=\"image.url\" width=\"150\" height=\"100\" class=\"size-full object-cover\" [alt]=\"image.alt\" />\n </div>\n } @empty {\n <p>No images found</p>\n }\n</div>\n\n","import { tv, type VariantProps } from 'tailwind-variants';\n\nexport const mnInformationCardVariants = tv({\n base: '',\n variants: {\n bottomBorder: {\n true: 'border-b border-b-2 border-brand-500',\n },\n shadow: {\n true: 'shadow-lg',\n },\n textPosition: {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n },\n borderRadius: {\n none: 'rounded-none',\n xs: 'rounded-xs',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n two_xl: 'rounded-2xl',\n three_xl: 'rounded-3xl',\n four_xl: 'rounded-4xl',\n },\n },\n});\n\nexport type MnInformationCardVariants = VariantProps<typeof mnInformationCardVariants>;\n","import {Component, Input} from '@angular/core';\nimport {MnInformationCardData} from './mn-information-cardTypes';\nimport {mnInformationCardVariants} from './mn-information-cardVariants';\nimport {NgClass} from '@angular/common';\n\n@Component({\n selector: 'lib-mn-information-card',\n standalone: true,\n imports: [\n NgClass\n ],\n templateUrl: './mn-information-card.html',\n})\nexport class MnInformationCard<TExtra = unknown> {\n @Input({ required: true }) data!: MnInformationCardData<TExtra>;\n\n get hostClasses(): string {\n return mnInformationCardVariants({\n bottomBorder: this.data.bottomBorder,\n shadow: this.data.shadow,\n textPosition: this.data.textPosition,\n });\n }\n}\n\n","<div class=\"flex flex-col items-center gap-y-4 p-4 size-full\" [ngClass]=\"hostClasses\">\n<ng-content select=\"[header]\"></ng-content>\n<ng-content></ng-content>\n<ng-content select=\"[footer]\"></ng-content>\n</div>\n","/**\n * Types for mn-lib configuration.\n */\n\nexport interface MnConfigFile {\n /**\n * Base defaults by component name. Each value is a plain object with inputs/options for that component.\n */\n defaults: Record<string, unknown>;\n /**\n * Nested object tree keyed by section names. Leaf nodes may contain\n * component-name keys (component override objects) and keys starting with '#'\n * representing instance-id overrides.\n */\n overrides: unknown;\n}\n","import { APP_INITIALIZER, Provider } from '@angular/core';\nimport { MnConfigService } from './mn-config.service';\n\n/**\n * Provides an APP_INITIALIZER that loads the mn-lib configuration from the given URL\n * during application bootstrap. The consuming application is responsible for providing\n * HttpClient (e.g., via HttpClientModule or provideHttpClient()).\n */\nexport function provideMnConfig(url: string): Provider[] {\n return [\n {\n provide: APP_INITIALIZER,\n multi: true,\n useFactory: (svc: MnConfigService) => () => svc.load(url),\n deps: [MnConfigService],\n },\n ];\n}\n","import { Attribute, Directive, Input, Optional, SkipSelf } from '@angular/core';\nimport { MN_SECTION_PATH } from './mn-context.tokens';\n\n@Directive({\n selector: '[mn-section]',\n standalone: true,\n providers: [\n {\n provide: MN_SECTION_PATH,\n // Read parent MN_SECTION_PATH from ancestor injector (skipSelf to avoid self-reference),\n // and read the attribute value using Attribute so it's available at provider creation time.\n deps: [[new Optional(), new SkipSelf(), MN_SECTION_PATH], new Attribute('mn-section')],\n useFactory: (parentPath: string[] | null, attr: string | null) => {\n const parent = Array.isArray(parentPath) ? parentPath : [];\n const name = (attr ?? '').trim();\n return name ? [...parent, name] : [...parent];\n },\n },\n ],\n})\nexport class MnSectionDirective {\n /** Section name contributed by this DOM node to the section path */\n @Input('mn-section') mnSection: string | undefined;\n}\n","import { Attribute, Directive, Input } from '@angular/core';\nimport { MN_INSTANCE_ID } from './mn-context.tokens';\n\n@Directive({\n selector: '[mn-instance]',\n standalone: true,\n providers: [\n {\n provide: MN_INSTANCE_ID,\n // Read the attribute at provider creation time using Attribute token; Inputs may not be set yet.\n deps: [new Attribute('mn-instance')],\n useFactory: (attr: string | null) => (attr ?? '').trim() || null,\n },\n ],\n})\nexport class MnInstanceDirective {\n /** Instance id for targeting per-component instance overrides */\n @Input('mn-instance') mnInstance: string | undefined;\n}\n","/*\n * Public API Surface of mn-lib\n */\nexport * from './lib';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"mn-angular-lib.mjs","sources":["../../../projects/mn-angular-lib/src/lib/styles/theme.service.ts","../../../projects/mn-angular-lib/src/lib/styles/themes.ts","../../../projects/mn-angular-lib/src/lib/features/mn-alert/mn-alert.tokens.ts","../../../projects/mn-angular-lib/src/lib/features/mn-alert/mn-alert.providers.ts","../../../projects/mn-angular-lib/src/lib/features/mn-alert/mn-alert.store.ts","../../../projects/mn-angular-lib/src/lib/features/mn-alert/mn-alert.service.ts","../../../projects/mn-angular-lib/src/lib/features/mn-alert/mn-alert-outlet/mn-alert-outlet.ts","../../../projects/mn-angular-lib/src/lib/features/mn-alert/mn-alert-outlet/mn-alert-outlet.html","../../../projects/mn-angular-lib/src/lib/features/test/test.ts","../../../projects/mn-angular-lib/src/lib/features/test/test.html","../../../projects/mn-angular-lib/src/lib/features/mn-button/mn-buttonVariants.ts","../../../projects/mn-angular-lib/src/lib/features/mn-button/mn-button.ts","../../../projects/mn-angular-lib/src/lib/features/mn-button/mn-button.html","../../../projects/mn-angular-lib/src/lib/features/mn-input-field/mn-input-field-adapters.ts","../../../projects/mn-angular-lib/src/lib/features/mn-input-field/mn-input-fieldVariants.ts","../../../projects/mn-angular-lib/src/lib/features/mn-error-message/mn-error-message.ts","../../../projects/mn-angular-lib/src/lib/features/mn-error-message/mn-error-message.html","../../../projects/mn-angular-lib/src/lib/config/mn-config.service.ts","../../../projects/mn-angular-lib/src/lib/context/mn-context.tokens.ts","../../../projects/mn-angular-lib/src/lib/features/mn-input-field/mn-input-field.ts","../../../projects/mn-angular-lib/src/lib/features/mn-input-field/mn-input-field.html","../../../projects/mn-angular-lib/src/lib/config/mn-component-config.providers.ts","../../../projects/mn-angular-lib/src/lib/features/mn-test-component/mn-test-component.ts","../../../projects/mn-angular-lib/src/lib/features/mn-dual-horizontal-image/mn-dual-horizontal-image.ts","../../../projects/mn-angular-lib/src/lib/features/mn-dual-horizontal-image/mn-dual-horizontal-image.html","../../../projects/mn-angular-lib/src/lib/features/mn-information-card/mn-information-cardVariants.ts","../../../projects/mn-angular-lib/src/lib/features/mn-information-card/mn-information-card.ts","../../../projects/mn-angular-lib/src/lib/features/mn-information-card/mn-information-card.html","../../../projects/mn-angular-lib/src/lib/config/mn-config.types.ts","../../../projects/mn-angular-lib/src/lib/config/mn-config.providers.ts","../../../projects/mn-angular-lib/src/lib/context/mn-section.directive.ts","../../../projects/mn-angular-lib/src/lib/context/mn-instance.directive.ts","../../../projects/mn-angular-lib/src/public-api.ts","../../../projects/mn-angular-lib/src/mn-angular-lib.ts"],"sourcesContent":["import {Injectable, signal, WritableSignal, inject, Signal, effect} from '@angular/core';\nimport { MnTheme, MN_THEME_DEFAULTS } from './themes';\n\n/**\n * MnThemeService is responsible for managing the theme configuration of the application.\n * It provides methods to modify, reset, and access the current theme state.\n *\n * The theming is handled using a WritableSignal object, enabling reactive updates to the theme properties.\n */\n@Injectable({ providedIn: 'root' })\nexport class MnThemeService {\n private readonly _theme: WritableSignal<MnTheme> = signal<MnTheme>(MN_THEME_DEFAULTS);\n\n theme = this._theme.asReadonly();\n\n private initialTheme: Partial<MnTheme> = {};\n\n constructor() {\n effect(() => {\n const t = this.theme();\n document.documentElement.style.setProperty('--mn-primary', t.primary);\n });\n }\n\n /**\n * Updates the current theme by merging the provided partial theme properties with the existing theme.\n *\n * @param {Partial<MnTheme>} partial - An object containing partial theme properties to update the current theme.\n * @return {void} No return value.\n */\n setTheme(partial: Partial<MnTheme>) {\n const merged = { ...this._theme(), ...partial } as MnTheme;\n this._theme.set(merged);\n }\n\n /**\n * Sets the provided theme as the current theme.\n *\n * @param {MnTheme} next - The new theme to be set.\n * @return {void} This method does not return a value.\n */\n setAll(next: MnTheme) {\n this._theme.set(next);\n }\n\n /**\n * Resets the theme configuration to its default values.\n * This method updates the theme settings to reflect the predefined default theme constants.\n *\n * @return {void} Does not return any value.\n */\n reset(): void {\n this.setTheme(this.initialTheme);\n }\n\n setInitialTheme(initialTheme: Partial<MnTheme>) {\n const merged = { ...this._theme(), ...initialTheme } as MnTheme;\n this._theme.set(merged);\n this.initialTheme = initialTheme;\n }\n}\n\n/**\n * Provides a dynamically configurable theme service for the MnTheme module.\n * This function creates an Angular provider with a factory for initializing\n * the MnThemeService. If an initial theme configuration is supplied, it\n * will be used to set the theme upon service creation.\n *\n * @param {Partial<MnTheme>} [initial] An optional partial configuration object\n * for initializing the theme within the MnThemeService.\n * @return {Object} An object containing the provider configuration for the MnThemeService.\n */\nexport function provideMnThemeDynamic(initial?: Partial<MnTheme>) {\n return {\n provide: MnThemeService,\n useFactory: () => {\n const svc = new MnThemeService();\n if (initial) {\n svc.setInitialTheme({ ...initial });\n }\n return svc;\n }\n };\n}\n","import { InjectionToken, inject, Signal, computed } from '@angular/core';\nimport { MnThemeService } from './theme.service';\n\n/**\n * Represents the theme configuration for a UI component or application.\n *\n * This interface defines the structure for theming properties such as primary colors,\n * border radius, and padding specifications. It allows customization of visual appearance.\n *\n * Properties:\n * - `primary`: Specifies the primary color used in the theme, represented as a string.\n * - `radius`: Defines the border radius applied to elements for rounded corners, represented as a string.\n * - `padding`: Determines the default padding size for elements, represented as a string.\n */\nexport interface MnTheme {\n primary: string;\n radius: string;\n padding: string;\n}\n\n/**\n * Default theme configuration object for the MN framework.\n *\n * This variable contains the default values for the theme, including primary color,\n * border radius, and padding. The values are retrieved using the `getCssVar` function,\n * which falls back to predefined default values if the corresponding CSS variables are not set.\n *\n * Properties:\n * - `primary`: The primary color used across the theme.\n * - `radius`: The border radius applied to UI elements.\n * - `padding`: The default padding applied to components.\n */\nexport const MN_THEME_DEFAULTS: MnTheme = {\n primary: getCssVar('--mn-primary', '#ff0000'),\n radius: getCssVar('--mn-radius', '0.375rem'),\n padding: getCssVar('--mn-padding', '0.5rem 0.75rem'),\n};\n\n/**\n * Retrieves the value of a CSS variable from the root element.\n *\n * @param {string} name - The name of the CSS variable to retrieve, including the leading '--'.\n * @param {string} [fallback=''] - The fallback value to return if the variable is not set or empty.\n * @return {string} The value of the CSS variable, trimmed of whitespace. Returns the fallback value if the variable is not set.\n */\nfunction getCssVar(name: string, fallback: string = ''): string {\n const value = getComputedStyle(document.documentElement).getPropertyValue(name);\n return value ? value.trim() : fallback;\n}\n\n/**\n * Injection token used to provide a customizable theme configuration for the application.\n *\n * This token allows the injection of a theme object that can be used application-wide\n * for defining consistent styles, colors, and other design-related settings. By default,\n * it uses the fallback configuration `MN_THEME_DEFAULTS`.\n *\n * Scope: The token is provided in the root injector, ensuring it is available\n * throughout the application.\n *\n * Factory: The default factory function returns the value of `MN_THEME_DEFAULTS`,\n * providing a default theme configuration if no custom theme is explicitly provided.\n */\nexport const MN_THEME = new InjectionToken<MnTheme>('MN_THEME', {\n providedIn: 'root',\n factory: () => MN_THEME_DEFAULTS,\n});\n\n/**\n * Provides a theme configuration by merging the partial values with the default theme values.\n *\n * @param {Partial<MnTheme>} partial - A partial MnTheme object containing theme customizations.\n * @return {object} An object with provide and useValue properties to configure the theme.\n */\nexport function provideMnTheme(partial: Partial<MnTheme>) {\n return {\n provide: MN_THEME,\n useValue: { ...MN_THEME_DEFAULTS, ...partial },\n };\n}\n\n/**\n * Injects the theme configuration into the application.\n * This method attempts to retrieve a theme instance from the dependency injection system.\n * If no theme instance is found, it falls back to default theme settings.\n *\n * @return {MnTheme} The injected theme instance or the default theme settings.\n */\nexport function injectTheme(): MnTheme {\n const t = inject<MnTheme>(MN_THEME, { optional: true });\n return t ?? MN_THEME_DEFAULTS;\n}\n\n/**\n * Injects a theme signal, allowing access to the current theme state.\n * This method retrieves the theme signal from the MnThemeService, if available.\n * If the service is not available, it falls back to a computed snapshot of the theme.\n *\n * @return {Signal<MnTheme>} The theme signal representing the current theme.\n */\nexport function injectThemeSignal(): Signal<MnTheme> {\n const svc = inject(MnThemeService, { optional: true });\n\n if (svc) {\n return (('asReadonly' in svc.theme) ? (svc.theme as any).asReadonly() : svc.theme) as Signal<MnTheme>;\n }\n const snap = injectTheme();\n return computed(() => snap);\n}\n","// projects/mn-angular-lib/src/lib/mn-mn-alert/mn-mn-alert.tokens.ts\nimport { InjectionToken } from '@angular/core';\nimport { MnAlert } from './mn-alert.types';\n\nexport type MnAlertKind = 'success' | 'info' | 'warning' | 'error' | 'default';\n\nexport interface MnAlertConfig {\n durations?: Partial<Record<MnAlertKind, number | null>>;\n cssClasses?: Partial<Record<MnAlertKind, string>>;\n icons?: Partial<Record<MnAlertKind, unknown>>;\n fallbackDuration?: number | null;\n finalize?: (a: MnAlert) => MnAlert;\n}\n\nexport const MN_ALERT_CONFIG = new InjectionToken<MnAlertConfig>('MN_ALERT_CONFIG');\n\nexport const DEFAULT_MN_ALERT_CONFIG: Required<MnAlertConfig> = {\n durations: { success: 3000, info: 4000, warning: 5000, error: 7000, default: 4000 },\n cssClasses: {\n success: 'mn-alert-success',\n info: 'mn-alert-info',\n warning: 'mn-alert-warning',\n error: 'mn-alert-error',\n default: 'alert'\n },\n icons: {},\n fallbackDuration: 4000,\n finalize: (a) => a\n};\n","// projects/mn-angular-lib/src/lib/mn-mn-alert/mn-mn-alert.providers.ts\nimport { Provider } from '@angular/core';\nimport { MN_ALERT_CONFIG, MnAlertConfig, DEFAULT_MN_ALERT_CONFIG } from './mn-alert.tokens';\n\nexport function provideMnAlerts(config: MnAlertConfig = {}): Provider {\n const merged: MnAlertConfig = {\n ...DEFAULT_MN_ALERT_CONFIG,\n ...config,\n durations: { ...DEFAULT_MN_ALERT_CONFIG.durations, ...(config.durations ?? {}) },\n cssClasses: { ...DEFAULT_MN_ALERT_CONFIG.cssClasses, ...(config.cssClasses ?? {}) },\n icons: { ...DEFAULT_MN_ALERT_CONFIG.icons, ...(config.icons ?? {}) }\n };\n return { provide: MN_ALERT_CONFIG, useValue: merged };\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { MnAlert, MnAlertId } from './mn-alert.types';\nimport { DEFAULT_MN_ALERT_CONFIG } from './mn-alert.tokens';\n\nlet COUNTER = 0;\nconst uid = () => `mn_${++COUNTER}`;\n\n@Injectable({ providedIn: 'root' })\nexport class MnAlertStore {\n private readonly _alerts$ = new BehaviorSubject<MnAlert[]>([]);\n readonly alerts$ = this._alerts$.asObservable();\n\n show(partial: Omit<MnAlert, 'id'>): MnAlertId {\n // Ensure every alert has a numeric duration: use provided or fall back to per-kind default\n const computedDuration = (partial as any).duration ?? (DEFAULT_MN_ALERT_CONFIG.durations as any)[(partial as any).kind] ?? DEFAULT_MN_ALERT_CONFIG.fallbackDuration;\n const a: MnAlert = { id: uid(), ...partial, duration: computedDuration } as MnAlert;\n this._alerts$.next([...this._alerts$.value, a]);\n\n if (typeof a.duration === 'number' && a.duration > 0) {\n setTimeout(() => this.dismiss(a.id), a.duration);\n }\n return a.id;\n }\n\n dismiss(id: MnAlertId) {\n const list = this._alerts$.value;\n if (list.some(x => x.id === id)) {\n this._alerts$.next(list.filter(x => x.id !== id));\n }\n }\n\n clear() {\n this._alerts$.next([]);\n }\n}\n","// projects/mn-angular-lib/src/lib/mn-mn-alert/mn-mn-alert.service.ts\nimport { Injectable, Inject, Optional } from '@angular/core';\nimport { MnAlertStore } from './mn-alert.store';\nimport { MnAlert, MnAlertId } from './mn-alert.types';\nimport { MN_ALERT_CONFIG, DEFAULT_MN_ALERT_CONFIG, MnAlertConfig, MnAlertKind } from './mn-alert.tokens';\n\nexport interface MnShowInput {\n title: string;\n subTitle?: string;\n duration?: number;\n icon?: unknown;\n cssClass?: string;\n meta?: Record<string, unknown>;\n kind: MnAlertKind;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class MnAlertService {\n private readonly cfg: Required<MnAlertConfig>;\n private readonly userDurations?: Partial<Record<MnAlertKind, number | null>>;\n private readonly hasUserDurations: boolean;\n\n constructor(\n private readonly store: MnAlertStore,\n @Optional() @Inject(MN_ALERT_CONFIG) cfg: MnAlertConfig | null\n ) {\n this.userDurations = cfg?.durations;\n this.hasUserDurations = !!cfg?.durations;\n this.cfg = {\n ...DEFAULT_MN_ALERT_CONFIG,\n ...(cfg ?? {}),\n // Do not pre-merge durations; keep defaults separate and use logic in kind()\n durations: DEFAULT_MN_ALERT_CONFIG.durations,\n cssClasses: { ...DEFAULT_MN_ALERT_CONFIG.cssClasses, ...(cfg?.cssClasses ?? {}) },\n icons: { ...DEFAULT_MN_ALERT_CONFIG.icons, ...(cfg?.icons ?? {}) }\n };\n }\n\n show(input: MnShowInput): MnAlertId {\n // Always ensure a numeric duration is set\n let duration = input.duration;\n if (duration == null) {\n // Prefer user defaultDuration if provided and not null, otherwise use library per-kind default\n const userDefault = this.cfg.fallbackDuration;\n if (typeof userDefault === 'number') {\n duration = userDefault;\n } else {\n duration = DEFAULT_MN_ALERT_CONFIG.durations[input.kind as keyof typeof DEFAULT_MN_ALERT_CONFIG.durations] as number;\n }\n }\n\n const a: Omit<MnAlert, 'id'> = {\n title: input.title,\n subTitle: input.subTitle,\n duration,\n icon: input.icon,\n cssClass: input.cssClass,\n meta: input.meta,\n kind: input.kind\n };\n return this.store.show(this.cfg.finalize(a as MnAlert));\n }\n\n success(title: string, subTitle?: string, extra?: Partial<MnShowInput>) {\n return this.kind('success', title, subTitle, extra);\n }\n info(title: string, subTitle?: string, extra?: Partial<MnShowInput>) {\n return this.kind('info', title, subTitle, extra);\n }\n warning(title: string, subTitle?: string, extra?: Partial<MnShowInput>) {\n return this.kind('warning', title, subTitle, extra);\n }\n error(title: string, subTitle?: string, extra?: Partial<MnShowInput>) {\n return this.kind('error', title, subTitle, extra);\n }\n\n dismiss(id: MnAlertId) { this.store.dismiss(id); }\n clear() { this.store.clear(); }\n\n private kind(kind: MnAlertKind, title: string, subTitle?: string, extra?: Partial<MnShowInput>) {\n let duration: number | null | undefined = extra?.duration;\n\n if (duration == null) {\n if (this.hasUserDurations) {\n const userDur = this.userDurations?.[kind];\n if (typeof userDur === 'number') {\n duration = userDur;\n } else {\n // userDur is undefined or null -> fallback to user defaultDuration if numeric\n if (typeof this.cfg.fallbackDuration === 'number') {\n duration = this.cfg.fallbackDuration;\n } else {\n duration = this.cfg.durations[kind as keyof typeof this.cfg.durations];\n }\n }\n } else {\n // No user durations provided at all; use library defaults per kind\n duration = this.cfg.durations[kind as keyof typeof this.cfg.durations];\n }\n }\n\n const cssClass = extra?.cssClass ?? this.cfg.cssClasses[kind];\n const icon = (extra?.icon ?? this.cfg.icons[kind]) as unknown;\n\n return this.show({ title, subTitle, duration: duration as number, cssClass, icon, meta: extra?.meta , kind: kind});\n }\n}\n","\nimport {Component, Input, TemplateRef, ChangeDetectionStrategy, inject} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Observable } from 'rxjs';\nimport {MnAlertStore} from '../mn-alert.store';\nimport {MnAlert} from '../mn-alert.types';\n\nexport interface MnAlertTemplateContext {\n $implicit: MnAlert;\n alert: MnAlert;\n dismiss: () => void;\n}\n\n@Component({\n selector: 'mn-alert-outlet',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './mn-alert-outlet.html',\n styleUrl: './mn-alert-outlet.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MnAlertOutletComponent {\n @Input({ required: true }) template!: TemplateRef<MnAlertTemplateContext>;\n\n private store = inject(MnAlertStore);\n alerts$: Observable<MnAlert[]> = this.store.alerts$;\n\n constructor() {}\n\n dismissAlert(id: string) {\n this.store.dismiss(id);\n }\n\n trackById = (_: number, a: MnAlert) => a.id;\n\n contextFor(a: MnAlert) {\n return {\n $implicit: a,\n alert: a,\n dismiss: () => this.dismissAlert(a.id)\n } as const;\n }\n\n}\n","@if (alerts$ | async; as alerts) {\n @for (a of alerts; track trackById($index, a)) {\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"contextFor(a)\">\n </ng-container>\n }\n}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'lib-test',\n standalone: true,\n imports: [ ],\n templateUrl: './test.html',\n styleUrl: './test.css',\n})\nexport class Test {\n}\n","<p>test works!</p>\n","import { tv, type VariantProps } from 'tailwind-variants';\n\nexport const mnButtonVariants = tv({\n base: 'hover:cursor-pointer',\n variants: {\n size: {\n sm: 'px-2 py-1 text-sm',\n md: 'px-3 py-1.5 text-base',\n lg: 'px-4 py-2 text-lg',\n },\n\n variant: {\n fill: '',\n outline: 'bg-transparent border',\n text: 'bg-transparent',\n },\n\n // Intentionally empty; resolved via compoundVariants\n color: {\n primary: '',\n secondary: '',\n danger: '',\n warning: '',\n success: '',\n },\n\n borderRadius: {\n none: 'rounded-none',\n xs: 'rounded-xs',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n two_xl: 'rounded-2xl',\n three_xl: 'rounded-3xl',\n four_xl: 'rounded-4xl',\n },\n disabled: {\n true: 'opacity-50 pointer-events-none',\n }\n },\n\n compoundVariants: [\n // Fill\n { variant: 'fill', color: 'primary', class: 'bg-brand-600 text-white hover:bg-brand-700' },\n { variant: 'fill', color: 'secondary', class: 'bg-gray-600 text-white hover:bg-gray-700' },\n { variant: 'fill', color: 'danger', class: 'bg-red-600 text-white hover:bg-red-700' },\n { variant: 'fill', color: 'warning', class: 'bg-amber-500 text-black hover:bg-amber-600' },\n { variant: 'fill', color: 'success', class: 'bg-green-600 text-white hover:bg-green-700' },\n\n // Outline\n { variant: 'outline', color: 'primary', class: 'border-brand-600 text-blue-600 hover:bg-brand-100' },\n { variant: 'outline', color: 'secondary', class: 'border-gray-600 text-gray-700 hover:bg-gray-100' },\n { variant: 'outline', color: 'danger', class: 'border-red-600 text-red-600 hover:bg-red-100' },\n { variant: 'outline', color: 'warning', class: 'border-amber-500 text-amber-600 hover:bg-amber-100' },\n { variant: 'outline', color: 'success', class: 'border-green-600 text-green-600 hover:bg-green-100' },\n\n // Text\n { variant: 'text', color: 'primary', class: 'text-brand-600 hover:bg-brand-100' },\n { variant: 'text', color: 'secondary', class: 'text-gray-700 hover:bg-gray-100' },\n { variant: 'text', color: 'danger', class: 'text-red-600 hover:bg-red-100' },\n { variant: 'text', color: 'warning', class: 'text-amber-600 hover:bg-amber-100' },\n { variant: 'text', color: 'success', class: 'text-green-600 hover:bg-green-100' },\n ],\n\n defaultVariants: {\n size: 'md',\n variant: 'fill',\n color: 'primary',\n borderRadius: 'xl',\n disabled: false,\n },\n});\n\nexport type MnButtonVariants = VariantProps<typeof mnButtonVariants>;\n","import {Component, HostBinding, Input } from '@angular/core';\nimport { MnButtonTypes } from './mn-buttonTypes';\nimport { mnButtonVariants } from './mn-buttonVariants';\n\n@Component({\n selector: 'button[mnButton], a[mnButton]',\n standalone: true,\n templateUrl: './mn-button.html',\n})\nexport class MnButton {\n @Input() data: Partial<MnButtonTypes> = {};\n\n // Bind the computed classes to the host element\n @HostBinding('class')\n get hostClasses(): string {\n return mnButtonVariants({\n size: this.data.size,\n variant: this.data.variant,\n color: this.data.color,\n borderRadius: this.data.borderRadius,\n disabled: this.data.disabled,\n });\n }\n // For accessibility (works for both <button> and <a>)\n @HostBinding('attr.aria-disabled')\n get ariaDisabled() {\n return this.data.disabled ? 'true' : null;\n }\n\n // Only meaningful for <button>. For <a> it does nothing semantically.\n @HostBinding('attr.disabled')\n get disabledAttr() {\n return this.data.disabled ? '' : null;\n }\n\n // Make disabled anchors unfocusable + prevent activation\n @HostBinding('attr.tabindex')\n get tabIndex() {\n return this.data.disabled ? '-1' : null;\n }\n\n}\n","<ng-content></ng-content>\n","/**\n * MnInputField Adapters\n *\n * This module implements the Adapter Pattern to handle type-specific behavior\n * for different HTML input types in the MnInputField component.\n *\n * The adapter pattern allows the component to support multiple input types\n * (text, number, date, time, etc.) without coupling the component logic to\n * type-specific implementations. Each adapter handles:\n * - Parsing: converting raw string input to the appropriate data type\n * - Formatting: converting typed values back to string for display\n * - Attributes: providing type-specific DOM attributes (min, max, step, inputmode)\n * - Validation: implementing type-specific validation rules\n *\n * This approach keeps the component code clean and makes it easy to add\n * support for new input types by creating new adapters.\n */\n\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\nimport { MnInputDateTimeProps, MnInputProps, MnInputType } from './mn-input-fieldTypes';\n\n/**\n * DOM attributes that can be dynamically set on input elements.\n * These attributes are type-specific and provided by adapters.\n */\nexport type MnDomAttrs = {\n /** Minimum value for date/time/number inputs */\n min?: string | null;\n /** Maximum value for date/time/number inputs */\n max?: string | null;\n /** Step increment for number/date/time inputs */\n step?: string | null;\n /** Mobile keyboard hint (e.g., 'decimal' for number inputs) */\n inputmode?: string | null;\n};\n\n/**\n * Adapter interface for handling input type-specific behavior.\n *\n * Each adapter implementation defines how to handle a specific input type\n * (or group of related types) throughout the component lifecycle.\n *\n * @template TOut - The output type after parsing (e.g., string | null, number | null)\n */\nexport interface MnInputAdapter<TOut = string | null> {\n /**\n * Parses the raw string value from the input element into the typed value\n * that will be sent to the FormControl.\n *\n * @param raw - Raw string value from the input element\n * @returns Typed value to store in the FormControl\n *\n * @example\n * // Text adapter\n * parse('hello') // => 'hello'\n * parse('') // => null\n *\n * // Number adapter\n * parse('42') // => 42\n * parse('') // => null\n * parse('abc') // => null\n */\n parse(raw: string): TOut;\n\n /**\n * Formats the typed value from the FormControl into a string\n * that will be displayed in the input element.\n *\n * @param val - Typed value from the FormControl\n * @returns String representation for the input element's value attribute\n *\n * @example\n * // Text adapter\n * format('hello') // => 'hello'\n * format(null) // => ''\n *\n * // Number adapter\n * format(42) // => '42'\n * format(null) // => ''\n */\n format(val: unknown): string;\n\n /**\n * Returns type-specific DOM attributes for the input element.\n * These attributes are applied dynamically based on the input type and props.\n *\n * @param props - Input field properties\n * @returns Object containing DOM attributes (min, max, step, inputmode)\n *\n * @example\n * // Date adapter with date range\n * attrs({ startDate: '2024-01-01', endDate: '2024-12-31' })\n * // => { min: '2024-01-01', max: '2024-12-31' }\n *\n * // Number adapter\n * attrs({}) // => { inputmode: 'decimal' }\n */\n attrs(props: MnInputProps): MnDomAttrs;\n\n /**\n * Performs type-specific validation on the current input value.\n * This validation runs in addition to Angular's built-in validators.\n *\n * @param props - Input field properties (may contain validation constraints)\n * @param control - The AbstractControl being validated\n * @param currentRaw - Current raw string value from the input element\n * @returns ValidationErrors object if invalid, null if valid\n *\n * @example\n * // Date adapter validation\n * validate(props, control, '2024-06-15')\n * // Returns { mnMin: { min: '2024-07-01', actual: '2024-06-15' } }\n * // if startDate is '2024-07-01'\n */\n validate(props: MnInputProps, control: AbstractControl, currentRaw: string | null): ValidationErrors | null;\n}\n\n/**\n * Utility function to convert empty strings to null.\n * This is a common pattern for optional form fields where empty input\n * should be treated as \"no value\" rather than an empty string.\n *\n * @param raw - Raw input string\n * @returns The input string if non-empty, null if empty\n *\n * @example\n * emptyToNull('hello') // => 'hello'\n * emptyToNull('') // => null\n */\nconst emptyToNull = (raw: string): string | null => (raw === '' ? null : raw);\n\n/**\n * Default adapter for text-based input types.\n * Used for: text, email, password, search, tel, url\n *\n * Behavior:\n * - Empty strings are converted to null\n * - Values are stored as strings in the FormControl\n * - No special DOM attributes\n * - No additional validation (relies on Angular's built-in validators)\n */\nexport const defaultTextAdapter: MnInputAdapter<string | null> = {\n parse: (raw) => emptyToNull(raw),\n format: (val) => (val == null ? '' : String(val)),\n attrs: () => ({}),\n validate: () => null,\n};\n\n/**\n * Adapter for date and time input types.\n * Used for: date, time, datetime-local\n *\n * Behavior:\n * - Empty strings are converted to null\n * - Values are stored as ISO 8601 strings in the FormControl\n * - Provides min/max attributes from startDate/endDate props\n * - Validates date/time ranges using string comparison\n *\n * Note: String comparison works for ISO 8601 dates/times because they are\n * lexicographically ordered (e.g., '2024-01-15' < '2024-12-31').\n */\nexport const dateTimeAdapter: MnInputAdapter<string | null> = {\n parse: (raw) => emptyToNull(raw),\n format: (val) => (val == null ? '' : String(val)),\n attrs: (props) => ({\n min: (props as MnInputDateTimeProps).startDate ?? null,\n max: (props as MnInputDateTimeProps).endDate ?? null,\n }),\n validate: (props, _control, currentRaw) => {\n const value = currentRaw;\n if (!value) return null; // Don't validate empty values (use 'required' validator for that)\n\n const min = (props as MnInputDateTimeProps).startDate as string | undefined;\n const max = (props as MnInputDateTimeProps).endDate as string | undefined;\n\n // Validate minimum date/time constraint\n if (min && value < min) {\n return { mnMin: { min, actual: value } };\n }\n\n // Validate maximum date/time constraint\n if (max && value > max) {\n return { mnMax: { max, actual: value } };\n }\n\n return null;\n },\n};\n\n/**\n * Adapter for number input type.\n *\n * Behavior:\n * - Empty strings are converted to null\n * - Valid numbers are parsed to number type\n * - Invalid numbers (NaN, Infinity) are converted to null\n * - Values are stored as numbers (or null) in the FormControl\n * - Sets inputmode='decimal' for optimized mobile keyboards\n * - No additional validation (relies on Angular's built-in validators)\n *\n * Note: The browser's native number input validation handles\n * basic number format validation automatically.\n */\nexport const numberAdapter: MnInputAdapter<number | null> = {\n parse: (raw) => {\n if (raw === '') return null;\n const num = Number(raw);\n return Number.isFinite(num) ? num : null;\n },\n format: (val) => (val == null ? '' : String(val)),\n attrs: () => ({\n inputmode: 'decimal',\n }),\n validate: () => null,\n};\n\n/**\n * Selects the appropriate adapter based on the input type.\n * This is the main factory function used by the MnInputField component\n * to determine which adapter to use for a given input type.\n *\n * @param type - The input type (e.g., 'text', 'email', 'date', 'number')\n * @returns The appropriate adapter instance\n *\n * @example\n * pickAdapter('text') // => defaultTextAdapter\n * pickAdapter('email') // => defaultTextAdapter\n * pickAdapter('date') // => dateTimeAdapter\n * pickAdapter('number') // => numberAdapter\n */\nexport function pickAdapter(type: MnInputType): MnInputAdapter<any> {\n // Date/time inputs use the dateTimeAdapter for range validation\n if (type === 'date' || type === 'time' || type === 'datetime-local') {\n return dateTimeAdapter;\n }\n\n // Number inputs use the numberAdapter for type conversion\n if (type === 'number') {\n return numberAdapter;\n }\n\n // All other input types use the default text adapter\n return defaultTextAdapter;\n}\n","import { tv, type VariantProps } from 'tailwind-variants';\n\nexport const mnInputFieldVariants = tv({\n base: 'bg-white border-1 border-gray-500 placeholder-gray-500 text-sm',\n variants: {\n\n shadow: {\n true: 'shadow-lg',\n },\n size: {\n sm: 'p-2',\n md: 'p-3',\n lg: 'p-4',\n },\n borderRadius: {\n none: 'rounded-none',\n xs: 'rounded-xs',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n two_xl: 'rounded-2xl',\n three_xl: 'rounded-3xl',\n four_xl: 'rounded-4xl',\n },\n fullWidth: {\n true: 'w-full',\n }\n },\n defaultVariants: {\n size: 'md',\n borderRadius: 'md',\n }\n});\n\nexport type MnInputVariants = VariantProps<typeof mnInputFieldVariants>;\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'lib-mn-error-message',\n imports: [],\n templateUrl: './mn-error-message.html',\n})\nexport class MnErrorMessage {\n @Input({ required: true }) errorMessage! :string;\n @Input({ required: true }) id!: string;\n}\n","<div [id]=\"id + '-error'\" class=\"text-red-500 mt-2 text-sm\">\n {{ errorMessage }}\n</div>\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { firstValueFrom } from 'rxjs';\nimport { MnConfigFile } from './mn-config.types';\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return (\n typeof value === 'object' &&\n value !== null &&\n Object.prototype.toString.call(value) === '[object Object]'\n );\n}\n\n@Injectable({ providedIn: 'root' })\nexport class MnConfigService {\n private _config: MnConfigFile | null = null;\n\n constructor(private readonly http: HttpClient) {}\n\n /**\n * Load the configuration JSON from the provided URL and cache it in memory.\n * Consumers should typically call this via the APP_INITIALIZER helper.\n */\n async load(url: string): Promise<void> {\n let json = await firstValueFrom(this.http.get<unknown>(url, { responseType: 'json' as const }));\n if (typeof json === 'string') {\n try {\n json = JSON.parse(json);\n } catch {\n json = {};\n }\n }\n const cfg = (isPlainObject(json) ? json : {}) as any;\n const defaults = (isPlainObject(cfg.defaults) ? cfg.defaults : {}) as Record<string, unknown>;\n const overrides = isPlainObject(cfg.overrides) ? cfg.overrides : cfg.overrides ?? {};\n this._config = { defaults, overrides };\n }\n\n /**\n * Resolve a configuration object for a component, optionally scoped to a section path\n * and optionally overridden by an instance id.\n */\n resolve<T extends object = any>(\n componentName: string,\n sectionPath: string[] = [],\n instanceId?: string,\n ): T {\n const baseConfig: Record<string, unknown> = isPlainObject(this._config?.defaults)\n ? (isPlainObject((this._config as MnConfigFile).defaults[componentName])\n ? { ...(this._config as MnConfigFile).defaults[componentName] as Record<string, unknown> }\n : {})\n : {};\n\n const leaf = this.walkOverrides(this._config?.overrides ?? {}, sectionPath);\n\n let resolved: Record<string, unknown> = baseConfig;\n\n if (leaf && isPlainObject((leaf as any)[componentName])) {\n resolved = this.deepMerge(resolved, (leaf as any)[componentName] as Record<string, unknown>);\n }\n\n if (instanceId) {\n const instKey = `#${instanceId}`;\n if (leaf && isPlainObject((leaf as any)[instKey])) {\n resolved = this.deepMerge(resolved, (leaf as any)[instKey] as Record<string, unknown>);\n }\n }\n\n console.debug(`[MnConfig] Resolving for ${componentName}`, {\n sectionPath,\n instanceId,\n resolved,\n });\n\n return resolved as T;\n }\n\n /**\n * Walk the overrides nested object using the provided section path and return the leaf node.\n * If any segment is missing or the current node is not a plain object, returns undefined.\n */\n walkOverrides(overridesRoot: unknown, sectionPath: string[]): unknown | undefined {\n let node: unknown = overridesRoot;\n for (const segment of sectionPath) {\n if (!isPlainObject(node)) return undefined;\n node = (node as Record<string, unknown>)[segment];\n if (node === undefined) return undefined;\n }\n return node;\n }\n\n /**\n * Deep merge two plain-object trees. Arrays and non-plain values are replaced by the patch.\n * Does not mutate inputs; returns a new object.\n */\n deepMerge<A extends Record<string, any>, B extends Record<string, any>>(base: A, patch: B): A & B {\n const out: Record<string, any> = { ...base };\n for (const key of Object.keys(patch)) {\n const bVal = (base as any)[key];\n const pVal = (patch as any)[key];\n\n if (isPlainObject(bVal) && isPlainObject(pVal)) {\n out[key] = this.deepMerge(bVal, pVal);\n } else {\n // replace for arrays, primitives, null, undefined, and non-plain objects\n out[key] = pVal;\n }\n }\n return out as A & B;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\n/**\n * Represents the current section path based on nested mn-section directives.\n */\nexport const MN_SECTION_PATH = new InjectionToken<string[]>(\n 'MN_SECTION_PATH',\n {\n providedIn: 'root',\n factory: () => [],\n },\n);\n\n/**\n * Represents the current component instance id provided by [mn-instance].\n */\nexport const MN_INSTANCE_ID = new InjectionToken<string | null>(\n 'MN_INSTANCE_ID',\n {\n providedIn: 'root',\n factory: () => null,\n },\n);\n","import {Component, inject, InjectionToken, Input, OnInit, Optional, Self} from '@angular/core';\nimport {NgClass} from '@angular/common';\nimport {MnInputProps, MnErrorMessageData, MnInputFieldUIConfig} from './mn-input-fieldTypes';\nimport {AbstractControl, NgControl, ValidationErrors, Validators} from '@angular/forms';\nimport {pickAdapter} from './mn-input-field-adapters';\nimport {mnInputFieldVariants} from './mn-input-fieldVariants';\nimport {MnErrorMessage} from '../mn-error-message/mn-error-message';\nimport {MnConfigService} from \"../../config/mn-config.service\";\nimport {MN_INSTANCE_ID, MN_SECTION_PATH} from \"../../context/mn-context.tokens\";\n\nexport const MN_INPUT_FIELD_CONFIG = new InjectionToken<MnInputFieldUIConfig>('MN_INPUT_FIELD_CONFIG');\n\n/**\n * MnInputField Component\n *\n * A flexible, accessible input field component that implements Angular's ControlValueAccessor\n * and Validator interfaces. Supports multiple input types, custom validation messages,\n * and configurable error display (single or multiple errors).\n *\n * Features:\n * - Works with Angular Reactive Forms (FormControl, FormGroup)\n * - Supports standard and date/time input types\n * - Built-in error messages with internationalization support\n * - Custom error messages per field\n * - Priority-based error display or show all errors\n * - Full accessibility (ARIA attributes)\n * - Type-safe adapter pattern for different input types\n *\n * @example\n * ```typescript\n * <mn-input-field\n * formControlName=\"email\"\n * [props]=\"{\n * id: 'email',\n * type: 'email',\n * label: 'Email Address',\n * size: 'md',\n * borderRadius: 'md',\n * errorMessages: { required: 'Email is required' }\n * }\"\n * ></mn-input-field>\n * ```\n */\n@Component({\n selector: 'mn-input-field',\n standalone: true,\n imports: [NgClass, MnErrorMessage],\n templateUrl: './mn-input-field.html',\n})\nexport class MnInputField implements OnInit {\n /** Resolved UI configuration for the input field */\n protected uiConfig: MnInputFieldUIConfig = {};\n\n /** Configuration properties for the input field */\n @Input({ required: true }) props!: MnInputProps;\n\n private readonly configService = inject(MnConfigService);\n private readonly sectionPath = inject(MN_SECTION_PATH, { optional: true }) ?? [];\n private readonly explicitInstanceId = inject(MN_INSTANCE_ID, { optional: true });\n\n /** Current raw string value of the input element */\n value: string | null = null;\n\n /** Whether the input is disabled */\n isDisabled = false;\n\n /** Callback function to notify Angular forms of value changes */\n private onChange: (val: any) => void = () => {};\n\n /** Callback function to notify Angular forms when input is touched/blurred */\n private onTouched: () => void = () => {};\n\n /**\n * Built-in default error messages in English.\n * These are used when useBuiltInErrorMessages is true (default).\n * Can be overridden per-field using props.errorMessages.\n */\n private readonly builtInErrorMessages: Record<string, MnErrorMessageData> = {\n required: 'This field is required',\n email: 'Please enter a valid email address',\n minlength: (args: any) => `Minimum ${args.requiredLength} characters required`,\n maxlength: (args: any) => `Maximum ${args.requiredLength} characters allowed`,\n mnMin: (args: any) => `Date/time must be from ${args.min} onwards`,\n mnMax: (args: any) => `Date/time must be up to ${args.max}`,\n };\n\n /**\n * Constructor - Registers this component as the ControlValueAccessor\n * for the injected NgControl (FormControl).\n *\n * @param ngControl - Angular's NgControl (injected via Dependency Injection)\n */\n constructor(@Optional() @Self() public ngControl: NgControl) {\n if (this.ngControl) this.ngControl.valueAccessor = this;\n }\n\n ngOnInit() {\n this.resolveConfig();\n }\n\n private resolveConfig() {\n const instanceId = this.explicitInstanceId || `mn-input-${this.props.id}`;\n this.uiConfig = this.configService.resolve<MnInputFieldUIConfig>(\n 'mn-input-field',\n this.sectionPath,\n instanceId\n );\n }\n\n /**\n * Gets the appropriate adapter based on the input type.\n * Adapters handle type-specific formatting, parsing, and validation.\n */\n private get adapter() {\n return pickAdapter(this.props.type);\n }\n\n // ========== ControlValueAccessor Implementation ==========\n\n /**\n * Writes a new value to the input element (called by Angular Forms).\n * Formats the value using the type-specific adapter.\n *\n * @param val - The value to write (type depends on input type)\n */\n writeValue(val: unknown): void {\n this.value = this.adapter.format(val);\n }\n\n /**\n * Registers a callback function to be called when the input value changes.\n *\n * @param fn - Callback function to notify Angular Forms of changes\n */\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n /**\n * Registers a callback function to be called when the input is touched/blurred.\n *\n * @param fn - Callback function to notify Angular Forms of touch events\n */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the input element.\n *\n * @param isDisabled - Whether the input should be disabled\n */\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n }\n\n // ========== Event Handlers ==========\n\n /**\n * Handles input events from the input element.\n * Parses the raw string value and notifies Angular Forms.\n *\n * @param raw - Raw string value from the input element\n */\n handleInput(raw: string): void {\n this.value = raw;\n this.onChange(this.adapter.parse(raw));\n }\n\n /**\n * Handles blur events from the input element.\n * Notifies Angular Forms that the input has been touched.\n */\n handleBlur(): void {\n this.onTouched();\n }\n\n // ========== Validator Implementation ==========\n\n /**\n * Validates the control using the type-specific adapter.\n * Called by Angular Forms during validation.\n *\n * @param control - The AbstractControl to validate\n * @returns ValidationErrors if invalid, null if valid\n */\n validate(control: AbstractControl): ValidationErrors | null {\n return this.adapter.validate(this.props, control, this.value);\n }\n\n // ========== Template Attribute Getters ==========\n\n /**\n * Gets all DOM attributes from the adapter.\n * These are input-type-specific attributes (min, max, step, inputmode).\n */\n get domAttrs() {\n return this.adapter.attrs(this.props);\n }\n\n /** Min attribute for date/time/number inputs */\n get minAttr() {\n return this.domAttrs.min ?? null;\n }\n\n /** Max attribute for date/time/number inputs */\n get maxAttr() {\n return this.domAttrs.max ?? null;\n }\n\n /** Step attribute for number/date/time inputs */\n get stepAttr() {\n return this.domAttrs.step ?? null;\n }\n\n /** Inputmode attribute for mobile keyboard optimization */\n get inputmodeAttr() {\n return this.domAttrs.inputmode ?? null;\n }\n\n // ========== Error Handling ==========\n\n /**\n * Gets the FormControl instance from Angular Forms.\n * Returns null if no control is attached.\n */\n get control() {\n return this.ngControl?.control ?? null;\n }\n\n /**\n * Determines whether to show error messages.\n * Errors are shown when the control is invalid and has been touched or modified.\n */\n get showError(): boolean {\n const c = this.control;\n return !!c && c.invalid && (c.touched || c.dirty);\n }\n\n /**\n * Picks the error key to display based on errorPriority.\n * Used when showAllErrors is false (default).\n *\n * @param errors - ValidationErrors object from the control\n * @returns The error key to display\n */\n private pickErrorKey(errors: ValidationErrors): string {\n // If priority is specified, use the first matching error from the priority list\n if (this.props.errorPriority) {\n for (const key of this.props.errorPriority) {\n if (errors[key] !== undefined) {\n return key;\n }\n }\n }\n // Otherwise, use the first error key\n return Object.keys(errors)[0];\n }\n\n protected isRequired(): boolean {\n if (!this.control) return false;\n return this.control.hasValidator(Validators.required);\n }\n\n /**\n * Resolves a single error message for a specific error key.\n * Checks custom messages, built-in messages, and fallback in order.\n *\n * @param errorKey - The error key (e.g., 'required', 'email')\n * @param errors - All validation errors on the control\n * @returns The resolved error message string\n */\n private resolveErrorMessageForKey(errorKey: string, errors: ValidationErrors): string {\n const errorArgs = errors[errorKey];\n\n // Priority: custom > built-in > fallback > default\n const customMsg = this.props.errorMessages?.[errorKey];\n const useBuiltIn = this.props.useBuiltInErrorMessages !== false;\n const builtInMsg = useBuiltIn ? this.builtInErrorMessages[errorKey] : undefined;\n const fallbackMsg = this.props.defaultErrorMessage;\n\n const msgDef = customMsg ?? builtInMsg ?? fallbackMsg ?? 'Invalid input';\n\n // If the message is a function, call it with error arguments\n if (typeof msgDef === 'function') {\n return msgDef(errorArgs, errors);\n }\n return msgDef;\n }\n\n /**\n * Gets all error messages for the current control state.\n * Returns an array of error messages (used when showAllErrors is true).\n *\n * @returns Array of error message strings\n */\n get errorMessages(): string[] {\n const errors = this.control?.errors;\n if (!errors) return [];\n\n const errorKeys = Object.keys(errors);\n return errorKeys.map(key => this.resolveErrorMessageForKey(key, errors));\n }\n\n /**\n * Gets a single error message for the current control state.\n * Uses errorPriority to determine which error to show (when showAllErrors is false).\n *\n * @returns Single error message string, or null if no errors\n */\n get errorMessage(): string | null {\n const errors = this.control?.errors;\n if (!errors) return null;\n\n const errorKey = this.pickErrorKey(errors);\n return this.resolveErrorMessageForKey(errorKey, errors);\n }\n\n // ========== Resolved Properties ==========\n\n /** Resolved ID for the input element */\n get resolvedId(): string {\n return this.props.id;\n }\n\n /** Resolved name attribute for the input element */\n get resolvedName(): string | null {\n return this.props?.name ?? null;\n }\n\n /**\n * Computes the CSS classes from tailwind-variants based on the props.\n * Returns the variant classes for styling the input element.\n */\n get inputClasses(): string {\n return mnInputFieldVariants({\n size: this.props.size,\n borderRadius: this.props.borderRadius,\n shadow: this.props.shadow,\n fullWidth: this.props.fullWidth,\n });\n }\n}\n","<div class=\"flex flex-col\" [class.is-fullwidth]=\"props.fullWidth\">\n <!-- Label -->\n @if (uiConfig.label) {\n <label class=\"pl-2 pb-1 flex flex-row gap-x-0.5! text-base!\" [attr.for]=\"resolvedId\">\n <p>{{ uiConfig.label }}</p>\n @if (isRequired()) {\n <span class=\"text-red-500 \">*</span>\n }\n </label>\n }\n\n <!-- Input Element -->\n <input\n [id]=\"resolvedId\"\n [attr.name]=\"resolvedName\"\n [type]=\"props.type\"\n [attr.placeholder]=\"uiConfig.placeholder || null\"\n [attr.aria-label]=\"uiConfig.ariaLabel || uiConfig.label || null\"\n [attr.aria-invalid]=\"showError || null\"\n [attr.aria-describedby]=\"showError ? resolvedId + '-error' : null\"\n [disabled]=\"isDisabled\"\n [attr.min]=\"minAttr\"\n [attr.max]=\"maxAttr\"\n [value]=\"value ?? ''\"\n [ngClass]=\"inputClasses\"\n (input)=\"handleInput(($any($event.target)).value)\"\n (blur)=\"handleBlur()\"\n />\n\n <!-- Error Messages -->\n @if (showError) {\n <!-- Show all errors mode -->\n @if (props.showAllErrors) {\n <div class=\"flex flex-col gap-y-1\">\n @for (error of errorMessages; track $index) {\n <lib-mn-error-message [errorMessage]=\"error\" [id]=\"resolvedId + '-' + $index\"></lib-mn-error-message>\n }\n </div>\n } @else {\n @if (errorMessage != null) {\n <lib-mn-error-message [errorMessage]=\"errorMessage\" [id]=\"resolvedId\"></lib-mn-error-message>\n\n }\n }\n }\n</div>\n","import { InjectionToken, Optional, Provider } from '@angular/core';\nimport { MN_INSTANCE_ID, MN_SECTION_PATH } from '../context/mn-context.tokens';\nimport { MnConfigService } from './mn-config.service';\n\n/**\n * Helper to provide a resolved, typed component config via DI.\n *\n * Usage in a component/module providers:\n * const MY_CFG = new InjectionToken<MyCfg>('MY_CFG');\n * providers: [ provideMnComponentConfig(MY_CFG, 'my-component') ]\n * Then in the component:\n * readonly cfg = inject(MY_CFG)\n */\nexport function provideMnComponentConfig<T extends object>(\n token: InjectionToken<T>,\n componentName: string,\n initial?: Partial<T>,\n): Provider {\n return {\n provide: token,\n deps: [MnConfigService, [new Optional(), MN_SECTION_PATH], [new Optional(), MN_INSTANCE_ID]],\n useFactory: (svc: MnConfigService, sectionPath: string[] | null, instanceId: string | null): T => {\n const resolved = svc.resolve<T>(componentName, sectionPath ?? [], instanceId ?? undefined);\n // Apply optional initial (local defaults) over resolved? We prefer resolved to override initial local defaults,\n // so merge initial first, then resolved on top.\n return Object.assign({}, initial ?? {}, resolved);\n },\n };\n}\n","import { Component, InjectionToken, inject } from '@angular/core';\n\nimport { provideMnComponentConfig } from '../../config/mn-component-config.providers';\n\ninterface TestConfig {\n text?: string;\n color?: string;\n}\n\nexport const MN_TEST_COMPONENT_CONFIG = new InjectionToken<TestConfig>('MN_TEST_COMPONENT_CONFIG');\n\n@Component({\n selector: 'mn-test-component',\n standalone: true,\n imports: [],\n providers: [\n provideMnComponentConfig<TestConfig>(MN_TEST_COMPONENT_CONFIG, 'test-component'),\n ],\n template: `\n <div class=\"mn-test\" [style.color]=\"(cfg.color ?? 'inherit')\">\n {{ cfg.text ?? 'Hello from component' }}\n </div>\n `,\n styles: [`\n .mn-test { font-weight: 600; padding: 8px 12px; border: 1px dashed #ddd; border-radius: 6px; }\n `]\n})\nexport class MnTestComponent {\n readonly cfg = inject(MN_TEST_COMPONENT_CONFIG);\n}\n","import {Component, Input} from '@angular/core';\nimport {NgOptimizedImage} from '@angular/common';\nimport { MnDualHorizontalImageTypes } from './mn-dual-horizontal-imageTypes';\n\n@Component({\n selector: 'lib-mn-dual-horizontal-image',\n standalone: true,\n imports: [\n NgOptimizedImage\n ],\n templateUrl: './mn-dual-horizontal-image.html',\n host: {\n class: 'block'\n }\n})\nexport class MnDualHorizontalImage {\n private _images: MnDualHorizontalImageTypes[] = [];\n\n @Input()\n set images(value: MnDualHorizontalImageTypes[]) {\n this._images = (value ?? []).slice(0, 2);\n }\n\n get images(): MnDualHorizontalImageTypes[] {\n return this._images;\n }\n}\n","<div class=\"flex flex-col h-full w-full -space-y-5 md:-space-y-10 lg:-space-y-5\">\n @for (image of images; track image.id) {\n <div class=\"w-[75%] h-1/2 overflow-hidden rounded-3xl shadow-md md:w-[65%] lg:w-[80%] first:self-start last:self-end last:mb-4\">\n <img [ngSrc]=\"image.url\" width=\"150\" height=\"100\" class=\"size-full object-cover\" [alt]=\"image.alt\" />\n </div>\n } @empty {\n <p>No images found</p>\n }\n</div>\n\n","import { tv, type VariantProps } from 'tailwind-variants';\n\nexport const mnInformationCardVariants = tv({\n base: '',\n variants: {\n bottomBorder: {\n true: 'border-b border-b-2 border-brand-500',\n },\n shadow: {\n true: 'shadow-lg',\n },\n textPosition: {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n },\n borderRadius: {\n none: 'rounded-none',\n xs: 'rounded-xs',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n two_xl: 'rounded-2xl',\n three_xl: 'rounded-3xl',\n four_xl: 'rounded-4xl',\n },\n },\n});\n\nexport type MnInformationCardVariants = VariantProps<typeof mnInformationCardVariants>;\n","import {Component, Input} from '@angular/core';\nimport {MnInformationCardData} from './mn-information-cardTypes';\nimport {mnInformationCardVariants} from './mn-information-cardVariants';\nimport {NgClass} from '@angular/common';\n\n@Component({\n selector: 'lib-mn-information-card',\n standalone: true,\n imports: [\n NgClass\n ],\n templateUrl: './mn-information-card.html',\n})\nexport class MnInformationCard<TExtra = unknown> {\n @Input({ required: true }) data!: MnInformationCardData<TExtra>;\n\n get hostClasses(): string {\n return mnInformationCardVariants({\n bottomBorder: this.data.bottomBorder,\n shadow: this.data.shadow,\n textPosition: this.data.textPosition,\n });\n }\n}\n\n","<div class=\"flex flex-col items-center gap-y-4 p-4 size-full\" [ngClass]=\"hostClasses\">\n<ng-content select=\"[header]\"></ng-content>\n<ng-content></ng-content>\n<ng-content select=\"[footer]\"></ng-content>\n</div>\n","/**\n * Types for mn-lib configuration.\n */\n\nexport interface MnConfigFile {\n /**\n * Base defaults by component name. Each value is a plain object with inputs/options for that component.\n */\n defaults: Record<string, unknown>;\n /**\n * Nested object tree keyed by section names. Leaf nodes may contain\n * component-name keys (component override objects) and keys starting with '#'\n * representing instance-id overrides.\n */\n overrides: unknown;\n}\n","import { APP_INITIALIZER, Provider } from '@angular/core';\nimport { MnConfigService } from './mn-config.service';\n\n/**\n * Provides an APP_INITIALIZER that loads the mn-lib configuration from the given URL\n * during application bootstrap. The consuming application is responsible for providing\n * HttpClient (e.g., via HttpClientModule or provideHttpClient()).\n */\nexport function provideMnConfig(url: string): Provider[] {\n return [\n {\n provide: APP_INITIALIZER,\n multi: true,\n useFactory: (svc: MnConfigService) => () => svc.load(url),\n deps: [MnConfigService],\n },\n ];\n}\n","import { Attribute, Directive, Input, Optional, SkipSelf } from '@angular/core';\nimport { MN_SECTION_PATH } from './mn-context.tokens';\n\n@Directive({\n selector: '[mn-section]',\n standalone: true,\n providers: [\n {\n provide: MN_SECTION_PATH,\n // Read parent MN_SECTION_PATH from ancestor injector (skipSelf to avoid self-reference),\n // and read the attribute value using Attribute so it's available at provider creation time.\n deps: [[new Optional(), new SkipSelf(), MN_SECTION_PATH], new Attribute('mn-section')],\n useFactory: (parentPath: string[] | null, attr: string | null) => {\n const parent = Array.isArray(parentPath) ? parentPath : [];\n const name = (attr ?? '').trim();\n return name ? [...parent, name] : [...parent];\n },\n },\n ],\n})\nexport class MnSectionDirective {\n /** Section name contributed by this DOM node to the section path */\n @Input('mn-section') mnSection: string | undefined;\n}\n","import { Attribute, Directive, Input } from '@angular/core';\nimport { MN_INSTANCE_ID } from './mn-context.tokens';\n\n@Directive({\n selector: '[mn-instance]',\n standalone: true,\n providers: [\n {\n provide: MN_INSTANCE_ID,\n // Read the attribute at provider creation time using Attribute token; Inputs may not be set yet.\n deps: [new Attribute('mn-instance')],\n useFactory: (attr: string | null) => (attr ?? '').trim() || null,\n },\n ],\n})\nexport class MnInstanceDirective {\n /** Instance id for targeting per-component instance overrides */\n @Input('mn-instance') mnInstance: string | undefined;\n}\n","/*\n * Public API Surface of mn-lib\n */\nexport * from './lib';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mn-angular-lib",
3
- "version": "0.0.26",
3
+ "version": "0.0.28",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^21.1.3",
6
6
  "@angular/core": "^21.1.3"
@@ -1068,5 +1068,5 @@ declare class MnInstanceDirective {
1068
1068
  static ɵdir: i0.ɵɵDirectiveDeclaration<MnInstanceDirective, "[mn-instance]", never, { "mnInstance": { "alias": "mn-instance"; "required": false; }; }, {}, never, never, true, never>;
1069
1069
  }
1070
1070
 
1071
- export { DEFAULT_MN_ALERT_CONFIG, MN_ALERT_CONFIG, MN_INPUT_FIELD_CONFIG, MN_INSTANCE_ID, MN_SECTION_PATH, MN_TEST_COMPONENT_CONFIG, MN_THEME, MN_THEME_DEFAULTS, MnAlertOutletComponent, MnAlertService, MnAlertStore, MnButton, MnConfigService, MnDualHorizontalImage, MnInformationCard, MnInputField, MnInstanceDirective, MnSectionDirective, MnTestComponent, MnThemeService, Test, dateTimeAdapter, defaultTextAdapter, injectTheme, injectThemeSignal, mnInformationCardVariants, mnInputFieldVariants, numberAdapter, pickAdapter, provideMnAlerts, provideMnComponentConfig, provideMnConfig, provideMnTheme, provideMnThemeDynamic };
1072
- export type { MnAlert, MnAlertConfig, MnAlertId, MnAlertKind, MnAlertTemplateContext, MnConfigFile, MnDomAttrs, MnDualHorizontalImageTypes, MnErrorMessageData, MnErrorMessagesData, MnImageType, MnInformationCardBaseData, MnInformationCardData, MnInformationCardVariants, MnInputAdapter, MnInputBaseProps, MnInputDateTimeProps, MnInputFieldProps, MnInputFieldUIConfig, MnInputProps, MnInputType, MnInputVariants, MnShowInput, MnTheme };
1071
+ export { DEFAULT_MN_ALERT_CONFIG, MN_ALERT_CONFIG, MN_INPUT_FIELD_CONFIG, MN_INSTANCE_ID, MN_SECTION_PATH, MN_TEST_COMPONENT_CONFIG, MN_THEME, MN_THEME_DEFAULTS, MnAlertOutletComponent, MnAlertService, MnAlertStore, MnButton, MnConfigService, MnDualHorizontalImage, MnInformationCard, MnInputField, MnInstanceDirective, MnSectionDirective, MnTestComponent, MnThemeService, Test, dateTimeAdapter, defaultTextAdapter, injectTheme, injectThemeSignal, mnButtonVariants, mnInformationCardVariants, mnInputFieldVariants, numberAdapter, pickAdapter, provideMnAlerts, provideMnComponentConfig, provideMnConfig, provideMnTheme, provideMnThemeDynamic };
1072
+ export type { MnAlert, MnAlertConfig, MnAlertId, MnAlertKind, MnAlertTemplateContext, MnButtonTypes, MnButtonVariants, MnConfigFile, MnDomAttrs, MnDualHorizontalImageTypes, MnErrorMessageData, MnErrorMessagesData, MnImageType, MnInformationCardBaseData, MnInformationCardData, MnInformationCardVariants, MnInputAdapter, MnInputBaseProps, MnInputDateTimeProps, MnInputFieldProps, MnInputFieldUIConfig, MnInputProps, MnInputType, MnInputVariants, MnShowInput, MnTheme };