feat(frontend): pagini Termeni, Confidențialitate/GDPR și Contact

Activează linkurile din footer-ul landing-ului către pagini reale,
în stilul paginilor statice din autopass.

- Componentă comună LegalPage.vue: același antet (brand + selector
  de temă), footer și paletă (8 teme) ca landing-ul, cu slot "prose"
- Logica temei extrasă în composable useLandingTheme (partajat de
  landing și paginile legale, persistat în localStorage)
- Rute publice /termeni, /confidentialitate, /contact (fullBleed)
- Footer-ul (landing + pagini) trimite acum la aceste rute

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Agent
2026-07-10 18:10:17 +00:00
parent 2c417bf36a
commit b2080e79b2
7 changed files with 464 additions and 34 deletions

View File

@@ -0,0 +1,76 @@
<template>
<LegalPage title="Politica de confidențialitate / GDPR" subtitle="Ultima actualizare: 10 iulie 2026">
<h2>1. Cine prelucrează datele</h2>
<p>
Operatorul datelor este <strong>ROMFAST</strong>, furnizorul serviciului ROA Space.
Ne poți contacta oricând la <a href="mailto:contact@romfast.ro">contact@romfast.ro</a>.
</p>
<h2>2. Ce date prelucrăm și de ce</h2>
<table>
<thead><tr><th>Date</th><th>Scop</th><th>Temei</th></tr></thead>
<tbody>
<tr>
<td>Date de cont: nume, email, parolă (stocată ca hash)</td>
<td>Crearea și administrarea contului</td>
<td>Executarea contractului</td>
</tr>
<tr>
<td>Rezervări: spațiu, interval orar, titlu/descriere</td>
<td>Gestionarea rezervărilor și evitarea suprapunerilor</td>
<td>Executarea contractului</td>
</tr>
<tr>
<td>Rezervări ca oaspete: nume și email introduse la rezervare</td>
<td>Identificarea cererii și confirmarea rezervării</td>
<td>Interes legitim / executarea contractului</td>
</tr>
<tr>
<td>Jurnal tehnic (autentificări, acțiuni administrative)</td>
<td>Securitate, suport, dovada acțiunilor</td>
<td>Interes legitim</td>
</tr>
</tbody>
</table>
<p>Nu colectăm date suplimentare față de cele necesare funcționării rezervărilor și nu folosim datele în scop de marketing.</p>
<h2>3. Cui le transmitem</h2>
<p>
Dacă activezi sincronizarea cu <strong>Google Calendar</strong>, evenimentele rezervărilor tale
sunt transmise contului tău Google, la cererea ta. În rest nu vindem și nu cedăm datele către alte părți.
</p>
<h2>4. Cât le păstrăm</h2>
<ul>
<li>Datele de cont se păstrează cât timp contul este activ.</li>
<li>Poți șterge rezervările din aplicație; le poți solicita ștergerea completă oricând.</li>
<li>La ștergerea contului, datele asociate sunt eliminate, cu excepția celor cerute de lege.</li>
</ul>
<h2>5. Cum le protejăm</h2>
<ul>
<li>Parolele se stochează doar ca hash, niciodată în clar.</li>
<li>Accesul la date este separat pe roluri și pe proprietăți: nu vezi datele la care nu ai drept.</li>
<li>Conexiunile către serviciu sunt criptate (HTTPS).</li>
</ul>
<h2>6. Drepturile tale</h2>
<p>
Conform GDPR ai dreptul de acces, rectificare, ștergere, restricționare, portabilitate și opoziție,
precum și dreptul de a depune o plângere la ANSPDCP
(<a href="https://www.dataprotection.ro" target="_blank" rel="noopener">dataprotection.ro</a>).
Pentru exercitarea drepturilor scrie-ne la <a href="mailto:contact@romfast.ro">contact@romfast.ro</a>
răspundem în cel mult 30 de zile.
</p>
<h2>7. Cookies</h2>
<p>
Folosim doar cookie-uri și stocare locală strict necesare (sesiunea de autentificare și preferințe
precum tema aleasă). Nu folosim cookie-uri de tracking sau de marketing.
</p>
</LegalPage>
</template>
<script setup lang="ts">
import LegalPage from '@/components/LegalPage.vue'
</script>

View File

@@ -0,0 +1,30 @@
<template>
<LegalPage title="Contact" subtitle="Suntem aici pentru orice întrebare despre ROA Space.">
<p>
<strong>ROA Space</strong> este un serviciu operat de <strong>ROMFAST</strong>, din Constanța, din 1991.
Scrie-ne și îți răspundem cât putem de repede.
</p>
<h2>Email</h2>
<p><a href="mailto:contact@romfast.ro">contact@romfast.ro</a> pentru suport, întrebări și solicitări GDPR.</p>
<h2>Web</h2>
<p><a href="https://romfast.ro" target="_blank" rel="noopener">romfast.ro</a> despre ROMFAST și celelalte servicii.</p>
<h2>Ai deja cont?</h2>
<p>
Poți intra direct în aplicație la <router-link to="/login">Autentificare</router-link>
sau îți creezi unul gratuit la <router-link to="/register">Creează cont</router-link>.
</p>
<h2>Documente</h2>
<p>
<router-link to="/termeni">Termeni și condiții</router-link> ·
<router-link to="/confidentialitate">Confidențialitate / GDPR</router-link>
</p>
</LegalPage>
</template>
<script setup lang="ts">
import LegalPage from '@/components/LegalPage.vue'
</script>

View File

@@ -172,9 +172,9 @@
<div class="footer-inner">
<span class="footer-copy">© 2026 ROMFAST · Constanța, din 1991</span>
<nav class="footer-links">
<a href="#">Termeni</a>
<a href="#">Confidențialitate / GDPR</a>
<a href="#">Contact</a>
<router-link to="/termeni">Termeni</router-link>
<router-link to="/confidentialitate">Confidențialitate / GDPR</router-link>
<router-link to="/contact">Contact</router-link>
<a href="https://romfast.ro" target="_blank" rel="noopener">romfast.ro</a>
</nav>
</div>
@@ -185,40 +185,11 @@
<script setup lang="ts">
import { ref, computed } from 'vue'
import { useLandingTheme } from '@/composables/useLandingTheme'
const ctaText = 'Creează cont gratuit'
/* Theme selector — same 8 themes and cycle order as the ROA app / autopass landing. */
const THEMES: [string, string][] = [
['light', 'Light'],
['dark', 'Dark'],
['petrol', 'Petrol'],
['grafit', 'Grafit'],
['cobalt', 'Cobalt'],
['cupru', 'Cupru'],
['hartie', 'Hârtie'],
['auto', 'Auto']
]
const THEME_KEY = 'roa-landing-theme'
const VALID = new Set(THEMES.map((t) => t[0]))
function resolve(id: string): string {
if (id === 'auto') {
return window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark'
}
return id
}
const stored = localStorage.getItem(THEME_KEY)
const themeId = ref(stored && VALID.has(stored) ? stored : 'grafit')
const theme = computed(() => resolve(themeId.value))
const themeLabel = computed(() => THEMES.find((t) => t[0] === themeId.value)?.[1] ?? 'Grafit')
function cycleTheme() {
const idx = THEMES.findIndex((t) => t[0] === themeId.value)
themeId.value = THEMES[(idx + 1) % THEMES.length][0]
localStorage.setItem(THEME_KEY, themeId.value)
}
const { theme, themeLabel, cycleTheme } = useLandingTheme()
interface Slot {
time: string

View File

@@ -0,0 +1,60 @@
<template>
<LegalPage title="Termeni și condiții" subtitle="Ultima actualizare: 10 iulie 2026">
<h2>1. Serviciul</h2>
<p>
<strong>ROA Space</strong> este un serviciu operat de <strong>ROMFAST</strong> care te ajută
administrezi și rezervi spații birouri, săli de ședință, open space-uri sau hub-uri și
vezi în timp real ce este liber și ce este ocupat.
</p>
<p>
Serviciul este un instrument de organizare a rezervărilor: nu garantează accesul fizic în spații
și nu înlocuiește regulile interne ale organizației care le pune la dispoziție.
</p>
<h2>2. Contul</h2>
<ul>
<li>Contul se creează gratuit, pe baza unui email și a unei parole.</li>
<li>Primul cont înregistrat pe o instanță devine administrator (proprietarul instanței).</li>
<li>Ești responsabil de confidențialitatea parolei și de activitatea desfășurată din contul tău.</li>
</ul>
<h2>3. Rezervări</h2>
<ul>
<li>O rezervare validă ocupă un interval; sistemul nu permite suprapuneri pe același spațiu.</li>
<li>Spațiile pot fi <strong>publice</strong> (rezervabile și fără cont, ca oaspete) sau <strong>private</strong>.</li>
<li>Administratorul spațiului poate cere aprobarea manuală a fiecărei cereri de rezervare.</li>
</ul>
<h2>4. Ce garantăm și ce nu</h2>
<ul>
<li>Depunem eforturi rezonabile ca serviciul fie disponibil, dar nu garantăm funcționarea neîntreruptă.</li>
<li>Nu răspundem pentru neînțelegeri privind utilizarea efectivă a spațiilor rezervate.</li>
<li>Răspunderea ROMFAST este limitată la contravaloarea eventualului abonament plătit pe ultimele 3 luni.</li>
</ul>
<h2>5. Utilizare acceptabilă</h2>
<p>
Este interzisă folosirea serviciului pentru a bloca abuziv spații, pentru a rezerva în numele altor
persoane fără acordul lor sau în orice mod care afectează funcționarea platformei. Conturile care
încalcă aceste reguli pot fi suspendate.
</p>
<h2>6. Datele tale</h2>
<p>
Prelucrarea datelor cu caracter personal este descrisă în
<router-link to="/confidentialitate">Politica de confidențialitate / GDPR</router-link>.
Pe scurt: reținem doar strictul necesar pentru funcționarea rezervărilor.
</p>
<h2>7. Contact</h2>
<p>
Pentru orice întrebare legată de acești termeni:
<a href="mailto:contact@romfast.ro">contact@romfast.ro</a> sau pagina de
<router-link to="/contact">Contact</router-link>.
</p>
</LegalPage>
</template>
<script setup lang="ts">
import LegalPage from '@/components/LegalPage.vue'
</script>