Files
space-booking/frontend/src/components
Claude Agent 0b497157ad feat: landing refăcut + înveliș public unificat pentru login/register/book
Landing:
- hero cu un singur CTA (scoase „Vezi cum arată", „Rezervă fără cont" și nota)
- „Spații deschise rezervării acum" pe poziția 2, în bandă evidențiată cu accent;
  listează toate proprietățile publice active (fără filtrul list_on_landing)
- showcase-ul mutat în bandă neutră etichetată „Demonstrație" ca să nu se
  confunde cu controale reale

Pagini publice:
- PublicNav.vue + PublicFooter.vue extrase și refolosite de Landing, LegalPage
  și noul PublicShell.vue (login/register/book primesc header/footer de landing,
  cu cele 8 teme; tokenii --color-* remapați la paleta landing în scope-ul shell)
- pe mobil: nav compact cu meniu hamburger (drawer ancorat dreapta, iconițe
  lucide, închidere la tap în afară/Escape); logo-ul Romfast rămâne în footer

Fix-uri:
- QR-ul proprietății encodează URL-ul cu slug (fallback pe id)
- deep-link-urile către rutele manager/admin nu mai sar la /dashboard:
  guard-ul așteaptă authStore.ready înainte de verificarea rolurilor
- drawer-ul nu se mai închidea singur la tap pe iconiță (listener pe pointerdown
  + gardă pentru target detașat după re-render)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 08:56:23 +00:00
..

SpaceCalendar Component

Component Vue.js 3 pentru afișarea rezervărilor unui spațiu folosind FullCalendar.

Utilizare

<template>
  <div>
    <h2>Rezervări pentru Sala A</h2>
    <SpaceCalendar :space-id="1" />
  </div>
</template>

<script setup lang="ts">
import SpaceCalendar from '@/components/SpaceCalendar.vue'
</script>

Props

Prop Type Required Description
spaceId number Yes ID-ul spațiului pentru care se afișează rezervările

Features

  • View Switcher: Month, Week, Day views
  • Status Colors:
    • Pending: Orange (#FFA500)
    • Approved: Green (#4CAF50)
    • Rejected: Red (#F44336)
    • Canceled: Gray (#9E9E9E)
  • Auto-refresh: Se încarcă automat rezervările când se schimbă data
  • Responsive: Se adaptează la dimensiunea ecranului

API Integration

Componenta folosește bookingsApi.getForSpace(spaceId, start, end) pentru a încărca rezervările.

TypeScript Types

Componenta este complet type-safe și folosește interfețele din /src/types/index.ts.