Compare commits

..

6 Commits

Author SHA1 Message Date
hyzen
e2f0af4185 Update: changelog 2026-04-14 18:32:02 +05:30
hyzen
f9cc81bfef Update: changelog 2026-04-14 18:26:28 +05:30
hyzen
3a29ad32fe Update: changelog 2026-04-14 18:06:55 +05:30
hyzen
66316594e0 Update: changelog 2026-04-14 17:50:35 +05:30
hyzen
c5fa39e546 Update: uninotes page format 2026-04-14 17:49:22 +05:30
hyzen
68fd50ffcb Update: contents style uninotes page 2026-04-14 17:01:03 +05:30
7 changed files with 340 additions and 37 deletions

View File

@@ -4,6 +4,6 @@ title: "Changelog"
## [2026-04-14]
### Added
- Changelog page linked in the footer beside the copyright notice
- Removed year from footer copyright to keep it cleaner
- Changelog page.
- Removed year from footer copyright.
- "Contents" style UniNotes page.

View File

@@ -1,4 +1,4 @@
<!doctype html><html class=html lang=en-us dir=ltr><head><meta charset=utf-8><meta name=viewport content="width=device-width"><title>Changelog | Freedoms4</title><link rel=stylesheet href=/css/style.min.34d0accb85f8ec23ceee8c29eef5907823b531d8acb9e6bdf45a3b37ad028d30.css integrity="sha256-NNCsy4X47CPO7owp7vWQeCO1Mdisuea99Fo7N60CjTA=" crossorigin=anonymous><link rel=icon href=/favicon.ico><meta name=description content=" [2026-04-14] # Added # Changelog page linked in the footer beside the copyright notice Removed year from footer copyright to keep it cleaner "><meta property="og:url" content="https://freedoms4.org/changelog/"><meta property="og:site_name" content="Freedoms4"><meta property="og:title" content="Changelog"><meta property="og:description" content="[2026-04-14] # Added # Changelog page linked in the footer beside the copyright notice Removed year from footer copyright to keep it cleaner"><meta property="og:locale" content="en_us"><meta property="og:type" content="website"><meta itemprop=name content="Changelog"><meta itemprop=description content="[2026-04-14] # Added # Changelog page linked in the footer beside the copyright notice Removed year from footer copyright to keep it cleaner"><meta itemprop=wordCount content="23"><link rel=alternate type=application/rss+xml href=/changelog/index.xml title=Freedoms4><link rel=stylesheet href=/css/custom.css><script>(function(){var e=localStorage.getItem("theme");e&&document.documentElement.setAttribute("data-theme",e)})()</script></head><body class=body><header class=header><div class=brand><img src=/logo.png alt="Freedoms4 logo"><h1>Freedoms4</h1><div class=brand__actions><button class=theme-toggle id=theme-toggle aria-label="Toggle theme" title="Toggle dark/light mode">
<!doctype html><html class=html lang=en-us dir=ltr><head><meta charset=utf-8><meta name=viewport content="width=device-width"><title>Changelog | Freedoms4</title><link rel=stylesheet href=/css/style.min.34d0accb85f8ec23ceee8c29eef5907823b531d8acb9e6bdf45a3b37ad028d30.css integrity="sha256-NNCsy4X47CPO7owp7vWQeCO1Mdisuea99Fo7N60CjTA=" crossorigin=anonymous><link rel=icon href=/favicon.ico><meta name=description content=" [2026-04-14] # Changelog page. Removed year from footer copyright. “Contents” style UniNotes page. "><meta property="og:url" content="https://freedoms4.org/changelog/"><meta property="og:site_name" content="Freedoms4"><meta property="og:title" content="Changelog"><meta property="og:description" content="[2026-04-14] # Changelog page. Removed year from footer copyright. “Contents” style UniNotes page."><meta property="og:locale" content="en_us"><meta property="og:type" content="website"><meta itemprop=name content="Changelog"><meta itemprop=description content="[2026-04-14] # Changelog page. Removed year from footer copyright. “Contents” style UniNotes page."><meta itemprop=wordCount content="13"><link rel=alternate type=application/rss+xml href=/changelog/index.xml title=Freedoms4><link rel=stylesheet href=/css/custom.css><script>(function(){var e=localStorage.getItem("theme");e&&document.documentElement.setAttribute("data-theme",e)})()</script></head><body class=body><header class=header><div class=brand><img src=/logo.png alt="Freedoms4 logo"><h1>Freedoms4</h1><div class=brand__actions><button class=theme-toggle id=theme-toggle aria-label="Toggle theme" title="Toggle dark/light mode">
<svg class="theme-toggle__sun" viewBox="0 0 24 24" width="16" height="16" fill="currentColor"><path d="M12 7c-2.76.0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zM2 13h2c.55.0 1-.45 1-1s-.45-1-1-1H2c-.55.0-1 .45-1 1s.45 1 1 1zm18 0h2c.55.0 1-.45 1-1s-.45-1-1-1h-2c-.55.0-1 .45-1 1s.45 1 1 1zM11 2v2c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1s-1 .45-1 1zm0 18v2c0 .55.45 1 1 1s1-.45 1-1v-2c0-.55-.45-1-1-1s-1 .45-1 1zM5.99 4.58c-.39-.39-1.03-.39-1.41.0-.39.39-.39 1.03.0 1.41l1.06 1.06c.39.39 1.03.39 1.41.0s.39-1.03.0-1.41L5.99 4.58zm12.37 12.37c-.39-.39-1.03-.39-1.41.0-.39.39-.39 1.03.0 1.41l1.06 1.06c.39.39 1.03.39 1.41.0.39-.39.39-1.03.0-1.41l-1.06-1.06zm1.06-12.37-1.06 1.06c-.39.39-.39 1.03.0 1.41s1.03.39 1.41.0l1.06-1.06c.39-.39.39-1.03.0-1.41s-1.03-.39-1.41.0zM7.05 18.36l-1.06 1.06c-.39.39-.39 1.03.0 1.41s1.03.39 1.41.0l1.06-1.06c.39-.39.39-1.03.0-1.41s-1.03-.39-1.41.0z"/></svg>
<svg class="theme-toggle__moon" viewBox="0 0 24 24" width="16" height="16" fill="currentColor"><path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"/></svg></button><div class="brand__auth brand__auth--desktop"><input type=checkbox id=auth-dropdown class=brand__auth-check>
<label class=brand__auth-toggle for=auth-dropdown tabindex=0 aria-label="Account options"><svg viewBox="0 0 24 24" width="12" height="12" fill="currentColor"><path d="M12 12c2.7.0 4.8-2.1 4.8-4.8S14.7 2.4 12 2.4 7.2 4.5 7.2 7.2 9.3 12 12 12zm0 2.4c-3.2.0-9.6 1.6-9.6 4.8v2.4h19.2v-2.4c0-3.2-6.4-4.8-9.6-4.8z"/></svg></label><div class=brand__auth-links><a href=/login/ class="auth-link auth-link--login">Login</a>
@@ -7,4 +7,4 @@
<label class=brand__mobile-toggle for=mobile-menu-check aria-label=Menu><svg viewBox="0 0 24 24" width="18" height="18" fill="currentColor"><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/></svg></label><div class=brand__mobile-links><a href=/login/ class=mobile-link>Login</a>
<a href=/signup/ class=mobile-link>Sign Up</a>
<a href=/changelog/index.xml class="mobile-link mobile-link--subscribe"><svg viewBox="0 0 24 24" width="12" height="12" fill="currentColor" aria-hidden="true"><path d="M6.18 15.64a2.18 2.18.0 012.18 2.18c0 1.19-.98 2.18-2.18 2.18C4.98 20 4 19.01 4 17.82a2.18 2.18.0 012.18-2.18M4 4.44A15.56 15.56.0 0119.56 20h-2.83A12.73 12.73.0 004 7.27V4.44m0 5.66a9.9 9.9.0 019.9 9.9h-2.83A7.07 7.07.0 004 12.93V10.1z"/></svg>
Subscribe</a></div></div></div></div><nav class="menu language"><ul class="menu__list language__list"><li class=menu__item><a class=menu__link href=/>Home</a></li><li class=menu__item><a class=menu__link href=/blog/>Blog</a></li><li class=menu__item><a class=menu__link href=/services/>Services</a></li><li class=menu__item><a class=menu__link href=/uninotes/>UniNotes</a></li><li class=menu__item><a class=menu__link href=/contact/>Contact</a></li></ul></nav></header><main class=main><h1>Changelog</h1><h2 class=heading id=2026-04-14>[2026-04-14]<span class=heading__anchor> <a href=#2026-04-14>#</a></span></h2><h3 class=heading id=added>Added<span class=heading__anchor> <a href=#added>#</a></span></h3><ul><li>Changelog page linked in the footer beside the copyright notice</li><li>Removed year from footer copyright to keep it cleaner</li></ul></main><footer class=footer><p class=footer__copyright-notice>&copy; <a href=https://freedoms4.org>freedoms4.org</a> <a href=/changelog/>Changelog</a></p><p class=footer__theme-info>Built with <a href=https://gohugo.io>Hugo</a> and based on <a href=https://github.com/CyrusYip/hugo-theme-yue>Yue</a> theme</p></footer><script>(function(){var e=document.getElementById("theme-toggle");if(!e)return;function t(){var e=localStorage.getItem("theme");return e?e:window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"}function n(e){document.documentElement.setAttribute("data-theme",e),localStorage.setItem("theme",e)}n(t()),e.addEventListener("click",function(){var e=document.documentElement.getAttribute("data-theme")||t();n(e==="dark"?"light":"dark")})})()</script><script>(function(){var e=document.getElementById("mobile-menu-check");if(!e)return;document.addEventListener("click",function(t){if(!e.checked)return;var n=e.closest(".brand__mobile-menu");n&&!n.contains(t.target)&&(e.checked=!1)})})()</script></body></html>
Subscribe</a></div></div></div></div><nav class="menu language"><ul class="menu__list language__list"><li class=menu__item><a class=menu__link href=/>Home</a></li><li class=menu__item><a class=menu__link href=/blog/>Blog</a></li><li class=menu__item><a class=menu__link href=/services/>Services</a></li><li class=menu__item><a class=menu__link href=/uninotes/>UniNotes</a></li><li class=menu__item><a class=menu__link href=/contact/>Contact</a></li></ul></nav></header><main class=main><h1>Changelog</h1><h2 class=heading id=2026-04-14>[2026-04-14]<span class=heading__anchor> <a href=#2026-04-14>#</a></span></h2><ul><li>Changelog page.</li><li>Removed year from footer copyright.</li><li>&ldquo;Contents&rdquo; style UniNotes page.</li></ul></main><footer class=footer><p class=footer__copyright-notice>&copy; <a href=https://freedoms4.org>freedoms4.org</a> <a href=/changelog/>Changelog</a></p><p class=footer__theme-info>Built with <a href=https://gohugo.io>Hugo</a> and based on <a href=https://github.com/CyrusYip/hugo-theme-yue>Yue</a> theme</p></footer><script>(function(){var e=document.getElementById("theme-toggle");if(!e)return;function t(){var e=localStorage.getItem("theme");return e?e:window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"}function n(e){document.documentElement.setAttribute("data-theme",e),localStorage.setItem("theme",e)}n(t()),e.addEventListener("click",function(){var e=document.documentElement.getAttribute("data-theme")||t();n(e==="dark"?"light":"dark")})})()</script><script>(function(){var e=document.getElementById("mobile-menu-check");if(!e)return;document.addEventListener("click",function(t){if(!e.checked)return;var n=e.closest(".brand__mobile-menu");n&&!n.contains(t.target)&&(e.checked=!1)})})()</script></body></html>

View File

@@ -660,6 +660,123 @@
}
}
/* ── UniNotes Contents Panel ─────────────────────────────────────────────── */
.uninotes-contents {
margin: 1.25rem 0 2rem 0;
border-left: 3px solid var(--accent-color);
padding-left: 1rem;
display: flex;
flex-direction: column;
gap: 1.5rem;
}
.uninotes-contents__semester {
display: flex;
flex-direction: column;
gap: 0.6rem;
}
.uninotes-contents__sem-link {
text-transform: uppercase;
color: var(--foreground-color);
text-decoration: none;
font-size: 1rem;
font-weight: 400;
}
.uninotes-contents__sem-link:hover {
color: var(--accent-color);
text-decoration: underline;
}
.uninotes-contents__subject {
display: flex;
flex-direction: column;
gap: 0.6rem;
padding-left: 0.7rem;
}
.uninotes-contents__subject-link {
font-size: 0.95rem;
font-weight: 600;
color: var(--foreground-color);
text-decoration: none;
letter-spacing: 0.01em;
}
.uninotes-contents__subject-link:hover {
color: var(--accent-color);
text-decoration: underline;
}
.uninotes-contents__units {
list-style: none;
padding: 0.6px;
margin: 0.15rem 0 0 0.75rem;
display: flex;
flex-direction: column;
gap: 0.4rem;
}
.uninotes-contents__unit {
display: flex;
align-items: center;
gap: 0.7rem;
flex-wrap: wrap;
}
.uninotes-contents__unit-link {
font-size: 0.9rem;
color: var(--foreground-color);
text-decoration: none;
}
.uninotes-contents__unit-link:hover {
color: var(--accent-color);
text-decoration: underline;
}
.uninotes-contents__unit-cats {
display: flex;
gap: 0.3rem;
}
.uninotes-contents__cat {
font-size: 0.65rem;
font-weight: 600;
letter-spacing: 0.04em;
padding: 0.1rem 0.45rem;
border-radius: 999px;
border: 1px solid currentColor;
text-decoration: none;
text-transform: uppercase;
}
.uninotes-contents__cat--self {
color: var(--accent-color);
}
.uninotes-contents__cat--self:hover {
background: var(--accent-color);
color: var(--background-color, #fff);
}
.uninotes-contents__cat--live {
color: var(--accent-color);
}
.uninotes-contents__cat--live:hover {
background: var(--accent-color);
color: var(--background-color, #fff);
}
.uninotes-contents__cat--na {
color: var(--foreground-color3, #888);
opacity: 0.45;
cursor: not-allowed;
}
/* ── Unit Choice Page (Self / Live) ─────────────────────────────────────── */
.unit-choice__subtitle {
@@ -713,16 +830,7 @@
text-decoration: none;
}
.unit-choice__card--live {
border-color: var(--foreground-color3, #888);
opacity: 0.7;
}
.unit-choice__card--live:hover {
background: var(--foreground-color3, #888);
border-color: var(--foreground-color3, #888);
color: var(--background-color, #fff);
}
/* .unit-choice__card--live intentionally matches .unit-choice__card — no overrides */
.unit-choice__icon {
display: flex;
@@ -755,10 +863,14 @@
}
.unit-choice__card--unavailable {
border-color: var(--foreground-color3, #888);
color: var(--foreground-color3, #888);
cursor: not-allowed;
opacity: 0.45;
}
.unit-choice__card--unavailable:hover {
background: transparent;
color: var(--foreground-color3, #888);
transform: none;
}

View File

@@ -7,4 +7,18 @@
<label class=brand__mobile-toggle for=mobile-menu-check aria-label=Menu><svg viewBox="0 0 24 24" width="18" height="18" fill="currentColor"><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/></svg></label><div class=brand__mobile-links><a href=/login/ class=mobile-link>Login</a>
<a href=/signup/ class=mobile-link>Sign Up</a>
<a href=/uninotes/index.xml class="mobile-link mobile-link--subscribe"><svg viewBox="0 0 24 24" width="12" height="12" fill="currentColor" aria-hidden="true"><path d="M6.18 15.64a2.18 2.18.0 012.18 2.18c0 1.19-.98 2.18-2.18 2.18C4.98 20 4 19.01 4 17.82a2.18 2.18.0 012.18-2.18M4 4.44A15.56 15.56.0 0119.56 20h-2.83A12.73 12.73.0 004 7.27V4.44m0 5.66a9.9 9.9.0 019.9 9.9h-2.83A7.07 7.07.0 004 12.93V10.1z"/></svg>
Subscribe</a></div></div></div></div><nav class="menu language"><ul class="menu__list language__list"><li class=menu__item><a class=menu__link href=/>Home</a></li><li class=menu__item><a class=menu__link href=/blog/>Blog</a></li><li class=menu__item><a class=menu__link href=/services/>Services</a></li><li class=menu__item><a class=menu__link href=/uninotes/>UniNotes</a></li><li class=menu__item><a class=menu__link href=/contact/>Contact</a></li></ul></nav></header><main class=main><nav class="uninotes-breadcrumbs breadcrumbs"><a href=/uninotes/>UniNotes</a></nav><h1>UniNotes</h1><ul class=uninotes-list><li class=uninotes-list__item><a class=uninotes-list__link href=/uninotes/s1/>S1</a></li></ul></main><footer class=footer><p class=footer__copyright-notice>&copy; <a href=https://freedoms4.org>freedoms4.org</a> <a href=/changelog/>Changelog</a></p><p class=footer__theme-info>Built with <a href=https://gohugo.io>Hugo</a> and based on <a href=https://github.com/CyrusYip/hugo-theme-yue>Yue</a> theme</p></footer><script>(function(){var e=document.getElementById("theme-toggle");if(!e)return;function t(){var e=localStorage.getItem("theme");return e?e:window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"}function n(e){document.documentElement.setAttribute("data-theme",e),localStorage.setItem("theme",e)}n(t()),e.addEventListener("click",function(){var e=document.documentElement.getAttribute("data-theme")||t();n(e==="dark"?"light":"dark")})})()</script><script>(function(){var e=document.getElementById("mobile-menu-check");if(!e)return;document.addEventListener("click",function(t){if(!e.checked)return;var n=e.closest(".brand__mobile-menu");n&&!n.contains(t.target)&&(e.checked=!1)})})()</script></body></html>
Subscribe</a></div></div></div></div><nav class="menu language"><ul class="menu__list language__list"><li class=menu__item><a class=menu__link href=/>Home</a></li><li class=menu__item><a class=menu__link href=/blog/>Blog</a></li><li class=menu__item><a class=menu__link href=/services/>Services</a></li><li class=menu__item><a class=menu__link href=/uninotes/>UniNotes</a></li><li class=menu__item><a class=menu__link href=/contact/>Contact</a></li></ul></nav></header><main class=main><nav class="uninotes-breadcrumbs breadcrumbs"><a href=/uninotes/>UniNotes</a></nav><h1>UniNotes</h1><h3>Contents</h3><div class=uninotes-contents><div class=uninotes-contents__semester><a class=uninotes-contents__sem-link href=/uninotes/s1/>S1</a><div class=uninotes-contents__subject><a class=uninotes-contents__subject-link href=/uninotes/s1/bo-dcm1109/>BO DCM1109</a><ul class=uninotes-contents__units><li class=uninotes-contents__unit><a class=uninotes-contents__unit-link href=/uninotes/s1/bo-dcm1109/unit1/>Unit 1</a>
<span class=uninotes-contents__unit-cats><a class="uninotes-contents__cat uninotes-contents__cat--self" href=/uninotes/s1/bo-dcm1109/unit1/self/>Self</a>
<span class="uninotes-contents__cat uninotes-contents__cat--na">Live</span></span></li><li class=uninotes-contents__unit><a class=uninotes-contents__unit-link href=/uninotes/s1/bo-dcm1109/unit2/>Unit 2</a>
<span class=uninotes-contents__unit-cats><a class="uninotes-contents__cat uninotes-contents__cat--self" href=/uninotes/s1/bo-dcm1109/unit2/self/>Self</a>
<span class="uninotes-contents__cat uninotes-contents__cat--na">Live</span></span></li></ul></div><div class=uninotes-contents__subject><a class=uninotes-contents__subject-link href=/uninotes/s1/et-dcm1107/>ET DCM1107</a><ul class=uninotes-contents__units><li class=uninotes-contents__unit><a class=uninotes-contents__unit-link href=/uninotes/s1/et-dcm1107/unit1/>Unit 1</a>
<span class=uninotes-contents__unit-cats><span class="uninotes-contents__cat uninotes-contents__cat--na">Self</span>
<a class="uninotes-contents__cat uninotes-contents__cat--live" href=/uninotes/s1/et-dcm1107/unit1/live/>Live</a></span></li><li class=uninotes-contents__unit><a class=uninotes-contents__unit-link href=/uninotes/s1/et-dcm1107/unit2/>Unit 2</a>
<span class=uninotes-contents__unit-cats><span class="uninotes-contents__cat uninotes-contents__cat--na">Self</span>
<a class="uninotes-contents__cat uninotes-contents__cat--live" href=/uninotes/s1/et-dcm1107/unit2/live/>Live</a></span></li></ul></div><div class=uninotes-contents__subject><a class=uninotes-contents__subject-link href=/uninotes/s1/ge-dcm1106/>GE DCM1106</a><ul class=uninotes-contents__units><li class=uninotes-contents__unit><a class=uninotes-contents__unit-link href=/uninotes/s1/ge-dcm1106/unit1/>Unit 1</a>
<span class=uninotes-contents__unit-cats><span class="uninotes-contents__cat uninotes-contents__cat--na">Self</span>
<a class="uninotes-contents__cat uninotes-contents__cat--live" href=/uninotes/s1/ge-dcm1106/unit1/live/>Live</a></span></li></ul></div><div class=uninotes-contents__subject><a class=uninotes-contents__subject-link href=/uninotes/s1/pbm-dcm1110/>PBM DCM1110</a><ul class=uninotes-contents__units><li class=uninotes-contents__unit><a class=uninotes-contents__unit-link href=/uninotes/s1/pbm-dcm1110/unit1/>Unit 1</a>
<span class=uninotes-contents__unit-cats><a class="uninotes-contents__cat uninotes-contents__cat--self" href=/uninotes/s1/pbm-dcm1110/unit1/self/>Self</a>
<a class="uninotes-contents__cat uninotes-contents__cat--live" href=/uninotes/s1/pbm-dcm1110/unit1/live/>Live</a></span></li><li class=uninotes-contents__unit><a class=uninotes-contents__unit-link href=/uninotes/s1/pbm-dcm1110/unit2/>Unit 2</a>
<span class=uninotes-contents__unit-cats><a class="uninotes-contents__cat uninotes-contents__cat--self" href=/uninotes/s1/pbm-dcm1110/unit2/self/>Self</a>
<span class="uninotes-contents__cat uninotes-contents__cat--na">Live</span></span></li></ul></div></div></div></main><footer class=footer><p class=footer__copyright-notice>&copy; <a href=https://freedoms4.org>freedoms4.org</a> <a href=/changelog/>Changelog</a></p><p class=footer__theme-info>Built with <a href=https://gohugo.io>Hugo</a> and based on <a href=https://github.com/CyrusYip/hugo-theme-yue>Yue</a> theme</p></footer><script>(function(){var e=document.getElementById("theme-toggle");if(!e)return;function t(){var e=localStorage.getItem("theme");return e?e:window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"}function n(e){document.documentElement.setAttribute("data-theme",e),localStorage.setItem("theme",e)}n(t()),e.addEventListener("click",function(){var e=document.documentElement.getAttribute("data-theme")||t();n(e==="dark"?"light":"dark")})})()</script><script>(function(){var e=document.getElementById("mobile-menu-check");if(!e)return;document.addEventListener("click",function(t){if(!e.checked)return;var n=e.closest(".brand__mobile-menu");n&&!n.contains(t.target)&&(e.checked=!1)})})()</script></body></html>

View File

@@ -9,6 +9,6 @@
<a href=/uninotes/s1/pbm-dcm1110/unit1/index.xml class="mobile-link mobile-link--subscribe"><svg viewBox="0 0 24 24" width="12" height="12" fill="currentColor" aria-hidden="true"><path d="M6.18 15.64a2.18 2.18.0 012.18 2.18c0 1.19-.98 2.18-2.18 2.18C4.98 20 4 19.01 4 17.82a2.18 2.18.0 012.18-2.18M4 4.44A15.56 15.56.0 0119.56 20h-2.83A12.73 12.73.0 004 7.27V4.44m0 5.66a9.9 9.9.0 019.9 9.9h-2.83A7.07 7.07.0 004 12.93V10.1z"/></svg>
Subscribe</a></div></div></div></div><nav class="menu language"><ul class="menu__list language__list"><li class=menu__item><a class=menu__link href=/>Home</a></li><li class=menu__item><a class=menu__link href=/blog/>Blog</a></li><li class=menu__item><a class=menu__link href=/services/>Services</a></li><li class=menu__item><a class=menu__link href=/uninotes/>UniNotes</a></li><li class=menu__item><a class=menu__link href=/contact/>Contact</a></li></ul></nav></header><main class=main><nav class="uninotes-breadcrumbs breadcrumbs"><a href=/uninotes/>UniNotes</a>
<a href=/uninotes/s1/>S1</a>
<a href=/uninotes/s1/ge-dcm1106/>GE DCM1106</a>
<a href=/uninotes/s1/pbm-dcm1110/>PBM DCM1110</a>
<span>Unit 1</span></nav><div class=uninotes-meta><span class=uninotes-meta__pill>S1</span>
<span class=uninotes-meta__pill>GE DCM1106</span></div><h1>Unit 1</h1><p class=unit-choice__subtitle>Choose type:</p><div class=unit-choice__options><div class="unit-choice__card unit-choice__card--self unit-choice__card--unavailable"><div class=unit-choice__icon><svg viewBox="0 0 24 24" width="32" height="32" fill="currentColor"><path d="M12 3 1 9l4 2.18v6L12 21l7-3.82v-6l2-1.09V17h2V9L12 3zm6.82 6L12 12.72 5.18 9 12 5.28 18.82 9zM17 15.99l-5 2.73-5-2.73v-3.72L12 15l5-2.73v3.72z"/></svg></div><div class=unit-choice__label>Self</div><div class=unit-choice__desc>Not available</div></div><a class="unit-choice__card unit-choice__card--live" href=/uninotes/s1/pbm-dcm1110/unit1/live/><div class=unit-choice__icon><svg viewBox="0 0 24 24" width="32" height="32" fill="currentColor"><path d="M17 10.5V7c0-.55-.45-1-1-1H4c-.55.0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55.0 1-.45 1-1v-3.5l4 4v-11l-4 4z"/></svg></div><div class=unit-choice__label>Live</div><div class=unit-choice__desc>Live class notes</div></a></div></main><footer class=footer><p class=footer__copyright-notice>&copy; <a href=https://freedoms4.org>freedoms4.org</a> <a href=/changelog/>Changelog</a></p><p class=footer__theme-info>Built with <a href=https://gohugo.io>Hugo</a> and based on <a href=https://github.com/CyrusYip/hugo-theme-yue>Yue</a> theme</p></footer><script>(function(){var e=document.getElementById("theme-toggle");if(!e)return;function t(){var e=localStorage.getItem("theme");return e?e:window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"}function n(e){document.documentElement.setAttribute("data-theme",e),localStorage.setItem("theme",e)}n(t()),e.addEventListener("click",function(){var e=document.documentElement.getAttribute("data-theme")||t();n(e==="dark"?"light":"dark")})})()</script><script>(function(){var e=document.getElementById("mobile-menu-check");if(!e)return;document.addEventListener("click",function(t){if(!e.checked)return;var n=e.closest(".brand__mobile-menu");n&&!n.contains(t.target)&&(e.checked=!1)})})()</script></body></html>
<span class=uninotes-meta__pill>PBM DCM1110</span></div><h1>Unit 1</h1><p class=unit-choice__subtitle>Choose type:</p><div class=unit-choice__options><a class="unit-choice__card unit-choice__card--self" href=/uninotes/s1/pbm-dcm1110/unit1/self/><div class=unit-choice__icon><svg viewBox="0 0 24 24" width="32" height="32" fill="currentColor"><path d="M12 3 1 9l4 2.18v6L12 21l7-3.82v-6l2-1.09V17h2V9L12 3zm6.82 6L12 12.72 5.18 9 12 5.28 18.82 9zM17 15.99l-5 2.73-5-2.73v-3.72L12 15l5-2.73v3.72z"/></svg></div><div class=unit-choice__label>Self</div><div class=unit-choice__desc>Self-study notes</div></a><a class="unit-choice__card unit-choice__card--live" href=/uninotes/s1/pbm-dcm1110/unit1/live/><div class=unit-choice__icon><svg viewBox="0 0 24 24" width="32" height="32" fill="currentColor"><path d="M17 10.5V7c0-.55-.45-1-1-1H4c-.55.0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55.0 1-.45 1-1v-3.5l4 4v-11l-4 4z"/></svg></div><div class=unit-choice__label>Live</div><div class=unit-choice__desc>Live class notes</div></a></div></main><footer class=footer><p class=footer__copyright-notice>&copy; <a href=https://freedoms4.org>freedoms4.org</a> <a href=/changelog/>Changelog</a></p><p class=footer__theme-info>Built with <a href=https://gohugo.io>Hugo</a> and based on <a href=https://github.com/CyrusYip/hugo-theme-yue>Yue</a> theme</p></footer><script>(function(){var e=document.getElementById("theme-toggle");if(!e)return;function t(){var e=localStorage.getItem("theme");return e?e:window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"}function n(e){document.documentElement.setAttribute("data-theme",e),localStorage.setItem("theme",e)}n(t()),e.addEventListener("click",function(){var e=document.documentElement.getAttribute("data-theme")||t();n(e==="dark"?"light":"dark")})})()</script><script>(function(){var e=document.getElementById("mobile-menu-check");if(!e)return;document.addEventListener("click",function(t){if(!e.checked)return;var n=e.closest(".brand__mobile-menu");n&&!n.contains(t.target)&&(e.checked=!1)})})()</script></body></html>

View File

@@ -6,13 +6,78 @@
<h1>UniNotes</h1>
{{ $semesters := site.Taxonomies.semester.Alphabetical }}
<ul class="uninotes-list">
{{ range $semesters }}
<li class="uninotes-list__item">
<a class="uninotes-list__link" href="{{ .Page.RelPermalink }}">{{ .Page.Title }}</a>
<h3>Contents</h3>
{{/* Build full tree: semester → subjectcode → units → self/live */}} {{ $semesters :=
site.Taxonomies.semester.Alphabetical }}
<div class="uninotes-contents">
{{ range $semesters }} {{ $semName := .Page.Title }} {{ $semPages := .Pages }} {{/* Collect
unique subject codes for this semester */}} {{ $subjectCodes := slice }} {{ range $semPages }}
{{ $raw := .Params.subjectcode }} {{ $code := "" }} {{ if reflect.IsSlice $raw }}{{ $code =
index $raw 0 }}{{ else }}{{ $code = $raw }}{{ end }} {{ if and $code (not (in $subjectCodes
$code)) }} {{ $subjectCodes = $subjectCodes | append $code }} {{ end }} {{ end }} {{
$subjectCodes = sort $subjectCodes }} {{ if $subjectCodes }}
<div class="uninotes-contents__semester">
<a class="uninotes-contents__sem-link" href="{{ .Page.RelPermalink }}">{{ $semName }}</a>
{{ range $subjectCodes }} {{ $code := . }} {{ $subPage := site.GetPage (printf
"/subjectcode/%s" ($code | urlize)) }} {{/* Collect one representative page per unit for
this subject */}} {{ $units := slice }} {{ $seenUnits := slice }} {{ range
$semPages.ByWeight }} {{ $raw := .Params.subjectcode }} {{ $sc := "" }} {{ if
reflect.IsSlice $raw }}{{ $sc = index $raw 0 }}{{ else }}{{ $sc = $raw }}{{ end }} {{ if eq
$sc $code }} {{ $unitLabel := (.Params.unit | default .Title) }} {{ if not (in $seenUnits
$unitLabel) }} {{ $seenUnits = $seenUnits | append $unitLabel }} {{ $units = $units | append
. }} {{ end }} {{ end }} {{ end }}
<div class="uninotes-contents__subject">
{{ if $subPage }}
<a class="uninotes-contents__subject-link" href="{{ $subPage.RelPermalink }}"
>{{ $code }}</a
>
{{ else }}
<span class="uninotes-contents__subject-link">{{ $code }}</span>
{{ end }}
<ul class="uninotes-contents__units">
{{ range $units }} {{ $unitLabel := (.Params.unit | default .Title) }} {{ $unitUrl
:= .Params.uniturl }} {{/* Find Self and Live URLs for this unit */}} {{ $selfUrl :=
"" }} {{ $liveUrl := "" }} {{ range $semPages }} {{ $raw := .Params.subjectcode }}
{{ $sc := "" }} {{ if reflect.IsSlice $raw }}{{ $sc = index $raw 0 }}{{ else }}{{
$sc = $raw }}{{ end }} {{ $ul := (.Params.unit | default .Title) }} {{ if and (eq
$sc $code) (eq $ul $unitLabel) }} {{ $cat := lower .Params.notecategory }} {{ if eq
$cat "self" }}{{ $selfUrl = .RelPermalink }}{{ end }} {{ if eq $cat "live" }}{{
$liveUrl = .RelPermalink }}{{ end }} {{ end }} {{ end }}
<li class="uninotes-contents__unit">
<a class="uninotes-contents__unit-link" href="{{ $unitUrl }}"
>{{ $unitLabel }}</a
>
<span class="uninotes-contents__unit-cats">
{{ if $selfUrl }}
<a
class="uninotes-contents__cat uninotes-contents__cat--self"
href="{{ $selfUrl }}"
>Self</a
>
{{ else }}
<span class="uninotes-contents__cat uninotes-contents__cat--na">Self</span>
{{ end }} {{ if $liveUrl }}
<a
class="uninotes-contents__cat uninotes-contents__cat--live"
href="{{ $liveUrl }}"
>Live</a
>
{{ else }}
<span class="uninotes-contents__cat uninotes-contents__cat--na">Live</span>
{{ end }}
</span>
</li>
{{ end }}
</ul>
</ul>
</div>
{{ end }}
</div>
{{ end }} {{ end }}
</div>
{{ end }}

View File

@@ -660,6 +660,123 @@
}
}
/* ── UniNotes Contents Panel ─────────────────────────────────────────────── */
.uninotes-contents {
margin: 1.25rem 0 2rem 0;
border-left: 3px solid var(--accent-color);
padding-left: 1rem;
display: flex;
flex-direction: column;
gap: 1.5rem;
}
.uninotes-contents__semester {
display: flex;
flex-direction: column;
gap: 0.6rem;
}
.uninotes-contents__sem-link {
text-transform: uppercase;
color: var(--foreground-color);
text-decoration: none;
font-size: 1rem;
font-weight: 400;
}
.uninotes-contents__sem-link:hover {
color: var(--accent-color);
text-decoration: underline;
}
.uninotes-contents__subject {
display: flex;
flex-direction: column;
gap: 0.6rem;
padding-left: 0.7rem;
}
.uninotes-contents__subject-link {
font-size: 0.95rem;
font-weight: 600;
color: var(--foreground-color);
text-decoration: none;
letter-spacing: 0.01em;
}
.uninotes-contents__subject-link:hover {
color: var(--accent-color);
text-decoration: underline;
}
.uninotes-contents__units {
list-style: none;
padding: 0.6px;
margin: 0.15rem 0 0 0.75rem;
display: flex;
flex-direction: column;
gap: 0.4rem;
}
.uninotes-contents__unit {
display: flex;
align-items: center;
gap: 0.7rem;
flex-wrap: wrap;
}
.uninotes-contents__unit-link {
font-size: 0.9rem;
color: var(--foreground-color);
text-decoration: none;
}
.uninotes-contents__unit-link:hover {
color: var(--accent-color);
text-decoration: underline;
}
.uninotes-contents__unit-cats {
display: flex;
gap: 0.3rem;
}
.uninotes-contents__cat {
font-size: 0.65rem;
font-weight: 600;
letter-spacing: 0.04em;
padding: 0.1rem 0.45rem;
border-radius: 999px;
border: 1px solid currentColor;
text-decoration: none;
text-transform: uppercase;
}
.uninotes-contents__cat--self {
color: var(--accent-color);
}
.uninotes-contents__cat--self:hover {
background: var(--accent-color);
color: var(--background-color, #fff);
}
.uninotes-contents__cat--live {
color: var(--accent-color);
}
.uninotes-contents__cat--live:hover {
background: var(--accent-color);
color: var(--background-color, #fff);
}
.uninotes-contents__cat--na {
color: var(--foreground-color3, #888);
opacity: 0.45;
cursor: not-allowed;
}
/* ── Unit Choice Page (Self / Live) ─────────────────────────────────────── */
.unit-choice__subtitle {
@@ -713,16 +830,7 @@
text-decoration: none;
}
.unit-choice__card--live {
border-color: var(--foreground-color3, #888);
opacity: 0.7;
}
.unit-choice__card--live:hover {
background: var(--foreground-color3, #888);
border-color: var(--foreground-color3, #888);
color: var(--background-color, #fff);
}
/* .unit-choice__card--live intentionally matches .unit-choice__card — no overrides */
.unit-choice__icon {
display: flex;
@@ -755,10 +863,14 @@
}
.unit-choice__card--unavailable {
border-color: var(--foreground-color3, #888);
color: var(--foreground-color3, #888);
cursor: not-allowed;
opacity: 0.45;
}
.unit-choice__card--unavailable:hover {
background: transparent;
color: var(--foreground-color3, #888);
transform: none;
}