PageSourceSearch

https://www.xpark.ai/assets/AdminEmailPreview-DsmVPH7U.js

js xpark.ai collected 2026-10-05 14:02:34 UTC 16,798 bytes, 142 lines download raw bytes

1import{u as D,r as j,j as s,k as L,B as R}from"./index-FWKSGZPO.js";import{C as H,a as M,b as q,c as V}from"./card-DTQVPU97.js";const t={paper:"#FAFAF9",cream:"#F4F3F0",card:"#FFFFFF",ink:"#0A0A0A",mute:"#6B6B6B",border:"#E7E5E4",gold:"#FFB800",goldHover:"#D68A00",goldSoft:"#FFE9B3"},o="'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, Arial, sans-serif",$="'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace",r=e=>String(e??"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;"),b=()=>new Date().getFullYear();function w(e){const{previewText:a,title:n,headerRight:d,bodyHtml:l,footerExtraHtml:i}=e;return`<!doctype html>
2<html lang="pt-BR">
3<head>
4<meta charset="utf-8" />
5<meta name="viewport" content="width=device-width,initial-scale=1" />
6<meta name="x-apple-disable-message-reformatting" />
7<title>${r(n)}</title>
8<link rel="preconnect" href="https://fonts.googleapis.com" />
9<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
10<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
11</head>
12<body style="margin:0;padding:0;background:${t.paper};font-family:${o};color:${t.ink};-webkit-font-smoothing:antialiased;">
13<div style="display:none;visibility:hidden;opacity:0;color:transparent;height:0;width:0;overflow:hidden;mso-hide:all;">${r(a)}</div>
14<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0" style="background:${t.paper};">
15  <tr><td align="center" style="padding:32px 16px;">
16    <table role="presentation" width="600" cellpadding="0" cellspacing="0" border="0" style="width:600px;max-width:100%;">
17      <!-- header -->
18      <tr><td style="padding:0 4px 20px 4px;">
19        <table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0">
20          <tr>
21            <td align="left" style="font-family:${o};font-weight:600;font-size:22px;letter-spacing:-0.02em;color:${t.ink};">xpark</td>
22            <td align="right" style="font-family:${$};font-size:12px;color:${t.mute};">${d?r(d):""}</td>
23          </tr>
24        </table>
25      </td></tr>
26      <!-- body -->
27      <tr><td>${l}</td></tr>
28      <!-- footer -->
29      <tr><td style="padding:28px 8px 8px 8px;">
30        <table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0">
31          ${i??""}
32          <tr><td style="padding-top:16px;border-top:1px solid ${t.border};font-family:${o};font-size:13px;color:${t.mute};line-height:1.6;">
33            <div style="font-weight:500;color:${t.ink};letter-spacing:-0.01em;">Quanto vale o seu tempo?</div>
34            <div style="margin-top:6px;">© xpark ${b()} · atendemos GRU e VCP</div>
35          </td></tr>
36        </table>
37      </td></tr>
38    </table>
39  </td></tr>
40</table>
41</body></html>`}function S(e){return`<h1 style="margin:0 0 12px 0;font-family:${o};font-weight:600;font-size:32px;line-height:1.15;letter-spacing:-0.02em;color:${t.ink};">${r(e)}</h1>
42<div style="width:44px;height:3px;background:${t.gold};border-radius:2px;margin:0 0 20px 0;"></div>`}function z(e){return`<p style="margin:0 0 24px 0;font-family:${o};font-size:16px;line-height:1.55;color:${t.mute};">${r(e)}</p>`}function E(e){return`<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0" style="background:${t.card};border:1px solid ${t.border};border-radius:12px;box-shadow:0 1px 2px rgba(10,10,10,0.04);">
43    <tr><td style="padding:24px;">${e}</td></tr>
44  </table>`}function x(e,a,n=!1){return`<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0" style="margin-bottom:14px;">
45    <tr>
46      <td style="font-family:${o};font-size:11px;font-weight:500;letter-spacing:0.08em;text-transform:uppercase;color:${t.mute};padding-bottom:4px;">${r(e)}</td>
47    </tr>
48    <tr>
49      <td style="font-family:${n?$:o};font-size:15px;color:${t.ink};line-height:1.4;">${r(a)}</td>
50    </tr>
51  </table>`}function F(e){return`<span style="display:inline-block;background:${t.goldSoft};color:${t.ink};font-family:${$};font-size:15px;font-weight:500;padding:8px 14px;border-radius:8px;letter-spacing:0.04em;">${r(e)}</span>`}function k(e,a){return`<table role="presentation" cellpadding="0" cellspacing="0" border="0" style="margin:8px 0;"><tr><td style="border-radius:12px;background:${t.ink};">
52    <a href="${r(a)}" style="display:inline-block;padding:14px 28px;font-family:${o};font-size:15px;font-weight:500;color:${t.paper};text-decoration:none;border-radius:12px;letter-spacing:-0.01em;">${r(e)}</a>
53  </td></tr></table>`}function G(e,a){return`<table role="presentation" cellpadding="0" cellspacing="0" border="0" style="margin:8px 0;"><tr><td style="border-radius:12px;border:1px solid ${t.ink};background:${t.paper};">
54    <a href="${r(a)}" style="display:inline-block;
54padding:13px 26px;font-family:${o};font-size:15px;font-weight:500;color:${t.ink};text-decoration:none;border-radius:12px;letter-spacing:-0.01em;">${r(e)}</a>
55  </td></tr></table>`}function U(e){return`<ul style="margin:0;padding:0 0 0 18px;font-family:${o};font-size:14px;color:${t.ink};line-height:1.7;">
56    ${e.map(a=>`<li style="margin-bottom:4px;">${r(a)}</li>`).join("")}
57  </ul>`}function N(e){return`<h2 style="margin:28px 0 12px 0;font-family:${o};font-weight:600;font-size:16px;letter-spacing:-0.01em;color:${t.ink};">${r(e)}</h2>`}function A(e,a="Duvidas? Fale com a gente no"){return`<tr><td style="padding-bottom:14px;font-family:${o};font-size:13px;color:${t.mute};">
58    ${r(a)} <a href="${r(e)}" style="color:${t.ink};text-decoration:underline;">WhatsApp</a>.
59  </td></tr>`}function O(e={}){const a=e.customerName??"viajante",n=e.airportLabel??"GRU - Guarulhos",d=e.entryDateTime??"",l=e.exitDateTime??"",i=e.amountLabel??"R$ 0,00",p=e.accessCode??"",m=e.bookingUrl??"https://www.xpark.ai/minhas-reservas",c=e.whatsappUrl??"https://wa.me/5511000000000",h=e.bookingRef??(p?`Reserva #${p}`:""),u=(e.paymentMethodLabel??"").trim(),g=u?u.charAt(0).toUpperCase()+u.slice(1):"",f=g?`Valor pago · ${g}`:"Valor pago",y="Sua reserva no xpark esta confirmada",C=`Vaga garantida em ${n}. Codigo ${p}.`,T=`
60  ${S("Reserva confirmada")}
61  ${z(`Sua vaga esta garantida, ${a}. Chegue no horario e siga direto para o embarque.`)}
62  ${E(`
63    ${x("Aeroporto",n)}
64    ${x("Entrada",d,!0)}
65    ${x("Saida",l,!0)}
66    ${x(f,i,!0)}
67    <div style="font-family:${o};font-size:11px;font-weight:500;letter-spacing:0.08em;text-transform:uppercase;color:${t.mute};margin-bottom:6px;">Codigo de acesso</div>
68    ${F(p)}
69  `)}
70  ${N("O que levar")}
71  ${U(["Documento com foto","Este codigo de acesso (impresso ou no celular)","Cartao de embarque a mao"])}
72  <div style="margin-top:24px;">${k("Ver detalhes da reserva",m)}</div>
73  `,P=w({previewText:C,title:y,headerRight:h,bodyHtml:T,footerExtraHtml:A(c)}),B=["Reserva confirmada no xpark","",`Ola ${a}, sua vaga esta garantida.`,"",`Aeroporto: ${n}`,`Entrada: ${d}`,`Saida: ${l}`,g?`Valor pago (${g}): ${i}`:`Valor pago: ${i}`,`Codigo de acesso: ${p}`,"","O que levar:","- Documento com foto","- Codigo de acesso (impresso ou no celular)","- Cartao de embarque a mao","",`Detalhes: ${m}`,`WhatsApp: ${c}`,"","Quanto vale o seu tempo?",`© xpark ${b()}`].join(`
74`);return{subject:y,html:P,text:B}}function Q(e={}){const a=e.customerName??"viajante",n=e.address??"",d=e.entryDateTime??"",l=e.terminalMinutes??8,i=e.accessCode??"",p=e.mapsUrl??"#",m=e.whatsappUrl??"https://wa.me/5511000000000",c="Sua viagem e amanha - tudo pronto no xpark",h=`A ${l} min do terminal. Codigo ${i}.`,u=`
75  ${S("Sua viagem e amanha")}
76  ${z(`Tudo pronto, ${a}. Chegue com tranquilidade, deixamos voce a ${l} minutos do terminal.`)}
77  ${E(`
78    ${x("Endereco",n)}
79    ${x("Horario de entrada",d,!0)}
80    ${x("Tempo ate o terminal",`${l} min · shuttle gratuito`)}
81    <div style="font-family:${o};font-size:11px;font-weight:500;letter-spacing:0.08em;text-transform:uppercase;color:${t.mute};margin-bottom:6px;">Codigo de acesso</div>
82    ${F(i)}
83  `)}
84  <div style="margin-top:20px;">
85    <table role="presentation" cellpadding="0" cellspacing="0" border="0"><tr>
86      <td style="padding-right:10px;">${k("Como chegar",p)}</td>
87      <td>${G("Falar no WhatsApp",m)}</td>
88    </tr></table>
89  </div>
90  ${N("Antes de sair de casa")}
91  ${U(["Confira se trancou o carro","Leve seus documentos e o codigo","Saia com folga para o check-in"])}
92  `,g=w({previewText:h,title:c,bodyHtml:u,footerExtraHtml:A(m)}),f=["Sua viagem e amanha","",`Tudo pronto, ${a}. A ${l} min do terminal (shuttle gratuito).`,"",`Endereco: ${n}`,`Entrada: ${d}`,`Codigo de acesso: ${i}`,"",`Como chegar: ${p}`,`WhatsApp: ${m}`,"","Antes de sair de casa:","- Confira se trancou o carro","- Leve seus documentos e o codigo","- Saia com folga para o check-in","","Quanto vale o seu tempo?",`© xpark ${b()}`].join(`
93`);return{subject:c,html:g,text:f}}function W(e={}){const a=e.customerName??"viajante",n=e.reviewUrl??"https://www.xpark.ai/avaliar",d=e.whatsappUrl??"https://wa.me/5511000000000",l="Como foi 
93sua experiencia de compra com o xpark?",i="Sua avaliacao da plataforma leva menos de 1 minuto.",p=`
94  <div style="text-align:center;padding:8px 0;">
95    <h1 style="margin:0 0 12px 0;font-family:${o};font-weight:600;font-size:30px;line-height:1.15;letter-spacing:-0.02em;color:${t.ink};">Bem-vindo de volta, ${r(a)}</h1>
96    <div style="width:44px;height:3px;background:${t.gold};border-radius:2px;margin:0 auto 20px auto;"></div>
97    <p style="margin:0 0 28px 0;font-family:${o};font-size:16px;line-height:1.55;color:${t.mute};">Esperamos que sua viagem tenha sido leve. Uma ultima coisa:</p>
98    <div style="font-family:${o};font-size:34px;color:${t.gold};letter-spacing:6px;line-height:1;">★★★★★</div>
99    <h2 style="margin:22px 0 20px 0;font-family:${o};font-weight:600;font-size:22px;letter-spacing:-0.01em;color:${t.ink};">Como foi sua experiencia de compra com o xpark?</h2>
100    <div style="display:inline-block;">${k("Avaliar o xpark",n)}</div>
101    <p style="margin:16px 0 0 0;font-family:${o};font-size:13px;color:${t.mute};">Leva menos de 1 minuto e ajuda muito outros viajantes.</p>
102  </div>
103  `,m=w({previewText:i,title:l,bodyHtml:p,footerExtraHtml:A(d,"Algo nao saiu como esperado? Fale com a gente no")}),c=[`Bem-vindo de volta, ${a}
103`,"","Como foi sua experiencia de compra com o xpark? A avaliacao e sobre a plataforma (buscar, reservar, pagar e atendimento) e leva menos de 1 minuto.","",`Avaliar: ${n}`,`WhatsApp: ${d}`,"","Quanto vale o seu tempo?",`© xpark ${b()}`].join(`
104`);return{subject:l,html:m,text:c}}function I(e={}){const a=e.promoPriceLabel??"R$ 89",n=e.oldPriceLabel??"R$ 119",d=e.ctaUrl??"https://www.xpark.ai/escolher",l=e.whatsappUrl??"https://wa.me/5511000000000",i=e.unsubscribeUrl??"https://www.xpark.ai/unsubscribe",p=`Quanto vale o seu tempo? Diaria por ${a}`,m="Coberto, perto do terminal, reserva em menos de 1 minuto.",c=(y,C)=>`
105    <td align="center" valign="top" style="padding:0 6px;width:33%;">
106      <div style="width:44px;height:44px;background:${t.goldSoft};border-radius:10px;display:inline-block;line-height:44px;font-family:${o};font-weight:600;font-size:20px;color:${t.goldHover};">✦</div>
107      <div style="margin-top:10px;font-family:${o};font-size:13px;font-weight:600;color:${t.ink};letter-spacing:-0.01em;">${r(y)}</div>
108      <div style="margin-top:3px;font-family:${o};font-size:12px;color:${t.mute};line-height:1.4;">${r(C)}</div>
109    </td>`,h=`
110  <h1 style="margin:0 0 16px 0;font-family:${o};font-weight:600;font-size:36px;line-height:1.1;letter-spacing:-0.02em;color:${t.ink};">
111    Quanto vale o<br />
112    <span style="display:inline-block;background:${t.ink};color:${t.gold};padding:4px 12px;border-radius:6px;margin-top:6px;">seu tempo?</span>
113  </h1>
114  ${z("Sem comparar 15 sites. Reserve coberto, perto do terminal, em menos de um minuto.")}
115
116  <table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0" style="background:${t.ink};border-radius:14px;margin:8px 0 24px 0;">
117    <tr><td align="center" style="padding:32px 24px;">
118      <div style="font-family:${o};font-size:12px;font-weight:500;letter-spacing:0.12em;text-transform:uppercase;color:${t.gold};">Diaria promocional</div>
119      <div style="margin-top:14px;">
120        <span style="font-family:${$};font-size:52px;font-weight:500;color:${t.paper};letter-spacing:-0.02em;">${r(a)}</span>
121        <span style="font-family:${$};font-size:20px;color:${t.mute};text-decoration:line-through;margin-left:12px;">${r(n)}</span>
122      </div>
123      <div style="margin-top:12px;font-family:${o};font-size:14px;color:#B8B8B8;">Coberto · 8 min do terminal · vaga garantida</div>
124    </td></tr>
125  </table>
126
127  <table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0" style="margin:8px 0 24px 0;">
128    <tr>
129      ${c("xpark Certificado","Parceiro auditado")}
130      ${c("Trust Score","Nota real dos clientes")}
131      ${c("xpark Guarantee","Vaga ou dinheiro de volta")}
132    </tr>
133  </table>
134
135  <div>${k("Reservar agora",d)}</div>
136  `,u=`
137  <tr><td style="padding-bottom:14px;font-family:${o};font-size:13px;color:${t.mute};">
138    Atendemos GRU e VCP · <a href="${r(l)}" style="color:${t.ink};text-decoration:underline;">Fale no WhatsApp</a>
139  </td></tr>`,g=w({previewText:m,title:p,bodyHtml:h,footerExtraHtml:u+`<tr><td style="padding-top:4px;font-family:${o};font-size:12px;color:${t.mute};">
140         <a href="${r(i)}" style="color:${t.mute};text-decoration:underline;">Cancelar inscricao</a>
141       </td></tr>`}),f=["Quanto vale o seu tempo?","","Sem comparar 15 sites. Reserve coberto, perto do terminal, em menos de um minuto.","",`Diaria promocional: ${a} (de ${n})`,"Coberto · 8 min do terminal · vaga garantida","",`Reservar: ${d}`,`WhatsApp: ${l}`,"","Quanto vale o seu tempo?",`© xpark ${b()}`,`Cancelar inscricao: ${i}`].join(`
142`);return{subject:p,html:g,text:f}}const v={customerName:"Joao",airportLabel:"GRU - Guarulhos",entryDateTime:"12/08/2026 18:40",exitDateTime:"19/08/2026 22:10",amountLabel:"R$ 89,00",accessCode:"XPK-4829",bookingRef:"Reserva #XPK-4829",bookingUrl:"https://www.xpark.ai/minhas-reservas",whatsappUrl:"https://wa.me/5511999999999",address:"Av. Monteiro Lobato, 1234 - Guarulhos/SP",terminalMinutes:8,mapsUrl:"https://maps.google.com/?q=xpark+guarulhos",reviewUrl:"https://www.xpark.ai/avaliar",promoPriceLabel:"R$ 89",oldPriceLabel:"R$ 119",ctaUrl:"https://www.xpark.ai/escolher?airport=GRU",unsubscribeUrl:"https://www.xpark.ai/unsubscribe?e=demo"};function J(e){switch(e){case"confirmation":return O(v);case"reminder":return Q(v);case"review":return W(v);case"promo":return I(v)}}const K=[{key:"confirmation",label:"Confirmacao",hint:"transacional · pos-pagamento"},{key:"reminder",label:"Lembrete",hint:"transacional · 24-48h antes"},{key:"review",label:"Pos-saida",hint:"transacional · pedir avaliacao"},{key:"promo",label:"Promo",hint:"marketing · newsletter"}];function _(){D();const[e,a]=j.useState("confirmation"),[n,d]=j.useState("html"),l=j.useMemo(()=>J(e),[e]);return s.jsxs("div",{className:"space-y-6",children:[s.jsx(L,{title:"Email Preview · xpark",description:"Preview dos templates de e-mail.",path:"/admin/email-preview",noindex:!0}),s.jsxs("div",{children:[s.jsx("h1",{className:"text-2xl font-semibold tracking-tight",children:"Kit de e-mails"}),s.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"Preview visual dos templates. Nenhum envio e disparado nesta pagina."})]}),s.jsx("div",{className:"flex flex-wrap gap-2",children:K.map(i=>s.jsxs("button",{onClick:()=>a(i.key),className:`rounded-md border px-3 py-2 text-left transition ${e===i.key?"bg-primary text-primary-foreground border-primary":"bg-card hover:bg-muted"}`,children:[s.jsx("div",{className:"text-sm font-medium",children:i.label}),s.jsx("div",{className:`text-xs ${e===i.key?"opacity-80":"text-muted-foreground"}`,children:i.hint})]},i.key))}
142),s.jsxs(H,{children:[s.jsxs(M,{className:"flex-row items-center justify-between space-y-0",children:[s.jsxs("div",{children:[s.jsx(q,{className:"text-base",children:"Assunto"}),s.jsx("div",{className:"mt-1 font-mono text-sm",children:l.subject})]}),s.jsxs("div",{className:"flex gap-2",children:[s.jsx(R,{size:"sm",variant:n==="html"?"default":"outline",onClick:()=>d("html"),children:"HTML"}),s.jsx(R,{size:"sm",variant:n==="text"?"default":"outline",onClick:()=>d("text"),children:"Texto"})]})]}),s.jsx(V,{children:n==="html"?s.jsx("iframe",{title:`preview-${e}`,srcDoc:l.html,sandbox:"allow-same-origin",className:"w-full h-[900px] rounded-md border bg-white"},e):s.jsx("pre",{className:"whitespace-pre-wrap rounded-md border bg-muted/50 p-4 font-mono text-xs leading-relaxed",children:l.text})})]})]})}export{_ as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.