@juligc99/loro-ui 0.0.13 → 0.0.15

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/components/footer/footer.ts","../../../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/components/loro-accordion/loro-accordion.ts","../../../projects/loro-ui/src/lib/components/resources/loro-image/loro-image.ts","../../../projects/loro-ui/src/lib/services/loro-haptics.service.ts","../../../projects/loro-ui/src/lib/components/components/loro-button/loro-button.ts","../../../projects/loro-ui/src/lib/components/components/loro-button/loro-button.html","../../../projects/loro-ui/src/lib/components/components/loro-app-nav/loro-app-nav.ts","../../../projects/loro-ui/src/lib/components/components/loro-app-nav/loro-app-nav.html","../../../projects/loro-ui/src/lib/components/components/loro-assistant-card/loro-assistant-card.ts","../../../projects/loro-ui/src/lib/components/components/loro-auth-social-button/loro-auth-social-button.ts","../../../projects/loro-ui/src/lib/components/components/loro-badge/loro-badge.ts","../../../projects/loro-ui/src/lib/components/components/loro-card/loro-card.ts","../../../projects/loro-ui/src/lib/components/forms/loro-radio/loro-radio.ts","../../../projects/loro-ui/src/lib/components/forms/loro-toggle/loro-toggle.ts","../../../projects/loro-ui/src/lib/components/components/loro-card-nav/loro-card-nav.ts","../../../projects/loro-ui/src/lib/components/components/loro-dashboard-card/loro-dashboard-card.ts","../../../projects/loro-ui/src/lib/components/components/loro-dashboard-card/loro-dashboard-card.html","../../../projects/loro-ui/src/lib/components/components/loro-divider/loro-divider.ts","../../../projects/loro-ui/src/lib/components/forms/loro-input/loro-input.ts","../../../projects/loro-ui/src/lib/components/components/loro-product-row/loro-product-row.ts","../../../projects/loro-ui/src/lib/components/components/loro-product-row/loro-product-row.html","../../../projects/loro-ui/src/lib/components/components/loro-product-section/loro-product-section.ts","../../../projects/loro-ui/src/lib/components/components/loro-profile-card/loro-profile-card.ts","../../../projects/loro-ui/src/lib/components/components/loro-profile-hero/loro-profile-hero.ts","../../../projects/loro-ui/src/lib/components/components/loro-profile-hero/loro-profile-hero.html","../../../projects/loro-ui/src/lib/components/components/loro-stat-card/loro-stat-card.ts","../../../projects/loro-ui/src/lib/components/components/loro-store-rank-card/loro-store-rank-card.ts","../../../projects/loro-ui/src/lib/components/components/loro-summary-bar/loro-summary-bar.ts","../../../projects/loro-ui/src/lib/components/components/loro-tab/loro-tab.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-row/loro-notification-row.ts","../../../projects/loro-ui/src/lib/components/feedback/loro-notification-panel/loro-notification-panel.ts","../../../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/forms/loro-auth-field/loro-auth-field.ts","../../../projects/loro-ui/src/lib/components/forms/loro-checkbox/loro-checkbox.ts","../../../projects/loro-ui/src/lib/components/forms/loro-dropdown/loro-dropdown.ts","../../../projects/loro-ui/src/lib/components/forms/loro-filter-chip/loro-filter-chip.ts","../../../projects/loro-ui/src/lib/components/forms/loro-segmented-control/loro-segmented-control.ts","../../../projects/loro-ui/src/lib/components/forms/loro-select/loro-select.ts","../../../projects/loro-ui/src/lib/components/forms/loro-text-area/loro-text-area.ts","../../../projects/loro-ui/src/lib/components/forms/loro-upload/loro-upload.ts","../../../projects/loro-ui/src/lib/components/overlays/loro-modal/loro-modal.ts","../../../projects/loro-ui/src/juligc99-loro-ui.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'loro-footer',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <footer class=\"loro-footer\">\n <div class=\"loro-footer__meta\">\n <span class=\"loro-footer__dot\"></span>\n <p>© 2026 Al Loro App. Todos los derechos reservados.</p>\n </div>\n <div class=\"loro-footer__links\">\n <a href=\"#\">Términos</a>\n <a href=\"#\">Privacidad</a>\n <a href=\"#\">Soporte</a>\n </div>\n </footer>\n `,\n styles: `\n .loro-footer {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n gap: 0.75rem;\n padding-block: 1.25rem;\n border-top: 1px solid var(--loro-border-subtle);\n color: var(--loro-muted);\n font-size: 0.75rem;\n }\n\n .loro-footer__meta,\n .loro-footer__links {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n }\n\n .loro-footer__meta {\n justify-content: center;\n text-align: center;\n }\n\n .loro-footer__dot {\n width: 0.375rem;\n height: 0.375rem;\n flex: 0 0 auto;\n border-radius: 999px;\n background: var(--loro-primary-500);\n }\n\n .loro-footer__links {\n flex-wrap: wrap;\n justify-content: center;\n font-weight: 600;\n }\n\n .loro-footer__links a {\n color: inherit;\n text-decoration: none;\n transition: color 180ms ease;\n }\n\n .loro-footer__links a:hover {\n color: var(--loro-primary-500);\n }\n\n .loro-footer p {\n margin: 0;\n }\n\n @media (min-width: 640px) {\n .loro-footer {\n flex-direction: row;\n }\n\n .loro-footer__meta {\n text-align: left;\n }\n }\n `\n})\nexport class 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] 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} 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} 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 standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\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>\n `,\n styles: `\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 0;\n flex: 0 0 auto;\n }\n\n .loro-icon {\n display: inline-flex;\n width: 100%;\n height: 100%;\n }\n\n .loro-icon__origin,\n .loro-icon__mask {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n .loro-icon__origin {\n object-fit: contain;\n }\n\n .loro-icon__mask {\n background-color: var(--loro-icon-color);\n mask-image: var(--loro-icon-mask);\n mask-repeat: no-repeat;\n mask-position: center;\n mask-size: contain;\n -webkit-mask-image: var(--loro-icon-mask);\n -webkit-mask-repeat: no-repeat;\n -webkit-mask-position: center;\n -webkit-mask-size: contain;\n }\n `,\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","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { LoroIcon, type LoroIconName } from '../../resources/loro-icon/loro-icon';\n\n@Component({\n selector: 'loro-accordion',\n standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <article class=\"loro-accordion\" [class.loro-accordion--open]=\"expanded()\">\n <button type=\"button\" class=\"loro-accordion__header\" (click)=\"expandedChange.emit(!expanded())\">\n @if (icon()) {\n <span class=\"loro-accordion__icon\">\n <loro-icon [name]=\"icon()!\" [size]=\"24\" [alt]=\"title()\" color=\"primary\" />\n </span>\n }\n <span class=\"loro-accordion__title\">{{ title() }}</span>\n <loro-icon [name]=\"expanded() ? 'chevron-up' : 'chevron-down'\" [size]=\"22\" alt=\"Expandir\" color=\"primary\" />\n </button>\n @if (expanded()) {\n <div class=\"loro-accordion__body\">\n <ng-content />\n </div>\n }\n </article>\n `,\n styles: `\n :host {\n display: block;\n font-family: var(--loro-font-brand);\n }\n\n .loro-accordion {\n overflow: hidden;\n border: 1px solid var(--loro-border-subtle);\n border-radius: 1rem;\n background: var(--loro-surface);\n box-shadow: var(--loro-shadow-soft);\n }\n\n .loro-accordion--open {\n border-color: rgba(108, 60, 255, 0.34);\n }\n\n .loro-accordion__header {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: center;\n gap: 0.9rem;\n width: 100%;\n min-height: 4.3rem;\n padding: 0 1.1rem;\n border: 0;\n background: transparent;\n color: var(--loro-text-strong);\n font: inherit;\n text-align: left;\n cursor: pointer;\n }\n\n .loro-accordion__icon {\n display: grid;\n width: 2.6rem;\n height: 2.6rem;\n place-items: center;\n border-radius: 50%;\n background: var(--loro-brand-tint-surface);\n }\n\n .loro-accordion__title {\n font-size: 1rem;\n font-weight: 900;\n line-height: 1.25;\n }\n\n .loro-accordion__body {\n padding: 0 1.35rem 1.35rem;\n color: var(--loro-muted-strong);\n font-size: 0.94rem;\n font-weight: 600;\n line-height: 1.65;\n }\n `\n})\nexport class LoroAccordion {\n title = input.required<string>();\n icon = input<LoroIconName | null>('help');\n expanded = input<boolean>(false);\n expandedChange = output<boolean>();\n}\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 {\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 standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <img\n class=\"loro-image\"\n [src]=\"src()\"\n [alt]=\"altText()\"\n [style.width]=\"resolvedWidth()\"\n [style.height]=\"resolvedHeight()\"\n [style.object-fit]=\"fit()\"\n [style.display]=\"'block'\"\n />\n `,\n styles: `\n :host {\n display: block;\n }\n\n .loro-image {\n max-width: 100%;\n }\n `,\n})\nexport class LoroImage {\n name = input.required<LoroImageName>();\n alt = input<string>('');\n size = input<string>('');\n width = input<string>('100%');\n height = input<string>('auto');\n fit = input<'contain' | 'cover'>('contain');\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 resolvedWidth = computed(() => this.size() || this.width());\n protected readonly resolvedHeight = computed(() => this.size() || this.height());\n}\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 { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport {\n LoroIcon,\n type LoroIconColor,\n type LoroIconName,\n type LoroIconRenderMode,\n type LoroIconSize,\n} from '../../resources/loro-icon/loro-icon';\n\nexport type LoroButtonVariant =\n | 'primary'\n | 'outline'\n | 'ghost'\n | 'danger'\n | 'soft'\n | 'social'\n | 'action'\n | 'navigation';\nexport type LoroButtonType = 'primary' | 'secondary' | 'tertiary';\nexport type LoroButtonColor = 'primary' | 'secondary' | 'tertiary' | 'danger';\nexport type LoroButtonSize = 'sm' | 'md' | 'lg';\nexport type LoroButtonWidth = 'fit-content' | 'full';\nexport type LoroButtonIconMode = 'none' | 'with-icon' | 'only-icon';\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]': \"resolvedButtonWidth() === 'full'\",\n },\n templateUrl: './loro-button.html',\n styleUrl: './loro-button.scss',\n})\nexport class LoroButton {\n label = input<string>('');\n text = input<string>('');\n icon = input<LoroIconName | LoroButtonIconMode | null>(null);\n iconContent = input<LoroIconName | null>(null);\n iconMode = input<LoroButtonIconMode>('none');\n iconSize = input<LoroIconSize>(23);\n iconButtonSize = input<LoroIconSize | null>(null);\n iconColor = input<LoroIconColor | ''>('');\n socialMobileCompact = input<boolean>(true);\n selected = input<boolean>(false);\n variant = input<LoroButtonVariant>('primary');\n typeButton = input<LoroButtonType>('primary');\n color = input<LoroButtonColor>('primary');\n size = input<LoroButtonSize>('md');\n fullWidth = input<boolean>(false);\n buttonWidth = input<LoroButtonWidth>('fit-content');\n disabled = input<boolean>(false);\n loading = input<boolean>(false);\n type = input<'button' | 'submit' | 'reset'>('button');\n formId = input<string>('');\n ariaLabel = input<string>('');\n ariaDescription = input<string>('');\n\n buttonClick = output<void>();\n change = output<void>();\n sanChange = output<void>();\n\n protected readonly resolvedText = computed(() => this.text() || this.label());\n protected readonly resolvedIcon = computed<LoroIconName | null>(() => {\n const icon = this.icon();\n\n if (this.isIconMode(icon)) return this.iconContent();\n\n return this.iconContent() ?? icon;\n });\n protected readonly resolvedIconMode = computed<LoroButtonIconMode>(() => {\n const icon = this.icon();\n\n if (this.isIconMode(icon)) return icon;\n if (this.iconMode() !== 'none') return this.iconMode();\n\n return this.resolvedIcon() ? 'with-icon' : 'none';\n });\n protected readonly resolvedButtonWidth = computed<LoroButtonWidth>(() =>\n this.fullWidth() ? 'full' : this.buttonWidth(),\n );\n protected readonly resolvedIconButtonSize = computed<string>(() => {\n const customSize = this.iconButtonSize();\n\n if (typeof customSize === 'number' && customSize > 0) return `${customSize}px`;\n if (typeof customSize === 'string' && customSize.trim().length > 0) return customSize;\n\n switch (this.size()) {\n case 'sm':\n return '44px';\n case 'lg':\n return '60px';\n default:\n return '48px';\n }\n });\n protected readonly resolvedTypeButton = computed<LoroButtonType>(() => {\n const variantMap: Partial<Record<LoroButtonVariant, LoroButtonType>> = {\n outline: 'secondary',\n ghost: 'tertiary',\n soft: 'tertiary',\n action: 'tertiary',\n navigation: 'tertiary',\n };\n\n return variantMap[this.variant()] ?? this.typeButton();\n });\n protected readonly resolvedColor = computed<LoroButtonColor>(() =>\n this.variant() === 'danger' ? 'danger' : this.color(),\n );\n protected readonly showIcon = computed(() => !this.loading() && this.resolvedIconMode() !== 'none' && !!this.resolvedIcon());\n protected readonly resolvedAriaLabel = computed(\n () =>\n this.ariaLabel() || (this.resolvedIconMode() === 'only-icon' ? this.resolvedText() : null),\n );\n protected readonly resolvedIconColor = computed<LoroIconColor>(\n () => this.iconColor() || this.defaultIconColor(),\n );\n protected readonly resolvedIconRenderMode = computed<LoroIconRenderMode>(() => {\n const icon = this.resolvedIcon();\n\n return icon === 'apple' || icon === 'google' ? 'origin' : 'mask';\n });\n protected readonly isDisabled = computed(() => this.disabled() || this.loading());\n protected readonly showSpinner = computed(() => this.loading() && this.resolvedIconMode() !== 'only-icon');\n protected readonly loadingAriaLabel = computed(\n () => this.ariaDescription() || `Cargando ${this.resolvedText() || 'contenido'}`,\n );\n\n protected emitChange(): void {\n if (this.isDisabled()) {\n return;\n }\n\n this.buttonClick.emit();\n this.change.emit();\n this.sanChange.emit();\n }\n\n protected defaultIconColor(): LoroIconColor {\n const isStrongButton =\n this.variant() !== 'navigation' &&\n this.variant() !== 'action' &&\n this.resolvedTypeButton() === 'primary' &&\n this.resolvedColor() !== 'danger';\n\n return isStrongButton ? 'inverse' : this.resolvedColor() === 'danger' ? 'danger' : 'primary';\n }\n\n private isIconMode(value: LoroIconName | LoroButtonIconMode | null): value is LoroButtonIconMode {\n return value === 'none' || value === 'with-icon' || value === 'only-icon';\n }\n}\n","<button\n [type]=\"type()\"\n [attr.form]=\"formId() || null\"\n class=\"loro-button\"\n [class]=\"'loro-button loro-button--' + resolvedTypeButton()\"\n [class.loro-button--outline]=\"variant() === 'outline'\"\n [class.loro-button--ghost]=\"variant() === 'ghost'\"\n [class.loro-button--soft]=\"variant() === 'soft'\"\n [class.loro-button--social]=\"variant() === 'social'\"\n [class.loro-button--action]=\"variant() === 'action'\"\n [class.loro-button--navigation]=\"variant() === 'navigation'\"\n [class.loro-button--danger]=\"variant() === 'danger'\"\n [class.loro-button--secondary-color]=\"resolvedColor() === 'secondary'\"\n [class.loro-button--tertiary-color]=\"resolvedColor() === 'tertiary'\"\n [class.loro-button--danger-color]=\"resolvedColor() === 'danger'\"\n [class.loro-button--sm]=\"size() === 'sm'\"\n [class.loro-button--lg]=\"size() === 'lg'\"\n [class.loro-button--full]=\"resolvedButtonWidth() === 'full'\"\n [class.loro-button--icon-only]=\"resolvedIconMode() === 'only-icon'\"\n [class.loro-button--social-mobile-compact]=\"socialMobileCompact()\"\n [class.loro-button--selected]=\"selected()\"\n [class.loro-button--loading]=\"loading()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"resolvedAriaLabel()\"\n [attr.aria-description]=\"ariaDescription() || null\"\n [attr.aria-busy]=\"loading()\"\n [style.--loro-button-icon-size]=\"resolvedIconButtonSize()\"\n (click)=\"emitChange()\"\n>\n @if (showIcon()) {\n <loro-icon\n [name]=\"resolvedIcon()!\"\n [size]=\"iconSize()\"\n [alt]=\"resolvedText()\"\n [color]=\"resolvedIconColor()\"\n [renderMode]=\"resolvedIconRenderMode()\"\n />\n }\n\n @if (showSpinner()) {\n <span class=\"loro-button__spinner\" aria-hidden=\"true\"></span>\n <span class=\"loro-button__sr-status\" aria-live=\"polite\">{{ loadingAriaLabel() }}</span>\n }\n\n @if (resolvedIconMode() !== 'only-icon') {\n <span class=\"loro-button__label\">{{ resolvedText() }}</span>\n }\n</button>\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output, signal } from '@angular/core';\nimport { Toolbar, ToolbarWidget } from '@angular/aria/toolbar';\n\nimport type { LoroIconName } from '../../resources/loro-icon/loro-icon';\nimport { LoroIcon } from '../../resources/loro-icon/loro-icon';\nimport { LoroImage } from '../../resources/loro-image/loro-image';\nimport { LoroHapticsService } from '../../../services/loro-haptics.service';\nimport { LoroButton } from '../loro-button/loro-button';\n\nexport interface LoroAppNavItem {\n id: string;\n label: string;\n icon: LoroIconName;\n active?: boolean;\n badge?: string | number | null;\n disabled?: boolean;\n}\n\nexport interface LoroAppNavClick {\n item: LoroAppNavItem;\n section: 'main' | 'utility';\n}\n\nconst DEFAULT_MAIN_ITEMS: LoroAppNavItem[] = [\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\nconst DEFAULT_UTILITY_ITEMS: LoroAppNavItem[] = [\n { id: 'settings', label: 'Ajustes', icon: 'settings' },\n { id: 'logout', label: 'Cerrar sesión', icon: 'logout' },\n];\n\n@Component({\n selector: 'loro-app-nav',\n standalone: true,\n imports: [Toolbar, ToolbarWidget, LoroImage, LoroButton, LoroIcon],\n templateUrl: './loro-app-nav.html',\n styleUrl: './loro-app-nav.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroAppNav {\n private readonly haptics = inject(LoroHapticsService);\n private readonly draggedMobilePosition = signal<number | null>(null);\n private readonly draggedMobileIndex = signal<number | null>(null);\n private activePointerId: number | null = null;\n private suppressNextMobileClick = false;\n\n items = input<LoroAppNavItem[]>(DEFAULT_MAIN_ITEMS);\n utilityItems = input<LoroAppNavItem[]>(DEFAULT_UTILITY_ITEMS);\n ariaLabel = input<string>('Navegación principal');\n showUtilityItems = input<boolean>(true);\n compactDesktop = input<boolean>(false);\n\n itemClick = output<LoroAppNavItem>();\n utilityItemClick = output<LoroAppNavItem>();\n navItemClick = output<LoroAppNavClick>();\n\n protected readonly desktopItems = computed(() => this.items().filter((item) => item.id !== 'scan'));\n protected readonly mobileItems = computed(() => this.items().slice(0, 5));\n protected readonly mobileVisualSlotCount = computed(() => this.mobileItems().length);\n\n private readonly selectedMobileIndex = computed(() => {\n const index = this.mobileItems().findIndex((item) => item.active);\n return index >= 0 ? index : 0;\n });\n\n protected readonly mobileSliderPosition = computed(\n () => this.draggedMobilePosition() ?? this.mobileItemIndexToVisualSlot(this.selectedMobileIndex()),\n );\n\n protected readonly isMobileDragging = computed(() => this.draggedMobilePosition() !== null);\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 // Mientras se arrastra, ningún icono cambia visualmente.\n // El nuevo activo solo se refleja cuando el gesto termina y el padre\n // actualiza el item con active: true.\n return this.selectedMobileIndex() === index;\n }\n\n onMainItemClick(item: LoroAppNavItem): void {\n if (item.disabled) {\n return;\n }\n\n this.emitMainItem(item, true);\n }\n\n protected onMobileItemClick(item: LoroAppNavItem): void {\n if (this.suppressNextMobileClick) {\n this.suppressNextMobileClick = false;\n return;\n }\n\n this.onMainItemClick(item);\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 nav.setPointerCapture(event.pointerId);\n\n const slotPosition = this.getMobileVisualSlotPosition(event.clientX, nav);\n const index = this.getNearestEnabledMobileIndex(slotPosition);\n if (index === null) {\n return;\n }\n\n this.draggedMobilePosition.set(slotPosition);\n this.draggedMobileIndex.set(index);\n this.haptics.selection();\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 const index = this.getNearestEnabledMobileIndex(slotPosition);\n\n this.draggedMobilePosition.set(slotPosition);\n\n if (index !== null && index !== this.draggedMobileIndex()) {\n this.draggedMobileIndex.set(index);\n this.haptics.selection();\n }\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) ?? this.draggedMobileIndex();\n\n this.releaseMobilePointer(nav, event.pointerId);\n\n if (index === null) {\n this.draggedMobilePosition.set(null);\n this.draggedMobileIndex.set(null);\n return;\n }\n\n const item = this.mobileItems()[index];\n\n if (!item || item.disabled) {\n this.draggedMobilePosition.set(null);\n this.draggedMobileIndex.set(null);\n return;\n }\n\n // Keep the thumb exactly on the snapped item until the parent applies\n // the new active state, avoiding a visual jump back to the old item.\n this.draggedMobilePosition.set(this.mobileItemIndexToVisualSlot(index));\n this.draggedMobileIndex.set(index);\n\n this.suppressNextMobileClick = true;\n globalThis.setTimeout(() => {\n this.suppressNextMobileClick = false;\n });\n\n this.emitMainItem(item, false);\n\n globalThis.queueMicrotask(() => {\n this.draggedMobilePosition.set(null);\n this.draggedMobileIndex.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.draggedMobilePosition.set(null);\n this.draggedMobileIndex.set(null);\n }\n\n onUtilityItemClick(item: LoroAppNavItem): 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: LoroAppNavItem, 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 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 mobileItemIndexToVisualSlot(index: number): number {\n return index;\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(this.mobileItemIndexToVisualSlot(index) - slotPosition) <\n Math.abs(this.mobileItemIndexToVisualSlot(nearest) - slotPosition)\n ? index\n : nearest,\n );\n }\n\n private releaseMobilePointer(nav: HTMLElement, pointerId: number): void {\n if (nav.hasPointerCapture(pointerId)) {\n nav.releasePointerCapture(pointerId);\n }\n\n this.activePointerId = null;\n }\n}\n","<aside class=\"loro-app-nav\">\n <div class=\"loro-app-nav__desktop\">\n <div class=\"loro-app-nav__surface\" [class.loro-app-nav__surface--compact]=\"compactDesktop()\">\n <div class=\"loro-app-nav__brand\">\n <loro-image\n class=\"loro-app-nav__brand-image\"\n name=\"image-loro-apaisado\"\n alt=\"AlLoro\"\n width=\"10rem\"\n height=\"auto\"\n />\n </div>\n\n <nav class=\"loro-app-nav__nav\" [attr.aria-label]=\"ariaLabel()\">\n @for (item of desktopItems(); track item.id) {\n <loro-button\n class=\"loro-app-nav__item\"\n [class.loro-app-nav__item--active]=\"item.active\"\n [class.loro-app-nav__item--disabled]=\"item.disabled\"\n [class.loro-app-nav__item--logout]=\"item.id === 'logout'\"\n [text]=\"item.label\"\n [icon]=\"item.icon\"\n iconMode=\"with-icon\"\n iconColor=\"default\"\n variant=\"navigation\"\n [selected]=\"!!item.active\"\n [color]=\"item.id === 'logout' ? 'danger' : 'primary'\"\n type=\"button\"\n [fullWidth]=\"true\"\n [ariaLabel]=\"item.label\"\n [disabled]=\"!!item.disabled\"\n (buttonClick)=\"onMainItemClick(item)\"\n >\n @if (item.badge !== null && item.badge !== undefined && item.badge !== '') {\n <span class=\"loro-app-nav__badge\">{{ item.badge }}</span>\n }\n </loro-button>\n }\n </nav>\n\n <div class=\"loro-app-nav__spacer\"></div>\n\n @if (showUtilityItems() && utilityItems().length > 0) {\n <div class=\"loro-app-nav__divider\" aria-hidden=\"true\"></div>\n\n <nav\n class=\"loro-app-nav__nav loro-app-nav__nav--utility\"\n aria-label=\"Navegación secundaria\"\n >\n @for (item of utilityItems(); track item.id) {\n <loro-button\n class=\"loro-app-nav__item\"\n [class.loro-app-nav__item--active]=\"item.active\"\n [class.loro-app-nav__item--disabled]=\"item.disabled\"\n [class.loro-app-nav__item--logout]=\"item.id === 'logout'\"\n [text]=\"item.label\"\n [icon]=\"item.icon\"\n iconMode=\"with-icon\"\n iconColor=\"default\"\n variant=\"navigation\"\n [selected]=\"!!item.active\"\n [color]=\"item.id === 'logout' ? 'danger' : 'primary'\"\n type=\"button\"\n [fullWidth]=\"true\"\n [ariaLabel]=\"item.label\"\n [disabled]=\"!!item.disabled\"\n (buttonClick)=\"onUtilityItemClick(item)\"\n >\n @if (item.badge !== null && item.badge !== undefined && item.badge !== '') {\n <span class=\"loro-app-nav__badge\">{{ item.badge }}</span>\n }\n </loro-button>\n }\n </nav>\n }\n </div>\n </div>\n\n <nav\n ngToolbar\n class=\"loro-app-nav__mobile\"\n [attr.aria-label]=\"ariaLabel()\"\n [style.--loro-mobile-slider-position]=\"mobileSliderPosition()\"\n [class.loro-app-nav__mobile--dragging]=\"isMobileDragging()\"\n [class.loro-app-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-app-nav__mobile-slider\"\n [class.loro-app-nav__mobile-slider--scan]=\"selectedMobileItemId() === 'scan'\"\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-app-nav__mobile-item\"\n [style.grid-column]=\"mobileItemGridColumn(index)\"\n [class.loro-app-nav__mobile-item--active]=\"isMobileItemVisualActive(index)\"\n [class.loro-app-nav__mobile-item--scan-active]=\"item.id === 'scan' && isMobileItemVisualActive(index)\"\n [class.loro-app-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-app-nav__mobile-icon\"\n [name]=\"item.icon\"\n [size]=\"24\"\n color=\"default\"\n [alt]=\"item.label\"\n />\n <span class=\"loro-app-nav__mobile-label\">{{ item.label }}</span>\n </button>\n }\n </nav>\n</aside>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { LoroButton, type LoroButtonVariant } from '../loro-button/loro-button';\nimport { LoroIcon, type LoroIconName } from '../../resources/loro-icon/loro-icon';\nimport { LoroImage, type LoroImageName } from '../../resources/loro-image/loro-image';\n\n@Component({\n selector: 'loro-assistant-card',\n standalone: true,\n imports: [LoroButton, LoroIcon, LoroImage],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <section class=\"loro-assistant-card\">\n <div class=\"loro-assistant-card__media\">\n @if (imageName()) {\n <loro-image [name]=\"imageName()!\" [alt]=\"title()\" width=\"100%\" />\n } @else {\n <loro-icon [name]=\"icon()\" [size]=\"56\" [alt]=\"title()\" color=\"primary\" />\n }\n </div>\n <div class=\"loro-assistant-card__copy\">\n <h2>{{ title() }}</h2>\n <p>{{ description() }}</p>\n </div>\n @if (actionLabel()) {\n <loro-button\n [label]=\"actionLabel()\"\n [icon]=\"actionIcon()\"\n [variant]=\"actionVariant()\"\n [fullWidth]=\"true\"\n (buttonClick)=\"action.emit()\" />\n }\n </section>\n `,\n styles: `\n :host {\n display: block;\n font-family: var(--loro-font-brand);\n }\n\n .loro-assistant-card {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) minmax(12rem, auto);\n align-items: center;\n gap: 1.5rem;\n padding: 1.35rem 1.5rem;\n border: 1px solid var(--loro-border-subtle);\n border-radius: var(--loro-radius-card);\n background: var(--loro-surface-soft);\n box-shadow: var(--loro-shadow-soft);\n }\n\n .loro-assistant-card__media {\n display: grid;\n width: 6rem;\n height: 5rem;\n place-items: center;\n overflow: hidden;\n }\n\n .loro-assistant-card__copy {\n min-width: 0;\n }\n\n h2,\n p {\n margin: 0;\n }\n\n h2 {\n color: var(--loro-text-strong);\n font-size: 1.2rem;\n font-weight: 900;\n line-height: 1.2;\n }\n\n p {\n margin-top: 0.35rem;\n color: var(--loro-muted);\n font-weight: 650;\n line-height: 1.45;\n }\n\n @media (max-width: 680px) {\n .loro-assistant-card {\n grid-template-columns: auto minmax(0, 1fr);\n }\n\n loro-button {\n grid-column: 1 / -1;\n }\n }\n `\n})\nexport class LoroAssistantCard {\n title = input.required<string>();\n description = input.required<string>();\n imageName = input<LoroImageName | null>(null);\n icon = input<LoroIconName>('headset');\n actionLabel = input<string>('');\n actionIcon = input<LoroIconName | null>('chat');\n actionVariant = input<LoroButtonVariant>('primary');\n action = output<void>();\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport {\n LORO_ICON_LEGACY_NAMES,\n LORO_ICON_PATHS,\n LoroIcon,\n type LoroIconName,\n} from '../../resources/loro-icon/loro-icon';\n\ntype NativeSocialIcon = 'apple' | 'google';\n\nfunction isNativeSocialIcon(icon: LoroIconName): icon is NativeSocialIcon {\n return icon === 'apple' || icon === 'google';\n}\n\n@Component({\n selector: 'loro-auth-social-button',\n standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <button\n type=\"button\"\n class=\"loro-auth-social-button\"\n [class.loro-auth-social-button--outline]=\"outline()\"\n [class.loro-auth-social-button--selected]=\"selected()\"\n (click)=\"releaseFocus($event)\"\n >\n @if (nativeIconSrc()) {\n <img\n class=\"loro-auth-social-button__native-icon\"\n [src]=\"nativeIconSrc()\"\n alt=\"\"\n aria-hidden=\"true\"\n [style.width.px]=\"iconSize()\"\n [style.height.px]=\"iconSize()\"\n />\n } @else {\n <loro-icon [name]=\"icon()\" [size]=\"iconSize()\" [alt]=\"label()\" />\n }\n <span>{{ label() }}</span>\n </button>\n `,\n styles: `\n :host {\n display: block;\n }\n\n .loro-auth-social-button {\n display: flex;\n width: 100%;\n align-items: center;\n justify-content: center;\n gap: 0.8rem;\n border: 1px solid var(--loro-border-subtle);\n border-radius: 0.9rem;\n background: var(--loro-surface);\n min-height: 3.25rem;\n padding: 0.78rem 1rem;\n box-shadow: var(--loro-shadow-soft);\n color: var(--loro-text);\n font: inherit;\n font-family: var(--loro-font-brand);\n font-size: 0.92rem;\n font-weight: 800;\n cursor: pointer;\n text-align: center;\n transition:\n border-color 180ms ease,\n box-shadow 180ms ease,\n transform 120ms ease,\n background 120ms ease;\n }\n\n .loro-auth-social-button:hover,\n .loro-auth-social-button:focus-visible {\n border-color: var(--loro-auth-field-active-border, var(--loro-primary-500));\n box-shadow:\n var(--loro-shadow-soft),\n 0 0 0 3px color-mix(in srgb, var(--loro-primary-500) 14%, transparent);\n }\n\n .loro-auth-social-button:active {\n background: color-mix(in srgb, var(--loro-primary-500) 6%, var(--loro-surface));\n transform: scale(0.985);\n }\n\n .loro-auth-social-button loro-icon {\n transform: scale(0.82);\n }\n\n .loro-auth-social-button__native-icon {\n flex: 0 0 auto;\n object-fit: contain;\n }\n\n .loro-auth-social-button--outline {\n border: 2px solid var(--loro-primary-500);\n box-shadow: none;\n color: var(--loro-primary-500);\n background: transparent;\n }\n\n .loro-auth-social-button--outline:hover,\n .loro-auth-social-button--outline:focus-visible {\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--loro-primary-500) 14%, transparent);\n }\n\n .loro-auth-social-button--outline:active {\n background: color-mix(in srgb, var(--loro-primary-500) 8%, transparent);\n }\n\n @media (min-width: 1024px) {\n .loro-auth-social-button {\n min-height: 3rem;\n padding: 0.65rem 1rem;\n font-size: 0.86rem;\n }\n\n .loro-auth-social-button--outline {\n font-size: 0.92rem;\n }\n }\n `,\n})\nexport class LoroAuthSocialButton {\n icon = input.required<LoroIconName>();\n label = input.required<string>();\n outline = input<boolean>(false);\n selected = input<boolean>(false);\n iconSize = input<number>(44);\n\n protected readonly nativeIconSrc = computed(() => {\n const icon = this.icon();\n\n if (!isNativeSocialIcon(icon)) {\n return '';\n }\n\n return LORO_ICON_PATHS[LORO_ICON_LEGACY_NAMES[icon]];\n });\n\n protected releaseFocus(event: Event): void {\n const target = event.currentTarget;\n if (target instanceof HTMLButtonElement) {\n target.blur();\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nexport type LoroBadgeVariant = 'success' | 'error' | 'info' | 'warning' | 'neutral';\n\n@Component({\n selector: 'loro-badge',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<span class=\"loro-badge\" [class]=\"'loro-badge loro-badge--' + variant()\">{{ label() }}</span>`,\n styles: `\n :host {\n display: inline-flex;\n min-width: 0;\n font-family: var(--loro-font-brand);\n }\n\n .loro-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n max-width: 100%;\n min-height: 1.75rem;\n padding: 0.25rem 0.7rem;\n border: 1px solid transparent;\n border-radius: var(--loro-radius-pill);\n font-size: 0.82rem;\n font-weight: 800;\n line-height: 1.1;\n white-space: nowrap;\n }\n\n .loro-badge--success {\n border-color: rgba(31, 157, 85, 0.2);\n background: rgba(31, 157, 85, 0.12);\n color: #1f9d55;\n }\n\n .loro-badge--error {\n border-color: rgba(220, 38, 38, 0.18);\n background: rgba(220, 38, 38, 0.1);\n color: #dc2626;\n }\n\n .loro-badge--info {\n border-color: rgba(108, 60, 255, 0.18);\n background: rgba(108, 60, 255, 0.1);\n color: var(--loro-primary-700);\n }\n\n .loro-badge--warning {\n border-color: rgba(245, 168, 0, 0.22);\n background: rgba(245, 168, 0, 0.12);\n color: #986c00;\n }\n\n .loro-badge--neutral {\n border-color: var(--loro-border-soft);\n background: var(--loro-surface-muted);\n color: var(--loro-muted-strong);\n }\n `\n})\nexport class LoroBadge {\n label = input.required<string>();\n variant = input<LoroBadgeVariant>('info');\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { LoroIcon, type LoroIconColor, type LoroIconName } from '../../resources/loro-icon/loro-icon';\nimport { LoroImage, type LoroImageName } from '../../resources/loro-image/loro-image';\n\nexport type LoroCardVariant =\n | 'default'\n | 'tinted'\n | 'danger'\n | 'selectable'\n | 'benefit'\n | 'benefit-showcase'\n | 'home-hero'\n | 'home-primary'\n | 'home-secondary';\nexport type LoroCardJustify = 'start' | 'center' | 'end';\n\n@Component({\n selector: 'loro-card',\n standalone: true,\n imports: [RouterLink, LoroIcon, LoroImage],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <a\n class=\"loro-card\"\n [routerLink]=\"link() || null\"\n [class.loro-card--tinted]=\"variant() === 'tinted'\"\n [class.loro-card--danger]=\"variant() === 'danger'\"\n [class.loro-card--selectable]=\"variant() === 'selectable'\"\n [class.loro-card--benefit]=\"variant() === 'benefit'\"\n [class.loro-card--benefit-showcase]=\"variant() === 'benefit-showcase'\"\n [class.loro-card--home-hero]=\"variant() === 'home-hero'\"\n [class.loro-card--home-primary]=\"variant() === 'home-primary'\"\n [class.loro-card--home-secondary]=\"variant() === 'home-secondary'\"\n [class.loro-card--interactive]=\"!!link()\"\n [class.loro-card--justify-start]=\"justify() === 'start'\"\n [class.loro-card--justify-center]=\"justify() === 'center'\"\n [class.loro-card--justify-end]=\"justify() === 'end'\"\n [class.loro-card--mobile-justify-start]=\"mobileJustify() === 'start'\"\n [class.loro-card--mobile-justify-center]=\"mobileJustify() === 'center'\"\n [class.loro-card--mobile-justify-end]=\"mobileJustify() === 'end'\"\n [class.loro-card--selected]=\"selected()\">\n @if (variant() === 'home-hero') {\n <div class=\"loro-card__hero-main\">\n <div class=\"loro-card__hero-avatar\" aria-hidden=\"true\">\n @if (heroAvatarSrc()) {\n <img [src]=\"heroAvatarSrc()!\" [alt]=\"heroAvatarAlt()\" />\n } @else {\n <loro-icon [name]=\"heroAvatarIcon()\" [size]=\"heroAvatarIconSize()\" [alt]=\"heroAvatarAlt()\" />\n }\n </div>\n\n <div class=\"loro-card__hero-copy\">\n @if (heroGreeting()) {\n <p>{{ heroGreeting() }}</p>\n }\n @if (heroSubtitle()) {\n <span>{{ heroSubtitle() }}</span>\n }\n </div>\n </div>\n\n @if (heroVisualImage()) {\n <div class=\"loro-card__hero-visual\" aria-hidden=\"true\">\n <loro-image [name]=\"heroVisualImage()!\" [alt]=\"heroVisualAlt()\" width=\"100%\" />\n </div>\n }\n }\n\n @if ((title() || icon()) && variant() !== 'home-hero') {\n <header class=\"loro-card__header\">\n @if (icon()) {\n <span class=\"loro-card__icon\">\n <loro-icon\n [name]=\"icon()!\"\n [size]=\"resolvedIconSize()\"\n [alt]=\"title() || icon()!\"\n [color]=\"iconColor()\"\n [decorative]=\"true\"\n />\n </span>\n }\n <div class=\"loro-card__copy\">\n @if (title()) {\n <h2 class=\"loro-card__title\">{{ title() }}</h2>\n }\n @if (description()) {\n <p class=\"loro-card__description\">{{ description() }}</p>\n }\n </div>\n </header>\n }\n <ng-content />\n @if (showArrow()) {\n <span class=\"loro-card__arrow\" aria-hidden=\"true\">\n <loro-icon name=\"arrow-right\" [size]=\"arrowSize()\" alt=\"Ir\" />\n </span>\n }\n </a>\n `,\n styles: `\n :host {\n display: block;\n font-family: var(--loro-font-brand);\n container-type: inline-size;\n }\n\n .loro-card {\n display: grid;\n gap: 1.25rem;\n padding: clamp(1.25rem, 3vw, 1.75rem);\n border: 1px solid var(--loro-border-subtle);\n border-radius: var(--loro-radius-card);\n background: var(--loro-surface-soft);\n box-shadow: var(--loro-shadow-soft);\n color: var(--loro-text);\n text-decoration: none;\n transition:\n transform 180ms ease,\n border-color 180ms ease,\n box-shadow 180ms ease,\n background-color 180ms ease;\n }\n\n .loro-card--interactive {\n cursor: pointer;\n }\n\n .loro-card--interactive:hover,\n .loro-card--interactive:focus-visible {\n transform: translateY(-1px);\n border-color: var(--loro-border-strong);\n outline: none;\n }\n\n .loro-card--tinted {\n background: var(--loro-surface-tinted);\n }\n\n .loro-card--danger {\n border-color: rgba(220, 38, 38, 0.22);\n background: rgba(220, 38, 38, 0.06);\n }\n\n .loro-card--selectable {\n cursor: pointer;\n }\n\n .loro-card--selected {\n border-color: var(--loro-primary-500);\n background: rgba(108, 60, 255, 0.05);\n box-shadow: 0 0 0 1px rgba(108, 60, 255, 0.2), var(--loro-shadow-soft);\n }\n\n .loro-card--benefit,\n .loro-card--benefit-showcase {\n gap: var(--loro-card-benefit-gap, 0.7rem);\n padding: 0;\n border: 0;\n border-radius: 0;\n background: transparent;\n box-shadow: none;\n transition: none;\n }\n\n .loro-card__header {\n display: flex;\n align-items: center;\n gap: 1rem;\n min-width: 0;\n }\n\n .loro-card__icon {\n display: grid;\n width: 3.5rem;\n height: 3.5rem;\n flex: 0 0 auto;\n place-items: center;\n border-radius: 1rem;\n background: var(--loro-brand-tint-surface);\n margin-block-end: 0.5rem;\n }\n\n .loro-card--benefit .loro-card__header,\n .loro-card--benefit-showcase .loro-card__header {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr);\n align-items: center;\n gap: var(--loro-card-benefit-header-gap, 0.75rem);\n min-width: 0;\n }\n\n .loro-card--benefit .loro-card__icon,\n .loro-card--benefit-showcase .loro-card__icon {\n width: var(--loro-card-benefit-icon-width, var(--loro-card-benefit-icon-size, 2.25rem));\n height: var(--loro-card-benefit-icon-height, var(--loro-card-benefit-icon-size, 2.25rem));\n border-radius: 999px;\n background: var(--loro-card-benefit-icon-bg, var(--loro-primary-500));\n color: #fff;\n }\n\n .loro-card__copy {\n min-width: 0;\n }\n\n .loro-card__title,\n .loro-card__description {\n margin: 0;\n }\n\n .loro-card__title {\n color: var(--loro-text-strong);\n font-size: clamp(1.15rem, 2vw, 1.45rem);\n font-weight: 900;\n line-height: 1.15;\n }\n\n .loro-card__description {\n margin-top: 0.35rem;\n color: var(--loro-muted);\n font-size: 0.95rem;\n line-height: 1.45;\n }\n\n .loro-card__arrow {\n display: none;\n align-items: center;\n justify-content: center;\n justify-self: end;\n width: 2.2rem;\n height: 2.2rem;\n border-radius: 999px;\n line-height: 0;\n }\n\n .loro-card--benefit .loro-card__title,\n .loro-card--benefit-showcase .loro-card__title {\n color: var(--loro-text-strong);\n font-size: var(--loro-card-benefit-title-font-size, 1rem);\n font-weight: 900;\n line-height: var(--loro-card-benefit-title-line-height, 1.15);\n overflow-wrap: anywhere;\n }\n\n .loro-card--benefit .loro-card__description,\n .loro-card--benefit-showcase .loro-card__description {\n margin-top: 0.12rem;\n color: var(--loro-muted);\n font-size: var(--loro-card-benefit-description-font-size, 0.82rem);\n font-weight: var(--loro-card-benefit-description-font-weight, 750);\n line-height: var(--loro-card-benefit-description-line-height, 1.25);\n overflow-wrap: anywhere;\n }\n\n .loro-card--benefit .loro-card__copy,\n .loro-card--benefit-showcase .loro-card__copy {\n min-width: 0;\n width: 100%;\n flex: 1 1 auto;\n }\n\n .loro-card--benefit-showcase {\n width: 100%;\n min-width: 0;\n }\n\n\n .loro-card--benefit.loro-card--justify-start .loro-card__header,\n .loro-card--benefit-showcase.loro-card--justify-start .loro-card__header {\n justify-content: flex-start;\n text-align: left;\n }\n\n .loro-card--benefit.loro-card--justify-center .loro-card__header,\n .loro-card--benefit-showcase.loro-card--justify-center .loro-card__header {\n justify-content: center;\n text-align: center;\n }\n\n .loro-card--benefit.loro-card--justify-end .loro-card__header,\n .loro-card--benefit-showcase.loro-card--justify-end .loro-card__header {\n justify-content: flex-end;\n text-align: right;\n }\n\n .loro-card--home-primary,\n .loro-card--home-secondary {\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n height: 100%;\n gap: 0;\n min-height: 10.5rem;\n padding: 1rem;\n overflow: hidden;\n isolation: isolate;\n border-color: var(--loro-home-card-border);\n border-radius: 1.45rem;\n background: var(--loro-surface-soft);\n text-align: left;\n }\n\n .loro-card--home-primary::before,\n .loro-card--home-primary::after,\n .loro-card--home-secondary::before,\n .loro-card--home-secondary::after {\n position: absolute;\n inset: 0;\n content: '';\n pointer-events: none;\n }\n\n .loro-card--home-primary > *,\n .loro-card--home-secondary > * {\n position: relative;\n z-index: 1;\n }\n\n .loro-card--home-primary .loro-card__header,\n .loro-card--home-secondary .loro-card__header {\n display: block;\n flex: 1 1 auto;\n text-align: left;\n }\n\n .loro-card--home-primary .loro-card__icon,\n .loro-card--home-secondary .loro-card__icon {\n position: relative;\n width: 3rem;\n height: 3rem;\n border: 1px solid rgba(255, 255, 255, 0.2);\n border-radius: 1.15rem;\n background: var(--loro-home-card-icon-bg);\n box-shadow: var(--loro-home-card-icon-shadow);\n color: var(--loro-home-card-icon-color);\n }\n\n .loro-card--home-primary .loro-card__copy,\n .loro-card--home-secondary .loro-card__copy {\n min-width: 0;\n display: grid;\n grid-template-rows: auto auto;\n justify-items: start;\n gap: 0.4rem;\n min-height: 0;\n }\n\n .loro-card--home-primary .loro-card__title,\n .loro-card--home-secondary .loro-card__title {\n color: var(--loro-home-card-title);\n font-size: 1.16rem;\n font-weight: 800;\n line-height: 1.15;\n letter-spacing: -0.02em;\n text-align: left;\n }\n\n .loro-card--home-primary .loro-card__description,\n .loro-card--home-secondary .loro-card__description {\n max-width: none;\n min-height: 0;\n margin-top: 0;\n color: var(--loro-home-card-description);\n font-size: 0.9rem;\n line-height: 1.45;\n text-align: left;\n }\n\n .loro-card--home-primary .loro-card__arrow,\n .loro-card--home-secondary .loro-card__arrow {\n display: inline-flex;\n color: var(--loro-home-card-arrow-color);\n align-items: center;\n justify-content: center;\n align-self: flex-end;\n margin-top: auto;\n }\n\n .loro-card--home-secondary .loro-card__title {\n font-size: 1.08rem;\n }\n\n .loro-card--home-secondary .loro-card__description {\n font-size: 0.85rem;\n }\n\n .loro-card--home-primary:hover,\n .loro-card--home-primary:focus-visible,\n .loro-card--home-secondary:hover,\n .loro-card--home-secondary:focus-visible {\n transform: translateY(-0.24rem) scale(1.01);\n border-color: var(--loro-home-card-hover-border);\n box-shadow: var(--loro-home-card-hover-shadow);\n }\n\n .loro-card--home-hero {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: center;\n gap: 0.75rem;\n min-height: 6.25rem;\n overflow: hidden;\n border-color: var(--loro-home-hero-border);\n border-radius: 1.1rem;\n background: var(--loro-home-hero-bg);\n padding: 0.875rem 1rem;\n color: var(--loro-home-hero-text);\n }\n\n .loro-card--home-hero .loro-card__header,\n .loro-card--home-hero .loro-card__copy,\n .loro-card--home-hero .loro-card__icon {\n display: none;\n }\n\n .loro-card__hero-main {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n min-width: 0;\n }\n\n .loro-card__hero-avatar {\n display: grid;\n width: 3rem;\n height: 3rem;\n flex: 0 0 3rem;\n place-items: center;\n overflow: hidden;\n border-radius: 0.95rem;\n background: var(--loro-home-avatar-bg);\n color: var(--loro-home-avatar-color);\n }\n\n .loro-card__hero-avatar img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n .loro-card__hero-copy {\n display: grid;\n gap: 0.18rem;\n min-width: 0;\n }\n\n .loro-card__hero-copy p,\n .loro-card__hero-copy span {\n margin: 0;\n }\n\n .loro-card__hero-copy p {\n font-size: 1rem;\n font-weight: 800;\n line-height: 1.2;\n }\n\n .loro-card__hero-copy span {\n color: var(--loro-home-hero-subtitle);\n font-size: 0.875rem;\n line-height: 1.35;\n }\n\n .loro-card__hero-visual {\n width: clamp(4.5rem, 24vw, 5.75rem);\n align-self: end;\n }\n\n .loro-card--home-hero:hover,\n .loro-card--home-hero:focus-visible {\n transform: none;\n border-color: var(--loro-home-hero-border);\n box-shadow: var(--loro-shadow-soft);\n }\n\n @media (max-width: 1023.88px) {\n .loro-card--benefit.loro-card--mobile-justify-start .loro-card__header,\n .loro-card--benefit-showcase.loro-card--mobile-justify-start .loro-card__header {\n text-align: left;\n }\n\n .loro-card--benefit.loro-card--mobile-justify-center .loro-card__header,\n .loro-card--benefit-showcase.loro-card--mobile-justify-center .loro-card__header {\n text-align: center;\n justify-self: center;\n width: fit-content;\n max-width: 100%;\n margin-inline: auto;\n }\n\n .loro-card--benefit.loro-card--mobile-justify-end .loro-card__header,\n .loro-card--benefit-showcase.loro-card--mobile-justify-end .loro-card__header {\n text-align: right;\n }\n\n .loro-card--benefit.loro-card--mobile-justify-start .loro-card__header,\n .loro-card--benefit-showcase.loro-card--mobile-justify-start .loro-card__header {\n grid-template-columns: auto minmax(0, 1fr);\n }\n\n .loro-card--benefit.loro-card--mobile-justify-center .loro-card__header,\n .loro-card--benefit-showcase.loro-card--mobile-justify-center .loro-card__header {\n grid-template-columns: auto auto;\n }\n\n .loro-card--benefit.loro-card--mobile-justify-end .loro-card__header,\n .loro-card--benefit-showcase.loro-card--mobile-justify-end .loro-card__header {\n grid-template-columns: auto minmax(0, 1fr);\n }\n }\n\n @container (min-width: 18rem) {\n .loro-card--home-primary,\n .loro-card--home-secondary {\n min-height: 9.75rem;\n }\n\n .loro-card--home-primary .loro-card__header,\n .loro-card--home-secondary .loro-card__header {\n display: block;\n }\n\n .loro-card--home-hero {\n min-height: 7.25rem;\n padding: 1rem 1.25rem;\n }\n\n .loro-card__hero-visual {\n width: clamp(5.25rem, 20vw, 7rem);\n }\n }\n `\n})\nexport class LoroCard {\n title = input<string>('');\n description = input<string>('');\n icon = input<LoroIconName | null>(null);\n iconSize = input<number>(28);\n iconColor = input<LoroIconColor>('default');\n link = input<string>('');\n variant = input<LoroCardVariant>('default');\n justify = input<LoroCardJustify>('center');\n mobileJustify = input<LoroCardJustify>('center');\n selected = input<boolean>(false);\n showArrow = input<boolean>(false);\n arrowSize = input<number>(16);\n heroGreeting = input<string>('');\n heroSubtitle = input<string>('');\n heroAvatarSrc = input<string | null>(null);\n heroAvatarAlt = input<string>('Perfil');\n heroAvatarIcon = input<LoroIconName>('user');\n heroAvatarIconSize = input<number>(22);\n heroVisualImage = input<LoroImageName | null>(null);\n heroVisualAlt = input<string>('AlLoro');\n\n protected readonly resolvedIconSize = computed(() => {\n const size = this.iconSize();\n const normalizedSize = typeof size === 'number' ? `${size}px` : size;\n\n return this.variant() === 'benefit' || this.variant() === 'benefit-showcase'\n ? `var(--loro-card-benefit-icon-glyph-size, ${normalizedSize})`\n : normalizedSize;\n });\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\n\nexport type LoroRadioVariant = 'default' | 'row';\n\n@Component({\n selector: 'loro-radio',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\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>\n `,\n styles: `\n :host {\n display: block;\n font-family: var(--loro-font-brand);\n }\n\n .loro-radio {\n display: inline-grid;\n grid-template-columns: auto minmax(0, 1fr);\n align-items: center;\n gap: 0.85rem;\n width: 100%;\n min-height: 3rem;\n border: 0;\n background: transparent;\n color: var(--loro-text-strong);\n font: inherit;\n text-align: left;\n cursor: pointer;\n }\n\n .loro-radio--row {\n grid-template-columns: minmax(0, 1fr) auto;\n min-height: 4.35rem;\n padding: 0 1rem;\n border: 1px solid var(--loro-border-subtle);\n background: var(--loro-surface);\n }\n\n .loro-radio__mark {\n position: relative;\n width: 1.35rem;\n height: 1.35rem;\n border: 2px solid var(--loro-muted);\n border-radius: 50%;\n }\n\n .loro-radio__mark::after {\n position: absolute;\n inset: 0.24rem;\n border-radius: 50%;\n background: var(--loro-primary-500);\n opacity: 0;\n content: '';\n }\n\n .loro-radio--checked .loro-radio__mark {\n border-color: var(--loro-primary-500);\n }\n\n .loro-radio--checked .loro-radio__mark::after {\n opacity: 1;\n }\n\n .loro-radio__copy {\n display: grid;\n gap: 0.18rem;\n min-width: 0;\n }\n\n .loro-radio__label {\n font-size: 1rem;\n font-weight: 900;\n line-height: 1.2;\n }\n\n .loro-radio__description {\n color: var(--loro-muted);\n font-size: 0.88rem;\n font-weight: 600;\n line-height: 1.35;\n }\n `\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","import { ChangeDetectionStrategy, Component, input, model, output } from '@angular/core';\nimport type { FormCheckboxControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\n\n@Component({\n selector: 'loro-toggle',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <button\n type=\"button\"\n class=\"loro-toggle\"\n [class.loro-toggle--checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-pressed]=\"checked()\"\n (click)=\"toggle()\">\n <span class=\"loro-toggle__thumb\"></span>\n </button>\n `,\n styles: `\n :host {\n display: inline-flex;\n flex: 0 0 auto;\n }\n\n .loro-toggle {\n position: relative;\n display: inline-flex;\n align-items: center;\n width: 4rem;\n height: 2.25rem;\n padding: 0.2rem;\n border: 1px solid var(--loro-border-subtle);\n border-radius: var(--loro-radius-pill);\n background: var(--loro-surface-muted);\n cursor: pointer;\n transition: background 160ms ease, border-color 160ms ease, opacity 160ms ease;\n }\n\n .loro-toggle__thumb {\n display: block;\n width: 1.85rem;\n height: 1.85rem;\n border-radius: 50%;\n background: var(--loro-surface);\n box-shadow: 0 3px 10px rgba(34, 25, 73, 0.18);\n transition: transform 160ms ease;\n }\n\n .loro-toggle--checked {\n border-color: color-mix(in srgb, var(--loro-primary-500) 54%, transparent);\n background: linear-gradient(135deg, var(--loro-primary-700), var(--loro-primary-500));\n }\n\n .loro-toggle--checked .loro-toggle__thumb {\n transform: translateX(1.75rem);\n }\n\n .loro-toggle:disabled {\n cursor: not-allowed;\n opacity: 0.7;\n }\n `\n})\nexport class LoroToggle implements FormCheckboxControl {\n checked = model(false);\n disabled = input<boolean>(false);\n required = input(false);\n invalid = input(false);\n errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n touched = model(false);\n ariaLabel = input<string>('Cambiar estado');\n checkedChange = output<boolean>();\n\n protected toggle(): void {\n if (this.disabled()) {\n return;\n }\n\n const nextChecked = !this.checked();\n this.checked.set(nextChecked);\n this.touched.set(true);\n this.checkedChange.emit(nextChecked);\n }\n}\n","import { ChangeDetectionStrategy, Component, inject, input, output } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { LoroBadge, type LoroBadgeVariant } from '../loro-badge/loro-badge';\nimport { LoroIcon, type LoroIconName } from '../../resources/loro-icon/loro-icon';\nimport { LoroRadio } from '../../forms/loro-radio/loro-radio';\nimport { LoroToggle } from '../../forms/loro-toggle/loro-toggle';\n\nexport type LoroCardNavVariant = 'default' | 'danger' | 'soft';\nexport type LoroCardNavTrailing = 'arrow' | 'toggle' | 'radio' | 'text' | 'badge' | 'none';\n\n@Component({\n selector: 'loro-card-nav',\n standalone: true,\n imports: [LoroBadge, LoroIcon, LoroRadio, LoroToggle],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <button\n type=\"button\"\n class=\"loro-card-nav\"\n [class.loro-card-nav--danger]=\"variant() === 'danger'\"\n [class.loro-card-nav--soft]=\"variant() === 'soft'\"\n [class.loro-card-nav--selected]=\"selected()\"\n (click)=\"activate()\">\n @if (icon()) {\n <span class=\"loro-card-nav__icon\">\n <loro-icon\n [name]=\"icon()!\"\n [size]=\"iconSize()\"\n [alt]=\"title()\"\n [color]=\"variant() === 'danger' ? 'danger' : iconColor()\" />\n </span>\n }\n\n <span class=\"loro-card-nav__copy\">\n <span class=\"loro-card-nav__title\">{{ title() }}</span>\n @if (description()) {\n <span class=\"loro-card-nav__description\">{{ description() }}</span>\n }\n </span>\n\n <span class=\"loro-card-nav__trailing\" (click)=\"$event.stopPropagation()\">\n @switch (trailing()) {\n @case ('toggle') {\n <loro-toggle [checked]=\"checked()\" [ariaLabel]=\"title()\" (checkedChange)=\"checkedChange.emit($event)\" />\n }\n @case ('radio') {\n <loro-radio [label]=\"''\" [value]=\"value()\" [checked]=\"selected()\" (selected)=\"selectedChange.emit($event)\" />\n }\n @case ('text') {\n <span class=\"loro-card-nav__value\">{{ value() }}</span>\n }\n @case ('badge') {\n <loro-badge [label]=\"badgeLabel() || value()\" [variant]=\"badgeVariant()\" />\n }\n @case ('arrow') {\n <loro-icon\n class=\"loro-card-nav__arrow\"\n name=\"chevron-right\"\n [size]=\"22\"\n alt=\"Abrir\"\n [color]=\"variant() === 'danger' ? 'danger' : 'primary'\" />\n }\n }\n </span>\n </button>\n `,\n styles: `\n :host {\n display: block;\n font-family: var(--loro-font-brand);\n }\n\n .loro-card-nav {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: center;\n gap: 1rem;\n width: 100%;\n min-height: 4.8rem;\n padding: 0.95rem 1.1rem;\n border: 0;\n border-bottom: 1px solid var(--loro-border-subtle);\n background: transparent;\n color: var(--loro-text);\n font: inherit;\n text-align: left;\n cursor: pointer;\n }\n\n .loro-card-nav:last-child {\n border-bottom: 0;\n }\n\n .loro-card-nav--soft,\n .loro-card-nav--danger {\n border: 1px solid var(--loro-border-subtle);\n border-radius: 1rem;\n background: var(--loro-surface-soft);\n box-shadow: var(--loro-shadow-soft);\n }\n\n .loro-card-nav--danger {\n border-color: color-mix(in srgb, var(--loro-danger-text) 30%, transparent);\n background: var(--loro-danger-surface);\n color: var(--loro-danger-text);\n }\n\n .loro-card-nav--selected {\n border-color: rgba(108, 60, 255, 0.32);\n background: rgba(108, 60, 255, 0.04);\n }\n\n .loro-card-nav__icon {\n display: grid;\n width: 3.15rem;\n height: 3.15rem;\n place-items: center;\n border-radius: 0.9rem;\n background: var(--loro-brand-tint-surface);\n }\n\n .loro-card-nav--danger .loro-card-nav__icon {\n background: color-mix(in srgb, var(--loro-danger-text) 12%, transparent);\n }\n\n .loro-card-nav__copy {\n display: grid;\n gap: 0.25rem;\n min-width: 0;\n }\n\n .loro-card-nav__title {\n color: currentColor;\n font-size: 1rem;\n font-weight: 900;\n line-height: 1.2;\n }\n\n .loro-card-nav__description {\n color: var(--loro-muted);\n font-size: 0.9rem;\n font-weight: 600;\n line-height: 1.35;\n }\n\n .loro-card-nav--danger .loro-card-nav__description {\n color: color-mix(in srgb, var(--loro-danger-text) 72%, var(--loro-muted));\n }\n\n .loro-card-nav__trailing {\n display: inline-flex;\n align-items: center;\n justify-content: flex-end;\n min-width: 0;\n }\n\n .loro-card-nav__value {\n color: var(--loro-muted-strong);\n font-weight: 800;\n white-space: nowrap;\n }\n\n @media (max-width: 520px) {\n .loro-card-nav {\n gap: 0.85rem;\n min-height: 5.2rem;\n padding-inline: 1rem;\n }\n\n .loro-card-nav__icon {\n width: 3rem;\n height: 3rem;\n }\n }\n `\n})\nexport class LoroCardNav {\n private readonly router = inject(Router, { optional: true });\n\n title = input.required<string>();\n description = input<string>('');\n icon = input<LoroIconName | null>(null);\n iconSize = input<number>(25);\n iconColor = input<string>('primary');\n route = input<string>('');\n variant = input<LoroCardNavVariant>('default');\n trailing = input<LoroCardNavTrailing>('arrow');\n value = input<string>('');\n checked = input<boolean>(false);\n selected = input<boolean>(false);\n badgeLabel = input<string>('');\n badgeVariant = input<LoroBadgeVariant>('info');\n itemClick = output<void>();\n checkedChange = output<boolean>();\n selectedChange = output<string>();\n\n protected activate(): void {\n this.itemClick.emit();\n\n if (this.trailing() === 'toggle') {\n this.checkedChange.emit(!this.checked());\n return;\n }\n\n if (this.trailing() === 'radio') {\n this.selectedChange.emit(this.value());\n return;\n }\n\n const route = this.route();\n if (route && this.router) {\n void this.router.navigateByUrl(route);\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { LoroIcon, type LoroIconName } from '../../resources/loro-icon/loro-icon';\nimport { LoroImage, type LoroImageName } from '../../resources/loro-image/loro-image';\nimport { LoroHapticsService } from '../../../services/loro-haptics.service';\n\n@Component({\n selector: 'loro-dashboard-card',\n standalone: true,\n imports: [RouterLink, LoroIcon, LoroImage],\n templateUrl: './loro-dashboard-card.html',\n styleUrl: './loro-dashboard-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoroDashboardCard {\n private readonly haptics = inject(LoroHapticsService);\n\n title = input.required<string>();\n description = input<string>('');\n link = input<string>('/');\n icon = input<LoroIconName | null>(null);\n illustration = input<LoroImageName | null>(null);\n variant = input<'default' | 'home'>('default');\n showArrow = input<boolean>(true);\n iconSize = input<number>(88);\n arrowSize = input<number>(24);\n\n onCardClick(): void {\n this.haptics.impact('light');\n }\n}\n","<a\n class=\"loro-dashboard-card\"\n [class.loro-dashboard-card--home]=\"variant() === 'home'\"\n data-touch-hover\n [routerLink]=\"link()\"\n (click)=\"onCardClick()\"\n>\n <div class=\"loro-dashboard-card__media\" aria-hidden=\"true\">\n @if (illustration()) {\n <loro-image\n [name]=\"illustration()!\"\n [alt]=\"title()\"\n width=\"100%\"\n />\n } @else if (icon()) {\n <loro-icon\n [name]=\"icon()!\"\n [size]=\"iconSize()\"\n [alt]=\"title()\"\n />\n }\n </div>\n\n <div class=\"loro-dashboard-card__content\">\n <h3>{{ title() }}</h3>\n\n @if (description()) {\n <p>{{ description() }}</p>\n }\n </div>\n\n @if (showArrow()) {\n <div class=\"loro-dashboard-card__arrow\" aria-hidden=\"true\">\n <loro-icon name=\"arrow-right\" [size]=\"arrowSize()\" alt=\"Ir\" />\n </div>\n }\n</a>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nexport type LoroDividerAlign = 'left' | 'center' | 'right';\n\n@Component({\n selector: 'loro-divider',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div\n class=\"loro-divider\"\n role=\"presentation\"\n [class.loro-divider--left]=\"align() === 'left'\"\n [class.loro-divider--right]=\"align() === 'right'\"\n >\n <span class=\"loro-divider__line\"></span>\n @if (text()) {\n <p class=\"loro-divider__text\">{{ text() }}</p>\n }\n <span class=\"loro-divider__line\"></span>\n </div>\n `,\n styles: `\n :host {\n display: block;\n font-family: var(--loro-font-brand);\n }\n\n .loro-divider {\n display: flex;\n align-items: center;\n gap: 0.9rem;\n color: var(--loro-muted);\n }\n\n .loro-divider__line {\n height: 1px;\n flex: 1;\n background: color-mix(in srgb, var(--loro-muted) 30%, transparent);\n }\n\n .loro-divider__text {\n margin: 0;\n font-size: 0.9rem;\n font-weight: 850;\n line-height: 1;\n white-space: nowrap;\n }\n\n .loro-divider--left .loro-divider__line:last-child {\n flex: 999;\n }\n\n .loro-divider--right .loro-divider__line:first-child {\n flex: 999;\n }\n `,\n})\nexport class LoroDivider {\n text = input('');\n align = input<LoroDividerAlign>('center');\n}\n","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/loro-icon';\n\nexport type LoroInputUnit = 'kg' | 'ud';\nexport type LoroInputVariant = 'default' | 'withIcon' | 'search' | 'photo' | 'stepper';\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 standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\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 @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--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]=\"type()\"\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 (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 `,\n styles: `\n :host {\n display: block;\n font-family: var(--loro-font-brand);\n }\n\n .loro-input {\n display: grid;\n gap: 0.55rem;\n color: var(--loro-text);\n }\n\n .loro-input__label {\n color: var(--loro-muted-strong);\n font-size: var(--loro-input-label-font-size, 0.95rem);\n font-weight: var(--loro-input-label-font-weight, 800);\n line-height: var(--loro-input-label-line-height, 1.2);\n }\n\n .loro-input__control {\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n align-items: center;\n min-height: var(--loro-input-control-min-height, 3.4rem);\n padding: var(--loro-input-control-padding, 0 1rem);\n border: 1px solid var(--loro-input-control-border-color, var(--loro-border-subtle));\n border-radius: var(--loro-input-control-radius, var(--loro-radius-input));\n background: var(--loro-input-control-background, var(--loro-surface));\n box-shadow: var(--loro-input-control-shadow, none);\n transition:\n border-color 160ms ease,\n box-shadow 160ms ease,\n background 160ms ease;\n }\n\n .loro-input--has-icon .loro-input__control {\n grid-template-columns: auto minmax(0, 1fr);\n gap: var(--loro-input-control-gap, 0.8rem);\n }\n\n .loro-input--has-icon:has(.loro-input__trailing-button) .loro-input__control {\n grid-template-columns: auto minmax(0, 1fr) auto;\n }\n\n .loro-input__control input {\n font-size: var(--loro-input-field-font-size, 1rem);\n line-height: var(--loro-input-field-line-height, 1.2);\n }\n\n input {\n width: 100%;\n border: 0;\n outline: 0;\n background: transparent;\n color: var(--loro-text-strong);\n font: inherit;\n font-weight: var(--loro-input-field-font-weight, 700);\n }\n\n input::placeholder {\n color: var(--loro-muted);\n font-weight: var(--loro-input-placeholder-font-weight, 600);\n opacity: var(--loro-input-placeholder-opacity, 1);\n }\n\n .loro-input__trailing-button {\n display: grid;\n width: 2.5rem;\n height: 2.5rem;\n place-items: center;\n margin-right: -0.55rem;\n border: 0;\n border-radius: 50%;\n color: var(--loro-muted);\n background: transparent;\n cursor: pointer;\n transition:\n background 150ms ease,\n color 150ms ease;\n }\n\n .loro-input__trailing-button:hover,\n .loro-input__trailing-button:focus-visible {\n color: var(--loro-primary-700);\n background: color-mix(in srgb, var(--loro-primary-500) 10%, transparent);\n outline: none;\n }\n\n .loro-input--error .loro-input__control {\n border-color: color-mix(in srgb, var(--loro-danger-text) 28%, var(--loro-border-subtle));\n background: var(--loro-input-control-background, var(--loro-surface));\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--loro-danger-text) 7%, transparent);\n }\n\n .loro-input--error .loro-input--stepper {\n border-color: color-mix(in srgb, var(--loro-danger-text) 28%, var(--loro-border-subtle));\n background: var(--loro-surface);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--loro-danger-text) 7%, transparent);\n }\n\n .loro-input--error .loro-input__label {\n color: color-mix(in srgb, var(--loro-danger-text) 68%, var(--loro-muted-strong));\n }\n\n .loro-input--success .loro-input__control {\n border-color: color-mix(in srgb, var(--loro-success, #1f9d55) 34%, var(--loro-border-subtle));\n background: var(--loro-input-control-background, var(--loro-surface));\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--loro-success, #1f9d55) 10%, transparent);\n }\n\n .loro-input--success .loro-input--stepper {\n border-color: color-mix(in srgb, var(--loro-success, #1f9d55) 34%, var(--loro-border-subtle));\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--loro-success, #1f9d55) 10%, transparent);\n }\n\n .loro-input--success .loro-input__label {\n color: color-mix(in srgb, var(--loro-success, #1f9d55) 72%, var(--loro-muted-strong));\n }\n\n .loro-input--loading .loro-input__control {\n border-color: color-mix(in srgb, var(--loro-primary-500) 22%, var(--loro-border-subtle));\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--loro-primary-500) 8%, transparent);\n }\n\n .loro-input__control:focus-within {\n border-color: var(--loro-input-control-focus-border-color, var(--loro-primary-500));\n box-shadow: var(--loro-input-control-focus-shadow, 0 0 0 3px color-mix(in srgb, var(--loro-primary-500) 16%, transparent));\n }\n\n .loro-input__error {\n display: inline-grid;\n grid-template-columns: auto minmax(0, 1fr);\n align-items: start;\n gap: 0.4rem;\n color: var(--loro-danger-text);\n font-size: var(--loro-input-support-font-size, 0.82rem);\n font-weight: var(--loro-input-support-font-weight, 750);\n line-height: var(--loro-input-support-line-height, 1.35);\n }\n\n .loro-input__helper {\n display: inline-block;\n color: var(--loro-muted);\n font-size: var(--loro-input-support-font-size, 0.82rem);\n font-weight: var(--loro-input-support-font-weight, 750);\n line-height: var(--loro-input-support-line-height, 1.35);\n }\n\n .loro-input__success {\n display: inline-grid;\n grid-template-columns: auto minmax(0, 1fr);\n align-items: start;\n gap: 0.4rem;\n color: var(--loro-success, #1f9d55);\n font-size: var(--loro-input-support-font-size, 0.82rem);\n font-weight: var(--loro-input-support-font-weight, 750);\n line-height: var(--loro-input-support-line-height, 1.35);\n }\n\n .loro-input__loading {\n display: flex;\n align-items: center;\n gap: 0.35rem;\n color: var(--loro-primary-700);\n font-size: var(--loro-input-support-font-size, 0.82rem);\n font-weight: var(--loro-input-support-font-weight, 750);\n line-height: var(--loro-input-support-line-height, 1.35);\n }\n\n .loro-input__loader {\n width: 1rem;\n height: 1rem;\n border: 2px solid color-mix(in srgb, var(--loro-primary-500) 18%, transparent);\n border-top-color: var(--loro-primary-500);\n border-radius: 50%;\n animation: loro-input-spin 0.75s linear infinite;\n }\n\n\n .loro-input--stepper {\n display: grid;\n grid-template-columns: 1.85rem minmax(3.9rem, 1fr) 1.85rem;\n align-items: center;\n min-width: 0;\n min-height: 2.25rem;\n overflow: hidden;\n border: 1px solid\n color-mix(in srgb, var(--loro-primary-500) 12%, var(--loro-border-subtle) 88%);\n border-radius: 0.65rem;\n background: var(--loro-surface);\n color: var(--loro-text-strong);\n font-weight: 900;\n text-align: center;\n box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--loro-surface) 70%, transparent);\n }\n\n .loro-input--stepper button {\n height: 100%;\n min-width: 0;\n border: 0;\n background: transparent;\n color: var(--loro-primary-700);\n font: inherit;\n font-weight: 950;\n line-height: 1;\n cursor: pointer;\n transition:\n background 150ms ease,\n color 150ms ease;\n }\n\n .loro-input--stepper button:active {\n background: color-mix(in srgb, var(--loro-primary-500) 10%, var(--loro-surface) 90%);\n }\n\n .loro-input__stepper-value {\n display: inline-grid;\n grid-template-columns: minmax(1.55rem, max-content) auto;\n align-items: center;\n justify-content: center;\n gap: 0.18rem;\n min-width: 0;\n overflow: hidden;\n padding-inline: 0.1rem;\n white-space: nowrap;\n }\n\n .loro-input--stepper input {\n width: auto;\n min-width: 1.55rem;\n max-width: 2.75rem;\n overflow: hidden;\n padding: 0;\n text-align: right;\n text-overflow: clip;\n white-space: nowrap;\n font-weight: 900;\n font-size: clamp(0.85rem, 2.4vw, 0.98rem);\n letter-spacing: -0.02em;\n }\n\n .loro-input__stepper-value span {\n min-width: 1.05rem;\n color: var(--loro-text-strong);\n font-size: clamp(0.8rem, 2.2vw, 0.92rem);\n font-weight: 950;\n line-height: 1;\n }\n\n .loro-input--stepper-kg input {\n min-width: 2.1rem;\n max-width: 2.35rem;\n }\n\n @media (max-width: 1023.88px) {\n .loro-input__control input {\n font-size: 16px;\n }\n\n .loro-input--stepper {\n grid-template-columns: 1.65rem minmax(3.65rem, 1fr) 1.65rem;\n min-height: 2.2rem;\n }\n\n .loro-input__stepper-value {\n gap: 0.16rem;\n }\n }\n\n @keyframes loro-input-spin {\n to {\n transform: rotate(360deg);\n }\n }\n\n @keyframes loro-input-dot-blink {\n 0%,\n 20% {\n opacity: 0.25;\n }\n\n 50% {\n opacity: 1;\n }\n\n 100% {\n opacity: 0.25;\n }\n }\n `,\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 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 resolvedLeadingIconColor = computed<LoroIconColor>(() =>\n this.hasError() ? 'danger' : this.hasSuccess() ? 'success' : '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 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","import { ChangeDetectionStrategy, Component, input, output, signal } from '@angular/core';\nimport { LoroIcon } from '../../resources/loro-icon/loro-icon';\nimport { LoroImage, type LoroImageName } from '../../resources/loro-image/loro-image';\nimport { LoroInput } from '../../forms/loro-input/loro-input';\n\nexport type LoroProductRowVariant = 'basket' | 'pantry' | 'compare';\nexport type LoroProductRowStatus = 'ok' | 'warning' | 'expiring';\n\nconst TOUCH_TAP_TOLERANCE_PX = 10;\nconst TOUCH_SWIPE_START_PX = 8;\nconst SWIPE_REVEAL_PX = 104;\nconst SWIPE_MAX_PX = 176;\nconst SWIPE_DELETE_EXTRA_PX = 48;\nconst REMOVE_ANIMATION_MS = 180;\n\n@Component({\n selector: 'loro-product-row',\n standalone: true,\n imports: [LoroIcon, LoroImage, LoroInput],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './loro-product-row.html',\n styleUrl: './loro-product-row.scss'\n})\nexport class LoroProductRow {\n variant = input<LoroProductRowVariant>('basket');\n name = input.required<string>();\n meta = input<string>('');\n imageName = input<LoroImageName | null>(null);\n quantityLabel = input<string>('');\n quantity = input<number | null>(null);\n unit = input<string>('ud');\n total = input<number>(0);\n checked = input<boolean>(false);\n divider = input<boolean>(false);\n status = input<LoroProductRowStatus>('ok');\n prices = input<ReadonlyArray<{ store: string; value: number; best?: boolean; logoName?: LoroImageName | null }>>([]);\n checkedChange = output<boolean>();\n quantityChange = output<number>();\n increment = output<void>();\n decrement = output<void>();\n rowRemove = output<void>();\n\n protected readonly swipeDragging = signal(false);\n protected readonly swipeArmed = signal(false);\n protected readonly swipeRemoving = signal(false);\n private readonly swipeOffsetX = signal(0);\n private touchStartX = 0;\n private touchStartY = 0;\n private touchStartedOnInteractive = false;\n private touchMoved = false;\n private suppressNextClick = false;\n\n protected swipeTransform(): string | null {\n const offset = this.swipeOffsetX();\n return offset === 0 ? null : `translateX(${offset}px)`;\n }\n\n protected deleteActionTransform(): string | null {\n if (!this.isSwipeRemovable()) {\n return null;\n }\n\n const offset = Math.abs(this.swipeOffsetX());\n const progress = Math.min(offset / SWIPE_REVEAL_PX, 1);\n const translateX = (1 - progress) * 2.5;\n\n return `translateX(${translateX}rem)`;\n }\n\n protected isSwipeRemovable(): boolean {\n return this.variant() === 'basket' || this.variant() === 'pantry';\n }\n\n protected quantityValue(): string {\n const quantity = this.quantity();\n\n if (quantity !== null) {\n return this.formatQuantity(quantity);\n }\n\n return this.quantityLabel().replace(this.normalizedUnit(), '').trim();\n }\n\n protected updateQuantity(value: string): void {\n const parsed = Number(value.replace(',', '.'));\n\n if (!Number.isFinite(parsed)) {\n return;\n }\n\n this.quantityChange.emit(\n this.normalizedUnit() === 'ud'\n ? Math.min(100, Math.max(1, Math.round(parsed)))\n : Math.min(100, Math.max(0.5, parsed))\n );\n }\n\n protected onRowTouchStart(event: TouchEvent): void {\n if (!this.isSwipeRemovable() || !this.isMobileViewport() || event.touches.length !== 1) {\n return;\n }\n\n if (this.swipeRemoving()) {\n return;\n }\n\n const touch = event.touches[0];\n this.touchStartX = touch.clientX;\n this.touchStartY = touch.clientY;\n this.touchMoved = false;\n this.touchStartedOnInteractive = this.isInteractiveTarget(event.target);\n this.swipeDragging.set(false);\n }\n\n protected onRowTouchMove(event: TouchEvent): void {\n if (\n !this.isSwipeRemovable() ||\n !this.isMobileViewport() ||\n this.touchStartedOnInteractive ||\n event.touches.length !== 1\n ) {\n return;\n }\n\n const touch = event.touches[0];\n const deltaX = touch.clientX - this.touchStartX;\n const deltaY = touch.clientY - this.touchStartY;\n const movedDistance = Math.hypot(deltaX, deltaY);\n\n if (movedDistance > TOUCH_TAP_TOLERANCE_PX) {\n this.touchMoved = true;\n }\n\n if (Math.abs(deltaY) > Math.abs(deltaX) && !this.swipeDragging()) {\n return;\n }\n\n const nextOffset = this.swipeArmed()\n ? Math.max(-SWIPE_MAX_PX, Math.min(-SWIPE_REVEAL_PX, -SWIPE_REVEAL_PX + deltaX))\n : Math.max(deltaX, -SWIPE_MAX_PX);\n\n if (nextOffset < -TOUCH_SWIPE_START_PX || (this.swipeArmed() && nextOffset !== -SWIPE_REVEAL_PX)) {\n this.touchMoved = true;\n this.swipeDragging.set(true);\n this.swipeOffsetX.set(nextOffset);\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n protected onRowTouchEnd(event: TouchEvent): void {\n if (!this.isSwipeRemovable() || !this.isMobileViewport() || this.touchStartedOnInteractive) {\n this.resetSwipe();\n return;\n }\n\n const offset = this.swipeOffsetX();\n\n if (this.swipeArmed()) {\n if (offset <= -(SWIPE_REVEAL_PX + SWIPE_DELETE_EXTRA_PX)) {\n this.triggerRemove(event);\n return;\n }\n\n if (offset > -(SWIPE_REVEAL_PX - 20)) {\n this.suppressNextClick = true;\n event.preventDefault();\n event.stopPropagation();\n this.swipeArmed.set(false);\n this.resetSwipe();\n return;\n }\n\n this.suppressNextClick = true;\n event.preventDefault();\n event.stopPropagation();\n this.swipeDragging.set(false);\n this.swipeOffsetX.set(-SWIPE_REVEAL_PX);\n return;\n }\n\n if (offset <= -SWIPE_REVEAL_PX) {\n this.suppressNextClick = true;\n event.preventDefault();\n event.stopPropagation();\n this.swipeArmed.set(true);\n this.swipeDragging.set(false);\n this.swipeOffsetX.set(-SWIPE_REVEAL_PX);\n return;\n }\n\n if (this.variant() === 'basket' && !this.touchMoved && !this.isInteractiveTarget(event.target)) {\n this.suppressNextClick = true;\n event.preventDefault();\n event.stopPropagation();\n this.checkedChange.emit(!this.checked());\n } else if (this.touchMoved) {\n this.suppressNextClick = true;\n event.preventDefault();\n event.stopPropagation();\n }\n\n this.resetSwipe();\n }\n\n protected onRowTouchCancel(): void {\n this.resetSwipe();\n }\n\n protected onBasketClick(event: MouseEvent): void {\n if (this.variant() !== 'basket') {\n return;\n }\n\n if (this.isMobileViewport()) {\n if (this.suppressNextClick || this.swipeArmed() || !this.isInteractiveTarget(event.target)) {\n event.preventDefault();\n event.stopPropagation();\n this.suppressNextClick = false;\n }\n\n return;\n }\n\n if (!this.isInteractiveTarget(event.target)) {\n event.preventDefault();\n event.stopPropagation();\n this.checkedChange.emit(!this.checked());\n }\n }\n\n private formatQuantity(quantity: number): string {\n if (this.normalizedUnit() === 'ud') {\n return Math.round(quantity).toString();\n }\n\n return Number(quantity.toFixed(1)).toLocaleString('es-ES', {\n minimumFractionDigits: Number.isInteger(quantity) ? 0 : 1,\n maximumFractionDigits: 1\n });\n }\n\n private normalizedUnit(): 'kg' | 'ud' {\n return this.unit() === 'kg' ? 'kg' : 'ud';\n }\n\n protected formatCurrency(value: number): string {\n return value.toLocaleString('es-ES', {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2\n });\n }\n\n private resetSwipe(): void {\n if (this.swipeRemoving()) {\n return;\n }\n\n this.swipeDragging.set(false);\n this.swipeOffsetX.set(this.swipeArmed() ? -SWIPE_REVEAL_PX : 0);\n }\n\n private triggerRemove(event?: Event): void {\n this.suppressNextClick = true;\n event?.preventDefault();\n event?.stopPropagation();\n this.swipeDragging.set(false);\n this.swipeArmed.set(false);\n this.swipeRemoving.set(true);\n this.swipeOffsetX.set(-SWIPE_MAX_PX);\n window.setTimeout(() => this.rowRemove.emit(), REMOVE_ANIMATION_MS);\n }\n\n private isMobileViewport(): boolean {\n return window.matchMedia('(max-width: 640px)').matches;\n }\n\n private isInteractiveTarget(target: EventTarget | null): boolean {\n return target instanceof HTMLElement && !!target.closest('button, input, textarea, select, loro-input, a');\n }\n}\n","<article\n class=\"loro-product-row\"\n [class.loro-product-row--basket]=\"variant() === 'basket'\"\n [class.loro-product-row--pantry]=\"variant() === 'pantry'\"\n [class.loro-product-row--compare]=\"variant() === 'compare'\"\n [class.loro-product-row--divider]=\"divider()\"\n [class.loro-product-row--checked]=\"checked()\"\n [class.loro-product-row--dragging]=\"swipeDragging()\"\n [class.loro-product-row--swipe-armed]=\"swipeArmed()\"\n [class.loro-product-row--removing]=\"swipeRemoving()\"\n [class.loro-product-row--swipe-removable]=\"isSwipeRemovable()\"\n [class.loro-product-row--no-image]=\"!imageName()\"\n [style.transform]=\"swipeTransform()\"\n (touchstart)=\"onRowTouchStart($event)\"\n (touchmove)=\"onRowTouchMove($event)\"\n (touchend)=\"onRowTouchEnd($event)\"\n (touchcancel)=\"onRowTouchCancel()\"\n (click)=\"onBasketClick($event)\">\n @if (variant() === 'basket') {\n <button\n type=\"button\"\n class=\"loro-product-row__check\"\n [class.loro-product-row__check--checked]=\"checked()\"\n [attr.aria-label]=\"'Marcar ' + name()\"\n (click)=\"checkedChange.emit(!checked())\">\n @if (checked()) {\n <loro-icon name=\"check\" [size]=\"18\" alt=\"Comprado\" color=\"inverse\" />\n }\n </button>\n <span class=\"loro-product-row__selected-mark\" aria-hidden=\"true\">\n <loro-icon name=\"tick-circle\" [size]=\"16\" alt=\"Seleccionado\" color=\"primary\" />\n </span>\n }\n\n @if (imageName()) {\n <span class=\"loro-product-row__image\">\n <loro-image [name]=\"imageName()!\" [alt]=\"name()\" width=\"100%\" />\n </span>\n }\n\n <span class=\"loro-product-row__copy\">\n <strong>{{ name() }}</strong>\n @if (variant() !== 'basket') {\n <small>{{ meta() }}</small>\n }\n </span>\n\n @if (variant() === 'basket') {\n <loro-input\n class=\"loro-product-row__stepper\"\n variant=\"stepper\"\n [label]=\"'Cantidad de ' + name()\"\n [value]=\"quantityValue()\"\n [unit]=\"unit()\"\n [step]=\"unit() === 'kg' ? 0.5 : 1\"\n [min]=\"unit() === 'kg' ? 0.5 : 1\"\n [max]=\"100\"\n (valueChange)=\"updateQuantity($event)\" />\n }\n\n @if (variant() === 'compare') {\n <span class=\"loro-product-row__prices\">\n @for (price of prices(); track price.store) {\n <span [class.loro-product-row__price--best]=\"price.best\" class=\"loro-product-row__price\">\n @if (price.logoName) {\n <loro-image [name]=\"price.logoName\" [alt]=\"price.store\" width=\"100%\" height=\"100%\" fit=\"contain\" />\n } @else {\n <b>{{ price.store }}</b>\n }\n <span>{{ formatCurrency(price.value) }} €</span>\n </span>\n }\n </span>\n } @else if (variant() === 'basket') {\n <span class=\"loro-product-row__total-stack\">\n <small class=\"loro-product-row__unit-price\">{{ meta() }}</small>\n <strong class=\"loro-product-row__total\">{{ formatCurrency(total()) }} €</strong>\n </span>\n } @else {\n <strong class=\"loro-product-row__total\">{{ formatCurrency(total()) }} €</strong>\n }\n\n @if (variant() === 'pantry') {\n <span\n class=\"loro-product-row__status\"\n [class.loro-product-row__status--warning]=\"status() === 'warning'\"\n [class.loro-product-row__status--expiring]=\"status() === 'expiring'\">\n <loro-icon\n [name]=\"status() === 'ok' ? 'check' : 'warning'\"\n [size]=\"status() === 'ok' ? 15 : 12\"\n [alt]=\"status()\"\n [color]=\"status() === 'ok' ? 'success' : status() === 'expiring' ? 'warning' : 'danger'\" />\n </span>\n } @else if (variant() === 'basket') {\n <button\n type=\"button\"\n class=\"loro-product-row__delete-button\"\n data-touch-hover\n [attr.aria-label]=\"'Eliminar ' + name()\"\n (click)=\"rowRemove.emit()\">\n <loro-icon name=\"trash\" [size]=\"18\" alt=\"\" [decorative]=\"true\" color=\"danger\" />\n </button>\n }\n</article>\n@if (isSwipeRemovable()) {\n <span class=\"loro-product-row__delete-action\" aria-hidden=\"true\" [style.transform]=\"deleteActionTransform()\">\n <loro-icon name=\"trash-white\" [size]=\"24\" alt=\"Eliminar\" color=\"inverse\" />\n <span>Eliminar</span>\n </span>\n}\n","import { ChangeDetectionStrategy, Component, input, signal } from '@angular/core';\nimport { LoroIcon, type LoroIconName } from '../../resources/loro-icon/loro-icon';\n\n@Component({\n selector: 'loro-product-section',\n standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <section class=\"loro-product-section\">\n <header\n class=\"loro-product-section__header\"\n [class.loro-product-section__header--collapsible]=\"collapsible()\"\n [attr.role]=\"collapsible() ? 'button' : null\"\n [attr.tabindex]=\"collapsible() ? 0 : null\"\n [attr.aria-expanded]=\"collapsible() ? expanded() : null\"\n (click)=\"toggle()\"\n (keydown.enter)=\"toggle()\"\n (keydown.space)=\"toggle()\">\n <span class=\"loro-product-section__icon\">\n <loro-icon [name]=\"icon()\" [size]=\"18\" [alt]=\"title()\" color=\"inverse\" />\n </span>\n <h2>{{ title() }}</h2>\n @if (collapsible()) {\n <span class=\"loro-product-section__toggle\" aria-hidden=\"true\">\n <loro-icon\n [name]=\"expanded() ? 'chevron-up' : 'chevron-down'\"\n [size]=\"18\"\n [alt]=\"expanded() ? 'Contraer' : 'Expandir'\"\n color=\"primary-strong\" />\n </span>\n }\n </header>\n @if (!collapsible() || expanded()) {\n <div class=\"loro-product-section__body\">\n <ng-content />\n </div>\n }\n </section>\n `,\n styles: `\n :host {\n display: block;\n font-family: var(--loro-font-brand);\n }\n\n .loro-product-section {\n display: grid;\n gap: 0.7rem;\n }\n\n .loro-product-section__header {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: center;\n gap: 0.8rem;\n margin-inline: -0.35rem;\n padding: 0.25rem 0.35rem;\n border-radius: 0.75rem;\n color: var(--loro-text-strong);\n transition: background 150ms ease, transform 150ms ease;\n }\n\n .loro-product-section__header--collapsible {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n\n .loro-product-section__header--collapsible:hover {\n background: rgba(108, 60, 255, 0.055);\n }\n\n .loro-product-section__header--collapsible:focus-visible {\n outline: 2px solid rgba(108, 60, 255, 0.32);\n outline-offset: 2px;\n }\n\n .loro-product-section__header--collapsible:active {\n transform: scale(0.995);\n background: rgba(108, 60, 255, 0.08);\n }\n\n .loro-product-section__icon {\n display: grid;\n width: 2.1rem;\n height: 2.1rem;\n place-items: center;\n border-radius: 50%;\n background: linear-gradient(135deg, var(--loro-primary-500), var(--loro-primary-700));\n }\n\n h2 {\n margin: 0;\n font-size: 1.12rem;\n font-weight: 950;\n line-height: 1.2;\n }\n\n .loro-product-section__toggle {\n display: grid;\n width: 2.25rem;\n height: 2.25rem;\n place-items: center;\n border-radius: 50%;\n }\n\n .loro-product-section__body {\n overflow: hidden;\n border: 1px solid var(--loro-border-subtle);\n border-radius: 0.8rem;\n background: var(--loro-surface-soft);\n box-shadow: var(--loro-shadow-soft);\n }\n\n @media (max-width: 640px) {\n .loro-product-section {\n gap: 0.25rem;\n }\n\n .loro-product-section__header {\n grid-template-columns: 1.2rem minmax(0, 1fr) 1.35rem;\n gap: 0.35rem;\n margin-inline: 0;\n padding: 0.08rem 0;\n }\n\n .loro-product-section__icon {\n width: 1.2rem;\n height: 1.2rem;\n }\n\n .loro-product-section__icon loro-icon,\n .loro-product-section__toggle loro-icon {\n transform: scale(0.72);\n }\n\n h2 {\n font-size: 0.72rem;\n line-height: 1.05;\n }\n\n .loro-product-section__toggle {\n display: grid;\n width: 1.35rem;\n height: 1.35rem;\n place-items: center;\n border: 1px solid color-mix(in srgb, var(--loro-primary-500) 18%, transparent);\n background: color-mix(in srgb, var(--loro-primary-500) 6%, transparent);\n }\n\n .loro-product-section__body {\n border-radius: 0.58rem;\n }\n }\n `\n})\nexport class LoroProductSection {\n title = input.required<string>();\n icon = input<LoroIconName>('leaf');\n collapsible = input<boolean>(true);\n protected readonly expanded = signal(true);\n\n protected toggle(): void {\n if (!this.collapsible()) {\n return;\n }\n\n this.expanded.update((expanded) => !expanded);\n }\n}\n","import { ChangeDetectionStrategy, Component, effect, input, output, signal } from '@angular/core';\nimport { LoroButton } from '../loro-button/loro-button';\nimport { LoroIcon } from '../../resources/loro-icon/loro-icon';\n\n@Component({\n selector: 'loro-profile-card',\n standalone: true,\n imports: [LoroButton, LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <section class=\"loro-profile-card\">\n <div class=\"loro-profile-card__avatar\">\n @if (resolvedImageSrc()) {\n <img [src]=\"resolvedImageSrc()!\" [alt]=\"name()\" (error)=\"onImageError()\" />\n } @else {\n <loro-icon name=\"user\" [size]=\"72\" [alt]=\"name()\" color=\"primary\" />\n }\n </div>\n <div class=\"loro-profile-card__copy\">\n <h2>{{ name() }}</h2>\n <p>{{ email() }}</p>\n <loro-button\n label=\"Cambiar foto\"\n icon=\"camera\"\n variant=\"outline\"\n (buttonClick)=\"changePhotoClick.emit()\" />\n </div>\n </section>\n `,\n styles: `\n :host {\n display: block;\n font-family: var(--loro-font-brand);\n }\n\n .loro-profile-card {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr);\n align-items: center;\n gap: 1.5rem;\n padding: clamp(1.25rem, 3vw, 2rem);\n border: 1px solid var(--loro-border-subtle);\n border-radius: var(--loro-radius-card);\n background: var(--loro-surface-soft);\n box-shadow: var(--loro-shadow-soft);\n }\n\n .loro-profile-card__avatar {\n display: grid;\n width: clamp(7rem, 16vw, 9.5rem);\n aspect-ratio: 1;\n place-items: center;\n overflow: hidden;\n border-radius: 50%;\n background: linear-gradient(180deg, rgba(108, 60, 255, 0.14), rgba(108, 60, 255, 0.04));\n }\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n h2,\n p {\n margin: 0;\n }\n\n h2 {\n color: var(--loro-text-strong);\n font-size: clamp(2rem, 4vw, 2.7rem);\n font-weight: 900;\n line-height: 1;\n }\n\n p {\n margin: 0.4rem 0 1rem;\n color: var(--loro-muted);\n font-size: 1.05rem;\n font-weight: 650;\n }\n\n @media (max-width: 520px) {\n .loro-profile-card {\n grid-template-columns: max-content minmax(0, 1fr);\n gap: 1rem;\n }\n }\n `\n})\nexport class LoroProfileCard {\n name = input.required<string>();\n email = input.required<string>();\n imageSrc = input<string | null>(null);\n changePhotoClick = output<void>();\n private readonly imageFailed = signal(false);\n\n constructor() {\n effect(() => {\n this.imageSrc();\n this.imageFailed.set(false);\n });\n }\n\n protected resolvedImageSrc(): string | null {\n return this.imageFailed() ? null : this.imageSrc();\n }\n\n protected onImageError(): void {\n this.imageFailed.set(true);\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { LoroIcon } from '../../resources/loro-icon/loro-icon';\nimport { LoroImage, type LoroImageName } from '../../resources/loro-image/loro-image';\n\ntype LoroProfileHeroVariant = 'default' | 'compact' | 'large' | 'support';\n\n@Component({\n selector: 'loro-profile-hero',\n standalone: true,\n imports: [LoroIcon, LoroImage],\n templateUrl: './loro-profile-hero.html',\n styleUrl: './loro-profile-hero.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.--loro-profile-hero-eyebrow-size]': 'eyebrowFontSize()',\n '[style.--loro-profile-hero-title-size]': 'titleFontSize()',\n '[style.--loro-profile-hero-greeting-size]': 'greetingFontSize()',\n '[style.--loro-profile-hero-avatar-size]': 'avatarSize()',\n '[style.--loro-profile-hero-avatar-radius]': 'avatarRadius()',\n '[style.--loro-profile-hero-avatar-icon-size]': 'avatarIconCssSize()',\n '[style.--loro-profile-hero-parrot-mobile-width]': 'parrotMobileWidth()',\n '[style.--loro-profile-hero-parrot-desktop-width]': 'parrotWebWidth()'\n }\n})\nexport class LoroProfileHero {\n variant = input<LoroProfileHeroVariant>('default');\n\n firstName = input<string>('Patricia');\n eyebrow = input<string>('Mi perfil');\n greeting = input<string>('¡Qué bien verte por aquí!');\n\n profileImageSrc = input<string | null>(null);\n profileImageAlt = input<string>('Imagen de perfil');\n avatarIconName = input<ReturnType<LoroIcon['name']>>('user');\n avatarIconSize = input<number>(24);\n avatarAlt = input<string>('Perfil');\n avatarSize = input<string>('2.75rem');\n avatarRadius = input<string>('0.625rem');\n\n parrotImageName = input<LoroImageName>('profile');\n parrotImageAlt = input<string>('Mascota de perfil AlLoro');\n parrotMobileWidth = input<string>('34%');\n parrotWebWidth = input<string>('34%');\n\n eyebrowFontSize = input<string>('clamp(0.75rem, 2.8cqi, 0.95rem)');\n titleFontSize = input<string>('clamp(1.5rem, 6.4cqi, 2.45rem)');\n greetingFontSize = input<string>('clamp(0.8rem, 3.2cqi, 1.05rem)');\n\n elevated = input<boolean>(true);\n\n avatarIconCssSize(): string {\n return `${this.avatarIconSize()}px`;\n }\n}\n","<section\n class=\"loro-profile-hero\"\n [class.loro-profile-hero--flat]=\"!elevated()\"\n [class.loro-profile-hero--compact]=\"variant() === 'compact'\"\n [class.loro-profile-hero--large]=\"variant() === 'large'\"\n [class.loro-profile-hero--support]=\"variant() === 'support'\"\n aria-label=\"Perfil de usuario\"\n>\n @if (variant() === 'support') {\n <div class=\"loro-profile-hero__support-art\" aria-hidden=\"true\">\n <loro-image [name]=\"parrotImageName()\" [alt]=\"parrotImageAlt()\" width=\"100%\" />\n </div>\n }\n\n <div class=\"loro-profile-hero__content\">\n @if (variant() !== 'support') {\n <div class=\"loro-profile-hero__avatar\">\n @if (profileImageSrc()) {\n <img\n class=\"loro-profile-hero__profile-image\"\n [src]=\"profileImageSrc()!\"\n [alt]=\"profileImageAlt()\"\n loading=\"lazy\"\n />\n } @else {\n <loro-icon\n [name]=\"avatarIconName()\"\n class=\"loro-profile-hero__avatar-icon\"\n [size]=\"avatarIconSize()\"\n [alt]=\"avatarAlt()\"\n />\n }\n </div>\n }\n\n <div class=\"loro-profile-hero__copy\">\n @if (variant() !== 'support' && eyebrow()) {\n <p class=\"loro-profile-hero__eyebrow\">\n {{ eyebrow() }}\n </p>\n }\n\n <h1 class=\"loro-profile-hero__title\">\n {{ firstName() }}\n </h1>\n\n <p class=\"loro-profile-hero__greeting\">\n {{ greeting() }}\n </p>\n </div>\n </div>\n\n @if (variant() !== 'support') {\n <div class=\"loro-profile-hero__art\" aria-hidden=\"true\">\n <loro-image\n [name]=\"parrotImageName()\"\n [alt]=\"parrotImageAlt()\"\n width=\"100%\"\n height=\"100%\"\n fit=\"contain\"\n />\n </div>\n }\n</section>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { LoroIcon, type LoroIconName } from '../../resources/loro-icon/loro-icon';\nimport { LoroImage, type LoroImageName } from '../../resources/loro-image/loro-image';\n\nexport type LoroStatCardVariant =\n | 'default'\n | 'tinted'\n | 'danger'\n | 'compare-summary'\n | 'compare-inline'\n | 'image-corner'\n | 'card-basket';\n\n@Component({\n selector: 'loro-stat-card',\n standalone: true,\n imports: [LoroIcon, LoroImage],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (variant() === 'image-corner' || variant() === 'card-basket') {\n <loro-image class=\"loro-stat-card__top-image\" [name]=\"topImage() || 'loro-despensa'\" [alt]=\"title()\" width=\"6rem\" />\n }\n <article class=\"loro-stat-card\" [class]=\"'loro-stat-card loro-stat-card--' + variant()\">\n @if (icon()) {\n <span class=\"loro-stat-card__icon\">\n <loro-icon [name]=\"icon()!\" [size]=\"iconSize()\" [alt]=\"title()\" [color]=\"variant() === 'danger' ? 'danger' : 'primary'\" />\n </span>\n }\n <div class=\"loro-stat-card__copy\">\n @if (eyebrow() || variant() === 'image-corner') {\n <p class=\"loro-stat-card__eyebrow\">{{ eyebrow() || title() }}</p>\n <h2>{{ value() || title() }}</h2>\n }\n\n @if (value() && variant() !== 'image-corner') {\n <p class=\"loro-stat-card__title\">{{ title() }}</p>\n }\n @if (description()) {\n <p class=\"loro-stat-card__description\">{{ description() }}</p>\n }\n </div>\n @if (variant() === 'card-basket') {\n <div class=\"shopping-summary-card__total\">\n <small>Total estimado</small>\n <strong>{{ total().toLocaleString('es-ES', { minimumFractionDigits: 2 }) }} €</strong>\n </div>\n }\n @if (image()) {\n <loro-image class=\"loro-stat-card__image\" [name]=\"image()!\" [alt]=\"title()\" width=\"5.8rem\" />\n }\n </article>\n\n `,\n styles: `\n :host {\n display: block;\n font-family: var(--loro-font-brand);\n }\n\n .loro-stat-card__top-image {\n display: flex;\n justify-content: center;\n pointer-events: none;\n }\n\n .loro-stat-card {\n position: relative;\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: center;\n gap: 1rem;\n min-height: 6.8rem;\n padding: 1.1rem 1.25rem;\n border: 1px solid var(--loro-border-subtle);\n border-radius: var(--loro-radius-card);\n background: var(--loro-surface-soft);\n box-shadow: var(--loro-shadow-soft);\n color: var(--loro-text);\n isolation: isolate;\n }\n\n .loro-stat-card--tinted {\n background: var(--loro-surface-tinted);\n }\n\n .loro-stat-card--danger {\n background: rgba(220, 38, 38, 0.06);\n }\n\n .loro-stat-card--compare-summary {\n grid-template-columns: 3.85rem minmax(0, 1fr);\n gap: 0.95rem;\n min-height: 6rem;\n padding: 0.95rem 1.1rem;\n border-radius: 1.35rem;\n background: var(--loro-surface);\n }\n\n .loro-stat-card--compare-inline {\n grid-template-columns: 2.5rem minmax(0, 1fr);\n gap: 0.65rem;\n min-height: 3.7rem;\n padding: 0.7rem 0.9rem;\n border-radius: 1rem;\n background: var(--loro-surface);\n box-shadow: none;\n }\n\n .loro-stat-card--image-corner {\n grid-template-columns: auto minmax(0, 1fr);\n align-items: start;\n gap: 0.85rem;\n min-height: 11.5rem;\n padding: 1.2rem 6.9rem 1.2rem 1.2rem;\n border-radius: 1.35rem;\n background: color-mix(in srgb, var(--loro-primary-500) 4%, var(--loro-surface));\n }\n\n .loro-stat-card__icon {\n position: relative;\n z-index: 1;\n display: grid;\n width: 3.7rem;\n height: 3.7rem;\n place-items: center;\n border-radius: 1rem;\n background: var(--loro-brand-tint-surface);\n }\n\n .loro-stat-card--danger .loro-stat-card__icon {\n background: rgba(220, 38, 38, 0.09);\n }\n\n .loro-stat-card--compare-summary .loro-stat-card__icon {\n width: 3.55rem;\n height: 3.55rem;\n border-radius: 1rem;\n }\n\n .loro-stat-card--compare-inline .loro-stat-card__icon {\n width: 2.5rem;\n height: 2.5rem;\n border-radius: 0.85rem;\n }\n\n .loro-stat-card--image-corner .loro-stat-card__icon {\n width: 3rem;\n height: 3rem;\n border-radius: 50%;\n }\n\n .loro-stat-card__copy {\n position: relative;\n z-index: 1;\n display: grid;\n align-content: center;\n min-width: 0;\n }\n\n h2,\n p {\n margin: 0;\n }\n\n h2 {\n color: var(--loro-text-strong);\n font-size: clamp(1.45rem, 4vw, 2.15rem);\n font-weight: 950;\n line-height: 1.05;\n overflow-wrap: anywhere;\n }\n\n .loro-stat-card__title {\n color: var(--loro-text-strong);\n font-size: 1rem;\n font-weight: 900;\n }\n\n .loro-stat-card--compare-summary h2 {\n font-size: clamp(1.25rem, 4.8vw, 1.75rem);\n line-height: 0.98;\n }\n\n .loro-stat-card--compare-summary .loro-stat-card__title {\n font-size: clamp(0.95rem, 3.6vw, 1.1rem);\n line-height: 1.05;\n }\n\n .loro-stat-card--compare-inline h2 {\n font-size: clamp(0.95rem, 1.7vw, 1.15rem);\n line-height: 1;\n }\n\n .loro-stat-card--compare-inline .loro-stat-card__title {\n color: var(--loro-muted-strong);\n font-size: 0.78rem;\n font-weight: 850;\n line-height: 1.05;\n }\n\n .loro-stat-card--image-corner h2 {\n font-size: clamp(1.45rem, 3vw, 2.1rem);\n line-height: 1.02;\n }\n\n .loro-stat-card--image-corner .loro-stat-card__title,\n .loro-stat-card--image-corner .loro-stat-card__eyebrow {\n color: var(--loro-text-strong);\n font-size: 1.05rem;\n font-weight: 900;\n line-height: 1.12;\n }\n\n .loro-stat-card__description,\n .loro-stat-card__eyebrow {\n margin-top: 0.35rem;\n color: var(--loro-muted);\n font-weight: 700;\n line-height: 1.35;\n }\n\n .loro-stat-card__image {\n align-self: end;\n }\n\n .loro-stat-card--image-corner .loro-stat-card__copy {\n align-content: start;\n gap: 0.5rem;\n }\n\n .loro-stat-card--image-corner .loro-stat-card__eyebrow {\n margin-top: 0.15rem;\n }\n\n .loro-stat-card--image-corner .loro-stat-card__description {\n margin-top: 0;\n white-space: pre-line;\n max-width: 18ch;\n }\n\n .loro-stat-card--image-corner .loro-stat-card__image {\n position: absolute;\n top: 1.55rem;\n right: 1.2rem;\n align-self: start;\n width: 4.95rem;\n pointer-events: none;\n }\n\n .shopping-summary-card__total {\n display: grid;\n justify-items: end;\n color: var(--loro-muted);\n font-weight: 750;\n}\n\n.shopping-summary-card__total strong {\n color: var(--loro-primary-700);\n font-size: 2rem;\n font-weight: 950;\n}\n\n @media (max-width: 640px) {\n .loro-stat-card {\n gap: 0.8rem;\n min-height: 5.5rem;\n padding: 0.9rem 1rem;\n }\n\n .loro-stat-card__icon {\n width: 3rem;\n height: 3rem;\n border-radius: 0.85rem;\n }\n\n h2 {\n font-size: clamp(1.2rem, 5vw, 1.55rem);\n line-height: 1;\n }\n\n .loro-stat-card__title {\n font-size: clamp(0.84rem, 3vw, 0.95rem);\n line-height: 1.15;\n }\n\n .loro-stat-card--compare-summary {\n grid-template-columns: 3.1rem minmax(0, 1fr);\n gap: 0.75rem;\n min-height: 5.35rem;\n padding: 0.8rem 0.9rem;\n border-radius: 1.2rem;\n }\n\n .loro-stat-card--compare-summary .loro-stat-card__icon {\n width: 3rem;\n height: 3rem;\n }\n\n .loro-stat-card--compare-summary h2 {\n font-size: clamp(1.1rem, 5vw, 1.45rem);\n }\n\n .loro-stat-card--compare-summary .loro-stat-card__title {\n font-size: clamp(0.88rem, 3.4vw, 1rem);\n }\n\n .loro-stat-card--compare-inline {\n grid-template-columns: 2.2rem minmax(0, 1fr);\n gap: 0.55rem;\n min-height: 3.3rem;\n padding: 0.55rem 0.75rem;\n }\n\n .loro-stat-card--compare-inline .loro-stat-card__icon {\n width: 2.2rem;\n height: 2.2rem;\n border-radius: 0.75rem;\n }\n\n .loro-stat-card--compare-inline h2 {\n font-size: 1rem;\n }\n\n .loro-stat-card--compare-inline .loro-stat-card__title {\n font-size: 0.74rem;\n }\n\n .loro-stat-card--image-corner {\n min-height: 8.25rem;\n gap: 0.65rem;\n padding: 0.95rem 4.6rem 0.95rem 0.95rem;\n border-radius: 1.15rem;\n }\n\n .loro-stat-card--image-corner .loro-stat-card__icon {\n width: 2.45rem;\n height: 2.45rem;\n }\n\n .loro-stat-card--image-corner h2 {\n font-size: clamp(1.05rem, 4.8vw, 1.65rem);\n line-height: 1;\n }\n\n .loro-stat-card--image-corner .loro-stat-card__title,\n .loro-stat-card--image-corner .loro-stat-card__eyebrow {\n font-size: 0.88rem;\n line-height: 1.05;\n }\n\n .loro-stat-card--image-corner .loro-stat-card__description {\n font-size: 0.78rem;\n line-height: 1.16;\n max-width: 16ch;\n }\n\n .loro-stat-card--image-corner .loro-stat-card__image {\n top: 1.15rem;\n right: 0.9rem;\n width: 3.55rem;\n }\n\n }\n `\n})\nexport class LoroStatCard {\n title = input.required<string>();\n value = input<string>('');\n description = input<string>('');\n eyebrow = input<string>('');\n icon = input<LoroIconName | null>(null);\n iconSize = input<number>(30);\n image = input<LoroImageName | null>(null);\n topImage = input<LoroImageName | null>(null);\n variant = input<LoroStatCardVariant>('default');\n total = input<number>(0);\n}\n","import { DecimalPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { LoroBadge } from '../loro-badge/loro-badge';\nimport { LoroImage, type LoroImageName } from '../../resources/loro-image/loro-image';\n\nexport type LoroStoreRankCardVariant = 'default' | 'compact';\n\n@Component({\n selector: 'loro-store-rank-card',\n standalone: true,\n imports: [DecimalPipe, LoroBadge, LoroImage],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <article\n class=\"loro-store-rank-card\"\n [class.loro-store-rank-card--best]=\"best()\"\n [class.loro-store-rank-card--compact]=\"variant() === 'compact'\">\n @if (variant() !== 'compact') {\n <span class=\"loro-store-rank-card__rank\">{{ rank() }}</span>\n }\n @if (logoName()) {\n <loro-image class=\"loro-store-rank-card__logo\" [name]=\"logoName()!\" [alt]=\"name()\" width=\"100%\" height=\"100%\" fit=\"contain\" />\n } @else {\n <span class=\"loro-store-rank-card__mark\">{{ name().slice(0, 3) }}</span>\n }\n @if (variant() !== 'compact') {\n <h3>{{ name() }}</h3>\n }\n <strong>{{ price() | number: '1.2-2' }} €</strong>\n @if (variant() !== 'compact') {\n <loro-badge [label]=\"best() ? 'Mejor precio' : '+' + (delta() | number: '1.2-2') + ' €'\" [variant]=\"best() ? 'success' : 'info'\" />\n }\n </article>\n `,\n styles: `\n :host {\n display: block;\n font-family: var(--loro-font-brand);\n }\n\n .loro-store-rank-card {\n position: relative;\n display: grid;\n justify-items: center;\n align-content: center;\n gap: 0.45rem;\n min-height: 10.8rem;\n padding: 1.4rem 1rem 1rem;\n border: 1px solid var(--loro-border-subtle);\n border-radius: 1rem;\n background: var(--loro-surface-soft);\n box-shadow: var(--loro-shadow-soft);\n text-align: center;\n }\n\n .loro-store-rank-card--compact {\n gap: 0.25rem;\n min-height: 4.9rem;\n padding: 0.7rem 0.8rem;\n border-radius: 0.95rem;\n box-shadow: none;\n }\n\n .loro-store-rank-card__rank {\n position: absolute;\n top: 0.85rem;\n left: 0.85rem;\n display: grid;\n width: 2rem;\n height: 2rem;\n place-items: center;\n border-radius: 50%;\n background: var(--loro-surface-muted);\n color: var(--loro-primary-700);\n font-weight: 950;\n }\n\n .loro-store-rank-card--best .loro-store-rank-card__rank {\n background: linear-gradient(135deg, var(--loro-primary-500), var(--loro-primary-700));\n color: #fff;\n }\n\n .loro-store-rank-card__logo {\n display: block;\n width: 4.5rem;\n height: 2.6rem;\n }\n\n .loro-store-rank-card--compact .loro-store-rank-card__logo {\n width: 3rem;\n height: 1.8rem;\n }\n\n .loro-store-rank-card__logo ::ng-deep img {\n width: 100%;\n height: 100%;\n object-fit: contain;\n }\n\n .loro-store-rank-card__mark {\n color: var(--loro-primary-700);\n font-size: 1.5rem;\n font-weight: 950;\n }\n\n h3,\n strong {\n margin: 0;\n color: var(--loro-text-strong);\n }\n\n h3 {\n font-size: 1.05rem;\n font-weight: 900;\n line-height: 1.12;\n overflow-wrap: anywhere;\n }\n\n strong {\n color: var(--loro-primary-700);\n font-size: clamp(1.35rem, 3vw, 1.8rem);\n font-weight: 950;\n line-height: 1;\n white-space: nowrap;\n }\n\n .loro-store-rank-card--compact strong {\n font-size: clamp(1rem, 2.1vw, 1.2rem);\n line-height: 1;\n }\n\n @media (max-width: 640px) {\n .loro-store-rank-card {\n gap: 0.35rem;\n min-height: 8.9rem;\n padding: 1rem 0.65rem 0.85rem;\n border-radius: 0.9rem;\n }\n\n .loro-store-rank-card__rank {\n top: 0.6rem;\n left: 0.6rem;\n width: 1.75rem;\n height: 1.75rem;\n font-size: 0.95rem;\n }\n\n .loro-store-rank-card__logo {\n width: 3.25rem;\n height: 2rem;\n }\n\n .loro-store-rank-card--compact {\n min-height: 4.55rem;\n padding: 0.55rem 0.65rem;\n }\n\n .loro-store-rank-card--compact .loro-store-rank-card__logo {\n width: 2.7rem;\n height: 1.6rem;\n }\n\n .loro-store-rank-card--compact strong {\n font-size: clamp(0.92rem, 3.8vw, 1.08rem);\n }\n\n h3 {\n font-size: clamp(0.9rem, 3.6vw, 1rem);\n }\n\n strong {\n font-size: clamp(1.15rem, 5vw, 1.55rem);\n }\n }\n `\n})\nexport class LoroStoreRankCard {\n rank = input.required<number>();\n name = input.required<string>();\n price = input.required<number>();\n delta = input<number>(0);\n logoName = input<LoroImageName | null>(null);\n best = input<boolean>(false);\n variant = input<LoroStoreRankCardVariant>('default');\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { LoroButton } from '../loro-button/loro-button';\nimport { LoroIcon } from '../../resources/loro-icon/loro-icon';\nimport { LoroImage, type LoroImageName } from '../../resources/loro-image/loro-image';\n\n@Component({\n selector: 'loro-summary-bar',\n standalone: true,\n imports: [LoroButton, LoroIcon, LoroImage],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <aside class=\"loro-summary-bar\">\n <div class=\"loro-summary-bar__total\">\n <small>{{ totalLabel() }}</small>\n <strong>{{ total().toLocaleString('es-ES', { minimumFractionDigits: 2 }) }} €</strong>\n @if (secondaryLabel()) {\n <loro-button\n [label]=\"secondaryLabel()\"\n icon=\"tag\"\n [iconSize]=\"20\"\n variant=\"outline\"\n [disabled]=\"secondaryDisabled()\"\n (buttonClick)=\"secondaryAction.emit()\" />\n }\n </div>\n <div class=\"loro-summary-bar__flow\" aria-hidden=\"true\">\n <loro-image [name]=\"leftImage()\" alt=\"\" width=\"5.9rem\" />\n <loro-icon name=\"arrow-right\" [size]=\"34\" alt=\"\" color=\"primary\" />\n <loro-image [name]=\"rightImage()\" alt=\"\" width=\"5.25rem\" />\n </div>\n <div class=\"loro-summary-bar__action\">\n <loro-button\n [label]=\"primaryLabel()\"\n icon=\"check\"\n [iconSize]=\"21\"\n [fullWidth]=\"true\"\n [disabled]=\"primaryDisabled()\"\n (buttonClick)=\"primaryAction.emit()\" />\n @if (helper()) {\n <small>{{ helper() }}</small>\n }\n </div>\n </aside>\n `,\n styles: `\n :host {\n display: block;\n font-family: var(--loro-font-brand);\n }\n\n .loro-summary-bar {\n display: grid;\n grid-template-columns: minmax(0, 0.95fr) minmax(0, 0.8fr) minmax(0, 1.2fr);\n align-items: center;\n gap: 1.45rem;\n width: 100%;\n min-width: 0;\n min-height: 6.75rem;\n padding: 0.75rem 1.9rem;\n box-sizing: border-box;\n border: 1px solid var(--loro-border-subtle);\n border-radius: 1rem;\n background: var(--loro-surface-soft);\n box-shadow: var(--loro-shadow-panel);\n }\n\n .loro-summary-bar__total {\n display: grid;\n grid-template-columns: minmax(7rem, auto) minmax(9.5rem, auto);\n align-items: end;\n justify-content: start;\n gap: 0.25rem 1.6rem;\n min-width: 0;\n }\n\n .loro-summary-bar__total loro-button {\n grid-row: 1 / span 2;\n grid-column: 2;\n align-self: center;\n --loro-summary-button-min-height: 2.9rem;\n --loro-summary-button-padding: 0.65rem 1rem;\n --loro-summary-button-font-size: 1rem;\n }\n\n .loro-summary-bar__action {\n display: grid;\n justify-items: stretch;\n gap: 0.45rem;\n min-width: 0;\n max-width: 100%;\n overflow: hidden;\n }\n\n small {\n color: var(--loro-muted);\n font-size: 0.92rem;\n font-weight: 750;\n line-height: 1.3;\n }\n\n strong {\n color: var(--loro-primary-700);\n font-size: 2.15rem;\n font-weight: 950;\n line-height: 1;\n white-space: nowrap;\n }\n\n .loro-summary-bar__flow {\n display: inline-grid;\n grid-template-columns: auto auto auto;\n align-items: center;\n justify-content: center;\n gap: clamp(0.55rem, 1vw, 1rem);\n min-width: 0;\n padding-inline: clamp(0.75rem, 1.8vw, 2.1rem);\n border-left: 1px solid var(--loro-border-subtle);\n color: var(--loro-primary-700);\n font-size: 2rem;\n font-weight: 900;\n }\n\n .loro-summary-bar__action loro-button {\n min-width: 0;\n --loro-summary-button-min-height: 2.65rem;\n --loro-summary-button-padding: 0.62rem 1rem;\n --loro-summary-button-font-size: 1rem;\n }\n\n .loro-summary-bar loro-button {\n --loro-button-min-height: var(--loro-summary-button-min-height);\n --loro-button-padding: var(--loro-summary-button-padding);\n --loro-button-radius: 0.55rem;\n --loro-button-font-size: var(--loro-summary-button-font-size);\n }\n\n :host ::ng-deep .loro-summary-bar loro-button .loro-button {\n max-width: 100%;\n min-width: 0;\n }\n\n :host ::ng-deep .loro-summary-bar loro-button .loro-button span {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n :host ::ng-deep .loro-summary-bar__action loro-button,\n :host ::ng-deep .loro-summary-bar__action loro-button .loro-button {\n width: 100%;\n }\n\n .loro-summary-bar__action small {\n min-width: 0;\n max-width: 100%;\n overflow-wrap: anywhere;\n text-align: center;\n }\n\n @media (max-width: 1023.88px) {\n .loro-summary-bar {\n grid-template-columns: minmax(0, 0.84fr) minmax(0, 1.16fr);\n grid-template-areas:\n 'total flow'\n 'total action';\n align-items: center;\n gap: 0.55rem 0.8rem;\n min-height: 0;\n padding: 0.85rem 0.95rem;\n border-radius: 1.15rem;\n }\n\n .loro-summary-bar__total {\n grid-area: total;\n grid-template-columns: 1fr;\n align-content: center;\n justify-items: start;\n gap: 0.36rem;\n min-width: 0;\n height: 100%;\n padding-right: 0.65rem;\n border-right: 1px solid var(--loro-border-subtle);\n }\n\n .loro-summary-bar__total loro-button {\n grid-row: auto;\n grid-column: auto;\n width: 100%;\n max-width: 9.6rem;\n --loro-summary-button-min-height: 2.2rem;\n --loro-summary-button-padding: 0.48rem 0.6rem;\n --loro-summary-button-font-size: 0.82rem;\n }\n\n .loro-summary-bar__flow {\n grid-area: flow;\n display: inline-grid;\n justify-self: center;\n width: 100%;\n max-width: 10.75rem;\n gap: 0.32rem;\n padding-inline: 0;\n border-left: 0;\n }\n\n .loro-summary-bar__flow loro-image:first-child {\n width: 4.35rem;\n }\n\n .loro-summary-bar__flow loro-image:last-child {\n width: 3.85rem;\n }\n\n .loro-summary-bar__action {\n grid-area: action;\n justify-items: stretch;\n gap: 0.28rem;\n min-width: 0;\n width: 100%;\n }\n\n .loro-summary-bar__action loro-button {\n display: block;\n width: 100%;\n min-width: 0;\n --loro-summary-button-min-height: 2.35rem;\n --loro-summary-button-padding: 0.5rem 0.55rem;\n --loro-summary-button-font-size: 0.82rem;\n }\n\n small {\n font-size: 0.82rem;\n }\n\n strong {\n font-size: clamp(1.45rem, 5.6vw, 1.9rem);\n }\n }\n\n @media (max-width: 640px) {\n .loro-summary-bar {\n grid-template-columns: minmax(0, 0.78fr) minmax(0, 1.22fr);\n gap: 0.48rem 0.62rem;\n padding: 0.78rem 0.82rem;\n }\n\n .loro-summary-bar__total loro-button {\n max-width: 8.9rem;\n --loro-summary-button-min-height: 2.1rem;\n --loro-summary-button-padding: 0.44rem 0.52rem;\n --loro-summary-button-font-size: 0.74rem;\n }\n\n .loro-summary-bar__flow loro-image:first-child {\n width: 3.45rem;\n }\n\n .loro-summary-bar__flow loro-image:last-child {\n width: 3.2rem;\n }\n\n .loro-summary-bar__flow {\n max-width: 8.45rem;\n gap: 0.2rem;\n }\n\n .loro-summary-bar__flow loro-icon {\n transform: scale(0.78);\n }\n\n .loro-summary-bar__action loro-button {\n --loro-summary-button-min-height: 2.2rem;\n --loro-summary-button-padding: 0.48rem 0.44rem;\n --loro-summary-button-font-size: 0.74rem;\n }\n\n small {\n font-size: 0.72rem;\n }\n\n strong {\n font-size: clamp(1.28rem, 7vw, 1.6rem);\n }\n }\n\n @media (max-width: 430px) {\n .loro-summary-bar {\n grid-template-columns: minmax(0, 0.72fr) minmax(0, 1.28fr);\n padding: 0.72rem;\n }\n\n .loro-summary-bar__total {\n padding-right: 0.5rem;\n }\n\n .loro-summary-bar__total loro-button {\n max-width: 7.8rem;\n --loro-summary-button-font-size: 0.68rem;\n }\n\n .loro-summary-bar__action loro-button {\n --loro-summary-button-font-size: 0.68rem;\n }\n\n .loro-summary-bar__flow {\n max-width: 7.6rem;\n }\n\n .loro-summary-bar__flow loro-image:first-child {\n width: 3rem;\n }\n\n .loro-summary-bar__flow loro-image:last-child {\n width: 2.85rem;\n }\n }\n `\n})\nexport class LoroSummaryBar {\n totalLabel = input<string>('Total estimado');\n total = input.required<number>();\n primaryLabel = input<string>('Ya lo he comprado');\n secondaryLabel = input<string>('Comparar precios');\n helper = input<string>('Los productos marcados se anadiran a tu despensa.');\n leftImage = input<LoroImageName>('loro-buy');\n rightImage = input<LoroImageName>('pantry-cabinet');\n primaryDisabled = input<boolean>(false);\n secondaryDisabled = input<boolean>(false);\n primaryAction = output<void>();\n secondaryAction = output<void>();\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { LoroIcon, type LoroIconName } from '../../resources/loro-icon/loro-icon';\n\nexport type LoroTabAlign = 'flex' | 'block';\n\nexport interface LoroTabOption {\n readonly value: string;\n readonly label: string;\n readonly icon?: LoroIconName | null;\n readonly ariaLabel?: string;\n}\n\n@Component({\n selector: 'loro-tab',\n standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div\n class=\"loro-tab\"\n role=\"tablist\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [class.loro-tab--block]=\"align() === 'block'\"\n >\n @for (option of options(); track option.value) {\n <button\n type=\"button\"\n role=\"tab\"\n class=\"loro-tab__button\"\n [class.loro-tab__button--active]=\"value() === option.value\"\n [attr.aria-selected]=\"value() === option.value\"\n [attr.aria-label]=\"option.ariaLabel || option.label\"\n (click)=\"change.emit(option.value)\"\n >\n @if (option.icon) {\n <loro-icon\n [name]=\"option.icon\"\n [size]=\"iconSize()\"\n [alt]=\"option.label\"\n [decorative]=\"true\"\n [color]=\"value() === option.value ? 'primary' : 'muted'\"\n />\n }\n <span>{{ option.label }}</span>\n </button>\n }\n </div>\n `,\n styles: `\n :host {\n display: block;\n font-family: var(--loro-font-brand);\n }\n\n .loro-tab {\n display: grid;\n grid-template-columns: repeat(var(--loro-tab-count, 2), minmax(0, 1fr));\n min-height: var(--loro-tab-min-height, 2.8rem);\n overflow: hidden;\n border-bottom: 1px solid var(--loro-border-subtle);\n background: transparent;\n }\n\n .loro-tab__button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n min-width: 0;\n min-height: 100%;\n padding: var(--loro-tab-button-padding, 0.58rem 0.95rem 0.72rem);\n border: 0;\n border-bottom: 2px solid transparent;\n color: var(--loro-muted-strong);\n font: inherit;\n font-size: var(--loro-tab-font-size, 0.95rem);\n font-weight: 900;\n line-height: var(--loro-tab-line-height, 1.15);\n background: transparent;\n cursor: pointer;\n transition:\n color 140ms ease,\n border-color 140ms ease,\n background 140ms ease;\n }\n\n .loro-tab--block .loro-tab__button {\n flex-direction: column;\n gap: 0.35rem;\n }\n\n .loro-tab__button--active {\n border-bottom-color: var(--loro-primary-500);\n color: var(--loro-primary-500);\n }\n\n .loro-tab__button:hover {\n background: color-mix(in srgb, var(--loro-primary-500) 4%, transparent);\n }\n\n .loro-tab__button:focus-visible {\n outline: 3px solid color-mix(in srgb, var(--loro-primary-500) 28%, transparent);\n outline-offset: -2px;\n border-radius: 0.35rem;\n }\n `,\n host: {\n '[style.--loro-tab-count]': 'options().length',\n },\n})\nexport class LoroTab {\n options = input.required<ReadonlyArray<LoroTabOption>>();\n value = input.required<string>();\n ariaLabel = input('');\n align = input<LoroTabAlign>('flex');\n iconSize = input(18);\n change = output<string>();\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n output,\n} from '@angular/core';\n\nimport { LoroIcon, type LoroIconColor, type LoroIconName } from '../../resources/loro-icon/loro-icon';\n\nexport type LoroAlertVariant =\n | 'neutral'\n | 'info'\n | 'success'\n | 'warning'\n | 'error';\n\nexport type LoroAlertAnnouncement =\n | 'auto'\n | 'polite'\n | 'assertive'\n | 'off';\n\n@Component({\n selector: 'loro-alert',\n standalone: true,\n imports: [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 /** Visible heading. Keep it short and specific. */\n readonly title = input<string>('');\n\n /** Plain text body for common inline alerts. Rich content can still be projected. */\n readonly message = input<string>('');\n\n /** Semantic visual treatment. Meaning must never depend on colour alone. */\n readonly variant = input<LoroAlertVariant>('info');\n\n /** Controls live-region behaviour for dynamically inserted messages. */\n readonly announcement = input<LoroAlertAnnouncement>('auto');\n\n /** Allows programmatic focus without adding the alert to the Tab order. */\n readonly focusable = input<boolean>(false);\n\n /** Shows the built-in action button when a label is supplied. */\n readonly actionLabel = input<string>('');\n\n /** Shows a close button and emits dismissed when activated. */\n readonly dismissible = input<boolean>(false);\n\n /** Accessible name for the icon-only close button. */\n readonly dismissLabel = input<string>('Cerrar aviso');\n\n /** Emitted by the built-in action button. */\n readonly action = output<void>();\n\n /** Emitted by the close button. The parent decides whether to remove the alert. */\n readonly dismissed = output<void>();\n\n protected readonly resolvedIcon = computed<LoroIconName>(() => {\n switch (this.variant()) {\n case 'success':\n return 'tick-circle';\n\n case 'warning':\n case 'error':\n return 'shield-alert';\n\n case 'neutral':\n case 'info':\n default:\n return 'info';\n }\n });\n\n protected readonly resolvedIconColor = computed<LoroIconColor>(() =>\n this.variant() === 'error' ? 'danger' : 'currentColor',\n );\n\n protected readonly role = computed<'status' | 'alert' | null>(() => {\n const announcement = this.resolvedAnnouncement();\n\n if (announcement === 'off') {\n return null;\n }\n\n return announcement === 'assertive'\n ? 'alert'\n : 'status';\n });\n\n protected readonly ariaLive = computed<\n 'polite' | 'assertive' | null\n >(() => {\n const announcement = this.resolvedAnnouncement();\n\n return announcement === 'off'\n ? null\n : announcement;\n });\n\n private readonly resolvedAnnouncement = computed<\n 'polite' | 'assertive' | 'off'\n >(() => {\n const announcement = this.announcement();\n\n if (announcement !== 'auto') {\n return announcement;\n }\n\n return this.variant() === 'error'\n ? 'assertive'\n : 'polite';\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 <span class=\"loro-alert__icon\" aria-hidden=\"true\">\n <loro-icon\n [name]=\"resolvedIcon()\"\n [size]=\"20\"\n [alt]=\"''\"\n [color]=\"resolvedIconColor()\"\n />\n </span>\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 <ng-content />\n </div>\n\n @if (actionLabel()) {\n <div class=\"loro-alert__actions\">\n <button\n type=\"button\"\n class=\"loro-alert__action\"\n (click)=\"action.emit()\"\n >\n {{ actionLabel() }}\n </button>\n </div>\n }\n\n <ng-content select=\"[loroAlertActions]\" />\n </div>\n\n @if (dismissible()) {\n <button\n type=\"button\"\n class=\"loro-alert__dismiss\"\n [attr.aria-label]=\"dismissLabel()\"\n (click)=\"dismissed.emit()\"\n >\n <loro-icon\n class=\"loro-alert__dismiss-icon\"\n name=\"plus\"\n [size]=\"20\"\n [alt]=\"''\"\n [color]=\"'currentColor'\"\n aria-hidden=\"true\"\n />\n </button>\n }\n</aside>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { LoroIcon } from '../../resources/loro-icon/loro-icon';\n\n@Component({\n selector: 'loro-notification',\n standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\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>\n `,\n styles: `\n :host {\n display: inline-flex;\n font-family: var(--loro-font-brand);\n }\n\n .loro-notification {\n position: relative;\n display: grid;\n width: var(--loro-notification-size, 2.75rem);\n height: var(--loro-notification-size, 2.75rem);\n place-items: center;\n border: 0;\n border-radius: 50%;\n background: transparent;\n color: var(--loro-primary-700);\n cursor: pointer;\n transition: background 150ms ease, transform 150ms ease;\n -webkit-tap-highlight-color: transparent;\n }\n\n .loro-notification:hover,\n .loro-notification--active {\n background: transparent;\n }\n\n .loro-notification:focus-visible {\n outline: 2px solid rgba(108, 60, 255, 0.35);\n outline-offset: 2px;\n }\n\n .loro-notification:active {\n transform: scale(0.97);\n }\n\n .loro-notification--disabled {\n cursor: not-allowed;\n opacity: 0.55;\n transform: none;\n }\n\n .loro-notification__badge {\n position: absolute;\n top: 0.18rem;\n right: 0.1rem;\n display: grid;\n min-width: 1.15rem;\n height: 1.15rem;\n place-items: center;\n padding-inline: 0.25rem;\n border: 2px solid var(--loro-surface);\n border-radius: 999px;\n background: var(--loro-primary-500);\n color: #fff;\n font-size: 0.68rem;\n font-weight: 950;\n line-height: 1;\n box-sizing: border-box;\n }\n `\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","import { ChangeDetectionStrategy, Component, input, output, signal } from '@angular/core';\nimport { LoroIcon, type LoroIconName } from '../../resources/loro-icon/loro-icon';\n\n@Component({\n selector: 'loro-notification-row',\n standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\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 <span class=\"loro-notification-row-shell__delete\" aria-hidden=\"true\">\n <loro-icon name=\"trash-white\" [size]=\"22\" alt=\"\" [decorative]=\"true\" color=\"inverse\" />\n <span>Eliminar</span>\n </span>\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>\n `,\n styles: `\n :host {\n display: block;\n font-family: var(--loro-font-brand);\n }\n\n .loro-notification-row-shell {\n position: relative;\n overflow: hidden;\n background: transparent;\n touch-action: pan-y;\n }\n\n .loro-notification-row-shell__delete {\n position: absolute;\n inset: 0 0 0 auto;\n display: grid;\n width: 8.75rem;\n align-content: center;\n justify-items: center;\n gap: 0.45rem;\n background: #ef4444;\n color: var(--loro-text-inverse);\n opacity: 0;\n transition:\n opacity 180ms ease,\n transform 180ms ease;\n }\n\n .loro-notification-row-shell--dragging .loro-notification-row-shell__delete,\n .loro-notification-row-shell--armed .loro-notification-row-shell__delete,\n .loro-notification-row-shell--removing .loro-notification-row-shell__delete {\n opacity: 1;\n }\n\n .loro-notification-row {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto auto;\n align-items: center;\n gap: 0.85rem;\n width: 100%;\n padding: 0.82rem 0.95rem;\n border: 0;\n border-bottom: 1px solid var(--loro-border-subtle);\n background: var(--loro-surface);\n color: var(--loro-text);\n text-align: left;\n cursor: pointer;\n will-change: transform;\n transition:\n background 150ms ease,\n transform 220ms cubic-bezier(0.2, 0.8, 0.2, 1),\n opacity 180ms ease;\n }\n\n .loro-notification-row-shell--dragging .loro-notification-row {\n transition: background 150ms ease;\n }\n\n .loro-notification-row-shell--removing .loro-notification-row {\n opacity: 0.18;\n transform: translate3d(-100%, 0, 0) !important;\n }\n\n :host:last-child .loro-notification-row {\n border-bottom-color: transparent;\n }\n\n .loro-notification-row:hover {\n background: var(--loro-surface);\n }\n\n .loro-notification-row:focus-visible {\n position: relative;\n z-index: 1;\n outline: 2px solid rgba(108, 60, 255, 0.32);\n outline-offset: -2px;\n }\n\n .loro-notification-row__icon {\n display: grid;\n width: 2.5rem;\n height: 2.5rem;\n place-items: center;\n border-radius: 0.8rem;\n background: transparent;\n }\n\n .loro-notification-row__content {\n display: grid;\n gap: 0.2rem;\n min-width: 0;\n }\n\n .loro-notification-row__meta {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: baseline;\n gap: 0.75rem;\n }\n\n strong {\n overflow: hidden;\n color: var(--loro-text-strong);\n font-size: 0.92rem;\n font-weight: 950;\n line-height: 1.2;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n small,\n .loro-notification-row__message {\n color: var(--loro-muted);\n font-size: 0.82rem;\n font-weight: 700;\n line-height: 1.35;\n }\n\n .loro-notification-row__dot {\n width: 0.5rem;\n height: 0.5rem;\n border-radius: 50%;\n background: var(--loro-primary-500);\n }\n\n .loro-notification-row__delete-button {\n display: grid;\n width: 2.25rem;\n height: 2.25rem;\n place-items: center;\n border: 0;\n border-radius: 0.7rem;\n background: color-mix(in srgb, var(--loro-danger-text) 8%, transparent);\n cursor: pointer;\n opacity: 0;\n transition:\n background 150ms ease,\n opacity 150ms ease,\n transform 150ms ease;\n }\n\n .loro-notification-row:hover .loro-notification-row__delete-button,\n .loro-notification-row:focus-visible .loro-notification-row__delete-button,\n .loro-notification-row__delete-button:focus-visible {\n opacity: 1;\n }\n\n .loro-notification-row__delete-button:hover,\n .loro-notification-row__delete-button:focus-visible {\n background: color-mix(in srgb, var(--loro-danger-text) 14%, transparent);\n outline: 0;\n transform: translateY(-1px);\n }\n\n @media (max-width: 1023.88px) {\n .loro-notification-row {\n grid-template-columns: auto minmax(0, 1fr) auto;\n padding: 0.82rem 0.8rem;\n }\n\n .loro-notification-row__delete-button {\n display: none;\n }\n }\n `\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","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { LoroIcon, type LoroIconName } from '../../resources/loro-icon/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 standalone: true,\n imports: [LoroIcon, LoroNotificationRow],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\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 @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 type=\"button\" (click)=\"markAllRead.emit()\">{{ markAllLabel() }}</button>\n } @else if (showClearAll()) {\n <button type=\"button\" (click)=\"clearAll.emit()\">{{ clearAllLabel() }}</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 </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>\n `,\n styles: `\n :host {\n display: block;\n width: min(100%, 24rem);\n min-height: 0;\n font-family: var(--loro-font-brand);\n }\n\n .loro-notification-panel {\n overflow: hidden;\n display: grid;\n grid-template-rows: auto minmax(0, 1fr);\n width: 100%;\n height: 100%;\n min-height: 0;\n isolation: isolate;\n border: 1px solid var(--loro-border-subtle);\n border-radius: 1rem;\n background: var(--loro-surface);\n box-shadow: var(--loro-shadow-panel);\n color: var(--loro-text);\n }\n\n .loro-notification-panel__handle {\n display: none;\n }\n\n .loro-notification-panel__header {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: center;\n gap: 1rem;\n padding: 0.9rem 1rem;\n border-bottom: 1px solid var(--loro-border-subtle);\n }\n\n .loro-notification-panel__actions {\n display: inline-flex;\n align-items: center;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: 0.75rem;\n }\n\n h2 {\n margin: 0;\n color: var(--loro-text-strong);\n font-size: 1rem;\n font-weight: 950;\n }\n\n button {\n border: 0;\n background: transparent;\n color: var(--loro-primary-700);\n font: inherit;\n font-size: 0.82rem;\n font-weight: 850;\n cursor: pointer;\n }\n\n .loro-notification-panel__list {\n display: grid;\n align-content: start;\n min-height: 0;\n overflow-y: auto;\n overflow-x: hidden;\n overscroll-behavior-y: contain;\n -webkit-overflow-scrolling: touch;\n background: var(--loro-surface);\n }\n\n .loro-notification-panel__empty {\n display: grid;\n min-height: 18rem;\n place-items: center;\n align-content: center;\n gap: 0.75rem;\n padding: 2rem;\n text-align: center;\n background: var(--loro-surface);\n }\n\n .loro-notification-panel__empty-icon {\n display: grid;\n width: 6rem;\n height: 6rem;\n place-items: center;\n border-radius: 50%;\n background: rgba(108, 60, 255, 0.06);\n }\n\n .loro-notification-panel__empty strong {\n color: var(--loro-text-strong);\n font-weight: 950;\n }\n\n .loro-notification-panel__empty p {\n max-width: 16rem;\n margin: 0;\n color: var(--loro-muted);\n font-weight: 700;\n line-height: 1.45;\n }\n\n @media (min-width: 1024px) {\n .loro-notification-panel__list {\n max-height: min(28rem, 60vh);\n }\n }\n\n @media (max-width: 1023.88px) {\n :host {\n display: grid;\n width: 100%;\n height: 100%;\n min-height: 0;\n }\n\n .loro-notification-panel,\n .loro-notification-panel--sheet {\n width: 100%;\n height: 100%;\n min-height: 0;\n border-radius: 1.15rem 1.15rem 0 0;\n background: var(--loro-surface);\n }\n\n .loro-notification-panel--sheet {\n display: grid;\n min-height: 0;\n grid-template-rows: auto auto minmax(0, 1fr);\n }\n\n .loro-notification-panel--sheet .loro-notification-panel__list {\n min-height: 0;\n height: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n overscroll-behavior-y: contain;\n -webkit-overflow-scrolling: touch;\n background: var(--loro-surface);\n touch-action: pan-y;\n }\n\n .loro-notification-panel--sheet .loro-notification-panel__header {\n position: sticky;\n top: 0;\n z-index: 2;\n background: var(--loro-surface);\n align-items: center;\n grid-template-columns: minmax(0, 1fr) auto;\n gap: 0.65rem;\n }\n\n .loro-notification-panel--sheet.loro-notification-panel--empty .loro-notification-panel__header {\n border-bottom: 0;\n }\n\n .loro-notification-panel--sheet .loro-notification-panel__empty {\n min-height: 0;\n height: 100%;\n place-items: center;\n align-content: center;\n padding: 1rem 1.15rem 1.4rem;\n background: var(--loro-surface);\n }\n\n .loro-notification-panel--sheet .loro-notification-panel__handle {\n display: block;\n width: 3rem;\n height: 0.25rem;\n margin: 0.5rem auto 0.2rem;\n border-radius: 999px;\n background: rgba(98, 88, 130, 0.35);\n }\n\n .loro-notification-panel--sheet .loro-notification-panel__header {\n padding: 0.7rem 0.95rem;\n }\n\n .loro-notification-panel__actions {\n display: inline-flex;\n width: auto;\n justify-content: flex-end;\n gap: 0.5rem;\n }\n\n .loro-notification-panel__actions button {\n white-space: nowrap;\n }\n }\n `\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","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\" fit=\"contain\" />\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/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 standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.loro-toast-host--inline]': \"position() === 'inline'\",\n },\n template: `\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 }\n `,\n styles: `\n :host {\n z-index: 1000;\n display: block;\n font-family: var(--loro-font-brand);\n pointer-events: none;\n }\n\n :host(.loro-toast-host--inline) {\n width: 100%;\n }\n\n .loro-toast {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: center;\n gap: 0.75rem;\n width: min(24rem, calc(100vw - 2rem));\n min-height: 3.6rem;\n padding: 0.85rem 1rem;\n border: 1px solid var(--loro-border-subtle);\n border-radius: 0.8rem;\n background: var(--loro-surface);\n color: var(--loro-text-strong);\n box-shadow: var(--loro-shadow-panel);\n font-weight: 800;\n pointer-events: auto;\n }\n\n .loro-toast--top-right {\n position: fixed;\n top: 1rem;\n right: 1rem;\n }\n\n .loro-toast--bottom-right {\n position: fixed;\n right: 1rem;\n bottom: 1rem;\n }\n\n .loro-toast--bottom-center {\n position: fixed;\n bottom: 1rem;\n left: 50%;\n transform: translateX(-50%);\n }\n\n .loro-toast--inline {\n position: static;\n width: 100%;\n transform: none;\n }\n\n .loro-toast__icon {\n display: grid;\n width: 1.8rem;\n height: 1.8rem;\n place-items: center;\n }\n\n .loro-toast__spinner {\n width: 1.35rem;\n height: 1.35rem;\n border: 2px solid rgba(108, 60, 255, 0.18);\n border-top-color: var(--loro-primary-500);\n border-radius: 50%;\n animation: loro-toast-spin 850ms linear infinite;\n }\n\n button {\n border: 0;\n background: transparent;\n color: var(--loro-muted);\n font: inherit;\n cursor: pointer;\n }\n\n @keyframes loro-toast-spin {\n to {\n transform: rotate(360deg);\n }\n }\n\n @media (max-width: 1023.88px) {\n .loro-toast:not(.loro-toast--inline) {\n right: 1rem;\n bottom: calc(env(safe-area-inset-bottom, 0px) + 1rem);\n left: 1rem;\n width: auto;\n transform: none;\n }\n }\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","import { ChangeDetectionStrategy, Component, computed, input, model, output, signal } from '@angular/core';\nimport type { FormValueControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\nimport { LoroIcon, type LoroIconName } from '../../resources/loro-icon/loro-icon';\n\nexport type LoroAuthFieldState = 'default' | 'error';\n\nlet nextLoroAuthFieldId = 0;\n\n@Component({\n selector: 'loro-auth-field',\n standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <label\n class=\"loro-auth-field\"\n [class.loro-auth-field--selected]=\"selected()\"\n [class.loro-auth-field--error]=\"hasError()\"\n >\n <span class=\"sr-only\">{{ label() }}</span>\n <span class=\"loro-auth-field__icon\">\n <loro-icon [name]=\"icon()\" [size]=\"28\" [alt]=\"label()\" />\n </span>\n <input\n class=\"loro-auth-field__input\"\n [type]=\"resolvedType()\"\n [attr.autocomplete]=\"autocomplete()\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [attr.aria-invalid]=\"hasError() ? 'true' : null\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [required]=\"required()\"\n [attr.aria-describedby]=\"hasError() && errorText() ? errorId : null\"\n (input)=\"updateValue(($any($event.target).value ?? '').toString())\"\n (blur)=\"markAsTouched()\"\n />\n @if (showToggle()) {\n <button\n type=\"button\"\n class=\"loro-auth-field__toggle\"\n (click)=\"toggleVisibility()\"\n [attr.aria-label]=\"passwordVisible() ? 'Ocultar contenido' : 'Mostrar contenido'\"\n >\n <loro-icon name=\"eye\" [size]=\"26\" alt=\"Mostrar contenido\" />\n </button>\n }\n </label>\n @if (hasError() && errorText()) {\n <span class=\"loro-auth-field__error\" [id]=\"errorId\">\n <loro-icon name=\"shield-alert\" [size]=\"15\" color=\"danger\" [decorative]=\"true\" />\n <span>{{ errorText() }}</span>\n </span>\n }\n `,\n styles: `\n :host {\n display: grid;\n gap: 0.35rem;\n }\n\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n padding: 0;\n }\n\n .loro-auth-field {\n display: grid;\n grid-template-columns: 2rem minmax(0, 1fr) auto;\n align-items: center;\n border: 1px solid var(--loro-border-strong);\n border-radius: 0.72rem;\n background: var(--loro-surface);\n padding: 0.48rem 0.65rem;\n box-shadow: var(--loro-shadow-soft);\n color: var(--loro-text);\n font-family: var(--loro-font-brand);\n transition:\n border-color 180ms ease,\n box-shadow 180ms ease;\n }\n\n .loro-auth-field:hover,\n .loro-auth-field:focus-within,\n .loro-auth-field--selected {\n border-color: var(--loro-auth-field-active-border, var(--loro-primary-500));\n box-shadow:\n var(--loro-shadow-soft),\n 0 0 0 3px color-mix(in srgb, var(--loro-primary-500) 14%, transparent);\n }\n\n .loro-auth-field--error {\n border-color: color-mix(in srgb, var(--loro-danger-text) 30%, var(--loro-border-strong));\n background: color-mix(in srgb, var(--loro-danger-surface) 34%, var(--loro-surface));\n box-shadow:\n var(--loro-shadow-soft),\n 0 0 0 3px color-mix(in srgb, var(--loro-danger-text) 7%, transparent);\n }\n\n .loro-auth-field--error:hover,\n .loro-auth-field--error:focus-within {\n border-color: color-mix(in srgb, var(--loro-danger-text) 44%, var(--loro-border-strong));\n box-shadow:\n var(--loro-shadow-soft),\n 0 0 0 3px color-mix(in srgb, var(--loro-danger-text) 10%, transparent);\n }\n\n .loro-auth-field__icon {\n display: grid;\n place-items: center;\n width: 24px;\n }\n\n .loro-auth-field__icon loro-icon {\n transform: scale(0.62);\n }\n\n .loro-auth-field__input {\n width: 100%;\n border: 0;\n outline: none;\n background: transparent;\n color: var(--loro-text);\n font: inherit;\n font-size: 0.72rem;\n line-height: 1.3;\n }\n\n .loro-auth-field__input::placeholder {\n color: var(--loro-muted);\n }\n\n .loro-auth-field__toggle {\n border: 0;\n background: transparent;\n padding: 0;\n color: inherit;\n line-height: 0;\n cursor: pointer;\n }\n\n .loro-auth-field__toggle loro-icon {\n transform: scale(0.62);\n }\n\n .loro-auth-field__error {\n display: inline-grid;\n grid-template-columns: auto minmax(0, 1fr);\n align-items: start;\n gap: 0.35rem;\n color: var(--loro-danger-text);\n font-size: 0.72rem;\n font-weight: 750;\n line-height: 1.3;\n }\n `,\n})\nexport class LoroAuthField implements FormValueControl<string> {\n icon = input.required<LoroIconName>();\n label = input.required<string>();\n placeholder = input.required<string>();\n value = model<string>('');\n type = input<'text' | 'email' | 'password'>('text');\n autocomplete = input<string>('off');\n selected = input<boolean>(false);\n state = input<LoroAuthFieldState>('default');\n errorMessage = input<string>('');\n errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n invalid = input(false);\n disabled = input(false);\n readonly = input(false);\n required = input(false);\n touched = model(false);\n valueChange = output<string>();\n\n protected readonly errorId = `loro-auth-field-error-${++nextLoroAuthFieldId}`;\n protected readonly errorText = computed(() => this.errorMessage().trim() || this.errors()[0]?.message?.trim() || '');\n protected readonly hasError = computed(\n () => this.state() === 'error' || this.errorText().length > 0 || (this.invalid() && this.touched()),\n );\n protected readonly passwordVisible = signal(false);\n\n protected showToggle() {\n return this.type() === 'password';\n }\n\n protected resolvedType() {\n return this.type() === 'password' && this.passwordVisible() ? 'text' : this.type();\n }\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 protected toggleVisibility() {\n this.passwordVisible.update((value) => !value);\n }\n}\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 standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\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>\n `,\n styles: `\n :host {\n display: block;\n font-family: var(--loro-font-brand);\n }\n\n .loro-checkbox {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr);\n align-items: start;\n gap: 0.65rem;\n color: var(--loro-muted);\n cursor: pointer;\n }\n\n .loro-checkbox--disabled {\n opacity: 0.62;\n cursor: not-allowed;\n }\n\n .loro-checkbox__native {\n position: absolute;\n opacity: 0;\n pointer-events: none;\n }\n\n .loro-checkbox__box {\n position: relative;\n width: 1.15rem;\n height: 1.15rem;\n margin-top: 0.08rem;\n border: 1.5px solid color-mix(in srgb, var(--loro-primary-500) 78%, #ffffff 22%);\n border-radius: 0.35rem;\n background: var(--loro-surface);\n box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--loro-surface) 70%, transparent);\n transition:\n border-color 160ms ease,\n box-shadow 160ms ease,\n background 160ms ease;\n }\n\n .loro-checkbox--checked .loro-checkbox__box {\n background: linear-gradient(180deg, #8f6bff 0%, #6d3dff 100%);\n border-color: var(--loro-primary-500);\n box-shadow:\n inset 0 0 0 1px color-mix(in srgb, #ffffff 18%, transparent),\n 0 0 0 3px color-mix(in srgb, var(--loro-primary-500) 12%, transparent);\n }\n\n .loro-checkbox--checked .loro-checkbox__box::after {\n position: absolute;\n inset: 0;\n display: grid;\n place-items: center;\n color: #fff;\n font-size: 0.8rem;\n font-weight: 900;\n line-height: 1;\n content: '✓';\n }\n\n .loro-checkbox--invalid .loro-checkbox__box {\n border-color: color-mix(in srgb, var(--loro-danger-text) 44%, var(--loro-primary-500));\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--loro-danger-text) 10%, transparent);\n }\n\n .loro-checkbox__content {\n display: grid;\n gap: 0.22rem;\n min-width: 0;\n }\n\n .loro-checkbox__label {\n color: inherit;\n font-size: var(--loro-checkbox-label-font-size, 0.9rem);\n font-weight: var(--loro-checkbox-label-font-weight, 750);\n line-height: var(--loro-checkbox-label-line-height, 1.35);\n }\n\n .loro-checkbox__helper,\n .loro-checkbox__error {\n font-size: 0.78rem;\n font-weight: 700;\n line-height: 1.3;\n }\n\n .loro-checkbox__helper {\n color: var(--loro-muted);\n }\n\n .loro-checkbox__error {\n color: var(--loro-danger-text);\n }\n `,\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","import { ChangeDetectionStrategy, Component, input, model, output } from '@angular/core';\nimport type { FormValueControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\nimport { LoroIcon } from '../../resources/loro-icon/loro-icon';\n\nexport interface LoroDropdownOption {\n label: string;\n value: string;\n}\n\n@Component({\n selector: 'loro-dropdown',\n standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\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>\n `,\n styles: `\n :host {\n display: block;\n font-family: var(--loro-font-brand);\n }\n\n .loro-dropdown {\n display: grid;\n gap: 0.55rem;\n }\n\n .loro-dropdown__label {\n color: var(--loro-muted-strong);\n font-size: 0.95rem;\n font-weight: 800;\n }\n\n .loro-dropdown__control {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: center;\n min-height: 3.4rem;\n padding: 0 1rem;\n border: 1px solid var(--loro-border-subtle);\n border-radius: var(--loro-radius-input);\n background: var(--loro-surface);\n }\n\n select {\n width: 100%;\n border: 0;\n outline: 0;\n appearance: none;\n background: transparent;\n color: var(--loro-text-strong);\n font: inherit;\n font-weight: 700;\n }\n `\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","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { LoroIcon, type LoroIconName } from '../../resources/loro-icon/loro-icon';\n\n@Component({\n selector: 'loro-filter-chip',\n standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\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>\n `,\n styles: `\n :host {\n display: inline-flex;\n font-family: var(--loro-font-brand);\n }\n\n .loro-filter-chip {\n display: inline-flex;\n align-items: center;\n gap: 0.45rem;\n min-height: 2.55rem;\n padding: 0.55rem 1rem;\n border: 1px solid var(--loro-border-subtle);\n border-radius: var(--loro-radius-pill);\n background: var(--loro-surface);\n color: var(--loro-muted-strong);\n font: inherit;\n font-size: 0.9rem;\n font-weight: 850;\n cursor: pointer;\n white-space: nowrap;\n }\n\n .loro-filter-chip--active {\n border-color: transparent;\n background: linear-gradient(135deg, var(--loro-primary-500), var(--loro-primary-700));\n color: #fff;\n box-shadow: var(--loro-shadow-button);\n }\n\n @media (max-width: 640px) {\n .loro-filter-chip {\n gap: 0.4rem;\n min-height: 2.3rem;\n padding: 0.48rem 0.78rem;\n font-size: clamp(0.78rem, 2.9vw, 0.9rem);\n }\n }\n\n @media (max-width: 430px) {\n .loro-filter-chip {\n gap: 0.34rem;\n min-height: 2.2rem;\n padding: 0.42rem 0.7rem;\n font-size: clamp(0.74rem, 2.8vw, 0.84rem);\n }\n }\n `\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","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 standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\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>\n `,\n styles: `\n :host {\n display: block;\n font-family: var(--loro-font-brand);\n }\n\n .loro-segmented-control {\n display: grid;\n grid-template-columns: repeat(var(--loro-segmented-count, 2), minmax(0, 1fr));\n min-height: 3.15rem;\n padding: 0.18rem;\n border: 1px solid var(--loro-border-subtle);\n border-radius: 0.75rem;\n background: var(--loro-surface-muted);\n box-shadow: var(--loro-shadow-soft);\n }\n\n .loro-segmented-control__button {\n border: 0;\n border-radius: 0.58rem;\n background: transparent;\n color: var(--loro-muted-strong);\n font: inherit;\n font-size: clamp(0.95rem, 3vw, 1rem);\n font-weight: 850;\n line-height: 1.15;\n text-wrap: balance;\n cursor: pointer;\n }\n\n .loro-segmented-control__button--active {\n background: var(--loro-surface);\n color: var(--loro-primary-700);\n box-shadow: 0 6px 18px rgba(34, 25, 73, 0.08);\n }\n\n @media (max-width: 640px) {\n .loro-segmented-control {\n min-height: 3rem;\n }\n\n .loro-segmented-control__button {\n padding-inline: 0.6rem;\n }\n }\n `,\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","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { LoroBadge } from '../../components/loro-badge/loro-badge';\nimport { LoroButton } from '../../components/loro-button/loro-button';\nimport { LoroIcon, type LoroIconName } from '../../resources/loro-icon/loro-icon';\n\n@Component({\n selector: 'loro-select',\n standalone: true,\n imports: [LoroBadge, LoroButton, LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\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 [label]=\"actionLabel()\" variant=\"outline\" (buttonClick)=\"action.emit()\" />\n }\n </div>\n </article>\n `,\n styles: `\n :host {\n display: block;\n font-family: var(--loro-font-brand);\n }\n\n .loro-select {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: center;\n gap: 1.25rem;\n padding: 1rem;\n border-top: 1px solid var(--loro-border-subtle);\n background: transparent;\n }\n\n .loro-select--selected {\n border: 1px solid rgba(108, 60, 255, 0.28);\n border-radius: 1rem;\n background: rgba(108, 60, 255, 0.04);\n }\n\n .loro-select__icon {\n display: grid;\n width: 5.2rem;\n height: 5.2rem;\n place-items: center;\n border: 1px solid var(--loro-border-subtle);\n border-radius: 1rem;\n background: var(--loro-surface-muted);\n }\n\n h3,\n p,\n small {\n margin: 0;\n }\n\n h3 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.55rem;\n color: var(--loro-text-strong);\n font-size: 1.15rem;\n font-weight: 900;\n }\n\n p {\n margin-top: 0.35rem;\n color: var(--loro-muted-strong);\n font-weight: 700;\n }\n\n small,\n .loro-select__status {\n color: var(--loro-muted);\n font-weight: 700;\n }\n\n .loro-select__side {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 1rem;\n }\n\n @media (max-width: 680px) {\n .loro-select {\n grid-template-columns: 5rem minmax(0, 1fr);\n border: 1px solid var(--loro-border-subtle);\n border-radius: 1rem;\n }\n\n .loro-select__side {\n grid-column: 2;\n justify-content: flex-start;\n }\n }\n `\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","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 standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\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>\n `,\n styles: `\n :host {\n display: block;\n font-family: var(--loro-font-brand);\n }\n\n .loro-text-area {\n display: grid;\n gap: 0.55rem;\n }\n\n .loro-text-area__label {\n color: var(--loro-muted-strong);\n font-size: 0.95rem;\n font-weight: 800;\n }\n\n .loro-text-area__control {\n display: grid;\n border: 1px solid var(--loro-border-subtle);\n border-radius: var(--loro-radius-input);\n background: var(--loro-surface);\n overflow: hidden;\n }\n\n textarea {\n width: 100%;\n min-height: 8rem;\n resize: vertical;\n border: 0;\n outline: 0;\n padding: 1rem;\n background: transparent;\n color: var(--loro-text-strong);\n font: inherit;\n font-weight: 650;\n }\n\n textarea::placeholder {\n color: var(--loro-muted);\n }\n\n .loro-text-area__counter {\n justify-self: end;\n padding: 0 1rem 0.75rem;\n color: var(--loro-muted);\n font-size: 0.85rem;\n font-weight: 700;\n }\n `\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","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { LoroIcon } from '../../resources/loro-icon/loro-icon';\n\n@Component({\n selector: 'loro-upload',\n standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <label class=\"loro-upload\" [class.loro-upload--compact]=\"compact()\">\n @if (label()) {\n <span class=\"loro-upload__label\">{{ label() }} @if (optional()) {<small>Opcional</small>}</span>\n }\n <span class=\"loro-upload__drop\">\n <loro-icon name=\"paperclip\" [size]=\"28\" alt=\"Adjuntar archivo\" color=\"primary\" />\n <span class=\"loro-upload__copy\">\n <span>{{ title() }}</span>\n @if (description()) {\n <small>{{ description() }}</small>\n }\n </span>\n @if (compact()) {\n <loro-icon name=\"chevron-right\" [size]=\"22\" alt=\"Seleccionar\" color=\"primary\" />\n }\n <input type=\"file\" [accept]=\"accept()\" (change)=\"fileSelected.emit($any($event.target).files?.[0] ?? null)\" />\n </span>\n </label>\n `,\n styles: `\n :host {\n display: block;\n font-family: var(--loro-font-brand);\n }\n\n .loro-upload {\n display: grid;\n gap: 0.7rem;\n }\n\n .loro-upload__label {\n display: flex;\n gap: 0.75rem;\n color: var(--loro-text-strong);\n font-weight: 900;\n }\n\n .loro-upload__label small {\n color: var(--loro-muted);\n font-weight: 700;\n }\n\n .loro-upload__drop {\n position: relative;\n display: grid;\n grid-template-columns: auto minmax(0, 1fr);\n align-items: center;\n gap: 0.85rem;\n min-height: 4.4rem;\n padding: 1rem;\n border: 1px dashed var(--loro-border-strong);\n border-radius: var(--loro-radius-input);\n background: var(--loro-surface);\n color: var(--loro-muted-strong);\n cursor: pointer;\n }\n\n .loro-upload--compact .loro-upload__drop {\n grid-template-columns: auto minmax(0, 1fr) auto;\n border-style: solid;\n }\n\n .loro-upload__copy {\n display: grid;\n gap: 0.15rem;\n font-weight: 800;\n line-height: 1.25;\n }\n\n .loro-upload__copy small {\n color: var(--loro-muted);\n font-weight: 650;\n }\n\n input {\n position: absolute;\n inset: 0;\n opacity: 0;\n cursor: pointer;\n }\n `\n})\nexport class LoroUpload {\n label = input<string>('Adjuntar captura');\n title = input<string>('Haz clic para seleccionar un archivo o arrastra y suelta aqui');\n description = input<string>('Formatos: PNG, JPG, GIF, PDF (max. 10 MB)');\n accept = input<string>('image/*,.pdf');\n optional = input<boolean>(true);\n compact = input<boolean>(false);\n fileSelected = output<File | null>();\n}\n","import { DOCUMENT } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal } from '@angular/core';\n\nexport type LoroModalSize = 'sm' | 'md' | 'lg';\nexport type LoroModalPlacement = 'center' | 'sheet';\n\n@Component({\n selector: 'loro-modal',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (open()) {\n <div class=\"loro-modal\" [class]=\"'loro-modal loro-modal--' + placement()\" role=\"presentation\">\n @if (showBackdrop()) {\n <button\n type=\"button\"\n class=\"loro-modal__backdrop\"\n aria-label=\"Close modal\"\n [style.opacity]=\"backdropOpacity()\"\n (click)=\"closeOnBackdrop() && requestClose()\"></button>\n }\n <section\n #dialog\n class=\"loro-modal__dialog\"\n [class]=\"'loro-modal__dialog loro-modal__dialog--' + size()\"\n [class.loro-modal__dialog--dragging]=\"sheetDragging()\"\n [style.--loro-modal-sheet-drag-y]=\"sheetDragOffsetCss()\"\n [style.--loro-modal-sheet-rest-top]=\"sheetRestTop() || sheetRestTopCss()\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"ariaLabel() || title()\"\n (touchstart)=\"onSheetTouchStart($event, dialog)\"\n (touchmove)=\"onSheetTouchMove($event)\"\n (touchend)=\"onSheetTouchEnd()\"\n (touchcancel)=\"onSheetTouchEnd()\">\n @if (title() || dismissible()) {\n <header class=\"loro-modal__header\">\n @if (title()) {\n <h2>{{ title() }}</h2>\n }\n @if (dismissible()) {\n <button type=\"button\" class=\"loro-modal__close\" aria-label=\"Cerrar modal\" (click)=\"requestClose()\">\n X\n </button>\n }\n </header>\n }\n\n <div\n class=\"loro-modal__content\"\n [class.loro-modal__content--flush]=\"placement() === 'sheet' && !title()\">\n <ng-content />\n </div>\n\n <ng-content select=\"[loro-modal-actions]\" />\n </section>\n </div>\n }\n `,\n styles: `\n :host {\n display: contents;\n font-family: var(--loro-font-brand);\n }\n\n .loro-modal {\n position: fixed;\n inset: 0;\n z-index: 5000;\n display: grid;\n place-items: center;\n width: 100vw;\n height: 100vh;\n height: var(--app-fill-height, var(--app-viewport-height, 100dvh));\n padding: 1.25rem;\n isolation: isolate;\n }\n\n .loro-modal__backdrop {\n position: absolute;\n inset: 0;\n border: 0;\n background: rgba(20, 14, 39, 0.42);\n backdrop-filter: blur(5px);\n -webkit-backdrop-filter: blur(5px);\n cursor: pointer;\n }\n\n .loro-modal__dialog {\n position: relative;\n z-index: 1;\n display: grid;\n grid-template-rows: auto minmax(0, 1fr) auto;\n width: min(100%, 32rem);\n max-height: min(42rem, calc(var(--app-fill-height, var(--app-viewport-height, 100dvh)) - 2.5rem));\n overflow: hidden;\n border: 1px solid var(--loro-border-subtle);\n border-radius: 1.25rem;\n background: var(--loro-surface);\n box-shadow: var(--loro-shadow-panel);\n color: var(--loro-text);\n transition: transform 220ms cubic-bezier(0.22, 1, 0.36, 1);\n }\n\n .loro-modal__dialog--sm {\n width: min(100%, 24rem);\n }\n\n .loro-modal__dialog--lg {\n width: min(100%, 44rem);\n }\n\n .loro-modal__header {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: center;\n gap: 1rem;\n padding: 1rem 1.15rem;\n border-bottom: 1px solid var(--loro-border-subtle);\n }\n\n h2 {\n margin: 0;\n color: var(--loro-text-strong);\n font-size: 1.08rem;\n font-weight: 950;\n line-height: 1.2;\n }\n\n .loro-modal__close {\n display: grid;\n width: 2.25rem;\n height: 2.25rem;\n place-items: center;\n border: 0;\n border-radius: 50%;\n background: rgba(108, 60, 255, 0.08);\n color: var(--loro-text-strong);\n font: inherit;\n font-weight: 950;\n cursor: pointer;\n }\n\n .loro-modal__content {\n min-height: 0;\n overflow: auto;\n overscroll-behavior: contain;\n -webkit-overflow-scrolling: touch;\n padding: 1.15rem;\n }\n\n ::ng-deep [loro-modal-actions] {\n display: flex;\n justify-content: flex-end;\n gap: 0.75rem;\n padding: 0.9rem 1.15rem 1.15rem;\n border-top: 1px solid var(--loro-border-subtle);\n }\n\n @media (max-width: 1023.88px) {\n .loro-modal {\n align-items: end;\n padding: 0;\n }\n\n .loro-modal--sheet {\n place-items: end stretch;\n }\n\n .loro-modal__dialog,\n .loro-modal__dialog--sm,\n .loro-modal__dialog--md,\n .loro-modal__dialog--lg {\n width: 100%;\n max-height: calc(var(--app-fill-height, var(--app-viewport-height, 100dvh)) - 1rem);\n border-radius: 1.75rem 1.75rem 0 0;\n }\n\n .loro-modal--sheet .loro-modal__dialog,\n .loro-modal--sheet .loro-modal__dialog--sm,\n .loro-modal--sheet .loro-modal__dialog--md,\n .loro-modal--sheet .loro-modal__dialog--lg {\n --loro-modal-sheet-rest-top: max(\n calc(var(--app-fill-height, 100dvh) * 0.3),\n calc(env(safe-area-inset-top, 0px) + 0.65rem)\n );\n\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n top: max(\n var(--loro-modal-sheet-rest-top),\n calc(env(safe-area-inset-top, 0px) + 0.65rem)\n );\n width: 100%;\n max-height: none;\n background: var(--loro-surface);\n overscroll-behavior-y: contain;\n transform: translate3d(0, var(--loro-modal-sheet-drag-y, 0px), 0);\n }\n\n .loro-modal--sheet .loro-modal__dialog--dragging {\n transition: none;\n }\n\n .loro-modal--sheet .loro-modal__content {\n display: grid;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n overscroll-behavior-y: contain;\n padding: 0.85rem;\n background: var(--loro-surface);\n touch-action: pan-y;\n }\n\n .loro-modal--sheet .loro-modal__content--flush {\n padding: 0;\n }\n\n .loro-modal--center {\n align-items: center;\n padding: 1rem;\n }\n\n .loro-modal--center .loro-modal__dialog {\n border-radius: 1.15rem;\n }\n\n ::ng-deep [loro-modal-actions] {\n flex-direction: column-reverse;\n padding: 0.7rem 0.9rem max(0.85rem, env(safe-area-inset-bottom, 0px));\n background: var(--loro-surface);\n }\n }\n\n @media (min-width: 1024px) {\n .loro-modal {\n place-items: center;\n padding: 2rem;\n }\n\n .loro-modal__backdrop {\n background: rgba(7, 10, 18, 0.62);\n backdrop-filter: blur(10px);\n -webkit-backdrop-filter: blur(10px);\n }\n\n .loro-modal--center .loro-modal__dialog,\n .loro-modal--sheet .loro-modal__dialog {\n position: relative;\n top: auto;\n right: auto;\n bottom: auto;\n left: auto;\n max-height: min(46rem, calc(var(--app-fill-height, var(--app-viewport-height, 100dvh)) - 4rem));\n border-radius: 1.5rem;\n }\n\n .loro-modal__dialog--sm {\n width: min(100%, 28rem);\n }\n\n .loro-modal__dialog--md {\n width: min(100%, 36rem);\n }\n\n .loro-modal__dialog--lg {\n width: min(100%, 60rem);\n }\n }\n `,\n})\nexport class LoroModal {\n private readonly document = inject(DOCUMENT);\n private dragStartY = 0;\n private dragStartTop = 0;\n\n open = input<boolean>(false);\n title = input<string>('');\n ariaLabel = input<string>('');\n size = input<LoroModalSize>('md');\n placement = input<LoroModalPlacement>('center');\n dismissible = input<boolean>(true);\n sheetDragToClose = input<boolean>(true);\n sheetRestTop = input<string>('');\n showBackdrop = input<boolean>(true);\n closeOnBackdrop = input<boolean>(true);\n modalClose = output<void>();\n\n protected readonly sheetDragging = signal(false);\n private readonly sheetTop = signal<number | null>(null);\n protected readonly sheetRestTopCss = computed(() =>\n this.isSheetInteractionEnabled() ? `${this.collapsedSheetTop()}px` : null\n );\n protected readonly sheetDragOffsetCss = computed(() => {\n if (!this.isSheetInteractionEnabled()) {\n return null;\n }\n\n return `${Math.max(0, this.currentSheetTop() - this.collapsedSheetTop())}px`;\n });\n protected readonly backdropOpacity = computed(() => {\n if (!this.isSheetInteractionEnabled()) {\n return '1';\n }\n\n const collapsedTop = this.collapsedSheetTop();\n const progress = (this.currentSheetTop() - collapsedTop) / Math.max(1, this.maxSheetTop() - collapsedTop);\n\n return String(0.42 - Math.min(0.18, progress * 0.18));\n });\n\n constructor() {\n effect((onCleanup) => {\n if (this.open()) {\n this.resetSheetState();\n this.lockDocumentScroll(onCleanup);\n }\n });\n }\n\n protected requestClose(): void {\n this.resetSheetState();\n this.modalClose.emit();\n }\n\n protected onSheetTouchStart(event: TouchEvent, dialog: HTMLElement): void {\n if (!this.isSheetInteractionEnabled() || event.touches.length !== 1 || !this.isDragZone(event, dialog)) {\n return;\n }\n\n this.sheetDragging.set(true);\n this.dragStartY = event.touches[0].clientY;\n this.dragStartTop = this.currentSheetTop();\n event.preventDefault();\n }\n\n protected onSheetTouchMove(event: TouchEvent): void {\n if (!this.sheetDragging() || !this.isSheetInteractionEnabled() || event.touches.length !== 1) {\n return;\n }\n\n const deltaY = Math.max(0, event.touches[0].clientY - this.dragStartY);\n const nextTop = this.dragStartTop + deltaY;\n\n this.sheetTop.set(this.clampSheetTop(nextTop));\n event.preventDefault();\n }\n\n protected onSheetTouchEnd(): void {\n if (!this.sheetDragging()) {\n return;\n }\n\n this.sheetDragging.set(false);\n\n const currentTop = this.currentSheetTop();\n const collapsedTop = this.collapsedSheetTop();\n\n if (currentTop >= collapsedTop + 64) {\n this.requestClose();\n return;\n }\n\n this.sheetTop.set(collapsedTop);\n }\n\n private resetSheetState(): void {\n this.sheetDragging.set(false);\n this.sheetTop.set(this.isSheetInteractionEnabled() ? this.collapsedSheetTop() : null);\n }\n\n private currentSheetTop(): number {\n return this.sheetTop() ?? this.collapsedSheetTop();\n }\n\n private clampSheetTop(value: number): number {\n return Math.min(Math.max(value, this.collapsedSheetTop()), this.maxSheetTop());\n }\n\n private collapsedSheetTop(): number {\n const safeTop = this.safeAreaInsetTop();\n return Math.max(safeTop + 12, Math.min(88, Math.round(this.viewportHeight() * 0.1)));\n }\n\n private maxSheetTop(): number {\n return this.viewportHeight() - 56;\n }\n\n private viewportHeight(): number {\n const win = this.document.defaultView;\n\n if (!win) {\n return 844;\n }\n\n const visualHeight = win.visualViewport?.height ?? 0;\n const layoutHeight = Math.max(win.innerHeight, this.document.documentElement.clientHeight);\n\n if (visualHeight > 0 && visualHeight < layoutHeight * 0.75) {\n return visualHeight;\n }\n\n return Math.max(visualHeight, layoutHeight);\n }\n\n private safeAreaInsetTop(): number {\n const win = this.document.defaultView;\n\n if (!win) {\n return 0;\n }\n\n return Number.parseFloat(\n win.getComputedStyle(this.document.documentElement).getPropertyValue('env(safe-area-inset-top)'),\n ) || 0;\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 private isSheetInteractionEnabled(): boolean {\n return (\n this.placement() === 'sheet' &&\n (this.dismissible() || this.sheetDragToClose()) &&\n !!this.document.defaultView?.matchMedia('(max-width: 1023.88px)').matches\n );\n }\n\n private isDragZone(event: TouchEvent, dialog: HTMLElement): boolean {\n const touch = event.touches[0];\n\n if (!touch) {\n return false;\n }\n\n const target = event.target instanceof Element ? event.target : null;\n\n if (target?.closest('.loro-notification-panel__handle, .loro-modal__header')) {\n return true;\n }\n\n const dialogTop = dialog.getBoundingClientRect().top;\n return touch.clientY - dialogTop <= 52;\n }\n}\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/components/footer/footer.ts","../../../projects/loro-ui/src/lib/components/components/footer/footer.html","../../../projects/loro-ui/src/lib/components/components/loro-accordion/loro-accordion.ts","../../../projects/loro-ui/src/lib/components/components/loro-accordion/loro-accordion.html","../../../projects/loro-ui/src/lib/assets/loro-assets.generated.ts","../../../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/services/loro-haptics.service.ts","../../../projects/loro-ui/src/lib/components/components/loro-button/loro-button.constants.ts","../../../projects/loro-ui/src/lib/components/components/loro-button/loro-button.ts","../../../projects/loro-ui/src/lib/components/components/loro-button/loro-button.html","../../../projects/loro-ui/src/lib/components/components/loro-app-nav/loro-app-nav.ts","../../../projects/loro-ui/src/lib/components/components/loro-app-nav/loro-app-nav.html","../../../projects/loro-ui/src/lib/components/components/loro-assistant-card/loro-assistant-card.ts","../../../projects/loro-ui/src/lib/components/components/loro-assistant-card/loro-assistant-card.html","../../../projects/loro-ui/src/lib/components/components/loro-auth-social-button/loro-auth-social-button.ts","../../../projects/loro-ui/src/lib/components/components/loro-auth-social-button/loro-auth-social-button.html","../../../projects/loro-ui/src/lib/components/components/loro-badge/loro-badge.ts","../../../projects/loro-ui/src/lib/components/components/loro-badge/loro-badge.html","../../../projects/loro-ui/src/lib/components/components/loro-card/loro-card.ts","../../../projects/loro-ui/src/lib/components/components/loro-card/loro-card.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-toggle/loro-toggle.ts","../../../projects/loro-ui/src/lib/components/forms/loro-toggle/loro-toggle.html","../../../projects/loro-ui/src/lib/components/components/loro-card-nav/loro-card-nav.ts","../../../projects/loro-ui/src/lib/components/components/loro-card-nav/loro-card-nav.html","../../../projects/loro-ui/src/lib/components/components/loro-dashboard-card/loro-dashboard-card.ts","../../../projects/loro-ui/src/lib/components/components/loro-dashboard-card/loro-dashboard-card.html","../../../projects/loro-ui/src/lib/components/components/loro-divider/loro-divider.ts","../../../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/components/loro-product-row/loro-product-row.ts","../../../projects/loro-ui/src/lib/components/components/loro-product-row/loro-product-row.html","../../../projects/loro-ui/src/lib/components/components/loro-product-section/loro-product-section.ts","../../../projects/loro-ui/src/lib/components/components/loro-product-section/loro-product-section.html","../../../projects/loro-ui/src/lib/components/components/loro-profile-card/loro-profile-card.ts","../../../projects/loro-ui/src/lib/components/components/loro-profile-card/loro-profile-card.html","../../../projects/loro-ui/src/lib/components/components/loro-profile-hero/loro-profile-hero.ts","../../../projects/loro-ui/src/lib/components/components/loro-profile-hero/loro-profile-hero.html","../../../projects/loro-ui/src/lib/components/components/loro-stat-card/loro-stat-card.ts","../../../projects/loro-ui/src/lib/components/components/loro-stat-card/loro-stat-card.html","../../../projects/loro-ui/src/lib/components/components/loro-store-rank-card/loro-store-rank-card.ts","../../../projects/loro-ui/src/lib/components/components/loro-store-rank-card/loro-store-rank-card.html","../../../projects/loro-ui/src/lib/components/components/loro-summary-bar/loro-summary-bar.ts","../../../projects/loro-ui/src/lib/components/components/loro-summary-bar/loro-summary-bar.html","../../../projects/loro-ui/src/lib/components/components/loro-tab/loro-tab.ts","../../../projects/loro-ui/src/lib/components/components/loro-tab/loro-tab.html","../../../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-auth-field/loro-auth-field.ts","../../../projects/loro-ui/src/lib/components/forms/loro-auth-field/loro-auth-field.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-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-upload/loro-upload.ts","../../../projects/loro-ui/src/lib/components/forms/loro-upload/loro-upload.html","../../../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/resources/loro-icon/loro-icon.ts","../../../projects/loro-ui/src/lib/components/resources/loro-icon/loro-icon.html","../../../projects/loro-ui/src/juligc99-loro-ui.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'loro-footer',\n \n templateUrl: './footer.html',\n styleUrl: './footer.scss',standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class Footer {}\n","<footer class=\"loro-footer\">\n <div class=\"loro-footer__meta\">\n <span class=\"loro-footer__dot\"></span>\n <p>© 2026 Al Loro App. Todos los derechos reservados.</p>\n </div>\n <div class=\"loro-footer__links\">\n <a href=\"#\">Términos</a>\n <a href=\"#\">Privacidad</a>\n <a href=\"#\">Soporte</a>\n </div>\n </footer>","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { LoroIcon, type LoroIconName } from '@loro-ui/components/resources/loro-icon';\n\n@Component({\n selector: 'loro-accordion',\n \n templateUrl: './loro-accordion.html',\n styleUrl: './loro-accordion.scss',standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoroAccordion {\n title = input.required<string>();\n icon = input<LoroIconName | null>('help');\n expanded = input<boolean>(false);\n expandedChange = output<boolean>();\n}\n","<article class=\"loro-accordion\" [class.loro-accordion--open]=\"expanded()\">\n <button type=\"button\" class=\"loro-accordion__header\" (click)=\"expandedChange.emit(!expanded())\">\n @if (icon()) {\n <span class=\"loro-accordion__icon\">\n <loro-icon [name]=\"icon()!\" [size]=\"24\" [alt]=\"title()\" color=\"primary\" />\n </span>\n }\n <span class=\"loro-accordion__title\">{{ title() }}</span>\n <loro-icon [name]=\"expanded() ? 'chevron-up' : 'chevron-down'\" [size]=\"22\" alt=\"Expandir\" color=\"primary\" />\n </button>\n @if (expanded()) {\n <div class=\"loro-accordion__body\">\n <ng-content />\n </div>\n }\n </article>","/* 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] 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} 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} 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_IMAGE_LEGACY_NAMES,\n LORO_IMAGE_PATHS,\n type LoroImageAssetName,\n type LoroImageName,\n} from '../../../assets/loro-assets.generated';\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 \n templateUrl: './loro-image.html',\n styleUrl: './loro-image.scss',standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroImage {\n name = input.required<LoroImageName>();\n alt = input<string>('');\n size = input<string>('');\n width = input<string>('100%');\n height = input<string>('auto');\n fit = input<'contain' | 'cover'>('contain');\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 resolvedWidth = computed(() => this.size() || this.width());\n protected readonly resolvedHeight = computed(() => this.size() || this.height());\n}\n","<img\n class=\"loro-image\"\n [src]=\"src()\"\n [alt]=\"altText()\"\n [style.width]=\"resolvedWidth()\"\n [style.height]=\"resolvedHeight()\"\n [style.object-fit]=\"fit()\"\n [style.display]=\"'block'\"\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","/**\r\n * LoroButton Constants\r\n *\r\n * Default values, valid options, and configuration constants for the LoroButton component.\r\n * Update these to maintain consistency across all button usage.\r\n */\r\n\r\nimport type { LoroButtonColor, LoroButtonHtmlType, LoroButtonIconMode, LoroButtonSize, LoroButtonType, LoroButtonVariant, LoroButtonWidth } from './loro-button.model';\r\n\r\n/**\r\n * Default input values for LoroButton\r\n */\r\nexport const LORO_BUTTON_DEFAULTS = {\r\n text: '',\r\n label: '',\r\n variant: 'primary' as const,\r\n type: 'primary' as const,\r\n color: 'primary' as const,\r\n size: 'md' as const,\r\n fullWidth: false,\r\n buttonWidth: 'fit-content' as const,\r\n disabled: false,\r\n loading: false,\r\n selected: false,\r\n htmlType: 'button' as const,\r\n iconMode: 'none' as const,\r\n socialMobileCompact: true,\r\n iconSize: 23,\r\n iconButtonSize: null,\r\n iconColor: '',\r\n} as const;\r\n\r\n/**\r\n * Valid options for button variants\r\n */\r\nexport const LORO_BUTTON_VARIANTS: readonly LoroButtonVariant[] = [\r\n 'primary',\r\n 'outline',\r\n 'ghost',\r\n 'danger',\r\n 'soft',\r\n 'social',\r\n 'action',\r\n 'navigation',\r\n];\r\n\r\n/**\r\n * Valid options for button types\r\n */\r\nexport const LORO_BUTTON_TYPES: readonly LoroButtonType[] = ['primary', 'secondary', 'tertiary'];\r\n\r\n/**\r\n * Valid options for button colors\r\n */\r\nexport const LORO_BUTTON_COLORS: readonly LoroButtonColor[] = ['primary', 'secondary', 'tertiary', 'danger'];\r\n\r\n/**\r\n * Valid options for button sizes\r\n */\r\nexport const LORO_BUTTON_SIZES: readonly LoroButtonSize[] = ['sm', 'md', 'lg'];\r\n\r\n/**\r\n * Valid options for button widths\r\n */\r\nexport const LORO_BUTTON_WIDTHS: readonly LoroButtonWidth[] = ['fit-content', 'full'];\r\n\r\n/**\r\n * Valid options for icon modes\r\n */\r\nexport const LORO_BUTTON_ICON_MODES: readonly LoroButtonIconMode[] = ['none', 'with-icon', 'only-icon'];\r\n\r\n/**\r\n * Valid options for HTML button types\r\n */\r\nexport const LORO_BUTTON_HTML_TYPES: readonly LoroButtonHtmlType[] = ['button', 'submit', 'reset'];\r\n\r\n/**\r\n * CSS class names used by LoroButton (BEM notation)\r\n */\r\nexport const LORO_BUTTON_CLASSES = {\r\n container: 'loro-button',\r\n variant: (variant: LoroButtonVariant) => `loro-button--${variant}`,\r\n size: (size: LoroButtonSize) => `loro-button--${size}`,\r\n color: (color: LoroButtonColor) => `loro-button--${color}-color`,\r\n width: (width: LoroButtonWidth) => width === 'full' ? 'loro-button--full' : undefined,\r\n state: {\r\n disabled: 'loro-button--disabled',\r\n loading: 'loro-button--loading',\r\n selected: 'loro-button--selected',\r\n },\r\n elements: {\r\n label: 'loro-button__label',\r\n spinner: 'loro-button__spinner',\r\n srStatus: 'loro-button__sr-status',\r\n },\r\n} as const;\r\n\r\n/**\r\n * Accessible labels for button states\r\n */\r\nexport const LORO_BUTTON_ARIA_LABELS = {\r\n loading: 'Loading',\r\n disabled: 'Button is disabled',\r\n} as const;\r\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport {\n LoroIcon,\n type LoroIconColor,\n type LoroIconName,\n type LoroIconRenderMode,\n type LoroIconSize,\n} from '@loro-ui/components/resources/loro-icon';\nimport type {\n LoroButtonColor,\n LoroButtonHtmlType,\n LoroButtonIconMode,\n LoroButtonSize,\n LoroButtonType,\n LoroButtonVariant,\n LoroButtonWidth,\n} from './loro-button.model';\n\n// Re-export types for backward compatibility and public API\nexport type { LoroButtonColor, LoroButtonHtmlType, LoroButtonIconMode, LoroButtonSize, LoroButtonType, LoroButtonVariant, LoroButtonWidth };\nexport { LORO_BUTTON_CLASSES, LORO_BUTTON_COLORS, LORO_BUTTON_DEFAULTS, LORO_BUTTON_ICON_MODES, LORO_BUTTON_SIZES, LORO_BUTTON_TYPES, LORO_BUTTON_VARIANTS } from './loro-button.constants';\n\n/**\n * LoroButton Component\n *\n * A versatile, accessible button component with multiple variants, sizes, and states.\n * Follows Angular 21 best practices with signals, OnPush change detection, and semantic HTML.\n *\n * @example\n * ```html\n * <loro-button\n * [text]=\"'Click me'\"\n * variant=\"primary\"\n * size=\"md\"\n * (change)=\"onButtonClick()\"\n * />\n * ```\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]': \"resolvedButtonWidth() === 'full'\",\n },\n templateUrl: './loro-button.html',\n styleUrl: './loro-button.scss',\n})\nexport class LoroButton {\n label = input<string>('');\n text = input<string>('');\n icon = input<LoroIconName | LoroButtonIconMode | null>(null);\n iconContent = input<LoroIconName | null>(null);\n iconMode = input<LoroButtonIconMode>('none');\n iconSize = input<LoroIconSize>(23);\n iconButtonSize = input<LoroIconSize | null>(null);\n iconColor = input<LoroIconColor | ''>('');\n socialMobileCompact = input<boolean>(true);\n selected = input<boolean>(false);\n variant = input<LoroButtonVariant>('primary');\n typeButton = input<LoroButtonType>('primary');\n color = input<LoroButtonColor>('primary');\n size = input<LoroButtonSize>('md');\n fullWidth = input<boolean>(false);\n buttonWidth = input<LoroButtonWidth>('fit-content');\n disabled = input<boolean>(false);\n loading = input<boolean>(false);\n type = input<'button' | 'submit' | 'reset'>('button');\n formId = input<string>('');\n ariaLabel = input<string>('');\n ariaDescription = input<string>('');\n\n buttonClick = output<void>();\n change = output<void>();\n sanChange = output<void>();\n\n protected readonly resolvedText = computed(() => this.text() || this.label());\n protected readonly resolvedIcon = computed<LoroIconName | null>(() => {\n const icon = this.icon();\n\n if (this.isIconMode(icon)) return this.iconContent();\n\n return this.iconContent() ?? icon;\n });\n protected readonly resolvedIconMode = computed<LoroButtonIconMode>(() => {\n const icon = this.icon();\n\n if (this.isIconMode(icon)) return icon;\n if (this.iconMode() !== 'none') return this.iconMode();\n\n return this.resolvedIcon() ? 'with-icon' : 'none';\n });\n protected readonly resolvedButtonWidth = computed<LoroButtonWidth>(() =>\n this.fullWidth() ? 'full' : this.buttonWidth(),\n );\n protected readonly resolvedIconButtonSize = computed<string>(() => {\n const customSize = this.iconButtonSize();\n\n if (typeof customSize === 'number' && customSize > 0) return `${customSize}px`;\n if (typeof customSize === 'string' && customSize.trim().length > 0) return customSize;\n\n switch (this.size()) {\n case 'sm':\n return '44px';\n case 'lg':\n return '60px';\n default:\n return '48px';\n }\n });\n protected readonly resolvedTypeButton = computed<LoroButtonType>(() => {\n const variantMap: Partial<Record<LoroButtonVariant, LoroButtonType>> = {\n outline: 'secondary',\n ghost: 'tertiary',\n soft: 'tertiary',\n action: 'tertiary',\n navigation: 'tertiary',\n };\n\n return variantMap[this.variant()] ?? this.typeButton();\n });\n protected readonly resolvedColor = computed<LoroButtonColor>(() =>\n this.variant() === 'danger' ? 'danger' : this.color(),\n );\n protected readonly showIcon = computed(() => !this.loading() && this.resolvedIconMode() !== 'none' && !!this.resolvedIcon());\n protected readonly resolvedAriaLabel = computed(\n () =>\n this.ariaLabel() || (this.resolvedIconMode() === 'only-icon' ? this.resolvedText() : null),\n );\n protected readonly resolvedIconColor = computed<LoroIconColor>(\n () => this.iconColor() || this.defaultIconColor(),\n );\n protected readonly resolvedIconRenderMode = computed<LoroIconRenderMode>(() => {\n const icon = this.resolvedIcon();\n\n return icon === 'apple' || icon === 'google' ? 'origin' : 'mask';\n });\n protected readonly isDisabled = computed(() => this.disabled() || this.loading());\n protected readonly showSpinner = computed(() => this.loading() && this.resolvedIconMode() !== 'only-icon');\n protected readonly loadingAriaLabel = computed(\n () => this.ariaDescription() || `Cargando ${this.resolvedText() || 'contenido'}`,\n );\n\n protected emitChange(): void {\n if (this.isDisabled()) {\n return;\n }\n\n this.buttonClick.emit();\n this.change.emit();\n this.sanChange.emit();\n }\n\n protected defaultIconColor(): LoroIconColor {\n const isStrongButton =\n this.variant() !== 'navigation' &&\n this.variant() !== 'action' &&\n this.resolvedTypeButton() === 'primary' &&\n this.resolvedColor() !== 'danger';\n\n return isStrongButton ? 'inverse' : this.resolvedColor() === 'danger' ? 'danger' : 'primary';\n }\n\n private isIconMode(value: LoroIconName | LoroButtonIconMode | null): value is LoroButtonIconMode {\n return value === 'none' || value === 'with-icon' || value === 'only-icon';\n }\n}\n","<button\n [type]=\"type()\"\n [attr.form]=\"formId() || null\"\n class=\"loro-button\"\n [class]=\"'loro-button loro-button--' + resolvedTypeButton()\"\n [class.loro-button--outline]=\"variant() === 'outline'\"\n [class.loro-button--ghost]=\"variant() === 'ghost'\"\n [class.loro-button--soft]=\"variant() === 'soft'\"\n [class.loro-button--social]=\"variant() === 'social'\"\n [class.loro-button--action]=\"variant() === 'action'\"\n [class.loro-button--navigation]=\"variant() === 'navigation'\"\n [class.loro-button--danger]=\"variant() === 'danger'\"\n [class.loro-button--secondary-color]=\"resolvedColor() === 'secondary'\"\n [class.loro-button--tertiary-color]=\"resolvedColor() === 'tertiary'\"\n [class.loro-button--danger-color]=\"resolvedColor() === 'danger'\"\n [class.loro-button--sm]=\"size() === 'sm'\"\n [class.loro-button--lg]=\"size() === 'lg'\"\n [class.loro-button--full]=\"resolvedButtonWidth() === 'full'\"\n [class.loro-button--icon-only]=\"resolvedIconMode() === 'only-icon'\"\n [class.loro-button--social-mobile-compact]=\"socialMobileCompact()\"\n [class.loro-button--selected]=\"selected()\"\n [class.loro-button--loading]=\"loading()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"resolvedAriaLabel()\"\n [attr.aria-description]=\"ariaDescription() || null\"\n [attr.aria-busy]=\"loading()\"\n [style.--loro-button-icon-size]=\"resolvedIconButtonSize()\"\n (click)=\"emitChange()\"\n>\n @if (showIcon()) {\n <loro-icon\n [name]=\"resolvedIcon()!\"\n [size]=\"iconSize()\"\n [alt]=\"resolvedText()\"\n [color]=\"resolvedIconColor()\"\n [renderMode]=\"resolvedIconRenderMode()\"\n />\n }\n\n @if (showSpinner()) {\n <span class=\"loro-button__spinner\" aria-hidden=\"true\"></span>\n <span class=\"loro-button__sr-status\" aria-live=\"polite\">{{ loadingAriaLabel() }}</span>\n }\n\n @if (resolvedIconMode() !== 'only-icon') {\n <span class=\"loro-button__label\">{{ resolvedText() }}</span>\n }\n</button>\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output, signal } from '@angular/core';\nimport { Toolbar, ToolbarWidget } from '@angular/aria/toolbar';\n\nimport type { LoroIconName } from '@loro-ui/components/resources/loro-icon';\nimport { LoroIcon } from '@loro-ui/components/resources/loro-icon';\nimport { LoroImage } from '../../resources/loro-image/loro-image';\nimport { LoroHapticsService } from '../../../services/loro-haptics.service';\nimport { LoroButton } from '../loro-button/loro-button';\n\nexport interface LoroAppNavItem {\n id: string;\n label: string;\n icon: LoroIconName;\n active?: boolean;\n badge?: string | number | null;\n disabled?: boolean;\n}\n\nexport interface LoroAppNavClick {\n item: LoroAppNavItem;\n section: 'main' | 'utility';\n}\n\nconst DEFAULT_MAIN_ITEMS: LoroAppNavItem[] = [\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\nconst DEFAULT_UTILITY_ITEMS: LoroAppNavItem[] = [\n { id: 'settings', label: 'Ajustes', icon: 'settings' },\n { id: 'logout', label: 'Cerrar sesión', icon: 'logout' },\n];\n\n@Component({\n selector: 'loro-app-nav',\n standalone: true,\n imports: [Toolbar, ToolbarWidget, LoroImage, LoroButton, LoroIcon],\n templateUrl: './loro-app-nav.html',\n styleUrl: './loro-app-nav.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroAppNav {\n private readonly haptics = inject(LoroHapticsService);\n private readonly draggedMobileIndex = signal<number | null>(null);\n private readonly mobilePointerActive = signal(false);\n private activePointerId: number | null = null;\n private suppressNextMobileClick = false;\n\n items = input<LoroAppNavItem[]>(DEFAULT_MAIN_ITEMS);\n utilityItems = input<LoroAppNavItem[]>(DEFAULT_UTILITY_ITEMS);\n ariaLabel = input<string>('Navegación principal');\n showUtilityItems = input<boolean>(true);\n compactDesktop = input<boolean>(false);\n\n itemClick = output<LoroAppNavItem>();\n utilityItemClick = output<LoroAppNavItem>();\n navItemClick = output<LoroAppNavClick>();\n\n protected readonly desktopItems = computed(() => this.items().filter((item) => item.id !== 'scan'));\n protected readonly mobileItems = computed(() => this.items().slice(0, 5));\n protected readonly mobileVisualSlotCount = computed(() => this.mobileItems().length);\n\n private readonly selectedMobileIndex = computed(() => {\n const index = this.mobileItems().findIndex((item) => item.active);\n return index >= 0 ? index : 0;\n });\n\n protected readonly mobileSliderPosition = computed(() => this.mobileItemIndexToVisualSlot(this.selectedMobileIndex()));\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: LoroAppNavItem): void {\n if (item.disabled) {\n return;\n }\n\n this.emitMainItem(item, true);\n }\n\n protected onMobileItemClick(item: LoroAppNavItem): void {\n if (this.suppressNextMobileClick) {\n this.suppressNextMobileClick = false;\n return;\n }\n\n this.onMainItemClick(item);\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 index = this.getNearestEnabledMobileIndex(this.getMobileVisualSlotPosition(event.clientX, nav));\n if (index === null) {\n this.releaseMobilePointer(nav, event.pointerId);\n return;\n }\n\n this.draggedMobileIndex.set(index);\n this.haptics.selection();\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 const index = this.getNearestEnabledMobileIndex(slotPosition);\n\n if (index !== null && index !== this.draggedMobileIndex()) {\n this.draggedMobileIndex.set(index);\n this.haptics.selection();\n }\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) ?? this.draggedMobileIndex();\n\n this.releaseMobilePointer(nav, event.pointerId);\n\n if (index === null) {\n this.draggedMobileIndex.set(null);\n return;\n }\n\n const item = this.mobileItems()[index];\n\n if (!item || item.disabled) {\n this.draggedMobileIndex.set(null);\n return;\n }\n\n this.draggedMobileIndex.set(index);\n\n this.suppressNextMobileClick = true;\n globalThis.setTimeout(() => {\n this.suppressNextMobileClick = false;\n });\n\n this.emitMainItem(item, false);\n\n globalThis.queueMicrotask(() => {\n this.draggedMobileIndex.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.draggedMobileIndex.set(null);\n }\n\n onUtilityItemClick(item: LoroAppNavItem): 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: LoroAppNavItem, 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 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 mobileItemIndexToVisualSlot(index: number): number {\n return index;\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(this.mobileItemIndexToVisualSlot(index) - slotPosition) <\n Math.abs(this.mobileItemIndexToVisualSlot(nearest) - slotPosition)\n ? index\n : nearest,\n );\n }\n\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-app-nav\">\n <div class=\"loro-app-nav__desktop\">\n <div class=\"loro-app-nav__surface\" [class.loro-app-nav__surface--compact]=\"compactDesktop()\">\n <div class=\"loro-app-nav__brand\">\n <loro-image\n class=\"loro-app-nav__brand-image\"\n name=\"image-loro-apaisado\"\n alt=\"AlLoro\"\n width=\"10rem\"\n height=\"auto\"\n />\n </div>\n\n <nav class=\"loro-app-nav__nav\" [attr.aria-label]=\"ariaLabel()\">\n @for (item of desktopItems(); track item.id) {\n <loro-button\n class=\"loro-app-nav__item\"\n [class.loro-app-nav__item--active]=\"item.active\"\n [class.loro-app-nav__item--disabled]=\"item.disabled\"\n [class.loro-app-nav__item--logout]=\"item.id === 'logout'\"\n [text]=\"item.label\"\n [icon]=\"item.icon\"\n iconMode=\"with-icon\"\n iconColor=\"default\"\n variant=\"navigation\"\n [selected]=\"!!item.active\"\n [color]=\"item.id === 'logout' ? 'danger' : 'primary'\"\n type=\"button\"\n [fullWidth]=\"true\"\n [ariaLabel]=\"item.label\"\n [disabled]=\"!!item.disabled\"\n (buttonClick)=\"onMainItemClick(item)\"\n >\n @if (item.badge !== null && item.badge !== undefined && item.badge !== '') {\n <span class=\"loro-app-nav__badge\">{{ item.badge }}</span>\n }\n </loro-button>\n }\n </nav>\n\n <div class=\"loro-app-nav__spacer\"></div>\n\n @if (showUtilityItems() && utilityItems().length > 0) {\n <div class=\"loro-app-nav__divider\" aria-hidden=\"true\"></div>\n\n <nav\n class=\"loro-app-nav__nav loro-app-nav__nav--utility\"\n aria-label=\"Navegación secundaria\"\n >\n @for (item of utilityItems(); track item.id) {\n <loro-button\n class=\"loro-app-nav__item\"\n [class.loro-app-nav__item--active]=\"item.active\"\n [class.loro-app-nav__item--disabled]=\"item.disabled\"\n [class.loro-app-nav__item--logout]=\"item.id === 'logout'\"\n [text]=\"item.label\"\n [icon]=\"item.icon\"\n iconMode=\"with-icon\"\n iconColor=\"default\"\n variant=\"navigation\"\n [selected]=\"!!item.active\"\n [color]=\"item.id === 'logout' ? 'danger' : 'primary'\"\n type=\"button\"\n [fullWidth]=\"true\"\n [ariaLabel]=\"item.label\"\n [disabled]=\"!!item.disabled\"\n (buttonClick)=\"onUtilityItemClick(item)\"\n >\n @if (item.badge !== null && item.badge !== undefined && item.badge !== '') {\n <span class=\"loro-app-nav__badge\">{{ item.badge }}</span>\n }\n </loro-button>\n }\n </nav>\n }\n </div>\n </div>\n\n <nav\n ngToolbar\n class=\"loro-app-nav__mobile\"\n data-horizontal-gesture\n [attr.aria-label]=\"ariaLabel()\"\n [style.--loro-mobile-slider-position]=\"mobileSliderPosition()\"\n [class.loro-app-nav__mobile--dragging]=\"isMobileDragging()\"\n [class.loro-app-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-app-nav__mobile-slider\"\n [class.loro-app-nav__mobile-slider--scan]=\"selectedMobileItemId() === 'scan'\"\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-app-nav__mobile-item\"\n [style.grid-column]=\"mobileItemGridColumn(index)\"\n [class.loro-app-nav__mobile-item--active]=\"isMobileItemVisualActive(index)\"\n [class.loro-app-nav__mobile-item--scan-active]=\"item.id === 'scan' && isMobileItemVisualActive(index)\"\n [class.loro-app-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-app-nav__mobile-icon\"\n [name]=\"item.icon\"\n [size]=\"24\"\n color=\"default\"\n [alt]=\"item.label\"\n />\n <span class=\"loro-app-nav__mobile-label\">{{ item.label }}</span>\n </button>\n }\n </nav>\n</aside>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { LoroButton, type LoroButtonVariant } from '../loro-button/loro-button';\nimport { LoroIcon, type LoroIconName } from '@loro-ui/components/resources/loro-icon';\nimport { LoroImage, type LoroImageName } from '../../resources/loro-image/loro-image';\n\n@Component({\n selector: 'loro-assistant-card',\n \n templateUrl: './loro-assistant-card.html',\n styleUrl: './loro-assistant-card.scss',standalone: true,\n imports: [LoroButton, LoroIcon, LoroImage],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoroAssistantCard {\n title = input.required<string>();\n description = input.required<string>();\n imageName = input<LoroImageName | null>(null);\n icon = input<LoroIconName>('headset');\n actionLabel = input<string>('');\n actionIcon = input<LoroIconName | null>('chat');\n actionVariant = input<LoroButtonVariant>('primary');\n action = output<void>();\n}\n","<section class=\"loro-assistant-card\">\n <div class=\"loro-assistant-card__media\">\n @if (imageName()) {\n <loro-image [name]=\"imageName()!\" [alt]=\"title()\" width=\"100%\" />\n } @else {\n <loro-icon [name]=\"icon()\" [size]=\"56\" [alt]=\"title()\" color=\"primary\" />\n }\n </div>\n <div class=\"loro-assistant-card__copy\">\n <h2>{{ title() }}</h2>\n <p>{{ description() }}</p>\n </div>\n @if (actionLabel()) {\n <loro-button\n [label]=\"actionLabel()\"\n [icon]=\"actionIcon()\"\n [variant]=\"actionVariant()\"\n [fullWidth]=\"true\"\n (buttonClick)=\"action.emit()\" />\n }\n </section>","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport {\n LORO_ICON_LEGACY_NAMES,\n LORO_ICON_PATHS,\n LoroIcon,\n type LoroIconName,\n} from '@loro-ui/components/resources/loro-icon';\n\ntype NativeSocialIcon = 'apple' | 'google';\n\nfunction isNativeSocialIcon(icon: LoroIconName): icon is NativeSocialIcon {\n return icon === 'apple' || icon === 'google';\n}\n\n@Component({\n selector: 'loro-auth-social-button',\n \n templateUrl: './loro-auth-social-button.html',\n styleUrl: './loro-auth-social-button.scss',standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroAuthSocialButton {\n icon = input.required<LoroIconName>();\n label = input.required<string>();\n outline = input<boolean>(false);\n selected = input<boolean>(false);\n iconSize = input<number>(44);\n\n protected readonly nativeIconSrc = computed(() => {\n const icon = this.icon();\n\n if (!isNativeSocialIcon(icon)) {\n return '';\n }\n\n return LORO_ICON_PATHS[LORO_ICON_LEGACY_NAMES[icon]];\n });\n\n protected releaseFocus(event: Event): void {\n const target = event.currentTarget;\n if (target instanceof HTMLButtonElement) {\n target.blur();\n }\n }\n}\n","<button\n type=\"button\"\n class=\"loro-auth-social-button\"\n [class.loro-auth-social-button--outline]=\"outline()\"\n [class.loro-auth-social-button--selected]=\"selected()\"\n (click)=\"releaseFocus($event)\"\n >\n @if (nativeIconSrc()) {\n <img\n class=\"loro-auth-social-button__native-icon\"\n [src]=\"nativeIconSrc()\"\n alt=\"\"\n aria-hidden=\"true\"\n [style.width.px]=\"iconSize()\"\n [style.height.px]=\"iconSize()\"\n />\n } @else {\n <loro-icon [name]=\"icon()\" [size]=\"iconSize()\" [alt]=\"label()\" />\n }\n <span>{{ label() }}</span>\n </button>","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nexport type LoroBadgeVariant = 'success' | 'error' | 'info' | 'warning' | 'neutral';\n\n@Component({\n selector: 'loro-badge',\n \n templateUrl: './loro-badge.html',\n styleUrl: './loro-badge.scss',standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoroBadge {\n label = input.required<string>();\n variant = input<LoroBadgeVariant>('info');\n}\n","<span class=\"loro-badge\" [class]=\"'loro-badge loro-badge--' + variant()\">{{ label() }}</span>","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { LoroIcon, type LoroIconColor, type LoroIconName } from '@loro-ui/components/resources/loro-icon';\nimport { LoroImage, type LoroImageName } from '../../resources/loro-image/loro-image';\n\nexport type LoroCardVariant =\n | 'default'\n | 'tinted'\n | 'danger'\n | 'selectable'\n | 'benefit'\n | 'benefit-showcase'\n | 'home-hero'\n | 'home-primary'\n | 'home-secondary';\nexport type LoroCardJustify = 'start' | 'center' | 'end';\n\n@Component({\n selector: 'loro-card',\n \n templateUrl: './loro-card.html',\n styleUrl: './loro-card.scss',standalone: true,\n imports: [RouterLink, LoroIcon, LoroImage],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoroCard {\n title = input<string>('');\n description = input<string>('');\n icon = input<LoroIconName | null>(null);\n iconSize = input<number>(28);\n iconColor = input<LoroIconColor>('default');\n link = input<string>('');\n variant = input<LoroCardVariant>('default');\n justify = input<LoroCardJustify>('center');\n mobileJustify = input<LoroCardJustify>('center');\n selected = input<boolean>(false);\n showArrow = input<boolean>(false);\n arrowSize = input<number>(16);\n heroGreeting = input<string>('');\n heroSubtitle = input<string>('');\n heroAvatarSrc = input<string | null>(null);\n heroAvatarAlt = input<string>('Perfil');\n heroAvatarIcon = input<LoroIconName>('user');\n heroAvatarIconSize = input<number>(22);\n heroVisualImage = input<LoroImageName | null>(null);\n heroVisualAlt = input<string>('AlLoro');\n\n protected readonly resolvedIconSize = computed(() => {\n const size = this.iconSize();\n const normalizedSize = typeof size === 'number' ? `${size}px` : size;\n\n return this.variant() === 'benefit' || this.variant() === 'benefit-showcase'\n ? `var(--loro-card-benefit-icon-glyph-size, ${normalizedSize})`\n : normalizedSize;\n });\n}\n","<a\n class=\"loro-card\"\n [routerLink]=\"link() || null\"\n [class.loro-card--tinted]=\"variant() === 'tinted'\"\n [class.loro-card--danger]=\"variant() === 'danger'\"\n [class.loro-card--selectable]=\"variant() === 'selectable'\"\n [class.loro-card--benefit]=\"variant() === 'benefit'\"\n [class.loro-card--benefit-showcase]=\"variant() === 'benefit-showcase'\"\n [class.loro-card--home-hero]=\"variant() === 'home-hero'\"\n [class.loro-card--home-primary]=\"variant() === 'home-primary'\"\n [class.loro-card--home-secondary]=\"variant() === 'home-secondary'\"\n [class.loro-card--interactive]=\"!!link()\"\n [class.loro-card--justify-start]=\"justify() === 'start'\"\n [class.loro-card--justify-center]=\"justify() === 'center'\"\n [class.loro-card--justify-end]=\"justify() === 'end'\"\n [class.loro-card--mobile-justify-start]=\"mobileJustify() === 'start'\"\n [class.loro-card--mobile-justify-center]=\"mobileJustify() === 'center'\"\n [class.loro-card--mobile-justify-end]=\"mobileJustify() === 'end'\"\n [class.loro-card--selected]=\"selected()\">\n @if (variant() === 'home-hero') {\n <div class=\"loro-card__hero-main\">\n <div class=\"loro-card__hero-avatar\" aria-hidden=\"true\">\n @if (heroAvatarSrc()) {\n <img [src]=\"heroAvatarSrc()!\" [alt]=\"heroAvatarAlt()\" />\n } @else {\n <loro-icon [name]=\"heroAvatarIcon()\" [size]=\"heroAvatarIconSize()\" [alt]=\"heroAvatarAlt()\" />\n }\n </div>\n\n <div class=\"loro-card__hero-copy\">\n @if (heroGreeting()) {\n <p>{{ heroGreeting() }}</p>\n }\n @if (heroSubtitle()) {\n <span>{{ heroSubtitle() }}</span>\n }\n </div>\n </div>\n\n @if (heroVisualImage()) {\n <div class=\"loro-card__hero-visual\" aria-hidden=\"true\">\n <loro-image [name]=\"heroVisualImage()!\" [alt]=\"heroVisualAlt()\" width=\"100%\" />\n </div>\n }\n }\n\n @if ((title() || icon()) && variant() !== 'home-hero') {\n <header class=\"loro-card__header\">\n @if (icon()) {\n <span class=\"loro-card__icon\">\n <loro-icon\n [name]=\"icon()!\"\n [size]=\"resolvedIconSize()\"\n [alt]=\"title() || icon()!\"\n [color]=\"iconColor()\"\n [decorative]=\"true\"\n />\n </span>\n }\n <div class=\"loro-card__copy\">\n @if (title()) {\n <h2 class=\"loro-card__title\">{{ title() }}</h2>\n }\n @if (description()) {\n <p class=\"loro-card__description\">{{ description() }}</p>\n }\n </div>\n </header>\n }\n <ng-content />\n @if (showArrow()) {\n <span class=\"loro-card__arrow\" aria-hidden=\"true\">\n <loro-icon name=\"arrow-right\" [size]=\"arrowSize()\" alt=\"Ir\" />\n </span>\n }\n </a>","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 { FormCheckboxControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\n\n@Component({\n selector: 'loro-toggle',\n \n templateUrl: './loro-toggle.html',\n styleUrl: './loro-toggle.scss',standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoroToggle implements FormCheckboxControl {\n checked = model(false);\n disabled = input<boolean>(false);\n required = input(false);\n invalid = input(false);\n errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n touched = model(false);\n ariaLabel = input<string>('Cambiar estado');\n checkedChange = output<boolean>();\n\n protected toggle(): void {\n if (this.disabled()) {\n return;\n }\n\n const nextChecked = !this.checked();\n this.checked.set(nextChecked);\n this.touched.set(true);\n this.checkedChange.emit(nextChecked);\n }\n}\n","<button\n type=\"button\"\n class=\"loro-toggle\"\n [class.loro-toggle--checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-pressed]=\"checked()\"\n (click)=\"toggle()\">\n <span class=\"loro-toggle__thumb\"></span>\n </button>","import { ChangeDetectionStrategy, Component, inject, input, output } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { LoroBadge, type LoroBadgeVariant } from '../loro-badge/loro-badge';\nimport { LoroIcon, type LoroIconName } from '@loro-ui/components/resources/loro-icon';\nimport { LoroRadio } from '../../forms/loro-radio/loro-radio';\nimport { LoroToggle } from '../../forms/loro-toggle/loro-toggle';\n\nexport type LoroCardNavVariant = 'default' | 'danger' | 'soft';\nexport type LoroCardNavTrailing = 'arrow' | 'toggle' | 'radio' | 'text' | 'badge' | 'none';\n\n@Component({\n selector: 'loro-card-nav',\n \n templateUrl: './loro-card-nav.html',\n styleUrl: './loro-card-nav.scss',standalone: true,\n imports: [LoroBadge, LoroIcon, LoroRadio, LoroToggle],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoroCardNav {\n private readonly router = inject(Router, { optional: true });\n\n title = input.required<string>();\n description = input<string>('');\n icon = input<LoroIconName | null>(null);\n iconSize = input<number>(25);\n iconColor = input<string>('primary');\n route = input<string>('');\n variant = input<LoroCardNavVariant>('default');\n trailing = input<LoroCardNavTrailing>('arrow');\n value = input<string>('');\n checked = input<boolean>(false);\n selected = input<boolean>(false);\n badgeLabel = input<string>('');\n badgeVariant = input<LoroBadgeVariant>('info');\n itemClick = output<void>();\n checkedChange = output<boolean>();\n selectedChange = output<string>();\n\n protected activate(): void {\n this.itemClick.emit();\n\n if (this.trailing() === 'toggle') {\n this.checkedChange.emit(!this.checked());\n return;\n }\n\n if (this.trailing() === 'radio') {\n this.selectedChange.emit(this.value());\n return;\n }\n\n const route = this.route();\n if (route && this.router) {\n void this.router.navigateByUrl(route);\n }\n }\n}\n","<button\n type=\"button\"\n class=\"loro-card-nav\"\n [class.loro-card-nav--danger]=\"variant() === 'danger'\"\n [class.loro-card-nav--soft]=\"variant() === 'soft'\"\n [class.loro-card-nav--selected]=\"selected()\"\n (click)=\"activate()\">\n @if (icon()) {\n <span class=\"loro-card-nav__icon\">\n <loro-icon\n [name]=\"icon()!\"\n [size]=\"iconSize()\"\n [alt]=\"title()\"\n [color]=\"variant() === 'danger' ? 'danger' : iconColor()\" />\n </span>\n }\n\n <span class=\"loro-card-nav__copy\">\n <span class=\"loro-card-nav__title\">{{ title() }}</span>\n @if (description()) {\n <span class=\"loro-card-nav__description\">{{ description() }}</span>\n }\n </span>\n\n <span class=\"loro-card-nav__trailing\" (click)=\"$event.stopPropagation()\">\n @switch (trailing()) {\n @case ('toggle') {\n <loro-toggle [checked]=\"checked()\" [ariaLabel]=\"title()\" (checkedChange)=\"checkedChange.emit($event)\" />\n }\n @case ('radio') {\n <loro-radio [label]=\"''\" [value]=\"value()\" [checked]=\"selected()\" (selected)=\"selectedChange.emit($event)\" />\n }\n @case ('text') {\n <span class=\"loro-card-nav__value\">{{ value() }}</span>\n }\n @case ('badge') {\n <loro-badge [label]=\"badgeLabel() || value()\" [variant]=\"badgeVariant()\" />\n }\n @case ('arrow') {\n <loro-icon\n class=\"loro-card-nav__arrow\"\n name=\"chevron-right\"\n [size]=\"22\"\n alt=\"Abrir\"\n [color]=\"variant() === 'danger' ? 'danger' : 'primary'\" />\n }\n }\n </span>\n </button>","import { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { LoroIcon, type LoroIconName } from '@loro-ui/components/resources/loro-icon';\nimport { LoroImage, type LoroImageName } from '../../resources/loro-image/loro-image';\nimport { LoroHapticsService } from '../../../services/loro-haptics.service';\n\n@Component({\n selector: 'loro-dashboard-card',\n standalone: true,\n imports: [RouterLink, LoroIcon, LoroImage],\n templateUrl: './loro-dashboard-card.html',\n styleUrl: './loro-dashboard-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoroDashboardCard {\n private readonly haptics = inject(LoroHapticsService);\n\n title = input.required<string>();\n description = input<string>('');\n link = input<string>('/');\n icon = input<LoroIconName | null>(null);\n illustration = input<LoroImageName | null>(null);\n variant = input<'default' | 'home'>('default');\n showArrow = input<boolean>(true);\n iconSize = input<number>(88);\n arrowSize = input<number>(24);\n\n onCardClick(): void {\n this.haptics.impact('light');\n }\n}\n","<a\n class=\"loro-dashboard-card\"\n [class.loro-dashboard-card--home]=\"variant() === 'home'\"\n data-touch-hover\n [routerLink]=\"link()\"\n (click)=\"onCardClick()\"\n>\n <div class=\"loro-dashboard-card__media\" aria-hidden=\"true\">\n @if (illustration()) {\n <loro-image\n [name]=\"illustration()!\"\n [alt]=\"title()\"\n width=\"100%\"\n />\n } @else if (icon()) {\n <loro-icon\n [name]=\"icon()!\"\n [size]=\"iconSize()\"\n [alt]=\"title()\"\n />\n }\n </div>\n\n <div class=\"loro-dashboard-card__content\">\n <h3>{{ title() }}</h3>\n\n @if (description()) {\n <p>{{ description() }}</p>\n }\n </div>\n\n @if (showArrow()) {\n <div class=\"loro-dashboard-card__arrow\" aria-hidden=\"true\">\n <loro-icon name=\"arrow-right\" [size]=\"arrowSize()\" alt=\"Ir\" />\n </div>\n }\n</a>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nexport type LoroDividerAlign = 'left' | 'center' | 'right';\n\n@Component({\n selector: 'loro-divider',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div\n class=\"loro-divider\"\n role=\"presentation\"\n [class.loro-divider--left]=\"align() === 'left'\"\n [class.loro-divider--right]=\"align() === 'right'\"\n >\n <span class=\"loro-divider__line\"></span>\n @if (text()) {\n <p class=\"loro-divider__text\">{{ text() }}</p>\n }\n <span class=\"loro-divider__line\"></span>\n </div>\n `,\n styles: `\n :host {\n display: block;\n font-family: var(--loro-font-brand);\n }\n\n .loro-divider {\n display: flex;\n align-items: center;\n gap: 0.9rem;\n color: var(--loro-muted);\n }\n\n .loro-divider__line {\n height: 1px;\n flex: 1;\n background: color-mix(in srgb, var(--loro-muted) 30%, transparent);\n }\n\n .loro-divider__text {\n margin: 0;\n font-size: 0.9rem;\n font-weight: 850;\n line-height: 1;\n white-space: nowrap;\n }\n\n .loro-divider--left .loro-divider__line:last-child {\n flex: 999;\n }\n\n .loro-divider--right .loro-divider__line:first-child {\n flex: 999;\n }\n `,\n})\nexport class LoroDivider {\n text = input('');\n align = input<LoroDividerAlign>('center');\n}\n","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 '@loro-ui/components/resources/loro-icon';\n\nexport type LoroInputUnit = 'kg' | 'ud';\nexport type LoroInputVariant = 'default' | 'withIcon' | 'search' | 'photo' | 'stepper';\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 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 resolvedLeadingIconColor = computed<LoroIconColor>(() =>\n this.hasError() ? 'danger' : this.hasSuccess() ? 'success' : '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 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 @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--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]=\"type()\"\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 (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 }","import { ChangeDetectionStrategy, Component, input, output, signal } from '@angular/core';\nimport { LoroIcon } from '@loro-ui/components/resources/loro-icon';\nimport { LoroImage, type LoroImageName } from '../../resources/loro-image/loro-image';\nimport { LoroInput } from '../../forms/loro-input/loro-input';\n\nexport type LoroProductRowVariant = 'basket' | 'pantry' | 'compare';\nexport type LoroProductRowStatus = 'ok' | 'warning' | 'expiring';\n\nconst TOUCH_TAP_TOLERANCE_PX = 10;\nconst TOUCH_SWIPE_START_PX = 8;\nconst SWIPE_REVEAL_PX = 104;\nconst SWIPE_MAX_PX = 176;\nconst SWIPE_DELETE_EXTRA_PX = 48;\nconst REMOVE_ANIMATION_MS = 180;\n\n@Component({\n selector: 'loro-product-row',\n standalone: true,\n imports: [LoroIcon, LoroImage, LoroInput],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './loro-product-row.html',\n styleUrl: './loro-product-row.scss'\n})\nexport class LoroProductRow {\n variant = input<LoroProductRowVariant>('basket');\n name = input.required<string>();\n meta = input<string>('');\n imageName = input<LoroImageName | null>(null);\n quantityLabel = input<string>('');\n quantity = input<number | null>(null);\n unit = input<string>('ud');\n total = input<number>(0);\n checked = input<boolean>(false);\n divider = input<boolean>(false);\n status = input<LoroProductRowStatus>('ok');\n prices = input<ReadonlyArray<{ store: string; value: number; best?: boolean; logoName?: LoroImageName | null }>>([]);\n checkedChange = output<boolean>();\n quantityChange = output<number>();\n increment = output<void>();\n decrement = output<void>();\n rowRemove = output<void>();\n\n protected readonly swipeDragging = signal(false);\n protected readonly swipeArmed = signal(false);\n protected readonly swipeRemoving = signal(false);\n private readonly swipeOffsetX = signal(0);\n private touchStartX = 0;\n private touchStartY = 0;\n private touchStartedOnInteractive = false;\n private touchMoved = false;\n private suppressNextClick = false;\n\n protected swipeTransform(): string | null {\n const offset = this.swipeOffsetX();\n return offset === 0 ? null : `translateX(${offset}px)`;\n }\n\n protected deleteActionTransform(): string | null {\n if (!this.isSwipeRemovable()) {\n return null;\n }\n\n const offset = Math.abs(this.swipeOffsetX());\n const progress = Math.min(offset / SWIPE_REVEAL_PX, 1);\n const translateX = (1 - progress) * 2.5;\n\n return `translateX(${translateX}rem)`;\n }\n\n protected isSwipeRemovable(): boolean {\n return this.variant() === 'basket' || this.variant() === 'pantry';\n }\n\n protected quantityValue(): string {\n const quantity = this.quantity();\n\n if (quantity !== null) {\n return this.formatQuantity(quantity);\n }\n\n return this.quantityLabel().replace(this.normalizedUnit(), '').trim();\n }\n\n protected updateQuantity(value: string): void {\n const parsed = Number(value.replace(',', '.'));\n\n if (!Number.isFinite(parsed)) {\n return;\n }\n\n this.quantityChange.emit(\n this.normalizedUnit() === 'ud'\n ? Math.min(100, Math.max(1, Math.round(parsed)))\n : Math.min(100, Math.max(0.5, parsed))\n );\n }\n\n protected onRowTouchStart(event: TouchEvent): void {\n if (!this.isSwipeRemovable() || !this.isMobileViewport() || event.touches.length !== 1) {\n return;\n }\n\n if (this.swipeRemoving()) {\n return;\n }\n\n const touch = event.touches[0];\n this.touchStartX = touch.clientX;\n this.touchStartY = touch.clientY;\n this.touchMoved = false;\n this.touchStartedOnInteractive = this.isInteractiveTarget(event.target);\n this.swipeDragging.set(false);\n }\n\n protected onRowTouchMove(event: TouchEvent): void {\n if (\n !this.isSwipeRemovable() ||\n !this.isMobileViewport() ||\n this.touchStartedOnInteractive ||\n event.touches.length !== 1\n ) {\n return;\n }\n\n const touch = event.touches[0];\n const deltaX = touch.clientX - this.touchStartX;\n const deltaY = touch.clientY - this.touchStartY;\n const movedDistance = Math.hypot(deltaX, deltaY);\n\n if (movedDistance > TOUCH_TAP_TOLERANCE_PX) {\n this.touchMoved = true;\n }\n\n if (Math.abs(deltaY) > Math.abs(deltaX) && !this.swipeDragging()) {\n return;\n }\n\n const nextOffset = this.swipeArmed()\n ? Math.max(-SWIPE_MAX_PX, Math.min(-SWIPE_REVEAL_PX, -SWIPE_REVEAL_PX + deltaX))\n : Math.max(deltaX, -SWIPE_MAX_PX);\n\n if (nextOffset < -TOUCH_SWIPE_START_PX || (this.swipeArmed() && nextOffset !== -SWIPE_REVEAL_PX)) {\n this.touchMoved = true;\n this.swipeDragging.set(true);\n this.swipeOffsetX.set(nextOffset);\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n protected onRowTouchEnd(event: TouchEvent): void {\n if (!this.isSwipeRemovable() || !this.isMobileViewport() || this.touchStartedOnInteractive) {\n this.resetSwipe();\n return;\n }\n\n const offset = this.swipeOffsetX();\n\n if (this.swipeArmed()) {\n if (offset <= -(SWIPE_REVEAL_PX + SWIPE_DELETE_EXTRA_PX)) {\n this.triggerRemove(event);\n return;\n }\n\n if (offset > -(SWIPE_REVEAL_PX - 20)) {\n this.suppressNextClick = true;\n event.preventDefault();\n event.stopPropagation();\n this.swipeArmed.set(false);\n this.resetSwipe();\n return;\n }\n\n this.suppressNextClick = true;\n event.preventDefault();\n event.stopPropagation();\n this.swipeDragging.set(false);\n this.swipeOffsetX.set(-SWIPE_REVEAL_PX);\n return;\n }\n\n if (offset <= -SWIPE_REVEAL_PX) {\n this.suppressNextClick = true;\n event.preventDefault();\n event.stopPropagation();\n this.swipeArmed.set(true);\n this.swipeDragging.set(false);\n this.swipeOffsetX.set(-SWIPE_REVEAL_PX);\n return;\n }\n\n if (this.variant() === 'basket' && !this.touchMoved && !this.isInteractiveTarget(event.target)) {\n this.suppressNextClick = true;\n event.preventDefault();\n event.stopPropagation();\n this.checkedChange.emit(!this.checked());\n } else if (this.touchMoved) {\n this.suppressNextClick = true;\n event.preventDefault();\n event.stopPropagation();\n }\n\n this.resetSwipe();\n }\n\n protected onRowTouchCancel(): void {\n this.resetSwipe();\n }\n\n protected onBasketClick(event: MouseEvent): void {\n if (this.variant() !== 'basket') {\n return;\n }\n\n if (this.isMobileViewport()) {\n if (this.suppressNextClick || this.swipeArmed() || !this.isInteractiveTarget(event.target)) {\n event.preventDefault();\n event.stopPropagation();\n this.suppressNextClick = false;\n }\n\n return;\n }\n\n if (!this.isInteractiveTarget(event.target)) {\n event.preventDefault();\n event.stopPropagation();\n this.checkedChange.emit(!this.checked());\n }\n }\n\n private formatQuantity(quantity: number): string {\n if (this.normalizedUnit() === 'ud') {\n return Math.round(quantity).toString();\n }\n\n return Number(quantity.toFixed(1)).toLocaleString('es-ES', {\n minimumFractionDigits: Number.isInteger(quantity) ? 0 : 1,\n maximumFractionDigits: 1\n });\n }\n\n private normalizedUnit(): 'kg' | 'ud' {\n return this.unit() === 'kg' ? 'kg' : 'ud';\n }\n\n protected formatCurrency(value: number): string {\n return value.toLocaleString('es-ES', {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2\n });\n }\n\n private resetSwipe(): void {\n if (this.swipeRemoving()) {\n return;\n }\n\n this.swipeDragging.set(false);\n this.swipeOffsetX.set(this.swipeArmed() ? -SWIPE_REVEAL_PX : 0);\n }\n\n private triggerRemove(event?: Event): void {\n this.suppressNextClick = true;\n event?.preventDefault();\n event?.stopPropagation();\n this.swipeDragging.set(false);\n this.swipeArmed.set(false);\n this.swipeRemoving.set(true);\n this.swipeOffsetX.set(-SWIPE_MAX_PX);\n window.setTimeout(() => this.rowRemove.emit(), REMOVE_ANIMATION_MS);\n }\n\n private isMobileViewport(): boolean {\n return window.matchMedia('(max-width: 640px)').matches;\n }\n\n private isInteractiveTarget(target: EventTarget | null): boolean {\n return target instanceof HTMLElement && !!target.closest('button, input, textarea, select, loro-input, a');\n }\n}\n","<article\n class=\"loro-product-row\"\n [class.loro-product-row--basket]=\"variant() === 'basket'\"\n [class.loro-product-row--pantry]=\"variant() === 'pantry'\"\n [class.loro-product-row--compare]=\"variant() === 'compare'\"\n [class.loro-product-row--divider]=\"divider()\"\n [class.loro-product-row--checked]=\"checked()\"\n [class.loro-product-row--dragging]=\"swipeDragging()\"\n [class.loro-product-row--swipe-armed]=\"swipeArmed()\"\n [class.loro-product-row--removing]=\"swipeRemoving()\"\n [class.loro-product-row--swipe-removable]=\"isSwipeRemovable()\"\n [class.loro-product-row--no-image]=\"!imageName()\"\n [style.transform]=\"swipeTransform()\"\n (touchstart)=\"onRowTouchStart($event)\"\n (touchmove)=\"onRowTouchMove($event)\"\n (touchend)=\"onRowTouchEnd($event)\"\n (touchcancel)=\"onRowTouchCancel()\"\n (click)=\"onBasketClick($event)\">\n @if (variant() === 'basket') {\n <button\n type=\"button\"\n class=\"loro-product-row__check\"\n [class.loro-product-row__check--checked]=\"checked()\"\n [attr.aria-label]=\"'Marcar ' + name()\"\n (click)=\"checkedChange.emit(!checked())\">\n @if (checked()) {\n <loro-icon name=\"check\" [size]=\"18\" alt=\"Comprado\" color=\"inverse\" />\n }\n </button>\n <span class=\"loro-product-row__selected-mark\" aria-hidden=\"true\">\n <loro-icon name=\"tick-circle\" [size]=\"16\" alt=\"Seleccionado\" color=\"primary\" />\n </span>\n }\n\n @if (imageName()) {\n <span class=\"loro-product-row__image\">\n <loro-image [name]=\"imageName()!\" [alt]=\"name()\" width=\"100%\" />\n </span>\n }\n\n <span class=\"loro-product-row__copy\">\n <strong>{{ name() }}</strong>\n @if (variant() !== 'basket') {\n <small>{{ meta() }}</small>\n }\n </span>\n\n @if (variant() === 'basket') {\n <loro-input\n class=\"loro-product-row__stepper\"\n variant=\"stepper\"\n [label]=\"'Cantidad de ' + name()\"\n [value]=\"quantityValue()\"\n [unit]=\"unit()\"\n [step]=\"unit() === 'kg' ? 0.5 : 1\"\n [min]=\"unit() === 'kg' ? 0.5 : 1\"\n [max]=\"100\"\n (valueChange)=\"updateQuantity($event)\" />\n }\n\n @if (variant() === 'compare') {\n <span class=\"loro-product-row__prices\">\n @for (price of prices(); track price.store) {\n <span [class.loro-product-row__price--best]=\"price.best\" class=\"loro-product-row__price\">\n @if (price.logoName) {\n <loro-image [name]=\"price.logoName\" [alt]=\"price.store\" width=\"100%\" height=\"100%\" fit=\"contain\" />\n } @else {\n <b>{{ price.store }}</b>\n }\n <span>{{ formatCurrency(price.value) }} €</span>\n </span>\n }\n </span>\n } @else if (variant() === 'basket') {\n <span class=\"loro-product-row__total-stack\">\n <small class=\"loro-product-row__unit-price\">{{ meta() }}</small>\n <strong class=\"loro-product-row__total\">{{ formatCurrency(total()) }} €</strong>\n </span>\n } @else {\n <strong class=\"loro-product-row__total\">{{ formatCurrency(total()) }} €</strong>\n }\n\n @if (variant() === 'pantry') {\n <span\n class=\"loro-product-row__status\"\n [class.loro-product-row__status--warning]=\"status() === 'warning'\"\n [class.loro-product-row__status--expiring]=\"status() === 'expiring'\">\n <loro-icon\n [name]=\"status() === 'ok' ? 'check' : 'warning'\"\n [size]=\"status() === 'ok' ? 15 : 12\"\n [alt]=\"status()\"\n [color]=\"status() === 'ok' ? 'success' : status() === 'expiring' ? 'warning' : 'danger'\" />\n </span>\n } @else if (variant() === 'basket') {\n <button\n type=\"button\"\n class=\"loro-product-row__delete-button\"\n data-touch-hover\n [attr.aria-label]=\"'Eliminar ' + name()\"\n (click)=\"rowRemove.emit()\">\n <loro-icon name=\"trash\" [size]=\"18\" alt=\"\" [decorative]=\"true\" color=\"danger\" />\n </button>\n }\n</article>\n@if (isSwipeRemovable()) {\n <span class=\"loro-product-row__delete-action\" aria-hidden=\"true\" [style.transform]=\"deleteActionTransform()\">\n <loro-icon name=\"trash-white\" [size]=\"24\" alt=\"Eliminar\" color=\"inverse\" />\n <span>Eliminar</span>\n </span>\n}\n","import { ChangeDetectionStrategy, Component, input, signal } from '@angular/core';\nimport { LoroIcon, type LoroIconName } from '@loro-ui/components/resources/loro-icon';\n\n@Component({\n selector: 'loro-product-section',\n \n templateUrl: './loro-product-section.html',\n styleUrl: './loro-product-section.scss',standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoroProductSection {\n title = input.required<string>();\n icon = input<LoroIconName>('leaf');\n collapsible = input<boolean>(true);\n protected readonly expanded = signal(true);\n\n protected toggle(): void {\n if (!this.collapsible()) {\n return;\n }\n\n this.expanded.update((expanded) => !expanded);\n }\n}\n","<section class=\"loro-product-section\">\n <header\n class=\"loro-product-section__header\"\n [class.loro-product-section__header--collapsible]=\"collapsible()\"\n [attr.role]=\"collapsible() ? 'button' : null\"\n [attr.tabindex]=\"collapsible() ? 0 : null\"\n [attr.aria-expanded]=\"collapsible() ? expanded() : null\"\n (click)=\"toggle()\"\n (keydown.enter)=\"toggle()\"\n (keydown.space)=\"toggle()\">\n <span class=\"loro-product-section__icon\">\n <loro-icon [name]=\"icon()\" [size]=\"18\" [alt]=\"title()\" color=\"inverse\" />\n </span>\n <h2>{{ title() }}</h2>\n @if (collapsible()) {\n <span class=\"loro-product-section__toggle\" aria-hidden=\"true\">\n <loro-icon\n [name]=\"expanded() ? 'chevron-up' : 'chevron-down'\"\n [size]=\"18\"\n [alt]=\"expanded() ? 'Contraer' : 'Expandir'\"\n color=\"primary-strong\" />\n </span>\n }\n </header>\n @if (!collapsible() || expanded()) {\n <div class=\"loro-product-section__body\">\n <ng-content />\n </div>\n }\n </section>","import { ChangeDetectionStrategy, Component, effect, input, output, signal } from '@angular/core';\nimport { LoroButton } from '../loro-button/loro-button';\nimport { LoroIcon } from '@loro-ui/components/resources/loro-icon';\n\n@Component({\n selector: 'loro-profile-card',\n \n templateUrl: './loro-profile-card.html',\n styleUrl: './loro-profile-card.scss',standalone: true,\n imports: [LoroButton, LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoroProfileCard {\n name = input.required<string>();\n email = input.required<string>();\n imageSrc = input<string | null>(null);\n changePhotoLabel = input<string>('Cambiar foto');\n changePhotoLoadingLabel = input<string>('Actualizando...');\n changePhotoLoading = input<boolean>(false);\n changePhotoDisabled = input<boolean>(false);\n changePhotoClick = output<void>();\n private readonly imageFailed = signal(false);\n\n constructor() {\n effect(() => {\n this.imageSrc();\n this.imageFailed.set(false);\n });\n }\n\n protected resolvedImageSrc(): string | null {\n return this.imageFailed() ? null : this.imageSrc();\n }\n\n protected onImageError(): void {\n this.imageFailed.set(true);\n }\n}\n","<section class=\"loro-profile-card\">\n <div class=\"loro-profile-card__avatar\">\n @if (resolvedImageSrc()) {\n <img [src]=\"resolvedImageSrc()!\" [alt]=\"name()\" (error)=\"onImageError()\" />\n } @else {\n <loro-icon name=\"user\" [size]=\"72\" [alt]=\"name()\" color=\"primary\" />\n }\n </div>\n <div class=\"loro-profile-card__copy\">\n <h2>{{ name() }}</h2>\n <p>{{ email() }}</p>\n <loro-button\n [label]=\"changePhotoLoading() ? changePhotoLoadingLabel() : changePhotoLabel()\"\n icon=\"camera\"\n variant=\"outline\"\n [disabled]=\"changePhotoDisabled() || changePhotoLoading()\"\n [loading]=\"changePhotoLoading()\"\n (buttonClick)=\"changePhotoClick.emit()\" />\n </div>\n </section>","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { LoroIcon } from '@loro-ui/components/resources/loro-icon';\nimport { LoroImage, type LoroImageName } from '../../resources/loro-image/loro-image';\n\ntype LoroProfileHeroVariant = 'default' | 'compact' | 'large' | 'support';\n\n@Component({\n selector: 'loro-profile-hero',\n standalone: true,\n imports: [LoroIcon, LoroImage],\n templateUrl: './loro-profile-hero.html',\n styleUrl: './loro-profile-hero.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.--loro-profile-hero-eyebrow-size]': 'eyebrowFontSize()',\n '[style.--loro-profile-hero-title-size]': 'titleFontSize()',\n '[style.--loro-profile-hero-greeting-size]': 'greetingFontSize()',\n '[style.--loro-profile-hero-avatar-size]': 'avatarSize()',\n '[style.--loro-profile-hero-avatar-radius]': 'avatarRadius()',\n '[style.--loro-profile-hero-avatar-icon-size]': 'avatarIconCssSize()',\n '[style.--loro-profile-hero-parrot-mobile-width]': 'parrotMobileWidth()',\n '[style.--loro-profile-hero-parrot-desktop-width]': 'parrotWebWidth()'\n }\n})\nexport class LoroProfileHero {\n variant = input<LoroProfileHeroVariant>('default');\n\n firstName = input<string>('Patricia');\n eyebrow = input<string>('Mi perfil');\n greeting = input<string>('¡Qué bien verte por aquí!');\n\n profileImageSrc = input<string | null>(null);\n profileImageAlt = input<string>('Imagen de perfil');\n avatarIconName = input<ReturnType<LoroIcon['name']>>('user');\n avatarIconSize = input<number>(24);\n avatarAlt = input<string>('Perfil');\n avatarSize = input<string>('2.75rem');\n avatarRadius = input<string>('0.625rem');\n\n parrotImageName = input<LoroImageName>('profile');\n parrotImageAlt = input<string>('Mascota de perfil AlLoro');\n parrotMobileWidth = input<string>('34%');\n parrotWebWidth = input<string>('34%');\n\n eyebrowFontSize = input<string>('clamp(0.75rem, 2.8cqi, 0.95rem)');\n titleFontSize = input<string>('clamp(1.5rem, 6.4cqi, 2.45rem)');\n greetingFontSize = input<string>('clamp(0.8rem, 3.2cqi, 1.05rem)');\n\n elevated = input<boolean>(true);\n\n avatarIconCssSize(): string {\n return `${this.avatarIconSize()}px`;\n }\n}\n","<section\n class=\"loro-profile-hero\"\n [class.loro-profile-hero--flat]=\"!elevated()\"\n [class.loro-profile-hero--compact]=\"variant() === 'compact'\"\n [class.loro-profile-hero--large]=\"variant() === 'large'\"\n [class.loro-profile-hero--support]=\"variant() === 'support'\"\n aria-label=\"Perfil de usuario\"\n>\n @if (variant() === 'support') {\n <div class=\"loro-profile-hero__support-art\" aria-hidden=\"true\">\n <loro-image [name]=\"parrotImageName()\" [alt]=\"parrotImageAlt()\" width=\"100%\" />\n </div>\n }\n\n <div class=\"loro-profile-hero__content\">\n @if (variant() !== 'support') {\n <div class=\"loro-profile-hero__avatar\">\n @if (profileImageSrc()) {\n <img\n class=\"loro-profile-hero__profile-image\"\n [src]=\"profileImageSrc()!\"\n [alt]=\"profileImageAlt()\"\n loading=\"lazy\"\n />\n } @else {\n <loro-icon\n [name]=\"avatarIconName()\"\n class=\"loro-profile-hero__avatar-icon\"\n [size]=\"avatarIconSize()\"\n [alt]=\"avatarAlt()\"\n />\n }\n </div>\n }\n\n <div class=\"loro-profile-hero__copy\">\n @if (variant() !== 'support' && eyebrow()) {\n <p class=\"loro-profile-hero__eyebrow\">\n {{ eyebrow() }}\n </p>\n }\n\n <h1 class=\"loro-profile-hero__title\">\n {{ firstName() }}\n </h1>\n\n <p class=\"loro-profile-hero__greeting\">\n {{ greeting() }}\n </p>\n </div>\n </div>\n\n @if (variant() !== 'support') {\n <div class=\"loro-profile-hero__art\" aria-hidden=\"true\">\n <loro-image\n [name]=\"parrotImageName()\"\n [alt]=\"parrotImageAlt()\"\n width=\"100%\"\n height=\"100%\"\n fit=\"contain\"\n />\n </div>\n }\n</section>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { LoroIcon, type LoroIconName } from '@loro-ui/components/resources/loro-icon';\nimport { LoroImage, type LoroImageName } from '../../resources/loro-image/loro-image';\n\nexport type LoroStatCardVariant =\n | 'default'\n | 'tinted'\n | 'danger'\n | 'compare-summary'\n | 'compare-inline'\n | 'image-corner'\n | 'card-basket';\n\n@Component({\n selector: 'loro-stat-card',\n \n templateUrl: './loro-stat-card.html',\n styleUrl: './loro-stat-card.scss',standalone: true,\n imports: [LoroIcon, LoroImage],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoroStatCard {\n title = input.required<string>();\n value = input<string>('');\n description = input<string>('');\n eyebrow = input<string>('');\n icon = input<LoroIconName | null>(null);\n iconSize = input<number>(30);\n image = input<LoroImageName | null>(null);\n topImage = input<LoroImageName | null>(null);\n variant = input<LoroStatCardVariant>('default');\n total = input<number>(0);\n}\n","@if (variant() === 'image-corner' || variant() === 'card-basket') {\n <loro-image class=\"loro-stat-card__top-image\" [name]=\"topImage() || 'loro-despensa'\" [alt]=\"title()\" width=\"6rem\" />\n }\n <article class=\"loro-stat-card\" [class]=\"'loro-stat-card loro-stat-card--' + variant()\">\n @if (icon()) {\n <span class=\"loro-stat-card__icon\">\n <loro-icon [name]=\"icon()!\" [size]=\"iconSize()\" [alt]=\"title()\" [color]=\"variant() === 'danger' ? 'danger' : 'primary'\" />\n </span>\n }\n <div class=\"loro-stat-card__copy\">\n @if (eyebrow() || variant() === 'image-corner') {\n <p class=\"loro-stat-card__eyebrow\">{{ eyebrow() || title() }}</p>\n <h2>{{ value() || title() }}</h2>\n }\n\n @if (value() && variant() !== 'image-corner') {\n <p class=\"loro-stat-card__title\">{{ title() }}</p>\n }\n @if (description()) {\n <p class=\"loro-stat-card__description\">{{ description() }}</p>\n }\n </div>\n @if (variant() === 'card-basket') {\n <div class=\"shopping-summary-card__total\">\n <small>Total estimado</small>\n <strong>{{ total().toLocaleString('es-ES', { minimumFractionDigits: 2 }) }} €</strong>\n </div>\n }\n @if (image()) {\n <loro-image class=\"loro-stat-card__image\" [name]=\"image()!\" [alt]=\"title()\" width=\"5.8rem\" />\n }\n </article>","import { DecimalPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { LoroBadge } from '../loro-badge/loro-badge';\nimport { LoroImage, type LoroImageName } from '../../resources/loro-image/loro-image';\n\nexport type LoroStoreRankCardVariant = 'default' | 'compact';\n\n@Component({\n selector: 'loro-store-rank-card',\n \n templateUrl: './loro-store-rank-card.html',\n styleUrl: './loro-store-rank-card.scss',standalone: true,\n imports: [DecimalPipe, LoroBadge, LoroImage],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoroStoreRankCard {\n rank = input.required<number>();\n name = input.required<string>();\n price = input.required<number>();\n delta = input<number>(0);\n logoName = input<LoroImageName | null>(null);\n best = input<boolean>(false);\n variant = input<LoroStoreRankCardVariant>('default');\n}\n","<article\n class=\"loro-store-rank-card\"\n [class.loro-store-rank-card--best]=\"best()\"\n [class.loro-store-rank-card--compact]=\"variant() === 'compact'\">\n @if (variant() !== 'compact') {\n <span class=\"loro-store-rank-card__rank\">{{ rank() }}</span>\n }\n @if (logoName()) {\n <loro-image class=\"loro-store-rank-card__logo\" [name]=\"logoName()!\" [alt]=\"name()\" width=\"100%\" height=\"100%\" fit=\"contain\" />\n } @else {\n <span class=\"loro-store-rank-card__mark\">{{ name().slice(0, 3) }}</span>\n }\n @if (variant() !== 'compact') {\n <h3>{{ name() }}</h3>\n }\n <strong>{{ price() | number: '1.2-2' }} €</strong>\n @if (variant() !== 'compact') {\n <loro-badge [label]=\"best() ? 'Mejor precio' : '+' + (delta() | number: '1.2-2') + ' €'\" [variant]=\"best() ? 'success' : 'info'\" />\n }\n </article>","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { LoroButton } from '../loro-button/loro-button';\nimport { LoroIcon } from '@loro-ui/components/resources/loro-icon';\nimport { LoroImage, type LoroImageName } from '../../resources/loro-image/loro-image';\n\n@Component({\n selector: 'loro-summary-bar',\n \n templateUrl: './loro-summary-bar.html',\n styleUrl: './loro-summary-bar.scss',standalone: true,\n imports: [LoroButton, LoroIcon, LoroImage],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoroSummaryBar {\n totalLabel = input<string>('Total estimado');\n total = input.required<number>();\n primaryLabel = input<string>('Ya lo he comprado');\n secondaryLabel = input<string>('Comparar precios');\n helper = input<string>('Los productos marcados se anadiran a tu despensa.');\n leftImage = input<LoroImageName>('loro-buy');\n rightImage = input<LoroImageName>('pantry-cabinet');\n primaryDisabled = input<boolean>(false);\n secondaryDisabled = input<boolean>(false);\n primaryAction = output<void>();\n secondaryAction = output<void>();\n}\n","<aside class=\"loro-summary-bar\">\n <div class=\"loro-summary-bar__total\">\n <small>{{ totalLabel() }}</small>\n <strong>{{ total().toLocaleString('es-ES', { minimumFractionDigits: 2 }) }} €</strong>\n @if (secondaryLabel()) {\n <loro-button\n [label]=\"secondaryLabel()\"\n icon=\"tag\"\n [iconSize]=\"20\"\n variant=\"outline\"\n [disabled]=\"secondaryDisabled()\"\n (buttonClick)=\"secondaryAction.emit()\" />\n }\n </div>\n <div class=\"loro-summary-bar__flow\" aria-hidden=\"true\">\n <loro-image [name]=\"leftImage()\" alt=\"\" width=\"5.9rem\" />\n <loro-icon name=\"arrow-right\" [size]=\"34\" alt=\"\" color=\"primary\" />\n <loro-image [name]=\"rightImage()\" alt=\"\" width=\"5.25rem\" />\n </div>\n <div class=\"loro-summary-bar__action\">\n <loro-button\n [label]=\"primaryLabel()\"\n icon=\"check\"\n [iconSize]=\"21\"\n [fullWidth]=\"true\"\n [disabled]=\"primaryDisabled()\"\n (buttonClick)=\"primaryAction.emit()\" />\n @if (helper()) {\n <small>{{ helper() }}</small>\n }\n </div>\n </aside>","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { LoroIcon, type LoroIconName } from '@loro-ui/components/resources/loro-icon';\n\nexport type LoroTabAlign = 'flex' | 'block';\n\nexport interface LoroTabOption {\n readonly value: string;\n readonly label: string;\n readonly icon?: LoroIconName | null;\n readonly ariaLabel?: string;\n}\n\n@Component({\n selector: 'loro-tab',\n \n templateUrl: './loro-tab.html',\n styleUrl: './loro-tab.scss',standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.--loro-tab-count]': 'options().length',\n },\n})\nexport class LoroTab {\n options = input.required<ReadonlyArray<LoroTabOption>>();\n value = input.required<string>();\n ariaLabel = input('');\n align = input<LoroTabAlign>('flex');\n iconSize = input(18);\n change = output<string>();\n}\n","<div\n class=\"loro-tab\"\n role=\"tablist\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [class.loro-tab--block]=\"align() === 'block'\"\n >\n @for (option of options(); track option.value) {\n <button\n type=\"button\"\n role=\"tab\"\n class=\"loro-tab__button\"\n [class.loro-tab__button--active]=\"value() === option.value\"\n [attr.aria-selected]=\"value() === option.value\"\n [attr.aria-label]=\"option.ariaLabel || option.label\"\n (click)=\"change.emit(option.value)\"\n >\n @if (option.icon) {\n <loro-icon\n [name]=\"option.icon\"\n [size]=\"iconSize()\"\n [alt]=\"option.label\"\n [decorative]=\"true\"\n [color]=\"value() === option.value ? 'primary' : 'muted'\"\n />\n }\n <span>{{ option.label }}</span>\n </button>\n }\n </div>","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n output,\n} from '@angular/core';\n\nimport { LoroIcon, type LoroIconColor, type LoroIconName } from '@loro-ui/components/resources/loro-icon';\n\nexport type LoroAlertVariant =\n | 'neutral'\n | 'info'\n | 'success'\n | 'warning'\n | 'error';\n\nexport type LoroAlertAnnouncement =\n | 'auto'\n | 'polite'\n | 'assertive'\n | 'off';\n\n@Component({\n selector: 'loro-alert',\n standalone: true,\n imports: [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 /** Visible heading. Keep it short and specific. */\n readonly title = input<string>('');\n\n /** Plain text body for common inline alerts. Rich content can still be projected. */\n readonly message = input<string>('');\n\n /** Semantic visual treatment. Meaning must never depend on colour alone. */\n readonly variant = input<LoroAlertVariant>('info');\n\n /** Controls live-region behaviour for dynamically inserted messages. */\n readonly announcement = input<LoroAlertAnnouncement>('auto');\n\n /** Allows programmatic focus without adding the alert to the Tab order. */\n readonly focusable = input<boolean>(false);\n\n /** Shows the built-in action button when a label is supplied. */\n readonly actionLabel = input<string>('');\n\n /** Shows a close button and emits dismissed when activated. */\n readonly dismissible = input<boolean>(false);\n\n /** Accessible name for the icon-only close button. */\n readonly dismissLabel = input<string>('Cerrar aviso');\n\n /** Emitted by the built-in action button. */\n readonly action = output<void>();\n\n /** Emitted by the close button. The parent decides whether to remove the alert. */\n readonly dismissed = output<void>();\n\n protected readonly resolvedIcon = computed<LoroIconName>(() => {\n switch (this.variant()) {\n case 'success':\n return 'tick-circle';\n\n case 'warning':\n case 'error':\n return 'shield-alert';\n\n case 'neutral':\n case 'info':\n default:\n return 'info';\n }\n });\n\n protected readonly resolvedIconColor = computed<LoroIconColor>(() =>\n this.variant() === 'error' ? 'danger' : 'currentColor',\n );\n\n protected readonly role = computed<'status' | 'alert' | null>(() => {\n const announcement = this.resolvedAnnouncement();\n\n if (announcement === 'off') {\n return null;\n }\n\n return announcement === 'assertive'\n ? 'alert'\n : 'status';\n });\n\n protected readonly ariaLive = computed<\n 'polite' | 'assertive' | null\n >(() => {\n const announcement = this.resolvedAnnouncement();\n\n return announcement === 'off'\n ? null\n : announcement;\n });\n\n private readonly resolvedAnnouncement = computed<\n 'polite' | 'assertive' | 'off'\n >(() => {\n const announcement = this.announcement();\n\n if (announcement !== 'auto') {\n return announcement;\n }\n\n return this.variant() === 'error'\n ? 'assertive'\n : 'polite';\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 <span class=\"loro-alert__icon\" aria-hidden=\"true\">\n <loro-icon\n [name]=\"resolvedIcon()\"\n [size]=\"20\"\n [alt]=\"''\"\n [color]=\"resolvedIconColor()\"\n />\n </span>\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 <ng-content />\n </div>\n\n @if (actionLabel()) {\n <div class=\"loro-alert__actions\">\n <button\n type=\"button\"\n class=\"loro-alert__action\"\n (click)=\"action.emit()\"\n >\n {{ actionLabel() }}\n </button>\n </div>\n }\n\n <ng-content select=\"[loroAlertActions]\" />\n </div>\n\n @if (dismissible()) {\n <button\n type=\"button\"\n class=\"loro-alert__dismiss\"\n [attr.aria-label]=\"dismissLabel()\"\n (click)=\"dismissed.emit()\"\n >\n <loro-icon\n class=\"loro-alert__dismiss-icon\"\n name=\"plus\"\n [size]=\"20\"\n [alt]=\"''\"\n [color]=\"'currentColor'\"\n aria-hidden=\"true\"\n />\n </button>\n }\n</aside>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { LoroIcon } from '@loro-ui/components/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 '@loro-ui/components/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 '@loro-ui/components/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\" fit=\"contain\" />\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 '@loro-ui/components/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 { ChangeDetectionStrategy, Component, computed, input, model, output, signal } from '@angular/core';\nimport type { FormValueControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\nimport { LoroIcon, type LoroIconName } from '@loro-ui/components/resources/loro-icon';\n\nexport type LoroAuthFieldState = 'default' | 'error';\n\nlet nextLoroAuthFieldId = 0;\n\n@Component({\n selector: 'loro-auth-field',\n \n templateUrl: './loro-auth-field.html',\n styleUrl: './loro-auth-field.scss',standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroAuthField implements FormValueControl<string> {\n icon = input.required<LoroIconName>();\n label = input.required<string>();\n placeholder = input.required<string>();\n value = model<string>('');\n type = input<'text' | 'email' | 'password'>('text');\n autocomplete = input<string>('off');\n selected = input<boolean>(false);\n state = input<LoroAuthFieldState>('default');\n errorMessage = input<string>('');\n errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n invalid = input(false);\n disabled = input(false);\n readonly = input(false);\n required = input(false);\n touched = model(false);\n valueChange = output<string>();\n\n protected readonly errorId = `loro-auth-field-error-${++nextLoroAuthFieldId}`;\n protected readonly errorText = computed(() => this.errorMessage().trim() || this.errors()[0]?.message?.trim() || '');\n protected readonly hasError = computed(\n () => this.state() === 'error' || this.errorText().length > 0 || (this.invalid() && this.touched()),\n );\n protected readonly passwordVisible = signal(false);\n\n protected showToggle() {\n return this.type() === 'password';\n }\n\n protected resolvedType() {\n return this.type() === 'password' && this.passwordVisible() ? 'text' : this.type();\n }\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 protected toggleVisibility() {\n this.passwordVisible.update((value) => !value);\n }\n}\n","<label\n class=\"loro-auth-field\"\n [class.loro-auth-field--selected]=\"selected()\"\n [class.loro-auth-field--error]=\"hasError()\"\n >\n <span class=\"sr-only\">{{ label() }}</span>\n <span class=\"loro-auth-field__icon\">\n <loro-icon [name]=\"icon()\" [size]=\"28\" [alt]=\"label()\" />\n </span>\n <input\n class=\"loro-auth-field__input\"\n [type]=\"resolvedType()\"\n [attr.autocomplete]=\"autocomplete()\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [attr.aria-invalid]=\"hasError() ? 'true' : null\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [required]=\"required()\"\n [attr.aria-describedby]=\"hasError() && errorText() ? errorId : null\"\n (input)=\"updateValue(($any($event.target).value ?? '').toString())\"\n (blur)=\"markAsTouched()\"\n />\n @if (showToggle()) {\n <button\n type=\"button\"\n class=\"loro-auth-field__toggle\"\n (click)=\"toggleVisibility()\"\n [attr.aria-label]=\"passwordVisible() ? 'Ocultar contenido' : 'Mostrar contenido'\"\n >\n <loro-icon name=\"eye\" [size]=\"26\" alt=\"Mostrar contenido\" />\n </button>\n }\n </label>\n @if (hasError() && errorText()) {\n <span class=\"loro-auth-field__error\" [id]=\"errorId\">\n <loro-icon name=\"shield-alert\" [size]=\"15\" color=\"danger\" [decorative]=\"true\" />\n <span>{{ errorText() }}</span>\n </span>\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 '@loro-ui/components/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 '@loro-ui/components/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 { 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 '../../components/loro-badge/loro-badge';\nimport { LoroButton } from '../../components/loro-button/loro-button';\nimport { LoroIcon, type LoroIconName } from '@loro-ui/components/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 [label]=\"actionLabel()\" variant=\"outline\" (buttonClick)=\"action.emit()\" />\n }\n </div>\n </article>","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 { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { LoroIcon } from '@loro-ui/components/resources/loro-icon';\n\n@Component({\n selector: 'loro-upload',\n \n templateUrl: './loro-upload.html',\n styleUrl: './loro-upload.scss',standalone: true,\n imports: [LoroIcon],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoroUpload {\n label = input<string>('Adjuntar captura');\n title = input<string>('Haz clic para seleccionar un archivo o arrastra y suelta aqui');\n description = input<string>('Formatos: PNG, JPG, GIF, PDF (max. 10 MB)');\n accept = input<string>('image/*,.pdf');\n optional = input<boolean>(true);\n compact = input<boolean>(false);\n fileSelected = output<File | null>();\n}\n","<label class=\"loro-upload\" [class.loro-upload--compact]=\"compact()\">\n @if (label()) {\n <span class=\"loro-upload__label\">{{ label() }} @if (optional()) {<small>Opcional</small>}</span>\n }\n <span class=\"loro-upload__drop\">\n <loro-icon name=\"paperclip\" [size]=\"28\" alt=\"Adjuntar archivo\" color=\"primary\" />\n <span class=\"loro-upload__copy\">\n <span>{{ title() }}</span>\n @if (description()) {\n <small>{{ description() }}</small>\n }\n </span>\n @if (compact()) {\n <loro-icon name=\"chevron-right\" [size]=\"22\" alt=\"Seleccionar\" color=\"primary\" />\n }\n <input type=\"file\" [accept]=\"accept()\" (change)=\"fileSelected.emit($any($event.target).files?.[0] ?? null)\" />\n </span>\n </label>","import { DOCUMENT } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal } from '@angular/core';\n\nexport type LoroModalSize = 'sm' | 'md' | 'lg';\nexport type LoroModalPlacement = 'center' | 'sheet';\n\n@Component({\n selector: 'loro-modal',\n \n templateUrl: './loro-modal.html',\n styleUrl: './loro-modal.scss',standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoroModal {\n private readonly document = inject(DOCUMENT);\n private dragStartY = 0;\n private dragStartTop = 0;\n\n open = input<boolean>(false);\n title = input<string>('');\n ariaLabel = input<string>('');\n size = input<LoroModalSize>('md');\n placement = input<LoroModalPlacement>('center');\n dismissible = input<boolean>(true);\n sheetDragToClose = input<boolean>(true);\n sheetRestTop = input<string>('');\n showBackdrop = input<boolean>(true);\n closeOnBackdrop = input<boolean>(true);\n modalClose = output<void>();\n\n protected readonly sheetDragging = signal(false);\n private readonly sheetTop = signal<number | null>(null);\n protected readonly sheetRestTopCss = computed(() =>\n this.isSheetInteractionEnabled() ? `${this.collapsedSheetTop()}px` : null\n );\n protected readonly sheetDragOffsetCss = computed(() => {\n if (!this.isSheetInteractionEnabled()) {\n return null;\n }\n\n return `${Math.max(0, this.currentSheetTop() - this.collapsedSheetTop())}px`;\n });\n protected readonly backdropOpacity = computed(() => {\n if (!this.isSheetInteractionEnabled()) {\n return '1';\n }\n\n const collapsedTop = this.collapsedSheetTop();\n const progress = (this.currentSheetTop() - collapsedTop) / Math.max(1, this.maxSheetTop() - collapsedTop);\n\n return String(0.42 - Math.min(0.18, progress * 0.18));\n });\n\n constructor() {\n effect((onCleanup) => {\n if (this.open()) {\n this.resetSheetState();\n this.lockDocumentScroll(onCleanup);\n }\n });\n }\n\n protected requestClose(): void {\n this.resetSheetState();\n this.modalClose.emit();\n }\n\n protected onCloseClick(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.requestClose();\n }\n\n protected onSheetTouchStart(event: TouchEvent, dialog: HTMLElement): void {\n if (!this.isSheetInteractionEnabled() || event.touches.length !== 1 || !this.isDragZone(event, dialog)) {\n return;\n }\n\n this.sheetDragging.set(true);\n this.dragStartY = event.touches[0].clientY;\n this.dragStartTop = this.currentSheetTop();\n event.preventDefault();\n }\n\n protected onSheetTouchMove(event: TouchEvent): void {\n if (!this.sheetDragging() || !this.isSheetInteractionEnabled() || event.touches.length !== 1) {\n return;\n }\n\n const deltaY = Math.max(0, event.touches[0].clientY - this.dragStartY);\n const nextTop = this.dragStartTop + deltaY;\n\n this.sheetTop.set(this.clampSheetTop(nextTop));\n event.preventDefault();\n }\n\n protected onSheetTouchEnd(): void {\n if (!this.sheetDragging()) {\n return;\n }\n\n this.sheetDragging.set(false);\n\n const currentTop = this.currentSheetTop();\n const collapsedTop = this.collapsedSheetTop();\n\n if (currentTop >= collapsedTop + 64) {\n this.requestClose();\n return;\n }\n\n this.sheetTop.set(collapsedTop);\n }\n\n private resetSheetState(): void {\n this.sheetDragging.set(false);\n this.sheetTop.set(this.isSheetInteractionEnabled() ? this.collapsedSheetTop() : null);\n }\n\n private currentSheetTop(): number {\n return this.sheetTop() ?? this.collapsedSheetTop();\n }\n\n private clampSheetTop(value: number): number {\n return Math.min(Math.max(value, this.collapsedSheetTop()), this.maxSheetTop());\n }\n\n private collapsedSheetTop(): number {\n const safeTop = this.safeAreaInsetTop();\n return Math.max(safeTop + 12, Math.min(88, Math.round(this.viewportHeight() * 0.1)));\n }\n\n private maxSheetTop(): number {\n return this.viewportHeight() - 56;\n }\n\n private viewportHeight(): number {\n const win = this.document.defaultView;\n\n if (!win) {\n return 844;\n }\n\n const visualHeight = win.visualViewport?.height ?? 0;\n const layoutHeight = Math.max(win.innerHeight, this.document.documentElement.clientHeight);\n\n if (visualHeight > 0 && visualHeight < layoutHeight * 0.75) {\n return visualHeight;\n }\n\n return Math.max(visualHeight, layoutHeight);\n }\n\n private safeAreaInsetTop(): number {\n const win = this.document.defaultView;\n\n if (!win) {\n return 0;\n }\n\n return Number.parseFloat(\n win.getComputedStyle(this.document.documentElement).getPropertyValue('env(safe-area-inset-top)'),\n ) || 0;\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 private isSheetInteractionEnabled(): boolean {\n return (\n this.placement() === 'sheet' &&\n (this.dismissible() || this.sheetDragToClose()) &&\n !!this.document.defaultView?.matchMedia('(max-width: 1023.88px)').matches\n );\n }\n\n private isDragZone(event: TouchEvent, dialog: HTMLElement): boolean {\n const touch = event.touches[0];\n\n if (!touch) {\n return false;\n }\n\n const target = event.target instanceof Element ? event.target : null;\n\n if (target?.closest('button, a, input, textarea, select, [contenteditable=\"true\"]')) {\n return false;\n }\n\n if (target?.closest('.loro-notification-panel__handle, .loro-modal__header')) {\n return true;\n }\n\n const dialogTop = dialog.getBoundingClientRect().top;\n return touch.clientY - dialogTop <= 52;\n }\n}\n","@if (open()) {\n <div class=\"loro-modal\" [class]=\"'loro-modal loro-modal--' + placement()\" role=\"presentation\">\n @if (showBackdrop()) {\n <button\n type=\"button\"\n class=\"loro-modal__backdrop\"\n aria-label=\"Close modal\"\n [style.opacity]=\"backdropOpacity()\"\n (click)=\"closeOnBackdrop() && requestClose()\"></button>\n }\n <section\n #dialog\n class=\"loro-modal__dialog\"\n [class]=\"'loro-modal__dialog loro-modal__dialog--' + size()\"\n [class.loro-modal__dialog--dragging]=\"sheetDragging()\"\n [style.--loro-modal-sheet-drag-y]=\"sheetDragOffsetCss()\"\n [style.--loro-modal-sheet-rest-top]=\"sheetRestTop() || sheetRestTopCss()\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"ariaLabel() || title()\"\n (touchstart)=\"onSheetTouchStart($event, dialog)\"\n (touchmove)=\"onSheetTouchMove($event)\"\n (touchend)=\"onSheetTouchEnd()\"\n (touchcancel)=\"onSheetTouchEnd()\">\n @if (title() || dismissible()) {\n <header class=\"loro-modal__header\">\n @if (title()) {\n <h2>{{ title() }}</h2>\n }\n @if (dismissible()) {\n <button\n type=\"button\"\n class=\"loro-modal__close\"\n aria-label=\"Cerrar modal\"\n (pointerdown)=\"$event.stopPropagation()\"\n (touchstart)=\"$event.stopPropagation()\"\n (click)=\"onCloseClick($event)\">\n X\n </button>\n }\n </header>\n }\n\n <div\n class=\"loro-modal__content\"\n [class.loro-modal__content--flush]=\"placement() === 'sheet' && !title()\">\n <ng-content />\n </div>\n\n <ng-content select=\"[loro-modal-actions]\" />\n </section>\n </div>\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>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["LoroIcon","LORO_ICON_PATHS","LORO_ICON_LEGACY_NAMES","optionalNumberAttribute"],"mappings":"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"}