diff --git a/public/_data/workshops.yml b/public/_data/workshops.yml index d1cdc4b..c38b49b 100644 --- a/public/_data/workshops.yml +++ b/public/_data/workshops.yml @@ -1,52 +1,41 @@ # Workshops & courses conducted by Lapikud members # - title: - en: Go Programming Language Workshop - est: Go programmeerimiskeele töötuba + en: C workshop + est: C koolitus description: - en: Introduction to Go through practical exercises. Covered basic syntax, goroutines, channels and concurrency with real-world examples. - est: Sissejuhatus Go keelde läbi praktiliste ülesannete. Kaetud on põhisüntaks, goroutiinid, kanalid ja konkurentsus reaaleluliste näidete kaudu. + en: Three-part introductory C workshop series for beginners and early-stage programmers. Covered core programming foundations and practical C basics in Estonian at TalTech IT College. + est: Kolmeosaline C programmeerimiskeele koolitus algajatele ja varasema kogemusega huvilistele. Käsitleti programmeerimise alusteadmisi ja C keele põhiteemasid praktiliste näidete kaudu TalTech IT Kolledžis. mentor: - en: Henri Karba - est: Henri Karba + en: Lapikud mentors + est: MTÜ Lapikud mentorid duration: - en: 3 × 2h - est: 3 × 2h + en: 3 × 1h 30min + est: 3 × 1h 30min date: - en: March 2025 - est: Märts 2025 - gallery: 3 + en: March 2026 + est: Märts 2026 + gallery: + - temp1.jpg + - temp2.jpg - title: - en: Figma Design Workshop - est: Figma disainitöötuba + en: C workshop + est: C koolitus description: - en: Over two days we learned the Figma workflow, covering components, auto-layout, prototyping and presenting to clients. - est: Kahe päeva jooksul õppisime Figma töövoogu, komponendid, auto-layout, prototüüpimine ja klientidele esitamine. + en: Three-part introductory C workshop series for beginners and early-stage programmers. Covered core programming foundations and practical C basics in Estonian at TalTech IT College. + est: Kolmeosaline C programmeerimiskeele koolitus algajatele ja varasema kogemusega huvilistele. Käsitleti programmeerimise alusteadmisi ja C keele põhiteemasid praktiliste näidete kaudu TalTech IT Kolledžis. mentor: - en: Maris Tamm - est: Maris Tamm + en: Lapikud mentors + est: MTÜ Lapikud mentorid duration: - en: 2 days - est: 2 päeva + en: 3 × 1h 30min + est: 3 × 1h 30min date: - en: November 2024 - est: Nov 2024 - gallery: 2 + en: March 2026 + est: Märts 2026 + gallery: + - temp1.jpg + - temp2.jpg + - temp3.jpg -- title: - en: Web Security Basics - est: Veebiturvalisuse alused - description: - en: Practical seminar on OWASP Top 10 attacks and defense methods. Lab work involved fixing real vulnerabilities in a controlled environment. - est: Praktiline seminar OWASP Top 10 rünnakute ja kaitsmismeetodite kohta. Laboris lahendati päris haavatavusi kontrollitud keskkonnas. - mentor: - en: Juku Rebane - est: Juku Rebane - duration: - en: 4 hours - est: 4 tundi - date: - en: September 2024 - est: Sept 2024 - gallery: 4 diff --git a/public/assets/workshops/temp1.jpg b/public/assets/workshops/temp1.jpg new file mode 100644 index 0000000..d2d33d3 Binary files /dev/null and b/public/assets/workshops/temp1.jpg differ diff --git a/public/assets/workshops/temp2.jpg b/public/assets/workshops/temp2.jpg new file mode 100644 index 0000000..5548e28 Binary files /dev/null and b/public/assets/workshops/temp2.jpg differ diff --git a/src/app.css b/src/app.css index b43873a..32329cb 100644 --- a/src/app.css +++ b/src/app.css @@ -1,6 +1,6 @@ /* Global stylesheet */ -@import url("https://fonts.googleapis.com/css2?family=Unbounded:wght@300;400;500;600;700&display=swap"); +@import url("https://fonts.googleapis.com/css2?family=Lato:wght@300;400;700;900&display=swap"); @import "tailwindcss"; /* Overwriting tailwindcss specific variables */ @@ -46,12 +46,7 @@ --spacing-6: 48px; /* type scale (fluid base + modular sizes) */ - --fs-base: clamp(0.95rem, 0.9vw + 0.9rem, 1rem); - --fs-xs: 0.85rem; - --fs-sm: 0.92rem; - --fs-md: 1rem; - --fs-lg: 1.125rem; - --fs-xl: 1.5rem; + --fs-base: clamp(1.1rem, 1vw + 1rem, 1.2rem); --line-height: 1.6; } @@ -62,7 +57,7 @@ box-sizing: border-box; } html { - font-family: "Unbounded", ui-sans-serif, system-ui, -apple-system, "Segoe UI", + font-family: "Lato", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; diff --git a/src/components/Dropdown.svelte b/src/components/Dropdown.svelte index c2ebb29..cc36321 100644 --- a/src/components/Dropdown.svelte +++ b/src/components/Dropdown.svelte @@ -9,6 +9,7 @@ } = $props(); let isOpen = $state(false); + let panelElement = $state(null); const toggle = () => (isOpen = !isOpen); const close = () => (isOpen = false); @@ -21,6 +22,26 @@ return; close(); } + + + $effect(() => { + if (!isOpen) return; + + const handleDocumentClick = (event) => { + const target = event.target; + if (!(target instanceof HTMLElement) || !panelElement) return; + + if ( + panelElement.contains(target) && + target.closest("button, a, [role='menuitem']") + ) { + close(); + } + }; + + document.addEventListener("click", handleDocumentClick); + return () => document.removeEventListener("click", handleDocumentClick); + });