Rezervacije/KOMPONENTE.md

381 lines
18 KiB
Markdown

# Pregled komponent v aplikaciji Rezervacije
Ta dokument vsebuje kratek pregled vseh komponent v aplikaciji za rezervacije restavracij, njihovo lokacijo in namen uporabe.
## Osnovne komponente
### 1. NavigationBar
**Lokacija:** `/src/components/NavigationBar.tsx`
**Namen:** Glavna navigacijska vrstica za domačo stran aplikacije z gumbi za priljubljene, profil in meni.
**Uporaba:** Uporabite na vrhu domače strani za osnovno navigacijo po aplikaciji.
### 2. Footer
**Lokacija:** `/src/components/Footer.tsx`
**Namen:** Spodnja navigacijska vrstica z gumbi za domov, iskanje, rezervacije in profil.
**Uporaba:** Uporabite na dnu domače strani in strani z zgodovino rezervacij za osnovno navigacijo med glavnimi sekcijami aplikacije. Ne uporabljajte na straneh, ki imajo lastne noge (ReservationFooter, CancellationFooter) ali spodnje pripete elemente (ReservationWidget).
### 3. RestaurantCard
**Lokacija:** `/src/components/RestaurantCard.tsx`
**Namen:** Kartica za prikaz osnovnih podatkov o restavraciji na seznamu.
**Uporaba:** Uporabite za prikazovanje restavracij na seznamih in straneh za iskanje.
### 4. CategoryItem
**Lokacija:** `/src/components/CategoryItem.tsx`
**Namen:** Prikaz kategorije restavracije/kuhinje z ikono in besedilom.
**Uporaba:** Uporabite za prikaz kategorij kuhinj v horizontalnem seznamu.
### 5. QuickFilterButton
**Lokacija:** `/src/components/QuickFilterButton.tsx`
**Namen:** Gumb za hitro filtriranje restavracij po različnih kriterijih.
**Uporaba:** Uporabite za omogočanje hitrih filtrov na straneh s seznami restavracij.
### 6. SearchBar
**Lokacija:** `/src/components/SearchBar.tsx`
**Namen:** Vnosno polje za iskanje restavracij, lokacij ali vrst kuhinj.
**Uporaba:** Uporabite na domači strani ali strani za iskanje.
### 7. QuickFilterList
**Lokacija:** `/src/components/QuickFilterList.tsx`
**Namen:** Horizontalni seznam hitrih filtrov za restavracije.
**Uporaba:** Uporabite pod iskalno vrstico na domači strani.
### 8. MapButton
**Lokacija:** `/src/components/MapButton.tsx`
**Namen:** Gumb za prikaz restavracij na zemljevidu.
**Uporaba:** Uporabite na domači strani za preklapljanje na pogled zemljevida.
### 9. CategoriesList
**Lokacija:** `/src/components/CategoriesList.tsx`
**Namen:** Horizontalni seznam kategorij kuhinj.
**Uporaba:** Uporabite na domači strani za filtriranje po vrstah kuhinj.
### 10. RestaurantList
**Lokacija:** `/src/components/RestaurantList.tsx`
**Namen:** Seznam restavracij z naslovom in možnostjo prikaza vseh.
**Uporaba:** Uporabite na domači strani za prikaz priporočenih restavracij.
## Komponente za podrobnosti restavracije
### 11. RestaurantNavBar
**Lokacija:** `/src/components/RestaurantNavBar.tsx`
**Namen:** Navigacijska vrstica za stran s podrobnostmi restavracije z gumbi za nazaj, deljenje in priljubljene.
**Uporaba:** Uporabite na vrhu strani s podrobnostmi restavracije.
### 12. RestaurantGallery
**Lokacija:** `/src/components/RestaurantGallery.tsx`
**Namen:** Prikaz slike restavracije z gumbi za ogled galerije in 360° pogleda.
**Uporaba:** Uporabite na vrhu strani s podrobnostmi restavracije za prikaz glavne slike in dostop do več slik.
### 13. RestaurantInfo
**Lokacija:** `/src/components/RestaurantInfo.tsx`
**Namen:** Prikaz osnovnih informacij o restavraciji - ime, lokacija, ocena in značilnosti.
**Uporaba:** Uporabite pod galerijo na strani s podrobnostmi restavracije.
### 14. ActionButtons
**Lokacija:** `/src/components/ActionButtons.tsx`
**Namen:** Trije gumbi za klic, navigacijo in obisk spletne strani restavracije.
**Uporaba:** Uporabite pod osnovnimi informacijami na strani s podrobnostmi restavracije.
### 15. InfoAccordion
**Lokacija:** `/src/components/InfoAccordion.tsx`
**Namen:** Razširljiv/skrčljiv element za prikaz informacij v sekcijah.
**Uporaba:** Uporabite za različne sekcije podrobnosti, kot so opis, odpiralni čas in kontakt.
### 16. RestaurantDescription
**Lokacija:** `/src/components/RestaurantDescription.tsx`
**Namen:** Prikaz opisa restavracije v razširljivem elementu.
**Uporaba:** Uporabite v sekciji z informacijami na strani s podrobnostmi restavracije.
### 17. OpeningHours
**Lokacija:** `/src/components/OpeningHours.tsx`
**Namen:** Prikaz odpiralnega časa restavracije v razširljivem elementu.
**Uporaba:** Uporabite v sekciji z informacijami na strani s podrobnostmi restavracije.
### 18. ContactInfo
**Lokacija:** `/src/components/ContactInfo.tsx`
**Namen:** Prikaz kontaktnih podatkov restavracije v razširljivem elementu.
**Uporaba:** Uporabite v sekciji z informacijami na strani s podrobnostmi restavracije.
### 19. MenuSection
**Lokacija:** `/src/components/MenuSection.tsx`
**Namen:** Prikaz menija restavracije po kategorijah.
**Uporaba:** Uporabite na strani s podrobnostmi restavracije za prikaz ponudbe jedi.
### 20. Reviews
**Lokacija:** `/src/components/Reviews.tsx`
**Namen:** Prikaz ocen in mnenj uporabnikov o restavraciji.
**Uporaba:** Uporabite na strani s podrobnostmi restavracije za prikaz ocen in mnenj.
### 21. ReservationWidget
**Lokacija:** `/src/components/ReservationWidget.tsx`
**Namen:** Spodnji pritrjeni element za hitro izbiro termina in števila oseb za rezervacijo.
**Uporaba:** Uporabite na dnu strani s podrobnostmi restavracije za hiter začetek postopka rezervacije.
## Komponente za rezervacijo
### 22. ReservationNavBar
**Lokacija:** `/src/components/ReservationNavBar.tsx`
**Namen:** Navigacijska vrstica za stran z rezervacijo z gumboma za nazaj in pomoč.
**Uporaba:** Uporabite na vrhu strani za rezervacijo.
### 23. ReservationRestaurantInfo
**Lokacija:** `/src/components/ReservationRestaurantInfo.tsx`
**Namen:** Prikaz osnovnih podatkov o restavraciji na strani za rezervacijo.
**Uporaba:** Uporabite na vrhu strani za rezervacijo, da uporabnik ve, katero restavracijo rezervira.
### 24. DateSelector
**Lokacija:** `/src/components/DateSelector.tsx`
**Namen:** Izbira datuma rezervacije z vnosnim poljem in gumbi za hitre izbire.
**Uporaba:** Uporabite na obrazcu za rezervacijo za izbiro datuma.
### 25. TimeSelector
**Lokacija:** `/src/components/TimeSelector.tsx`
**Namen:** Izbira ure rezervacije, razdeljena po delih dneva (kosilo, večerja).
**Uporaba:** Uporabite na obrazcu za rezervacijo za izbiro ure.
### 26. GuestCounter
**Lokacija:** `/src/components/GuestCounter.tsx`
**Namen:** Izbira števila oseb za rezervacijo z gumbi za povečanje in zmanjšanje.
**Uporaba:** Uporabite na obrazcu za rezervacijo za določitev števila gostov.
### 27. SpecialRequests
**Lokacija:** `/src/components/SpecialRequests.tsx`
**Namen:** Besedilno polje za vnos posebnih zahtev ob rezervaciji.
**Uporaba:** Uporabite na obrazcu za rezervacijo za vnos posebnih diet, alergij ali želja.
### 28. ContactForm
**Lokacija:** `/src/components/ContactForm.tsx`
**Namen:** Obrazec za vnos kontaktnih podatkov za rezervacijo.
**Uporaba:** Uporabite na obrazcu za rezervacijo za vnos imena, telefona in e-pošte.
### 29. ReservationSummary
**Lokacija:** `/src/components/ReservationSummary.tsx`
**Namen:** Povzetek podatkov o rezervaciji pred potrditvijo.
**Uporaba:** Uporabite na obrazcu za rezervacijo za pregled izbranih nastavitev.
### 30. CancellationPolicy
**Lokacija:** `/src/components/CancellationPolicy.tsx`
**Namen:** Prikaz pravil o odpovedi rezervacije.
**Uporaba:** Uporabite na obrazcu za rezervacijo za seznanitev uporabnika s pogoji odpovedi.
### 31. TermsAgreement
**Lokacija:** `/src/components/TermsAgreement.tsx`
**Namen:** Potrditveno polje za strinjanje s pogoji uporabe in pravili o zasebnosti.
**Uporaba:** Uporabite na obrazcu za rezervacijo pred potrditvijo.
### 32. ReservationFooter
**Lokacija:** `/src/components/ReservationFooter.tsx`
**Namen:** Spodnji pritrjeni element s povzetkom rezervacije in gumbom za potrditev.
**Uporaba:** Uporabite na dnu strani za rezervacijo za dokončanje postopka.
## Komponente za potrditev rezervacije
### 37. ConfirmationNavBar
**Lokacija:** `/src/components/ConfirmationNavBar.tsx`
**Namen:** Navigacijska vrstica za stran s potrditvijo rezervacije z gumboma za zapiranje in deljenje.
**Uporaba:** Uporabite na vrhu strani za potrditev rezervacije.
### 38. ConfirmationSuccess
**Lokacija:** `/src/components/ConfirmationSuccess.tsx`
**Namen:** Komponenta za prikaz sporočila o uspešni rezervaciji z ikono in besedilom.
**Uporaba:** Uporabite na vrhu strani za potrditev rezervacije za jasen prikaz uspeha.
### 39. ReservationCard
**Lokacija:** `/src/components/ReservationCard.tsx`
**Namen:** Kartica za prikaz podrobnosti o potrjeni rezervaciji (restavracija, datum, čas, številka rezervacije, QR koda).
**Uporaba:** Uporabite na strani za potrditev rezervacije za celovit pregled rezervacije.
### 40. QuickActions
**Lokacija:** `/src/components/QuickActions.tsx`
**Namen:** Gumbi za hitre akcije (dodaj v koledar, navigacija, uredi) povezane z rezervacijo.
**Uporaba:** Uporabite na strani za potrditev rezervacije za hitro izvedbo pogostih akcij.
### 41. CancellationInfo
**Lokacija:** `/src/components/CancellationInfo.tsx`
**Namen:** Prikaz informacij o pravilih in pogojih za odpoved rezervacije z rokom odpovedi.
**Uporaba:** Uporabite na strani za potrditev rezervacije za informiranje uporabnika o pravilih odpovedi.
### 42. ReservationDetails
**Lokacija:** `/src/components/ReservationDetails.tsx`
**Namen:** Podrobnejši prikaz podatkov o rezervaciji, vključno s kontaktnimi podatki restavracije in posebnimi zahtevami.
**Uporaba:** Uporabite na strani za potrditev rezervacije za prikaz dodatnih informacij o rezervaciji.
### 43. CancellationFooter
**Lokacija:** `/src/components/CancellationFooter.tsx`
**Namen:** Noga s gumbom za odpoved rezervacije.
**Uporaba:** Uporabite na dnu strani za potrditev rezervacije za omogočanje odpovedi.
## Komponente za zgodovino rezervacij
### 45. ReservationsNavBar
**Lokacija:** `/src/components/ReservationsNavBar.tsx`
**Namen:** Navigacijska vrstica za stran z zgodovino rezervacij z naslovom in gumbi za filtriranje in pomoč.
**Uporaba:** Uporabite na vrhu strani z zgodovino rezervacij.
### 46. ReservationsTabs
**Lokacija:** `/src/components/ReservationsTabs.tsx`
**Namen:** Zavihki za preklapljanje med prihajajočimi in preteklimi rezervacijami.
**Uporaba:** Uporabite pod navigacijsko vrstico na strani z zgodovino rezervacij.
### 47. ReservationHistoryCard
**Lokacija:** `/src/components/ReservationHistoryCard.tsx`
**Namen:** Kartica za prikaz podatkov o posamezni rezervaciji z možnostmi za upravljanje.
**Uporaba:** Uporabite za prikaz posamezne rezervacije v seznamu rezervacij.
### 48. ReservationsList
**Lokacija:** `/src/components/ReservationsList.tsx`
**Namen:** Seznam rezervacij, ki prikazuje prihajajoče ali pretekle rezervacije po skupinah.
**Uporaba:** Uporabite na strani z zgodovino rezervacij za prikaz rezervacij.
### 49. EmptyReservations
**Lokacija:** `/src/components/EmptyReservations.tsx`
**Namen:** Prikaz praznega stanja, ko uporabnik nima nobenih rezervacij.
**Uporaba:** Uporabite na strani z zgodovino rezervacij, ko ni rezervacij.
## Komponente za iskanje in filtriranje
### 50. SearchNavBar
**Lokacija:** `/src/components/SearchNavBar.tsx`
**Namen:** Navigacijska vrstica za stran z iskanjem, z naslovom in gumbi za ponastavitev filtrov in pomoč.
**Uporaba:** Uporabite na vrhu strani za iskanje in filtriranje restavracij.
### 51. AdvancedSearchBar
**Lokacija:** `/src/components/AdvancedSearchBar.tsx`
**Namen:** Napredno iskalno polje z možnostjo čiščenja vnosa.
**Uporaba:** Uporabite na vrhu strani za iskanje, ko želite omogočiti iskanje po imenih restavracij ali jedi.
### 52. FilterHeader
**Lokacija:** `/src/components/FilterHeader.tsx`
**Namen:** Glava sekcije filtrov z naslovom in gumbom za ponastavitev.
**Uporaba:** Uporabite kot uvod v sekcijo filtrov na strani za iskanje.
### 53. LocationFilter
**Lokacija:** `/src/components/LocationFilter.tsx`
**Namen:** Filter za izbiro lokacije z vnosnim poljem in hitro izbiro priljubljenih lokacij.
**Uporaba:** Uporabite v sekciji filtrov za filtriranje restavracij po lokaciji.
### 54. CuisineFilterGrid
**Lokacija:** `/src/components/CuisineFilterGrid.tsx`
**Namen:** Mreža izbirnih polj za filtriranje po vrstah kuhinje.
**Uporaba:** Uporabite v sekciji filtrov za izbiro željenih vrst kuhinj.
### 55. PriceRangeFilter
**Lokacija:** `/src/components/PriceRangeFilter.tsx`
**Namen:** Filter za izbiro cenovnih razredov restavracij (od € do €€€€).
**Uporaba:** Uporabite v sekciji filtrov za filtriranje po cenovnem razredu.
### 56. RatingSlider
**Lokacija:** `/src/components/RatingSlider.tsx`
**Namen:** Drsnik za filtriranje restavracij po minimalni oceni.
**Uporaba:** Uporabite v sekciji filtrov za filtriranje restavracij po minimalni oceni.
### 57. AdditionalOptionsFilter
**Lokacija:** `/src/components/AdditionalOptionsFilter.tsx`
**Namen:** Skupina potrditvenih polj za dodatne možnosti filtriranja (odprto zdaj, parkirišče, ipd.).
**Uporaba:** Uporabite v sekciji filtrov za bolj natančno filtriranje restavracij.
### 58. SearchResultsHeader
**Lokacija:** `/src/components/SearchResultsHeader.tsx`
**Namen:** Glava sekcije rezultatov iskanja z naslovom in izbirnikom za razvrščanje.
**Uporaba:** Uporabite kot uvod v sekcijo rezultatov iskanja.
### 59. ActiveFiltersDisplay
**Lokacija:** `/src/components/ActiveFiltersDisplay.tsx`
**Namen:** Prikaz aktivnih filtrov in možnost njihove odstranitve.
**Uporaba:** Uporabite nad rezultati iskanja za prikaz in hitro odstranjevanje aplikaciranih filtrov.
### 60. SearchRestaurantCard
**Lokacija:** `/src/components/SearchRestaurantCard.tsx`
**Namen:** Razširjena kartica restavracije s podrobnostmi za prikaz v rezultatih iskanja.
**Uporaba:** Uporabite za prikaz posamezne restavracije v rezultatih iskanja.
### 61. LoadMoreButton
**Lokacija:** `/src/components/LoadMoreButton.tsx`
**Namen:** Gumb za nalaganje dodatnih rezultatov iskanja.
**Uporaba:** Uporabite na koncu seznama rezultatov iskanja za prikaz več restavracij.
## Strani aplikacije
### 33. HomePage
**Lokacija:** `/src/pages/HomePage.tsx`
**Namen:** Glavna stran aplikacije s seznamom priporočenih restavracij, hitrimi filtri in kategorijami.
**Uporaba:** Uporabite kot začetno stran aplikacije.
### 34. RestaurantDetailPage
**Lokacija:** `/src/pages/RestaurantDetailPage.tsx`
**Namen:** Stran s podrobnimi informacijami o izbrani restavraciji.
**Uporaba:** Uporabite za prikaz vseh podatkov o posamezni restavraciji in za začetek rezervacije.
### 35. ReservationPage
**Lokacija:** `/src/pages/ReservationPage.tsx`
**Namen:** Stran za vnos vseh podatkov, potrebnih za rezervacijo.
**Uporaba:** Uporabite za dokončanje rezervacije po izbiri restavracije.
### 36. ConfirmationPage
**Lokacija:** `/src/pages/ConfirmationPage.tsx`
**Namen:** Stran za prikaz potrditve uspešno opravljene rezervacije s podrobnostmi in možnostmi za upravljanje.
**Uporaba:** Prikaže se po uspešni potrditvi rezervacije in omogoča upravljanje z rezervacijo.
### 37. ReservationsHistoryPage
**Lokacija:** `/src/pages/ReservationsHistoryPage.tsx`
**Namen:** Stran za prikaz zgodovine rezervacij s funkcijami za upravljanje z rezervacijami.
**Uporaba:** Omogoča pregled vseh prihajajočih in preteklih rezervacij ter njihovo upravljanje.
### 50. SearchPage
**Lokacija:** `/src/pages/SearchPage.tsx`
**Namen:** Stran za podrobno iskanje in filtriranje restavracij po različnih kriterijih.
**Uporaba:** Omogoča uporabnikom naprednejše iskanje restavracij po imenu, lokaciji, vrsti kuhinje, cenovnem razredu, oceni in drugih lastnostih.
## Glavna aplikacija
### 44. App
**Lokacija:** `/src/App.tsx`
**Namen:** Glavna komponenta aplikacije, ki upravlja navigacijo med stranmi.
**Uporaba:** Služi kot vstopna točka in vsebuje navigacijski sistem celotne aplikacije.
---
## Uporaba tipov
Aplikacija uporablja tipsko varne komponente z uporabo TypeScript. Vsi tipi so definirani v datoteki `/src/types/index.ts` in vključujejo:
- `Restaurant`: Osnovni podatki o restavraciji
- `RestaurantDetail`: Razširjeni podatki o restavraciji
- `OpeningHour`: Odpiralni čas
- `Feature`: Značilnost restavracije
- `MenuSection`: Sekcija menija
- `Dish`: Jed na meniju
- `Review`: Mnenje uporabnika
- `Category`: Kategorija kuhinje
- `NavItem`: Element navigacije
- `TimeSlot`: Termin za rezervacijo
## Smernice za uporabo
1. **Konsistentnost v dizajnu:** Vse komponente so oblikovane v skladu z enotnim dizajnom, uporabite jih takšne, kot so, za ohranitev konsistentnosti.
2. **Dostopnost:** Komponente vsebujejo ustrezne ARIA atribute za boljšo dostopnost. Pri uporabi jih ohranite.
3. **Odzivnost:** Komponente so prilagojene za mobilne naprave, vendar se prikažejo v fiksni velikosti na večjih zaslonih.
4. **Material ikone:** Komponente uporabljajo Material Icons knjižnico, poskrbite, da je vključena v projekt.
5. **TailwindCSS:** Stiliziranje temelji na TailwindCSS, poskrbite, da je pravilno konfiguriran v projektu.
## Navigacija med stranmi
Aplikacija vsebuje naslednje navigacijske poti:
1. **Domov → Podrobnosti restavracije**: Ob kliku na kartico restavracije
2. **Podrobnosti restavracije → Rezervacija**: Ob kliku na gumb "Rezerviraj" v ReservationWidget komponenti
3. **Rezervacija → Potrditev rezervacije**: Po uspešno izpolnjenem rezervacijskem obrazcu
4. **Potrditev rezervacije → Domov**: Ob kliku na gumb za zapiranje
5. **Domov → Zgodovina rezervacij**: Z navigacijo preko Footer komponente
6. **Zgodovina rezervacij → Podrobnosti rezervacije**: Ob kliku na "Uredi" pri posamezni rezervaciji
7. **Podrobnosti rezervacije → Domov**: Z navigacijo preko gumba za nazaj
Koda za implementacijo navigacije je del `NavigationContext` in se uporablja preko `navigateTo` funkcije v App.tsx. Na primer:
```typescript
const { navigateTo } = useContext(NavigationContext);
const handleButtonClick = () => {
navigateTo('pageName'); // kjer je pageName ena izmed: 'home', 'detail', 'reservation', 'confirmation', 'reservations'
};
```