diff --git a/apple-touch-icon.png b/apple-touch-icon.png new file mode 100644 index 0000000..4efc3d6 Binary files /dev/null and b/apple-touch-icon.png differ diff --git a/code_export.txt b/code_export.txt index ac8f239..4198190 100644 --- a/code_export.txt +++ b/code_export.txt @@ -1,9 +1,3 @@ -"./README.md" : -""" -msos spletna stran -""" - - "./css/base/_base.css" : """ /* ========================================================================== @@ -18,8 +12,8 @@ msos spletna stran /* 1. Temeljni stili */ -html, body { - overflow-x: hidden; /* Preprečuje horizontalno drsenje na najvišji ravni */ +html { + /* To je pomembno, da ostane prazno ali brez overflow-x: hidden */ } body { @@ -27,6 +21,7 @@ body { margin: 0; background-color: #FFFFFF; color: #101828; + overflow-x: hidden; /* Preprečuje horizontalno drsenje na telesu strani */ } /* NOVO (zamenjaj znotraj _base.css): */ @@ -1563,34 +1558,31 @@ footer hr { margin: 0 auto; padding: 0 32px; gap: 64px; - /* Pomembno: poravna elemente na vrh, kar omogoča pravilno delovanje sticky */ align-items: flex-start; } .article-container { flex-grow: 1; - min-width: 0; /* Prepreči, da bi vsebina potisnila sidebar */ + min-width: 0; padding: 96px 0; } /* ========================================================================== - 2. Lepljiva leva navigacija (Scrollspy - Desktop) + 2. Lepljiva leva navigacija (Scrollspy - Desktop) - POSODOBLJENO ========================================================================== */ .article-sidebar { - width: 256px; + width: 288px; flex-shrink: 0; - /* Celoten sidebar postane lepljiv */ position: sticky; - top: 120px; /* 80px (header) + 40px (razmik) */ - /* Določimo višino, da se omogoči notranje drsenje, če je potrebno */ + top: 120px; height: calc(100vh - 140px); + margin-top: 48px; /* NOVO: Doda začetni odmik od vrha */ } .scrollspy-nav { - /* Navigacija zapolni celotno višino lepljivega sidebar-a */ height: 100%; - overflow-y: auto; /* Doda drsnik, samo če je vsebina daljša od višine */ + overflow-y: auto; } .scrollspy-nav ul { @@ -1599,15 +1591,15 @@ footer hr { margin: 0; display: flex; flex-direction: column; - gap: 16px; + gap: 20px; border-left: 2px solid #EAECF0; } .scrollspy-nav li a { display: block; - padding: 8px 16px; + padding: 12px 24px; text-decoration: none; - font-size: 14px; + font-size: 16px; font-weight: 500; color: #667085; border-left: 2px solid transparent; @@ -1638,6 +1630,18 @@ footer hr { z-index: 900; border-bottom: 1px solid #EAECF0; padding: 12px 24px; + cursor: pointer; + justify-content: space-between; + align-items: center; + -webkit-tap-highlight-color: transparent; +} + +.mobile-article-header .fa-chevron-down { + transition: transform 0.3s ease-in-out; +} + +.mobile-article-header.open .fa-chevron-down { + transform: rotate(180deg); } #mobile-article-title { @@ -1647,6 +1651,8 @@ footer hr { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; + flex-grow: 1; + padding-right: 16px; } .progress-bar-container { @@ -1665,6 +1671,51 @@ footer hr { transition: width 0.1s linear; } +.mobile-scrollspy-dropdown { + position: absolute; + top: 100%; + left: 0; + width: 100%; + background: #FFFFFF; + border-top: 1px solid #EAECF0; + box-shadow: 0 4px 6px rgba(0,0,0,0.05); + max-height: 0; + overflow: hidden; + opacity: 0; + visibility: hidden; + transition: max-height 0.3s ease-in-out, opacity 0.3s ease-in-out, visibility 0.3s; +} + +.mobile-scrollspy-dropdown.open { + max-height: 50vh; + opacity: 1; + visibility: visible; + overflow-y: auto; +} + +.mobile-scrollspy-dropdown ul { + list-style: none; + padding: 8px; + margin: 0; +} + +.mobile-scrollspy-dropdown a { + display: block; + padding: 12px 16px; + text-decoration: none; + color: #344054; + font-size: 16px; + font-weight: 500; + border-radius: 6px; + white-space: normal; +} + +.mobile-scrollspy-dropdown a:hover, +.mobile-scrollspy-dropdown a.active { + background-color: #F9FAFB; + color: #2D738C; +} + /* ========================================================================== 4. Glava članka @@ -1943,7 +1994,7 @@ footer hr { } .mobile-article-header { - display: block; + display: flex; } .article-container { @@ -1988,7 +2039,7 @@ footer hr { .article-body h2 { font-size: 24px; line-height: 32px; - scroll-margin-top: 80px; + scroll-margin-top: 120px; } .article-quote p { @@ -7988,7 +8039,7 @@ footer hr { @@ -8057,7 +8108,7 @@ footer hr { @@ -8128,9 +8179,16 @@ footer hr {
Meet Student Slovenia 2024 +
+ +
+ +
@@ -8225,7 +8283,7 @@ footer hr {
Moments when the participants ask questions to the panelists!😊✨
-

For those who were not physically present with us

+

For those not physically present with us

We know that not everyone managed to attend the NLB Gallery, but we therefore provided a high-quality livestream. The event was broadcast live and is now available for re-watching. If you want to feel the atmosphere and hear the honest stories from the panel, you can watch the entire event at this link Watch the video here.

@@ -11298,23 +11356,56 @@ document.addEventListener('DOMContentLoaded', function() { /** * =================================================================== - * 5. SCROLLSPY IN PROGRESS BAR ZA STRANI ČLANKOV + * 5. SCROLLSPY IN PROGRESS BAR ZA STRANI ČLANKOV (POSODOBLJENO) * =================================================================== */ try { const articlePage = document.querySelector('.article-page'); if (articlePage) { const scrollspyNav = document.querySelector('.scrollspy-nav'); + const mobileHeader = document.querySelector('.mobile-article-header'); const mobileTitle = document.getElementById('mobile-article-title'); + const mobileDropdown = document.querySelector('.mobile-scrollspy-dropdown'); + const mobileLinksContainer = document.getElementById('mobile-scrollspy-links'); const progressBar = document.querySelector('.progress-bar'); - const headings = articlePage.querySelectorAll('.article-body h2'); - const navLinks = scrollspyNav ? scrollspyNav.querySelectorAll('a') : []; + const headings = Array.from(articlePage.querySelectorAll('.article-body h2')); + const desktopNavLinks = scrollspyNav ? Array.from(scrollspyNav.querySelectorAll('a')) : []; - // --- Logic for Progress Bar --- + // --- Dinamično ustvarjanje mobilnega spustnega seznama --- + if (headings.length > 0 && mobileLinksContainer) { + headings.forEach(heading => { + const listItem = document.createElement('li'); + const link = document.createElement('a'); + link.href = `#${heading.id}`; + link.textContent = heading.textContent; + listItem.appendChild(link); + mobileLinksContainer.appendChild(listItem); + }); + } + + // --- Logika za odpiranje/zapiranje mobilnega spustnega seznama --- + if (mobileHeader && mobileDropdown) { + mobileHeader.addEventListener('click', (e) => { + // Preprečimo, da se meni zapre, če kliknemo na povezavo znotraj njega + if (!e.target.closest('a')) { + mobileHeader.classList.toggle('open'); + mobileDropdown.classList.toggle('open'); + } + }); + + // Dodamo dogodek za zapiranje menija ob kliku na povezavo + mobileDropdown.querySelectorAll('a').forEach(link => { + link.addEventListener('click', () => { + mobileHeader.classList.remove('open'); + mobileDropdown.classList.remove('open'); + }); + }); + } + + // --- Logika za Progress Bar --- function updateProgressBar() { if (!progressBar) return; - const scrollableHeight = document.documentElement.scrollHeight - window.innerHeight; const scrollTop = window.scrollY; @@ -11326,38 +11417,42 @@ document.addEventListener('DOMContentLoaded', function() { } } - // --- Logic for Scrollspy --- - const observer = new IntersectionObserver((entries) => { - entries.forEach(entry => { - if (entry.isIntersecting) { + // --- Logika za Scrollspy --- + if (headings.length > 0) { + const observer = new IntersectionObserver((entries) => { + entries.forEach(entry => { const id = entry.target.getAttribute('id'); - - // Update desktop nav - if (navLinks.length > 0) { - navLinks.forEach(link => { - link.classList.remove('active'); - if (link.getAttribute('href') === `#${id}`) { - link.classList.add('active'); - } - }); + const desktopNavLink = desktopNavLinks.find(link => link.getAttribute('href') === `#${id}`); + const mobileNavLink = mobileLinksContainer ? mobileLinksContainer.querySelector(`a[href="#${id}"]`) : null; + + if (entry.isIntersecting) { + // Posodobi namizno navigacijo + if (desktopNavLink) { + desktopNavLinks.forEach(link => link.classList.remove('active')); + desktopNavLink.classList.add('active'); + } + // Posodobi mobilni naslov in aktivno povezavo v spustnem seznamu + if (mobileTitle) { + mobileTitle.textContent = entry.target.textContent; + } + if (mobileNavLink) { + mobileLinksContainer.querySelectorAll('a').forEach(link => link.classList.remove('active')); + mobileNavLink.classList.add('active'); + } } - - // Update mobile title - if (mobileTitle) { - mobileTitle.textContent = entry.target.textContent; - } - } + }); + }, { + rootMargin: "-100px 0px -50% 0px" // Sproži, ko je naslov v zgornjem delu zaslona }); - }, { - rootMargin: "-100px 0px -50% 0px" // Trigger when heading is in the top part of the viewport - }); - headings.forEach(heading => { - observer.observe(heading); - }); + headings.forEach(heading => { + observer.observe(heading); + }); + } - // Attach event listener for progress bar + // Dodaj poslušalca dogodkov za vrstico napredka window.addEventListener('scroll', updateProgressBar); + updateProgressBar(); // Klic ob nalaganju strani } } catch (error) { console.error('Error in Article Scrollspy/Progress Bar setup:', error); @@ -15648,6 +15743,12 @@ if __name__ == "__main__": main()""" +"./README.md" : +""" +msos spletna stran +""" + + "./si/index.html" : """ @@ -19831,6 +19932,31 @@ if __name__ == "__main__": """ +"./site.webmanifest" : +""" +{ + "name": "MSOS", + "short_name": "MSOS", + "icons": [ + { + "src": "/web-app-manifest-192x192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "/web-app-manifest-512x512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +}""" + + "./style.css" : """ /* General Styles */ diff --git a/css/base/_base.css b/css/base/_base.css index f497a24..fb2c16b 100644 --- a/css/base/_base.css +++ b/css/base/_base.css @@ -12,6 +12,7 @@ html { /* To je pomembno, da ostane prazno ali brez overflow-x: hidden */ + overflow-x: hidden; /* Dodano za preprečevanje horizontalnega drsenja, ki ga body morda ne ujame. */ } body { diff --git a/en/index.html b/en/index.html index d44b012..b323ee7 100644 --- a/en/index.html +++ b/en/index.html @@ -33,7 +33,7 @@ @@ -105,7 +105,7 @@ @@ -230,7 +230,7 @@

We know moving to a new country can feel overwhelming, so we’re here to make it easier. From helping you with university applications to finding your way around student life in Slovenia, you can always count on us. We offer free consultations, answer your questions on Instagram and Facebook (yes, even late at night), and host events where you can meet others and hear real experiences first-hand. With mentorship, info sessions, and a friendly community by your side, you’ll never have to go through the journey alone.

- A group of students smiling and collaborating + Students receiving support and guidance
@@ -480,4 +480,4 @@ - + \ No newline at end of file diff --git a/en/index.html.bak b/en/index.html.bak index b112f75..889fee6 100644 --- a/en/index.html.bak +++ b/en/index.html.bak @@ -33,8 +33,8 @@