Rezervacije/KOMPONENTE.md

22 KiB

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.

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.

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, ki vsebuje naslov strani in gumbe za hitro ponastavitev filtrov in dostop do pomoči.
Uporaba: Uporabite kot glavno navigacijo na vrhu strani za iskanje in filtriranje.

51. AdvancedSearchBar

Lokacija: /src/components/AdvancedSearchBar.tsx
Namen: Iskalno polje s podporo za vnos in čiščenje poizvedbe, s poudarjeno vizualno podobo.
Uporaba: Uporabite kot glavni vnos za iskalno poizvedbo na strani za iskanje.

52. FilterHeader

Lokacija: /src/components/FilterHeader.tsx
Namen: Naslovni del filtrirne sekcije, ki prikazuje naslov "Filtri" in gumb za ponastavitev vseh filtrov.
Uporaba: Uporabite kot uvod v sklop filtrov na strani za iskanje.

53. LocationFilter

Lokacija: /src/components/LocationFilter.tsx
Namen: Kompleksna komponenta za filtriranje po lokaciji, ki združuje vnosno polje in hitre izbire priljubljenih lokacij.
Uporaba: Uporabite za omogočanje različnih načinov določanja lokacije pri iskanju restavracij.

54. CuisineFilterGrid

Lokacija: /src/components/CuisineFilterGrid.tsx
Namen: Vizualno privlačna mreža za izbiro vrst kuhinje z ikonami in besedilom, podpira večkratno izbiro.
Uporaba: Uporabite za filtriranje restavracij po vrstah kuhinje.

55. PriceRangeFilter

Lokacija: /src/components/PriceRangeFilter.tsx
Namen: Filter za izbiro enega ali več cenovnih razredov (€, €€, €€€, €€€€).
Uporaba: Uporabite za filtriranje restavracij po cenovnem razredu.

56. RatingSlider

Lokacija: /src/components/RatingSlider.tsx
Namen: Drsnik za izbiro minimalne ocene pri filtriranju, z natančnim prikazom trenutno izbrane vrednosti.
Uporaba: Uporabite za filtriranje restavracij glede na oceno (od 0 do 5).

57. AdditionalOptionsFilter

Lokacija: /src/components/AdditionalOptionsFilter.tsx
Namen: Zbirka potrditvenih polj za dodatne možnosti filtriranja, kot so trenutno odprto, parkirišče in podobno.
Uporaba: Uporabite za omogočanje filtriranja po dodatnih specifikacijah restavracij.

58. SearchResultsHeader

Lokacija: /src/components/SearchResultsHeader.tsx
Namen: Naslovni del rezultatov iskanja z naslovom in izbirnikom za razvrščanje rezultatov po različnih kriterijih.
Uporaba: Uporabite na začetku sekcije z rezultati iskanja.

59. ActiveFiltersDisplay

Lokacija: /src/components/ActiveFiltersDisplay.tsx
Namen: Prikaz trenutno aktivnih filtrov v obliki značk (chips) z možnostjo hitrega odstranjevanja posameznih filtrov.
Uporaba: Uporabite pod naslovom rezultatov iskanja za pregleden prikaz uporabljenih filtrov.

60. SearchRestaurantCard

Lokacija: /src/components/SearchRestaurantCard.tsx
Namen: Podrobna kartica posamezne restavracije v rezultatih iskanja, ki prikazuje sliko, osnovne podatke, oceno, kuhinje in gumb za rezervacijo.
Uporaba: Uporabite za vsako restavracijo v seznamu rezultatov iskanja.

61. LoadMoreButton

Lokacija: /src/components/LoadMoreButton.tsx
Namen: Gumb za nalaganje dodatnih rezultatov iskanja za implementacijo paginacije.
Uporaba: Uporabite na koncu seznama rezultatov iskanja, ko je na voljo več rezultatov kot je trenutno prikazano.

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:

const { navigateTo } = useContext(NavigationContext);

const handleButtonClick = () => {
  navigateTo('pageName'); // kjer je pageName ena izmed: 'home', 'detail', 'reservation', 'confirmation', 'reservations'
};

Nove komponente za iskanje in filtriranje

V sklopu posodobitve strani za iskanje smo ustvarili naslednje nove komponente:

SearchNavBar

Lokacija: /src/components/SearchNavBar.tsx
Namen: Navigacijska vrstica za stran z iskanjem, ki vsebuje naslov strani in gumbe za hitro ponastavitev filtrov in dostop do pomoči.
Uporaba: Uporabite kot glavno navigacijo na vrhu strani za iskanje in filtriranje.

AdvancedSearchBar

Lokacija: /src/components/AdvancedSearchBar.tsx
Namen: Iskalno polje s podporo za vnos in čiščenje poizvedbe, s poudarjeno vizualno podobo.
Uporaba: Uporabite kot glavni vnos za iskalno poizvedbo na strani za iskanje.

FilterHeader

Lokacija: /src/components/FilterHeader.tsx
Namen: Naslovni del filtrirne sekcije, ki prikazuje naslov "Filtri" in gumb za ponastavitev vseh filtrov.
Uporaba: Uporabite kot uvod v sklop filtrov na strani za iskanje.

LocationFilter

Lokacija: /src/components/LocationFilter.tsx
Namen: Kompleksna komponenta za filtriranje po lokaciji, ki združuje vnosno polje in hitre izbire priljubljenih lokacij.
Uporaba: Uporabite za omogočanje različnih načinov določanja lokacije pri iskanju restavracij.

CuisineFilterGrid

Lokacija: /src/components/CuisineFilterGrid.tsx
Namen: Vizualno privlačna mreža za izbiro vrst kuhinje z ikonami in besedilom, podpira večkratno izbiro.
Uporaba: Uporabite za filtriranje restavracij po vrstah kuhinje.

PriceRangeFilter

Lokacija: /src/components/PriceRangeFilter.tsx
Namen: Filter za izbiro enega ali več cenovnih razredov (€, €€, €€€, €€€€).
Uporaba: Uporabite za filtriranje restavracij po cenovnem razredu.

RatingSlider

Lokacija: /src/components/RatingSlider.tsx
Namen: Drsnik za izbiro minimalne ocene pri filtriranju, z natančnim prikazom trenutno izbrane vrednosti.
Uporaba: Uporabite za filtriranje restavracij glede na oceno (od 0 do 5).

AdditionalOptionsFilter

Lokacija: /src/components/AdditionalOptionsFilter.tsx
Namen: Zbirka potrditvenih polj za dodatne možnosti filtriranja, kot so trenutno odprto, parkirišče in podobno.
Uporaba: Uporabite za omogočanje filtriranja po dodatnih specifikacijah restavracij.

SearchResultsHeader

Lokacija: /src/components/SearchResultsHeader.tsx
Namen: Naslovni del rezultatov iskanja z naslovom in izbirnikom za razvrščanje rezultatov po različnih kriterijih.
Uporaba: Uporabite na začetku sekcije z rezultati iskanja.

ActiveFiltersDisplay

Lokacija: /src/components/ActiveFiltersDisplay.tsx
Namen: Prikaz trenutno aktivnih filtrov v obliki značk (chips) z možnostjo hitrega odstranjevanja posameznih filtrov.
Uporaba: Uporabite pod naslovom rezultatov iskanja za pregleden prikaz uporabljenih filtrov.

SearchRestaurantCard

Lokacija: /src/components/SearchRestaurantCard.tsx
Namen: Podrobna kartica posamezne restavracije v rezultatih iskanja, ki prikazuje sliko, osnovne podatke, oceno, kuhinje in gumb za rezervacijo.
Uporaba: Uporabite za vsako restavracijo v seznamu rezultatov iskanja.

LoadMoreButton

Lokacija: /src/components/LoadMoreButton.tsx
Namen: Gumb za nalaganje dodatnih rezultatov iskanja za implementacijo paginacije.
Uporaba: Uporabite na koncu seznama rezultatov iskanja, ko je na voljo več rezultatov kot je trenutno prikazano.

Te komponente skupaj omogočajo moderno, prilagodljivo in uporabniku prijazno izkušnjo iskanja in filtriranja restavracij, ki sledi najboljšim praksam komponentno usmerjenega razvoja v Reactu.