const { useMemo: _pvUseMemo } = React;

function ReurbanoLogoPrint() {
  return (
    <svg viewBox="0 0 120 72" aria-label="Reurbano" role="img" className="r-pv-logo">
      <path fill="currentColor" d="M106.924 0.00421143C106.924 5.98645 106.886 11.9687 106.937 17.9466C106.967 21.2634 106.206 24.3617 104.602 27.2242C101.895 32.0623 97.743 35.0149 92.3846 36.309C90.9734 36.6475 89.5365 36.7375 88.0911 36.7375C77.4385 36.7333 66.7817 36.7247 56.1291 36.7247C47.4993 36.7247 39.9685 30.7639 38.0441 22.339C37.2957 19.0737 37.4198 15.8211 38.5445 12.6415C38.6343 12.3929 38.6599 12.2172 38.3221 12.2172C35.8118 12.2172 33.2845 12.033 30.7913 12.2944C27.5626 12.6329 25.3004 15.2212 25.2833 18.4909C25.2533 24.2931 25.3047 30.0954 25.326 35.8976C25.326 36.729 25.3474 36.729 24.5306 36.7247C23.6026 36.7247 22.6789 36.7118 21.7509 36.7247C21.4131 36.7247 21.2848 36.609 21.2891 36.2533C21.3532 30.2196 21.3019 24.186 21.3148 18.1523C21.3276 12.7957 26.0958 8.1805 31.4242 8.2405C34.345 8.27478 37.2701 8.25336 40.1909 8.27478C40.5629 8.27478 40.7554 8.12908 40.9649 7.84197C41.8758 6.56067 42.8209 5.30509 44.1851 4.45661C44.2834 4.39661 44.4374 4.34947 44.3946 4.18663C44.3561 4.04951 44.2064 4.03236 44.091 4.00237C43.9883 3.97666 43.8772 3.97666 43.7703 3.98094C39.6392 4.11378 35.5039 4.01094 31.3729 4.04094C28.311 4.06236 25.4714 4.85514 23.0424 6.74923C19.2663 9.69749 17.1196 13.52 17.1196 18.418C17.1196 24.3274 17.111 30.2368 17.1324 36.1462C17.1324 36.639 16.987 36.7504 16.5294 36.7375C15.5501 36.7075 14.5708 36.7161 13.5915 36.729C13.2323 36.7333 13.0869 36.6261 13.0869 36.2404C13.104 30.3311 13.1382 24.4217 13.1126 18.5123C13.0784 10.4431 18.5094 3.08532 26.2583 0.818413C27.1948 0.544155 28.1399 0.282754 29.1363 0.291324C29.2689 0.291324 29.4015 0.239901 29.6153 0.192763C29.3459 0.115628 29.1663 0.0599199 28.9867 0.00421143C44.061 0.00421143 59.1354 0.00421143 74.2098 0.00421143C74.2227 6.02073 74.2355 12.0372 74.244 18.0538C74.244 19.5408 74.4023 21.0063 74.8427 22.4376C76.5448 27.9827 81.4883 32.5251 87.9543 32.7137C91.2556 32.8079 94.3218 32.0409 96.9946 30.0397C100.993 27.04 102.935 23.0075 102.93 18.0023C102.926 12.003 102.866 6.00359 102.969 0.00421143H106.924ZM64.8701 32.6837C69.2663 32.7694 72.9739 32.6237 76.6773 32.7737C76.7971 32.778 76.9553 32.8251 77.0152 32.688C77.0964 32.4994 76.8911 32.4608 76.7928 32.3837C75.5783 31.4495 74.5733 30.3182 73.7394 29.0455C73.4614 28.6212 73.1707 28.5013 72.7002 28.5055C67.1067 28.5184 61.5131 28.5184 55.9196 28.5227C55.2781 28.5227 54.6324 28.5098 54.008 28.3641C47.7644 26.8986 45.3012 21.182 45.8529 17.0467C46.4901 12.2601 50.8178 8.25764 55.6416 8.26193C58.3144 8.26193 60.9871 8.26621 63.6556 8.2705C65.704 8.2705 67.7524 8.26193 69.8008 8.27907C70.1943 8.27907 70.3268 8.17194 70.314 7.76055C70.2841 6.67209 70.2969 5.58363 70.3012 4.49517C70.3012 4.21663 70.2926 4.02808 69.912 4.03236C65.0839 4.04951 60.2559 3.98523 55.4321 4.08379C51.0359 4.17378 47.4394 6.00359 44.7111 9.50465C41.6748 13.4042 40.905 17.7495 42.1666 22.4762C42.8594 25.0602 44.3433 27.1728 46.2891 28.9855C48.701 31.2353 51.5491 32.5551 54.8291 32.6665C58.4042 32.7908 61.9878 32.6965 64.8744 32.6965L64.8701 32.6837ZM63.1767 24.5502V24.5417C65.7254 24.5417 68.2699 24.5331 70.8186 24.5502C71.2805 24.5502 71.3318 24.4688 71.1607 24.0189C70.7887 23.0547 70.5449 22.0434 70.4551 21.0106C70.4166 20.5478 70.2755 20.3721 69.7795 20.3764C65.3961 20.3935 61.0171 20.3892 56.6337 20.3892C56.313 20.3892 55.9923 20.3892 55.6715 20.355C54.7179 20.2564 53.9524 19.455 53.8968 18.5123C53.8412 17.5652 54.4955 16.6996 55.4278 16.4682C55.7784 16.3825 56.1334 16.3911 56.4883 16.3911C60.8888 16.3911 65.2892 16.3911 69.6897 16.4082C70.1558 16.4082 70.3097 16.2797 70.2926 15.804C70.2627 14.8055 70.267 13.8028 70.314 12.8086C70.3354 12.3329 70.2199 12.2001 69.7367 12.2044C65.8195 12.2258 61.898 12.2087 57.9808 12.2215C56.9844 12.2215 55.988 12.1787 54.9916 12.3072C50.7708 12.8643 48.376 17.8995 50.6339 21.5205C51.8441 23.4618 53.6017 24.516 55.9025 24.5459C58.3229 24.5759 60.7477 24.5545 63.1681 24.5545L63.1767 24.5502Z"/>
      <path fill="currentColor" d="M98.6923 0.00428527C98.6966 6.12365 98.7095 12.243 98.7095 18.3624C98.7095 24.576 93.133 29.3455 86.9963 28.3985C82.1939 27.6528 78.4478 23.2819 78.4563 18.4181C78.4649 12.2816 78.4777 6.14508 78.4862 0.00428527H82.4419C82.3436 0.377104 82.4248 0.749922 82.4248 1.12274C82.4163 6.90357 82.3949 12.6887 82.4248 18.4695C82.4505 22.4462 86.4404 25.3945 90.2678 24.3232C92.8679 23.5947 94.7281 21.2378 94.7409 18.5252C94.7666 13.0829 94.7538 7.64064 94.7538 2.19406C94.7538 1.46128 94.7409 0.732781 94.7324 0C96.0495 0 97.3709 0 98.6881 0L98.6923 0.00428527Z"/>
      <path fill="currentColor" d="M90.5672 0.00428527C90.58 6.07223 90.5928 12.1402 90.6014 18.2081C90.6014 19.4937 89.776 20.3807 88.6043 20.3765C87.4411 20.3765 86.5815 19.4423 86.5815 18.1524C86.5901 12.1359 86.6072 6.12365 86.62 0.107132C86.62 0.0728496 86.6158 0.0342822 86.6115 0C87.9286 0 89.25 0 90.5672 0V0.00428527Z"/>
      <path fill="currentColor" d="M33.4296 27.2758C33.4382 30.2198 33.3398 33.1638 33.4852 36.1078C33.5109 36.6048 33.3398 36.7634 32.848 36.7463C31.8858 36.712 30.9236 36.7206 29.9657 36.7334C29.5637 36.7377 29.4141 36.6263 29.4141 36.1849C29.4397 30.5455 29.4483 24.9061 29.4611 19.2709C29.4611 18.9324 29.4611 18.5939 29.4953 18.2553C29.6108 17.0812 30.4917 16.3312 31.6763 16.3912C32.6813 16.4427 33.4211 17.2954 33.4253 18.4482C33.4339 21.3921 33.4253 24.3361 33.4253 27.2801L33.4296 27.2758Z"/>
    </svg>
  );
}

function PrintView({ profile, lang }) {
  const t = window.STRINGS[lang] || window.STRINGS.en;
  const date = new Date().toLocaleDateString(lang === "es" ? "es-MX" : "en-US", {
    year: "numeric", month: "long", day: "numeric",
  });
  const columns = window.buildColumns(window.PRODUCTS, profile);
  const tiers = window.TIER_ORDER;

  return (
    <div className="r-print-view" aria-hidden="true">
      <header className="r-pv-header">
        <div className="r-pv-brand"><ReurbanoLogoPrint /></div>
        <div className="r-pv-title">
          <div className="r-pv-title-main">
            {lang === "es" ? "Capital Stack × Proyectos" : "Capital Stack × Projects"}
          </div>
          <div className="r-pv-title-sub">
            {lang === "es" ? "Resumen del inversionista" : "Investor summary"}
          </div>
        </div>
        <div className="r-pv-date">{date}</div>
      </header>

      <table className="r-pv-table">
        <colgroup>
          <col className="r-pv-col-tier" />
          {columns.map((c, i) => <col key={c.name + i} />)}
        </colgroup>
        <thead>
          <tr>
            <th className="r-pv-corner" />
            {columns.map((c) => {
              const status = c.products[0]?.status || "open";
              const statusLabel = window.STATUS_LABEL[status]?.[lang] || status;
              const kindLabel = t[c.kind] || c.kind;
              return (
                <th key={c.name} className="r-pv-proj-head">
                  <div className="r-pv-proj-image">
                    <img src={c.image} alt="" />
                  </div>
                  <div className="r-pv-proj-meta">
                    <div className="r-pv-proj-status" data-status={status}>
                      <span className="r-pv-dot" style={{ background: window.STATUS_DOT[status] }} />
                      {statusLabel}
                    </div>
                    <div className="r-pv-proj-name">{c.name}</div>
                    <div className="r-pv-proj-loc">{c.city} · {kindLabel}</div>
                  </div>
                </th>
              );
            })}
          </tr>
        </thead>
        <tbody>
          {tiers.map((tier) => (
            <tr key={tier}>
              <th className="r-pv-tier-head">
                <div className="r-pv-tier-name">{window.TIER_LABELS[tier][lang]}</div>
                <div className="r-pv-tier-desc">{window.TIER_MICRO[tier][lang]}</div>
              </th>
              {columns.map((c) => {
                const cell = c.cells.get(tier);
                if (!cell) {
                  return <td key={c.name} className="r-pv-cell r-pv-cell-empty" aria-label="Not offered" />;
                }
                const p = cell.product;
                const r = window.formatRangeStr(p);
                const hold = p.holdPeriodYears
                  ? `${p.holdPeriodYears[0]}–${p.holdPeriodYears[1]} ${lang === "es" ? "años" : "yr"}`
                  : "";
                const min = p.minimumInvestment
                  ? (lang === "es" ? "Mín" : "Min") + " " + window.formatCurrency(p.minimumInvestment.amount)
                  : "";
                return (
                  <td
                    key={c.name}
                    className={"r-pv-cell " + (cell.eligible ? "r-pv-cell-eligible" : "r-pv-cell-mismatch")}
                  >
                    <div className="r-pv-cell-return">{r}</div>
                    <div className="r-pv-cell-meta">{hold}</div>
                    <div className="r-pv-cell-min">{min}</div>
                  </td>
                );
              })}
            </tr>
          ))}
        </tbody>
      </table>

      <footer className="r-pv-footer">
        <div>reurbano.mx</div>
        <div>
          {lang === "es"
            ? "Solo fines informativos. No constituye oferta de inversión."
            : "For informational purposes only. Not an offer to invest."}
        </div>
      </footer>
    </div>
  );
}

window.PrintView = PrintView;
