@xosue-utils/helpers 0.2.0 → 0.2.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"xosue-utils-helpers.mjs","sources":["../../src/lib/smart-pagination/smart-pagination.component.ts","../../src/lib/smart-pagination/smart-pagination.component.html","../../src/lib/empty-state/empty-state.component.ts","../../src/lib/load-error/load-error.component.ts","../../src/lib/section-header/section-header.component.ts","../../src/lib/key-value-list/key-value-list.component.ts","../../src/public-api.ts","../../src/xosue-utils-helpers.ts"],"sourcesContent":["import {\r\n Component,\r\n Input,\r\n signal,\r\n effect,\r\n computed,\r\n inject,\r\n OnInit,\r\n OnDestroy,\r\n Injector,\r\n} from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Subscription } from 'rxjs';\r\nimport { LucideIconComponent } from '@xosue-utils/actions';\r\n\r\nexport interface PaginationData {\r\n total: number;\r\n per_page: number;\r\n current_page: number;\r\n last_page: number;\r\n from: number;\r\n to: number;\r\n}\r\n\r\n@Component({\r\n selector: 'smart-pagination',\r\n standalone: true,\r\n imports: [LucideIconComponent, CommonModule],\r\n templateUrl: './smart-pagination.component.html',\r\n styleUrl: './smart-pagination.component.sass',\r\n})\r\nexport class SmartPaginationComponent implements OnInit, OnDestroy {\r\n private router = inject(Router);\r\n private route = inject(ActivatedRoute);\r\n private injector = inject(Injector);\r\n\r\n @Input() resetOnChanges = false;\r\n @Input() paramName = 'page';\r\n /** Label when total === 0. */\r\n @Input() emptyLabel = 'No hay resultados.';\r\n /** Label when last_page === 1. */\r\n @Input() singlePageLabel = 'Página única';\r\n\r\n @Input() set data(value: PaginationData | null | undefined) {\r\n if (value) {\r\n this.paginationData.set(value);\r\n } else {\r\n this.paginationData.set({\r\n total: 0,\r\n per_page: 10,\r\n current_page: 1,\r\n last_page: 1,\r\n from: 0,\r\n to: 0,\r\n });\r\n }\r\n }\r\n\r\n paginationData = signal<PaginationData>({\r\n total: 0,\r\n per_page: 10,\r\n current_page: 1,\r\n last_page: 1,\r\n from: 0,\r\n to: 0,\r\n });\r\n\r\n readonly currentPage = computed(() => this.paginationData().current_page);\r\n readonly lastPage = computed(() => this.paginationData().last_page);\r\n\r\n readonly pagesToDisplay = computed(() => {\r\n const current = this.currentPage();\r\n const last = this.lastPage();\r\n const pages: (number | string)[] = [];\r\n\r\n if (last <= 5) {\r\n for (let i = 1; i <= last; i++) pages.push(i);\r\n return pages;\r\n }\r\n\r\n pages.push(1);\r\n\r\n if (current <= 4) {\r\n for (let i = 2; i <= 5; i++) pages.push(i);\r\n pages.push('...');\r\n } else if (current >= last - 3) {\r\n pages.push('...');\r\n for (let i = last - 4; i < last; i++) pages.push(i);\r\n } else {\r\n pages.push('...');\r\n pages.push(current - 1, current, current + 1);\r\n pages.push('...');\r\n }\r\n\r\n pages.push(last);\r\n return pages;\r\n });\r\n\r\n private queryParamsSub = Subscription.EMPTY;\r\n readonly queryParams = signal<{ [key: string]: string }>({});\r\n\r\n isPage(p: number | string): p is number {\r\n return typeof p === 'number';\r\n }\r\n\r\n goToPage(page: number): void {\r\n this.router.navigate([], {\r\n relativeTo: this.route,\r\n queryParams: { [this.paramName]: page },\r\n queryParamsHandling: 'merge',\r\n });\r\n }\r\n\r\n generateHref(page: number): string {\r\n const base = this.router.url.split('?')[0];\r\n const params = new URLSearchParams({\r\n ...this.queryParams(),\r\n [this.paramName]: String(page),\r\n });\r\n return `${base}?${params}`;\r\n }\r\n\r\n updateFilter(params: { [key: string]: unknown }): void {\r\n const queryParams: { [key: string]: string | null } = {};\r\n for (const key in params) {\r\n queryParams[key] = params[key] != null ? String(params[key]) : null;\r\n }\r\n this.router.navigate([], {\r\n relativeTo: this.route,\r\n queryParams,\r\n queryParamsHandling: 'merge',\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n const queryPage = +(this.route.snapshot.queryParamMap.get(this.paramName) || '1');\r\n if (!queryPage || queryPage < 1) {\r\n this.goToPage(1);\r\n }\r\n\r\n this.queryParamsSub = this.route.queryParamMap.subscribe((params) => {\r\n const newParams: { [key: string]: string } = {};\r\n params.keys.forEach((key) => {\r\n if (key !== this.paramName) {\r\n newParams[key] = params.get(key) ?? '';\r\n }\r\n });\r\n this.queryParams.set(newParams);\r\n\r\n const page = +(params.get(this.paramName) || '1');\r\n if (!page || page < 1) {\r\n this.goToPage(1);\r\n }\r\n });\r\n\r\n effect(\r\n () => {\r\n const pag = this.paginationData();\r\n if (!pag) return;\r\n\r\n const currentParam = +(this.route.snapshot.queryParamMap.get(this.paramName) || '1');\r\n\r\n if (this.resetOnChanges) {\r\n if (currentParam !== 1) {\r\n this.goToPage(1);\r\n }\r\n return;\r\n }\r\n\r\n if (pag.last_page && currentParam > pag.last_page && pag.last_page >= 1) {\r\n this.goToPage(pag.last_page);\r\n }\r\n },\r\n { injector: this.injector },\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.queryParamsSub.unsubscribe();\r\n }\r\n}\r\n","@if (paginationData() && paginationData().total === 0) {\r\n <p class=\"NonResults\">{{ emptyLabel }}</p>\r\n} @else if (paginationData() && paginationData().last_page > 1) {\r\n <nav class=\"pagination\" aria-label=\"Paginación\">\r\n @if (currentPage() > 1) {\r\n <button type=\"button\" (click)=\"goToPage(currentPage() - 1)\" aria-label=\"Anterior\">\r\n <lucide-icon name=\"chevron-left\" [size]=\"16\"></lucide-icon>\r\n </button>\r\n }\r\n\r\n @for (p of pagesToDisplay(); track $index) {\r\n @if (isPage(p)) {\r\n <a\r\n [class.active]=\"p === currentPage()\"\r\n [href]=\"generateHref(p)\"\r\n (click)=\"goToPage(p); $event.preventDefault()\"\r\n >\r\n {{ p }}\r\n </a>\r\n } @else {\r\n <span class=\"ellipsis\">…</span>\r\n }\r\n }\r\n\r\n @if (currentPage() < lastPage()) {\r\n <button type=\"button\" (click)=\"goToPage(currentPage() + 1)\" aria-label=\"Siguiente\">\r\n <lucide-icon name=\"chevron-right\" [size]=\"16\"></lucide-icon>\r\n </button>\r\n }\r\n </nav>\r\n} @else {\r\n <p class=\"UniquePage\">{{ singlePageLabel }}</p>\r\n}\r\n","import { Component, input, output } from '@angular/core';\r\nimport { LucideIconComponent, TextBtnComponent } from '@xosue-utils/actions';\r\n\r\n@Component({\r\n selector: 'empty-state',\r\n standalone: true,\r\n imports: [LucideIconComponent, TextBtnComponent],\r\n template: `\r\n <div class=\"EmptyState\">\r\n @if (icon()) {\r\n <div class=\"EmptyState__Icon\">\r\n <lucide-icon [name]=\"icon()!\" [size]=\"36\"></lucide-icon>\r\n </div>\r\n }\r\n <h3 class=\"EmptyState__Title\">{{ title() }}</h3>\r\n @if (message()) {\r\n <p class=\"EmptyState__Message\">{{ message() }}</p>\r\n }\r\n @if (primaryLabel() || secondaryLabel()) {\r\n <div class=\"EmptyState__Actions\">\r\n @if (secondaryLabel()) {\r\n <text-btn\r\n [label]=\"secondaryLabel()!\"\r\n color=\"cancel\"\r\n variant=\"ghost\"\r\n (clicked)=\"secondary.emit($event)\"\r\n ></text-btn>\r\n }\r\n @if (primaryLabel()) {\r\n <text-btn\r\n [label]=\"primaryLabel()!\"\r\n [icon]=\"primaryIcon()\"\r\n color=\"primary\"\r\n (clicked)=\"primary.emit($event)\"\r\n ></text-btn>\r\n }\r\n </div>\r\n }\r\n <ng-content></ng-content>\r\n </div>\r\n `,\r\n styleUrl: './empty-state.component.sass',\r\n})\r\nexport class EmptyStateComponent {\r\n readonly title = input('Sin datos');\r\n readonly message = input<string | null>(null);\r\n readonly icon = input<string | null>('inbox');\r\n readonly primaryLabel = input<string | null>(null);\r\n readonly primaryIcon = input<string | null>(null);\r\n readonly secondaryLabel = input<string | null>(null);\r\n\r\n readonly primary = output<MouseEvent>();\r\n readonly secondary = output<MouseEvent>();\r\n}\r\n","import { Component, input, output } from '@angular/core';\r\nimport { LucideIconComponent, TextBtnComponent } from '@xosue-utils/actions';\r\n\r\n@Component({\r\n selector: 'load-error',\r\n standalone: true,\r\n imports: [LucideIconComponent, TextBtnComponent],\r\n template: `\r\n <div class=\"LoadError\">\r\n <div class=\"LoadError__Icon\">\r\n <lucide-icon [name]=\"icon()\" [size]=\"36\"></lucide-icon>\r\n </div>\r\n <h3 class=\"LoadError__Title\">{{ title() }}</h3>\r\n @if (message()) {\r\n <p class=\"LoadError__Message\">{{ message() }}</p>\r\n }\r\n <div class=\"LoadError__Actions\">\r\n <text-btn\r\n [label]=\"retryLabel()\"\r\n icon=\"refresh-cw\"\r\n color=\"primary\"\r\n (clicked)=\"retry.emit($event)\"\r\n ></text-btn>\r\n </div>\r\n <ng-content></ng-content>\r\n </div>\r\n `,\r\n styleUrl: './load-error.component.sass',\r\n})\r\nexport class LoadErrorComponent {\r\n readonly title = input('No se pudo cargar');\r\n readonly message = input<string | null>('Revisá tu conexión e intentá de nuevo.');\r\n readonly icon = input('triangle-alert');\r\n readonly retryLabel = input('Reintentar');\r\n\r\n readonly retry = output<MouseEvent>();\r\n}\r\n","import { Component, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'section-header',\r\n standalone: true,\r\n template: `\r\n <header class=\"SectionHeader\">\r\n <div class=\"SectionHeader__Text\">\r\n @if (eyebrow()) {\r\n <p class=\"SectionHeader__Eyebrow\">{{ eyebrow() }}</p>\r\n }\r\n <h2 class=\"SectionHeader__Title\">{{ title() }}</h2>\r\n @if (subtitle()) {\r\n <p class=\"SectionHeader__Subtitle\">{{ subtitle() }}</p>\r\n }\r\n </div>\r\n <div class=\"SectionHeader__Actions\">\r\n <ng-content></ng-content>\r\n </div>\r\n </header>\r\n `,\r\n styleUrl: './section-header.component.sass',\r\n})\r\nexport class SectionHeaderComponent {\r\n readonly title = input.required<string>();\r\n readonly subtitle = input<string | null>(null);\r\n readonly eyebrow = input<string | null>(null);\r\n}\r\n","import { Component, input } from '@angular/core';\r\n\r\nexport interface KeyValueItem {\r\n label: string;\r\n value: string | number | null | undefined;\r\n}\r\n\r\n@Component({\r\n selector: 'key-value-list',\r\n standalone: true,\r\n template: `\r\n <dl class=\"KvList\">\r\n @for (item of items(); track item.label + '-' + $index) {\r\n <div class=\"KvList__Row\">\r\n <dt class=\"KvList__Label\">{{ item.label }}</dt>\r\n <dd class=\"KvList__Value\">{{ item.value ?? emptyValue() }}</dd>\r\n </div>\r\n }\r\n </dl>\r\n `,\r\n styleUrl: './key-value-list.component.sass',\r\n})\r\nexport class KeyValueListComponent {\r\n readonly items = input<KeyValueItem[]>([]);\r\n readonly emptyValue = input('—');\r\n}\r\n","/*\r\n * Public API Surface of @xosue-utils/helpers\r\n */\r\n\r\nexport * from './lib/index';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;MAgCa,wBAAwB,CAAA;AAC3B,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,IAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AAC9B,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAE1B,cAAc,GAAG,KAAK;IACtB,SAAS,GAAG,MAAM;;IAElB,UAAU,GAAG,oBAAoB;;IAEjC,eAAe,GAAG,cAAc;IAEzC,IAAa,IAAI,CAAC,KAAwC,EAAA;QACxD,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;QAChC;aAAO;AACL,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACtB,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,YAAY,EAAE,CAAC;AACf,gBAAA,SAAS,EAAE,CAAC;AACZ,gBAAA,IAAI,EAAE,CAAC;AACP,gBAAA,EAAE,EAAE,CAAC;AACN,aAAA,CAAC;QACJ;IACF;IAEA,cAAc,GAAG,MAAM,CAAiB;AACtC,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,YAAY,EAAE,CAAC;AACf,QAAA,SAAS,EAAE,CAAC;AACZ,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,EAAE,EAAE,CAAC;AACN,KAAA,CAAC;AAEO,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,YAAY,CAAC;AAChE,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC;AAE1D,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;AAClC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC5B,MAAM,KAAK,GAAwB,EAAE;AAErC,QAAA,IAAI,IAAI,IAAI,CAAC,EAAE;YACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE;AAAE,gBAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAEb,QAAA,IAAI,OAAO,IAAI,CAAC,EAAE;YAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;AAAE,gBAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,YAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QACnB;AAAO,aAAA,IAAI,OAAO,IAAI,IAAI,GAAG,CAAC,EAAE;AAC9B,YAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AACjB,YAAA,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;AAAE,gBAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD;aAAO;AACL,YAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AACjB,YAAA,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC,CAAC;AAC7C,YAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QACnB;AAEA,QAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAChB,QAAA,OAAO,KAAK;AACd,IAAA,CAAC,CAAC;AAEM,IAAA,cAAc,GAAG,YAAY,CAAC,KAAK;AAClC,IAAA,WAAW,GAAG,MAAM,CAA4B,EAAE,CAAC;AAE5D,IAAA,MAAM,CAAC,CAAkB,EAAA;AACvB,QAAA,OAAO,OAAO,CAAC,KAAK,QAAQ;IAC9B;AAEA,IAAA,QAAQ,CAAC,IAAY,EAAA;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;YACvB,UAAU,EAAE,IAAI,CAAC,KAAK;YACtB,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE;AACvC,YAAA,mBAAmB,EAAE,OAAO;AAC7B,SAAA,CAAC;IACJ;AAEA,IAAA,YAAY,CAAC,IAAY,EAAA;AACvB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1C,QAAA,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,GAAG,IAAI,CAAC,WAAW,EAAE;YACrB,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;AAC/B,SAAA,CAAC;AACF,QAAA,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,MAAM,EAAE;IAC5B;AAEA,IAAA,YAAY,CAAC,MAAkC,EAAA;QAC7C,MAAM,WAAW,GAAqC,EAAE;AACxD,QAAA,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;YACxB,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI;QACrE;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;YACvB,UAAU,EAAE,IAAI,CAAC,KAAK;YACtB,WAAW;AACX,YAAA,mBAAmB,EAAE,OAAO;AAC7B,SAAA,CAAC;IACJ;IAEA,QAAQ,GAAA;QACN,MAAM,SAAS,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC;AACjF,QAAA,IAAI,CAAC,SAAS,IAAI,SAAS,GAAG,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClB;AAEA,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;YAClE,MAAM,SAAS,GAA8B,EAAE;YAC/C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAC1B,gBAAA,IAAI,GAAG,KAAK,IAAI,CAAC,SAAS,EAAE;AAC1B,oBAAA,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;gBACxC;AACF,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC;AAE/B,YAAA,MAAM,IAAI,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC;AACjD,YAAA,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE;AACrB,gBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClB;AACF,QAAA,CAAC,CAAC;QAEF,MAAM,CACJ,MAAK;AACH,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE;AACjC,YAAA,IAAI,CAAC,GAAG;gBAAE;YAEV,MAAM,YAAY,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC;AAEpF,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,gBAAA,IAAI,YAAY,KAAK,CAAC,EAAE;AACtB,oBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAClB;gBACA;YACF;AAEA,YAAA,IAAI,GAAG,CAAC,SAAS,IAAI,YAAY,GAAG,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,IAAI,CAAC,EAAE;AACvE,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;YAC9B;QACF,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC5B;IACH;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;IACnC;wGApJW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChCrC,krCAiCA,EAAA,MAAA,EAAA,CAAA,08CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDLY,mBAAmB,mGAAE,YAAY,EAAA,CAAA,EAAA,CAAA;;4FAIhC,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAChB,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,krCAAA,EAAA,MAAA,EAAA,CAAA,08CAAA,CAAA,EAAA;8BASnC,cAAc,EAAA,CAAA;sBAAtB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBAEQ,UAAU,EAAA,CAAA;sBAAlB;gBAEQ,eAAe,EAAA,CAAA;sBAAvB;gBAEY,IAAI,EAAA,CAAA;sBAAhB;;;MEDU,mBAAmB,CAAA;AACrB,IAAA,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC;AAC1B,IAAA,OAAO,GAAG,KAAK,CAAgB,IAAI,CAAC;AACpC,IAAA,IAAI,GAAG,KAAK,CAAgB,OAAO,CAAC;AACpC,IAAA,YAAY,GAAG,KAAK,CAAgB,IAAI,CAAC;AACzC,IAAA,WAAW,GAAG,KAAK,CAAgB,IAAI,CAAC;AACxC,IAAA,cAAc,GAAG,KAAK,CAAgB,IAAI,CAAC;IAE3C,OAAO,GAAG,MAAM,EAAc;IAC9B,SAAS,GAAG,MAAM,EAAc;wGAT9B,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApCpB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wrBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAlCS,mBAAmB,oGAAE,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,cAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,EAAA,YAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,SAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAqCpC,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAxC/B,SAAS;+BACE,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,EAAA,QAAA,EACtC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wrBAAA,CAAA,EAAA;;;MCXU,kBAAkB,CAAA;AACpB,IAAA,KAAK,GAAG,KAAK,CAAC,mBAAmB,CAAC;AAClC,IAAA,OAAO,GAAG,KAAK,CAAgB,wCAAwC,CAAC;AACxE,IAAA,IAAI,GAAG,KAAK,CAAC,gBAAgB,CAAC;AAC9B,IAAA,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC;IAEhC,KAAK,GAAG,MAAM,EAAc;wGAN1B,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtBnB,CAAA;;;;;;;;;;;;;;;;;;;GAmBT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,qqBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EApBS,mBAAmB,oGAAE,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,cAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,EAAA,YAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,SAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAuBpC,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBA1B9B,SAAS;+BACE,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,EAAA,QAAA,EACtC,CAAA;;;;;;;;;;;;;;;;;;;AAmBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,qqBAAA,CAAA,EAAA;;;MCHU,sBAAsB,CAAA;AACxB,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAU;AAChC,IAAA,QAAQ,GAAG,KAAK,CAAgB,IAAI,CAAC;AACrC,IAAA,OAAO,GAAG,KAAK,CAAgB,IAAI,CAAC;wGAHlC,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlBvB,CAAA;;;;;;;;;;;;;;;AAeT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,spBAAA,CAAA,EAAA,CAAA;;4FAGU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBArBlC,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,QAAA,EACN,CAAA;;;;;;;;;;;;;;;AAeT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,spBAAA,CAAA,EAAA;;;MCEU,qBAAqB,CAAA;AACvB,IAAA,KAAK,GAAG,KAAK,CAAiB,EAAE,CAAC;AACjC,IAAA,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC;wGAFrB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAZtB,CAAA;;;;;;;;;AAST,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,oiBAAA,CAAA,EAAA,CAAA;;4FAGU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAfjC,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,QAAA,EACN,CAAA;;;;;;;;;AAST,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,oiBAAA,CAAA,EAAA;;;ACnBH;;AAEG;;ACFH;;AAEG;;"}
1
+ {"version":3,"file":"xosue-utils-helpers.mjs","sources":["../../src/lib/smart-pagination/smart-pagination.component.ts","../../src/lib/smart-pagination/smart-pagination.component.html","../../src/lib/empty-state/empty-state.component.ts","../../src/lib/load-error/load-error.component.ts","../../src/lib/section-header/section-header.component.ts","../../src/lib/key-value-list/key-value-list.component.ts","../../src/lib/skeleton/skeleton.component.ts","../../src/lib/surface-card/surface-card.component.ts","../../src/lib/avatar/avatar.component.ts","../../src/lib/list-row/list-row.component.ts","../../src/lib/data-table/data-table.component.ts","../../src/lib/accordion/accordion-item.component.ts","../../src/lib/accordion/accordion.component.ts","../../src/lib/stepper/stepper.component.ts","../../src/lib/breadcrumbs/breadcrumbs.component.ts","../../src/lib/tabs/tabs.component.ts","../../src/lib/notice/notice.component.ts","../../src/public-api.ts","../../src/xosue-utils-helpers.ts"],"sourcesContent":["import {\r\n Component,\r\n Input,\r\n signal,\r\n effect,\r\n computed,\r\n inject,\r\n OnInit,\r\n OnDestroy,\r\n Injector,\r\n} from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Subscription } from 'rxjs';\r\nimport { LucideIconComponent } from '@xosue-utils/actions';\r\n\r\nexport interface PaginationData {\r\n total: number;\r\n per_page: number;\r\n current_page: number;\r\n last_page: number;\r\n from: number;\r\n to: number;\r\n}\r\n\r\n@Component({\r\n selector: 'smart-pagination',\r\n standalone: true,\r\n imports: [LucideIconComponent, CommonModule],\r\n templateUrl: './smart-pagination.component.html',\r\n styleUrl: './smart-pagination.component.sass',\r\n})\r\nexport class SmartPaginationComponent implements OnInit, OnDestroy {\r\n private router = inject(Router);\r\n private route = inject(ActivatedRoute);\r\n private injector = inject(Injector);\r\n\r\n @Input() resetOnChanges = false;\r\n @Input() paramName = 'page';\r\n /** Label when total === 0. */\r\n @Input() emptyLabel = 'No hay resultados.';\r\n /** Label when last_page === 1. */\r\n @Input() singlePageLabel = 'Página única';\r\n\r\n @Input() set data(value: PaginationData | null | undefined) {\r\n if (value) {\r\n this.paginationData.set(value);\r\n } else {\r\n this.paginationData.set({\r\n total: 0,\r\n per_page: 10,\r\n current_page: 1,\r\n last_page: 1,\r\n from: 0,\r\n to: 0,\r\n });\r\n }\r\n }\r\n\r\n paginationData = signal<PaginationData>({\r\n total: 0,\r\n per_page: 10,\r\n current_page: 1,\r\n last_page: 1,\r\n from: 0,\r\n to: 0,\r\n });\r\n\r\n readonly currentPage = computed(() => this.paginationData().current_page);\r\n readonly lastPage = computed(() => this.paginationData().last_page);\r\n\r\n readonly pagesToDisplay = computed(() => {\r\n const current = this.currentPage();\r\n const last = this.lastPage();\r\n const pages: (number | string)[] = [];\r\n\r\n if (last <= 5) {\r\n for (let i = 1; i <= last; i++) pages.push(i);\r\n return pages;\r\n }\r\n\r\n pages.push(1);\r\n\r\n if (current <= 4) {\r\n for (let i = 2; i <= 5; i++) pages.push(i);\r\n pages.push('...');\r\n } else if (current >= last - 3) {\r\n pages.push('...');\r\n for (let i = last - 4; i < last; i++) pages.push(i);\r\n } else {\r\n pages.push('...');\r\n pages.push(current - 1, current, current + 1);\r\n pages.push('...');\r\n }\r\n\r\n pages.push(last);\r\n return pages;\r\n });\r\n\r\n private queryParamsSub = Subscription.EMPTY;\r\n readonly queryParams = signal<{ [key: string]: string }>({});\r\n\r\n isPage(p: number | string): p is number {\r\n return typeof p === 'number';\r\n }\r\n\r\n goToPage(page: number): void {\r\n this.router.navigate([], {\r\n relativeTo: this.route,\r\n queryParams: { [this.paramName]: page },\r\n queryParamsHandling: 'merge',\r\n });\r\n }\r\n\r\n generateHref(page: number): string {\r\n const base = this.router.url.split('?')[0];\r\n const params = new URLSearchParams({\r\n ...this.queryParams(),\r\n [this.paramName]: String(page),\r\n });\r\n return `${base}?${params}`;\r\n }\r\n\r\n updateFilter(params: { [key: string]: unknown }): void {\r\n const queryParams: { [key: string]: string | null } = {};\r\n for (const key in params) {\r\n queryParams[key] = params[key] != null ? String(params[key]) : null;\r\n }\r\n this.router.navigate([], {\r\n relativeTo: this.route,\r\n queryParams,\r\n queryParamsHandling: 'merge',\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n const queryPage = +(this.route.snapshot.queryParamMap.get(this.paramName) || '1');\r\n if (!queryPage || queryPage < 1) {\r\n this.goToPage(1);\r\n }\r\n\r\n this.queryParamsSub = this.route.queryParamMap.subscribe((params) => {\r\n const newParams: { [key: string]: string } = {};\r\n params.keys.forEach((key) => {\r\n if (key !== this.paramName) {\r\n newParams[key] = params.get(key) ?? '';\r\n }\r\n });\r\n this.queryParams.set(newParams);\r\n\r\n const page = +(params.get(this.paramName) || '1');\r\n if (!page || page < 1) {\r\n this.goToPage(1);\r\n }\r\n });\r\n\r\n effect(\r\n () => {\r\n const pag = this.paginationData();\r\n if (!pag) return;\r\n\r\n const currentParam = +(this.route.snapshot.queryParamMap.get(this.paramName) || '1');\r\n\r\n if (this.resetOnChanges) {\r\n if (currentParam !== 1) {\r\n this.goToPage(1);\r\n }\r\n return;\r\n }\r\n\r\n if (pag.last_page && currentParam > pag.last_page && pag.last_page >= 1) {\r\n this.goToPage(pag.last_page);\r\n }\r\n },\r\n { injector: this.injector },\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.queryParamsSub.unsubscribe();\r\n }\r\n}\r\n","@if (paginationData() && paginationData().total === 0) {\r\n <p class=\"NonResults\">{{ emptyLabel }}</p>\r\n} @else if (paginationData() && paginationData().last_page > 1) {\r\n <nav class=\"pagination\" aria-label=\"Paginación\">\r\n @if (currentPage() > 1) {\r\n <button type=\"button\" (click)=\"goToPage(currentPage() - 1)\" aria-label=\"Anterior\">\r\n <lucide-icon name=\"chevron-left\" [size]=\"14\"></lucide-icon>\r\n </button>\r\n }\r\n\r\n @for (p of pagesToDisplay(); track $index) {\r\n @if (isPage(p)) {\r\n <a\r\n [class.active]=\"p === currentPage()\"\r\n [href]=\"generateHref(p)\"\r\n (click)=\"goToPage(p); $event.preventDefault()\"\r\n >\r\n {{ p }}\r\n </a>\r\n } @else {\r\n <span class=\"ellipsis\">…</span>\r\n }\r\n }\r\n\r\n @if (currentPage() < lastPage()) {\r\n <button type=\"button\" (click)=\"goToPage(currentPage() + 1)\" aria-label=\"Siguiente\">\r\n <lucide-icon name=\"chevron-right\" [size]=\"14\"></lucide-icon>\r\n </button>\r\n }\r\n </nav>\r\n} @else {\r\n <p class=\"UniquePage\">{{ singlePageLabel }}</p>\r\n}\r\n","import { Component, input, output } from '@angular/core';\r\nimport { LucideIconComponent, TextBtnComponent } from '@xosue-utils/actions';\r\n\r\n@Component({\r\n selector: 'empty-state',\r\n standalone: true,\r\n imports: [LucideIconComponent, TextBtnComponent],\r\n template: `\r\n <div class=\"EmptyState\">\r\n @if (icon()) {\r\n <div class=\"EmptyState__Icon\">\r\n <lucide-icon [name]=\"icon()!\" [size]=\"24\"></lucide-icon>\r\n </div>\r\n }\r\n <h3 class=\"EmptyState__Title\">{{ title() }}</h3>\r\n @if (message()) {\r\n <p class=\"EmptyState__Message\">{{ message() }}</p>\r\n }\r\n @if (primaryLabel() || secondaryLabel()) {\r\n <div class=\"EmptyState__Actions\">\r\n @if (secondaryLabel()) {\r\n <text-btn\r\n [label]=\"secondaryLabel()!\"\r\n color=\"cancel\"\r\n variant=\"ghost\"\r\n (clicked)=\"secondary.emit($event)\"\r\n ></text-btn>\r\n }\r\n @if (primaryLabel()) {\r\n <text-btn\r\n [label]=\"primaryLabel()!\"\r\n [icon]=\"primaryIcon() ?? ''\"\r\n color=\"primary\"\r\n (clicked)=\"primary.emit($event)\"\r\n ></text-btn>\r\n }\r\n </div>\r\n }\r\n <ng-content></ng-content>\r\n </div>\r\n `,\r\n styleUrl: './empty-state.component.sass',\r\n})\r\nexport class EmptyStateComponent {\r\n readonly title = input('Sin datos');\r\n readonly message = input<string | null>(null);\r\n readonly icon = input<string | null>('inbox');\r\n readonly primaryLabel = input<string | null>(null);\r\n readonly primaryIcon = input<string | null>(null);\r\n readonly secondaryLabel = input<string | null>(null);\r\n\r\n readonly primary = output<MouseEvent>();\r\n readonly secondary = output<MouseEvent>();\r\n}\r\n","import { Component, input, output } from '@angular/core';\r\nimport { LucideIconComponent, TextBtnComponent } from '@xosue-utils/actions';\r\n\r\n@Component({\r\n selector: 'load-error',\r\n standalone: true,\r\n imports: [LucideIconComponent, TextBtnComponent],\r\n template: `\r\n <div class=\"LoadError\">\r\n <div class=\"LoadError__Icon\">\r\n <lucide-icon [name]=\"icon()\" [size]=\"24\"></lucide-icon>\r\n </div>\r\n <h3 class=\"LoadError__Title\">{{ title() }}</h3>\r\n @if (message()) {\r\n <p class=\"LoadError__Message\">{{ message() }}</p>\r\n }\r\n <div class=\"LoadError__Actions\">\r\n <text-btn\r\n [label]=\"retryLabel()\"\r\n icon=\"refresh-cw\"\r\n color=\"primary\"\r\n (clicked)=\"retry.emit($event)\"\r\n ></text-btn>\r\n </div>\r\n <ng-content></ng-content>\r\n </div>\r\n `,\r\n styleUrl: './load-error.component.sass',\r\n})\r\nexport class LoadErrorComponent {\r\n readonly title = input('No se pudo cargar');\r\n readonly message = input<string | null>('Revisá tu conexión e intentá de nuevo.');\r\n readonly icon = input('triangle-alert');\r\n readonly retryLabel = input('Reintentar');\r\n\r\n readonly retry = output<MouseEvent>();\r\n}\r\n","import { Component, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'section-header',\r\n standalone: true,\r\n template: `\r\n <header class=\"SectionHeader\">\r\n <div class=\"SectionHeader__Text\">\r\n @if (eyebrow()) {\r\n <p class=\"SectionHeader__Eyebrow\">{{ eyebrow() }}</p>\r\n }\r\n <h2 class=\"SectionHeader__Title\">{{ title() }}</h2>\r\n @if (subtitle()) {\r\n <p class=\"SectionHeader__Subtitle\">{{ subtitle() }}</p>\r\n }\r\n </div>\r\n <div class=\"SectionHeader__Actions\">\r\n <ng-content></ng-content>\r\n </div>\r\n </header>\r\n `,\r\n styleUrl: './section-header.component.sass',\r\n})\r\nexport class SectionHeaderComponent {\r\n readonly title = input.required<string>();\r\n readonly subtitle = input<string | null>(null);\r\n readonly eyebrow = input<string | null>(null);\r\n}\r\n","import { Component, input } from '@angular/core';\r\n\r\nexport interface KeyValueItem {\r\n label: string;\r\n value: string | number | null | undefined;\r\n}\r\n\r\n@Component({\r\n selector: 'key-value-list',\r\n standalone: true,\r\n template: `\r\n <dl class=\"KvList\">\r\n @for (item of items(); track item.label + '-' + $index) {\r\n <div class=\"KvList__Row\">\r\n <dt class=\"KvList__Label\">{{ item.label }}</dt>\r\n <dd class=\"KvList__Value\">{{ item.value ?? emptyValue() }}</dd>\r\n </div>\r\n }\r\n </dl>\r\n `,\r\n styleUrl: './key-value-list.component.sass',\r\n})\r\nexport class KeyValueListComponent {\r\n readonly items = input<KeyValueItem[]>([]);\r\n readonly emptyValue = input('—');\r\n}\r\n","import { booleanAttribute, Component, input } from '@angular/core';\r\n\r\nexport type SkeletonVariant = 'line' | 'rect' | 'circle';\r\n\r\n@Component({\r\n selector: 'skeleton',\r\n standalone: true,\r\n template: `\r\n <div\r\n class=\"Skeleton\"\r\n [class.Skeleton--circle]=\"variant() === 'circle'\"\r\n [class.Skeleton--rect]=\"variant() === 'rect'\"\r\n [class.Skeleton--static]=\"!pulse()\"\r\n [attr.aria-hidden]=\"true\"\r\n >\r\n @if (variant() === 'line') {\r\n @for (line of lineIndexes; track line) {\r\n <span class=\"Skeleton__Line\" [style.width]=\"lineWidth(line)\"></span>\r\n }\r\n } @else {\r\n <span class=\"Skeleton__Block\" [style.width]=\"width()\" [style.height]=\"height()\"></span>\r\n }\r\n </div>\r\n `,\r\n styleUrl: './skeleton.component.sass',\r\n})\r\nexport class SkeletonComponent {\r\n readonly variant = input<SkeletonVariant>('line');\r\n readonly lines = input(3);\r\n readonly width = input('100%');\r\n readonly height = input('14px');\r\n readonly pulse = input(true, { transform: booleanAttribute });\r\n\r\n get lineIndexes(): number[] {\r\n return Array.from({ length: Math.max(1, this.lines()) }, (_, i) => i);\r\n }\r\n\r\n lineWidth(index: number): string {\r\n if (this.lines() <= 1) return this.width();\r\n return index === this.lines() - 1 ? '62%' : '100%';\r\n }\r\n}\r\n","import { booleanAttribute, Component, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'surface-card',\r\n standalone: true,\r\n template: `\r\n <div class=\"SurfaceCard\" [class.SurfaceCard--compact]=\"compact()\">\r\n @if (title() || subtitle()) {\r\n <div class=\"SurfaceCard__Head\">\r\n @if (title()) {\r\n <p class=\"SurfaceCard__Title\">{{ title() }}</p>\r\n }\r\n @if (subtitle()) {\r\n <p class=\"SurfaceCard__Subtitle\">{{ subtitle() }}</p>\r\n }\r\n </div>\r\n }\r\n <div class=\"SurfaceCard__Body\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n `,\r\n styleUrl: './surface-card.component.sass',\r\n})\r\nexport class SurfaceCardComponent {\r\n readonly title = input<string | null>(null);\r\n readonly subtitle = input<string | null>(null);\r\n readonly compact = input(false, { transform: booleanAttribute });\r\n}\r\n","import { Component, computed, input } from '@angular/core';\r\nimport { LucideIconComponent } from '@xosue-utils/actions';\r\n\r\n@Component({\r\n selector: 'avatar',\r\n standalone: true,\r\n imports: [LucideIconComponent],\r\n template: `\r\n <span\r\n class=\"Avatar\"\r\n [style.width.px]=\"size()\"\r\n [style.height.px]=\"size()\"\r\n [attr.aria-label]=\"name() || 'Avatar'\"\r\n >\r\n @if (src() && !broken) {\r\n <img class=\"Avatar__Img\" [src]=\"src()!\" alt=\"\" (error)=\"broken = true\" />\r\n } @else if (initials()) {\r\n <span class=\"Avatar__Initials\">{{ initials() }}</span>\r\n } @else {\r\n <lucide-icon [name]=\"icon()\" [size]=\"iconSize()\"></lucide-icon>\r\n }\r\n </span>\r\n `,\r\n styleUrl: './avatar.component.sass',\r\n})\r\nexport class AvatarComponent {\r\n readonly src = input<string | null>(null);\r\n readonly name = input<string | null>(null);\r\n readonly icon = input('user');\r\n readonly size = input(32);\r\n\r\n broken = false;\r\n\r\n readonly initials = computed(() => {\r\n const parts = (this.name() ?? '').trim().split(/\\s+/).filter(Boolean);\r\n if (!parts.length) return '';\r\n const first = parts[0][0] ?? '';\r\n const second = parts.length > 1 ? parts[parts.length - 1][0] ?? '' : '';\r\n return (first + second).toUpperCase();\r\n });\r\n\r\n iconSize(): number {\r\n return Math.max(12, Math.round(this.size() * 0.44));\r\n }\r\n}\r\n","import { booleanAttribute, Component, input, output } from '@angular/core';\r\nimport { LucideIconComponent } from '@xosue-utils/actions';\r\nimport { AvatarComponent } from '../avatar/avatar.component';\r\n\r\n@Component({\r\n selector: 'list-row',\r\n standalone: true,\r\n imports: [LucideIconComponent, AvatarComponent],\r\n template: `\r\n <div class=\"ListRow\" [class.ListRow--disabled]=\"disabled()\">\r\n <button\r\n type=\"button\"\r\n class=\"ListRow__Main\"\r\n [disabled]=\"disabled()\"\r\n (click)=\"clicked.emit($event)\"\r\n >\r\n @if (avatarSrc() || avatarName()) {\r\n <avatar [src]=\"avatarSrc()\" [name]=\"avatarName()\" [size]=\"32\"></avatar>\r\n } @else if (icon()) {\r\n <span class=\"ListRow__Icon\">\r\n <lucide-icon [name]=\"icon()!\" [size]=\"14\"></lucide-icon>\r\n </span>\r\n }\r\n <span class=\"ListRow__Text\">\r\n <span class=\"ListRow__Title\">{{ title() }}</span>\r\n @if (subtitle()) {\r\n <span class=\"ListRow__Subtitle\">{{ subtitle() }}</span>\r\n }\r\n </span>\r\n </button>\r\n <span class=\"ListRow__Trail\">\r\n <ng-content></ng-content>\r\n @if (chevron()) {\r\n <lucide-icon name=\"chevron-right\" [size]=\"14\"></lucide-icon>\r\n }\r\n </span>\r\n </div>\r\n `,\r\n styleUrl: './list-row.component.sass',\r\n})\r\nexport class ListRowComponent {\r\n readonly title = input.required<string>();\r\n readonly subtitle = input<string | null>(null);\r\n readonly icon = input<string | null>(null);\r\n readonly avatarSrc = input<string | null>(null);\r\n readonly avatarName = input<string | null>(null);\r\n readonly chevron = input(false, { transform: booleanAttribute });\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n readonly clicked = output<MouseEvent>();\r\n}\r\n","import { Component, input, output } from '@angular/core';\r\nimport { EmptyStateComponent } from '../empty-state/empty-state.component';\r\nimport { SkeletonComponent } from '../skeleton/skeleton.component';\r\n\r\nexport interface DataTableColumn {\r\n key: string;\r\n label: string;\r\n width?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'data-table',\r\n standalone: true,\r\n imports: [EmptyStateComponent, SkeletonComponent],\r\n template: `\r\n <div class=\"DataTable\" role=\"table\">\r\n <div class=\"DataTable__Head\" role=\"row\" [style.grid-template-columns]=\"gridCols()\">\r\n @for (col of columns(); track col.key) {\r\n <span class=\"DataTable__Cell DataTable__Cell--head\" role=\"columnheader\" [style.width]=\"col.width || null\">\r\n {{ col.label }}\r\n </span>\r\n }\r\n </div>\r\n\r\n @if (loading()) {\r\n <div class=\"DataTable__Body\">\r\n @for (row of [0, 1, 2]; track row) {\r\n <skeleton [lines]=\"1\"></skeleton>\r\n }\r\n </div>\r\n } @else if (!rows().length) {\r\n <empty-state [title]=\"emptyTitle()\" [message]=\"emptyMessage()\" [icon]=\"emptyIcon()\"></empty-state>\r\n } @else {\r\n <div class=\"DataTable__Body\">\r\n @for (row of rows(); track $index) {\r\n <button type=\"button\" class=\"DataTable__Row\" role=\"row\" [style.grid-template-columns]=\"gridCols()\" (click)=\"rowClick.emit(row)\">\r\n @for (col of columns(); track col.key) {\r\n <span class=\"DataTable__Cell\" role=\"cell\" [style.width]=\"col.width || null\">\r\n {{ cell(row, col.key) }}\r\n </span>\r\n }\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n `,\r\n styleUrl: './data-table.component.sass',\r\n})\r\nexport class DataTableComponent {\r\n readonly columns = input<DataTableColumn[]>([]);\r\n readonly rows = input<Record<string, unknown>[]>([]);\r\n readonly loading = input(false);\r\n readonly emptyTitle = input('Sin filas');\r\n readonly emptyMessage = input<string | null>('No hay datos para mostrar.');\r\n readonly emptyIcon = input<string | null>('table');\r\n\r\n readonly rowClick = output<Record<string, unknown>>();\r\n\r\n gridCols(): string {\r\n return `repeat(${Math.max(1, this.columns().length)}, minmax(0, 1fr))`;\r\n }\r\n\r\n cell(row: Record<string, unknown>, key: string): string {\r\n const value = row[key];\r\n if (value == null || value === '') return '—';\r\n return String(value);\r\n }\r\n}\r\n","import { booleanAttribute, Component, forwardRef, inject, input, model } from '@angular/core';\r\nimport { LucideIconComponent } from '@xosue-utils/actions';\r\nimport { AccordionComponent } from './accordion.component';\r\n\r\n@Component({\r\n selector: 'accordion-item',\r\n standalone: true,\r\n imports: [LucideIconComponent],\r\n template: `\r\n <div class=\"AccordionItem\" [class.AccordionItem--open]=\"open()\">\r\n <button type=\"button\" class=\"AccordionItem__Head\" [disabled]=\"disabled()\" (click)=\"toggle()\">\r\n @if (icon()) {\r\n <lucide-icon [name]=\"icon()!\" [size]=\"14\"></lucide-icon>\r\n }\r\n <span class=\"AccordionItem__Title\">{{ title() }}</span>\r\n <lucide-icon name=\"chevron-down\" [size]=\"14\" class=\"AccordionItem__Chevron\"></lucide-icon>\r\n </button>\r\n @if (open()) {\r\n <div class=\"AccordionItem__Body\">\r\n <ng-content></ng-content>\r\n </div>\r\n }\r\n </div>\r\n `,\r\n styleUrl: './accordion-item.component.sass',\r\n})\r\nexport class AccordionItemComponent {\r\n readonly title = input.required<string>();\r\n readonly icon = input<string | null>(null);\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly open = model(false);\r\n\r\n private readonly group = inject(forwardRef(() => AccordionComponent), { optional: true, skipSelf: true });\r\n\r\n toggle(): void {\r\n if (this.disabled()) return;\r\n this.open.set(!this.open());\r\n if (this.open()) this.group?.itemOpened(this);\r\n }\r\n}\r\n","import { booleanAttribute, Component, contentChildren, input } from '@angular/core';\r\nimport { AccordionItemComponent } from './accordion-item.component';\r\n\r\n@Component({\r\n selector: 'accordion',\r\n standalone: true,\r\n template: `\r\n <div class=\"Accordion\">\r\n <ng-content></ng-content>\r\n </div>\r\n `,\r\n styleUrl: './accordion.component.sass',\r\n})\r\nexport class AccordionComponent {\r\n readonly multiple = input(false, { transform: booleanAttribute });\r\n private readonly items = contentChildren(AccordionItemComponent);\r\n\r\n itemOpened(opened: AccordionItemComponent): void {\r\n if (this.multiple()) return;\r\n for (const item of this.items()) {\r\n if (item !== opened) item.open.set(false);\r\n }\r\n }\r\n}\r\n","import { booleanAttribute, Component, input, model } from '@angular/core';\r\n\r\nexport interface StepperStep {\r\n label: string;\r\n description?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'stepper',\r\n standalone: true,\r\n template: `\r\n <ol class=\"Stepper\" [attr.aria-label]=\"label()\">\r\n @for (step of steps(); track $index) {\r\n <li\r\n class=\"Stepper__Item\"\r\n [class.Stepper__Item--done]=\"$index < index()\"\r\n [class.Stepper__Item--current]=\"$index === index()\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"Stepper__Btn\"\r\n [disabled]=\"!clickable() || $index === index()\"\r\n (click)=\"select($index)\"\r\n >\r\n <span class=\"Stepper__Index\">{{ $index + 1 }}</span>\r\n <span class=\"Stepper__Text\">\r\n <span class=\"Stepper__Label\">{{ step.label }}</span>\r\n @if (step.description) {\r\n <span class=\"Stepper__Desc\">{{ step.description }}</span>\r\n }\r\n </span>\r\n </button>\r\n </li>\r\n }\r\n </ol>\r\n `,\r\n styleUrl: './stepper.component.sass',\r\n})\r\nexport class StepperComponent {\r\n readonly steps = input<StepperStep[]>([]);\r\n readonly index = model(0);\r\n readonly clickable = input(false, { transform: booleanAttribute });\r\n readonly label = input('Pasos');\r\n\r\n select(next: number): void {\r\n if (!this.clickable() || next === this.index()) return;\r\n this.index.set(next);\r\n }\r\n}\r\n","import { Component, input, output } from '@angular/core';\r\nimport { RouterLink } from '@angular/router';\r\nimport { LucideIconComponent } from '@xosue-utils/actions';\r\n\r\nexport interface BreadcrumbItem {\r\n label: string;\r\n href?: string;\r\n routerLink?: string | string[];\r\n}\r\n\r\n@Component({\r\n selector: 'breadcrumbs',\r\n standalone: true,\r\n imports: [LucideIconComponent, RouterLink],\r\n template: `\r\n <nav class=\"Breadcrumbs\" [attr.aria-label]=\"label()\">\r\n <ol class=\"Breadcrumbs__List\">\r\n @for (item of items(); track $index) {\r\n @if ($index > 0) {\r\n <li class=\"Breadcrumbs__Sep\" aria-hidden=\"true\">\r\n <lucide-icon name=\"chevron-right\" [size]=\"14\"></lucide-icon>\r\n </li>\r\n }\r\n <li class=\"Breadcrumbs__Item\">\r\n @if ($last) {\r\n <span class=\"Breadcrumbs__Current\">{{ item.label }}</span>\r\n } @else if (item.routerLink) {\r\n <a class=\"Breadcrumbs__Link\" [routerLink]=\"item.routerLink\" (click)=\"itemClick.emit(item)\">{{ item.label }}</a>\r\n } @else if (item.href) {\r\n <a class=\"Breadcrumbs__Link\" [href]=\"item.href\" (click)=\"itemClick.emit(item)\">{{ item.label }}</a>\r\n } @else {\r\n <button type=\"button\" class=\"Breadcrumbs__Link\" (click)=\"itemClick.emit(item)\">{{ item.label }}</button>\r\n }\r\n </li>\r\n }\r\n </ol>\r\n </nav>\r\n `,\r\n styleUrl: './breadcrumbs.component.sass',\r\n})\r\nexport class BreadcrumbsComponent {\r\n readonly items = input<BreadcrumbItem[]>([]);\r\n readonly label = input('Ruta');\r\n\r\n readonly itemClick = output<BreadcrumbItem>();\r\n}\r\n","import { booleanAttribute, Component, input, model } from '@angular/core';\r\nimport { LucideIconComponent } from '@xosue-utils/actions';\r\n\r\nexport interface TabItem {\r\n value: string;\r\n label: string;\r\n icon?: string;\r\n disabled?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'tabs',\r\n standalone: true,\r\n imports: [LucideIconComponent],\r\n template: `\r\n <div class=\"Tabs\">\r\n <div class=\"Tabs__Bar\" role=\"tablist\" [attr.aria-label]=\"label()\">\r\n @for (item of items(); track item.value) {\r\n <button\r\n type=\"button\"\r\n class=\"Tabs__Tab\"\r\n role=\"tab\"\r\n [class.Tabs__Tab--on]=\"item.value === value()\"\r\n [disabled]=\"item.disabled === true || disabled()\"\r\n [attr.aria-selected]=\"item.value === value()\"\r\n (click)=\"select(item)\"\r\n >\r\n @if (item.icon) {\r\n <lucide-icon [name]=\"item.icon\" [size]=\"14\"></lucide-icon>\r\n }\r\n <span>{{ item.label }}</span>\r\n </button>\r\n }\r\n </div>\r\n <div class=\"Tabs__Panel\" role=\"tabpanel\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n `,\r\n styleUrl: './tabs.component.sass',\r\n})\r\nexport class TabsComponent {\r\n readonly items = input<TabItem[]>([]);\r\n readonly value = model('');\r\n readonly label = input('Secciones');\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n select(item: TabItem): void {\r\n if (item.disabled || this.disabled() || item.value === this.value()) return;\r\n this.value.set(item.value);\r\n }\r\n}\r\n","import { Component, input } from '@angular/core';\r\nimport { LucideIconComponent } from '@xosue-utils/actions';\r\n\r\nexport type NoticeTone = 'info' | 'success' | 'warning' | 'danger';\r\n\r\n@Component({\r\n selector: 'notice',\r\n standalone: true,\r\n imports: [LucideIconComponent],\r\n template: `\r\n <div\r\n class=\"Notice\"\r\n [class.Notice--info]=\"tone() === 'info'\"\r\n [class.Notice--success]=\"tone() === 'success'\"\r\n [class.Notice--warning]=\"tone() === 'warning'\"\r\n [class.Notice--danger]=\"tone() === 'danger'\"\r\n role=\"status\"\r\n >\r\n <span class=\"Notice__Icon\">\r\n <lucide-icon [name]=\"resolvedIcon()\" [size]=\"14\"></lucide-icon>\r\n </span>\r\n <div class=\"Notice__Body\">\r\n @if (title()) {\r\n <p class=\"Notice__Title\">{{ title() }}</p>\r\n }\r\n @if (message()) {\r\n <p class=\"Notice__Message\">{{ message() }}</p>\r\n }\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n `,\r\n styleUrl: './notice.component.sass',\r\n})\r\nexport class NoticeComponent {\r\n readonly tone = input<NoticeTone>('info');\r\n readonly title = input<string | null>(null);\r\n readonly message = input<string | null>(null);\r\n readonly icon = input<string | null>(null);\r\n\r\n resolvedIcon(): string {\r\n if (this.icon()) return this.icon()!;\r\n switch (this.tone()) {\r\n case 'success':\r\n return 'check-circle';\r\n case 'warning':\r\n return 'triangle-alert';\r\n case 'danger':\r\n return 'circle-alert';\r\n default:\r\n return 'info';\r\n }\r\n }\r\n}\r\n","/*\r\n * Public API Surface of @xosue-utils/helpers\r\n */\r\n\r\nexport * from './lib/index';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class AccordionItemComponent {
3
+ readonly title: import("@angular/core").InputSignal<string>;
4
+ readonly icon: import("@angular/core").InputSignal<string>;
5
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
6
+ readonly open: import("@angular/core").ModelSignal<boolean>;
7
+ private readonly group;
8
+ toggle(): void;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<AccordionItemComponent, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<AccordionItemComponent, "accordion-item", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, never, ["*"], true, never>;
11
+ }
@@ -0,0 +1,9 @@
1
+ import { AccordionItemComponent } from './accordion-item.component';
2
+ import * as i0 from "@angular/core";
3
+ export declare class AccordionComponent {
4
+ readonly multiple: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
5
+ private readonly items;
6
+ itemOpened(opened: AccordionItemComponent): void;
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<AccordionComponent, never>;
8
+ static ɵcmp: i0.ɵɵComponentDeclaration<AccordionComponent, "accordion", never, { "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; }, {}, ["items"], ["*"], true, never>;
9
+ }
@@ -0,0 +1,12 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class AvatarComponent {
3
+ readonly src: import("@angular/core").InputSignal<string>;
4
+ readonly name: import("@angular/core").InputSignal<string>;
5
+ readonly icon: import("@angular/core").InputSignal<string>;
6
+ readonly size: import("@angular/core").InputSignal<number>;
7
+ broken: boolean;
8
+ readonly initials: import("@angular/core").Signal<string>;
9
+ iconSize(): number;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<AvatarComponent, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<AvatarComponent, "avatar", never, { "src": { "alias": "src"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
12
+ }
@@ -0,0 +1,13 @@
1
+ import * as i0 from "@angular/core";
2
+ export interface BreadcrumbItem {
3
+ label: string;
4
+ href?: string;
5
+ routerLink?: string | string[];
6
+ }
7
+ export declare class BreadcrumbsComponent {
8
+ readonly items: import("@angular/core").InputSignal<BreadcrumbItem[]>;
9
+ readonly label: import("@angular/core").InputSignal<string>;
10
+ readonly itemClick: import("@angular/core").OutputEmitterRef<BreadcrumbItem>;
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<BreadcrumbsComponent, never>;
12
+ static ɵcmp: i0.ɵɵComponentDeclaration<BreadcrumbsComponent, "breadcrumbs", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; }, never, never, true, never>;
13
+ }
@@ -0,0 +1,19 @@
1
+ import * as i0 from "@angular/core";
2
+ export interface DataTableColumn {
3
+ key: string;
4
+ label: string;
5
+ width?: string;
6
+ }
7
+ export declare class DataTableComponent {
8
+ readonly columns: import("@angular/core").InputSignal<DataTableColumn[]>;
9
+ readonly rows: import("@angular/core").InputSignal<Record<string, unknown>[]>;
10
+ readonly loading: import("@angular/core").InputSignal<boolean>;
11
+ readonly emptyTitle: import("@angular/core").InputSignal<string>;
12
+ readonly emptyMessage: import("@angular/core").InputSignal<string>;
13
+ readonly emptyIcon: import("@angular/core").InputSignal<string>;
14
+ readonly rowClick: import("@angular/core").OutputEmitterRef<Record<string, unknown>>;
15
+ gridCols(): string;
16
+ cell(row: Record<string, unknown>, key: string): string;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<DataTableComponent, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<DataTableComponent, "data-table", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "emptyTitle": { "alias": "emptyTitle"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "emptyIcon": { "alias": "emptyIcon"; "required": false; "isSignal": true; }; }, { "rowClick": "rowClick"; }, never, never, true, never>;
19
+ }
package/lib/index.d.ts CHANGED
@@ -3,3 +3,20 @@ export { EmptyStateComponent } from './empty-state/empty-state.component';
3
3
  export { LoadErrorComponent } from './load-error/load-error.component';
4
4
  export { SectionHeaderComponent } from './section-header/section-header.component';
5
5
  export { KeyValueListComponent, type KeyValueItem, } from './key-value-list/key-value-list.component';
6
+ export { SkeletonComponent } from './skeleton/skeleton.component';
7
+ export type { SkeletonVariant } from './skeleton/skeleton.component';
8
+ export { SurfaceCardComponent } from './surface-card/surface-card.component';
9
+ export { AvatarComponent } from './avatar/avatar.component';
10
+ export { ListRowComponent } from './list-row/list-row.component';
11
+ export { DataTableComponent } from './data-table/data-table.component';
12
+ export type { DataTableColumn } from './data-table/data-table.component';
13
+ export { AccordionComponent } from './accordion/accordion.component';
14
+ export { AccordionItemComponent } from './accordion/accordion-item.component';
15
+ export { StepperComponent } from './stepper/stepper.component';
16
+ export type { StepperStep } from './stepper/stepper.component';
17
+ export { BreadcrumbsComponent } from './breadcrumbs/breadcrumbs.component';
18
+ export type { BreadcrumbItem } from './breadcrumbs/breadcrumbs.component';
19
+ export { TabsComponent } from './tabs/tabs.component';
20
+ export type { TabItem } from './tabs/tabs.component';
21
+ export { NoticeComponent } from './notice/notice.component';
22
+ export type { NoticeTone } from './notice/notice.component';
@@ -0,0 +1,13 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class ListRowComponent {
3
+ readonly title: import("@angular/core").InputSignal<string>;
4
+ readonly subtitle: import("@angular/core").InputSignal<string>;
5
+ readonly icon: import("@angular/core").InputSignal<string>;
6
+ readonly avatarSrc: import("@angular/core").InputSignal<string>;
7
+ readonly avatarName: import("@angular/core").InputSignal<string>;
8
+ readonly chevron: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
9
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
10
+ readonly clicked: import("@angular/core").OutputEmitterRef<MouseEvent>;
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<ListRowComponent, never>;
12
+ static ɵcmp: i0.ɵɵComponentDeclaration<ListRowComponent, "list-row", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "avatarSrc": { "alias": "avatarSrc"; "required": false; "isSignal": true; }; "avatarName": { "alias": "avatarName"; "required": false; "isSignal": true; }; "chevron": { "alias": "chevron"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, ["*"], true, never>;
13
+ }
@@ -0,0 +1,11 @@
1
+ import * as i0 from "@angular/core";
2
+ export type NoticeTone = 'info' | 'success' | 'warning' | 'danger';
3
+ export declare class NoticeComponent {
4
+ readonly tone: import("@angular/core").InputSignal<NoticeTone>;
5
+ readonly title: import("@angular/core").InputSignal<string>;
6
+ readonly message: import("@angular/core").InputSignal<string>;
7
+ readonly icon: import("@angular/core").InputSignal<string>;
8
+ resolvedIcon(): string;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<NoticeComponent, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<NoticeComponent, "notice", never, { "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
11
+ }
@@ -0,0 +1,13 @@
1
+ import * as i0 from "@angular/core";
2
+ export type SkeletonVariant = 'line' | 'rect' | 'circle';
3
+ export declare class SkeletonComponent {
4
+ readonly variant: import("@angular/core").InputSignal<SkeletonVariant>;
5
+ readonly lines: import("@angular/core").InputSignal<number>;
6
+ readonly width: import("@angular/core").InputSignal<string>;
7
+ readonly height: import("@angular/core").InputSignal<string>;
8
+ readonly pulse: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
9
+ get lineIndexes(): number[];
10
+ lineWidth(index: number): string;
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<SkeletonComponent, never>;
12
+ static ɵcmp: i0.ɵɵComponentDeclaration<SkeletonComponent, "skeleton", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "lines": { "alias": "lines"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "pulse": { "alias": "pulse"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
13
+ }
@@ -0,0 +1,14 @@
1
+ import * as i0 from "@angular/core";
2
+ export interface StepperStep {
3
+ label: string;
4
+ description?: string;
5
+ }
6
+ export declare class StepperComponent {
7
+ readonly steps: import("@angular/core").InputSignal<StepperStep[]>;
8
+ readonly index: import("@angular/core").ModelSignal<number>;
9
+ readonly clickable: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
10
+ readonly label: import("@angular/core").InputSignal<string>;
11
+ select(next: number): void;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<StepperComponent, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<StepperComponent, "stepper", never, { "steps": { "alias": "steps"; "required": false; "isSignal": true; }; "index": { "alias": "index"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "index": "indexChange"; }, never, never, true, never>;
14
+ }
@@ -0,0 +1,8 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class SurfaceCardComponent {
3
+ readonly title: import("@angular/core").InputSignal<string>;
4
+ readonly subtitle: import("@angular/core").InputSignal<string>;
5
+ readonly compact: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<SurfaceCardComponent, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<SurfaceCardComponent, "surface-card", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
8
+ }
@@ -0,0 +1,16 @@
1
+ import * as i0 from "@angular/core";
2
+ export interface TabItem {
3
+ value: string;
4
+ label: string;
5
+ icon?: string;
6
+ disabled?: boolean;
7
+ }
8
+ export declare class TabsComponent {
9
+ readonly items: import("@angular/core").InputSignal<TabItem[]>;
10
+ readonly value: import("@angular/core").ModelSignal<string>;
11
+ readonly label: import("@angular/core").InputSignal<string>;
12
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
13
+ select(item: TabItem): void;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<TabsComponent, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<TabsComponent, "tabs", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, ["*"], true, never>;
16
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xosue-utils/helpers",
3
- "version": "0.2.0",
3
+ "version": "0.2.3",
4
4
  "description": "Angular standalone helper UI (pagination, empty-state, load-error, section-header, key-value) with Cupertino aesthetic.",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,
@@ -17,9 +17,9 @@
17
17
  "xosue-utils"
18
18
  ],
19
19
  "peerDependencies": {
20
- "@angular/common": ">=19.0.0 <21.0.0",
21
- "@angular/core": ">=19.0.0 <21.0.0",
22
- "@angular/router": ">=19.0.0 <21.0.0",
20
+ "@angular/common": ">=19.0.0 <22.0.0",
21
+ "@angular/core": ">=19.0.0 <22.0.0",
22
+ "@angular/router": ">=19.0.0 <22.0.0",
23
23
  "@lucide/angular": ">=0.500.0 <2.0.0",
24
24
  "@xosue-utils/actions": ">=0.2.0 <1.0.0",
25
25
  "rxjs": ">=7.8.0 <8.0.0"