From 51ea506a7c54b5960fc3720401e2a4fa36dc34bf Mon Sep 17 00:00:00 2001 From: Theodor Kvalsvik Lauritzen <19690242+theodorklauritzen@users.noreply.github.com> Date: Fri, 5 Sep 2025 10:36:47 +0200 Subject: [PATCH 1/4] feat: Add seeder script to migrate committee articles --- docker-compose.prod.yml | 2 +- .../cms_paragraphs/committees/vevcom_a.md | 47 +++++++++++++++++++ .../cms_paragraphs/committees/vevcom_p.md | 5 ++ .../src/dobbelOmega/migrateCommittees.ts | 47 +++++++++++++++++-- src/prisma/seeder/src/seedCms.ts | 16 ++++--- 5 files changed, 106 insertions(+), 11 deletions(-) create mode 100644 src/prisma/seeder/cms_paragraphs/committees/vevcom_a.md create mode 100644 src/prisma/seeder/cms_paragraphs/committees/vevcom_p.md diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 8f6afb648..e66bde40c 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -9,7 +9,7 @@ services: - store:/usr/src/app/store - logs:/usr/src/app/logs deploy: - replicas: 8 + replicas: 2 db: extends: diff --git a/src/prisma/seeder/cms_paragraphs/committees/vevcom_a.md b/src/prisma/seeder/cms_paragraphs/committees/vevcom_a.md new file mode 100644 index 000000000..ba53abdd7 --- /dev/null +++ b/src/prisma/seeder/cms_paragraphs/committees/vevcom_a.md @@ -0,0 +1,47 @@ +# Vevcommiteens vedtekter + +## 1\. Formål + +Komitéen skal gjøre Omegas hjemmesider brukervennlige og informasjonsrike. Komitéen skal drifte og vedlikeholde Omegas datapark. + +## 2\. Medlemmer + +Komitéen skal bestå av tolv-seksten personer med mindre det oppstår en særlig grunn til å ha flere eller færre. Opptak av nye medlemmer skjer på høsten. Komitéen skal ha en leder, økonomiansvarlig, SoMe-ansvarlig, kakeansvarlig, sosialansvarlig, kjøleskapsansvarlig og opplæringsansvarlig. + +## 2.1 Stillingsbeskrivelse + +- **Vevmeisteren** er komitéens leder, og har ansvar for komitéens helhetlige drift og kommunikasjon med hovedstyret og de andre komitélederne. Leder skal sørge for at alle stillingene i komitéen er satt. +- **Oekonomen** er komitéens økonomiansvarlig, og har ansvar for komitéens økonomi og er pliktig til å føre budsjett og regnskap. +- **Sosialisereren** er komitéens sosialansvarlig, og har ansvar for at alle medlemmer har det bra i komitéen ved å gjennomføre sosiale arrangementer innad som passer for alle. +- **Kaldlagringsmeisteren** er komitéens kjøleskapsansvarlig, og har ansvar for at det tekniske rundt kjøleskapet fungerer og er veldokumentert. +- **Kundskabsoverfoereren** er komitéens opplæringssansvarlig, og har ansvar for opplæring av nye komitémedlemmer. +- **Influenceren** er komitéens SoMe-ansvarlig, og har ansvar for komitéens sosiale medier og komitéens markedsføring innad i linjeforeningen. +- **Kakemeisteren** er komitéens kakeansvalig, og har ansvar for at det alltid er kake tilgjengelig på komitéens møter. + +## 3\. Oppgaver + +Vevcom skal drifte, vedlikeholde og dokumentere Omegas hjemmesider og datapark. + +## 4\. Valg + +Valg gjennomføres ved at kandidater stiller til valg, og alle i komitéen plikter å stemme. Valg av leder og eventuell nestleder skjer på våren før ordinær generalforsamling for å sikre erfaringsoverføring. De nye stillingene inntres ved ordinær generalforsamling. + +## 5\. Møter + +Det skal holdes minimum et møte annenhver uke utenom eksamensperioden. Dette kan avvike dersom det oppstår særlige grunner til å utsette møtet. Hvert møte skal ha en saksliste og referat som skal gjøres tilgjengelig for alle i komitéen. + +## 6\. Erfaringsskriv + +Det skal lages et erfaringsskriv til hver stilling der store endringer og problemer en møtte underveis skrives ned. + +## 7\. Varighet + +Alle vervene i komitéen varer i to år. Pensjoniststatus oppnås etter å ha vært aktivt medlem i to år. + +### 7.1\. Treårige verv + +På våren, før semesterets siste møte, kan de aktive medlemmene som snart vil ha vært aktive medlemmer i to år søke om å fungere som aktivt medlem i ett år til. Søknaden skal behandles av alle aktive medlemmer i vevcom. Dersom søknaden godkjennes, vil personen det gjelder få fungere som aktivt medlem av komitéen i ett år til uten å fylle opp en plass i komitéen. Pensjoniststatus vil i dette tilfellet være oppnådd etter tre år som aktivt medlem i stedet for to + +## 8\. Endring av vedtekter + +En vedtektsendring må godkjennes av flertallet av aktive medlemmer i Vevcommiteen for at den skal kunne tre i kraft. diff --git a/src/prisma/seeder/cms_paragraphs/committees/vevcom_p.md b/src/prisma/seeder/cms_paragraphs/committees/vevcom_p.md new file mode 100644 index 000000000..2a33dad53 --- /dev/null +++ b/src/prisma/seeder/cms_paragraphs/committees/vevcom_p.md @@ -0,0 +1,5 @@ +Vevcommiteen er ansvarlig for driften av Sct. Omega Broderskabs websider, samt mail og drift av web- og mailserveren. Komitéen oppstod som et prøveprosjekt i 2001, og det ble på et koordineringsmøte bestemt at prøveperioden skulle vare fram til Generalphorsamlingen 2002 før komitéen eventuelt skulle bli offisiell. Websidene hadde inntil dette blitt mer eller mindre vedlikeholdt av Hovedstyret. + +Hjemmesidene har i dag utviklet seg til å bli en velfungerende informasjonskanal for linjeforeningen, og består nå av 16 personer. Vi tar opp åtte nye medlemmer i år. + +Websidene består blant annet av et system for arrangementer og hendelser i broderskabet, og et stort bildegalleri over linjeforeningens arrangementer. Det meste av innholdet er kun tilgjengelig for medlemmer av Omega og andre studenter på Elektronisk Systemdesign og Innovasjon og Kybernetikk og Robotikk. diff --git a/src/prisma/seeder/src/dobbelOmega/migrateCommittees.ts b/src/prisma/seeder/src/dobbelOmega/migrateCommittees.ts index 8dbf378b3..180538ab6 100644 --- a/src/prisma/seeder/src/dobbelOmega/migrateCommittees.ts +++ b/src/prisma/seeder/src/dobbelOmega/migrateCommittees.ts @@ -1,7 +1,42 @@ -import type { PrismaClient as PrismaClientPn } from '@prisma/client' +import { convertMdToHtml } from '@/seeder/src/seedCms' +import { readFile } from 'fs/promises' +import { dirname, join } from 'path' +import { fileURLToPath } from 'url' +import type { Prisma, PrismaClient as PrismaClientPn } from '@prisma/client' import type { PrismaClient as PrismaClientVeven } from '@/prisma-dobbel-omega/client' import type { UserMigrator } from './migrateUsers' +const fileName = fileURLToPath(import.meta.url) +const directoryName = dirname(fileName) + +async function readCommitteParagraph(filename: string): Promise { + const filepath = join(directoryName, '..', '..', 'cms_paragraphs', 'committees', filename) + try { + const content = await readFile(filepath, 'utf-8') + + return { + contentMd: content, + contentHtml: await convertMdToHtml(content), + } + } catch (e) { + return {} + } +} + +async function readCommitteArticle(filename: string): Promise<{ create: Prisma.ArticleSectionCreateInput } | undefined> { + const paragraph = await readCommitteParagraph(filename) + if (paragraph.contentMd) { + return { + create: { + cmsParagraph: { + create: paragraph, + }, + }, + } + } + return undefined +} + export default async function migrateCommittees( pnPrisma: PrismaClientPn, vevenPrisma: PrismaClientVeven, @@ -24,6 +59,9 @@ export default async function migrateCommittees( // })).order await Promise.all(committees.map(async committee => { + const committeeParagraph = await readCommitteParagraph(`${committee.shortname}_p.md`) + const committeArticle = await readCommitteArticle(`${committee.shortname}_a.md`) + const newCommittee = await pnPrisma.committee.create({ data: { name: committee.name, @@ -35,7 +73,7 @@ export default async function migrateCommittees( } }, paragraph: { - create: {} + create: committeeParagraph }, applicationParagraph: { create: { @@ -49,7 +87,8 @@ export default async function migrateCommittees( create: { name: `${committee.shortname}'s bilde` } - } + }, + articleSections: committeArticle } }, group: { @@ -74,7 +113,7 @@ export default async function migrateCommittees( userId: pnUserId, active: true, admin: member.admin, - order: 106, + order: member.order, title: member.position || undefined, } }) diff --git a/src/prisma/seeder/src/seedCms.ts b/src/prisma/seeder/src/seedCms.ts index ddd14d663..d7bea10ae 100644 --- a/src/prisma/seeder/src/seedCms.ts +++ b/src/prisma/seeder/src/seedCms.ts @@ -106,17 +106,21 @@ async function seedCmsImage( }) } -async function seedCmsParagraph( - cmssparagraph: SeedCmsParagraph & { special?: SpecialCmsParagraph | null }, - prisma: PrismaClient -) { - const contentMd = await readFile(join(directoryName, '..', 'cms_paragraphs', cmssparagraph.file), 'utf-8') - const contentHtml = (await unified() +export async function convertMdToHtml(contentMd: string) { + return (await unified() .use(remarkParse) .use(remarkRehype) .use(rehypeFormat) .use(rehypeStringify) .process(contentMd)).value.toString() +} + +async function seedCmsParagraph( + cmssparagraph: SeedCmsParagraph & { special?: SpecialCmsParagraph | null }, + prisma: PrismaClient +) { + const contentMd = await readFile(join(directoryName, '..', 'cms_paragraphs', cmssparagraph.file), 'utf-8') + const contentHtml = await convertMdToHtml(contentMd) return prisma.cmsParagraph.upsert({ where: { From ed5aae5904e9ea417f989fb91afcee33ed048521 Mon Sep 17 00:00:00 2001 From: Theodor Kvalsvik Lauritzen <19690242+theodorklauritzen@users.noreply.github.com> Date: Thu, 18 Sep 2025 19:42:43 +0200 Subject: [PATCH 2/4] chore(scss): Begin fix of scss deprecation warnings --- .../Cms/CmsImage/CmsImageEditor.module.scss | 20 ++++++++-------- .../CommitteeCard/CommitteeCard.module.scss | 23 +++++++++++-------- .../NavBar/UserNavigation.module.scss | 12 ++++++---- src/app/committees/page.module.scss | 3 ++- src/lib/feide/api.ts | 4 +++- src/styles/_mixins.scss | 9 ++++---- 6 files changed, 42 insertions(+), 29 deletions(-) diff --git a/src/app/_components/Cms/CmsImage/CmsImageEditor.module.scss b/src/app/_components/Cms/CmsImage/CmsImageEditor.module.scss index ee8ecd8ab..b4393a478 100644 --- a/src/app/_components/Cms/CmsImage/CmsImageEditor.module.scss +++ b/src/app/_components/Cms/CmsImage/CmsImageEditor.module.scss @@ -1,5 +1,7 @@ @use '@/styles/ohma'; +@use "sass:color"; + $collectionSize: calc(14vmin + 70px); .CmsImageEditor { @@ -21,8 +23,8 @@ $collectionSize: calc(14vmin + 70px); } .linkToImages { position: absolute; - @include ohma.btn(ohma.$colors-primary); width: 10em; + @include ohma.btn(ohma.$colors-primary); @include ohma.screenLg { top: -2%; right: -2%; @@ -33,11 +35,11 @@ $collectionSize: calc(14vmin + 70px); } } > .currentCmsImage { + grid-column: 1 / 2; + grid-row: 1 / 2; @include ohma.screenMobile { display: none; } - grid-column: 1 / 2; - grid-row: 1 / 2; > .info { max-width: 150px; overflow: hidden; @@ -51,15 +53,15 @@ $collectionSize: calc(14vmin + 70px); } > .selectImage { grid-column: 2 / 3; + grid-row: 1 / 2; + background-color: color.adjust(ohma.$colors-secondary, $lightness: 40%); + overflow: scroll; + max-width: 100%; @include ohma.screenMobile { grid-column: 1 / 2; margin: 1em 0; } - grid-row: 1 / 2; - background-color: lighten(ohma.$colors-secondary, 40%); @include ohma.round; - overflow: scroll; - max-width: 100%; width: 100%; > * { isolation: isolate; @@ -68,14 +70,14 @@ $collectionSize: calc(14vmin + 70px); > .selectCollection { grid-column: 1 / 3; grid-row: 2 / 3; - background-color: lighten(ohma.$colors-secondary, 50%); - @include ohma.round; + background-color: color.adjust(ohma.$colors-secondary, $lightness: 50%); display: flex; max-width: 100%; overflow: scroll; min-height: calc($collectionSize + 5vmin); align-items: center; padding: 0; + @include ohma.round; .collection { position: relative; margin: 0 .2em; diff --git a/src/app/_components/CommitteeCard/CommitteeCard.module.scss b/src/app/_components/CommitteeCard/CommitteeCard.module.scss index f8816a1dd..42ef1ef57 100644 --- a/src/app/_components/CommitteeCard/CommitteeCard.module.scss +++ b/src/app/_components/CommitteeCard/CommitteeCard.module.scss @@ -5,7 +5,7 @@ $imageHeight: 175px; $contentHeight: 50px; $height: $imageHeight + $contentHeight; -$background: lighten(ohma.$colors-secondary, 15%); +$background: color.adjust(ohma.$colors-secondary, $lightness: 15%); $textBoxTransparency: 60%; $textColor: ohma.$colors-gray-900; $textUnderlineColor: ohma.$colors-secondary; @@ -24,40 +24,45 @@ $textBoxBackgroundColor: ohma.$colors-white; isolation: isolate; overflow: hidden; box-shadow: ohma.$colors-gray-800 0 0 10px; + @include ohma.screenMobile { width: 100%; } &:hover { + scale: 1.1; + transition-duration: 0.3s; + @include ohma.screenMobile { scale: 1; } - scale: 1.1; - transition-duration: 0.3s; > .image { + scale: 1.1; + transition: scale 0.3s; + @include ohma.screenMobile { scale: 1; } - scale: 1.1; - transition: scale 0.3s; } > .content { + background-color: rgba($textBoxBackgroundColor, 0%); + box-shadow: ohma.$colors-secondary 0 0 0px; + padding-top: 10px; + @include ohma.screenMobile { background-color: rgba($textBoxBackgroundColor, 60%); box-shadow: ohma.$colors-secondary 0 0 40px; padding-top: $padding } - background-color: rgba($textBoxBackgroundColor, 0%); - box-shadow: ohma.$colors-secondary 0 0 0px; - padding-top: 10px; > h2 { + opacity: 0%; + @include ohma.screenMobile { opacity: 100%; } - opacity: 0%; } } } diff --git a/src/app/_components/NavBar/UserNavigation.module.scss b/src/app/_components/NavBar/UserNavigation.module.scss index ff96e6e3f..c53a88dba 100644 --- a/src/app/_components/NavBar/UserNavigation.module.scss +++ b/src/app/_components/NavBar/UserNavigation.module.scss @@ -1,6 +1,11 @@ @use '@/styles/ohma'; .UserNavigation { + background-color: ohma.$colors-gray-200; + display: flex; + flex-direction: column; + align-items: center; + @include ohma.screenLg { position: absolute; bottom: 0; @@ -21,14 +26,11 @@ width: 100vw; height: calc(100vh - 50px); } - background-color: ohma.$colors-gray-200; h2 { color: ohma.$colors-black; font-size: ohma.$fonts-xl; } - display: flex; - flex-direction: column; - align-items: center; + .logout { margin-top: .5em; width: 100%; @@ -81,4 +83,4 @@ &:hover { cursor: pointer; } -} \ No newline at end of file +} diff --git a/src/app/committees/page.module.scss b/src/app/committees/page.module.scss index c2fc70c77..6d5729397 100644 --- a/src/app/committees/page.module.scss +++ b/src/app/committees/page.module.scss @@ -39,8 +39,9 @@ $max-width: 1200px; grid-template-columns: repeat(auto-fill, 225px); gap: 2em; justify-content: space-between; + overflow: visible; + @include ohma.screenMobile { grid-template-columns: repeat(auto-fill, 200px); } - overflow: visible; } diff --git a/src/lib/feide/api.ts b/src/lib/feide/api.ts index cc318c3e8..f20a4acf6 100644 --- a/src/lib/feide/api.ts +++ b/src/lib/feide/api.ts @@ -36,7 +36,9 @@ export async function fetchExtendedUserInfoFromFeide(accessToken: string): Promi throw new Error(`Could not fetch extended user info from feide. Status: ${extendedUserInfoRequest.status}`) } - return await extendedUserInfoRequest.json() + const ret = await extendedUserInfoRequest.json() + console.log('Extended user info from Feide:', ret) + return ret } /** diff --git a/src/styles/_mixins.scss b/src/styles/_mixins.scss index 41268a563..a20053ebf 100644 --- a/src/styles/_mixins.scss +++ b/src/styles/_mixins.scss @@ -2,6 +2,7 @@ @use "_variables"; @use "_fonts"; +@use "sass:color"; @mixin round { border-radius: variables.$rounding; @@ -50,14 +51,14 @@ border: none; transition: .5s background; &:hover { - background-color: darken($color, 10%); + background-color: color.adjust($color, $lightness: -40%); cursor: pointer; } @include round; } //NOTE: also made to work for ( tag) -@mixin borderBtn($color: colors.$white, $hoverColor: darken($color, 40%)) { +@mixin borderBtn($color: colors.$white, $hoverColor: color.adjust($color, $lightness: -40%)) { @include btn($color); background: transparent; border: solid $color 2px; @@ -101,7 +102,7 @@ justify-content: center; align-items: center; &:hover { - background-color: darken($color, 10%); + background-color: color.adjust($color, $lightness: -10%); } } @@ -111,7 +112,7 @@ width: 30px; height: 30px; &:hover { - color: darken(colors.$yellow, 10%); + color: color.adjust(colors.$yellow, $lightness: -10%); cursor: pointer; } } From bdf970901d7db47e4fbd8f3334adfb6598275d92 Mon Sep 17 00:00:00 2001 From: Theodor Kvalsvik Lauritzen <19690242+theodorklauritzen@users.noreply.github.com> Date: Wed, 24 Sep 2025 21:57:52 +0200 Subject: [PATCH 3/4] chore(scss): Update a lot of the deprecated warning to use the new api --- .../Cms/ArticleSection/RemovePart.module.scss | 8 +++++--- .../Cms/CmsImage/CmsImageEditor.module.scss | 4 ++-- .../CommitteeCard/CommitteeCard.module.scss | 2 ++ .../CommitteeImage/CommitteeImage.module.scss | 4 +++- .../User/UserList/UserList.module.scss | 8 ++++---- .../User/UserList/UserRow.module.scss | 6 +++--- src/app/cabin/book/CabinCalendar.module.scss | 4 +++- src/app/career/page.module.scss | 20 ++++++++++--------- .../committees/[shortName]/Nav.module.scss | 4 ++-- src/app/ombul/CreateOmbul.module.scss | 6 +++--- src/app/ombul/OmbulCover.module.scss | 4 ++-- src/styles/_mixins.scss | 4 ++-- 12 files changed, 42 insertions(+), 32 deletions(-) diff --git a/src/app/_components/Cms/ArticleSection/RemovePart.module.scss b/src/app/_components/Cms/ArticleSection/RemovePart.module.scss index 367a122ae..3725ddeb8 100644 --- a/src/app/_components/Cms/ArticleSection/RemovePart.module.scss +++ b/src/app/_components/Cms/ArticleSection/RemovePart.module.scss @@ -1,5 +1,7 @@ @use "@/styles/ohma"; +@use "sass:color"; + .RemovePart { position: relative; .openBtn { @@ -12,7 +14,7 @@ place-items: center; transition: .3s background-color; &:hover { - background-color: darken(red, 10%); + background-color: color.adjust(red, $lightness: -10%); cursor: pointer; } } @@ -24,13 +26,13 @@ transform: translateX(-50%); width: 200px; background-color: ohma.$colors-white; - @include ohma.round; padding-bottom: 0; display: grid; place-items: center; + @include ohma.round; form{ width: auto; height: auto; } } -} \ No newline at end of file +} diff --git a/src/app/_components/Cms/CmsImage/CmsImageEditor.module.scss b/src/app/_components/Cms/CmsImage/CmsImageEditor.module.scss index b4393a478..41631d593 100644 --- a/src/app/_components/Cms/CmsImage/CmsImageEditor.module.scss +++ b/src/app/_components/Cms/CmsImage/CmsImageEditor.module.scss @@ -57,12 +57,12 @@ $collectionSize: calc(14vmin + 70px); background-color: color.adjust(ohma.$colors-secondary, $lightness: 40%); overflow: scroll; max-width: 100%; + width: 100%; + @include ohma.round; @include ohma.screenMobile { grid-column: 1 / 2; margin: 1em 0; } - @include ohma.round; - width: 100%; > * { isolation: isolate; } diff --git a/src/app/_components/CommitteeCard/CommitteeCard.module.scss b/src/app/_components/CommitteeCard/CommitteeCard.module.scss index 42ef1ef57..adbd219ba 100644 --- a/src/app/_components/CommitteeCard/CommitteeCard.module.scss +++ b/src/app/_components/CommitteeCard/CommitteeCard.module.scss @@ -1,5 +1,7 @@ @use "@/styles/ohma"; +@use "sass:color"; + $padding: 1.5em; $imageHeight: 175px; $contentHeight: 50px; diff --git a/src/app/_components/CommitteeImage/CommitteeImage.module.scss b/src/app/_components/CommitteeImage/CommitteeImage.module.scss index 9d6b420a1..671228d1f 100644 --- a/src/app/_components/CommitteeImage/CommitteeImage.module.scss +++ b/src/app/_components/CommitteeImage/CommitteeImage.module.scss @@ -1,6 +1,8 @@ @use "@/styles/ohma"; -$background: lighten(ohma.$colors-secondary, 15%); +@use "sass:color"; + +$background: color.adjust(ohma.$colors-secondary, $lightness: 15%); .CommitteeImage { position: relative; diff --git a/src/app/_components/User/UserList/UserList.module.scss b/src/app/_components/User/UserList/UserList.module.scss index a05b6bd3e..6fb87d93a 100644 --- a/src/app/_components/User/UserList/UserList.module.scss +++ b/src/app/_components/User/UserList/UserList.module.scss @@ -11,14 +11,15 @@ $selectionBtnSize: 25px; display: flex; flex-flow: row wrap; margin-bottom: ohma.$gap; + gap: ohma.$gap; .name { display: flex; flex-direction: column; } - gap: ohma.$gap; .group { display: flex; flex-direction: column; + min-width: 150px; > * { display: flex; flex-direction: column; @@ -28,7 +29,6 @@ $selectionBtnSize: 25px; width: 100%; } } - min-width: 150px; } } > .list { @@ -53,10 +53,10 @@ $selectionBtnSize: 25px; display: grid; place-items: center; border-radius: ohma.$rounding; + margin-right: 1em; &.selected { background-color: ohma.$colors-primary; } - margin-right: 1em; } } > .head { @@ -84,4 +84,4 @@ $selectionBtnSize: 25px; .adjust { width: calc(100% - $selectionBtnSize - 1em); transform: translateX(calc($selectionBtnSize + 1em)); -} \ No newline at end of file +} diff --git a/src/app/_components/User/UserList/UserRow.module.scss b/src/app/_components/User/UserList/UserRow.module.scss index d28b2c203..e3aee480e 100644 --- a/src/app/_components/User/UserList/UserRow.module.scss +++ b/src/app/_components/User/UserList/UserRow.module.scss @@ -1,12 +1,12 @@ @use '@/styles/ohma'; .UserRow { + border-bottom: 2px solid ohma.$colors-secondary; + margin-top: ohma.$gap; + padding: calc(ohma.$gap / 2) ohma.$gap; p { font-weight: ohma.$fonts-weight-s; } - border-bottom: 2px solid ohma.$colors-secondary; - margin-top: ohma.$gap; - padding: ohma.$gap / 2 ohma.$gap; } .clickable { diff --git a/src/app/cabin/book/CabinCalendar.module.scss b/src/app/cabin/book/CabinCalendar.module.scss index 7e3fe0bb1..ba9551c96 100644 --- a/src/app/cabin/book/CabinCalendar.module.scss +++ b/src/app/cabin/book/CabinCalendar.module.scss @@ -1,5 +1,7 @@ @use '@/styles/ohma'; +@use 'sass:color'; + @mixin rangeStyles($color, $width, $border-radius) { &.start { @@ -71,7 +73,7 @@ @include rangeStyles(ohma.$colors-primary, 100%, 10px); &.inRange { - background-color: lighten(ohma.$colors-primary, 30); + background-color: color.adjust(ohma.$colors-primary, $lightness: 30%); } >.dateNumber { diff --git a/src/app/career/page.module.scss b/src/app/career/page.module.scss index 861a5b25d..332cd27e6 100644 --- a/src/app/career/page.module.scss +++ b/src/app/career/page.module.scss @@ -1,5 +1,7 @@ @use '@/styles/ohma'; +@use "sass:color"; + .conactorLink { width: 170px; height: 35px; @@ -16,21 +18,21 @@ grid-template-rows: 1fr 1fr 1fr; gap: 1em; > a { - @include ohma.card; + text-decoration: none; + color: ohma.$colors-gray-800; + display: flex; + flex-flow: row wrap; + align-items: center; + transition: box-shadow 0.3s; background: linear-gradient( to top right, ohma.$colors-secondary, - rgba(red(ohma.$colors-secondary), green(ohma.$colors-secondary), blue(ohma.$colors-secondary), 0.1) + color.change(ohma.$colors-secondary, $alpha: 0.1) ); - transition: box-shadow 0.3s; + @include ohma.card; &:hover { @include ohma.boxShadow; } - text-decoration: none; - color: ohma.$colors-gray-800; - display: flex; - flex-flow: row wrap; - align-items: center; > h2 { flex: 1; text-align: center; @@ -42,4 +44,4 @@ } } } -} \ No newline at end of file +} diff --git a/src/app/committees/[shortName]/Nav.module.scss b/src/app/committees/[shortName]/Nav.module.scss index 4a2126cb8..b68330b66 100644 --- a/src/app/committees/[shortName]/Nav.module.scss +++ b/src/app/committees/[shortName]/Nav.module.scss @@ -3,14 +3,14 @@ .Nav { display: flex; flex-direction: column; + gap: 1em; @include ohma.screenMobile { flex-direction: row; } - gap: 1em; a { @include ohma.roundAdminSvgBtn(); &.selected { background-color: ohma.$colors-secondary; } } -} \ No newline at end of file +} diff --git a/src/app/ombul/CreateOmbul.module.scss b/src/app/ombul/CreateOmbul.module.scss index 43b76d51b..4086f7246 100644 --- a/src/app/ombul/CreateOmbul.module.scss +++ b/src/app/ombul/CreateOmbul.module.scss @@ -4,11 +4,11 @@ min-width: 60vw; display: grid; grid-template-columns: 1fr 1fr; + grid-template-rows: auto auto; + gap: 5*ohma.$gap; @include ohma.screenMobile { grid-template-columns: 1fr; } - grid-template-rows: auto auto; - gap: 5*ohma.$gap; h1 { grid-column: 1 / 3; grid-row: 1 / 2; @@ -37,4 +37,4 @@ display: none; } } -} \ No newline at end of file +} diff --git a/src/app/ombul/OmbulCover.module.scss b/src/app/ombul/OmbulCover.module.scss index b0c3d49bb..1aa8605ff 100644 --- a/src/app/ombul/OmbulCover.module.scss +++ b/src/app/ombul/OmbulCover.module.scss @@ -17,6 +17,7 @@ a.OmbulCover { text-decoration: none; .coverImg { width: 100%; + margin-bottom: ohma.$gap; > *, > * > * { border-radius: ohma.$rounding; overflow: hidden; @@ -30,7 +31,6 @@ a.OmbulCover { object-fit: cover; min-height: 50px; } - margin-bottom: ohma.$gap; .noCoverImage { border: 3px solid ohma.$colors-gray-500; aspect-ratio: 5 / 7; //aspect-ratio of sheet of paper assuemed @@ -58,4 +58,4 @@ a.OmbulCover { font-size: ohma.$fonts-xl; } } -} \ No newline at end of file +} diff --git a/src/styles/_mixins.scss b/src/styles/_mixins.scss index a20053ebf..44552b240 100644 --- a/src/styles/_mixins.scss +++ b/src/styles/_mixins.scss @@ -51,14 +51,14 @@ border: none; transition: .5s background; &:hover { - background-color: color.adjust($color, $lightness: -40%); + background-color: color.adjust($color, $lightness: -10%); cursor: pointer; } @include round; } //NOTE: also made to work for ( tag) -@mixin borderBtn($color: colors.$white, $hoverColor: color.adjust($color, $lightness: -40%)) { +@mixin borderBtn($color: colors.$white, $hoverColor: color.adjust($color, $lightness: 40%)) { @include btn($color); background: transparent; border: solid $color 2px; From 441410989df13e63e281d9446922581f749d296b Mon Sep 17 00:00:00 2001 From: Theodor Kvalsvik Lauritzen <19690242+theodorklauritzen@users.noreply.github.com> Date: Wed, 24 Sep 2025 22:37:39 +0200 Subject: [PATCH 4/4] chore(scss): Fix lint error --- src/prisma/seeder/src/dobbelOmega/migrateCommittees.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/prisma/seeder/src/dobbelOmega/migrateCommittees.ts b/src/prisma/seeder/src/dobbelOmega/migrateCommittees.ts index 180538ab6..01ba4bf81 100644 --- a/src/prisma/seeder/src/dobbelOmega/migrateCommittees.ts +++ b/src/prisma/seeder/src/dobbelOmega/migrateCommittees.ts @@ -18,7 +18,7 @@ async function readCommitteParagraph(filename: string): Promise