@ajuarezso/sui-design-system 0.18.7 → 0.18.10

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.
@@ -1707,7 +1707,7 @@ const BRAND_DISPLAY_NAMES = {
1707
1707
  youtube: 'YouTube',
1708
1708
  };
1709
1709
  /** Sizes canon — alineados con sui-flag / sui-emoji. */
1710
- const SIZE_PX$1 = {
1710
+ const SIZE_PX$2 = {
1711
1711
  xs: 16,
1712
1712
  sm: 20,
1713
1713
  md: 24,
@@ -1771,7 +1771,7 @@ class SuiBrandLogo {
1771
1771
  rel = input('noopener noreferrer', ...(ngDevMode ? [{ debugName: "rel" }] : /* istanbul ignore next */ []));
1772
1772
  disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
1773
1773
  ariaLabel = input(null, ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
1774
- sizePx = computed(() => `${SIZE_PX$1[this.size()]}px`, ...(ngDevMode ? [{ debugName: "sizePx" }] : /* istanbul ignore next */ []));
1774
+ sizePx = computed(() => `${SIZE_PX$2[this.size()]}px`, ...(ngDevMode ? [{ debugName: "sizePx" }] : /* istanbul ignore next */ []));
1775
1775
  src = computed(() => `/assets/brand/brand-logos/${this.company()}-${this.variant()}.svg`, ...(ngDevMode ? [{ debugName: "src" }] : /* istanbul ignore next */ []));
1776
1776
  /** Alt label auto-derived from company name. Override via ariaLabel. */
1777
1777
  alt = computed(() => this.ariaLabel() ?? `${BRAND_DISPLAY_NAMES[this.company()]} logo`, ...(ngDevMode ? [{ debugName: "alt" }] : /* istanbul ignore next */ []));
@@ -9139,7 +9139,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
9139
9139
  }], propDecorators: { imageUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "imageUrl", required: false }] }], companyLogoSrc: [{ type: i0.Input, args: [{ isSignal: true, alias: "companyLogoSrc", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }], alignment: [{ type: i0.Input, args: [{ isSignal: true, alias: "alignment", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], labels: [{ type: i0.Input, args: [{ isSignal: true, alias: "labels", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], upload: [{ type: i0.Output, args: ["upload"] }], remove: [{ type: i0.Output, args: ["remove"] }], change: [{ type: i0.Output, args: ["change"] }] } });
9140
9140
 
9141
9141
  /** px values per size token */
9142
- const SIZE_PX = {
9142
+ const SIZE_PX$1 = {
9143
9143
  sm: 80,
9144
9144
  md: 120,
9145
9145
  lg: 160,
@@ -9258,7 +9258,7 @@ class SuiImageUpload {
9258
9258
  inputRef = viewChild('imgInput', ...(ngDevMode ? [{ debugName: "inputRef" }] : /* istanbul ignore next */ []));
9259
9259
  dragging = signal(false, ...(ngDevMode ? [{ debugName: "dragging" }] : /* istanbul ignore next */ []));
9260
9260
  internalError = signal(null, ...(ngDevMode ? [{ debugName: "internalError" }] : /* istanbul ignore next */ []));
9261
- sizePx = computed(() => SIZE_PX[this.size()], ...(ngDevMode ? [{ debugName: "sizePx" }] : /* istanbul ignore next */ []));
9261
+ sizePx = computed(() => SIZE_PX$1[this.size()], ...(ngDevMode ? [{ debugName: "sizePx" }] : /* istanbul ignore next */ []));
9262
9262
  /** Camera icon px en el empty state. xl escala a 20, resto 16
9263
9263
  * (matchea el escalado del contenedor 32→40 en SCSS). */
9264
9264
  iconSize = computed(() => (this.size() === 'xl' ? 20 : 16), ...(ngDevMode ? [{ debugName: "iconSize" }] : /* istanbul ignore next */ []));
@@ -10816,6 +10816,123 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
10816
10816
  }, template: "<!-- Brand logo (circle 40 / 48 seg\u00FAn appearance) -->\n<div class=\"sui-integration-switch__brand\" aria-hidden=\"true\">\n <ng-content select=\"[sui-integration-brand]\">\n @if (brandIconSrc(); as src) {\n <img [src]=\"src\" alt=\"\" class=\"sui-integration-switch__brand-img\" />\n } @else if (brandIcon(); as icon) {\n <sui-icon [name]=\"icon\" [size]=\"appearance() === 'list' ? 32 : 24\" />\n }\n </ng-content>\n</div>\n\n<!-- Title + description block -->\n<div class=\"sui-integration-switch__text\">\n <div class=\"sui-integration-switch__title-row\">\n <span class=\"sui-integration-switch__title\">{{ title() }}</span>\n @if (badgeCfg(); as bcfg) {\n <sui-badge\n class=\"sui-integration-switch__badge\"\n [color]=\"bcfg.color ?? 'orange'\"\n [variant]=\"bcfg.variant ?? 'light'\"\n [size]=\"bcfg.size ?? 'small'\"\n >{{ bcfg.label }}</sui-badge>\n }\n </div>\n @if (description(); as desc) {\n <p class=\"sui-integration-switch__description\">{{ desc }}</p>\n }\n</div>\n\n<!-- Manage button (trailing en horizontal, full-width en vertical) -->\n@if (manageCfg(); as mcfg) {\n <button\n type=\"button\"\n class=\"sui-integration-switch__manage\"\n [attr.aria-label]=\"mcfg.label\"\n [disabled]=\"isDisabled()\"\n (click)=\"onManageClick($event)\"\n (touchstart)=\"$event.currentTarget\"\n (touchend)=\"$any($event.currentTarget).blur()\"\n >\n <sui-icon [name]=\"mcfg.icon\" [size]=\"20\" />\n <span class=\"sui-integration-switch__manage-label\">{{ mcfg.label }}</span>\n </button>\n}\n\n<!-- Switch (inline en horizontal \u00B7 absolute top-right en vertical) -->\n@if (showToggle()) {\n <sui-switch\n class=\"sui-integration-switch__toggle\"\n [checked]=\"effectiveActive()\"\n [disabled]=\"isDisabled()\"\n (checkedChange)=\"onSwitchChange($event)\"\n />\n}\n", styles: ["@charset \"UTF-8\";:host{position:relative;display:flex;box-sizing:border-box;width:100%;font-family:var(--sui-font-sans, \"Inter\", system-ui, sans-serif);font-feature-settings:\"ss11\" 1,\"calt\" 0,\"liga\" 0}:host([data-sui-type=horizontal]){flex-direction:row;align-items:center;gap:14px}:host([data-sui-type=vertical]){flex-direction:column;align-items:flex-start;gap:14px}:host([data-sui-appearance=card]){padding:16px;background:var(--sui-bg-white-0);border:1px solid var(--sui-stroke-soft-200);border-radius:12px;box-shadow:var(--sui-shadow-x-small)}:host([data-sui-appearance=list]){padding:0;background:transparent;border:0}.sui-integration-switch__brand{box-sizing:border-box;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;padding:8px;background:var(--sui-bg-white-0);border:1px solid var(--sui-stroke-soft-200);border-radius:999px;box-shadow:var(--sui-shadow-x-small);overflow:hidden}:host([data-sui-appearance=card]) .sui-integration-switch__brand{width:40px;height:40px}:host([data-sui-appearance=list]) .sui-integration-switch__brand{width:48px;height:48px}.sui-integration-switch__brand-img{width:100%;height:100%;object-fit:contain;display:block}.sui-integration-switch__text{flex:1 0 0;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:4px}.sui-integration-switch__title-row{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.sui-integration-switch__title{color:var(--sui-text-strong-950);font-weight:500;word-break:break-word}:host([data-sui-appearance=card]) .sui-integration-switch__title{font-size:14px;line-height:20px;letter-spacing:-.006em}:host([data-sui-appearance=list]) .sui-integration-switch__title{font-size:16px;line-height:24px;letter-spacing:-.011em}.sui-integration-switch__description{margin:0;color:var(--sui-text-sub-600);font-weight:400;word-break:break-word}:host([data-sui-appearance=card]) .sui-integration-switch__description{font-size:12px;line-height:16px}:host([data-sui-appearance=list]) .sui-integration-switch__description{font-size:14px;line-height:20px;letter-spacing:-.006em}.sui-integration-switch__badge{flex-shrink:0}.sui-integration-switch__manage{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;gap:4px;padding:8px;background:var(--sui-bg-white-0);border:1px solid var(--sui-stroke-soft-200);border-radius:8px;box-shadow:var(--sui-shadow-x-small);color:var(--sui-text-sub-600);font-family:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color .15s ease,transform .12s ease}.sui-integration-switch__manage:hover:not(:disabled){background:var(--sui-bg-weak-50)}.sui-integration-switch__manage:active:not(:disabled){transform:scale(.97)}.sui-integration-switch__manage:focus-visible{outline:2px solid var(--sui-primary-base);outline-offset:2px}.sui-integration-switch__manage:disabled{opacity:.4;cursor:not-allowed}.sui-integration-switch__manage-label{padding:0 4px;font-size:14px;font-weight:500;line-height:20px;letter-spacing:-.006em}:host([data-sui-type=vertical]) .sui-integration-switch__manage{width:100%}.sui-integration-switch__toggle{flex-shrink:0}:host([data-sui-type=vertical]) .sui-integration-switch__toggle{position:absolute;top:19px;right:19px}:host([data-sui-type=vertical][data-sui-appearance=list]) .sui-integration-switch__toggle{top:12px;right:12px}:host([data-sui-disabled]){opacity:.5;pointer-events:none}\n"] }]
10817
10817
  }], propDecorators: { type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], brandIconSrc: [{ type: i0.Input, args: [{ isSignal: true, alias: "brandIconSrc", required: false }] }], brandIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "brandIcon", required: false }] }], badge: [{ type: i0.Input, args: [{ isSignal: true, alias: "badge", required: false }] }], manage: [{ type: i0.Input, args: [{ isSignal: true, alias: "manage", required: false }] }], showToggle: [{ type: i0.Input, args: [{ isSignal: true, alias: "showToggle", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }], activeChange: [{ type: i0.Output, args: ["activeChange"] }], manageClick: [{ type: i0.Output, args: ["manageClick"] }] } });
10818
10818
 
10819
+ /** Alto en px por size. En este componente el size manda el ALTO; el ancho sale
10820
+ * del aspect ratio del lockup, que no es cuadrado. */
10821
+ const SIZE_PX = {
10822
+ xs: 16,
10823
+ sm: 20,
10824
+ md: 24,
10825
+ lg: 32,
10826
+ xl: 40,
10827
+ '2xl': 48,
10828
+ };
10829
+ /**
10830
+ * SUI Logo — el logo de Master Pedidos, dibujado inline y coloreable.
10831
+ *
10832
+ * NO confundir con `sui-brand-logo`, que sirve logos de TERCEROS (Apple, Google,
10833
+ * Stripe…) como assets `<img>` intocables por compliance de marca. Este es el
10834
+ * logo PROPIO del producto: se inlinea justamente para poder teñirlo.
10835
+ *
10836
+ * ── El dibujo ────────────────────────────────────────────────────────────────
10837
+ * Son tres piezas: la M (isotipo) y las palabras «Master» y «Pedidos». Las dos
10838
+ * orientaciones son esas mismas tres piezas re-acomodadas, así que el path data
10839
+ * vive UNA sola vez en el template y lo único que cambia es el `viewBox` y el
10840
+ * `transform` de cada grupo:
10841
+ *
10842
+ * horizontal → M a la izquierda + bloque de palabra a la derecha, escala 1.
10843
+ * viewBox `0.218 3.987 773.623 266.421` (ratio 2.904:1)
10844
+ * stacked → M arriba + bloque de palabra debajo, centrado, escala 0.55765.
10845
+ * viewBox `-0.266 0.109 257.897 420.55` (ratio 0.613:1)
10846
+ * markOnly → solo la M.
10847
+ * viewBox `0.218 3.987 257.897 266.421` (ratio 0.968:1)
10848
+ *
10849
+ * Los viewBox son el bbox EXACTO medido con `getBBox()` sobre el dibujo, no un
10850
+ * lienzo con aire: el componente no aporta padding propio.
10851
+ *
10852
+ * En las dos orientaciones la palabra va en dos líneas («Master» sobre
10853
+ * «Pedidos»). El lockup de una sola línea es otro dibujo y no está acá.
10854
+ *
10855
+ * ── Color ────────────────────────────────────────────────────────────────────
10856
+ * `markColor` y `textColor` aceptan cualquier color CSS, y lo natural es pasar
10857
+ * un token: `markColor="var(--sui-primary-base)"`. Se aplican por custom
10858
+ * property (`--sui-logo-mark-color` / `--sui-logo-text-color`) y no por atributo
10859
+ * `fill`, porque un `var()` dentro de un atributo de presentación SVG no
10860
+ * resuelve.
10861
+ *
10862
+ * ── Tamaño ───────────────────────────────────────────────────────────────────
10863
+ * `size` fija el ALTO (xs=16 … 2xl=48) y el ancho sale solo. `height` es el
10864
+ * escape hatch para los altos que no están en la escala: un número son px
10865
+ * (28, 80…) y un string es cualquier valor CSS (`'60%'` para seguir al
10866
+ * contenedor). Si viene, gana sobre `size`.
10867
+ *
10868
+ * ── Accesibilidad ────────────────────────────────────────────────────────────
10869
+ * Por defecto el SVG va con `role="img"` y `aria-label="Master Pedidos"`: el
10870
+ * logo ES el nombre del producto. Cuando se pone al lado de un texto que ya dice
10871
+ * «Master Pedidos» (el `<h1>` de las pantallas «Acerca de»), pasar
10872
+ * `[decorative]="true"` para que el lector de pantalla no lo diga dos veces.
10873
+ *
10874
+ * Usage:
10875
+ * <sui-logo />
10876
+ * <sui-logo orientation="stacked" size="xl" />
10877
+ * <sui-logo [markOnly]="true" [decorative]="true" [height]="80" />
10878
+ * <sui-logo markColor="var(--sui-static-white)" textColor="var(--sui-static-white)" />
10879
+ */
10880
+ class SuiLogo {
10881
+ orientation = input('horizontal', ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
10882
+ /** Solo la M, sin la palabra. Cuando es `true`, `orientation` no aplica. */
10883
+ markOnly = input(false, ...(ngDevMode ? [{ debugName: "markOnly" }] : /* istanbul ignore next */ []));
10884
+ size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
10885
+ /**
10886
+ * Alto fuera de la escala. Número = px; string = cualquier valor CSS
10887
+ * (`'60%'` para seguir al contenedor, como hace `sui-icon` con `size`).
10888
+ * Si viene, gana sobre `size`.
10889
+ */
10890
+ height = input(null, ...(ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []));
10891
+ /** Color de la M. Token o cualquier color CSS. */
10892
+ markColor = input('var(--sui-primary-base)', ...(ngDevMode ? [{ debugName: "markColor" }] : /* istanbul ignore next */ []));
10893
+ /** Color de la palabra. Token o cualquier color CSS. */
10894
+ textColor = input('var(--sui-text-strong-950)', ...(ngDevMode ? [{ debugName: "textColor" }] : /* istanbul ignore next */ []));
10895
+ /** `true` cuando al lado ya está escrito «Master Pedidos». */
10896
+ decorative = input(false, ...(ngDevMode ? [{ debugName: "decorative" }] : /* istanbul ignore next */ []));
10897
+ ariaLabel = input('Master Pedidos', ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
10898
+ heightPx = computed(() => {
10899
+ const h = this.height();
10900
+ if (h === null)
10901
+ return `${SIZE_PX[this.size()]}px`;
10902
+ return typeof h === 'number' ? `${h}px` : h;
10903
+ }, ...(ngDevMode ? [{ debugName: "heightPx" }] : /* istanbul ignore next */ []));
10904
+ viewBox = computed(() => {
10905
+ if (this.markOnly())
10906
+ return '0.218 3.987 257.897 266.421';
10907
+ return this.orientation() === 'stacked'
10908
+ ? '-0.266 0.109 257.897 420.55'
10909
+ : '0.218 3.987 773.623 266.421';
10910
+ }, ...(ngDevMode ? [{ debugName: "viewBox" }] : /* istanbul ignore next */ []));
10911
+ /** En apilado la M se corre para que el bloque entero quede centrado. */
10912
+ markTransform = computed(() => !this.markOnly() && this.orientation() === 'stacked' ? 'translate(-0.484,-3.878)' : null, ...(ngDevMode ? [{ debugName: "markTransform" }] : /* istanbul ignore next */ []));
10913
+ masterTransform = computed(() => this.orientation() === 'stacked'
10914
+ ? 'translate(0,309.299) scale(0.55765) translate(39.626,0.082)'
10915
+ : 'matrix(1,0,0,1,311.359985,40.32)', ...(ngDevMode ? [{ debugName: "masterTransform" }] : /* istanbul ignore next */ []));
10916
+ pedidosTransform = computed(() => this.orientation() === 'stacked'
10917
+ ? 'translate(0,309.299) scale(0.55765) translate(0.3,110.402)'
10918
+ : 'matrix(1,0,0,1,312.480011,150.639999)', ...(ngDevMode ? [{ debugName: "pedidosTransform" }] : /* istanbul ignore next */ []));
10919
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SuiLogo, deps: [], target: i0.ɵɵFactoryTarget.Component });
10920
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: SuiLogo, isStandalone: true, selector: "sui-logo", inputs: { orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, markOnly: { classPropertyName: "markOnly", publicName: "markOnly", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, markColor: { classPropertyName: "markColor", publicName: "markColor", isSignal: true, isRequired: false, transformFunction: null }, textColor: { classPropertyName: "textColor", publicName: "textColor", isSignal: true, isRequired: false, transformFunction: null }, decorative: { classPropertyName: "decorative", publicName: "decorative", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.title": "null", "attr.data-sui-orientation": "markOnly() ? \"mark\" : orientation()", "attr.data-sui-size": "size()", "style.--sui-logo-height": "heightPx()", "style.--sui-logo-mark-color": "markColor()", "style.--sui-logo-text-color": "textColor()" } }, ngImport: i0, template: "<!-- El dibujo vive una sola vez: la M, la palabra \u00ABMaster\u00BB y la palabra\n \u00ABPedidos\u00BB son los mismos tres grupos en las dos orientaciones. Lo \u00FAnico que\n cambia entre horizontal y apilado es el viewBox y el transform de cada grupo. -->\n<svg\n class=\"sui-logo__svg\"\n [attr.viewBox]=\"viewBox()\"\n [attr.role]=\"decorative() ? null : 'img'\"\n [attr.aria-label]=\"decorative() ? null : ariaLabel()\"\n [attr.aria-hidden]=\"decorative() ? 'true' : null\"\n focusable=\"false\"\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n <g class=\"sui-logo__mark\" [attr.transform]=\"markTransform()\" fill-rule=\"nonzero\">\n <polygon points=\"21.2352 84.0784 57.3384 84.0784 60.3288 66.472 24.1752 66.472\" />\n <polygon points=\"30.072 31.0744 27.132 48.6976 63.3528 48.6976 66.3432 31.0744\" />\n <path d=\"M219.8112,31.0744 L145.8072,137.2336 C145.6392,137.5528 145.32,137.872 145.152,138.04 C144.6648,138.5272 144.0264,138.8464 143.3712,138.8464 C142.2456,138.8464 141.4392,138.208 140.952,137.2336 L104.5968,31.0744 L66.2088,31.0744 L63.0672,49.6888 L60.3288,66.4552 L60.2448,66.4552 L56.7672,87.0688 L54.348,101.8528 L54.2808,101.8528 L44.6544,158.8888 C42.7224,166.8016 35.9352,172.6312 27.5184,172.6312 L6.5184,172.6312 L0.2184,210.448 L45.6288,210.448 C61.7904,210.448 75.0456,199.2928 78.5904,184.2736 L79.0776,181.3672 L80.6904,172.648 L81.4968,167.9608 L92.3328,103.4824 L124.8072,193.3288 C124.9752,193.984 125.1264,194.6224 125.4624,195.2608 C126.924,198.3352 129.9816,200.4352 133.5432,200.4352 C135.9624,200.4352 138.2304,199.4608 139.8432,197.848 C139.8432,197.68 140.0112,197.5288 140.1624,197.5288 L141.288,195.748 L207.6984,102.1888 L179.256,270.4072 L217.56,270.4072 L258.1152,31.0912 L219.8112,31.0912 L219.8112,31.0744 Z\" />\n <circle cx=\"161.175613\" cy=\"31.0350292\" r=\"27.0484118\" />\n <polygon points=\"12.3816 137.2504 9.4416 154.8568 45.3264 154.8568 48.3168 137.2504\" />\n <polygon points=\"15.3384 119.476 51.3408 119.476 54.3312 101.8528 18.2784 101.8528\" />\n </g>\n\n @if (!markOnly()) {\n <g class=\"sui-logo__word\" [attr.transform]=\"masterTransform()\" fill-rule=\"nonzero\">\n <path d=\"M18.4912,86.296 L0.1456,86.296 L0.1456,0.1288 L27.5464,0.1288 L43.6912,68.6728 L59.3488,0.1288 L87.0016,0.1288 L87.0016,86.296 L68.656,86.296 L68.656,19.1632 L54.9808,77.3584 C53.7544,82.6 49.0672,86.3128 43.6912,86.3128 L43.6912,86.3128 C38.3152,86.3128 33.6616,82.6336 32.4016,77.4088 L18.508,19.18 L18.508,86.296 L18.4912,86.296 Z\" />\n <path d=\"M157.9816,86.296 L139.384,86.296 C137.8048,84.3976 137.4352,83.2216 137.4352,79.912 C131.32,86.0608 124.7176,89.0176 117.376,89.0176 C105.2632,89.0176 97.3168,81.34 97.3168,69.8656 C97.3168,58.3912 103.6672,51.8896 116.7712,49.7728 L123.6256,48.5968 C132.0592,47.3032 132.0592,47.3032 134.3944,46.1272 C136.2424,45.0688 137.3344,43.288 137.3344,41.1544 C137.3344,36.904 134.0248,34.7704 127.4224,34.7704 C118.9888,34.7704 116.1664,36.904 115.3096,43.5232 L98.7952,43.5232 C99.904,28.7392 109.1944,21.4144 127.036,21.4144 C144.8776,21.4144 154.0672,28.0336 154.0672,41.0368 L154.0672,76.5016 C154.0672,79.6936 155.0416,81.5752 157.9816,84.2968 L157.9816,86.296 Z M137.3176,56.1568 C135.352,57.0976 134.6296,57.3328 130.0936,58.1728 L124.2136,59.2312 C117.124,60.6592 114.436,63.0112 114.436,67.984 C114.436,72.7216 117.9808,75.6616 123.7264,75.6616 C132.412,75.6616 137.3008,70.2184 137.3008,60.6592 L137.3008,56.1568 L137.3176,56.1568 Z\" />\n <path d=\"M206.8696,43.036 C206.752,37.24 202.72,34.4008 194.5216,34.4008 C188.524,34.4008 184.6096,36.7696 184.6096,40.3144 C184.6096,42.9184 185.836,43.8592 190.6072,45.2704 L212.2624,51.3016 C220.948,53.788 225.232,59.1136 225.232,67.3792 C225.232,73.6456 222.292,79.5592 217.4032,83.3392 C212.5144,87.1192 205.5424,89.0008 196.3696,89.0008 C176.3104,89.0008 165.676,81.7936 165.1888,67.732 L181.9384,67.732 C182.6776,71.1592 183.4168,72.4528 185.248,73.7632 C187.4488,75.3088 190.876,76.0144 195.3952,76.0144 C203.3584,76.0144 208.1128,73.6456 208.1128,69.748 C208.1128,67.1608 206.6344,65.8504 202.3672,64.5568 L181.9384,58.408 C175.588,56.4088 173.5048,55.3336 171.1696,53.0992 C168.8512,50.6128 167.4904,46.9504 167.4904,42.7 C167.4904,29.5792 177.8896,21.4312 194.6392,21.4312 C212.38,21.4312 223.132,29.5792 223.384,43.0696 L206.8696,43.0696 L206.8696,43.036 Z\" />\n <path d=\"M266.2744,34.7704 L256.732,34.7704 L256.732,69.5128 C256.732,75.1744 257.8408,76.4848 262.36,76.4848 C263.704,76.4848 264.5608,76.3672 266.2744,76.132 L266.2744,87.724 C263.0992,88.6648 260.2768,89.0176 256.3624,89.0176 C245.1064,89.0176 239.6128,84.0616 239.6128,73.9984 L239.6128,34.7536 L231.1792,34.7536 L231.1792,23.7496 L239.6128,23.7496 L239.6128,6.6136 L256.732,6.6136 L256.732,23.7496 L266.2744,23.7496 L266.2744,34.7704 L266.2744,34.7704 Z\" />\n <path d=\"M289.492,59.6008 C289.744,65.632 290.3488,68.4544 291.9448,70.8232 C294.3808,74.368 298.2952,76.384 303.2008,76.384 C309.4336,76.384 314.2048,73.4272 316.288,68.3536 L333.172,68.3536 C329.3752,81.004 317.3968,89.0344 302.596,89.0344 C283.8808,89.0344 272.3896,76.5016 272.3896,56.056 C272.3896,34.6528 284.0152,21.4312 302.9656,21.4312 C316.3048,21.4312 326.9392,28.4032 331.3408,39.9784 C332.9368,44.4808 333.9112,50.3776 333.9112,56.7616 C333.9112,57.5848 333.9112,58.1896 333.7936,59.6008 L289.492,59.6008 L289.492,59.6008 Z M316.036,48.5968 C315.1792,39.1384 310.5256,34.0648 302.6968,34.0648 C295.1032,34.0648 290.836,38.8024 289.7272,48.5968 L316.036,48.5968 Z\" />\n <path d=\"M362.4712,22.4728 L362.4712,35.0056 C366.268,26.3704 372.988,21.4144 380.8168,21.4144 C381.556,21.4144 381.9256,21.4144 382.9,21.532 L382.9,38.3152 C380.5816,37.9624 379.3552,37.8448 377.5072,37.8448 C367.4776,37.8448 362.4712,42.6832 362.4712,52.3768 L362.4712,86.296 L345.352,86.296 L345.352,22.4728 L362.4712,22.4728 L362.4712,22.4728 Z\" />\n </g>\n <g class=\"sui-logo__word\" [attr.transform]=\"pedidosTransform()\" fill-rule=\"nonzero\">\n <path d=\"M18.8328,86.5704 L0.4872,86.5704 L0.4872,0.4032 L39.8664,0.4032 C58.4472,0.4032 68.6112,9.8616 68.6112,27.1152 C68.6112,44.604 58.0944,55.8432 41.6976,55.8432 L18.8328,55.8432 L18.8328,86.5704 Z M35.952,41.0592 C45.7464,41.0592 50.2656,36.9264 50.2656,28.056 C50.2656,19.3032 45.7464,15.1704 35.952,15.1704 L18.8328,15.1704 L18.8328,41.0592 L35.952,41.0592 Z\" />\n <path d=\"M89.7624,59.8584 C90.0144,65.8896 90.6192,68.712 92.2152,71.0808 C94.6512,74.6256 98.5656,76.6416 103.4712,76.6416 C109.704,76.6416 114.4752,73.6848 116.5584,68.6112 L133.4424,68.6112 C129.6456,81.2616 117.6672,89.292 102.8664,89.292 C84.1512,89.292 72.66,76.7592 72.66,56.3136 C72.66,34.9104 84.2856,21.6888 103.236,21.6888 C116.5752,21.6888 127.2096,28.6608 131.6112,40.236 C133.2072,44.7384 134.1816,50.6352 134.1816,57.0192 C134.1816,57.8424 134.1816,58.4472 134.064,59.8584 L89.7624,59.8584 L89.7624,59.8584 Z M116.3064,48.8544 C115.4496,39.396 110.796,34.3224 102.9672,34.3224 C95.3736,34.3224 91.1064,39.06 89.9976,48.8544 L116.3064,48.8544 Z\" />\n <path d=\"M189.252,80.0688 C184.968,86.4528 179.34,89.292 171.024,89.292 C162.96,89.292 154.8792,85.3944 150.36,79.128 C145.9584,72.9792 143.2704,64.2432 143.2704,55.608 C143.2704,36.3384 155.2656,21.6888 171.0408,21.6888 C179.3568,21.6888 184.9848,24.6456 189.2688,31.0296 L189.2688,0.42 L206.388,0.42 L206.388,86.5872 L189.2688,86.5872 L189.2688,80.0688 L189.252,80.0688 Z M160.3896,55.608 C160.3896,67.3008 166.2528,75.4656 174.8208,75.4656 C183.372,75.4656 189.252,67.4352 189.252,55.8432 C189.252,43.5456 183.4896,35.5151741 174.8208,35.5151741 C166.2528,35.4984 160.3896,43.6632 160.3896,55.608 Z\" />\n <rect x=\"222.6\" y=\"22.7472\" width=\"17.1192\" height=\"63.8232\" />\n <path d=\"M297.9144,80.0688 C293.6304,86.4528 288.0024,89.292 279.6864,89.292 C271.6224,89.292 263.5416,85.3944 259.0224,79.128 C254.6208,72.9792 251.9328,64.2432 251.9328,55.608 C251.9328,36.3384 263.928,21.6888 279.7032,21.6888 C288.0192,21.6888 293.6472,24.6456 297.9312,31.0296 L297.9312,0.42 L315.0504,0.42 L315.0504,86.5872 L297.9312,86.5872 L297.9312,80.0688 L297.9144,80.0688 Z M269.052,55.608 C269.052,67.3008 274.9152,75.4656 283.4832,75.4656 C292.0344,75.4656 297.9144,67.4352 297.9144,55.8432 C297.9144,43.5456 292.152,35.5151741 283.4832,35.5151741 C274.9152,35.4984 269.052,43.6632 269.052,55.608 Z\" />\n <path d=\"M392.6664,55.944 C392.6664,76.5072 380.2008,89.2752 360.0072,89.2752 C339.7128,89.2752 327.348,76.5072 327.348,55.4736 C327.348,34.5576 339.696,21.672 359.8728,21.672 C380.5536,21.672 392.6664,34.3224 392.6664,55.944 Z M344.4672,55.4736 C344.4672,67.7712 350.7,75.9192 360.0072,75.9192 C369.18,75.9192 375.5472,67.6536 375.5472,55.7088 C375.5472,43.176 369.432,35.028 360.0072,35.028 C350.7168,35.028 344.4672,43.1928 344.4672,55.4736 Z\" />\n <path d=\"M442.9992,43.3104 C442.8816,37.5144 438.8328,34.6752 430.6512,34.6752 C424.6536,34.6752 420.7392,37.044 420.7392,40.5888 C420.7392,43.1928 421.9656,44.1336 426.7368,45.5448 L448.392,51.576 C457.0776,54.0624 461.3616,59.388 461.3616,67.6536 C461.3616,73.92 458.4216,79.8336 453.5328,83.6136 C448.644,87.3936 441.672,89.2752 432.4992,89.2752 C412.44,89.2752 401.8056,82.068 401.3184,68.0064 L418.068,68.0064 C418.8072,71.4336 419.5464,72.7272 421.3776,74.0376 C423.5784,75.5832 427.0056,76.2888 431.5248,76.2888 C439.488,76.2888 444.2424,73.92 444.2424,70.0224 C444.2424,67.4352 442.7808,66.1248 438.4968,64.8312 L418.068,58.6824 C411.7176,56.6832 409.6344,55.608 407.2992,53.3736 C404.9808,50.8872 403.6368,47.2248 403.6368,42.9744 C403.6368,29.8536 414.036,21.7056 430.7856,21.7056 C448.5264,21.7056 459.2784,29.8536 459.5304,43.344 L442.9992,43.344 L442.9992,43.3104 Z\" />\n <ellipse cx=\"231.168\" cy=\"8.6688\" rx=\"8.5512\" ry=\"8.2656\" />\n </g>\n }\n</svg>\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;height:var(--sui-logo-height, 24px);width:auto;flex-shrink:0}.sui-logo__svg{display:block;height:100%;width:auto;overflow:visible}.sui-logo__mark{fill:var(--sui-logo-mark-color)}.sui-logo__word{fill:var(--sui-logo-text-color)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
10921
+ }
10922
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SuiLogo, decorators: [{
10923
+ type: Component,
10924
+ args: [{ selector: 'sui-logo', changeDetection: ChangeDetectionStrategy.OnPush, host: {
10925
+ /* El input `title` no existe acá, pero el host igual podría recibir un
10926
+ `title=""` desde el template consumidor — se stripea por convención. */
10927
+ '[attr.title]': 'null',
10928
+ '[attr.data-sui-orientation]': 'markOnly() ? "mark" : orientation()',
10929
+ '[attr.data-sui-size]': 'size()',
10930
+ '[style.--sui-logo-height]': 'heightPx()',
10931
+ '[style.--sui-logo-mark-color]': 'markColor()',
10932
+ '[style.--sui-logo-text-color]': 'textColor()',
10933
+ }, template: "<!-- El dibujo vive una sola vez: la M, la palabra \u00ABMaster\u00BB y la palabra\n \u00ABPedidos\u00BB son los mismos tres grupos en las dos orientaciones. Lo \u00FAnico que\n cambia entre horizontal y apilado es el viewBox y el transform de cada grupo. -->\n<svg\n class=\"sui-logo__svg\"\n [attr.viewBox]=\"viewBox()\"\n [attr.role]=\"decorative() ? null : 'img'\"\n [attr.aria-label]=\"decorative() ? null : ariaLabel()\"\n [attr.aria-hidden]=\"decorative() ? 'true' : null\"\n focusable=\"false\"\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n <g class=\"sui-logo__mark\" [attr.transform]=\"markTransform()\" fill-rule=\"nonzero\">\n <polygon points=\"21.2352 84.0784 57.3384 84.0784 60.3288 66.472 24.1752 66.472\" />\n <polygon points=\"30.072 31.0744 27.132 48.6976 63.3528 48.6976 66.3432 31.0744\" />\n <path d=\"M219.8112,31.0744 L145.8072,137.2336 C145.6392,137.5528 145.32,137.872 145.152,138.04 C144.6648,138.5272 144.0264,138.8464 143.3712,138.8464 C142.2456,138.8464 141.4392,138.208 140.952,137.2336 L104.5968,31.0744 L66.2088,31.0744 L63.0672,49.6888 L60.3288,66.4552 L60.2448,66.4552 L56.7672,87.0688 L54.348,101.8528 L54.2808,101.8528 L44.6544,158.8888 C42.7224,166.8016 35.9352,172.6312 27.5184,172.6312 L6.5184,172.6312 L0.2184,210.448 L45.6288,210.448 C61.7904,210.448 75.0456,199.2928 78.5904,184.2736 L79.0776,181.3672 L80.6904,172.648 L81.4968,167.9608 L92.3328,103.4824 L124.8072,193.3288 C124.9752,193.984 125.1264,194.6224 125.4624,195.2608 C126.924,198.3352 129.9816,200.4352 133.5432,200.4352 C135.9624,200.4352 138.2304,199.4608 139.8432,197.848 C139.8432,197.68 140.0112,197.5288 140.1624,197.5288 L141.288,195.748 L207.6984,102.1888 L179.256,270.4072 L217.56,270.4072 L258.1152,31.0912 L219.8112,31.0912 L219.8112,31.0744 Z\" />\n <circle cx=\"161.175613\" cy=\"31.0350292\" r=\"27.0484118\" />\n <polygon points=\"12.3816 137.2504 9.4416 154.8568 45.3264 154.8568 48.3168 137.2504\" />\n <polygon points=\"15.3384 119.476 51.3408 119.476 54.3312 101.8528 18.2784 101.8528\" />\n </g>\n\n @if (!markOnly()) {\n <g class=\"sui-logo__word\" [attr.transform]=\"masterTransform()\" fill-rule=\"nonzero\">\n <path d=\"M18.4912,86.296 L0.1456,86.296 L0.1456,0.1288 L27.5464,0.1288 L43.6912,68.6728 L59.3488,0.1288 L87.0016,0.1288 L87.0016,86.296 L68.656,86.296 L68.656,19.1632 L54.9808,77.3584 C53.7544,82.6 49.0672,86.3128 43.6912,86.3128 L43.6912,86.3128 C38.3152,86.3128 33.6616,82.6336 32.4016,77.4088 L18.508,19.18 L18.508,86.296 L18.4912,86.296 Z\" />\n <path d=\"M157.9816,86.296 L139.384,86.296 C137.8048,84.3976 137.4352,83.2216 137.4352,79.912 C131.32,86.0608 124.7176,89.0176 117.376,89.0176 C105.2632,89.0176 97.3168,81.34 97.3168,69.8656 C97.3168,58.3912 103.6672,51.8896 116.7712,49.7728 L123.6256,48.5968 C132.0592,47.3032 132.0592,47.3032 134.3944,46.1272 C136.2424,45.0688 137.3344,43.288 137.3344,41.1544 C137.3344,36.904 134.0248,34.7704 127.4224,34.7704 C118.9888,34.7704 116.1664,36.904 115.3096,43.5232 L98.7952,43.5232 C99.904,28.7392 109.1944,21.4144 127.036,21.4144 C144.8776,21.4144 154.0672,28.0336 154.0672,41.0368 L154.0672,76.5016 C154.0672,79.6936 155.0416,81.5752 157.9816,84.2968 L157.9816,86.296 Z M137.3176,56.1568 C135.352,57.0976 134.6296,57.3328 130.0936,58.1728 L124.2136,59.2312 C117.124,60.6592 114.436,63.0112 114.436,67.984 C114.436,72.7216 117.9808,75.6616 123.7264,75.6616 C132.412,75.6616 137.3008,70.2184 137.3008,60.6592 L137.3008,56.1568 L137.3176,56.1568 Z\" />\n <path d=\"M206.8696,43.036 C206.752,37.24 202.72,34.4008 194.5216,34.4008 C188.524,34.4008 184.6096,36.7696 184.6096,40.3144 C184.6096,42.9184 185.836,43.8592 190.6072,45.2704 L212.2624,51.3016 C220.948,53.788 225.232,59.1136 225.232,67.3792 C225.232,73.6456 222.292,79.5592 217.4032,83.3392 C212.5144,87.1192 205.5424,89.0008 196.3696,89.0008 C176.3104,89.0008 165.676,81.7936 165.1888,67.732 L181.9384,67.732 C182.6776,71.1592 183.4168,72.4528 185.248,73.7632 C187.4488,75.3088 190.876,76.0144 195.3952,76.0144 C203.3584,76.0144 208.1128,73.6456 208.1128,69.748 C208.1128,67.1608 206.6344,65.8504 202.3672,64.5568 L181.9384,58.408 C175.588,56.4088 173.5048,55.3336 171.1696,53.0992 C168.8512,50.6128 167.4904,46.9504 167.4904,42.7 C167.4904,29.5792 177.8896,21.4312 194.6392,21.4312 C212.38,21.4312 223.132,29.5792 223.384,43.0696 L206.8696,43.0696 L206.8696,43.036 Z\" />\n <path d=\"M266.2744,34.7704 L256.732,34.7704 L256.732,69.5128 C256.732,75.1744 257.8408,76.4848 262.36,76.4848 C263.704,76.4848 264.5608,76.3672 266.2744,76.132 L266.2744,87.724 C263.0992,88.6648 260.2768,89.0176 256.3624,89.0176 C245.1064,89.0176 239.6128,84.0616 239.6128,73.9984 L239.6128,34.7536 L231.1792,34.7536 L231.1792,23.7496 L239.6128,23.7496 L239.6128,6.6136 L256.732,6.6136 L256.732,23.7496 L266.2744,23.7496 L266.2744,34.7704 L266.2744,34.7704 Z\" />\n <path d=\"M289.492,59.6008 C289.744,65.632 290.3488,68.4544 291.9448,70.8232 C294.3808,74.368 298.2952,76.384 303.2008,76.384 C309.4336,76.384 314.2048,73.4272 316.288,68.3536 L333.172,68.3536 C329.3752,81.004 317.3968,89.0344 302.596,89.0344 C283.8808,89.0344 272.3896,76.5016 272.3896,56.056 C272.3896,34.6528 284.0152,21.4312 302.9656,21.4312 C316.3048,21.4312 326.9392,28.4032 331.3408,39.9784 C332.9368,44.4808 333.9112,50.3776 333.9112,56.7616 C333.9112,57.5848 333.9112,58.1896 333.7936,59.6008 L289.492,59.6008 L289.492,59.6008 Z M316.036,48.5968 C315.1792,39.1384 310.5256,34.0648 302.6968,34.0648 C295.1032,34.0648 290.836,38.8024 289.7272,48.5968 L316.036,48.5968 Z\" />\n <path d=\"M362.4712,22.4728 L362.4712,35.0056 C366.268,26.3704 372.988,21.4144 380.8168,21.4144 C381.556,21.4144 381.9256,21.4144 382.9,21.532 L382.9,38.3152 C380.5816,37.9624 379.3552,37.8448 377.5072,37.8448 C367.4776,37.8448 362.4712,42.6832 362.4712,52.3768 L362.4712,86.296 L345.352,86.296 L345.352,22.4728 L362.4712,22.4728 L362.4712,22.4728 Z\" />\n </g>\n <g class=\"sui-logo__word\" [attr.transform]=\"pedidosTransform()\" fill-rule=\"nonzero\">\n <path d=\"M18.8328,86.5704 L0.4872,86.5704 L0.4872,0.4032 L39.8664,0.4032 C58.4472,0.4032 68.6112,9.8616 68.6112,27.1152 C68.6112,44.604 58.0944,55.8432 41.6976,55.8432 L18.8328,55.8432 L18.8328,86.5704 Z M35.952,41.0592 C45.7464,41.0592 50.2656,36.9264 50.2656,28.056 C50.2656,19.3032 45.7464,15.1704 35.952,15.1704 L18.8328,15.1704 L18.8328,41.0592 L35.952,41.0592 Z\" />\n <path d=\"M89.7624,59.8584 C90.0144,65.8896 90.6192,68.712 92.2152,71.0808 C94.6512,74.6256 98.5656,76.6416 103.4712,76.6416 C109.704,76.6416 114.4752,73.6848 116.5584,68.6112 L133.4424,68.6112 C129.6456,81.2616 117.6672,89.292 102.8664,89.292 C84.1512,89.292 72.66,76.7592 72.66,56.3136 C72.66,34.9104 84.2856,21.6888 103.236,21.6888 C116.5752,21.6888 127.2096,28.6608 131.6112,40.236 C133.2072,44.7384 134.1816,50.6352 134.1816,57.0192 C134.1816,57.8424 134.1816,58.4472 134.064,59.8584 L89.7624,59.8584 L89.7624,59.8584 Z M116.3064,48.8544 C115.4496,39.396 110.796,34.3224 102.9672,34.3224 C95.3736,34.3224 91.1064,39.06 89.9976,48.8544 L116.3064,48.8544 Z\" />\n <path d=\"M189.252,80.0688 C184.968,86.4528 179.34,89.292 171.024,89.292 C162.96,89.292 154.8792,85.3944 150.36,79.128 C145.9584,72.9792 143.2704,64.2432 143.2704,55.608 C143.2704,36.3384 155.2656,21.6888 171.0408,21.6888 C179.3568,21.6888 184.9848,24.6456 189.2688,31.0296 L189.2688,0.42 L206.388,0.42 L206.388,86.5872 L189.2688,86.5872 L189.2688,80.0688 L189.252,80.0688 Z M160.3896,55.608 C160.3896,67.3008 166.2528,75.4656 174.8208,75.4656 C183.372,75.4656 189.252,67.4352 189.252,55.8432 C189.252,43.5456 183.4896,35.5151741 174.8208,35.5151741 C166.2528,35.4984 160.3896,43.6632 160.3896,55.608 Z\" />\n <rect x=\"222.6\" y=\"22.7472\" width=\"17.1192\" height=\"63.8232\" />\n <path d=\"M297.9144,80.0688 C293.6304,86.4528 288.0024,89.292 279.6864,89.292 C271.6224,89.292 263.5416,85.3944 259.0224,79.128 C254.6208,72.9792 251.9328,64.2432 251.9328,55.608 C251.9328,36.3384 263.928,21.6888 279.7032,21.6888 C288.0192,21.6888 293.6472,24.6456 297.9312,31.0296 L297.9312,0.42 L315.0504,0.42 L315.0504,86.5872 L297.9312,86.5872 L297.9312,80.0688 L297.9144,80.0688 Z M269.052,55.608 C269.052,67.3008 274.9152,75.4656 283.4832,75.4656 C292.0344,75.4656 297.9144,67.4352 297.9144,55.8432 C297.9144,43.5456 292.152,35.5151741 283.4832,35.5151741 C274.9152,35.4984 269.052,43.6632 269.052,55.608 Z\" />\n <path d=\"M392.6664,55.944 C392.6664,76.5072 380.2008,89.2752 360.0072,89.2752 C339.7128,89.2752 327.348,76.5072 327.348,55.4736 C327.348,34.5576 339.696,21.672 359.8728,21.672 C380.5536,21.672 392.6664,34.3224 392.6664,55.944 Z M344.4672,55.4736 C344.4672,67.7712 350.7,75.9192 360.0072,75.9192 C369.18,75.9192 375.5472,67.6536 375.5472,55.7088 C375.5472,43.176 369.432,35.028 360.0072,35.028 C350.7168,35.028 344.4672,43.1928 344.4672,55.4736 Z\" />\n <path d=\"M442.9992,43.3104 C442.8816,37.5144 438.8328,34.6752 430.6512,34.6752 C424.6536,34.6752 420.7392,37.044 420.7392,40.5888 C420.7392,43.1928 421.9656,44.1336 426.7368,45.5448 L448.392,51.576 C457.0776,54.0624 461.3616,59.388 461.3616,67.6536 C461.3616,73.92 458.4216,79.8336 453.5328,83.6136 C448.644,87.3936 441.672,89.2752 432.4992,89.2752 C412.44,89.2752 401.8056,82.068 401.3184,68.0064 L418.068,68.0064 C418.8072,71.4336 419.5464,72.7272 421.3776,74.0376 C423.5784,75.5832 427.0056,76.2888 431.5248,76.2888 C439.488,76.2888 444.2424,73.92 444.2424,70.0224 C444.2424,67.4352 442.7808,66.1248 438.4968,64.8312 L418.068,58.6824 C411.7176,56.6832 409.6344,55.608 407.2992,53.3736 C404.9808,50.8872 403.6368,47.2248 403.6368,42.9744 C403.6368,29.8536 414.036,21.7056 430.7856,21.7056 C448.5264,21.7056 459.2784,29.8536 459.5304,43.344 L442.9992,43.344 L442.9992,43.3104 Z\" />\n <ellipse cx=\"231.168\" cy=\"8.6688\" rx=\"8.5512\" ry=\"8.2656\" />\n </g>\n }\n</svg>\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;height:var(--sui-logo-height, 24px);width:auto;flex-shrink:0}.sui-logo__svg{display:block;height:100%;width:auto;overflow:visible}.sui-logo__mark{fill:var(--sui-logo-mark-color)}.sui-logo__word{fill:var(--sui-logo-text-color)}\n"] }]
10934
+ }], propDecorators: { orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], markOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "markOnly", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], markColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "markColor", required: false }] }], textColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "textColor", required: false }] }], decorative: [{ type: i0.Input, args: [{ isSignal: true, alias: "decorative", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] } });
10935
+
10819
10936
  /**
10820
10937
  * SUI Modal Sheet — bottom sheet con breakpoints (estilo Apple Maps / Ionic ion-modal sheet).
10821
10938
  *
@@ -15750,8 +15867,22 @@ class SuiStatusBadge {
15750
15867
  * En appearance="light", el texto mantiene state-base salvo para status="disabled".
15751
15868
  */
15752
15869
  withDot = input(false, ...(ngDevMode ? [{ debugName: "withDot" }] : /* istanbul ignore next */ []));
15753
- /** Icono Remix mapeado al status. Solo se usa cuando withDot=false. */
15754
- iconName = computed(() => {
15870
+ /**
15871
+ * Icono propio, en lugar del que trae el status.
15872
+ *
15873
+ * El status manda el COLOR y, por defecto, también el icono — que es lo
15874
+ * correcto para un estado: un pago completado siempre lleva el mismo check.
15875
+ * Pero el componente también se usa para etiquetas de marca («Local
15876
+ * exclusivo», «Mismo precio que en el local»), donde el color semántico
15877
+ * sirve y el icono no: ahí la «i» de `information` no dice exclusividad.
15878
+ *
15879
+ * Nombre Remix SIN prefijo, igual que `sui-icon` (`vip-crown-2-fill`).
15880
+ * Vacío = el del status. No hace nada con `withDot`.
15881
+ */
15882
+ icon = input('', ...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
15883
+ /** El icono que se pinta: el propio si lo hay, si no el del status. */
15884
+ iconName = computed(() => this.icon().trim() || this.iconoDelStatus(), ...(ngDevMode ? [{ debugName: "iconName" }] : /* istanbul ignore next */ []));
15885
+ iconoDelStatus = computed(() => {
15755
15886
  switch (this.status()) {
15756
15887
  case 'completed': return 'checkbox-circle-fill';
15757
15888
  case 'pending': return 'alert-fill';
@@ -15759,9 +15890,9 @@ class SuiStatusBadge {
15759
15890
  case 'information': return 'information-fill';
15760
15891
  case 'disabled': return 'forbid-fill';
15761
15892
  }
15762
- }, ...(ngDevMode ? [{ debugName: "iconName" }] : /* istanbul ignore next */ []));
15893
+ }, ...(ngDevMode ? [{ debugName: "iconoDelStatus" }] : /* istanbul ignore next */ []));
15763
15894
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SuiStatusBadge, deps: [], target: i0.ɵɵFactoryTarget.Component });
15764
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: SuiStatusBadge, isStandalone: true, selector: "sui-status-badge", inputs: { status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, withDot: { classPropertyName: "withDot", publicName: "withDot", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-sui-status": "status()", "attr.data-sui-appearance": "appearance()", "attr.data-sui-with-dot": "withDot() ? \"\" : null", "attr.role": "\"status\"" } }, ngImport: i0, template: "@if (withDot()) {\n <span class=\"sui-status-badge__dot\" aria-hidden=\"true\"></span>\n} @else {\n <span class=\"sui-status-badge__icon\" aria-hidden=\"true\">\n <sui-icon [name]=\"iconName()\" [size]=\"12\" />\n </span>\n}\n<span class=\"sui-status-badge__label\"><ng-content></ng-content></span>\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex;align-items:center;box-sizing:border-box;height:24px;padding:4px 8px 4px 4px;border:1px solid transparent;border-radius:var(--sui-radius-6);font-family:var(--sui-font-sans);font-size:var(--sui-type-label-xs-size);font-weight:var(--sui-type-label-xs-weight);line-height:var(--sui-type-label-xs-line);letter-spacing:var(--sui-type-label-xs-spacing);font-feature-settings:\"ss11\" 1,\"calt\" 0,\"liga\" 0;white-space:nowrap;vertical-align:middle;overflow:clip;gap:4px}:host([data-sui-with-dot]){gap:2px}.sui-status-badge__icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0}.sui-status-badge__dot{display:inline-block;width:16px;height:16px;flex-shrink:0;background-image:radial-gradient(circle at center,currentColor 0,currentColor 3px,transparent 3.5px)}.sui-status-badge__label{display:inline-flex;align-items:center}:host([data-sui-status=completed][data-sui-appearance=stroke]){background:var(--sui-bg-white-0);border-color:var(--sui-stroke-soft-200);color:var(--sui-state-success-base)}:host([data-sui-status=completed][data-sui-appearance=stroke]) .sui-status-badge__label{color:var(--sui-text-sub-600)}:host([data-sui-status=completed][data-sui-appearance=light]){background:var(--sui-state-success-lighter);border-color:transparent;color:var(--sui-state-success-base)}:host([data-sui-status=completed][data-sui-appearance=light]) .sui-status-badge__label{color:var(--sui-state-success-base)}:host([data-sui-status=pending][data-sui-appearance=stroke]){background:var(--sui-bg-white-0);border-color:var(--sui-stroke-soft-200);color:var(--sui-state-warning-base)}:host([data-sui-status=pending][data-sui-appearance=stroke]) .sui-status-badge__label{color:var(--sui-text-sub-600)}:host([data-sui-status=pending][data-sui-appearance=light]){background:var(--sui-state-warning-lighter);border-color:transparent;color:var(--sui-state-warning-base)}:host([data-sui-status=pending][data-sui-appearance=light]) .sui-status-badge__label{color:var(--sui-state-warning-base)}:host([data-sui-status=failed][data-sui-appearance=stroke]){background:var(--sui-bg-white-0);border-color:var(--sui-stroke-soft-200);color:var(--sui-state-error-base)}:host([data-sui-status=failed][data-sui-appearance=stroke]) .sui-status-badge__label{color:var(--sui-text-sub-600)}:host([data-sui-status=failed][data-sui-appearance=light]){background:var(--sui-state-error-lighter);border-color:transparent;color:var(--sui-state-error-base)}:host([data-sui-status=failed][data-sui-appearance=light]) .sui-status-badge__label{color:var(--sui-state-error-base)}:host([data-sui-status=information][data-sui-appearance=stroke]){background:var(--sui-bg-white-0);border-color:var(--sui-stroke-soft-200);color:var(--sui-state-information-base)}:host([data-sui-status=information][data-sui-appearance=stroke]) .sui-status-badge__label{color:var(--sui-text-sub-600)}:host([data-sui-status=information][data-sui-appearance=light]){background:var(--sui-state-information-lighter);border-color:transparent;color:var(--sui-state-information-base)}:host([data-sui-status=information][data-sui-appearance=light]) .sui-status-badge__label{color:var(--sui-state-information-base)}:host([data-sui-status=disabled][data-sui-appearance=stroke]){background:var(--sui-bg-white-0);border-color:var(--sui-stroke-soft-200);color:var(--sui-state-faded-base)}:host([data-sui-status=disabled][data-sui-appearance=stroke]) .sui-status-badge__label{color:var(--sui-text-sub-600)}:host([data-sui-status=disabled][data-sui-appearance=light]){background:var(--sui-state-faded-lighter);border-color:transparent;color:var(--sui-state-faded-base)}:host([data-sui-status=disabled][data-sui-appearance=light]) .sui-status-badge__label{color:var(--sui-state-faded-base)}:host([data-sui-status=disabled][data-sui-appearance=light]) .sui-status-badge__label{color:var(--sui-text-sub-600)}\n"], dependencies: [{ kind: "component", type: SuiIcon, selector: "sui-icon", inputs: ["name", "size", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
15895
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: SuiStatusBadge, isStandalone: true, selector: "sui-status-badge", inputs: { status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, withDot: { classPropertyName: "withDot", publicName: "withDot", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-sui-status": "status()", "attr.data-sui-appearance": "appearance()", "attr.data-sui-with-dot": "withDot() ? \"\" : null", "attr.role": "\"status\"" } }, ngImport: i0, template: "@if (withDot()) {\n <span class=\"sui-status-badge__dot\" aria-hidden=\"true\"></span>\n} @else {\n <span class=\"sui-status-badge__icon\" aria-hidden=\"true\">\n <sui-icon [name]=\"iconName()\" [size]=\"12\" />\n </span>\n}\n<span class=\"sui-status-badge__label\"><ng-content></ng-content></span>\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex;align-items:center;box-sizing:border-box;height:24px;padding:4px 8px 4px 4px;border:1px solid transparent;border-radius:var(--sui-radius-6);font-family:var(--sui-font-sans);font-size:var(--sui-type-label-xs-size);font-weight:var(--sui-type-label-xs-weight);line-height:var(--sui-type-label-xs-line);letter-spacing:var(--sui-type-label-xs-spacing);font-feature-settings:\"ss11\" 1,\"calt\" 0,\"liga\" 0;white-space:nowrap;vertical-align:middle;overflow:clip;gap:4px}:host([data-sui-with-dot]){gap:2px}.sui-status-badge__icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0}.sui-status-badge__dot{display:inline-block;width:16px;height:16px;flex-shrink:0;background-image:radial-gradient(circle at center,currentColor 0,currentColor 3px,transparent 3.5px)}.sui-status-badge__label{display:inline-flex;align-items:center}:host([data-sui-status=completed][data-sui-appearance=stroke]){background:var(--sui-bg-white-0);border-color:var(--sui-stroke-soft-200);color:var(--sui-state-success-base)}:host([data-sui-status=completed][data-sui-appearance=stroke]) .sui-status-badge__label{color:var(--sui-text-sub-600)}:host([data-sui-status=completed][data-sui-appearance=light]){background:var(--sui-state-success-lighter);border-color:transparent;color:var(--sui-state-success-base)}:host([data-sui-status=completed][data-sui-appearance=light]) .sui-status-badge__label{color:var(--sui-state-success-base)}:host([data-sui-status=pending][data-sui-appearance=stroke]){background:var(--sui-bg-white-0);border-color:var(--sui-stroke-soft-200);color:var(--sui-state-warning-base)}:host([data-sui-status=pending][data-sui-appearance=stroke]) .sui-status-badge__label{color:var(--sui-text-sub-600)}:host([data-sui-status=pending][data-sui-appearance=light]){background:var(--sui-state-warning-lighter);border-color:transparent;color:var(--sui-state-warning-base)}:host([data-sui-status=pending][data-sui-appearance=light]) .sui-status-badge__label{color:var(--sui-state-warning-base)}:host([data-sui-status=failed][data-sui-appearance=stroke]){background:var(--sui-bg-white-0);border-color:var(--sui-stroke-soft-200);color:var(--sui-state-error-base)}:host([data-sui-status=failed][data-sui-appearance=stroke]) .sui-status-badge__label{color:var(--sui-text-sub-600)}:host([data-sui-status=failed][data-sui-appearance=light]){background:var(--sui-state-error-lighter);border-color:transparent;color:var(--sui-state-error-base)}:host([data-sui-status=failed][data-sui-appearance=light]) .sui-status-badge__label{color:var(--sui-state-error-base)}:host([data-sui-status=information][data-sui-appearance=stroke]){background:var(--sui-bg-white-0);border-color:var(--sui-stroke-soft-200);color:var(--sui-state-information-base)}:host([data-sui-status=information][data-sui-appearance=stroke]) .sui-status-badge__label{color:var(--sui-text-sub-600)}:host([data-sui-status=information][data-sui-appearance=light]){background:var(--sui-state-information-lighter);border-color:transparent;color:var(--sui-state-information-base)}:host([data-sui-status=information][data-sui-appearance=light]) .sui-status-badge__label{color:var(--sui-state-information-base)}:host([data-sui-status=disabled][data-sui-appearance=stroke]){background:var(--sui-bg-white-0);border-color:var(--sui-stroke-soft-200);color:var(--sui-state-faded-base)}:host([data-sui-status=disabled][data-sui-appearance=stroke]) .sui-status-badge__label{color:var(--sui-text-sub-600)}:host([data-sui-status=disabled][data-sui-appearance=light]){background:var(--sui-state-faded-lighter);border-color:transparent;color:var(--sui-state-faded-base)}:host([data-sui-status=disabled][data-sui-appearance=light]) .sui-status-badge__label{color:var(--sui-state-faded-base)}:host([data-sui-status=disabled][data-sui-appearance=light]) .sui-status-badge__label{color:var(--sui-text-sub-600)}\n"], dependencies: [{ kind: "component", type: SuiIcon, selector: "sui-icon", inputs: ["name", "size", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
15765
15896
  }
15766
15897
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SuiStatusBadge, decorators: [{
15767
15898
  type: Component,
@@ -15771,7 +15902,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
15771
15902
  '[attr.data-sui-with-dot]': 'withDot() ? "" : null',
15772
15903
  '[attr.role]': '"status"',
15773
15904
  }, template: "@if (withDot()) {\n <span class=\"sui-status-badge__dot\" aria-hidden=\"true\"></span>\n} @else {\n <span class=\"sui-status-badge__icon\" aria-hidden=\"true\">\n <sui-icon [name]=\"iconName()\" [size]=\"12\" />\n </span>\n}\n<span class=\"sui-status-badge__label\"><ng-content></ng-content></span>\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex;align-items:center;box-sizing:border-box;height:24px;padding:4px 8px 4px 4px;border:1px solid transparent;border-radius:var(--sui-radius-6);font-family:var(--sui-font-sans);font-size:var(--sui-type-label-xs-size);font-weight:var(--sui-type-label-xs-weight);line-height:var(--sui-type-label-xs-line);letter-spacing:var(--sui-type-label-xs-spacing);font-feature-settings:\"ss11\" 1,\"calt\" 0,\"liga\" 0;white-space:nowrap;vertical-align:middle;overflow:clip;gap:4px}:host([data-sui-with-dot]){gap:2px}.sui-status-badge__icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0}.sui-status-badge__dot{display:inline-block;width:16px;height:16px;flex-shrink:0;background-image:radial-gradient(circle at center,currentColor 0,currentColor 3px,transparent 3.5px)}.sui-status-badge__label{display:inline-flex;align-items:center}:host([data-sui-status=completed][data-sui-appearance=stroke]){background:var(--sui-bg-white-0);border-color:var(--sui-stroke-soft-200);color:var(--sui-state-success-base)}:host([data-sui-status=completed][data-sui-appearance=stroke]) .sui-status-badge__label{color:var(--sui-text-sub-600)}:host([data-sui-status=completed][data-sui-appearance=light]){background:var(--sui-state-success-lighter);border-color:transparent;color:var(--sui-state-success-base)}:host([data-sui-status=completed][data-sui-appearance=light]) .sui-status-badge__label{color:var(--sui-state-success-base)}:host([data-sui-status=pending][data-sui-appearance=stroke]){background:var(--sui-bg-white-0);border-color:var(--sui-stroke-soft-200);color:var(--sui-state-warning-base)}:host([data-sui-status=pending][data-sui-appearance=stroke]) .sui-status-badge__label{color:var(--sui-text-sub-600)}:host([data-sui-status=pending][data-sui-appearance=light]){background:var(--sui-state-warning-lighter);border-color:transparent;color:var(--sui-state-warning-base)}:host([data-sui-status=pending][data-sui-appearance=light]) .sui-status-badge__label{color:var(--sui-state-warning-base)}:host([data-sui-status=failed][data-sui-appearance=stroke]){background:var(--sui-bg-white-0);border-color:var(--sui-stroke-soft-200);color:var(--sui-state-error-base)}:host([data-sui-status=failed][data-sui-appearance=stroke]) .sui-status-badge__label{color:var(--sui-text-sub-600)}:host([data-sui-status=failed][data-sui-appearance=light]){background:var(--sui-state-error-lighter);border-color:transparent;color:var(--sui-state-error-base)}:host([data-sui-status=failed][data-sui-appearance=light]) .sui-status-badge__label{color:var(--sui-state-error-base)}:host([data-sui-status=information][data-sui-appearance=stroke]){background:var(--sui-bg-white-0);border-color:var(--sui-stroke-soft-200);color:var(--sui-state-information-base)}:host([data-sui-status=information][data-sui-appearance=stroke]) .sui-status-badge__label{color:var(--sui-text-sub-600)}:host([data-sui-status=information][data-sui-appearance=light]){background:var(--sui-state-information-lighter);border-color:transparent;color:var(--sui-state-information-base)}:host([data-sui-status=information][data-sui-appearance=light]) .sui-status-badge__label{color:var(--sui-state-information-base)}:host([data-sui-status=disabled][data-sui-appearance=stroke]){background:var(--sui-bg-white-0);border-color:var(--sui-stroke-soft-200);color:var(--sui-state-faded-base)}:host([data-sui-status=disabled][data-sui-appearance=stroke]) .sui-status-badge__label{color:var(--sui-text-sub-600)}:host([data-sui-status=disabled][data-sui-appearance=light]){background:var(--sui-state-faded-lighter);border-color:transparent;color:var(--sui-state-faded-base)}:host([data-sui-status=disabled][data-sui-appearance=light]) .sui-status-badge__label{color:var(--sui-state-faded-base)}:host([data-sui-status=disabled][data-sui-appearance=light]) .sui-status-badge__label{color:var(--sui-text-sub-600)}\n"] }]
15774
- }], propDecorators: { status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], withDot: [{ type: i0.Input, args: [{ isSignal: true, alias: "withDot", required: false }] }] } });
15905
+ }], propDecorators: { status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], withDot: [{ type: i0.Input, args: [{ isSignal: true, alias: "withDot", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }] } });
15775
15906
 
15776
15907
  /**
15777
15908
  * SUI Stepper — SUI Design System 2.0
@@ -16023,6 +16154,35 @@ class SuiStoreCard {
16023
16154
  isFavorite = input(false, ...(ngDevMode ? [{ debugName: "isFavorite" }] : /* istanbul ignore next */ []));
16024
16155
  /** Si true, no se navega al detalle (caso suspendido). El padre puede sobreescribir. */
16025
16156
  disableLink = input(false, ...(ngDevMode ? [{ debugName: "disableLink" }] : /* istanbul ignore next */ []));
16157
+ /**
16158
+ * El texto de Envío y el de Distancia, ya escritos por quien llama.
16159
+ *
16160
+ * ## Por qué existen: la tarjeta DIBUJA, no decide
16161
+ *
16162
+ * El costo de envío se calcula en un solo lugar de la app
16163
+ * (`StateService.computeDeliveryFee`) desde un bug real: la tarjeta decía
16164
+ * S/ 1,90 y el checkout cobraba S/ 1,50, porque cada vista lo deducía por su
16165
+ * cuenta. Un componente del design system que deduce precios es esa misma
16166
+ * trampa, un piso más abajo — y encima repartida entre todas las apps que lo
16167
+ * consuman. Lo mismo vale para la distancia, que según de dónde salga el
16168
+ * número se escribe como rango («menos de 500 m», mientras es un estimado) o
16169
+ * como número exacto («475 m», cuando la ruta ya se midió): esa distinción
16170
+ * la conoce la app, no la tarjeta.
16171
+ *
16172
+ * ## Los tres estados, y por qué son tres
16173
+ *
16174
+ * | valor | qué hace |
16175
+ * |---|---|
16176
+ * | sin pasar (`undefined`) | la tarjeta lo deduce como siempre — nada cambia para quien ya la usa |
16177
+ * | un string | se muestra tal cual |
16178
+ * | `null` | esa columna NO se renderiza (ni guion ni hueco) |
16179
+ *
16180
+ * `null` tiene que ser distinto de «no lo pasé» justamente para poder pedir
16181
+ * que el dato desaparezca. Al quedar tres columnas en vez de cuatro, la fila
16182
+ * se reparte mejor y el distrito deja de cortarse en «San Jeróni…».
16183
+ */
16184
+ deliveryText = input(...(ngDevMode ? [undefined, { debugName: "deliveryText" }] : /* istanbul ignore next */ []));
16185
+ distanceText = input(...(ngDevMode ? [undefined, { debugName: "distanceText" }] : /* istanbul ignore next */ []));
16026
16186
  toggleFavorite = output();
16027
16187
  /** Emite cuando el usuario tapea la sección de calificación. El padre debe
16028
16188
  * abrir `StoreRatingsModalService.open(id, name, logoUrl)` para mostrar
@@ -16062,7 +16222,13 @@ class SuiStoreCard {
16062
16222
  const nota = (s.rating != null && s.rating > 0 ? s.rating : 5).toFixed(2).replace(/0$/, '');
16063
16223
  return `${nota} (${n})`;
16064
16224
  }, ...(ngDevMode ? [{ debugName: "ratingLabel" }] : /* istanbul ignore next */ []));
16225
+ /** El texto de Distancia: el que le pasaron, o el que deduce del `distanceKm`
16226
+ * cuando nadie le pasó nada. `null` = no se pinta la columna (ver
16227
+ * `distanceText`). */
16065
16228
  distanceLabel = computed(() => {
16229
+ const dado = this.distanceText();
16230
+ if (dado !== undefined)
16231
+ return dado;
16066
16232
  const km = this.store().distanceKm;
16067
16233
  if (km == null)
16068
16234
  return '—';
@@ -16081,8 +16247,13 @@ class SuiStoreCard {
16081
16247
  default: return { label: 'En revisión', variant: 'pending' };
16082
16248
  }
16083
16249
  }, ...(ngDevMode ? [{ debugName: "previewBadge" }] : /* istanbul ignore next */ []));
16084
- /** Etiqueta corta de envío (Gratis/Recojo/Courier/S/X). */
16250
+ /** El texto de Envío: el que le pasaron, o la etiqueta corta que deduce del
16251
+ * `deliveryType` (Gratis/Recojo/Courier/S/X) cuando nadie le pasó nada.
16252
+ * `null` = no se pinta la columna (ver `deliveryText`). */
16085
16253
  deliveryLabel = computed(() => {
16254
+ const dado = this.deliveryText();
16255
+ if (dado !== undefined)
16256
+ return dado;
16086
16257
  const s = this.store();
16087
16258
  switch (s.deliveryType) {
16088
16259
  case 'free': return 'Gratis';
@@ -16109,12 +16280,12 @@ class SuiStoreCard {
16109
16280
  this.ratingClicked.emit({ id: s.id, name: s.name, logoUrl: s.logoUrl ?? null });
16110
16281
  }
16111
16282
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SuiStoreCard, deps: [], target: i0.ɵɵFactoryTarget.Component });
16112
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: SuiStoreCard, isStandalone: true, selector: "sui-store-card", inputs: { store: { classPropertyName: "store", publicName: "store", isSignal: true, isRequired: true, transformFunction: null }, isFavorite: { classPropertyName: "isFavorite", publicName: "isFavorite", isSignal: true, isRequired: false, transformFunction: null }, disableLink: { classPropertyName: "disableLink", publicName: "disableLink", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { toggleFavorite: "toggleFavorite", ratingClicked: "ratingClicked" }, ngImport: i0, template: "<a class=\"store\"\n [class.store--suspended]=\"store().isSuspended\"\n [class.store--closed]=\"!store().isOpen && !store().isSuspended && !store().isOwnerPreview\"\n [class.store--preview]=\"store().isOwnerPreview\"\n [routerLink]=\"link()\"\n (click)=\"onCardClick($event)\">\n\n <div class=\"store__cover\"\n [class.store__cover--fallback]=\"!store().coverUrl\">\n <!-- <img> real (no background CSS): permite retry nativo via suiImgRetry\n cuando un load falla (red flaky) + fade-in al cargar. El fallback\n oscuro queda debajo como placeholder hasta que la imagen aparece. -->\n @if (store().coverUrl) {\n <img class=\"store__cover-img\"\n suiImgRetry\n [src]=\"store().coverUrl\"\n alt=\"\"\n loading=\"lazy\"\n decoding=\"async\" />\n }\n <div class=\"store__cover-grad\"></div>\n\n @if (!store().isOwnerPreview) {\n <button type=\"button\"\n class=\"store__fav\"\n [class.store__fav--active]=\"isFavorite()\"\n (click)=\"onFavClick($event)\"\n aria-label=\"Favorito\">\n <sui-icon\n [name]=\"isFavorite() ? 'heart-fill' : 'heart-line'\"\n [size]=\"18\"\n color=\"var(--sui-primary-base, #fa7319)\"\n ></sui-icon>\n </button>\n }\n\n @if (store().isSuspended) {\n <span class=\"store__status store__status--suspended\">No disponible</span>\n } @else if (previewBadge(); as pb) {\n <span class=\"store__status\"\n [class.store__status--draft]=\"pb.variant === 'draft'\"\n [class.store__status--pending]=\"pb.variant === 'pending'\"\n [class.store__status--rejected]=\"pb.variant === 'rejected'\">\n {{ pb.label }}\n </span>\n } @else {\n <span class=\"store__status\"\n [class.store__status--open]=\"store().isOpen\"\n [class.store__status--closed]=\"!store().isOpen\">\n {{ store().isOpen ? 'Abierto' : 'Cerrado' }}\n </span>\n }\n </div>\n\n <div class=\"store__body\">\n <div class=\"store__logo\">\n @if (store().logoUrl) {\n <!-- suiImgRetry reintenta loads fallidos; si muere definitivo, el\n atributo data-sui-img-dead lo oculta via CSS (queda el fondo). -->\n <img suiImgRetry [src]=\"store().logoUrl\" [alt]=\"store().name\" />\n } @else {\n {{ initial() }}\n }\n </div>\n <div class=\"store__info\">\n <h3 class=\"store__name\">{{ store().name }}</h3>\n <p class=\"store__type\">{{ store().businessType }}</p>\n </div>\n\n <!-- Meta a ANCHO COMPLETO de la card (hijo directo del body con wrap):\n antes viv\u00EDa dentro de store__info y heredaba el sangrado del logo\n (60px muertos a la izquierda). -->\n @if (store().isOwnerPreview) {\n <!-- Modo preview (owner viendo borrador/revisi\u00F3n, super-admin revisando):\n solo Ubicaci\u00F3n + Env\u00EDo. Rating + Distancia no aplican antes de aprobar. -->\n <div class=\"store__meta store__meta--preview\">\n <!-- El distrito es el \u00FAnico dato de largo variable de la fila, as\u00ED que\n es el que cede: ver \u00ABSan Jer\u00F3ni\u2026\u00BB cuesta menos que ver los cuatro\n stats pis\u00E1ndose. Por eso lleva `--elastico`. -->\n <div class=\"store__stat store__stat--elastico\">\n <span class=\"store__stat-label\">Ubicaci\u00F3n</span>\n <span class=\"store__stat-value\">\n <sui-icon name=\"map-pin-line\" [size]=\"13\" color=\"var(--sui-primary-base, #fa7319)\"></sui-icon>\n <span class=\"store__stat-texto\">{{ store().district || '\u2014' }}</span>\n </span>\n </div>\n <div class=\"store__stat\">\n <span class=\"store__stat-label\">Env\u00EDo</span>\n <span class=\"store__stat-value\">{{ deliveryLabel() }}</span>\n </div>\n </div>\n } @else {\n <div class=\"store__meta\">\n <button\n type=\"button\"\n class=\"store__stat store__stat--clickable\"\n (click)=\"onRatingClick($event)\"\n (touchstart)=\"$event.currentTarget\"\n (touchend)=\"$any($event.currentTarget).blur()\"\n [attr.aria-label]=\"'Ver las opiniones y la informaci\u00F3n del local'\"\n >\n <span class=\"store__stat-label\">Calificaci\u00F3n</span>\n <span class=\"store__stat-value\">\n <sui-icon name=\"star-fill\" [size]=\"13\" color=\"var(--sui-primary-base, #fa7319)\"></sui-icon>\n {{ ratingLabel() }}\n <!-- El chevron es lo que dice que la nota ABRE algo. Sin \u00E9l el\n stat se lee como dato muerto y nadie lo toca \u2014 el mismo\n remate que la ficha del local usa junto al puntaje. Va\n siempre, incluso sin opiniones: el modal tambi\u00E9n trae la\n pesta\u00F1a de informaci\u00F3n \u2014mapa, horario, direcci\u00F3n\u2014, que sirve\n igual el primer d\u00EDa del local. -->\n <sui-icon class=\"store__stat-chevron\" name=\"arrow-right-s-line\" [size]=\"14\"></sui-icon>\n </span>\n </button>\n <!-- El distrito es el \u00FAnico dato de largo variable de la fila, as\u00ED que\n es el que cede: ver \u00ABSan Jer\u00F3ni\u2026\u00BB cuesta menos que ver los cuatro\n stats pis\u00E1ndose. Por eso lleva `--elastico`. -->\n <div class=\"store__stat store__stat--elastico\">\n <span class=\"store__stat-label\">Ubicaci\u00F3n</span>\n <span class=\"store__stat-value\">\n <sui-icon name=\"map-pin-line\" [size]=\"13\" color=\"var(--sui-primary-base, #fa7319)\"></sui-icon>\n <span class=\"store__stat-texto\">{{ store().district || '\u2014' }}</span>\n </span>\n </div>\n <div class=\"store__stat\">\n <span class=\"store__stat-label\">Env\u00EDo</span>\n <span class=\"store__stat-value\">{{ deliveryLabel() }}</span>\n </div>\n <div class=\"store__stat\">\n <span class=\"store__stat-label\">Distancia</span>\n <span class=\"store__stat-value\">{{ distanceLabel() }}</span>\n </div>\n </div>\n }\n </div>\n</a>\n", styles: ["@charset \"UTF-8\";.mp-badge{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:6px;font-size:12px;font-weight:600;white-space:nowrap;border:1px solid transparent;line-height:1}.mp-badge--green{background:var(--admin-success-bg, #dcfce7);color:var(--admin-success, #16a34a)}.mp-badge--red{background:var(--admin-error-bg, #fee2e2);color:var(--admin-error, #ef4444)}.mp-badge--orange{background:#fff7ed;color:#c2410c;border-color:#fed7aa}.mp-badge--blue{background:var(--admin-info-bg, #dbeafe);color:#2563eb}.mp-badge--gray{background:var(--admin-bg-tertiary, #f3f4f6);color:var(--admin-text-tertiary, #6b7280)}.mp-badge--sm{height:20px;padding:0 8px;font-size:11px}.mp-action-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:30px;padding:0 12px;border-radius:6px;border:1px solid transparent;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;white-space:nowrap;transition:all .15s ease}.mp-action-btn:disabled{opacity:.5;cursor:not-allowed}.mp-action-btn--activate{background:var(--admin-success, #16a34a);color:#fff}.mp-action-btn--activate:hover{background:#15803d}.mp-action-btn--renew{background:var(--admin-info, #3b82f6);color:#fff}.mp-action-btn--renew:hover{background:#2563eb}.mp-action-btn--suspend{background:var(--admin-bg-primary, #fff);color:var(--admin-error, #ef4444);border-color:#fca5a5}.mp-action-btn--suspend:hover{background:var(--admin-error-bg, #fee2e2)}.mp-action-btn--danger{background:#dc2626;color:#fff;border:none}.mp-action-btn--danger:hover{background:#b91c1c}.mp-action-btn--outline{background:var(--admin-bg-primary, #fff);color:var(--admin-text-secondary, #374151);border-color:var(--admin-border-primary, #e5e7eb)}.mp-action-btn--outline:hover{background:var(--admin-bg-hover, #f9fafb)}.mp-action-btn--icon{width:28px;height:28px;padding:0;background:transparent;color:var(--admin-text-muted, #9ca3af);border:none}.mp-action-btn--icon:hover{background:var(--admin-bg-hover, #f9fafb);color:var(--admin-text-primary, #171717)}.mp-action-btn--icon-danger{width:28px;height:28px;padding:0;background:transparent;color:#dc2626;border:none}.mp-action-btn--icon-danger:hover{background:var(--admin-error-bg, #fee2e2);color:#dc2626}:host{display:block}.store{-webkit-touch-callout:none;-webkit-user-drag:none;user-select:none;-webkit-user-select:none}.store img{-webkit-user-drag:none;pointer-events:none}.store{display:block;background:var(--sui-bg-white-0, #fff);border:1px solid var(--sui-stroke-soft-200, #ebebeb);border-radius:16px;overflow:hidden;text-decoration:none;color:inherit;transition:box-shadow .2s ease,transform .2s ease;cursor:pointer}.store:active{transform:scale(.995);box-shadow:0 4px 14px #00000014}.store--suspended{cursor:not-allowed;opacity:.6}.store--closed .store__cover{filter:grayscale(1) brightness(.92);transition:filter .2s ease}.store--preview{cursor:default}.store--preview:active{transform:none;box-shadow:none}.store__cover{height:120px;position:relative;overflow:hidden;background:linear-gradient(135deg,#3a3a3a,#171717)}.store__cover-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .25s ease-out}.store__cover-img.sui-img-loaded{opacity:1}.store__cover-img[data-sui-img-dead]{display:none}.store__cover-grad{position:absolute;inset:0;background:linear-gradient(180deg,#0000 40%,#00000059);pointer-events:none}.store__fav{position:absolute;top:10px;left:10px;width:36px;height:36px;border-radius:999px;background:#ffffffeb;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:1;transition:background .15s ease}.store__fav:active{background:#fff}.store__status{position:absolute;top:10px;right:10px;padding:4px 10px;border-radius:999px;font-size:11px;font-weight:700;background:#ffffffeb;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:inline-flex;align-items:center;gap:4px;z-index:1;letter-spacing:.01em}.store__status:before{content:\"\";width:6px;height:6px;border-radius:50%;background:var(--sui-state-success-base, #22c55e)}.store__status--open{color:var(--sui-state-success-base, #16a34a)}.store__status--open:before{background:var(--sui-state-success-base, #22c55e)}.store__status--closed{color:var(--sui-state-faded-base, #94a3b8)}.store__status--closed:before{background:var(--sui-state-faded-base, #94a3b8)}.store__status--suspended{color:var(--sui-state-error-base, #dc2626)}.store__status--suspended:before{background:var(--sui-state-error-base, #dc2626)}.store__status--draft{color:var(--sui-state-faded-base, #475569);background:#fffffff5}.store__status--draft:before{background:var(--sui-state-faded-base, #94a3b8)}.store__status--pending{color:var(--sui-primary-darkest, #b85513);background:#fffffff5}.store__status--pending:before{background:var(--sui-primary-base, #fa7319);animation:store-pulse 1.6s ease-in-out infinite}.store__status--rejected{color:var(--sui-state-error-base, #b91c1c);background:#fffffff5}.store__status--rejected:before{background:var(--sui-state-error-base, #dc2626)}@keyframes store-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(1.4)}}.store__body{padding:12px 14px 14px;display:flex;flex-wrap:wrap;gap:12px;align-items:flex-start}.store__logo img[data-sui-img-dead]{display:none}.store__logo{width:48px;height:48px;border-radius:10px;background:var(--sui-static-white, #fff);border:2px solid var(--sui-static-white, #fff);box-shadow:0 1px 4px #0000001f;flex-shrink:0;margin-top:-32px;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:800;color:var(--sui-primary-base, #fa7319);overflow:hidden;position:relative;z-index:2}.store__logo img{width:100%;height:100%;object-fit:cover;border-radius:inherit}.store__info{flex:1;min-width:0}.store__name{font-size:20px;line-height:26px;font-weight:700;color:var(--sui-text-strong-950, #171717);margin:0 0 4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.store__type{font-size:14px;line-height:20px;font-weight:500;color:var(--sui-text-sub-600, #5c5c5c);margin:0 0 8px}.store__meta{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:2px;padding-top:14px;border-top:1px solid var(--sui-stroke-soft-200, #ebebeb)}.store__meta--preview{justify-content:flex-start;gap:32px}.store__stat{display:flex;flex-direction:column;gap:2px;min-width:0}.store__stat--clickable{background:transparent;border:none;padding:4px 6px;margin:-4px -6px;border-radius:8px;cursor:pointer;text-align:left;font:inherit;color:inherit;-webkit-tap-highlight-color:transparent;transition:background-color .15s}.store__stat--clickable:hover{background:var(--sui-bg-weak-50, #f5f7fa)}.store__stat--clickable:active{background:var(--sui-bg-soft-200, #ebeef2)}.store__stat-label{font-size:10px;color:var(--sui-text-soft-400, #a3a3a3);font-weight:600;text-transform:uppercase;letter-spacing:.05em}.store__stat-value{font-size:13px;font-weight:700;color:var(--sui-text-strong-950, #171717);display:inline-flex;align-items:center;gap:3px;white-space:nowrap}.store__stat-value svg{color:var(--sui-primary-base, #fa7319);flex-shrink:0}.store__stat--elastico{overflow:hidden}.store__stat--elastico .store__stat-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.store__stat--elastico .store__stat-texto{overflow:hidden;text-overflow:ellipsis;min-width:0}.store__stat-chevron{color:var(--sui-text-soft-400, #a3a3a3);margin-left:-1px}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: SuiIcon, selector: "sui-icon", inputs: ["name", "size", "color"] }, { kind: "directive", type: SuiImgRetry, selector: "img[suiImgRetry]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
16283
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: SuiStoreCard, isStandalone: true, selector: "sui-store-card", inputs: { store: { classPropertyName: "store", publicName: "store", isSignal: true, isRequired: true, transformFunction: null }, isFavorite: { classPropertyName: "isFavorite", publicName: "isFavorite", isSignal: true, isRequired: false, transformFunction: null }, disableLink: { classPropertyName: "disableLink", publicName: "disableLink", isSignal: true, isRequired: false, transformFunction: null }, deliveryText: { classPropertyName: "deliveryText", publicName: "deliveryText", isSignal: true, isRequired: false, transformFunction: null }, distanceText: { classPropertyName: "distanceText", publicName: "distanceText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { toggleFavorite: "toggleFavorite", ratingClicked: "ratingClicked" }, ngImport: i0, template: "<a class=\"store\"\n [class.store--suspended]=\"store().isSuspended\"\n [class.store--closed]=\"!store().isOpen && !store().isSuspended && !store().isOwnerPreview\"\n [class.store--preview]=\"store().isOwnerPreview\"\n [routerLink]=\"link()\"\n (click)=\"onCardClick($event)\">\n\n <div class=\"store__cover\"\n [class.store__cover--fallback]=\"!store().coverUrl\">\n <!-- <img> real (no background CSS): permite retry nativo via suiImgRetry\n cuando un load falla (red flaky) + fade-in al cargar. El fallback\n oscuro queda debajo como placeholder hasta que la imagen aparece. -->\n @if (store().coverUrl) {\n <img class=\"store__cover-img\"\n suiImgRetry\n [src]=\"store().coverUrl\"\n alt=\"\"\n loading=\"lazy\"\n decoding=\"async\" />\n }\n <div class=\"store__cover-grad\"></div>\n\n @if (!store().isOwnerPreview) {\n <button type=\"button\"\n class=\"store__fav\"\n [class.store__fav--active]=\"isFavorite()\"\n (click)=\"onFavClick($event)\"\n aria-label=\"Favorito\">\n <sui-icon\n [name]=\"isFavorite() ? 'heart-fill' : 'heart-line'\"\n [size]=\"18\"\n color=\"var(--sui-primary-base, #fa7319)\"\n ></sui-icon>\n </button>\n }\n\n @if (store().isSuspended) {\n <span class=\"store__status store__status--suspended\">No disponible</span>\n } @else if (previewBadge(); as pb) {\n <span class=\"store__status\"\n [class.store__status--draft]=\"pb.variant === 'draft'\"\n [class.store__status--pending]=\"pb.variant === 'pending'\"\n [class.store__status--rejected]=\"pb.variant === 'rejected'\">\n {{ pb.label }}\n </span>\n } @else {\n <span class=\"store__status\"\n [class.store__status--open]=\"store().isOpen\"\n [class.store__status--closed]=\"!store().isOpen\">\n {{ store().isOpen ? 'Abierto' : 'Cerrado' }}\n </span>\n }\n </div>\n\n <div class=\"store__body\">\n <div class=\"store__logo\">\n @if (store().logoUrl) {\n <!-- suiImgRetry reintenta loads fallidos; si muere definitivo, el\n atributo data-sui-img-dead lo oculta via CSS (queda el fondo). -->\n <img suiImgRetry [src]=\"store().logoUrl\" [alt]=\"store().name\" />\n } @else {\n {{ initial() }}\n }\n </div>\n <div class=\"store__info\">\n <h3 class=\"store__name\">{{ store().name }}</h3>\n <p class=\"store__type\">{{ store().businessType }}</p>\n </div>\n\n <!-- Meta a ANCHO COMPLETO de la card (hijo directo del body con wrap):\n antes viv\u00EDa dentro de store__info y heredaba el sangrado del logo\n (60px muertos a la izquierda). -->\n @if (store().isOwnerPreview) {\n <!-- Modo preview (owner viendo borrador/revisi\u00F3n, super-admin revisando):\n solo Ubicaci\u00F3n + Env\u00EDo. Rating + Distancia no aplican antes de aprobar. -->\n <div class=\"store__meta store__meta--preview\">\n <!-- El distrito es el \u00FAnico dato de largo variable de la fila, as\u00ED que\n es el que cede: ver \u00ABSan Jer\u00F3ni\u2026\u00BB cuesta menos que ver los cuatro\n stats pis\u00E1ndose. Por eso lleva `--elastico`. -->\n <div class=\"store__stat store__stat--elastico\">\n <span class=\"store__stat-label\">Ubicaci\u00F3n</span>\n <span class=\"store__stat-value\">\n <sui-icon name=\"map-pin-line\" [size]=\"13\" color=\"var(--sui-primary-base, #fa7319)\"></sui-icon>\n <span class=\"store__stat-texto\">{{ store().district || '\u2014' }}</span>\n </span>\n </div>\n <!-- `null` en `deliveryText` = esta columna no existe, y no un guion:\n un hueco rotulado \u00ABEnv\u00EDo\u00BB sobre nada se lee como dato faltante.\n Quien no pasa nada sigue viendo la etiqueta deducida. -->\n @if (deliveryLabel() !== null) {\n <div class=\"store__stat\">\n <span class=\"store__stat-label\">Env\u00EDo</span>\n <span class=\"store__stat-value\">{{ deliveryLabel() }}</span>\n </div>\n }\n </div>\n } @else {\n <div class=\"store__meta\">\n <button\n type=\"button\"\n class=\"store__stat store__stat--clickable\"\n (click)=\"onRatingClick($event)\"\n (touchstart)=\"$event.currentTarget\"\n (touchend)=\"$any($event.currentTarget).blur()\"\n [attr.aria-label]=\"'Ver las opiniones y la informaci\u00F3n del local'\"\n >\n <span class=\"store__stat-label\">Calificaci\u00F3n</span>\n <span class=\"store__stat-value\">\n <sui-icon name=\"star-fill\" [size]=\"13\" color=\"var(--sui-primary-base, #fa7319)\"></sui-icon>\n {{ ratingLabel() }}\n <!-- El chevron es lo que dice que la nota ABRE algo. Sin \u00E9l el\n stat se lee como dato muerto y nadie lo toca \u2014 el mismo\n remate que la ficha del local usa junto al puntaje. Va\n siempre, incluso sin opiniones: el modal tambi\u00E9n trae la\n pesta\u00F1a de informaci\u00F3n \u2014mapa, horario, direcci\u00F3n\u2014, que sirve\n igual el primer d\u00EDa del local. -->\n <sui-icon class=\"store__stat-chevron\" name=\"arrow-right-s-line\" [size]=\"14\"></sui-icon>\n </span>\n </button>\n <!-- El distrito es el \u00FAnico dato de largo variable de la fila, as\u00ED que\n es el que cede: ver \u00ABSan Jer\u00F3ni\u2026\u00BB cuesta menos que ver los cuatro\n stats pis\u00E1ndose. Por eso lleva `--elastico`. -->\n <div class=\"store__stat store__stat--elastico\">\n <span class=\"store__stat-label\">Ubicaci\u00F3n</span>\n <span class=\"store__stat-value\">\n <sui-icon name=\"map-pin-line\" [size]=\"13\" color=\"var(--sui-primary-base, #fa7319)\"></sui-icon>\n <span class=\"store__stat-texto\">{{ store().district || '\u2014' }}</span>\n </span>\n </div>\n <!-- Las dos columnas de la derecha desaparecen con `null` (ver\n `deliveryText`/`distanceText` en el .ts): con tres columnas el\n reparto sobra y el distrito deja de recortarse. -->\n @if (deliveryLabel() !== null) {\n <div class=\"store__stat\">\n <span class=\"store__stat-label\">Env\u00EDo</span>\n <span class=\"store__stat-value\">{{ deliveryLabel() }}</span>\n </div>\n }\n @if (distanceLabel() !== null) {\n <div class=\"store__stat\">\n <span class=\"store__stat-label\">Distancia</span>\n <span class=\"store__stat-value\">{{ distanceLabel() }}</span>\n </div>\n }\n </div>\n }\n </div>\n</a>\n", styles: ["@charset \"UTF-8\";.mp-badge{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:6px;font-size:12px;font-weight:600;white-space:nowrap;border:1px solid transparent;line-height:1}.mp-badge--green{background:var(--admin-success-bg, #dcfce7);color:var(--admin-success, #16a34a)}.mp-badge--red{background:var(--admin-error-bg, #fee2e2);color:var(--admin-error, #ef4444)}.mp-badge--orange{background:#fff7ed;color:#c2410c;border-color:#fed7aa}.mp-badge--blue{background:var(--admin-info-bg, #dbeafe);color:#2563eb}.mp-badge--gray{background:var(--admin-bg-tertiary, #f3f4f6);color:var(--admin-text-tertiary, #6b7280)}.mp-badge--sm{height:20px;padding:0 8px;font-size:11px}.mp-action-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:30px;padding:0 12px;border-radius:6px;border:1px solid transparent;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;white-space:nowrap;transition:all .15s ease}.mp-action-btn:disabled{opacity:.5;cursor:not-allowed}.mp-action-btn--activate{background:var(--admin-success, #16a34a);color:#fff}.mp-action-btn--activate:hover{background:#15803d}.mp-action-btn--renew{background:var(--admin-info, #3b82f6);color:#fff}.mp-action-btn--renew:hover{background:#2563eb}.mp-action-btn--suspend{background:var(--admin-bg-primary, #fff);color:var(--admin-error, #ef4444);border-color:#fca5a5}.mp-action-btn--suspend:hover{background:var(--admin-error-bg, #fee2e2)}.mp-action-btn--danger{background:#dc2626;color:#fff;border:none}.mp-action-btn--danger:hover{background:#b91c1c}.mp-action-btn--outline{background:var(--admin-bg-primary, #fff);color:var(--admin-text-secondary, #374151);border-color:var(--admin-border-primary, #e5e7eb)}.mp-action-btn--outline:hover{background:var(--admin-bg-hover, #f9fafb)}.mp-action-btn--icon{width:28px;height:28px;padding:0;background:transparent;color:var(--admin-text-muted, #9ca3af);border:none}.mp-action-btn--icon:hover{background:var(--admin-bg-hover, #f9fafb);color:var(--admin-text-primary, #171717)}.mp-action-btn--icon-danger{width:28px;height:28px;padding:0;background:transparent;color:#dc2626;border:none}.mp-action-btn--icon-danger:hover{background:var(--admin-error-bg, #fee2e2);color:#dc2626}:host{display:block}.store{-webkit-touch-callout:none;-webkit-user-drag:none;user-select:none;-webkit-user-select:none}.store img{-webkit-user-drag:none;pointer-events:none}.store{display:block;background:var(--sui-bg-white-0, #fff);border:1px solid var(--sui-stroke-soft-200, #ebebeb);border-radius:16px;overflow:hidden;text-decoration:none;color:inherit;transition:box-shadow .2s ease,transform .2s ease;cursor:pointer}.store:active{transform:scale(.995);box-shadow:0 4px 14px #00000014}.store--suspended{cursor:not-allowed;opacity:.6}.store--closed .store__cover{filter:grayscale(1) brightness(.92);transition:filter .2s ease}.store--preview{cursor:default}.store--preview:active{transform:none;box-shadow:none}.store__cover{height:120px;position:relative;overflow:hidden;background:linear-gradient(135deg,#3a3a3a,#171717)}.store__cover-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .25s ease-out}.store__cover-img.sui-img-loaded{opacity:1}.store__cover-img[data-sui-img-dead]{display:none}.store__cover-grad{position:absolute;inset:0;background:linear-gradient(180deg,#0000 40%,#00000059);pointer-events:none}.store__fav{position:absolute;top:10px;left:10px;width:36px;height:36px;border-radius:999px;background:#ffffffeb;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:1;transition:background .15s ease}.store__fav:active{background:#fff}.store__status{position:absolute;top:10px;right:10px;padding:4px 10px;border-radius:999px;font-size:11px;font-weight:700;background:#ffffffeb;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:inline-flex;align-items:center;gap:4px;z-index:1;letter-spacing:.01em}.store__status:before{content:\"\";width:6px;height:6px;border-radius:50%;background:var(--sui-state-success-base, #22c55e)}.store__status--open{color:var(--sui-state-success-base, #16a34a)}.store__status--open:before{background:var(--sui-state-success-base, #22c55e)}.store__status--closed{color:var(--sui-state-faded-base, #94a3b8)}.store__status--closed:before{background:var(--sui-state-faded-base, #94a3b8)}.store__status--suspended{color:var(--sui-state-error-base, #dc2626)}.store__status--suspended:before{background:var(--sui-state-error-base, #dc2626)}.store__status--draft{color:var(--sui-state-faded-base, #475569);background:#fffffff5}.store__status--draft:before{background:var(--sui-state-faded-base, #94a3b8)}.store__status--pending{color:var(--sui-primary-darkest, #b85513);background:#fffffff5}.store__status--pending:before{background:var(--sui-primary-base, #fa7319);animation:store-pulse 1.6s ease-in-out infinite}.store__status--rejected{color:var(--sui-state-error-base, #b91c1c);background:#fffffff5}.store__status--rejected:before{background:var(--sui-state-error-base, #dc2626)}@keyframes store-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(1.4)}}.store__body{padding:12px 14px 14px;display:flex;flex-wrap:wrap;gap:12px;align-items:flex-start}.store__logo img[data-sui-img-dead]{display:none}.store__logo{width:48px;height:48px;border-radius:10px;background:var(--sui-static-white, #fff);border:2px solid var(--sui-static-white, #fff);box-shadow:0 1px 4px #0000001f;flex-shrink:0;margin-top:-32px;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:800;color:var(--sui-primary-base, #fa7319);overflow:hidden;position:relative;z-index:2}.store__logo img{width:100%;height:100%;object-fit:cover;border-radius:inherit}.store__info{flex:1;min-width:0}.store__name{font-size:20px;line-height:26px;font-weight:700;color:var(--sui-text-strong-950, #171717);margin:0 0 4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.store__type{font-size:14px;line-height:20px;font-weight:500;color:var(--sui-text-sub-600, #5c5c5c);margin:0 0 8px}.store__meta{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:2px;padding-top:14px;border-top:1px solid var(--sui-stroke-soft-200, #ebebeb)}.store__meta--preview{justify-content:flex-start;gap:32px}.store__stat{display:flex;flex-direction:column;gap:2px;min-width:0}.store__stat--clickable{background:transparent;border:none;padding:4px 6px;margin:-4px -6px;border-radius:8px;cursor:pointer;text-align:left;font:inherit;color:inherit;-webkit-tap-highlight-color:transparent;transition:background-color .15s}.store__stat--clickable:hover{background:var(--sui-bg-weak-50, #f5f7fa)}.store__stat--clickable:active{background:var(--sui-bg-soft-200, #ebeef2)}.store__stat-label{font-size:10px;color:var(--sui-text-soft-400, #a3a3a3);font-weight:600;text-transform:uppercase;letter-spacing:.05em}.store__stat-value{font-size:13px;font-weight:700;color:var(--sui-text-strong-950, #171717);display:inline-flex;align-items:center;gap:3px;white-space:nowrap}.store__stat-value svg{color:var(--sui-primary-base, #fa7319);flex-shrink:0}.store__stat--elastico{overflow:hidden}.store__stat--elastico .store__stat-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.store__stat--elastico .store__stat-texto{overflow:hidden;text-overflow:ellipsis;min-width:0}.store__stat-chevron{color:var(--sui-text-soft-400, #a3a3a3);margin-left:-1px}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: SuiIcon, selector: "sui-icon", inputs: ["name", "size", "color"] }, { kind: "directive", type: SuiImgRetry, selector: "img[suiImgRetry]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
16113
16284
  }
16114
16285
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SuiStoreCard, decorators: [{
16115
16286
  type: Component,
16116
- args: [{ selector: 'sui-store-card', changeDetection: ChangeDetectionStrategy.OnPush, imports: [RouterLink, SuiIcon, SuiImgRetry], template: "<a class=\"store\"\n [class.store--suspended]=\"store().isSuspended\"\n [class.store--closed]=\"!store().isOpen && !store().isSuspended && !store().isOwnerPreview\"\n [class.store--preview]=\"store().isOwnerPreview\"\n [routerLink]=\"link()\"\n (click)=\"onCardClick($event)\">\n\n <div class=\"store__cover\"\n [class.store__cover--fallback]=\"!store().coverUrl\">\n <!-- <img> real (no background CSS): permite retry nativo via suiImgRetry\n cuando un load falla (red flaky) + fade-in al cargar. El fallback\n oscuro queda debajo como placeholder hasta que la imagen aparece. -->\n @if (store().coverUrl) {\n <img class=\"store__cover-img\"\n suiImgRetry\n [src]=\"store().coverUrl\"\n alt=\"\"\n loading=\"lazy\"\n decoding=\"async\" />\n }\n <div class=\"store__cover-grad\"></div>\n\n @if (!store().isOwnerPreview) {\n <button type=\"button\"\n class=\"store__fav\"\n [class.store__fav--active]=\"isFavorite()\"\n (click)=\"onFavClick($event)\"\n aria-label=\"Favorito\">\n <sui-icon\n [name]=\"isFavorite() ? 'heart-fill' : 'heart-line'\"\n [size]=\"18\"\n color=\"var(--sui-primary-base, #fa7319)\"\n ></sui-icon>\n </button>\n }\n\n @if (store().isSuspended) {\n <span class=\"store__status store__status--suspended\">No disponible</span>\n } @else if (previewBadge(); as pb) {\n <span class=\"store__status\"\n [class.store__status--draft]=\"pb.variant === 'draft'\"\n [class.store__status--pending]=\"pb.variant === 'pending'\"\n [class.store__status--rejected]=\"pb.variant === 'rejected'\">\n {{ pb.label }}\n </span>\n } @else {\n <span class=\"store__status\"\n [class.store__status--open]=\"store().isOpen\"\n [class.store__status--closed]=\"!store().isOpen\">\n {{ store().isOpen ? 'Abierto' : 'Cerrado' }}\n </span>\n }\n </div>\n\n <div class=\"store__body\">\n <div class=\"store__logo\">\n @if (store().logoUrl) {\n <!-- suiImgRetry reintenta loads fallidos; si muere definitivo, el\n atributo data-sui-img-dead lo oculta via CSS (queda el fondo). -->\n <img suiImgRetry [src]=\"store().logoUrl\" [alt]=\"store().name\" />\n } @else {\n {{ initial() }}\n }\n </div>\n <div class=\"store__info\">\n <h3 class=\"store__name\">{{ store().name }}</h3>\n <p class=\"store__type\">{{ store().businessType }}</p>\n </div>\n\n <!-- Meta a ANCHO COMPLETO de la card (hijo directo del body con wrap):\n antes viv\u00EDa dentro de store__info y heredaba el sangrado del logo\n (60px muertos a la izquierda). -->\n @if (store().isOwnerPreview) {\n <!-- Modo preview (owner viendo borrador/revisi\u00F3n, super-admin revisando):\n solo Ubicaci\u00F3n + Env\u00EDo. Rating + Distancia no aplican antes de aprobar. -->\n <div class=\"store__meta store__meta--preview\">\n <!-- El distrito es el \u00FAnico dato de largo variable de la fila, as\u00ED que\n es el que cede: ver \u00ABSan Jer\u00F3ni\u2026\u00BB cuesta menos que ver los cuatro\n stats pis\u00E1ndose. Por eso lleva `--elastico`. -->\n <div class=\"store__stat store__stat--elastico\">\n <span class=\"store__stat-label\">Ubicaci\u00F3n</span>\n <span class=\"store__stat-value\">\n <sui-icon name=\"map-pin-line\" [size]=\"13\" color=\"var(--sui-primary-base, #fa7319)\"></sui-icon>\n <span class=\"store__stat-texto\">{{ store().district || '\u2014' }}</span>\n </span>\n </div>\n <div class=\"store__stat\">\n <span class=\"store__stat-label\">Env\u00EDo</span>\n <span class=\"store__stat-value\">{{ deliveryLabel() }}</span>\n </div>\n </div>\n } @else {\n <div class=\"store__meta\">\n <button\n type=\"button\"\n class=\"store__stat store__stat--clickable\"\n (click)=\"onRatingClick($event)\"\n (touchstart)=\"$event.currentTarget\"\n (touchend)=\"$any($event.currentTarget).blur()\"\n [attr.aria-label]=\"'Ver las opiniones y la informaci\u00F3n del local'\"\n >\n <span class=\"store__stat-label\">Calificaci\u00F3n</span>\n <span class=\"store__stat-value\">\n <sui-icon name=\"star-fill\" [size]=\"13\" color=\"var(--sui-primary-base, #fa7319)\"></sui-icon>\n {{ ratingLabel() }}\n <!-- El chevron es lo que dice que la nota ABRE algo. Sin \u00E9l el\n stat se lee como dato muerto y nadie lo toca \u2014 el mismo\n remate que la ficha del local usa junto al puntaje. Va\n siempre, incluso sin opiniones: el modal tambi\u00E9n trae la\n pesta\u00F1a de informaci\u00F3n \u2014mapa, horario, direcci\u00F3n\u2014, que sirve\n igual el primer d\u00EDa del local. -->\n <sui-icon class=\"store__stat-chevron\" name=\"arrow-right-s-line\" [size]=\"14\"></sui-icon>\n </span>\n </button>\n <!-- El distrito es el \u00FAnico dato de largo variable de la fila, as\u00ED que\n es el que cede: ver \u00ABSan Jer\u00F3ni\u2026\u00BB cuesta menos que ver los cuatro\n stats pis\u00E1ndose. Por eso lleva `--elastico`. -->\n <div class=\"store__stat store__stat--elastico\">\n <span class=\"store__stat-label\">Ubicaci\u00F3n</span>\n <span class=\"store__stat-value\">\n <sui-icon name=\"map-pin-line\" [size]=\"13\" color=\"var(--sui-primary-base, #fa7319)\"></sui-icon>\n <span class=\"store__stat-texto\">{{ store().district || '\u2014' }}</span>\n </span>\n </div>\n <div class=\"store__stat\">\n <span class=\"store__stat-label\">Env\u00EDo</span>\n <span class=\"store__stat-value\">{{ deliveryLabel() }}</span>\n </div>\n <div class=\"store__stat\">\n <span class=\"store__stat-label\">Distancia</span>\n <span class=\"store__stat-value\">{{ distanceLabel() }}</span>\n </div>\n </div>\n }\n </div>\n</a>\n", styles: ["@charset \"UTF-8\";.mp-badge{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:6px;font-size:12px;font-weight:600;white-space:nowrap;border:1px solid transparent;line-height:1}.mp-badge--green{background:var(--admin-success-bg, #dcfce7);color:var(--admin-success, #16a34a)}.mp-badge--red{background:var(--admin-error-bg, #fee2e2);color:var(--admin-error, #ef4444)}.mp-badge--orange{background:#fff7ed;color:#c2410c;border-color:#fed7aa}.mp-badge--blue{background:var(--admin-info-bg, #dbeafe);color:#2563eb}.mp-badge--gray{background:var(--admin-bg-tertiary, #f3f4f6);color:var(--admin-text-tertiary, #6b7280)}.mp-badge--sm{height:20px;padding:0 8px;font-size:11px}.mp-action-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:30px;padding:0 12px;border-radius:6px;border:1px solid transparent;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;white-space:nowrap;transition:all .15s ease}.mp-action-btn:disabled{opacity:.5;cursor:not-allowed}.mp-action-btn--activate{background:var(--admin-success, #16a34a);color:#fff}.mp-action-btn--activate:hover{background:#15803d}.mp-action-btn--renew{background:var(--admin-info, #3b82f6);color:#fff}.mp-action-btn--renew:hover{background:#2563eb}.mp-action-btn--suspend{background:var(--admin-bg-primary, #fff);color:var(--admin-error, #ef4444);border-color:#fca5a5}.mp-action-btn--suspend:hover{background:var(--admin-error-bg, #fee2e2)}.mp-action-btn--danger{background:#dc2626;color:#fff;border:none}.mp-action-btn--danger:hover{background:#b91c1c}.mp-action-btn--outline{background:var(--admin-bg-primary, #fff);color:var(--admin-text-secondary, #374151);border-color:var(--admin-border-primary, #e5e7eb)}.mp-action-btn--outline:hover{background:var(--admin-bg-hover, #f9fafb)}.mp-action-btn--icon{width:28px;height:28px;padding:0;background:transparent;color:var(--admin-text-muted, #9ca3af);border:none}.mp-action-btn--icon:hover{background:var(--admin-bg-hover, #f9fafb);color:var(--admin-text-primary, #171717)}.mp-action-btn--icon-danger{width:28px;height:28px;padding:0;background:transparent;color:#dc2626;border:none}.mp-action-btn--icon-danger:hover{background:var(--admin-error-bg, #fee2e2);color:#dc2626}:host{display:block}.store{-webkit-touch-callout:none;-webkit-user-drag:none;user-select:none;-webkit-user-select:none}.store img{-webkit-user-drag:none;pointer-events:none}.store{display:block;background:var(--sui-bg-white-0, #fff);border:1px solid var(--sui-stroke-soft-200, #ebebeb);border-radius:16px;overflow:hidden;text-decoration:none;color:inherit;transition:box-shadow .2s ease,transform .2s ease;cursor:pointer}.store:active{transform:scale(.995);box-shadow:0 4px 14px #00000014}.store--suspended{cursor:not-allowed;opacity:.6}.store--closed .store__cover{filter:grayscale(1) brightness(.92);transition:filter .2s ease}.store--preview{cursor:default}.store--preview:active{transform:none;box-shadow:none}.store__cover{height:120px;position:relative;overflow:hidden;background:linear-gradient(135deg,#3a3a3a,#171717)}.store__cover-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .25s ease-out}.store__cover-img.sui-img-loaded{opacity:1}.store__cover-img[data-sui-img-dead]{display:none}.store__cover-grad{position:absolute;inset:0;background:linear-gradient(180deg,#0000 40%,#00000059);pointer-events:none}.store__fav{position:absolute;top:10px;left:10px;width:36px;height:36px;border-radius:999px;background:#ffffffeb;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:1;transition:background .15s ease}.store__fav:active{background:#fff}.store__status{position:absolute;top:10px;right:10px;padding:4px 10px;border-radius:999px;font-size:11px;font-weight:700;background:#ffffffeb;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:inline-flex;align-items:center;gap:4px;z-index:1;letter-spacing:.01em}.store__status:before{content:\"\";width:6px;height:6px;border-radius:50%;background:var(--sui-state-success-base, #22c55e)}.store__status--open{color:var(--sui-state-success-base, #16a34a)}.store__status--open:before{background:var(--sui-state-success-base, #22c55e)}.store__status--closed{color:var(--sui-state-faded-base, #94a3b8)}.store__status--closed:before{background:var(--sui-state-faded-base, #94a3b8)}.store__status--suspended{color:var(--sui-state-error-base, #dc2626)}.store__status--suspended:before{background:var(--sui-state-error-base, #dc2626)}.store__status--draft{color:var(--sui-state-faded-base, #475569);background:#fffffff5}.store__status--draft:before{background:var(--sui-state-faded-base, #94a3b8)}.store__status--pending{color:var(--sui-primary-darkest, #b85513);background:#fffffff5}.store__status--pending:before{background:var(--sui-primary-base, #fa7319);animation:store-pulse 1.6s ease-in-out infinite}.store__status--rejected{color:var(--sui-state-error-base, #b91c1c);background:#fffffff5}.store__status--rejected:before{background:var(--sui-state-error-base, #dc2626)}@keyframes store-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(1.4)}}.store__body{padding:12px 14px 14px;display:flex;flex-wrap:wrap;gap:12px;align-items:flex-start}.store__logo img[data-sui-img-dead]{display:none}.store__logo{width:48px;height:48px;border-radius:10px;background:var(--sui-static-white, #fff);border:2px solid var(--sui-static-white, #fff);box-shadow:0 1px 4px #0000001f;flex-shrink:0;margin-top:-32px;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:800;color:var(--sui-primary-base, #fa7319);overflow:hidden;position:relative;z-index:2}.store__logo img{width:100%;height:100%;object-fit:cover;border-radius:inherit}.store__info{flex:1;min-width:0}.store__name{font-size:20px;line-height:26px;font-weight:700;color:var(--sui-text-strong-950, #171717);margin:0 0 4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.store__type{font-size:14px;line-height:20px;font-weight:500;color:var(--sui-text-sub-600, #5c5c5c);margin:0 0 8px}.store__meta{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:2px;padding-top:14px;border-top:1px solid var(--sui-stroke-soft-200, #ebebeb)}.store__meta--preview{justify-content:flex-start;gap:32px}.store__stat{display:flex;flex-direction:column;gap:2px;min-width:0}.store__stat--clickable{background:transparent;border:none;padding:4px 6px;margin:-4px -6px;border-radius:8px;cursor:pointer;text-align:left;font:inherit;color:inherit;-webkit-tap-highlight-color:transparent;transition:background-color .15s}.store__stat--clickable:hover{background:var(--sui-bg-weak-50, #f5f7fa)}.store__stat--clickable:active{background:var(--sui-bg-soft-200, #ebeef2)}.store__stat-label{font-size:10px;color:var(--sui-text-soft-400, #a3a3a3);font-weight:600;text-transform:uppercase;letter-spacing:.05em}.store__stat-value{font-size:13px;font-weight:700;color:var(--sui-text-strong-950, #171717);display:inline-flex;align-items:center;gap:3px;white-space:nowrap}.store__stat-value svg{color:var(--sui-primary-base, #fa7319);flex-shrink:0}.store__stat--elastico{overflow:hidden}.store__stat--elastico .store__stat-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.store__stat--elastico .store__stat-texto{overflow:hidden;text-overflow:ellipsis;min-width:0}.store__stat-chevron{color:var(--sui-text-soft-400, #a3a3a3);margin-left:-1px}\n"] }]
16117
- }], propDecorators: { store: [{ type: i0.Input, args: [{ isSignal: true, alias: "store", required: true }] }], isFavorite: [{ type: i0.Input, args: [{ isSignal: true, alias: "isFavorite", required: false }] }], disableLink: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableLink", required: false }] }], toggleFavorite: [{ type: i0.Output, args: ["toggleFavorite"] }], ratingClicked: [{ type: i0.Output, args: ["ratingClicked"] }] } });
16287
+ args: [{ selector: 'sui-store-card', changeDetection: ChangeDetectionStrategy.OnPush, imports: [RouterLink, SuiIcon, SuiImgRetry], template: "<a class=\"store\"\n [class.store--suspended]=\"store().isSuspended\"\n [class.store--closed]=\"!store().isOpen && !store().isSuspended && !store().isOwnerPreview\"\n [class.store--preview]=\"store().isOwnerPreview\"\n [routerLink]=\"link()\"\n (click)=\"onCardClick($event)\">\n\n <div class=\"store__cover\"\n [class.store__cover--fallback]=\"!store().coverUrl\">\n <!-- <img> real (no background CSS): permite retry nativo via suiImgRetry\n cuando un load falla (red flaky) + fade-in al cargar. El fallback\n oscuro queda debajo como placeholder hasta que la imagen aparece. -->\n @if (store().coverUrl) {\n <img class=\"store__cover-img\"\n suiImgRetry\n [src]=\"store().coverUrl\"\n alt=\"\"\n loading=\"lazy\"\n decoding=\"async\" />\n }\n <div class=\"store__cover-grad\"></div>\n\n @if (!store().isOwnerPreview) {\n <button type=\"button\"\n class=\"store__fav\"\n [class.store__fav--active]=\"isFavorite()\"\n (click)=\"onFavClick($event)\"\n aria-label=\"Favorito\">\n <sui-icon\n [name]=\"isFavorite() ? 'heart-fill' : 'heart-line'\"\n [size]=\"18\"\n color=\"var(--sui-primary-base, #fa7319)\"\n ></sui-icon>\n </button>\n }\n\n @if (store().isSuspended) {\n <span class=\"store__status store__status--suspended\">No disponible</span>\n } @else if (previewBadge(); as pb) {\n <span class=\"store__status\"\n [class.store__status--draft]=\"pb.variant === 'draft'\"\n [class.store__status--pending]=\"pb.variant === 'pending'\"\n [class.store__status--rejected]=\"pb.variant === 'rejected'\">\n {{ pb.label }}\n </span>\n } @else {\n <span class=\"store__status\"\n [class.store__status--open]=\"store().isOpen\"\n [class.store__status--closed]=\"!store().isOpen\">\n {{ store().isOpen ? 'Abierto' : 'Cerrado' }}\n </span>\n }\n </div>\n\n <div class=\"store__body\">\n <div class=\"store__logo\">\n @if (store().logoUrl) {\n <!-- suiImgRetry reintenta loads fallidos; si muere definitivo, el\n atributo data-sui-img-dead lo oculta via CSS (queda el fondo). -->\n <img suiImgRetry [src]=\"store().logoUrl\" [alt]=\"store().name\" />\n } @else {\n {{ initial() }}\n }\n </div>\n <div class=\"store__info\">\n <h3 class=\"store__name\">{{ store().name }}</h3>\n <p class=\"store__type\">{{ store().businessType }}</p>\n </div>\n\n <!-- Meta a ANCHO COMPLETO de la card (hijo directo del body con wrap):\n antes viv\u00EDa dentro de store__info y heredaba el sangrado del logo\n (60px muertos a la izquierda). -->\n @if (store().isOwnerPreview) {\n <!-- Modo preview (owner viendo borrador/revisi\u00F3n, super-admin revisando):\n solo Ubicaci\u00F3n + Env\u00EDo. Rating + Distancia no aplican antes de aprobar. -->\n <div class=\"store__meta store__meta--preview\">\n <!-- El distrito es el \u00FAnico dato de largo variable de la fila, as\u00ED que\n es el que cede: ver \u00ABSan Jer\u00F3ni\u2026\u00BB cuesta menos que ver los cuatro\n stats pis\u00E1ndose. Por eso lleva `--elastico`. -->\n <div class=\"store__stat store__stat--elastico\">\n <span class=\"store__stat-label\">Ubicaci\u00F3n</span>\n <span class=\"store__stat-value\">\n <sui-icon name=\"map-pin-line\" [size]=\"13\" color=\"var(--sui-primary-base, #fa7319)\"></sui-icon>\n <span class=\"store__stat-texto\">{{ store().district || '\u2014' }}</span>\n </span>\n </div>\n <!-- `null` en `deliveryText` = esta columna no existe, y no un guion:\n un hueco rotulado \u00ABEnv\u00EDo\u00BB sobre nada se lee como dato faltante.\n Quien no pasa nada sigue viendo la etiqueta deducida. -->\n @if (deliveryLabel() !== null) {\n <div class=\"store__stat\">\n <span class=\"store__stat-label\">Env\u00EDo</span>\n <span class=\"store__stat-value\">{{ deliveryLabel() }}</span>\n </div>\n }\n </div>\n } @else {\n <div class=\"store__meta\">\n <button\n type=\"button\"\n class=\"store__stat store__stat--clickable\"\n (click)=\"onRatingClick($event)\"\n (touchstart)=\"$event.currentTarget\"\n (touchend)=\"$any($event.currentTarget).blur()\"\n [attr.aria-label]=\"'Ver las opiniones y la informaci\u00F3n del local'\"\n >\n <span class=\"store__stat-label\">Calificaci\u00F3n</span>\n <span class=\"store__stat-value\">\n <sui-icon name=\"star-fill\" [size]=\"13\" color=\"var(--sui-primary-base, #fa7319)\"></sui-icon>\n {{ ratingLabel() }}\n <!-- El chevron es lo que dice que la nota ABRE algo. Sin \u00E9l el\n stat se lee como dato muerto y nadie lo toca \u2014 el mismo\n remate que la ficha del local usa junto al puntaje. Va\n siempre, incluso sin opiniones: el modal tambi\u00E9n trae la\n pesta\u00F1a de informaci\u00F3n \u2014mapa, horario, direcci\u00F3n\u2014, que sirve\n igual el primer d\u00EDa del local. -->\n <sui-icon class=\"store__stat-chevron\" name=\"arrow-right-s-line\" [size]=\"14\"></sui-icon>\n </span>\n </button>\n <!-- El distrito es el \u00FAnico dato de largo variable de la fila, as\u00ED que\n es el que cede: ver \u00ABSan Jer\u00F3ni\u2026\u00BB cuesta menos que ver los cuatro\n stats pis\u00E1ndose. Por eso lleva `--elastico`. -->\n <div class=\"store__stat store__stat--elastico\">\n <span class=\"store__stat-label\">Ubicaci\u00F3n</span>\n <span class=\"store__stat-value\">\n <sui-icon name=\"map-pin-line\" [size]=\"13\" color=\"var(--sui-primary-base, #fa7319)\"></sui-icon>\n <span class=\"store__stat-texto\">{{ store().district || '\u2014' }}</span>\n </span>\n </div>\n <!-- Las dos columnas de la derecha desaparecen con `null` (ver\n `deliveryText`/`distanceText` en el .ts): con tres columnas el\n reparto sobra y el distrito deja de recortarse. -->\n @if (deliveryLabel() !== null) {\n <div class=\"store__stat\">\n <span class=\"store__stat-label\">Env\u00EDo</span>\n <span class=\"store__stat-value\">{{ deliveryLabel() }}</span>\n </div>\n }\n @if (distanceLabel() !== null) {\n <div class=\"store__stat\">\n <span class=\"store__stat-label\">Distancia</span>\n <span class=\"store__stat-value\">{{ distanceLabel() }}</span>\n </div>\n }\n </div>\n }\n </div>\n</a>\n", styles: ["@charset \"UTF-8\";.mp-badge{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:6px;font-size:12px;font-weight:600;white-space:nowrap;border:1px solid transparent;line-height:1}.mp-badge--green{background:var(--admin-success-bg, #dcfce7);color:var(--admin-success, #16a34a)}.mp-badge--red{background:var(--admin-error-bg, #fee2e2);color:var(--admin-error, #ef4444)}.mp-badge--orange{background:#fff7ed;color:#c2410c;border-color:#fed7aa}.mp-badge--blue{background:var(--admin-info-bg, #dbeafe);color:#2563eb}.mp-badge--gray{background:var(--admin-bg-tertiary, #f3f4f6);color:var(--admin-text-tertiary, #6b7280)}.mp-badge--sm{height:20px;padding:0 8px;font-size:11px}.mp-action-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:30px;padding:0 12px;border-radius:6px;border:1px solid transparent;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;white-space:nowrap;transition:all .15s ease}.mp-action-btn:disabled{opacity:.5;cursor:not-allowed}.mp-action-btn--activate{background:var(--admin-success, #16a34a);color:#fff}.mp-action-btn--activate:hover{background:#15803d}.mp-action-btn--renew{background:var(--admin-info, #3b82f6);color:#fff}.mp-action-btn--renew:hover{background:#2563eb}.mp-action-btn--suspend{background:var(--admin-bg-primary, #fff);color:var(--admin-error, #ef4444);border-color:#fca5a5}.mp-action-btn--suspend:hover{background:var(--admin-error-bg, #fee2e2)}.mp-action-btn--danger{background:#dc2626;color:#fff;border:none}.mp-action-btn--danger:hover{background:#b91c1c}.mp-action-btn--outline{background:var(--admin-bg-primary, #fff);color:var(--admin-text-secondary, #374151);border-color:var(--admin-border-primary, #e5e7eb)}.mp-action-btn--outline:hover{background:var(--admin-bg-hover, #f9fafb)}.mp-action-btn--icon{width:28px;height:28px;padding:0;background:transparent;color:var(--admin-text-muted, #9ca3af);border:none}.mp-action-btn--icon:hover{background:var(--admin-bg-hover, #f9fafb);color:var(--admin-text-primary, #171717)}.mp-action-btn--icon-danger{width:28px;height:28px;padding:0;background:transparent;color:#dc2626;border:none}.mp-action-btn--icon-danger:hover{background:var(--admin-error-bg, #fee2e2);color:#dc2626}:host{display:block}.store{-webkit-touch-callout:none;-webkit-user-drag:none;user-select:none;-webkit-user-select:none}.store img{-webkit-user-drag:none;pointer-events:none}.store{display:block;background:var(--sui-bg-white-0, #fff);border:1px solid var(--sui-stroke-soft-200, #ebebeb);border-radius:16px;overflow:hidden;text-decoration:none;color:inherit;transition:box-shadow .2s ease,transform .2s ease;cursor:pointer}.store:active{transform:scale(.995);box-shadow:0 4px 14px #00000014}.store--suspended{cursor:not-allowed;opacity:.6}.store--closed .store__cover{filter:grayscale(1) brightness(.92);transition:filter .2s ease}.store--preview{cursor:default}.store--preview:active{transform:none;box-shadow:none}.store__cover{height:120px;position:relative;overflow:hidden;background:linear-gradient(135deg,#3a3a3a,#171717)}.store__cover-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .25s ease-out}.store__cover-img.sui-img-loaded{opacity:1}.store__cover-img[data-sui-img-dead]{display:none}.store__cover-grad{position:absolute;inset:0;background:linear-gradient(180deg,#0000 40%,#00000059);pointer-events:none}.store__fav{position:absolute;top:10px;left:10px;width:36px;height:36px;border-radius:999px;background:#ffffffeb;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:1;transition:background .15s ease}.store__fav:active{background:#fff}.store__status{position:absolute;top:10px;right:10px;padding:4px 10px;border-radius:999px;font-size:11px;font-weight:700;background:#ffffffeb;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:inline-flex;align-items:center;gap:4px;z-index:1;letter-spacing:.01em}.store__status:before{content:\"\";width:6px;height:6px;border-radius:50%;background:var(--sui-state-success-base, #22c55e)}.store__status--open{color:var(--sui-state-success-base, #16a34a)}.store__status--open:before{background:var(--sui-state-success-base, #22c55e)}.store__status--closed{color:var(--sui-state-faded-base, #94a3b8)}.store__status--closed:before{background:var(--sui-state-faded-base, #94a3b8)}.store__status--suspended{color:var(--sui-state-error-base, #dc2626)}.store__status--suspended:before{background:var(--sui-state-error-base, #dc2626)}.store__status--draft{color:var(--sui-state-faded-base, #475569);background:#fffffff5}.store__status--draft:before{background:var(--sui-state-faded-base, #94a3b8)}.store__status--pending{color:var(--sui-primary-darkest, #b85513);background:#fffffff5}.store__status--pending:before{background:var(--sui-primary-base, #fa7319);animation:store-pulse 1.6s ease-in-out infinite}.store__status--rejected{color:var(--sui-state-error-base, #b91c1c);background:#fffffff5}.store__status--rejected:before{background:var(--sui-state-error-base, #dc2626)}@keyframes store-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(1.4)}}.store__body{padding:12px 14px 14px;display:flex;flex-wrap:wrap;gap:12px;align-items:flex-start}.store__logo img[data-sui-img-dead]{display:none}.store__logo{width:48px;height:48px;border-radius:10px;background:var(--sui-static-white, #fff);border:2px solid var(--sui-static-white, #fff);box-shadow:0 1px 4px #0000001f;flex-shrink:0;margin-top:-32px;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:800;color:var(--sui-primary-base, #fa7319);overflow:hidden;position:relative;z-index:2}.store__logo img{width:100%;height:100%;object-fit:cover;border-radius:inherit}.store__info{flex:1;min-width:0}.store__name{font-size:20px;line-height:26px;font-weight:700;color:var(--sui-text-strong-950, #171717);margin:0 0 4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.store__type{font-size:14px;line-height:20px;font-weight:500;color:var(--sui-text-sub-600, #5c5c5c);margin:0 0 8px}.store__meta{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:2px;padding-top:14px;border-top:1px solid var(--sui-stroke-soft-200, #ebebeb)}.store__meta--preview{justify-content:flex-start;gap:32px}.store__stat{display:flex;flex-direction:column;gap:2px;min-width:0}.store__stat--clickable{background:transparent;border:none;padding:4px 6px;margin:-4px -6px;border-radius:8px;cursor:pointer;text-align:left;font:inherit;color:inherit;-webkit-tap-highlight-color:transparent;transition:background-color .15s}.store__stat--clickable:hover{background:var(--sui-bg-weak-50, #f5f7fa)}.store__stat--clickable:active{background:var(--sui-bg-soft-200, #ebeef2)}.store__stat-label{font-size:10px;color:var(--sui-text-soft-400, #a3a3a3);font-weight:600;text-transform:uppercase;letter-spacing:.05em}.store__stat-value{font-size:13px;font-weight:700;color:var(--sui-text-strong-950, #171717);display:inline-flex;align-items:center;gap:3px;white-space:nowrap}.store__stat-value svg{color:var(--sui-primary-base, #fa7319);flex-shrink:0}.store__stat--elastico{overflow:hidden}.store__stat--elastico .store__stat-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.store__stat--elastico .store__stat-texto{overflow:hidden;text-overflow:ellipsis;min-width:0}.store__stat-chevron{color:var(--sui-text-soft-400, #a3a3a3);margin-left:-1px}\n"] }]
16288
+ }], propDecorators: { store: [{ type: i0.Input, args: [{ isSignal: true, alias: "store", required: true }] }], isFavorite: [{ type: i0.Input, args: [{ isSignal: true, alias: "isFavorite", required: false }] }], disableLink: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableLink", required: false }] }], deliveryText: [{ type: i0.Input, args: [{ isSignal: true, alias: "deliveryText", required: false }] }], distanceText: [{ type: i0.Input, args: [{ isSignal: true, alias: "distanceText", required: false }] }], toggleFavorite: [{ type: i0.Output, args: ["toggleFavorite"] }], ratingClicked: [{ type: i0.Output, args: ["ratingClicked"] }] } });
16118
16289
 
16119
16290
  /**
16120
16291
  * Card de producto (catálogo del cliente). Presentacional: recibe los datos por
@@ -19501,5 +19672,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
19501
19672
  * Generated bundle index. Do not edit.
19502
19673
  */
19503
19674
 
19504
- export { DAY_LABELS_ES, DEFAULT_DURATION_PRESETS, DEFAULT_PRESETS, EMPTY_STATE_FOX_EMOJI, SUI_BRAND_LOGO_COMPANIES, SUI_CHART_LEGEND_COLORS, SUI_CHART_LEGEND_HEX, SUI_CHART_SERIES_COLORS, SUI_COLOR_DOT_COLORS, SUI_COLOR_DOT_HEX, SUI_CUSTOM_ICONS, SUI_EMOJI_MAP, SUI_EMOJI_STATIC, SUI_FLAG_NAMES, SUI_HEX_TO_COLOR, SUI_KEY_ICON_COLORS, SUI_KEY_ICON_SIZES, SUI_NAVBAR_VISIBILITY, SUI_PASSWORD_STRENGTH_DEFAULT_CONDITIONS, SUI_PASSWORD_STRENGTH_DEFAULT_LEVEL_LABELS, SUI_PAYMENT_ICON_TYPES, SUI_PRODUCT_FALLBACK_COLORS, SUI_TAB_BAR, SuiAccordion, SuiAccordionContent, SuiActivityFeed, SuiActivityFilter, SuiAlert, SuiAppStoreBadge, SuiAvatar, SuiAvatarGroup, SuiBadge, SuiBanner, SuiBrandLogo, SuiBreadcrumbItem, SuiBreadcrumbs, SuiButton, SuiButtonGroup, SuiButtonGroupItem, SuiCard, SuiChartLegend, SuiChartLegendDot, SuiCheckbox, SuiCheckboxCard, SuiCheckboxLabel, SuiCircularProgressBar, SuiColorDot, SuiColorPicker, SuiCommandMenuFooter, SuiCommandMenuItem, SuiCommandMenuSearch, SuiCompactAvatarGroup, SuiCompactButton, SuiCompactSelect, SuiCompactSelectForInput, SuiContentCard, SuiContentDivider, SuiContentLabel, SuiCounterInput, SuiDateSelector, SuiDatepicker, SuiDayCell, SuiDayLabel, SuiDivider, SuiDrawerFooter, SuiDrawerHeader, SuiDropdownCaption, SuiDropdownItem, SuiDropdownMenu, SuiDropdownPanel, SuiDropdownSearch, SuiEmoji, SuiEmptyState, SuiFancyButton, SuiFileIcon, SuiFileUpload, SuiFileUploadCard, SuiFilterBar, SuiFilterItem, SuiFilterPanelFooter, SuiFilterPanelHeader, SuiFlag, SuiFormHint, SuiFormLabel, SuiHref, SuiIcon, SuiImageUpload, SuiImageUploadProfile, SuiImgRetry, SuiInlineInput, SuiInlineSelect, SuiInput, SuiIntegrationSwitch, SuiKbd, SuiKeyIcon, SuiLinkButton, SuiModal, SuiModalFooter, SuiModalHeader, SuiModalSheet, SuiNotification, SuiNotificationFooter, SuiNotificationTabMenu, SuiOtpInput, SuiPageHeader, SuiPagination, SuiPasswordStrength, SuiPaymentIcon, SuiPeriodRange, SuiPopover, SuiProductCard, SuiProgressBar, SuiProgressBarLabel, SuiRadio, SuiRadioCard, SuiRadioGroup, SuiRadioLabel, SuiRating, SuiRichEditor, SuiRichEditorItem, SuiSegmentedControl, SuiSelect, SuiSidebar, SuiSlider, SuiSocialButton, SuiStatusBadge, SuiStepper, SuiStoreCard, SuiSwitch, SuiSwitchCard, SuiSwitchLabel, SuiTabChips, SuiTabMenuHorizontal, SuiTabMenuVertical, SuiTable, SuiTableCellDirective, SuiTag, SuiTagInput, SuiTextarea, SuiTimePicker, SuiTimePickerDuration, SuiTimePickerItem, SuiTimePickerStatus, SuiToastOutlet, SuiToastService, SuiTooltip, SuiTooltipPanel, SuiTopbar, SuiTopbarButton, SuiTopbarItem, SuiTopbarUser, buildCalendarGrid, buildHourList, buildMinuteList, formatDateInput, formatDateShort, formatMonthYear, formatTime, isSameTime, normalizeHex, pad2, parseTime, to12h, to24h };
19675
+ export { DAY_LABELS_ES, DEFAULT_DURATION_PRESETS, DEFAULT_PRESETS, EMPTY_STATE_FOX_EMOJI, SUI_BRAND_LOGO_COMPANIES, SUI_CHART_LEGEND_COLORS, SUI_CHART_LEGEND_HEX, SUI_CHART_SERIES_COLORS, SUI_COLOR_DOT_COLORS, SUI_COLOR_DOT_HEX, SUI_CUSTOM_ICONS, SUI_EMOJI_MAP, SUI_EMOJI_STATIC, SUI_FLAG_NAMES, SUI_HEX_TO_COLOR, SUI_KEY_ICON_COLORS, SUI_KEY_ICON_SIZES, SUI_NAVBAR_VISIBILITY, SUI_PASSWORD_STRENGTH_DEFAULT_CONDITIONS, SUI_PASSWORD_STRENGTH_DEFAULT_LEVEL_LABELS, SUI_PAYMENT_ICON_TYPES, SUI_PRODUCT_FALLBACK_COLORS, SUI_TAB_BAR, SuiAccordion, SuiAccordionContent, SuiActivityFeed, SuiActivityFilter, SuiAlert, SuiAppStoreBadge, SuiAvatar, SuiAvatarGroup, SuiBadge, SuiBanner, SuiBrandLogo, SuiBreadcrumbItem, SuiBreadcrumbs, SuiButton, SuiButtonGroup, SuiButtonGroupItem, SuiCard, SuiChartLegend, SuiChartLegendDot, SuiCheckbox, SuiCheckboxCard, SuiCheckboxLabel, SuiCircularProgressBar, SuiColorDot, SuiColorPicker, SuiCommandMenuFooter, SuiCommandMenuItem, SuiCommandMenuSearch, SuiCompactAvatarGroup, SuiCompactButton, SuiCompactSelect, SuiCompactSelectForInput, SuiContentCard, SuiContentDivider, SuiContentLabel, SuiCounterInput, SuiDateSelector, SuiDatepicker, SuiDayCell, SuiDayLabel, SuiDivider, SuiDrawerFooter, SuiDrawerHeader, SuiDropdownCaption, SuiDropdownItem, SuiDropdownMenu, SuiDropdownPanel, SuiDropdownSearch, SuiEmoji, SuiEmptyState, SuiFancyButton, SuiFileIcon, SuiFileUpload, SuiFileUploadCard, SuiFilterBar, SuiFilterItem, SuiFilterPanelFooter, SuiFilterPanelHeader, SuiFlag, SuiFormHint, SuiFormLabel, SuiHref, SuiIcon, SuiImageUpload, SuiImageUploadProfile, SuiImgRetry, SuiInlineInput, SuiInlineSelect, SuiInput, SuiIntegrationSwitch, SuiKbd, SuiKeyIcon, SuiLinkButton, SuiLogo, SuiModal, SuiModalFooter, SuiModalHeader, SuiModalSheet, SuiNotification, SuiNotificationFooter, SuiNotificationTabMenu, SuiOtpInput, SuiPageHeader, SuiPagination, SuiPasswordStrength, SuiPaymentIcon, SuiPeriodRange, SuiPopover, SuiProductCard, SuiProgressBar, SuiProgressBarLabel, SuiRadio, SuiRadioCard, SuiRadioGroup, SuiRadioLabel, SuiRating, SuiRichEditor, SuiRichEditorItem, SuiSegmentedControl, SuiSelect, SuiSidebar, SuiSlider, SuiSocialButton, SuiStatusBadge, SuiStepper, SuiStoreCard, SuiSwitch, SuiSwitchCard, SuiSwitchLabel, SuiTabChips, SuiTabMenuHorizontal, SuiTabMenuVertical, SuiTable, SuiTableCellDirective, SuiTag, SuiTagInput, SuiTextarea, SuiTimePicker, SuiTimePickerDuration, SuiTimePickerItem, SuiTimePickerStatus, SuiToastOutlet, SuiToastService, SuiTooltip, SuiTooltipPanel, SuiTopbar, SuiTopbarButton, SuiTopbarItem, SuiTopbarUser, buildCalendarGrid, buildHourList, buildMinuteList, formatDateInput, formatDateShort, formatMonthYear, formatTime, isSameTime, normalizeHex, pad2, parseTime, to12h, to24h };
19505
19676
  //# sourceMappingURL=ajuarezso-sui-design-system.mjs.map