generated from JustScreaMy/ProjectTemplate
	hopefully css almost done
This commit is contained in:
		
							parent
							
								
									499375a8e8
								
							
						
					
					
						commit
						8cd16bdcea
					
				
					 20 changed files with 662 additions and 591 deletions
				
			
		
							
								
								
									
										21
									
								
								TODO
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								TODO
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,21 @@ | |||
| Nastylovat: | ||||
| - header nedrží | ||||
| - footer | ||||
| - lazyload načítat o něco dříve (neli zrušit alespoň mimo galerii) | ||||
| 
 | ||||
| Naprogramovat: | ||||
| - tlačítko "načíst další aktuality" v komponentě News (možná přidat i novou stránku /aktuality | ||||
| - přidat kalendář | ||||
| - kotvičky | ||||
| - přidat v galerii zvětsovač na obrázky | ||||
| - přidat backend | ||||
| - přidat databázi | ||||
| - přidat api | ||||
| - přidat volání na api | ||||
| 
 | ||||
| Naplánovat: | ||||
| - kurzy + cena: vyskakovací okno na rezervaci s jménem lekce? jak to vyřešit s kalendářem? (stránka /rezervace) | ||||
| - změnit (logicky) pořadí komponent na hlavní stránce | ||||
| 
 | ||||
| Čeká na Ondru: | ||||
| - Důležité kontakty + obrázky jak se dostat nebo vzdálenosti od městské dopravy? přidat do googlu | ||||
|  | @ -147,7 +147,9 @@ USE_TZ = True | |||
| # Static files (CSS, JavaScript, Images) | ||||
| # https://docs.djangoproject.com/en/5.1/howto/static-files/ | ||||
| 
 | ||||
| STATIC_URL = 'static/' | ||||
| STATIC_URL = '/static/' | ||||
| 
 | ||||
| MEDIA_URL = '/media/' | ||||
| 
 | ||||
| # Default primary key field type | ||||
| # https://docs.djangoproject.com/en/5.1/ref/settings/#default-auto-field | ||||
|  |  | |||
							
								
								
									
										204
									
								
								services/frontend/assets/css/main.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										204
									
								
								services/frontend/assets/css/main.css
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,204 @@ | |||
| @font-face { | ||||
|   font-family: 'Playfair Display', serif; | ||||
|   font-weight: 700; | ||||
|   font-style: normal; | ||||
|   font-display: block; | ||||
| } | ||||
| 
 | ||||
| h1 { | ||||
|   font-family: 'Playfair Display', serif; /* Or a similar elegant font */ | ||||
|   font-size: 3rem; | ||||
|   color: #333; /* Dark gray */ | ||||
|   text-align: center; | ||||
|   margin-bottom: 1rem; | ||||
|   margin-top: 2rem; | ||||
|   text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1); /* Subtle shadow */ | ||||
| } | ||||
| 
 | ||||
| h2 { | ||||
|   font-family: 'Playfair Display', serif; | ||||
|   font-size: 1.5rem; | ||||
|   color: #CF3476; | ||||
|   text-align: center; | ||||
|   margin-bottom: 0.5rem; | ||||
| } | ||||
| 
 | ||||
| h3 { | ||||
|   font-family: 'Playfair Display', serif; | ||||
|   font-size: 1.5rem; | ||||
|   color: #666; /* Light gray */ | ||||
|   text-align: center; | ||||
|   margin-bottom: 0.5rem; | ||||
| } | ||||
| 
 | ||||
| h4 { | ||||
|   font-family: 'Playfair Display', serif; | ||||
|   font-size: 1rem; | ||||
|   color: #666; /* Light gray */ | ||||
|   text-align: center; | ||||
|   margin-bottom: 0.5rem; | ||||
| } | ||||
| 
 | ||||
| h5 { | ||||
|   font-family: 'Playfair Display', serif; | ||||
|   font-size: 1rem; | ||||
|   color: #aaa; /* Light gray */ | ||||
|   margin-top: 1rem; | ||||
| } | ||||
| 
 | ||||
| .to_left { | ||||
|   font-family: 'Playfair Display', serif; | ||||
|   font-size: 1rem; | ||||
| } | ||||
| 
 | ||||
| .to_right { | ||||
|   font-family: 'Playfair Display', serif; | ||||
|   float: right; | ||||
| } | ||||
| 
 | ||||
| .contact { | ||||
|   margin: 20px calc(20% - 40px) 50px; | ||||
|   min-width: 25rem; | ||||
|   border-radius: 15px; | ||||
|   box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); | ||||
| } | ||||
| 
 | ||||
| .contact__title { | ||||
|   text-align: center; | ||||
|   font-size: 3rem; | ||||
|   color: #333; /* Dark gray */ | ||||
|   margin-bottom: 1rem; | ||||
|   font-family: 'Playfair Display', serif; | ||||
|   font-weight: bold; | ||||
| } | ||||
| 
 | ||||
| .contact__button { | ||||
|   width: 100%; | ||||
|   color: #ffffff; | ||||
|   background-color: #CF3476; | ||||
| } | ||||
| 
 | ||||
| .article { | ||||
|   padding: 20px; | ||||
|   min-width: 40%; | ||||
|   border-radius: 15px; | ||||
|   box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); | ||||
|   margin: 50px | ||||
| } | ||||
| 
 | ||||
| .article__title { | ||||
|   font-family: 'Playfair Display', serif; | ||||
|   font-size: 1.5rem; | ||||
|   color: #CF3476; /* Dark gray */ | ||||
|   text-align: left; | ||||
|   margin-top: 0.1rem; | ||||
|   font-weight: bold; | ||||
| } | ||||
| 
 | ||||
| .article__date { | ||||
|   font-family: 'Playfair Display', serif; | ||||
|   font-size: 0.8rem; | ||||
|   text-align: left; | ||||
| } | ||||
| 
 | ||||
| .article__text { | ||||
|   font-family: 'Playfair Display', serif; /* Or a similar elegant font */ | ||||
|   font-size: 1rem; | ||||
|   text-align: left; | ||||
|   color: #666; /* Dark gray */ | ||||
| } | ||||
| 
 | ||||
| .article__sign { | ||||
|   font-family: 'Playfair Display', serif; /* Or a similar elegant font */ | ||||
|   font-size: 1rem; | ||||
|   float: right; | ||||
|   color: #333; /* Dark gray */ | ||||
| } | ||||
| 
 | ||||
| .pricing-box { | ||||
|   padding: 20px; | ||||
|   text-align: center; | ||||
|   min-width: 25rem; | ||||
|   border-radius: 1rem; | ||||
|   height: 230px; | ||||
|   box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); | ||||
|   margin: 50px | ||||
| } | ||||
| 
 | ||||
| .pricing-box:not(:last-child) { | ||||
|   margin: 20px; | ||||
| } | ||||
| 
 | ||||
| .pricing__price { | ||||
|   font-family: 'Playfair Display', serif; /* Or a similar elegant font */ | ||||
|   font-size: 3.5rem; | ||||
|   color: #CF3476; /* Dark gray */ | ||||
|   text-align: center; | ||||
| } | ||||
| 
 | ||||
| .pricing__subtitle { | ||||
|   font-family: 'Playfair Display', serif; /* Or a similar elegant font */ | ||||
|   font-size: 1rem; | ||||
|   color: #333; /* Dark gray */ | ||||
|   text-align: center; | ||||
| } | ||||
| 
 | ||||
| .advantage { | ||||
|   min-width: 25rem; | ||||
|   border-radius: 1rem; | ||||
|   background: transparent; | ||||
|   box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); | ||||
|   margin-top: 1.2rem; | ||||
|   margin-left: calc(20% - 2.5rem); | ||||
|   margin-right: calc(20% - 2.5rem); | ||||
| } | ||||
| 
 | ||||
| .advantage__title { | ||||
|   font-family: 'Playfair Display', serif; | ||||
|   color: #CF3476; | ||||
|   font-size: 1.5rem; | ||||
|   font-weight: bold; | ||||
|   margin-top: 0.1rem; | ||||
| } | ||||
| 
 | ||||
| .advantage__text { | ||||
|   font-family: 'Playfair Display', serif; | ||||
|   font-size: 1rem; | ||||
|   color: #333; | ||||
| } | ||||
| 
 | ||||
| .about { | ||||
|   min-width: 25rem; | ||||
|   border-radius: 0; | ||||
|   background: transparent; | ||||
| } | ||||
| 
 | ||||
| .about__parallax { | ||||
|   max-height: 36rem; | ||||
| } | ||||
| 
 | ||||
| .about__title { | ||||
|   font-family: 'Playfair Display', serif; | ||||
|   font-size: 3rem; | ||||
|   text-align: center; | ||||
|   color: #ddd; /* Dark gray */ | ||||
|   margin-bottom: 1rem; | ||||
|   margin-top: 1rem; | ||||
|   font-weight: bold; | ||||
| } | ||||
| 
 | ||||
| .about__subtitle { | ||||
|   font-family: 'Playfair Display', serif; | ||||
|   color: #CF3476; | ||||
|   font-size: 1.5rem; | ||||
|   text-align: center; | ||||
|   margin-bottom: 0.5rem; | ||||
|   font-weight: bold; | ||||
| } | ||||
| 
 | ||||
| .about__text { | ||||
|   font-family: 'Playfair Display', serif; | ||||
|   color: #aaa; /* Dark gray */ | ||||
|   font-size: 1.2rem; | ||||
|   text-align: center; | ||||
| } | ||||
|  | @ -1,68 +1,39 @@ | |||
| <template> | ||||
|   <v-parallax | ||||
|     src="https://www.danceus.org/parse/files/Bjy5anNVI0Q81M8bmrwIiuU20x4kepQTxzDBfqpR/70d831b8f51edc1f6e1a4320d52f164b_latin-dance.jpg" | ||||
|     style="max-height: 580px" | ||||
|     class="about__parallax" | ||||
|   > | ||||
|         <v-container fluid fill-height> | ||||
|     <v-row align="center" justify="center"> | ||||
|       <v-col | ||||
|         cols="12" | ||||
|         md="4" | ||||
|       /> | ||||
|       <v-col | ||||
|         cols="12" | ||||
|         md="8" | ||||
|         style="color: white; padding: 50px" | ||||
|       > | ||||
|         <v-card | ||||
|           class="overflow-y-auto" | ||||
|           max-height="460" | ||||
|           style="background-color: transparent" | ||||
|     <v-container fluid fill-height> | ||||
|       <v-row align="center" justify="center"> | ||||
|         <v-col | ||||
|           cols="12" | ||||
|           md="4" | ||||
|         /> | ||||
|         <v-col | ||||
|           cols="12" | ||||
|           md="8" | ||||
|           style="color: white; padding: 50px" | ||||
|         > | ||||
|           <h1>Vítejte v tanečním klubu!</h1> | ||||
|           <h4>Tanec je vášeň!</h4> | ||||
|           <div class="subtitle"> | ||||
|             Sportovní taneční klub jsme založili v roce 2016 s absolventy středoškolských tanečních kurzů taneční školy Bolero Ostrava. | ||||
|             Společně jsme se zaměřili na profesionální stránku tance, našli jsme pár aktivních tanečníků se kterými jsme začali pravidelně trénovat pohyb, krokové variace a techniku jednotlivých tanců. | ||||
|             Po roce tréninků se dostavily i první výsledky a dnes již tito mladí tanečníci skvěle reprezentují klub na celé řadě tanečních soutěží. | ||||
|             <br><br> | ||||
|             O rok později v roce 2017 jsme založili také společenský taneční klub pro dospělé, kteří by se rádi také tanci věnovali. | ||||
|             Příjemná atmosféra, zábava, ale i chuť se učit novým věcem, to jsou tři slova, které by mohly charakterizovat atmosféru v tanečních lekcích. | ||||
|             Taneční klub, ať už sportovní tak i společenský vítá všechny milovníky tance, kteří chtějí poodhalit tajemství ladných tanečních pohybů, sdílet nezaměnitelnou atmosféru a dovědět se více o taneční technice. | ||||
|             Našim přáním je, abyste na tanečním parketu jednoduše zářili. | ||||
|           </div> | ||||
|         </v-card> | ||||
|       </v-col> | ||||
|     </v-row> | ||||
|         </v-container> | ||||
|           <v-card class="about"> | ||||
|             <v-card-title class="about__title">Vítejte v tanečním klubu!</v-card-title> | ||||
|             <v-card-subtitle class="about__subtitle">Tanec je vášeň!</v-card-subtitle> | ||||
|             <v-card-text class="about__text"> | ||||
|               Sportovní taneční klub jsme založili v roce 2016 s absolventy středoškolských tanečních kurzů taneční školy Bolero Ostrava. | ||||
|               Společně jsme se zaměřili na profesionální stránku tance, našli jsme pár aktivních tanečníků se kterými jsme začali pravidelně trénovat pohyb, krokové variace a techniku jednotlivých tanců. | ||||
|               Po roce tréninků se dostavily i první výsledky a dnes již tito mladí tanečníci skvěle reprezentují klub na celé řadě tanečních soutěží. | ||||
|               <br><br> | ||||
|               O rok později v roce 2017 jsme založili také společenský taneční klub pro dospělé, kteří by se rádi také tanci věnovali. | ||||
|               Příjemná atmosféra, zábava, ale i chuť se učit novým věcem, to jsou tři slova, které by mohly charakterizovat atmosféru v tanečních lekcích. | ||||
|               Taneční klub, ať už sportovní tak i společenský vítá všechny milovníky tance, kteří chtějí poodhalit tajemství ladných tanečních pohybů, sdílet nezaměnitelnou atmosféru a dovědět se více o taneční technice. | ||||
|               Našim přáním je, abyste na tanečním parketu jednoduše zářili. | ||||
|             </v-card-text> | ||||
|           </v-card> | ||||
|         </v-col> | ||||
|       </v-row> | ||||
|     </v-container> | ||||
|   </v-parallax> | ||||
| </template> | ||||
| 
 | ||||
| <script setup lang="ts"> | ||||
| 
 | ||||
| </script> | ||||
| 
 | ||||
| <style scoped> | ||||
| h1 { | ||||
|   font-family: 'Playfair Display', serif; /* Or a similar elegant font */ | ||||
|   font-size: 3rem; | ||||
|   color: #ddd; /* reverse Dark gray */ | ||||
|   text-align: center; | ||||
|   margin-bottom: 1rem; | ||||
|   margin-top: 2rem; | ||||
|   text-shadow: 1px 1px 2px rgba(255, 255, 255, 0.1); /* Subtle shadow */ | ||||
| } | ||||
| 
 | ||||
| h4 { | ||||
|   font-family: 'Playfair Display', serif; | ||||
|   font-size: 1.5rem; | ||||
|   color: #aaa; /* Light gray */ | ||||
|   text-align: center; | ||||
|   margin-bottom: 0.5rem; | ||||
| } | ||||
| .subtitle { | ||||
|   font-family: 'Playfair Display', serif; /* Or a similar elegant font */ | ||||
|   font-size: 1.2rem; | ||||
|   text-align: center; | ||||
|   color: #ddd; /* Dark gray */ | ||||
| } | ||||
| </style> | ||||
| import './assets/css/main.css' | ||||
| </script> | ||||
|  | @ -1,17 +1,28 @@ | |||
| <template> | ||||
|   <h1>Co dostanete s tanečním klubem</h1> | ||||
|   <h4>Výhody tanečníka</h4> | ||||
|   <v-card | ||||
|   <h2>Výhody tanečníka</h2> | ||||
|   <card | ||||
|     v-for="advantage in advantages" | ||||
|     :key="advantage.id" | ||||
|     :prepend-icon="advantage.icon" | ||||
|     class="advantage-box" | ||||
|     :title="advantage.title" | ||||
|     class="advantage" | ||||
|   > | ||||
|     <v-card-text style="color: #666">{{ advantage.subtitle }}</v-card-text> | ||||
|   </v-card> | ||||
|     <v-row> | ||||
|       <v-col cols="12" md="1"> | ||||
|         <small-icon :icon="advantage.icon" /> | ||||
|       </v-col> | ||||
|       <v-col> | ||||
|         <v-card-title class="advantage__title"> | ||||
|           {{advantage.title}} | ||||
|         </v-card-title> | ||||
|       </v-col> | ||||
|     </v-row> | ||||
|     <v-card-text class="advantage__text"> | ||||
|       {{ advantage.subtitle }} | ||||
|     </v-card-text> | ||||
|   </card> | ||||
| </template> | ||||
| <script setup lang="ts"> | ||||
| import './assets/css/main.css' | ||||
| 
 | ||||
| const advantages = [ | ||||
|   {id: 1, icon: "mdi mdi-heart", title: "Zdravé tělo a mysl", | ||||
|  | @ -21,35 +32,4 @@ const advantages = [ | |||
|   {id: 3, icon: "mdi mdi-account-group", title: "Krealitvní a zábavní lidé", | ||||
|     subtitle: "Příjemná společnost a tým lidí, ce kterém se také můžete spolehnout na individuální přístup lektorů, kteří tu vždy budou právě pro Vás."}, | ||||
| ] | ||||
| 
 | ||||
| </script> | ||||
| 
 | ||||
| <style scoped> | ||||
| h1 { | ||||
|   font-family: 'Playfair Display', serif; /* Or a similar elegant font */ | ||||
|   font-size: 3rem; | ||||
|   color: #333; /* Dark gray */ | ||||
|   text-align: center; | ||||
|   margin-bottom: 1rem; | ||||
|   margin-top: 2rem; | ||||
|   text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1); /* Subtle shadow */ | ||||
| } | ||||
| 
 | ||||
| h4 { | ||||
|   font-family: 'Playfair Display', serif; | ||||
|   font-size: 1.5rem; | ||||
|   color: #666; /* Light gray */ | ||||
|   text-align: center; | ||||
|   margin-bottom: 0.5rem; | ||||
| } | ||||
| 
 | ||||
| .advantage-box { | ||||
|   min-width: 400px; | ||||
|   border-radius: 15px; | ||||
|   box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); | ||||
|   margin-top: 20px; | ||||
|   margin-left: calc(20% - 40px); /* Subtract half of min-width from left margin */ | ||||
|   margin-right: calc(20% - 40px); /* Subtract half of min-width from right margin */ | ||||
| } | ||||
| 
 | ||||
| </style> | ||||
| </script> | ||||
|  | @ -1,63 +1,67 @@ | |||
| <template> | ||||
|   <h1>Kontaktujte nás!</h1> | ||||
|   <v-card> | ||||
|   <v-form v-model="valid" @submit="sendContact"> | ||||
|     <v-container> | ||||
|       <v-row> | ||||
|         <v-col | ||||
|           cols="12" | ||||
|           md="4" | ||||
|         > | ||||
|           <v-text-field | ||||
|             v-model="fullName" | ||||
|             label="Jméno a příjmení" | ||||
|           ></v-text-field> | ||||
|         </v-col> | ||||
| 
 | ||||
|         <v-col | ||||
|           cols="12" | ||||
|           md="4" | ||||
|         > | ||||
|           <v-text-field | ||||
|             v-model="email" | ||||
|             label="Emailová adresa *" | ||||
|             required | ||||
|           ></v-text-field> | ||||
|         </v-col> | ||||
| 
 | ||||
|         <v-col | ||||
|           cols="12" | ||||
|           md="4" | ||||
|         > | ||||
|           <v-text-field | ||||
|             v-model="phone" | ||||
|             label="Telefonní číslo" | ||||
|           ></v-text-field> | ||||
|         </v-col> | ||||
|       </v-row> | ||||
|       <v-row> | ||||
|         <v-col> | ||||
|           <v-textarea | ||||
|             v-model="textField" | ||||
|             label="Váš dotaz *" | ||||
|             required | ||||
|           /> | ||||
|         </v-col> | ||||
|       </v-row> | ||||
|       <v-row> | ||||
|         <v-col> | ||||
|           <v-btn | ||||
|             type="submit" | ||||
|   <v-card class="contact"> | ||||
|     <v-form v-model="valid" @submit="sendContact"> | ||||
|       <v-container> | ||||
|         <v-card-title class="contact__title">Kontaktujte nás!</v-card-title> | ||||
|         <v-row> | ||||
|           <v-col | ||||
|             cols="12" | ||||
|             md="4" | ||||
|           > | ||||
|             Poslat | ||||
|           </v-btn> | ||||
|         </v-col> | ||||
|       </v-row> | ||||
|     </v-container> | ||||
|   </v-form> | ||||
|     </v-card> | ||||
|             <v-text-field | ||||
|               v-model="fullName" | ||||
|               label="Jméno" | ||||
|               variant="underlined" | ||||
|             ></v-text-field> | ||||
|           </v-col> | ||||
| 
 | ||||
|           <v-col | ||||
|             cols="12" | ||||
|             md="4" | ||||
|           > | ||||
|             <v-text-field | ||||
|               v-model="email" | ||||
|               label="Emailová adresa" | ||||
|               variant="underlined" | ||||
|             ></v-text-field> | ||||
|           </v-col> | ||||
| 
 | ||||
|           <v-col | ||||
|             cols="12" | ||||
|             md="4" | ||||
|           > | ||||
|             <v-text-field | ||||
|               v-model="phone" | ||||
|               label="Telefonní číslo" | ||||
|               variant="underlined" | ||||
|             ></v-text-field> | ||||
|           </v-col> | ||||
|         </v-row> | ||||
|         <v-row> | ||||
|           <v-col> | ||||
|             <v-textarea | ||||
|               v-model="textField" | ||||
|               label="Váš dotaz *" | ||||
|               variant="underlined" | ||||
|             /> | ||||
|           </v-col> | ||||
|         </v-row> | ||||
|         <v-row> | ||||
|           <v-col> | ||||
|             <v-btn | ||||
|               class="contact__button" | ||||
|               type="submit" | ||||
|             > | ||||
|               Poslat | ||||
|             </v-btn> | ||||
|           </v-col> | ||||
|         </v-row> | ||||
|       </v-container> | ||||
|     </v-form> | ||||
|   </v-card> | ||||
| </template> | ||||
| <script setup lang="ts"> | ||||
| import './assets/css/main.css' | ||||
| 
 | ||||
| const valid = ref<boolean>(false); | ||||
| 
 | ||||
|  | @ -70,16 +74,4 @@ function sendContact() { | |||
|   console.log("KONTAKT NEZASLAN"); | ||||
| } | ||||
| 
 | ||||
| </script> | ||||
| 
 | ||||
| <style scoped> | ||||
| h1 { | ||||
|   font-family: 'Playfair Display', serif; /* Or a similar elegant font */ | ||||
|   font-size: 3rem; | ||||
|   color: #333; /* Dark gray */ | ||||
|   text-align: center; | ||||
|   margin-bottom: 1rem; | ||||
|   margin-top: 2rem; | ||||
|   text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1); /* Subtle shadow */ | ||||
| } | ||||
| </style> | ||||
| </script> | ||||
|  | @ -1,6 +1,7 @@ | |||
| <template> | ||||
|   <h1>Kurzy - cena</h1> | ||||
|   <h4>Vyberte, co Vám nejlépe vyhovuje</h4> | ||||
|   <h2>Vyberte, co Vám nejlépe vyhovuje</h2> | ||||
| 
 | ||||
|   <v-row> | ||||
|     <v-col | ||||
|         cols="12" | ||||
|  | @ -8,18 +9,17 @@ | |||
|         v-for="course in courses" | ||||
|         :key="course.id" | ||||
|     > | ||||
|       <v-card | ||||
|         class="pricing-box" | ||||
|       > | ||||
|         <h2>{{ course.name }}</h2> | ||||
|         <v-card-subtitle><div class="subtitle">{{ course.time }}</div></v-card-subtitle> | ||||
|         <v-card-title><div class="price">{{ course.price }}</div></v-card-title> | ||||
|         <v-card-subtitle v-if="course.desc"><div class="subtitle">{{ course.desc }}</div></v-card-subtitle> | ||||
|       <v-card class="pricing-box"> | ||||
|         <h3>{{ course.name }}</h3> | ||||
|         <v-card-subtitle><div class="pricing__subtitle">{{ course.time }}</div></v-card-subtitle> | ||||
|         <v-card-title><div class="pricing__price">{{ course.price }}</div></v-card-title> | ||||
|         <v-card-subtitle v-if="course.desc"><div class="pricing__subtitle">{{ course.desc }}</div></v-card-subtitle> | ||||
|       </v-card> | ||||
|     </v-col> | ||||
|   </v-row> | ||||
| </template> | ||||
| <script setup lang="ts"> | ||||
| import './assets/css/main.css' | ||||
| 
 | ||||
| const courses = [ | ||||
|   {id: 1, name: "Sportovní taneční klub", time: "24 hodin/měsíc", price: "600 Kč", desc: false}, | ||||
|  | @ -27,58 +27,4 @@ const courses = [ | |||
|   {id: 3, name: "Volný trénink s lektorem", time: "60min / taneční pár", price: "100 Kč", desc: "Pro členy tanečního klubu"}, | ||||
| ] | ||||
| 
 | ||||
| </script> | ||||
| 
 | ||||
| <style scoped> | ||||
| h1 { | ||||
|   font-family: 'Playfair Display', serif; /* Or a similar elegant font */ | ||||
|   font-size: 3rem; | ||||
|   color: #333; /* Dark gray */ | ||||
|   text-align: center; | ||||
|   margin-bottom: 1rem; | ||||
|   margin-top: 2rem; | ||||
|   text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1); /* Subtle shadow */ | ||||
| } | ||||
| 
 | ||||
| h2 { | ||||
|   font-family: 'Playfair Display', serif; | ||||
|   font-size: 1.7rem; | ||||
|   color: #666; /* Light gray */ | ||||
| } | ||||
| 
 | ||||
| h4 { | ||||
|   font-family: 'Playfair Display', serif; | ||||
|   font-size: 1.5rem; | ||||
|   color: #666; /* Light gray */ | ||||
|   text-align: center; | ||||
|   margin-bottom: 0.5rem; | ||||
| } | ||||
| 
 | ||||
| .pricing-box { | ||||
|   padding: 20px; | ||||
|   text-align: center; | ||||
|   min-width: 80%; | ||||
|   border-radius: 15px; | ||||
|   height: 230px; | ||||
|   box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); | ||||
|   margin: 50px | ||||
| } | ||||
| 
 | ||||
| .pricing-box:not(:last-child) { | ||||
|   margin: 20px; | ||||
| } | ||||
| 
 | ||||
| .price { | ||||
|   font-family: 'Playfair Display', serif; /* Or a similar elegant font */ | ||||
|   font-size: 3.5rem; | ||||
|   color: #333; /* Dark gray */ | ||||
|   text-align: center; | ||||
| } | ||||
| 
 | ||||
| .subtitle { | ||||
|   font-family: 'Playfair Display', serif; /* Or a similar elegant font */ | ||||
|   font-size: 1rem; | ||||
|   color: #333; /* Dark gray */ | ||||
|   text-align: center; | ||||
| } | ||||
| </style> | ||||
| </script> | ||||
|  | @ -1,75 +0,0 @@ | |||
| <template> | ||||
|   <h1>Galerie</h1> | ||||
|   <v-row> | ||||
|     <v-col | ||||
|       v-for="(photo, index) in photos" | ||||
|       :key="index" | ||||
|       cols="4" | ||||
|       style="padding: 0;" | ||||
|     > | ||||
|       <v-img | ||||
|         :lazy-src="photo.src" | ||||
|         :src="photo.src" | ||||
|         aspect-ratio="1" | ||||
|         cover | ||||
|       > | ||||
|         <template v-slot:placeholder> | ||||
|           <v-row> | ||||
|             <v-progress-circular | ||||
|               color="grey-lighten-5" | ||||
|               indeterminate | ||||
|             ></v-progress-circular> | ||||
|           </v-row> | ||||
|         </template> | ||||
|       </v-img> | ||||
|     </v-col> | ||||
|   </v-row> | ||||
| </template> | ||||
| <script setup lang="ts"> | ||||
| 
 | ||||
| const photos = [ | ||||
|   {src: "https://www.danceus.org/parse/files/Bjy5anNVI0Q81M8bmrwIiuU20x4kepQTxzDBfqpR/70d831b8f51edc1f6e1a4320d52f164b_latin-dance.jpg"}, | ||||
|   {src: "https://avatars0.githubusercontent.com/u/9064066?v=4&s=460"}, | ||||
|   {src: "https://cdn.vuetifyjs.com/images/profiles/marcus.jpg"}, | ||||
|   {src: "https://danceostrava.cz/wp-content/uploads/2021/10/IMG_5203-scaled.jpg"}, | ||||
|   {src: "https://cdn11.bigcommerce.com/s-07991/product_images/uploaded_images/latin-dance.jpg"}, | ||||
|   {src: "https://www.danceus.org/parse/files/Bjy5anNVI0Q81M8bmrwIiuU20x4kepQTxzDBfqpR/70d831b8f51edc1f6e1a4320d52f164b_latin-dance.jpg"}, | ||||
|   {src: "https://avatars0.githubusercontent.com/u/9064066?v=4&s=460"}, | ||||
|   {src: "https://cdn.vuetifyjs.com/images/profiles/marcus.jpg"}, | ||||
|   {src: "https://danceostrava.cz/wp-content/uploads/2021/10/IMG_5203-scaled.jpg"}, | ||||
|   {src: "https://cdn11.bigcommerce.com/s-07991/product_images/uploaded_images/latin-dance.jpg"}, | ||||
|   {src: "https://www.danceus.org/parse/files/Bjy5anNVI0Q81M8bmrwIiuU20x4kepQTxzDBfqpR/70d831b8f51edc1f6e1a4320d52f164b_latin-dance.jpg"}, | ||||
|   {src: "https://avatars0.githubusercontent.com/u/9064066?v=4&s=460"}, | ||||
|   {src: "https://cdn.vuetifyjs.com/images/profiles/marcus.jpg"}, | ||||
|   {src: "https://danceostrava.cz/wp-content/uploads/2021/10/IMG_5203-scaled.jpg"}, | ||||
|   {src: "https://cdn11.bigcommerce.com/s-07991/product_images/uploaded_images/latin-dance.jpg"}, | ||||
|   {src: "https://www.danceus.org/parse/files/Bjy5anNVI0Q81M8bmrwIiuU20x4kepQTxzDBfqpR/70d831b8f51edc1f6e1a4320d52f164b_latin-dance.jpg"}, | ||||
|   {src: "https://avatars0.githubusercontent.com/u/9064066?v=4&s=460"}, | ||||
|   {src: "https://cdn.vuetifyjs.com/images/profiles/marcus.jpg"}, | ||||
|   {src: "https://danceostrava.cz/wp-content/uploads/2021/10/IMG_5203-scaled.jpg"}, | ||||
|   {src: "https://cdn11.bigcommerce.com/s-07991/product_images/uploaded_images/latin-dance.jpg"}, | ||||
|   {src: "https://www.danceus.org/parse/files/Bjy5anNVI0Q81M8bmrwIiuU20x4kepQTxzDBfqpR/70d831b8f51edc1f6e1a4320d52f164b_latin-dance.jpg"}, | ||||
|   {src: "https://avatars0.githubusercontent.com/u/9064066?v=4&s=460"}, | ||||
|   {src: "https://cdn.vuetifyjs.com/images/profiles/marcus.jpg"}, | ||||
|   {src: "https://danceostrava.cz/wp-content/uploads/2021/10/IMG_5203-scaled.jpg"}, | ||||
|   {src: "https://cdn11.bigcommerce.com/s-07991/product_images/uploaded_images/latin-dance.jpg"}, | ||||
|   {src: "https://www.danceus.org/parse/files/Bjy5anNVI0Q81M8bmrwIiuU20x4kepQTxzDBfqpR/70d831b8f51edc1f6e1a4320d52f164b_latin-dance.jpg"}, | ||||
|   {src: "https://avatars0.githubusercontent.com/u/9064066?v=4&s=460"}, | ||||
|   {src: "https://cdn.vuetifyjs.com/images/profiles/marcus.jpg"}, | ||||
|   {src: "https://danceostrava.cz/wp-content/uploads/2021/10/IMG_5203-scaled.jpg"}, | ||||
|   {src: "https://cdn11.bigcommerce.com/s-07991/product_images/uploaded_images/latin-dance.jpg"}, | ||||
| ] | ||||
| 
 | ||||
| </script> | ||||
| 
 | ||||
| <style scoped> | ||||
| h1 { | ||||
|   font-family: 'Playfair Display', serif; /* Or a similar elegant font */ | ||||
|   font-size: 3rem; | ||||
|   color: #333; /* Dark gray */ | ||||
|   text-align: center; | ||||
|   margin-bottom: 1rem; | ||||
|   margin-top: -2rem; | ||||
|   text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1); /* Subtle shadow */ | ||||
| } | ||||
| </style> | ||||
|  | @ -1,48 +1,49 @@ | |||
| <template> | ||||
|   <h1>Články</h1> | ||||
|   <v-card> | ||||
|   <h1>Aktuality</h1> | ||||
|   <h2>Přečtěte si aktuality z našeho klubu</h2> | ||||
|     <v-row> | ||||
|     <v-col | ||||
|       v-for="(article, index) in articles" | ||||
|       :key="index" | ||||
|       cols="12" | ||||
|       md="6" | ||||
|     > | ||||
|       <v-row> | ||||
|         <v-col | ||||
|           cols="12" | ||||
|           md="4" | ||||
|         > | ||||
|           <v-img | ||||
|             :lazy-src="article.src" | ||||
|             :src="article.src" | ||||
|             aspect-ratio="1" | ||||
|             cover | ||||
|       <v-col | ||||
|         v-for="(article, index) in articles" | ||||
|         :key="index" | ||||
|         cols="12" | ||||
|         md="6" | ||||
|       > | ||||
|       <v-card class="article"> | ||||
|         <v-row> | ||||
|           <v-col> | ||||
|             <v-img | ||||
|               :lazy-src="article.src" | ||||
|               :src="article.src" | ||||
|               aspect-ratio="1" | ||||
|               cover | ||||
|             > | ||||
|               <template v-slot:placeholder> | ||||
|                 <v-row> | ||||
|                   <v-progress-circular | ||||
|                     color="grey-lighten-5" | ||||
|                     indeterminate | ||||
|                   ></v-progress-circular> | ||||
|                 </v-row> | ||||
|               </template> | ||||
|             </v-img> | ||||
|           </v-col> | ||||
|           <v-col | ||||
|             cols="12" | ||||
|             md="8" | ||||
|           > | ||||
|             <template v-slot:placeholder> | ||||
|               <v-row> | ||||
|                 <v-progress-circular | ||||
|                   color="grey-lighten-5" | ||||
|                   indeterminate | ||||
|                 ></v-progress-circular> | ||||
|               </v-row> | ||||
|             </template> | ||||
|           </v-img> | ||||
|         </v-col> | ||||
|         <v-col | ||||
|           cols="12" | ||||
|           md="8" | ||||
|         > | ||||
|             <v-row><v-card-title><h2>{{ article.title }}</h2></v-card-title></v-row> | ||||
|             <v-row><v-card-subtitle><h4>{{ article.autor }}, ({{ article.date}})</h4></v-card-subtitle></v-row> | ||||
|             <v-row><v-card-text><div class="subtitle">{{ article.desc }}</div></v-card-text></v-row> | ||||
|         </v-col> | ||||
|       </v-row> | ||||
|             <v-row class="article__title">{{ article.title }}</v-row> | ||||
|             <v-row class="article__date">{{ article.date}}</v-row> | ||||
|             <v-row class="article__text">{{ article.desc }}</v-row> | ||||
|             <v-row class="article__sign">{{ article.autor }}</v-row> | ||||
|           </v-col> | ||||
|         </v-row> | ||||
|       </v-card> | ||||
|     </v-col> | ||||
|   </v-row> | ||||
|   </v-card> | ||||
| </template> | ||||
| <script setup lang="ts"> | ||||
| import './assets/css/main.css' | ||||
| 
 | ||||
| const articles = [ | ||||
|   { | ||||
|     autor: "Bebloid Obecný", | ||||
|  | @ -51,30 +52,12 @@ const articles = [ | |||
|     src: "https://melbourneentertainmentco.com.au/wp-content/uploads/2020/04/Juan-and-Jess-600x600-profile.jpg", | ||||
|     desc: "V neděli 2. 2. David potrolil sambu, kde místo tančení lítal jako zmatená včelka. Terka, ačkoliv před soutěží velice zmatkovala a sebepoškozovala se, tak na parketě předvedla výborné představení. Na další trolení se můžeme všichni těšit do Brna na konci tohoto měsíce. " | ||||
|   }, | ||||
|   { | ||||
|     autor: "Bebloid Obecný", | ||||
|     date: "2. 2. 2025", | ||||
|     title: "David potrolil soutěž", | ||||
|     src: "https://melbourneentertainmentco.com.au/wp-content/uploads/2020/04/Juan-and-Jess-600x600-profile.jpg", | ||||
|     desc: "V neděli 2. 2. David potrolil sambu, kde místo tančení lítal jako zmatená včelka. Terka, ačkoliv před soutěží velice zmatkovala a sebepoškozovala se, tak na parketě předvedla výborné představení. Na další trolení se můžeme všichni těšit do Brna na konci tohoto měsíce. " | ||||
|   }, | ||||
| ] | ||||
| </script> | ||||
| 
 | ||||
| <style scoped> | ||||
| h1 { | ||||
|   font-family: 'Playfair Display', serif; /* Or a similar elegant font */ | ||||
|   font-size: 3rem; | ||||
|   color: #333; /* Dark gray */ | ||||
|   text-align: center; | ||||
|   text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1); /* Subtle shadow */ | ||||
|   margin-top: 2rem; | ||||
|   margin-bottom: 1rem; | ||||
| } | ||||
| 
 | ||||
| h2 { | ||||
|   font-family: 'Playfair Display', serif; | ||||
|   text-align: center; | ||||
|   font-size: 1.7rem; | ||||
|   color: #666; /* Light gray */ | ||||
| } | ||||
| 
 | ||||
| .subtitle { | ||||
|   font-family: 'Playfair Display', serif; /* Or a similar elegant font */ | ||||
|   font-size: 1rem; | ||||
|   color: #333; /* Dark gray */ | ||||
| } | ||||
| </style> | ||||
| </script> | ||||
|  | @ -1,5 +1,6 @@ | |||
| <template> | ||||
|   <h1>Naši trenéři a lektoři</h1> | ||||
|   <h2>Seznamte se s námi!</h2> | ||||
|     <v-row style="margin-bottom: 2rem;"> | ||||
|       <v-col class="text-center" cols="12" md="3" v-for="lector in lectors" :key="lector.id"> | ||||
|           <v-avatar | ||||
|  | @ -11,16 +12,18 @@ | |||
|             <v-img :src="lector.img" cover></v-img> | ||||
|           </v-avatar> | ||||
|         <h2>{{lector.name}}</h2> | ||||
|         <div class="subtitle">{{ lector.desc }}</div> | ||||
|         <h4>{{ lector.desc }}</h4> | ||||
|       </v-col> | ||||
|     </v-row> | ||||
| </template> | ||||
| <script setup lang="ts"> | ||||
| import './assets/css/main.css' | ||||
| 
 | ||||
| const lectors = [ | ||||
|   { | ||||
|     id: 1, | ||||
|     name: "Ondřej Gilar", | ||||
|     img: "https://cdn.vuetifyjs.com/images/profiles/marcus.jpg", | ||||
|     img: "/Beblik.jpg", | ||||
|     desc: "Trenér - latinskoamerické tance a Pro-AM", | ||||
|   }, | ||||
|   { | ||||
|  | @ -42,30 +45,4 @@ const lectors = [ | |||
|     desc: "Lektorka - tance pro děti", | ||||
|   }, | ||||
| ] | ||||
| </script> | ||||
| 
 | ||||
| <style scoped> | ||||
| h1 { | ||||
|   font-family: 'Playfair Display', serif; /* Or a similar elegant font */ | ||||
|   font-size: 3rem; | ||||
|   color: #333; /* Dark gray */ | ||||
|   text-align: center; | ||||
|   text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1); /* Subtle shadow */ | ||||
|   margin-top: 2rem; | ||||
|   margin-bottom: 1rem; | ||||
| } | ||||
| 
 | ||||
| h2 { | ||||
|   font-family: 'Playfair Display', serif; | ||||
|   text-align: center; | ||||
|   font-size: 1.7rem; | ||||
|   color: #666; /* Light gray */ | ||||
| } | ||||
| 
 | ||||
| .subtitle { | ||||
|   font-family: 'Playfair Display', serif; /* Or a similar elegant font */ | ||||
|   font-size: 1rem; | ||||
|   color: #333; /* Dark gray */ | ||||
|   text-align: center; | ||||
| } | ||||
| </style> | ||||
| </script> | ||||
|  | @ -8,7 +8,7 @@ | |||
|           cols="12" | ||||
|           md="4" | ||||
|         > | ||||
|           <h4>Kontakt</h4> | ||||
|           <h5>Kontakt</h5> | ||||
|           <v-divider :thickness="3" /> | ||||
|           <div class="footer-text">Tomáš Ožana</div> | ||||
|           <div class="footer-text">Zimmlerova 2893/47, Ostrava</div> | ||||
|  | @ -20,27 +20,26 @@ | |||
|           cols="12" | ||||
|           md="4" | ||||
|         > | ||||
|           <h4>Tréningové hodiny</h4> | ||||
|           <h5>Tréningové hodiny</h5> | ||||
|           <v-divider :thickness="3" /> | ||||
|           <div class="footer-text">Pondělí: <span class="timespan">16:30 - 18:30 (VS)</span></div> | ||||
|           <div class="footer-text">Úterý: <span class="timespan">16:30 - 18:30 (VS)</span></div> | ||||
|           <div class="footer-text">Středa: <span class="timespan">16:30 - 18:30 (VS)</span></div> | ||||
|           <div class="footer-text">Čtvrtek: <span class="timespan">16:30 - 18:30 (VS)</span></div> | ||||
|           <div class="footer-text">Pátek: <span class="timespan">16:30 - 18:30 (VS)</span></div> | ||||
|           <div class="footer-text">Sobota: <span class="timespan">16:30 - 18:30 (VS)</span></div> | ||||
|           <div class="footer-text">Neděle: <span class="timespan">16:30 - 18:30 (VS)</span></div> | ||||
|           <div class="to_left">Pondělí: <span class="to_right">16:30 - 18:30 (VS)</span></div> | ||||
|           <div class="to_left">Úterý: <span class="to_right">16:30 - 18:30 (VS)</span></div> | ||||
|           <div class="to_left">Středa: <span class="to_right">16:30 - 18:30 (VS)</span></div> | ||||
|           <div class="to_left">Čtvrtek: <span class="to_right">16:30 - 18:30 (VS)</span></div> | ||||
|           <div class="to_left">Pátek: <span class="to_right">16:30 - 18:30 (VS)</span></div> | ||||
|           <div class="to_left">Sobota: <span class="to_right">16:30 - 18:30 (VS)</span></div> | ||||
|           <div class="to_left">Neděle: <span class="to_right">16:30 - 18:30 (VS)</span></div> | ||||
|         </v-col> | ||||
| 
 | ||||
|         <v-col | ||||
|           cols="12" | ||||
|           md="4" | ||||
|         > | ||||
|           <h4>Sociální sítě</h4> | ||||
|           <h5>Sociální sítě</h5> | ||||
|           <v-divider :thickness="3" /> | ||||
| <!--          https://pictogrammers.com/library/mdi/icon/youtube/--> | ||||
|           <span class="mdi mdi-facebook" style="font-size: 60px"></span> | ||||
|           <span class="mdi mdi-instagram" style="font-size: 60px"></span> | ||||
|           <span class="mdi mdi-youtube" style="font-size: 60px"></span> | ||||
|           <big-icon icon="mdi-facebook" /> | ||||
|           <big-icon icon="mdi-instagram" /> | ||||
|           <big-icon icon="mdi-youtube" /> | ||||
|         </v-col> | ||||
|       </v-row> | ||||
|       <v-divider :thickness="3" style="margin-top: 60px" /> | ||||
|  | @ -60,32 +59,6 @@ | |||
|   </v-footer> | ||||
| </template> | ||||
| <script setup lang="ts"> | ||||
| import './assets/css/main.css' | ||||
| 
 | ||||
| </script> | ||||
| 
 | ||||
| <style scoped> | ||||
| h4 { | ||||
|   font-family: 'Playfair Display', serif; | ||||
|   font-size: 1.5rem; | ||||
|   color: #aaa; /* Light gray */ | ||||
|   text-align: center; | ||||
|   margin-bottom: 0.5rem; | ||||
| } | ||||
| 
 | ||||
| h5 { | ||||
|   font-family: 'Playfair Display', serif; | ||||
|   font-size: 1rem; | ||||
|   color: #aaa; /* Light gray */ | ||||
|   margin-top: 1rem; | ||||
| } | ||||
| 
 | ||||
| .footer-text { | ||||
|   font-family: 'Playfair Display', serif; | ||||
|   font-size: 1rem; | ||||
|   color: #aaa; /* Light gray */ | ||||
| } | ||||
| 
 | ||||
| .timespan { | ||||
|   float: right; /* Aligns the timespan to the right */ | ||||
| } | ||||
| </style> | ||||
| </script> | ||||
|  | @ -1,57 +1,120 @@ | |||
| <template> | ||||
|     <v-app-bar  style="position: sticky"> | ||||
|      <v-app-bar-nav-icon | ||||
|          @click="drawer = !drawer" | ||||
|          class="d-flex d-sm-none" | ||||
|      /> | ||||
|       <span class="mdi mdi-dance-ballroom" style="font-size: 60px"></span> | ||||
|       Taneční klub Ostrava | ||||
|           <v-tabs | ||||
|             v-model="tab" | ||||
|             align-with-title | ||||
|             class="d-none d-sm-flex" | ||||
|           > | ||||
| 
 | ||||
|             <v-tab | ||||
|               v-for="item in items" | ||||
|               :key="item" | ||||
|             > | ||||
|               {{ item }} | ||||
|             </v-tab> | ||||
|           </v-tabs> | ||||
|     </v-app-bar> | ||||
| 
 | ||||
|     <!-- Add a navigation bar --> | ||||
|     <v-navigation-drawer | ||||
|       v-model="drawer" | ||||
|       absolute | ||||
|       fixed | ||||
|       temporary | ||||
|     > | ||||
|       <v-list | ||||
|         nav | ||||
|         dense | ||||
|     <v-layout> | ||||
|       <v-app-bar | ||||
|         color="primary" | ||||
|         style="position: sticky" | ||||
|       > | ||||
|         <v-list-item> | ||||
|           <v-list-item v-for="(item, index) in items"> | ||||
|             <v-list-item-title @click="tab = index">{{ item }}</v-list-item-title> | ||||
|         <v-app-bar-nav-icon | ||||
|             @click="drawer = !drawer" | ||||
|             class="d-flex d-sm-none" | ||||
|         /> | ||||
|         <a href=""><big-icon icon="mdi-dance-ballroom" /></a> | ||||
|         <v-app-bar-title>Taneční klub Ostrava</v-app-bar-title> | ||||
| 
 | ||||
|         <v-tabs | ||||
|           v-for="(tab, index) in tabs" :key="index" | ||||
|           v-model="currentTab" | ||||
|           align-with-title | ||||
|           class="d-none d-sm-flex" | ||||
|           color="color" | ||||
|         > | ||||
|           <v-tab :text="tab.name" :value="tab.name" @click="useGoTo(tab.ref)"></v-tab> | ||||
|         </v-tabs> | ||||
| 
 | ||||
| 
 | ||||
| <!--        <v-col--> | ||||
| <!--          class="text-right"--> | ||||
| <!--          @click="toggleTheme"--> | ||||
| <!--        >--> | ||||
| <!--          <big-icon icon="mdi-lightbulb-cfl"/>--> | ||||
| <!--        </v-col>--> | ||||
|       </v-app-bar> | ||||
| 
 | ||||
|       <v-fab | ||||
|         :key="currentTab.ref" | ||||
|         class="ms-4 mb-4" | ||||
|       ></v-fab> | ||||
| 
 | ||||
|       <v-navigation-drawer | ||||
|         v-model="drawer" | ||||
|         absolute | ||||
|         fixed | ||||
|         left | ||||
|       > | ||||
|         <v-list | ||||
|           nav | ||||
|           dense | ||||
|         > | ||||
|           <v-list-item> | ||||
|             <v-list-item v-for="(tab, index) in tabs" :key="index"> | ||||
|               <v-list-item-title @click="useGoTo(tab.ref)">{{ tab.name }}</v-list-item-title> | ||||
|             </v-list-item> | ||||
|           </v-list-item> | ||||
|         </v-list-item> | ||||
|       </v-list> | ||||
|     </v-navigation-drawer> | ||||
|         </v-list> | ||||
|       </v-navigation-drawer> | ||||
| 
 | ||||
|     </v-layout> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| export default { | ||||
|   el: '#app', | ||||
|   data () { | ||||
|     return { | ||||
|       drawer: false, | ||||
|       tab: null, | ||||
|       items: [ | ||||
|         'O nás', "Trenéři", 'Kurzy', 'Galerie', 'Aktuality', 'Kontakty', | ||||
|       ], | ||||
| <script setup lang="ts"> | ||||
| function waitForElement (selector: string, timeout = 2000) : Promise<Element> { | ||||
|   return new Promise((resolve, reject) => { | ||||
|     const startTime = Date.now(); | ||||
|     // eslint-disable-next-line prefer-const | ||||
|     let observer: MutationObserver; | ||||
| 
 | ||||
|     function checkElement () { | ||||
|       const element = document.querySelector(selector); | ||||
| 
 | ||||
|       if (element) { | ||||
|         resolve(element); | ||||
|         observer.disconnect(); // Stop observing DOM changes | ||||
|       } else if (Date.now() - startTime >= timeout) { | ||||
|         reject(new Error(`Timeout exceeded while waiting for element with selector '${selector}'`)); | ||||
|         observer.disconnect(); // Stop observing DOM changes | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|     observer = new MutationObserver(checkElement); | ||||
|     observer.observe(document.body, { childList: true, subtree: true }); | ||||
| 
 | ||||
|     checkElement(); // Check initially in case the element is already present | ||||
|   }); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| async function useGoTo (selector: string, props: {offset? :number} = {}): Promise<void> { | ||||
|   console.log(selector); | ||||
|   let element: Element; | ||||
|   try { | ||||
|     element = await waitForElement(selector); | ||||
|   } catch { | ||||
|     // element not found | ||||
|     return; | ||||
|   } | ||||
|   const yOffset = props?.offset ?? -80; | ||||
|   const y = element.getBoundingClientRect().top + window.pageYOffset + yOffset; | ||||
| 
 | ||||
|   window.scrollTo({ top: y, behavior: "smooth" }); | ||||
| } | ||||
| 
 | ||||
| const currentTab = ref({name: 'O nás', ref: "#about", href: "o-nas"}); | ||||
| const drawer = ref(null) | ||||
| const tabs = [ | ||||
|   {name: 'O nás', ref: "#about", href: "o-nas"}, | ||||
|   {name: "Trenéři", ref: "#trainers", href: "treneri"}, | ||||
|   {name: 'Kurzy', ref: "#courses", href: "kurzy"}, | ||||
|   {name: 'Galerie', ref: "#gallery", href: "galerie"}, | ||||
|   {name: 'Aktuality', ref: "#article", href: "clanky"}, | ||||
|   {name: 'Kontakty', ref: "#contact", href: "kontakt"}, | ||||
| ] | ||||
| 
 | ||||
| // import { useTheme } from 'vuetify' | ||||
| // | ||||
| // const theme = useTheme() | ||||
| // | ||||
| // function toggleTheme () { | ||||
| //   theme.global.name.value = theme.global.current.value.dark ? 'light' : 'dark' | ||||
| // } | ||||
| 
 | ||||
| </script> | ||||
|  | @ -1,11 +1,11 @@ | |||
| <template> | ||||
|   <v-layout> | ||||
|     <v-app app> | ||||
|       <menu-header/> | ||||
|       <menu-header /> | ||||
|       <v-main> | ||||
|         <slot /> | ||||
|       </v-main> | ||||
|       <menu-footer/> | ||||
|       <menu-footer /> | ||||
|     </v-app> | ||||
|   </v-layout> | ||||
| </template> | ||||
|  | @ -1,10 +1,63 @@ | |||
| <template> | ||||
|   <gallery/> | ||||
|   <h1>Galerie</h1> | ||||
|   <v-row> | ||||
|     <v-col | ||||
|       v-for="(photo, index) in photos" | ||||
|       :key="index" | ||||
|       cols="4" | ||||
|       style="padding: 0;" | ||||
|     > | ||||
|       <v-img | ||||
|         :lazy-src="photo.src" | ||||
|         :src="photo.src" | ||||
|         aspect-ratio="1" | ||||
|         cover | ||||
|       > | ||||
|         <template v-slot:placeholder> | ||||
|           <v-row> | ||||
|             <v-progress-circular | ||||
|               color="grey-lighten-5" | ||||
|               indeterminate | ||||
|             ></v-progress-circular> | ||||
|           </v-row> | ||||
|         </template> | ||||
|       </v-img> | ||||
|     </v-col> | ||||
|   </v-row> | ||||
| </template> | ||||
| <script setup lang="ts"> | ||||
| import './assets/css/main.css' | ||||
| 
 | ||||
| </script> | ||||
| 
 | ||||
| <style scoped> | ||||
| 
 | ||||
| </style> | ||||
| const photos = [ | ||||
|   {src: "https://www.danceus.org/parse/files/Bjy5anNVI0Q81M8bmrwIiuU20x4kepQTxzDBfqpR/70d831b8f51edc1f6e1a4320d52f164b_latin-dance.jpg"}, | ||||
|   {src: "https://avatars0.githubusercontent.com/u/9064066?v=4&s=460"}, | ||||
|   {src: "https://cdn.vuetifyjs.com/images/profiles/marcus.jpg"}, | ||||
|   {src: "https://danceostrava.cz/wp-content/uploads/2021/10/IMG_5203-scaled.jpg"}, | ||||
|   {src: "https://cdn11.bigcommerce.com/s-07991/product_images/uploaded_images/latin-dance.jpg"}, | ||||
|   {src: "https://www.danceus.org/parse/files/Bjy5anNVI0Q81M8bmrwIiuU20x4kepQTxzDBfqpR/70d831b8f51edc1f6e1a4320d52f164b_latin-dance.jpg"}, | ||||
|   {src: "https://avatars0.githubusercontent.com/u/9064066?v=4&s=460"}, | ||||
|   {src: "https://cdn.vuetifyjs.com/images/profiles/marcus.jpg"}, | ||||
|   {src: "https://danceostrava.cz/wp-content/uploads/2021/10/IMG_5203-scaled.jpg"}, | ||||
|   {src: "https://cdn11.bigcommerce.com/s-07991/product_images/uploaded_images/latin-dance.jpg"}, | ||||
|   {src: "https://www.danceus.org/parse/files/Bjy5anNVI0Q81M8bmrwIiuU20x4kepQTxzDBfqpR/70d831b8f51edc1f6e1a4320d52f164b_latin-dance.jpg"}, | ||||
|   {src: "https://avatars0.githubusercontent.com/u/9064066?v=4&s=460"}, | ||||
|   {src: "https://cdn.vuetifyjs.com/images/profiles/marcus.jpg"}, | ||||
|   {src: "https://danceostrava.cz/wp-content/uploads/2021/10/IMG_5203-scaled.jpg"}, | ||||
|   {src: "https://cdn11.bigcommerce.com/s-07991/product_images/uploaded_images/latin-dance.jpg"}, | ||||
|   {src: "https://www.danceus.org/parse/files/Bjy5anNVI0Q81M8bmrwIiuU20x4kepQTxzDBfqpR/70d831b8f51edc1f6e1a4320d52f164b_latin-dance.jpg"}, | ||||
|   {src: "https://avatars0.githubusercontent.com/u/9064066?v=4&s=460"}, | ||||
|   {src: "https://cdn.vuetifyjs.com/images/profiles/marcus.jpg"}, | ||||
|   {src: "https://danceostrava.cz/wp-content/uploads/2021/10/IMG_5203-scaled.jpg"}, | ||||
|   {src: "https://cdn11.bigcommerce.com/s-07991/product_images/uploaded_images/latin-dance.jpg"}, | ||||
|   {src: "https://www.danceus.org/parse/files/Bjy5anNVI0Q81M8bmrwIiuU20x4kepQTxzDBfqpR/70d831b8f51edc1f6e1a4320d52f164b_latin-dance.jpg"}, | ||||
|   {src: "https://avatars0.githubusercontent.com/u/9064066?v=4&s=460"}, | ||||
|   {src: "https://cdn.vuetifyjs.com/images/profiles/marcus.jpg"}, | ||||
|   {src: "https://danceostrava.cz/wp-content/uploads/2021/10/IMG_5203-scaled.jpg"}, | ||||
|   {src: "https://cdn11.bigcommerce.com/s-07991/product_images/uploaded_images/latin-dance.jpg"}, | ||||
|   {src: "https://www.danceus.org/parse/files/Bjy5anNVI0Q81M8bmrwIiuU20x4kepQTxzDBfqpR/70d831b8f51edc1f6e1a4320d52f164b_latin-dance.jpg"}, | ||||
|   {src: "https://avatars0.githubusercontent.com/u/9064066?v=4&s=460"}, | ||||
|   {src: "https://cdn.vuetifyjs.com/images/profiles/marcus.jpg"}, | ||||
|   {src: "https://danceostrava.cz/wp-content/uploads/2021/10/IMG_5203-scaled.jpg"}, | ||||
|   {src: "https://cdn11.bigcommerce.com/s-07991/product_images/uploaded_images/latin-dance.jpg"}, | ||||
| ] | ||||
| </script> | ||||
|  | @ -1,22 +1,20 @@ | |||
| <template> | ||||
|   <v-parallax | ||||
|     src="https://danceostrava.cz/wp-content/uploads/2021/10/IMG_5203-scaled.jpg" | ||||
|     style="margin-top: -80px" | ||||
|   > | ||||
|     <div class="d-flex flex-column fill-height justify-center align-center text-white"> | ||||
|       <h1 class="text-h3 font-weight-thin mb-4"> | ||||
|     <div class="d-flex flex-column fill-height justify-center"> | ||||
|       <h1 class="text-white"> | ||||
|         Taneční klub Ostrava | ||||
|       </h1> | ||||
|       <h2 class="subheading"> | ||||
|       <h2> | ||||
|         Naučíme Vás tančit! | ||||
|       </h2> | ||||
|     </div> | ||||
|   </v-parallax> | ||||
|   <news /> | ||||
|   <advantages/> | ||||
|   <courses /> | ||||
|   <about /> | ||||
|   <trainers/> | ||||
|   <references/> | ||||
|   <contact-us/> | ||||
|   <advantages id="advantages"/> | ||||
|   <courses id="courses"/> | ||||
|   <news id="article"/> | ||||
|   <about id="about"/> | ||||
|   <trainers id="trainers"/> | ||||
|   <contact-us id="contact"/> | ||||
| </template> | ||||
							
								
								
									
										14
									
								
								services/frontend/pages/kontakty.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								services/frontend/pages/kontakty.vue
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,14 @@ | |||
| <template> | ||||
|   <contact-us /> | ||||
|   <iframe | ||||
|       src="https://www.google.com/maps/embed?pb=!1m14!1m12!1m3!1d160.87512165223046!2d18.205641416752258!3d49.82362861573854!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!5e0!3m2!1scs!2scz!4v1739304600235!5m2!1scs!2scz" | ||||
|       width="100%" height="500" | ||||
|       style="border:0;" | ||||
|       loading="lazy" | ||||
|       referrerpolicy="no-referrer-when-downgrade" | ||||
|   /> | ||||
| </template> | ||||
| <script setup lang="ts"> | ||||
| import './assets/css/main.css' | ||||
| 
 | ||||
| </script> | ||||
|  | @ -1,10 +0,0 @@ | |||
| <template> | ||||
| 
 | ||||
| </template> | ||||
| <script setup lang="ts"> | ||||
| 
 | ||||
| </script> | ||||
| 
 | ||||
| <style scoped> | ||||
| 
 | ||||
| </style> | ||||
|  | @ -1,70 +0,0 @@ | |||
| <template> | ||||
|   <h1>Naši trenéři a lektoři</h1> | ||||
|   <v-card> | ||||
|     <v-row v-for="(lector, index) in lectors" :key="index"> | ||||
|       <v-col | ||||
|       style="padding: 0;" > | ||||
|         <v-img | ||||
|           :src="lector.background" | ||||
|           cover | ||||
|         > | ||||
|           <v-col style="text-align: center" cols="12" md="4"> | ||||
|             <v-avatar | ||||
|               color="grey" | ||||
|               rounded="1" | ||||
|               size="300" | ||||
|               style="margin: 30px" | ||||
|             > | ||||
|               <v-img :src="lector.img" cover></v-img> | ||||
|             </v-avatar> | ||||
|             <h2>{{lector.name}}</h2> | ||||
|             <div class="subtitle">{{ lector.desc }}</div> | ||||
|             <v-divider :thickness="3" /> | ||||
|             <h4>{{lector.story}}</h4> | ||||
|           </v-col> | ||||
|         </v-img> | ||||
|       </v-col> | ||||
|     </v-row> | ||||
|   </v-card> | ||||
| </template> | ||||
| <script setup lang="ts"> | ||||
| const lectors = [ | ||||
|   { | ||||
|     name: "Ondřej Gilar", | ||||
|     img: "https://cdn.vuetifyjs.com/images/profiles/marcus.jpg", | ||||
|     desc: "Trenér - latinskoamerické tance a Pro-AM", | ||||
|     background: "https://cdn11.bigcommerce.com/s-07991/product_images/uploaded_images/latin-dance.jpg", | ||||
|     story: "Něco velice zajímavého sepsané dlouhým textem, který snad někdo přečte, protože je to určitě zajímavé. Nová koloběžka bylo vrhnuta do řeky hned vedle pískoviště na počítači.", | ||||
|   }, | ||||
|   { | ||||
|     name: "Leona Hruštincová", | ||||
|     img: "https://cdn.vuetifyjs.com/images/profiles/marcus.jpg", | ||||
|     desc: "Lektorka - tance pro děti", | ||||
|     background: "https://cdn11.bigcommerce.com/s-07991/product_images/uploaded_images/latin-dance.jpg", | ||||
|     story: "Něco velice zajímavého sepsané dlouhým textem, který snad někdo přečte, protože je to určitě zajímavé. Nová koloběžka bylo vrhnuta do řeky hned vedle pískoviště na počítači.", | ||||
|   }, | ||||
| ] | ||||
| </script> | ||||
| 
 | ||||
| <style scoped> | ||||
| h1 { | ||||
|   font-family: 'Playfair Display', serif; /* Or a similar elegant font */ | ||||
|   font-size: 3rem; | ||||
|   color: #333; /* Dark gray */ | ||||
|   text-align: center; | ||||
|   text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1); /* Subtle shadow */ | ||||
|   margin-top: -2rem; | ||||
| } | ||||
| 
 | ||||
| h2 { | ||||
|   font-family: 'Playfair Display', serif; | ||||
|   font-size: 2rem; | ||||
|   color: #666; /* Light gray */ | ||||
| } | ||||
| 
 | ||||
| .subtitle { | ||||
|   font-family: 'Playfair Display', serif; /* Or a similar elegant font */ | ||||
|   font-size: 1.5rem; | ||||
|   color: #333; /* Dark gray */ | ||||
| } | ||||
| </style> | ||||
|  | @ -3,8 +3,57 @@ import '@mdi/font/css/materialdesignicons.css' | |||
| 
 | ||||
| import 'vuetify/styles' | ||||
| import { createVuetify } from 'vuetify' | ||||
| import { aliases, mdi } from 'vuetify/iconsets/mdi' | ||||
| import {VIcon} from "vuetify/components"; | ||||
| 
 | ||||
| export default defineNuxtPlugin((app) => { | ||||
|   const vuetify = createVuetify({}) | ||||
|   const vuetify = createVuetify({ | ||||
|     icons: {  // https://pictogrammers.com/library/mdi/icon/youtube/
 | ||||
|       defaultSet: 'mdi', | ||||
|     }, | ||||
|     theme: { | ||||
|       defaultTheme: 'light', | ||||
|       themes: { | ||||
|         light: { | ||||
|           colors: { | ||||
|             background: '#ffffff', | ||||
|             primary: '#303030', | ||||
|             'primary-darken': '#d0d0d0', | ||||
|             secondary: '#606060', | ||||
|             'secondary-darken': '#a0a0a0', | ||||
|             color: '#CF3476', | ||||
|             light: '#d0d0d0', | ||||
|             dark: '#303030' | ||||
|           }, | ||||
|         }, | ||||
|         // dark: {
 | ||||
|         //   colors: {
 | ||||
|         //     background: '#000',
 | ||||
|         //     primary: '#d0d0d0',
 | ||||
|         //     'primary-darken': '#303030',
 | ||||
|         //     secondary: '#a0a0a0',
 | ||||
|         //     'secondary-darken': '#606060',
 | ||||
|         //     color: '#CF3476',
 | ||||
|         //   }
 | ||||
|         // }
 | ||||
|       }, | ||||
|     }, | ||||
|     aliases: { | ||||
|       SmallIcon: VIcon, | ||||
|       BigIcon: VIcon, | ||||
|     }, | ||||
|     defaults: { | ||||
|       SmallIcon: { | ||||
|         color: 'color', | ||||
|         style: [{ 'margin-left': '20px', 'margin-top': '15px', 'font-size': '30px'}] | ||||
|       }, | ||||
|       BigIcon: { | ||||
|         color: 'color', | ||||
|         style: [{ margin: '20px', 'font-size': '60px'}] | ||||
|       }, | ||||
|     }, | ||||
|   }) | ||||
| 
 | ||||
| 
 | ||||
|   app.vueApp.use(vuetify) | ||||
| }) | ||||
|  |  | |||
							
								
								
									
										
											BIN
										
									
								
								services/frontend/public/Beblik.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								services/frontend/public/Beblik.jpg
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 100 KiB | 
		Loading…
	
		Reference in a new issue
	
	 KUB0570
						KUB0570