ng-comps 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-comps.mjs","sources":["../../../src/app/components/accordion/mf-accordion.component.ts","../../../src/app/components/alert/mf-alert.component.ts","../../../src/app/components/autocomplete/mf-autocomplete.component.ts","../../../src/app/components/avatar/mf-avatar.component.ts","../../../src/app/components/badge/mf-badge.component.ts","../../../src/app/components/breadcrumb/mf-breadcrumb.component.ts","../../../src/app/components/button/mf-button.component.ts","../../../src/app/components/card/mf-card.component.ts","../../../src/app/components/checkbox/mf-checkbox.component.ts","../../../src/app/components/chip/mf-chip.component.ts","../../../src/app/components/datepicker/mf-datepicker.component.ts","../../../src/app/components/dialog/mf-dialog.component.ts","../../../src/app/components/divider/mf-divider.component.ts","../../../src/app/components/form-field/mf-form-field.component.ts","../../../src/app/components/grid-list/mf-grid-list.component.ts","../../../src/app/components/icon/mf-icon.component.ts","../../../src/app/components/input/mf-input.component.ts","../../../src/app/components/menu/mf-menu.component.ts","../../../src/app/components/paginator/mf-paginator.component.ts","../../../src/app/components/progress-bar/mf-progress-bar.component.ts","../../../src/app/components/progress-spinner/mf-progress-spinner.component.ts","../../../src/app/components/radio-button/mf-radio-button.component.ts","../../../src/app/components/select/mf-select.component.ts","../../../src/app/components/sidenav/mf-sidenav.component.ts","../../../src/app/components/slide-toggle/mf-slide-toggle.component.ts","../../../src/app/components/snackbar/mf-snackbar.service.ts","../../../src/app/components/table/mf-table.component.ts","../../../src/app/components/tabs/mf-tabs.component.ts","../../../src/app/components/textarea/mf-textarea.component.ts","../../../src/app/components/toolbar/mf-toolbar.component.ts","../../../src/app/components/tooltip/mf-tooltip.component.ts","../../../src/ng-comps.ts"],"sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n} from '@angular/core';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\n\r\nexport interface MfAccordionPanel {\r\n title: string;\r\n description?: string;\r\n content: string;\r\n expanded?: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\n/**\r\n * Accordion de la librería ng-comps.\r\n * Envuelve Angular Material `mat-accordion` / `mat-expansion-panel` y expone\r\n * una API uniforme con look and feel de marca.\r\n */\r\n@Component({\r\n selector: 'mf-accordion',\r\n imports: [MatExpansionModule],\r\n template: `\r\n <mat-accordion [multi]=\"multi()\" [class]=\"hostClasses()\">\r\n @for (panel of panels(); track panel.title) {\r\n <mat-expansion-panel\r\n [expanded]=\"panel.expanded ?? false\"\r\n [disabled]=\"panel.disabled ?? false\"\r\n >\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>{{ panel.title }}</mat-panel-title>\r\n @if (panel.description) {\r\n <mat-panel-description>{{ panel.description }}</mat-panel-description>\r\n }\r\n </mat-expansion-panel-header>\r\n <p>{{ panel.content }}</p>\r\n </mat-expansion-panel>\r\n }\r\n </mat-accordion>\r\n `,\r\n styleUrl: './mf-accordion.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfAccordionComponent {\r\n /** Paneles del accordion */\r\n readonly panels = input.required<MfAccordionPanel[]>();\r\n /** Permite múltiples paneles abiertos */\r\n readonly multi = input(false);\r\n\r\n readonly hostClasses = computed(() => 'mf-accordion');\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n output,\r\n} from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\nexport type MfAlertSeverity = 'info' | 'success' | 'warning' | 'error';\r\n\r\n/**\r\n * Alerta de la librería ng-comps.\r\n * Componente de banner para mensajes de sistema, alertas y notificaciones.\r\n * Ideal para dashboards y paneles administrativos.\r\n */\r\n@Component({\r\n selector: 'mf-alert',\r\n imports: [MatIconModule],\r\n template: `\r\n <div [class]=\"hostClasses()\" role=\"alert\">\r\n <mat-icon class=\"mf-alert__icon\" aria-hidden=\"true\">{{ iconName() }}</mat-icon>\r\n <div class=\"mf-alert__content\">\r\n @if (title()) {\r\n <strong class=\"mf-alert__title\">{{ title() }}</strong>\r\n }\r\n <span class=\"mf-alert__message\">{{ message() }}</span>\r\n </div>\r\n @if (dismissible()) {\r\n <button\r\n class=\"mf-alert__close\"\r\n (click)=\"mfDismiss.emit()\"\r\n [attr.aria-label]=\"'Cerrar alerta'\"\r\n >\r\n <mat-icon aria-hidden=\"true\">close</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n `,\r\n styleUrl: './mf-alert.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfAlertComponent {\r\n /** Mensaje principal */\r\n readonly message = input.required<string>();\r\n /** Título opcional */\r\n readonly title = input<string | undefined>(undefined);\r\n /** Severidad de la alerta */\r\n readonly severity = input<MfAlertSeverity>('info');\r\n /** Se puede cerrar */\r\n readonly dismissible = input(false);\r\n\r\n readonly mfDismiss = output<void>();\r\n\r\n readonly iconName = computed(() => {\r\n const map: Record<MfAlertSeverity, string> = {\r\n info: 'info',\r\n success: 'check_circle',\r\n warning: 'warning',\r\n error: 'error',\r\n };\r\n return map[this.severity()];\r\n });\r\n\r\n readonly hostClasses = computed(() => {\r\n return ['mf-alert', `mf-alert--${this.severity()}`].join(' ');\r\n });\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n effect,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\n\r\nexport interface MfAutocompleteOption {\r\n value: string | number;\r\n label: string;\r\n disabled?: boolean;\r\n}\r\n\r\nexport type MfAutocompleteSize = 'sm' | 'md' | 'lg';\r\n\r\n/**\r\n * Autocompletar de la librería ng-comps.\r\n * Envuelve Angular Material `mat-autocomplete` y expone una API uniforme\r\n * con look and feel de marca.\r\n *\r\n * El panel desplegable se estiliza con la clase global `mf-autocomplete-panel`.\r\n * Puedes añadir clases adicionales con `panelClass`.\r\n */\r\n@Component({\r\n selector: 'mf-autocomplete',\r\n imports: [\r\n FormsModule,\r\n MatAutocompleteModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatInputModule,\r\n ],\r\n template: `\r\n <mat-form-field [appearance]=\"'outline'\" [class]=\"hostClasses()\">\r\n @if (label()) {\r\n <mat-label>{{ label() }}</mat-label>\r\n }\r\n @if (leadingIcon()) {\r\n <mat-icon matPrefix aria-hidden=\"true\">{{ leadingIcon() }}</mat-icon>\r\n }\r\n <input\r\n matInput\r\n [placeholder]=\"placeholder()\"\r\n [disabled]=\"disabled()\"\r\n [matAutocomplete]=\"auto\"\r\n [(ngModel)]=\"inputValue\"\r\n (ngModelChange)=\"onInputChange($event)\"\r\n (blur)=\"mfBlur.emit()\"\r\n />\r\n @if (trailingIcon()) {\r\n <mat-icon matSuffix aria-hidden=\"true\">{{ trailingIcon() }}</mat-icon>\r\n }\r\n @if (hint()) {\r\n <mat-hint>{{ hint() }}</mat-hint>\r\n }\r\n @if (error()) {\r\n <mat-error>{{ error() }}</mat-error>\r\n }\r\n <mat-autocomplete\r\n #auto\r\n [panelWidth]=\"panelWidth()\"\r\n [class]=\"autocompletePanelClasses()\"\r\n (optionSelected)=\"onOptionSelected($event)\"\r\n >\r\n @for (option of filteredOptions(); track option.value) {\r\n <mat-option [value]=\"option.label\" [disabled]=\"option.disabled ?? false\">\r\n {{ option.label }}\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n `,\r\n styleUrl: './mf-autocomplete.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfAutocompleteComponent {\r\n /** Lista completa de opciones */\r\n readonly options = input.required<MfAutocompleteOption[]>();\r\n /** Etiqueta flotante del campo */\r\n readonly label = input<string | undefined>(undefined);\r\n /** Placeholder del input */\r\n readonly placeholder = input('');\r\n /** Valor actual (texto en el campo) */\r\n readonly value = input('');\r\n /** Deshabilitado */\r\n readonly disabled = input(false);\r\n /** Tamaño del campo */\r\n readonly size = input<MfAutocompleteSize>('md');\r\n /** Ancho completo */\r\n readonly fullWidth = input(false);\r\n /** Texto de ayuda debajo del campo */\r\n readonly hint = input<string | undefined>(undefined);\r\n /** Mensaje de error */\r\n readonly error = input<string | undefined>(undefined);\r\n /** Icono al inicio del campo */\r\n readonly leadingIcon = input<string | undefined>(undefined);\r\n /** Icono al final del campo */\r\n readonly trailingIcon = input<string | undefined>(undefined);\r\n /**\r\n * Ancho del panel del autocomplete.\r\n * Por defecto `''`: el panel toma el mismo ancho que el campo.\r\n * Acepta cualquier valor CSS válido ('300px', '80vw', etc.) para sobreescribirlo.\r\n */\r\n readonly panelWidth = input<string | number>('');\r\n /**\r\n * Clases extra que se añaden al panel del autocomplete (overlay).\r\n * La clase `mf-autocomplete-panel` siempre está presente.\r\n */\r\n readonly panelClass = input<string | string[]>('');\r\n\r\n /** Emite el texto escrito en el campo */\r\n readonly mfInput = output<string>();\r\n /** Emite el valor de la opción seleccionada */\r\n readonly mfOptionSelected = output<MfAutocompleteOption>();\r\n readonly mfBlur = output<void>();\r\n\r\n inputValue = '';\r\n\r\n readonly hostClasses = computed(() => {\r\n const classes = ['mf-autocomplete', `mf-autocomplete--${this.size()}`];\r\n if (this.fullWidth()) classes.push('mf-autocomplete--full');\r\n if (this.error()) classes.push('mf-autocomplete--error');\r\n return classes.join(' ');\r\n });\r\n\r\n readonly autocompletePanelClasses = computed(() => {\r\n const base = ['mf-autocomplete-panel'];\r\n const extra = this.panelClass();\r\n if (Array.isArray(extra)) {\r\n base.push(...extra.filter(Boolean));\r\n } else if (extra) {\r\n base.push(extra);\r\n }\r\n return base.join(' ');\r\n });\r\n\r\n readonly filteredOptions = computed(() => {\r\n const query = this.inputValue.toLowerCase().trim();\r\n if (!query) return this.options();\r\n return this.options().filter((o) =>\r\n o.label.toLowerCase().includes(query)\r\n );\r\n });\r\n\r\n constructor() {\r\n effect(() => {\r\n this.inputValue = this.value();\r\n });\r\n }\r\n\r\n onInputChange(value: string): void {\r\n this.mfInput.emit(value);\r\n }\r\n\r\n onOptionSelected(event: { option: { value: string } }): void {\r\n const label = event.option.value;\r\n const match = this.options().find((o) => o.label === label);\r\n if (match) {\r\n this.mfOptionSelected.emit(match);\r\n }\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n} from '@angular/core';\r\n\r\nexport type MfAvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\nexport type MfAvatarVariant = 'circle' | 'rounded';\r\n\r\n/**\r\n * Avatar de la librería ng-comps.\r\n * Muestra una imagen de perfil, iniciales o un icono.\r\n * Componente puro sin dependencia de Angular Material.\r\n */\r\n@Component({\r\n selector: 'mf-avatar',\r\n imports: [],\r\n template: `\r\n @if (src()) {\r\n <img\r\n [src]=\"src()\"\r\n [alt]=\"alt()\"\r\n [class]=\"hostClasses()\"\r\n />\r\n } @else {\r\n <span [class]=\"hostClasses()\" [attr.aria-label]=\"alt()\">\r\n {{ initials() }}\r\n </span>\r\n }\r\n `,\r\n styleUrl: './mf-avatar.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfAvatarComponent {\r\n /** URL de la imagen */\r\n readonly src = input<string | undefined>(undefined);\r\n /** Texto alternativo */\r\n readonly alt = input<string>('');\r\n /** Nombre completo para generar iniciales */\r\n readonly name = input<string>('');\r\n /** Tamaño */\r\n readonly size = input<MfAvatarSize>('md');\r\n /** Forma */\r\n readonly variant = input<MfAvatarVariant>('circle');\r\n\r\n readonly initials = computed(() => {\r\n const n = this.name();\r\n if (!n) return '?';\r\n const parts = n.trim().split(/\\s+/);\r\n if (parts.length === 1) return parts[0].charAt(0).toUpperCase();\r\n return (parts[0].charAt(0) + parts[parts.length - 1].charAt(0)).toUpperCase();\r\n });\r\n\r\n readonly hostClasses = computed(() => {\r\n return ['mf-avatar', `mf-avatar--${this.size()}`, `mf-avatar--${this.variant()}`].join(' ');\r\n });\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n} from '@angular/core';\r\nimport { MatBadgeModule } from '@angular/material/badge';\r\n\r\nexport type MfBadgeColor = 'brand' | 'accent' | 'error' | 'neutral';\r\nexport type MfBadgeSize = 'sm' | 'md' | 'lg';\r\nexport type MfBadgePosition = 'above-after' | 'above-before' | 'below-after' | 'below-before';\r\n\r\n/**\r\n * Badge de la librería ng-comps.\r\n * Envuelve Angular Material `matBadge` y expone una API uniforme\r\n * con look and feel de marca.\r\n */\r\n@Component({\r\n selector: 'mf-badge',\r\n imports: [MatBadgeModule],\r\n template: `\r\n <span\r\n [matBadge]=\"content()\"\r\n [matBadgeHidden]=\"hidden()\"\r\n [matBadgeDisabled]=\"disabled()\"\r\n [matBadgeOverlap]=\"overlap()\"\r\n [matBadgePosition]=\"matPosition()\"\r\n [matBadgeSize]=\"matSize()\"\r\n [class]=\"hostClasses()\"\r\n >\r\n <ng-content />\r\n </span>\r\n `,\r\n styleUrl: './mf-badge.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfBadgeComponent {\r\n /** Contenido del badge (texto o número) */\r\n readonly content = input<string | number>('');\r\n /** Color semántico */\r\n readonly color = input<MfBadgeColor>('brand');\r\n /** Tamaño del badge */\r\n readonly size = input<MfBadgeSize>('md');\r\n /** Posición del badge */\r\n readonly position = input<MfBadgePosition>('above-after');\r\n /** Ocultar el badge */\r\n readonly hidden = input(false);\r\n /** Deshabilitado */\r\n readonly disabled = input(false);\r\n /** Superponer sobre el contenido */\r\n readonly overlap = input(true);\r\n\r\n readonly matPosition = computed(() => {\r\n const pos = this.position();\r\n const map: Record<MfBadgePosition, 'above after' | 'above before' | 'below after' | 'below before'> = {\r\n 'above-after': 'above after',\r\n 'above-before': 'above before',\r\n 'below-after': 'below after',\r\n 'below-before': 'below before',\r\n };\r\n return map[pos];\r\n });\r\n\r\n readonly matSize = computed((): 'small' | 'medium' | 'large' => {\r\n const map: Record<MfBadgeSize, 'small' | 'medium' | 'large'> = { sm: 'small', md: 'medium', lg: 'large' };\r\n return map[this.size()];\r\n });\r\n\r\n readonly hostClasses = computed(() => {\r\n return ['mf-badge', `mf-badge--${this.color()}`].join(' ');\r\n });\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n output,\r\n} from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\nexport interface MfBreadcrumbItem {\r\n label: string;\r\n href?: string;\r\n icon?: string;\r\n}\r\n\r\n/**\r\n * Breadcrumb de la librería ng-comps.\r\n * Componente de navegación jerárquica para indicar la ubicación\r\n * del usuario en la aplicación.\r\n */\r\n@Component({\r\n selector: 'mf-breadcrumb',\r\n imports: [MatIconModule],\r\n template: `\r\n <nav [attr.aria-label]=\"ariaLabel()\" [class]=\"hostClasses()\">\r\n <ol class=\"mf-breadcrumb__list\">\r\n @for (item of items(); track item.label; let last = $last) {\r\n <li class=\"mf-breadcrumb__item\">\r\n @if (!last && item.href) {\r\n <a\r\n class=\"mf-breadcrumb__link\"\r\n [href]=\"item.href\"\r\n (click)=\"onItemClick($event, item)\"\r\n >\r\n @if (item.icon) {\r\n <mat-icon class=\"mf-breadcrumb__icon\" aria-hidden=\"true\">{{ item.icon }}</mat-icon>\r\n }\r\n {{ item.label }}\r\n </a>\r\n } @else {\r\n <span class=\"mf-breadcrumb__current\" [attr.aria-current]=\"last ? 'page' : null\">\r\n @if (item.icon) {\r\n <mat-icon class=\"mf-breadcrumb__icon\" aria-hidden=\"true\">{{ item.icon }}</mat-icon>\r\n }\r\n {{ item.label }}\r\n </span>\r\n }\r\n @if (!last) {\r\n <mat-icon class=\"mf-breadcrumb__separator\" aria-hidden=\"true\">{{ separator() }}</mat-icon>\r\n }\r\n </li>\r\n }\r\n </ol>\r\n </nav>\r\n `,\r\n styleUrl: './mf-breadcrumb.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfBreadcrumbComponent {\r\n /** Items del breadcrumb */\r\n readonly items = input.required<MfBreadcrumbItem[]>();\r\n /** Icono separador */\r\n readonly separator = input<string>('chevron_right');\r\n /** Label de accesibilidad */\r\n readonly ariaLabel = input<string>('Breadcrumb');\r\n\r\n readonly mfItemClick = output<MfBreadcrumbItem>();\r\n\r\n readonly hostClasses = computed(() => 'mf-breadcrumb');\r\n\r\n onItemClick(event: Event, item: MfBreadcrumbItem): void {\r\n event.preventDefault();\r\n this.mfItemClick.emit(item);\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n output,\r\n} from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\nexport type MfButtonVariant = 'filled' | 'outlined' | 'text';\r\nexport type MfButtonSize = 'sm' | 'md' | 'lg';\r\n\r\n/**\r\n * Botón de la librería ng-comps.\r\n * Envuelve Angular Material `mat-button` / `mat-flat-button` / `mat-stroked-button`\r\n * y expone una API uniforme con look and feel de marca.\r\n */\r\n@Component({\r\n selector: 'mf-button',\r\n imports: [MatButtonModule, MatIconModule],\r\n template: `\r\n @if (variant() === 'filled') {\r\n <button\r\n mat-flat-button\r\n [type]=\"type()\"\r\n [disabled]=\"disabled()\"\r\n [class]=\"hostClasses()\"\r\n (click)=\"mfClick.emit($event)\"\r\n >\r\n @if (leadingIcon()) {\r\n <mat-icon aria-hidden=\"true\">{{ leadingIcon() }}</mat-icon>\r\n }\r\n <span>{{ label() }}</span>\r\n @if (trailingIcon()) {\r\n <mat-icon aria-hidden=\"true\">{{ trailingIcon() }}</mat-icon>\r\n }\r\n </button>\r\n } @else if (variant() === 'outlined') {\r\n <button\r\n mat-stroked-button\r\n [type]=\"type()\"\r\n [disabled]=\"disabled()\"\r\n [class]=\"hostClasses()\"\r\n (click)=\"mfClick.emit($event)\"\r\n >\r\n @if (leadingIcon()) {\r\n <mat-icon aria-hidden=\"true\">{{ leadingIcon() }}</mat-icon>\r\n }\r\n <span>{{ label() }}</span>\r\n @if (trailingIcon()) {\r\n <mat-icon aria-hidden=\"true\">{{ trailingIcon() }}</mat-icon>\r\n }\r\n </button>\r\n } @else {\r\n <button\r\n mat-button\r\n [type]=\"type()\"\r\n [disabled]=\"disabled()\"\r\n [class]=\"hostClasses()\"\r\n (click)=\"mfClick.emit($event)\"\r\n >\r\n @if (leadingIcon()) {\r\n <mat-icon aria-hidden=\"true\">{{ leadingIcon() }}</mat-icon>\r\n }\r\n <span>{{ label() }}</span>\r\n @if (trailingIcon()) {\r\n <mat-icon aria-hidden=\"true\">{{ trailingIcon() }}</mat-icon>\r\n }\r\n </button>\r\n }\r\n `,\r\n styleUrl: './mf-button.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfButtonComponent {\r\n readonly label = input.required<string>();\r\n readonly variant = input<MfButtonVariant>('filled');\r\n readonly size = input<MfButtonSize>('md');\r\n readonly type = input<'button' | 'submit' | 'reset'>('button');\r\n readonly disabled = input(false);\r\n readonly leadingIcon = input<string | undefined>(undefined);\r\n readonly trailingIcon = input<string | undefined>(undefined);\r\n readonly fullWidth = input(false);\r\n\r\n readonly mfClick = output<MouseEvent>();\r\n\r\n readonly hostClasses = computed(() => {\r\n const classes = ['mf-btn', `mf-btn--${this.variant()}`, `mf-btn--${this.size()}`];\r\n if (this.fullWidth()) classes.push('mf-btn--full');\r\n return classes.join(' ');\r\n });\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n} from '@angular/core';\r\nimport { MatCardModule } from '@angular/material/card';\r\n\r\nexport type MfCardVariant = 'elevated' | 'outlined' | 'flat';\r\n\r\n/**\r\n * Card de la librería ng-comps.\r\n * Envuelve Angular Material `mat-card` y expone una API uniforme\r\n * con look and feel de marca. Admite contenido proyectado mediante slots.\r\n */\r\n@Component({\r\n selector: 'mf-card',\r\n imports: [MatCardModule],\r\n template: `\r\n <mat-card [class]=\"hostClasses()\">\r\n @if (hasHeader()) {\r\n <mat-card-header>\r\n @if (title()) {\r\n <mat-card-title class=\"mf-card__title\">{{ title() }}</mat-card-title>\r\n }\r\n @if (subtitle()) {\r\n <mat-card-subtitle class=\"mf-card__subtitle\">{{ subtitle() }}</mat-card-subtitle>\r\n }\r\n </mat-card-header>\r\n }\r\n <mat-card-content>\r\n <ng-content />\r\n </mat-card-content>\r\n <ng-content select=\"[mfCardFooter]\" />\r\n </mat-card>\r\n `,\r\n styleUrl: './mf-card.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfCardComponent {\r\n /** Título de la card */\r\n readonly title = input<string | undefined>(undefined);\r\n /** Subtítulo de la card */\r\n readonly subtitle = input<string | undefined>(undefined);\r\n /** Variante visual */\r\n readonly variant = input<MfCardVariant>('elevated');\r\n /** Padding interno */\r\n readonly padding = input<'none' | 'sm' | 'md' | 'lg'>('md');\r\n /** Interactiva (hover effect) */\r\n readonly interactive = input(false);\r\n\r\n readonly hasHeader = computed(() => !!this.title() || !!this.subtitle());\r\n\r\n readonly hostClasses = computed(() => {\r\n const classes = ['mf-card', `mf-card--${this.variant()}`, `mf-card--pad-${this.padding()}`];\r\n if (this.interactive()) classes.push('mf-card--interactive');\r\n return classes.join(' ');\r\n });\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n output,\r\n} from '@angular/core';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\n\r\n/**\r\n * Checkbox de la librería ng-comps.\r\n * Envuelve Angular Material `mat-checkbox` y expone una API uniforme\r\n * con look and feel de marca.\r\n */\r\n@Component({\r\n selector: 'mf-checkbox',\r\n imports: [MatCheckboxModule],\r\n template: `\r\n <mat-checkbox\r\n [checked]=\"checked()\"\r\n [disabled]=\"disabled()\"\r\n [indeterminate]=\"indeterminate()\"\r\n [class]=\"hostClasses()\"\r\n (change)=\"onChange($event)\"\r\n >\r\n {{ label() }}\r\n </mat-checkbox>\r\n `,\r\n styleUrl: './mf-checkbox.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfCheckboxComponent {\r\n /** Texto del checkbox */\r\n readonly label = input.required<string>();\r\n /** Estado marcado */\r\n readonly checked = input(false);\r\n /** Estado indeterminado */\r\n readonly indeterminate = input(false);\r\n /** Deshabilitado */\r\n readonly disabled = input(false);\r\n\r\n readonly mfChange = output<boolean>();\r\n\r\n readonly hostClasses = computed(() => {\r\n const classes = ['mf-checkbox'];\r\n if (this.disabled()) classes.push('mf-checkbox--disabled');\r\n return classes.join(' ');\r\n });\r\n\r\n onChange(event: { checked: boolean }): void {\r\n this.mfChange.emit(event.checked);\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n output,\r\n} from '@angular/core';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\nexport type MfChipVariant = 'filled' | 'outlined';\r\nexport type MfChipColor = 'brand' | 'accent' | 'error' | 'neutral';\r\n\r\n/**\r\n * Chip de la librería ng-comps.\r\n * Envuelve Angular Material `mat-chip` y expone una API uniforme\r\n * con look and feel de marca. Ideal para tags, filtros y etiquetas.\r\n */\r\n@Component({\r\n selector: 'mf-chip',\r\n imports: [MatChipsModule, MatIconModule],\r\n template: `\r\n @if (removable()) {\r\n <mat-chip\r\n [highlighted]=\"selected()\"\r\n [disabled]=\"disabled()\"\r\n [class]=\"hostClasses()\"\r\n (removed)=\"mfRemoved.emit()\"\r\n >\r\n @if (leadingIcon()) {\r\n <mat-icon matChipAvatar aria-hidden=\"true\">{{ leadingIcon() }}</mat-icon>\r\n }\r\n {{ label() }}\r\n <button matChipRemove [attr.aria-label]=\"'Eliminar ' + label()\">\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip>\r\n } @else {\r\n <mat-chip\r\n [highlighted]=\"selected()\"\r\n [disabled]=\"disabled()\"\r\n [class]=\"hostClasses()\"\r\n >\r\n @if (leadingIcon()) {\r\n <mat-icon matChipAvatar aria-hidden=\"true\">{{ leadingIcon() }}</mat-icon>\r\n }\r\n {{ label() }}\r\n </mat-chip>\r\n }\r\n `,\r\n styleUrl: './mf-chip.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfChipComponent {\r\n /** Texto del chip */\r\n readonly label = input.required<string>();\r\n /** Variante visual */\r\n readonly variant = input<MfChipVariant>('filled');\r\n /** Color semántico */\r\n readonly color = input<MfChipColor>('brand');\r\n /** Seleccionado */\r\n readonly selected = input(false);\r\n /** Puede ser removido */\r\n readonly removable = input(false);\r\n /** Deshabilitado */\r\n readonly disabled = input(false);\r\n /** Icono inicial */\r\n readonly leadingIcon = input<string | undefined>(undefined);\r\n\r\n readonly mfRemoved = output<void>();\r\n\r\n readonly hostClasses = computed(() => {\r\n const classes = ['mf-chip', `mf-chip--${this.variant()}`, `mf-chip--${this.color()}`];\r\n if (this.selected()) classes.push('mf-chip--selected');\r\n return classes.join(' ');\r\n });\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n effect,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nexport type MfDatepickerSize = 'sm' | 'md' | 'lg';\r\n\r\n/**\r\n * Selector de fecha de la librería ng-comps.\r\n * Envuelve Angular Material `mat-datepicker` y expone una API uniforme\r\n * con look and feel de marca.\r\n */\r\n@Component({\r\n selector: 'mf-datepicker',\r\n imports: [\r\n MatDatepickerModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatNativeDateModule,\r\n MatIconModule,\r\n FormsModule,\r\n ],\r\n template: `\r\n <mat-form-field [appearance]=\"'outline'\" [class]=\"hostClasses()\">\r\n @if (label()) {\r\n <mat-label>{{ label() }}</mat-label>\r\n }\r\n <input\r\n matInput\r\n [matDatepicker]=\"picker\"\r\n [placeholder]=\"placeholder()\"\r\n [disabled]=\"disabled()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [ngModel]=\"currentValue()\"\r\n (dateChange)=\"onDateChange($event)\"\r\n (blur)=\"mfBlur.emit()\"\r\n />\r\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\" [disabled]=\"disabled()\">\r\n <mat-icon matDatepickerToggleIcon aria-hidden=\"true\">calendar_month</mat-icon>\r\n </mat-datepicker-toggle>\r\n <mat-datepicker #picker />\r\n @if (hint()) {\r\n <mat-hint>{{ hint() }}</mat-hint>\r\n }\r\n @if (error()) {\r\n <mat-error>{{ error() }}</mat-error>\r\n }\r\n </mat-form-field>\r\n `,\r\n styleUrl: './mf-datepicker.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfDatepickerComponent {\r\n /** Etiqueta flotante del campo */\r\n readonly label = input<string | undefined>(undefined);\r\n /** Placeholder del input */\r\n readonly placeholder = input('DD/MM/YYYY');\r\n /** Tamaño del campo */\r\n readonly size = input<MfDatepickerSize>('md');\r\n /** Deshabilitado */\r\n readonly disabled = input(false);\r\n /** Valor inicial del datepicker */\r\n readonly value = input<Date | null>(null);\r\n /** Texto de ayuda debajo del campo */\r\n readonly hint = input<string | undefined>(undefined);\r\n /** Mensaje de error */\r\n readonly error = input<string | undefined>(undefined);\r\n /** Fecha mínima seleccionable */\r\n readonly min = input<Date | null>(null);\r\n /** Fecha máxima seleccionable */\r\n readonly max = input<Date | null>(null);\r\n /** Ancho completo */\r\n readonly fullWidth = input(false);\r\n\r\n readonly mfChange = output<Date | null>();\r\n readonly mfBlur = output<void>();\r\n\r\n protected readonly currentValue = signal<Date | null>(null);\r\n\r\n constructor() {\r\n effect(() => {\r\n this.currentValue.set(this.value());\r\n });\r\n }\r\n\r\n readonly hostClasses = computed(() => {\r\n const classes = ['mf-datepicker', `mf-datepicker--${this.size()}`];\r\n if (this.fullWidth()) classes.push('mf-datepicker--full');\r\n if (this.error()) classes.push('mf-datepicker--error');\r\n return classes.join(' ');\r\n });\r\n\r\n onDateChange(event: { value: Date | null }): void {\r\n this.currentValue.set(event.value);\r\n this.mfChange.emit(event.value);\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n inject,\r\n input,\r\n output,\r\n} from '@angular/core';\r\nimport { MatDialogModule, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n/**\r\n * Contenido de diálogo de la librería ng-comps.\r\n * Envuelve las directivas de Angular Material `mat-dialog-*` y expone\r\n * una API uniforme con look and feel de marca.\r\n *\r\n * Uso:\r\n * ```\r\n * dialog.open(MfDialogComponent, {\r\n * data: { title: 'Confirmar', message: '¿Deseas continuar?' }\r\n * });\r\n * ```\r\n */\r\n@Component({\r\n selector: 'mf-dialog',\r\n imports: [MatDialogModule, MatIconModule],\r\n template: `\r\n <div [class]=\"hostClasses()\">\r\n <div class=\"mf-dialog__header\">\r\n <h2 class=\"mf-dialog__title\">{{ title() }}</h2>\r\n @if (showClose()) {\r\n <button\r\n class=\"mf-dialog__close\"\r\n (click)=\"onClose()\"\r\n aria-label=\"Cerrar diálogo\"\r\n type=\"button\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n\r\n @if (message()) {\r\n <div class=\"mf-dialog__body\">\r\n <p class=\"mf-dialog__message\">{{ message() }}</p>\r\n </div>\r\n }\r\n\r\n <div class=\"mf-dialog__content\">\r\n <ng-content />\r\n </div>\r\n\r\n @if (showActions()) {\r\n <div class=\"mf-dialog__actions\">\r\n <ng-content select=\"[mfDialogActions]\" />\r\n </div>\r\n }\r\n </div>\r\n `,\r\n styleUrl: './mf-dialog.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfDialogComponent {\r\n private readonly dialogRef = inject(MatDialogRef<MfDialogComponent>, {\r\n optional: true,\r\n });\r\n\r\n /** Título del diálogo */\r\n readonly title = input.required<string>();\r\n /** Mensaje descriptivo */\r\n readonly message = input<string | undefined>(undefined);\r\n /** Mostrar botón de cerrar */\r\n readonly showClose = input(true);\r\n /** Mostrar área de acciones (footer) */\r\n readonly showActions = input(true);\r\n\r\n readonly mfClose = output<void>();\r\n\r\n readonly hostClasses = computed(() => {\r\n return 'mf-dialog';\r\n });\r\n\r\n onClose(): void {\r\n this.mfClose.emit();\r\n this.dialogRef?.close();\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n} from '@angular/core';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\n\r\nexport type MfDividerVariant = 'full' | 'inset' | 'middle';\r\n\r\n/**\r\n * Divider de la librería ng-comps.\r\n * Envuelve Angular Material `mat-divider` y expone una API uniforme\r\n * con look and feel de marca.\r\n */\r\n@Component({\r\n selector: 'mf-divider',\r\n imports: [MatDividerModule],\r\n template: `\r\n <mat-divider\r\n [vertical]=\"vertical()\"\r\n [inset]=\"insetValue()\"\r\n [class]=\"hostClasses()\"\r\n />\r\n `,\r\n styleUrl: './mf-divider.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfDividerComponent {\r\n /** Orientación vertical */\r\n readonly vertical = input(false);\r\n /** Variante visual */\r\n readonly variant = input<MfDividerVariant>('full');\r\n /** Espaciado extra arriba y abajo */\r\n readonly spacing = input<'none' | 'sm' | 'md' | 'lg'>('none');\r\n\r\n readonly insetValue = computed(() => this.variant() === 'inset');\r\n\r\n readonly hostClasses = computed(() => {\r\n const classes = ['mf-divider', `mf-divider--${this.variant()}`, `mf-divider--spacing-${this.spacing()}`];\r\n if (this.vertical()) classes.push('mf-divider--vertical');\r\n return classes.join(' ');\r\n });\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n} from '@angular/core';\r\n\r\n/**\r\n * Contenedor de campo de formulario de la librería ng-comps.\r\n * Proporciona estructura de layout consistente con label, contenido proyectado,\r\n * y mensajes opcionales de ayuda o error.\r\n */\r\n@Component({\r\n selector: 'mf-form-field',\r\n imports: [],\r\n template: `\r\n @if (label()) {\r\n <label [class]=\"labelClasses()\" [attr.for]=\"fieldId()\">{{ label() }}\r\n @if (required()) {\r\n <span class=\"mf-form-field__required\" aria-hidden=\"true\"> *</span>\r\n }\r\n </label>\r\n }\r\n <div class=\"mf-form-field__control\">\r\n <ng-content />\r\n </div>\r\n @if (error()) {\r\n <p class=\"mf-form-field__error\" role=\"alert\">{{ error() }}</p>\r\n } @else if (hint()) {\r\n <p class=\"mf-form-field__hint\">{{ hint() }}</p>\r\n }\r\n `,\r\n styleUrl: './mf-form-field.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class]': 'hostClasses()',\r\n },\r\n})\r\nexport class MfFormFieldComponent {\r\n /** Etiqueta del campo */\r\n readonly label = input<string | undefined>(undefined);\r\n /** ID para asociar el label con el control */\r\n readonly fieldId = input<string | undefined>(undefined);\r\n /** Texto de ayuda */\r\n readonly hint = input<string | undefined>(undefined);\r\n /** Mensaje de error */\r\n readonly error = input<string | undefined>(undefined);\r\n /** Campo requerido (muestra asterisco) */\r\n readonly required = input(false);\r\n\r\n readonly labelClasses = computed(() => {\r\n const classes = ['mf-form-field__label'];\r\n if (this.error()) classes.push('mf-form-field__label--error');\r\n return classes.join(' ');\r\n });\r\n\r\n readonly hostClasses = computed(() => {\r\n const classes = ['mf-form-field'];\r\n if (this.error()) classes.push('mf-form-field--error');\r\n return classes.join(' ');\r\n });\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n input,\r\n} from '@angular/core';\r\nimport { MatGridListModule } from '@angular/material/grid-list';\r\n\r\nexport interface MfGridTile {\r\n /** Título de la tile */\r\n title?: string;\r\n /** Subtítulo de la tile */\r\n subtitle?: string;\r\n /** Número de columnas que ocupa */\r\n colspan?: number;\r\n /** Número de filas que ocupa */\r\n rowspan?: number;\r\n /** Color de fondo */\r\n background?: string;\r\n}\r\n\r\n/**\r\n * Lista en cuadrícula de la librería ng-comps.\r\n * Envuelve Angular Material `mat-grid-list` y expone una API uniforme\r\n * con look and feel de marca. Soporta tiles estáticas y content projection.\r\n */\r\n@Component({\r\n selector: 'mf-grid-list',\r\n imports: [MatGridListModule],\r\n template: `\r\n <mat-grid-list\r\n class=\"mf-grid-list\"\r\n [cols]=\"cols()\"\r\n [rowHeight]=\"rowHeight()\"\r\n [gutterSize]=\"gutterSize()\"\r\n >\r\n @for (tile of tiles(); track $index) {\r\n <mat-grid-tile\r\n class=\"mf-grid-list__tile\"\r\n [colspan]=\"tile.colspan ?? 1\"\r\n [rowspan]=\"tile.rowspan ?? 1\"\r\n [style.background]=\"tile.background || null\"\r\n >\r\n <mat-grid-tile-header>\r\n @if (tile.title) {\r\n <span class=\"mf-grid-list__tile-title\">{{ tile.title }}</span>\r\n }\r\n @if (tile.subtitle) {\r\n <span class=\"mf-grid-list__tile-subtitle\">{{ tile.subtitle }}</span>\r\n }\r\n </mat-grid-tile-header>\r\n </mat-grid-tile>\r\n }\r\n <ng-content />\r\n </mat-grid-list>\r\n `,\r\n styleUrl: './mf-grid-list.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfGridListComponent {\r\n /** Número de columnas */\r\n readonly cols = input(2);\r\n /** Altura de cada fila */\r\n readonly rowHeight = input<string | number>('1:1');\r\n /** Espacio entre tiles */\r\n readonly gutterSize = input('8px');\r\n /** Tiles a renderizar */\r\n readonly tiles = input<MfGridTile[]>([]);\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n} from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\nexport type MfIconSize = 'sm' | 'md' | 'lg' | 'xl';\r\nexport type MfIconColor = 'default' | 'brand' | 'muted' | 'error' | 'inherit';\r\n\r\n/**\r\n * Icono de la librería ng-comps.\r\n * Envuelve Angular Material `mat-icon` y expone una API uniforme\r\n * con tamaños y colores de marca.\r\n */\r\n@Component({\r\n selector: 'mf-icon',\r\n imports: [MatIconModule],\r\n template: `\r\n <mat-icon [class]=\"hostClasses()\" [attr.aria-hidden]=\"ariaHidden()\" [attr.aria-label]=\"label()\">{{ name() }}</mat-icon>\r\n `,\r\n styleUrl: './mf-icon.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfIconComponent {\r\n /** Nombre del icono de Material Symbols / Material Icons */\r\n readonly name = input.required<string>();\r\n /** Tamaño visual del icono */\r\n readonly size = input<MfIconSize>('md');\r\n /** Color semántico del icono */\r\n readonly color = input<MfIconColor>('default');\r\n /** Etiqueta accesible. Si se omite, el icono será decorativo (aria-hidden) */\r\n readonly label = input<string | undefined>(undefined);\r\n\r\n readonly ariaHidden = computed(() => (this.label() ? 'false' : 'true'));\r\n\r\n readonly hostClasses = computed(() => {\r\n return ['mf-icon', `mf-icon--${this.size()}`, `mf-icon--${this.color()}`].join(' ');\r\n });\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n output,\r\n} from '@angular/core';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\nexport type MfInputSize = 'sm' | 'md' | 'lg';\r\n\r\n/**\r\n * Campo de texto de la librería ng-comps.\r\n * Envuelve Angular Material `mat-form-field` + `matInput`\r\n * y expone una API uniforme con look and feel de marca.\r\n */\r\n@Component({\r\n selector: 'mf-input',\r\n imports: [MatFormFieldModule, MatInputModule, MatIconModule],\r\n template: `\r\n <mat-form-field [appearance]=\"'outline'\" [class]=\"hostClasses()\">\r\n @if (label()) {\r\n <mat-label>{{ label() }}</mat-label>\r\n }\r\n @if (leadingIcon()) {\r\n <mat-icon matPrefix aria-hidden=\"true\">{{ leadingIcon() }}</mat-icon>\r\n }\r\n <input\r\n matInput\r\n [type]=\"type()\"\r\n [placeholder]=\"placeholder()\"\r\n [disabled]=\"disabled()\"\r\n [readonly]=\"readonly()\"\r\n [value]=\"value()\"\r\n (input)=\"onInput($event)\"\r\n (blur)=\"mfBlur.emit()\"\r\n />\r\n @if (trailingIcon()) {\r\n <mat-icon matSuffix aria-hidden=\"true\">{{ trailingIcon() }}</mat-icon>\r\n }\r\n @if (hint()) {\r\n <mat-hint>{{ hint() }}</mat-hint>\r\n }\r\n @if (error()) {\r\n <mat-error>{{ error() }}</mat-error>\r\n }\r\n </mat-form-field>\r\n `,\r\n styleUrl: './mf-input.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfInputComponent {\r\n /** Etiqueta flotante del campo */\r\n readonly label = input<string | undefined>(undefined);\r\n /** Placeholder del input */\r\n readonly placeholder = input('');\r\n /** Tipo de input HTML */\r\n readonly type = input<\r\n 'text' | 'email' | 'password' | 'number' | 'search' | 'tel' | 'url'\r\n >('text');\r\n /** Tamaño del campo */\r\n readonly size = input<MfInputSize>('md');\r\n /** Valor actual del campo */\r\n readonly value = input('');\r\n /** Deshabilitado */\r\n readonly disabled = input(false);\r\n /** Solo lectura */\r\n readonly readonly = input(false);\r\n /** Texto de ayuda debajo del campo */\r\n readonly hint = input<string | undefined>(undefined);\r\n /** Mensaje de error */\r\n readonly error = input<string | undefined>(undefined);\r\n /** Icono al inicio */\r\n readonly leadingIcon = input<string | undefined>(undefined);\r\n /** Icono al final */\r\n readonly trailingIcon = input<string | undefined>(undefined);\r\n /** Ancho completo */\r\n readonly fullWidth = input(false);\r\n\r\n readonly mfInput = output<string>();\r\n readonly mfBlur = output<void>();\r\n\r\n readonly hostClasses = computed(() => {\r\n const classes = ['mf-input', `mf-input--${this.size()}`];\r\n if (this.fullWidth()) classes.push('mf-input--full');\r\n if (this.error()) classes.push('mf-input--error');\r\n return classes.join(' ');\r\n });\r\n\r\n onInput(event: Event): void {\r\n const target = event.target as HTMLInputElement;\r\n this.mfInput.emit(target.value);\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n output,\r\n} from '@angular/core';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\nexport interface MfMenuItem {\r\n label: string;\r\n icon?: string;\r\n disabled?: boolean;\r\n value: string;\r\n}\r\n\r\n/**\r\n * Menu de la librería ng-comps.\r\n * Envuelve Angular Material `mat-menu` y expone una API uniforme\r\n * con look and feel de marca.\r\n */\r\n@Component({\r\n selector: 'mf-menu',\r\n imports: [MatMenuModule, MatButtonModule, MatIconModule],\r\n template: `\r\n <button\r\n mat-icon-button\r\n [matMenuTriggerFor]=\"menu\"\r\n [class]=\"triggerClasses()\"\r\n [attr.aria-label]=\"triggerLabel()\"\r\n >\r\n <mat-icon>{{ triggerIcon() }}</mat-icon>\r\n </button>\r\n <mat-menu #menu=\"matMenu\" [class]=\"hostClasses()\">\r\n @for (item of items(); track item.value) {\r\n <button\r\n mat-menu-item\r\n [disabled]=\"item.disabled ?? false\"\r\n (click)=\"mfItemClick.emit(item.value)\"\r\n >\r\n @if (item.icon) {\r\n <mat-icon aria-hidden=\"true\">{{ item.icon }}</mat-icon>\r\n }\r\n <span>{{ item.label }}</span>\r\n </button>\r\n }\r\n </mat-menu>\r\n `,\r\n styleUrl: './mf-menu.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfMenuComponent {\r\n /** Items del menú */\r\n readonly items = input.required<MfMenuItem[]>();\r\n /** Icono del trigger */\r\n readonly triggerIcon = input<string>('more_vert');\r\n /** Label accesible del trigger */\r\n readonly triggerLabel = input<string>('Abrir menú');\r\n\r\n readonly mfItemClick = output<string>();\r\n\r\n readonly hostClasses = computed(() => 'mf-menu');\r\n readonly triggerClasses = computed(() => 'mf-menu__trigger');\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n output,\r\n} from '@angular/core';\r\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\r\n\r\n/**\r\n * Paginator de la librería ng-comps.\r\n * Envuelve Angular Material `mat-paginator` y expone una API uniforme\r\n * con look and feel de marca.\r\n */\r\n@Component({\r\n selector: 'mf-paginator',\r\n imports: [MatPaginatorModule],\r\n template: `\r\n <mat-paginator\r\n [length]=\"length()\"\r\n [pageSize]=\"pageSize()\"\r\n [pageIndex]=\"pageIndex()\"\r\n [pageSizeOptions]=\"pageSizeOptions()\"\r\n [showFirstLastButtons]=\"showFirstLastButtons()\"\r\n [hidePageSize]=\"hidePageSize()\"\r\n [class]=\"hostClasses()\"\r\n (page)=\"mfPageChange.emit($event)\"\r\n />\r\n `,\r\n styleUrl: './mf-paginator.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfPaginatorComponent {\r\n /** Total de elementos */\r\n readonly length = input.required<number>();\r\n /** Tamaño de página */\r\n readonly pageSize = input(10);\r\n /** Índice de página actual */\r\n readonly pageIndex = input(0);\r\n /** Opciones de tamaño de página */\r\n readonly pageSizeOptions = input<number[]>([5, 10, 25, 50]);\r\n /** Mostrar botones de primera/última página */\r\n readonly showFirstLastButtons = input(true);\r\n /** Ocultar selector de tamaño de página */\r\n readonly hidePageSize = input(false);\r\n\r\n readonly mfPageChange = output<PageEvent>();\r\n\r\n readonly hostClasses = computed(() => {\r\n return 'mf-paginator';\r\n });\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n} from '@angular/core';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\n\r\nexport type MfProgressBarMode = 'determinate' | 'indeterminate' | 'buffer' | 'query';\r\nexport type MfProgressBarColor = 'brand' | 'accent' | 'warn';\r\n\r\n/**\r\n * Barra de progreso de la librería ng-comps.\r\n * Envuelve Angular Material `mat-progress-bar` y expone una API uniforme\r\n * con look and feel de marca.\r\n */\r\n@Component({\r\n selector: 'mf-progress-bar',\r\n imports: [MatProgressBarModule],\r\n template: `\r\n <div class=\"mf-progress-bar__wrapper\" [attr.aria-label]=\"label() || null\">\r\n @if (label()) {\r\n <span class=\"mf-progress-bar__label\">{{ label() }}</span>\r\n }\r\n <mat-progress-bar\r\n [class]=\"hostClasses()\"\r\n [mode]=\"mode()\"\r\n [value]=\"value()\"\r\n [bufferValue]=\"bufferValue()\"\r\n />\r\n @if (showValue() && mode() === 'determinate') {\r\n <span class=\"mf-progress-bar__value\" aria-hidden=\"true\">{{ value() }}%</span>\r\n }\r\n </div>\r\n `,\r\n styleUrl: './mf-progress-bar.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfProgressBarComponent {\r\n /** Modo de la barra de progreso */\r\n readonly mode = input<MfProgressBarMode>('determinate');\r\n /** Valor actual (0–100) */\r\n readonly value = input(0);\r\n /** Valor del buffer (0–100, solo en modo buffer) */\r\n readonly bufferValue = input(0);\r\n /** Color de la barra */\r\n readonly color = input<MfProgressBarColor>('brand');\r\n /** Etiqueta accesible */\r\n readonly label = input<string | undefined>(undefined);\r\n /** Muestra el porcentaje junto a la barra */\r\n readonly showValue = input(false);\r\n /** Altura de la barra en px */\r\n readonly height = input(4);\r\n\r\n readonly hostClasses = computed(() => {\r\n return `mf-progress-bar mf-progress-bar--${this.color()}`;\r\n });\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n} from '@angular/core';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\n\r\nexport type MfProgressSpinnerMode = 'determinate' | 'indeterminate';\r\nexport type MfProgressSpinnerColor = 'brand' | 'accent' | 'warn';\r\n\r\n/**\r\n * Spinner de progreso de la librería ng-comps.\r\n * Envuelve Angular Material `mat-progress-spinner` y expone una API uniforme\r\n * con look and feel de marca.\r\n */\r\n@Component({\r\n selector: 'mf-progress-spinner',\r\n imports: [MatProgressSpinnerModule],\r\n template: `\r\n <div [class]=\"wrapperClasses()\" [attr.aria-label]=\"label() || 'Cargando'\">\r\n <mat-progress-spinner\r\n [class]=\"hostClasses()\"\r\n [mode]=\"mode()\"\r\n [value]=\"value()\"\r\n [diameter]=\"diameter()\"\r\n [strokeWidth]=\"strokeWidth()\"\r\n />\r\n @if (label()) {\r\n <span class=\"mf-progress-spinner__label\">{{ label() }}</span>\r\n }\r\n </div>\r\n `,\r\n styleUrl: './mf-progress-spinner.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfProgressSpinnerComponent {\r\n /** Modo del spinner */\r\n readonly mode = input<MfProgressSpinnerMode>('indeterminate');\r\n /** Valor actual (0–100, solo en modo determinate) */\r\n readonly value = input(0);\r\n /** Diámetro en px */\r\n readonly diameter = input(40);\r\n /** Grosor del trazo en px */\r\n readonly strokeWidth = input(4);\r\n /** Color del spinner */\r\n readonly color = input<MfProgressSpinnerColor>('brand');\r\n /** Etiqueta accesible y visible */\r\n readonly label = input<string | undefined>(undefined);\r\n\r\n readonly hostClasses = computed(() => {\r\n return `mf-progress-spinner mf-progress-spinner--${this.color()}`;\r\n });\r\n\r\n readonly wrapperClasses = computed(() => {\r\n const classes = ['mf-progress-spinner__wrapper'];\r\n if (this.label()) classes.push('mf-progress-spinner__wrapper--labeled');\r\n return classes.join(' ');\r\n });\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n effect,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nexport interface MfRadioOption {\r\n /** Valor de la opción */\r\n value: string;\r\n /** Texto visible */\r\n label: string;\r\n /** Deshabilitada individualmente */\r\n disabled?: boolean;\r\n}\r\n\r\nexport type MfRadioDirection = 'horizontal' | 'vertical';\r\n\r\n/**\r\n * Grupo de radio buttons de la librería ng-comps.\r\n * Envuelve Angular Material `mat-radio-group` + `mat-radio-button`\r\n * y expone una API uniforme con look and feel de marca.\r\n */\r\n@Component({\r\n selector: 'mf-radio-button',\r\n imports: [MatRadioModule, FormsModule],\r\n template: `\r\n <mat-radio-group\r\n [class]=\"hostClasses()\"\r\n [disabled]=\"disabled()\"\r\n [ngModel]=\"currentValue()\"\r\n (change)=\"onChange($event)\"\r\n [attr.aria-label]=\"ariaLabel() || null\"\r\n >\r\n @for (option of options(); track option.value) {\r\n <mat-radio-button\r\n class=\"mf-radio__option\"\r\n [value]=\"option.value\"\r\n [disabled]=\"option.disabled ?? false\"\r\n >\r\n {{ option.label }}\r\n </mat-radio-button>\r\n }\r\n </mat-radio-group>\r\n `,\r\n styleUrl: './mf-radio-button.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfRadioButtonComponent {\r\n /** Opciones del grupo */\r\n readonly options = input.required<MfRadioOption[]>();\r\n /** Valor seleccionado */\r\n readonly value = input<string | undefined>(undefined);\r\n /** Deshabilitado */\r\n readonly disabled = input(false);\r\n /** Dirección del grupo */\r\n readonly direction = input<MfRadioDirection>('vertical');\r\n /** Etiqueta accesible para el grupo */\r\n readonly ariaLabel = input<string | undefined>(undefined);\r\n\r\n readonly mfChange = output<string>();\r\n\r\n protected readonly currentValue = signal<string | undefined>(undefined);\r\n\r\n constructor() {\r\n effect(() => {\r\n this.currentValue.set(this.value());\r\n });\r\n }\r\n\r\n readonly hostClasses = computed(() => {\r\n return `mf-radio mf-radio--${this.direction()}`;\r\n });\r\n\r\n onChange(event: { value: string }): void {\r\n this.currentValue.set(event.value);\r\n this.mfChange.emit(event.value);\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n output,\r\n} from '@angular/core';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\nexport interface MfSelectOption {\r\n value: string | number;\r\n label: string;\r\n disabled?: boolean;\r\n}\r\n\r\nexport type MfSelectSize = 'sm' | 'md' | 'lg';\r\n\r\n/**\r\n * Select de la librería ng-comps.\r\n * Envuelve Angular Material `mat-select` y expone una API uniforme\r\n * con look and feel de marca.\r\n *\r\n * El dropdown se estiliza mediante la clase global `mf-select-panel` que se\r\n * inserta en el overlay. Puedes añadir clases adicionales con `panelClass`.\r\n */\r\n@Component({\r\n selector: 'mf-select',\r\n imports: [MatSelectModule, MatFormFieldModule, MatIconModule],\r\n template: `\r\n <mat-form-field [appearance]=\"'outline'\" [class]=\"hostClasses()\">\r\n @if (label()) {\r\n <mat-label>{{ label() }}</mat-label>\r\n }\r\n @if (leadingIcon()) {\r\n <mat-icon matPrefix aria-hidden=\"true\">{{ leadingIcon() }}</mat-icon>\r\n }\r\n <mat-select\r\n [value]=\"value()\"\r\n [disabled]=\"disabled()\"\r\n [multiple]=\"multiple()\"\r\n [placeholder]=\"placeholder()\"\r\n [panelClass]=\"panelClasses()\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n >\r\n @for (option of options(); track option.value) {\r\n <mat-option [value]=\"option.value\" [disabled]=\"option.disabled ?? false\">\r\n {{ option.label }}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n @if (trailingIcon()) {\r\n <mat-icon matSuffix aria-hidden=\"true\">{{ trailingIcon() }}</mat-icon>\r\n }\r\n @if (hint()) {\r\n <mat-hint>{{ hint() }}</mat-hint>\r\n }\r\n @if (error()) {\r\n <mat-error>{{ error() }}</mat-error>\r\n }\r\n </mat-form-field>\r\n `,\r\n styleUrl: './mf-select.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfSelectComponent {\r\n /** Opciones del select */\r\n readonly options = input.required<MfSelectOption[]>();\r\n /** Etiqueta flotante */\r\n readonly label = input<string | undefined>(undefined);\r\n /** Placeholder */\r\n readonly placeholder = input<string>('');\r\n /** Valor actual */\r\n readonly value = input<string | number | (string | number)[] | undefined>(undefined);\r\n /** Selección múltiple */\r\n readonly multiple = input(false);\r\n /** Deshabilitado */\r\n readonly disabled = input(false);\r\n /** Texto de ayuda */\r\n readonly hint = input<string | undefined>(undefined);\r\n /** Mensaje de error */\r\n readonly error = input<string | undefined>(undefined);\r\n /** Tamaño del campo */\r\n readonly size = input<MfSelectSize>('md');\r\n /** Ancho completo */\r\n readonly fullWidth = input(false);\r\n /** Icono al inicio del campo */\r\n readonly leadingIcon = input<string | undefined>(undefined);\r\n /** Icono al final del campo */\r\n readonly trailingIcon = input<string | undefined>(undefined);\r\n /**\r\n * Clases extra que se añaden al panel del dropdown (overlay).\r\n * La clase `mf-select-panel` siempre está presente para los estilos base.\r\n */\r\n readonly panelClass = input<string | string[]>('');\r\n\r\n readonly mfSelectionChange = output<string | number | (string | number)[]>();\r\n\r\n readonly hostClasses = computed(() => {\r\n const classes = ['mf-select', `mf-select--${this.size()}`];\r\n if (this.fullWidth()) classes.push('mf-select--full');\r\n if (this.error()) classes.push('mf-select--error');\r\n return classes.join(' ');\r\n });\r\n\r\n readonly panelClasses = computed(() => {\r\n const base = ['mf-select-panel'];\r\n const extra = this.panelClass();\r\n if (Array.isArray(extra)) {\r\n base.push(...extra.filter(Boolean));\r\n } else if (extra) {\r\n base.push(extra);\r\n }\r\n return base;\r\n });\r\n\r\n onSelectionChange(event: { value: string | number | (string | number)[] }): void {\r\n this.mfSelectionChange.emit(event.value);\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n output,\r\n} from '@angular/core';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\nexport type MfSidenavMode = 'over' | 'push' | 'side';\r\nexport type MfSidenavPosition = 'start' | 'end';\r\n\r\nexport interface MfSidenavNavItem {\r\n /** Nombre del icono Material (e.g. 'home', 'dashboard') */\r\n icon: string;\r\n /** Texto de la etiqueta */\r\n label: string;\r\n /** Identificador único del ítem */\r\n id: string;\r\n /** Ítem activo/seleccionado */\r\n active?: boolean;\r\n /** Deshabilitar el ítem */\r\n disabled?: boolean;\r\n /** Número de badge (0 oculta el badge) */\r\n badge?: number;\r\n}\r\n\r\n/**\r\n * Panel lateral de la librería ng-comps.\r\n * Envuelve Angular Material `mat-sidenav-container` y expone una API uniforme\r\n * con look and feel de marca.\r\n *\r\n * Dos formas de uso:\r\n * 1. **Navitems declarativos** — Proporciona `navItems`, `headerTitle` e icono.\r\n * 2. **Content projection** — Proyecta `[mfSidenavContent]` para control total.\r\n *\r\n * El contenido principal se proyecta sin atributo.\r\n */\r\n@Component({\r\n selector: 'mf-sidenav',\r\n imports: [MatSidenavModule, MatIconModule],\r\n template: `\r\n <mat-sidenav-container [class]=\"containerClasses()\" [hasBackdrop]=\"hasBackdrop()\">\r\n <mat-sidenav\r\n [class]=\"sidenavClasses()\"\r\n [mode]=\"mode()\"\r\n [position]=\"position()\"\r\n [opened]=\"opened()\"\r\n [style.width]=\"sidenavWidth()\"\r\n (openedChange)=\"mfOpenedChange.emit($event)\"\r\n >\r\n @if (navItems().length > 0) {\r\n <div class=\"mf-sidenav__nav\">\r\n @if (headerTitle()) {\r\n <div class=\"mf-sidenav__header\">\r\n @if (headerIcon()) {\r\n <mat-icon class=\"mf-sidenav__header-icon\" aria-hidden=\"true\">{{ headerIcon() }}</mat-icon>\r\n }\r\n <span class=\"mf-sidenav__header-title\">{{ headerTitle() }}</span>\r\n </div>\r\n }\r\n <nav class=\"mf-sidenav__menu\" [attr.aria-label]=\"navAriaLabel()\">\r\n @for (item of navItems(); track item.id) {\r\n <button\r\n type=\"button\"\r\n class=\"mf-sidenav__item\"\r\n [class.mf-sidenav__item--active]=\"item.active\"\r\n [class.mf-sidenav__item--disabled]=\"item.disabled\"\r\n [disabled]=\"item.disabled ?? false\"\r\n [attr.aria-current]=\"item.active ? 'page' : null\"\r\n (click)=\"!item.disabled && mfNavItemClick.emit(item)\"\r\n >\r\n <mat-icon class=\"mf-sidenav__item-icon\" aria-hidden=\"true\">{{ item.icon }}</mat-icon>\r\n <span class=\"mf-sidenav__item-label\">{{ item.label }}</span>\r\n @if (item.badge && item.badge > 0) {\r\n <span class=\"mf-sidenav__item-badge\" aria-label=\"{{ item.badge }} notificaciones\">\r\n {{ item.badge > 99 ? '99+' : item.badge }}\r\n </span>\r\n }\r\n </button>\r\n }\r\n </nav>\r\n </div>\r\n } @else {\r\n <ng-content select=\"[mfSidenavContent]\" />\r\n }\r\n </mat-sidenav>\r\n <mat-sidenav-content class=\"mf-sidenav__main\">\r\n <ng-content />\r\n </mat-sidenav-content>\r\n </mat-sidenav-container>\r\n `,\r\n styleUrl: './mf-sidenav.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfSidenavComponent {\r\n /** Abierto o cerrado */\r\n readonly opened = input(false);\r\n /** Modo de apertura */\r\n readonly mode = input<MfSidenavMode>('side');\r\n /** Posición del panel */\r\n readonly position = input<MfSidenavPosition>('start');\r\n /** Muestra backdrop al abrir */\r\n readonly hasBackdrop = input<boolean | null>(null);\r\n /** Ancho del panel lateral */\r\n readonly sidenavWidth = input('260px');\r\n /** Ítems de navegación declarativos */\r\n readonly navItems = input<MfSidenavNavItem[]>([]);\r\n /** Título de la cabecera del sidenav */\r\n readonly headerTitle = input<string | undefined>(undefined);\r\n /** Icono Material de la cabecera */\r\n readonly headerIcon = input<string | undefined>(undefined);\r\n /** Aria-label del elemento nav */\r\n readonly navAriaLabel = input('Navegación principal');\r\n\r\n readonly mfOpenedChange = output<boolean>();\r\n /** Emite el ítem de navegación pulsado */\r\n readonly mfNavItemClick = output<MfSidenavNavItem>();\r\n\r\n readonly containerClasses = computed(() => 'mf-sidenav-container');\r\n\r\n readonly sidenavClasses = computed(() => {\r\n return `mf-sidenav mf-sidenav--${this.mode()}`;\r\n });\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n output,\r\n} from '@angular/core';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\n\r\n/**\r\n * Slide Toggle de la librería ng-comps.\r\n * Envuelve Angular Material `mat-slide-toggle` y expone una API uniforme\r\n * con look and feel de marca.\r\n */\r\n@Component({\r\n selector: 'mf-slide-toggle',\r\n imports: [MatSlideToggleModule],\r\n template: `\r\n <mat-slide-toggle\r\n [checked]=\"checked()\"\r\n [disabled]=\"disabled()\"\r\n [class]=\"hostClasses()\"\r\n (change)=\"onChange($event)\"\r\n >\r\n {{ label() }}\r\n </mat-slide-toggle>\r\n `,\r\n styleUrl: './mf-slide-toggle.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfSlideToggleComponent {\r\n /** Texto descriptivo */\r\n readonly label = input<string>('');\r\n /** Estado activado */\r\n readonly checked = input(false);\r\n /** Deshabilitado */\r\n readonly disabled = input(false);\r\n\r\n readonly mfChange = output<boolean>();\r\n\r\n readonly hostClasses = computed(() => {\r\n const classes = ['mf-slide-toggle'];\r\n if (this.disabled()) classes.push('mf-slide-toggle--disabled');\r\n return classes.join(' ');\r\n });\r\n\r\n onChange(event: { checked: boolean }): void {\r\n this.mfChange.emit(event.checked);\r\n }\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { MatSnackBar, MatSnackBarConfig, MatSnackBarRef, TextOnlySnackBar } from '@angular/material/snack-bar';\r\n\r\nexport type MfSnackbarType = 'info' | 'success' | 'warning' | 'error';\r\n\r\nexport interface MfSnackbarConfig {\r\n message: string;\r\n action?: string;\r\n type?: MfSnackbarType;\r\n duration?: number;\r\n horizontalPosition?: 'start' | 'center' | 'end';\r\n verticalPosition?: 'top' | 'bottom';\r\n}\r\n\r\n/**\r\n * Servicio de Snackbar de la librería ng-comps.\r\n * Envuelve Angular Material `MatSnackBar` y expone una API uniforme\r\n * con estilos de marca y tipos semánticos.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class MfSnackbarService {\r\n private readonly matSnackBar = inject(MatSnackBar);\r\n\r\n open(config: MfSnackbarConfig): MatSnackBarRef<TextOnlySnackBar> {\r\n const type = config.type ?? 'info';\r\n const matConfig: MatSnackBarConfig = {\r\n duration: config.duration ?? 4000,\r\n horizontalPosition: config.horizontalPosition ?? 'end',\r\n verticalPosition: config.verticalPosition ?? 'bottom',\r\n panelClass: ['mf-snackbar', `mf-snackbar--${type}`],\r\n };\r\n\r\n return this.matSnackBar.open(config.message, config.action, matConfig);\r\n }\r\n\r\n info(message: string, action?: string): MatSnackBarRef<TextOnlySnackBar> {\r\n return this.open({ message, action, type: 'info' });\r\n }\r\n\r\n success(message: string, action?: string): MatSnackBarRef<TextOnlySnackBar> {\r\n return this.open({ message, action, type: 'success' });\r\n }\r\n\r\n warning(message: string, action?: string): MatSnackBarRef<TextOnlySnackBar> {\r\n return this.open({ message, action, type: 'warning' });\r\n }\r\n\r\n error(message: string, action?: string): MatSnackBarRef<TextOnlySnackBar> {\r\n return this.open({ message, action, type: 'error' });\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n output,\r\n} from '@angular/core';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatSortModule, Sort } from '@angular/material/sort';\r\n\r\nexport interface MfTableColumn {\r\n key: string;\r\n header: string;\r\n sortable?: boolean;\r\n}\r\n\r\nexport type MfTableVariant = 'default' | 'striped' | 'bordered';\r\n\r\n/**\r\n * Table de la librería ng-comps.\r\n * Envuelve Angular Material `mat-table` y expone una API uniforme\r\n * con look and feel de marca. Ideal para dashboards y paneles de datos.\r\n */\r\n@Component({\r\n selector: 'mf-table',\r\n imports: [MatTableModule, MatSortModule],\r\n template: `\r\n <div class=\"mf-table__wrapper\" [class]=\"hostClasses()\">\r\n <table\r\n mat-table\r\n [dataSource]=\"data()\"\r\n matSort\r\n (matSortChange)=\"mfSortChange.emit($event)\"\r\n >\r\n @for (col of columns(); track col.key) {\r\n <ng-container [matColumnDef]=\"col.key\">\r\n @if (col.sortable) {\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{ col.header }}</th>\r\n } @else {\r\n <th mat-header-cell *matHeaderCellDef>{{ col.header }}</th>\r\n }\r\n <td mat-cell *matCellDef=\"let row\">{{ row[col.key] }}</td>\r\n </ng-container>\r\n }\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns()\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns()\" (click)=\"mfRowClick.emit(row)\"></tr>\r\n </table>\r\n </div>\r\n `,\r\n styleUrl: './mf-table.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfTableComponent {\r\n /** Columnas de la tabla */\r\n readonly columns = input.required<MfTableColumn[]>();\r\n /** Datos de la tabla */\r\n readonly data = input.required<Record<string, unknown>[]>();\r\n /** Variante visual */\r\n readonly variant = input<MfTableVariant>('default');\r\n\r\n readonly mfSortChange = output<Sort>();\r\n readonly mfRowClick = output<Record<string, unknown>>();\r\n\r\n readonly displayedColumns = computed(() => this.columns().map(c => c.key));\r\n\r\n readonly hostClasses = computed(() => {\r\n return ['mf-table', `mf-table--${this.variant()}`].join(' ');\r\n });\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n output,\r\n} from '@angular/core';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\nexport interface MfTab {\r\n label: string;\r\n icon?: string;\r\n disabled?: boolean;\r\n}\r\n\r\nexport type MfTabsVariant = 'default' | 'stretched';\r\n\r\n/**\r\n * Tabs de la librería ng-comps.\r\n * Envuelve Angular Material `mat-tab-group` y expone una API uniforme\r\n * con look and feel de marca.\r\n */\r\n@Component({\r\n selector: 'mf-tabs',\r\n imports: [MatTabsModule, MatIconModule],\r\n template: `\r\n <mat-tab-group\r\n [selectedIndex]=\"selectedIndex()\"\r\n [class]=\"hostClasses()\"\r\n [mat-stretch-tabs]=\"variant() === 'stretched'\"\r\n (selectedIndexChange)=\"mfSelectedIndexChange.emit($event)\"\r\n >\r\n @for (tab of tabs(); track tab.label) {\r\n <mat-tab [disabled]=\"tab.disabled ?? false\">\r\n <ng-template mat-tab-label>\r\n @if (tab.icon) {\r\n <mat-icon class=\"mf-tabs__icon\" aria-hidden=\"true\">{{ tab.icon }}</mat-icon>\r\n }\r\n {{ tab.label }}\r\n </ng-template>\r\n </mat-tab>\r\n }\r\n </mat-tab-group>\r\n `,\r\n styleUrl: './mf-tabs.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfTabsComponent {\r\n /** Pestañas */\r\n readonly tabs = input.required<MfTab[]>();\r\n /** Índice seleccionado */\r\n readonly selectedIndex = input(0);\r\n /** Variante visual */\r\n readonly variant = input<MfTabsVariant>('default');\r\n\r\n readonly mfSelectedIndexChange = output<number>();\r\n\r\n readonly hostClasses = computed(() => {\r\n return ['mf-tabs', `mf-tabs--${this.variant()}`].join(' ');\r\n });\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n output,\r\n} from '@angular/core';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\n\r\nexport type MfTextareaSize = 'sm' | 'md' | 'lg';\r\nexport type MfTextareaResize = 'none' | 'vertical' | 'horizontal' | 'both';\r\n\r\n/**\r\n * Textarea de la librería ng-comps.\r\n * Envuelve Angular Material `matInput` con textarea y expone una API uniforme\r\n * con look and feel de marca.\r\n */\r\n@Component({\r\n selector: 'mf-textarea',\r\n imports: [MatInputModule, MatFormFieldModule],\r\n template: `\r\n <mat-form-field [appearance]=\"'outline'\" [class]=\"hostClasses()\">\r\n @if (label()) {\r\n <mat-label>{{ label() }}</mat-label>\r\n }\r\n <textarea\r\n matInput\r\n [placeholder]=\"placeholder()\"\r\n [disabled]=\"disabled()\"\r\n [readonly]=\"readonly()\"\r\n [rows]=\"rows()\"\r\n [attr.maxlength]=\"maxLength() ?? null\"\r\n [value]=\"value()\"\r\n (input)=\"onInput($event)\"\r\n (blur)=\"mfBlur.emit()\"\r\n ></textarea>\r\n @if (hint()) {\r\n <mat-hint>{{ hint() }}</mat-hint>\r\n }\r\n @if (maxLength()) {\r\n <mat-hint align=\"end\">{{ currentLength() }} / {{ maxLength() }}</mat-hint>\r\n }\r\n </mat-form-field>\r\n `,\r\n styleUrl: './mf-textarea.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfTextareaComponent {\r\n /** Etiqueta */\r\n readonly label = input<string | undefined>(undefined);\r\n /** Placeholder */\r\n readonly placeholder = input<string>('');\r\n /** Valor */\r\n readonly value = input<string>('');\r\n /** Filas visibles */\r\n readonly rows = input(4);\r\n /** Tamaño */\r\n readonly size = input<MfTextareaSize>('md');\r\n /** Máximo de caracteres */\r\n readonly maxLength = input<number | undefined>(undefined);\r\n /** Deshabilitado */\r\n readonly disabled = input(false);\r\n /** Solo lectura */\r\n readonly readonly = input(false);\r\n /** Texto de ayuda */\r\n readonly hint = input<string | undefined>(undefined);\r\n /** Resize */\r\n readonly resize = input<MfTextareaResize>('vertical');\r\n\r\n readonly mfInput = output<string>();\r\n readonly mfBlur = output<void>();\r\n\r\n readonly currentLength = computed(() => this.value().length);\r\n\r\n readonly hostClasses = computed(() => {\r\n return ['mf-textarea', `mf-textarea--${this.size()}`, `mf-textarea--resize-${this.resize()}`].join(' ');\r\n });\r\n\r\n onInput(event: Event): void {\r\n const value = (event.target as HTMLTextAreaElement).value;\r\n this.mfInput.emit(value);\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n} from '@angular/core';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\n\r\nexport type MfToolbarVariant = 'surface' | 'brand' | 'transparent';\r\n\r\n/**\r\n * Toolbar de la librería ng-comps.\r\n * Envuelve Angular Material `mat-toolbar` y expone una API uniforme\r\n * con look and feel de marca. Usa content projection para acciones.\r\n */\r\n@Component({\r\n selector: 'mf-toolbar',\r\n imports: [MatToolbarModule],\r\n template: `\r\n <mat-toolbar [class]=\"hostClasses()\">\r\n <div class=\"mf-toolbar__start\">\r\n @if (title()) {\r\n <span class=\"mf-toolbar__title\">{{ title() }}</span>\r\n }\r\n <ng-content select=\"[mfToolbarStart]\" />\r\n </div>\r\n <div class=\"mf-toolbar__spacer\"></div>\r\n <div class=\"mf-toolbar__end\">\r\n <ng-content select=\"[mfToolbarEnd]\" />\r\n <ng-content />\r\n </div>\r\n </mat-toolbar>\r\n `,\r\n styleUrl: './mf-toolbar.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfToolbarComponent {\r\n /** Título que se muestra en la toolbar */\r\n readonly title = input<string | undefined>(undefined);\r\n /** Variante visual */\r\n readonly variant = input<MfToolbarVariant>('surface');\r\n /** Muestra borde inferior */\r\n readonly bordered = input(true);\r\n /** Toolbar fija en la parte superior */\r\n readonly sticky = input(false);\r\n /** Elevación sutil */\r\n readonly elevated = input(false);\r\n\r\n readonly hostClasses = computed(() => {\r\n const classes = ['mf-toolbar', `mf-toolbar--${this.variant()}`];\r\n if (this.bordered()) classes.push('mf-toolbar--bordered');\r\n if (this.sticky()) classes.push('mf-toolbar--sticky');\r\n if (this.elevated()) classes.push('mf-toolbar--elevated');\r\n return classes.join(' ');\r\n });\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n} from '@angular/core';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nexport type MfTooltipPosition = 'above' | 'below' | 'left' | 'right';\r\n\r\n/**\r\n * Tooltip de la librería ng-comps.\r\n * Envuelve Angular Material `matTooltip` y expone una API uniforme\r\n * con look and feel de marca.\r\n */\r\n@Component({\r\n selector: 'mf-tooltip',\r\n imports: [MatTooltipModule],\r\n template: `\r\n <span\r\n [matTooltip]=\"text()\"\r\n [matTooltipPosition]=\"position()\"\r\n [matTooltipDisabled]=\"disabled()\"\r\n [matTooltipShowDelay]=\"showDelay()\"\r\n [matTooltipHideDelay]=\"hideDelay()\"\r\n [class]=\"hostClasses()\"\r\n >\r\n <ng-content />\r\n </span>\r\n `,\r\n styleUrl: './mf-tooltip.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfTooltipComponent {\r\n /** Texto del tooltip */\r\n readonly text = input.required<string>();\r\n /** Posición del tooltip */\r\n readonly position = input<MfTooltipPosition>('above');\r\n /** Deshabilitado */\r\n readonly disabled = input(false);\r\n /** Delay para mostrar (ms) */\r\n readonly showDelay = input(200);\r\n /** Delay para ocultar (ms) */\r\n readonly hideDelay = input(0);\r\n\r\n readonly hostClasses = computed(() => {\r\n return ['mf-tooltip', `mf-tooltip--${this.position()}`].join(' ');\r\n });\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i2","i4","i5"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "ng-comps",
3
+ "version": "0.2.0",
4
+ "description": "Angular UI components for mf-design-system",
5
+ "keywords": [
6
+ "angular",
7
+ "components",
8
+ "ui",
9
+ "design-system",
10
+ "material"
11
+ ],
12
+ "license": "MIT",
13
+ "type": "module",
14
+ "sideEffects": false,
15
+ "main": "./fesm2022/ng-comps.mjs",
16
+ "module": "./fesm2022/ng-comps.mjs",
17
+ "typings": "./types/ng-comps.d.ts",
18
+ "exports": {
19
+ ".": {
20
+ "types": "./types/ng-comps.d.ts",
21
+ "default": "./fesm2022/ng-comps.mjs"
22
+ },
23
+ "./styles.css": "./src/styles.css",
24
+ "./theme/tokens.css": "./src/theme/tokens.css",
25
+ "./theme/material-theme.scss": "./src/theme/material-theme.scss",
26
+ "./package.json": "./package.json"
27
+ },
28
+ "peerDependencies": {
29
+ "@angular/animations": "^21.2.0",
30
+ "@angular/cdk": "^21.2.2",
31
+ "@angular/common": "^21.2.0",
32
+ "@angular/core": "^21.2.0",
33
+ "@angular/forms": "^21.2.0",
34
+ "@angular/material": "^21.2.2",
35
+ "@angular/platform-browser": "^21.2.0",
36
+ "@angular/router": "^21.2.0",
37
+ "rxjs": "~7.8.0"
38
+ },
39
+ "dependencies": {
40
+ "tslib": "^2.3.0"
41
+ },
42
+ "publishConfig": {
43
+ "access": "public"
44
+ }
45
+ }
package/src/styles.css ADDED
@@ -0,0 +1,182 @@
1
+ /**
2
+ * MF Components — Estilos globales
3
+ * Importa tokens y el tema de Material, luego aplica resets y estilos base.
4
+ */
5
+
6
+ /* 1. Tokens de diseño */
7
+ @import './theme/tokens.css';
8
+
9
+ /* 2. Fuentes vía Google Fonts (sólo en desarrollo; en prod usar asset local) */
10
+ @import url('https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700&family=Sora:wght@500;700&display=swap');
11
+
12
+ /* 3. Reset y base */
13
+ *, *::before, *::after {
14
+ box-sizing: border-box;
15
+ }
16
+
17
+ body {
18
+ margin: 0;
19
+ font-family: var(--mf-font-base);
20
+ font-size: var(--mf-text-base);
21
+ line-height: var(--mf-leading-normal);
22
+ color: var(--mf-color-on-surface);
23
+ background-color: var(--mf-color-surface);
24
+ -webkit-font-smoothing: antialiased;
25
+ -moz-osx-font-smoothing: grayscale;
26
+ }
27
+
28
+ /* 4. Override de tokens de Material para usar nuestra paleta */
29
+ :root {
30
+ /* Botones */
31
+ --mdc-filled-button-container-color: var(--mf-color-brand);
32
+ --mdc-filled-button-label-text-color: var(--mf-color-on-brand);
33
+ --mdc-filled-button-container-shape: var(--mf-radius-full);
34
+
35
+ --mdc-outlined-button-container-shape: var(--mf-radius-full);
36
+ --mdc-outlined-button-label-text-color: var(--mf-color-secondary-900);
37
+ --mdc-outlined-button-outline-color: var(--mf-color-border);
38
+
39
+ /* Tipografía de botón */
40
+ --mdc-filled-button-label-text-font: var(--mf-font-base);
41
+ --mdc-filled-button-label-text-weight: var(--mf-weight-bold);
42
+ --mdc-outlined-button-label-text-font: var(--mf-font-base);
43
+ --mdc-outlined-button-label-text-weight: var(--mf-weight-bold);
44
+
45
+ /* Cards */
46
+ --mdc-elevated-card-container-shape: var(--mf-radius-lg);
47
+ --mdc-outlined-card-container-shape: var(--mf-radius-lg);
48
+
49
+ /* Toolbar */
50
+ --mat-toolbar-container-background-color: var(--mf-color-surface);
51
+ --mat-toolbar-container-text-color: var(--mf-color-on-surface);
52
+ }
53
+
54
+ /* ── Dialog actions ───────────────────────────────────────────── */
55
+ /* Angular's Emulated ViewEncapsulation prevents the component's own CSS
56
+ from styling projected children (they carry the parent's scope attr).
57
+ These global rules ensure the gap is always applied. */
58
+ .mf-dialog__actions {
59
+ display: flex;
60
+ align-items: center;
61
+ justify-content: flex-end;
62
+ gap: var(--mf-space-3);
63
+ padding: var(--mf-space-3) var(--mf-space-6) var(--mf-space-6);
64
+ }
65
+
66
+ .mf-dialog__actions > * {
67
+ display: flex;
68
+ align-items: center;
69
+ justify-content: flex-end;
70
+ gap: var(--mf-space-3);
71
+ width: 100%;
72
+ }
73
+
74
+ /* ── Dialog panel override ─────────────────────────────────────── */
75
+ .mf-dialog-panel .mat-mdc-dialog-container {
76
+ border-radius: var(--mf-radius-xl, 20px) !important;
77
+ overflow: hidden;
78
+ }
79
+
80
+ .mf-dialog-panel .mat-mdc-dialog-surface {
81
+ border-radius: var(--mf-radius-xl, 20px) !important;
82
+ box-shadow: var(--mf-shadow-lg) !important;
83
+ }
84
+
85
+ .cdk-overlay-dark-backdrop {
86
+ background: rgba(15, 23, 34, 0.5) !important;
87
+ }
88
+
89
+ /* ── Snackbar global overrides ─────────────────────────────────── */
90
+ .mf-snackbar.mat-mdc-snack-bar-container .mdc-snackbar__surface {
91
+ border-radius: var(--mf-radius-md) !important;
92
+ font-family: var(--mf-font-base) !important;
93
+ }
94
+
95
+ .mf-snackbar--info.mat-mdc-snack-bar-container .mdc-snackbar__surface {
96
+ background-color: var(--mf-color-secondary-700) !important;
97
+ color: var(--mf-color-neutral-0) !important;
98
+ }
99
+
100
+ .mf-snackbar--success.mat-mdc-snack-bar-container .mdc-snackbar__surface {
101
+ background-color: var(--mf-color-primary-700) !important;
102
+ color: var(--mf-color-on-brand) !important;
103
+ }
104
+
105
+ .mf-snackbar--warning.mat-mdc-snack-bar-container .mdc-snackbar__surface {
106
+ background-color: var(--mf-color-accent-500) !important;
107
+ color: var(--mf-color-neutral-900) !important;
108
+ }
109
+
110
+ .mf-snackbar--error.mat-mdc-snack-bar-container .mdc-snackbar__surface {
111
+ background-color: var(--mf-color-error-500) !important;
112
+ color: var(--mf-color-neutral-0) !important;
113
+ }
114
+
115
+ .mf-snackbar .mat-mdc-snack-bar-action .mdc-button__label {
116
+ color: inherit !important;
117
+ font-weight: var(--mf-weight-bold) !important;
118
+ opacity: 0.9;
119
+ }
120
+
121
+ /* ── Select panel (dropdown overlay) global overrides ─────────── */
122
+ .mf-select-panel.mat-mdc-select-panel {
123
+ border-radius: var(--mf-radius-md) !important;
124
+ box-shadow: var(--mf-shadow-md) !important;
125
+ font-family: var(--mf-font-base) !important;
126
+ border: 1px solid var(--mf-color-border);
127
+ padding: var(--mf-space-1) 0 !important;
128
+ background-color: var(--mf-color-surface) !important;
129
+ }
130
+
131
+ .mf-select-panel .mat-mdc-option {
132
+ font-family: var(--mf-font-base) !important;
133
+ font-size: var(--mf-text-base) !important;
134
+ color: var(--mf-color-on-surface) !important;
135
+ min-height: 40px;
136
+ }
137
+
138
+ .mf-select-panel .mat-mdc-option:hover:not(.mdc-list-item--disabled) {
139
+ background-color: var(--mf-color-brand-light) !important;
140
+ color: var(--mf-color-brand) !important;
141
+ }
142
+
143
+ .mf-select-panel .mat-mdc-option.mat-mdc-option-active,
144
+ .mf-select-panel .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple) {
145
+ background-color: var(--mf-color-brand-light) !important;
146
+ color: var(--mf-color-brand) !important;
147
+ font-weight: var(--mf-weight-medium) !important;
148
+ }
149
+
150
+ .mf-select-panel .mat-mdc-option .mat-pseudo-checkbox-checked,
151
+ .mf-select-panel .mat-mdc-option .mat-pseudo-checkbox-indeterminate {
152
+ background-color: var(--mf-color-brand) !important;
153
+ border-color: var(--mf-color-brand) !important;
154
+ }
155
+
156
+ /* ── Autocomplete panel global overrides ──────────────────────── */
157
+ .mf-autocomplete-panel.mat-mdc-autocomplete-panel {
158
+ border-radius: var(--mf-radius-md) !important;
159
+ box-shadow: var(--mf-shadow-md) !important;
160
+ font-family: var(--mf-font-base) !important;
161
+ border: 1px solid var(--mf-color-border);
162
+ padding: var(--mf-space-1) 0 !important;
163
+ background-color: var(--mf-color-surface) !important;
164
+ }
165
+
166
+ .mf-autocomplete-panel .mat-mdc-option {
167
+ font-family: var(--mf-font-base) !important;
168
+ font-size: var(--mf-text-base) !important;
169
+ color: var(--mf-color-on-surface) !important;
170
+ min-height: 40px;
171
+ }
172
+
173
+ .mf-autocomplete-panel .mat-mdc-option:hover:not(.mdc-list-item--disabled) {
174
+ background-color: var(--mf-color-brand-light) !important;
175
+ color: var(--mf-color-brand) !important;
176
+ }
177
+
178
+ .mf-autocomplete-panel .mat-mdc-option.mat-mdc-option-active {
179
+ background-color: var(--mf-color-brand-light) !important;
180
+ color: var(--mf-color-brand) !important;
181
+ font-weight: var(--mf-weight-medium) !important;
182
+ }