@planetaexo/design-system 0.3.13 → 0.3.14

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.
package/dist/index.d.cts CHANGED
@@ -156,8 +156,10 @@ interface TermsSectionProps {
156
156
  label: React.ReactNode;
157
157
  /** Mensagem de aviso exibida quando não marcado */
158
158
  warningMessage?: string | null;
159
+ /** Label do botão que abre o modal de termos. Default: "Ver termos e condições completos" */
160
+ viewTermsLabel?: string;
159
161
  }
160
- declare function TermsSection({ title, checked, onChange, label, warningMessage, }: TermsSectionProps): react_jsx_runtime.JSX.Element;
162
+ declare function TermsSection({ title, checked, onChange, label, warningMessage, viewTermsLabel, }: TermsSectionProps): react_jsx_runtime.JSX.Element;
161
163
  /** Cartão de aventura isolado (mesmo layout que dentro de `Offer`). */
162
164
  declare function OfferAdventureCard({ adventure }: {
163
165
  adventure: OfferAdventureItem;
package/dist/index.d.ts CHANGED
@@ -156,8 +156,10 @@ interface TermsSectionProps {
156
156
  label: React.ReactNode;
157
157
  /** Mensagem de aviso exibida quando não marcado */
158
158
  warningMessage?: string | null;
159
+ /** Label do botão que abre o modal de termos. Default: "Ver termos e condições completos" */
160
+ viewTermsLabel?: string;
159
161
  }
160
- declare function TermsSection({ title, checked, onChange, label, warningMessage, }: TermsSectionProps): react_jsx_runtime.JSX.Element;
162
+ declare function TermsSection({ title, checked, onChange, label, warningMessage, viewTermsLabel, }: TermsSectionProps): react_jsx_runtime.JSX.Element;
161
163
  /** Cartão de aventura isolado (mesmo layout que dentro de `Offer`). */
162
164
  declare function OfferAdventureCard({ adventure }: {
163
165
  adventure: OfferAdventureItem;
package/dist/index.js CHANGED
@@ -1686,13 +1686,73 @@ function PaymentMethodSelector({
1686
1686
  )) })
1687
1687
  ] });
1688
1688
  }
1689
+ var TERMS_CONTENT = [
1690
+ {
1691
+ heading: "1. Introdu\xE7\xE3o",
1692
+ body: "Bem-vindo \xE0 PlanetaEXO. Ao acessar nosso site ou realizar uma reserva, voc\xEA concorda com estes Termos e Condi\xE7\xF5es. Por favor, leia-os atentamente antes de efetuar qualquer compra ou reserva."
1693
+ },
1694
+ {
1695
+ heading: "2. Defini\xE7\xF5es",
1696
+ body: '"PlanetaEXO" refere-se \xE0 empresa organizadora de viagens e experi\xEAncias. "Cliente" refere-se \xE0 pessoa que realiza a reserva. "Servi\xE7o" refere-se a qualquer pacote de viagem, aventura, passeio ou experi\xEAncia oferecida pela PlanetaEXO.'
1697
+ },
1698
+ {
1699
+ heading: "3. Reservas e Confirma\xE7\xE3o",
1700
+ body: "Uma reserva \xE9 considerada confirmada somente ap\xF3s o recebimento do pagamento (total ou dep\xF3sito conforme aplic\xE1vel) e o envio de confirma\xE7\xE3o por escrito pela PlanetaEXO. A PlanetaEXO reserva-se o direito de recusar ou cancelar reservas a seu crit\xE9rio."
1701
+ },
1702
+ {
1703
+ heading: "4. Pre\xE7os e Pagamento",
1704
+ body: "Todos os pre\xE7os s\xE3o expressos na moeda indicada na proposta e podem estar sujeitos a varia\xE7\xE3o cambial. O pagamento do dep\xF3sito ou valor total deve ser realizado nos prazos estipulados na proposta. A PlanetaEXO n\xE3o se responsabiliza por flutua\xE7\xF5es cambiais ap\xF3s a confirma\xE7\xE3o da reserva."
1705
+ },
1706
+ {
1707
+ heading: "5. Pol\xEDtica de Cancelamento",
1708
+ body: "Cancelamentos devem ser comunicados por escrito \xE0 PlanetaEXO. As penalidades de cancelamento variam conforme o prazo de anteced\xEAncia: cancelamentos com mais de 30 dias de anteced\xEAncia incorrem em perda do dep\xF3sito; cancelamentos com menos de 30 dias incorrem em perda de 50% do valor total; cancelamentos com menos de 15 dias incorrem em perda de 100% do valor total. Casos especiais (for\xE7a maior, emerg\xEAncias m\xE9dicas comprovadas) ser\xE3o avaliados individualmente."
1709
+ },
1710
+ {
1711
+ heading: "6. Altera\xE7\xF5es de Itiner\xE1rio",
1712
+ body: "A PlanetaEXO reserva-se o direito de modificar itiner\xE1rios, acomoda\xE7\xF5es ou atividades por raz\xF5es de seguran\xE7a, condi\xE7\xF5es clim\xE1ticas, for\xE7a maior ou outras circunst\xE2ncias fora de seu controle, sem que isso implique em responsabilidade por perdas ou danos. Em caso de altera\xE7\xF5es significativas, o cliente ser\xE1 notificado o mais brevemente poss\xEDvel."
1713
+ },
1714
+ {
1715
+ heading: "7. Responsabilidades do Cliente",
1716
+ body: "O cliente \xE9 respons\xE1vel por: (a) garantir que possui documenta\xE7\xE3o v\xE1lida (passaporte, vistos, vacinas) para os destinos da viagem; (b) contratar seguro de viagem adequado; (c) informar eventuais condi\xE7\xF5es m\xE9dicas ou restri\xE7\xF5es alimentares relevantes; (d) cumprir as leis e regulamentos locais dos destinos visitados."
1717
+ },
1718
+ {
1719
+ heading: "8. Seguro de Viagem",
1720
+ body: "Recomendamos fortemente a contrata\xE7\xE3o de seguro de viagem abrangente que cubra cancelamento, emerg\xEAncias m\xE9dicas, evacua\xE7\xE3o e bagagem. A PlanetaEXO n\xE3o se responsabiliza por despesas resultantes de situa\xE7\xF5es cobertas por seguro que o cliente tenha optado por n\xE3o contratar."
1721
+ },
1722
+ {
1723
+ heading: "9. Limita\xE7\xE3o de Responsabilidade",
1724
+ body: "A responsabilidade da PlanetaEXO limita-se ao valor total pago pelo cliente. A PlanetaEXO n\xE3o se responsabiliza por danos indiretos, perdas de receita, danos morais ou outras consequ\xEAncias decorrentes de falhas em servi\xE7os de terceiros (companhias a\xE9reas, hot\xE9is, operadores locais) ou eventos de for\xE7a maior."
1725
+ },
1726
+ {
1727
+ heading: "10. Sa\xFAde e Seguran\xE7a",
1728
+ body: "Algumas atividades oferecidas pela PlanetaEXO podem envolver riscos f\xEDsicos. O cliente deve avaliar sua condi\xE7\xE3o de sa\xFAde e aptid\xE3o f\xEDsica antes de confirmar a reserva. A PlanetaEXO pode recusar a participa\xE7\xE3o de clientes que n\xE3o atendam aos requisitos m\xEDnimos de sa\xFAde e seguran\xE7a de uma atividade."
1729
+ },
1730
+ {
1731
+ heading: "11. Privacidade e Dados Pessoais",
1732
+ body: "As informa\xE7\xF5es fornecidas pelo cliente ser\xE3o utilizadas exclusivamente para a presta\xE7\xE3o dos servi\xE7os contratados e para fins operacionais relacionados. A PlanetaEXO compromete-se a proteger os dados pessoais dos clientes conforme a legisla\xE7\xE3o aplic\xE1vel (LGPD no Brasil). Os dados n\xE3o ser\xE3o vendidos ou compartilhados com terceiros, exceto fornecedores necess\xE1rios para a execu\xE7\xE3o dos servi\xE7os."
1733
+ },
1734
+ {
1735
+ heading: "12. Propriedade Intelectual",
1736
+ body: "Todo o conte\xFAdo do site e dos materiais da PlanetaEXO (textos, imagens, logotipos, itiner\xE1rios) \xE9 protegido por direitos autorais. \xC9 proibida a reprodu\xE7\xE3o, distribui\xE7\xE3o ou uso comercial sem autoriza\xE7\xE3o pr\xE9via e expressa da PlanetaEXO."
1737
+ },
1738
+ {
1739
+ heading: "13. Resolu\xE7\xE3o de Disputas",
1740
+ body: "Eventuais disputas ser\xE3o resolvidas preferencialmente por media\xE7\xE3o. Caso n\xE3o haja acordo, as partes elegem o foro da Comarca de S\xE3o Paulo, Brasil, para dirimir quaisquer controv\xE9rsias decorrentes destes Termos, com ren\xFAncia de qualquer outro, por mais privilegiado que seja."
1741
+ },
1742
+ {
1743
+ heading: "14. Aceita\xE7\xE3o dos Termos",
1744
+ body: "Ao realizar uma reserva com a PlanetaEXO, o cliente declara ter lido, compreendido e concordado com todos estes Termos e Condi\xE7\xF5es. Estes termos podem ser atualizados periodicamente; a vers\xE3o vigente estar\xE1 sempre dispon\xEDvel no site oficial da PlanetaEXO."
1745
+ }
1746
+ ];
1689
1747
  function TermsSection({
1690
1748
  title = "Terms and conditions",
1691
1749
  checked,
1692
1750
  onChange,
1693
1751
  label,
1694
- warningMessage
1752
+ warningMessage,
1753
+ viewTermsLabel = "Ver termos e condi\xE7\xF5es completos"
1695
1754
  }) {
1755
+ const [modalOpen, setModalOpen] = React19.useState(false);
1696
1756
  return /* @__PURE__ */ jsxs("div", { className: "rounded-xl border border-border p-4 flex flex-col gap-3", children: [
1697
1757
  /* @__PURE__ */ jsx("p", { className: "text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest", children: title }),
1698
1758
  /* @__PURE__ */ jsxs("label", { className: "flex items-start gap-2.5 cursor-pointer", children: [
@@ -1707,7 +1767,30 @@ function TermsSection({
1707
1767
  ),
1708
1768
  /* @__PURE__ */ jsx("span", { className: "text-sm font-sans text-foreground/80 leading-snug", children: label })
1709
1769
  ] }),
1710
- !checked && warningMessage && /* @__PURE__ */ jsx("p", { className: "text-xs text-amber-400 flex items-center gap-1", children: warningMessage })
1770
+ /* @__PURE__ */ jsx(
1771
+ "button",
1772
+ {
1773
+ type: "button",
1774
+ onClick: () => setModalOpen(true),
1775
+ className: "self-start text-xs text-primary underline underline-offset-2 font-sans hover:text-primary/80 transition-colors",
1776
+ children: viewTermsLabel
1777
+ }
1778
+ ),
1779
+ !checked && warningMessage && /* @__PURE__ */ jsx("p", { className: "text-xs text-amber-400 flex items-center gap-1", children: warningMessage }),
1780
+ /* @__PURE__ */ jsx(Dialog, { open: modalOpen, onOpenChange: setModalOpen, children: /* @__PURE__ */ jsxs(DialogContent, { className: "max-w-2xl w-full max-h-[80vh] overflow-y-auto", children: [
1781
+ /* @__PURE__ */ jsx(DialogHeader, { children: /* @__PURE__ */ jsx(DialogTitle, { className: "font-heading text-xl", children: "Termos e Condi\xE7\xF5es \u2014 PlanetaEXO" }) }),
1782
+ /* @__PURE__ */ jsx("div", { className: "mt-4 space-y-5 text-sm font-sans text-foreground/80 leading-relaxed", children: TERMS_CONTENT.map((section) => /* @__PURE__ */ jsxs("div", { children: [
1783
+ /* @__PURE__ */ jsx("p", { className: "font-bold text-foreground font-heading mb-1", children: section.heading }),
1784
+ /* @__PURE__ */ jsx("p", { children: section.body })
1785
+ ] }, section.heading)) }),
1786
+ /* @__PURE__ */ jsx("div", { className: "mt-6 flex justify-end", children: /* @__PURE__ */ jsx(
1787
+ DialogClose,
1788
+ {
1789
+ className: "px-4 py-2 rounded-lg bg-primary text-white text-sm font-heading font-semibold hover:bg-primary/90 transition-colors",
1790
+ children: "Fechar"
1791
+ }
1792
+ ) })
1793
+ ] }) })
1711
1794
  ] });
1712
1795
  }
1713
1796
  var WIZARD_STEPS = [