docs: add quixzoom-auth-core product to AAMOS

- Product documentation in docs/products/
- Updated MEMORY.md with product info
- quiXzoom Auth Core as AAMOS Identity product
This commit is contained in:
Bernt
2026-07-14 09:58:53 +00:00
parent 58ca4e68db
commit 48ea61cdcc
2730 changed files with 293827 additions and 7213 deletions
+101 -47
View File
@@ -617,54 +617,108 @@
</main>
<!-- FOOTER -->
<footer>
<div class="footer-inner">
<div>
<div class="footer-logo">Landvex</div>
<div class="footer-copy">© 2026 Landvex Inc</div>
<div style="font-size:11px;color:var(--text-muted);margin-top:4px;line-height:1.6">Landvex Inc · Houston, Texas (US HQ) · Landvex AB · Org.nr 559141-7042 · Tyresö, Sweden (EU operations) · <a href="mailto:contact@landvex.com" style="color:inherit">contact@landvex.com</a></div>
<div style="font-size:11px;color:var(--text-muted);margin-top:4px">quiXzoom field data is collected by quiXzoom Inc (Delaware) and licensed to Landvex for intelligence production. <a href="https://www.quixzoom.com/" style="color:inherit">quiXzoom →</a></div>
<div class="footer-tagline">Control intelligence for the physical world.</div>
<footer>
<div class="footer-container" style="max-width:1200px;margin:0 auto;padding:48px 24px 32px;">
<!-- Main Footer Grid -->
<div style="display:grid;grid-template-columns:repeat(4,1fr);gap:40px;margin-bottom:48px;">
<!-- Column 1: Products -->
<div>
<h4 style="font-size:13px;font-weight:600;color:#0A0A0A;margin-bottom:16px;text-transform:uppercase;letter-spacing:0.5px;">Produkter</h4>
<ul style="list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px;">
<li><a href="/infrastructure-monitoring/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">VIMS</a></li>
<li><a href="/intelligence/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Intelligence</a></li>
<li><a href="/reality-alerts/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Reality Alerts</a></li>
<li><a href="/enterprise/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Enterprise</a></li>
<li><a href="/pilot/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Pilotprogram</a></li>
</ul>
</div>
<!-- Column 2: Solutions -->
<div>
<h4 style="font-size:13px;font-weight:600;color:#0A0A0A;margin-bottom:16px;text-transform:uppercase;letter-spacing:0.5px;">Lösningar</h4>
<ul style="list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px;">
<li><a href="/verticals/bridge-inspection/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Broinspektion</a></li>
<li><a href="/verticals/road-monitoring/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Vägövervakning</a></li>
<li><a href="/verticals/infrastructure/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Infrastruktur</a></li>
<li><a href="/verticals/utilities/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Utilities</a></li>
<li><a href="/use-cases/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Användningsfall</a></li>
</ul>
</div>
<!-- Column 3: Resources -->
<div>
<h4 style="font-size:13px;font-weight:600;color:#0A0A0A;margin-bottom:16px;text-transform:uppercase;letter-spacing:0.5px;">Resurser</h4>
<ul style="list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px;">
<li><a href="/blog/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Intelligence Insights</a></li>
<li><a href="/guides/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Guider</a></li>
<li><a href="/developers/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Developer API</a></li>
<li><a href="/status/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Systemstatus</a></li>
<li><a href="/reports/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Rapporter</a></li>
</ul>
</div>
<!-- Column 4: Company -->
<div>
<h4 style="font-size:13px;font-weight:600;color:#0A0A0A;margin-bottom:16px;text-transform:uppercase;letter-spacing:0.5px;">Företag</h4>
<ul style="list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px;">
<li><a href="/about/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Om oss</a></li>
<li><a href="/careers/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Karriär</a></li>
<li><a href="/press/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Press</a></li>
<li><a href="/contact/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Kontakt</a></li>
<li><a href="https://www.quixzoom.com" target="_blank" rel="noopener" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">quiXzoom →</a></li>
</ul>
</div>
</div>
<div class="footer-links">
<a href="/privacy/">Privacy</a>
<a href="/terms/">Terms</a>
<a href="/cookie-policy/">Cookies</a>
<a href="/compliance/">Compliance</a>
<a href="/trust/">Trust Centre</a>
<a href="/dpa/">DPA</a>
<a href="/data-lineage/">Data Lineage</a>
<a href="/subprocessors/">Sub-processors</a>
<a href="/methodology/">Methodology</a>
<a href="/data-quality/">Data Quality</a>
<a href="/security/">Security</a>
<a href="/comparison/">Compare</a>
<a href="/sla/">SLA &amp; Coverage</a>
<a href="/cities/stockholm/">Stockholm</a>
<a href="/cities/berlin/">Berlin</a>
<a href="/cities/paris/">Paris</a>
<a href="/cities/london/">London</a>
<a href="/cities/bangkok/">Bangkok</a>
<a href="/about/">About</a>
<a href="/careers/">Careers</a>
<a href="/accessibility/">Accessibility</a>
<a href="/responsible-disclosure/">Responsible disclosure</a>
<a href="/blog/">Intelligence Insights</a>
<a href="/guides/">Guides</a>
<a href="https://www.quixzoom.com/" target="_blank" rel="noopener">quiXzoom →</a>
<a href="mailto:contact@landvex.com">contact@landvex.com</a>
<a href="https://www.linkedin.com/company/landvex" target="_blank" rel="noopener" class="footer-social" title="LandveX on LinkedIn">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z" stroke="#888" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="2" y="9" width="4" height="12" stroke="#888" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<circle cx="4" cy="4" r="2" stroke="#888" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</a>
<a href="https://x.com/landvex" target="_blank" rel="noopener" class="footer-social" title="LandveX on X">
<svg width="15" height="15" viewBox="0 0 24 24" fill="#888" xmlns="http://www.w3.org/2000/svg">
<path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-4.714-6.231-5.401 6.231H2.746l7.73-8.835L1.254 2.25H8.08l4.253 5.622 5.912-5.622Zm-1.161 17.52h1.833L7.084 4.126H5.117z"/>
</svg>
</a>
<!-- Divider -->
<div style="border-top:1px solid #E5E5E5;padding-top:32px;">
<!-- Legal & Compliance Row -->
<div style="display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:24px;margin-bottom:24px;">
<div style="display:flex;flex-wrap:wrap;gap:16px 24px;">
<a href="/privacy/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Privacy</a>
<a href="/terms/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Terms</a>
<a href="/cookie-policy/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Cookies</a>
<a href="/compliance/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Compliance</a>
<a href="/trust/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Trust Centre</a>
<a href="/dpa/" style="font-size:12px;color:#6E6E73;text-decoration:none;">DPA</a>
<a href="/sla/" style="font-size:12px;color:#6E6E73;text-decoration:none;">SLA</a>
<a href="/security/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Security</a>
<a href="/accessibility/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Accessibility</a>
<a href="/responsible-disclosure/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Responsible Disclosure</a>
</div>
<div style="display:flex;gap:16px;">
<a href="https://www.linkedin.com/company/landvex" target="_blank" rel="noopener" style="color:#6E6E73;" title="LinkedIn">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"/><rect x="2" y="9" width="4" height="12"/><circle cx="4" cy="4" r="2"/></svg>
</a>
<a href="https://x.com/landvex" target="_blank" rel="noopener" style="color:#6E6E73;" title="X">
<svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-4.714-6.231-5.401 6.231H2.746l7.73-8.835L1.254 2.25H8.08l4.253 5.622 5.912-5.622Zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>
</a>
</div>
</div>
<!-- Company Info Row -->
<div style="display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:16px;">
<div>
<div style="font-size:12px;color:#86868B;line-height:1.6;">
<strong style="color:#0A0A0A;">Landvex Inc.</strong> · Houston, Texas · USA<br>
<strong style="color:#0A0A0A;">Landvex AB</strong> · Org.nr 559141-7042 · Tyresö, Sweden · EU<br>
<a href="mailto:contact@landvex.com" style="color:#86868B;text-decoration:none;">contact@landvex.com</a> ·
<a href="mailto:security@landvex.com" style="color:#86868B;text-decoration:none;">security@landvex.com</a>
</div>
<div style="font-size:11px;color:#86868B;margin-top:8px;line-height:1.5;">
Field data powered by <a href="https://www.quixzoom.com" style="color:#86868B;text-decoration:underline;">quiXzoom</a> ·
<a href="/data-lineage/" style="color:#86868B;text-decoration:underline;">Data Lineage</a> ·
<a href="/subprocessors/" style="color:#86868B;text-decoration:underline;">Sub-processors</a> ·
<a href="/methodology/" style="color:#86868B;text-decoration:underline;">Methodology</a>
</div>
</div>
<div style="font-size:12px;color:#86868B;">
© 2026 Landvex Inc / Landvex AB. All rights reserved.
</div>
</div>
</div>
</div>
</footer>
+104 -30
View File
@@ -250,37 +250,111 @@
</div>
</section>
<footer>
<div class="footer-inner">
<div>
<div class="footer-logo">Landvex</div>
<div class="footer-copy">© 2026 Landvex Inc · Landvex AB (org.nr 559141-7042)</div>
<div class="footer-tagline">Decision intelligence for the physical world.</div>
<div style="font-size:11px;color:var(--text-muted);margin-top:8px;line-height:1.6">Landvex AB · Org.nr 559141-7042<br>Tyreso, Sweden · <a href="mailto:contact@landvex.com" style="color:inherit">contact@landvex.com</a></div>
<footer>
<div class="footer-container" style="max-width:1200px;margin:0 auto;padding:48px 24px 32px;">
<!-- Main Footer Grid -->
<div style="display:grid;grid-template-columns:repeat(4,1fr);gap:40px;margin-bottom:48px;">
<!-- Column 1: Products -->
<div>
<h4 style="font-size:13px;font-weight:600;color:#0A0A0A;margin-bottom:16px;text-transform:uppercase;letter-spacing:0.5px;">Produkter</h4>
<ul style="list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px;">
<li><a href="/infrastructure-monitoring/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">VIMS</a></li>
<li><a href="/intelligence/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Intelligence</a></li>
<li><a href="/reality-alerts/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Reality Alerts</a></li>
<li><a href="/enterprise/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Enterprise</a></li>
<li><a href="/pilot/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Pilotprogram</a></li>
</ul>
</div>
<!-- Column 2: Solutions -->
<div>
<h4 style="font-size:13px;font-weight:600;color:#0A0A0A;margin-bottom:16px;text-transform:uppercase;letter-spacing:0.5px;">Lösningar</h4>
<ul style="list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px;">
<li><a href="/verticals/bridge-inspection/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Broinspektion</a></li>
<li><a href="/verticals/road-monitoring/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Vägövervakning</a></li>
<li><a href="/verticals/infrastructure/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Infrastruktur</a></li>
<li><a href="/verticals/utilities/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Utilities</a></li>
<li><a href="/use-cases/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Användningsfall</a></li>
</ul>
</div>
<!-- Column 3: Resources -->
<div>
<h4 style="font-size:13px;font-weight:600;color:#0A0A0A;margin-bottom:16px;text-transform:uppercase;letter-spacing:0.5px;">Resurser</h4>
<ul style="list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px;">
<li><a href="/blog/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Intelligence Insights</a></li>
<li><a href="/guides/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Guider</a></li>
<li><a href="/developers/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Developer API</a></li>
<li><a href="/status/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Systemstatus</a></li>
<li><a href="/reports/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Rapporter</a></li>
</ul>
</div>
<!-- Column 4: Company -->
<div>
<h4 style="font-size:13px;font-weight:600;color:#0A0A0A;margin-bottom:16px;text-transform:uppercase;letter-spacing:0.5px;">Företag</h4>
<ul style="list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px;">
<li><a href="/about/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Om oss</a></li>
<li><a href="/careers/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Karriär</a></li>
<li><a href="/press/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Press</a></li>
<li><a href="/contact/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Kontakt</a></li>
<li><a href="https://www.quixzoom.com" target="_blank" rel="noopener" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">quiXzoom →</a></li>
</ul>
</div>
</div>
<!-- Divider -->
<div style="border-top:1px solid #E5E5E5;padding-top:32px;">
<!-- Legal & Compliance Row -->
<div style="display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:24px;margin-bottom:24px;">
<div style="display:flex;flex-wrap:wrap;gap:16px 24px;">
<a href="/privacy/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Privacy</a>
<a href="/terms/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Terms</a>
<a href="/cookie-policy/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Cookies</a>
<a href="/compliance/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Compliance</a>
<a href="/trust/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Trust Centre</a>
<a href="/dpa/" style="font-size:12px;color:#6E6E73;text-decoration:none;">DPA</a>
<a href="/sla/" style="font-size:12px;color:#6E6E73;text-decoration:none;">SLA</a>
<a href="/security/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Security</a>
<a href="/accessibility/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Accessibility</a>
<a href="/responsible-disclosure/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Responsible Disclosure</a>
</div>
<div style="display:flex;gap:16px;">
<a href="https://www.linkedin.com/company/landvex" target="_blank" rel="noopener" style="color:#6E6E73;" title="LinkedIn">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"/><rect x="2" y="9" width="4" height="12"/><circle cx="4" cy="4" r="2"/></svg>
</a>
<a href="https://x.com/landvex" target="_blank" rel="noopener" style="color:#6E6E73;" title="X">
<svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-4.714-6.231-5.401 6.231H2.746l7.73-8.835L1.254 2.25H8.08l4.253 5.622 5.912-5.622Zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>
</a>
</div>
</div>
<!-- Company Info Row -->
<div style="display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:16px;">
<div>
<div style="font-size:12px;color:#86868B;line-height:1.6;">
<strong style="color:#0A0A0A;">Landvex Inc.</strong> · Houston, Texas · USA<br>
<strong style="color:#0A0A0A;">Landvex AB</strong> · Org.nr 559141-7042 · Tyresö, Sweden · EU<br>
<a href="mailto:contact@landvex.com" style="color:#86868B;text-decoration:none;">contact@landvex.com</a> ·
<a href="mailto:security@landvex.com" style="color:#86868B;text-decoration:none;">security@landvex.com</a>
</div>
<div style="font-size:11px;color:#86868B;margin-top:8px;line-height:1.5;">
Field data powered by <a href="https://www.quixzoom.com" style="color:#86868B;text-decoration:underline;">quiXzoom</a> ·
<a href="/data-lineage/" style="color:#86868B;text-decoration:underline;">Data Lineage</a> ·
<a href="/subprocessors/" style="color:#86868B;text-decoration:underline;">Sub-processors</a> ·
<a href="/methodology/" style="color:#86868B;text-decoration:underline;">Methodology</a>
</div>
</div>
<div style="font-size:12px;color:#86868B;">
© 2026 Landvex Inc / Landvex AB. All rights reserved.
</div>
</div>
</div>
</div>
<div class="footer-links">
<a href="/about/">About</a>
<a href="/privacy/">Privacy</a>
<a href="/terms/">Terms</a>
<a href="/methodology/">Methodology</a>
<a href="/data-quality/">Data Quality</a>
<a href="/security/">Security</a>
<a href="/comparison/">Compare</a>
<a href="/sla/">SLA &amp; Coverage</a>
<a href="/careers/">Careers</a>
<a href="/accessibility/" style="color: #1d1d1f">Accessibility</a>
<a href="/responsible-disclosure/">Responsible disclosure</a>
<a href="https://www.quixzoom.com/" target="_blank" rel="noopener">quiXzoom &rarr;</a>
<a href="mailto:contact@landvex.com">contact@landvex.com</a>
<a href="https://www.linkedin.com/company/landvex" target="_blank" rel="noopener" class="footer-social" title="LandveX on LinkedIn">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z" stroke="#888" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><rect x="2" y="9" width="4" height="12" stroke="#888" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><circle cx="4" cy="4" r="2" stroke="#888" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
</a>
<a href="https://x.com/landvex" target="_blank" rel="noopener" class="footer-social" title="LandveX on X">
<svg width="15" height="15" viewBox="0 0 24 24" fill="#888"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-4.714-6.231-5.401 6.231H2.746l7.73-8.835L1.254 2.25H8.08l4.253 5.622 5.912-5.622Zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>
</a>
</div>
</div>
</footer>
</footer>
</body>
</html>
@@ -448,8 +448,110 @@
</div>
</section>
<footer>
<p>© 2026 LandveX AB · <a href="/">Home</a> · <a href="/methodology/">Methodology</a> · <a href="/enterprise/">Enterprise</a></p>
<footer>
<div class="footer-container" style="max-width:1200px;margin:0 auto;padding:48px 24px 32px;">
<!-- Main Footer Grid -->
<div style="display:grid;grid-template-columns:repeat(4,1fr);gap:40px;margin-bottom:48px;">
<!-- Column 1: Products -->
<div>
<h4 style="font-size:13px;font-weight:600;color:#0A0A0A;margin-bottom:16px;text-transform:uppercase;letter-spacing:0.5px;">Produkter</h4>
<ul style="list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px;">
<li><a href="/infrastructure-monitoring/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">VIMS</a></li>
<li><a href="/intelligence/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Intelligence</a></li>
<li><a href="/reality-alerts/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Reality Alerts</a></li>
<li><a href="/enterprise/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Enterprise</a></li>
<li><a href="/pilot/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Pilotprogram</a></li>
</ul>
</div>
<!-- Column 2: Solutions -->
<div>
<h4 style="font-size:13px;font-weight:600;color:#0A0A0A;margin-bottom:16px;text-transform:uppercase;letter-spacing:0.5px;">Lösningar</h4>
<ul style="list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px;">
<li><a href="/verticals/bridge-inspection/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Broinspektion</a></li>
<li><a href="/verticals/road-monitoring/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Vägövervakning</a></li>
<li><a href="/verticals/infrastructure/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Infrastruktur</a></li>
<li><a href="/verticals/utilities/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Utilities</a></li>
<li><a href="/use-cases/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Användningsfall</a></li>
</ul>
</div>
<!-- Column 3: Resources -->
<div>
<h4 style="font-size:13px;font-weight:600;color:#0A0A0A;margin-bottom:16px;text-transform:uppercase;letter-spacing:0.5px;">Resurser</h4>
<ul style="list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px;">
<li><a href="/blog/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Intelligence Insights</a></li>
<li><a href="/guides/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Guider</a></li>
<li><a href="/developers/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Developer API</a></li>
<li><a href="/status/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Systemstatus</a></li>
<li><a href="/reports/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Rapporter</a></li>
</ul>
</div>
<!-- Column 4: Company -->
<div>
<h4 style="font-size:13px;font-weight:600;color:#0A0A0A;margin-bottom:16px;text-transform:uppercase;letter-spacing:0.5px;">Företag</h4>
<ul style="list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px;">
<li><a href="/about/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Om oss</a></li>
<li><a href="/careers/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Karriär</a></li>
<li><a href="/press/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Press</a></li>
<li><a href="/contact/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Kontakt</a></li>
<li><a href="https://www.quixzoom.com" target="_blank" rel="noopener" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">quiXzoom →</a></li>
</ul>
</div>
</div>
<!-- Divider -->
<div style="border-top:1px solid #E5E5E5;padding-top:32px;">
<!-- Legal & Compliance Row -->
<div style="display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:24px;margin-bottom:24px;">
<div style="display:flex;flex-wrap:wrap;gap:16px 24px;">
<a href="/privacy/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Privacy</a>
<a href="/terms/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Terms</a>
<a href="/cookie-policy/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Cookies</a>
<a href="/compliance/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Compliance</a>
<a href="/trust/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Trust Centre</a>
<a href="/dpa/" style="font-size:12px;color:#6E6E73;text-decoration:none;">DPA</a>
<a href="/sla/" style="font-size:12px;color:#6E6E73;text-decoration:none;">SLA</a>
<a href="/security/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Security</a>
<a href="/accessibility/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Accessibility</a>
<a href="/responsible-disclosure/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Responsible Disclosure</a>
</div>
<div style="display:flex;gap:16px;">
<a href="https://www.linkedin.com/company/landvex" target="_blank" rel="noopener" style="color:#6E6E73;" title="LinkedIn">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"/><rect x="2" y="9" width="4" height="12"/><circle cx="4" cy="4" r="2"/></svg>
</a>
<a href="https://x.com/landvex" target="_blank" rel="noopener" style="color:#6E6E73;" title="X">
<svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-4.714-6.231-5.401 6.231H2.746l7.73-8.835L1.254 2.25H8.08l4.253 5.622 5.912-5.622Zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>
</a>
</div>
</div>
<!-- Company Info Row -->
<div style="display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:16px;">
<div>
<div style="font-size:12px;color:#86868B;line-height:1.6;">
<strong style="color:#0A0A0A;">Landvex Inc.</strong> · Houston, Texas · USA<br>
<strong style="color:#0A0A0A;">Landvex AB</strong> · Org.nr 559141-7042 · Tyresö, Sweden · EU<br>
<a href="mailto:contact@landvex.com" style="color:#86868B;text-decoration:none;">contact@landvex.com</a> ·
<a href="mailto:security@landvex.com" style="color:#86868B;text-decoration:none;">security@landvex.com</a>
</div>
<div style="font-size:11px;color:#86868B;margin-top:8px;line-height:1.5;">
Field data powered by <a href="https://www.quixzoom.com" style="color:#86868B;text-decoration:underline;">quiXzoom</a> ·
<a href="/data-lineage/" style="color:#86868B;text-decoration:underline;">Data Lineage</a> ·
<a href="/subprocessors/" style="color:#86868B;text-decoration:underline;">Sub-processors</a> ·
<a href="/methodology/" style="color:#86868B;text-decoration:underline;">Methodology</a>
</div>
</div>
<div style="font-size:12px;color:#86868B;">
© 2026 Landvex Inc / Landvex AB. All rights reserved.
</div>
</div>
</div>
</div>
</footer>
<script>
Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

@@ -0,0 +1,2 @@
import{a as m,o as x,n as p,j as e,L as h,aX as i,t as j,x as r,af as g,ag as u,aj as f,y as a,M as N}from"./index-4raZdHhl.js";import{R as b}from"./ROICalculator-B6e607hM.js";import{A as v}from"./arrow-left-DYs052F3.js";import{T as t}from"./trending-up-DdnDBoTo.js";import{I as w}from"./image-BGgGtVzJ.js";import{E as y}from"./eye-sqjG5ACi.js";import"./badge-BPKjF9yI.js";import"./select-RNODx0yH.js";import"./chevron-down-Cer5UTvx.js";import"./check-_HnxN-f7.js";import"./index-BwaE_Z5U.js";import"./megaphone-3l9pZop2.js";const z=()=>{const{t:s}=m(),{user:d,isLoading:c}=x(),{ordererProfile:n,isLoading:l,isActiveOrderer:o}=p();return c||l?e.jsx("div",{className:"min-h-screen bg-background flex items-center justify-center",children:e.jsx(h,{className:"w-8 h-8 animate-spin text-primary"})}):d?!n||!o?e.jsx(i,{to:"/orderer/dashboard",replace:!0}):e.jsxs("div",{className:"min-h-screen bg-background text-foreground p-6",children:[e.jsxs("div",{className:"flex items-center gap-4 mb-6",children:[e.jsx(j,{variant:"ghost",size:"icon",onClick:()=>window.close(),children:e.jsx(v,{className:"w-5 h-5"})}),e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl font-bold flex items-center gap-2",children:[e.jsx(t,{className:"w-6 h-6 text-primary"}),"Ads"]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Kampanjplanering och ROI-beräkning"})]})]}),e.jsxs("div",{className:"grid gap-6 lg:grid-cols-2",children:[e.jsxs(r,{className:"glass-card",children:[e.jsxs(g,{children:[e.jsxs(u,{className:"flex items-center gap-2",children:[e.jsx(t,{className:"w-5 h-5 text-primary"}),s("orderer.ads.title")]}),e.jsx(f,{children:s("orderer.ads.description")})]}),e.jsx(a,{className:"space-y-4",children:e.jsxs("div",{className:"grid gap-3",children:[e.jsx(r,{className:"bg-secondary/30",children:e.jsxs(a,{className:"p-4 flex items-center gap-4",children:[e.jsx(w,{className:"w-8 h-8 text-primary"}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium",children:s("orderer.ads.brandAwareness")}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s("orderer.ads.brandAwarenessDesc")})]})]})}),e.jsx(r,{className:"bg-secondary/30",children:e.jsxs(a,{className:"p-4 flex items-center gap-4",children:[e.jsx(N,{className:"w-8 h-8 text-accent"}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium",children:s("orderer.ads.localPresence")}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s("orderer.ads.localPresenceDesc")})]})]})}),e.jsx(r,{className:"bg-secondary/30",children:e.jsxs(a,{className:"p-4 flex items-center gap-4",children:[e.jsx(y,{className:"w-8 h-8 text-warning"}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium",children:s("orderer.ads.impressions")}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s("orderer.ads.impressionsDesc")})]})]})})]})})]}),e.jsx("div",{className:"lg:col-span-1",children:e.jsx(b,{})})]})]}):e.jsx(i,{to:"/auth",replace:!0})};export{z as default};
//# sourceMappingURL=AdsPopout-BCZ9aS54.js.map
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,2 @@
import{j as e,b9 as t,t as r}from"./index-4raZdHhl.js";import{A as s}from"./arrow-left-DYs052F3.js";const a=()=>e.jsxs("div",{className:"min-h-screen bg-background",children:[e.jsx("header",{className:"sticky top-0 z-50 bg-background/80 backdrop-blur-md border-b border-border",children:e.jsxs("div",{className:"container flex items-center gap-4 h-14 px-4",children:[e.jsx(t,{to:"/",children:e.jsx(r,{variant:"ghost",size:"icon",className:"shrink-0",children:e.jsx(s,{className:"w-5 h-5"})})}),e.jsx("h1",{className:"font-semibold truncate",children:"Integritetspolicy"})]})}),e.jsx("main",{className:"container max-w-2xl pb-20 px-4 pt-6",children:e.jsxs("div",{className:"space-y-6 text-sm text-foreground/90 leading-relaxed",children:[e.jsxs("section",{children:[e.jsx("h2",{className:"text-lg font-semibold mb-2",children:"1. Introduktion"}),e.jsx("p",{className:"text-muted-foreground",children:"Denna integritetspolicy beskriver hur quiXzoom samlar in, använder och skyddar dina personuppgifter. Policyn uppdateras löpande och den senaste versionen finns alltid tillgänglig här."})]}),e.jsxs("section",{children:[e.jsx("h2",{className:"text-lg font-semibold mb-2",children:"2. Biometrisk data (GDPR Art. 9)"}),e.jsx("p",{className:"text-muted-foreground",children:"För identitetsverifiering samlar vi in foto på ditt ID-handling samt selfie för ansiktsmatchning. Detta utgör biometrisk data enligt GDPR artikel 9. Rättslig grund: ditt uttryckliga samtycke (GDPR Art. 9.2.a). Bilderna raderas automatiskt efter 30 dagar. Endast verifieringsresultatet (godkänd/nekad) sparas längre."})]}),e.jsxs("section",{children:[e.jsx("h2",{className:"text-lg font-semibold mb-2",children:"3. Ansvarig för personuppgifter"}),e.jsx("p",{className:"text-muted-foreground",children:"LandveX AB (org.nr 559141-7042) är personuppgiftsansvarig. Kontakt: support@quixzoom.com"})]}),e.jsxs("section",{children:[e.jsx("h2",{className:"text-lg font-semibold mb-2",children:"4. Dina rättigheter"}),e.jsx("p",{className:"text-muted-foreground",children:"Du har rätt att begära tillgång till, rättelse, radering eller begränsning av behandlingen av dina personuppgifter. Du kan när som helst återkalla ditt samtycke till biometrisk insamling via dina kontoinställningar."})]}),e.jsx("div",{className:"bg-amber-500/10 border border-amber-500/30 rounded-lg p-4 mt-8",children:e.jsx("p",{className:"text-amber-700 dark:text-amber-400 text-sm font-medium",children:"Fullständig integritetspolicy under upparbetning. Komplett version publiceras inom kort."})})]})})]});export{a as default};
//# sourceMappingURL=Integritetspolicy-C04nIJkj.js.map
@@ -0,0 +1 @@
{"version":3,"file":"Integritetspolicy-C04nIJkj.js","sources":["../../src/pages/Integritetspolicy.tsx"],"sourcesContent":["import { ArrowLeft } from 'lucide-react';\nimport { Link } from 'react-router-dom';\nimport { Button } from '@/components/ui/button';\n\nconst Integritetspolicy = () => {\n return (\n <div className=\"min-h-screen bg-background\">\n <header className=\"sticky top-0 z-50 bg-background/80 backdrop-blur-md border-b border-border\">\n <div className=\"container flex items-center gap-4 h-14 px-4\">\n <Link to=\"/\">\n <Button variant=\"ghost\" size=\"icon\" className=\"shrink-0\">\n <ArrowLeft className=\"w-5 h-5\" />\n </Button>\n </Link>\n <h1 className=\"font-semibold truncate\">Integritetspolicy</h1>\n </div>\n </header>\n\n <main className=\"container max-w-2xl pb-20 px-4 pt-6\">\n <div className=\"space-y-6 text-sm text-foreground/90 leading-relaxed\">\n <section>\n <h2 className=\"text-lg font-semibold mb-2\">1. Introduktion</h2>\n <p className=\"text-muted-foreground\">\n Denna integritetspolicy beskriver hur quiXzoom samlar in, använder och skyddar dina personuppgifter.\n Policyn uppdateras löpande och den senaste versionen finns alltid tillgänglig här.\n </p>\n </section>\n\n <section>\n <h2 className=\"text-lg font-semibold mb-2\">2. Biometrisk data (GDPR Art. 9)</h2>\n <p className=\"text-muted-foreground\">\n För identitetsverifiering samlar vi in foto på ditt ID-handling samt selfie för ansiktsmatchning.\n Detta utgör biometrisk data enligt GDPR artikel 9. Rättslig grund: ditt uttryckliga samtycke\n (GDPR Art. 9.2.a). Bilderna raderas automatiskt efter 30 dagar. Endast verifieringsresultatet\n (godkänd/nekad) sparas längre.\n </p>\n </section>\n\n <section>\n <h2 className=\"text-lg font-semibold mb-2\">3. Ansvarig för personuppgifter</h2>\n <p className=\"text-muted-foreground\">\n LandveX AB (org.nr 559141-7042) är personuppgiftsansvarig.\n Kontakt: support@quixzoom.com\n </p>\n </section>\n\n <section>\n <h2 className=\"text-lg font-semibold mb-2\">4. Dina rättigheter</h2>\n <p className=\"text-muted-foreground\">\n Du har rätt att begära tillgång till, rättelse, radering eller begränsning av behandlingen av\n dina personuppgifter. Du kan när som helst återkalla ditt samtycke till biometrisk insamling\n via dina kontoinställningar.\n </p>\n </section>\n\n <div className=\"bg-amber-500/10 border border-amber-500/30 rounded-lg p-4 mt-8\">\n <p className=\"text-amber-700 dark:text-amber-400 text-sm font-medium\">\n Fullständig integritetspolicy under upparbetning. Komplett version publiceras inom kort.\n </p>\n </div>\n </div>\n </main>\n </div>\n );\n};\n\nexport default Integritetspolicy;\n"],"names":["Integritetspolicy","jsxs","jsx","Link","Button","ArrowLeft"],"mappings":"oGAIA,MAAMA,EAAoB,IAEtBC,EAAAA,KAAC,MAAA,CAAI,UAAU,6BACb,SAAA,CAAAC,EAAAA,IAAC,UAAO,UAAU,6EAChB,SAAAD,EAAAA,KAAC,MAAA,CAAI,UAAU,8CACb,SAAA,CAAAC,MAACC,GAAK,GAAG,IACP,SAAAD,EAAAA,IAACE,EAAA,CAAO,QAAQ,QAAQ,KAAK,OAAO,UAAU,WAC5C,SAAAF,MAACG,EAAA,CAAU,UAAU,SAAA,CAAU,EACjC,EACF,EACAH,EAAAA,IAAC,KAAA,CAAG,UAAU,yBAAyB,SAAA,mBAAA,CAAiB,CAAA,CAAA,CAC1D,CAAA,CACF,QAEC,OAAA,CAAK,UAAU,sCACd,SAAAD,EAAAA,KAAC,MAAA,CAAI,UAAU,uDACb,SAAA,CAAAA,OAAC,UAAA,CACC,SAAA,CAAAC,EAAAA,IAAC,KAAA,CAAG,UAAU,6BAA6B,SAAA,kBAAe,EAC1DA,EAAAA,IAAC,IAAA,CAAE,UAAU,wBAAwB,SAAA,yLAAA,CAGrC,CAAA,EACF,SAEC,UAAA,CACC,SAAA,CAAAA,EAAAA,IAAC,KAAA,CAAG,UAAU,6BAA6B,SAAA,mCAAgC,EAC3EA,EAAAA,IAAC,IAAA,CAAE,UAAU,wBAAwB,SAAA,6TAAA,CAKrC,CAAA,EACF,SAEC,UAAA,CACC,SAAA,CAAAA,EAAAA,IAAC,KAAA,CAAG,UAAU,6BAA6B,SAAA,kCAA+B,EAC1EA,EAAAA,IAAC,IAAA,CAAE,UAAU,wBAAwB,SAAA,0FAAA,CAGrC,CAAA,EACF,SAEC,UAAA,CACC,SAAA,CAAAA,EAAAA,IAAC,KAAA,CAAG,UAAU,6BAA6B,SAAA,sBAAmB,EAC9DA,EAAAA,IAAC,IAAA,CAAE,UAAU,wBAAwB,SAAA,yNAAA,CAIrC,CAAA,EACF,EAEAA,EAAAA,IAAC,OAAI,UAAU,iEACb,eAAC,IAAA,CAAE,UAAU,yDAAyD,SAAA,0FAAA,CAEtE,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACF,CAAA,EACF"}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,2 @@
import{a0 as r,r as s,j as e}from"./index-4raZdHhl.js";const o=()=>{const t=r();return s.useEffect(()=>{console.error("404 Error: User attempted to access non-existent route:",t.pathname)},[t.pathname]),e.jsx("div",{className:"flex min-h-screen items-center justify-center bg-muted",children:e.jsxs("div",{className:"text-center",children:[e.jsx("h1",{className:"mb-4 text-4xl font-bold",children:"404"}),e.jsx("p",{className:"mb-4 text-xl text-muted-foreground",children:"Oops! Page not found"}),e.jsx("a",{href:"/",className:"text-primary underline hover:text-primary/90",children:"Return to Home"})]})})};export{o as default};
//# sourceMappingURL=NotFound-V7w-wg5A.js.map
@@ -0,0 +1 @@
{"version":3,"file":"NotFound-V7w-wg5A.js","sources":["../../src/pages/NotFound.tsx"],"sourcesContent":["import { useLocation } from \"react-router-dom\";\nimport { useEffect } from \"react\";\n\nconst NotFound = () => {\n const location = useLocation();\n\n useEffect(() => {\n console.error(\"404 Error: User attempted to access non-existent route:\", location.pathname);\n }, [location.pathname]);\n\n return (\n <div className=\"flex min-h-screen items-center justify-center bg-muted\">\n <div className=\"text-center\">\n <h1 className=\"mb-4 text-4xl font-bold\">404</h1>\n <p className=\"mb-4 text-xl text-muted-foreground\">Oops! Page not found</p>\n <a href=\"/\" className=\"text-primary underline hover:text-primary/90\">\n Return to Home\n </a>\n </div>\n </div>\n );\n};\n\nexport default NotFound;\n"],"names":["NotFound","location","useLocation","useEffect","jsxs","jsx"],"mappings":"uDAGA,MAAMA,EAAW,IAAM,CACrB,MAAMC,EAAWC,EAAA,EAEjBC,OAAAA,EAAAA,UAAU,IAAM,CACd,QAAQ,MAAM,0DAA2DF,EAAS,QAAQ,CAC5F,EAAG,CAACA,EAAS,QAAQ,CAAC,QAGnB,MAAA,CAAI,UAAU,yDACb,SAAAG,EAAAA,KAAC,MAAA,CAAI,UAAU,cACb,SAAA,CAAAC,EAAAA,IAAC,KAAA,CAAG,UAAU,0BAA0B,SAAA,MAAG,EAC3CA,EAAAA,IAAC,IAAA,CAAE,UAAU,qCAAqC,SAAA,uBAAoB,QACrE,IAAA,CAAE,KAAK,IAAI,UAAU,+CAA+C,SAAA,gBAAA,CAErE,CAAA,CAAA,CACF,CAAA,CACF,CAEJ"}
@@ -0,0 +1,2 @@
import{u as w,a as b,o as v,aO as k,j as e,aw as l,am as n,t as d,x as t,y as i,M as o,E as C,B as x}from"./index-4raZdHhl.js";import{f as L,s as B,e as _,d as A}from"./sv-KqUX0hpM.js";const M=r=>{switch(r){case"de":return A;case"en":return _;default:return B}};function S(){const r=w(),{t:a,i18n:u}=b(),{user:h,isLoading:p}=v(),{notifications:c,isLoading:f,markAsRead:g}=k(),j=M(u.language);if(p)return e.jsxs("div",{className:"min-h-screen bg-background p-4",children:[e.jsx(l,{className:"h-12 w-full mb-4"}),e.jsx(l,{className:"h-20 w-full mb-2"}),e.jsx(l,{className:"h-20 w-full"})]});if(!h)return e.jsxs("div",{className:"min-h-screen bg-background pb-24",children:[e.jsxs("div",{className:"bg-gradient-to-br from-primary to-primary/80 text-primary-foreground p-6 pt-[calc(env(safe-area-inset-top)+1.5rem)]",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[e.jsx(n,{className:"h-6 w-6 text-primary-foreground"}),e.jsx("h1",{className:"text-2xl font-bold",children:a("notifications.title")})]}),e.jsx("p",{className:"text-primary-foreground/70 text-sm",children:a("notifications.keepTrack")}),e.jsx(d,{className:"w-full mt-4 bg-primary-foreground text-primary hover:bg-primary-foreground/90",onClick:()=>r("/auth"),children:a("auth.login","Logga in")})]}),e.jsxs("div",{className:"p-4 space-y-3",children:[e.jsx(t,{className:"opacity-60",children:e.jsxs(i,{className:"p-4 flex items-start gap-3",children:[e.jsx("div",{className:"h-10 w-10 rounded-full bg-primary/10 flex items-center justify-center flex-shrink-0",children:e.jsx(o,{className:"h-5 w-5 text-primary"})}),e.jsxs("div",{className:"flex-1",children:[e.jsx("p",{className:"font-medium text-muted-foreground",children:a("notifications.newNearby")}),e.jsx("p",{className:"text-sm text-muted-foreground/60 mt-1",children:a("notifications.previewMission")})]})]})}),e.jsx(t,{className:"opacity-40",children:e.jsxs(i,{className:"p-4 flex items-start gap-3",children:[e.jsx("div",{className:"h-10 w-10 rounded-full bg-green-500/10 flex items-center justify-center flex-shrink-0",children:e.jsx(C,{className:"h-5 w-5 text-green-500"})}),e.jsxs("div",{className:"flex-1",children:[e.jsx("p",{className:"font-medium text-muted-foreground",children:a("notifications.previewApproved")}),e.jsx("p",{className:"text-sm text-muted-foreground/60 mt-1",children:a("notifications.previewReward")})]})]})}),e.jsx(t,{className:"border-primary/30 bg-primary/5 hidden",children:e.jsxs(i,{className:"p-6 text-center",children:[e.jsx("p",{className:"text-muted-foreground mb-4",children:a("notifications.loginToSee")}),e.jsx(d,{onClick:()=>r("/auth"),className:"w-full",children:a("auth.login")})]})})]}),e.jsx(x,{})]});const N=s=>{switch(s){case"new_mission":return e.jsx(o,{className:"h-5 w-5 text-primary"});default:return e.jsx(n,{className:"h-5 w-5 text-muted-foreground"})}},y=async s=>{var m;s.read||await g(s.id),s.type==="new_mission"&&((m=s.data)!=null&&m.mission_id)&&r(`/mission/${s.data.mission_id}`)};return e.jsxs("div",{className:"min-h-screen bg-background pb-24",children:[e.jsx("div",{className:"p-4 pt-[calc(env(safe-area-inset-top)+1rem)] space-y-3",children:f?[1,2,3].map(s=>e.jsx(l,{className:"h-20 w-full"},s)):c.length===0?e.jsx(t,{className:"mt-8",children:e.jsxs(i,{className:"p-8 text-center",children:[e.jsx(n,{className:"h-12 w-12 mx-auto text-muted-foreground mb-3"}),e.jsx("p",{className:"text-muted-foreground",children:a("notifications.empty")})]})}):c.map(s=>e.jsx(t,{className:`cursor-pointer transition-colors ${s.read?"":"bg-primary/5 border-primary/20"}`,onClick:()=>y(s),children:e.jsxs(i,{className:"p-4 flex items-start gap-3",children:[e.jsx("div",{className:"h-10 w-10 rounded-full bg-primary/10 flex items-center justify-center flex-shrink-0",children:N(s.type)}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsx("p",{className:`font-medium ${s.read?"text-muted-foreground":"text-foreground"}`,children:s.title}),!s.read&&e.jsx("div",{className:"h-2 w-2 rounded-full bg-primary flex-shrink-0 mt-2"})]}),s.message&&e.jsx("p",{className:"text-sm text-muted-foreground line-clamp-2 mt-1",children:s.message}),e.jsx("p",{className:"text-xs text-muted-foreground/60 mt-2",children:L(new Date(s.created_at),"PPp",{locale:j})})]})]})},s.id))}),e.jsx(x,{})]})}export{S as default};
//# sourceMappingURL=Notifications-DI6Yfwlb.js.map
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,2 @@
import{u as g,aP as f,r as c,j as e,x as m,y as x,I as j,t as h,L as N,v as w,an as C,D as b}from"./index-4raZdHhl.js";import{Q as v}from"./qr-code-DcR1IDg8.js";import{C as k}from"./circle-check-Uir7jLAa.js";import{C as y}from"./circle-alert-Bn3q8rDA.js";function R(){var d,u;g();const[p]=f(),[t,l]=c.useState(p.get("code")??""),[n,o]=c.useState(!1),[a,r]=c.useState(null),i=async()=>{if(!t.trim()){w.error("Ange kupongkod");return}o(!0),r(null);try{const s=await C(`/vouchers?code=${t.trim().toLowerCase()}`);if(!s){r({success:!1,error:"Kupong hittades inte"});return}if(s.status==="redeemed"){r({success:!1,error:"Kupongen är redan inlöst"});return}if(s.status==="expired"||new Date(s.expires_at)<new Date){r({success:!1,error:"Kupongen har gått ut"});return}await b(`/vouchers/${s.id}`,{status:"redeemed",redeemed_at:new Date().toISOString()}),r({success:!0,voucher:{title:s.title,brand:s.orderer_brand??"",user_id:s.user_id}})}catch(s){r({success:!1,error:s.message})}finally{o(!1)}};return e.jsx("div",{className:"min-h-screen bg-background flex items-center justify-center p-4",children:e.jsxs("div",{className:"w-full max-w-sm space-y-4",children:[e.jsxs("div",{className:"text-center",children:[e.jsx(v,{className:"w-12 h-12 text-primary mx-auto mb-2"}),e.jsx("h1",{className:"text-2xl font-bold",children:"Lös in kupong"}),e.jsx("p",{className:"text-muted-foreground text-sm",children:"Ange kupongkoden eller scanna QR"})]}),!a&&e.jsx(m,{children:e.jsxs(x,{className:"pt-6 space-y-4",children:[e.jsx(j,{value:t,onChange:s=>l(s.target.value),placeholder:"Kupongkod (t.ex. a3f2b9c1d4e5)",className:"font-mono",onKeyDown:s=>s.key==="Enter"&&i()}),e.jsxs(h,{onClick:i,disabled:n,className:"w-full",children:[n?e.jsx(N,{className:"w-4 h-4 mr-2 animate-spin"}):null,n?"Verifierar...":"Lös in"]})]})}),a&&e.jsx(m,{className:a.success?"border-green-500/50 bg-green-500/10":"border-red-500/50 bg-red-500/10",children:e.jsxs(x,{className:"pt-6 text-center space-y-3",children:[a.success?e.jsx(k,{className:"w-16 h-16 text-green-500 mx-auto"}):e.jsx(y,{className:"w-12 h-12 text-red-500 mx-auto"}),e.jsxs("div",{children:[e.jsx("h2",{className:"font-semibold text-lg",children:a.success?"Inlöst!":"Fel"}),a.success?e.jsxs("p",{className:"text-sm text-muted-foreground",children:[(d=a.voucher)==null?void 0:d.title," — ",(u=a.voucher)==null?void 0:u.brand]}):e.jsx("p",{className:"text-sm text-red-600",children:a.error})]}),e.jsx(h,{onClick:()=>{r(null),l("")},variant:"outline",className:"w-full",children:a.success?"Nästa kupong":"Försök igen"})]})})]})})}export{R as default};
//# sourceMappingURL=RedeemVoucher-BZ3Lf9He.js.map
File diff suppressed because one or more lines are too long
@@ -0,0 +1,2 @@
import{u as F,aP as K,r as t,v as o,j as e,p as h,t as w,q as g,s as y,I as j}from"./index-4raZdHhl.js";import{C as R}from"./circle-check-Uir7jLAa.js";import{s as B,E as v}from"./types-CFveQdRf.js";import{E as N}from"./eye-sqjG5ACi.js";const J=()=>{const n=F(),[b]=K(),l=b.get("token"),[c,k]=t.useState(""),[f,P]=t.useState(""),[d,S]=t.useState(!1),[m,C]=t.useState(!1),[p,x]=t.useState(!1),[E,L]=t.useState(!0),[T,q]=t.useState(!1),[O,$]=t.useState(!1),[r,u]=t.useState({}),z=B().min(6,"Lösenordet måste vara minst 6 tecken");t.useEffect(()=>{if(!l){o.error("Ogiltig eller saknad återställningslänk"),n("/auth");return}async function s(){try{const i=await(await fetch(`https://api.quixzoom.com/api/qz/auth/reset-password/verify?token=${l}`)).json();i.ok?q(!0):(o.error(i.error||"Länken har gått ut eller är ogiltig"),setTimeout(()=>n("/auth"),2e3))}catch{o.error("Kunde inte verifiera länken"),setTimeout(()=>n("/auth"),2e3)}finally{L(!1)}}s()},[l,n]);const V=()=>{const s={},a=z.safeParse(c);return a.success||(s.password=a.error.errors[0].message),c!==f&&(s.confirmPassword="Lösenorden matchar inte"),u(s),Object.keys(s).length===0},D=async s=>{if(s.preventDefault(),!!V()){x(!0);try{const i=await(await fetch("https://api.quixzoom.com/api/qz/auth/reset-password",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:l,newPassword:c})})).json();i.ok?($(!0),o.success("Lösenordet har uppdaterats!")):o.error(i.error||"Kunde inte uppdatera lösenordet")}catch{o.error("Kunde inte ansluta till servern")}finally{x(!1)}}};return E?e.jsx("div",{className:"min-h-screen bg-background flex items-center justify-center",children:e.jsx("div",{className:"animate-pulse text-muted-foreground",children:"Verifierar länk..."})}):O?e.jsx("div",{className:"min-h-screen bg-background flex flex-col items-center justify-center p-4",children:e.jsxs(h.div,{initial:{opacity:0,scale:.9},animate:{opacity:1,scale:1},className:"text-center space-y-4",children:[e.jsx(R,{className:"w-16 h-16 text-green-500 mx-auto"}),e.jsx("h1",{className:"text-2xl font-bold",children:"Lösenordet uppdaterat!"}),e.jsx("p",{className:"text-muted-foreground",children:"Du kan nu logga in med ditt nya lösenord."}),e.jsx(w,{onClick:()=>n("/auth"),className:"w-full max-w-sm",children:"Gå till inloggning"})]})}):T?e.jsxs("div",{className:"min-h-screen bg-background flex flex-col",children:[e.jsxs("div",{className:"bg-gradient-to-br from-primary to-primary/80 text-primary-foreground p-6 pt-[calc(env(safe-area-inset-top)+1.5rem)]",children:[e.jsx("h1",{className:"text-2xl font-bold",children:"Välj nytt lösenord"}),e.jsx("p",{className:"text-primary-foreground/70 text-sm mt-1",children:"Ange ett nytt säkert lösenord för ditt konto."})]}),e.jsx("main",{className:"flex-1 flex items-center justify-center px-4",children:e.jsx(h.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4},className:"w-full max-w-sm",children:e.jsxs("form",{onSubmit:D,className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(g,{htmlFor:"password",className:"text-sm text-muted-foreground",children:"Nytt lösenord"}),e.jsxs("div",{className:"relative",children:[e.jsx(y,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground"}),e.jsx(j,{id:"password",type:d?"text":"password",placeholder:"••••••••",value:c,onChange:s=>{k(s.target.value),r.password&&u(a=>({...a,password:void 0}))},className:`pl-10 pr-10 ${r.password?"border-destructive":""}`}),e.jsx("button",{type:"button",onClick:()=>S(!d),className:"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",children:d?e.jsx(v,{className:"w-4 h-4"}):e.jsx(N,{className:"w-4 h-4"})})]}),r.password&&e.jsx("p",{className:"text-xs text-destructive",children:r.password})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(g,{htmlFor:"confirmPassword",className:"text-sm text-muted-foreground",children:"Bekräfta nytt lösenord"}),e.jsxs("div",{className:"relative",children:[e.jsx(y,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground"}),e.jsx(j,{id:"confirmPassword",type:m?"text":"password",placeholder:"••••••••",value:f,onChange:s=>{P(s.target.value),r.confirmPassword&&u(a=>({...a,confirmPassword:void 0}))},className:`pl-10 pr-10 ${r.confirmPassword?"border-destructive":""}`}),e.jsx("button",{type:"button",onClick:()=>C(!m),className:"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",children:m?e.jsx(v,{className:"w-4 h-4"}):e.jsx(N,{className:"w-4 h-4"})})]}),r.confirmPassword&&e.jsx("p",{className:"text-xs text-destructive",children:r.confirmPassword})]}),e.jsx(w,{type:"submit",className:"w-full",disabled:p,children:p?"Uppdaterar...":"Uppdatera lösenord"})]})})})]}):null};export{J as default};
//# sourceMappingURL=ResetPassword-D158S-ZO.js.map
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,2 @@
import{j as e,b9 as r,t as a}from"./index-4raZdHhl.js";import{A as t}from"./arrow-left-DYs052F3.js";const i=()=>e.jsxs("div",{className:"min-h-screen bg-background",children:[e.jsx("header",{className:"sticky top-0 z-50 bg-background/80 backdrop-blur-md border-b border-border",children:e.jsxs("div",{className:"container flex items-center gap-4 h-14 px-4",children:[e.jsx(r,{to:"/",children:e.jsx(a,{variant:"ghost",size:"icon",className:"shrink-0",children:e.jsx(t,{className:"w-5 h-5"})})}),e.jsx("h1",{className:"font-semibold truncate",children:"Användarvillkor"})]})}),e.jsx("main",{className:"container max-w-2xl pb-20 px-4 pt-6",children:e.jsxs("div",{className:"space-y-6 text-sm text-foreground/90 leading-relaxed",children:[e.jsxs("section",{children:[e.jsx("h2",{className:"text-lg font-semibold mb-2",children:"1. Allmänna villkor"}),e.jsx("p",{className:"text-muted-foreground",children:"Välkommen till quiXzoom. Genom att använda vår tjänst godkänner du dessa villkor. Tjänsten tillhandahålls av LandveX AB (org.nr 559141-7042)."})]}),e.jsxs("section",{children:[e.jsx("h2",{className:"text-lg font-semibold mb-2",children:"2. Tjänsten"}),e.jsx("p",{className:"text-muted-foreground",children:'quiXzoom är en plattform för crowdsourcad fältdatainsamling. Användare ("Zoomers") kan fotografera uppdrag nära sig och tjäna krediter. Organisationer kan beställa datainsamling via plattformen.'})]}),e.jsxs("section",{children:[e.jsx("h2",{className:"text-lg font-semibold mb-2",children:"3. Krediter och utbetalningar"}),e.jsx("p",{className:"text-muted-foreground",children:"Krediter är in-app valuta och har inget garanterat monetärt värde förrän de konverteras vid uttag. Minsta uttag är 250 krediter. En plattformsavgift på 15% tillämpas vid uttag. Utbetalningar sker via Stripe Connect."})]}),e.jsxs("section",{children:[e.jsx("h2",{className:"text-lg font-semibold mb-2",children:"4. Identitetsverifiering"}),e.jsx("p",{className:"text-muted-foreground",children:"För att ta uppdrag krävs identitetsverifiering. Du måste vara minst 18 år och ha legal handlingsförmåga. Verifieringen innebär insamling av biometrisk data enligt separat samtycke."})]}),e.jsx("div",{className:"bg-amber-500/10 border border-amber-500/30 rounded-lg p-4 mt-8",children:e.jsx("p",{className:"text-amber-700 dark:text-amber-400 text-sm font-medium",children:"Fullständiga användarvillkor under upparbetning. Komplett version publiceras inom kort."})})]})})]});export{i as default};
//# sourceMappingURL=Villkor-CjStefVa.js.map
@@ -0,0 +1 @@
{"version":3,"file":"Villkor-CjStefVa.js","sources":["../../src/pages/Villkor.tsx"],"sourcesContent":["import { ArrowLeft } from 'lucide-react';\nimport { Link } from 'react-router-dom';\nimport { Button } from '@/components/ui/button';\n\nconst Villkor = () => {\n return (\n <div className=\"min-h-screen bg-background\">\n <header className=\"sticky top-0 z-50 bg-background/80 backdrop-blur-md border-b border-border\">\n <div className=\"container flex items-center gap-4 h-14 px-4\">\n <Link to=\"/\">\n <Button variant=\"ghost\" size=\"icon\" className=\"shrink-0\">\n <ArrowLeft className=\"w-5 h-5\" />\n </Button>\n </Link>\n <h1 className=\"font-semibold truncate\">Användarvillkor</h1>\n </div>\n </header>\n\n <main className=\"container max-w-2xl pb-20 px-4 pt-6\">\n <div className=\"space-y-6 text-sm text-foreground/90 leading-relaxed\">\n <section>\n <h2 className=\"text-lg font-semibold mb-2\">1. Allmänna villkor</h2>\n <p className=\"text-muted-foreground\">\n Välkommen till quiXzoom. Genom att använda vår tjänst godkänner du dessa villkor.\n Tjänsten tillhandahålls av LandveX AB (org.nr 559141-7042).\n </p>\n </section>\n\n <section>\n <h2 className=\"text-lg font-semibold mb-2\">2. Tjänsten</h2>\n <p className=\"text-muted-foreground\">\n quiXzoom är en plattform för crowdsourcad fältdatainsamling. Användare (\"Zoomers\") kan\n fotografera uppdrag nära sig och tjäna krediter. Organisationer kan beställa\n datainsamling via plattformen.\n </p>\n </section>\n\n <section>\n <h2 className=\"text-lg font-semibold mb-2\">3. Krediter och utbetalningar</h2>\n <p className=\"text-muted-foreground\">\n Krediter är in-app valuta och har inget garanterat monetärt värde förrän de konverteras\n vid uttag. Minsta uttag är 250 krediter. En plattformsavgift på 15% tillämpas vid uttag.\n Utbetalningar sker via Stripe Connect.\n </p>\n </section>\n\n <section>\n <h2 className=\"text-lg font-semibold mb-2\">4. Identitetsverifiering</h2>\n <p className=\"text-muted-foreground\">\n För att ta uppdrag krävs identitetsverifiering. Du måste vara minst 18 år och ha\n legal handlingsförmåga. Verifieringen innebär insamling av biometrisk data enligt\n separat samtycke.\n </p>\n </section>\n\n <div className=\"bg-amber-500/10 border border-amber-500/30 rounded-lg p-4 mt-8\">\n <p className=\"text-amber-700 dark:text-amber-400 text-sm font-medium\">\n Fullständiga användarvillkor under upparbetning. Komplett version publiceras inom kort.\n </p>\n </div>\n </div>\n </main>\n </div>\n );\n};\n\nexport default Villkor;\n"],"names":["Villkor","jsxs","jsx","Link","Button","ArrowLeft"],"mappings":"oGAIA,MAAMA,EAAU,IAEZC,EAAAA,KAAC,MAAA,CAAI,UAAU,6BACb,SAAA,CAAAC,EAAAA,IAAC,UAAO,UAAU,6EAChB,SAAAD,EAAAA,KAAC,MAAA,CAAI,UAAU,8CACb,SAAA,CAAAC,MAACC,GAAK,GAAG,IACP,SAAAD,EAAAA,IAACE,EAAA,CAAO,QAAQ,QAAQ,KAAK,OAAO,UAAU,WAC5C,SAAAF,MAACG,EAAA,CAAU,UAAU,SAAA,CAAU,EACjC,EACF,EACAH,EAAAA,IAAC,KAAA,CAAG,UAAU,yBAAyB,SAAA,iBAAA,CAAe,CAAA,CAAA,CACxD,CAAA,CACF,QAEC,OAAA,CAAK,UAAU,sCACd,SAAAD,EAAAA,KAAC,MAAA,CAAI,UAAU,uDACb,SAAA,CAAAA,OAAC,UAAA,CACC,SAAA,CAAAC,EAAAA,IAAC,KAAA,CAAG,UAAU,6BAA6B,SAAA,sBAAmB,EAC9DA,EAAAA,IAAC,IAAA,CAAE,UAAU,wBAAwB,SAAA,+IAAA,CAGrC,CAAA,EACF,SAEC,UAAA,CACC,SAAA,CAAAA,EAAAA,IAAC,KAAA,CAAG,UAAU,6BAA6B,SAAA,cAAW,EACtDA,EAAAA,IAAC,IAAA,CAAE,UAAU,wBAAwB,SAAA,oMAAA,CAIrC,CAAA,EACF,SAEC,UAAA,CACC,SAAA,CAAAA,EAAAA,IAAC,KAAA,CAAG,UAAU,6BAA6B,SAAA,gCAA6B,EACxEA,EAAAA,IAAC,IAAA,CAAE,UAAU,wBAAwB,SAAA,yNAAA,CAIrC,CAAA,EACF,SAEC,UAAA,CACC,SAAA,CAAAA,EAAAA,IAAC,KAAA,CAAG,UAAU,6BAA6B,SAAA,2BAAwB,EACnEA,EAAAA,IAAC,IAAA,CAAE,UAAU,wBAAwB,SAAA,sLAAA,CAIrC,CAAA,EACF,EAEAA,EAAAA,IAAC,OAAI,UAAU,iEACb,eAAC,IAAA,CAAE,UAAU,yDAAyD,SAAA,yFAAA,CAEtE,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACF,CAAA,EACF"}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,7 @@
import{w as t}from"./index-4raZdHhl.js";/**
* @license lucide-react v0.462.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const c=t("Activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);export{c as A};
//# sourceMappingURL=activity-BCurIeE1.js.map
@@ -0,0 +1 @@
{"version":3,"file":"activity-BCurIeE1.js","sources":["../../node_modules/lucide-react/dist/esm/icons/activity.js"],"sourcesContent":["/**\n * @license lucide-react v0.462.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Activity = createLucideIcon(\"Activity\", [\n [\n \"path\",\n {\n d: \"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2\",\n key: \"169zse\"\n }\n ]\n]);\n\nexport { Activity as default };\n//# sourceMappingURL=activity.js.map\n"],"names":["Activity","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAWC,EAAiB,WAAY,CAC5C,CACE,OACA,CACE,EAAG,6HACH,IAAK,QACX,CACA,CACA,CAAC","x_google_ignoreList":[0]}
Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

@@ -0,0 +1,7 @@
import{w as e}from"./index-4raZdHhl.js";/**
* @license lucide-react v0.462.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const t=e("ArrowLeft",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);export{t as A};
//# sourceMappingURL=arrow-left-DYs052F3.js.map
@@ -0,0 +1 @@
{"version":3,"file":"arrow-left-DYs052F3.js","sources":["../../node_modules/lucide-react/dist/esm/icons/arrow-left.js"],"sourcesContent":["/**\n * @license lucide-react v0.462.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ArrowLeft = createLucideIcon(\"ArrowLeft\", [\n [\"path\", { d: \"m12 19-7-7 7-7\", key: \"1l729n\" }],\n [\"path\", { d: \"M19 12H5\", key: \"x3x0zl\" }]\n]);\n\nexport { ArrowLeft as default };\n//# sourceMappingURL=arrow-left.js.map\n"],"names":["ArrowLeft","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAYC,EAAiB,YAAa,CAC9C,CAAC,OAAQ,CAAE,EAAG,iBAAkB,IAAK,QAAQ,CAAE,EAC/C,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAQ,CAAE,CAC3C,CAAC","x_google_ignoreList":[0]}
@@ -0,0 +1,7 @@
import{w as a}from"./index-4raZdHhl.js";/**
* @license lucide-react v0.462.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const r=a("Award",[["path",{d:"m15.477 12.89 1.515 8.526a.5.5 0 0 1-.81.47l-3.58-2.687a1 1 0 0 0-1.197 0l-3.586 2.686a.5.5 0 0 1-.81-.469l1.514-8.526",key:"1yiouv"}],["circle",{cx:"12",cy:"8",r:"6",key:"1vp47v"}]]);export{r as A};
//# sourceMappingURL=award-DbcAH5xO.js.map
@@ -0,0 +1 @@
{"version":3,"file":"award-DbcAH5xO.js","sources":["../../node_modules/lucide-react/dist/esm/icons/award.js"],"sourcesContent":["/**\n * @license lucide-react v0.462.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Award = createLucideIcon(\"Award\", [\n [\n \"path\",\n {\n d: \"m15.477 12.89 1.515 8.526a.5.5 0 0 1-.81.47l-3.58-2.687a1 1 0 0 0-1.197 0l-3.586 2.686a.5.5 0 0 1-.81-.469l1.514-8.526\",\n key: \"1yiouv\"\n }\n ],\n [\"circle\", { cx: \"12\", cy: \"8\", r: \"6\", key: \"1vp47v\" }]\n]);\n\nexport { Award as default };\n//# sourceMappingURL=award.js.map\n"],"names":["Award","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAQC,EAAiB,QAAS,CACtC,CACE,OACA,CACE,EAAG,yHACH,IAAK,QACX,CACA,EACE,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,IAAK,EAAG,IAAK,IAAK,QAAQ,CAAE,CACzD,CAAC","x_google_ignoreList":[0]}
@@ -0,0 +1,2 @@
import{r as o,j as n,i as s,h as i}from"./index-4raZdHhl.js";const d=i("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}}),u=o.forwardRef(({className:r,variant:e,...t},a)=>n.jsx("div",{ref:a,className:s(d({variant:e}),r),...t}));u.displayName="Badge";export{u as B};
//# sourceMappingURL=badge-BPKjF9yI.js.map
@@ -0,0 +1 @@
{"version":3,"file":"badge-BPKjF9yI.js","sources":["../../src/components/ui/badge.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default: \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary: \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive: \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nconst Badge = React.forwardRef<HTMLDivElement, BadgeProps>(\n ({ className, variant, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n );\n }\n);\nBadge.displayName = \"Badge\";\n\nexport { Badge, badgeVariants };\n"],"names":["badgeVariants","cva","Badge","React.forwardRef","className","variant","props","ref","jsx","cn"],"mappings":"6DAKA,MAAMA,EAAgBC,EACpB,yKACA,CACE,SAAU,CACR,QAAS,CACP,QAAS,4EACT,UAAW,kFACX,YAAa,wFACb,QAAS,iBAAA,CACX,EAEF,gBAAiB,CACf,QAAS,SAAA,CACX,CAEJ,EAMMC,EAAQC,EAAAA,WACZ,CAAC,CAAE,UAAAC,EAAW,QAAAC,EAAS,GAAGC,CAAA,EAASC,IAE/BC,EAAAA,IAAC,MAAA,CACC,IAAAD,EACA,UAAWE,EAAGT,EAAc,CAAE,QAAAK,CAAA,CAAS,EAAGD,CAAS,EAClD,GAAGE,CAAA,CAAA,CAIZ,EACAJ,EAAM,YAAc"}
Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

@@ -0,0 +1,7 @@
import{w as a}from"./index-4raZdHhl.js";/**
* @license lucide-react v0.462.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const e=a("Blocks",[["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["path",{d:"M10 21V8a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1H3",key:"1fpvtg"}]]);export{e as B};
//# sourceMappingURL=blocks-SC6H5wH0.js.map
@@ -0,0 +1 @@
{"version":3,"file":"blocks-SC6H5wH0.js","sources":["../../node_modules/lucide-react/dist/esm/icons/blocks.js"],"sourcesContent":["/**\n * @license lucide-react v0.462.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Blocks = createLucideIcon(\"Blocks\", [\n [\"rect\", { width: \"7\", height: \"7\", x: \"14\", y: \"3\", rx: \"1\", key: \"6d4xhi\" }],\n [\n \"path\",\n {\n d: \"M10 21V8a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1H3\",\n key: \"1fpvtg\"\n }\n ]\n]);\n\nexport { Blocks as default };\n//# sourceMappingURL=blocks.js.map\n"],"names":["Blocks","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAASC,EAAiB,SAAU,CACxC,CAAC,OAAQ,CAAE,MAAO,IAAK,OAAQ,IAAK,EAAG,KAAM,EAAG,IAAK,GAAI,IAAK,IAAK,QAAQ,CAAE,EAC7E,CACE,OACA,CACE,EAAG,8FACH,IAAK,QACX,CACA,CACA,CAAC","x_google_ignoreList":[0]}
@@ -0,0 +1,7 @@
import{w as a}from"./index-4raZdHhl.js";/**
* @license lucide-react v0.462.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const e=a("Building2",[["path",{d:"M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z",key:"1b4qmf"}],["path",{d:"M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2",key:"i71pzd"}],["path",{d:"M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2",key:"10jefs"}],["path",{d:"M10 6h4",key:"1itunk"}],["path",{d:"M10 10h4",key:"tcdvrf"}],["path",{d:"M10 14h4",key:"kelpxr"}],["path",{d:"M10 18h4",key:"1ulq68"}]]);export{e as B};
//# sourceMappingURL=building-2-DSOj3ba3.js.map
@@ -0,0 +1 @@
{"version":3,"file":"building-2-DSOj3ba3.js","sources":["../../node_modules/lucide-react/dist/esm/icons/building-2.js"],"sourcesContent":["/**\n * @license lucide-react v0.462.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Building2 = createLucideIcon(\"Building2\", [\n [\"path\", { d: \"M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z\", key: \"1b4qmf\" }],\n [\"path\", { d: \"M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2\", key: \"i71pzd\" }],\n [\"path\", { d: \"M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2\", key: \"10jefs\" }],\n [\"path\", { d: \"M10 6h4\", key: \"1itunk\" }],\n [\"path\", { d: \"M10 10h4\", key: \"tcdvrf\" }],\n [\"path\", { d: \"M10 14h4\", key: \"kelpxr\" }],\n [\"path\", { d: \"M10 18h4\", key: \"1ulq68\" }]\n]);\n\nexport { Building2 as default };\n//# sourceMappingURL=building-2.js.map\n"],"names":["Building2","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAYC,EAAiB,YAAa,CAC9C,CAAC,OAAQ,CAAE,EAAG,4CAA6C,IAAK,QAAQ,CAAE,EAC1E,CAAC,OAAQ,CAAE,EAAG,0CAA2C,IAAK,QAAQ,CAAE,EACxE,CAAC,OAAQ,CAAE,EAAG,2CAA4C,IAAK,QAAQ,CAAE,EACzE,CAAC,OAAQ,CAAE,EAAG,UAAW,IAAK,QAAQ,CAAE,EACxC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAQ,CAAE,EACzC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAQ,CAAE,EACzC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAQ,CAAE,CAC3C,CAAC","x_google_ignoreList":[0]}
@@ -0,0 +1,7 @@
import{w as e}from"./index-4raZdHhl.js";/**
* @license lucide-react v0.462.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const a=e("Calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]);export{a as C};
//# sourceMappingURL=calendar-8URQt-6X.js.map
@@ -0,0 +1 @@
{"version":3,"file":"calendar-8URQt-6X.js","sources":["../../node_modules/lucide-react/dist/esm/icons/calendar.js"],"sourcesContent":["/**\n * @license lucide-react v0.462.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Calendar = createLucideIcon(\"Calendar\", [\n [\"path\", { d: \"M8 2v4\", key: \"1cmpym\" }],\n [\"path\", { d: \"M16 2v4\", key: \"4m81vk\" }],\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"4\", rx: \"2\", key: \"1hopcy\" }],\n [\"path\", { d: \"M3 10h18\", key: \"8toen8\" }]\n]);\n\nexport { Calendar as default };\n//# sourceMappingURL=calendar.js.map\n"],"names":["Calendar","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAWC,EAAiB,WAAY,CAC5C,CAAC,OAAQ,CAAE,EAAG,SAAU,IAAK,QAAQ,CAAE,EACvC,CAAC,OAAQ,CAAE,EAAG,UAAW,IAAK,QAAQ,CAAE,EACxC,CAAC,OAAQ,CAAE,MAAO,KAAM,OAAQ,KAAM,EAAG,IAAK,EAAG,IAAK,GAAI,IAAK,IAAK,QAAQ,CAAE,EAC9E,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAQ,CAAE,CAC3C,CAAC","x_google_ignoreList":[0]}
@@ -0,0 +1,7 @@
import{w as c}from"./index-4raZdHhl.js";/**
* @license lucide-react v0.462.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const o=c("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);export{o as C};
//# sourceMappingURL=check-_HnxN-f7.js.map
@@ -0,0 +1 @@
{"version":3,"file":"check-_HnxN-f7.js","sources":["../../node_modules/lucide-react/dist/esm/icons/check.js"],"sourcesContent":["/**\n * @license lucide-react v0.462.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Check = createLucideIcon(\"Check\", [[\"path\", { d: \"M20 6 9 17l-5-5\", key: \"1gmf2c\" }]]);\n\nexport { Check as default };\n//# sourceMappingURL=check.js.map\n"],"names":["Check","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAQC,EAAiB,QAAS,CAAC,CAAC,OAAQ,CAAE,EAAG,kBAAmB,IAAK,QAAQ,CAAE,CAAC,CAAC","x_google_ignoreList":[0]}
@@ -0,0 +1,7 @@
import{w as o}from"./index-4raZdHhl.js";/**
* @license lucide-react v0.462.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const n=o("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);export{n as C};
//# sourceMappingURL=chevron-down-Cer5UTvx.js.map
@@ -0,0 +1 @@
{"version":3,"file":"chevron-down-Cer5UTvx.js","sources":["../../node_modules/lucide-react/dist/esm/icons/chevron-down.js"],"sourcesContent":["/**\n * @license lucide-react v0.462.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ChevronDown = createLucideIcon(\"ChevronDown\", [\n [\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]\n]);\n\nexport { ChevronDown as default };\n//# sourceMappingURL=chevron-down.js.map\n"],"names":["ChevronDown","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAcC,EAAiB,cAAe,CAClD,CAAC,OAAQ,CAAE,EAAG,eAAgB,IAAK,QAAQ,CAAE,CAC/C,CAAC","x_google_ignoreList":[0]}
@@ -0,0 +1,7 @@
import{w as t}from"./index-4raZdHhl.js";/**
* @license lucide-react v0.462.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const h=t("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);export{h as C};
//# sourceMappingURL=chevron-right-CH6kzBKw.js.map
@@ -0,0 +1 @@
{"version":3,"file":"chevron-right-CH6kzBKw.js","sources":["../../node_modules/lucide-react/dist/esm/icons/chevron-right.js"],"sourcesContent":["/**\n * @license lucide-react v0.462.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ChevronRight = createLucideIcon(\"ChevronRight\", [\n [\"path\", { d: \"m9 18 6-6-6-6\", key: \"mthhwq\" }]\n]);\n\nexport { ChevronRight as default };\n//# sourceMappingURL=chevron-right.js.map\n"],"names":["ChevronRight","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAeC,EAAiB,eAAgB,CACpD,CAAC,OAAQ,CAAE,EAAG,gBAAiB,IAAK,QAAQ,CAAE,CAChD,CAAC","x_google_ignoreList":[0]}
Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 KiB

@@ -0,0 +1,7 @@
import{w as c}from"./index-4raZdHhl.js";/**
* @license lucide-react v0.462.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const r=c("Circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);export{r as C};
//# sourceMappingURL=circle-BI8jYI7e.js.map
@@ -0,0 +1 @@
{"version":3,"file":"circle-BI8jYI7e.js","sources":["../../node_modules/lucide-react/dist/esm/icons/circle.js"],"sourcesContent":["/**\n * @license lucide-react v0.462.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Circle = createLucideIcon(\"Circle\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }]\n]);\n\nexport { Circle as default };\n//# sourceMappingURL=circle.js.map\n"],"names":["Circle","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAASC,EAAiB,SAAU,CACxC,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,KAAM,IAAK,QAAQ,CAAE,CAC3D,CAAC","x_google_ignoreList":[0]}
@@ -0,0 +1,7 @@
import{w as e}from"./index-4raZdHhl.js";/**
* @license lucide-react v0.462.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const r=e("CircleAlert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);export{r as C};
//# sourceMappingURL=circle-alert-Bn3q8rDA.js.map
@@ -0,0 +1 @@
{"version":3,"file":"circle-alert-Bn3q8rDA.js","sources":["../../node_modules/lucide-react/dist/esm/icons/circle-alert.js"],"sourcesContent":["/**\n * @license lucide-react v0.462.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst CircleAlert = createLucideIcon(\"CircleAlert\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"8\", y2: \"12\", key: \"1pkeuh\" }],\n [\"line\", { x1: \"12\", x2: \"12.01\", y1: \"16\", y2: \"16\", key: \"4dfq90\" }]\n]);\n\nexport { CircleAlert as default };\n//# sourceMappingURL=circle-alert.js.map\n"],"names":["CircleAlert","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAcC,EAAiB,cAAe,CAClD,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,KAAM,IAAK,SAAU,EACzD,CAAC,OAAQ,CAAE,GAAI,KAAM,GAAI,KAAM,GAAI,IAAK,GAAI,KAAM,IAAK,QAAQ,CAAE,EACjE,CAAC,OAAQ,CAAE,GAAI,KAAM,GAAI,QAAS,GAAI,KAAM,GAAI,KAAM,IAAK,QAAQ,CAAE,CACvE,CAAC","x_google_ignoreList":[0]}
@@ -0,0 +1,7 @@
import{w as c}from"./index-4raZdHhl.js";/**
* @license lucide-react v0.462.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const r=c("CircleCheck",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);export{r as C};
//# sourceMappingURL=circle-check-Uir7jLAa.js.map
@@ -0,0 +1 @@
{"version":3,"file":"circle-check-Uir7jLAa.js","sources":["../../node_modules/lucide-react/dist/esm/icons/circle-check.js"],"sourcesContent":["/**\n * @license lucide-react v0.462.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst CircleCheck = createLucideIcon(\"CircleCheck\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"m9 12 2 2 4-4\", key: \"dzmm74\" }]\n]);\n\nexport { CircleCheck as default };\n//# sourceMappingURL=circle-check.js.map\n"],"names":["CircleCheck","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAcC,EAAiB,cAAe,CAClD,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,KAAM,IAAK,SAAU,EACzD,CAAC,OAAQ,CAAE,EAAG,gBAAiB,IAAK,QAAQ,CAAE,CAChD,CAAC","x_google_ignoreList":[0]}
Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

@@ -0,0 +1,7 @@
import{w as c}from"./index-4raZdHhl.js";/**
* @license lucide-react v0.462.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const o=c("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);export{o as C};
//# sourceMappingURL=clock-DccfgOEz.js.map
@@ -0,0 +1 @@
{"version":3,"file":"clock-DccfgOEz.js","sources":["../../node_modules/lucide-react/dist/esm/icons/clock.js"],"sourcesContent":["/**\n * @license lucide-react v0.462.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Clock = createLucideIcon(\"Clock\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"polyline\", { points: \"12 6 12 12 16 14\", key: \"68esgv\" }]\n]);\n\nexport { Clock as default };\n//# sourceMappingURL=clock.js.map\n"],"names":["Clock","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAQC,EAAiB,QAAS,CACtC,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,KAAM,IAAK,SAAU,EACzD,CAAC,WAAY,CAAE,OAAQ,mBAAoB,IAAK,QAAQ,CAAE,CAC5D,CAAC","x_google_ignoreList":[0]}
Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

@@ -0,0 +1,7 @@
import{w as e}from"./index-4raZdHhl.js";/**
* @license lucide-react v0.462.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const t=e("CreditCard",[["rect",{width:"20",height:"14",x:"2",y:"5",rx:"2",key:"ynyp8z"}],["line",{x1:"2",x2:"22",y1:"10",y2:"10",key:"1b3vmo"}]]);export{t as C};
//# sourceMappingURL=credit-card-DxQV59Y2.js.map
@@ -0,0 +1 @@
{"version":3,"file":"credit-card-DxQV59Y2.js","sources":["../../node_modules/lucide-react/dist/esm/icons/credit-card.js"],"sourcesContent":["/**\n * @license lucide-react v0.462.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst CreditCard = createLucideIcon(\"CreditCard\", [\n [\"rect\", { width: \"20\", height: \"14\", x: \"2\", y: \"5\", rx: \"2\", key: \"ynyp8z\" }],\n [\"line\", { x1: \"2\", x2: \"22\", y1: \"10\", y2: \"10\", key: \"1b3vmo\" }]\n]);\n\nexport { CreditCard as default };\n//# sourceMappingURL=credit-card.js.map\n"],"names":["CreditCard","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAaC,EAAiB,aAAc,CAChD,CAAC,OAAQ,CAAE,MAAO,KAAM,OAAQ,KAAM,EAAG,IAAK,EAAG,IAAK,GAAI,IAAK,IAAK,QAAQ,CAAE,EAC9E,CAAC,OAAQ,CAAE,GAAI,IAAK,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,IAAK,QAAQ,CAAE,CACnE,CAAC","x_google_ignoreList":[0]}
@@ -0,0 +1,7 @@
import{w as p}from"./index-4raZdHhl.js";import{t as a,h as i}from"./sv-KqUX0hpM.js";/**
* @license lucide-react v0.462.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const g=p("Trophy",[["path",{d:"M6 9H4.5a2.5 2.5 0 0 1 0-5H6",key:"17hqa7"}],["path",{d:"M18 9h1.5a2.5 2.5 0 0 0 0-5H18",key:"lmptdp"}],["path",{d:"M4 22h16",key:"57wxv0"}],["path",{d:"M10 14.66V17c0 .55-.47.98-.97 1.21C7.85 18.75 7 20.24 7 22",key:"1nw9bq"}],["path",{d:"M14 14.66V17c0 .55.47.98.97 1.21C16.15 18.75 17 20.24 17 22",key:"1np0yb"}],["path",{d:"M18 2H6v7a6 6 0 0 0 12 0V2Z",key:"u46fv3"}]]);function f(e,t){const n=a(e),s=a(t),o=u(n,s),r=Math.abs(i(n,s));n.setDate(n.getDate()-o*r);const l=+(u(n,s)===-o),c=o*(r-l);return c===0?0:c}function u(e,t){const n=e.getFullYear()-t.getFullYear()||e.getMonth()-t.getMonth()||e.getDate()-t.getDate()||e.getHours()-t.getHours()||e.getMinutes()-t.getMinutes()||e.getSeconds()-t.getSeconds()||e.getMilliseconds()-t.getMilliseconds();return n<0?-1:n>0?1:n}export{g as T,f as d};
//# sourceMappingURL=differenceInDays-Co-ljOBR.js.map
File diff suppressed because one or more lines are too long
@@ -0,0 +1,7 @@
import{w as o}from"./index-4raZdHhl.js";/**
* @license lucide-react v0.462.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const a=o("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);export{a as D};
//# sourceMappingURL=download-Dib8aI_6.js.map
@@ -0,0 +1 @@
{"version":3,"file":"download-Dib8aI_6.js","sources":["../../node_modules/lucide-react/dist/esm/icons/download.js"],"sourcesContent":["/**\n * @license lucide-react v0.462.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Download = createLucideIcon(\"Download\", [\n [\"path\", { d: \"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\", key: \"ih7n3h\" }],\n [\"polyline\", { points: \"7 10 12 15 17 10\", key: \"2ggqvy\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"15\", y2: \"3\", key: \"1vk2je\" }]\n]);\n\nexport { Download as default };\n//# sourceMappingURL=download.js.map\n"],"names":["Download","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAWC,EAAiB,WAAY,CAC5C,CAAC,OAAQ,CAAE,EAAG,4CAA6C,IAAK,QAAQ,CAAE,EAC1E,CAAC,WAAY,CAAE,OAAQ,mBAAoB,IAAK,QAAQ,CAAE,EAC1D,CAAC,OAAQ,CAAE,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,GAAI,IAAK,IAAK,QAAQ,CAAE,CACnE,CAAC","x_google_ignoreList":[0]}

Some files were not shown because too many files have changed in this diff Show More