@juligc99/loro-ui 0.0.18 → 0.0.19

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":"juligc99-loro-ui.mjs","sources":["../../../projects/loro-ui/src/lib/components/layout/footer/constants/loro-footer.constants.ts","../../../projects/loro-ui/src/lib/components/layout/footer/loro-footer.ts","../../../projects/loro-ui/src/lib/components/layout/footer/loro-footer.html","../../../projects/loro-ui/src/lib/assets/loro-assets.generated.ts","../../../projects/loro-ui/src/lib/components/resources/loro-icon/loro-icon.ts","../../../projects/loro-ui/src/lib/components/resources/loro-icon/loro-icon.html","../../../projects/loro-ui/src/lib/components/actions/loro-accordion/constants/loro-accordion.constants.ts","../../../projects/loro-ui/src/lib/components/actions/loro-accordion/loro-accordion.ts","../../../projects/loro-ui/src/lib/components/actions/loro-accordion/loro-accordion.html","../../../projects/loro-ui/src/lib/services/loro-haptics.service.ts","../../../projects/loro-ui/src/lib/components/actions/loro-button/constants/loro-button.constants.ts","../../../projects/loro-ui/src/lib/components/actions/loro-button/loro-button.ts","../../../projects/loro-ui/src/lib/components/actions/loro-button/loro-button.html","../../../projects/loro-ui/src/lib/components/resources/loro-image/loro-image.ts","../../../projects/loro-ui/src/lib/components/resources/loro-image/loro-image.html","../../../projects/loro-ui/src/lib/components/layout/loro-nav/constants/loro-nav.constants.ts","../../../projects/loro-ui/src/lib/components/layout/loro-nav/loro-nav.ts","../../../projects/loro-ui/src/lib/components/layout/loro-nav/loro-nav.html","../../../projects/loro-ui/src/lib/components/actions/loro-badge/constants/loro-badge.constants.ts","../../../projects/loro-ui/src/lib/components/actions/loro-badge/loro-badge.ts","../../../projects/loro-ui/src/lib/components/actions/loro-badge/loro-badge.html","../../../projects/loro-ui/src/lib/components/feedback/loro-alert/constants/loro-alert.constants.ts","../../../projects/loro-ui/src/lib/components/feedback/loro-alert/loro-alert.ts","../../../projects/loro-ui/src/lib/components/feedback/loro-alert/loro-alert.html","../../../projects/loro-ui/src/lib/components/feedback/loro-notification/loro-notification.ts","../../../projects/loro-ui/src/lib/components/feedback/loro-notification/loro-notification.html","../../../projects/loro-ui/src/lib/components/feedback/loro-notification-row/loro-notification-row.ts","../../../projects/loro-ui/src/lib/components/feedback/loro-notification-row/loro-notification-row.html","../../../projects/loro-ui/src/lib/components/feedback/loro-notification-panel/loro-notification-panel.ts","../../../projects/loro-ui/src/lib/components/feedback/loro-notification-panel/loro-notification-panel.html","../../../projects/loro-ui/src/lib/components/feedback/loro-spinner/loro-spinner.ts","../../../projects/loro-ui/src/lib/components/feedback/loro-spinner/loro-spinner.html","../../../projects/loro-ui/src/lib/components/feedback/loro-toast/loro-toast.ts","../../../projects/loro-ui/src/lib/components/feedback/loro-toast/loro-toast.html","../../../projects/loro-ui/src/lib/components/forms/loro-checkbox/loro-checkbox.ts","../../../projects/loro-ui/src/lib/components/forms/loro-checkbox/loro-checkbox.html","../../../projects/loro-ui/src/lib/components/forms/loro-dropdown/loro-dropdown.ts","../../../projects/loro-ui/src/lib/components/forms/loro-dropdown/loro-dropdown.html","../../../projects/loro-ui/src/lib/components/forms/loro-filter-chip/loro-filter-chip.ts","../../../projects/loro-ui/src/lib/components/forms/loro-filter-chip/loro-filter-chip.html","../../../projects/loro-ui/src/lib/components/forms/loro-input/loro-input.ts","../../../projects/loro-ui/src/lib/components/forms/loro-input/loro-input.html","../../../projects/loro-ui/src/lib/components/forms/loro-radio/loro-radio.ts","../../../projects/loro-ui/src/lib/components/forms/loro-radio/loro-radio.html","../../../projects/loro-ui/src/lib/components/forms/loro-segmented-control/loro-segmented-control.ts","../../../projects/loro-ui/src/lib/components/forms/loro-segmented-control/loro-segmented-control.html","../../../projects/loro-ui/src/lib/components/forms/loro-select/loro-select.ts","../../../projects/loro-ui/src/lib/components/forms/loro-select/loro-select.html","../../../projects/loro-ui/src/lib/components/forms/loro-text-area/loro-text-area.ts","../../../projects/loro-ui/src/lib/components/forms/loro-text-area/loro-text-area.html","../../../projects/loro-ui/src/lib/components/forms/loro-toggle/constants/loro-toggle.constants.ts","../../../projects/loro-ui/src/lib/components/forms/loro-toggle/loro-toggle.ts","../../../projects/loro-ui/src/lib/components/forms/loro-toggle/loro-toggle.html","../../../projects/loro-ui/src/lib/components/cards/selector/loro-card-selector.constants.ts","../../../projects/loro-ui/src/lib/components/cards/selector/loro-card-selector.ts","../../../projects/loro-ui/src/lib/components/cards/selector/loro-card-selector.html","../../../projects/loro-ui/src/lib/components/forms/loro-upload/constants/loro-upload.constants.ts","../../../projects/loro-ui/src/lib/utils/loro-file.util.ts","../../../projects/loro-ui/src/lib/utils/loro-file-format.util.ts","../../../projects/loro-ui/src/lib/components/forms/loro-upload/loro-upload.ts","../../../projects/loro-ui/src/lib/components/forms/loro-upload/loro-upload.html","../../../projects/loro-ui/src/lib/services/loro-modal-swipe.service.ts","../../../projects/loro-ui/src/lib/components/overlays/loro-modal/loro-modal.ts","../../../projects/loro-ui/src/lib/components/overlays/loro-modal/loro-modal.html","../../../projects/loro-ui/src/lib/components/layout/header/loro-header.ts","../../../projects/loro-ui/src/lib/components/layout/header/loro-header.html","../../../projects/loro-ui/src/juligc99-loro-ui.ts"],"sourcesContent":["import type { LoroFooterLink } from '../models/loro-footer.model';\n\nexport const LORO_FOOTER_DEFAULT_TITLE = '© 2026 Al Loro App. Todos los derechos reservados.';\n\nexport const LORO_FOOTER_DEFAULT_LINKS: LoroFooterLink[] = [\n { label: 'Términos', href: '#' },\n { label: 'Privacidad', href: '#' },\n { label: 'Soporte', href: '#' },\n];\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { LORO_FOOTER_DEFAULT_LINKS, LORO_FOOTER_DEFAULT_TITLE } from './constants/loro-footer.constants';\nimport type { LoroFooterLink } from './models/loro-footer.model';\n\n@Component({\n selector: 'loro-footer',\n templateUrl: './loro-footer.html',\n styleUrl: './loro-footer.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroFooter {\n /** Main footer copy shown before the link list. */\n title = input<string>(LORO_FOOTER_DEFAULT_TITLE);\n /** Inline footer navigation links. */\n links = input<LoroFooterLink[]>(LORO_FOOTER_DEFAULT_LINKS);\n}\n","<footer class=\"loro-footer\">\n <div class=\"loro-footer__meta\">\n <span class=\"loro-footer__dot\" aria-hidden=\"true\"></span>\n <p class=\"loro-footer__title\">{{ title() }}</p>\n </div>\n\n @if (links().length > 0) {\n <nav class=\"loro-footer__links\" aria-label=\"Footer links\">\n @for (link of links(); track link.href) {\n <a class=\"loro-footer__link\" [href]=\"link.href\">{{ link.label }}</a>\n }\n </nav>\n }\n</footer>\n","/* This file is generated by projects/loro-ui/scripts/generate-asset-manifest.mjs. */\n\nexport type LoroAssetLayer =\n | 'Action'\n | 'Brand'\n | 'Direction'\n | 'Home'\n | 'Illustrations'\n | 'Navigation'\n | 'Product'\n | 'Products'\n | 'Screens'\n | 'Social'\n | 'Status'\n | 'Stores';\n\nexport type LoroIconAsset = {\n readonly name: string;\n readonly path: string;\n readonly layer: LoroAssetLayer;\n readonly fileName: string;\n};\n\nexport type LoroImageAsset = {\n readonly name: string;\n readonly path: string;\n readonly layer: LoroAssetLayer;\n readonly fileName: string;\n};\n\nexport const LORO_ICON_ASSETS = [\n {\n \"name\": \"icon-apple\",\n \"path\": \"assets/loro-ui/icons/apple.svg\",\n \"layer\": \"Social\",\n \"fileName\": \"apple.svg\"\n },\n {\n \"name\": \"icon-arrow-right\",\n \"path\": \"assets/loro-ui/icons/arrow-right.svg\",\n \"layer\": \"Direction\",\n \"fileName\": \"arrow-right.svg\"\n },\n {\n \"name\": \"icon-auto\",\n \"path\": \"assets/loro-ui/icons/auto.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"auto.svg\"\n },\n {\n \"name\": \"icon-back\",\n \"path\": \"assets/loro-ui/icons/back.svg\",\n \"layer\": \"Direction\",\n \"fileName\": \"back.svg\"\n },\n {\n \"name\": \"icon-bag\",\n \"path\": \"assets/loro-ui/icons/bag.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"bag.svg\"\n },\n {\n \"name\": \"icon-barcode\",\n \"path\": \"assets/loro-ui/icons/barcode.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"barcode.svg\"\n },\n {\n \"name\": \"icon-bell\",\n \"path\": \"assets/loro-ui/icons/bell.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"bell.svg\"\n },\n {\n \"name\": \"icon-bottle\",\n \"path\": \"assets/loro-ui/icons/bottle.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"bottle.svg\"\n },\n {\n \"name\": \"icon-bulb\",\n \"path\": \"assets/loro-ui/icons/bulb.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"bulb.svg\"\n },\n {\n \"name\": \"icon-calendar\",\n \"path\": \"assets/loro-ui/icons/calendar.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"calendar.svg\"\n },\n {\n \"name\": \"icon-camera\",\n \"path\": \"assets/loro-ui/icons/camera.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"camera.svg\"\n },\n {\n \"name\": \"icon-cart\",\n \"path\": \"assets/loro-ui/icons/cart.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"cart.svg\"\n },\n {\n \"name\": \"icon-chart-bar\",\n \"path\": \"assets/loro-ui/icons/chart-bar.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"chart-bar.svg\"\n },\n {\n \"name\": \"icon-chat\",\n \"path\": \"assets/loro-ui/icons/chat.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"chat.svg\"\n },\n {\n \"name\": \"icon-check\",\n \"path\": \"assets/loro-ui/icons/check.svg\",\n \"layer\": \"Status\",\n \"fileName\": \"check.svg\"\n },\n {\n \"name\": \"icon-checkbox-empty\",\n \"path\": \"assets/loro-ui/icons/checkbox-empty.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"checkbox-empty.svg\"\n },\n {\n \"name\": \"icon-chevron-down\",\n \"path\": \"assets/loro-ui/icons/chevron-down.svg\",\n \"layer\": \"Direction\",\n \"fileName\": \"chevron-down.svg\"\n },\n {\n \"name\": \"icon-chevron-right\",\n \"path\": \"assets/loro-ui/icons/chevron-right.svg\",\n \"layer\": \"Direction\",\n \"fileName\": \"chevron-right.svg\"\n },\n {\n \"name\": \"icon-chevron-up\",\n \"path\": \"assets/loro-ui/icons/chevron-up.svg\",\n \"layer\": \"Direction\",\n \"fileName\": \"chevron-up.svg\"\n },\n {\n \"name\": \"icon-clock\",\n \"path\": \"assets/loro-ui/icons/clock.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"clock.svg\"\n },\n {\n \"name\": \"icon-download\",\n \"path\": \"assets/loro-ui/icons/download.svg\",\n \"layer\": \"Action\",\n \"fileName\": \"download.svg\"\n },\n {\n \"name\": \"icon-email\",\n \"path\": \"assets/loro-ui/icons/email.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"email.svg\"\n },\n {\n \"name\": \"icon-eye-off\",\n \"path\": \"assets/loro-ui/icons/eye-off.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"eye-off.svg\"\n },\n {\n \"name\": \"icon-eye\",\n \"path\": \"assets/loro-ui/icons/eye.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"eye.svg\"\n },\n {\n \"name\": \"icon-globe\",\n \"path\": \"assets/loro-ui/icons/globe.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"globe.svg\"\n },\n {\n \"name\": \"icon-google\",\n \"path\": \"assets/loro-ui/icons/google.svg\",\n \"layer\": \"Social\",\n \"fileName\": \"google.svg\"\n },\n {\n \"name\": \"icon-headset\",\n \"path\": \"assets/loro-ui/icons/headset.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"headset.svg\"\n },\n {\n \"name\": \"icon-help\",\n \"path\": \"assets/loro-ui/icons/help.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"help.svg\"\n },\n {\n \"name\": \"icon-home\",\n \"path\": \"assets/loro-ui/icons/home.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"home.svg\"\n },\n {\n \"name\": \"icon-info\",\n \"path\": \"assets/loro-ui/icons/info.svg\",\n \"layer\": \"Status\",\n \"fileName\": \"info.svg\"\n },\n {\n \"name\": \"icon-laptop\",\n \"path\": \"assets/loro-ui/icons/laptop.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"laptop.svg\"\n },\n {\n \"name\": \"icon-leaf\",\n \"path\": \"assets/loro-ui/icons/leaf.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"leaf.svg\"\n },\n {\n \"name\": \"icon-list\",\n \"path\": \"assets/loro-ui/icons/list.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"list.svg\"\n },\n {\n \"name\": \"icon-location\",\n \"path\": \"assets/loro-ui/icons/location.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"location.svg\"\n },\n {\n \"name\": \"icon-lock\",\n \"path\": \"assets/loro-ui/icons/lock.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"lock.svg\"\n },\n {\n \"name\": \"icon-logout\",\n \"path\": \"assets/loro-ui/icons/logout.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"logout.svg\"\n },\n {\n \"name\": \"icon-megaphone\",\n \"path\": \"assets/loro-ui/icons/megaphone.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"megaphone.svg\"\n },\n {\n \"name\": \"icon-moon\",\n \"path\": \"assets/loro-ui/icons/moon.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"moon.svg\"\n },\n {\n \"name\": \"icon-more-vertical\",\n \"path\": \"assets/loro-ui/icons/more-vertical.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"more-vertical.svg\"\n },\n {\n \"name\": \"icon-nav-compare\",\n \"path\": \"assets/loro-ui/icons/nav-compare.svg\",\n \"layer\": \"Navigation\",\n \"fileName\": \"nav-compare.svg\"\n },\n {\n \"name\": \"icon-nav-home\",\n \"path\": \"assets/loro-ui/icons/nav-home.svg\",\n \"layer\": \"Navigation\",\n \"fileName\": \"nav-home.svg\"\n },\n {\n \"name\": \"icon-nav-list\",\n \"path\": \"assets/loro-ui/icons/nav-list.svg\",\n \"layer\": \"Navigation\",\n \"fileName\": \"nav-list.svg\"\n },\n {\n \"name\": \"icon-nav-pantry\",\n \"path\": \"assets/loro-ui/icons/nav-pantry.svg\",\n \"layer\": \"Navigation\",\n \"fileName\": \"nav-pantry.svg\"\n },\n {\n \"name\": \"icon-pantry-stock\",\n \"path\": \"assets/loro-ui/icons/pantry-stock.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"pantry-stock.svg\"\n },\n {\n \"name\": \"icon-paperclip\",\n \"path\": \"assets/loro-ui/icons/paperclip.svg\",\n \"layer\": \"Action\",\n \"fileName\": \"paperclip.svg\"\n },\n {\n \"name\": \"icon-phone\",\n \"path\": \"assets/loro-ui/icons/phone.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"phone.svg\"\n },\n {\n \"name\": \"icon-plus-user\",\n \"path\": \"assets/loro-ui/icons/plus-user.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"plus-user.svg\"\n },\n {\n \"name\": \"icon-plus\",\n \"path\": \"assets/loro-ui/icons/plus.svg\",\n \"layer\": \"Action\",\n \"fileName\": \"plus.svg\"\n },\n {\n \"name\": \"icon-scanner\",\n \"path\": \"assets/loro-ui/icons/scanner.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"scanner.svg\"\n },\n {\n \"name\": \"icon-search\",\n \"path\": \"assets/loro-ui/icons/search.svg\",\n \"layer\": \"Action\",\n \"fileName\": \"search.svg\"\n },\n {\n \"name\": \"icon-send\",\n \"path\": \"assets/loro-ui/icons/send.svg\",\n \"layer\": \"Action\",\n \"fileName\": \"send.svg\"\n },\n {\n \"name\": \"icon-settings\",\n \"path\": \"assets/loro-ui/icons/settings.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"settings.svg\"\n },\n {\n \"name\": \"icon-shelf\",\n \"path\": \"assets/loro-ui/icons/shelf.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"shelf.svg\"\n },\n {\n \"name\": \"icon-shield-alert\",\n \"path\": \"assets/loro-ui/icons/shield-alert.svg\",\n \"layer\": \"Status\",\n \"fileName\": \"shield-alert.svg\"\n },\n {\n \"name\": \"icon-shield\",\n \"path\": \"assets/loro-ui/icons/shield.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"shield.svg\"\n },\n {\n \"name\": \"icon-star\",\n \"path\": \"assets/loro-ui/icons/star.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"star.svg\"\n },\n {\n \"name\": \"icon-store\",\n \"path\": \"assets/loro-ui/icons/store.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"store.svg\"\n },\n {\n \"name\": \"icon-sun\",\n \"path\": \"assets/loro-ui/icons/sun.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"sun.svg\"\n },\n {\n \"name\": \"icon-tablet\",\n \"path\": \"assets/loro-ui/icons/tablet.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"tablet.svg\"\n },\n {\n \"name\": \"icon-tag\",\n \"path\": \"assets/loro-ui/icons/tag.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"tag.svg\"\n },\n {\n \"name\": \"icon-tick-circle\",\n \"path\": \"assets/loro-ui/icons/tick-circle.svg\",\n \"layer\": \"Status\",\n \"fileName\": \"tick-circle.svg\"\n },\n {\n \"name\": \"icon-trash-white\",\n \"path\": \"assets/loro-ui/icons/trash-white.svg\",\n \"layer\": \"Action\",\n \"fileName\": \"trash-white.svg\"\n },\n {\n \"name\": \"icon-trash\",\n \"path\": \"assets/loro-ui/icons/trash.svg\",\n \"layer\": \"Action\",\n \"fileName\": \"trash.svg\"\n },\n {\n \"name\": \"icon-trend\",\n \"path\": \"assets/loro-ui/icons/trend.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"trend.svg\"\n },\n {\n \"name\": \"icon-user\",\n \"path\": \"assets/loro-ui/icons/user.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"user.svg\"\n },\n {\n \"name\": \"icon-warning\",\n \"path\": \"assets/loro-ui/icons/warning.svg\",\n \"layer\": \"Status\",\n \"fileName\": \"warning.svg\"\n },\n {\n \"name\": \"icon-x\",\n \"path\": \"assets/loro-ui/icons/x.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"x.svg\"\n }\n] as const satisfies readonly LoroIconAsset[];\n\nexport const LORO_ICON_PATHS = {\n \"icon-apple\": \"assets/loro-ui/icons/apple.svg\",\n \"icon-arrow-right\": \"assets/loro-ui/icons/arrow-right.svg\",\n \"icon-auto\": \"assets/loro-ui/icons/auto.svg\",\n \"icon-back\": \"assets/loro-ui/icons/back.svg\",\n \"icon-bag\": \"assets/loro-ui/icons/bag.svg\",\n \"icon-barcode\": \"assets/loro-ui/icons/barcode.svg\",\n \"icon-bell\": \"assets/loro-ui/icons/bell.svg\",\n \"icon-bottle\": \"assets/loro-ui/icons/bottle.svg\",\n \"icon-bulb\": \"assets/loro-ui/icons/bulb.svg\",\n \"icon-calendar\": \"assets/loro-ui/icons/calendar.svg\",\n \"icon-camera\": \"assets/loro-ui/icons/camera.svg\",\n \"icon-cart\": \"assets/loro-ui/icons/cart.svg\",\n \"icon-chart-bar\": \"assets/loro-ui/icons/chart-bar.svg\",\n \"icon-chat\": \"assets/loro-ui/icons/chat.svg\",\n \"icon-check\": \"assets/loro-ui/icons/check.svg\",\n \"icon-checkbox-empty\": \"assets/loro-ui/icons/checkbox-empty.svg\",\n \"icon-chevron-down\": \"assets/loro-ui/icons/chevron-down.svg\",\n \"icon-chevron-right\": \"assets/loro-ui/icons/chevron-right.svg\",\n \"icon-chevron-up\": \"assets/loro-ui/icons/chevron-up.svg\",\n \"icon-clock\": \"assets/loro-ui/icons/clock.svg\",\n \"icon-download\": \"assets/loro-ui/icons/download.svg\",\n \"icon-email\": \"assets/loro-ui/icons/email.svg\",\n \"icon-eye-off\": \"assets/loro-ui/icons/eye-off.svg\",\n \"icon-eye\": \"assets/loro-ui/icons/eye.svg\",\n \"icon-globe\": \"assets/loro-ui/icons/globe.svg\",\n \"icon-google\": \"assets/loro-ui/icons/google.svg\",\n \"icon-headset\": \"assets/loro-ui/icons/headset.svg\",\n \"icon-help\": \"assets/loro-ui/icons/help.svg\",\n \"icon-home\": \"assets/loro-ui/icons/home.svg\",\n \"icon-info\": \"assets/loro-ui/icons/info.svg\",\n \"icon-laptop\": \"assets/loro-ui/icons/laptop.svg\",\n \"icon-leaf\": \"assets/loro-ui/icons/leaf.svg\",\n \"icon-list\": \"assets/loro-ui/icons/list.svg\",\n \"icon-location\": \"assets/loro-ui/icons/location.svg\",\n \"icon-lock\": \"assets/loro-ui/icons/lock.svg\",\n \"icon-logout\": \"assets/loro-ui/icons/logout.svg\",\n \"icon-megaphone\": \"assets/loro-ui/icons/megaphone.svg\",\n \"icon-moon\": \"assets/loro-ui/icons/moon.svg\",\n \"icon-more-vertical\": \"assets/loro-ui/icons/more-vertical.svg\",\n \"icon-nav-compare\": \"assets/loro-ui/icons/nav-compare.svg\",\n \"icon-nav-home\": \"assets/loro-ui/icons/nav-home.svg\",\n \"icon-nav-list\": \"assets/loro-ui/icons/nav-list.svg\",\n \"icon-nav-pantry\": \"assets/loro-ui/icons/nav-pantry.svg\",\n \"icon-pantry-stock\": \"assets/loro-ui/icons/pantry-stock.svg\",\n \"icon-paperclip\": \"assets/loro-ui/icons/paperclip.svg\",\n \"icon-phone\": \"assets/loro-ui/icons/phone.svg\",\n \"icon-plus-user\": \"assets/loro-ui/icons/plus-user.svg\",\n \"icon-plus\": \"assets/loro-ui/icons/plus.svg\",\n \"icon-scanner\": \"assets/loro-ui/icons/scanner.svg\",\n \"icon-search\": \"assets/loro-ui/icons/search.svg\",\n \"icon-send\": \"assets/loro-ui/icons/send.svg\",\n \"icon-settings\": \"assets/loro-ui/icons/settings.svg\",\n \"icon-shelf\": \"assets/loro-ui/icons/shelf.svg\",\n \"icon-shield-alert\": \"assets/loro-ui/icons/shield-alert.svg\",\n \"icon-shield\": \"assets/loro-ui/icons/shield.svg\",\n \"icon-star\": \"assets/loro-ui/icons/star.svg\",\n \"icon-store\": \"assets/loro-ui/icons/store.svg\",\n \"icon-sun\": \"assets/loro-ui/icons/sun.svg\",\n \"icon-tablet\": \"assets/loro-ui/icons/tablet.svg\",\n \"icon-tag\": \"assets/loro-ui/icons/tag.svg\",\n \"icon-tick-circle\": \"assets/loro-ui/icons/tick-circle.svg\",\n \"icon-trash-white\": \"assets/loro-ui/icons/trash-white.svg\",\n \"icon-trash\": \"assets/loro-ui/icons/trash.svg\",\n \"icon-trend\": \"assets/loro-ui/icons/trend.svg\",\n \"icon-user\": \"assets/loro-ui/icons/user.svg\",\n \"icon-warning\": \"assets/loro-ui/icons/warning.svg\",\n \"icon-x\": \"assets/loro-ui/icons/x.svg\"\n} as const;\n\nexport const LORO_ICON_LEGACY_NAMES = {\n \"apple\": \"icon-apple\",\n \"arrow-right\": \"icon-arrow-right\",\n \"auto\": \"icon-auto\",\n \"back\": \"icon-back\",\n \"bag\": \"icon-bag\",\n \"barcode\": \"icon-barcode\",\n \"bell\": \"icon-bell\",\n \"bottle\": \"icon-bottle\",\n \"bulb\": \"icon-bulb\",\n \"calendar\": \"icon-calendar\",\n \"camera\": \"icon-camera\",\n \"cart\": \"icon-cart\",\n \"chart-bar\": \"icon-chart-bar\",\n \"chat\": \"icon-chat\",\n \"check\": \"icon-check\",\n \"checkbox-empty\": \"icon-checkbox-empty\",\n \"chevron-down\": \"icon-chevron-down\",\n \"chevron-right\": \"icon-chevron-right\",\n \"chevron-up\": \"icon-chevron-up\",\n \"clock\": \"icon-clock\",\n \"download\": \"icon-download\",\n \"email\": \"icon-email\",\n \"eye-off\": \"icon-eye-off\",\n \"eye\": \"icon-eye\",\n \"globe\": \"icon-globe\",\n \"google\": \"icon-google\",\n \"headset\": \"icon-headset\",\n \"help\": \"icon-help\",\n \"home\": \"icon-home\",\n \"info\": \"icon-info\",\n \"laptop\": \"icon-laptop\",\n \"leaf\": \"icon-leaf\",\n \"list\": \"icon-list\",\n \"location\": \"icon-location\",\n \"lock\": \"icon-lock\",\n \"logout\": \"icon-logout\",\n \"megaphone\": \"icon-megaphone\",\n \"moon\": \"icon-moon\",\n \"more-vertical\": \"icon-more-vertical\",\n \"nav-compare\": \"icon-nav-compare\",\n \"nav-home\": \"icon-nav-home\",\n \"nav-list\": \"icon-nav-list\",\n \"nav-pantry\": \"icon-nav-pantry\",\n \"pantry-stock\": \"icon-pantry-stock\",\n \"paperclip\": \"icon-paperclip\",\n \"phone\": \"icon-phone\",\n \"plus-user\": \"icon-plus-user\",\n \"plus\": \"icon-plus\",\n \"scanner\": \"icon-scanner\",\n \"search\": \"icon-search\",\n \"send\": \"icon-send\",\n \"settings\": \"icon-settings\",\n \"shelf\": \"icon-shelf\",\n \"shield-alert\": \"icon-shield-alert\",\n \"shield\": \"icon-shield\",\n \"star\": \"icon-star\",\n \"store\": \"icon-store\",\n \"sun\": \"icon-sun\",\n \"tablet\": \"icon-tablet\",\n \"tag\": \"icon-tag\",\n \"tick-circle\": \"icon-tick-circle\",\n \"trash-white\": \"icon-trash-white\",\n \"trash\": \"icon-trash\",\n \"trend\": \"icon-trend\",\n \"user\": \"icon-user\",\n \"warning\": \"icon-warning\",\n \"x\": \"icon-x\"\n} as const;\n\nexport type LoroIconAssetName = keyof typeof LORO_ICON_PATHS;\nexport type LoroIconLegacyName = keyof typeof LORO_ICON_LEGACY_NAMES;\nexport type LoroIconName = LoroIconAssetName | LoroIconLegacyName;\n\nexport const LORO_IMAGE_ASSETS = [\n {\n \"name\": \"image-al-loro-design-library-home-ai\",\n \"path\": \"assets/loro-ui/images/al-loro-design-library-home-ai.png\",\n \"layer\": \"Screens\",\n \"fileName\": \"al-loro-design-library-home-ai.png\"\n },\n {\n \"name\": \"image-favicon-apple-touch-icon\",\n \"path\": \"assets/loro-ui/favicons/apple-touch-icon.png\",\n \"layer\": \"Brand\",\n \"fileName\": \"apple-touch-icon.png\"\n },\n {\n \"name\": \"image-favicon-assets-xcassets-appicon-appiconset-appicon-any\",\n \"path\": \"assets/loro-ui/favicons/Assets.xcassets/AppIcon.appiconset/AppIcon-Any.png\",\n \"layer\": \"Brand\",\n \"fileName\": \"AppIcon-Any.png\"\n },\n {\n \"name\": \"image-favicon-assets-xcassets-appicon-appiconset-appicon-dark\",\n \"path\": \"assets/loro-ui/favicons/Assets.xcassets/AppIcon.appiconset/AppIcon-Dark.png\",\n \"layer\": \"Brand\",\n \"fileName\": \"AppIcon-Dark.png\"\n },\n {\n \"name\": \"image-favicon-assets-xcassets-splash-imageset-splash-2732x2732\",\n \"path\": \"assets/loro-ui/favicons/Assets.xcassets/Splash.imageset/splash-2732x2732.png\",\n \"layer\": \"Brand\",\n \"fileName\": \"splash-2732x2732.png\"\n },\n {\n \"name\": \"image-favicon-assets-xcassets-splash-imageset-splash-2732x2732-1\",\n \"path\": \"assets/loro-ui/favicons/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png\",\n \"layer\": \"Brand\",\n \"fileName\": \"splash-2732x2732-1.png\"\n },\n {\n \"name\": \"image-favicon-assets-xcassets-splash-imageset-splash-2732x2732-2\",\n \"path\": \"assets/loro-ui/favicons/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png\",\n \"layer\": \"Brand\",\n \"fileName\": \"splash-2732x2732-2.png\"\n },\n {\n \"name\": \"image-favicon-assets-xcassets-splash-imageset-splash-dark-2732x2732\",\n \"path\": \"assets/loro-ui/favicons/Assets.xcassets/Splash.imageset/splash-dark-2732x2732.png\",\n \"layer\": \"Brand\",\n \"fileName\": \"splash-dark-2732x2732.png\"\n },\n {\n \"name\": \"image-favicon-assets-xcassets-splash-imageset-splash-dark-2732x2732-1\",\n \"path\": \"assets/loro-ui/favicons/Assets.xcassets/Splash.imageset/splash-dark-2732x2732-1.png\",\n \"layer\": \"Brand\",\n \"fileName\": \"splash-dark-2732x2732-1.png\"\n },\n {\n \"name\": \"image-favicon-assets-xcassets-splash-imageset-splash-dark-2732x2732-2\",\n \"path\": \"assets/loro-ui/favicons/Assets.xcassets/Splash.imageset/splash-dark-2732x2732-2.png\",\n \"layer\": \"Brand\",\n \"fileName\": \"splash-dark-2732x2732-2.png\"\n },\n {\n \"name\": \"image-favicon-favicon\",\n \"path\": \"assets/loro-ui/favicons/favicon.svg\",\n \"layer\": \"Brand\",\n \"fileName\": \"favicon.svg\"\n },\n {\n \"name\": \"image-home-icon-ai\",\n \"path\": \"assets/loro-ui/images/home-icon-ai.svg\",\n \"layer\": \"Home\",\n \"fileName\": \"home-icon-ai.svg\"\n },\n {\n \"name\": \"image-home-icon-basket\",\n \"path\": \"assets/loro-ui/images/home-icon-basket.svg\",\n \"layer\": \"Home\",\n \"fileName\": \"home-icon-basket.svg\"\n },\n {\n \"name\": \"image-home-icon-compare\",\n \"path\": \"assets/loro-ui/images/home-icon-compare.svg\",\n \"layer\": \"Home\",\n \"fileName\": \"home-icon-compare.svg\"\n },\n {\n \"name\": \"image-home-icon-expiry\",\n \"path\": \"assets/loro-ui/images/home-icon-expiry.svg\",\n \"layer\": \"Home\",\n \"fileName\": \"home-icon-expiry.svg\"\n },\n {\n \"name\": \"image-home-icon-pantry\",\n \"path\": \"assets/loro-ui/images/home-icon-pantry.svg\",\n \"layer\": \"Home\",\n \"fileName\": \"home-icon-pantry.svg\"\n },\n {\n \"name\": \"image-home-icon-scan\",\n \"path\": \"assets/loro-ui/images/home-icon-scan.svg\",\n \"layer\": \"Home\",\n \"fileName\": \"home-icon-scan.svg\"\n },\n {\n \"name\": \"image-image-home\",\n \"path\": \"assets/loro-ui/images/image-home.png\",\n \"layer\": \"Screens\",\n \"fileName\": \"image-home.png\"\n },\n {\n \"name\": \"image-logo-despensa-buy\",\n \"path\": \"assets/loro-ui/images/logo-despensa-buy.png\",\n \"layer\": \"Screens\",\n \"fileName\": \"logo-despensa-buy.png\"\n },\n {\n \"name\": \"image-logo-list-buy\",\n \"path\": \"assets/loro-ui/images/logo-list-buy.png\",\n \"layer\": \"Screens\",\n \"fileName\": \"logo-list-buy.png\"\n },\n {\n \"name\": \"image-loro-apaisado\",\n \"path\": \"assets/loro-ui/images/loro-apaisado.png\",\n \"layer\": \"Screens\",\n \"fileName\": \"loro-apaisado.png\"\n },\n {\n \"name\": \"image-loro-apaisado-blanco\",\n \"path\": \"assets/loro-ui/images/loro-apaisado-blanco.png\",\n \"layer\": \"Screens\",\n \"fileName\": \"loro-apaisado-blanco.png\"\n },\n {\n \"name\": \"image-loro-card-buy\",\n \"path\": \"assets/loro-ui/images/loro-card-buy.png\",\n \"layer\": \"Screens\",\n \"fileName\": \"loro-card-buy.png\"\n },\n {\n \"name\": \"image-loro-card-caducidad\",\n \"path\": \"assets/loro-ui/images/loro-card-caducidad.png\",\n \"layer\": \"Screens\",\n \"fileName\": \"loro-card-caducidad.png\"\n },\n {\n \"name\": \"image-loro-card-comparativa\",\n \"path\": \"assets/loro-ui/images/loro-card-comparativa.png\",\n \"layer\": \"Screens\",\n \"fileName\": \"loro-card-comparativa.png\"\n },\n {\n \"name\": \"image-loro-card-ia\",\n \"path\": \"assets/loro-ui/images/loro-card-ia.png\",\n \"layer\": \"Screens\",\n \"fileName\": \"loro-card-ia.png\"\n },\n {\n \"name\": \"image-loro-card-qr\",\n \"path\": \"assets/loro-ui/images/loro-card-qr.png\",\n \"layer\": \"Screens\",\n \"fileName\": \"loro-card-qr.png\"\n },\n {\n \"name\": \"image-loro-despensa\",\n \"path\": \"assets/loro-ui/images/loro-despensa.png\",\n \"layer\": \"Screens\",\n \"fileName\": \"loro-despensa.png\"\n },\n {\n \"name\": \"image-loro-icon-default\",\n \"path\": \"assets/loro-ui/images/loro-icon-default.png\",\n \"layer\": \"Screens\",\n \"fileName\": \"loro-icon-default.png\"\n },\n {\n \"name\": \"image-loro-spinner-ring\",\n \"path\": \"assets/loro-ui/images/loro-spinner-ring.svg\",\n \"layer\": \"Screens\",\n \"fileName\": \"loro-spinner-ring.svg\"\n },\n {\n \"name\": \"image-loro-tittle-sub\",\n \"path\": \"assets/loro-ui/images/loro-tittle-sub.png\",\n \"layer\": \"Screens\",\n \"fileName\": \"loro-tittle-sub.png\"\n },\n {\n \"name\": \"image-pantry-cabinet\",\n \"path\": \"assets/loro-ui/images/pantry-cabinet.svg\",\n \"layer\": \"Screens\",\n \"fileName\": \"pantry-cabinet.svg\"\n },\n {\n \"name\": \"image-pantry-metric-chart\",\n \"path\": \"assets/loro-ui/images/pantry-metric-chart.svg\",\n \"layer\": \"Screens\",\n \"fileName\": \"pantry-metric-chart.svg\"\n },\n {\n \"name\": \"image-product-bananas\",\n \"path\": \"assets/loro-ui/images/product-bananas.svg\",\n \"layer\": \"Products\",\n \"fileName\": \"product-bananas.svg\"\n },\n {\n \"name\": \"image-product-milk\",\n \"path\": \"assets/loro-ui/images/product-milk.svg\",\n \"layer\": \"Products\",\n \"fileName\": \"product-milk.svg\"\n },\n {\n \"name\": \"image-product-pasta\",\n \"path\": \"assets/loro-ui/images/product-pasta.svg\",\n \"layer\": \"Products\",\n \"fileName\": \"product-pasta.svg\"\n },\n {\n \"name\": \"image-product-rice\",\n \"path\": \"assets/loro-ui/images/product-rice.svg\",\n \"layer\": \"Products\",\n \"fileName\": \"product-rice.svg\"\n },\n {\n \"name\": \"image-product-tomatoes\",\n \"path\": \"assets/loro-ui/images/product-tomatoes.svg\",\n \"layer\": \"Products\",\n \"fileName\": \"product-tomatoes.svg\"\n },\n {\n \"name\": \"image-product-yogurt\",\n \"path\": \"assets/loro-ui/images/product-yogurt.svg\",\n \"layer\": \"Products\",\n \"fileName\": \"product-yogurt.svg\"\n },\n {\n \"name\": \"image-store-ahorramas\",\n \"path\": \"assets/loro-ui/images/store-ahorramas.svg\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-ahorramas.svg\"\n },\n {\n \"name\": \"image-store-alcampo\",\n \"path\": \"assets/loro-ui/images/store-alcampo.png\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-alcampo.png\"\n },\n {\n \"name\": \"image-store-aldi\",\n \"path\": \"assets/loro-ui/images/store-aldi.svg\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-aldi.svg\"\n },\n {\n \"name\": \"image-store-bonpreu\",\n \"path\": \"assets/loro-ui/images/store-bonpreu.svg\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-bonpreu.svg\"\n },\n {\n \"name\": \"image-store-caprabo\",\n \"path\": \"assets/loro-ui/images/store-caprabo.svg\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-caprabo.svg\"\n },\n {\n \"name\": \"image-store-carrefour\",\n \"path\": \"assets/loro-ui/images/store-carrefour.svg\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-carrefour.svg\"\n },\n {\n \"name\": \"image-store-consum\",\n \"path\": \"assets/loro-ui/images/store-consum.png\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-consum.png\"\n },\n {\n \"name\": \"image-store-coviran\",\n \"path\": \"assets/loro-ui/images/store-coviran.png\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-coviran.png\"\n },\n {\n \"name\": \"image-store-dia\",\n \"path\": \"assets/loro-ui/images/store-dia.svg\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-dia.svg\"\n },\n {\n \"name\": \"image-store-el-corte-ingles\",\n \"path\": \"assets/loro-ui/images/store-el-corte-ingles.svg\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-el-corte-ingles.svg\"\n },\n {\n \"name\": \"image-store-eroski\",\n \"path\": \"assets/loro-ui/images/store-eroski.png\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-eroski.png\"\n },\n {\n \"name\": \"image-store-froiz\",\n \"path\": \"assets/loro-ui/images/store-froiz.svg\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-froiz.svg\"\n },\n {\n \"name\": \"image-store-gadis\",\n \"path\": \"assets/loro-ui/images/store-gadis.png\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-gadis.png\"\n },\n {\n \"name\": \"image-store-lidl\",\n \"path\": \"assets/loro-ui/images/store-lidl.svg\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-lidl.svg\"\n },\n {\n \"name\": \"image-store-mercadona\",\n \"path\": \"assets/loro-ui/images/store-mercadona.svg\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-mercadona.svg\"\n }\n] as const satisfies readonly LoroImageAsset[];\n\nexport const LORO_IMAGE_PATHS = {\n \"image-al-loro-design-library-home-ai\": \"assets/loro-ui/images/al-loro-design-library-home-ai.png\",\n \"image-favicon-apple-touch-icon\": \"assets/loro-ui/favicons/apple-touch-icon.png\",\n \"image-favicon-assets-xcassets-appicon-appiconset-appicon-any\": \"assets/loro-ui/favicons/Assets.xcassets/AppIcon.appiconset/AppIcon-Any.png\",\n \"image-favicon-assets-xcassets-appicon-appiconset-appicon-dark\": \"assets/loro-ui/favicons/Assets.xcassets/AppIcon.appiconset/AppIcon-Dark.png\",\n \"image-favicon-assets-xcassets-splash-imageset-splash-2732x2732\": \"assets/loro-ui/favicons/Assets.xcassets/Splash.imageset/splash-2732x2732.png\",\n \"image-favicon-assets-xcassets-splash-imageset-splash-2732x2732-1\": \"assets/loro-ui/favicons/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png\",\n \"image-favicon-assets-xcassets-splash-imageset-splash-2732x2732-2\": \"assets/loro-ui/favicons/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png\",\n \"image-favicon-assets-xcassets-splash-imageset-splash-dark-2732x2732\": \"assets/loro-ui/favicons/Assets.xcassets/Splash.imageset/splash-dark-2732x2732.png\",\n \"image-favicon-assets-xcassets-splash-imageset-splash-dark-2732x2732-1\": \"assets/loro-ui/favicons/Assets.xcassets/Splash.imageset/splash-dark-2732x2732-1.png\",\n \"image-favicon-assets-xcassets-splash-imageset-splash-dark-2732x2732-2\": \"assets/loro-ui/favicons/Assets.xcassets/Splash.imageset/splash-dark-2732x2732-2.png\",\n \"image-favicon-favicon\": \"assets/loro-ui/favicons/favicon.svg\",\n \"image-home-icon-ai\": \"assets/loro-ui/images/home-icon-ai.svg\",\n \"image-home-icon-basket\": \"assets/loro-ui/images/home-icon-basket.svg\",\n \"image-home-icon-compare\": \"assets/loro-ui/images/home-icon-compare.svg\",\n \"image-home-icon-expiry\": \"assets/loro-ui/images/home-icon-expiry.svg\",\n \"image-home-icon-pantry\": \"assets/loro-ui/images/home-icon-pantry.svg\",\n \"image-home-icon-scan\": \"assets/loro-ui/images/home-icon-scan.svg\",\n \"image-image-home\": \"assets/loro-ui/images/image-home.png\",\n \"image-logo-despensa-buy\": \"assets/loro-ui/images/logo-despensa-buy.png\",\n \"image-logo-list-buy\": \"assets/loro-ui/images/logo-list-buy.png\",\n \"image-loro-apaisado\": \"assets/loro-ui/images/loro-apaisado.png\",\n \"image-loro-apaisado-blanco\": \"assets/loro-ui/images/loro-apaisado-blanco.png\",\n \"image-loro-card-buy\": \"assets/loro-ui/images/loro-card-buy.png\",\n \"image-loro-card-caducidad\": \"assets/loro-ui/images/loro-card-caducidad.png\",\n \"image-loro-card-comparativa\": \"assets/loro-ui/images/loro-card-comparativa.png\",\n \"image-loro-card-ia\": \"assets/loro-ui/images/loro-card-ia.png\",\n \"image-loro-card-qr\": \"assets/loro-ui/images/loro-card-qr.png\",\n \"image-loro-despensa\": \"assets/loro-ui/images/loro-despensa.png\",\n \"image-loro-icon-default\": \"assets/loro-ui/images/loro-icon-default.png\",\n \"image-loro-spinner-ring\": \"assets/loro-ui/images/loro-spinner-ring.svg\",\n \"image-loro-tittle-sub\": \"assets/loro-ui/images/loro-tittle-sub.png\",\n \"image-pantry-cabinet\": \"assets/loro-ui/images/pantry-cabinet.svg\",\n \"image-pantry-metric-chart\": \"assets/loro-ui/images/pantry-metric-chart.svg\",\n \"image-product-bananas\": \"assets/loro-ui/images/product-bananas.svg\",\n \"image-product-milk\": \"assets/loro-ui/images/product-milk.svg\",\n \"image-product-pasta\": \"assets/loro-ui/images/product-pasta.svg\",\n \"image-product-rice\": \"assets/loro-ui/images/product-rice.svg\",\n \"image-product-tomatoes\": \"assets/loro-ui/images/product-tomatoes.svg\",\n \"image-product-yogurt\": \"assets/loro-ui/images/product-yogurt.svg\",\n \"image-store-ahorramas\": \"assets/loro-ui/images/store-ahorramas.svg\",\n \"image-store-alcampo\": \"assets/loro-ui/images/store-alcampo.png\",\n \"image-store-aldi\": \"assets/loro-ui/images/store-aldi.svg\",\n \"image-store-bonpreu\": \"assets/loro-ui/images/store-bonpreu.svg\",\n \"image-store-caprabo\": \"assets/loro-ui/images/store-caprabo.svg\",\n \"image-store-carrefour\": \"assets/loro-ui/images/store-carrefour.svg\",\n \"image-store-consum\": \"assets/loro-ui/images/store-consum.png\",\n \"image-store-coviran\": \"assets/loro-ui/images/store-coviran.png\",\n \"image-store-dia\": \"assets/loro-ui/images/store-dia.svg\",\n \"image-store-el-corte-ingles\": \"assets/loro-ui/images/store-el-corte-ingles.svg\",\n \"image-store-eroski\": \"assets/loro-ui/images/store-eroski.png\",\n \"image-store-froiz\": \"assets/loro-ui/images/store-froiz.svg\",\n \"image-store-gadis\": \"assets/loro-ui/images/store-gadis.png\",\n \"image-store-lidl\": \"assets/loro-ui/images/store-lidl.svg\",\n \"image-store-mercadona\": \"assets/loro-ui/images/store-mercadona.svg\"\n} as const;\n\nexport const LORO_IMAGE_LEGACY_NAMES = {\n \"welcome\": \"image-loro-tittle-sub\",\n \"profile\": \"image-loro-despensa\",\n \"ai\": \"image-home-icon-ai\",\n \"logo-icon\": \"image-favicon-favicon\",\n \"logo-horizontal\": \"image-loro-apaisado\",\n \"logo-spinner\": \"image-loro-spinner-ring\",\n \"store-carrefour\": \"image-store-carrefour\",\n \"store-dia\": \"image-store-dia\",\n \"store-mercadona\": \"image-store-mercadona\",\n \"store-aldi\": \"image-store-aldi\",\n \"store-lidl\": \"image-store-lidl\",\n \"store-ahorramas\": \"image-store-ahorramas\",\n \"store-alcampo\": \"image-store-alcampo\",\n \"store-bonpreu\": \"image-store-bonpreu\",\n \"store-caprabo\": \"image-store-caprabo\",\n \"store-consum\": \"image-store-consum\",\n \"store-coviran\": \"image-store-coviran\",\n \"store-el-corte-ingles\": \"image-store-el-corte-ingles\",\n \"store-eroski\": \"image-store-eroski\",\n \"store-froiz\": \"image-store-froiz\",\n \"store-gadis\": \"image-store-gadis\",\n \"logo-landscape\": \"image-loro-apaisado\",\n \"logo-title-sub\": \"image-loro-tittle-sub\",\n \"logo-apaisado-blanco\": \"image-loro-apaisado-blanco\",\n \"product-bananas\": \"image-product-bananas\",\n \"product-milk\": \"image-product-milk\",\n \"product-yogurt\": \"image-product-yogurt\",\n \"product-rice\": \"image-product-rice\",\n \"product-tomatoes\": \"image-product-tomatoes\",\n \"product-pasta\": \"image-product-pasta\",\n \"pantry-cabinet\": \"image-pantry-cabinet\",\n \"pantry-metric-chart\": \"image-pantry-metric-chart\",\n \"loro-buy\": \"image-logo-list-buy\",\n \"loro-card-buy\": \"image-loro-card-buy\",\n \"loro-card-comparativa\": \"image-loro-card-comparativa\",\n \"loro-card-despensa-buy\": \"image-logo-despensa-buy\",\n \"loro-card-caducidad\": \"image-loro-card-caducidad\",\n \"loro-card-ia\": \"image-loro-card-ia\",\n \"loro-card-ticket\": \"image-loro-card-qr\",\n \"home-icon-basket\": \"image-home-icon-basket\",\n \"home-icon-compare\": \"image-home-icon-compare\",\n \"home-icon-pantry\": \"image-home-icon-pantry\",\n \"home-icon-expiry\": \"image-home-icon-expiry\",\n \"home-icon-scan\": \"image-home-icon-scan\",\n \"home-icon-ai\": \"image-home-icon-ai\",\n \"home-intro\": \"image-image-home\",\n \"loro-buy-despensa\": \"image-logo-despensa-buy\",\n \"loro-despensa\": \"image-loro-despensa\"\n} as const;\n\nexport type LoroImageAssetName = keyof typeof LORO_IMAGE_PATHS;\nexport type LoroImageLegacyName = keyof typeof LORO_IMAGE_LEGACY_NAMES;\nexport type LoroImageName = LoroImageAssetName | LoroImageLegacyName;\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n LORO_ICON_LEGACY_NAMES,\n LORO_ICON_PATHS,\n type LoroIconAssetName,\n type LoroIconName,\n} from '../../../assets/loro-assets.generated';\n\nexport {\n LORO_ICON_ASSETS,\n LORO_ICON_LEGACY_NAMES,\n LORO_ICON_PATHS,\n type LoroIconAsset,\n type LoroIconAssetName,\n type LoroIconLegacyName,\n type LoroIconName,\n} from '../../../assets/loro-assets.generated';\n\nexport type LoroIconColorToken =\n | 'default'\n | 'primary'\n | 'primary-strong'\n | 'primary-deep'\n | 'text'\n | 'muted'\n | 'success'\n | 'danger'\n | 'warning'\n | 'inverse';\nexport type LoroIconColor = LoroIconColorToken | string;\nexport type LoroIconRenderMode = 'mask' | 'origin';\nexport type LoroIconSize = number | string;\n\nconst LORO_ICON_COLOR_TOKENS: Record<LoroIconColorToken, string> = {\n default: 'currentColor',\n primary: 'var(--loro-primary-500)',\n 'primary-strong': 'var(--loro-primary-700)',\n 'primary-deep': 'var(--loro-primary-900)',\n text: 'var(--loro-text)',\n muted: 'var(--loro-muted)',\n success: '#1f9d55',\n danger: 'var(--loro-danger-text)',\n warning: 'var(--loro-warning)',\n inverse: 'var(--loro-text-inverse)',\n};\n\n@Component({\n selector: 'loro-icon',\n \n templateUrl: './loro-icon.html',\n styleUrl: './loro-icon.scss',standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroIcon {\n name = input.required<LoroIconName>();\n size = input<LoroIconSize>(48);\n alt = input<string>('');\n decorative = input<boolean>(false);\n color = input<LoroIconColor>('default');\n renderMode = input<LoroIconRenderMode>('mask');\n\n protected readonly assetName = computed(() => {\n const name = this.name();\n\n return (\n name in LORO_ICON_PATHS\n ? name\n : LORO_ICON_LEGACY_NAMES[name as keyof typeof LORO_ICON_LEGACY_NAMES]\n ) as LoroIconAssetName;\n });\n protected readonly src = computed(() => LORO_ICON_PATHS[this.assetName()]);\n protected readonly altText = computed(() => (this.decorative() ? '' : this.alt() || this.name()));\n protected readonly resolvedSize = computed(() => {\n const size = this.size();\n\n return typeof size === 'number' ? `${size}px` : size;\n });\n protected readonly resolvedColor = computed(() => {\n const color = this.color();\n\n return color in LORO_ICON_COLOR_TOKENS\n ? LORO_ICON_COLOR_TOKENS[color as LoroIconColorToken]\n : color;\n });\n}\n","<span\n class=\"loro-icon\"\n role=\"img\"\n [attr.aria-label]=\"decorative() ? null : altText()\"\n [attr.aria-hidden]=\"decorative() ? 'true' : null\"\n [style.width]=\"resolvedSize()\"\n [style.height]=\"resolvedSize()\"\n >\n @if (renderMode() === 'origin') {\n <img class=\"loro-icon__origin\" [src]=\"src()\" alt=\"\" aria-hidden=\"true\" />\n } @else {\n <span\n class=\"loro-icon__mask\"\n [style.--loro-icon-mask]=\"'url(' + src() + ')'\"\n [style.--loro-icon-color]=\"resolvedColor()\"\n ></span>\n }\n </span>","import type { LoroAccordionIconName } from '../models/loro-accordion.model';\n\nexport const LORO_ACCORDION_DEFAULTS = {\n icon: 'help' as LoroAccordionIconName,\n expanded: false,\n} as const;\n\n","import { ChangeDetectionStrategy, Component, effect, input, output, signal } from '@angular/core';\nimport { LoroIcon } from '../../resources/loro-icon';\nimport { LORO_ACCORDION_DEFAULTS } from './constants/loro-accordion.constants';\nimport type { LoroAccordionIconName } from './models/loro-accordion.model';\n\n@Component({\n selector: 'loro-accordion',\n templateUrl: './loro-accordion.html',\n styleUrl: './loro-accordion.scss',\n standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroAccordion {\n readonly title = input.required<string>();\n readonly icon = input<LoroAccordionIconName>(LORO_ACCORDION_DEFAULTS.icon);\n readonly expanded = input<boolean>(LORO_ACCORDION_DEFAULTS.expanded);\n readonly expandedChange = output<boolean>();\n protected readonly isExpanded = signal(false);\n\n constructor() {\n effect(() => {\n this.isExpanded.set(this.expanded());\n });\n }\n\n protected toggleExpanded(): void {\n const nextExpanded = !this.isExpanded();\n\n this.isExpanded.set(nextExpanded);\n this.expandedChange.emit(nextExpanded);\n }\n}\n","<article class=\"loro-accordion\" [class.loro-accordion--open]=\"isExpanded()\">\n <button\n type=\"button\"\n class=\"loro-accordion__header\"\n [attr.aria-expanded]=\"isExpanded()\"\n (click)=\"toggleExpanded()\"\n >\n @if (icon()) {\n <span class=\"loro-accordion__icon\">\n <loro-icon [name]=\"icon()!\" [size]=\"24\" [alt]=\"title()\" color=\"primary\" />\n </span>\n }\n\n <span class=\"loro-accordion__title\">{{ title() }}</span>\n\n <loro-icon\n class=\"loro-accordion__toggle\"\n [name]=\"isExpanded() ? 'chevron-up' : 'chevron-down'\"\n [size]=\"22\"\n alt=\"Expandir\"\n color=\"primary\"\n />\n </button>\n\n @if (isExpanded()) {\n <div class=\"loro-accordion__body\">\n <ng-content />\n </div>\n }\n</article>\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, inject } from '@angular/core';\nimport { Capacitor } from '@capacitor/core';\nimport { Haptics, ImpactStyle, NotificationType } from '@capacitor/haptics';\n\ntype HapticPattern = number | number[];\n\n@Injectable({ providedIn: 'root' })\nexport class LoroHapticsService {\n private readonly document = inject(DOCUMENT);\n private readonly vibration =\n 'vibrate' in navigator ? navigator.vibrate.bind(navigator) : null;\n\n impact(style: 'light' | 'medium' | 'heavy' = 'light'): void {\n if (Capacitor.isNativePlatform()) {\n const nativeStyle = {\n light: ImpactStyle.Light,\n medium: ImpactStyle.Medium,\n heavy: ImpactStyle.Heavy,\n } satisfies Record<typeof style, ImpactStyle>;\n\n void Haptics.impact({ style: nativeStyle[style] });\n return;\n }\n\n const pattern = {\n light: 10,\n medium: [12, 18, 12],\n heavy: [18, 24, 18],\n } satisfies Record<typeof style, HapticPattern>;\n\n this.trigger(pattern[style]);\n }\n\n selection(): void {\n if (Capacitor.isNativePlatform()) {\n void Haptics.selectionStart()\n .then(() => Haptics.selectionChanged())\n .then(() => Haptics.selectionEnd());\n return;\n }\n\n this.trigger(8);\n }\n\n notification(type: 'success' | 'warning' | 'error' = 'success'): void {\n if (Capacitor.isNativePlatform()) {\n const nativeType = {\n success: NotificationType.Success,\n warning: NotificationType.Warning,\n error: NotificationType.Error,\n } satisfies Record<typeof type, NotificationType>;\n\n void Haptics.notification({ type: nativeType[type] });\n return;\n }\n\n const pattern = {\n success: [12, 24, 12],\n warning: [18, 18, 18],\n error: [30, 24, 30],\n } satisfies Record<typeof type, HapticPattern>;\n\n this.trigger(pattern[type]);\n }\n\n private trigger(pattern: HapticPattern): void {\n if (!this.vibration || this.document.visibilityState !== 'visible') {\n return;\n }\n\n this.vibration(pattern);\n }\n}\n","import type {\n LoroButtonIconSize,\n LoroButtonVariant,\n LoroButtonWidth,\n} from '../models/loro-button.model';\n\nexport const LORO_BUTTON_DEFAULTS = {\n text: '',\n icon: null,\n iconColor: null,\n iconOnly: false,\n iconSize: 22 as LoroButtonIconSize,\n variant: 'primary' as LoroButtonVariant,\n width: 'fit-content' as LoroButtonWidth,\n ariaLabel: '',\n ariaDescription: '',\n} as const;\n\nexport const LORO_BUTTON_VARIANTS: readonly LoroButtonVariant[] = [\n 'primary',\n 'secondary',\n 'tertiary',\n 'danger',\n 'soft',\n 'social',\n 'loading',\n 'disabled',\n];\n\nexport const LORO_BUTTON_WIDTHS: readonly LoroButtonWidth[] = ['fit-content', 'full'];\n\nexport const LORO_BUTTON_ICON_SIZES: readonly LoroButtonIconSize[] = [\n 16,\n 18,\n 20,\n 22,\n 24,\n 28,\n 32,\n 36,\n 40,\n];\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\n\nimport {\n LoroIcon,\n type LoroIconName,\n type LoroIconRenderMode,\n} from '../../resources/loro-icon';\nimport {\n LORO_BUTTON_DEFAULTS,\n} from './constants/loro-button.constants';\nimport type {\n LoroButtonIconSize,\n LoroButtonVariant,\n LoroButtonWidth,\n} from './models/loro-button.model';\n\nexport type {\n LoroButtonIconSize,\n LoroButtonVariant,\n LoroButtonWidth,\n};\nexport {\n LORO_BUTTON_DEFAULTS,\n LORO_BUTTON_ICON_SIZES,\n LORO_BUTTON_VARIANTS,\n LORO_BUTTON_WIDTHS,\n} from './constants/loro-button.constants';\n\n/**\n * Reusable action button with a compact public API.\n *\n * Mobile-first by default. Desktop refinements live in the component stylesheet\n * through the shared breakpoint helpers.\n */\n@Component({\n selector: 'loro-button',\n standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.loro-button-host--full]': \"width() === 'full'\",\n },\n templateUrl: './loro-button.html',\n styleUrl: './loro-button.scss',\n})\nexport class LoroButton {\n /** Visible text label rendered inside the button. */\n text = input<string>(LORO_BUTTON_DEFAULTS.text);\n /** Optional icon from the Loro icon registry. */\n icon = input<LoroIconName | null>(LORO_BUTTON_DEFAULTS.icon);\n /** Optional icon color override, supported for tertiary variant. */\n iconColor = input<string | null>(LORO_BUTTON_DEFAULTS.iconColor);\n /** Renders a square icon-only action when true. */\n iconOnly = input<boolean>(LORO_BUTTON_DEFAULTS.iconOnly);\n /** Typed icon size token shared with Storybook controls. */\n iconSize = input<LoroButtonIconSize>(LORO_BUTTON_DEFAULTS.iconSize);\n /** Visual treatment and semantic state of the button. */\n variant = input<LoroButtonVariant>(LORO_BUTTON_DEFAULTS.variant);\n /** Width behavior for inline or full-row actions. */\n width = input<LoroButtonWidth>(LORO_BUTTON_DEFAULTS.width);\n /** Accessible name override. Required for icon-only usage when no text exists. */\n ariaLabel = input<string>(LORO_BUTTON_DEFAULTS.ariaLabel);\n /** Optional extra accessible description. */\n ariaDescription = input<string>(LORO_BUTTON_DEFAULTS.ariaDescription);\n\n /** Single activation output for click and keyboard button semantics. */\n buttonClick = output<void>();\n\n /** Normalized visible text used by the template and accessibility fallbacks. */\n protected readonly resolvedText = computed(() => this.text().trim());\n /** Loading is modeled as a visual variant to keep the public API small. */\n protected readonly isLoading = computed(() => this.variant() === 'loading');\n /** Disabled states are also modeled through variants. */\n protected readonly isDisabled = computed(() => {\n const variant = this.variant();\n\n return variant === 'disabled' || variant === 'loading';\n });\n /** Icons are hidden while loading so the spinner is the only visual affordance. */\n protected readonly hasIcon = computed(() => !this.isLoading() && !!this.icon());\n /** Labels are hidden for icon-only buttons and loading buttons. */\n protected readonly showLabel = computed(() => !this.iconOnly() && !this.isLoading());\n /** Social buttons preserve their original icon artwork colors by default. */\n protected readonly iconRenderMode = computed<LoroIconRenderMode>(() =>\n this.variant() === 'social' ? 'origin' : 'mask',\n );\n /** Tertiary can override button foreground (text/icon) using iconColor. */\n protected readonly resolvedTertiaryColor = computed(() =>\n this.variant() === 'tertiary' ? this.iconColor() : null,\n );\n /** Tertiary can override icon color while other variants keep currentColor styling. */\n protected readonly resolvedIconColor = computed(() => {\n if (this.resolvedTertiaryColor()) {\n return this.resolvedTertiaryColor()!;\n }\n\n return 'currentColor';\n });\n /** Falls back to visible text when no explicit accessible label is provided. */\n protected readonly resolvedAriaLabel = computed(() => {\n const ariaLabel = this.ariaLabel().trim();\n\n if (ariaLabel) {\n return ariaLabel;\n }\n\n return this.resolvedText() || null;\n });\n\n /** Prevents emissions for visual disabled/loading states. */\n protected onClick(): void {\n if (this.isDisabled()) {\n return;\n }\n\n this.buttonClick.emit();\n }\n}\n","<button\n type=\"button\"\n class=\"loro-button\"\n [class]=\"'loro-button loro-button--' + variant()\"\n [class.loro-button--full]=\"width() === 'full'\"\n [class.loro-button--icon-only]=\"iconOnly()\"\n [class.loro-button--has-icon]=\"hasIcon()\"\n [style.--loro-button-icon-size.px]=\"iconSize()\"\n [style.--loro-button-tertiary-color]=\"resolvedTertiaryColor()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"resolvedAriaLabel()\"\n [attr.aria-description]=\"ariaDescription() || null\"\n [attr.aria-busy]=\"isLoading() ? 'true' : null\"\n (click)=\"onClick()\"\n>\n @if (isLoading()) {\n <span class=\"loro-button__spinner\" aria-hidden=\"true\"></span>\n } @else {\n @if (hasIcon()) {\n <loro-icon\n class=\"loro-button__icon\"\n [name]=\"icon()!\"\n [size]=\"iconSize()\"\n [alt]=\"resolvedText()\"\n [decorative]=\"iconOnly()\"\n [color]=\"resolvedIconColor()\"\n [renderMode]=\"iconRenderMode()\"\n />\n }\n\n @if (showLabel()) {\n <span class=\"loro-button__label\">{{ resolvedText() }}</span>\n }\n\n <span class=\"loro-button__suffix\">\n <ng-content />\n </span>\n }\n</button>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n LORO_IMAGE_LEGACY_NAMES,\n LORO_IMAGE_PATHS,\n type LoroImageAssetName,\n type LoroImageName,\n} from '../../../assets/loro-assets.generated';\n\nexport type LoroImageSize = number | string;\n\nconst LORO_IMAGE_MIN_SIZE = 16;\nconst LORO_IMAGE_MAX_SIZE = 640;\n\nexport {\n LORO_IMAGE_ASSETS,\n LORO_IMAGE_LEGACY_NAMES,\n LORO_IMAGE_PATHS,\n type LoroImageAsset,\n type LoroImageAssetName,\n type LoroImageLegacyName,\n type LoroImageName,\n} from '../../../assets/loro-assets.generated';\n\n@Component({\n selector: 'loro-image',\n templateUrl: './loro-image.html',\n styleUrl: './loro-image.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroImage {\n readonly name = input.required<LoroImageName>();\n readonly alt = input<string>('');\n readonly size = input<LoroImageSize | null>(null);\n\n protected readonly assetName = computed(() => {\n const name = this.name();\n\n return (\n name in LORO_IMAGE_PATHS\n ? name\n : LORO_IMAGE_LEGACY_NAMES[name as keyof typeof LORO_IMAGE_LEGACY_NAMES]\n ) as LoroImageAssetName;\n });\n protected readonly src = computed(() => LORO_IMAGE_PATHS[this.assetName()]);\n protected readonly altText = computed(() => this.alt());\n protected readonly resolvedSize = computed(() => {\n const size = this.size();\n\n if (typeof size === 'number') {\n const clampedSize = Math.min(Math.max(size, LORO_IMAGE_MIN_SIZE), LORO_IMAGE_MAX_SIZE);\n\n return `${clampedSize}px`;\n }\n\n return size;\n });\n}\n","<img\n class=\"loro-image\"\n [src]=\"src()\"\n [alt]=\"altText()\"\n [style.width]=\"resolvedSize()\"\n/>\n","import type { LoroNavItem } from '../models/loro-nav.model';\n\nexport const LORO_NAV_DEFAULT_MAIN_ITEMS: LoroNavItem[] = [\n { id: 'home', label: 'Inicio', icon: 'nav-home', active: true },\n { id: 'list', label: 'Lista', icon: 'nav-list' },\n { id: 'scan', label: 'Escanear', icon: 'scanner' },\n { id: 'compare', label: 'Comparar', icon: 'nav-compare' },\n { id: 'pantry', label: 'Despensa', icon: 'nav-pantry' },\n];\n\nexport const LORO_NAV_DEFAULT_UTILITY_ITEMS: LoroNavItem[] = [\n { id: 'settings', label: 'Ajustes', icon: 'settings' },\n { id: 'logout', label: 'Cerrar sesión', icon: 'logout' },\n];\n\nexport const LORO_NAV_DEFAULT_ARIA_LABEL = 'Navegación principal';\nexport const LORO_NAV_MOBILE_SLOT_LIMIT = 5;\n","import { Toolbar, ToolbarWidget } from '@angular/aria/toolbar';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, output, signal } from '@angular/core';\nimport { LoroHapticsService } from '../../../services/loro-haptics.service';\nimport { LoroButton } from '../../actions/loro-button/loro-button';\nimport { LoroIcon } from '../../resources/loro-icon';\nimport { LoroImage } from '../../resources/loro-image/loro-image';\nimport { LORO_NAV_DEFAULT_ARIA_LABEL, LORO_NAV_DEFAULT_MAIN_ITEMS, LORO_NAV_DEFAULT_UTILITY_ITEMS, LORO_NAV_MOBILE_SLOT_LIMIT } from './constants/loro-nav.constants';\nimport type { LoroNavClick, LoroNavItem } from './models/loro-nav.model';\n\n@Component({\n selector: 'loro-nav',\n standalone: true,\n imports: [Toolbar, ToolbarWidget, LoroImage, LoroButton, LoroIcon],\n templateUrl: './loro-nav.html',\n styleUrl: './loro-nav.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroNav {\n /** Shared haptics feedback for taps and drag selection. */\n private readonly haptics = inject(LoroHapticsService);\n /** Keeps track of the active pointer only while the mobile slider is captured. */\n private activePointerId: number | null = null;\n /** Continuous slider position used while dragging on mobile. */\n private readonly previewMobilePosition = signal<number | null>(null);\n /** Locally selected mobile index so the active state updates immediately. */\n private readonly activeMobileIndex = signal<number | null>(null);\n /** Tracks whether the pointer is currently captured by the mobile nav. */\n private readonly mobilePointerActive = signal(false);\n /** Prevents the release click from firing twice after a swipe selection. */\n private suppressNextMobileClick = false;\n\n /** Main navigation items. */\n items = input<LoroNavItem[]>(LORO_NAV_DEFAULT_MAIN_ITEMS);\n /** Optional utility actions shown on desktop. */\n utilityItems = input<LoroNavItem[]>(LORO_NAV_DEFAULT_UTILITY_ITEMS);\n /** Accessible label for the navigation landmark. */\n ariaLabel = input<string>(LORO_NAV_DEFAULT_ARIA_LABEL);\n /** Enables or hides the desktop utility block. */\n showUtilityItems = input<boolean>(true);\n /** Shows or hides the item labels in desktop and mobile navigation. */\n showLabels = input<boolean>(true);\n /** Emits the selected main item. */\n itemClick = output<LoroNavItem>();\n /** Emits the selected utility item. */\n utilityItemClick = output<LoroNavItem>();\n /** Emits the selected item and section metadata. */\n navItemClick = output<LoroNavClick>();\n\n protected readonly desktopItems = computed(() => this.items().filter((item) => item.id !== 'scan'));\n protected readonly mobileItems = computed(() => this.items().slice(0, LORO_NAV_MOBILE_SLOT_LIMIT));\n protected readonly mobileVisualSlotCount = computed(() => this.mobileItems().length);\n\n private readonly selectedMobileIndex = computed(() => {\n const activeIndex = this.activeMobileIndex();\n if (activeIndex !== null) {\n return activeIndex;\n }\n\n const index = this.mobileItems().findIndex((item) => item.active);\n return index >= 0 ? index : 0;\n });\n\n protected readonly mobileSliderPosition = computed(() =>\n this.previewMobilePosition() ?? this.selectedMobileIndex(),\n );\n\n protected readonly isMobileDragging = computed(() => this.mobilePointerActive());\n protected readonly mobileItemCount = computed(() => this.mobileItems().length);\n protected readonly selectedMobileItemId = computed(() => this.mobileItems()[this.selectedMobileIndex()]?.id ?? '');\n\n protected isMobileItemVisualActive(index: number): boolean {\n return this.selectedMobileIndex() === index;\n }\n\n onMainItemClick(item: LoroNavItem): void {\n if (item.disabled) {\n return;\n }\n\n this.emitMainItem(item, true);\n }\n\n protected onMobileItemClick(item: LoroNavItem): void {\n if (this.suppressNextMobileClick) {\n this.suppressNextMobileClick = false;\n return;\n }\n\n const index = this.mobileItems().findIndex((mobileItem) => mobileItem.id === item.id);\n this.selectMobileItem(index, true);\n }\n\n protected onMobilePointerDown(event: PointerEvent): void {\n if (!event.isPrimary || event.button !== 0 || this.mobileItems().length === 0) {\n return;\n }\n\n const nav = event.currentTarget as HTMLElement;\n this.activePointerId = event.pointerId;\n this.mobilePointerActive.set(true);\n nav.setPointerCapture(event.pointerId);\n\n const slotPosition = this.getMobileVisualSlotPosition(event.clientX, nav);\n if (this.getNearestEnabledMobileIndex(slotPosition) === null) {\n this.releaseMobilePointer(nav, event.pointerId);\n return;\n }\n\n this.previewMobilePosition.set(slotPosition);\n event.preventDefault();\n }\n\n protected onMobilePointerMove(event: PointerEvent): void {\n if (event.pointerId !== this.activePointerId) {\n return;\n }\n\n const nav = event.currentTarget as HTMLElement;\n const slotPosition = this.getMobileVisualSlotPosition(event.clientX, nav);\n\n this.previewMobilePosition.set(slotPosition);\n\n event.preventDefault();\n }\n\n protected onMobilePointerUp(event: PointerEvent): void {\n if (event.pointerId !== this.activePointerId) {\n return;\n }\n\n const nav = event.currentTarget as HTMLElement;\n const slotPosition = this.getMobileVisualSlotPosition(event.clientX, nav);\n const index = this.getNearestEnabledMobileIndex(slotPosition);\n\n this.releaseMobilePointer(nav, event.pointerId);\n\n if (index === null) {\n return;\n }\n\n const item = this.mobileItems()[index];\n if (!item || item.disabled) {\n return;\n }\n\n const selectedIndex: number = index;\n this.previewMobilePosition.set(slotPosition);\n\n this.suppressNextMobileClick = true;\n globalThis.setTimeout(() => {\n this.suppressNextMobileClick = false;\n });\n\n this.selectMobileItem(selectedIndex, false);\n\n globalThis.queueMicrotask(() => {\n this.previewMobilePosition.set(null);\n });\n\n event.preventDefault();\n }\n\n protected onMobilePointerCancel(event: PointerEvent): void {\n if (event.pointerId !== this.activePointerId) {\n return;\n }\n\n this.releaseMobilePointer(event.currentTarget as HTMLElement, event.pointerId);\n this.previewMobilePosition.set(null);\n }\n\n onUtilityItemClick(item: LoroNavItem): void {\n if (item.disabled) {\n return;\n }\n\n this.haptics.impact('light');\n this.utilityItemClick.emit(item);\n this.navItemClick.emit({ item, section: 'utility' });\n }\n\n private emitMainItem(item: LoroNavItem, withHaptics: boolean): void {\n if (withHaptics) {\n this.haptics.selection();\n }\n\n this.itemClick.emit(item);\n this.navItemClick.emit({ item, section: 'main' });\n }\n\n private selectMobileItem(index: number, withHaptics: boolean): void {\n const item = this.mobileItems()[index];\n if (!item || item.disabled) {\n return;\n }\n\n this.activeMobileIndex.set(index);\n this.emitMainItem(item, withHaptics);\n }\n\n /** Maps a pointer X coordinate to a zero-based visual slot index. */\n private getMobileVisualSlotPosition(clientX: number, nav: HTMLElement): number {\n const slotCount = this.mobileVisualSlotCount();\n if (slotCount <= 1) {\n return 0;\n }\n\n const rect = nav.getBoundingClientRect();\n const itemWidth = rect.width / slotCount;\n const position = (clientX - rect.left - itemWidth / 2) / itemWidth;\n\n return Math.min(Math.max(position, 0), slotCount - 1);\n }\n\n protected mobileItemGridColumn(index: number): number {\n return index + 1;\n }\n\n private getNearestEnabledMobileIndex(slotPosition: number): number | null {\n const items = this.mobileItems();\n const enabledIndexes = items\n .map((item, index) => ({ item, index }))\n .filter(({ item }) => !item.disabled)\n .map(({ index }) => index);\n\n if (enabledIndexes.length === 0) {\n return null;\n }\n\n return enabledIndexes.reduce((nearest, index) =>\n Math.abs(index - slotPosition) <\n Math.abs(nearest - slotPosition)\n ? index\n : nearest,\n );\n }\n\n /** Releases pointer capture and clears transient mobile drag state. */\n private releaseMobilePointer(nav: HTMLElement, pointerId: number): void {\n if (nav.hasPointerCapture(pointerId)) {\n nav.releasePointerCapture(pointerId);\n }\n\n this.activePointerId = null;\n this.mobilePointerActive.set(false);\n }\n}\n","<aside class=\"loro-nav\" [class.loro-nav--icon-only]=\"!showLabels()\">\n <!-- Desktop -->\n <div class=\"loro-nav__desktop\">\n <div class=\"loro-nav__surface\">\n <div class=\"loro-nav__brand\">\n <loro-image\n class=\"loro-nav__brand-image\"\n name=\"image-loro-apaisado\"\n alt=\"AlLoro\"\n size=\"10rem\"\n />\n </div>\n\n <nav class=\"loro-nav__nav\" [attr.aria-label]=\"ariaLabel()\">\n @for (item of desktopItems(); track item.id) {\n <loro-button\n class=\"loro-nav__item\"\n [class.loro-nav__item--active]=\"item.active\"\n [class.loro-nav__item--disabled]=\"item.disabled\"\n [class.loro-nav__item--logout]=\"item.id === 'logout'\"\n [text]=\"showLabels() ? item.label : ''\"\n [icon]=\"item.icon\"\n [variant]=\"item.disabled ? 'disabled' : 'tertiary'\"\n [iconOnly]=\"!showLabels()\"\n width=\"full\"\n [ariaLabel]=\"item.label\"\n (buttonClick)=\"onMainItemClick(item)\"\n >\n @if (item.badge !== null && item.badge !== undefined && item.badge !== '') {\n <span class=\"loro-nav__badge\">{{ item.badge }}</span>\n }\n </loro-button>\n }\n </nav>\n\n <div class=\"loro-nav__spacer\"></div>\n\n @if (showUtilityItems() && utilityItems().length > 0) {\n <div class=\"loro-nav__divider\" aria-hidden=\"true\"></div>\n\n <nav class=\"loro-nav__nav loro-nav__nav--utility\" aria-label=\"Navegación secundaria\">\n @for (item of utilityItems(); track item.id) {\n <loro-button\n class=\"loro-nav__item\"\n [class.loro-nav__item--active]=\"item.active\"\n [class.loro-nav__item--disabled]=\"item.disabled\"\n [class.loro-nav__item--logout]=\"item.id === 'logout'\"\n [text]=\"showLabels() ? item.label : ''\"\n [icon]=\"item.icon\"\n [variant]=\"item.disabled ? 'disabled' : 'tertiary'\"\n [iconOnly]=\"!showLabels()\"\n width=\"full\"\n [ariaLabel]=\"item.label\"\n (buttonClick)=\"onUtilityItemClick(item)\"\n >\n @if (item.badge !== null && item.badge !== undefined && item.badge !== '') {\n <span class=\"loro-nav__badge\">{{ item.badge }}</span>\n }\n </loro-button>\n }\n </nav>\n }\n </div>\n </div>\n\n <!-- Mobile -->\n <nav\n ngToolbar\n class=\"loro-nav__mobile\"\n [class.loro-nav__mobile--icon-only]=\"!showLabels()\"\n data-horizontal-gesture\n [attr.aria-label]=\"ariaLabel()\"\n [style.--loro-mobile-slider-position]=\"mobileSliderPosition()\"\n [class.loro-nav__mobile--dragging]=\"isMobileDragging()\"\n [class.loro-nav__mobile--with-labels]=\"true\"\n [style.--loro-mobile-item-count]=\"mobileItemCount()\"\n [style.--loro-mobile-visual-slot-count]=\"mobileVisualSlotCount()\"\n (pointerdown)=\"onMobilePointerDown($event)\"\n (pointermove)=\"onMobilePointerMove($event)\"\n (pointerup)=\"onMobilePointerUp($event)\"\n (pointercancel)=\"onMobilePointerCancel($event)\"\n >\n <span\n class=\"loro-nav__mobile-slider\"\n [class.loro-nav__mobile-slider--scan]=\"selectedMobileItemId() === 'scan' && !isMobileDragging()\"\n aria-hidden=\"true\"></span>\n\n @for (item of mobileItems(); track item.id; let index = $index) {\n <button\n ngToolbarWidget\n type=\"button\"\n class=\"loro-nav__mobile-item\"\n [style.grid-column]=\"mobileItemGridColumn(index)\"\n [class.loro-nav__mobile-item--active]=\"isMobileItemVisualActive(index)\"\n [class.loro-nav__mobile-item--scan-active]=\"item.id === 'scan' && isMobileItemVisualActive(index) && !isMobileDragging()\"\n [class.loro-nav__mobile-item--disabled]=\"item.disabled\"\n [attr.aria-label]=\"item.label\"\n [attr.aria-current]=\"item.active ? 'page' : null\"\n [value]=\"item.id\"\n [disabled]=\"!!item.disabled\"\n (click)=\"onMobileItemClick(item)\"\n >\n <loro-icon\n class=\"loro-nav__mobile-icon\"\n [name]=\"item.icon\"\n [size]=\"24\"\n color=\"default\"\n [alt]=\"item.label\"\n />\n @if (showLabels()) {\n <span class=\"loro-nav__mobile-label\">{{ item.label }}</span>\n }\n </button>\n }\n </nav>\n</aside>\n","import type { LoroBadgeVariant } from '../models/loro-badge.model';\n\nexport const LORO_BADGE_DEFAULTS = {\n variant: 'info' as LoroBadgeVariant,\n} as const;\n\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { LORO_BADGE_DEFAULTS } from './constants/loro-badge.constants';\nimport type { LoroBadgeVariant } from './models/loro-badge.model';\n\nexport type { LoroBadgeVariant } from './models/loro-badge.model';\n\n@Component({\n selector: 'loro-badge',\n templateUrl: './loro-badge.html',\n styleUrl: './loro-badge.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroBadge {\n label = input.required<string>();\n variant = input<LoroBadgeVariant>(LORO_BADGE_DEFAULTS.variant);\n}\n","<span class=\"loro-badge\" [class]=\"'loro-badge loro-badge--' + variant()\">\n <span class=\"loro-badge__label\">{{ label() }}</span>\n</span>\n","import type { LoroAlertAnnouncement, LoroAlertVariant } from '../models/loro-alert.model';\n\nexport const LORO_ALERT_DEFAULTS = {\n title: '',\n message: '',\n variant: 'info' as LoroAlertVariant,\n announcement: 'auto' as LoroAlertAnnouncement,\n focusable: false,\n actionLabel: '',\n dismissible: false,\n dismissLabel: 'Cerrar aviso',\n} as const;\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\n\nimport { LoroButton } from '../../actions/loro-button/loro-button';\nimport { LoroIcon, type LoroIconColor, type LoroIconName } from '../../resources/loro-icon';\nimport { LORO_ALERT_DEFAULTS } from './constants/loro-alert.constants';\nimport type { LoroAlertAnnouncement, LoroAlertVariant } from './models/loro-alert.model';\n\nexport type { LoroAlertAnnouncement, LoroAlertVariant } from './models/loro-alert.model';\n\n@Component({\n selector: 'loro-alert',\n standalone: true,\n imports: [LoroButton, LoroIcon],\n templateUrl: './loro-alert.html',\n styleUrl: './loro-alert.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n\n host: {\n '[attr.role]': 'role()',\n '[attr.aria-live]': 'ariaLive()',\n '[attr.aria-atomic]': 'ariaLive() ? \"true\" : null',\n '[attr.tabindex]': 'focusable() ? -1 : null',\n '[class.loro-alert--focusable]': 'focusable()',\n '[attr.data-variant]': 'variant()',\n },\n})\nexport class LoroAlert {\n readonly title = input<string>(LORO_ALERT_DEFAULTS.title);\n readonly message = input<string>(LORO_ALERT_DEFAULTS.message);\n readonly variant = input<LoroAlertVariant>(LORO_ALERT_DEFAULTS.variant);\n readonly announcement = input<LoroAlertAnnouncement>(LORO_ALERT_DEFAULTS.announcement);\n readonly focusable = input<boolean>(LORO_ALERT_DEFAULTS.focusable);\n readonly actionLabel = input<string>(LORO_ALERT_DEFAULTS.actionLabel);\n readonly dismissible = input<boolean>(LORO_ALERT_DEFAULTS.dismissible);\n readonly dismissLabel = input<string>(LORO_ALERT_DEFAULTS.dismissLabel);\n\n readonly action = output<void>();\n readonly dismissed = output<void>();\n\n protected readonly resolvedIcon = computed<LoroIconName>(() => this.resolveIconName());\n protected readonly resolvedIconColor = computed<LoroIconColor>(() => this.resolveVariantIconColor());\n protected readonly actionIconColor = computed<LoroIconColor>(() => this.resolveVariantIconColor());\n protected readonly role = computed<'status' | 'alert' | null>(() => this.resolveRole());\n protected readonly ariaLive = computed<'polite' | 'assertive' | null>(() => this.resolveAriaLive());\n\n private readonly resolvedAnnouncement = computed<'polite' | 'assertive' | 'off'>(() => {\n const announcement = this.announcement();\n if (announcement === 'auto') {\n return this.variant() === 'error' ? 'assertive' : 'polite';\n }\n return announcement;\n });\n\n private resolveIconName(): LoroIconName {\n switch (this.variant()) {\n case 'success':\n return 'tick-circle';\n case 'warning':\n case 'error':\n return 'shield-alert';\n default:\n return 'info';\n }\n }\n\n private resolveVariantIconColor(): LoroIconColor {\n switch (this.variant()) {\n case 'success':\n return 'success';\n\n case 'warning':\n return 'warning';\n\n case 'error':\n return 'danger';\n\n case 'neutral':\n return 'muted';\n\n case 'info':\n default:\n return 'primary';\n }\n }\n\n private resolveRole(): 'status' | 'alert' | null {\n const announcement = this.resolvedAnnouncement();\n\n if (announcement === 'off') {\n return null;\n }\n\n return announcement === 'assertive' ? 'alert' : 'status';\n }\n\n private resolveAriaLive(): 'polite' | 'assertive' | null {\n const announcement = this.resolvedAnnouncement();\n\n return announcement === 'off' ? null : announcement;\n }\n}\n","<aside\n class=\"loro-alert\"\n [class]=\"'loro-alert loro-alert--' + variant()\"\n [attr.role]=\"role()\"\n [attr.aria-live]=\"ariaLive()\"\n [attr.aria-atomic]=\"role() ? 'true' : null\"\n>\n <loro-icon [name]=\"resolvedIcon()\" [size]=\"20\" [alt]=\"''\" [color]=\"resolvedIconColor()\" />\n\n <div class=\"loro-alert__content\">\n @if (title()) {\n <strong class=\"loro-alert__title\">{{ title() }}</strong>\n }\n\n <div class=\"loro-alert__message\">\n @if (message()) {\n <p>{{ message() }}</p>\n }\n </div>\n\n @if (actionLabel()) {\n <loro-button\n [text]=\"actionLabel()\"\n variant=\"tertiary\"\n [iconColor]=\"actionIconColor()\"\n (buttonClick)=\"action.emit()\"\n ></loro-button>\n }\n </div>\n\n @if (dismissible()) {\n <loro-button\n icon=\"x\"\n variant=\"tertiary\"\n [iconOnly]=\"true\"\n [iconColor]=\"actionIconColor()\"\n [ariaLabel]=\"dismissLabel()\"\n (buttonClick)=\"dismissed.emit()\"\n ></loro-button>\n }\n</aside>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { LoroIcon } from '../../resources/loro-icon';\n\n@Component({\n selector: 'loro-notification',\n \n templateUrl: './loro-notification.html',\n styleUrl: './loro-notification.scss',standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoroNotification {\n count = input<number>(0);\n maxCount = input<number>(9);\n showZero = input<boolean>(false);\n active = input<boolean>(false);\n expanded = input<boolean | null>(null);\n disabled = input<boolean>(false);\n ariaLabel = input<string>('Notifications');\n iconSize = input<number>(25);\n notificationClick = output<void>();\n\n protected readonly showBadge = computed(() => this.count() > 0 || this.showZero());\n protected readonly badgeLabel = computed(() => {\n const count = Math.max(0, this.count());\n const maxCount = Math.max(1, this.maxCount());\n\n return count > maxCount ? `${maxCount}+` : count.toString();\n });\n protected readonly badgeAriaLabel = computed(() => `${this.badgeLabel()} unread notifications`);\n}\n","<button\n type=\"button\"\n class=\"loro-notification\"\n [class.loro-notification--active]=\"active()\"\n [class.loro-notification--disabled]=\"disabled()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-expanded]=\"expanded()\"\n (click)=\"notificationClick.emit()\">\n <loro-icon name=\"bell\" [size]=\"iconSize()\" alt=\"\" [decorative]=\"true\" color=\"primary\" />\n @if (showBadge()) {\n <span class=\"loro-notification__badge\" [attr.aria-label]=\"badgeAriaLabel()\">\n {{ badgeLabel() }}\n </span>\n }\n </button>","import { ChangeDetectionStrategy, Component, input, output, signal } from '@angular/core';\nimport { LoroIcon, type LoroIconName } from '../../resources/loro-icon';\n\n@Component({\n selector: 'loro-notification-row',\n \n templateUrl: './loro-notification-row.html',\n styleUrl: './loro-notification-row.scss',standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoroNotificationRow {\n title = input.required<string>();\n message = input.required<string>();\n time = input<string>('');\n icon = input<LoroIconName>('info');\n unread = input<boolean>(false);\n rowClick = output<void>();\n rowRemove = output<void>();\n\n protected readonly dragX = signal(0);\n protected readonly dragging = signal(false);\n protected readonly armed = signal(false);\n protected readonly removing = signal(false);\n\n private touchStartX = 0;\n private touchStartY = 0;\n private clickSuppressed = false;\n private static readonly REVEAL_PX = 96;\n private static readonly MAX_PX = 164;\n private static readonly DELETE_EXTRA_PX = 44;\n\n protected onTouchStart(event: TouchEvent): void {\n const touch = event.touches[0];\n\n if (!touch || this.removing()) {\n return;\n }\n\n this.touchStartX = touch.clientX;\n this.touchStartY = touch.clientY;\n this.clickSuppressed = false;\n this.dragging.set(true);\n }\n\n protected onTouchMove(event: TouchEvent): void {\n const touch = event.touches[0];\n\n if (!touch || this.removing()) {\n return;\n }\n\n const deltaX = touch.clientX - this.touchStartX;\n const deltaY = touch.clientY - this.touchStartY;\n\n if (Math.abs(deltaY) > Math.abs(deltaX) && Math.abs(deltaY) > 8) {\n this.resetDrag();\n return;\n }\n\n const nextX = this.armed()\n ? Math.max(\n -LoroNotificationRow.MAX_PX,\n Math.min(-LoroNotificationRow.REVEAL_PX, -LoroNotificationRow.REVEAL_PX + deltaX),\n )\n : Math.min(0, Math.max(deltaX, -LoroNotificationRow.MAX_PX));\n this.dragX.set(nextX);\n this.clickSuppressed = nextX < -8;\n }\n\n protected onTouchEnd(): void {\n if (this.removing()) {\n return;\n }\n\n const offset = this.dragX();\n this.dragging.set(false);\n\n if (this.armed()) {\n if (offset <= -(LoroNotificationRow.REVEAL_PX + LoroNotificationRow.DELETE_EXTRA_PX)) {\n this.startRemove();\n return;\n }\n\n if (offset > -(LoroNotificationRow.REVEAL_PX - 18)) {\n this.armed.set(false);\n this.dragX.set(0);\n return;\n }\n\n this.dragX.set(-LoroNotificationRow.REVEAL_PX);\n this.clickSuppressed = true;\n return;\n }\n\n if (offset <= -LoroNotificationRow.REVEAL_PX) {\n this.armed.set(true);\n this.dragX.set(-LoroNotificationRow.REVEAL_PX);\n this.clickSuppressed = true;\n return;\n }\n\n this.dragX.set(0);\n }\n\n protected resetDrag(): void {\n if (this.removing()) {\n return;\n }\n\n this.dragging.set(false);\n this.dragX.set(this.armed() ? -LoroNotificationRow.REVEAL_PX : 0);\n }\n\n protected onRowClick(): void {\n if (this.clickSuppressed || this.removing() || this.armed()) {\n this.clickSuppressed = false;\n return;\n }\n\n this.rowClick.emit();\n }\n\n protected onRowKeydown(event: Event): void {\n event.preventDefault();\n this.onRowClick();\n }\n\n protected onDeleteClick(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.startRemove();\n }\n\n private startRemove(): void {\n this.armed.set(false);\n this.removing.set(true);\n this.dragX.set(-LoroNotificationRow.MAX_PX);\n window.setTimeout(() => this.rowRemove.emit(), 180);\n }\n}\n","<div\n class=\"loro-notification-row-shell\"\n data-horizontal-gesture\n [class.loro-notification-row-shell--dragging]=\"dragging()\"\n [class.loro-notification-row-shell--armed]=\"armed()\"\n [class.loro-notification-row-shell--removing]=\"removing()\"\n (touchstart)=\"onTouchStart($event)\"\n (touchmove)=\"onTouchMove($event)\"\n (touchend)=\"onTouchEnd()\"\n (touchcancel)=\"resetDrag()\">\n <button\n type=\"button\"\n class=\"loro-notification-row-shell__delete\"\n aria-label=\"Eliminar notificacion\"\n (pointerdown)=\"$event.stopPropagation()\"\n (touchstart)=\"$event.stopPropagation()\"\n (click)=\"onDeleteClick($event)\">\n <loro-icon name=\"trash-white\" [size]=\"22\" alt=\"\" [decorative]=\"true\" color=\"inverse\" />\n <span>Eliminar</span>\n </button>\n <article\n role=\"button\"\n tabindex=\"0\"\n class=\"loro-notification-row\"\n [class.loro-notification-row--unread]=\"unread()\"\n [style.transform]=\"'translate3d(' + dragX() + 'px, 0, 0)'\"\n (click)=\"onRowClick()\"\n (keydown.enter)=\"onRowKeydown($event)\"\n (keydown.space)=\"onRowKeydown($event)\">\n <span class=\"loro-notification-row__icon\">\n <loro-icon [name]=\"icon()\" [size]=\"26\" [alt]=\"title()\" color=\"primary\" />\n </span>\n <span class=\"loro-notification-row__content\">\n <span class=\"loro-notification-row__meta\">\n <strong>{{ title() }}</strong>\n @if (time()) {\n <small>{{ time() }}</small>\n }\n </span>\n <span class=\"loro-notification-row__message\">{{ message() }}</span>\n </span>\n @if (unread()) {\n <span class=\"loro-notification-row__dot\" aria-label=\"Unread\"></span>\n }\n <button\n type=\"button\"\n class=\"loro-notification-row__delete-button\"\n aria-label=\"Eliminar notificacion\"\n (click)=\"onDeleteClick($event)\">\n <loro-icon name=\"trash\" [size]=\"18\" alt=\"\" [decorative]=\"true\" color=\"danger\" />\n </button>\n </article>\n </div>","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { LoroIcon, type LoroIconName } from '../../resources/loro-icon';\nimport { LoroNotificationRow } from '../loro-notification-row/loro-notification-row';\n\nexport interface LoroNotificationItem {\n id: string;\n title: string;\n message: string;\n time?: string;\n icon?: LoroIconName;\n unread?: boolean;\n}\n\n@Component({\n selector: 'loro-notification-panel',\n \n templateUrl: './loro-notification-panel.html',\n styleUrl: './loro-notification-panel.scss',standalone: true,\n imports: [LoroIcon, LoroNotificationRow],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroNotificationPanel {\n title = input<string>('Notifications');\n items = input<ReadonlyArray<LoroNotificationItem>>([]);\n presentation = input<'dropdown' | 'sheet'>('dropdown');\n showMarkAll = input<boolean>(true);\n markAllLabel = input<string>('Mark all as read');\n showClearAll = input<boolean>(true);\n clearAllLabel = input<string>('Delete notifications');\n emptyIcon = input<LoroIconName>('bell');\n emptyTitle = input<string>('No new notifications');\n emptyMessage = input<string>('When there is something new, it will appear here.');\n itemClick = output<LoroNotificationItem>();\n itemRemove = output<LoroNotificationItem>();\n markAllRead = output<void>();\n clearAll = output<void>();\n protected readonly hasUnread = computed(() => this.items().some((item) => !!item.unread));\n\n protected onMarkAllReadClick(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.markAllRead.emit();\n }\n\n protected onClearAllClick(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.clearAll.emit();\n }\n}\n","<section\n class=\"loro-notification-panel\"\n [class.loro-notification-panel--sheet]=\"presentation() === 'sheet'\"\n [class.loro-notification-panel--empty]=\"items().length === 0\"\n >\n @if (presentation() === 'sheet') {\n <span class=\"loro-notification-panel__handle\" aria-hidden=\"true\"></span>\n }\n <header class=\"loro-notification-panel__header\">\n <h2>{{ title() }}</h2>\n @if (items().length > 0) {\n <div class=\"loro-notification-panel__actions\">\n @if (showMarkAll() && hasUnread()) {\n <button\n type=\"button\"\n (pointerdown)=\"$event.stopPropagation()\"\n (touchstart)=\"$event.stopPropagation()\"\n (click)=\"onMarkAllReadClick($event)\"\n >\n {{ markAllLabel() }}\n </button>\n } @else if (showClearAll()) {\n <button\n type=\"button\"\n (pointerdown)=\"$event.stopPropagation()\"\n (touchstart)=\"$event.stopPropagation()\"\n (click)=\"onClearAllClick($event)\"\n >\n {{ clearAllLabel() }}\n </button>\n }\n </div>\n }\n </header>\n\n @if (items().length > 0) {\n <div class=\"loro-notification-panel__list\">\n @for (item of items(); track item.id) {\n <loro-notification-row\n [title]=\"item.title\"\n [message]=\"item.message\"\n [time]=\"item.time || ''\"\n [icon]=\"item.icon || 'info'\"\n [unread]=\"!!item.unread\"\n (rowClick)=\"itemClick.emit(item)\"\n (rowRemove)=\"itemRemove.emit(item)\"\n />\n }\n </div>\n } @else {\n <div class=\"loro-notification-panel__empty\">\n <span class=\"loro-notification-panel__empty-icon\">\n <loro-icon [name]=\"emptyIcon()\" [size]=\"64\" [alt]=\"emptyTitle()\" color=\"primary\" />\n </span>\n <strong>{{ emptyTitle() }}</strong>\n <p>{{ emptyMessage() }}</p>\n </div>\n }\n </section>","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { LoroImage, type LoroImageName } from '../../resources/loro-image/loro-image';\n\n@Component({\n selector: 'loro-spinner',\n standalone: true,\n imports: [LoroImage],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './loro-spinner.html',\n styleUrl: './loro-spinner.scss',\n})\nexport class LoroSpinner {\n protected readonly iconName = 'image-loro-icon-default' satisfies LoroImageName;\n\n readonly message = input('Cargando...');\n readonly ariaLabel = input('Cargando contenido');\n\n readonly showBrand = input(true);\n readonly brandText = input('AlLoro');\n readonly showMessage = input(true);\n readonly showDots = input(true);\n}\n","<div class=\"loro-spinner\" role=\"status\" aria-live=\"polite\" [attr.aria-label]=\"ariaLabel()\">\n <div class=\"loro-spinner__panel\">\n <loro-image class=\"loro-spinner__image\" [name]=\"iconName\" />\n\n @if (showBrand()) {\n <strong class=\"loro-spinner__brand\">{{ brandText() }}</strong>\n }\n\n @if (showMessage()) {\n <p class=\"loro-spinner__message\">{{ message() }}</p>\n }\n\n @if (showDots()) {\n <div class=\"loro-spinner__dots\" aria-hidden=\"true\">\n <span></span>\n <span></span>\n <span></span>\n </div>\n }\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { LoroIcon } from '../../resources/loro-icon';\n\nexport type LoroToastVariant = 'loading' | 'success' | 'info' | 'warning' | 'error';\nexport type LoroToastPosition = 'top-right' | 'bottom-right' | 'bottom-center' | 'inline';\n\n@Component({\n selector: 'loro-toast',\n \n templateUrl: './loro-toast.html',\n styleUrl: './loro-toast.scss',standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.loro-toast-host--inline]': \"position() === 'inline'\",\n }\n})\nexport class LoroToast {\n message = input.required<string>();\n variant = input<LoroToastVariant>('info');\n position = input<LoroToastPosition>('bottom-right');\n visible = input<boolean>(true);\n dismissible = input<boolean>(true);\n dismiss = output<void>();\n\n protected resolvedIcon(): 'check' | 'info' | 'warning' | 'shield-alert' {\n switch (this.variant()) {\n case 'success':\n return 'check';\n case 'warning':\n return 'warning';\n case 'error':\n return 'shield-alert';\n default:\n return 'info';\n }\n }\n\n protected iconColor(): 'success' | 'danger' | 'warning' | 'primary' {\n switch (this.variant()) {\n case 'success':\n return 'success';\n case 'warning':\n return 'warning';\n case 'error':\n return 'danger';\n default:\n return 'primary';\n }\n }\n}\n","@if (visible()) {\n <aside\n class=\"loro-toast\"\n [class]=\"'loro-toast loro-toast--' + variant() + ' loro-toast--' + position()\"\n [attr.role]=\"variant() === 'error' ? 'alert' : 'status'\">\n <span class=\"loro-toast__icon\">\n @if (variant() === 'loading') {\n <span class=\"loro-toast__spinner\" aria-hidden=\"true\"></span>\n } @else {\n <loro-icon [name]=\"resolvedIcon()\" [size]=\"24\" [alt]=\"message()\" [color]=\"iconColor()\" />\n }\n </span>\n <span>{{ message() }}</span>\n @if (dismissible()) {\n <button type=\"button\" (click)=\"dismiss.emit()\" aria-label=\"Dismiss notification\">x</button>\n }\n </aside>\n }","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n} from '@angular/core';\nimport type {\n FormCheckboxControl,\n ValidationError,\n WithOptionalFieldTree,\n} from '@angular/forms/signals';\n\n@Component({\n selector: 'loro-checkbox',\n \n templateUrl: './loro-checkbox.html',\n styleUrl: './loro-checkbox.scss',standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroCheckbox implements FormCheckboxControl {\n checked = model(false);\n touched = model(false);\n disabled = input(false);\n readonly = input(false);\n required = input(false);\n invalid = input(false);\n errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n helperText = input('');\n text = input('');\n\n protected readonly errorText = computed(() => this.errors()[0]?.message?.trim() ?? '');\n protected readonly showError = computed(() => this.errorText().length > 0 || (this.invalid() && this.touched()));\n\n protected toggle(checked: boolean): void {\n if (this.disabled() || this.readonly()) {\n return;\n }\n\n this.checked.set(checked);\n }\n}\n","<label\n class=\"loro-checkbox\"\n [class.loro-checkbox--checked]=\"checked()\"\n [class.loro-checkbox--invalid]=\"showError()\"\n [class.loro-checkbox--disabled]=\"disabled()\"\n >\n <input\n type=\"checkbox\"\n class=\"loro-checkbox__native\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [readonly]=\"readonly()\"\n (change)=\"toggle(($any($event.target).checked))\"\n (blur)=\"touched.set(true)\"\n />\n <span class=\"loro-checkbox__box\" aria-hidden=\"true\"></span>\n <span class=\"loro-checkbox__content\">\n <span class=\"loro-checkbox__label\">\n @if (text()) {\n {{ text() }}\n } @else {\n <ng-content></ng-content>\n }\n </span>\n @if (errorText()) {\n <span class=\"loro-checkbox__error\">{{ errorText() }}</span>\n } @else if (helperText()) {\n <span class=\"loro-checkbox__helper\">{{ helperText() }}</span>\n }\n </span>\n </label>","import { ChangeDetectionStrategy, Component, input, model, output } from '@angular/core';\nimport type { FormValueControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\nimport { LoroIcon } from '../../resources/loro-icon';\n\nexport interface LoroDropdownOption {\n label: string;\n value: string;\n}\n\n@Component({\n selector: 'loro-dropdown',\n \n templateUrl: './loro-dropdown.html',\n styleUrl: './loro-dropdown.scss',standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoroDropdown implements FormValueControl<string> {\n label = input<string>('');\n placeholder = input<string>('');\n value = model<string>('');\n options = input<ReadonlyArray<LoroDropdownOption>>([]);\n disabled = input(false);\n readonly = input(false);\n required = input(false);\n invalid = input(false);\n errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n touched = model(false);\n valueChange = output<string>();\n\n protected updateValue(value: string): void {\n this.value.set(value);\n this.valueChange.emit(value);\n }\n\n protected markAsTouched(): void {\n this.touched.set(true);\n }\n}\n","<label class=\"loro-dropdown\">\n @if (label()) {\n <span class=\"loro-dropdown__label\">{{ label() }}</span>\n }\n <span class=\"loro-dropdown__control\">\n <select [value]=\"value()\" [disabled]=\"disabled() || readonly()\" [required]=\"required()\" (change)=\"updateValue(($any($event.target).value ?? '').toString())\" (blur)=\"markAsTouched()\">\n @if (placeholder()) {\n <option value=\"\" disabled>{{ placeholder() }}</option>\n }\n @for (option of options(); track option.value) {\n <option [value]=\"option.value\">{{ option.label }}</option>\n }\n </select>\n <loro-icon name=\"chevron-down\" [size]=\"22\" alt=\"Abrir opciones\" color=\"primary\" />\n </span>\n </label>","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { LoroIcon, type LoroIconName } from '../../resources/loro-icon';\n\n@Component({\n selector: 'loro-filter-chip',\n \n templateUrl: './loro-filter-chip.html',\n styleUrl: './loro-filter-chip.scss',standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoroFilterChip {\n label = input.required<string>();\n value = input<string>('');\n icon = input<LoroIconName | null>(null);\n active = input<boolean>(false);\n selected = output<string>();\n}\n","<button type=\"button\" class=\"loro-filter-chip\" [class.loro-filter-chip--active]=\"active()\" (click)=\"selected.emit(value())\">\n @if (icon()) {\n <loro-icon [name]=\"icon()!\" [size]=\"20\" [alt]=\"label()\" [color]=\"active() ? 'inverse' : 'primary'\" />\n }\n <span>{{ label() }}</span>\n </button>","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n input,\n model,\n output,\n viewChild,\n} from '@angular/core';\nimport type {\n FormValueControl,\n ValidationError,\n WithOptionalFieldTree,\n} from '@angular/forms/signals';\nimport { LoroIcon, type LoroIconColor, type LoroIconName } from '../../resources/loro-icon';\n\nexport type LoroInputUnit = 'kg' | 'ud';\nexport type LoroInputVariant = 'default' | 'withIcon' | 'search' | 'photo' | 'stepper' | 'auth';\nexport type LoroInputState = 'default' | 'error' | 'success' | 'loading';\n\n\nfunction optionalNumberAttribute(value: unknown): number | undefined {\n if (value === undefined || value === null || value === '') {\n return undefined;\n }\n\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : undefined;\n}\n\nlet nextLoroInputId = 0;\n\n@Component({\n selector: 'loro-input',\n \n templateUrl: './loro-input.html',\n styleUrl: './loro-input.scss',standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroInput implements FormValueControl<string> {\n label = input<string>('');\n placeholder = input<string>('');\n helperText = input<string>('');\n value = model('');\n type = input<'text' | 'email' | 'tel' | 'password' | 'search'>('text');\n name = input<string>('');\n autocomplete = input<string>('');\n inputmode = input<'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search' | ''>('');\n icon = input<LoroIconName | null>(null);\n iconSize = input<number>(24);\n trailingIcon = input<LoroIconName | null>(null);\n trailingIconSize = input<number>(24);\n trailingAriaLabel = input<string>('');\n variant = input<LoroInputVariant>('default');\n selected = input(false);\n state = input<LoroInputState>('default');\n errorMessage = input<string>('');\n errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n invalid = input(false);\n disabled = input(false);\n readonly = input<boolean>(false);\n required = input(false);\n touched = model(false);\n unit = input<string>('ud');\n step = input<number>(1);\n min = input<number | undefined, unknown>(undefined, {\n transform: optionalNumberAttribute,\n });\n max = input<number | undefined, unknown>(undefined, {\n transform: optionalNumberAttribute,\n });\n trailingClick = output<void>();\n private readonly control = viewChild<ElementRef<HTMLInputElement>>('control');\n protected readonly errorId = `loro-input-error-${++nextLoroInputId}`;\n protected readonly errorText = computed(() => {\n const manualMessage = this.errorMessage().trim();\n\n if (manualMessage) {\n return manualMessage;\n }\n\n return this.errors()[0]?.message?.trim() ?? '';\n });\n protected readonly hasError = computed(\n () =>\n this.state() === 'error'\n || this.errorText().length > 0\n || (this.invalid() && this.touched()),\n );\n protected readonly hasSuccess = computed(\n () => this.state() === 'success' && !this.hasError(),\n );\n protected readonly hasLoading = computed(\n () => this.state() === 'loading' && !this.hasError(),\n );\n protected readonly isAuthVariant = computed(() => this.variant() === 'auth');\n protected readonly passwordVisible = model(false);\n protected readonly showPasswordToggle = computed(\n () => this.isAuthVariant() && this.type() === 'password',\n );\n protected readonly resolvedType = computed(() =>\n this.showPasswordToggle() && this.passwordVisible() ? 'text' : this.type(),\n );\n protected readonly resolvedLeadingIconColor = computed<LoroIconColor>(() =>\n this.hasError() ? 'danger' : this.hasSuccess() ? 'success' : this.isAuthVariant() ? 'primary-deep' : 'primary',\n );\n protected readonly resolvedTrailingIconColor = computed<LoroIconColor>(() =>\n this.trailingIcon() === 'eye' || this.trailingIcon() === 'eye-off'\n ? 'muted'\n : this.hasError() ? 'danger' : this.hasSuccess() ? 'success' : 'muted',\n );\n\n focus(options?: FocusOptions): void {\n this.control()?.nativeElement.focus(options);\n }\n\n protected adjust(delta: number): void {\n const value = this.coerceNumber(this.value());\n const nextValue = this.clampValue(value + delta);\n\n this.value.set(this.formatValue(nextValue));\n this.touched.set(true);\n }\n\n protected normalizeValue(value: string): void {\n this.value.set(this.formatValue(this.clampValue(this.coerceNumber(value))));\n this.touched.set(true);\n }\n\n protected updateValue(value: string): void {\n this.value.set(value);\n }\n\n protected markAsTouched(): void {\n this.touched.set(true);\n }\n\n protected togglePasswordVisibility(): void {\n this.passwordVisible.update((value) => !value);\n }\n\n private coerceNumber(value: string): number {\n const parsed = Number(value.replace(',', '.'));\n\n return Number.isFinite(parsed) ? parsed : (this.min() ?? 0);\n }\n\n private formatValue(value: number): string {\n if (this.normalizedUnit() === 'ud') {\n return Math.round(value).toString();\n }\n\n return Number(value.toFixed(1)).toLocaleString('es-ES', {\n minimumFractionDigits: Number.isInteger(value) ? 0 : 1,\n maximumFractionDigits: 1,\n });\n }\n\n protected normalizedUnit(): LoroInputUnit {\n return this.unit() === 'kg' ? 'kg' : 'ud';\n }\n\n protected stepperInputSize(): number {\n return this.normalizedUnit() === 'kg' ? 4 : 3;\n }\n\n protected stepperInputMaxLength(): number {\n return this.normalizedUnit() === 'kg' ? 4 : 3;\n }\n\n protected sanitizeStepperInput(event: Event): void {\n const input = event.target;\n\n if (!(input instanceof HTMLInputElement)) {\n return;\n }\n\n const value = this.sanitizeValue(input.value);\n\n if (input.value !== value) {\n input.value = value;\n }\n\n if (value === '' || value === ',' || value === '.') {\n return;\n }\n\n const formatted = this.formatValue(this.clampValue(this.coerceNumber(value)));\n input.value = formatted;\n this.value.set(formatted);\n }\n\n private clampValue(value: number): number {\n const min = this.min() ?? 0;\n const max = this.max() ?? 100;\n\n return Math.min(max, Math.max(min, value));\n }\n\n private sanitizeValue(value: string): string {\n if (this.normalizedUnit() === 'ud') {\n return value.replace(/\\D/g, '').slice(0, this.stepperInputMaxLength());\n }\n\n const normalized = value.replace(/\\./g, ',').replace(/[^\\d,]/g, '');\n const [integer = '', decimal = ''] = normalized.split(',');\n const nextInteger = integer.slice(0, 3);\n const nextDecimal = decimal.slice(0, 1);\n\n return normalized.includes(',') ? `${nextInteger},${nextDecimal}` : nextInteger.slice(0, 3);\n }\n}\n","@if (variant() === 'stepper') {\n <span\n class=\"loro-input loro-input--stepper-field\"\n [class.loro-input--error]=\"hasError()\"\n [class.loro-input--success]=\"hasSuccess()\"\n >\n @if (label()) {\n <span class=\"loro-input__label\">{{ label() }}</span>\n }\n <span\n class=\"loro-input--stepper\"\n [class.loro-input--stepper-kg]=\"normalizedUnit() === 'kg'\"\n [class.loro-input--stepper-ud]=\"normalizedUnit() === 'ud'\"\n role=\"group\"\n [attr.aria-label]=\"label() || 'Cantidad'\"\n >\n <button type=\"button\" aria-label=\"Restar\" [disabled]=\"disabled()\" (click)=\"adjust(-step())\">-</button>\n <span class=\"loro-input__stepper-value\">\n <input\n #control\n [attr.inputmode]=\"normalizedUnit() === 'kg' ? 'decimal' : 'numeric'\"\n [attr.size]=\"stepperInputSize()\"\n [attr.maxlength]=\"stepperInputMaxLength()\"\n [attr.max]=\"max()\"\n [attr.min]=\"min()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [required]=\"required()\"\n [attr.aria-label]=\"label() || 'Cantidad'\"\n [attr.aria-invalid]=\"hasError() ? 'true' : null\"\n [attr.aria-describedby]=\"hasError() && errorText() ? errorId : null\"\n (keydown.enter)=\"$any($event.target).blur()\"\n (input)=\"sanitizeStepperInput($event)\"\n (blur)=\"markAsTouched(); normalizeValue(($any($event.target).value ?? '').toString())\"\n />\n <span>{{ normalizedUnit() }}</span>\n </span>\n <button type=\"button\" aria-label=\"Sumar\" [disabled]=\"disabled()\" (click)=\"adjust(step())\">+</button>\n </span>\n @if (hasError() && errorText()) {\n <span class=\"loro-input__error\" [id]=\"errorId\">\n <loro-icon name=\"shield-alert\" [size]=\"16\" color=\"danger\" [decorative]=\"true\" />\n <span>{{ errorText() }}</span>\n </span>\n } @else if (hasLoading() && helperText()) {\n <span class=\"loro-input__loading\" aria-live=\"polite\">\n <span>{{ helperText() }}</span>\n </span>\n } @else if (hasSuccess() && helperText()) {\n <span class=\"loro-input__success\">\n <loro-icon name=\"check\" [size]=\"16\" color=\"success\" [decorative]=\"true\" />\n <span>{{ helperText() }}</span>\n </span>\n } @else if (helperText()) {\n <span class=\"loro-input__helper\">{{ helperText() }}</span>\n }\n </span>\n} @else {\n <label\n class=\"loro-input\"\n [class.loro-input--has-icon]=\"icon() || variant() === 'search'\"\n [class.loro-input--auth]=\"isAuthVariant()\"\n [class.loro-input--selected]=\"selected()\"\n [class.loro-input--error]=\"hasError()\"\n [class.loro-input--success]=\"hasSuccess()\"\n [class.loro-input--loading]=\"hasLoading()\"\n >\n @if (label()) {\n <span class=\"loro-input__label\">{{ label() }}</span>\n }\n <span class=\"loro-input__control\">\n @if (icon() || variant() === 'search') {\n <loro-icon\n [name]=\"icon() || 'search'\"\n [size]=\"iconSize()\"\n [alt]=\"label() || placeholder()\"\n [color]=\"resolvedLeadingIconColor()\"\n />\n }\n <input\n #control\n [type]=\"resolvedType()\"\n [attr.name]=\"name() || null\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [required]=\"required()\"\n [attr.autocomplete]=\"autocomplete() || null\"\n [attr.inputmode]=\"inputmode() || null\"\n [attr.aria-invalid]=\"hasError() ? 'true' : null\"\n [attr.aria-describedby]=\"hasError() && errorText() ? errorId : null\"\n (input)=\"updateValue(($any($event.target).value ?? '').toString())\"\n (blur)=\"markAsTouched()\"\n />\n @if (showPasswordToggle()) {\n <button\n type=\"button\"\n class=\"loro-input__trailing-button\"\n [attr.aria-label]=\"passwordVisible() ? 'Ocultar contenido' : 'Mostrar contenido'\"\n (click)=\"togglePasswordVisibility()\"\n >\n <loro-icon\n [name]=\"passwordVisible() ? 'eye-off' : 'eye'\"\n [size]=\"trailingIconSize()\"\n alt=\"\"\n [decorative]=\"true\"\n [color]=\"resolvedTrailingIconColor()\"\n />\n </button>\n } @else if (trailingIcon()) {\n <button\n type=\"button\"\n class=\"loro-input__trailing-button\"\n [attr.aria-label]=\"trailingAriaLabel() || null\"\n (click)=\"trailingClick.emit()\"\n >\n <loro-icon\n [name]=\"trailingIcon()!\"\n [size]=\"trailingIconSize()\"\n alt=\"\"\n [decorative]=\"true\"\n [color]=\"resolvedTrailingIconColor()\"\n />\n </button>\n }\n </span>\n @if (hasError() && errorText()) {\n <span class=\"loro-input__error\" [id]=\"errorId\">\n <loro-icon name=\"shield-alert\" [size]=\"16\" color=\"danger\" [decorative]=\"true\" />\n <span>{{ errorText() }}</span>\n </span>\n } @else if (hasLoading() && helperText()) {\n <span class=\"loro-input__loading\" aria-live=\"polite\">\n <span class=\"loro-input__loader\" aria-hidden=\"true\"></span>\n <span>{{ helperText() }}</span>\n </span>\n } @else if (hasSuccess() && helperText()) {\n <span class=\"loro-input__success\">\n <loro-icon name=\"check\" [size]=\"16\" color=\"success\" [decorative]=\"true\" />\n <span>{{ helperText() }}</span>\n </span>\n } @else if (helperText()) {\n <span class=\"loro-input__helper\">{{ helperText() }}</span>\n }\n </label>\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\n\nexport type LoroRadioVariant = 'default' | 'row';\n\n@Component({\n selector: 'loro-radio',\n \n templateUrl: './loro-radio.html',\n styleUrl: './loro-radio.scss',standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoroRadio {\n label = input.required<string>();\n value = input.required<string>();\n description = input<string>('');\n checked = input<boolean>(false);\n variant = input<LoroRadioVariant>('default');\n selected = output<string>();\n}\n","<button\n type=\"button\"\n class=\"loro-radio\"\n [class.loro-radio--row]=\"variant() === 'row'\"\n [class.loro-radio--checked]=\"checked()\"\n [attr.aria-pressed]=\"checked()\"\n (click)=\"selected.emit(value())\">\n @if (variant() !== 'row') {\n <span class=\"loro-radio__mark\"></span>\n }\n <span class=\"loro-radio__copy\">\n <span class=\"loro-radio__label\">{{ label() }}</span>\n @if (description()) {\n <span class=\"loro-radio__description\">{{ description() }}</span>\n }\n </span>\n @if (variant() === 'row') {\n <span class=\"loro-radio__mark\"></span>\n }\n </button>","import { ChangeDetectionStrategy, Component, input, model, output } from '@angular/core';\nimport type { FormValueControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\n\nexport interface LoroSegmentedOption {\n label: string;\n value: string;\n}\n\n@Component({\n selector: 'loro-segmented-control',\n \n templateUrl: './loro-segmented-control.html',\n styleUrl: './loro-segmented-control.scss',standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.--loro-segmented-count]': 'options().length'\n }\n})\nexport class LoroSegmentedControl implements FormValueControl<string> {\n options = input.required<ReadonlyArray<LoroSegmentedOption>>();\n value = model<string>('');\n disabled = input(false);\n readonly = input(false);\n required = input(false);\n invalid = input(false);\n errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n touched = model(false);\n valueChange = output<string>();\n\n protected selectValue(value: string): void {\n if (this.disabled() || this.readonly()) {\n return;\n }\n\n this.value.set(value);\n this.touched.set(true);\n this.valueChange.emit(value);\n }\n}\n","<div class=\"loro-segmented-control\" role=\"tablist\">\n @for (option of options(); track option.value) {\n <button\n type=\"button\"\n role=\"tab\"\n [attr.aria-selected]=\"value() === option.value\"\n [class.loro-segmented-control__button--active]=\"value() === option.value\"\n class=\"loro-segmented-control__button\"\n [disabled]=\"disabled() || readonly()\"\n (click)=\"selectValue(option.value)\">\n {{ option.label }}\n </button>\n }\n </div>","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { LoroBadge } from '../../actions/loro-badge/loro-badge';\nimport { LoroButton } from '../../actions/loro-button/loro-button';\nimport { LoroIcon, type LoroIconName } from '../../resources/loro-icon';\n\n@Component({\n selector: 'loro-select',\n \n templateUrl: './loro-select.html',\n styleUrl: './loro-select.scss',standalone: true,\n imports: [LoroBadge, LoroButton, LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoroSelect {\n title = input.required<string>();\n subtitle = input<string>('');\n meta = input<string>('');\n icon = input<LoroIconName>('phone');\n badge = input<string>('');\n status = input<string>('');\n selected = input<boolean>(false);\n actionLabel = input<string>('');\n action = output<void>();\n}\n","<article class=\"loro-select\" [class.loro-select--selected]=\"selected()\">\n <span class=\"loro-select__icon\">\n <loro-icon [name]=\"icon()\" [size]=\"44\" [alt]=\"title()\" color=\"primary-deep\" />\n </span>\n <div class=\"loro-select__copy\">\n <h3>{{ title() }} @if (badge()) {<loro-badge [label]=\"badge()\" variant=\"info\" />}</h3>\n <p>{{ subtitle() }}</p>\n <small>{{ meta() }}</small>\n </div>\n <div class=\"loro-select__side\">\n @if (status()) {\n <span class=\"loro-select__status\">{{ status() }}</span>\n }\n @if (actionLabel()) {\n <loro-button [text]=\"actionLabel()\" variant=\"secondary\" (buttonClick)=\"action.emit()\" />\n }\n </div>\n </article>\n","import { ChangeDetectionStrategy, Component, input, model, output } from '@angular/core';\nimport type { FormValueControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\n\nfunction optionalNumberAttribute(value: unknown): number | undefined {\n if (value === undefined || value === null || value === '') {\n return undefined;\n }\n\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : undefined;\n}\n\n@Component({\n selector: 'loro-text-area',\n \n templateUrl: './loro-text-area.html',\n styleUrl: './loro-text-area.scss',standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoroTextArea implements FormValueControl<string> {\n label = input<string>('');\n placeholder = input<string>('');\n value = model<string>('');\n maxLength = input<number | undefined, unknown>(undefined, {\n transform: optionalNumberAttribute,\n });\n disabled = input(false);\n readonly = input(false);\n required = input(false);\n invalid = input(false);\n errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n touched = model(false);\n valueChange = output<string>();\n\n protected updateValue(value: string): void {\n this.value.set(value);\n this.valueChange.emit(value);\n }\n\n protected markAsTouched(): void {\n this.touched.set(true);\n }\n}\n","<label class=\"loro-text-area\">\n @if (label()) {\n <span class=\"loro-text-area__label\">{{ label() }}</span>\n }\n <span class=\"loro-text-area__control\">\n <textarea\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [required]=\"required()\"\n [attr.maxlength]=\"maxLength()\"\n (input)=\"updateValue(($any($event.target).value ?? '').toString())\"\n (blur)=\"markAsTouched()\"></textarea>\n @if (maxLength()) {\n <span class=\"loro-text-area__counter\">{{ value().length }}/{{ maxLength() }}</span>\n }\n </span>\n </label>","import type { LoroToggleDefaults } from '../models/loro-toggle.model';\n\nexport const LORO_TOGGLE_DEFAULTS: LoroToggleDefaults = {\n checked: false,\n disabled: false,\n required: false,\n invalid: false,\n ariaLabel: 'Cambiar estado',\n};\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport type {\n FormCheckboxControl,\n ValidationError,\n WithOptionalFieldTree,\n} from '@angular/forms/signals';\n\nimport { LORO_TOGGLE_DEFAULTS } from './constants/loro-toggle.constants';\n\n@Component({\n selector: 'loro-toggle',\n templateUrl: './loro-toggle.html',\n styleUrl: './loro-toggle.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroToggle implements FormCheckboxControl {\n checked = model(LORO_TOGGLE_DEFAULTS.checked);\n disabled = input<boolean>(LORO_TOGGLE_DEFAULTS.disabled);\n required = input(LORO_TOGGLE_DEFAULTS.required);\n invalid = input(LORO_TOGGLE_DEFAULTS.invalid);\n errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n touched = model(false);\n ariaLabel = input<string>(LORO_TOGGLE_DEFAULTS.ariaLabel);\n\n protected readonly isChecked = computed(() => this.checked());\n protected readonly isDisabled = computed(() => this.disabled());\n\n protected toggle(): void {\n if (this.isDisabled()) {\n return;\n }\n\n this.checked.update((current) => !current);\n this.touched.set(true);\n }\n}\n","<button\n type=\"button\"\n class=\"loro-toggle\"\n [class.loro-toggle--checked]=\"isChecked()\"\n [class.loro-toggle--disabled]=\"isDisabled()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-pressed]=\"isChecked()\"\n (click)=\"toggle()\"\n>\n <span class=\"loro-toggle__thumb\"></span>\n</button>\n","import type { LoroCardSelectorAction } from './loro-card-selector.model';\n\nexport const LORO_CARD_SELECTOR_DEFAULT_ACTION: LoroCardSelectorAction = {\n ariaLabel: 'Eliminar archivo',\n icon: 'x',\n iconSize: 16,\n};\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\n\nimport { LoroButton } from '../../actions/loro-button/loro-button';\nimport { LORO_CARD_SELECTOR_DEFAULT_ACTION } from './loro-card-selector.constants';\nimport type { LoroCardSelectorAction, LoroCardSelectorMediaKind } from './loro-card-selector.model';\n\n@Component({\n selector: 'loro-card-selector',\n standalone: true,\n imports: [LoroButton],\n templateUrl: './loro-card-selector.html',\n styleUrl: './loro-card-selector.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroCardSelector {\n title = input.required<string>();\n description = input<string>('');\n mediaKind = input<LoroCardSelectorMediaKind>('other');\n mediaImage = input<string | null>(null);\n action = input<LoroCardSelectorAction>(LORO_CARD_SELECTOR_DEFAULT_ACTION);\n\n actionClick = output<void>();\n\n protected readonly hasMediaImage = computed(() => Boolean(this.mediaImage()));\n protected readonly resolvedMediaLabel = computed(() => {\n switch (this.mediaKind()) {\n case 'image':\n return 'IMG';\n case 'pdf':\n return 'PDF';\n case 'word':\n return 'DOC';\n case 'archive':\n return 'ZIP';\n default:\n return 'FILE';\n }\n });\n protected readonly resolvedAction = computed(() => this.action());\n\n protected onActionClick(): void {\n this.actionClick.emit();\n }\n}\n","<article class=\"loro-card-selector\">\n <span class=\"loro-card-selector__media\" aria-hidden=\"true\">\n @if (hasMediaImage()) {\n <img class=\"loro-card-selector__image\" [src]=\"mediaImage()!\" [alt]=\"title()\" />\n } @else {\n <span class=\"loro-card-selector__badge\" [class]=\"'loro-card-selector__badge loro-card-selector__badge--' + mediaKind()\">\n {{ resolvedMediaLabel() }}\n </span>\n }\n </span>\n\n <span class=\"loro-card-selector__copy\">\n <span class=\"loro-card-selector__title\">{{ title() }}</span>\n @if (description()) {\n <span class=\"loro-card-selector__description\">{{ description() }}</span>\n }\n </span>\n\n <span class=\"loro-card-selector__action\">\n <loro-button\n variant=\"tertiary\"\n [iconOnly]=\"true\"\n [icon]=\"resolvedAction().icon\"\n [iconSize]=\"resolvedAction().iconSize ?? 16\"\n iconColor=\"var(--loro-danger-text)\"\n [ariaLabel]=\"resolvedAction().ariaLabel\"\n (buttonClick)=\"onActionClick()\"\n />\n </span>\n</article>\n","import type { LoroUploadVariant } from '../models/loro-upload.model';\n\nexport const LORO_UPLOAD_DEFAULTS = {\n label: 'Adjuntar archivos',\n title: 'Haz clic para seleccionar archivos o arrastra y suelta aquí',\n description: 'PNG, JPG, GIF o PDF. Máx. 10 MB por archivo',\n errorMessage: '',\n variant: 'default' as LoroUploadVariant,\n multiple: true,\n maxFiles: 10,\n} as const;\n","export const LORO_FILE_KEY_SEPARATOR = '-';\n\nexport const formatLoroFileKey = (file: File): string =>\n `${file.name}${LORO_FILE_KEY_SEPARATOR}${file.size}${LORO_FILE_KEY_SEPARATOR}${file.lastModified}`;\n\nexport const dedupeLoroFiles = (files: readonly File[]): File[] => {\n const seen = new Set<string>();\n\n return files.filter((file) => {\n const key = formatLoroFileKey(file);\n\n if (seen.has(key)) {\n return false;\n }\n\n seen.add(key);\n return true;\n });\n};\n\nexport const normalizeLoroMaxFiles = (maxFiles: number, multiple: boolean): number => {\n if (!multiple) {\n return 1;\n }\n\n return Math.max(1, Math.floor(maxFiles));\n};\n","export const formatLoroFileName = (name: string, maxLength = 44): string => {\n const normalizedName = name.trim().replace(/\\s+/g, ' ');\n\n if (normalizedName.length <= maxLength) {\n return normalizedName;\n }\n\n const lastDotIndex = normalizedName.lastIndexOf('.');\n const extension = lastDotIndex > 0 ? normalizedName.slice(lastDotIndex) : '';\n const baseName = lastDotIndex > 0 ? normalizedName.slice(0, lastDotIndex) : normalizedName;\n const availableLength = Math.max(maxLength - extension.length - 1, 16);\n const trimmedBase = baseName.slice(0, availableLength).trimEnd();\n\n return `${trimmedBase}…${extension}`;\n};\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n computed,\n ElementRef,\n inject,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport type { FormValueControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\n\nimport { LoroCardSelector } from '../../cards/selector/loro-card-selector';\nimport { LoroIcon } from '../../resources/loro-icon';\nimport { LORO_UPLOAD_DEFAULTS } from './constants/loro-upload.constants';\nimport type { LoroUploadFileView, LoroUploadVariant } from './models/loro-upload.model';\nimport { dedupeLoroFiles, formatLoroFileKey, normalizeLoroMaxFiles } from '../../../utils/loro-file.util';\nimport { formatLoroFileName } from '../../../utils/loro-file-format.util';\n\nlet nextLoroUploadId = 0;\n\n@Component({\n selector: 'loro-upload',\n standalone: true,\n imports: [LoroCardSelector, LoroIcon],\n templateUrl: './loro-upload.html',\n styleUrl: './loro-upload.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroUpload implements FormValueControl<File[]> {\n private readonly destroyRef = inject(DestroyRef);\n private readonly control = viewChild<ElementRef<HTMLInputElement>>('control');\n private readonly previewUrls = new Map<string, string>();\n private readonly cleanupPreviewUrls = this.destroyRef.onDestroy(() => {\n for (const url of this.previewUrls.values()) {\n URL.revokeObjectURL(url);\n }\n\n this.previewUrls.clear();\n });\n\n label = input<string>(LORO_UPLOAD_DEFAULTS.label);\n title = input<string>(LORO_UPLOAD_DEFAULTS.title);\n description = input<string>(LORO_UPLOAD_DEFAULTS.description);\n errorMessage = input<string>(LORO_UPLOAD_DEFAULTS.errorMessage);\n variant = input<LoroUploadVariant>(LORO_UPLOAD_DEFAULTS.variant);\n multiple = input<boolean>(LORO_UPLOAD_DEFAULTS.multiple);\n maxFiles = input<number>(LORO_UPLOAD_DEFAULTS.maxFiles);\n errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n\n touched = model(false);\n value = model<File[]>([]);\n protected readonly isDragging = model(false);\n protected readonly limitErrorMessage = signal('');\n protected readonly uploadId = `loro-upload-${++nextLoroUploadId}`;\n protected readonly errorText = computed(() => String(this.errors()[0]?.message ?? '').trim());\n protected readonly resolvedMaxFiles = computed(() => normalizeLoroMaxFiles(this.maxFiles(), this.multiple()));\n protected readonly resolvedVariant = computed<LoroUploadVariant>(() => {\n if (this.isLimitExceeded()) {\n return 'error';\n }\n\n if (this.variant() !== 'default') {\n return this.variant();\n }\n\n return this.hasFiles() ? 'success' : 'default';\n });\n protected readonly hasFiles = computed(() => this.value().length > 0);\n protected readonly isDisabled = computed(() => this.resolvedVariant() === 'disabled');\n protected readonly isLimitExceeded = computed(() => this.limitErrorMessage().length > 0);\n protected readonly resolvedErrorMessage = computed(() => {\n const limitMessage = this.limitErrorMessage().trim();\n\n if (limitMessage) {\n return limitMessage;\n }\n\n if (this.variant() !== 'error') {\n return '';\n }\n\n const manualMessage = String(this.errorMessage() ?? '').trim();\n\n if (manualMessage) {\n return manualMessage;\n }\n\n return this.errorText();\n });\n protected readonly displayFiles = computed<readonly LoroUploadFileView[]>(() =>\n this.value().map((file) => ({\n file,\n kind: this.resolveFileKind(file),\n displayName: formatLoroFileName(file.name),\n sizeLabel: this.formatFileSize(file.size),\n previewUrl: this.getPreviewUrl(file),\n })),\n );\n\n focus(options?: FocusOptions): void {\n this.control()?.nativeElement.focus(options);\n }\n\n protected onDragOver(event: DragEvent): void {\n if (this.isDisabled()) {\n return;\n }\n\n event.preventDefault();\n this.isDragging.set(true);\n }\n\n protected onDragLeave(event: DragEvent): void {\n if (this.isDisabled()) {\n return;\n }\n\n if (event.currentTarget === event.target) {\n this.isDragging.set(false);\n }\n }\n\n protected onDrop(event: DragEvent): void {\n if (this.isDisabled()) {\n return;\n }\n\n event.preventDefault();\n this.isDragging.set(false);\n this.commitFiles(event.dataTransfer?.files);\n }\n\n protected onInputChange(event: Event): void {\n if (this.isDisabled()) {\n return;\n }\n\n const target = event.target;\n\n if (!(target instanceof HTMLInputElement)) {\n return;\n }\n\n this.commitFiles(target.files);\n target.value = '';\n }\n\n protected removeFile(index: number): void {\n this.setFiles(this.value().filter((_, fileIndex) => fileIndex !== index));\n }\n\n protected trackByFileName(index: number, file: File): string {\n return `${file.name}-${file.size}-${index}`;\n }\n\n private commitFiles(fileList: FileList | null | undefined): void {\n if (!fileList || fileList.length === 0) {\n return;\n }\n\n const incomingFiles = Array.from(fileList);\n const maxFiles = this.resolvedMaxFiles();\n const mergedFiles = this.multiple() ? [...this.value(), ...incomingFiles] : incomingFiles.slice(0, 1);\n const dedupedFiles = dedupeLoroFiles(mergedFiles);\n const nextFiles = dedupedFiles.slice(0, maxFiles);\n const limitExceeded = this.multiple() ? dedupedFiles.length > maxFiles : false;\n\n this.setFiles(nextFiles, limitExceeded);\n }\n\n private setFiles(files: readonly File[], limitExceeded = false): void {\n this.syncPreviewUrls(files);\n this.value.set([...files]);\n this.limitErrorMessage.set(limitExceeded ? `Puedes subir como máximo ${this.resolvedMaxFiles()} archivos.` : '');\n this.touched.set(true);\n }\n\n private formatFileSize(bytes: number): string {\n const sizeInMb = bytes / 1024 / 1024;\n\n return `${sizeInMb.toFixed(sizeInMb >= 10 ? 0 : 1)} MB`;\n }\n\n private resolveFileKind(file: File): 'image' | 'pdf' | 'word' | 'archive' | 'other' {\n const extension = file.name.split('.').pop()?.toLowerCase() ?? '';\n const imageExtensions = new Set(['png', 'jpg', 'jpeg', 'gif', 'webp', 'bmp', 'svg']);\n const wordExtensions = new Set(['doc', 'docx', 'odt', 'rtf']);\n const archiveExtensions = new Set(['zip', 'rar', '7z', 'tar', 'gz']);\n\n if (file.type.startsWith('image/') || imageExtensions.has(extension)) {\n return 'image';\n }\n\n if (file.type === 'application/pdf' || extension === 'pdf') {\n return 'pdf';\n }\n\n if (wordExtensions.has(extension)) {\n return 'word';\n }\n\n if (archiveExtensions.has(extension)) {\n return 'archive';\n }\n\n return 'other';\n }\n\n private getPreviewUrl(file: File): string | null {\n if (this.resolveFileKind(file) !== 'image') {\n return null;\n }\n\n const key = formatLoroFileKey(file);\n const existing = this.previewUrls.get(key);\n\n if (existing) {\n return existing;\n }\n\n const url = URL.createObjectURL(file);\n this.previewUrls.set(key, url);\n return url;\n }\n\n private syncPreviewUrls(files: readonly File[]): void {\n const nextKeys = new Set(files.map((file) => formatLoroFileKey(file)));\n\n for (const [key, url] of this.previewUrls.entries()) {\n if (nextKeys.has(key)) {\n continue;\n }\n\n URL.revokeObjectURL(url);\n this.previewUrls.delete(key);\n }\n }\n\n}\n","<div\n class=\"loro-upload\"\n [class.loro-upload--dragging]=\"isDragging()\"\n [class.loro-upload--selected]=\"hasFiles()\"\n [class.loro-upload--error]=\"resolvedVariant() === 'error'\"\n [class.loro-upload--success]=\"resolvedVariant() === 'success'\"\n [class.loro-upload--info]=\"resolvedVariant() === 'info'\"\n [class.loro-upload--disabled]=\"resolvedVariant() === 'disabled'\"\n>\n @if (label()) {\n <button type=\"button\" class=\"loro-upload__label\" (click)=\"focus()\">{{ label() }}</button>\n }\n\n <label\n class=\"loro-upload__drop\"\n [attr.for]=\"uploadId\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n >\n <span class=\"loro-upload__icon\">\n <loro-icon name=\"paperclip\" [size]=\"24\" alt=\"\" color=\"primary\" />\n </span>\n\n <span class=\"loro-upload__copy\">\n <span class=\"loro-upload__title\">{{ title() }}</span>\n @if (description()) {\n <small class=\"loro-upload__description\">{{ description() }}</small>\n }\n </span>\n </label>\n\n <input\n #control\n [id]=\"uploadId\"\n class=\"loro-upload__input\"\n type=\"file\"\n [disabled]=\"isDisabled()\"\n [multiple]=\"multiple() && resolvedMaxFiles() > 1\"\n (change)=\"onInputChange($event)\"\n />\n\n @if (resolvedErrorMessage()) {\n <span class=\"loro-upload__error\">\n <span class=\"loro-upload__error-icon\">\n <loro-icon name=\"icon-warning\" [size]=\"18\" alt=\"\" color=\"danger\" />\n </span>\n <span class=\"loro-upload__error-message\">{{ resolvedErrorMessage() }}</span>\n </span>\n }\n\n @if (hasFiles()) {\n <div class=\"loro-upload__files\">\n @for (entry of displayFiles(); track trackByFileName($index, entry.file)) {\n <loro-card-selector\n [title]=\"entry.displayName\"\n [description]=\"entry.sizeLabel\"\n [mediaKind]=\"entry.kind\"\n [mediaImage]=\"entry.previewUrl\"\n [action]=\"{ ariaLabel: 'Eliminar archivo', icon: 'x', iconSize: 16 }\"\n (actionClick)=\"removeFile($index)\"\n />\n }\n </div>\n }\n</div>\n","import { Injectable } from '@angular/core';\n\n/**\n * Minimal touch-gesture helper for the modal sheet.\n *\n * Keeps swipe state isolated from the component so the modal can focus on\n * rendering and close orchestration.\n */\n@Injectable({ providedIn: 'root' })\nexport class LoroModalSwipeService {\n private startY: number | null = null;\n private currentY: number | null = null;\n\n /** Starts tracking a touch gesture only when it comes from a finger. */\n begin(pointerType: PointerEvent['pointerType'], clientY: number): void {\n if (pointerType !== 'touch') {\n return;\n }\n\n this.startY = clientY;\n this.currentY = clientY;\n }\n\n /** Updates the current finger position while the drag is active. */\n update(pointerType: PointerEvent['pointerType'], clientY: number): void {\n if (pointerType !== 'touch' || this.startY === null) {\n return;\n }\n\n this.currentY = clientY;\n }\n\n /**\n * Resolves the gesture and returns whether the sheet should close.\n * The service resets itself so the caller does not need extra cleanup.\n */\n finish(threshold: number): boolean {\n if (this.startY === null || this.currentY === null) {\n this.reset();\n return false;\n }\n\n const deltaY = this.currentY - this.startY;\n this.reset();\n\n return deltaY >= threshold;\n }\n\n /** Clears the internal gesture state. */\n reset(): void {\n this.startY = null;\n this.currentY = null;\n }\n\n /** Returns the current drag translation with a hard cap for stability. */\n offset(maxOffset: number): number {\n if (this.startY === null || this.currentY === null) {\n return 0;\n }\n\n const deltaY = Math.max(0, this.currentY - this.startY);\n\n return Math.min(deltaY, maxOffset);\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal } from '@angular/core';\nimport { LoroButton } from '../../actions/loro-button/loro-button';\nimport { LoroModalSwipeService } from '../../../services/loro-modal-swipe.service';\n\n@Component({\n selector: 'loro-modal',\n imports: [LoroButton],\n templateUrl: './loro-modal.html',\n styleUrl: './loro-modal.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroModal {\n private readonly document = inject(DOCUMENT);\n private readonly swipe = inject(LoroModalSwipeService);\n /** Mobile swipe closes after a deliberate downward pull. */\n private readonly closeDragThreshold = 72;\n /** Keeps body/html locked while the modal is open. */\n private readonly lockScrollEffect = effect((onCleanup) => {\n if (this.open()) {\n this.lockDocumentScroll(onCleanup);\n }\n });\n\n open = input<boolean>(false);\n title = input<string>('');\n ariaLabel = input<string>('');\n backdrop = input<boolean>(true);\n modalClose = output<void>();\n /** Tracks the sheet translation so the panel follows the finger. */\n protected readonly dragTranslateY = signal(0);\n /** Disables the transition while the finger is down. */\n protected readonly isDragging = signal(false);\n /** Applies the current drag offset without mutating layout flow. */\n protected readonly dialogTransform = computed(() => {\n const offset = this.dragTranslateY();\n\n return offset > 0 ? `translateY(${offset}px)` : 'translateY(0)';\n });\n\n protected requestClose(): void {\n this.modalClose.emit();\n }\n\n /** Starts the swipe gesture only for touch pointers. */\n protected onDragStart(event: PointerEvent): void {\n this.swipe.begin(event.pointerType, event.clientY);\n this.dragTranslateY.set(0);\n this.isDragging.set(true);\n }\n\n /** Keeps the dialog aligned with the active touch point. */\n protected onDragMove(event: PointerEvent): void {\n this.swipe.update(event.pointerType, event.clientY);\n this.dragTranslateY.set(this.swipe.offset(this.getMaxDragTranslateY()));\n }\n\n /** Closes only when the swipe crosses the configured threshold. */\n protected onDragEnd(): void {\n if (this.swipe.finish(this.closeDragThreshold)) {\n this.requestClose();\n }\n\n this.dragTranslateY.set(0);\n this.isDragging.set(false);\n }\n\n private lockDocumentScroll(onCleanup: (cleanupFn: () => void) => void): void {\n const body = this.document.body;\n const documentElement = this.document.documentElement;\n const previousBodyOverflow = body.style.overflow;\n const previousDocumentOverflow = documentElement.style.overflow;\n\n body.style.overflow = 'hidden';\n documentElement.style.overflow = 'hidden';\n body.classList.add('loro-modal-open');\n documentElement.classList.add('loro-modal-open');\n\n onCleanup(() => {\n body.style.overflow = previousBodyOverflow;\n documentElement.style.overflow = previousDocumentOverflow;\n body.classList.remove('loro-modal-open');\n documentElement.classList.remove('loro-modal-open');\n });\n }\n\n /** Caps the live translation so the sheet feels stable on small screens. */\n private getMaxDragTranslateY(): number {\n const viewportHeight = this.document.defaultView?.innerHeight ?? 0;\n\n return Math.max(0, Math.round(viewportHeight * 0.9));\n }\n}\n","@if (open()) {\n <div class=\"loro-modal\" role=\"presentation\">\n @if (backdrop()) {\n <button\n type=\"button\"\n class=\"loro-modal__backdrop\"\n aria-label=\"Cerrar modal\"\n (click)=\"requestClose()\"\n ></button>\n }\n <section\n class=\"loro-modal__dialog\"\n [class.loro-modal__dialog--dragging]=\"isDragging()\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"ariaLabel() || title()\"\n [style.transform]=\"dialogTransform()\"\n >\n <!-- Mobile-only drag affordance. Hidden on desktop. -->\n <button\n type=\"button\"\n class=\"loro-modal__drag-handle\"\n aria-label=\"Desliza hacia abajo para cerrar\"\n (pointerdown)=\"onDragStart($event)\"\n (pointermove)=\"onDragMove($event)\"\n (pointerup)=\"onDragEnd()\"\n (pointercancel)=\"onDragEnd()\"\n (pointerleave)=\"onDragEnd()\"\n >\n <span></span>\n </button>\n\n <header class=\"loro-modal__header\">\n @if (title()) {\n <h2>{{ title() }}</h2>\n }\n <!-- Desktop close action. Mobile users close via backdrop or swipe. -->\n <loro-button\n class=\"loro-modal__close\"\n icon=\"x\"\n variant=\"tertiary\"\n [iconOnly]=\"true\"\n ariaLabel=\"Cerrar modal\"\n (buttonClick)=\"requestClose()\"\n ></loro-button>\n </header>\n\n <!-- Default projected body content. -->\n <div class=\"loro-modal__content\">\n <ng-content />\n </div>\n\n <!-- Optional footer actions, hidden when nothing is projected. -->\n <div class=\"loro-modal__actions\">\n <ng-content select=\"[loro-modal-actions]\" />\n </div>\n </section>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { LoroButton } from '../../actions/loro-button/loro-button';\nimport { LoroNotification } from '../../feedback/loro-notification/loro-notification';\n\n@Component({\n selector: 'loro-header',\n standalone: true,\n imports: [LoroButton, LoroNotification],\n templateUrl: './loro-header.html',\n styleUrl: './loro-header.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroHeader {\n /** Centered page title shown in the header. */\n title = input.required<string>();\n /** Keeps the header fixed to the top when true. */\n fixed = input<boolean>(true);\n /** Shows or hides the back action on mobile. */\n showBack = input<boolean>(false);\n /** Unread notification badge count. */\n notificationCount = input<number>(0);\n /** Controls the notification trigger active state. */\n notificationOpen = input<boolean>(false);\n /** Accessible label for the header landmark. */\n accountSummaryAriaLabel = input.required<string>();\n /** Accessible label for the back button. */\n backAriaLabel = input.required<string>();\n /** Accessible label for the notification trigger. */\n notificationAriaLabel = input.required<string>();\n /** Accessible label for the AI action. */\n aiAriaLabel = input.required<string>();\n /** Accessible label for the settings action. */\n settingsAriaLabel = input.required<string>();\n /** Emits when the back action is pressed. */\n backClick = output<void>();\n /** Emits when the notification action is pressed. */\n notificationClick = output<void>();\n /** Emits when the AI action is pressed. */\n aiClick = output<void>();\n /** Emits when the settings action is pressed. */\n settingsClick = output<void>();\n}\n","<header\n class=\"loro-header\"\n [class.loro-header--fixed]=\"fixed()\"\n [attr.aria-label]=\"accountSummaryAriaLabel()\"\n>\n <div class=\"loro-header__section loro-header__section--leading\">\n @if (showBack()) {\n <loro-button\n class=\"loro-header__action loro-header__action--back\"\n variant=\"tertiary\"\n icon=\"back\"\n [iconOnly]=\"true\"\n [iconSize]=\"24\"\n [ariaLabel]=\"backAriaLabel()\"\n (buttonClick)=\"backClick.emit()\"\n />\n }\n <div class=\"loro-header__actions loro-header__actions--leading\">\n <loro-notification\n [count]=\"notificationCount()\"\n [active]=\"notificationOpen()\"\n [expanded]=\"notificationOpen()\"\n [iconSize]=\"24\"\n [ariaLabel]=\"notificationAriaLabel()\"\n (notificationClick)=\"notificationClick.emit()\"\n />\n <loro-button\n class=\"loro-header__action loro-header__action--ai-mobile\"\n variant=\"tertiary\"\n icon=\"chat\"\n [iconOnly]=\"true\"\n [iconSize]=\"22\"\n [ariaLabel]=\"aiAriaLabel()\"\n (buttonClick)=\"aiClick.emit()\"\n />\n </div>\n </div>\n\n <div class=\"loro-header__title-wrap\">\n <h1 class=\"loro-header__title\">{{ title() }}</h1>\n </div>\n\n <div class=\"loro-header__section loro-header__section--trailing\">\n <loro-button\n class=\"loro-header__action loro-header__action--ai-desktop\"\n variant=\"tertiary\"\n icon=\"chat\"\n [iconOnly]=\"true\"\n [iconSize]=\"22\"\n [ariaLabel]=\"aiAriaLabel()\"\n (buttonClick)=\"aiClick.emit()\"\n />\n <loro-button\n class=\"loro-header__action loro-header__action--settings\"\n variant=\"tertiary\"\n icon=\"settings\"\n [iconOnly]=\"true\"\n [iconSize]=\"22\"\n [ariaLabel]=\"settingsAriaLabel()\"\n (buttonClick)=\"settingsClick.emit()\"\n />\n <div class=\"loro-header__notification\">\n <loro-notification\n [count]=\"notificationCount()\"\n [active]=\"notificationOpen()\"\n [expanded]=\"notificationOpen()\"\n [iconSize]=\"24\"\n [ariaLabel]=\"notificationAriaLabel()\"\n (notificationClick)=\"notificationClick.emit()\"\n />\n </div>\n </div>\n</header>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["optionalNumberAttribute"],"mappings":"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"}
1
+ {"version":3,"file":"juligc99-loro-ui.mjs","sources":["../../../projects/loro-ui/src/lib/components/layout/footer/constants/loro-footer.constants.ts","../../../projects/loro-ui/src/lib/components/layout/footer/loro-footer.ts","../../../projects/loro-ui/src/lib/components/layout/footer/loro-footer.html","../../../projects/loro-ui/src/lib/assets/loro-assets.generated.ts","../../../projects/loro-ui/src/lib/components/resources/loro-icon/loro-icon.ts","../../../projects/loro-ui/src/lib/components/resources/loro-icon/loro-icon.html","../../../projects/loro-ui/src/lib/components/actions/loro-accordion/constants/loro-accordion.constants.ts","../../../projects/loro-ui/src/lib/components/actions/loro-accordion/loro-accordion.ts","../../../projects/loro-ui/src/lib/components/actions/loro-accordion/loro-accordion.html","../../../projects/loro-ui/src/lib/services/loro-haptics.service.ts","../../../projects/loro-ui/src/lib/components/actions/loro-button/constants/loro-button.constants.ts","../../../projects/loro-ui/src/lib/components/actions/loro-button/loro-button.ts","../../../projects/loro-ui/src/lib/components/actions/loro-button/loro-button.html","../../../projects/loro-ui/src/lib/components/resources/loro-image/loro-image.ts","../../../projects/loro-ui/src/lib/components/resources/loro-image/loro-image.html","../../../projects/loro-ui/src/lib/components/layout/loro-nav/constants/loro-nav.constants.ts","../../../projects/loro-ui/src/lib/components/layout/loro-nav/loro-nav.ts","../../../projects/loro-ui/src/lib/components/layout/loro-nav/loro-nav.html","../../../projects/loro-ui/src/lib/components/actions/loro-badge/constants/loro-badge.constants.ts","../../../projects/loro-ui/src/lib/components/actions/loro-badge/loro-badge.ts","../../../projects/loro-ui/src/lib/components/actions/loro-badge/loro-badge.html","../../../projects/loro-ui/src/lib/components/feedback/loro-alert/constants/loro-alert.constants.ts","../../../projects/loro-ui/src/lib/components/feedback/loro-alert/loro-alert.ts","../../../projects/loro-ui/src/lib/components/feedback/loro-alert/loro-alert.html","../../../projects/loro-ui/src/lib/components/feedback/loro-notification/loro-notification.ts","../../../projects/loro-ui/src/lib/components/feedback/loro-notification/loro-notification.html","../../../projects/loro-ui/src/lib/components/feedback/loro-notification-row/loro-notification-row.ts","../../../projects/loro-ui/src/lib/components/feedback/loro-notification-row/loro-notification-row.html","../../../projects/loro-ui/src/lib/components/feedback/loro-notification-panel/loro-notification-panel.ts","../../../projects/loro-ui/src/lib/components/feedback/loro-notification-panel/loro-notification-panel.html","../../../projects/loro-ui/src/lib/components/feedback/loro-spinner/loro-spinner.ts","../../../projects/loro-ui/src/lib/components/feedback/loro-spinner/loro-spinner.html","../../../projects/loro-ui/src/lib/components/feedback/loro-toast/loro-toast.ts","../../../projects/loro-ui/src/lib/components/feedback/loro-toast/loro-toast.html","../../../projects/loro-ui/src/lib/components/forms/loro-checkbox/loro-checkbox.ts","../../../projects/loro-ui/src/lib/components/forms/loro-checkbox/loro-checkbox.html","../../../projects/loro-ui/src/lib/components/forms/loro-dropdown/loro-dropdown.ts","../../../projects/loro-ui/src/lib/components/forms/loro-dropdown/loro-dropdown.html","../../../projects/loro-ui/src/lib/components/forms/loro-filter-chip/loro-filter-chip.ts","../../../projects/loro-ui/src/lib/components/forms/loro-filter-chip/loro-filter-chip.html","../../../projects/loro-ui/src/lib/components/forms/loro-input/loro-input.ts","../../../projects/loro-ui/src/lib/components/forms/loro-input/loro-input.html","../../../projects/loro-ui/src/lib/components/forms/loro-radio/loro-radio.ts","../../../projects/loro-ui/src/lib/components/forms/loro-radio/loro-radio.html","../../../projects/loro-ui/src/lib/components/forms/loro-segmented-control/loro-segmented-control.ts","../../../projects/loro-ui/src/lib/components/forms/loro-segmented-control/loro-segmented-control.html","../../../projects/loro-ui/src/lib/components/forms/loro-select/loro-select.ts","../../../projects/loro-ui/src/lib/components/forms/loro-select/loro-select.html","../../../projects/loro-ui/src/lib/components/forms/loro-text-area/loro-text-area.ts","../../../projects/loro-ui/src/lib/components/forms/loro-text-area/loro-text-area.html","../../../projects/loro-ui/src/lib/components/forms/loro-toggle/constants/loro-toggle.constants.ts","../../../projects/loro-ui/src/lib/components/forms/loro-toggle/loro-toggle.ts","../../../projects/loro-ui/src/lib/components/forms/loro-toggle/loro-toggle.html","../../../projects/loro-ui/src/lib/components/cards/selector/loro-card-selector.constants.ts","../../../projects/loro-ui/src/lib/components/cards/selector/loro-card-selector.ts","../../../projects/loro-ui/src/lib/components/cards/selector/loro-card-selector.html","../../../projects/loro-ui/src/lib/components/forms/loro-upload/constants/loro-upload.constants.ts","../../../projects/loro-ui/src/lib/utils/loro-file.util.ts","../../../projects/loro-ui/src/lib/utils/loro-file-format.util.ts","../../../projects/loro-ui/src/lib/components/forms/loro-upload/loro-upload.ts","../../../projects/loro-ui/src/lib/components/forms/loro-upload/loro-upload.html","../../../projects/loro-ui/src/lib/services/loro-modal-swipe.service.ts","../../../projects/loro-ui/src/lib/components/overlays/loro-modal/loro-modal.ts","../../../projects/loro-ui/src/lib/components/overlays/loro-modal/loro-modal.html","../../../projects/loro-ui/src/lib/components/layout/header/loro-header.ts","../../../projects/loro-ui/src/lib/components/layout/header/loro-header.html","../../../projects/loro-ui/src/juligc99-loro-ui.ts"],"sourcesContent":["import type { LoroFooterLink } from '../models/loro-footer.model';\n\nexport const LORO_FOOTER_DEFAULT_TITLE = '© 2026 Al Loro App. Todos los derechos reservados.';\n\nexport const LORO_FOOTER_DEFAULT_LINKS: LoroFooterLink[] = [\n { label: 'Términos', href: '#' },\n { label: 'Privacidad', href: '#' },\n { label: 'Soporte', href: '#' },\n];\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { LORO_FOOTER_DEFAULT_LINKS, LORO_FOOTER_DEFAULT_TITLE } from './constants/loro-footer.constants';\nimport type { LoroFooterLink } from './models/loro-footer.model';\n\n@Component({\n selector: 'loro-footer',\n templateUrl: './loro-footer.html',\n styleUrl: './loro-footer.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroFooter {\n /** Main footer copy shown before the link list. */\n title = input<string>(LORO_FOOTER_DEFAULT_TITLE);\n /** Inline footer navigation links. */\n links = input<LoroFooterLink[]>(LORO_FOOTER_DEFAULT_LINKS);\n}\n","<footer class=\"loro-footer\">\n <div class=\"loro-footer__meta\">\n <span class=\"loro-footer__dot\" aria-hidden=\"true\"></span>\n <p class=\"loro-footer__title\">{{ title() }}</p>\n </div>\n\n @if (links().length > 0) {\n <nav class=\"loro-footer__links\" aria-label=\"Footer links\">\n @for (link of links(); track link.href) {\n <a class=\"loro-footer__link\" [href]=\"link.href\">{{ link.label }}</a>\n }\n </nav>\n }\n</footer>\n","/* This file is generated by projects/loro-ui/scripts/generate-asset-manifest.mjs. */\n\nexport type LoroAssetLayer =\n | 'Action'\n | 'Brand'\n | 'Direction'\n | 'Home'\n | 'Illustrations'\n | 'Navigation'\n | 'Product'\n | 'Products'\n | 'Screens'\n | 'Social'\n | 'Status'\n | 'Stores';\n\nexport type LoroIconAsset = {\n readonly name: string;\n readonly path: string;\n readonly layer: LoroAssetLayer;\n readonly fileName: string;\n};\n\nexport type LoroImageAsset = {\n readonly name: string;\n readonly path: string;\n readonly layer: LoroAssetLayer;\n readonly fileName: string;\n};\n\nexport const LORO_ICON_ASSETS = [\n {\n \"name\": \"icon-apple\",\n \"path\": \"assets/loro-ui/icons/apple.svg\",\n \"layer\": \"Social\",\n \"fileName\": \"apple.svg\"\n },\n {\n \"name\": \"icon-arrow-right\",\n \"path\": \"assets/loro-ui/icons/arrow-right.svg\",\n \"layer\": \"Direction\",\n \"fileName\": \"arrow-right.svg\"\n },\n {\n \"name\": \"icon-auto\",\n \"path\": \"assets/loro-ui/icons/auto.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"auto.svg\"\n },\n {\n \"name\": \"icon-back\",\n \"path\": \"assets/loro-ui/icons/back.svg\",\n \"layer\": \"Direction\",\n \"fileName\": \"back.svg\"\n },\n {\n \"name\": \"icon-bag\",\n \"path\": \"assets/loro-ui/icons/bag.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"bag.svg\"\n },\n {\n \"name\": \"icon-barcode\",\n \"path\": \"assets/loro-ui/icons/barcode.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"barcode.svg\"\n },\n {\n \"name\": \"icon-bell\",\n \"path\": \"assets/loro-ui/icons/bell.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"bell.svg\"\n },\n {\n \"name\": \"icon-bottle\",\n \"path\": \"assets/loro-ui/icons/bottle.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"bottle.svg\"\n },\n {\n \"name\": \"icon-bulb\",\n \"path\": \"assets/loro-ui/icons/bulb.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"bulb.svg\"\n },\n {\n \"name\": \"icon-calendar\",\n \"path\": \"assets/loro-ui/icons/calendar.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"calendar.svg\"\n },\n {\n \"name\": \"icon-camera\",\n \"path\": \"assets/loro-ui/icons/camera.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"camera.svg\"\n },\n {\n \"name\": \"icon-cart\",\n \"path\": \"assets/loro-ui/icons/cart.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"cart.svg\"\n },\n {\n \"name\": \"icon-chart-bar\",\n \"path\": \"assets/loro-ui/icons/chart-bar.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"chart-bar.svg\"\n },\n {\n \"name\": \"icon-chat\",\n \"path\": \"assets/loro-ui/icons/chat.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"chat.svg\"\n },\n {\n \"name\": \"icon-check\",\n \"path\": \"assets/loro-ui/icons/check.svg\",\n \"layer\": \"Status\",\n \"fileName\": \"check.svg\"\n },\n {\n \"name\": \"icon-checkbox-empty\",\n \"path\": \"assets/loro-ui/icons/checkbox-empty.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"checkbox-empty.svg\"\n },\n {\n \"name\": \"icon-chevron-down\",\n \"path\": \"assets/loro-ui/icons/chevron-down.svg\",\n \"layer\": \"Direction\",\n \"fileName\": \"chevron-down.svg\"\n },\n {\n \"name\": \"icon-chevron-right\",\n \"path\": \"assets/loro-ui/icons/chevron-right.svg\",\n \"layer\": \"Direction\",\n \"fileName\": \"chevron-right.svg\"\n },\n {\n \"name\": \"icon-chevron-up\",\n \"path\": \"assets/loro-ui/icons/chevron-up.svg\",\n \"layer\": \"Direction\",\n \"fileName\": \"chevron-up.svg\"\n },\n {\n \"name\": \"icon-clock\",\n \"path\": \"assets/loro-ui/icons/clock.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"clock.svg\"\n },\n {\n \"name\": \"icon-download\",\n \"path\": \"assets/loro-ui/icons/download.svg\",\n \"layer\": \"Action\",\n \"fileName\": \"download.svg\"\n },\n {\n \"name\": \"icon-email\",\n \"path\": \"assets/loro-ui/icons/email.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"email.svg\"\n },\n {\n \"name\": \"icon-eye-off\",\n \"path\": \"assets/loro-ui/icons/eye-off.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"eye-off.svg\"\n },\n {\n \"name\": \"icon-eye\",\n \"path\": \"assets/loro-ui/icons/eye.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"eye.svg\"\n },\n {\n \"name\": \"icon-globe\",\n \"path\": \"assets/loro-ui/icons/globe.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"globe.svg\"\n },\n {\n \"name\": \"icon-google\",\n \"path\": \"assets/loro-ui/icons/google.svg\",\n \"layer\": \"Social\",\n \"fileName\": \"google.svg\"\n },\n {\n \"name\": \"icon-headset\",\n \"path\": \"assets/loro-ui/icons/headset.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"headset.svg\"\n },\n {\n \"name\": \"icon-help\",\n \"path\": \"assets/loro-ui/icons/help.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"help.svg\"\n },\n {\n \"name\": \"icon-home\",\n \"path\": \"assets/loro-ui/icons/home.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"home.svg\"\n },\n {\n \"name\": \"icon-info\",\n \"path\": \"assets/loro-ui/icons/info.svg\",\n \"layer\": \"Status\",\n \"fileName\": \"info.svg\"\n },\n {\n \"name\": \"icon-laptop\",\n \"path\": \"assets/loro-ui/icons/laptop.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"laptop.svg\"\n },\n {\n \"name\": \"icon-leaf\",\n \"path\": \"assets/loro-ui/icons/leaf.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"leaf.svg\"\n },\n {\n \"name\": \"icon-list\",\n \"path\": \"assets/loro-ui/icons/list.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"list.svg\"\n },\n {\n \"name\": \"icon-location\",\n \"path\": \"assets/loro-ui/icons/location.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"location.svg\"\n },\n {\n \"name\": \"icon-lock\",\n \"path\": \"assets/loro-ui/icons/lock.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"lock.svg\"\n },\n {\n \"name\": \"icon-logout\",\n \"path\": \"assets/loro-ui/icons/logout.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"logout.svg\"\n },\n {\n \"name\": \"icon-megaphone\",\n \"path\": \"assets/loro-ui/icons/megaphone.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"megaphone.svg\"\n },\n {\n \"name\": \"icon-moon\",\n \"path\": \"assets/loro-ui/icons/moon.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"moon.svg\"\n },\n {\n \"name\": \"icon-more-vertical\",\n \"path\": \"assets/loro-ui/icons/more-vertical.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"more-vertical.svg\"\n },\n {\n \"name\": \"icon-nav-compare\",\n \"path\": \"assets/loro-ui/icons/nav-compare.svg\",\n \"layer\": \"Navigation\",\n \"fileName\": \"nav-compare.svg\"\n },\n {\n \"name\": \"icon-nav-home\",\n \"path\": \"assets/loro-ui/icons/nav-home.svg\",\n \"layer\": \"Navigation\",\n \"fileName\": \"nav-home.svg\"\n },\n {\n \"name\": \"icon-nav-list\",\n \"path\": \"assets/loro-ui/icons/nav-list.svg\",\n \"layer\": \"Navigation\",\n \"fileName\": \"nav-list.svg\"\n },\n {\n \"name\": \"icon-nav-pantry\",\n \"path\": \"assets/loro-ui/icons/nav-pantry.svg\",\n \"layer\": \"Navigation\",\n \"fileName\": \"nav-pantry.svg\"\n },\n {\n \"name\": \"icon-pantry-stock\",\n \"path\": \"assets/loro-ui/icons/pantry-stock.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"pantry-stock.svg\"\n },\n {\n \"name\": \"icon-paperclip\",\n \"path\": \"assets/loro-ui/icons/paperclip.svg\",\n \"layer\": \"Action\",\n \"fileName\": \"paperclip.svg\"\n },\n {\n \"name\": \"icon-phone\",\n \"path\": \"assets/loro-ui/icons/phone.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"phone.svg\"\n },\n {\n \"name\": \"icon-plus-user\",\n \"path\": \"assets/loro-ui/icons/plus-user.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"plus-user.svg\"\n },\n {\n \"name\": \"icon-plus\",\n \"path\": \"assets/loro-ui/icons/plus.svg\",\n \"layer\": \"Action\",\n \"fileName\": \"plus.svg\"\n },\n {\n \"name\": \"icon-scanner\",\n \"path\": \"assets/loro-ui/icons/scanner.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"scanner.svg\"\n },\n {\n \"name\": \"icon-search\",\n \"path\": \"assets/loro-ui/icons/search.svg\",\n \"layer\": \"Action\",\n \"fileName\": \"search.svg\"\n },\n {\n \"name\": \"icon-send\",\n \"path\": \"assets/loro-ui/icons/send.svg\",\n \"layer\": \"Action\",\n \"fileName\": \"send.svg\"\n },\n {\n \"name\": \"icon-settings\",\n \"path\": \"assets/loro-ui/icons/settings.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"settings.svg\"\n },\n {\n \"name\": \"icon-shelf\",\n \"path\": \"assets/loro-ui/icons/shelf.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"shelf.svg\"\n },\n {\n \"name\": \"icon-shield-alert\",\n \"path\": \"assets/loro-ui/icons/shield-alert.svg\",\n \"layer\": \"Status\",\n \"fileName\": \"shield-alert.svg\"\n },\n {\n \"name\": \"icon-shield\",\n \"path\": \"assets/loro-ui/icons/shield.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"shield.svg\"\n },\n {\n \"name\": \"icon-star\",\n \"path\": \"assets/loro-ui/icons/star.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"star.svg\"\n },\n {\n \"name\": \"icon-store\",\n \"path\": \"assets/loro-ui/icons/store.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"store.svg\"\n },\n {\n \"name\": \"icon-sun\",\n \"path\": \"assets/loro-ui/icons/sun.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"sun.svg\"\n },\n {\n \"name\": \"icon-tablet\",\n \"path\": \"assets/loro-ui/icons/tablet.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"tablet.svg\"\n },\n {\n \"name\": \"icon-tag\",\n \"path\": \"assets/loro-ui/icons/tag.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"tag.svg\"\n },\n {\n \"name\": \"icon-tick-circle\",\n \"path\": \"assets/loro-ui/icons/tick-circle.svg\",\n \"layer\": \"Status\",\n \"fileName\": \"tick-circle.svg\"\n },\n {\n \"name\": \"icon-trash-white\",\n \"path\": \"assets/loro-ui/icons/trash-white.svg\",\n \"layer\": \"Action\",\n \"fileName\": \"trash-white.svg\"\n },\n {\n \"name\": \"icon-trash\",\n \"path\": \"assets/loro-ui/icons/trash.svg\",\n \"layer\": \"Action\",\n \"fileName\": \"trash.svg\"\n },\n {\n \"name\": \"icon-trend\",\n \"path\": \"assets/loro-ui/icons/trend.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"trend.svg\"\n },\n {\n \"name\": \"icon-user\",\n \"path\": \"assets/loro-ui/icons/user.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"user.svg\"\n },\n {\n \"name\": \"icon-warning\",\n \"path\": \"assets/loro-ui/icons/warning.svg\",\n \"layer\": \"Status\",\n \"fileName\": \"warning.svg\"\n },\n {\n \"name\": \"icon-x\",\n \"path\": \"assets/loro-ui/icons/x.svg\",\n \"layer\": \"Product\",\n \"fileName\": \"x.svg\"\n }\n] as const satisfies readonly LoroIconAsset[];\n\nexport const LORO_ICON_PATHS = {\n \"icon-apple\": \"assets/loro-ui/icons/apple.svg\",\n \"icon-arrow-right\": \"assets/loro-ui/icons/arrow-right.svg\",\n \"icon-auto\": \"assets/loro-ui/icons/auto.svg\",\n \"icon-back\": \"assets/loro-ui/icons/back.svg\",\n \"icon-bag\": \"assets/loro-ui/icons/bag.svg\",\n \"icon-barcode\": \"assets/loro-ui/icons/barcode.svg\",\n \"icon-bell\": \"assets/loro-ui/icons/bell.svg\",\n \"icon-bottle\": \"assets/loro-ui/icons/bottle.svg\",\n \"icon-bulb\": \"assets/loro-ui/icons/bulb.svg\",\n \"icon-calendar\": \"assets/loro-ui/icons/calendar.svg\",\n \"icon-camera\": \"assets/loro-ui/icons/camera.svg\",\n \"icon-cart\": \"assets/loro-ui/icons/cart.svg\",\n \"icon-chart-bar\": \"assets/loro-ui/icons/chart-bar.svg\",\n \"icon-chat\": \"assets/loro-ui/icons/chat.svg\",\n \"icon-check\": \"assets/loro-ui/icons/check.svg\",\n \"icon-checkbox-empty\": \"assets/loro-ui/icons/checkbox-empty.svg\",\n \"icon-chevron-down\": \"assets/loro-ui/icons/chevron-down.svg\",\n \"icon-chevron-right\": \"assets/loro-ui/icons/chevron-right.svg\",\n \"icon-chevron-up\": \"assets/loro-ui/icons/chevron-up.svg\",\n \"icon-clock\": \"assets/loro-ui/icons/clock.svg\",\n \"icon-download\": \"assets/loro-ui/icons/download.svg\",\n \"icon-email\": \"assets/loro-ui/icons/email.svg\",\n \"icon-eye-off\": \"assets/loro-ui/icons/eye-off.svg\",\n \"icon-eye\": \"assets/loro-ui/icons/eye.svg\",\n \"icon-globe\": \"assets/loro-ui/icons/globe.svg\",\n \"icon-google\": \"assets/loro-ui/icons/google.svg\",\n \"icon-headset\": \"assets/loro-ui/icons/headset.svg\",\n \"icon-help\": \"assets/loro-ui/icons/help.svg\",\n \"icon-home\": \"assets/loro-ui/icons/home.svg\",\n \"icon-info\": \"assets/loro-ui/icons/info.svg\",\n \"icon-laptop\": \"assets/loro-ui/icons/laptop.svg\",\n \"icon-leaf\": \"assets/loro-ui/icons/leaf.svg\",\n \"icon-list\": \"assets/loro-ui/icons/list.svg\",\n \"icon-location\": \"assets/loro-ui/icons/location.svg\",\n \"icon-lock\": \"assets/loro-ui/icons/lock.svg\",\n \"icon-logout\": \"assets/loro-ui/icons/logout.svg\",\n \"icon-megaphone\": \"assets/loro-ui/icons/megaphone.svg\",\n \"icon-moon\": \"assets/loro-ui/icons/moon.svg\",\n \"icon-more-vertical\": \"assets/loro-ui/icons/more-vertical.svg\",\n \"icon-nav-compare\": \"assets/loro-ui/icons/nav-compare.svg\",\n \"icon-nav-home\": \"assets/loro-ui/icons/nav-home.svg\",\n \"icon-nav-list\": \"assets/loro-ui/icons/nav-list.svg\",\n \"icon-nav-pantry\": \"assets/loro-ui/icons/nav-pantry.svg\",\n \"icon-pantry-stock\": \"assets/loro-ui/icons/pantry-stock.svg\",\n \"icon-paperclip\": \"assets/loro-ui/icons/paperclip.svg\",\n \"icon-phone\": \"assets/loro-ui/icons/phone.svg\",\n \"icon-plus-user\": \"assets/loro-ui/icons/plus-user.svg\",\n \"icon-plus\": \"assets/loro-ui/icons/plus.svg\",\n \"icon-scanner\": \"assets/loro-ui/icons/scanner.svg\",\n \"icon-search\": \"assets/loro-ui/icons/search.svg\",\n \"icon-send\": \"assets/loro-ui/icons/send.svg\",\n \"icon-settings\": \"assets/loro-ui/icons/settings.svg\",\n \"icon-shelf\": \"assets/loro-ui/icons/shelf.svg\",\n \"icon-shield-alert\": \"assets/loro-ui/icons/shield-alert.svg\",\n \"icon-shield\": \"assets/loro-ui/icons/shield.svg\",\n \"icon-star\": \"assets/loro-ui/icons/star.svg\",\n \"icon-store\": \"assets/loro-ui/icons/store.svg\",\n \"icon-sun\": \"assets/loro-ui/icons/sun.svg\",\n \"icon-tablet\": \"assets/loro-ui/icons/tablet.svg\",\n \"icon-tag\": \"assets/loro-ui/icons/tag.svg\",\n \"icon-tick-circle\": \"assets/loro-ui/icons/tick-circle.svg\",\n \"icon-trash-white\": \"assets/loro-ui/icons/trash-white.svg\",\n \"icon-trash\": \"assets/loro-ui/icons/trash.svg\",\n \"icon-trend\": \"assets/loro-ui/icons/trend.svg\",\n \"icon-user\": \"assets/loro-ui/icons/user.svg\",\n \"icon-warning\": \"assets/loro-ui/icons/warning.svg\",\n \"icon-x\": \"assets/loro-ui/icons/x.svg\"\n} as const;\n\nexport const LORO_ICON_LEGACY_NAMES = {\n \"apple\": \"icon-apple\",\n \"arrow-right\": \"icon-arrow-right\",\n \"auto\": \"icon-auto\",\n \"back\": \"icon-back\",\n \"bag\": \"icon-bag\",\n \"barcode\": \"icon-barcode\",\n \"bell\": \"icon-bell\",\n \"bottle\": \"icon-bottle\",\n \"bulb\": \"icon-bulb\",\n \"calendar\": \"icon-calendar\",\n \"camera\": \"icon-camera\",\n \"cart\": \"icon-cart\",\n \"chart-bar\": \"icon-chart-bar\",\n \"chat\": \"icon-chat\",\n \"check\": \"icon-check\",\n \"checkbox-empty\": \"icon-checkbox-empty\",\n \"chevron-down\": \"icon-chevron-down\",\n \"chevron-right\": \"icon-chevron-right\",\n \"chevron-up\": \"icon-chevron-up\",\n \"clock\": \"icon-clock\",\n \"download\": \"icon-download\",\n \"email\": \"icon-email\",\n \"eye-off\": \"icon-eye-off\",\n \"eye\": \"icon-eye\",\n \"globe\": \"icon-globe\",\n \"google\": \"icon-google\",\n \"headset\": \"icon-headset\",\n \"help\": \"icon-help\",\n \"home\": \"icon-home\",\n \"info\": \"icon-info\",\n \"laptop\": \"icon-laptop\",\n \"leaf\": \"icon-leaf\",\n \"list\": \"icon-list\",\n \"location\": \"icon-location\",\n \"lock\": \"icon-lock\",\n \"logout\": \"icon-logout\",\n \"megaphone\": \"icon-megaphone\",\n \"moon\": \"icon-moon\",\n \"more-vertical\": \"icon-more-vertical\",\n \"nav-compare\": \"icon-nav-compare\",\n \"nav-home\": \"icon-nav-home\",\n \"nav-list\": \"icon-nav-list\",\n \"nav-pantry\": \"icon-nav-pantry\",\n \"pantry-stock\": \"icon-pantry-stock\",\n \"paperclip\": \"icon-paperclip\",\n \"phone\": \"icon-phone\",\n \"plus-user\": \"icon-plus-user\",\n \"plus\": \"icon-plus\",\n \"scanner\": \"icon-scanner\",\n \"search\": \"icon-search\",\n \"send\": \"icon-send\",\n \"settings\": \"icon-settings\",\n \"shelf\": \"icon-shelf\",\n \"shield-alert\": \"icon-shield-alert\",\n \"shield\": \"icon-shield\",\n \"star\": \"icon-star\",\n \"store\": \"icon-store\",\n \"sun\": \"icon-sun\",\n \"tablet\": \"icon-tablet\",\n \"tag\": \"icon-tag\",\n \"tick-circle\": \"icon-tick-circle\",\n \"trash-white\": \"icon-trash-white\",\n \"trash\": \"icon-trash\",\n \"trend\": \"icon-trend\",\n \"user\": \"icon-user\",\n \"warning\": \"icon-warning\",\n \"x\": \"icon-x\"\n} as const;\n\nexport type LoroIconAssetName = keyof typeof LORO_ICON_PATHS;\nexport type LoroIconLegacyName = keyof typeof LORO_ICON_LEGACY_NAMES;\nexport type LoroIconName = LoroIconAssetName | LoroIconLegacyName;\n\nexport const LORO_IMAGE_ASSETS = [\n {\n \"name\": \"image-al-loro-design-library-home-ai\",\n \"path\": \"assets/loro-ui/images/al-loro-design-library-home-ai.png\",\n \"layer\": \"Screens\",\n \"fileName\": \"al-loro-design-library-home-ai.png\"\n },\n {\n \"name\": \"image-favicon-apple-touch-icon\",\n \"path\": \"assets/loro-ui/favicons/apple-touch-icon.png\",\n \"layer\": \"Brand\",\n \"fileName\": \"apple-touch-icon.png\"\n },\n {\n \"name\": \"image-favicon-assets-xcassets-appicon-appiconset-appicon-any\",\n \"path\": \"assets/loro-ui/favicons/Assets.xcassets/AppIcon.appiconset/AppIcon-Any.png\",\n \"layer\": \"Brand\",\n \"fileName\": \"AppIcon-Any.png\"\n },\n {\n \"name\": \"image-favicon-assets-xcassets-appicon-appiconset-appicon-dark\",\n \"path\": \"assets/loro-ui/favicons/Assets.xcassets/AppIcon.appiconset/AppIcon-Dark.png\",\n \"layer\": \"Brand\",\n \"fileName\": \"AppIcon-Dark.png\"\n },\n {\n \"name\": \"image-favicon-assets-xcassets-splash-imageset-splash-2732x2732\",\n \"path\": \"assets/loro-ui/favicons/Assets.xcassets/Splash.imageset/splash-2732x2732.png\",\n \"layer\": \"Brand\",\n \"fileName\": \"splash-2732x2732.png\"\n },\n {\n \"name\": \"image-favicon-assets-xcassets-splash-imageset-splash-2732x2732-1\",\n \"path\": \"assets/loro-ui/favicons/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png\",\n \"layer\": \"Brand\",\n \"fileName\": \"splash-2732x2732-1.png\"\n },\n {\n \"name\": \"image-favicon-assets-xcassets-splash-imageset-splash-2732x2732-2\",\n \"path\": \"assets/loro-ui/favicons/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png\",\n \"layer\": \"Brand\",\n \"fileName\": \"splash-2732x2732-2.png\"\n },\n {\n \"name\": \"image-favicon-assets-xcassets-splash-imageset-splash-dark-2732x2732\",\n \"path\": \"assets/loro-ui/favicons/Assets.xcassets/Splash.imageset/splash-dark-2732x2732.png\",\n \"layer\": \"Brand\",\n \"fileName\": \"splash-dark-2732x2732.png\"\n },\n {\n \"name\": \"image-favicon-assets-xcassets-splash-imageset-splash-dark-2732x2732-1\",\n \"path\": \"assets/loro-ui/favicons/Assets.xcassets/Splash.imageset/splash-dark-2732x2732-1.png\",\n \"layer\": \"Brand\",\n \"fileName\": \"splash-dark-2732x2732-1.png\"\n },\n {\n \"name\": \"image-favicon-assets-xcassets-splash-imageset-splash-dark-2732x2732-2\",\n \"path\": \"assets/loro-ui/favicons/Assets.xcassets/Splash.imageset/splash-dark-2732x2732-2.png\",\n \"layer\": \"Brand\",\n \"fileName\": \"splash-dark-2732x2732-2.png\"\n },\n {\n \"name\": \"image-favicon-favicon\",\n \"path\": \"assets/loro-ui/favicons/favicon.svg\",\n \"layer\": \"Brand\",\n \"fileName\": \"favicon.svg\"\n },\n {\n \"name\": \"image-home-icon-ai\",\n \"path\": \"assets/loro-ui/images/home-icon-ai.svg\",\n \"layer\": \"Home\",\n \"fileName\": \"home-icon-ai.svg\"\n },\n {\n \"name\": \"image-home-icon-basket\",\n \"path\": \"assets/loro-ui/images/home-icon-basket.svg\",\n \"layer\": \"Home\",\n \"fileName\": \"home-icon-basket.svg\"\n },\n {\n \"name\": \"image-home-icon-compare\",\n \"path\": \"assets/loro-ui/images/home-icon-compare.svg\",\n \"layer\": \"Home\",\n \"fileName\": \"home-icon-compare.svg\"\n },\n {\n \"name\": \"image-home-icon-expiry\",\n \"path\": \"assets/loro-ui/images/home-icon-expiry.svg\",\n \"layer\": \"Home\",\n \"fileName\": \"home-icon-expiry.svg\"\n },\n {\n \"name\": \"image-home-icon-pantry\",\n \"path\": \"assets/loro-ui/images/home-icon-pantry.svg\",\n \"layer\": \"Home\",\n \"fileName\": \"home-icon-pantry.svg\"\n },\n {\n \"name\": \"image-home-icon-scan\",\n \"path\": \"assets/loro-ui/images/home-icon-scan.svg\",\n \"layer\": \"Home\",\n \"fileName\": \"home-icon-scan.svg\"\n },\n {\n \"name\": \"image-image-home\",\n \"path\": \"assets/loro-ui/images/image-home.png\",\n \"layer\": \"Screens\",\n \"fileName\": \"image-home.png\"\n },\n {\n \"name\": \"image-logo-despensa-buy\",\n \"path\": \"assets/loro-ui/images/logo-despensa-buy.png\",\n \"layer\": \"Screens\",\n \"fileName\": \"logo-despensa-buy.png\"\n },\n {\n \"name\": \"image-logo-list-buy\",\n \"path\": \"assets/loro-ui/images/logo-list-buy.png\",\n \"layer\": \"Screens\",\n \"fileName\": \"logo-list-buy.png\"\n },\n {\n \"name\": \"image-loro-apaisado\",\n \"path\": \"assets/loro-ui/images/loro-apaisado.png\",\n \"layer\": \"Screens\",\n \"fileName\": \"loro-apaisado.png\"\n },\n {\n \"name\": \"image-loro-apaisado-blanco\",\n \"path\": \"assets/loro-ui/images/loro-apaisado-blanco.png\",\n \"layer\": \"Screens\",\n \"fileName\": \"loro-apaisado-blanco.png\"\n },\n {\n \"name\": \"image-loro-card-buy\",\n \"path\": \"assets/loro-ui/images/loro-card-buy.png\",\n \"layer\": \"Screens\",\n \"fileName\": \"loro-card-buy.png\"\n },\n {\n \"name\": \"image-loro-card-caducidad\",\n \"path\": \"assets/loro-ui/images/loro-card-caducidad.png\",\n \"layer\": \"Screens\",\n \"fileName\": \"loro-card-caducidad.png\"\n },\n {\n \"name\": \"image-loro-card-comparativa\",\n \"path\": \"assets/loro-ui/images/loro-card-comparativa.png\",\n \"layer\": \"Screens\",\n \"fileName\": \"loro-card-comparativa.png\"\n },\n {\n \"name\": \"image-loro-card-ia\",\n \"path\": \"assets/loro-ui/images/loro-card-ia.png\",\n \"layer\": \"Screens\",\n \"fileName\": \"loro-card-ia.png\"\n },\n {\n \"name\": \"image-loro-card-qr\",\n \"path\": \"assets/loro-ui/images/loro-card-qr.png\",\n \"layer\": \"Screens\",\n \"fileName\": \"loro-card-qr.png\"\n },\n {\n \"name\": \"image-loro-despensa\",\n \"path\": \"assets/loro-ui/images/loro-despensa.png\",\n \"layer\": \"Screens\",\n \"fileName\": \"loro-despensa.png\"\n },\n {\n \"name\": \"image-loro-icon-default\",\n \"path\": \"assets/loro-ui/images/loro-icon-default.png\",\n \"layer\": \"Screens\",\n \"fileName\": \"loro-icon-default.png\"\n },\n {\n \"name\": \"image-loro-spinner-ring\",\n \"path\": \"assets/loro-ui/images/loro-spinner-ring.svg\",\n \"layer\": \"Screens\",\n \"fileName\": \"loro-spinner-ring.svg\"\n },\n {\n \"name\": \"image-loro-tittle-sub\",\n \"path\": \"assets/loro-ui/images/loro-tittle-sub.png\",\n \"layer\": \"Screens\",\n \"fileName\": \"loro-tittle-sub.png\"\n },\n {\n \"name\": \"image-pantry-cabinet\",\n \"path\": \"assets/loro-ui/images/pantry-cabinet.svg\",\n \"layer\": \"Screens\",\n \"fileName\": \"pantry-cabinet.svg\"\n },\n {\n \"name\": \"image-pantry-metric-chart\",\n \"path\": \"assets/loro-ui/images/pantry-metric-chart.svg\",\n \"layer\": \"Screens\",\n \"fileName\": \"pantry-metric-chart.svg\"\n },\n {\n \"name\": \"image-product-bananas\",\n \"path\": \"assets/loro-ui/images/product-bananas.svg\",\n \"layer\": \"Products\",\n \"fileName\": \"product-bananas.svg\"\n },\n {\n \"name\": \"image-product-milk\",\n \"path\": \"assets/loro-ui/images/product-milk.svg\",\n \"layer\": \"Products\",\n \"fileName\": \"product-milk.svg\"\n },\n {\n \"name\": \"image-product-pasta\",\n \"path\": \"assets/loro-ui/images/product-pasta.svg\",\n \"layer\": \"Products\",\n \"fileName\": \"product-pasta.svg\"\n },\n {\n \"name\": \"image-product-rice\",\n \"path\": \"assets/loro-ui/images/product-rice.svg\",\n \"layer\": \"Products\",\n \"fileName\": \"product-rice.svg\"\n },\n {\n \"name\": \"image-product-tomatoes\",\n \"path\": \"assets/loro-ui/images/product-tomatoes.svg\",\n \"layer\": \"Products\",\n \"fileName\": \"product-tomatoes.svg\"\n },\n {\n \"name\": \"image-product-yogurt\",\n \"path\": \"assets/loro-ui/images/product-yogurt.svg\",\n \"layer\": \"Products\",\n \"fileName\": \"product-yogurt.svg\"\n },\n {\n \"name\": \"image-store-ahorramas\",\n \"path\": \"assets/loro-ui/images/store-ahorramas.svg\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-ahorramas.svg\"\n },\n {\n \"name\": \"image-store-alcampo\",\n \"path\": \"assets/loro-ui/images/store-alcampo.png\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-alcampo.png\"\n },\n {\n \"name\": \"image-store-aldi\",\n \"path\": \"assets/loro-ui/images/store-aldi.svg\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-aldi.svg\"\n },\n {\n \"name\": \"image-store-bonpreu\",\n \"path\": \"assets/loro-ui/images/store-bonpreu.svg\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-bonpreu.svg\"\n },\n {\n \"name\": \"image-store-caprabo\",\n \"path\": \"assets/loro-ui/images/store-caprabo.svg\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-caprabo.svg\"\n },\n {\n \"name\": \"image-store-carrefour\",\n \"path\": \"assets/loro-ui/images/store-carrefour.svg\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-carrefour.svg\"\n },\n {\n \"name\": \"image-store-consum\",\n \"path\": \"assets/loro-ui/images/store-consum.png\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-consum.png\"\n },\n {\n \"name\": \"image-store-coviran\",\n \"path\": \"assets/loro-ui/images/store-coviran.png\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-coviran.png\"\n },\n {\n \"name\": \"image-store-dia\",\n \"path\": \"assets/loro-ui/images/store-dia.svg\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-dia.svg\"\n },\n {\n \"name\": \"image-store-el-corte-ingles\",\n \"path\": \"assets/loro-ui/images/store-el-corte-ingles.svg\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-el-corte-ingles.svg\"\n },\n {\n \"name\": \"image-store-eroski\",\n \"path\": \"assets/loro-ui/images/store-eroski.png\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-eroski.png\"\n },\n {\n \"name\": \"image-store-froiz\",\n \"path\": \"assets/loro-ui/images/store-froiz.svg\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-froiz.svg\"\n },\n {\n \"name\": \"image-store-gadis\",\n \"path\": \"assets/loro-ui/images/store-gadis.png\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-gadis.png\"\n },\n {\n \"name\": \"image-store-lidl\",\n \"path\": \"assets/loro-ui/images/store-lidl.svg\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-lidl.svg\"\n },\n {\n \"name\": \"image-store-mercadona\",\n \"path\": \"assets/loro-ui/images/store-mercadona.svg\",\n \"layer\": \"Stores\",\n \"fileName\": \"store-mercadona.svg\"\n }\n] as const satisfies readonly LoroImageAsset[];\n\nexport const LORO_IMAGE_PATHS = {\n \"image-al-loro-design-library-home-ai\": \"assets/loro-ui/images/al-loro-design-library-home-ai.png\",\n \"image-favicon-apple-touch-icon\": \"assets/loro-ui/favicons/apple-touch-icon.png\",\n \"image-favicon-assets-xcassets-appicon-appiconset-appicon-any\": \"assets/loro-ui/favicons/Assets.xcassets/AppIcon.appiconset/AppIcon-Any.png\",\n \"image-favicon-assets-xcassets-appicon-appiconset-appicon-dark\": \"assets/loro-ui/favicons/Assets.xcassets/AppIcon.appiconset/AppIcon-Dark.png\",\n \"image-favicon-assets-xcassets-splash-imageset-splash-2732x2732\": \"assets/loro-ui/favicons/Assets.xcassets/Splash.imageset/splash-2732x2732.png\",\n \"image-favicon-assets-xcassets-splash-imageset-splash-2732x2732-1\": \"assets/loro-ui/favicons/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png\",\n \"image-favicon-assets-xcassets-splash-imageset-splash-2732x2732-2\": \"assets/loro-ui/favicons/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png\",\n \"image-favicon-assets-xcassets-splash-imageset-splash-dark-2732x2732\": \"assets/loro-ui/favicons/Assets.xcassets/Splash.imageset/splash-dark-2732x2732.png\",\n \"image-favicon-assets-xcassets-splash-imageset-splash-dark-2732x2732-1\": \"assets/loro-ui/favicons/Assets.xcassets/Splash.imageset/splash-dark-2732x2732-1.png\",\n \"image-favicon-assets-xcassets-splash-imageset-splash-dark-2732x2732-2\": \"assets/loro-ui/favicons/Assets.xcassets/Splash.imageset/splash-dark-2732x2732-2.png\",\n \"image-favicon-favicon\": \"assets/loro-ui/favicons/favicon.svg\",\n \"image-home-icon-ai\": \"assets/loro-ui/images/home-icon-ai.svg\",\n \"image-home-icon-basket\": \"assets/loro-ui/images/home-icon-basket.svg\",\n \"image-home-icon-compare\": \"assets/loro-ui/images/home-icon-compare.svg\",\n \"image-home-icon-expiry\": \"assets/loro-ui/images/home-icon-expiry.svg\",\n \"image-home-icon-pantry\": \"assets/loro-ui/images/home-icon-pantry.svg\",\n \"image-home-icon-scan\": \"assets/loro-ui/images/home-icon-scan.svg\",\n \"image-image-home\": \"assets/loro-ui/images/image-home.png\",\n \"image-logo-despensa-buy\": \"assets/loro-ui/images/logo-despensa-buy.png\",\n \"image-logo-list-buy\": \"assets/loro-ui/images/logo-list-buy.png\",\n \"image-loro-apaisado\": \"assets/loro-ui/images/loro-apaisado.png\",\n \"image-loro-apaisado-blanco\": \"assets/loro-ui/images/loro-apaisado-blanco.png\",\n \"image-loro-card-buy\": \"assets/loro-ui/images/loro-card-buy.png\",\n \"image-loro-card-caducidad\": \"assets/loro-ui/images/loro-card-caducidad.png\",\n \"image-loro-card-comparativa\": \"assets/loro-ui/images/loro-card-comparativa.png\",\n \"image-loro-card-ia\": \"assets/loro-ui/images/loro-card-ia.png\",\n \"image-loro-card-qr\": \"assets/loro-ui/images/loro-card-qr.png\",\n \"image-loro-despensa\": \"assets/loro-ui/images/loro-despensa.png\",\n \"image-loro-icon-default\": \"assets/loro-ui/images/loro-icon-default.png\",\n \"image-loro-spinner-ring\": \"assets/loro-ui/images/loro-spinner-ring.svg\",\n \"image-loro-tittle-sub\": \"assets/loro-ui/images/loro-tittle-sub.png\",\n \"image-pantry-cabinet\": \"assets/loro-ui/images/pantry-cabinet.svg\",\n \"image-pantry-metric-chart\": \"assets/loro-ui/images/pantry-metric-chart.svg\",\n \"image-product-bananas\": \"assets/loro-ui/images/product-bananas.svg\",\n \"image-product-milk\": \"assets/loro-ui/images/product-milk.svg\",\n \"image-product-pasta\": \"assets/loro-ui/images/product-pasta.svg\",\n \"image-product-rice\": \"assets/loro-ui/images/product-rice.svg\",\n \"image-product-tomatoes\": \"assets/loro-ui/images/product-tomatoes.svg\",\n \"image-product-yogurt\": \"assets/loro-ui/images/product-yogurt.svg\",\n \"image-store-ahorramas\": \"assets/loro-ui/images/store-ahorramas.svg\",\n \"image-store-alcampo\": \"assets/loro-ui/images/store-alcampo.png\",\n \"image-store-aldi\": \"assets/loro-ui/images/store-aldi.svg\",\n \"image-store-bonpreu\": \"assets/loro-ui/images/store-bonpreu.svg\",\n \"image-store-caprabo\": \"assets/loro-ui/images/store-caprabo.svg\",\n \"image-store-carrefour\": \"assets/loro-ui/images/store-carrefour.svg\",\n \"image-store-consum\": \"assets/loro-ui/images/store-consum.png\",\n \"image-store-coviran\": \"assets/loro-ui/images/store-coviran.png\",\n \"image-store-dia\": \"assets/loro-ui/images/store-dia.svg\",\n \"image-store-el-corte-ingles\": \"assets/loro-ui/images/store-el-corte-ingles.svg\",\n \"image-store-eroski\": \"assets/loro-ui/images/store-eroski.png\",\n \"image-store-froiz\": \"assets/loro-ui/images/store-froiz.svg\",\n \"image-store-gadis\": \"assets/loro-ui/images/store-gadis.png\",\n \"image-store-lidl\": \"assets/loro-ui/images/store-lidl.svg\",\n \"image-store-mercadona\": \"assets/loro-ui/images/store-mercadona.svg\"\n} as const;\n\nexport const LORO_IMAGE_LEGACY_NAMES = {\n \"welcome\": \"image-loro-tittle-sub\",\n \"profile\": \"image-loro-despensa\",\n \"ai\": \"image-home-icon-ai\",\n \"logo-icon\": \"image-favicon-favicon\",\n \"logo-horizontal\": \"image-loro-apaisado\",\n \"logo-spinner\": \"image-loro-spinner-ring\",\n \"store-carrefour\": \"image-store-carrefour\",\n \"store-dia\": \"image-store-dia\",\n \"store-mercadona\": \"image-store-mercadona\",\n \"store-aldi\": \"image-store-aldi\",\n \"store-lidl\": \"image-store-lidl\",\n \"store-ahorramas\": \"image-store-ahorramas\",\n \"store-alcampo\": \"image-store-alcampo\",\n \"store-bonpreu\": \"image-store-bonpreu\",\n \"store-caprabo\": \"image-store-caprabo\",\n \"store-consum\": \"image-store-consum\",\n \"store-coviran\": \"image-store-coviran\",\n \"store-el-corte-ingles\": \"image-store-el-corte-ingles\",\n \"store-eroski\": \"image-store-eroski\",\n \"store-froiz\": \"image-store-froiz\",\n \"store-gadis\": \"image-store-gadis\",\n \"logo-landscape\": \"image-loro-apaisado\",\n \"logo-title-sub\": \"image-loro-tittle-sub\",\n \"logo-apaisado-blanco\": \"image-loro-apaisado-blanco\",\n \"product-bananas\": \"image-product-bananas\",\n \"product-milk\": \"image-product-milk\",\n \"product-yogurt\": \"image-product-yogurt\",\n \"product-rice\": \"image-product-rice\",\n \"product-tomatoes\": \"image-product-tomatoes\",\n \"product-pasta\": \"image-product-pasta\",\n \"pantry-cabinet\": \"image-pantry-cabinet\",\n \"pantry-metric-chart\": \"image-pantry-metric-chart\",\n \"loro-buy\": \"image-logo-list-buy\",\n \"loro-card-buy\": \"image-loro-card-buy\",\n \"loro-card-comparativa\": \"image-loro-card-comparativa\",\n \"loro-card-despensa-buy\": \"image-logo-despensa-buy\",\n \"loro-card-caducidad\": \"image-loro-card-caducidad\",\n \"loro-card-ia\": \"image-loro-card-ia\",\n \"loro-card-ticket\": \"image-loro-card-qr\",\n \"home-icon-basket\": \"image-home-icon-basket\",\n \"home-icon-compare\": \"image-home-icon-compare\",\n \"home-icon-pantry\": \"image-home-icon-pantry\",\n \"home-icon-expiry\": \"image-home-icon-expiry\",\n \"home-icon-scan\": \"image-home-icon-scan\",\n \"home-icon-ai\": \"image-home-icon-ai\",\n \"home-intro\": \"image-image-home\",\n \"loro-buy-despensa\": \"image-logo-despensa-buy\",\n \"loro-despensa\": \"image-loro-despensa\"\n} as const;\n\nexport type LoroImageAssetName = keyof typeof LORO_IMAGE_PATHS;\nexport type LoroImageLegacyName = keyof typeof LORO_IMAGE_LEGACY_NAMES;\nexport type LoroImageName = LoroImageAssetName | LoroImageLegacyName;\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n LORO_ICON_LEGACY_NAMES,\n LORO_ICON_PATHS,\n type LoroIconAssetName,\n type LoroIconName,\n} from '../../../assets/loro-assets.generated';\n\nexport {\n LORO_ICON_ASSETS,\n LORO_ICON_LEGACY_NAMES,\n LORO_ICON_PATHS,\n type LoroIconAsset,\n type LoroIconAssetName,\n type LoroIconLegacyName,\n type LoroIconName,\n} from '../../../assets/loro-assets.generated';\n\nexport type LoroIconColorToken =\n | 'default'\n | 'primary'\n | 'primary-strong'\n | 'primary-deep'\n | 'text'\n | 'muted'\n | 'success'\n | 'danger'\n | 'warning'\n | 'inverse';\nexport type LoroIconColor = LoroIconColorToken | string;\nexport type LoroIconRenderMode = 'mask' | 'origin';\nexport type LoroIconSize = number | string;\n\nconst LORO_ICON_COLOR_TOKENS: Record<LoroIconColorToken, string> = {\n default: 'currentColor',\n primary: 'var(--loro-primary-500)',\n 'primary-strong': 'var(--loro-primary-700)',\n 'primary-deep': 'var(--loro-primary-900)',\n text: 'var(--loro-text)',\n muted: 'var(--loro-muted)',\n success: '#1f9d55',\n danger: 'var(--loro-danger-text)',\n warning: 'var(--loro-warning)',\n inverse: 'var(--loro-text-inverse)',\n};\n\n@Component({\n selector: 'loro-icon',\n \n templateUrl: './loro-icon.html',\n styleUrl: './loro-icon.scss',standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroIcon {\n name = input.required<LoroIconName>();\n size = input<LoroIconSize>(48);\n alt = input<string>('');\n decorative = input<boolean>(false);\n color = input<LoroIconColor>('default');\n renderMode = input<LoroIconRenderMode>('mask');\n\n protected readonly assetName = computed(() => {\n const name = this.name();\n\n return (\n name in LORO_ICON_PATHS\n ? name\n : LORO_ICON_LEGACY_NAMES[name as keyof typeof LORO_ICON_LEGACY_NAMES]\n ) as LoroIconAssetName;\n });\n protected readonly src = computed(() => LORO_ICON_PATHS[this.assetName()]);\n protected readonly altText = computed(() => (this.decorative() ? '' : this.alt() || this.name()));\n protected readonly resolvedSize = computed(() => {\n const size = this.size();\n\n return typeof size === 'number' ? `${size}px` : size;\n });\n protected readonly resolvedColor = computed(() => {\n const color = this.color();\n\n return color in LORO_ICON_COLOR_TOKENS\n ? LORO_ICON_COLOR_TOKENS[color as LoroIconColorToken]\n : color;\n });\n}\n","<span\n class=\"loro-icon\"\n role=\"img\"\n [attr.aria-label]=\"decorative() ? null : altText()\"\n [attr.aria-hidden]=\"decorative() ? 'true' : null\"\n [style.width]=\"resolvedSize()\"\n [style.height]=\"resolvedSize()\"\n >\n @if (renderMode() === 'origin') {\n <img class=\"loro-icon__origin\" [src]=\"src()\" alt=\"\" aria-hidden=\"true\" />\n } @else {\n <span\n class=\"loro-icon__mask\"\n [style.--loro-icon-mask]=\"'url(' + src() + ')'\"\n [style.--loro-icon-color]=\"resolvedColor()\"\n ></span>\n }\n </span>","import type { LoroAccordionIconName } from '../models/loro-accordion.model';\n\nexport const LORO_ACCORDION_DEFAULTS = {\n icon: 'help' as LoroAccordionIconName,\n expanded: false,\n} as const;\n\n","import { ChangeDetectionStrategy, Component, effect, input, output, signal } from '@angular/core';\nimport { LoroIcon } from '../../resources/loro-icon';\nimport { LORO_ACCORDION_DEFAULTS } from './constants/loro-accordion.constants';\nimport type { LoroAccordionIconName } from './models/loro-accordion.model';\n\n@Component({\n selector: 'loro-accordion',\n templateUrl: './loro-accordion.html',\n styleUrl: './loro-accordion.scss',\n standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroAccordion {\n readonly title = input.required<string>();\n readonly icon = input<LoroAccordionIconName>(LORO_ACCORDION_DEFAULTS.icon);\n readonly expanded = input<boolean>(LORO_ACCORDION_DEFAULTS.expanded);\n readonly expandedChange = output<boolean>();\n protected readonly isExpanded = signal(false);\n\n constructor() {\n effect(() => {\n this.isExpanded.set(this.expanded());\n });\n }\n\n protected toggleExpanded(): void {\n const nextExpanded = !this.isExpanded();\n\n this.isExpanded.set(nextExpanded);\n this.expandedChange.emit(nextExpanded);\n }\n}\n","<article class=\"loro-accordion\" [class.loro-accordion--open]=\"isExpanded()\">\n <button\n type=\"button\"\n class=\"loro-accordion__header\"\n [attr.aria-expanded]=\"isExpanded()\"\n (click)=\"toggleExpanded()\"\n >\n @if (icon()) {\n <span class=\"loro-accordion__icon\">\n <loro-icon [name]=\"icon()!\" [size]=\"24\" [alt]=\"title()\" color=\"primary\" />\n </span>\n }\n\n <span class=\"loro-accordion__title\">{{ title() }}</span>\n\n <loro-icon\n class=\"loro-accordion__toggle\"\n [name]=\"isExpanded() ? 'chevron-up' : 'chevron-down'\"\n [size]=\"22\"\n alt=\"Expandir\"\n color=\"primary\"\n />\n </button>\n\n @if (isExpanded()) {\n <div class=\"loro-accordion__body\">\n <ng-content />\n </div>\n }\n</article>\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, inject } from '@angular/core';\nimport { Capacitor } from '@capacitor/core';\nimport { Haptics, ImpactStyle, NotificationType } from '@capacitor/haptics';\n\ntype HapticPattern = number | number[];\n\n@Injectable({ providedIn: 'root' })\nexport class LoroHapticsService {\n private readonly document = inject(DOCUMENT);\n private readonly vibration =\n 'vibrate' in navigator ? navigator.vibrate.bind(navigator) : null;\n\n impact(style: 'light' | 'medium' | 'heavy' = 'light'): void {\n if (Capacitor.isNativePlatform()) {\n const nativeStyle = {\n light: ImpactStyle.Light,\n medium: ImpactStyle.Medium,\n heavy: ImpactStyle.Heavy,\n } satisfies Record<typeof style, ImpactStyle>;\n\n void Haptics.impact({ style: nativeStyle[style] });\n return;\n }\n\n const pattern = {\n light: 10,\n medium: [12, 18, 12],\n heavy: [18, 24, 18],\n } satisfies Record<typeof style, HapticPattern>;\n\n this.trigger(pattern[style]);\n }\n\n selection(): void {\n if (Capacitor.isNativePlatform()) {\n void Haptics.selectionStart()\n .then(() => Haptics.selectionChanged())\n .then(() => Haptics.selectionEnd());\n return;\n }\n\n this.trigger(8);\n }\n\n notification(type: 'success' | 'warning' | 'error' = 'success'): void {\n if (Capacitor.isNativePlatform()) {\n const nativeType = {\n success: NotificationType.Success,\n warning: NotificationType.Warning,\n error: NotificationType.Error,\n } satisfies Record<typeof type, NotificationType>;\n\n void Haptics.notification({ type: nativeType[type] });\n return;\n }\n\n const pattern = {\n success: [12, 24, 12],\n warning: [18, 18, 18],\n error: [30, 24, 30],\n } satisfies Record<typeof type, HapticPattern>;\n\n this.trigger(pattern[type]);\n }\n\n private trigger(pattern: HapticPattern): void {\n if (!this.vibration || this.document.visibilityState !== 'visible') {\n return;\n }\n\n this.vibration(pattern);\n }\n}\n","import type {\n LoroButtonIconSize,\n LoroButtonVariant,\n LoroButtonWidth,\n} from '../models/loro-button.model';\n\nexport const LORO_BUTTON_DEFAULTS = {\n text: '',\n icon: null,\n iconColor: null,\n iconOnly: false,\n iconSize: 22 as LoroButtonIconSize,\n variant: 'primary' as LoroButtonVariant,\n width: 'fit-content' as LoroButtonWidth,\n ariaLabel: '',\n ariaDescription: '',\n} as const;\n\nexport const LORO_BUTTON_VARIANTS: readonly LoroButtonVariant[] = [\n 'primary',\n 'secondary',\n 'tertiary',\n 'danger',\n 'soft',\n 'social',\n 'loading',\n 'disabled',\n];\n\nexport const LORO_BUTTON_WIDTHS: readonly LoroButtonWidth[] = ['fit-content', 'full'];\n\nexport const LORO_BUTTON_ICON_SIZES: readonly LoroButtonIconSize[] = [\n 16,\n 18,\n 20,\n 22,\n 24,\n 28,\n 32,\n 36,\n 40,\n];\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\n\nimport {\n LoroIcon,\n type LoroIconName,\n type LoroIconRenderMode,\n} from '../../resources/loro-icon';\nimport {\n LORO_BUTTON_DEFAULTS,\n} from './constants/loro-button.constants';\nimport type {\n LoroButtonIconSize,\n LoroButtonVariant,\n LoroButtonWidth,\n} from './models/loro-button.model';\n\nexport type {\n LoroButtonIconSize,\n LoroButtonVariant,\n LoroButtonWidth,\n};\nexport {\n LORO_BUTTON_DEFAULTS,\n LORO_BUTTON_ICON_SIZES,\n LORO_BUTTON_VARIANTS,\n LORO_BUTTON_WIDTHS,\n} from './constants/loro-button.constants';\n\n/**\n * Reusable action button with a compact public API.\n *\n * Mobile-first by default. Desktop refinements live in the component stylesheet\n * through the shared breakpoint helpers.\n */\n@Component({\n selector: 'loro-button',\n standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.loro-button-host--full]': \"width() === 'full'\",\n },\n templateUrl: './loro-button.html',\n styleUrl: './loro-button.scss',\n})\nexport class LoroButton {\n /** Visible text label rendered inside the button. */\n text = input<string>(LORO_BUTTON_DEFAULTS.text);\n /** Optional icon from the Loro icon registry. */\n icon = input<LoroIconName | null>(LORO_BUTTON_DEFAULTS.icon);\n /** Optional icon color override, supported for tertiary variant. */\n iconColor = input<string | null>(LORO_BUTTON_DEFAULTS.iconColor);\n /** Renders a square icon-only action when true. */\n iconOnly = input<boolean>(LORO_BUTTON_DEFAULTS.iconOnly);\n /** Typed icon size token shared with Storybook controls. */\n iconSize = input<LoroButtonIconSize>(LORO_BUTTON_DEFAULTS.iconSize);\n /** Visual treatment and semantic state of the button. */\n variant = input<LoroButtonVariant>(LORO_BUTTON_DEFAULTS.variant);\n /** Width behavior for inline or full-row actions. */\n width = input<LoroButtonWidth>(LORO_BUTTON_DEFAULTS.width);\n /** Accessible name override. Required for icon-only usage when no text exists. */\n ariaLabel = input<string>(LORO_BUTTON_DEFAULTS.ariaLabel);\n /** Optional extra accessible description. */\n ariaDescription = input<string>(LORO_BUTTON_DEFAULTS.ariaDescription);\n\n /** Single activation output for click and keyboard button semantics. */\n buttonClick = output<void>();\n\n /** Normalized visible text used by the template and accessibility fallbacks. */\n protected readonly resolvedText = computed(() => this.text().trim());\n /** Loading is modeled as a visual variant to keep the public API small. */\n protected readonly isLoading = computed(() => this.variant() === 'loading');\n /** Disabled states are also modeled through variants. */\n protected readonly isDisabled = computed(() => {\n const variant = this.variant();\n\n return variant === 'disabled' || variant === 'loading';\n });\n /** Icons are hidden while loading so the spinner is the only visual affordance. */\n protected readonly hasIcon = computed(() => !this.isLoading() && !!this.icon());\n /** Labels are hidden for icon-only buttons and loading buttons. */\n protected readonly showLabel = computed(() => !this.iconOnly() && !this.isLoading());\n /** Social buttons preserve their original icon artwork colors by default. */\n protected readonly iconRenderMode = computed<LoroIconRenderMode>(() =>\n this.variant() === 'social' ? 'origin' : 'mask',\n );\n /** Tertiary can override button foreground (text/icon) using iconColor. */\n protected readonly resolvedTertiaryColor = computed(() =>\n this.variant() === 'tertiary' ? this.iconColor() : null,\n );\n /** Tertiary can override icon color while other variants keep currentColor styling. */\n protected readonly resolvedIconColor = computed(() => {\n if (this.resolvedTertiaryColor()) {\n return this.resolvedTertiaryColor()!;\n }\n\n return 'currentColor';\n });\n /** Falls back to visible text when no explicit accessible label is provided. */\n protected readonly resolvedAriaLabel = computed(() => {\n const ariaLabel = this.ariaLabel().trim();\n\n if (ariaLabel) {\n return ariaLabel;\n }\n\n return this.resolvedText() || null;\n });\n\n /** Prevents emissions for visual disabled/loading states. */\n protected onClick(): void {\n if (this.isDisabled()) {\n return;\n }\n\n this.buttonClick.emit();\n }\n}\n","<button\n type=\"button\"\n class=\"loro-button\"\n [class]=\"'loro-button loro-button--' + variant()\"\n [class.loro-button--full]=\"width() === 'full'\"\n [class.loro-button--icon-only]=\"iconOnly()\"\n [class.loro-button--has-icon]=\"hasIcon()\"\n [style.--loro-button-icon-size.px]=\"iconSize()\"\n [style.--loro-button-tertiary-color]=\"resolvedTertiaryColor()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"resolvedAriaLabel()\"\n [attr.aria-description]=\"ariaDescription() || null\"\n [attr.aria-busy]=\"isLoading() ? 'true' : null\"\n (click)=\"onClick()\"\n>\n @if (isLoading()) {\n <span class=\"loro-button__spinner\" aria-hidden=\"true\"></span>\n } @else {\n @if (hasIcon()) {\n <loro-icon\n class=\"loro-button__icon\"\n [name]=\"icon()!\"\n [size]=\"iconSize()\"\n [alt]=\"resolvedText()\"\n [decorative]=\"iconOnly()\"\n [color]=\"resolvedIconColor()\"\n [renderMode]=\"iconRenderMode()\"\n />\n }\n\n @if (showLabel()) {\n <span class=\"loro-button__label\">{{ resolvedText() }}</span>\n }\n\n <span class=\"loro-button__suffix\">\n <ng-content />\n </span>\n }\n</button>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n LORO_IMAGE_LEGACY_NAMES,\n LORO_IMAGE_PATHS,\n type LoroImageAssetName,\n type LoroImageName,\n} from '../../../assets/loro-assets.generated';\n\nexport type LoroImageSize = number | string;\n\nconst LORO_IMAGE_MIN_SIZE = 16;\nconst LORO_IMAGE_MAX_SIZE = 640;\n\nexport {\n LORO_IMAGE_ASSETS,\n LORO_IMAGE_LEGACY_NAMES,\n LORO_IMAGE_PATHS,\n type LoroImageAsset,\n type LoroImageAssetName,\n type LoroImageLegacyName,\n type LoroImageName,\n} from '../../../assets/loro-assets.generated';\n\n@Component({\n selector: 'loro-image',\n templateUrl: './loro-image.html',\n styleUrl: './loro-image.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroImage {\n readonly name = input.required<LoroImageName>();\n readonly alt = input<string>('');\n readonly size = input<LoroImageSize | null>(null);\n\n protected readonly assetName = computed(() => {\n const name = this.name();\n\n return (\n name in LORO_IMAGE_PATHS\n ? name\n : LORO_IMAGE_LEGACY_NAMES[name as keyof typeof LORO_IMAGE_LEGACY_NAMES]\n ) as LoroImageAssetName;\n });\n protected readonly src = computed(() => LORO_IMAGE_PATHS[this.assetName()]);\n protected readonly altText = computed(() => this.alt());\n protected readonly resolvedSize = computed(() => {\n const size = this.size();\n\n if (typeof size === 'number') {\n const clampedSize = Math.min(Math.max(size, LORO_IMAGE_MIN_SIZE), LORO_IMAGE_MAX_SIZE);\n\n return `${clampedSize}px`;\n }\n\n return size;\n });\n}\n","<img\n class=\"loro-image\"\n [src]=\"src()\"\n [alt]=\"altText()\"\n [style.width]=\"resolvedSize()\"\n/>\n","import type { LoroNavItem } from '../models/loro-nav.model';\n\nexport const LORO_NAV_DEFAULT_MAIN_ITEMS: LoroNavItem[] = [\n { id: 'home', label: 'Inicio', icon: 'nav-home', active: true },\n { id: 'list', label: 'Lista', icon: 'nav-list' },\n { id: 'scan', label: 'Escanear', icon: 'scanner' },\n { id: 'compare', label: 'Comparar', icon: 'nav-compare' },\n { id: 'pantry', label: 'Despensa', icon: 'nav-pantry' },\n];\n\nexport const LORO_NAV_DEFAULT_UTILITY_ITEMS: LoroNavItem[] = [\n { id: 'settings', label: 'Ajustes', icon: 'settings' },\n { id: 'logout', label: 'Cerrar sesión', icon: 'logout' },\n];\n\nexport const LORO_NAV_DEFAULT_ARIA_LABEL = 'Navegación principal';\nexport const LORO_NAV_MOBILE_SLOT_LIMIT = 5;\n","import { Toolbar, ToolbarWidget } from '@angular/aria/toolbar';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, output, signal } from '@angular/core';\nimport { LoroHapticsService } from '../../../services/loro-haptics.service';\nimport { LoroButton } from '../../actions/loro-button/loro-button';\nimport { LoroIcon } from '../../resources/loro-icon';\nimport { LoroImage } from '../../resources/loro-image/loro-image';\nimport { LORO_NAV_DEFAULT_ARIA_LABEL, LORO_NAV_DEFAULT_MAIN_ITEMS, LORO_NAV_DEFAULT_UTILITY_ITEMS, LORO_NAV_MOBILE_SLOT_LIMIT } from './constants/loro-nav.constants';\nimport type { LoroNavClick, LoroNavItem } from './models/loro-nav.model';\n\nexport type { LoroNavClick, LoroNavItem } from './models/loro-nav.model';\n\n@Component({\n selector: 'loro-nav',\n standalone: true,\n imports: [Toolbar, ToolbarWidget, LoroImage, LoroButton, LoroIcon],\n templateUrl: './loro-nav.html',\n styleUrl: './loro-nav.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroNav {\n /** Shared haptics feedback for taps and drag selection. */\n private readonly haptics = inject(LoroHapticsService);\n /** Keeps track of the active pointer only while the mobile slider is captured. */\n private activePointerId: number | null = null;\n /** Continuous slider position used while dragging on mobile. */\n private readonly previewMobilePosition = signal<number | null>(null);\n /** Locally selected mobile index so the active state updates immediately. */\n private readonly activeMobileIndex = signal<number | null>(null);\n /** Tracks whether the pointer is currently captured by the mobile nav. */\n private readonly mobilePointerActive = signal(false);\n /** Prevents the release click from firing twice after a swipe selection. */\n private suppressNextMobileClick = false;\n\n /** Main navigation items. */\n items = input<LoroNavItem[]>(LORO_NAV_DEFAULT_MAIN_ITEMS);\n /** Optional utility actions shown on desktop. */\n utilityItems = input<LoroNavItem[]>(LORO_NAV_DEFAULT_UTILITY_ITEMS);\n /** Accessible label for the navigation landmark. */\n ariaLabel = input<string>(LORO_NAV_DEFAULT_ARIA_LABEL);\n /** Enables or hides the desktop utility block. */\n showUtilityItems = input<boolean>(true);\n /** Shows or hides the item labels in desktop and mobile navigation. */\n showLabels = input<boolean>(true);\n /** Emits the selected main item. */\n itemClick = output<LoroNavItem>();\n /** Emits the selected utility item. */\n utilityItemClick = output<LoroNavItem>();\n /** Emits the selected item and section metadata. */\n navItemClick = output<LoroNavClick>();\n\n protected readonly desktopItems = computed(() => this.items().filter((item) => item.id !== 'scan'));\n protected readonly mobileItems = computed(() => this.items().slice(0, LORO_NAV_MOBILE_SLOT_LIMIT));\n protected readonly mobileVisualSlotCount = computed(() => this.mobileItems().length);\n\n private readonly selectedMobileIndex = computed(() => {\n const activeIndex = this.activeMobileIndex();\n if (activeIndex !== null) {\n return activeIndex;\n }\n\n const index = this.mobileItems().findIndex((item) => item.active);\n return index >= 0 ? index : 0;\n });\n\n protected readonly mobileSliderPosition = computed(() =>\n this.previewMobilePosition() ?? this.selectedMobileIndex(),\n );\n\n protected readonly isMobileDragging = computed(() => this.mobilePointerActive());\n protected readonly mobileItemCount = computed(() => this.mobileItems().length);\n protected readonly selectedMobileItemId = computed(() => this.mobileItems()[this.selectedMobileIndex()]?.id ?? '');\n\n protected isMobileItemVisualActive(index: number): boolean {\n return this.selectedMobileIndex() === index;\n }\n\n onMainItemClick(item: LoroNavItem): void {\n if (item.disabled) {\n return;\n }\n\n this.emitMainItem(item, true);\n }\n\n protected onMobileItemClick(item: LoroNavItem): void {\n if (this.suppressNextMobileClick) {\n this.suppressNextMobileClick = false;\n return;\n }\n\n const index = this.mobileItems().findIndex((mobileItem) => mobileItem.id === item.id);\n this.selectMobileItem(index, true);\n }\n\n protected onMobilePointerDown(event: PointerEvent): void {\n if (!event.isPrimary || event.button !== 0 || this.mobileItems().length === 0) {\n return;\n }\n\n const nav = event.currentTarget as HTMLElement;\n this.activePointerId = event.pointerId;\n this.mobilePointerActive.set(true);\n nav.setPointerCapture(event.pointerId);\n\n const slotPosition = this.getMobileVisualSlotPosition(event.clientX, nav);\n if (this.getNearestEnabledMobileIndex(slotPosition) === null) {\n this.releaseMobilePointer(nav, event.pointerId);\n return;\n }\n\n this.previewMobilePosition.set(slotPosition);\n event.preventDefault();\n }\n\n protected onMobilePointerMove(event: PointerEvent): void {\n if (event.pointerId !== this.activePointerId) {\n return;\n }\n\n const nav = event.currentTarget as HTMLElement;\n const slotPosition = this.getMobileVisualSlotPosition(event.clientX, nav);\n\n this.previewMobilePosition.set(slotPosition);\n\n event.preventDefault();\n }\n\n protected onMobilePointerUp(event: PointerEvent): void {\n if (event.pointerId !== this.activePointerId) {\n return;\n }\n\n const nav = event.currentTarget as HTMLElement;\n const slotPosition = this.getMobileVisualSlotPosition(event.clientX, nav);\n const index = this.getNearestEnabledMobileIndex(slotPosition);\n\n this.releaseMobilePointer(nav, event.pointerId);\n\n if (index === null) {\n return;\n }\n\n const item = this.mobileItems()[index];\n if (!item || item.disabled) {\n return;\n }\n\n const selectedIndex: number = index;\n this.previewMobilePosition.set(slotPosition);\n\n this.suppressNextMobileClick = true;\n globalThis.setTimeout(() => {\n this.suppressNextMobileClick = false;\n });\n\n this.selectMobileItem(selectedIndex, false);\n\n globalThis.queueMicrotask(() => {\n this.previewMobilePosition.set(null);\n });\n\n event.preventDefault();\n }\n\n protected onMobilePointerCancel(event: PointerEvent): void {\n if (event.pointerId !== this.activePointerId) {\n return;\n }\n\n this.releaseMobilePointer(event.currentTarget as HTMLElement, event.pointerId);\n this.previewMobilePosition.set(null);\n }\n\n onUtilityItemClick(item: LoroNavItem): void {\n if (item.disabled) {\n return;\n }\n\n this.haptics.impact('light');\n this.utilityItemClick.emit(item);\n this.navItemClick.emit({ item, section: 'utility' });\n }\n\n private emitMainItem(item: LoroNavItem, withHaptics: boolean): void {\n if (withHaptics) {\n this.haptics.selection();\n }\n\n this.itemClick.emit(item);\n this.navItemClick.emit({ item, section: 'main' });\n }\n\n private selectMobileItem(index: number, withHaptics: boolean): void {\n const item = this.mobileItems()[index];\n if (!item || item.disabled) {\n return;\n }\n\n this.activeMobileIndex.set(index);\n this.emitMainItem(item, withHaptics);\n }\n\n /** Maps a pointer X coordinate to a zero-based visual slot index. */\n private getMobileVisualSlotPosition(clientX: number, nav: HTMLElement): number {\n const slotCount = this.mobileVisualSlotCount();\n if (slotCount <= 1) {\n return 0;\n }\n\n const rect = nav.getBoundingClientRect();\n const itemWidth = rect.width / slotCount;\n const position = (clientX - rect.left - itemWidth / 2) / itemWidth;\n\n return Math.min(Math.max(position, 0), slotCount - 1);\n }\n\n protected mobileItemGridColumn(index: number): number {\n return index + 1;\n }\n\n private getNearestEnabledMobileIndex(slotPosition: number): number | null {\n const items = this.mobileItems();\n const enabledIndexes = items\n .map((item, index) => ({ item, index }))\n .filter(({ item }) => !item.disabled)\n .map(({ index }) => index);\n\n if (enabledIndexes.length === 0) {\n return null;\n }\n\n return enabledIndexes.reduce((nearest, index) =>\n Math.abs(index - slotPosition) <\n Math.abs(nearest - slotPosition)\n ? index\n : nearest,\n );\n }\n\n /** Releases pointer capture and clears transient mobile drag state. */\n private releaseMobilePointer(nav: HTMLElement, pointerId: number): void {\n if (nav.hasPointerCapture(pointerId)) {\n nav.releasePointerCapture(pointerId);\n }\n\n this.activePointerId = null;\n this.mobilePointerActive.set(false);\n }\n}\n","<aside class=\"loro-nav\" [class.loro-nav--icon-only]=\"!showLabels()\">\n <!-- Desktop -->\n <div class=\"loro-nav__desktop\">\n <div class=\"loro-nav__surface\">\n <div class=\"loro-nav__brand\">\n <loro-image\n class=\"loro-nav__brand-image\"\n name=\"image-loro-apaisado\"\n alt=\"AlLoro\"\n size=\"10rem\"\n />\n </div>\n\n <nav class=\"loro-nav__nav\" [attr.aria-label]=\"ariaLabel()\">\n @for (item of desktopItems(); track item.id) {\n <loro-button\n class=\"loro-nav__item\"\n [class.loro-nav__item--active]=\"item.active\"\n [class.loro-nav__item--disabled]=\"item.disabled\"\n [class.loro-nav__item--logout]=\"item.id === 'logout'\"\n [text]=\"showLabels() ? item.label : ''\"\n [icon]=\"item.icon\"\n [variant]=\"item.disabled ? 'disabled' : 'tertiary'\"\n [iconOnly]=\"!showLabels()\"\n width=\"full\"\n [ariaLabel]=\"item.label\"\n (buttonClick)=\"onMainItemClick(item)\"\n >\n @if (item.badge !== null && item.badge !== undefined && item.badge !== '') {\n <span class=\"loro-nav__badge\">{{ item.badge }}</span>\n }\n </loro-button>\n }\n </nav>\n\n <div class=\"loro-nav__spacer\"></div>\n\n @if (showUtilityItems() && utilityItems().length > 0) {\n <div class=\"loro-nav__divider\" aria-hidden=\"true\"></div>\n\n <nav class=\"loro-nav__nav loro-nav__nav--utility\" aria-label=\"Navegación secundaria\">\n @for (item of utilityItems(); track item.id) {\n <loro-button\n class=\"loro-nav__item\"\n [class.loro-nav__item--active]=\"item.active\"\n [class.loro-nav__item--disabled]=\"item.disabled\"\n [class.loro-nav__item--logout]=\"item.id === 'logout'\"\n [text]=\"showLabels() ? item.label : ''\"\n [icon]=\"item.icon\"\n [variant]=\"item.disabled ? 'disabled' : 'tertiary'\"\n [iconOnly]=\"!showLabels()\"\n width=\"full\"\n [ariaLabel]=\"item.label\"\n (buttonClick)=\"onUtilityItemClick(item)\"\n >\n @if (item.badge !== null && item.badge !== undefined && item.badge !== '') {\n <span class=\"loro-nav__badge\">{{ item.badge }}</span>\n }\n </loro-button>\n }\n </nav>\n }\n </div>\n </div>\n\n <!-- Mobile -->\n <nav\n ngToolbar\n class=\"loro-nav__mobile\"\n [class.loro-nav__mobile--icon-only]=\"!showLabels()\"\n data-horizontal-gesture\n [attr.aria-label]=\"ariaLabel()\"\n [style.--loro-mobile-slider-position]=\"mobileSliderPosition()\"\n [class.loro-nav__mobile--dragging]=\"isMobileDragging()\"\n [class.loro-nav__mobile--with-labels]=\"true\"\n [style.--loro-mobile-item-count]=\"mobileItemCount()\"\n [style.--loro-mobile-visual-slot-count]=\"mobileVisualSlotCount()\"\n (pointerdown)=\"onMobilePointerDown($event)\"\n (pointermove)=\"onMobilePointerMove($event)\"\n (pointerup)=\"onMobilePointerUp($event)\"\n (pointercancel)=\"onMobilePointerCancel($event)\"\n >\n <span\n class=\"loro-nav__mobile-slider\"\n [class.loro-nav__mobile-slider--scan]=\"selectedMobileItemId() === 'scan' && !isMobileDragging()\"\n aria-hidden=\"true\"></span>\n\n @for (item of mobileItems(); track item.id; let index = $index) {\n <button\n ngToolbarWidget\n type=\"button\"\n class=\"loro-nav__mobile-item\"\n [style.grid-column]=\"mobileItemGridColumn(index)\"\n [class.loro-nav__mobile-item--active]=\"isMobileItemVisualActive(index)\"\n [class.loro-nav__mobile-item--scan-active]=\"item.id === 'scan' && isMobileItemVisualActive(index) && !isMobileDragging()\"\n [class.loro-nav__mobile-item--disabled]=\"item.disabled\"\n [attr.aria-label]=\"item.label\"\n [attr.aria-current]=\"item.active ? 'page' : null\"\n [value]=\"item.id\"\n [disabled]=\"!!item.disabled\"\n (click)=\"onMobileItemClick(item)\"\n >\n <loro-icon\n class=\"loro-nav__mobile-icon\"\n [name]=\"item.icon\"\n [size]=\"24\"\n color=\"default\"\n [alt]=\"item.label\"\n />\n @if (showLabels()) {\n <span class=\"loro-nav__mobile-label\">{{ item.label }}</span>\n }\n </button>\n }\n </nav>\n</aside>\n","import type { LoroBadgeVariant } from '../models/loro-badge.model';\n\nexport const LORO_BADGE_DEFAULTS = {\n variant: 'info' as LoroBadgeVariant,\n} as const;\n\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { LORO_BADGE_DEFAULTS } from './constants/loro-badge.constants';\nimport type { LoroBadgeVariant } from './models/loro-badge.model';\n\nexport type { LoroBadgeVariant } from './models/loro-badge.model';\n\n@Component({\n selector: 'loro-badge',\n templateUrl: './loro-badge.html',\n styleUrl: './loro-badge.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroBadge {\n label = input.required<string>();\n variant = input<LoroBadgeVariant>(LORO_BADGE_DEFAULTS.variant);\n}\n","<span class=\"loro-badge\" [class]=\"'loro-badge loro-badge--' + variant()\">\n <span class=\"loro-badge__label\">{{ label() }}</span>\n</span>\n","import type { LoroAlertAnnouncement, LoroAlertVariant } from '../models/loro-alert.model';\n\nexport const LORO_ALERT_DEFAULTS = {\n title: '',\n message: '',\n variant: 'info' as LoroAlertVariant,\n announcement: 'auto' as LoroAlertAnnouncement,\n focusable: false,\n actionLabel: '',\n dismissible: false,\n dismissLabel: 'Cerrar aviso',\n} as const;\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\n\nimport { LoroButton } from '../../actions/loro-button/loro-button';\nimport { LoroIcon, type LoroIconColor, type LoroIconName } from '../../resources/loro-icon';\nimport { LORO_ALERT_DEFAULTS } from './constants/loro-alert.constants';\nimport type { LoroAlertAnnouncement, LoroAlertVariant } from './models/loro-alert.model';\n\nexport type { LoroAlertAnnouncement, LoroAlertVariant } from './models/loro-alert.model';\n\n@Component({\n selector: 'loro-alert',\n standalone: true,\n imports: [LoroButton, LoroIcon],\n templateUrl: './loro-alert.html',\n styleUrl: './loro-alert.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n\n host: {\n '[attr.role]': 'role()',\n '[attr.aria-live]': 'ariaLive()',\n '[attr.aria-atomic]': 'ariaLive() ? \"true\" : null',\n '[attr.tabindex]': 'focusable() ? -1 : null',\n '[class.loro-alert--focusable]': 'focusable()',\n '[attr.data-variant]': 'variant()',\n },\n})\nexport class LoroAlert {\n readonly title = input<string>(LORO_ALERT_DEFAULTS.title);\n readonly message = input<string>(LORO_ALERT_DEFAULTS.message);\n readonly variant = input<LoroAlertVariant>(LORO_ALERT_DEFAULTS.variant);\n readonly announcement = input<LoroAlertAnnouncement>(LORO_ALERT_DEFAULTS.announcement);\n readonly focusable = input<boolean>(LORO_ALERT_DEFAULTS.focusable);\n readonly actionLabel = input<string>(LORO_ALERT_DEFAULTS.actionLabel);\n readonly dismissible = input<boolean>(LORO_ALERT_DEFAULTS.dismissible);\n readonly dismissLabel = input<string>(LORO_ALERT_DEFAULTS.dismissLabel);\n\n readonly action = output<void>();\n readonly dismissed = output<void>();\n\n protected readonly resolvedIcon = computed<LoroIconName>(() => this.resolveIconName());\n protected readonly resolvedIconColor = computed<LoroIconColor>(() => this.resolveVariantIconColor());\n protected readonly actionIconColor = computed<LoroIconColor>(() => this.resolveVariantIconColor());\n protected readonly role = computed<'status' | 'alert' | null>(() => this.resolveRole());\n protected readonly ariaLive = computed<'polite' | 'assertive' | null>(() => this.resolveAriaLive());\n\n private readonly resolvedAnnouncement = computed<'polite' | 'assertive' | 'off'>(() => {\n const announcement = this.announcement();\n if (announcement === 'auto') {\n return this.variant() === 'error' ? 'assertive' : 'polite';\n }\n return announcement;\n });\n\n private resolveIconName(): LoroIconName {\n switch (this.variant()) {\n case 'success':\n return 'tick-circle';\n case 'warning':\n case 'error':\n return 'shield-alert';\n default:\n return 'info';\n }\n }\n\n private resolveVariantIconColor(): LoroIconColor {\n switch (this.variant()) {\n case 'success':\n return 'success';\n\n case 'warning':\n return 'warning';\n\n case 'error':\n return 'danger';\n\n case 'neutral':\n return 'muted';\n\n case 'info':\n default:\n return 'primary';\n }\n }\n\n private resolveRole(): 'status' | 'alert' | null {\n const announcement = this.resolvedAnnouncement();\n\n if (announcement === 'off') {\n return null;\n }\n\n return announcement === 'assertive' ? 'alert' : 'status';\n }\n\n private resolveAriaLive(): 'polite' | 'assertive' | null {\n const announcement = this.resolvedAnnouncement();\n\n return announcement === 'off' ? null : announcement;\n }\n}\n","<aside\n class=\"loro-alert\"\n [class]=\"'loro-alert loro-alert--' + variant()\"\n [attr.role]=\"role()\"\n [attr.aria-live]=\"ariaLive()\"\n [attr.aria-atomic]=\"role() ? 'true' : null\"\n>\n <loro-icon [name]=\"resolvedIcon()\" [size]=\"20\" [alt]=\"''\" [color]=\"resolvedIconColor()\" />\n\n <div class=\"loro-alert__content\">\n @if (title()) {\n <strong class=\"loro-alert__title\">{{ title() }}</strong>\n }\n\n <div class=\"loro-alert__message\">\n @if (message()) {\n <p>{{ message() }}</p>\n }\n </div>\n\n @if (actionLabel()) {\n <loro-button\n [text]=\"actionLabel()\"\n variant=\"tertiary\"\n [iconColor]=\"actionIconColor()\"\n (buttonClick)=\"action.emit()\"\n ></loro-button>\n }\n </div>\n\n @if (dismissible()) {\n <loro-button\n icon=\"x\"\n variant=\"tertiary\"\n [iconOnly]=\"true\"\n [iconColor]=\"actionIconColor()\"\n [ariaLabel]=\"dismissLabel()\"\n (buttonClick)=\"dismissed.emit()\"\n ></loro-button>\n }\n</aside>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { LoroIcon } from '../../resources/loro-icon';\n\n@Component({\n selector: 'loro-notification',\n \n templateUrl: './loro-notification.html',\n styleUrl: './loro-notification.scss',standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoroNotification {\n count = input<number>(0);\n maxCount = input<number>(9);\n showZero = input<boolean>(false);\n active = input<boolean>(false);\n expanded = input<boolean | null>(null);\n disabled = input<boolean>(false);\n ariaLabel = input<string>('Notifications');\n iconSize = input<number>(25);\n notificationClick = output<void>();\n\n protected readonly showBadge = computed(() => this.count() > 0 || this.showZero());\n protected readonly badgeLabel = computed(() => {\n const count = Math.max(0, this.count());\n const maxCount = Math.max(1, this.maxCount());\n\n return count > maxCount ? `${maxCount}+` : count.toString();\n });\n protected readonly badgeAriaLabel = computed(() => `${this.badgeLabel()} unread notifications`);\n}\n","<button\n type=\"button\"\n class=\"loro-notification\"\n [class.loro-notification--active]=\"active()\"\n [class.loro-notification--disabled]=\"disabled()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-expanded]=\"expanded()\"\n (click)=\"notificationClick.emit()\">\n <loro-icon name=\"bell\" [size]=\"iconSize()\" alt=\"\" [decorative]=\"true\" color=\"primary\" />\n @if (showBadge()) {\n <span class=\"loro-notification__badge\" [attr.aria-label]=\"badgeAriaLabel()\">\n {{ badgeLabel() }}\n </span>\n }\n </button>","import { ChangeDetectionStrategy, Component, input, output, signal } from '@angular/core';\nimport { LoroIcon, type LoroIconName } from '../../resources/loro-icon';\n\n@Component({\n selector: 'loro-notification-row',\n \n templateUrl: './loro-notification-row.html',\n styleUrl: './loro-notification-row.scss',standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoroNotificationRow {\n title = input.required<string>();\n message = input.required<string>();\n time = input<string>('');\n icon = input<LoroIconName>('info');\n unread = input<boolean>(false);\n rowClick = output<void>();\n rowRemove = output<void>();\n\n protected readonly dragX = signal(0);\n protected readonly dragging = signal(false);\n protected readonly armed = signal(false);\n protected readonly removing = signal(false);\n\n private touchStartX = 0;\n private touchStartY = 0;\n private clickSuppressed = false;\n private static readonly REVEAL_PX = 96;\n private static readonly MAX_PX = 164;\n private static readonly DELETE_EXTRA_PX = 44;\n\n protected onTouchStart(event: TouchEvent): void {\n const touch = event.touches[0];\n\n if (!touch || this.removing()) {\n return;\n }\n\n this.touchStartX = touch.clientX;\n this.touchStartY = touch.clientY;\n this.clickSuppressed = false;\n this.dragging.set(true);\n }\n\n protected onTouchMove(event: TouchEvent): void {\n const touch = event.touches[0];\n\n if (!touch || this.removing()) {\n return;\n }\n\n const deltaX = touch.clientX - this.touchStartX;\n const deltaY = touch.clientY - this.touchStartY;\n\n if (Math.abs(deltaY) > Math.abs(deltaX) && Math.abs(deltaY) > 8) {\n this.resetDrag();\n return;\n }\n\n const nextX = this.armed()\n ? Math.max(\n -LoroNotificationRow.MAX_PX,\n Math.min(-LoroNotificationRow.REVEAL_PX, -LoroNotificationRow.REVEAL_PX + deltaX),\n )\n : Math.min(0, Math.max(deltaX, -LoroNotificationRow.MAX_PX));\n this.dragX.set(nextX);\n this.clickSuppressed = nextX < -8;\n }\n\n protected onTouchEnd(): void {\n if (this.removing()) {\n return;\n }\n\n const offset = this.dragX();\n this.dragging.set(false);\n\n if (this.armed()) {\n if (offset <= -(LoroNotificationRow.REVEAL_PX + LoroNotificationRow.DELETE_EXTRA_PX)) {\n this.startRemove();\n return;\n }\n\n if (offset > -(LoroNotificationRow.REVEAL_PX - 18)) {\n this.armed.set(false);\n this.dragX.set(0);\n return;\n }\n\n this.dragX.set(-LoroNotificationRow.REVEAL_PX);\n this.clickSuppressed = true;\n return;\n }\n\n if (offset <= -LoroNotificationRow.REVEAL_PX) {\n this.armed.set(true);\n this.dragX.set(-LoroNotificationRow.REVEAL_PX);\n this.clickSuppressed = true;\n return;\n }\n\n this.dragX.set(0);\n }\n\n protected resetDrag(): void {\n if (this.removing()) {\n return;\n }\n\n this.dragging.set(false);\n this.dragX.set(this.armed() ? -LoroNotificationRow.REVEAL_PX : 0);\n }\n\n protected onRowClick(): void {\n if (this.clickSuppressed || this.removing() || this.armed()) {\n this.clickSuppressed = false;\n return;\n }\n\n this.rowClick.emit();\n }\n\n protected onRowKeydown(event: Event): void {\n event.preventDefault();\n this.onRowClick();\n }\n\n protected onDeleteClick(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.startRemove();\n }\n\n private startRemove(): void {\n this.armed.set(false);\n this.removing.set(true);\n this.dragX.set(-LoroNotificationRow.MAX_PX);\n window.setTimeout(() => this.rowRemove.emit(), 180);\n }\n}\n","<div\n class=\"loro-notification-row-shell\"\n data-horizontal-gesture\n [class.loro-notification-row-shell--dragging]=\"dragging()\"\n [class.loro-notification-row-shell--armed]=\"armed()\"\n [class.loro-notification-row-shell--removing]=\"removing()\"\n (touchstart)=\"onTouchStart($event)\"\n (touchmove)=\"onTouchMove($event)\"\n (touchend)=\"onTouchEnd()\"\n (touchcancel)=\"resetDrag()\">\n <button\n type=\"button\"\n class=\"loro-notification-row-shell__delete\"\n aria-label=\"Eliminar notificacion\"\n (pointerdown)=\"$event.stopPropagation()\"\n (touchstart)=\"$event.stopPropagation()\"\n (click)=\"onDeleteClick($event)\">\n <loro-icon name=\"trash-white\" [size]=\"22\" alt=\"\" [decorative]=\"true\" color=\"inverse\" />\n <span>Eliminar</span>\n </button>\n <article\n role=\"button\"\n tabindex=\"0\"\n class=\"loro-notification-row\"\n [class.loro-notification-row--unread]=\"unread()\"\n [style.transform]=\"'translate3d(' + dragX() + 'px, 0, 0)'\"\n (click)=\"onRowClick()\"\n (keydown.enter)=\"onRowKeydown($event)\"\n (keydown.space)=\"onRowKeydown($event)\">\n <span class=\"loro-notification-row__icon\">\n <loro-icon [name]=\"icon()\" [size]=\"26\" [alt]=\"title()\" color=\"primary\" />\n </span>\n <span class=\"loro-notification-row__content\">\n <span class=\"loro-notification-row__meta\">\n <strong>{{ title() }}</strong>\n @if (time()) {\n <small>{{ time() }}</small>\n }\n </span>\n <span class=\"loro-notification-row__message\">{{ message() }}</span>\n </span>\n @if (unread()) {\n <span class=\"loro-notification-row__dot\" aria-label=\"Unread\"></span>\n }\n <button\n type=\"button\"\n class=\"loro-notification-row__delete-button\"\n aria-label=\"Eliminar notificacion\"\n (click)=\"onDeleteClick($event)\">\n <loro-icon name=\"trash\" [size]=\"18\" alt=\"\" [decorative]=\"true\" color=\"danger\" />\n </button>\n </article>\n </div>","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { LoroIcon, type LoroIconName } from '../../resources/loro-icon';\nimport { LoroNotificationRow } from '../loro-notification-row/loro-notification-row';\n\nexport interface LoroNotificationItem {\n id: string;\n title: string;\n message: string;\n time?: string;\n icon?: LoroIconName;\n unread?: boolean;\n}\n\n@Component({\n selector: 'loro-notification-panel',\n \n templateUrl: './loro-notification-panel.html',\n styleUrl: './loro-notification-panel.scss',standalone: true,\n imports: [LoroIcon, LoroNotificationRow],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroNotificationPanel {\n title = input<string>('Notifications');\n items = input<ReadonlyArray<LoroNotificationItem>>([]);\n presentation = input<'dropdown' | 'sheet'>('dropdown');\n showMarkAll = input<boolean>(true);\n markAllLabel = input<string>('Mark all as read');\n showClearAll = input<boolean>(true);\n clearAllLabel = input<string>('Delete notifications');\n emptyIcon = input<LoroIconName>('bell');\n emptyTitle = input<string>('No new notifications');\n emptyMessage = input<string>('When there is something new, it will appear here.');\n itemClick = output<LoroNotificationItem>();\n itemRemove = output<LoroNotificationItem>();\n markAllRead = output<void>();\n clearAll = output<void>();\n protected readonly hasUnread = computed(() => this.items().some((item) => !!item.unread));\n\n protected onMarkAllReadClick(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.markAllRead.emit();\n }\n\n protected onClearAllClick(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.clearAll.emit();\n }\n}\n","<section\n class=\"loro-notification-panel\"\n [class.loro-notification-panel--sheet]=\"presentation() === 'sheet'\"\n [class.loro-notification-panel--empty]=\"items().length === 0\"\n >\n @if (presentation() === 'sheet') {\n <span class=\"loro-notification-panel__handle\" aria-hidden=\"true\"></span>\n }\n <header class=\"loro-notification-panel__header\">\n <h2>{{ title() }}</h2>\n @if (items().length > 0) {\n <div class=\"loro-notification-panel__actions\">\n @if (showMarkAll() && hasUnread()) {\n <button\n type=\"button\"\n (pointerdown)=\"$event.stopPropagation()\"\n (touchstart)=\"$event.stopPropagation()\"\n (click)=\"onMarkAllReadClick($event)\"\n >\n {{ markAllLabel() }}\n </button>\n } @else if (showClearAll()) {\n <button\n type=\"button\"\n (pointerdown)=\"$event.stopPropagation()\"\n (touchstart)=\"$event.stopPropagation()\"\n (click)=\"onClearAllClick($event)\"\n >\n {{ clearAllLabel() }}\n </button>\n }\n </div>\n }\n </header>\n\n @if (items().length > 0) {\n <div class=\"loro-notification-panel__list\">\n @for (item of items(); track item.id) {\n <loro-notification-row\n [title]=\"item.title\"\n [message]=\"item.message\"\n [time]=\"item.time || ''\"\n [icon]=\"item.icon || 'info'\"\n [unread]=\"!!item.unread\"\n (rowClick)=\"itemClick.emit(item)\"\n (rowRemove)=\"itemRemove.emit(item)\"\n />\n }\n </div>\n } @else {\n <div class=\"loro-notification-panel__empty\">\n <span class=\"loro-notification-panel__empty-icon\">\n <loro-icon [name]=\"emptyIcon()\" [size]=\"64\" [alt]=\"emptyTitle()\" color=\"primary\" />\n </span>\n <strong>{{ emptyTitle() }}</strong>\n <p>{{ emptyMessage() }}</p>\n </div>\n }\n </section>","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { LoroImage, type LoroImageName } from '../../resources/loro-image/loro-image';\n\n@Component({\n selector: 'loro-spinner',\n standalone: true,\n imports: [LoroImage],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './loro-spinner.html',\n styleUrl: './loro-spinner.scss',\n})\nexport class LoroSpinner {\n protected readonly iconName = 'image-loro-icon-default' satisfies LoroImageName;\n\n readonly message = input('Cargando...');\n readonly ariaLabel = input('Cargando contenido');\n\n readonly showBrand = input(true);\n readonly brandText = input('AlLoro');\n readonly showMessage = input(true);\n readonly showDots = input(true);\n}\n","<div class=\"loro-spinner\" role=\"status\" aria-live=\"polite\" [attr.aria-label]=\"ariaLabel()\">\n <div class=\"loro-spinner__panel\">\n <loro-image class=\"loro-spinner__image\" [name]=\"iconName\" />\n\n @if (showBrand()) {\n <strong class=\"loro-spinner__brand\">{{ brandText() }}</strong>\n }\n\n @if (showMessage()) {\n <p class=\"loro-spinner__message\">{{ message() }}</p>\n }\n\n @if (showDots()) {\n <div class=\"loro-spinner__dots\" aria-hidden=\"true\">\n <span></span>\n <span></span>\n <span></span>\n </div>\n }\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { LoroIcon } from '../../resources/loro-icon';\n\nexport type LoroToastVariant = 'loading' | 'success' | 'info' | 'warning' | 'error';\nexport type LoroToastPosition = 'top-right' | 'bottom-right' | 'bottom-center' | 'inline';\n\n@Component({\n selector: 'loro-toast',\n \n templateUrl: './loro-toast.html',\n styleUrl: './loro-toast.scss',standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.loro-toast-host--inline]': \"position() === 'inline'\",\n }\n})\nexport class LoroToast {\n message = input.required<string>();\n variant = input<LoroToastVariant>('info');\n position = input<LoroToastPosition>('bottom-right');\n visible = input<boolean>(true);\n dismissible = input<boolean>(true);\n dismiss = output<void>();\n\n protected resolvedIcon(): 'check' | 'info' | 'warning' | 'shield-alert' {\n switch (this.variant()) {\n case 'success':\n return 'check';\n case 'warning':\n return 'warning';\n case 'error':\n return 'shield-alert';\n default:\n return 'info';\n }\n }\n\n protected iconColor(): 'success' | 'danger' | 'warning' | 'primary' {\n switch (this.variant()) {\n case 'success':\n return 'success';\n case 'warning':\n return 'warning';\n case 'error':\n return 'danger';\n default:\n return 'primary';\n }\n }\n}\n","@if (visible()) {\n <aside\n class=\"loro-toast\"\n [class]=\"'loro-toast loro-toast--' + variant() + ' loro-toast--' + position()\"\n [attr.role]=\"variant() === 'error' ? 'alert' : 'status'\">\n <span class=\"loro-toast__icon\">\n @if (variant() === 'loading') {\n <span class=\"loro-toast__spinner\" aria-hidden=\"true\"></span>\n } @else {\n <loro-icon [name]=\"resolvedIcon()\" [size]=\"24\" [alt]=\"message()\" [color]=\"iconColor()\" />\n }\n </span>\n <span>{{ message() }}</span>\n @if (dismissible()) {\n <button type=\"button\" (click)=\"dismiss.emit()\" aria-label=\"Dismiss notification\">x</button>\n }\n </aside>\n }","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n} from '@angular/core';\nimport type {\n FormCheckboxControl,\n ValidationError,\n WithOptionalFieldTree,\n} from '@angular/forms/signals';\n\n@Component({\n selector: 'loro-checkbox',\n \n templateUrl: './loro-checkbox.html',\n styleUrl: './loro-checkbox.scss',standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroCheckbox implements FormCheckboxControl {\n checked = model(false);\n touched = model(false);\n disabled = input(false);\n readonly = input(false);\n required = input(false);\n invalid = input(false);\n errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n helperText = input('');\n text = input('');\n\n protected readonly errorText = computed(() => this.errors()[0]?.message?.trim() ?? '');\n protected readonly showError = computed(() => this.errorText().length > 0 || (this.invalid() && this.touched()));\n\n protected toggle(checked: boolean): void {\n if (this.disabled() || this.readonly()) {\n return;\n }\n\n this.checked.set(checked);\n }\n}\n","<label\n class=\"loro-checkbox\"\n [class.loro-checkbox--checked]=\"checked()\"\n [class.loro-checkbox--invalid]=\"showError()\"\n [class.loro-checkbox--disabled]=\"disabled()\"\n >\n <input\n type=\"checkbox\"\n class=\"loro-checkbox__native\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [readonly]=\"readonly()\"\n (change)=\"toggle(($any($event.target).checked))\"\n (blur)=\"touched.set(true)\"\n />\n <span class=\"loro-checkbox__box\" aria-hidden=\"true\"></span>\n <span class=\"loro-checkbox__content\">\n <span class=\"loro-checkbox__label\">\n @if (text()) {\n {{ text() }}\n } @else {\n <ng-content></ng-content>\n }\n </span>\n @if (errorText()) {\n <span class=\"loro-checkbox__error\">{{ errorText() }}</span>\n } @else if (helperText()) {\n <span class=\"loro-checkbox__helper\">{{ helperText() }}</span>\n }\n </span>\n </label>","import { ChangeDetectionStrategy, Component, input, model, output } from '@angular/core';\nimport type { FormValueControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\nimport { LoroIcon } from '../../resources/loro-icon';\n\nexport interface LoroDropdownOption {\n label: string;\n value: string;\n}\n\n@Component({\n selector: 'loro-dropdown',\n \n templateUrl: './loro-dropdown.html',\n styleUrl: './loro-dropdown.scss',standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoroDropdown implements FormValueControl<string> {\n label = input<string>('');\n placeholder = input<string>('');\n value = model<string>('');\n options = input<ReadonlyArray<LoroDropdownOption>>([]);\n disabled = input(false);\n readonly = input(false);\n required = input(false);\n invalid = input(false);\n errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n touched = model(false);\n valueChange = output<string>();\n\n protected updateValue(value: string): void {\n this.value.set(value);\n this.valueChange.emit(value);\n }\n\n protected markAsTouched(): void {\n this.touched.set(true);\n }\n}\n","<label class=\"loro-dropdown\">\n @if (label()) {\n <span class=\"loro-dropdown__label\">{{ label() }}</span>\n }\n <span class=\"loro-dropdown__control\">\n <select [value]=\"value()\" [disabled]=\"disabled() || readonly()\" [required]=\"required()\" (change)=\"updateValue(($any($event.target).value ?? '').toString())\" (blur)=\"markAsTouched()\">\n @if (placeholder()) {\n <option value=\"\" disabled>{{ placeholder() }}</option>\n }\n @for (option of options(); track option.value) {\n <option [value]=\"option.value\">{{ option.label }}</option>\n }\n </select>\n <loro-icon name=\"chevron-down\" [size]=\"22\" alt=\"Abrir opciones\" color=\"primary\" />\n </span>\n </label>","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { LoroIcon, type LoroIconName } from '../../resources/loro-icon';\n\n@Component({\n selector: 'loro-filter-chip',\n \n templateUrl: './loro-filter-chip.html',\n styleUrl: './loro-filter-chip.scss',standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoroFilterChip {\n label = input.required<string>();\n value = input<string>('');\n icon = input<LoroIconName | null>(null);\n active = input<boolean>(false);\n selected = output<string>();\n}\n","<button type=\"button\" class=\"loro-filter-chip\" [class.loro-filter-chip--active]=\"active()\" (click)=\"selected.emit(value())\">\n @if (icon()) {\n <loro-icon [name]=\"icon()!\" [size]=\"20\" [alt]=\"label()\" [color]=\"active() ? 'inverse' : 'primary'\" />\n }\n <span>{{ label() }}</span>\n </button>","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n input,\n model,\n output,\n viewChild,\n} from '@angular/core';\nimport type {\n FormValueControl,\n ValidationError,\n WithOptionalFieldTree,\n} from '@angular/forms/signals';\nimport { LoroIcon, type LoroIconColor, type LoroIconName } from '../../resources/loro-icon';\n\nexport type LoroInputUnit = 'kg' | 'ud';\nexport type LoroInputVariant = 'default' | 'withIcon' | 'search' | 'photo' | 'stepper' | 'auth';\nexport type LoroInputState = 'default' | 'error' | 'success' | 'loading';\n\n\nfunction optionalNumberAttribute(value: unknown): number | undefined {\n if (value === undefined || value === null || value === '') {\n return undefined;\n }\n\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : undefined;\n}\n\nlet nextLoroInputId = 0;\n\n@Component({\n selector: 'loro-input',\n \n templateUrl: './loro-input.html',\n styleUrl: './loro-input.scss',standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroInput implements FormValueControl<string> {\n label = input<string>('');\n placeholder = input<string>('');\n helperText = input<string>('');\n value = model('');\n type = input<'text' | 'email' | 'tel' | 'password' | 'search'>('text');\n name = input<string>('');\n autocomplete = input<string>('');\n inputmode = input<'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search' | ''>('');\n icon = input<LoroIconName | null>(null);\n iconSize = input<number>(24);\n trailingIcon = input<LoroIconName | null>(null);\n trailingIconSize = input<number>(24);\n trailingAriaLabel = input<string>('');\n variant = input<LoroInputVariant>('default');\n selected = input(false);\n state = input<LoroInputState>('default');\n errorMessage = input<string>('');\n errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n invalid = input(false);\n disabled = input(false);\n readonly = input<boolean>(false);\n required = input(false);\n touched = model(false);\n unit = input<string>('ud');\n step = input<number>(1);\n min = input<number | undefined, unknown>(undefined, {\n transform: optionalNumberAttribute,\n });\n max = input<number | undefined, unknown>(undefined, {\n transform: optionalNumberAttribute,\n });\n trailingClick = output<void>();\n private readonly control = viewChild<ElementRef<HTMLInputElement>>('control');\n protected readonly errorId = `loro-input-error-${++nextLoroInputId}`;\n protected readonly errorText = computed(() => {\n const manualMessage = this.errorMessage().trim();\n\n if (manualMessage) {\n return manualMessage;\n }\n\n return this.errors()[0]?.message?.trim() ?? '';\n });\n protected readonly hasError = computed(\n () =>\n this.state() === 'error'\n || this.errorText().length > 0\n || (this.invalid() && this.touched()),\n );\n protected readonly hasSuccess = computed(\n () => this.state() === 'success' && !this.hasError(),\n );\n protected readonly hasLoading = computed(\n () => this.state() === 'loading' && !this.hasError(),\n );\n protected readonly isAuthVariant = computed(() => this.variant() === 'auth');\n protected readonly passwordVisible = model(false);\n protected readonly showPasswordToggle = computed(\n () => this.isAuthVariant() && this.type() === 'password',\n );\n protected readonly resolvedType = computed(() =>\n this.showPasswordToggle() && this.passwordVisible() ? 'text' : this.type(),\n );\n protected readonly resolvedLeadingIconColor = computed<LoroIconColor>(() =>\n this.hasError() ? 'danger' : this.hasSuccess() ? 'success' : this.isAuthVariant() ? 'primary-deep' : 'primary',\n );\n protected readonly resolvedTrailingIconColor = computed<LoroIconColor>(() =>\n this.trailingIcon() === 'eye' || this.trailingIcon() === 'eye-off'\n ? 'muted'\n : this.hasError() ? 'danger' : this.hasSuccess() ? 'success' : 'muted',\n );\n\n focus(options?: FocusOptions): void {\n this.control()?.nativeElement.focus(options);\n }\n\n protected adjust(delta: number): void {\n const value = this.coerceNumber(this.value());\n const nextValue = this.clampValue(value + delta);\n\n this.value.set(this.formatValue(nextValue));\n this.touched.set(true);\n }\n\n protected normalizeValue(value: string): void {\n this.value.set(this.formatValue(this.clampValue(this.coerceNumber(value))));\n this.touched.set(true);\n }\n\n protected updateValue(value: string): void {\n this.value.set(value);\n }\n\n protected markAsTouched(): void {\n this.touched.set(true);\n }\n\n protected togglePasswordVisibility(): void {\n this.passwordVisible.update((value) => !value);\n }\n\n private coerceNumber(value: string): number {\n const parsed = Number(value.replace(',', '.'));\n\n return Number.isFinite(parsed) ? parsed : (this.min() ?? 0);\n }\n\n private formatValue(value: number): string {\n if (this.normalizedUnit() === 'ud') {\n return Math.round(value).toString();\n }\n\n return Number(value.toFixed(1)).toLocaleString('es-ES', {\n minimumFractionDigits: Number.isInteger(value) ? 0 : 1,\n maximumFractionDigits: 1,\n });\n }\n\n protected normalizedUnit(): LoroInputUnit {\n return this.unit() === 'kg' ? 'kg' : 'ud';\n }\n\n protected stepperInputSize(): number {\n return this.normalizedUnit() === 'kg' ? 4 : 3;\n }\n\n protected stepperInputMaxLength(): number {\n return this.normalizedUnit() === 'kg' ? 4 : 3;\n }\n\n protected sanitizeStepperInput(event: Event): void {\n const input = event.target;\n\n if (!(input instanceof HTMLInputElement)) {\n return;\n }\n\n const value = this.sanitizeValue(input.value);\n\n if (input.value !== value) {\n input.value = value;\n }\n\n if (value === '' || value === ',' || value === '.') {\n return;\n }\n\n const formatted = this.formatValue(this.clampValue(this.coerceNumber(value)));\n input.value = formatted;\n this.value.set(formatted);\n }\n\n private clampValue(value: number): number {\n const min = this.min() ?? 0;\n const max = this.max() ?? 100;\n\n return Math.min(max, Math.max(min, value));\n }\n\n private sanitizeValue(value: string): string {\n if (this.normalizedUnit() === 'ud') {\n return value.replace(/\\D/g, '').slice(0, this.stepperInputMaxLength());\n }\n\n const normalized = value.replace(/\\./g, ',').replace(/[^\\d,]/g, '');\n const [integer = '', decimal = ''] = normalized.split(',');\n const nextInteger = integer.slice(0, 3);\n const nextDecimal = decimal.slice(0, 1);\n\n return normalized.includes(',') ? `${nextInteger},${nextDecimal}` : nextInteger.slice(0, 3);\n }\n}\n","@if (variant() === 'stepper') {\n <span\n class=\"loro-input loro-input--stepper-field\"\n [class.loro-input--error]=\"hasError()\"\n [class.loro-input--success]=\"hasSuccess()\"\n >\n @if (label()) {\n <span class=\"loro-input__label\">{{ label() }}</span>\n }\n <span\n class=\"loro-input--stepper\"\n [class.loro-input--stepper-kg]=\"normalizedUnit() === 'kg'\"\n [class.loro-input--stepper-ud]=\"normalizedUnit() === 'ud'\"\n role=\"group\"\n [attr.aria-label]=\"label() || 'Cantidad'\"\n >\n <button type=\"button\" aria-label=\"Restar\" [disabled]=\"disabled()\" (click)=\"adjust(-step())\">-</button>\n <span class=\"loro-input__stepper-value\">\n <input\n #control\n [attr.inputmode]=\"normalizedUnit() === 'kg' ? 'decimal' : 'numeric'\"\n [attr.size]=\"stepperInputSize()\"\n [attr.maxlength]=\"stepperInputMaxLength()\"\n [attr.max]=\"max()\"\n [attr.min]=\"min()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [required]=\"required()\"\n [attr.aria-label]=\"label() || 'Cantidad'\"\n [attr.aria-invalid]=\"hasError() ? 'true' : null\"\n [attr.aria-describedby]=\"hasError() && errorText() ? errorId : null\"\n (keydown.enter)=\"$any($event.target).blur()\"\n (input)=\"sanitizeStepperInput($event)\"\n (blur)=\"markAsTouched(); normalizeValue(($any($event.target).value ?? '').toString())\"\n />\n <span>{{ normalizedUnit() }}</span>\n </span>\n <button type=\"button\" aria-label=\"Sumar\" [disabled]=\"disabled()\" (click)=\"adjust(step())\">+</button>\n </span>\n @if (hasError() && errorText()) {\n <span class=\"loro-input__error\" [id]=\"errorId\">\n <loro-icon name=\"shield-alert\" [size]=\"16\" color=\"danger\" [decorative]=\"true\" />\n <span>{{ errorText() }}</span>\n </span>\n } @else if (hasLoading() && helperText()) {\n <span class=\"loro-input__loading\" aria-live=\"polite\">\n <span>{{ helperText() }}</span>\n </span>\n } @else if (hasSuccess() && helperText()) {\n <span class=\"loro-input__success\">\n <loro-icon name=\"check\" [size]=\"16\" color=\"success\" [decorative]=\"true\" />\n <span>{{ helperText() }}</span>\n </span>\n } @else if (helperText()) {\n <span class=\"loro-input__helper\">{{ helperText() }}</span>\n }\n </span>\n} @else {\n <label\n class=\"loro-input\"\n [class.loro-input--has-icon]=\"icon() || variant() === 'search'\"\n [class.loro-input--auth]=\"isAuthVariant()\"\n [class.loro-input--selected]=\"selected()\"\n [class.loro-input--error]=\"hasError()\"\n [class.loro-input--success]=\"hasSuccess()\"\n [class.loro-input--loading]=\"hasLoading()\"\n >\n @if (label()) {\n <span class=\"loro-input__label\">{{ label() }}</span>\n }\n <span class=\"loro-input__control\">\n @if (icon() || variant() === 'search') {\n <loro-icon\n [name]=\"icon() || 'search'\"\n [size]=\"iconSize()\"\n [alt]=\"label() || placeholder()\"\n [color]=\"resolvedLeadingIconColor()\"\n />\n }\n <input\n #control\n [type]=\"resolvedType()\"\n [attr.name]=\"name() || null\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [required]=\"required()\"\n [attr.autocomplete]=\"autocomplete() || null\"\n [attr.inputmode]=\"inputmode() || null\"\n [attr.aria-invalid]=\"hasError() ? 'true' : null\"\n [attr.aria-describedby]=\"hasError() && errorText() ? errorId : null\"\n (input)=\"updateValue(($any($event.target).value ?? '').toString())\"\n (blur)=\"markAsTouched()\"\n />\n @if (showPasswordToggle()) {\n <button\n type=\"button\"\n class=\"loro-input__trailing-button\"\n [attr.aria-label]=\"passwordVisible() ? 'Ocultar contenido' : 'Mostrar contenido'\"\n (click)=\"togglePasswordVisibility()\"\n >\n <loro-icon\n [name]=\"passwordVisible() ? 'eye-off' : 'eye'\"\n [size]=\"trailingIconSize()\"\n alt=\"\"\n [decorative]=\"true\"\n [color]=\"resolvedTrailingIconColor()\"\n />\n </button>\n } @else if (trailingIcon()) {\n <button\n type=\"button\"\n class=\"loro-input__trailing-button\"\n [attr.aria-label]=\"trailingAriaLabel() || null\"\n (click)=\"trailingClick.emit()\"\n >\n <loro-icon\n [name]=\"trailingIcon()!\"\n [size]=\"trailingIconSize()\"\n alt=\"\"\n [decorative]=\"true\"\n [color]=\"resolvedTrailingIconColor()\"\n />\n </button>\n }\n </span>\n @if (hasError() && errorText()) {\n <span class=\"loro-input__error\" [id]=\"errorId\">\n <loro-icon name=\"shield-alert\" [size]=\"16\" color=\"danger\" [decorative]=\"true\" />\n <span>{{ errorText() }}</span>\n </span>\n } @else if (hasLoading() && helperText()) {\n <span class=\"loro-input__loading\" aria-live=\"polite\">\n <span class=\"loro-input__loader\" aria-hidden=\"true\"></span>\n <span>{{ helperText() }}</span>\n </span>\n } @else if (hasSuccess() && helperText()) {\n <span class=\"loro-input__success\">\n <loro-icon name=\"check\" [size]=\"16\" color=\"success\" [decorative]=\"true\" />\n <span>{{ helperText() }}</span>\n </span>\n } @else if (helperText()) {\n <span class=\"loro-input__helper\">{{ helperText() }}</span>\n }\n </label>\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\n\nexport type LoroRadioVariant = 'default' | 'row';\n\n@Component({\n selector: 'loro-radio',\n \n templateUrl: './loro-radio.html',\n styleUrl: './loro-radio.scss',standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoroRadio {\n label = input.required<string>();\n value = input.required<string>();\n description = input<string>('');\n checked = input<boolean>(false);\n variant = input<LoroRadioVariant>('default');\n selected = output<string>();\n}\n","<button\n type=\"button\"\n class=\"loro-radio\"\n [class.loro-radio--row]=\"variant() === 'row'\"\n [class.loro-radio--checked]=\"checked()\"\n [attr.aria-pressed]=\"checked()\"\n (click)=\"selected.emit(value())\">\n @if (variant() !== 'row') {\n <span class=\"loro-radio__mark\"></span>\n }\n <span class=\"loro-radio__copy\">\n <span class=\"loro-radio__label\">{{ label() }}</span>\n @if (description()) {\n <span class=\"loro-radio__description\">{{ description() }}</span>\n }\n </span>\n @if (variant() === 'row') {\n <span class=\"loro-radio__mark\"></span>\n }\n </button>","import { ChangeDetectionStrategy, Component, input, model, output } from '@angular/core';\nimport type { FormValueControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\n\nexport interface LoroSegmentedOption {\n label: string;\n value: string;\n}\n\n@Component({\n selector: 'loro-segmented-control',\n \n templateUrl: './loro-segmented-control.html',\n styleUrl: './loro-segmented-control.scss',standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.--loro-segmented-count]': 'options().length'\n }\n})\nexport class LoroSegmentedControl implements FormValueControl<string> {\n options = input.required<ReadonlyArray<LoroSegmentedOption>>();\n value = model<string>('');\n disabled = input(false);\n readonly = input(false);\n required = input(false);\n invalid = input(false);\n errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n touched = model(false);\n valueChange = output<string>();\n\n protected selectValue(value: string): void {\n if (this.disabled() || this.readonly()) {\n return;\n }\n\n this.value.set(value);\n this.touched.set(true);\n this.valueChange.emit(value);\n }\n}\n","<div class=\"loro-segmented-control\" role=\"tablist\">\n @for (option of options(); track option.value) {\n <button\n type=\"button\"\n role=\"tab\"\n [attr.aria-selected]=\"value() === option.value\"\n [class.loro-segmented-control__button--active]=\"value() === option.value\"\n class=\"loro-segmented-control__button\"\n [disabled]=\"disabled() || readonly()\"\n (click)=\"selectValue(option.value)\">\n {{ option.label }}\n </button>\n }\n </div>","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { LoroBadge } from '../../actions/loro-badge/loro-badge';\nimport { LoroButton } from '../../actions/loro-button/loro-button';\nimport { LoroIcon, type LoroIconName } from '../../resources/loro-icon';\n\n@Component({\n selector: 'loro-select',\n \n templateUrl: './loro-select.html',\n styleUrl: './loro-select.scss',standalone: true,\n imports: [LoroBadge, LoroButton, LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoroSelect {\n title = input.required<string>();\n subtitle = input<string>('');\n meta = input<string>('');\n icon = input<LoroIconName>('phone');\n badge = input<string>('');\n status = input<string>('');\n selected = input<boolean>(false);\n actionLabel = input<string>('');\n action = output<void>();\n}\n","<article class=\"loro-select\" [class.loro-select--selected]=\"selected()\">\n <span class=\"loro-select__icon\">\n <loro-icon [name]=\"icon()\" [size]=\"44\" [alt]=\"title()\" color=\"primary-deep\" />\n </span>\n <div class=\"loro-select__copy\">\n <h3>{{ title() }} @if (badge()) {<loro-badge [label]=\"badge()\" variant=\"info\" />}</h3>\n <p>{{ subtitle() }}</p>\n <small>{{ meta() }}</small>\n </div>\n <div class=\"loro-select__side\">\n @if (status()) {\n <span class=\"loro-select__status\">{{ status() }}</span>\n }\n @if (actionLabel()) {\n <loro-button [text]=\"actionLabel()\" variant=\"secondary\" (buttonClick)=\"action.emit()\" />\n }\n </div>\n </article>\n","import { ChangeDetectionStrategy, Component, input, model, output } from '@angular/core';\nimport type { FormValueControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\n\nfunction optionalNumberAttribute(value: unknown): number | undefined {\n if (value === undefined || value === null || value === '') {\n return undefined;\n }\n\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : undefined;\n}\n\n@Component({\n selector: 'loro-text-area',\n \n templateUrl: './loro-text-area.html',\n styleUrl: './loro-text-area.scss',standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoroTextArea implements FormValueControl<string> {\n label = input<string>('');\n placeholder = input<string>('');\n value = model<string>('');\n maxLength = input<number | undefined, unknown>(undefined, {\n transform: optionalNumberAttribute,\n });\n disabled = input(false);\n readonly = input(false);\n required = input(false);\n invalid = input(false);\n errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n touched = model(false);\n valueChange = output<string>();\n\n protected updateValue(value: string): void {\n this.value.set(value);\n this.valueChange.emit(value);\n }\n\n protected markAsTouched(): void {\n this.touched.set(true);\n }\n}\n","<label class=\"loro-text-area\">\n @if (label()) {\n <span class=\"loro-text-area__label\">{{ label() }}</span>\n }\n <span class=\"loro-text-area__control\">\n <textarea\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [required]=\"required()\"\n [attr.maxlength]=\"maxLength()\"\n (input)=\"updateValue(($any($event.target).value ?? '').toString())\"\n (blur)=\"markAsTouched()\"></textarea>\n @if (maxLength()) {\n <span class=\"loro-text-area__counter\">{{ value().length }}/{{ maxLength() }}</span>\n }\n </span>\n </label>","import type { LoroToggleDefaults } from '../models/loro-toggle.model';\n\nexport const LORO_TOGGLE_DEFAULTS: LoroToggleDefaults = {\n checked: false,\n disabled: false,\n required: false,\n invalid: false,\n ariaLabel: 'Cambiar estado',\n};\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport type {\n FormCheckboxControl,\n ValidationError,\n WithOptionalFieldTree,\n} from '@angular/forms/signals';\n\nimport { LORO_TOGGLE_DEFAULTS } from './constants/loro-toggle.constants';\n\n@Component({\n selector: 'loro-toggle',\n templateUrl: './loro-toggle.html',\n styleUrl: './loro-toggle.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroToggle implements FormCheckboxControl {\n checked = model(LORO_TOGGLE_DEFAULTS.checked);\n disabled = input<boolean>(LORO_TOGGLE_DEFAULTS.disabled);\n required = input(LORO_TOGGLE_DEFAULTS.required);\n invalid = input(LORO_TOGGLE_DEFAULTS.invalid);\n errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n touched = model(false);\n ariaLabel = input<string>(LORO_TOGGLE_DEFAULTS.ariaLabel);\n\n protected readonly isChecked = computed(() => this.checked());\n protected readonly isDisabled = computed(() => this.disabled());\n\n protected toggle(): void {\n if (this.isDisabled()) {\n return;\n }\n\n this.checked.update((current) => !current);\n this.touched.set(true);\n }\n}\n","<button\n type=\"button\"\n class=\"loro-toggle\"\n [class.loro-toggle--checked]=\"isChecked()\"\n [class.loro-toggle--disabled]=\"isDisabled()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-pressed]=\"isChecked()\"\n (click)=\"toggle()\"\n>\n <span class=\"loro-toggle__thumb\"></span>\n</button>\n","import type { LoroCardSelectorAction } from './loro-card-selector.model';\n\nexport const LORO_CARD_SELECTOR_DEFAULT_ACTION: LoroCardSelectorAction = {\n ariaLabel: 'Eliminar archivo',\n icon: 'x',\n iconSize: 16,\n};\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\n\nimport { LoroButton } from '../../actions/loro-button/loro-button';\nimport { LORO_CARD_SELECTOR_DEFAULT_ACTION } from './loro-card-selector.constants';\nimport type { LoroCardSelectorAction, LoroCardSelectorMediaKind } from './loro-card-selector.model';\n\n@Component({\n selector: 'loro-card-selector',\n standalone: true,\n imports: [LoroButton],\n templateUrl: './loro-card-selector.html',\n styleUrl: './loro-card-selector.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroCardSelector {\n title = input.required<string>();\n description = input<string>('');\n mediaKind = input<LoroCardSelectorMediaKind>('other');\n mediaImage = input<string | null>(null);\n action = input<LoroCardSelectorAction>(LORO_CARD_SELECTOR_DEFAULT_ACTION);\n\n actionClick = output<void>();\n\n protected readonly hasMediaImage = computed(() => Boolean(this.mediaImage()));\n protected readonly resolvedMediaLabel = computed(() => {\n switch (this.mediaKind()) {\n case 'image':\n return 'IMG';\n case 'pdf':\n return 'PDF';\n case 'word':\n return 'DOC';\n case 'archive':\n return 'ZIP';\n default:\n return 'FILE';\n }\n });\n protected readonly resolvedAction = computed(() => this.action());\n\n protected onActionClick(): void {\n this.actionClick.emit();\n }\n}\n","<article class=\"loro-card-selector\">\n <span class=\"loro-card-selector__media\" aria-hidden=\"true\">\n @if (hasMediaImage()) {\n <img class=\"loro-card-selector__image\" [src]=\"mediaImage()!\" [alt]=\"title()\" />\n } @else {\n <span class=\"loro-card-selector__badge\" [class]=\"'loro-card-selector__badge loro-card-selector__badge--' + mediaKind()\">\n {{ resolvedMediaLabel() }}\n </span>\n }\n </span>\n\n <span class=\"loro-card-selector__copy\">\n <span class=\"loro-card-selector__title\">{{ title() }}</span>\n @if (description()) {\n <span class=\"loro-card-selector__description\">{{ description() }}</span>\n }\n </span>\n\n <span class=\"loro-card-selector__action\">\n <loro-button\n variant=\"tertiary\"\n [iconOnly]=\"true\"\n [icon]=\"resolvedAction().icon\"\n [iconSize]=\"resolvedAction().iconSize ?? 16\"\n iconColor=\"var(--loro-danger-text)\"\n [ariaLabel]=\"resolvedAction().ariaLabel\"\n (buttonClick)=\"onActionClick()\"\n />\n </span>\n</article>\n","import type { LoroUploadVariant } from '../models/loro-upload.model';\n\nexport const LORO_UPLOAD_DEFAULTS = {\n label: 'Adjuntar archivos',\n title: 'Haz clic para seleccionar archivos o arrastra y suelta aquí',\n description: 'PNG, JPG, GIF o PDF. Máx. 10 MB por archivo',\n errorMessage: '',\n variant: 'default' as LoroUploadVariant,\n multiple: true,\n maxFiles: 10,\n} as const;\n","export const LORO_FILE_KEY_SEPARATOR = '-';\n\nexport const formatLoroFileKey = (file: File): string =>\n `${file.name}${LORO_FILE_KEY_SEPARATOR}${file.size}${LORO_FILE_KEY_SEPARATOR}${file.lastModified}`;\n\nexport const dedupeLoroFiles = (files: readonly File[]): File[] => {\n const seen = new Set<string>();\n\n return files.filter((file) => {\n const key = formatLoroFileKey(file);\n\n if (seen.has(key)) {\n return false;\n }\n\n seen.add(key);\n return true;\n });\n};\n\nexport const normalizeLoroMaxFiles = (maxFiles: number, multiple: boolean): number => {\n if (!multiple) {\n return 1;\n }\n\n return Math.max(1, Math.floor(maxFiles));\n};\n","export const formatLoroFileName = (name: string, maxLength = 44): string => {\n const normalizedName = name.trim().replace(/\\s+/g, ' ');\n\n if (normalizedName.length <= maxLength) {\n return normalizedName;\n }\n\n const lastDotIndex = normalizedName.lastIndexOf('.');\n const extension = lastDotIndex > 0 ? normalizedName.slice(lastDotIndex) : '';\n const baseName = lastDotIndex > 0 ? normalizedName.slice(0, lastDotIndex) : normalizedName;\n const availableLength = Math.max(maxLength - extension.length - 1, 16);\n const trimmedBase = baseName.slice(0, availableLength).trimEnd();\n\n return `${trimmedBase}…${extension}`;\n};\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n computed,\n ElementRef,\n inject,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport type { FormValueControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\n\nimport { LoroCardSelector } from '../../cards/selector/loro-card-selector';\nimport { LoroIcon } from '../../resources/loro-icon';\nimport { LORO_UPLOAD_DEFAULTS } from './constants/loro-upload.constants';\nimport type { LoroUploadFileView, LoroUploadVariant } from './models/loro-upload.model';\nimport { dedupeLoroFiles, formatLoroFileKey, normalizeLoroMaxFiles } from '../../../utils/loro-file.util';\nimport { formatLoroFileName } from '../../../utils/loro-file-format.util';\n\nlet nextLoroUploadId = 0;\n\n@Component({\n selector: 'loro-upload',\n standalone: true,\n imports: [LoroCardSelector, LoroIcon],\n templateUrl: './loro-upload.html',\n styleUrl: './loro-upload.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroUpload implements FormValueControl<File[]> {\n private readonly destroyRef = inject(DestroyRef);\n private readonly control = viewChild<ElementRef<HTMLInputElement>>('control');\n private readonly previewUrls = new Map<string, string>();\n private readonly cleanupPreviewUrls = this.destroyRef.onDestroy(() => {\n for (const url of this.previewUrls.values()) {\n URL.revokeObjectURL(url);\n }\n\n this.previewUrls.clear();\n });\n\n label = input<string>(LORO_UPLOAD_DEFAULTS.label);\n title = input<string>(LORO_UPLOAD_DEFAULTS.title);\n description = input<string>(LORO_UPLOAD_DEFAULTS.description);\n errorMessage = input<string>(LORO_UPLOAD_DEFAULTS.errorMessage);\n variant = input<LoroUploadVariant>(LORO_UPLOAD_DEFAULTS.variant);\n multiple = input<boolean>(LORO_UPLOAD_DEFAULTS.multiple);\n maxFiles = input<number>(LORO_UPLOAD_DEFAULTS.maxFiles);\n errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n\n touched = model(false);\n value = model<File[]>([]);\n protected readonly isDragging = model(false);\n protected readonly limitErrorMessage = signal('');\n protected readonly uploadId = `loro-upload-${++nextLoroUploadId}`;\n protected readonly errorText = computed(() => String(this.errors()[0]?.message ?? '').trim());\n protected readonly resolvedMaxFiles = computed(() => normalizeLoroMaxFiles(this.maxFiles(), this.multiple()));\n protected readonly resolvedVariant = computed<LoroUploadVariant>(() => {\n if (this.isLimitExceeded()) {\n return 'error';\n }\n\n if (this.variant() !== 'default') {\n return this.variant();\n }\n\n return this.hasFiles() ? 'success' : 'default';\n });\n protected readonly hasFiles = computed(() => this.value().length > 0);\n protected readonly isDisabled = computed(() => this.resolvedVariant() === 'disabled');\n protected readonly isLimitExceeded = computed(() => this.limitErrorMessage().length > 0);\n protected readonly resolvedErrorMessage = computed(() => {\n const limitMessage = this.limitErrorMessage().trim();\n\n if (limitMessage) {\n return limitMessage;\n }\n\n if (this.variant() !== 'error') {\n return '';\n }\n\n const manualMessage = String(this.errorMessage() ?? '').trim();\n\n if (manualMessage) {\n return manualMessage;\n }\n\n return this.errorText();\n });\n protected readonly displayFiles = computed<readonly LoroUploadFileView[]>(() =>\n this.value().map((file) => ({\n file,\n kind: this.resolveFileKind(file),\n displayName: formatLoroFileName(file.name),\n sizeLabel: this.formatFileSize(file.size),\n previewUrl: this.getPreviewUrl(file),\n })),\n );\n\n focus(options?: FocusOptions): void {\n this.control()?.nativeElement.focus(options);\n }\n\n protected onDragOver(event: DragEvent): void {\n if (this.isDisabled()) {\n return;\n }\n\n event.preventDefault();\n this.isDragging.set(true);\n }\n\n protected onDragLeave(event: DragEvent): void {\n if (this.isDisabled()) {\n return;\n }\n\n if (event.currentTarget === event.target) {\n this.isDragging.set(false);\n }\n }\n\n protected onDrop(event: DragEvent): void {\n if (this.isDisabled()) {\n return;\n }\n\n event.preventDefault();\n this.isDragging.set(false);\n this.commitFiles(event.dataTransfer?.files);\n }\n\n protected onInputChange(event: Event): void {\n if (this.isDisabled()) {\n return;\n }\n\n const target = event.target;\n\n if (!(target instanceof HTMLInputElement)) {\n return;\n }\n\n this.commitFiles(target.files);\n target.value = '';\n }\n\n protected removeFile(index: number): void {\n this.setFiles(this.value().filter((_, fileIndex) => fileIndex !== index));\n }\n\n protected trackByFileName(index: number, file: File): string {\n return `${file.name}-${file.size}-${index}`;\n }\n\n private commitFiles(fileList: FileList | null | undefined): void {\n if (!fileList || fileList.length === 0) {\n return;\n }\n\n const incomingFiles = Array.from(fileList);\n const maxFiles = this.resolvedMaxFiles();\n const mergedFiles = this.multiple() ? [...this.value(), ...incomingFiles] : incomingFiles.slice(0, 1);\n const dedupedFiles = dedupeLoroFiles(mergedFiles);\n const nextFiles = dedupedFiles.slice(0, maxFiles);\n const limitExceeded = this.multiple() ? dedupedFiles.length > maxFiles : false;\n\n this.setFiles(nextFiles, limitExceeded);\n }\n\n private setFiles(files: readonly File[], limitExceeded = false): void {\n this.syncPreviewUrls(files);\n this.value.set([...files]);\n this.limitErrorMessage.set(limitExceeded ? `Puedes subir como máximo ${this.resolvedMaxFiles()} archivos.` : '');\n this.touched.set(true);\n }\n\n private formatFileSize(bytes: number): string {\n const sizeInMb = bytes / 1024 / 1024;\n\n return `${sizeInMb.toFixed(sizeInMb >= 10 ? 0 : 1)} MB`;\n }\n\n private resolveFileKind(file: File): 'image' | 'pdf' | 'word' | 'archive' | 'other' {\n const extension = file.name.split('.').pop()?.toLowerCase() ?? '';\n const imageExtensions = new Set(['png', 'jpg', 'jpeg', 'gif', 'webp', 'bmp', 'svg']);\n const wordExtensions = new Set(['doc', 'docx', 'odt', 'rtf']);\n const archiveExtensions = new Set(['zip', 'rar', '7z', 'tar', 'gz']);\n\n if (file.type.startsWith('image/') || imageExtensions.has(extension)) {\n return 'image';\n }\n\n if (file.type === 'application/pdf' || extension === 'pdf') {\n return 'pdf';\n }\n\n if (wordExtensions.has(extension)) {\n return 'word';\n }\n\n if (archiveExtensions.has(extension)) {\n return 'archive';\n }\n\n return 'other';\n }\n\n private getPreviewUrl(file: File): string | null {\n if (this.resolveFileKind(file) !== 'image') {\n return null;\n }\n\n const key = formatLoroFileKey(file);\n const existing = this.previewUrls.get(key);\n\n if (existing) {\n return existing;\n }\n\n const url = URL.createObjectURL(file);\n this.previewUrls.set(key, url);\n return url;\n }\n\n private syncPreviewUrls(files: readonly File[]): void {\n const nextKeys = new Set(files.map((file) => formatLoroFileKey(file)));\n\n for (const [key, url] of this.previewUrls.entries()) {\n if (nextKeys.has(key)) {\n continue;\n }\n\n URL.revokeObjectURL(url);\n this.previewUrls.delete(key);\n }\n }\n\n}\n","<div\n class=\"loro-upload\"\n [class.loro-upload--dragging]=\"isDragging()\"\n [class.loro-upload--selected]=\"hasFiles()\"\n [class.loro-upload--error]=\"resolvedVariant() === 'error'\"\n [class.loro-upload--success]=\"resolvedVariant() === 'success'\"\n [class.loro-upload--info]=\"resolvedVariant() === 'info'\"\n [class.loro-upload--disabled]=\"resolvedVariant() === 'disabled'\"\n>\n @if (label()) {\n <button type=\"button\" class=\"loro-upload__label\" (click)=\"focus()\">{{ label() }}</button>\n }\n\n <label\n class=\"loro-upload__drop\"\n [attr.for]=\"uploadId\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n >\n <span class=\"loro-upload__icon\">\n <loro-icon name=\"paperclip\" [size]=\"24\" alt=\"\" color=\"primary\" />\n </span>\n\n <span class=\"loro-upload__copy\">\n <span class=\"loro-upload__title\">{{ title() }}</span>\n @if (description()) {\n <small class=\"loro-upload__description\">{{ description() }}</small>\n }\n </span>\n </label>\n\n <input\n #control\n [id]=\"uploadId\"\n class=\"loro-upload__input\"\n type=\"file\"\n [disabled]=\"isDisabled()\"\n [multiple]=\"multiple() && resolvedMaxFiles() > 1\"\n (change)=\"onInputChange($event)\"\n />\n\n @if (resolvedErrorMessage()) {\n <span class=\"loro-upload__error\">\n <span class=\"loro-upload__error-icon\">\n <loro-icon name=\"icon-warning\" [size]=\"18\" alt=\"\" color=\"danger\" />\n </span>\n <span class=\"loro-upload__error-message\">{{ resolvedErrorMessage() }}</span>\n </span>\n }\n\n @if (hasFiles()) {\n <div class=\"loro-upload__files\">\n @for (entry of displayFiles(); track trackByFileName($index, entry.file)) {\n <loro-card-selector\n [title]=\"entry.displayName\"\n [description]=\"entry.sizeLabel\"\n [mediaKind]=\"entry.kind\"\n [mediaImage]=\"entry.previewUrl\"\n [action]=\"{ ariaLabel: 'Eliminar archivo', icon: 'x', iconSize: 16 }\"\n (actionClick)=\"removeFile($index)\"\n />\n }\n </div>\n }\n</div>\n","import { Injectable } from '@angular/core';\n\n/**\n * Minimal touch-gesture helper for the modal sheet.\n *\n * Keeps swipe state isolated from the component so the modal can focus on\n * rendering and close orchestration.\n */\n@Injectable({ providedIn: 'root' })\nexport class LoroModalSwipeService {\n private startY: number | null = null;\n private currentY: number | null = null;\n\n /** Starts tracking a touch gesture only when it comes from a finger. */\n begin(pointerType: PointerEvent['pointerType'], clientY: number): void {\n if (pointerType !== 'touch') {\n return;\n }\n\n this.startY = clientY;\n this.currentY = clientY;\n }\n\n /** Updates the current finger position while the drag is active. */\n update(pointerType: PointerEvent['pointerType'], clientY: number): void {\n if (pointerType !== 'touch' || this.startY === null) {\n return;\n }\n\n this.currentY = clientY;\n }\n\n /**\n * Resolves the gesture and returns whether the sheet should close.\n * The service resets itself so the caller does not need extra cleanup.\n */\n finish(threshold: number): boolean {\n if (this.startY === null || this.currentY === null) {\n this.reset();\n return false;\n }\n\n const deltaY = this.currentY - this.startY;\n this.reset();\n\n return deltaY >= threshold;\n }\n\n /** Clears the internal gesture state. */\n reset(): void {\n this.startY = null;\n this.currentY = null;\n }\n\n /** Returns the current drag translation with a hard cap for stability. */\n offset(maxOffset: number): number {\n if (this.startY === null || this.currentY === null) {\n return 0;\n }\n\n const deltaY = Math.max(0, this.currentY - this.startY);\n\n return Math.min(deltaY, maxOffset);\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal } from '@angular/core';\nimport { LoroButton } from '../../actions/loro-button/loro-button';\nimport { LoroModalSwipeService } from '../../../services/loro-modal-swipe.service';\n\n@Component({\n selector: 'loro-modal',\n imports: [LoroButton],\n templateUrl: './loro-modal.html',\n styleUrl: './loro-modal.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroModal {\n private readonly document = inject(DOCUMENT);\n private readonly swipe = inject(LoroModalSwipeService);\n /** Mobile swipe closes after a deliberate downward pull. */\n private readonly closeDragThreshold = 72;\n /** Keeps body/html locked while the modal is open. */\n private readonly lockScrollEffect = effect((onCleanup) => {\n if (this.open()) {\n this.lockDocumentScroll(onCleanup);\n }\n });\n\n open = input<boolean>(false);\n title = input<string>('');\n ariaLabel = input<string>('');\n backdrop = input<boolean>(true);\n modalClose = output<void>();\n /** Tracks the sheet translation so the panel follows the finger. */\n protected readonly dragTranslateY = signal(0);\n /** Disables the transition while the finger is down. */\n protected readonly isDragging = signal(false);\n /** Applies the current drag offset without mutating layout flow. */\n protected readonly dialogTransform = computed(() => {\n const offset = this.dragTranslateY();\n\n return offset > 0 ? `translateY(${offset}px)` : 'translateY(0)';\n });\n\n protected requestClose(): void {\n this.modalClose.emit();\n }\n\n /** Starts the swipe gesture only for touch pointers. */\n protected onDragStart(event: PointerEvent): void {\n this.swipe.begin(event.pointerType, event.clientY);\n this.dragTranslateY.set(0);\n this.isDragging.set(true);\n }\n\n /** Keeps the dialog aligned with the active touch point. */\n protected onDragMove(event: PointerEvent): void {\n this.swipe.update(event.pointerType, event.clientY);\n this.dragTranslateY.set(this.swipe.offset(this.getMaxDragTranslateY()));\n }\n\n /** Closes only when the swipe crosses the configured threshold. */\n protected onDragEnd(): void {\n if (this.swipe.finish(this.closeDragThreshold)) {\n this.requestClose();\n }\n\n this.dragTranslateY.set(0);\n this.isDragging.set(false);\n }\n\n private lockDocumentScroll(onCleanup: (cleanupFn: () => void) => void): void {\n const body = this.document.body;\n const documentElement = this.document.documentElement;\n const previousBodyOverflow = body.style.overflow;\n const previousDocumentOverflow = documentElement.style.overflow;\n\n body.style.overflow = 'hidden';\n documentElement.style.overflow = 'hidden';\n body.classList.add('loro-modal-open');\n documentElement.classList.add('loro-modal-open');\n\n onCleanup(() => {\n body.style.overflow = previousBodyOverflow;\n documentElement.style.overflow = previousDocumentOverflow;\n body.classList.remove('loro-modal-open');\n documentElement.classList.remove('loro-modal-open');\n });\n }\n\n /** Caps the live translation so the sheet feels stable on small screens. */\n private getMaxDragTranslateY(): number {\n const viewportHeight = this.document.defaultView?.innerHeight ?? 0;\n\n return Math.max(0, Math.round(viewportHeight * 0.9));\n }\n}\n","@if (open()) {\n <div class=\"loro-modal\" role=\"presentation\">\n @if (backdrop()) {\n <button\n type=\"button\"\n class=\"loro-modal__backdrop\"\n aria-label=\"Cerrar modal\"\n (click)=\"requestClose()\"\n ></button>\n }\n <section\n class=\"loro-modal__dialog\"\n [class.loro-modal__dialog--dragging]=\"isDragging()\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"ariaLabel() || title()\"\n [style.transform]=\"dialogTransform()\"\n >\n <!-- Mobile-only drag affordance. Hidden on desktop. -->\n <button\n type=\"button\"\n class=\"loro-modal__drag-handle\"\n aria-label=\"Desliza hacia abajo para cerrar\"\n (pointerdown)=\"onDragStart($event)\"\n (pointermove)=\"onDragMove($event)\"\n (pointerup)=\"onDragEnd()\"\n (pointercancel)=\"onDragEnd()\"\n (pointerleave)=\"onDragEnd()\"\n >\n <span></span>\n </button>\n\n <header class=\"loro-modal__header\">\n @if (title()) {\n <h2>{{ title() }}</h2>\n }\n <!-- Desktop close action. Mobile users close via backdrop or swipe. -->\n <loro-button\n class=\"loro-modal__close\"\n icon=\"x\"\n variant=\"tertiary\"\n [iconOnly]=\"true\"\n ariaLabel=\"Cerrar modal\"\n (buttonClick)=\"requestClose()\"\n ></loro-button>\n </header>\n\n <!-- Default projected body content. -->\n <div class=\"loro-modal__content\">\n <ng-content />\n </div>\n\n <!-- Optional footer actions, hidden when nothing is projected. -->\n <div class=\"loro-modal__actions\">\n <ng-content select=\"[loro-modal-actions]\" />\n </div>\n </section>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { LoroButton } from '../../actions/loro-button/loro-button';\nimport { LoroNotification } from '../../feedback/loro-notification/loro-notification';\n\n@Component({\n selector: 'loro-header',\n standalone: true,\n imports: [LoroButton, LoroNotification],\n templateUrl: './loro-header.html',\n styleUrl: './loro-header.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroHeader {\n /** Centered page title shown in the header. */\n title = input.required<string>();\n /** Keeps the header fixed to the top when true. */\n fixed = input<boolean>(true);\n /** Shows or hides the back action on mobile. */\n showBack = input<boolean>(false);\n /** Unread notification badge count. */\n notificationCount = input<number>(0);\n /** Controls the notification trigger active state. */\n notificationOpen = input<boolean>(false);\n /** Accessible label for the header landmark. */\n accountSummaryAriaLabel = input.required<string>();\n /** Accessible label for the back button. */\n backAriaLabel = input.required<string>();\n /** Accessible label for the notification trigger. */\n notificationAriaLabel = input.required<string>();\n /** Accessible label for the AI action. */\n aiAriaLabel = input.required<string>();\n /** Accessible label for the settings action. */\n settingsAriaLabel = input.required<string>();\n /** Emits when the back action is pressed. */\n backClick = output<void>();\n /** Emits when the notification action is pressed. */\n notificationClick = output<void>();\n /** Emits when the AI action is pressed. */\n aiClick = output<void>();\n /** Emits when the settings action is pressed. */\n settingsClick = output<void>();\n}\n","<header\n class=\"loro-header\"\n [class.loro-header--fixed]=\"fixed()\"\n [attr.aria-label]=\"accountSummaryAriaLabel()\"\n>\n <div class=\"loro-header__section loro-header__section--leading\">\n @if (showBack()) {\n <loro-button\n class=\"loro-header__action loro-header__action--back\"\n variant=\"tertiary\"\n icon=\"back\"\n [iconOnly]=\"true\"\n [iconSize]=\"24\"\n [ariaLabel]=\"backAriaLabel()\"\n (buttonClick)=\"backClick.emit()\"\n />\n }\n <div class=\"loro-header__actions loro-header__actions--leading\">\n <loro-notification\n [count]=\"notificationCount()\"\n [active]=\"notificationOpen()\"\n [expanded]=\"notificationOpen()\"\n [iconSize]=\"24\"\n [ariaLabel]=\"notificationAriaLabel()\"\n (notificationClick)=\"notificationClick.emit()\"\n />\n <loro-button\n class=\"loro-header__action loro-header__action--ai-mobile\"\n variant=\"tertiary\"\n icon=\"chat\"\n [iconOnly]=\"true\"\n [iconSize]=\"22\"\n [ariaLabel]=\"aiAriaLabel()\"\n (buttonClick)=\"aiClick.emit()\"\n />\n </div>\n </div>\n\n <div class=\"loro-header__title-wrap\">\n <h1 class=\"loro-header__title\">{{ title() }}</h1>\n </div>\n\n <div class=\"loro-header__section loro-header__section--trailing\">\n <loro-button\n class=\"loro-header__action loro-header__action--ai-desktop\"\n variant=\"tertiary\"\n icon=\"chat\"\n [iconOnly]=\"true\"\n [iconSize]=\"22\"\n [ariaLabel]=\"aiAriaLabel()\"\n (buttonClick)=\"aiClick.emit()\"\n />\n <loro-button\n class=\"loro-header__action loro-header__action--settings\"\n variant=\"tertiary\"\n icon=\"settings\"\n [iconOnly]=\"true\"\n [iconSize]=\"22\"\n [ariaLabel]=\"settingsAriaLabel()\"\n (buttonClick)=\"settingsClick.emit()\"\n />\n <div class=\"loro-header__notification\">\n <loro-notification\n [count]=\"notificationCount()\"\n [active]=\"notificationOpen()\"\n [expanded]=\"notificationOpen()\"\n [iconSize]=\"24\"\n [ariaLabel]=\"notificationAriaLabel()\"\n (notificationClick)=\"notificationClick.emit()\"\n />\n </div>\n </div>\n</header>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["optionalNumberAttribute"],"mappings":"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"}