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); + });
@@ -38,6 +59,7 @@
{@render children?.()} diff --git a/src/layout/Navbar.svelte b/src/layout/Navbar.svelte index 8327ba4..617931b 100644 --- a/src/layout/Navbar.svelte +++ b/src/layout/Navbar.svelte @@ -44,63 +44,19 @@ return paths.includes(currentPath); } - function isHomePage() { - return currentPath === "/"; - } - - function headerShellClass() { - return isHomePage() - ? "bg-transparent" - : "border-b-2 border-orange-500 bg-gray-900 backdrop-blur-md"; - } - - function headerRowClass() { - return isHomePage() - ? "flex min-h-16 items-center w-full relative gap-4" - : "flex min-h-16 items-center gap-4"; - } - - function headerWrapClass() { - return isHomePage() - ? "ml-auto flex w-full self-stretch items-center justify-end md:w-auto md:border-b-3 md:border-white backdrop-blur-lg bg-black/35 pr-(--page-padding-inline)" - : "flex items-center justify-end ml-auto w-full md:w-auto"; - } - - function desktopNavClass() { - return isHomePage() - ? "z-10 hidden md:flex gap-1 justify-end text-lg" - : "z-10 hidden md:flex items-center gap-1 justify-end text-lg"; - } - function navButtonClass(active = false) { - if (isHomePage()) { - return active - ? "border-transparent text-orange-500 bg-transparent" - : "border-transparent bg-transparent text-white/75 hover:text-orange-500"; - } - return active ? "border-transparent text-orange-500 hover:bg-white/5" : "border-transparent text-white/75 hover:bg-white/5"; } function dropdownButtonClass(active = false) { - if (isHomePage()) { - return active - ? "border-transparent text-orange-500 bg-transparent" - : "border-transparent bg-transparent text-white/75 hover:text-orange-500"; - } - return active ? "border-transparent text-orange-500 hover:bg-white/5" : "border-transparent text-white/75 hover:bg-white/5"; } function languageButtonClass() { - if (isHomePage()) { - return "ml-3 border-transparent bg-transparent px-3 py-1 text-sm text-white/75 hover:text-orange-500"; - } - return "ml-3 border-transparent bg-transparent px-3 py-1 text-sm text-white/75 hover:bg-white/5"; } @@ -217,21 +173,19 @@
-
- +
+ {#if $text && Object.keys($text).length > 0} -
- {#if !isHomePage()} - - {/if} +
+ -
-