mirror of
https://github.com/Lapikud/lapikud.github.io.git
synced 2026-08-08 18:09:13 +00:00
new home page design (Hero only right now)
This commit is contained in:
@@ -7,6 +7,8 @@
|
|||||||
|
|
||||||
{#if $text && Object.keys($text).length > 0}
|
{#if $text && Object.keys($text).length > 0}
|
||||||
<Navbar />
|
<Navbar />
|
||||||
|
<main>
|
||||||
<Router {routes} />
|
<Router {routes} />
|
||||||
<Footer />
|
<Footer />
|
||||||
|
</main>
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
/* Global stylesheet */
|
/* Global stylesheet */
|
||||||
|
|
||||||
|
@import url("https://fonts.googleapis.com/css2?family=Unbounded:wght@300;400;500;600;700&display=swap");
|
||||||
@import "tailwindcss";
|
@import "tailwindcss";
|
||||||
|
|
||||||
/* Overwriting tailwindcss specific variables */
|
/* Overwriting tailwindcss specific variables */
|
||||||
@@ -26,10 +27,6 @@
|
|||||||
|
|
||||||
/* Design tokens & theme variables (light defaults) */
|
/* Design tokens & theme variables (light defaults) */
|
||||||
:root {
|
:root {
|
||||||
/* layout tokens */
|
|
||||||
--site-padding: clamp(1rem, 2vw, 2rem); /* horizontal page padding */
|
|
||||||
--content-max: 1200px; /* main content max width */
|
|
||||||
|
|
||||||
/* spacing scale */
|
/* spacing scale */
|
||||||
--spacing-0: 0px;
|
--spacing-0: 0px;
|
||||||
--spacing-1: 4px;
|
--spacing-1: 4px;
|
||||||
@@ -56,7 +53,7 @@
|
|||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
html {
|
html {
|
||||||
font-family: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI",
|
font-family: "Unbounded", ui-sans-serif, system-ui, -apple-system, "Segoe UI",
|
||||||
Roboto, "Helvetica Neue", Arial;
|
Roboto, "Helvetica Neue", Arial;
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="relative inline-block" on:focusout={handleFocusOut}>
|
<div class="relative inline-block" on:focusout={handleFocusOut}>
|
||||||
<Button onClick={toggle} class={buttonClass}>
|
<Button onClick={toggle} class={`${buttonClass} gap-0`}>
|
||||||
{name}
|
{name}
|
||||||
<svg
|
<svg
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
viewBox="0 0 24 24"
|
viewBox="0 0 24 24"
|
||||||
stroke-width="2"
|
stroke-width="2"
|
||||||
stroke="currentColor"
|
stroke="currentColor"
|
||||||
class="w-5 ml-2 mt-1 transition-transform inline-block"
|
class="w-4 h-4 ml-1 mr-0 mt-0.5 transition-transform inline-block"
|
||||||
style:transform={isOpen ? "rotate(180deg)" : "none"}
|
style:transform={isOpen ? "rotate(180deg)" : "none"}
|
||||||
>
|
>
|
||||||
<path
|
<path
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
{id}
|
{id}
|
||||||
class="w-full {paddingClasses[padding]} {bg} {className}"
|
class="w-full {paddingClasses[padding]} {bg} {className}"
|
||||||
>
|
>
|
||||||
<div class="{fullWidth ? '' : 'max-w-[1200px]'} mx-auto px-(--site-padding)">
|
<div class="{fullWidth ? '' : 'max-w-[1200px]'} mx-auto">
|
||||||
<slot />
|
<slot />
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
<script>
|
<script>
|
||||||
import {
|
import {
|
||||||
Button,
|
Button,
|
||||||
|
Container,
|
||||||
Dropdown,
|
Dropdown,
|
||||||
Section,
|
|
||||||
Stack,
|
Stack,
|
||||||
} from "$components";
|
} from "$components";
|
||||||
import { navigate, getPath, currentLang, text, switchLanguageRoute } from "$lib";
|
import { navigate, getPath, currentLang, text, switchLanguageRoute } from "$lib";
|
||||||
@@ -105,7 +105,8 @@
|
|||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<Section className="text-black" bg="bg-orange-500" padding="tight">
|
<header class="fixed inset-x-0 top-0 z-50 text-white">
|
||||||
|
<Container maxWidth={true} center={false} className="py-2 md:py-3">
|
||||||
{#if $text && Object.keys($text).length > 0}
|
{#if $text && Object.keys($text).length > 0}
|
||||||
<div class="flex items-center w-full relative min-h-12">
|
<div class="flex items-center w-full relative min-h-12">
|
||||||
<!-- Logo -->
|
<!-- Logo -->
|
||||||
@@ -117,9 +118,9 @@
|
|||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<div class="flex items-center justify-end ml-auto w-full md:w-auto">
|
<div class="flex items-center justify-end ml-auto w-full md:w-auto md:border-b-3 md:border-white">
|
||||||
<!-- Desktop Navigation -->
|
<!-- Desktop Navigation -->
|
||||||
<nav class="z-10 hidden md:flex gap-4 justify-end text-xl">
|
<nav class="z-10 hidden md:flex gap-2 justify-end text-xl">
|
||||||
<Dropdown
|
<Dropdown
|
||||||
name={$text.about || 'Meist'}
|
name={$text.about || 'Meist'}
|
||||||
buttonClass="rounded-[5px] hover:text-white"
|
buttonClass="rounded-[5px] hover:text-white"
|
||||||
@@ -162,7 +163,7 @@
|
|||||||
|
|
||||||
<!-- Language Switcher -->
|
<!-- Language Switcher -->
|
||||||
<Button
|
<Button
|
||||||
class="rounded-[5px] px-3 py-1 text-sm ml-2 hover:text-white"
|
class="rounded-[5px] px-3 py-1 text-sm ml-4 hover:text-white"
|
||||||
onClick={() => switchLanguageRoute($currentLang === 'est' ? 'en' : 'est')}
|
onClick={() => switchLanguageRoute($currentLang === 'est' ? 'en' : 'est')}
|
||||||
>
|
>
|
||||||
{$currentLang === 'est' ? 'EN' : 'EST'}
|
{$currentLang === 'est' ? 'EN' : 'EST'}
|
||||||
@@ -181,7 +182,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
</Section>
|
</Container>
|
||||||
|
</header>
|
||||||
|
|
||||||
<!-- Full Screen Mobile Menu -->
|
<!-- Full Screen Mobile Menu -->
|
||||||
{#if mobileMenuOpen}
|
{#if mobileMenuOpen}
|
||||||
@@ -191,7 +193,7 @@
|
|||||||
class:menu-closing={isClosing}
|
class:menu-closing={isClosing}
|
||||||
>
|
>
|
||||||
<Stack className="min-h-full">
|
<Stack className="min-h-full">
|
||||||
<div class="absolute top-8 right-0 px-(--site-padding)">
|
<div class="absolute top-8 right-0">
|
||||||
<Button
|
<Button
|
||||||
onClick={closeMobileMenu}
|
onClick={closeMobileMenu}
|
||||||
class="ml-auto p-2 transition-colors flex bg-transparent hover:text-orange-500"
|
class="ml-auto p-2 transition-colors flex bg-transparent hover:text-orange-500"
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ async function loadTranslations(lang) {
|
|||||||
|
|
||||||
// Dynamically import all translation files for the specific language
|
// Dynamically import all translation files for the specific language
|
||||||
// Vite will code-split these and only bundle the ones actually used
|
// Vite will code-split these and only bundle the ones actually used
|
||||||
const modules = import.meta.glob('../locales/*/*.json');
|
const modules = import.meta.glob('./locales/*/*.json');
|
||||||
|
|
||||||
for (const path in modules) {
|
for (const path in modules) {
|
||||||
if (path.includes(`/locales/${lang}/`) || path.includes(`\\locales\\${lang}\\`)) {
|
if (path.includes(`/locales/${lang}/`) || path.includes(`\\locales\\${lang}\\`)) {
|
||||||
|
|||||||
62
src/routes/NewHome.svelte
Normal file
62
src/routes/NewHome.svelte
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
<script>
|
||||||
|
import {Section, Grid, Center, Image, Svg} from "$components";
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!-- Hero Section -->
|
||||||
|
<Section className="relative min-h-screen overflow-hidden" padding="none" fullWidth={true}>
|
||||||
|
<div class="relative min-h-screen flex items-center">
|
||||||
|
<div class="pointer-events-none absolute inset-0" aria-hidden="true">
|
||||||
|
<Image
|
||||||
|
src="/assets/carousel-images/1.jpg"
|
||||||
|
alt=""
|
||||||
|
objectFit="cover"
|
||||||
|
className="w-full h-full"
|
||||||
|
pictureClass="block w-full h-full"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="pointer-events-none absolute inset-0 bg-gray-900 [clip-path:polygon(75%_0,100%_0,100%_100%,25%_100%)]"
|
||||||
|
aria-hidden="true"
|
||||||
|
></div>
|
||||||
|
<div
|
||||||
|
class="pointer-events-none absolute inset-0 bg-orange-500/75 [clip-path:polygon(0_0,75%_0,25%_100%,0_100%)]"
|
||||||
|
aria-hidden="true"
|
||||||
|
></div>
|
||||||
|
|
||||||
|
<div
|
||||||
|
class="pointer-events-none absolute inset-0 [clip-path:polygon(0_0,75%_0,25%_100%,0_100%)]"
|
||||||
|
aria-hidden="true"
|
||||||
|
>
|
||||||
|
<Svg
|
||||||
|
type="connector"
|
||||||
|
className="absolute left-0 top-[16%] w-[clamp(130px,14vw,230px)] text-white/95"
|
||||||
|
/>
|
||||||
|
<Svg
|
||||||
|
type="branch"
|
||||||
|
className="absolute left-0 top-[52%] -translate-y-1/2 w-[clamp(56px,6vw,94px)] text-white/95"
|
||||||
|
/>
|
||||||
|
<Svg
|
||||||
|
type="mirrorV"
|
||||||
|
className="absolute left-0 bottom-[12%] w-[clamp(130px,14vw,230px)] text-white/95"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div
|
||||||
|
class="pointer-events-none absolute inset-x-0 bottom-[6%] z-10 hidden md:flex w-full flex-col items-end gap-3"
|
||||||
|
aria-hidden="true"
|
||||||
|
>
|
||||||
|
<div class="h-6 w-[50%] bg-orange-500/90"></div>
|
||||||
|
<div class="h-4 w-[60%] bg-orange-500/90"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Grid columns={2} className="relative z-20 items-center">
|
||||||
|
<Center className="self-center md:-translate-y-8">
|
||||||
|
<img src="/assets/LapLogo_black_white.png" alt="MTÜ Lapikud" class="max-w-lg w-full h-auto p-4"/>
|
||||||
|
</Center>
|
||||||
|
<p class="self-center md:translate-y-16 text-center text-2xl leading-[200%] p-8 text-white">
|
||||||
|
MTÜ Lapikud on Tallinna Tehnikaülikooli Tarkvaraarendusklubi, mis ühendab endisi
|
||||||
|
ja praegusi IT huvilisi tudengeid.
|
||||||
|
</p>
|
||||||
|
</Grid>
|
||||||
|
</div>
|
||||||
|
</Section>
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
// ADD PAGES HERE TO REGISTER ROUTES
|
// ADD PAGES HERE TO REGISTER ROUTES
|
||||||
// examples: '/page', '/page/:id'
|
// examples: '/page', '/page/:id'
|
||||||
|
|
||||||
import Home from './Home.svelte'
|
import NewHome from './NewHome.svelte'
|
||||||
import Student from './Student.svelte'
|
import Student from './Student.svelte'
|
||||||
import Mentors from './Mentors.svelte'
|
import Mentors from './Mentors.svelte'
|
||||||
import Helpdesk from './Helpdesk.svelte'
|
import Helpdesk from './Helpdesk.svelte'
|
||||||
@@ -65,7 +65,7 @@ export function getTranslatedRoute(currentPath, targetLang) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const routes = {
|
export const routes = {
|
||||||
'/': Home,
|
'/': NewHome,
|
||||||
'/tudengile': Student,
|
'/tudengile': Student,
|
||||||
'/student': Student,
|
'/student': Student,
|
||||||
'/mentorid': Mentors,
|
'/mentorid': Mentors,
|
||||||
|
|||||||
Reference in New Issue
Block a user