@eazo/sdk 0.17.1 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/internal/banner-ui/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAgF/B;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,IAAI,KAAK,CAAC,YAAY,GAAG,IAAI,CAmL3D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/internal/banner-ui/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAgF/B;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,IAAI,KAAK,CAAC,YAAY,GAAG,IAAI,CAoL3D"}
@@ -166,7 +166,7 @@ function EazoBrandBanner() {
166
166
  return;
167
167
  const timer = window.setTimeout(() => {
168
168
  setModalReady(true);
169
- }, MODAL_DELAY_MS);
169
+ }, 2);
170
170
  return () => window.clearTimeout(timer);
171
171
  }, [mounted]);
172
172
  // ESC closes the modal — same dismiss path as the X button. Only
@@ -282,7 +282,7 @@ function EazoBrandBanner() {
282
282
  }, [mounted]);
283
283
  if (!mounted || !cta)
284
284
  return null;
285
- return ((0, jsx_runtime_1.jsxs)("div", { className: "eazo-handoff-root", children: [(0, jsx_runtime_1.jsx)(TopBanner, { cta: cta, pageUrl: pageUrl }), modalDismissed || !modalReady ? null : ((0, jsx_runtime_1.jsx)(Overlay, { info: info, cta: cta, loading: loading, pageUrl: pageUrl, onDismiss: dismissModal })), (0, jsx_runtime_1.jsx)(BottomBanner, { info: info, loading: loading, cta: cta })] }));
285
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "eazo-handoff-root", children: [(0, jsx_runtime_1.jsx)(TopBanner, { cta: cta, pageUrl: pageUrl }), modalDismissed || !modalReady ? null : ((0, jsx_runtime_1.jsx)(Overlay, { info: info, cta: cta, loading: loading, pageUrl: pageUrl, mobile: mobile, onDismiss: dismissModal })), (0, jsx_runtime_1.jsx)(BottomBanner, { info: info, loading: loading, cta: cta })] }));
286
286
  }
287
287
  // ---------------------------------------------------------------------------
288
288
  // CTA click handler — same scheme + iOS-timeout fallback used elsewhere
@@ -353,7 +353,7 @@ function TopBannerCta({ cta, pageUrl, }) {
353
353
  }, []);
354
354
  return ((0, jsx_runtime_1.jsxs)("span", { className: "eazo-banner-cta-wrap", onMouseEnter: show, onMouseLeave: queueHide, onFocusCapture: show, onBlurCapture: queueHide, children: [(0, jsx_runtime_1.jsx)("a", { className: "eazo-banner-cta", href: cta.href, rel: "noreferrer noopener", onClick: onClick, "aria-describedby": open ? "eazo-banner-cta-popover" : undefined, children: "Open in app" }), open && pageUrl ? ((0, jsx_runtime_1.jsxs)("div", { id: "eazo-banner-cta-popover", className: "eazo-banner-cta-popover", role: "tooltip", children: [(0, jsx_runtime_1.jsx)("span", { className: "eazo-banner-cta-popover-arrow", "aria-hidden": "true" }), (0, jsx_runtime_1.jsx)("div", { className: "eazo-banner-cta-popover-qr", children: (0, jsx_runtime_1.jsx)(qr_1.QrSvg, { value: pageUrl, size: 140 }) }), (0, jsx_runtime_1.jsx)("div", { className: "eazo-banner-cta-popover-caption", children: "Scan to open in the Eazo app." })] })) : null] }));
355
355
  }
356
- function Overlay({ cta, info, loading, pageUrl, onDismiss }) {
356
+ function Overlay({ cta, info, loading, pageUrl, mobile, onDismiss }) {
357
357
  const onClick = React.useMemo(() => bindCtaClick(cta), [cta]);
358
358
  // While loading we still want SOMETHING in the monolith; initials of
359
359
  // "Eazo app" reads better than a literal placeholder. Once `info`
@@ -368,16 +368,16 @@ function Overlay({ cta, info, loading, pageUrl, onDismiss }) {
368
368
  const rawIcon = info?.app.icon?.trim();
369
369
  const iconUrl = rawIcon && isImageUrl(rawIcon) ? rawIcon : undefined;
370
370
  const iconGlyph = rawIcon && !iconUrl ? rawIcon : undefined;
371
- return ((0, jsx_runtime_1.jsxs)("div", { className: "eazo-handoff-overlay", role: "dialog", "aria-modal": "true", "aria-labelledby": "eazo-handoff-title", children: [(0, jsx_runtime_1.jsx)("div", { className: "eazo-handoff-overlay-dim" }), (0, jsx_runtime_1.jsx)("div", { className: "eazo-handoff-overlay-spot" }), (0, jsx_runtime_1.jsxs)("div", { className: "eazo-modal", children: [(0, jsx_runtime_1.jsx)("button", { type: "button", className: "eazo-modal-close", "aria-label": "Dismiss", onClick: onDismiss, children: (0, jsx_runtime_1.jsx)("svg", { width: 14, height: 14, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.2", strokeLinecap: "round", strokeLinejoin: "round", children: (0, jsx_runtime_1.jsx)("path", { d: "M6 6l12 12M18 6L6 18" }) }) }), (0, jsx_runtime_1.jsx)(Orbit, { initials: iconGlyph ?? initials, iconUrl: iconUrl, loading: loading }), (0, jsx_runtime_1.jsx)("div", { className: "eazo-modal-eyebrow", children: "Now showing in Eazo" }), loading ? (
371
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "eazo-handoff-overlay", role: "dialog", "aria-modal": "true", "aria-labelledby": "eazo-handoff-title", children: [(0, jsx_runtime_1.jsx)("div", { className: "eazo-handoff-overlay-dim" }), (0, jsx_runtime_1.jsx)("div", { className: "eazo-handoff-overlay-spot" }), (0, jsx_runtime_1.jsxs)("div", { className: "eazo-modal", children: [(0, jsx_runtime_1.jsx)("button", { type: "button", className: "eazo-modal-close", "aria-label": "Dismiss", onClick: onDismiss, children: (0, jsx_runtime_1.jsx)("svg", { width: 14, height: 14, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.2", strokeLinecap: "round", strokeLinejoin: "round", children: (0, jsx_runtime_1.jsx)("path", { d: "M6 6l12 12M18 6L6 18" }) }) }), (0, jsx_runtime_1.jsx)(Orbit, { initials: iconGlyph ?? initials, iconUrl: iconUrl, iconGlyph: iconGlyph, pageUrl: pageUrl, loading: loading, mobile: mobile }), (0, jsx_runtime_1.jsx)("div", { className: "eazo-modal-eyebrow", children: "Now showing in Eazo" }), loading ? (
372
372
  // Two-line skeleton stand-in for title + tagline. Width
373
373
  // ratios match a typical 2-word app name / one-sentence
374
374
  // tagline so the modal doesn't visibly resize when real
375
375
  // copy lands.
376
376
  (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("span", { className: "eazo-skel eazo-skel-title", role: "status", "aria-label": "Loading app info" }), (0, jsx_runtime_1.jsxs)("div", { style: { width: "100%", maxWidth: 360, textAlign: "center" }, children: [(0, jsx_runtime_1.jsx)("span", { className: "eazo-skel eazo-skel-sub-1" }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)("span", { className: "eazo-skel eazo-skel-sub-2" })] })] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("h2", { id: "eazo-handoff-title", className: "eazo-modal-title", children: info?.app.name ?? "This app" }), (0, jsx_runtime_1.jsx)("p", { className: "eazo-modal-sub", children: info?.app.tagline ??
377
377
  info?.app.description ??
378
- "Open the mobile app for the full experience." })] })), (0, jsx_runtime_1.jsxs)("div", { className: "eazo-cta-row", children: [(0, jsx_runtime_1.jsx)("div", { className: "eazo-qr-tile", children: pageUrl ? (0, jsx_runtime_1.jsx)(qr_1.QrSvg, { value: pageUrl, size: 88 }) : null }), (0, jsx_runtime_1.jsxs)("div", { className: "eazo-cta-body", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "eazo-cta-headline", children: "Scan to open" }), (0, jsx_runtime_1.jsx)("div", { className: "eazo-cta-fine", children: "Scan to continue this page on your phone, or tap to open in Eazo." })] }), (0, jsx_runtime_1.jsxs)("a", { className: "eazo-cta-primary", href: cta.href, rel: "noreferrer noopener", onClick: onClick, children: ["Open in Eazo app", (0, jsx_runtime_1.jsx)(icons_1.ArrowRightIcon, { size: 12 })] })] })] })] })] }));
378
+ "Open the mobile app for the full experience." })] })), (0, jsx_runtime_1.jsxs)("div", { className: "eazo-cta-row", children: [(0, jsx_runtime_1.jsx)("div", { className: "eazo-qr-tile", children: (0, jsx_runtime_1.jsx)(Monolith, { initials: iconGlyph ?? initials, iconUrl: iconUrl, loading: loading, size: 72 }) }), (0, jsx_runtime_1.jsxs)("div", { className: "eazo-cta-body", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "eazo-cta-headline", children: "Scan to open" }), (0, jsx_runtime_1.jsx)("div", { className: "eazo-cta-fine", children: "Scan to continue this page on your phone, or tap to open in Eazo." })] }), (0, jsx_runtime_1.jsxs)("a", { className: "eazo-cta-primary", href: cta.href, rel: "noreferrer noopener", onClick: onClick, children: ["Open in Eazo app", (0, jsx_runtime_1.jsx)(icons_1.ArrowRightIcon, { size: 12 })] })] })] })] })] }));
379
379
  }
380
- function Orbit({ initials, iconUrl, loading = false }) {
380
+ function Orbit({ initials, iconUrl, iconGlyph, pageUrl, loading = false, mobile = false, }) {
381
381
  // All geometry runs in a 280-unit coordinate space. The SVG uses
382
382
  // `viewBox` so its rings scale to whatever pixel size the parent is
383
383
  // (280 desktop / 220 mobile). The capability nodes are positioned via
@@ -386,21 +386,35 @@ function Orbit({ initials, iconUrl, loading = false }) {
386
386
  // colliding with the track's rotate animation, unlike a transform
387
387
  // would).
388
388
  const SIDE = 280;
389
- const RADIUS = 102;
389
+ // Capability-node track radius. Pushed out from the original 102 to
390
+ // give the 144px center QR more breathing room — node inner edge sits
391
+ // at `RADIUS - 18` (node is 36px), so the QR (80px half-width incl.
392
+ // tile padding) now has ~18px of clearance instead of ~4px. Capped
393
+ // by `CENTER - 18 = 122` to keep nodes inside the orbit box.
394
+ const RADIUS = 116;
390
395
  const CENTER = SIDE / 2;
391
396
  // Radius as a percentage of half the box — used to convert polar
392
397
  // coordinates to percentage `left/top` on the track.
393
398
  const RADIUS_PCT = (RADIUS / CENTER) * 50;
394
- return ((0, jsx_runtime_1.jsxs)("div", { className: "eazo-orbit", children: [(0, jsx_runtime_1.jsxs)("svg", { className: "eazo-orbit-rings", viewBox: `0 0 ${SIDE} ${SIDE}`, preserveAspectRatio: "xMidYMid meet", "aria-hidden": "true", children: [(0, jsx_runtime_1.jsx)("circle", { cx: CENTER, cy: CENTER, r: 132, fill: "none", stroke: "rgba(17,19,15,0.06)" }), (0, jsx_runtime_1.jsx)("circle", { cx: CENTER, cy: CENTER, r: 102, fill: "none", stroke: "rgba(17,19,15,0.08)", strokeDasharray: "2 6" }), (0, jsx_runtime_1.jsx)("circle", { cx: CENTER, cy: CENTER, r: 74, fill: "none", stroke: "rgba(212,97,74,0.30)" })] }), (0, jsx_runtime_1.jsx)("div", { className: "eazo-orbit-track", children: icons_1.CAPABILITIES.map((c, i) => {
399
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "eazo-orbit", children: [(0, jsx_runtime_1.jsxs)("svg", { className: "eazo-orbit-rings", viewBox: `0 0 ${SIDE} ${SIDE}`, preserveAspectRatio: "xMidYMid meet", "aria-hidden": "true", children: [(0, jsx_runtime_1.jsx)("circle", { cx: CENTER, cy: CENTER, r: 138, fill: "none", stroke: "rgba(17,19,15,0.06)" }), (0, jsx_runtime_1.jsx)("circle", { cx: CENTER, cy: CENTER, r: RADIUS, fill: "none", stroke: "rgba(17,19,15,0.08)", strokeDasharray: "2 6" })] }), (0, jsx_runtime_1.jsx)("div", { className: "eazo-orbit-track", children: icons_1.CAPABILITIES.map((c, i) => {
395
400
  // Distribute nodes evenly around the ring, starting from the
396
401
  // top (`-Math.PI / 2`).
397
402
  const angle = (i / icons_1.CAPABILITIES.length) * Math.PI * 2 - Math.PI / 2;
398
403
  const leftPct = 50 + Math.cos(angle) * RADIUS_PCT;
399
404
  const topPct = 50 + Math.sin(angle) * RADIUS_PCT;
400
405
  return ((0, jsx_runtime_1.jsx)("div", { className: "eazo-orbit-node", style: { left: `${leftPct}%`, top: `${topPct}%` }, "aria-label": c.label, children: (0, jsx_runtime_1.jsx)(icons_1.CapIcon, { k: c.key, size: 14 }) }, c.key));
401
- }) }), (0, jsx_runtime_1.jsx)(Monolith, { initials: initials, iconUrl: iconUrl, loading: loading })] }));
406
+ }) }), mobile ? (
407
+ // Phone user can't usefully scan their own screen — show the
408
+ // app logo at orbit center instead. CSS already adapts the
409
+ // monolith's CSS size for the mobile media query (96 → 76).
410
+ (0, jsx_runtime_1.jsx)(Monolith, { initials: initials, iconUrl: iconUrl, loading: loading })) : pageUrl ? (
411
+ // Desktop center is the scannable QR — pop your phone over the
412
+ // screen and the SDK on the phone side does the handoff. The
413
+ // app's icon embeds in the QR center as branding (ECC bumps to
414
+ // H automatically so the masked area still scans).
415
+ (0, jsx_runtime_1.jsx)("div", { className: "eazo-orbit-qr", children: (0, jsx_runtime_1.jsx)(qr_1.QrSvg, { value: pageUrl, size: 144, logoUrl: iconUrl, logoGlyph: iconUrl ? undefined : iconGlyph }) })) : null] }));
402
416
  }
403
- function Monolith({ initials, iconUrl, loading }) {
417
+ function Monolith({ initials, iconUrl, loading, size }) {
404
418
  const [imgState, setImgState] = React.useState(iconUrl ? "pending" : "loaded");
405
419
  // Reset whenever the URL changes — covers Provider remounts and
406
420
  // hot-reload paths where the icon swaps without a fresh component.
@@ -412,7 +426,19 @@ function Monolith({ initials, iconUrl, loading }) {
412
426
  // Text falls in when there's nothing to show as a picture: not loading,
413
427
  // and either no URL or the URL failed to load.
414
428
  const showText = !loading && !hasUsableImg;
415
- return ((0, jsx_runtime_1.jsxs)("div", { className: "eazo-monolith", "aria-hidden": "true", children: [hasUsableImg ? ((0, jsx_runtime_1.jsx)("img", { className: `eazo-monolith-img${imgState === "loaded" ? " is-loaded" : ""}`, src: iconUrl, alt: "", onLoad: () => setImgState("loaded"), onError: () => setImgState("errored") })) : null, showText ? ((0, jsx_runtime_1.jsx)("span", { style: { transform: "translateY(-1px)" }, children: initials })) : null, showShimmer ? (0, jsx_runtime_1.jsx)("div", { className: "eazo-monolith-skel" }) : null] }));
429
+ // When `size` is supplied, override the CSS-driven width/height and
430
+ // proportionally scale the typographic fallback + corner radius so
431
+ // the small variant in the CTA row reads as the same component, just
432
+ // shrunk. When omitted, the CSS sizing for desktop/mobile applies.
433
+ const overrideStyle = size
434
+ ? {
435
+ width: size,
436
+ height: size,
437
+ fontSize: Math.round(size * 0.45),
438
+ borderRadius: Math.round(size * 0.22),
439
+ }
440
+ : undefined;
441
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "eazo-monolith", style: overrideStyle, "aria-hidden": "true", children: [hasUsableImg ? ((0, jsx_runtime_1.jsx)("img", { className: `eazo-monolith-img${imgState === "loaded" ? " is-loaded" : ""}`, src: iconUrl, alt: "", onLoad: () => setImgState("loaded"), onError: () => setImgState("errored") })) : null, showText ? ((0, jsx_runtime_1.jsx)("span", { style: { transform: "translateY(-1px)" }, children: initials })) : null, showShimmer ? (0, jsx_runtime_1.jsx)("div", { className: "eazo-monolith-skel" }) : null] }));
416
442
  }
417
443
  function BottomBanner({ info, loading, cta, }) {
418
444
  // Source-of-truth stats come from the public app endpoint. Surface
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/internal/banner-ui/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/internal/banner-ui/index.tsx"],"names":[],"mappings":"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"}
@@ -10,13 +10,31 @@ interface QrSvgProps {
10
10
  bg?: string;
11
11
  /** Border-radius applied to the SVG host. */
12
12
  radius?: number;
13
+ /**
14
+ * Optional logo overlaid at the QR's center. When supplied the encoder
15
+ * is forced to ECC level `H` (~30% damage tolerance) so the masked
16
+ * region remains decodable. Pass an http(s)/data image URL, or omit
17
+ * and use `logoGlyph` for emoji / initials.
18
+ */
19
+ logoUrl?: string;
20
+ /**
21
+ * Optional short glyph (emoji, 1–2 initials) drawn at the QR's center
22
+ * as text. Used when the app has no image icon. Ignored when
23
+ * `logoUrl` is also set.
24
+ */
25
+ logoGlyph?: string;
13
26
  }
14
27
  /**
15
28
  * Renders a real, scannable QR code as inline SVG. Used by the web-only
16
29
  * handoff overlay to encode the `eazo://` deep link for the host app so
17
30
  * users on a desktop browser can pop their phone over the screen to open
18
31
  * the app directly.
32
+ *
33
+ * Pass `logoUrl` (or `logoGlyph`) to embed the host app's icon in the
34
+ * QR's dead center — purely cosmetic; the encoder upgrades to ECC level
35
+ * `H` so the masked region still resolves under typical phone-camera
36
+ * scans.
19
37
  */
20
- export declare function QrSvg({ value, size, fg, bg, radius, }: QrSvgProps): React.ReactElement | null;
38
+ export declare function QrSvg({ value, size, fg, bg, radius, logoUrl, logoGlyph, }: QrSvgProps): React.ReactElement | null;
21
39
  export {};
22
40
  //# sourceMappingURL=qr.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"qr.d.ts","sourceRoot":"","sources":["../../../src/internal/banner-ui/qr.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,UAAU,UAAU;IAClB,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,mDAAmD;IACnD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,IAAS,EACT,EAAc,EACd,EAAc,EACd,MAAU,GACX,EAAE,UAAU,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CA+DxC"}
1
+ {"version":3,"file":"qr.d.ts","sourceRoot":"","sources":["../../../src/internal/banner-ui/qr.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,UAAU,UAAU;IAClB,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,mDAAmD;IACnD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,IAAS,EACT,EAAc,EACd,EAAc,EACd,MAAU,EACV,OAAO,EACP,SAAS,GACV,EAAE,UAAU,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAqJxC"}
@@ -48,8 +48,18 @@ const qrcode_generator_1 = __importDefault(require("qrcode-generator"));
48
48
  * handoff overlay to encode the `eazo://` deep link for the host app so
49
49
  * users on a desktop browser can pop their phone over the screen to open
50
50
  * the app directly.
51
+ *
52
+ * Pass `logoUrl` (or `logoGlyph`) to embed the host app's icon in the
53
+ * QR's dead center — purely cosmetic; the encoder upgrades to ECC level
54
+ * `H` so the masked region still resolves under typical phone-camera
55
+ * scans.
51
56
  */
52
- function QrSvg({ value, size = 88, fg = "#11130f", bg = "#ffffff", radius = 6, }) {
57
+ function QrSvg({ value, size = 88, fg = "#11130f", bg = "#ffffff", radius = 6, logoUrl, logoGlyph, }) {
58
+ const [logoImgState, setLogoImgState] = React.useState(logoUrl ? "pending" : "idle");
59
+ React.useEffect(() => {
60
+ setLogoImgState(logoUrl ? "pending" : "idle");
61
+ }, [logoUrl]);
62
+ const hasLogo = !!(logoUrl || logoGlyph);
53
63
  // Memoize the encode — fairly cheap, but the SVG can re-render often
54
64
  // (the parent banner re-renders on resize / state changes) and the
55
65
  // encoder is deterministic for a given `value`.
@@ -57,10 +67,12 @@ function QrSvg({ value, size = 88, fg = "#11130f", bg = "#ffffff", radius = 6, }
57
67
  if (!value)
58
68
  return null;
59
69
  // Type-number 0 = "auto-pick smallest that fits" given the data + ECC.
60
- // Error-correction level M is a sensible default for promo URLs:
61
- // resilient to ~15% damage but still compact enough for a 25px-ish
62
- // module count at 88px box.
63
- const qr = (0, qrcode_generator_1.default)(0, "M");
70
+ // With a center logo we punch out ~22% of the symbol; bump ECC from
71
+ // `M` (~15%) to `H` (~30%) so the masked region still decodes. Without
72
+ // a logo, stay on `M` — `H` would balloon the module count and shrink
73
+ // each cell needlessly.
74
+ const ecc = hasLogo ? "H" : "M";
75
+ const qr = (0, qrcode_generator_1.default)(0, ecc);
64
76
  qr.addData(value);
65
77
  qr.make();
66
78
  const count = qr.getModuleCount();
@@ -73,7 +85,7 @@ function QrSvg({ value, size = 88, fg = "#11130f", bg = "#ffffff", radius = 6, }
73
85
  rows.push(row);
74
86
  }
75
87
  return { rows, count };
76
- }, [value]);
88
+ }, [value, hasLogo]);
77
89
  if (!matrix)
78
90
  return null;
79
91
  const { rows, count } = matrix;
@@ -90,6 +102,36 @@ function QrSvg({ value, size = 88, fg = "#11130f", bg = "#ffffff", radius = 6, }
90
102
  rects.push((0, jsx_runtime_1.jsx)("rect", { x: (c + quiet) * cell, y: (r + quiet) * cell, width: cell, height: cell, fill: fg }, `${r}-${c}`));
91
103
  }
92
104
  }
93
- return ((0, jsx_runtime_1.jsx)("svg", { width: size, height: size, viewBox: `0 0 ${size} ${size}`, style: { background: bg, borderRadius: radius, display: "block" }, "aria-label": "QR code", role: "img", children: rects }));
105
+ // Render the logo overlay only when there's something usable. A URL
106
+ // that errored out collapses to either the glyph fallback (if both
107
+ // were supplied) or to nothing — the QR's center reads as a sea of
108
+ // modules, which is fine since ECC was bumped on the assumption a
109
+ // logo would land there.
110
+ const showLogoImg = !!logoUrl && logoImgState !== "errored";
111
+ const showLogoGlyph = !showLogoImg && !!logoGlyph;
112
+ const showLogoLayer = showLogoImg || showLogoGlyph;
113
+ // Geometry for the center logo. Sizing in SVG-user-space so the SVG
114
+ // scales cleanly under `viewBox` if the parent ever overrides width/height.
115
+ // Inner content (image / glyph) is ~22% of the QR; the white tile that
116
+ // backs it is slightly larger (~30%) so transparent icons don't bleed
117
+ // into surrounding modules.
118
+ const tileSize = size * 0.3;
119
+ const contentSize = size * 0.22;
120
+ const tileX = (size - tileSize) / 2;
121
+ const tileY = (size - tileSize) / 2;
122
+ const contentX = (size - contentSize) / 2;
123
+ const contentY = (size - contentSize) / 2;
124
+ // Tile corner radius scales with tile size so the rounding stays
125
+ // visually consistent across the 88px (modal) and 140px (popover) sizes.
126
+ const tileRadius = Math.max(4, tileSize * 0.18);
127
+ return ((0, jsx_runtime_1.jsxs)("svg", { width: size, height: size, viewBox: `0 0 ${size} ${size}`, style: { background: bg, borderRadius: radius, display: "block" }, "aria-label": "QR code", role: "img", children: [rects, showLogoLayer ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("rect", { x: tileX, y: tileY, width: tileSize, height: tileSize, rx: tileRadius, ry: tileRadius, fill: bg }), showLogoImg ? (
128
+ // `preserveAspectRatio="xMidYMid slice"` matches CSS
129
+ // `object-fit: cover` — the icon fills the content square and
130
+ // any overflow gets clipped by the rounded tile (via the
131
+ // clipPath below).
132
+ (0, jsx_runtime_1.jsx)("image", { href: logoUrl, x: contentX, y: contentY, width: contentSize, height: contentSize, preserveAspectRatio: "xMidYMid slice", clipPath: "inset(0 round 4px)", onLoad: () => setLogoImgState("loaded"), onError: () => setLogoImgState("errored"), style: {
133
+ opacity: logoImgState === "loaded" ? 1 : 0,
134
+ transition: "opacity 160ms ease-out",
135
+ } })) : null, showLogoGlyph ? ((0, jsx_runtime_1.jsx)("text", { x: size / 2, y: size / 2, textAnchor: "middle", dominantBaseline: "central", fontSize: contentSize * 0.78, fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif", fontWeight: 600, fill: fg, children: logoGlyph })) : null] })) : null] }));
94
136
  }
95
137
  //# sourceMappingURL=qr.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"qr.js","sourceRoot":"","sources":["../../../src/internal/banner-ui/qr.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"qr.js","sourceRoot":"","sources":["../../../src/internal/banner-ui/qr.tsx"],"names":[],"mappings":"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"}
@@ -2,6 +2,6 @@ export declare const BANNER_HEIGHT_DESKTOP = 52;
2
2
  export declare const BANNER_HEIGHT_MOBILE = 56;
3
3
  export declare const BOTTOM_HEIGHT_DESKTOP = 72;
4
4
  export declare const BOTTOM_HEIGHT_MOBILE = 78;
5
- export declare const BANNER_UI_CSS = "\n/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n * Host content safe area \u2014 two-layer wrapper\n *\n * Two nested elements wrap the host's children at the EazoProvider level:\n *\n * <div class=\"eazo-app-area\"> \u2190 outer: containing block\n * <div class=\"eazo-app-area-scroller\"> \u2190 inner: scroll container\n * {host children}\n * </div>\n * </div>\n *\n * Both elements are ALWAYS rendered (SSR + CSR markup is static, no\n * hydration mismatch). The effective styles activate only when the host\n * is a plain web browser AND the handoff banners are mounted \u2014 gated on\n * the `eazo-host-web` class on `<html>`, set/cleared by the banner-ui\n * effect. In a mobile WebView or iframe both elements are inert `<div>`s.\n *\n * Why two layers (this is the whole point):\n *\n * A single-element wrapper that combines `transform: translateZ(0)` AND\n * `overflow: auto` LOOKS like it should keep host's `position: fixed;\n * bottom: 0` elements pinned above the SDK banner \u2014 the transform\n * reparents the containing block to the wrapper, after all. But under\n * that combination, browsers (per the CSS positioning + scrolling spec\n * interaction) demote the fixed descendant to absolute-like behavior\n * AND translate it by the wrapper's scroll offset. The \"sticky CTA\"\n * ends up scrolling with content rather than staying pinned.\n *\n * Splitting them fixes this:\n * - `.eazo-app-area` (outer): `position: fixed` between the banners\n * + `transform: translateZ(0)`. It establishes the containing block\n * but is NOT a scroll container \u2014 its own padding box never moves.\n * - `.eazo-app-area-scroller` (inner): `position: absolute; inset: 0`\n * to fill the outer + `overflow-y: auto` to scroll host content. It\n * is NOT a containing block for fixed descendants (no transform,\n * static position contexts don't qualify), so host's\n * `position: fixed; bottom: 0` still resolves all the way up to the\n * outer. The bar is painted in the outer's coordinate space, OUTSIDE\n * the inner's scroll layer, so scrolling host content does NOT\n * translate it. Result: bar stays visually pinned to the outer's\n * bottom edge \u2014 which sits exactly above the SDK banner.\n *\n * Why scope the styles to `html.eazo-host-web`:\n * The wrapper only exists to keep host content clear of the SDK's\n * handoff banners. In a mobile WebView or iframe the banners don't\n * render \u2014 the wrapper has no job, and activating the fixed-position\n * + overflow + containing-block semantics there would silently break\n * `window.scrollY`, `window` scroll listeners, body-overflow scroll\n * locks, and host modals at `position: fixed; inset: 0` for zero\n * product benefit. So both layers stay inert outside plain web.\n *\n * Known trade-offs on web (called out in CHANGELOG):\n * - Scrolling happens inside `.eazo-app-area-scroller`, not on\n * `window`. Code reading `window.scrollY` or attaching `scroll`\n * listeners to `window` must migrate to the scroller element.\n * - `document.body { overflow: hidden }` no longer locks scroll;\n * body-scroll-lock libraries must target the scroller.\n * - Host modals at `position: fixed; inset: 0` are contained to\n * the outer wrapper rather than covering the full viewport \u2014\n * visually equivalent (the wrapper IS the safe-area box) but\n * `inset: 0` no longer covers the banner area.\n */\n/* Default state for the two wrapper layers: `display: contents` makes\n * the wrapper boxes disappear from layout entirely. Their children\n * participate in the GRANDPARENT's layout context (i.e. directly in the\n * `<body>`'s flex column) as if the wrapper elements didn't exist.\n * With no generated box there's also no containing block for fixed\n * descendants \u2014 host's `position: fixed; bottom: 0` resolves all the\n * way up to the viewport, exactly as it would without the SDK present.\n *\n * This is the ONLY state the wrapper takes in mobile WebView / iframe\n * hosts: the banners aren't mounted, the wrapper has no job, so it\n * collapses to a layout no-op. `html.eazo-host-web` (added by banner-ui\n * on mount, only in plain web) overrides BOTH layers below to their\n * full active styles. */\n.eazo-app-area,\n.eazo-app-area-scroller {\n display: contents;\n}\n\nhtml.eazo-host-web .eazo-app-area {\n display: block;\n position: fixed;\n inset: var(--eazo-handoff-top, 0px) 0 var(--eazo-handoff-bottom, 0px) 0;\n /* Containing block for fixed-positioned descendants \u2014 this is what\n * lets host's `position: fixed; bottom: 0` anchor to the wrapper\n * (between the banners) instead of to the viewport (under our banner).\n *\n * IMPORTANT: do not move `overflow: auto` onto this element. The\n * combination of transform + overflow makes fixed descendants scroll\n * with content. The scroll lives on `.eazo-app-area-scroller` below. */\n transform: translateZ(0);\n}\nhtml.eazo-host-web .eazo-app-area-scroller {\n display: block;\n /* Fill the outer wrapper exactly. `position: absolute` is the\n * cheapest way to do this \u2014 `width/height: 100%` plus margin/padding\n * inheritance can leak; `inset: 0` against the outer's padding box\n * is unambiguous. */\n position: absolute;\n inset: 0;\n /* This is the actual scroll container for host content. Crucially,\n * it does NOT have `transform` \u2014 so it is NOT a containing block\n * for host's `position: fixed` descendants. Those still resolve up\n * to `.eazo-app-area` and stay pinned to its edges, ignoring scroll. */\n overflow-x: hidden;\n overflow-y: auto;\n /* Disable rubber-band overscroll. The wrapper sits between two fixed\n * banners on its own compositor layer (via the outer's translateZ);\n * during native overscroll bounce the scroller's content briefly\n * translates beyond its padding box and the compositor briefly\n * reveals adjacent layers \u2014 the cream top banner above, the white\n * bottom banner below, the body's UA-default background everywhere\n * else \u2014 as a flash of \"other colors\" at the top/bottom edges.\n * `overscroll-behavior: none` keeps the scroll fully contained and\n * eliminates that visual seam, at the cost of the native bounce\n * gesture inside the wrapper (acceptable trade for the SDK's promo\n * surface, which is already constrained by the banner sandwich). */\n overscroll-behavior: none;\n}\n\n/* The whole handoff UI lives inside ONE fixed-positioned container that\n * fills the viewport and flex-columns its three children: top banner +\n * overlay (which holds the modal) + bottom banner. This replaces the\n * earlier design where each piece was independently position:fixed\n * with hand-tuned top:52px / bottom:60px insets \u2014 that scheme broke\n * any time an ancestor of the SDK mount established a containing block\n * (transform / filter / backdrop-filter / contain on <body>, a wrapper,\n * etc.), at which point position:fixed becomes relative to that\n * ancestor and the math goes wrong. Flex layout makes the overlay\n * genuinely between the banners by structure, not by pixel math.\n *\n * The root is pointer-events:none so the user's page underneath stays\n * interactive in transparent regions (there shouldn't be any when the\n * overlay's modal is up, but it's the right default). Each visual child\n * (banners + overlay dim) opts back in with pointer-events:auto. */\n.eazo-handoff-root {\n \n --eazo-cream: #f1ebe0;\n --eazo-paper: #faf6ee;\n --eazo-ink: #11130f;\n --eazo-ink-soft: rgba(17,19,15,0.62);\n --eazo-ink-faint: rgba(17,19,15,0.32);\n --eazo-hair: rgba(17,19,15,0.10);\n --eazo-coral: #d4614a;\n --eazo-coral-gradient: linear-gradient(180deg, #F47A42 0%, #EE5C2A 100%);\n --eazo-glow: rgba(212,97,74,0.36);\n --eazo-sans: \"Inter\", \"Helvetica Neue\", system-ui, sans-serif;\n --eazo-serif: \"Source Serif 4\", \"GT Sectra\", \"Tiempos\", Georgia, serif;\n --eazo-mono: \"JetBrains Mono\", \"IBM Plex Mono\", ui-monospace, Menlo, monospace;\n\n position: fixed;\n inset: 0;\n z-index: 2147483540;\n display: flex;\n flex-direction: column;\n /* justify-content:space-between keeps the bottom banner pinned even\n * when the user dismisses the modal (the overlay child unmounts) \u2014\n * without it the flex-column would collapse the bottom banner up to\n * sit right under the top one. */\n justify-content: space-between;\n color: var(--eazo-ink);\n font-family: var(--eazo-sans);\n box-sizing: border-box;\n pointer-events: none;\n}\n.eazo-handoff-root *, .eazo-handoff-root *::before, .eazo-handoff-root *::after {\n box-sizing: border-box;\n}\n\n@keyframes eazo-handoff-slide-down {\n from { transform: translateY(-100%); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n@keyframes eazo-handoff-slide-up {\n from { transform: translateY(100%); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n@keyframes eazo-handoff-orbit { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }\n@keyframes eazo-handoff-orbit-rev { from { transform: rotate(360deg); } to { transform: rotate(0deg); } }\n@keyframes eazo-handoff-glow { 0%,100% { opacity: 0.7; } 50% { opacity: 1; } }\n@keyframes eazo-handoff-fade-in { from { opacity: 0; } to { opacity: 1; } }\n@keyframes eazo-handoff-pop-in {\n from { opacity: 0; transform: translateY(12px) scale(0.97); }\n to { opacity: 1; transform: translateY(0) scale(1); }\n}\n\n/* ============ TOP BANNER ============\n *\n * Slim three-piece strip: brand mark, single-line copy, CTA. The\n * underlying app's content sits below this. Non-dismissible.\n */\n.eazo-banner-root {\n /* Flex child of .eazo-handoff-root \u2014 naturally pinned to the top of\n * the viewport-filling container. No position:fixed needed. */\n flex-shrink: 0;\n display: flex;\n align-items: center;\n gap: 12px;\n height: 52px;\n padding: 0 14px 0 18px;\n background: var(--eazo-cream);\n border-bottom: 1px solid var(--eazo-hair);\n pointer-events: auto;\n animation: eazo-handoff-slide-down 240ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n.eazo-banner-brand {\n display: inline-flex; align-items: center;\n flex-shrink: 0;\n color: var(--eazo-ink);\n}\n.eazo-banner-copy {\n flex: 1; min-width: 0;\n font-size: 14px; font-weight: 500;\n color: var(--eazo-ink-soft);\n overflow: hidden; text-overflow: ellipsis; white-space: nowrap;\n}\n.eazo-banner-cta {\n flex-shrink: 0;\n display: inline-flex; align-items: center; gap: 6px;\n height: 30px; padding: 0 14px; border-radius: 10px;\n background: var(--eazo-coral-gradient); color: #fff;\n font-size: 12px; font-weight: 600; border: 0; cursor: pointer;\n text-decoration: none;\n box-shadow: 0 10px 22px var(--eazo-glow);\n transition: filter 160ms ease, box-shadow 160ms ease;\n}\n.eazo-banner-cta:hover { filter: brightness(1.06); }\n\n/* CTA wrapper anchors the hover/focus popover. position:relative is the\n * coordinate origin for the absolutely-positioned popover below. */\n.eazo-banner-cta-wrap {\n position: relative;\n display: inline-flex;\n flex-shrink: 0;\n}\n\n/* Hover popover holding the page-URL QR. Matches the v5-stagelight\n * design (project/v5-stagelight.jsx:59-85). The CTA's right edge anchors\n * the right edge of the popover so it never spills off the viewport on\n * a banner where the CTA is hugged to the right padding. */\n.eazo-banner-cta-popover {\n position: absolute;\n top: calc(100% + 10px);\n right: 0;\n z-index: 2147483560;\n display: flex; flex-direction: column; align-items: center; gap: 8px;\n min-width: 168px;\n padding: 14px;\n background: #fff;\n border: 1px solid var(--eazo-hair);\n border-radius: 14px;\n box-shadow:\n 0 24px 50px -20px rgba(17,19,15,0.22),\n 0 0 0 1px rgba(17,19,15,0.03);\n animation: eazo-handoff-fade-in 140ms ease-out;\n}\n/* Triangular tail pointing back up at the CTA. Rotated square so it\n * inherits the card's border + background without an extra SVG. */\n.eazo-banner-cta-popover-arrow {\n position: absolute;\n top: -7px; right: 24px;\n width: 12px; height: 12px;\n background: #fff;\n border-top: 1px solid var(--eazo-hair);\n border-left: 1px solid var(--eazo-hair);\n transform: rotate(45deg);\n}\n.eazo-banner-cta-popover-qr {\n padding: 4px;\n background: #fff;\n line-height: 0;\n}\n.eazo-banner-cta-popover-caption {\n font-family: var(--eazo-mono);\n font-size: 11px;\n line-height: 1.4;\n letter-spacing: 0.04em;\n color: var(--eazo-ink-soft);\n text-align: center;\n}\n\n/* ============ OVERLAY (backdrop + spotlight + modal) ============\n *\n * The flex-middle of .eazo-handoff-root. Takes whatever vertical space\n * the top and bottom banners don't claim \u2014 i.e. it IS the inter-banner\n * area by structure, not by pixel math. overflow:hidden clips any\n * oversized modal at this seam; the modal's own max-height:100% plus\n * the overlay's flex centering keeps it inside.\n */\n.eazo-handoff-overlay {\n flex: 1;\n min-height: 0; /* allow the flex item to shrink below content size */\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n padding: 16px;\n pointer-events: auto;\n animation: eazo-handoff-fade-in 320ms ease-out;\n}\n.eazo-handoff-overlay-dim {\n position: absolute; inset: 0;\n background: rgba(241,235,224,0.78);\n backdrop-filter: blur(3px);\n -webkit-backdrop-filter: blur(3px);\n}\n.eazo-handoff-overlay-spot {\n position: absolute; inset: 0;\n background: radial-gradient(ellipse at 50% 50%, rgba(212,97,74,0.22) 0%, rgba(212,97,74,0.06) 30%, transparent 58%);\n pointer-events: none;\n}\n\n.eazo-modal {\n /* Natural flex centering by the overlay parent \u2014 no absolute\n * positioning. This keeps the modal inside the overlay's banner-\n * constrained box even when its content is tall, so it never bleeds\n * into the top or bottom banner area. If the modal is taller than the\n * overlay, the inner content scrolls. */\n position: relative;\n width: min(540px, 100%);\n max-height: 100%;\n overflow-y: auto;\n padding: 32px 32px 28px;\n background: rgba(255,255,255,0.92);\n backdrop-filter: blur(20px);\n -webkit-backdrop-filter: blur(20px);\n border: 1px solid var(--eazo-hair);\n border-radius: 24px;\n color: var(--eazo-ink);\n box-shadow:\n 0 60px 100px -40px rgba(17,19,15,0.28),\n inset 0 1px 0 rgba(255,255,255,0.7),\n 0 0 60px var(--eazo-glow);\n display: flex; flex-direction: column; align-items: center; gap: 18px;\n animation: eazo-handoff-pop-in 360ms cubic-bezier(0.16, 1, 0.3, 1) both;\n}\n/* Close button \u2014 sits in the modal's top-right corner. The top + bottom\n * Eazo banners stay visible after the user dismisses the modal; only\n * this center \"strong CTA\" goes away (per-tab via sessionStorage). */\n.eazo-modal-close {\n position: absolute;\n top: 12px; right: 12px;\n width: 30px; height: 30px;\n display: inline-flex; align-items: center; justify-content: center;\n border: 0; padding: 0;\n border-radius: 999px;\n background: rgba(17,19,15,0.04);\n color: var(--eazo-ink-soft);\n cursor: pointer;\n transition: background 140ms ease, color 140ms ease;\n}\n.eazo-modal-close:hover {\n background: rgba(17,19,15,0.08);\n color: var(--eazo-ink);\n}\n.eazo-modal-close:focus-visible {\n outline: 2px solid var(--eazo-coral);\n outline-offset: 2px;\n}\n\n/* ============ ORBITING CAPABILITIES + APP MONOLITH ============\n *\n * Geometry runs in a 280-unit coordinate space (matches the V5 design\n * canvas). The rings SVG uses a viewBox so its content scales to whatever\n * pixel size the .eazo-orbit container is in CSS (280 desktop, 220\n * mobile). The capability nodes position via percentage left/top on\n * the rotating track, then use negative margins to center on that point\n * \u2014 margins do not fight the track rotate animation the way a\n * transform: translate(-50%, -50%) would.\n */\n.eazo-orbit {\n position: relative;\n width: 280px; height: 280px;\n display: grid; place-items: center;\n}\n.eazo-orbit-rings {\n position: absolute; inset: 0;\n width: 100%; height: 100%;\n opacity: 0.95;\n}\n.eazo-orbit-track {\n position: absolute; inset: 0; width: 100%; height: 100%;\n animation: eazo-handoff-orbit 30s linear infinite;\n}\n.eazo-orbit-node {\n position: absolute;\n width: 36px; height: 36px;\n margin: -18px 0 0 -18px;\n border-radius: 10px;\n background: #fff; border: 1px solid var(--eazo-hair);\n display: grid; place-items: center;\n box-shadow: 0 10px 22px -10px rgba(17,19,15,0.15);\n animation: eazo-handoff-orbit-rev 30s linear infinite;\n color: var(--eazo-coral);\n}\n.eazo-monolith {\n width: 96px; height: 96px; border-radius: 22px;\n /* Default fallback background \u2014 visible behind emoji icons and the\n * typographic initials fallback. URL icons render as a child <img>\n * that covers this completely. Eazo coral gradient (same as primary\n * CTAs) so the empty state reads as a clear Eazo-brand placeholder. */\n background: var(--eazo-coral-gradient);\n display: grid; place-items: center;\n position: relative;\n color: #ffffff;\n font-family: var(--eazo-serif); font-weight: 500;\n font-size: 42px; letter-spacing: -0.02em;\n box-shadow:\n 0 30px 60px -20px var(--eazo-glow),\n inset 0 1px 0 rgba(255,255,255,0.30),\n 0 0 0 1px rgba(255,255,255,0.14);\n overflow: hidden;\n}\n.eazo-monolith img {\n width: 100%; height: 100%; object-fit: cover; display: block;\n}\n\n.eazo-modal-eyebrow {\n font-family: var(--eazo-mono); font-size: 10px;\n letter-spacing: 0.18em; text-transform: uppercase;\n color: var(--eazo-ink-faint);\n text-align: center;\n}\n.eazo-modal-title {\n margin: 0; font-family: var(--eazo-serif); font-weight: 500;\n font-size: 32px; line-height: 1.15; letter-spacing: -0.02em;\n text-align: center; max-width: 360px;\n /* Clamp at 2 lines so an unusually long app name doesn't blow up the\n * modal height. Ellipsis takes over for the overflow. */\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n word-break: break-word;\n}\n.eazo-modal-sub {\n margin: 0; font-size: 13px; line-height: 1.5;\n color: var(--eazo-ink-soft);\n text-align: center; max-width: 360px;\n /* Same idea \u2014 long taglines clamp to 3 lines to keep the QR + CTA\n * visible without scrolling. */\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n word-break: break-word;\n}\n\n/* Skeleton blocks shown while public app info is in flight. The modal\n * frame appears immediately so the user sees Eazo's commitment to the\n * handoff; the name / tagline swap in once the fetch resolves. */\n.eazo-skel {\n display: inline-block;\n vertical-align: middle;\n background: linear-gradient(90deg,\n rgba(17,19,15,0.05) 0%,\n rgba(17,19,15,0.12) 50%,\n rgba(17,19,15,0.05) 100%);\n background-size: 200% 100%;\n border-radius: 8px;\n animation: eazo-skel-shimmer 1.4s linear infinite;\n}\n.eazo-skel-title { width: 60%; height: 36px; }\n.eazo-skel-sub-1 { width: 80%; height: 13px; margin-top: 8px; }\n.eazo-skel-sub-2 { width: 55%; height: 13px; margin-top: 6px; }\n.eazo-skel-stat { width: 28px; height: 11px; border-radius: 4px; }\n@keyframes eazo-skel-shimmer {\n from { background-position: 200% 0; }\n to { background-position: -200% 0; }\n}\n\n/* Monolith-tuned shimmer \u2014 sweeps a brighter band over the dark navy\n * gradient. Used while public app info is still loading, and as the\n * placeholder behind an <img> until it decodes. */\n.eazo-monolith-skel {\n position: absolute;\n inset: 0;\n background: linear-gradient(90deg,\n rgba(255,255,255,0.00) 0%,\n rgba(255,255,255,0.18) 50%,\n rgba(255,255,255,0.00) 100%);\n background-size: 200% 100%;\n animation: eazo-skel-shimmer 1.4s linear infinite;\n pointer-events: none;\n}\n.eazo-monolith-img {\n width: 100%; height: 100%;\n object-fit: cover; display: block;\n opacity: 0;\n transition: opacity 220ms ease-out;\n}\n.eazo-monolith-img.is-loaded { opacity: 1; }\n\n/* ============ QR + CTA ROW ============ */\n.eazo-cta-row {\n width: 100%; display: flex; gap: 12px; align-items: stretch; margin-top: 6px;\n}\n.eazo-qr-tile {\n padding: 8px; border-radius: 10px;\n background: #fff; border: 1px solid var(--eazo-hair);\n display: grid; place-items: center;\n}\n.eazo-cta-body {\n flex: 1; min-width: 0;\n display: flex; flex-direction: column; justify-content: space-between; gap: 8px;\n}\n.eazo-cta-headline {\n font-size: 12px; font-weight: 600;\n}\n.eazo-cta-fine {\n font-size: 10px; color: var(--eazo-ink-faint); margin-top: 4px;\n font-family: var(--eazo-mono); letter-spacing: 0.04em; line-height: 1.5;\n}\n.eazo-cta-primary {\n display: inline-flex; align-items: center; justify-content: center; gap: 8px;\n height: 40px; border-radius: 10px;\n background: var(--eazo-coral-gradient); color: #fff;\n font-size: 13px; font-weight: 600; border: 0; cursor: pointer;\n text-decoration: none;\n box-shadow: 0 14px 26px var(--eazo-glow);\n transition: filter 160ms ease;\n}\n.eazo-cta-primary:hover { filter: brightness(1.06); }\n\n/* ============ BOTTOM BANNER ============\n *\n * Per V5 / M5 design: two prominent stats on the left (heart + chat,\n * each rendered as a tinted icon-tile with a stacked value-over-label\n * column) separated by a thin hair-divider, and a coral \"Remix\" pill\n * on the right that reuses the top-banner CTA handoff. A small\n * \"eazo.ai \u2197\" mark sits to the left of the pill on desktop only \u2014\n * on phone widths (\u2264480px) it drops out so the Remix pill keeps its\n * thumb-zone weight.\n */\n.eazo-bottom-root {\n /* Flex child of .eazo-handoff-root \u2014 naturally pinned to the bottom of\n * the viewport-filling container. No position:fixed needed. */\n flex-shrink: 0;\n display: flex; align-items: center; justify-content: space-between;\n gap: 16px;\n height: 72px;\n padding: 0 22px 0 26px;\n background: #fff;\n border-top: 1px solid var(--eazo-hair);\n pointer-events: auto;\n animation: eazo-handoff-slide-up 240ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n.eazo-bottom-stats {\n display: inline-flex; align-items: center; gap: 22px;\n min-width: 0; color: var(--eazo-ink);\n}\n.eazo-bottom-stat {\n display: inline-flex; align-items: center; gap: 9px;\n font-family: var(--eazo-sans);\n flex-shrink: 0;\n}\n/* Tinted square tile that frames each stat icon \u2014 coral-on-cream for\n * filled glyphs (heart), neutral-on-cream for line glyphs (chat). */\n.eazo-bottom-stat-icon {\n display: inline-flex; align-items: center; justify-content: center;\n width: 30px; height: 30px; border-radius: 8px;\n background: rgba(212,97,74,0.10);\n color: var(--eazo-coral);\n flex-shrink: 0;\n}\n.eazo-bottom-stat-icon.is-line {\n background: rgba(17,19,15,0.05);\n color: var(--eazo-ink);\n}\n.eazo-bottom-stat-text {\n display: inline-flex; flex-direction: column; line-height: 1.05;\n}\n.eazo-bottom-stat-value {\n font-family: var(--eazo-sans);\n font-size: 16px; font-weight: 600; letter-spacing: -0.01em;\n}\n.eazo-bottom-stat-label {\n font-family: var(--eazo-sans);\n font-size: 11px; font-weight: 500;\n color: var(--eazo-ink-faint);\n margin-top: 1px;\n}\n.eazo-bottom-stat-divider {\n width: 1px; height: 28px;\n background: var(--eazo-hair);\n flex-shrink: 0;\n}\n.eazo-bottom-skel {\n display: inline-block; vertical-align: middle;\n width: 32px; height: 18px; border-radius: 4px;\n background: linear-gradient(90deg,\n rgba(17,19,15,0.05) 0%,\n rgba(17,19,15,0.12) 50%,\n rgba(17,19,15,0.05) 100%);\n background-size: 200% 100%;\n animation: eazo-skel-shimmer 1.4s linear infinite;\n}\n\n.eazo-bottom-actions {\n display: inline-flex; align-items: center; gap: 14px;\n flex-shrink: 0;\n}\n.eazo-bottom-site {\n display: inline-flex; align-items: center; gap: 4px;\n color: var(--eazo-ink-soft);\n text-decoration: none;\n font-family: var(--eazo-sans); font-size: 12px; font-weight: 500;\n white-space: nowrap;\n transition: color 140ms ease;\n}\n.eazo-bottom-site:hover { color: var(--eazo-ink); }\n.eazo-bottom-site b { color: var(--eazo-ink); font-weight: 600; }\n\n/* Primary CTA on the bottom banner. Renders as <a> so it picks up the\n * same iOS-timeout fallback handler as the top-banner CTA via the\n * shared bindCtaClick \u2014 keeps the Remix tap on the same install /\n * deeplink path as the rest of the handoff UX. */\n.eazo-bottom-remix {\n display: inline-flex; align-items: center; justify-content: center; gap: 9px;\n height: 44px; padding: 0 20px 0 18px;\n border: 0; cursor: pointer;\n border-radius: 999px;\n background: var(--eazo-coral-gradient); color: #fff;\n font-family: var(--eazo-sans);\n font-size: 14px; font-weight: 600; letter-spacing: -0.005em;\n white-space: nowrap;\n box-shadow:\n 0 12px 24px var(--eazo-glow),\n inset 0 1px 0 rgba(255,255,255,0.18);\n text-decoration: none;\n transition: transform 140ms ease, box-shadow 140ms ease;\n}\n.eazo-bottom-remix:hover {\n transform: translateY(-1px);\n box-shadow:\n 0 14px 28px var(--eazo-glow),\n inset 0 1px 0 rgba(255,255,255,0.22);\n}\n.eazo-bottom-remix:active { transform: translateY(0); }\n\n/* ============ MOBILE TWEAKS (\u2264480px) ============ */\n@media (max-width: 480px) {\n .eazo-banner-root {\n height: 56px;\n padding: 0 10px 0 14px;\n gap: 10px;\n }\n .eazo-banner-copy {\n font-size: 12px; line-height: 1.25; white-space: normal;\n display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;\n }\n .eazo-banner-cta { height: 28px; padding: 0 10px; font-size: 11px; border-radius: 8px; }\n /* Hover doesn't resolve reliably on touch \u2014 the CTA still works as a\n * plain link, no popover needed. Belt-and-suspenders to the JS check\n * (the popover render is also gated on the 'open' state, which never\n * flips without mouseenter / focus). */\n .eazo-banner-cta-popover { display: none; }\n\n .eazo-modal {\n width: calc(100vw - 32px);\n padding: 24px 20px 20px;\n border-radius: 20px;\n gap: 14px;\n }\n .eazo-orbit { width: 220px; height: 220px; }\n .eazo-monolith {\n width: 76px; height: 76px; border-radius: 18px;\n font-size: 32px;\n }\n .eazo-orbit-node {\n width: 28px; height: 28px; border-radius: 8px;\n margin: -14px 0 0 -14px;\n }\n .eazo-modal-title { font-size: 26px; }\n .eazo-modal-sub { font-size: 12px; }\n\n /* Mobile: the user is already on a phone \u2014 no point showing them a QR\n * to scan with their phone, and the \"Scan to open\" headline + fine\n * print only made sense paired with the QR. Collapse to the primary\n * CTA alone. */\n .eazo-qr-tile { display: none; }\n .eazo-cta-row { flex-direction: column; gap: 10px; }\n .eazo-cta-primary { height: 44px; width: 100%; font-size: 14px; border-radius: 12px; }\n .eazo-cta-headline { display: none; }\n .eazo-cta-fine { display: none; }\n\n .eazo-bottom-root {\n height: 78px;\n padding: 0 16px 0 20px;\n gap: 12px;\n }\n /* Tighter cells per the M5 (390px) spec: smaller icon tile, smaller\n * value, smaller divider. Labels stay \u2014 they're a key part of the\n * visual rhythm in M5. */\n .eazo-bottom-stats { gap: 12px; }\n .eazo-bottom-stat { gap: 7px; }\n .eazo-bottom-stat-icon { width: 26px; height: 26px; border-radius: 7px; }\n .eazo-bottom-stat-value { font-size: 14px; }\n .eazo-bottom-stat-label { font-size: 10px; }\n .eazo-bottom-stat-divider { height: 24px; }\n .eazo-bottom-skel { width: 28px; height: 15px; }\n /* M5 drops the secondary eazo.ai mark on phone widths so the Remix\n * pill keeps unambiguous thumb-zone weight. */\n .eazo-bottom-site { display: none; }\n .eazo-bottom-remix {\n height: 44px; padding: 0 18px 0 16px;\n gap: 8px; font-size: 13px;\n box-shadow:\n 0 10px 22px var(--eazo-glow),\n inset 0 1px 0 rgba(255,255,255,0.18);\n }\n /* Drop the trailing \"this app\" wording on phone widths \u2014 the icon\n * plus the verb is already unambiguous and the pill stays compact. */\n .eazo-bottom-remix-suffix { display: none; }\n}\n";
5
+ export declare const BANNER_UI_CSS = "\n/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n * Host content safe area \u2014 two-layer wrapper\n *\n * Two nested elements wrap the host's children at the EazoProvider level:\n *\n * <div class=\"eazo-app-area\"> \u2190 outer: containing block\n * <div class=\"eazo-app-area-scroller\"> \u2190 inner: scroll container\n * {host children}\n * </div>\n * </div>\n *\n * Both elements are ALWAYS rendered (SSR + CSR markup is static, no\n * hydration mismatch). The effective styles activate only when the host\n * is a plain web browser AND the handoff banners are mounted \u2014 gated on\n * the `eazo-host-web` class on `<html>`, set/cleared by the banner-ui\n * effect. In a mobile WebView or iframe both elements are inert `<div>`s.\n *\n * Why two layers (this is the whole point):\n *\n * A single-element wrapper that combines `transform: translateZ(0)` AND\n * `overflow: auto` LOOKS like it should keep host's `position: fixed;\n * bottom: 0` elements pinned above the SDK banner \u2014 the transform\n * reparents the containing block to the wrapper, after all. But under\n * that combination, browsers (per the CSS positioning + scrolling spec\n * interaction) demote the fixed descendant to absolute-like behavior\n * AND translate it by the wrapper's scroll offset. The \"sticky CTA\"\n * ends up scrolling with content rather than staying pinned.\n *\n * Splitting them fixes this:\n * - `.eazo-app-area` (outer): `position: fixed` between the banners\n * + `transform: translateZ(0)`. It establishes the containing block\n * but is NOT a scroll container \u2014 its own padding box never moves.\n * - `.eazo-app-area-scroller` (inner): `position: absolute; inset: 0`\n * to fill the outer + `overflow-y: auto` to scroll host content. It\n * is NOT a containing block for fixed descendants (no transform,\n * static position contexts don't qualify), so host's\n * `position: fixed; bottom: 0` still resolves all the way up to the\n * outer. The bar is painted in the outer's coordinate space, OUTSIDE\n * the inner's scroll layer, so scrolling host content does NOT\n * translate it. Result: bar stays visually pinned to the outer's\n * bottom edge \u2014 which sits exactly above the SDK banner.\n *\n * Why scope the styles to `html.eazo-host-web`:\n * The wrapper only exists to keep host content clear of the SDK's\n * handoff banners. In a mobile WebView or iframe the banners don't\n * render \u2014 the wrapper has no job, and activating the fixed-position\n * + overflow + containing-block semantics there would silently break\n * `window.scrollY`, `window` scroll listeners, body-overflow scroll\n * locks, and host modals at `position: fixed; inset: 0` for zero\n * product benefit. So both layers stay inert outside plain web.\n *\n * Known trade-offs on web (called out in CHANGELOG):\n * - Scrolling happens inside `.eazo-app-area-scroller`, not on\n * `window`. Code reading `window.scrollY` or attaching `scroll`\n * listeners to `window` must migrate to the scroller element.\n * - `document.body { overflow: hidden }` no longer locks scroll;\n * body-scroll-lock libraries must target the scroller.\n * - Host modals at `position: fixed; inset: 0` are contained to\n * the outer wrapper rather than covering the full viewport \u2014\n * visually equivalent (the wrapper IS the safe-area box) but\n * `inset: 0` no longer covers the banner area.\n */\n/* Default state for the two wrapper layers: `display: contents` makes\n * the wrapper boxes disappear from layout entirely. Their children\n * participate in the GRANDPARENT's layout context (i.e. directly in the\n * `<body>`'s flex column) as if the wrapper elements didn't exist.\n * With no generated box there's also no containing block for fixed\n * descendants \u2014 host's `position: fixed; bottom: 0` resolves all the\n * way up to the viewport, exactly as it would without the SDK present.\n *\n * This is the ONLY state the wrapper takes in mobile WebView / iframe\n * hosts: the banners aren't mounted, the wrapper has no job, so it\n * collapses to a layout no-op. `html.eazo-host-web` (added by banner-ui\n * on mount, only in plain web) overrides BOTH layers below to their\n * full active styles. */\n.eazo-app-area,\n.eazo-app-area-scroller {\n display: contents;\n}\n\nhtml.eazo-host-web .eazo-app-area {\n display: block;\n position: fixed;\n inset: var(--eazo-handoff-top, 0px) 0 var(--eazo-handoff-bottom, 0px) 0;\n /* Containing block for fixed-positioned descendants \u2014 this is what\n * lets host's `position: fixed; bottom: 0` anchor to the wrapper\n * (between the banners) instead of to the viewport (under our banner).\n *\n * IMPORTANT: do not move `overflow: auto` onto this element. The\n * combination of transform + overflow makes fixed descendants scroll\n * with content. The scroll lives on `.eazo-app-area-scroller` below. */\n transform: translateZ(0);\n}\nhtml.eazo-host-web .eazo-app-area-scroller {\n display: block;\n /* Fill the outer wrapper exactly. `position: absolute` is the\n * cheapest way to do this \u2014 `width/height: 100%` plus margin/padding\n * inheritance can leak; `inset: 0` against the outer's padding box\n * is unambiguous. */\n position: absolute;\n inset: 0;\n /* This is the actual scroll container for host content. Crucially,\n * it does NOT have `transform` \u2014 so it is NOT a containing block\n * for host's `position: fixed` descendants. Those still resolve up\n * to `.eazo-app-area` and stay pinned to its edges, ignoring scroll. */\n overflow-x: hidden;\n overflow-y: auto;\n /* Disable rubber-band overscroll. The wrapper sits between two fixed\n * banners on its own compositor layer (via the outer's translateZ);\n * during native overscroll bounce the scroller's content briefly\n * translates beyond its padding box and the compositor briefly\n * reveals adjacent layers \u2014 the cream top banner above, the white\n * bottom banner below, the body's UA-default background everywhere\n * else \u2014 as a flash of \"other colors\" at the top/bottom edges.\n * `overscroll-behavior: none` keeps the scroll fully contained and\n * eliminates that visual seam, at the cost of the native bounce\n * gesture inside the wrapper (acceptable trade for the SDK's promo\n * surface, which is already constrained by the banner sandwich). */\n overscroll-behavior: none;\n}\n\n/* The whole handoff UI lives inside ONE fixed-positioned container that\n * fills the viewport and flex-columns its three children: top banner +\n * overlay (which holds the modal) + bottom banner. This replaces the\n * earlier design where each piece was independently position:fixed\n * with hand-tuned top:52px / bottom:60px insets \u2014 that scheme broke\n * any time an ancestor of the SDK mount established a containing block\n * (transform / filter / backdrop-filter / contain on <body>, a wrapper,\n * etc.), at which point position:fixed becomes relative to that\n * ancestor and the math goes wrong. Flex layout makes the overlay\n * genuinely between the banners by structure, not by pixel math.\n *\n * The root is pointer-events:none so the user's page underneath stays\n * interactive in transparent regions (there shouldn't be any when the\n * overlay's modal is up, but it's the right default). Each visual child\n * (banners + overlay dim) opts back in with pointer-events:auto. */\n.eazo-handoff-root {\n \n --eazo-cream: #f1ebe0;\n --eazo-paper: #faf6ee;\n --eazo-ink: #11130f;\n --eazo-ink-soft: rgba(17,19,15,0.62);\n --eazo-ink-faint: rgba(17,19,15,0.32);\n --eazo-hair: rgba(17,19,15,0.10);\n --eazo-coral: #d4614a;\n --eazo-coral-gradient: linear-gradient(180deg, #F47A42 0%, #EE5C2A 100%);\n --eazo-glow: rgba(212,97,74,0.36);\n --eazo-sans: \"Inter\", \"Helvetica Neue\", system-ui, sans-serif;\n --eazo-serif: \"Source Serif 4\", \"GT Sectra\", \"Tiempos\", Georgia, serif;\n --eazo-mono: \"JetBrains Mono\", \"IBM Plex Mono\", ui-monospace, Menlo, monospace;\n\n position: fixed;\n inset: 0;\n z-index: 2147483540;\n display: flex;\n flex-direction: column;\n /* justify-content:space-between keeps the bottom banner pinned even\n * when the user dismisses the modal (the overlay child unmounts) \u2014\n * without it the flex-column would collapse the bottom banner up to\n * sit right under the top one. */\n justify-content: space-between;\n color: var(--eazo-ink);\n font-family: var(--eazo-sans);\n box-sizing: border-box;\n pointer-events: none;\n}\n.eazo-handoff-root *, .eazo-handoff-root *::before, .eazo-handoff-root *::after {\n box-sizing: border-box;\n}\n\n@keyframes eazo-handoff-slide-down {\n from { transform: translateY(-100%); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n@keyframes eazo-handoff-slide-up {\n from { transform: translateY(100%); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n@keyframes eazo-handoff-orbit { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }\n@keyframes eazo-handoff-orbit-rev { from { transform: rotate(360deg); } to { transform: rotate(0deg); } }\n@keyframes eazo-handoff-glow { 0%,100% { opacity: 0.7; } 50% { opacity: 1; } }\n@keyframes eazo-handoff-fade-in { from { opacity: 0; } to { opacity: 1; } }\n@keyframes eazo-handoff-pop-in {\n from { opacity: 0; transform: translateY(12px) scale(0.97); }\n to { opacity: 1; transform: translateY(0) scale(1); }\n}\n\n/* ============ TOP BANNER ============\n *\n * Slim three-piece strip: brand mark, single-line copy, CTA. The\n * underlying app's content sits below this. Non-dismissible.\n */\n.eazo-banner-root {\n /* Flex child of .eazo-handoff-root \u2014 naturally pinned to the top of\n * the viewport-filling container. No position:fixed needed. */\n flex-shrink: 0;\n display: flex;\n align-items: center;\n gap: 12px;\n height: 52px;\n padding: 0 14px 0 18px;\n background: var(--eazo-cream);\n border-bottom: 1px solid var(--eazo-hair);\n pointer-events: auto;\n animation: eazo-handoff-slide-down 240ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n.eazo-banner-brand {\n display: inline-flex; align-items: center;\n flex-shrink: 0;\n color: var(--eazo-ink);\n}\n.eazo-banner-copy {\n flex: 1; min-width: 0;\n font-size: 14px; font-weight: 500;\n color: var(--eazo-ink-soft);\n overflow: hidden; text-overflow: ellipsis; white-space: nowrap;\n}\n.eazo-banner-cta {\n flex-shrink: 0;\n display: inline-flex; align-items: center; gap: 6px;\n height: 30px; padding: 0 14px; border-radius: 10px;\n background: var(--eazo-coral-gradient); color: #fff;\n font-size: 12px; font-weight: 600; border: 0; cursor: pointer;\n text-decoration: none;\n box-shadow: 0 10px 22px var(--eazo-glow);\n transition: filter 160ms ease, box-shadow 160ms ease;\n}\n.eazo-banner-cta:hover { filter: brightness(1.06); }\n\n/* CTA wrapper anchors the hover/focus popover. position:relative is the\n * coordinate origin for the absolutely-positioned popover below. */\n.eazo-banner-cta-wrap {\n position: relative;\n display: inline-flex;\n flex-shrink: 0;\n}\n\n/* Hover popover holding the page-URL QR. Matches the v5-stagelight\n * design (project/v5-stagelight.jsx:59-85). The CTA's right edge anchors\n * the right edge of the popover so it never spills off the viewport on\n * a banner where the CTA is hugged to the right padding. */\n.eazo-banner-cta-popover {\n position: absolute;\n top: calc(100% + 10px);\n right: 0;\n z-index: 2147483560;\n display: flex; flex-direction: column; align-items: center; gap: 8px;\n min-width: 168px;\n padding: 14px;\n background: #fff;\n border: 1px solid var(--eazo-hair);\n border-radius: 14px;\n box-shadow:\n 0 24px 50px -20px rgba(17,19,15,0.22),\n 0 0 0 1px rgba(17,19,15,0.03);\n animation: eazo-handoff-fade-in 140ms ease-out;\n}\n/* Triangular tail pointing back up at the CTA. Rotated square so it\n * inherits the card's border + background without an extra SVG. */\n.eazo-banner-cta-popover-arrow {\n position: absolute;\n top: -7px; right: 24px;\n width: 12px; height: 12px;\n background: #fff;\n border-top: 1px solid var(--eazo-hair);\n border-left: 1px solid var(--eazo-hair);\n transform: rotate(45deg);\n}\n.eazo-banner-cta-popover-qr {\n padding: 4px;\n background: #fff;\n line-height: 0;\n}\n.eazo-banner-cta-popover-caption {\n font-family: var(--eazo-mono);\n font-size: 11px;\n line-height: 1.4;\n letter-spacing: 0.04em;\n color: var(--eazo-ink-soft);\n text-align: center;\n}\n\n/* ============ OVERLAY (backdrop + spotlight + modal) ============\n *\n * The flex-middle of .eazo-handoff-root. Takes whatever vertical space\n * the top and bottom banners don't claim \u2014 i.e. it IS the inter-banner\n * area by structure, not by pixel math. overflow:hidden clips any\n * oversized modal at this seam; the modal's own max-height:100% plus\n * the overlay's flex centering keeps it inside.\n */\n.eazo-handoff-overlay {\n flex: 1;\n min-height: 0; /* allow the flex item to shrink below content size */\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n padding: 16px;\n pointer-events: auto;\n animation: eazo-handoff-fade-in 320ms ease-out;\n}\n.eazo-handoff-overlay-dim {\n position: absolute; inset: 0;\n background: rgba(241,235,224,0.78);\n backdrop-filter: blur(3px);\n -webkit-backdrop-filter: blur(3px);\n}\n.eazo-handoff-overlay-spot {\n position: absolute; inset: 0;\n background: radial-gradient(ellipse at 50% 50%, rgba(212,97,74,0.22) 0%, rgba(212,97,74,0.06) 30%, transparent 58%);\n pointer-events: none;\n}\n\n.eazo-modal {\n /* Natural flex centering by the overlay parent \u2014 no absolute\n * positioning. This keeps the modal inside the overlay's banner-\n * constrained box even when its content is tall, so it never bleeds\n * into the top or bottom banner area. If the modal is taller than the\n * overlay, the inner content scrolls. */\n position: relative;\n width: min(540px, 100%);\n max-height: 100%;\n overflow-y: auto;\n padding: 32px 32px 28px;\n background: rgba(255,255,255,0.92);\n backdrop-filter: blur(20px);\n -webkit-backdrop-filter: blur(20px);\n border: 1px solid var(--eazo-hair);\n border-radius: 24px;\n color: var(--eazo-ink);\n box-shadow:\n 0 60px 100px -40px rgba(17,19,15,0.28),\n inset 0 1px 0 rgba(255,255,255,0.7),\n 0 0 60px var(--eazo-glow);\n display: flex; flex-direction: column; align-items: center; gap: 18px;\n animation: eazo-handoff-pop-in 360ms cubic-bezier(0.16, 1, 0.3, 1) both;\n}\n/* Close button \u2014 sits in the modal's top-right corner. The top + bottom\n * Eazo banners stay visible after the user dismisses the modal; only\n * this center \"strong CTA\" goes away (per-tab via sessionStorage). */\n.eazo-modal-close {\n position: absolute;\n top: 12px; right: 12px;\n width: 30px; height: 30px;\n display: inline-flex; align-items: center; justify-content: center;\n border: 0; padding: 0;\n border-radius: 999px;\n background: rgba(17,19,15,0.04);\n color: var(--eazo-ink-soft);\n cursor: pointer;\n transition: background 140ms ease, color 140ms ease;\n}\n.eazo-modal-close:hover {\n background: rgba(17,19,15,0.08);\n color: var(--eazo-ink);\n}\n.eazo-modal-close:focus-visible {\n outline: 2px solid var(--eazo-coral);\n outline-offset: 2px;\n}\n\n/* ============ ORBITING CAPABILITIES + APP MONOLITH ============\n *\n * Geometry runs in a 280-unit coordinate space (matches the V5 design\n * canvas). The rings SVG uses a viewBox so its content scales to whatever\n * pixel size the .eazo-orbit container is in CSS (280 desktop, 220\n * mobile). The capability nodes position via percentage left/top on\n * the rotating track, then use negative margins to center on that point\n * \u2014 margins do not fight the track rotate animation the way a\n * transform: translate(-50%, -50%) would.\n */\n.eazo-orbit {\n position: relative;\n width: 280px; height: 280px;\n display: grid; place-items: center;\n}\n.eazo-orbit-rings {\n position: absolute; inset: 0;\n width: 100%; height: 100%;\n opacity: 0.95;\n}\n.eazo-orbit-track {\n position: absolute; inset: 0; width: 100%; height: 100%;\n animation: eazo-handoff-orbit 30s linear infinite;\n}\n.eazo-orbit-node {\n position: absolute;\n width: 36px; height: 36px;\n margin: -18px 0 0 -18px;\n border-radius: 10px;\n background: #fff; border: 1px solid var(--eazo-hair);\n display: grid; place-items: center;\n box-shadow: 0 10px 22px -10px rgba(17,19,15,0.15);\n animation: eazo-handoff-orbit-rev 30s linear infinite;\n color: var(--eazo-coral);\n}\n.eazo-monolith {\n width: 96px; height: 96px; border-radius: 22px;\n /* Default fallback background \u2014 visible behind emoji icons and the\n * typographic initials fallback. URL icons render as a child <img>\n * that covers this completely. Eazo coral gradient (same as primary\n * CTAs) so the empty state reads as a clear Eazo-brand placeholder. */\n background: var(--eazo-coral-gradient);\n display: grid; place-items: center;\n position: relative;\n color: #ffffff;\n font-family: var(--eazo-serif); font-weight: 500;\n font-size: 42px; letter-spacing: -0.02em;\n box-shadow:\n 0 30px 60px -20px var(--eazo-glow),\n inset 0 1px 0 rgba(255,255,255,0.30),\n 0 0 0 1px rgba(255,255,255,0.14);\n overflow: hidden;\n}\n.eazo-monolith img {\n width: 100%; height: 100%; object-fit: cover; display: block;\n}\n\n.eazo-modal-eyebrow {\n font-family: var(--eazo-mono); font-size: 10px;\n letter-spacing: 0.18em; text-transform: uppercase;\n color: var(--eazo-ink-faint);\n text-align: center;\n}\n.eazo-modal-title {\n margin: 0; font-family: var(--eazo-serif); font-weight: 500;\n font-size: 32px; line-height: 1.15; letter-spacing: -0.02em;\n text-align: center; max-width: 360px;\n /* Clamp at 2 lines so an unusually long app name doesn't blow up the\n * modal height. Ellipsis takes over for the overflow. */\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n word-break: break-word;\n}\n.eazo-modal-sub {\n margin: 0; font-size: 13px; line-height: 1.5;\n color: var(--eazo-ink-soft);\n text-align: center; max-width: 360px;\n /* Same idea \u2014 long taglines clamp to 3 lines to keep the QR + CTA\n * visible without scrolling. */\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n word-break: break-word;\n}\n\n/* Skeleton blocks shown while public app info is in flight. The modal\n * frame appears immediately so the user sees Eazo's commitment to the\n * handoff; the name / tagline swap in once the fetch resolves. */\n.eazo-skel {\n display: inline-block;\n vertical-align: middle;\n background: linear-gradient(90deg,\n rgba(17,19,15,0.05) 0%,\n rgba(17,19,15,0.12) 50%,\n rgba(17,19,15,0.05) 100%);\n background-size: 200% 100%;\n border-radius: 8px;\n animation: eazo-skel-shimmer 1.4s linear infinite;\n}\n.eazo-skel-title { width: 60%; height: 36px; }\n.eazo-skel-sub-1 { width: 80%; height: 13px; margin-top: 8px; }\n.eazo-skel-sub-2 { width: 55%; height: 13px; margin-top: 6px; }\n.eazo-skel-stat { width: 28px; height: 11px; border-radius: 4px; }\n@keyframes eazo-skel-shimmer {\n from { background-position: 200% 0; }\n to { background-position: -200% 0; }\n}\n\n/* Monolith-tuned shimmer \u2014 sweeps a brighter band over the dark navy\n * gradient. Used while public app info is still loading, and as the\n * placeholder behind an <img> until it decodes. */\n.eazo-monolith-skel {\n position: absolute;\n inset: 0;\n background: linear-gradient(90deg,\n rgba(255,255,255,0.00) 0%,\n rgba(255,255,255,0.18) 50%,\n rgba(255,255,255,0.00) 100%);\n background-size: 200% 100%;\n animation: eazo-skel-shimmer 1.4s linear infinite;\n pointer-events: none;\n}\n.eazo-monolith-img {\n width: 100%; height: 100%;\n object-fit: cover; display: block;\n opacity: 0;\n transition: opacity 220ms ease-out;\n}\n.eazo-monolith-img.is-loaded { opacity: 1; }\n\n/* Orbit-center QR tile (desktop only). Wraps the QR SVG in a white\n * card so it reads as an intentional center piece rather than floating\n * pixels \u2014 same shadow + hairline language as the monolith it replaced,\n * scaled down slightly. Mobile keeps the monolith at orbit center\n * (asking a phone user to scan their own screen is silly), so no mobile\n * sizing is needed here. */\n.eazo-orbit-qr {\n padding: 8px;\n background: #fff;\n border-radius: 16px;\n border: 1px solid var(--eazo-hair);\n box-shadow:\n 0 22px 44px -18px rgba(17,19,15,0.18),\n 0 0 0 1px rgba(255,255,255,0.14);\n}\n\n/* ============ QR + CTA ROW ============ */\n.eazo-cta-row {\n width: 100%; display: flex; gap: 12px; align-items: stretch; margin-top: 6px;\n}\n.eazo-qr-tile {\n padding: 8px; border-radius: 10px;\n background: #fff; border: 1px solid var(--eazo-hair);\n display: grid; place-items: center;\n}\n.eazo-cta-body {\n flex: 1; min-width: 0;\n display: flex; flex-direction: column; justify-content: space-between; gap: 8px;\n}\n.eazo-cta-headline {\n font-size: 12px; font-weight: 600;\n}\n.eazo-cta-fine {\n font-size: 10px; color: var(--eazo-ink-faint); margin-top: 4px;\n font-family: var(--eazo-mono); letter-spacing: 0.04em; line-height: 1.5;\n}\n.eazo-cta-primary {\n display: inline-flex; align-items: center; justify-content: center; gap: 8px;\n height: 40px; border-radius: 10px;\n background: var(--eazo-coral-gradient); color: #fff;\n font-size: 13px; font-weight: 600; border: 0; cursor: pointer;\n text-decoration: none;\n box-shadow: 0 14px 26px var(--eazo-glow);\n transition: filter 160ms ease;\n}\n.eazo-cta-primary:hover { filter: brightness(1.06); }\n\n/* ============ BOTTOM BANNER ============\n *\n * Per V5 / M5 design: two prominent stats on the left (heart + chat,\n * each rendered as a tinted icon-tile with a stacked value-over-label\n * column) separated by a thin hair-divider, and a coral \"Remix\" pill\n * on the right that reuses the top-banner CTA handoff. A small\n * \"eazo.ai \u2197\" mark sits to the left of the pill on desktop only \u2014\n * on phone widths (\u2264480px) it drops out so the Remix pill keeps its\n * thumb-zone weight.\n */\n.eazo-bottom-root {\n /* Flex child of .eazo-handoff-root \u2014 naturally pinned to the bottom of\n * the viewport-filling container. No position:fixed needed. */\n flex-shrink: 0;\n display: flex; align-items: center; justify-content: space-between;\n gap: 16px;\n height: 72px;\n padding: 0 22px 0 26px;\n background: #fff;\n border-top: 1px solid var(--eazo-hair);\n pointer-events: auto;\n animation: eazo-handoff-slide-up 240ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n.eazo-bottom-stats {\n display: inline-flex; align-items: center; gap: 22px;\n min-width: 0; color: var(--eazo-ink);\n}\n.eazo-bottom-stat {\n display: inline-flex; align-items: center; gap: 9px;\n font-family: var(--eazo-sans);\n flex-shrink: 0;\n}\n/* Tinted square tile that frames each stat icon \u2014 coral-on-cream for\n * filled glyphs (heart), neutral-on-cream for line glyphs (chat). */\n.eazo-bottom-stat-icon {\n display: inline-flex; align-items: center; justify-content: center;\n width: 30px; height: 30px; border-radius: 8px;\n background: rgba(212,97,74,0.10);\n color: var(--eazo-coral);\n flex-shrink: 0;\n}\n.eazo-bottom-stat-icon.is-line {\n background: rgba(17,19,15,0.05);\n color: var(--eazo-ink);\n}\n.eazo-bottom-stat-text {\n display: inline-flex; flex-direction: column; line-height: 1.05;\n}\n.eazo-bottom-stat-value {\n font-family: var(--eazo-sans);\n font-size: 16px; font-weight: 600; letter-spacing: -0.01em;\n}\n.eazo-bottom-stat-label {\n font-family: var(--eazo-sans);\n font-size: 11px; font-weight: 500;\n color: var(--eazo-ink-faint);\n margin-top: 1px;\n}\n.eazo-bottom-stat-divider {\n width: 1px; height: 28px;\n background: var(--eazo-hair);\n flex-shrink: 0;\n}\n.eazo-bottom-skel {\n display: inline-block; vertical-align: middle;\n width: 32px; height: 18px; border-radius: 4px;\n background: linear-gradient(90deg,\n rgba(17,19,15,0.05) 0%,\n rgba(17,19,15,0.12) 50%,\n rgba(17,19,15,0.05) 100%);\n background-size: 200% 100%;\n animation: eazo-skel-shimmer 1.4s linear infinite;\n}\n\n.eazo-bottom-actions {\n display: inline-flex; align-items: center; gap: 14px;\n flex-shrink: 0;\n}\n.eazo-bottom-site {\n display: inline-flex; align-items: center; gap: 4px;\n color: var(--eazo-ink-soft);\n text-decoration: none;\n font-family: var(--eazo-sans); font-size: 12px; font-weight: 500;\n white-space: nowrap;\n transition: color 140ms ease;\n}\n.eazo-bottom-site:hover { color: var(--eazo-ink); }\n.eazo-bottom-site b { color: var(--eazo-ink); font-weight: 600; }\n\n/* Primary CTA on the bottom banner. Renders as <a> so it picks up the\n * same iOS-timeout fallback handler as the top-banner CTA via the\n * shared bindCtaClick \u2014 keeps the Remix tap on the same install /\n * deeplink path as the rest of the handoff UX. */\n.eazo-bottom-remix {\n display: inline-flex; align-items: center; justify-content: center; gap: 9px;\n height: 44px; padding: 0 20px 0 18px;\n border: 0; cursor: pointer;\n border-radius: 999px;\n background: var(--eazo-coral-gradient); color: #fff;\n font-family: var(--eazo-sans);\n font-size: 14px; font-weight: 600; letter-spacing: -0.005em;\n white-space: nowrap;\n box-shadow:\n 0 12px 24px var(--eazo-glow),\n inset 0 1px 0 rgba(255,255,255,0.18);\n text-decoration: none;\n transition: transform 140ms ease, box-shadow 140ms ease;\n}\n.eazo-bottom-remix:hover {\n transform: translateY(-1px);\n box-shadow:\n 0 14px 28px var(--eazo-glow),\n inset 0 1px 0 rgba(255,255,255,0.22);\n}\n.eazo-bottom-remix:active { transform: translateY(0); }\n\n/* ============ MOBILE TWEAKS (\u2264480px) ============ */\n@media (max-width: 480px) {\n .eazo-banner-root {\n height: 56px;\n padding: 0 10px 0 14px;\n gap: 10px;\n }\n .eazo-banner-copy {\n font-size: 12px; line-height: 1.25; white-space: normal;\n display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;\n }\n .eazo-banner-cta { height: 28px; padding: 0 10px; font-size: 11px; border-radius: 8px; }\n /* Hover doesn't resolve reliably on touch \u2014 the CTA still works as a\n * plain link, no popover needed. Belt-and-suspenders to the JS check\n * (the popover render is also gated on the 'open' state, which never\n * flips without mouseenter / focus). */\n .eazo-banner-cta-popover { display: none; }\n\n .eazo-modal {\n width: calc(100vw - 32px);\n padding: 24px 20px 20px;\n border-radius: 20px;\n gap: 14px;\n }\n .eazo-orbit { width: 220px; height: 220px; }\n .eazo-monolith {\n width: 76px; height: 76px; border-radius: 18px;\n font-size: 32px;\n }\n .eazo-orbit-node {\n width: 28px; height: 28px; border-radius: 8px;\n margin: -14px 0 0 -14px;\n }\n .eazo-modal-title { font-size: 26px; }\n .eazo-modal-sub { font-size: 12px; }\n\n /* Mobile: the user is already on a phone \u2014 no point showing them a QR\n * to scan with their phone, and the \"Scan to open\" headline + fine\n * print only made sense paired with the QR. Collapse to the primary\n * CTA alone. */\n .eazo-qr-tile { display: none; }\n .eazo-cta-row { flex-direction: column; gap: 10px; }\n .eazo-cta-primary { height: 44px; width: 100%; font-size: 14px; border-radius: 12px; }\n .eazo-cta-headline { display: none; }\n .eazo-cta-fine { display: none; }\n\n .eazo-bottom-root {\n height: 78px;\n padding: 0 16px 0 20px;\n gap: 12px;\n }\n /* Tighter cells per the M5 (390px) spec: smaller icon tile, smaller\n * value, smaller divider. Labels stay \u2014 they're a key part of the\n * visual rhythm in M5. */\n .eazo-bottom-stats { gap: 12px; }\n .eazo-bottom-stat { gap: 7px; }\n .eazo-bottom-stat-icon { width: 26px; height: 26px; border-radius: 7px; }\n .eazo-bottom-stat-value { font-size: 14px; }\n .eazo-bottom-stat-label { font-size: 10px; }\n .eazo-bottom-stat-divider { height: 24px; }\n .eazo-bottom-skel { width: 28px; height: 15px; }\n /* M5 drops the secondary eazo.ai mark on phone widths so the Remix\n * pill keeps unambiguous thumb-zone weight. */\n .eazo-bottom-site { display: none; }\n .eazo-bottom-remix {\n height: 44px; padding: 0 18px 0 16px;\n gap: 8px; font-size: 13px;\n box-shadow:\n 0 10px 22px var(--eazo-glow),\n inset 0 1px 0 rgba(255,255,255,0.18);\n }\n /* Drop the trailing \"this app\" wording on phone widths \u2014 the icon\n * plus the verb is already unambiguous and the pill stays compact. */\n .eazo-bottom-remix-suffix { display: none; }\n}\n";
6
6
  export declare function ensureBannerStylesInjected(): void;
7
7
  //# sourceMappingURL=styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/internal/banner-ui/styles.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAKvC,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAiBvC,eAAO,MAAM,aAAa,4m4BAisBzB,CAAC;AAEF,wBAAgB,0BAA0B,IAAI,IAAI,CA0BjD"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/internal/banner-ui/styles.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAKvC,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAiBvC,eAAO,MAAM,aAAa,mt5BAitBzB,CAAC;AAEF,wBAAgB,0BAA0B,IAAI,IAAI,CA0BjD"}
@@ -509,6 +509,22 @@ html.eazo-host-web .eazo-app-area-scroller {
509
509
  }
510
510
  .eazo-monolith-img.is-loaded { opacity: 1; }
511
511
 
512
+ /* Orbit-center QR tile (desktop only). Wraps the QR SVG in a white
513
+ * card so it reads as an intentional center piece rather than floating
514
+ * pixels — same shadow + hairline language as the monolith it replaced,
515
+ * scaled down slightly. Mobile keeps the monolith at orbit center
516
+ * (asking a phone user to scan their own screen is silly), so no mobile
517
+ * sizing is needed here. */
518
+ .eazo-orbit-qr {
519
+ padding: 8px;
520
+ background: #fff;
521
+ border-radius: 16px;
522
+ border: 1px solid var(--eazo-hair);
523
+ box-shadow:
524
+ 0 22px 44px -18px rgba(17,19,15,0.18),
525
+ 0 0 0 1px rgba(255,255,255,0.14);
526
+ }
527
+
512
528
  /* ============ QR + CTA ROW ============ */
513
529
  .eazo-cta-row {
514
530
  width: 100%; display: flex; gap: 12px; align-items: stretch; margin-top: 6px;
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/internal/banner-ui/styles.ts"],"names":[],"mappings":";;;AA+tBA,gEA0BC;AAzvBD,gCAAiC;AAEjC,MAAM,QAAQ,GAAG,oBAAoB,CAAC;AAEzB,QAAA,qBAAqB,GAAG,EAAE,CAAC;AAC3B,QAAA,oBAAoB,GAAG,EAAE,CAAC;AACvC;;;oDAGoD;AACvC,QAAA,qBAAqB,GAAG,EAAE,CAAC;AAC3B,QAAA,oBAAoB,GAAG,EAAE,CAAC;AAEvC,MAAM,MAAM,GAAG;;;;;;;;;;;;;CAad,CAAC;AAEW,QAAA,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA0IzB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAiDE,6BAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAuVrB,6BAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAuGnB,4BAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA4CpB,4BAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BjC,CAAC;AAEF,SAAgB,0BAA0B;IACxC,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO;IAC5C,uEAAuE;IACvE,qEAAqE;IACrE,qEAAqE;IACrE,kEAAkE;IAClE,wEAAwE;IACxE,oEAAoE;IACpE,sEAAsE;IACtE,IAAI,IAAA,aAAO,GAAE,KAAK,KAAK;QAAE,OAAO;IAChC,+DAA+D;IAC/D,qEAAqE;IACrE,oEAAoE;IACpE,qEAAqE;IACrE,kEAAkE;IAClE,kCAAkC;IAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAA4B,CAAC;IAC9E,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,QAAQ,CAAC,WAAW,KAAK,qBAAa;YAAE,QAAQ,CAAC,WAAW,GAAG,qBAAa,CAAC;QACjF,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,CAAC,EAAE,GAAG,QAAQ,CAAC;IACpB,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IACjD,KAAK,CAAC,WAAW,GAAG,qBAAa,CAAC;IAClC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/internal/banner-ui/styles.ts"],"names":[],"mappings":";;;AA+uBA,gEA0BC;AAzwBD,gCAAiC;AAEjC,MAAM,QAAQ,GAAG,oBAAoB,CAAC;AAEzB,QAAA,qBAAqB,GAAG,EAAE,CAAC;AAC3B,QAAA,oBAAoB,GAAG,EAAE,CAAC;AACvC;;;oDAGoD;AACvC,QAAA,qBAAqB,GAAG,EAAE,CAAC;AAC3B,QAAA,oBAAoB,GAAG,EAAE,CAAC;AAEvC,MAAM,MAAM,GAAG;;;;;;;;;;;;;CAad,CAAC;AAEW,QAAA,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA0IzB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAiDE,6BAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAuWrB,6BAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAuGnB,4BAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA4CpB,4BAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BjC,CAAC;AAEF,SAAgB,0BAA0B;IACxC,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO;IAC5C,uEAAuE;IACvE,qEAAqE;IACrE,qEAAqE;IACrE,kEAAkE;IAClE,wEAAwE;IACxE,oEAAoE;IACpE,sEAAsE;IACtE,IAAI,IAAA,aAAO,GAAE,KAAK,KAAK;QAAE,OAAO;IAChC,+DAA+D;IAC/D,qEAAqE;IACrE,oEAAoE;IACpE,qEAAqE;IACrE,kEAAkE;IAClE,kCAAkC;IAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAA4B,CAAC;IAC9E,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,QAAQ,CAAC,WAAW,KAAK,qBAAa;YAAE,QAAQ,CAAC,WAAW,GAAG,qBAAa,CAAC;QACjF,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,CAAC,EAAE,GAAG,QAAQ,CAAC;IACpB,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IACjD,KAAK,CAAC,WAAW,GAAG,qBAAa,CAAC;IAClC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC"}
package/dist/react.d.ts CHANGED
@@ -9,8 +9,10 @@ import type { EazoState } from "./types";
9
9
  *
10
10
  * Zero-config: the SDK auto-reads `EAZO_APP_ID` (and
11
11
  * `EAZO_PLATFORM_API_BASE` when set) from env. For non-RSC frameworks
12
- * set a framework-prefixed alias (`NEXT_PUBLIC_EAZO_APP_ID`,
13
- * `EXPO_PUBLIC_EAZO_APP_ID`, …) or call `setAppId(...)` at startup.
12
+ * (Vite, plain Webpack, etc.) set a framework-prefixed alias the
13
+ * bundler can inline into the client bundle —
14
+ * `NEXT_PUBLIC_EAZO_APP_ID`, `EXPO_PUBLIC_EAZO_APP_ID`,
15
+ * `VITE_EAZO_APP_ID`, etc.
14
16
  *
15
17
  * Under Next.js App Router this resolves to the server variant
16
18
  * (`react.server.tsx`), which prefetches the handoff `PublicAppInfo`
@@ -1 +1 @@
1
- {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,GAAG,KAAK,CAAC,YAAY,CAgBrB;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,CAAC,GAAG,CAAC,CAkB/D"}
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,GAAG,KAAK,CAAC,YAAY,CAgBrB;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,CAAC,GAAG,CAAC,CAkB/D"}
package/dist/react.js CHANGED
@@ -49,8 +49,10 @@ const store_1 = require("./internal/store");
49
49
  *
50
50
  * Zero-config: the SDK auto-reads `EAZO_APP_ID` (and
51
51
  * `EAZO_PLATFORM_API_BASE` when set) from env. For non-RSC frameworks
52
- * set a framework-prefixed alias (`NEXT_PUBLIC_EAZO_APP_ID`,
53
- * `EXPO_PUBLIC_EAZO_APP_ID`, …) or call `setAppId(...)` at startup.
52
+ * (Vite, plain Webpack, etc.) set a framework-prefixed alias the
53
+ * bundler can inline into the client bundle —
54
+ * `NEXT_PUBLIC_EAZO_APP_ID`, `EXPO_PUBLIC_EAZO_APP_ID`,
55
+ * `VITE_EAZO_APP_ID`, etc.
54
56
  *
55
57
  * Under Next.js App Router this resolves to the server variant
56
58
  * (`react.server.tsx`), which prefetches the handoff `PublicAppInfo`
package/dist/react.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBb,oCAoBC;AASD,0BAkBC;;AAtED,6CAA+B;AAE/B,8CAAyE;AACzE,kEAAmF;AACnF,4CAAwD;AAGxD;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,YAAY,CAAC,EAC3B,QAAQ,GAGT;IACC,MAAM,KAAK,GAAG,IAAA,yBAAgB,GAAE,CAAC;IACjC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,uGAAuG,CACxG,CAAC;IACJ,CAAC;IACD,OAAO,CACL,uBAAC,uCAAoB,IACnB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,IAAA,2BAAkB,GAAE,EAC7B,cAAc,EAAE,IAAI,YAEnB,QAAQ,GACY,CACxB,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,OAAO,CAAI,QAAiC;IAC1D,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,iCAAc,CAAC,CAAC;IACjD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC;QACtD,OAAO,CAAC,IAAI,CACV,wFAAwF,CACzF,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CACnC,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAK,CAAC,WAAW,EAAE,CAAC,EACnC,CAAC,QAAQ,CAAC,CACX,CAAC;IACF,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CACzC,GAAG,EAAE,CAAC,QAAQ,CAAC,qBAAa,CAAC,EAC7B,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,OAAO,KAAK,CAAC,oBAAoB,CAAC,aAAK,CAAC,SAAS,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;AACrF,CAAC"}
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2Bb,oCAoBC;AASD,0BAkBC;;AAxED,6CAA+B;AAE/B,8CAAyE;AACzE,kEAAmF;AACnF,4CAAwD;AAGxD;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,YAAY,CAAC,EAC3B,QAAQ,GAGT;IACC,MAAM,KAAK,GAAG,IAAA,yBAAgB,GAAE,CAAC;IACjC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,uGAAuG,CACxG,CAAC;IACJ,CAAC;IACD,OAAO,CACL,uBAAC,uCAAoB,IACnB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,IAAA,2BAAkB,GAAE,EAC7B,cAAc,EAAE,IAAI,YAEnB,QAAQ,GACY,CACxB,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,OAAO,CAAI,QAAiC;IAC1D,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,iCAAc,CAAC,CAAC;IACjD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC;QACtD,OAAO,CAAC,IAAI,CACV,wFAAwF,CACzF,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CACnC,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAK,CAAC,WAAW,EAAE,CAAC,EACnC,CAAC,QAAQ,CAAC,CACX,CAAC;IACF,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CACzC,GAAG,EAAE,CAAC,QAAQ,CAAC,qBAAa,CAAC,EAC7B,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,OAAO,KAAK,CAAC,oBAAoB,CAAC,aAAK,CAAC,SAAS,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;AACrF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eazo/sdk",
3
- "version": "0.17.1",
3
+ "version": "0.18.0",
4
4
  "description": "Eazo platform SDK — capability-first API for web apps that run on Eazo Mobile and the web browser",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",