{"version":3,"file":"TruConsentModal.modern.mjs","sources":["../src/TruConsentModal.jsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport './MarsConsentModal.css';\n\n// a tiny default SVG as a data-URI\nconst DEFAULT_LOGO = `data:image/svg+xml;utf8,\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"48\" viewBox=\"0 0 100 100\">\n  <rect width=\"100\" height=\"100\" fill=\"#8e44ad\"/>\n  <text x=\"50\" y=\"55\" font-size=\"50\" text-anchor=\"middle\" fill=\"#fff\" font-family=\"Arial\">M</text>\n</svg>`;\n\nexport function TruConsentModal({\n  bannerId,\n  apiBaseUrl = 'https://7nd6pu6evh.execute-api.ap-south-1.amazonaws.com/dev/banners',\n  logoUrl = DEFAULT_LOGO,\n  companyName = 'Mars Financial Technologies Private Limited'\n}) {\n  const [banner, setBanner] = useState(null);\n\n  useEffect(() => {\n    if (!bannerId) return;\n    fetch(`${apiBaseUrl}/${bannerId}`)\n      .then(res => res.json())\n      .then(data => setBanner(data))\n      .catch(console.error);\n  }, [bannerId, apiBaseUrl]);\n\n  if (!banner) return null;\n\n  return ReactDOM.createPortal(\n    <div className=\"mcm-overlay\">\n      <div className=\"mcm-container\">\n\n        {/* HEADER */}\n        <header className=\"mcm-header\">\n          <img src={logoUrl} alt=\"Logo\" className=\"mcm-logo\" />\n          <div className=\"mcm-header-text\">\n            <h1>Consents by {companyName}</h1>\n            <p>\n              You have all the rights to decline consents which you feel are not required by {companyName}.\n            </p>\n          </div>\n        </header>\n\n        <div className=\"mcm-separator\" />\n\n        {/* PURPOSE CARDS */}\n        <div className=\"mcm-body\">\n          {banner.purposes.map(purpose => (\n            <ConsentCard\n              key={purpose.id}\n              banner={banner}\n              purpose={purpose}\n            />\n          ))}\n        </div>\n\n        <div className=\"mcm-separator\" />\n\n        {/* FOOTER */}\n        <footer className=\"mcm-footer\">\n          <button className=\"mcm-btn reject\">Reject All</button>\n          <button className=\"mcm-btn consent\">I Consent</button>\n        </footer>\n      </div>\n    </div>,\n    document.body\n  );\n}\n\n// ConsentCard, Chevron, formatExpiry are unchanged from the previous version\nfunction ConsentCard({ banner, purpose }) {\n  const [openData, setOpenData] = useState(false);\n  const [openLegal, setOpenLegal] = useState(false);\n  const [openTools, setOpenTools] = useState(false);\n\n  return (\n    <div className=\"mcm-card\">\n      <div className=\"mcm-card-header\">\n        <div>\n          <h2>{purpose.name}</h2>\n          <p className=\"mcm-purpose-desc\">{purpose.description}</p>\n        </div>\n        <div className=\"mcm-card-actions\">\n          {purpose.is_mandatory && <span className=\"badge mandatory\">Mandatory</span>}\n          <span className=\"badge expiry\">Expiry Type: {formatExpiry(purpose.expiry_period)}</span>\n          <label className=\"switch\">\n            <input type=\"checkbox\" defaultChecked />\n            <span className=\"track\" />\n            <span className=\"thumb\" />\n          </label>\n          <span className=\"toggle-label\">Accept</span>\n        </div>\n      </div>\n\n      <div className=\"accordion\">\n        <button className=\"accordion-btn\" onClick={()=>setOpenData(!openData)}>\n          Data Elements\n          <Chevron open={openData} />\n        </button>\n        {openData && (\n          <div className=\"panel\">\n            {banner.data_elements.map(el => (\n              <span key={el.id} className=\"pill\">{el.name}</span>\n            ))}\n          </div>\n        )}\n\n        <button className=\"accordion-btn\" onClick={()=>setOpenLegal(!openLegal)}>\n          Legal Entities\n          <Chevron open={openLegal} />\n        </button>\n        {openLegal && (\n          <div className=\"panel\">\n            {banner.legal_entities.map(le => (\n              <span key={le.id} className=\"pill\">{le.name}</span>\n            ))}\n          </div>\n        )}\n\n        <button className=\"accordion-btn\" onClick={()=>setOpenTools(!openTools)}>\n          Tools\n          <Chevron open={openTools} />\n        </button>\n        {openTools && (\n          <div className=\"panel\">\n            {banner.tools?.map((t,i) => (\n              <span key={i} className=\"pill\">{t}</span>\n            ))}\n          </div>\n        )}\n      </div>\n    </div>\n  );\n}\n\nfunction Chevron({ open }) {\n  return (\n    <svg\n      className={`chevron ${open ? 'open' : ''}`}\n      width=\"16\" height=\"16\"\n      viewBox=\"0 0 24 24\"\n    >\n      <path d=\"M6 9l6 6 6-6\" fill=\"none\" stroke=\"#333\" strokeWidth=\"2\"/>\n    </svg>\n  );\n}\n\nfunction formatExpiry(uuid) {\n  const map = {\n    '7a203e84-016b-4f61-b776-2375dd1755e4': 'One Year'\n  };\n  return map[uuid] || uuid;\n}\n"],"names":["TruConsentModal","bannerId","apiBaseUrl","logoUrl","companyName","banner","setBanner","useState","useEffect","fetch","then","res","json","data","catch","console","error","ReactDOM","createPortal","React","createElement","className","src","alt","purposes","map","purpose","ConsentCard","key","id","document","body","_banner$tools","openData","setOpenData","openLegal","setOpenLegal","openTools","setOpenTools","name","description","is_mandatory","uuid","expiry_period","type","defaultChecked","onClick","Chevron","open","data_elements","el","legal_entities","le","tools","t","i","width","height","viewBox","d","fill","stroke","strokeWidth"],"mappings":"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"}