mirror of
https://github.com/Lapikud/lapikud.github.io.git
synced 2026-08-08 22:59:14 +00:00
updated language loading changes on all pages
This commit is contained in:
3
src/lib/locales/en/AboutUs.json
Normal file
3
src/lib/locales/en/AboutUs.json
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"placeholder": "In development..."
|
||||||
|
}
|
||||||
3
src/lib/locales/en/Calendar.json
Normal file
3
src/lib/locales/en/Calendar.json
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"iframeTitle": "Lapikud Calendar"
|
||||||
|
}
|
||||||
60
src/lib/locales/en/Contact.json
Normal file
60
src/lib/locales/en/Contact.json
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
{
|
||||||
|
"hero": {
|
||||||
|
"title": "Get in touch",
|
||||||
|
"description": "Have questions? Want to join? Or start a collaboration? Feel free to contact us!"
|
||||||
|
},
|
||||||
|
"methods": {
|
||||||
|
"title": "How to reach us?",
|
||||||
|
"subtitle": "Choose the method that works for you",
|
||||||
|
"addressTitle": "Address",
|
||||||
|
"emailTitle": "Email",
|
||||||
|
"phoneTitle": "Phone",
|
||||||
|
"messengerTitle": "Messenger",
|
||||||
|
"addressSubtitle": "ICT faculty, Raja 15 room 111"
|
||||||
|
},
|
||||||
|
"form": {
|
||||||
|
"title": "Send us a message",
|
||||||
|
"subtitle": "Fill in the form and we will get back to you",
|
||||||
|
"nameLabel": "Name *",
|
||||||
|
"namePlaceholder": "Your name",
|
||||||
|
"emailLabel": "Email *",
|
||||||
|
"emailPlaceholder": "you@email.com",
|
||||||
|
"subjectLabel": "Subject *",
|
||||||
|
"subjectPlaceholder": "Message subject",
|
||||||
|
"messageLabel": "Message *",
|
||||||
|
"messagePlaceholder": "Write your message here...",
|
||||||
|
"submit": "Send message",
|
||||||
|
"mailBody": {
|
||||||
|
"name": "Name",
|
||||||
|
"email": "Email",
|
||||||
|
"message": "Message"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hours": {
|
||||||
|
"title": "Opening hours",
|
||||||
|
"weekdays": "Monday - Friday:",
|
||||||
|
"weekdaysTime": "10:00 - 16:00",
|
||||||
|
"weekend": "Saturday - Sunday:",
|
||||||
|
"weekendTime": "Closed",
|
||||||
|
"note": "* We recommend contacting us before visiting to avoid waiting"
|
||||||
|
},
|
||||||
|
"location": {
|
||||||
|
"title": "How to find us?",
|
||||||
|
"addressLabel": "Address:",
|
||||||
|
"buildingLabel": "Building:",
|
||||||
|
"roomLabel": "Room:",
|
||||||
|
"address": "Akadeemia tee 5, 12616 Tallinn",
|
||||||
|
"building": "ICT faculty (Raja 15)",
|
||||||
|
"room": "111",
|
||||||
|
"note": "We are located in TalTech ICT faculty building. If you come by public transport, the nearest stops are \"Mustakivi\" and \"Tehnikaülikool\"."
|
||||||
|
},
|
||||||
|
"social": {
|
||||||
|
"title": "Follow us on social media"
|
||||||
|
},
|
||||||
|
"organization": {
|
||||||
|
"title": "Lapikud NGO",
|
||||||
|
"registryTitle": "Registry code",
|
||||||
|
"bankTitle": "Bank account",
|
||||||
|
"bankSubtitle": "Swedbank"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,6 +8,6 @@
|
|||||||
"reg": "Reg. code: ",
|
"reg": "Reg. code: ",
|
||||||
"bank": "Swedbank",
|
"bank": "Swedbank",
|
||||||
"socials": "Social Media",
|
"socials": "Social Media",
|
||||||
"organization": "Lapikud NGO"
|
"organization": "MTÜ Lapikud"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
6
src/lib/locales/en/Mentors.json
Normal file
6
src/lib/locales/en/Mentors.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"hero": {
|
||||||
|
"title": "Our Mentors",
|
||||||
|
"intro": "Lapikud who are always ready to support you in your studies and personal development, and with whom it's just nice to spend time together."
|
||||||
|
}
|
||||||
|
}
|
||||||
102
src/lib/locales/en/OurWork.json
Normal file
102
src/lib/locales/en/OurWork.json
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
{
|
||||||
|
"hero": {
|
||||||
|
"title": "For companies",
|
||||||
|
"description": "We help bring your ideas to life. Our experienced students are ready to deliver your projects."
|
||||||
|
},
|
||||||
|
"services": {
|
||||||
|
"title": "What do we offer?",
|
||||||
|
"subtitle": "A wide range of IT services for your business needs",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"title": "Web solutions",
|
||||||
|
"description": "Modern and responsive websites that work on every device"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Mobile applications",
|
||||||
|
"description": "iOS and Android apps with user-friendly interfaces"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Software development",
|
||||||
|
"description": "Custom software solutions for your business needs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Consulting",
|
||||||
|
"description": "IT consulting and project planning"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"whyUs": {
|
||||||
|
"title": "Why collaborate with us?",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"title": "Motivated team",
|
||||||
|
"description": "Our students are talented, eager, and ready to prove their skills"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Quality results",
|
||||||
|
"description": "We take every project seriously and aim for the best outcome"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Modern technologies",
|
||||||
|
"description": "We use up-to-date tools and technologies"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"process": {
|
||||||
|
"title": "How do we work?",
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"title": "First meeting",
|
||||||
|
"description": "We discuss your idea, needs, and goals to understand what you want to achieve."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Planning",
|
||||||
|
"description": "We prepare a project plan, quote, and timeline, then align on details."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Development",
|
||||||
|
"description": "Our team works on your project and keeps you regularly updated."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Delivery",
|
||||||
|
"description": "We deliver the final product with documentation and onboarding."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Support",
|
||||||
|
"description": "We provide ongoing support and maintenance when needed."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"fit": {
|
||||||
|
"title": "When are we a good fit?",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"title": "Startups and small businesses:",
|
||||||
|
"description": "Our services are cost-effective and flexible, ideal for limited budgets."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Prototype development:",
|
||||||
|
"description": "Need a working prototype fast? Our agile team can move quickly."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Thesis and projects:",
|
||||||
|
"description": "Your project can become a thesis topic for our students, ensuring a dedicated team."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Long-term projects:",
|
||||||
|
"description": "We also offer long-term cooperation for more complex systems."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"portfolio": {
|
||||||
|
"title": "Our work",
|
||||||
|
"subtitle": "See what we have built before",
|
||||||
|
"projectLink": "View project"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Shall we start working together?",
|
||||||
|
"description": "Get in touch and let's discuss how we can bring your idea to life.",
|
||||||
|
"emailButton": "Send email",
|
||||||
|
"contactButton": "Contact details"
|
||||||
|
}
|
||||||
|
}
|
||||||
7
src/lib/locales/en/Striim.json
Normal file
7
src/lib/locales/en/Striim.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"streamAlts": {
|
||||||
|
"first": "Camera 1 stream",
|
||||||
|
"second": "Camera 2 stream",
|
||||||
|
"third": "Camera 3 stream"
|
||||||
|
}
|
||||||
|
}
|
||||||
81
src/lib/locales/en/Student.json
Normal file
81
src/lib/locales/en/Student.json
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
{
|
||||||
|
"hero": {
|
||||||
|
"title": "Join Us!",
|
||||||
|
"description": "Develop your skills, make great friends, and gain practical experience through real projects."
|
||||||
|
},
|
||||||
|
"benefits": {
|
||||||
|
"title": "Why join Lapikud?",
|
||||||
|
"subtitle": "Here are a few reasons why our community is a great place to grow",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"title": "Practical projects",
|
||||||
|
"description": "Work on real software projects and gain experience you don't get from classes alone."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Strong community",
|
||||||
|
"description": "Join friendly and ambitious students, find your team, and build lasting friendships."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Mentorship",
|
||||||
|
"description": "Get guidance from experienced students and developers, and improve faster."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Events",
|
||||||
|
"description": "Take part in exciting events, hackathons, and trainings to expand your network."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Thesis opportunities",
|
||||||
|
"description": "Interesting thesis topics grow from our projects. Find your topic and supervisor with us."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Work experience",
|
||||||
|
"description": "Active members can gain their first paid work experience through our projects."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"activities": {
|
||||||
|
"title": "What can you do?",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"title": "Software development:",
|
||||||
|
"description": "Work on real projects with modern technologies and learn team collaboration and quality practices."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Helpdesk:",
|
||||||
|
"description": "Help students and lecturers solve IT issues while improving your technical and communication skills."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Project management:",
|
||||||
|
"description": "Take responsibility for project coordination and learn planning, leadership, and client communication."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Marketing and design:",
|
||||||
|
"description": "Support project and event promotion, create social content, design materials, and track results."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"join": {
|
||||||
|
"title": "How to join?",
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"title": "Get in touch",
|
||||||
|
"description": "Write to us at",
|
||||||
|
"descriptionEnd": "or visit our office at Akadeemia tee 5."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Introduction",
|
||||||
|
"description": "Meet our team, introduce yourself, and share your interests. We'll show you our projects and opportunities."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Start contributing",
|
||||||
|
"description": "Find a suitable project or team and get started. Our mentors will support you at every step."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"members": {
|
||||||
|
"title": "Our members",
|
||||||
|
"subtitle": "Great people who make up our community",
|
||||||
|
"senior": "Senior members",
|
||||||
|
"junior": "Junior members"
|
||||||
|
}
|
||||||
|
}
|
||||||
3
src/lib/locales/est/AboutUs.json
Normal file
3
src/lib/locales/est/AboutUs.json
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"placeholder": "Arenduses..."
|
||||||
|
}
|
||||||
3
src/lib/locales/est/Calendar.json
Normal file
3
src/lib/locales/est/Calendar.json
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"iframeTitle": "Lapikute kalender"
|
||||||
|
}
|
||||||
60
src/lib/locales/est/Contact.json
Normal file
60
src/lib/locales/est/Contact.json
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
{
|
||||||
|
"hero": {
|
||||||
|
"title": "Võta ühendust",
|
||||||
|
"description": "Kas sul on küsimusi? Tahad liituda? Või soovid alustada koostööd? Võta julgelt ühendust!"
|
||||||
|
},
|
||||||
|
"methods": {
|
||||||
|
"title": "Kuidas meiega ühendust võtta?",
|
||||||
|
"subtitle": "Vali endale sobiv viis",
|
||||||
|
"addressTitle": "Aadress",
|
||||||
|
"emailTitle": "E-post",
|
||||||
|
"phoneTitle": "Telefon",
|
||||||
|
"messengerTitle": "Messenger",
|
||||||
|
"addressSubtitle": "ICT-teaduskond, Raja 15 ruum 111"
|
||||||
|
},
|
||||||
|
"form": {
|
||||||
|
"title": "Saada meile sõnum",
|
||||||
|
"subtitle": "Täida vorm ja me võtame sinuga ühendust",
|
||||||
|
"nameLabel": "Nimi *",
|
||||||
|
"namePlaceholder": "Sinu nimi",
|
||||||
|
"emailLabel": "E-post *",
|
||||||
|
"emailPlaceholder": "sinu@email.ee",
|
||||||
|
"subjectLabel": "Teema *",
|
||||||
|
"subjectPlaceholder": "Sõnumi teema",
|
||||||
|
"messageLabel": "Sõnum *",
|
||||||
|
"messagePlaceholder": "Kirjuta oma sõnum siia...",
|
||||||
|
"submit": "Saada sõnum",
|
||||||
|
"mailBody": {
|
||||||
|
"name": "Nimi",
|
||||||
|
"email": "E-post",
|
||||||
|
"message": "Sõnum"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hours": {
|
||||||
|
"title": "Lahtiolekuajad",
|
||||||
|
"weekdays": "Esmaspäev - Reede:",
|
||||||
|
"weekdaysTime": "10:00 - 16:00",
|
||||||
|
"weekend": "Laupäev - Pühapäev:",
|
||||||
|
"weekendTime": "Suletud",
|
||||||
|
"note": "* Soovitame enne külastamist võtta ühendust, et vältida ootamist"
|
||||||
|
},
|
||||||
|
"location": {
|
||||||
|
"title": "Kuidas meid leida?",
|
||||||
|
"addressLabel": "Aadress:",
|
||||||
|
"buildingLabel": "Hoone:",
|
||||||
|
"roomLabel": "Ruum:",
|
||||||
|
"address": "Akadeemia tee 5, 12616 Tallinn",
|
||||||
|
"building": "ICT-teaduskond (Raja 15)",
|
||||||
|
"room": "111",
|
||||||
|
"note": "Asume Tallinna Tehnikaülikooli ICT-teaduskonna hoones. Kui tuled ühistranspordiga, on lähimad peatused \"Mustakivi\" ja \"Tehnikaülikool\"."
|
||||||
|
},
|
||||||
|
"social": {
|
||||||
|
"title": "Jälgi meid sotsiaalmeedias"
|
||||||
|
},
|
||||||
|
"organization": {
|
||||||
|
"title": "MTÜ Lapikud",
|
||||||
|
"registryTitle": "Registrikood",
|
||||||
|
"bankTitle": "Pangakonto",
|
||||||
|
"bankSubtitle": "Swedbank"
|
||||||
|
}
|
||||||
|
}
|
||||||
6
src/lib/locales/est/Mentors.json
Normal file
6
src/lib/locales/est/Mentors.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"hero": {
|
||||||
|
"title": "Meie Mentorid",
|
||||||
|
"intro": "Lapikud, kes on alati valmis olema sinu toeks nii õpingutes kui ka isiklikus arengus ja kellega on lihtsalt tore koos aega veeta."
|
||||||
|
}
|
||||||
|
}
|
||||||
102
src/lib/locales/est/OurWork.json
Normal file
102
src/lib/locales/est/OurWork.json
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
{
|
||||||
|
"hero": {
|
||||||
|
"title": "Ettevõttele",
|
||||||
|
"description": "Aitame sinu ideed ellu viia! Meie kogenud tudengid on valmis teie projekte realiseerima."
|
||||||
|
},
|
||||||
|
"services": {
|
||||||
|
"title": "Mida me pakume?",
|
||||||
|
"subtitle": "Laia valik IT-teenuseid teie ärivajaduste täitmiseks",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"title": "Veebilahendused",
|
||||||
|
"description": "Kaasaegsed ja responsiivsed veebilehed, mis toimivad igal seadmel"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Mobiilirakendused",
|
||||||
|
"description": "iOS ja Android rakendused kasutajasõbralike liidestega"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Tarkvara arendus",
|
||||||
|
"description": "Kohandatud tarkvaralahendused teie ärivajadusteks"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Konsultatsioon",
|
||||||
|
"description": "IT-nõustamine ja projekti planeerimine"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"whyUs": {
|
||||||
|
"title": "Miks meiega koostööd teha?",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"title": "Motiveeritud meeskond",
|
||||||
|
"description": "Meie tudengid on andekad, õhevil ja tahavad tõestada oma oskuseid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Kvaliteetne tulemus",
|
||||||
|
"description": "Võtame iga projekti tõsiselt ja pingutame parima tulemuse nimel"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Kaasaegsed tehnoloogiad",
|
||||||
|
"description": "Kasutame uusimaid tööriistu ja tehnoloogiaid"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"process": {
|
||||||
|
"title": "Kuidas töötame?",
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"title": "Esimene kohtumine",
|
||||||
|
"description": "Arutame teie ideed, vajadusi ja eesmärke. Mõistame, mida soovite saavutada."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Planeerimine",
|
||||||
|
"description": "Koostame projekti plaani, hinnapakkumise ja ajakava. Lepime kokku detailides."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Arendus",
|
||||||
|
"description": "Meie meeskond töötab teie projekti kallal. Hoiame teid regulaarselt kursis."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Üleandmine",
|
||||||
|
"description": "Anname valmis toote üle koos dokumentatsiooni ja juhendamisega."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Tugi",
|
||||||
|
"description": "Pakume vajadusel jätkuvat tuge ja hooldust."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"fit": {
|
||||||
|
"title": "Millal meie sobime?",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"title": "Startup ja väikeettevõtted:",
|
||||||
|
"description": "Meie teenused on hinnaefektiivsed ja paindlikud, sobides hästi piiratud eelarvega projektidele."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Prototüüpide arendus:",
|
||||||
|
"description": "Vajate kiiresti töökorras prototüüpi? Meie agile meeskond suudab kiiresti teie idee ellu viia."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Lõputööd ja projektid:",
|
||||||
|
"description": "Teie projekt võib saada meie tudengite lõputöö teemaks, mis tagab motiveeritud ja pühendunud meeskonna."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Pikaajalised projektid:",
|
||||||
|
"description": "Pakume ka pikemaajalisi koostöövõimalusi keerulisemate süsteemide arendamiseks."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"portfolio": {
|
||||||
|
"title": "Meie tehtud tööd",
|
||||||
|
"subtitle": "Vaata, mida oleme varem loonud",
|
||||||
|
"projectLink": "Vaata projekti"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Alustame koostööd?",
|
||||||
|
"description": "Võta ühendust ja arutame, kuidas saame sinu ideed ellu viia!",
|
||||||
|
"emailButton": "Saada e-kiri",
|
||||||
|
"contactButton": "Kontaktandmed"
|
||||||
|
}
|
||||||
|
}
|
||||||
7
src/lib/locales/est/Striim.json
Normal file
7
src/lib/locales/est/Striim.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"streamAlts": {
|
||||||
|
"first": "Kaamera 1 voog",
|
||||||
|
"second": "Kaamera 2 voog",
|
||||||
|
"third": "Kaamera 3 voog"
|
||||||
|
}
|
||||||
|
}
|
||||||
81
src/lib/locales/est/Student.json
Normal file
81
src/lib/locales/est/Student.json
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
{
|
||||||
|
"hero": {
|
||||||
|
"title": "Liitu Meiega!",
|
||||||
|
"description": "Tule arenda oma oskuseid ja saa ägedaid sõpru! Omanda praktilist kogemust reaalsetest projektidest."
|
||||||
|
},
|
||||||
|
"benefits": {
|
||||||
|
"title": "Miks Lapikutega liituda?",
|
||||||
|
"subtitle": "Siin on mõned põhjused, miks meie kogukond on suurepärane koht arenguks",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"title": "Praktilised projektid",
|
||||||
|
"description": "Osale reaalsetel tarkvaraarenduse projektidel. Omanda kogemust, mida ei õpeta ühelgi kursusel."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Tugev kogukond",
|
||||||
|
"description": "Liitu sõbralike ja ambitsioonikate tudengitega. Leia oma meeskond ja loo püsivaid sõprussuhteid."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Mentorlus",
|
||||||
|
"description": "Saa juhendamist kogenud tudengitelt ja arendajatelt. Õpi parimate käest ja arene kiiremini."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Üritused",
|
||||||
|
"description": "Osale huvitavatel üritustel, hackathonidel ja koolitustel. Laienda oma silmaringi ja võrgustikku."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Lõputööd",
|
||||||
|
"description": "Meie projektidest kasvavad välja huvitavad lõputööd. Leia oma teema ja juhendaja meie seast."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Töökogemus",
|
||||||
|
"description": "Aktiivsed liikmed saavad võimaluse teenida oma esimest töökogemust ja palka meie projektides."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"activities": {
|
||||||
|
"title": "Mida saad teha?",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"title": "Tarkvara arendus:",
|
||||||
|
"description": "Töötad reaalsetel projektidel kasutades kaasaegseid tehnoloogiaid. Õpid koodi kirjutamist meeskonnas, versioonihaldustööriistade kasutamist ja tarkvara kvaliteedi tagamist."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Helpdesk:",
|
||||||
|
"description": "Aita tudengeid ja õppejõude IT-probleemide lahendamisel. Arenda oma tehnilisi oskuseid ja õpi suhtlemist klientidega."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Projektijuhtimine:",
|
||||||
|
"description": "Võta vastutus projekti koordineerimise eest. Õpi planeerimist, meeskonna juhtimist ja suhtlemist klientidega."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Turundus ja disain:",
|
||||||
|
"description": "Aita meie projektide ja ürituste turundamisel. Loo sisu sotsiaalmeedias, disaini materjale ja jälgi tulemusi."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"join": {
|
||||||
|
"title": "Kuidas liituda?",
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"title": "Võta ühendust",
|
||||||
|
"description": "Kirjuta meile e-posti aadressil",
|
||||||
|
"descriptionEnd": "või tule meie kontorisse Akadeemia tee 5."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Tutvumine",
|
||||||
|
"description": "Kohtu meie meeskonnaga, tutvusta ennast ja räägi oma huvidest. Näitame sulle meie projekte ja võimalusi."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Alusta tööd",
|
||||||
|
"description": "Leia endale sobiv projekt või meeskond ja hakka tegutsema! Meie mentorid aitavad sind iga sammu juures."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"members": {
|
||||||
|
"title": "Meie liikmed",
|
||||||
|
"subtitle": "Suurepärased inimesed, kes moodustavad meie kogukonna",
|
||||||
|
"senior": "Vanemliikmed",
|
||||||
|
"junior": "Noorliikmed"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,276 +1,20 @@
|
|||||||
<script>
|
<script>
|
||||||
import {
|
import {
|
||||||
Section,
|
Section,
|
||||||
Grid,
|
|
||||||
Card,
|
|
||||||
Center,
|
|
||||||
} from "$components";
|
} from "$components";
|
||||||
import { onMount } from "svelte";
|
import { onDestroy } from "svelte";
|
||||||
import yaml from 'js-yaml';
|
import { createPageTextStore } from "$lib";
|
||||||
import { currentLang, getLangText } from "$lib";
|
|
||||||
|
|
||||||
import Users from "lucide-svelte/icons/users";
|
const text = createPageTextStore("AboutUs");
|
||||||
import History from "lucide-svelte/icons/history";
|
|
||||||
import Target from "lucide-svelte/icons/target";
|
|
||||||
import Heart from "lucide-svelte/icons/heart";
|
|
||||||
import Award from "lucide-svelte/icons/award";
|
|
||||||
import Sparkles from "lucide-svelte/icons/sparkles";
|
|
||||||
import Mail from "lucide-svelte/icons/mail";
|
|
||||||
import Phone from "lucide-svelte/icons/phone";
|
|
||||||
|
|
||||||
let management = [];
|
onDestroy(() => {
|
||||||
let pastManagement = [];
|
text.destroy();
|
||||||
|
|
||||||
onMount(async () => {
|
|
||||||
const [mgmtResponse, pastResponse] = await Promise.all([
|
|
||||||
fetch('/_data/management.yml'),
|
|
||||||
fetch('/_data/past_management.yml')
|
|
||||||
]);
|
|
||||||
|
|
||||||
const [mgmtText, pastText] = await Promise.all([
|
|
||||||
mgmtResponse.text(),
|
|
||||||
pastResponse.text()
|
|
||||||
]);
|
|
||||||
|
|
||||||
management = yaml.load(mgmtText);
|
|
||||||
pastManagement = yaml.load(pastText);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="safe-area-navbar">
|
<div class="safe-area-navbar">
|
||||||
<!-- Hero Section -->
|
|
||||||
<Section background="orange">
|
|
||||||
<Center>
|
|
||||||
<div class="text-center max-w-4xl">
|
|
||||||
<h1 class="text-5xl font-bold mb-6">Kes me oleme?</h1>
|
|
||||||
<p class="text-2xl leading-relaxed">
|
|
||||||
MTÜ Lapikud on Tallinna Tehnikaülikooli Tarkvaraarendusklubi,
|
|
||||||
mis ühendab endisi ja praegusi IT huvilisi tudengeid
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</Center>
|
|
||||||
</Section>
|
|
||||||
|
|
||||||
<!-- History Section -->
|
|
||||||
<Section>
|
<Section>
|
||||||
<Grid gap="var(--space-5)">
|
{$text.placeholder || "In development..."}
|
||||||
<Card variant="glass">
|
|
||||||
<div class="flex items-center gap-4 mb-6">
|
|
||||||
<div class="feature-icon" style="color: var(--orange)">
|
|
||||||
<History size={32} strokeWidth={1.5} />
|
|
||||||
</div>
|
|
||||||
<h2 class="text-4xl font-bold">Meie lugu</h2>
|
|
||||||
</div>
|
|
||||||
<div class="space-y-4 text-lg">
|
|
||||||
<p>
|
|
||||||
Organisatsioon loodi <strong>2002. aastal</strong> informaatika tudengite poolt,
|
|
||||||
kelle erialatunnuseks oli "LAP". Targad mehed otsustasid, et järelikult on nad "Lapikud".
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Üle 20 aasta oleme kasvanud väikesest tudengite grupist suureks kogukonnaks,
|
|
||||||
mis on aidanud sadadel tudengitel saada väärtuslikku kogemust IT-valdkonnas.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Täna oleme uhked oma traditsiooni üle ja jätkame sellega,
|
|
||||||
et pakkuda tudengitele võimalusi areneda ja kasvada.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</Card>
|
|
||||||
|
|
||||||
<Card variant="glass">
|
|
||||||
<div class="flex items-center gap-4 mb-6">
|
|
||||||
<div class="feature-icon" style="color: var(--orange)">
|
|
||||||
<Target size={32} strokeWidth={1.5} />
|
|
||||||
</div>
|
|
||||||
<h2 class="text-4xl font-bold">Meie eesmärk</h2>
|
|
||||||
</div>
|
|
||||||
<div class="space-y-4 text-lg">
|
|
||||||
<p>
|
|
||||||
Meie põhieesmärgiks on Tallinna Tehnikaülikooli IT tudengitele
|
|
||||||
<strong>erialase lisandväärtuse loomine</strong>.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Kaasame tudengeid huvitavatesse IT projektidesse ning anname tudengitele võimaluse
|
|
||||||
midagi reaalset oma käega ära teha. Aktiivsetel tudengitel on võimalus saada meie juures esimene töökogemus.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Meie projektidest kooruvad välja huvitavad ja tarvilikud lõputööd ning
|
|
||||||
meie liikmeskonnast on tulnud ka lõputöö juhendajaid.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</Card>
|
|
||||||
</Grid>
|
|
||||||
</Section>
|
</Section>
|
||||||
|
|
||||||
<!-- Values Section -->
|
|
||||||
<Section background="neutral">
|
|
||||||
<div class="text-center mb-12">
|
|
||||||
<h2 class="text-4xl font-bold mb-4">Meie väärtused</h2>
|
|
||||||
<p class="text-xl text-gray-600">Mis meile oluline on</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<Grid columns={3} gap="var(--space-5)">
|
|
||||||
<Card variant="glass">
|
|
||||||
<div class="feature-icon mb-4" style="color: var(--orange)">
|
|
||||||
<Users size={48} strokeWidth={1.5} />
|
|
||||||
</div>
|
|
||||||
<h3 class="text-2xl font-bold mb-3">Kogukond</h3>
|
|
||||||
<p class="text-gray-600">
|
|
||||||
Oleme tugev kogukond, kus iga liige on oluline. Toetame ja aitame üksteist.
|
|
||||||
</p>
|
|
||||||
</Card>
|
|
||||||
|
|
||||||
<Card variant="glass">
|
|
||||||
<div class="feature-icon mb-4" style="color: var(--orange)">
|
|
||||||
<Award size={48} strokeWidth={1.5} />
|
|
||||||
</div>
|
|
||||||
<h3 class="text-2xl font-bold mb-3">Kvaliteet</h3>
|
|
||||||
<p class="text-gray-600">
|
|
||||||
Teeme tööd südamega ja püüdleme alati parima tulemuse poole.
|
|
||||||
</p>
|
|
||||||
</Card>
|
|
||||||
|
|
||||||
<Card variant="glass">
|
|
||||||
<div class="feature-icon mb-4" style="color: var(--orange)">
|
|
||||||
<Sparkles size={48} strokeWidth={1.5} />
|
|
||||||
</div>
|
|
||||||
<h3 class="text-2xl font-bold mb-3">Innovatsioon</h3>
|
|
||||||
<p class="text-gray-600">
|
|
||||||
Kasutame uusimaid tehnoloogiaid ja otsime alati paremaid lahendusi.
|
|
||||||
</p>
|
|
||||||
</Card>
|
|
||||||
|
|
||||||
<Card variant="glass">
|
|
||||||
<div class="feature-icon mb-4" style="color: var(--orange)">
|
|
||||||
<Heart size={48} strokeWidth={1.5} />
|
|
||||||
</div>
|
|
||||||
<h3 class="text-2xl font-bold mb-3">Kirg</h3>
|
|
||||||
<p class="text-gray-600">
|
|
||||||
Teeme seda, mida armastame. Meie kirglikud liikmed on meie tugevus.
|
|
||||||
</p>
|
|
||||||
</Card>
|
|
||||||
|
|
||||||
<Card variant="glass">
|
|
||||||
<div class="feature-icon mb-4" style="color: var(--orange)">
|
|
||||||
<Users size={48} strokeWidth={1.5} />
|
|
||||||
</div>
|
|
||||||
<h3 class="text-2xl font-bold mb-3">Kaasamine</h3>
|
|
||||||
<p class="text-gray-600">
|
|
||||||
Kaasame kõiki teaduskondi - IT, majandus, inseneeria ja muud.
|
|
||||||
</p>
|
|
||||||
</Card>
|
|
||||||
|
|
||||||
<Card variant="glass">
|
|
||||||
<div class="feature-icon mb-4" style="color: var(--orange)">
|
|
||||||
<Target size={48} strokeWidth={1.5} />
|
|
||||||
</div>
|
|
||||||
<h3 class="text-2xl font-bold mb-3">Praktiline</h3>
|
|
||||||
<p class="text-gray-600">
|
|
||||||
Teeme reaalset tööd, mis annab tudengitele praktilist kogemust.
|
|
||||||
</p>
|
|
||||||
</Card>
|
|
||||||
</Grid>
|
|
||||||
</Section>
|
|
||||||
|
|
||||||
<!-- Current Management -->
|
|
||||||
<Section>
|
|
||||||
<div class="text-center mb-12">
|
|
||||||
<h2 class="text-4xl font-bold mb-4">Meie juhatus</h2>
|
|
||||||
<p class="text-xl text-gray-600">Inimesed, kes viivad organisatsiooni edasi</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<Grid columns={2} gap="var(--space-6)">
|
|
||||||
{#each management as person}
|
|
||||||
<Card variant="glass">
|
|
||||||
<div class="flex flex-col md:flex-row gap-6">
|
|
||||||
{#if person.photo}
|
|
||||||
<div class="shrink-0">
|
|
||||||
<img
|
|
||||||
src={`/assets/management-images/${person.photo}`}
|
|
||||||
alt={person.name}
|
|
||||||
class="w-full md:w-48 h-48 object-cover rounded-lg"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
|
|
||||||
<div class="flex-1">
|
|
||||||
<h3 class="text-2xl font-bold mb-2">{person.name}</h3>
|
|
||||||
<p class="text-lg font-semibold mb-2" style="color: var(--orange)">
|
|
||||||
{getLangText(person, 'role', $currentLang)}
|
|
||||||
</p>
|
|
||||||
{#if person.subrole}
|
|
||||||
<p class="text-gray-600 mb-4">{getLangText(person, 'subrole', $currentLang)}</p>
|
|
||||||
{/if}
|
|
||||||
|
|
||||||
<div class="space-y-2">
|
|
||||||
{#if person.email}
|
|
||||||
<div class="flex items-center gap-2">
|
|
||||||
<Mail size={18} style="color: var(--orange)" />
|
|
||||||
<a href={`mailto:${person.email}`} class="hover:underline">
|
|
||||||
{person.email}
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
{#if person.phone}
|
|
||||||
<div class="flex items-center gap-2">
|
|
||||||
<Phone size={18} style="color: var(--orange)" />
|
|
||||||
<a href={`tel:${person.phone}`} class="hover:underline">
|
|
||||||
{person.phone}
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</Card>
|
|
||||||
{/each}
|
|
||||||
</Grid>
|
|
||||||
</Section>
|
|
||||||
|
|
||||||
<!-- Past Management -->
|
|
||||||
{#if pastManagement && pastManagement.length > 0}
|
|
||||||
<Section background="neutral">
|
|
||||||
<div class="text-center mb-12">
|
|
||||||
<h2 class="text-4xl font-bold mb-4">Endised juhatused</h2>
|
|
||||||
<p class="text-xl text-gray-600">Täname kõiki, kes on organisatsiooni juhtinud</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="space-y-12">
|
|
||||||
{#each pastManagement as yearGroup}
|
|
||||||
<div>
|
|
||||||
<h3 class="text-3xl font-bold mb-6 text-center">{yearGroup.year}</h3>
|
|
||||||
<div class="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6 gap-6">
|
|
||||||
{#each yearGroup.members as member}
|
|
||||||
<Card variant="glass" class="text-center">
|
|
||||||
{#if member.image}
|
|
||||||
<img
|
|
||||||
src={`/assets/past-management-images/optimised/${member.image}`}
|
|
||||||
alt={member.name}
|
|
||||||
class="w-full h-32 object-cover rounded-lg mb-3"
|
|
||||||
on:error={(e) => {
|
|
||||||
e.target.src = '/assets/past-management-images/original/' + member.image;
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
{/if}
|
|
||||||
<p class="font-semibold">{member.name}</p>
|
|
||||||
</Card>
|
|
||||||
{/each}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/each}
|
|
||||||
</div>
|
|
||||||
</Section>
|
|
||||||
{/if}
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style>
|
|
||||||
.feature-icon {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
width: 80px;
|
|
||||||
height: 80px;
|
|
||||||
background: rgba(255, 127, 0, 0.1);
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|||||||
@@ -1,12 +1,18 @@
|
|||||||
<script>
|
<script>
|
||||||
import { Section, Center } from "$components";
|
import { Section, Center } from "$components";
|
||||||
import { onMount } from "svelte";
|
import { onMount, onDestroy } from "svelte";
|
||||||
|
import { createPageTextStore } from "$lib";
|
||||||
|
|
||||||
let sectionElement;
|
let sectionElement;
|
||||||
|
const text = createPageTextStore("Calendar");
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
sectionElement.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
sectionElement.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
onDestroy(() => {
|
||||||
|
text.destroy();
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="safe-area-navbar" bind:this={sectionElement}>
|
<div class="safe-area-navbar" bind:this={sectionElement}>
|
||||||
@@ -16,7 +22,7 @@
|
|||||||
<iframe
|
<iframe
|
||||||
style="border: 0;"
|
style="border: 0;"
|
||||||
src="https://www.google.com/calendar/embed?src=lapikud%40gmail.com&ctz=Europe/Tallinn&showTitle=0&showPrint=0&showCalendars=0&showTz=0&wkst=2"
|
src="https://www.google.com/calendar/embed?src=lapikud%40gmail.com&ctz=Europe/Tallinn&showTitle=0&showPrint=0&showCalendars=0&showTz=0&wkst=2"
|
||||||
title="Lapikud Calendar"
|
title={$text.iframeTitle || "Lapikud Calendar"}
|
||||||
class="w-full"
|
class="w-full"
|
||||||
height="600"
|
height="600"
|
||||||
frameborder="0"
|
frameborder="0"
|
||||||
|
|||||||
@@ -5,6 +5,8 @@
|
|||||||
Card,
|
Card,
|
||||||
Center,
|
Center,
|
||||||
} from "$components";
|
} from "$components";
|
||||||
|
import { onDestroy } from "svelte";
|
||||||
|
import { createPageTextStore } from "$lib";
|
||||||
|
|
||||||
import MapPin from "lucide-svelte/icons/map-pin";
|
import MapPin from "lucide-svelte/icons/map-pin";
|
||||||
import Mail from "lucide-svelte/icons/mail";
|
import Mail from "lucide-svelte/icons/mail";
|
||||||
@@ -16,29 +18,31 @@
|
|||||||
import Building from "lucide-svelte/icons/building";
|
import Building from "lucide-svelte/icons/building";
|
||||||
import Clock from "lucide-svelte/icons/clock";
|
import Clock from "lucide-svelte/icons/clock";
|
||||||
|
|
||||||
const contactMethods = [
|
const text = createPageTextStore("Contact");
|
||||||
|
|
||||||
|
$: contactMethods = [
|
||||||
{
|
{
|
||||||
icon: MapPin,
|
icon: MapPin,
|
||||||
title: "Aadress",
|
title: $text["methods"]?.addressTitle || "Aadress",
|
||||||
content: "Akadeemia tee 5, 12616 Tallinn",
|
content: "Akadeemia tee 5, 12616 Tallinn",
|
||||||
subtitle: "ICT-teaduskond, Raja 15 ruum 111",
|
subtitle: $text["methods"]?.addressSubtitle || "ICT-teaduskond, Raja 15 ruum 111",
|
||||||
link: "https://goo.gl/maps/..."
|
link: "https://goo.gl/maps/..."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: Mail,
|
icon: Mail,
|
||||||
title: "E-post",
|
title: $text["methods"]?.emailTitle || "E-post",
|
||||||
content: "lapikud@lapikud.ee",
|
content: "lapikud@lapikud.ee",
|
||||||
link: "mailto:lapikud@lapikud.ee"
|
link: "mailto:lapikud@lapikud.ee"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: Phone,
|
icon: Phone,
|
||||||
title: "Telefon",
|
title: $text["methods"]?.phoneTitle || "Telefon",
|
||||||
content: "+372 58 160 799",
|
content: "+372 58 160 799",
|
||||||
link: "tel:+37258160799"
|
link: "tel:+37258160799"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: MessageCircle,
|
icon: MessageCircle,
|
||||||
title: "Messenger",
|
title: $text["methods"]?.messengerTitle || "Messenger",
|
||||||
content: "m.me/Lapikud",
|
content: "m.me/Lapikud",
|
||||||
link: "https://m.me/Lapikud"
|
link: "https://m.me/Lapikud"
|
||||||
}
|
}
|
||||||
@@ -62,17 +66,17 @@
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
const organizationInfo = [
|
$: organizationInfo = [
|
||||||
{
|
{
|
||||||
icon: Building,
|
icon: Building,
|
||||||
title: "Registrikood",
|
title: $text["organization"]?.registryTitle || "Registrikood",
|
||||||
content: "80167145"
|
content: "80167145"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: Building,
|
icon: Building,
|
||||||
title: "Pangakonto",
|
title: $text["organization"]?.bankTitle || "Pangakonto",
|
||||||
content: "EE812200221019551756",
|
content: "EE812200221019551756",
|
||||||
subtitle: "Swedbank"
|
subtitle: $text["organization"]?.bankSubtitle || "Swedbank"
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -86,9 +90,13 @@
|
|||||||
function handleSubmit(e) {
|
function handleSubmit(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
// Create mailto link with form data
|
// Create mailto link with form data
|
||||||
const mailtoLink = `mailto:lapikud@lapikud.ee?subject=${encodeURIComponent(formData.subject)}&body=${encodeURIComponent(`Nimi: ${formData.name}\nE-post: ${formData.email}\n\nSõnum:\n${formData.message}`)}`;
|
const mailtoLink = `mailto:lapikud@lapikud.ee?subject=${encodeURIComponent(formData.subject)}&body=${encodeURIComponent(`${$text["form"]?.mailBody?.name || "Nimi"}: ${formData.name}\n${$text["form"]?.mailBody?.email || "E-post"}: ${formData.email}\n\n${$text["form"]?.mailBody?.message || "Sõnum"}:\n${formData.message}`)}`;
|
||||||
window.location.href = mailtoLink;
|
window.location.href = mailtoLink;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onDestroy(() => {
|
||||||
|
text.destroy();
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="safe-area-navbar">
|
<div class="safe-area-navbar">
|
||||||
@@ -96,9 +104,9 @@
|
|||||||
<Section background="orange">
|
<Section background="orange">
|
||||||
<Center>
|
<Center>
|
||||||
<div class="text-center max-w-4xl">
|
<div class="text-center max-w-4xl">
|
||||||
<h1 class="text-5xl font-bold mb-6">Võta ühendust</h1>
|
<h1 class="text-5xl font-bold mb-6">{$text["hero"]?.title || "Võta ühendust"}</h1>
|
||||||
<p class="text-2xl leading-relaxed">
|
<p class="text-2xl leading-relaxed">
|
||||||
Kas sul on küsimusi? Tahad liituda? Või soovid alustada koostööd? Võta julgelt ühendust!
|
{$text["hero"]?.description || "Kas sul on küsimusi? Tahad liituda? Või soovid alustada koostööd? Võta julgelt ühendust!"}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</Center>
|
</Center>
|
||||||
@@ -107,8 +115,8 @@
|
|||||||
<!-- Contact Methods -->
|
<!-- Contact Methods -->
|
||||||
<Section>
|
<Section>
|
||||||
<div class="text-center mb-12">
|
<div class="text-center mb-12">
|
||||||
<h2 class="text-4xl font-bold mb-4">Kuidas meiega ühendust võtta?</h2>
|
<h2 class="text-4xl font-bold mb-4">{$text["methods"]?.title || "Kuidas meiega ühendust võtta?"}</h2>
|
||||||
<p class="text-xl text-gray-600">Vali endale sobiv viis</p>
|
<p class="text-xl text-gray-600">{$text["methods"]?.subtitle || "Vali endale sobiv viis"}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Grid columns={2} gap="var(--space-5)">
|
<Grid columns={2} gap="var(--space-5)">
|
||||||
@@ -147,57 +155,57 @@
|
|||||||
<Section background="neutral">
|
<Section background="neutral">
|
||||||
<div class="max-w-3xl mx-auto">
|
<div class="max-w-3xl mx-auto">
|
||||||
<div class="text-center mb-8">
|
<div class="text-center mb-8">
|
||||||
<h2 class="text-4xl font-bold mb-4">Saada meile sõnum</h2>
|
<h2 class="text-4xl font-bold mb-4">{$text["form"]?.title || "Saada meile sõnum"}</h2>
|
||||||
<p class="text-xl text-gray-600">Täida vorm ja me võtame sinuga ühendust</p>
|
<p class="text-xl text-gray-600">{$text["form"]?.subtitle || "Täida vorm ja me võtame sinuga ühendust"}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Card variant="glass">
|
<Card variant="glass">
|
||||||
<form on:submit={handleSubmit} class="space-y-6">
|
<form on:submit={handleSubmit} class="space-y-6">
|
||||||
<div>
|
<div>
|
||||||
<label for="name" class="block text-sm font-semibold mb-2">Nimi *</label>
|
<label for="name" class="block text-sm font-semibold mb-2">{$text["form"]?.nameLabel || "Nimi *"}</label>
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
id="name"
|
id="name"
|
||||||
bind:value={formData.name}
|
bind:value={formData.name}
|
||||||
required
|
required
|
||||||
class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:border-orange-500 focus:ring-2 focus:ring-orange-200 outline-none transition"
|
class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:border-orange-500 focus:ring-2 focus:ring-orange-200 outline-none transition"
|
||||||
placeholder="Sinu nimi"
|
placeholder={$text["form"]?.namePlaceholder || "Sinu nimi"}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<label for="email" class="block text-sm font-semibold mb-2">E-post *</label>
|
<label for="email" class="block text-sm font-semibold mb-2">{$text["form"]?.emailLabel || "E-post *"}</label>
|
||||||
<input
|
<input
|
||||||
type="email"
|
type="email"
|
||||||
id="email"
|
id="email"
|
||||||
bind:value={formData.email}
|
bind:value={formData.email}
|
||||||
required
|
required
|
||||||
class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:border-orange-500 focus:ring-2 focus:ring-orange-200 outline-none transition"
|
class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:border-orange-500 focus:ring-2 focus:ring-orange-200 outline-none transition"
|
||||||
placeholder="sinu@email.ee"
|
placeholder={$text["form"]?.emailPlaceholder || "sinu@email.ee"}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<label for="subject" class="block text-sm font-semibold mb-2">Teema *</label>
|
<label for="subject" class="block text-sm font-semibold mb-2">{$text["form"]?.subjectLabel || "Teema *"}</label>
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
id="subject"
|
id="subject"
|
||||||
bind:value={formData.subject}
|
bind:value={formData.subject}
|
||||||
required
|
required
|
||||||
class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:border-orange-500 focus:ring-2 focus:ring-orange-200 outline-none transition"
|
class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:border-orange-500 focus:ring-2 focus:ring-orange-200 outline-none transition"
|
||||||
placeholder="Sõnumi teema"
|
placeholder={$text["form"]?.subjectPlaceholder || "Sõnumi teema"}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<label for="message" class="block text-sm font-semibold mb-2">Sõnum *</label>
|
<label for="message" class="block text-sm font-semibold mb-2">{$text["form"]?.messageLabel || "Sõnum *"}</label>
|
||||||
<textarea
|
<textarea
|
||||||
id="message"
|
id="message"
|
||||||
bind:value={formData.message}
|
bind:value={formData.message}
|
||||||
required
|
required
|
||||||
rows="6"
|
rows="6"
|
||||||
class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:border-orange-500 focus:ring-2 focus:ring-orange-200 outline-none transition resize-none"
|
class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:border-orange-500 focus:ring-2 focus:ring-orange-200 outline-none transition resize-none"
|
||||||
placeholder="Kirjuta oma sõnum siia..."
|
placeholder={$text["form"]?.messagePlaceholder || "Kirjuta oma sõnum siia..."}
|
||||||
></textarea>
|
></textarea>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -205,7 +213,7 @@
|
|||||||
type="submit"
|
type="submit"
|
||||||
class="w-full py-3 px-6 bg-orange-500 hover:bg-orange-600 text-white font-semibold rounded-lg transition-colors"
|
class="w-full py-3 px-6 bg-orange-500 hover:bg-orange-600 text-white font-semibold rounded-lg transition-colors"
|
||||||
>
|
>
|
||||||
Saada sõnum
|
{$text["form"]?.submit || "Saada sõnum"}
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
</Card>
|
</Card>
|
||||||
@@ -221,20 +229,20 @@
|
|||||||
<Clock size={32} strokeWidth={1.5} />
|
<Clock size={32} strokeWidth={1.5} />
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2 class="text-3xl font-bold mb-4">Lahtiolekuajad</h2>
|
<h2 class="text-3xl font-bold mb-4">{$text["hours"]?.title || "Lahtiolekuajad"}</h2>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="space-y-3 text-lg">
|
<div class="space-y-3 text-lg">
|
||||||
<div class="flex justify-between">
|
<div class="flex justify-between">
|
||||||
<span class="font-semibold">Esmaspäev - Reede:</span>
|
<span class="font-semibold">{$text["hours"]?.weekdays || "Esmaspäev - Reede:"}</span>
|
||||||
<span>10:00 - 16:00</span>
|
<span>{$text["hours"]?.weekdaysTime || "10:00 - 16:00"}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex justify-between">
|
<div class="flex justify-between">
|
||||||
<span class="font-semibold">Laupäev - Pühapäev:</span>
|
<span class="font-semibold">{$text["hours"]?.weekend || "Laupäev - Pühapäev:"}</span>
|
||||||
<span>Suletud</span>
|
<span>{$text["hours"]?.weekendTime || "Suletud"}</span>
|
||||||
</div>
|
</div>
|
||||||
<p class="text-sm text-gray-600 mt-4">
|
<p class="text-sm text-gray-600 mt-4">
|
||||||
* Soovitame enne külastamist võtta ühendust, et vältida ootamist
|
{$text["hours"]?.note || "* Soovitame enne külastamist võtta ühendust, et vältida ootamist"}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</Card>
|
</Card>
|
||||||
@@ -245,16 +253,15 @@
|
|||||||
<MapPin size={32} strokeWidth={1.5} />
|
<MapPin size={32} strokeWidth={1.5} />
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2 class="text-3xl font-bold mb-4">Kuidas meid leida?</h2>
|
<h2 class="text-3xl font-bold mb-4">{$text["location"]?.title || "Kuidas meid leida?"}</h2>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="space-y-3 text-lg">
|
<div class="space-y-3 text-lg">
|
||||||
<p><strong>Aadress:</strong> Akadeemia tee 5, 12616 Tallinn</p>
|
<p><strong>{$text["location"]?.addressLabel || "Aadress:"}</strong> {$text["location"]?.address || "Akadeemia tee 5, 12616 Tallinn"}</p>
|
||||||
<p><strong>Hoone:</strong> ICT-teaduskond (Raja 15)</p>
|
<p><strong>{$text["location"]?.buildingLabel || "Hoone:"}</strong> {$text["location"]?.building || "ICT-teaduskond (Raja 15)"}</p>
|
||||||
<p><strong>Ruum:</strong> 111</p>
|
<p><strong>{$text["location"]?.roomLabel || "Ruum:"}</strong> {$text["location"]?.room || "111"}</p>
|
||||||
<p class="text-sm text-gray-600 mt-4">
|
<p class="text-sm text-gray-600 mt-4">
|
||||||
Asume Tallinna Tehnikaülikooli ICT-teaduskonna hoones.
|
{$text["location"]?.note || "Asume Tallinna Tehnikaülikooli ICT-teaduskonna hoones. Kui tuled ühistranspordiga, on lähimad peatused \"Mustakivi\" ja \"Tehnikaülikool\"."}
|
||||||
Kui tuled ühistranspordiga, on lähimad peatused "Mustakivi" ja "Tehnikaülikool".
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</Card>
|
</Card>
|
||||||
@@ -265,7 +272,7 @@
|
|||||||
<Section background="neutral">
|
<Section background="neutral">
|
||||||
<Grid gap="var(--space-5)">
|
<Grid gap="var(--space-5)">
|
||||||
<Card variant="glass">
|
<Card variant="glass">
|
||||||
<h2 class="text-3xl font-bold mb-6 text-center">Jälgi meid sotsiaalmeedias</h2>
|
<h2 class="text-3xl font-bold mb-6 text-center">{$text["social"]?.title || "Jälgi meid sotsiaalmeedias"}</h2>
|
||||||
<div class="flex flex-wrap justify-center gap-4">
|
<div class="flex flex-wrap justify-center gap-4">
|
||||||
{#each socialMedia as social}
|
{#each socialMedia as social}
|
||||||
<a
|
<a
|
||||||
@@ -282,7 +289,7 @@
|
|||||||
</Card>
|
</Card>
|
||||||
|
|
||||||
<Card variant="glass">
|
<Card variant="glass">
|
||||||
<h2 class="text-3xl font-bold mb-6 text-center">MTÜ Lapikud</h2>
|
<h2 class="text-3xl font-bold mb-6 text-center">{$text["organization"]?.title || "MTÜ Lapikud"}</h2>
|
||||||
<div class="space-y-3">
|
<div class="space-y-3">
|
||||||
{#each organizationInfo as info}
|
{#each organizationInfo as info}
|
||||||
<div class="flex items-start gap-4">
|
<div class="flex items-start gap-4">
|
||||||
|
|||||||
@@ -3,8 +3,8 @@
|
|||||||
Section,
|
Section,
|
||||||
Grid,
|
Grid,
|
||||||
} from "$components";
|
} from "$components";
|
||||||
import { onMount } from "svelte";
|
import { onMount, onDestroy } from "svelte";
|
||||||
import { text } from "$lib/i18n";
|
import { createPageTextStore } from "$lib";
|
||||||
import yaml from 'js-yaml';
|
import yaml from 'js-yaml';
|
||||||
|
|
||||||
import { MapLibre, Marker } from "svelte-maplibre";
|
import { MapLibre, Marker } from "svelte-maplibre";
|
||||||
@@ -35,12 +35,17 @@
|
|||||||
|
|
||||||
// Load pricing data
|
// Load pricing data
|
||||||
let pricingData = { services: [] };
|
let pricingData = { services: [] };
|
||||||
|
const text = createPageTextStore("Helpdesk");
|
||||||
|
|
||||||
onMount(async () => {
|
onMount(async () => {
|
||||||
const response = await fetch('/_data/helpdesk/hinnakiri.yml');
|
const response = await fetch('/_data/helpdesk/hinnakiri.yml');
|
||||||
const yamlText = await response.text();
|
const yamlText = await response.text();
|
||||||
pricingData = yaml.load(yamlText);
|
pricingData = yaml.load(yamlText);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
onDestroy(() => {
|
||||||
|
text.destroy();
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="safe-area-navbar">
|
<div class="safe-area-navbar">
|
||||||
|
|||||||
@@ -5,11 +5,9 @@
|
|||||||
Container,
|
Container,
|
||||||
Image,
|
Image,
|
||||||
} from "$components";
|
} from "$components";
|
||||||
import { onMount } from "svelte";
|
import { onMount, onDestroy } from "svelte";
|
||||||
import yaml from "js-yaml";
|
import yaml from "js-yaml";
|
||||||
import { currentLang, getLangText } from "$lib";
|
import { currentLang, getLangText, createPageTextStore } from "$lib";
|
||||||
import estManagementText from "$lib/locales/est/Management.json";
|
|
||||||
import enManagementText from "$lib/locales/en/Management.json";
|
|
||||||
import Mail from "lucide-svelte/icons/mail";
|
import Mail from "lucide-svelte/icons/mail";
|
||||||
import Phone from "lucide-svelte/icons/phone";
|
import Phone from "lucide-svelte/icons/phone";
|
||||||
|
|
||||||
@@ -17,13 +15,7 @@
|
|||||||
let pastManagement = [];
|
let pastManagement = [];
|
||||||
let loading = true;
|
let loading = true;
|
||||||
let loadError = false;
|
let loadError = false;
|
||||||
|
const text = createPageTextStore("Management");
|
||||||
const managementTextByLang = {
|
|
||||||
est: estManagementText,
|
|
||||||
en: enManagementText,
|
|
||||||
};
|
|
||||||
|
|
||||||
$: t = managementTextByLang[$currentLang] || managementTextByLang.est;
|
|
||||||
|
|
||||||
function parseYearLabel(label) {
|
function parseYearLabel(label) {
|
||||||
const value = String(label ?? "");
|
const value = String(label ?? "");
|
||||||
@@ -66,6 +58,10 @@
|
|||||||
loading = false;
|
loading = false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
onDestroy(() => {
|
||||||
|
text.destroy();
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="safe-area-navbar">
|
<div class="safe-area-navbar">
|
||||||
@@ -81,9 +77,9 @@
|
|||||||
|
|
||||||
<Container class="relative z-10 py-[clamp(3rem,8vw,6rem)]">
|
<Container class="relative z-10 py-[clamp(3rem,8vw,6rem)]">
|
||||||
<div class="max-w-4xl">
|
<div class="max-w-4xl">
|
||||||
<p class="mb-4 text-xs tracking-[0.16em] uppercase text-orange-500">{t.hero.eyebrow}</p>
|
<p class="mb-4 text-xs tracking-[0.16em] uppercase text-orange-500">{$text.hero?.eyebrow || "MTÜ Lapikud"}</p>
|
||||||
<h1 class="m-0 text-[clamp(2.4rem,6vw,4.2rem)] font-bold">{t.hero.title}</h1>
|
<h1 class="m-0 text-[clamp(2.4rem,6vw,4.2rem)] font-bold">{$text.hero?.title || "Management"}</h1>
|
||||||
<p class="mt-4 max-w-[52ch] text-[clamp(1.05rem,1.5vw,1.25rem)] text-white/75">{t.hero.intro}</p>
|
<p class="mt-4 max-w-[52ch] text-[clamp(1.05rem,1.5vw,1.25rem)] text-white/75">{$text.hero?.intro || "People who keep the organisation moving forward."}</p>
|
||||||
</div>
|
</div>
|
||||||
</Container>
|
</Container>
|
||||||
</div>
|
</div>
|
||||||
@@ -91,7 +87,7 @@
|
|||||||
|
|
||||||
<!-- Current Management Section -->
|
<!-- Current Management Section -->
|
||||||
<Section padding="large">
|
<Section padding="large">
|
||||||
<h1 class="m-0 text-[clamp(1.8rem,3vw,2.6rem)] leading-[1.12] tracking-[-0.03em] mb-10">{t.current.label}</h1>
|
<h1 class="m-0 text-[clamp(1.8rem,3vw,2.6rem)] leading-[1.12] tracking-[-0.03em] mb-10">{$text.current?.label || "Current board"}</h1>
|
||||||
<Grid min="500px">
|
<Grid min="500px">
|
||||||
{#each currentManagement as member (member.name)}
|
{#each currentManagement as member (member.name)}
|
||||||
<div class="flex flex-col sm:flex-row gap-6 items-start">
|
<div class="flex flex-col sm:flex-row gap-6 items-start">
|
||||||
@@ -129,15 +125,15 @@
|
|||||||
<Section padding="large">
|
<Section padding="large">
|
||||||
<div class="mb-7 flex flex-col items-start justify-between gap-6 md:flex-row md:items-end">
|
<div class="mb-7 flex flex-col items-start justify-between gap-6 md:flex-row md:items-end">
|
||||||
<div>
|
<div>
|
||||||
<h2 class="m-0 text-[clamp(1.8rem,3vw,2.6rem)] leading-[1.12] tracking-[-0.03em]">{t.history.label}</h2>
|
<h2 class="m-0 text-[clamp(1.8rem,3vw,2.6rem)] leading-[1.12] tracking-[-0.03em]">{$text.history?.label || "People who have led the organisation over time"}</h2>
|
||||||
<p class="mt-2 text-[0.98rem] text-[rgba(13,13,13,0.62)]">{t.history.hint}</p>
|
<p class="mt-2 text-[0.98rem] text-[rgba(13,13,13,0.62)]">{$text.history?.hint || "Thanks to everyone who has helped guide Lapikud"}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{#if loading}
|
{#if loading}
|
||||||
<p class="m-0 py-4 text-black">{t.loading}</p>
|
<p class="m-0 py-4 text-black">{$text.loading || "Loading data..."}</p>
|
||||||
{:else if loadError}
|
{:else if loadError}
|
||||||
<p class="m-0 py-4 text-red-500">{t.error}</p>
|
<p class="m-0 py-4 text-red-500">{$text.error || "Failed to load the management data."}</p>
|
||||||
{:else}
|
{:else}
|
||||||
<div class="flex flex-col gap-10">
|
<div class="flex flex-col gap-10">
|
||||||
{#each pastManagement as yearData (yearData.year)}
|
{#each pastManagement as yearData (yearData.year)}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<script>
|
<script>
|
||||||
import { Section, Card, Center } from "$components";
|
import { Section, Container } from "$components";
|
||||||
import { onMount } from "svelte";
|
import { onMount, onDestroy } from "svelte";
|
||||||
import yaml from "js-yaml";
|
import yaml from "js-yaml";
|
||||||
import { currentLang, getLangText } from "$lib";
|
import { currentLang, getLangText, createPageTextStore } from "$lib";
|
||||||
|
|
||||||
import Mail from "lucide-svelte/icons/mail";
|
import Mail from "lucide-svelte/icons/mail";
|
||||||
import Phone from "lucide-svelte/icons/phone";
|
import Phone from "lucide-svelte/icons/phone";
|
||||||
@@ -10,6 +10,8 @@
|
|||||||
import User from "lucide-svelte/icons/user";
|
import User from "lucide-svelte/icons/user";
|
||||||
|
|
||||||
let mentors = [];
|
let mentors = [];
|
||||||
|
const text = createPageTextStore("Mentors");
|
||||||
|
|
||||||
|
|
||||||
onMount(async () => {
|
onMount(async () => {
|
||||||
const response = await fetch("/_data/mentors.yml");
|
const response = await fetch("/_data/mentors.yml");
|
||||||
@@ -17,6 +19,10 @@
|
|||||||
mentors = yaml.load(yamlText);
|
mentors = yaml.load(yamlText);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
onDestroy(() => {
|
||||||
|
text.destroy();
|
||||||
|
});
|
||||||
|
|
||||||
function getContactIcon(contactType) {
|
function getContactIcon(contactType) {
|
||||||
const type = contactType.toLowerCase();
|
const type = contactType.toLowerCase();
|
||||||
if (type.includes("email") || type.includes("e-post")) return Mail;
|
if (type.includes("email") || type.includes("e-post")) return Mail;
|
||||||
@@ -48,15 +54,23 @@
|
|||||||
|
|
||||||
<div class="safe-area-navbar">
|
<div class="safe-area-navbar">
|
||||||
<!-- Hero Section -->
|
<!-- Hero Section -->
|
||||||
<Section background="orange">
|
<Section
|
||||||
<Center>
|
padding="none"
|
||||||
<div class="text-center max-w-4xl">
|
fullWidth={true}
|
||||||
<h1 class="text-5xl font-bold mb-6">Meie Mentorid</h1>
|
contentClass="!px-0 !py-0"
|
||||||
<p class="text-2xl leading-relaxed">
|
class="overflow-hidden text-white"
|
||||||
Lapikud, kes on alati valmis olema sinu toeks nii õpingutes kui ka isiklikus arengus ja kellega on lihtsalt tore koos aega veeta.
|
>
|
||||||
</p>
|
<div class="relative overflow-hidden bg-linear-to-b bg-gray-900 after:absolute after:inset-x-0 after:bottom-0 after:h-px after:bg-[rgba(240,148,29,0.16)] after:content-['']">
|
||||||
</div>
|
<div class="pointer-events-none absolute -right-16 -top-16 h-80 w-80 rounded-full border border-[rgba(240,148,29,0.12)]" aria-hidden="true"></div>
|
||||||
</Center>
|
<div class="pointer-events-none absolute -bottom-20 right-16 h-52 w-52 rounded-full border border-[rgba(240,148,29,0.08)]" aria-hidden="true"></div>
|
||||||
|
|
||||||
|
<Container class="relative z-10 py-[clamp(3rem,8vw,6rem)]">
|
||||||
|
<div class="max-w-4xl">
|
||||||
|
<h1 class="m-0 text-[clamp(2.4rem,6vw,4.2rem)] font-bold">{$text.hero?.title || "Our Mentors"}</h1>
|
||||||
|
<p class="mt-4 max-w-[52ch] text-[clamp(1.05rem,1.5vw,1.25rem)] text-white/75">{$text.hero?.intro || "Lapikud who are always ready to support you in your studies and personal development."}</p>
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</div>
|
||||||
</Section>
|
</Section>
|
||||||
|
|
||||||
<!-- Mentors Grid -->
|
<!-- Mentors Grid -->
|
||||||
|
|||||||
@@ -5,9 +5,9 @@
|
|||||||
Card,
|
Card,
|
||||||
Center,
|
Center,
|
||||||
} from "$components";
|
} from "$components";
|
||||||
import { onMount } from "svelte";
|
import { onMount, onDestroy } from "svelte";
|
||||||
import yaml from 'js-yaml';
|
import yaml from 'js-yaml';
|
||||||
import { currentLang, getLangText } from "$lib";
|
import { currentLang, getLangText, createPageTextStore } from "$lib";
|
||||||
|
|
||||||
import Rocket from "lucide-svelte/icons/rocket";
|
import Rocket from "lucide-svelte/icons/rocket";
|
||||||
import Users from "lucide-svelte/icons/users";
|
import Users from "lucide-svelte/icons/users";
|
||||||
@@ -20,6 +20,7 @@
|
|||||||
import ExternalLink from "lucide-svelte/icons/external-link";
|
import ExternalLink from "lucide-svelte/icons/external-link";
|
||||||
|
|
||||||
let projects = [];
|
let projects = [];
|
||||||
|
const text = createPageTextStore("OurWork");
|
||||||
|
|
||||||
onMount(async () => {
|
onMount(async () => {
|
||||||
const response = await fetch('/_data/ourwork.yml');
|
const response = await fetch('/_data/ourwork.yml');
|
||||||
@@ -27,44 +28,48 @@
|
|||||||
projects = yaml.load(yamlText).filter(p => p.title);
|
projects = yaml.load(yamlText).filter(p => p.title);
|
||||||
});
|
});
|
||||||
|
|
||||||
const services = [
|
onDestroy(() => {
|
||||||
|
text.destroy();
|
||||||
|
});
|
||||||
|
|
||||||
|
$: services = [
|
||||||
{
|
{
|
||||||
icon: Globe,
|
icon: Globe,
|
||||||
title: "Veebilahendused",
|
title: $text["services"]?.items?.[0]?.title || "Veebilahendused",
|
||||||
description: "Kaasaegsed ja responsiivsed veebilehed, mis toimivad igal seadmel"
|
description: $text["services"]?.items?.[0]?.description || "Kaasaegsed ja responsiivsed veebilehed, mis toimivad igal seadmel"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: Smartphone,
|
icon: Smartphone,
|
||||||
title: "Mobiilirakendused",
|
title: $text["services"]?.items?.[1]?.title || "Mobiilirakendused",
|
||||||
description: "iOS ja Android rakendused kasutajasõbralike liidestega"
|
description: $text["services"]?.items?.[1]?.description || "iOS ja Android rakendused kasutajasõbralike liidestega"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: Code,
|
icon: Code,
|
||||||
title: "Tarkvara arendus",
|
title: $text["services"]?.items?.[2]?.title || "Tarkvara arendus",
|
||||||
description: "Kohandatud tarkvaralahendused teie ärivajadusteks"
|
description: $text["services"]?.items?.[2]?.description || "Kohandatud tarkvaralahendused teie ärivajadusteks"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: Briefcase,
|
icon: Briefcase,
|
||||||
title: "Konsultatsioon",
|
title: $text["services"]?.items?.[3]?.title || "Konsultatsioon",
|
||||||
description: "IT-nõustamine ja projekti planeerimine"
|
description: $text["services"]?.items?.[3]?.description || "IT-nõustamine ja projekti planeerimine"
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
const whyUs = [
|
$: whyUs = [
|
||||||
{
|
{
|
||||||
icon: Users,
|
icon: Users,
|
||||||
title: "Motiveeritud meeskond",
|
title: $text["whyUs"]?.items?.[0]?.title || "Motiveeritud meeskond",
|
||||||
description: "Meie tudengid on andekad, õhevil ja tahavad tõestada oma oskuseid"
|
description: $text["whyUs"]?.items?.[0]?.description || "Meie tudengid on andekad, õhevil ja tahavad tõestada oma oskuseid"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: Target,
|
icon: Target,
|
||||||
title: "Kvaliteetne tulemus",
|
title: $text["whyUs"]?.items?.[1]?.title || "Kvaliteetne tulemus",
|
||||||
description: "Võtame iga projekti tõsiselt ja pingutame parima tulemuse nimel"
|
description: $text["whyUs"]?.items?.[1]?.description || "Võtame iga projekti tõsiselt ja pingutame parima tulemuse nimel"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: Rocket,
|
icon: Rocket,
|
||||||
title: "Kaasaegsed tehnoloogiad",
|
title: $text["whyUs"]?.items?.[2]?.title || "Kaasaegsed tehnoloogiad",
|
||||||
description: "Kasutame uusimaid tööriistu ja tehnoloogiaid"
|
description: $text["whyUs"]?.items?.[2]?.description || "Kasutame uusimaid tööriistu ja tehnoloogiaid"
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
</script>
|
</script>
|
||||||
@@ -74,9 +79,9 @@
|
|||||||
<Section background="orange">
|
<Section background="orange">
|
||||||
<Center>
|
<Center>
|
||||||
<div class="text-center max-w-4xl">
|
<div class="text-center max-w-4xl">
|
||||||
<h1 class="text-5xl font-bold mb-6">Ettevõttele</h1>
|
<h1 class="text-5xl font-bold mb-6">{$text["hero"]?.title || "Ettevõttele"}</h1>
|
||||||
<p class="text-2xl leading-relaxed">
|
<p class="text-2xl leading-relaxed">
|
||||||
Aitame sinu ideed ellu viia! Meie kogenud tudengid on valmis teie projekte realiseerima.
|
{$text["hero"]?.description || "Aitame sinu ideed ellu viia! Meie kogenud tudengid on valmis teie projekte realiseerima."}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</Center>
|
</Center>
|
||||||
@@ -85,8 +90,8 @@
|
|||||||
<!-- Services Section -->
|
<!-- Services Section -->
|
||||||
<Section>
|
<Section>
|
||||||
<div class="text-center mb-12">
|
<div class="text-center mb-12">
|
||||||
<h2 class="text-4xl font-bold mb-4">Mida me pakume?</h2>
|
<h2 class="text-4xl font-bold mb-4">{$text["services"]?.title || "Mida me pakume?"}</h2>
|
||||||
<p class="text-xl text-gray-600">Laia valik IT-teenuseid teie ärivajaduste täitmiseks</p>
|
<p class="text-xl text-gray-600">{$text["services"]?.subtitle || "Laia valik IT-teenuseid teie ärivajaduste täitmiseks"}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Grid columns={2} gap="var(--space-5)">
|
<Grid columns={2} gap="var(--space-5)">
|
||||||
@@ -105,7 +110,7 @@
|
|||||||
<!-- Why Choose Us -->
|
<!-- Why Choose Us -->
|
||||||
<Section background="neutral">
|
<Section background="neutral">
|
||||||
<div class="text-center mb-12">
|
<div class="text-center mb-12">
|
||||||
<h2 class="text-4xl font-bold mb-4">Miks meiega koostööd teha?</h2>
|
<h2 class="text-4xl font-bold mb-4">{$text["whyUs"]?.title || "Miks meiega koostööd teha?"}</h2>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Grid columns={3} gap="var(--space-5)">
|
<Grid columns={3} gap="var(--space-5)">
|
||||||
@@ -125,65 +130,28 @@
|
|||||||
<Section>
|
<Section>
|
||||||
<Grid gap="var(--space-5)">
|
<Grid gap="var(--space-5)">
|
||||||
<Card variant="glass">
|
<Card variant="glass">
|
||||||
<h2 class="text-4xl font-bold mb-6">Kuidas töötame?</h2>
|
<h2 class="text-4xl font-bold mb-6">{$text["process"]?.title || "Kuidas töötame?"}</h2>
|
||||||
<div class="space-y-6">
|
<div class="space-y-6">
|
||||||
<div class="flex items-start gap-4">
|
{#each $text["process"]?.steps || [] as step, index}
|
||||||
<div class="text-3xl font-bold" style="color: var(--orange)">1.</div>
|
<div class="flex items-start gap-4">
|
||||||
<div>
|
<div class="text-3xl font-bold" style="color: var(--orange)">{index + 1}.</div>
|
||||||
<strong class="text-lg">Esimene kohtumine</strong><br/>
|
<div>
|
||||||
Arutame teie ideed, vajadusi ja eesmärke. Mõistame, mida soovite saavutada.
|
<strong class="text-lg">{step.title}</strong><br/>
|
||||||
|
{step.description}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
{/each}
|
||||||
<div class="flex items-start gap-4">
|
|
||||||
<div class="text-3xl font-bold" style="color: var(--orange)">2.</div>
|
|
||||||
<div>
|
|
||||||
<strong class="text-lg">Planeerimine</strong><br/>
|
|
||||||
Koostame projekti plaani, hinnapakkumise ja ajakava. Lepime kokku detailides.
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex items-start gap-4">
|
|
||||||
<div class="text-3xl font-bold" style="color: var(--orange)">3.</div>
|
|
||||||
<div>
|
|
||||||
<strong class="text-lg">Arendus</strong><br/>
|
|
||||||
Meie meeskond töötab teie projekti kallal. Hoiame teid regulaarselt kursis.
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex items-start gap-4">
|
|
||||||
<div class="text-3xl font-bold" style="color: var(--orange)">4.</div>
|
|
||||||
<div>
|
|
||||||
<strong class="text-lg">Üleandmine</strong><br/>
|
|
||||||
Anname valmis toote üle koos dokumentatsiooni ja juhendamisega.
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex items-start gap-4">
|
|
||||||
<div class="text-3xl font-bold" style="color: var(--orange)">5.</div>
|
|
||||||
<div>
|
|
||||||
<strong class="text-lg">Tugi</strong><br/>
|
|
||||||
Pakume vajadusel jätkuvat tuge ja hooldust.
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</Card>
|
</Card>
|
||||||
|
|
||||||
<Card variant="glass">
|
<Card variant="glass">
|
||||||
<h2 class="text-4xl font-bold mb-6">Millal meie sobime?</h2>
|
<h2 class="text-4xl font-bold mb-6">{$text["fit"]?.title || "Millal meie sobime?"}</h2>
|
||||||
<div class="space-y-4 text-lg">
|
<div class="space-y-4 text-lg">
|
||||||
<p>
|
{#each $text["fit"]?.items || [] as item}
|
||||||
<strong>Startup ja väikeettevõtted:</strong> Meie teenused on hinnaefektiivsed ja paindlikud,
|
<p>
|
||||||
sobides hästi piiratud eelarvega projektidele.
|
<strong>{item.title}</strong> {item.description}
|
||||||
</p>
|
</p>
|
||||||
<p>
|
{/each}
|
||||||
<strong>Prototüüpide arendus:</strong> Vajate kiiresti töökorras prototüüpi?
|
|
||||||
Meie agile meeskond suudab kiiresti teie idee ellu viia.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<strong>Lõputööd ja projektid:</strong> Teie projekt võib saada meie tudengite
|
|
||||||
lõputöö teemaks, mis tagab motiveeritud ja pühendunud meeskonna.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<strong>Pikaajalised projektid:</strong> Pakume ka pikemaajalisi koostöövõimalusi
|
|
||||||
keerulisemate süsteemide arendamiseks.
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
</Card>
|
</Card>
|
||||||
</Grid>
|
</Grid>
|
||||||
@@ -192,8 +160,8 @@
|
|||||||
<!-- Portfolio Section -->
|
<!-- Portfolio Section -->
|
||||||
<Section>
|
<Section>
|
||||||
<div class="text-center mb-12">
|
<div class="text-center mb-12">
|
||||||
<h2 class="text-4xl font-bold mb-4">Meie tehtud tööd</h2>
|
<h2 class="text-4xl font-bold mb-4">{$text["portfolio"]?.title || "Meie tehtud tööd"}</h2>
|
||||||
<p class="text-xl text-gray-600">Vaata, mida oleme varem loonud</p>
|
<p class="text-xl text-gray-600">{$text["portfolio"]?.subtitle || "Vaata, mida oleme varem loonud"}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Grid columns={3} gap="var(--space-5)">
|
<Grid columns={3} gap="var(--space-5)">
|
||||||
@@ -225,7 +193,7 @@
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
class="inline-flex items-center gap-2 text-orange-500 hover:text-orange-600 font-semibold"
|
class="inline-flex items-center gap-2 text-orange-500 hover:text-orange-600 font-semibold"
|
||||||
>
|
>
|
||||||
Vaata projekti <ExternalLink size={16} />
|
{$text["portfolio"]?.projectLink || "Vaata projekti"} <ExternalLink size={16} />
|
||||||
</a>
|
</a>
|
||||||
{/if}
|
{/if}
|
||||||
</Card>
|
</Card>
|
||||||
@@ -237,22 +205,22 @@
|
|||||||
<Section background="orange">
|
<Section background="orange">
|
||||||
<Center>
|
<Center>
|
||||||
<div class="text-center max-w-4xl text-white">
|
<div class="text-center max-w-4xl text-white">
|
||||||
<h2 class="text-4xl font-bold mb-6">Alustame koostööd?</h2>
|
<h2 class="text-4xl font-bold mb-6">{$text["cta"]?.title || "Alustame koostööd?"}</h2>
|
||||||
<p class="text-xl mb-8">
|
<p class="text-xl mb-8">
|
||||||
Võta ühendust ja arutame, kuidas saame sinu ideed ellu viia!
|
{$text["cta"]?.description || "Võta ühendust ja arutame, kuidas saame sinu ideed ellu viia!"}
|
||||||
</p>
|
</p>
|
||||||
<div class="flex flex-wrap gap-4 justify-center">
|
<div class="flex flex-wrap gap-4 justify-center">
|
||||||
<a
|
<a
|
||||||
href="mailto:lapikud@lapikud.ee"
|
href="mailto:lapikud@lapikud.ee"
|
||||||
class="inline-flex items-center gap-2 px-8 py-3 bg-white text-orange-500 hover:bg-gray-100 font-semibold rounded-lg transition-colors"
|
class="inline-flex items-center gap-2 px-8 py-3 bg-white text-orange-500 hover:bg-gray-100 font-semibold rounded-lg transition-colors"
|
||||||
>
|
>
|
||||||
Saada e-kiri <ArrowRight size={20} />
|
{$text["cta"]?.emailButton || "Saada e-kiri"} <ArrowRight size={20} />
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
href="/contact"
|
href="/contact"
|
||||||
class="inline-flex items-center gap-2 px-8 py-3 bg-transparent border-2 border-white hover:bg-white hover:text-orange-500 font-semibold rounded-lg transition-colors"
|
class="inline-flex items-center gap-2 px-8 py-3 bg-transparent border-2 border-white hover:bg-white hover:text-orange-500 font-semibold rounded-lg transition-colors"
|
||||||
>
|
>
|
||||||
Kontaktandmed
|
{$text["cta"]?.contactButton || "Kontaktandmed"}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
<script>
|
<script>
|
||||||
import { Section, Grid } from "$components";
|
import { Section, Grid } from "$components";
|
||||||
|
import { onDestroy } from "svelte";
|
||||||
|
import { createPageTextStore } from "$lib";
|
||||||
|
|
||||||
let sectionElement;
|
let sectionElement;
|
||||||
let imagesLoaded = 0;
|
let imagesLoaded = 0;
|
||||||
const totalImages = 3;
|
const totalImages = 3;
|
||||||
|
const text = createPageTextStore("Striim");
|
||||||
|
|
||||||
function handleImageLoad() {
|
function handleImageLoad() {
|
||||||
imagesLoaded++;
|
imagesLoaded++;
|
||||||
@@ -11,21 +14,25 @@
|
|||||||
sectionElement.scrollIntoView({ behavior: 'smooth', block: 'start' });
|
sectionElement.scrollIntoView({ behavior: 'smooth', block: 'start' });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onDestroy(() => {
|
||||||
|
text.destroy();
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="safe-area-navbar" bind:this={sectionElement}>
|
<div class="safe-area-navbar" bind:this={sectionElement}>
|
||||||
<Section fullWidth={true} contentClass="flex items-start">
|
<Section fullWidth={true} contentClass="flex items-start">
|
||||||
<Grid min="400px" class="w-full">
|
<Grid min="400px" class="w-full">
|
||||||
<a href="https://master.lapikud.ee/stream/1/stream">
|
<a href="https://master.lapikud.ee/stream/1/stream">
|
||||||
<img src="https://master.lapikud.ee/stream/1/substream" alt="video0" style="width:100%;" on:load={handleImageLoad}/>
|
<img src="https://master.lapikud.ee/stream/1/substream" alt={$text.streamAlts?.first || "camera 1 stream"} style="width:100%;" on:load={handleImageLoad}/>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a href="https://master.lapikud.ee/stream/2/stream">
|
<a href="https://master.lapikud.ee/stream/2/stream">
|
||||||
<img src="https://master.lapikud.ee/stream/2/substream" alt="video1" style="width:100%;" on:load={handleImageLoad}/>
|
<img src="https://master.lapikud.ee/stream/2/substream" alt={$text.streamAlts?.second || "camera 2 stream"} style="width:100%;" on:load={handleImageLoad}/>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a href="https://master.lapikud.ee/stream/3/stream">
|
<a href="https://master.lapikud.ee/stream/3/stream">
|
||||||
<img src="https://master.lapikud.ee/stream/3/substream" alt="video2" style="width:100%;" on:load={handleImageLoad}/>
|
<img src="https://master.lapikud.ee/stream/3/substream" alt={$text.streamAlts?.third || "camera 3 stream"} style="width:100%;" on:load={handleImageLoad}/>
|
||||||
</a>
|
</a>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Section>
|
</Section>
|
||||||
|
|||||||
@@ -4,10 +4,10 @@
|
|||||||
Grid,
|
Grid,
|
||||||
Card,
|
Card,
|
||||||
Center,
|
Center,
|
||||||
Container,
|
|
||||||
} from "$components";
|
} from "$components";
|
||||||
import { onMount } from "svelte";
|
import { onMount, onDestroy } from "svelte";
|
||||||
import yaml from 'js-yaml';
|
import yaml from 'js-yaml';
|
||||||
|
import { createPageTextStore } from "$lib";
|
||||||
|
|
||||||
import Users from "lucide-svelte/icons/users";
|
import Users from "lucide-svelte/icons/users";
|
||||||
import GraduationCap from "lucide-svelte/icons/graduation-cap";
|
import GraduationCap from "lucide-svelte/icons/graduation-cap";
|
||||||
@@ -17,12 +17,26 @@
|
|||||||
import Trophy from "lucide-svelte/icons/trophy";
|
import Trophy from "lucide-svelte/icons/trophy";
|
||||||
|
|
||||||
let members = { junior: [], senior: [] };
|
let members = { junior: [], senior: [] };
|
||||||
|
const text = createPageTextStore("Student");
|
||||||
|
|
||||||
onMount(async () => {
|
onMount(async () => {
|
||||||
const response = await fetch('/_data/members.yml');
|
const response = await fetch('/_data/members.yml');
|
||||||
const yamlText = await response.text();
|
const yamlText = await response.text();
|
||||||
members = yaml.load(yamlText);
|
members = yaml.load(yamlText);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
onDestroy(() => {
|
||||||
|
text.destroy();
|
||||||
|
});
|
||||||
|
|
||||||
|
$: benefits = [
|
||||||
|
{ icon: Code, ...($text["benefits"]?.items?.[0] || { title: "Praktilised projektid", description: "Osale reaalsetel tarkvaraarenduse projektidel. Omanda kogemust, mida ei õpeta ühelgi kursusel." }) },
|
||||||
|
{ icon: Users, ...($text["benefits"]?.items?.[1] || { title: "Tugev kogukond", description: "Liitu sõbralike ja ambitsioonikate tudengitega. Leia oma meeskond ja loo püsivaid sõprussuhteid." }) },
|
||||||
|
{ icon: GraduationCap, ...($text["benefits"]?.items?.[2] || { title: "Mentorlus", description: "Saa juhendamist kogenud tudengitelt ja arendajatelt. Õpi parimate käest ja arene kiiremini." }) },
|
||||||
|
{ icon: Calendar, ...($text["benefits"]?.items?.[3] || { title: "Üritused", description: "Osale huvitavatel üritustel, hackathonidel ja koolitustel. Laienda oma silmaringi ja võrgustikku." }) },
|
||||||
|
{ icon: Lightbulb, ...($text["benefits"]?.items?.[4] || { title: "Lõputööd", description: "Meie projektidest kasvavad välja huvitavad lõputööd. Leia oma teema ja juhendaja meie seast." }) },
|
||||||
|
{ icon: Trophy, ...($text["benefits"]?.items?.[5] || { title: "Töökogemus", description: "Aktiivsed liikmed saavad võimaluse teenida oma esimest töökogemust ja palka meie projektides." }) },
|
||||||
|
];
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="safe-area-navbar">
|
<div class="safe-area-navbar">
|
||||||
@@ -30,9 +44,9 @@
|
|||||||
<Section background="orange">
|
<Section background="orange">
|
||||||
<Center>
|
<Center>
|
||||||
<div class="text-center max-w-4xl">
|
<div class="text-center max-w-4xl">
|
||||||
<h1 class="text-5xl font-bold mb-6">Liitu Meiega!</h1>
|
<h1 class="text-5xl font-bold mb-6">{$text["hero"]?.title || "Liitu Meiega!"}</h1>
|
||||||
<p class="text-2xl leading-relaxed">
|
<p class="text-2xl leading-relaxed">
|
||||||
Tule arenda oma oskuseid ja saa ägedaid sõpru! Omanda praktilist kogemust reaalsetest projektidest.
|
{$text["hero"]?.description || "Tule arenda oma oskuseid ja saa ägedaid sõpru! Omanda praktilist kogemust reaalsetest projektidest."}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</Center>
|
</Center>
|
||||||
@@ -41,70 +55,20 @@
|
|||||||
<!-- Benefits Section -->
|
<!-- Benefits Section -->
|
||||||
<Section>
|
<Section>
|
||||||
<div class="text-center mb-12">
|
<div class="text-center mb-12">
|
||||||
<h2 class="text-4xl font-bold mb-4">Miks Lapikutega liituda?</h2>
|
<h2 class="text-4xl font-bold mb-4">{$text["benefits"]?.title || "Miks Lapikutega liituda?"}</h2>
|
||||||
<p class="text-xl text-gray-600">Siin on mõned põhjused, miks meie kogukond on suurepärane koht arenguks</p>
|
<p class="text-xl text-gray-600">{$text["benefits"]?.subtitle || "Siin on mõned põhjused, miks meie kogukond on suurepärane koht arenguks"}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Grid columns={3} gap="var(--space-5)">
|
<Grid columns={3} gap="var(--space-5)">
|
||||||
<Card variant="glass">
|
{#each benefits as benefit}
|
||||||
<div class="feature-icon mb-4" style="color: var(--orange)">
|
<Card variant="glass">
|
||||||
<Code size={48} strokeWidth={1.5} />
|
<div class="feature-icon mb-4" style="color: var(--orange)">
|
||||||
</div>
|
<svelte:component this={benefit.icon} size={48} strokeWidth={1.5} />
|
||||||
<h3 class="text-2xl font-bold mb-3">Praktilised projektid</h3>
|
</div>
|
||||||
<p class="text-gray-600">
|
<h3 class="text-2xl font-bold mb-3">{benefit.title}</h3>
|
||||||
Osale reaalsetel tarkvaraarenduse projektidel. Omanda kogemust, mida ei õpeta ühelgi kursusel.
|
<p class="text-gray-600">{benefit.description}</p>
|
||||||
</p>
|
</Card>
|
||||||
</Card>
|
{/each}
|
||||||
|
|
||||||
<Card variant="glass">
|
|
||||||
<div class="feature-icon mb-4" style="color: var(--orange)">
|
|
||||||
<Users size={48} strokeWidth={1.5} />
|
|
||||||
</div>
|
|
||||||
<h3 class="text-2xl font-bold mb-3">Tugev kogukond</h3>
|
|
||||||
<p class="text-gray-600">
|
|
||||||
Liitu sõbralike ja ambitsioonikate tudengitega. Leia oma meeskond ja loo püsivaid sõprussuhteid.
|
|
||||||
</p>
|
|
||||||
</Card>
|
|
||||||
|
|
||||||
<Card variant="glass">
|
|
||||||
<div class="feature-icon mb-4" style="color: var(--orange)">
|
|
||||||
<GraduationCap size={48} strokeWidth={1.5} />
|
|
||||||
</div>
|
|
||||||
<h3 class="text-2xl font-bold mb-3">Mentorlus</h3>
|
|
||||||
<p class="text-gray-600">
|
|
||||||
Saa juhendamist kogenud tudengitelt ja arendajatelt. Õpi parimate käest ja arene kiiremini.
|
|
||||||
</p>
|
|
||||||
</Card>
|
|
||||||
|
|
||||||
<Card variant="glass">
|
|
||||||
<div class="feature-icon mb-4" style="color: var(--orange)">
|
|
||||||
<Calendar size={48} strokeWidth={1.5} />
|
|
||||||
</div>
|
|
||||||
<h3 class="text-2xl font-bold mb-3">Üritused</h3>
|
|
||||||
<p class="text-gray-600">
|
|
||||||
Osale huvitavatel üritustel, hackathonidel ja koolitustel. Laienda oma silmaringi ja võrgustikku.
|
|
||||||
</p>
|
|
||||||
</Card>
|
|
||||||
|
|
||||||
<Card variant="glass">
|
|
||||||
<div class="feature-icon mb-4" style="color: var(--orange)">
|
|
||||||
<Lightbulb size={48} strokeWidth={1.5} />
|
|
||||||
</div>
|
|
||||||
<h3 class="text-2xl font-bold mb-3">Lõputööd</h3>
|
|
||||||
<p class="text-gray-600">
|
|
||||||
Meie projektidest kasvavad välja huvitavad lõputööd. Leia oma teema ja juhendaja meie seast.
|
|
||||||
</p>
|
|
||||||
</Card>
|
|
||||||
|
|
||||||
<Card variant="glass">
|
|
||||||
<div class="feature-icon mb-4" style="color: var(--orange)">
|
|
||||||
<Trophy size={48} strokeWidth={1.5} />
|
|
||||||
</div>
|
|
||||||
<h3 class="text-2xl font-bold mb-3">Töökogemus</h3>
|
|
||||||
<p class="text-gray-600">
|
|
||||||
Aktiivsed liikmed saavad võimaluse teenida oma esimest töökogemust ja palka meie projektides.
|
|
||||||
</p>
|
|
||||||
</Card>
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</Section>
|
</Section>
|
||||||
|
|
||||||
@@ -112,52 +76,32 @@
|
|||||||
<Section background="neutral">
|
<Section background="neutral">
|
||||||
<Grid gap="var(--space-5)">
|
<Grid gap="var(--space-5)">
|
||||||
<Card variant="glass">
|
<Card variant="glass">
|
||||||
<h2 class="text-4xl font-bold mb-4">Mida saad teha?</h2>
|
<h2 class="text-4xl font-bold mb-4">{$text["activities"]?.title || "Mida saad teha?"}</h2>
|
||||||
<div class="space-y-4 text-lg">
|
<div class="space-y-4 text-lg">
|
||||||
<p>
|
{#each $text["activities"]?.items || [] as item}
|
||||||
<strong>Tarkvara arendus:</strong> Töötad reaalsetel projektidel kasutades kaasaegseid tehnoloogiaid.
|
<p>
|
||||||
Õpid koodi kirjutamist meeskonnas, versioonihaldustööriistade kasutamist ja tarkvara kvaliteedi tagamist.
|
<strong>{item.title}</strong> {item.description}
|
||||||
</p>
|
</p>
|
||||||
<p>
|
{/each}
|
||||||
<strong>Helpdesk:</strong> Aita tudengeid ja õppejõude IT-probleemide lahendamisel.
|
|
||||||
Arenda oma tehnilisi oskuseid ja õpi suhtlemist klientidega.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<strong>Projektijuhtimine:</strong> Võta vastutus projekti koordineerimise eest.
|
|
||||||
Õpi planeerimist, meeskonna juhtimist ja suhtlemist klientidega.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<strong>Turundus ja disain:</strong> Aita meie projektide ja ürituste turundamisel.
|
|
||||||
Loo sisu sotsiaalmeedias, disaini materjale ja jälgi tulemusi.
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
</Card>
|
</Card>
|
||||||
|
|
||||||
<Card variant="glass">
|
<Card variant="glass">
|
||||||
<h2 class="text-4xl font-bold mb-4">Kuidas liituda?</h2>
|
<h2 class="text-4xl font-bold mb-4">{$text["join"]?.title || "Kuidas liituda?"}</h2>
|
||||||
<div class="space-y-4 text-lg">
|
<div class="space-y-4 text-lg">
|
||||||
<div class="flex items-start gap-4">
|
{#each $text["join"]?.steps || [] as step, index}
|
||||||
<div class="text-3xl font-bold" style="color: var(--orange)">1.</div>
|
<div class="flex items-start gap-4">
|
||||||
<div>
|
<div class="text-3xl font-bold" style="color: var(--orange)">{index + 1}.</div>
|
||||||
<strong>Võta ühendust</strong><br/>
|
<div>
|
||||||
Kirjuta meile e-posti aadressil <a href="mailto:lapikud@lapikud.ee" class="text-orange-500 hover:underline">lapikud@lapikud.ee</a>
|
<strong>{step.title}</strong><br/>
|
||||||
või tule meie kontorisse Akadeemia tee 5.
|
{#if index === 0}
|
||||||
|
{step.description || "Kirjuta meile e-posti aadressil"} <a href="mailto:lapikud@lapikud.ee" class="text-orange-500 hover:underline">lapikud@lapikud.ee</a> {step.descriptionEnd || "või tule meie kontorisse Akadeemia tee 5."}
|
||||||
|
{:else}
|
||||||
|
{step.description}
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
{/each}
|
||||||
<div class="flex items-start gap-4">
|
|
||||||
<div class="text-3xl font-bold" style="color: var(--orange)">2.</div>
|
|
||||||
<div>
|
|
||||||
<strong>Tutvumine</strong><br/>
|
|
||||||
Kohtu meie meeskonnaga, tutvusta ennast ja räägi oma huvidest. Näitame sulle meie projekte ja võimalusi.
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex items-start gap-4">
|
|
||||||
<div class="text-3xl font-bold" style="color: var(--orange)">3.</div>
|
|
||||||
<div>
|
|
||||||
<strong>Alusta tööd</strong><br/>
|
|
||||||
Leia endale sobiv projekt või meeskond ja hakka tegutsema! Meie mentorid aitavad sind iga sammu juures.
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</Card>
|
</Card>
|
||||||
</Grid>
|
</Grid>
|
||||||
@@ -166,13 +110,13 @@
|
|||||||
<!-- Members Section -->
|
<!-- Members Section -->
|
||||||
<Section>
|
<Section>
|
||||||
<div class="text-center mb-12">
|
<div class="text-center mb-12">
|
||||||
<h2 class="text-4xl font-bold mb-4">Meie liikmed</h2>
|
<h2 class="text-4xl font-bold mb-4">{$text["members"]?.title || "Meie liikmed"}</h2>
|
||||||
<p class="text-xl text-gray-600">Suurepärased inimesed, kes moodustavad meie kogukonna</p>
|
<p class="text-xl text-gray-600">{$text["members"]?.subtitle || "Suurepärased inimesed, kes moodustavad meie kogukonna"}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{#if members.senior && members.senior.length > 0}
|
{#if members.senior && members.senior.length > 0}
|
||||||
<div class="mb-12">
|
<div class="mb-12">
|
||||||
<h3 class="text-3xl font-bold mb-6 text-center">Vanemliikmed</h3>
|
<h3 class="text-3xl font-bold mb-6 text-center">{$text["members"]?.senior || "Vanemliikmed"}</h3>
|
||||||
<div class="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 gap-4">
|
<div class="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 gap-4">
|
||||||
{#each members.senior as member}
|
{#each members.senior as member}
|
||||||
<div class="bg-white rounded-lg p-4 shadow-sm hover:shadow-md transition-shadow">
|
<div class="bg-white rounded-lg p-4 shadow-sm hover:shadow-md transition-shadow">
|
||||||
@@ -185,7 +129,7 @@
|
|||||||
|
|
||||||
{#if members.junior && members.junior.length > 0}
|
{#if members.junior && members.junior.length > 0}
|
||||||
<div>
|
<div>
|
||||||
<h3 class="text-3xl font-bold mb-6 text-center">Noorliikmed</h3>
|
<h3 class="text-3xl font-bold mb-6 text-center">{$text["members"]?.junior || "Noorliikmed"}</h3>
|
||||||
<div class="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 gap-4">
|
<div class="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 gap-4">
|
||||||
{#each members.junior as member}
|
{#each members.junior as member}
|
||||||
<div class="bg-white rounded-lg p-4 shadow-sm hover:shadow-md transition-shadow">
|
<div class="bg-white rounded-lg p-4 shadow-sm hover:shadow-md transition-shadow">
|
||||||
|
|||||||
Reference in New Issue
Block a user