From 68fd50ffcbaed9086f653f703ecb4c91ff3860a6 Mon Sep 17 00:00:00 2001 From: hyzen Date: Tue, 14 Apr 2026 17:01:03 +0530 Subject: [PATCH] Update: contents style uninotes page --- changelog/_index.md | 3 + docs/changelog/index.html | 4 +- docs/css/custom.css | 133 ++- docs/css/style.css | 774 ------------------ docs/uninotes/index.html | 16 +- docs/uninotes/s1/pbm-dcm1110/unit1/index.html | 4 +- layouts/uninotes/section.html | 83 +- static/css/custom.css | 133 ++- 8 files changed, 342 insertions(+), 808 deletions(-) delete mode 100644 docs/css/style.css diff --git a/changelog/_index.md b/changelog/_index.md index 890ba54..2916f9e 100644 --- a/changelog/_index.md +++ b/changelog/_index.md @@ -7,3 +7,6 @@ title: "Changelog" ### Added - Changelog page linked in the footer beside the copyright notice - Removed year from footer copyright to keep it cleaner + +### Updated +- "Contents" style UniNotes page. diff --git a/docs/changelog/index.html b/docs/changelog/index.html index 896d9b3..2fb1189 100644 --- a/docs/changelog/index.html +++ b/docs/changelog/index.html @@ -1,4 +1,4 @@ -Changelog | Freedoms4
Freedoms4 logo

Freedoms4

Changelog

[2026-04-14] #

Added #

\ No newline at end of file +Subscribe

Changelog

[2026-04-14] #

Added #

Updated #

\ No newline at end of file diff --git a/docs/css/custom.css b/docs/css/custom.css index 90b7d62..06db7cf 100644 --- a/docs/css/custom.css +++ b/docs/css/custom.css @@ -660,6 +660,124 @@ } } +/* ── 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 { + font-size: 1.11rem; + font-weight: 700; + letter-spacing: 0.08em; + text-transform: uppercase; + color: var(--foreground-color3, #888); + text-decoration: none; +} + +.uninotes-contents__sem-link:hover { + color: var(--accent-color); + text-decoration: underline; +} + +.uninotes-contents__subject { + display: flex; + flex-direction: column; + gap: 0.25rem; + padding-left: 0.5rem; +} + +.uninotes-contents__subject-link { + font-size: 0.82rem; + 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; + margin: 0.15rem 0 0 0.75rem; + display: flex; + flex-direction: column; + gap: 0.25rem; +} + +.uninotes-contents__unit { + display: flex; + align-items: center; + gap: 0.55rem; + 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 +831,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 +864,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; } diff --git a/docs/css/style.css b/docs/css/style.css deleted file mode 100644 index 37d945c..0000000 --- a/docs/css/style.css +++ /dev/null @@ -1,774 +0,0 @@ -/* -Styles are mobile-first. Desktop styles are wrapped in media queries. -Naming convention: BEM (Block, Element, Modifier). When it's difficult to add classes, I will use tag names. -*/ -*, -*::before, -*::after { - box-sizing: border-box; } - -.body { - margin: 0; } - -a { - text-decoration: none; } - -.menu__list, -.translation-list, -.pagination { - list-style-type: none; - padding-inline-start: 0; } - -ul:has(> li > input[type="checkbox"]) { - list-style-type: none; - padding-inline-start: 1em; } - -blockquote { - margin: 0; } - -.body { - margin-left: 16px; - margin-right: 16px; } - -@media (min-width: 800px) { - .body { - width: 768px; - margin-left: auto; - margin-right: auto; } } - -:root { - --background-color: #171414; - --background-color1: #fff; - --foreground-color: #e3e1db; - --foreground-color3: #ccc3b3; - --accent-color: #fff; } - -@media (prefers-color-scheme: light) { - :root { - --background-color: #fbf1c7; - --background-color1: #ebdbb2; - --foreground-color: #3c3836; - --foreground-color3: #665c54; - --accent-color: #af3a03; } } - -.body { - background-color: var(--background-color); - color: var(--foreground-color); } - -h1, -h2, -h3, -h4, -h5, -h6 { - color: var(--foreground-color); } - -a { - color: var(--accent-color); } - -.header { - border-bottom: 1px solid var(--background-color1); } - -.brand { - display: flex; - align-items: center; - gap: 6.9px; - margin-bottom: -18px; } - -.brand img { - height: 37px; - padding: 0px; } - -.footer { - border-top: 1px solid var(--background-color1); } - -blockquote { - background-color: var(--background-color1); } - [dir=rtl] blockquote { - border-right: 0.5rem solid var(--accent-color); } - [dir=ltr] blockquote { - border-left: 0.5rem solid var(--accent-color); } - -:not(pre) > code { - background-color: var(--background-color1); } - -hr { - background: var(--background-color1); } - -table { - background-color: var(--background-color1); } - -td, -th { - border: 1px solid var(--background-color); } - -figcaption { - color: var(--foreground-color3); } - -/* Background */ -.bg { - color: #3c3836; - background-color: #fbf1c7; } - -/* PreWrapper */ -.chroma { - color: #3c3836; - background-color: #fbf1c7; } - -/* Other */ -/* Error */ -/* CodeLine */ -/* LineLink */ -.chroma .lnlinks { - outline: none; - text-decoration: none; - color: inherit; } - -/* LineTableTD */ -.chroma .lntd { - vertical-align: top; - padding: 0; - margin: 0; - border: 0; } - -/* LineTable */ -.chroma .lntable { - border-spacing: 0; - padding: 0; - margin: 0; - border: 0; } - -/* LineHighlight */ -.chroma .hl { - background-color: #e1d8b3; } - -/* LineNumbersTable */ -.chroma .lnt { - white-space: pre; - -webkit-user-select: none; - user-select: none; - margin-right: 0.4em; - padding: 0 0.4em 0 0.4em; - color: #9d9b9a; } - -/* LineNumbers */ -.chroma .ln { - white-space: pre; - -webkit-user-select: none; - user-select: none; - margin-right: 0.4em; - padding: 0 0.4em 0 0.4em; - color: #9d9b9a; } - -/* Line */ -.chroma .line { - display: flex; } - -/* Keyword */ -.chroma .k { - color: #af3a03; } - -/* KeywordConstant */ -.chroma .kc { - color: #af3a03; } - -/* KeywordDeclaration */ -.chroma .kd { - color: #af3a03; } - -/* KeywordNamespace */ -.chroma .kn { - color: #af3a03; } - -/* KeywordPseudo */ -.chroma .kp { - color: #af3a03; } - -/* KeywordReserved */ -.chroma .kr { - color: #af3a03; } - -/* KeywordType */ -.chroma .kt { - color: #b57614; } - -/* Name */ -/* NameAttribute */ -.chroma .na { - color: #79740e; - font-weight: bold; } - -/* NameBuiltin */ -.chroma .nb { - color: #b57614; } - -/* NameBuiltinPseudo */ -/* NameClass */ -/* NameConstant */ -.chroma .no { - color: #d3869b; } - -/* NameDecorator */ -/* NameEntity */ -.chroma .ni { - color: #b57614; } - -/* NameException */ -.chroma .ne { - color: #fb4934; } - -/* NameFunction */ -.chroma .nf { - color: #b57614; } - -/* NameFunctionMagic */ -/* NameLabel */ -.chroma .nl { - color: #9d0006; } - -/* NameNamespace */ -/* NameOther */ -/* NameProperty */ -/* NameTag */ -.chroma .nt { - color: #9d0006; } - -/* NameVariable */ -/* NameVariableClass */ -/* NameVariableGlobal */ -/* NameVariableInstance */ -/* NameVariableMagic */ -/* Literal */ -/* LiteralDate */ -/* LiteralString */ -.chroma .s { - color: #79740e; } - -/* LiteralStringAffix */ -.chroma .sa { - color: #79740e; } - -/* LiteralStringBacktick */ -.chroma .sb { - color: #79740e; } - -/* LiteralStringChar */ -.chroma .sc { - color: #79740e; } - -/* LiteralStringDelimiter */ -.chroma .dl { - color: #79740e; } - -/* LiteralStringDoc */ -.chroma .sd { - color: #79740e; } - -/* LiteralStringDouble */ -.chroma .s2 { - color: #79740e; } - -/* LiteralStringEscape */ -.chroma .se { - color: #79740e; } - -/* LiteralStringHeredoc */ -.chroma .sh { - color: #79740e; } - -/* LiteralStringInterpol */ -.chroma .si { - color: #79740e; } - -/* LiteralStringOther */ -.chroma .sx { - color: #79740e; } - -/* LiteralStringRegex */ -.chroma .sr { - color: #79740e; } - -/* LiteralStringSingle */ -.chroma .s1 { - color: #79740e; } - -/* LiteralStringSymbol */ -.chroma .ss { - color: #076678; } - -/* LiteralNumber */ -.chroma .m { - color: #8f3f71; } - -/* LiteralNumberBin */ -.chroma .mb { - color: #8f3f71; } - -/* LiteralNumberFloat */ -.chroma .mf { - color: #8f3f71; } - -/* LiteralNumberHex */ -.chroma .mh { - color: #8f3f71; } - -/* LiteralNumberInteger */ -.chroma .mi { - color: #8f3f71; } - -/* LiteralNumberIntegerLong */ -.chroma .il { - color: #8f3f71; } - -/* LiteralNumberOct */ -.chroma .mo { - color: #8f3f71; } - -/* Operator */ -.chroma .o { - color: #af3a03; } - -/* OperatorWord */ -.chroma .ow { - color: #af3a03; } - -/* Punctuation */ -/* Comment */ -.chroma .c { - color: #928374; - font-style: italic; } - -/* CommentHashbang */ -.chroma .ch { - color: #928374; - font-style: italic; } - -/* CommentMultiline */ -.chroma .cm { - color: #928374; - font-style: italic; } - -/* CommentSingle */ -.chroma .c1 { - color: #928374; - font-style: italic; } - -/* CommentSpecial */ -.chroma .cs { - color: #928374; - font-style: italic; } - -/* CommentPreproc */ -.chroma .cp { - color: #427b58; } - -/* CommentPreprocFile */ -.chroma .cpf { - color: #427b58; - font-style: italic; } - -/* Generic */ -/* GenericDeleted */ -.chroma .gd { - color: #282828; - background-color: #9d0006; } - -/* GenericEmph */ -.chroma .ge { - color: #076678; - text-decoration: underline; } - -/* GenericError */ -.chroma .gr { - background-color: #9d0006; - font-weight: bold; } - -/* GenericHeading */ -.chroma .gh { - color: #79740e; - font-weight: bold; } - -/* GenericInserted */ -.chroma .gi { - color: #282828; - background-color: #79740e; } - -/* GenericOutput */ -.chroma .go { - color: #504945; } - -/* GenericPrompt */ -/* GenericStrong */ -/* GenericSubheading */ -.chroma .gu { - color: #79740e; - font-weight: bold; } - -/* GenericTraceback */ -.chroma .gt { - background-color: #3c3836; - font-weight: bold; } - -/* GenericUnderline */ -/* TextWhitespace */ -@media (prefers-color-scheme: dark) { - /* Background */ - .bg { - color: #ebdbb2; - background-color: #282828; } - /* PreWrapper */ - .chroma { - color: #ebdbb2; - background-color: #282828; } - /* Other */ - /* Error */ - /* CodeLine */ - /* LineLink */ - .chroma .lnlinks { - outline: none; - text-decoration: none; - color: inherit; } - /* LineTableTD */ - .chroma .lntd { - vertical-align: top; - padding: 0; - margin: 0; - border: 0; } - /* LineTable */ - .chroma .lntable { - border-spacing: 0; - padding: 0; - margin: 0; - border: 0; } - /* LineHighlight */ - .chroma .hl { - background-color: #3d3d3d; } - /* LineNumbersTable */ - .chroma .lnt { - white-space: pre; - -webkit-user-select: none; - user-select: none; - margin-right: 0.4em; - padding: 0 0.4em 0 0.4em; - color: #756d59; } - /* LineNumbers */ - .chroma .ln { - white-space: pre; - -webkit-user-select: none; - user-select: none; - margin-right: 0.4em; - padding: 0 0.4em 0 0.4em; - color: #756d59; } - /* Line */ - .chroma .line { - display: flex; } - /* Keyword */ - .chroma .k { - color: #fe8019; } - /* KeywordConstant */ - .chroma .kc { - color: #fe8019; } - /* KeywordDeclaration */ - .chroma .kd { - color: #fe8019; } - /* KeywordNamespace */ - .chroma .kn { - color: #fe8019; } - /* KeywordPseudo */ - .chroma .kp { - color: #fe8019; } - /* KeywordReserved */ - .chroma .kr { - color: #fe8019; } - /* KeywordType */ - .chroma .kt { - color: #fabd2f; } - /* Name */ - /* NameAttribute */ - .chroma .na { - color: #b8bb26; - font-weight: bold; } - /* NameBuiltin */ - .chroma .nb { - color: #fabd2f; } - /* NameBuiltinPseudo */ - /* NameClass */ - /* NameConstant */ - .chroma .no { - color: #d3869b; } - /* NameDecorator */ - /* NameEntity */ - .chroma .ni { - color: #fabd2f; } - /* NameException */ - .chroma .ne { - color: #fb4934; } - /* NameFunction */ - .chroma .nf { - color: #fabd2f; } - /* NameFunctionMagic */ - /* NameLabel */ - .chroma .nl { - color: #fb4934; } - /* NameNamespace */ - /* NameOther */ - /* NameProperty */ - /* NameTag */ - .chroma .nt { - color: #fb4934; } - /* NameVariable */ - /* NameVariableClass */ - /* NameVariableGlobal */ - /* NameVariableInstance */ - /* NameVariableMagic */ - /* Literal */ - /* LiteralDate */ - /* LiteralString */ - .chroma .s { - color: #b8bb26; } - /* LiteralStringAffix */ - .chroma .sa { - color: #b8bb26; } - /* LiteralStringBacktick */ - .chroma .sb { - color: #b8bb26; } - /* LiteralStringChar */ - .chroma .sc { - color: #b8bb26; } - /* LiteralStringDelimiter */ - .chroma .dl { - color: #b8bb26; } - /* LiteralStringDoc */ - .chroma .sd { - color: #b8bb26; } - /* LiteralStringDouble */ - .chroma .s2 { - color: #b8bb26; } - /* LiteralStringEscape */ - .chroma .se { - color: #b8bb26; } - /* LiteralStringHeredoc */ - .chroma .sh { - color: #b8bb26; } - /* LiteralStringInterpol */ - .chroma .si { - color: #b8bb26; } - /* LiteralStringOther */ - .chroma .sx { - color: #b8bb26; } - /* LiteralStringRegex */ - .chroma .sr { - color: #b8bb26; } - /* LiteralStringSingle */ - .chroma .s1 { - color: #b8bb26; } - /* LiteralStringSymbol */ - .chroma .ss { - color: #83a598; } - /* LiteralNumber */ - .chroma .m { - color: #d3869b; } - /* LiteralNumberBin */ - .chroma .mb { - color: #d3869b; } - /* LiteralNumberFloat */ - .chroma .mf { - color: #d3869b; } - /* LiteralNumberHex */ - .chroma .mh { - color: #d3869b; } - /* LiteralNumberInteger */ - .chroma .mi { - color: #d3869b; } - /* LiteralNumberIntegerLong */ - .chroma .il { - color: #d3869b; } - /* LiteralNumberOct */ - .chroma .mo { - color: #d3869b; } - /* Operator */ - .chroma .o { - color: #fe8019; } - /* OperatorWord */ - .chroma .ow { - color: #fe8019; } - /* Punctuation */ - /* Comment */ - .chroma .c { - color: #928374; - font-style: italic; } - /* CommentHashbang */ - .chroma .ch { - color: #928374; - font-style: italic; } - /* CommentMultiline */ - .chroma .cm { - color: #928374; - font-style: italic; } - /* CommentSingle */ - .chroma .c1 { - color: #928374; - font-style: italic; } - /* CommentSpecial */ - .chroma .cs { - color: #928374; - font-style: italic; } - /* CommentPreproc */ - .chroma .cp { - color: #8ec07c; } - /* CommentPreprocFile */ - .chroma .cpf { - color: #8ec07c; - font-style: italic; } - /* Generic */ - /* GenericDeleted */ - .chroma .gd { - color: #282828; - background-color: #fb4934; } - /* GenericEmph */ - .chroma .ge { - color: #83a598; - text-decoration: underline; } - /* GenericError */ - .chroma .gr { - background-color: #fb4934; - font-weight: bold; } - /* GenericHeading */ - .chroma .gh { - color: #b8bb26; - font-weight: bold; } - /* GenericInserted */ - .chroma .gi { - color: #282828; - background-color: #b8bb26; } - /* GenericOutput */ - .chroma .go { - color: #504945; } - /* GenericPrompt */ - /* GenericStrong */ - /* GenericSubheading */ - .chroma .gu { - color: #b8bb26; - font-weight: bold; } - /* GenericTraceback */ - .chroma .gt { - background-color: #fb4934; - font-weight: bold; } - /* GenericUnderline */ - /* TextWhitespace */ } - -pre:not(.chroma), -.bg, -.chroma, -.highlight { - background-color: var(--background-color1); } - -.html { - font-size: 18px; } - -.body { - font-family: sans-serif; - line-height: 1.5; } - -p, -ul, -ol, -h1, -h2, -h3, -h4, -h5, -h6 { - overflow-wrap: break-word; } - -.toc { - margin-block: 1rem; } - .toc__summary { - font-weight: bolder; - cursor: pointer; } - -blockquote { - padding: 0.5rem; } - -hr { - border: none; - height: 1px; } - -figure { - margin-inline: 0; } - -.heading__anchor { - display: none; } - -.heading:hover > .heading__anchor { - display: inline; } - -.table-wrapper { - overflow-x: auto; - margin-block: 1rem; } - .table-wrapper > table { - word-break: keep-all; - border-collapse: collapse; } - .table-wrapper > table td, - .table-wrapper > table th { - padding: 0.5rem; - text-align: start; } - -svg, -img, -video, -iframe { - max-width: 100%; } - -.menu__list { - display: flex; - flex-direction: row; - gap: 0.5rem; - flex-wrap: wrap; } - -.menu__link--active { - font-weight: bolder; } - -.pagination { - display: flex; - gap: 1rem; } - -.page-item.active { - font-weight: bolder; } - -.page-nav { - display: flex; - flex-direction: column; - margin-block: 1rem; } - -.section-post-title, -.term-post-title { - margin-block-start: 0; } - -.home-post-title { - margin-block-end: 0; } - -.summary { - margin-block-start: 0; } - -:not(pre) > code { - padding-inline: 0.25rem; } - -div.highlight { - overflow-x: auto; - margin-block: 1rem; } - div.highlight > div.chroma > table.lntable { - padding-inline-end: 0.4rem; } - div.highlight > pre.chroma { - padding-inline: 0.4rem; } - -pre:not(.chroma) { - overflow-x: auto; - padding-block: 1rem; - padding-inline: 0.4rem; } - -pre { - font-size: 0.875rem; } - -.footer { - font-size: smaller; } diff --git a/docs/uninotes/index.html b/docs/uninotes/index.html index 9200ced..fbd670e 100644 --- a/docs/uninotes/index.html +++ b/docs/uninotes/index.html @@ -7,4 +7,18 @@

UniNotes

\ No newline at end of file +Subscribe

UniNotes

Contents

\ No newline at end of file diff --git a/docs/uninotes/s1/pbm-dcm1110/unit1/index.html b/docs/uninotes/s1/pbm-dcm1110/unit1/index.html index b36040a..ff431a3 100644 --- a/docs/uninotes/s1/pbm-dcm1110/unit1/index.html +++ b/docs/uninotes/s1/pbm-dcm1110/unit1/index.html @@ -9,6 +9,6 @@ Subscribe
S1 -GE DCM1106

Unit 1

Choose type:

Self
Not available
Live
Live class notes
\ No newline at end of file +PBM DCM1110

Unit 1

Choose type:

Self
Self-study notes
Live
Live class notes
\ No newline at end of file diff --git a/layouts/uninotes/section.html b/layouts/uninotes/section.html index 66c27ac..534bcb1 100644 --- a/layouts/uninotes/section.html +++ b/layouts/uninotes/section.html @@ -1,18 +1,83 @@ {{ define "main" }}

UniNotes

-{{ $semesters := site.Taxonomies.semester.Alphabetical }} - +

Contents

+ +{{/* Build full tree: semester → subjectcode → units → self/live */}} {{ $semesters := +site.Taxonomies.semester.Alphabetical }} + +
+ {{ 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 }} +
+ {{ $semName }} + + {{ 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 }} + +
+ {{ if $subPage }} + {{ $code }} + {{ else }} + {{ $code }} + {{ end }} +
    + {{ 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 }} + +
  • + {{ $unitLabel }} + + {{ if $selfUrl }} + Self + {{ else }} + Self + {{ end }} {{ if $liveUrl }} + Live + {{ else }} + Live + {{ end }} + +
  • + {{ end }} +
+
+ {{ end }} +
+ {{ end }} {{ end }} +
{{ end }} diff --git a/static/css/custom.css b/static/css/custom.css index 90b7d62..06db7cf 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -660,6 +660,124 @@ } } +/* ── 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 { + font-size: 1.11rem; + font-weight: 700; + letter-spacing: 0.08em; + text-transform: uppercase; + color: var(--foreground-color3, #888); + text-decoration: none; +} + +.uninotes-contents__sem-link:hover { + color: var(--accent-color); + text-decoration: underline; +} + +.uninotes-contents__subject { + display: flex; + flex-direction: column; + gap: 0.25rem; + padding-left: 0.5rem; +} + +.uninotes-contents__subject-link { + font-size: 0.82rem; + 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; + margin: 0.15rem 0 0 0.75rem; + display: flex; + flex-direction: column; + gap: 0.25rem; +} + +.uninotes-contents__unit { + display: flex; + align-items: center; + gap: 0.55rem; + 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 +831,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 +864,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; }