Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
62e3ed6
style(frontend): papirhvitt lyst tema, mørkt tema, tekstknapper og te…
Oct 12, 2026
4a6f975
feat(frontend): sett tema før siden tegnes og lang=no
Oct 12, 2026
0c3024d
feat(frontend): legg til tegning i sidefeltet
Oct 12, 2026
d63bbc0
feat(frontend): ThemeToggle for lyst/mørkt tema
Oct 12, 2026
0320db9
feat(frontend): logo følger valgt tema
Oct 12, 2026
bbdbb4d
style(frontend): logo i toppfeltet på smale skjermer
Oct 12, 2026
f8bb8f6
style(frontend): søkefelt med bare linje under
Oct 12, 2026
cc31871
style(frontend): Header i trykk-stil
Oct 12, 2026
0429009
feat(frontend): Header med søk, favoritter og tema
Oct 12, 2026
c4082b8
style(frontend): erstatt Vite-rester med layout for hovedinnholdet
Oct 12, 2026
1f6c131
feat(frontend): bruk Header og vis bare favoritter
Oct 12, 2026
89d4e7d
Merge pull request #52 from IT2810-H26/feat/theme
clemenbe Oct 12, 2026
3a9e925
fix: db-tunnel bug og kommentert ut linje i .env.example
Oct 12, 2026
93f43db
Update ci.yml
albertpl Oct 13, 2026
a75bc18
Update ci.yml
albertpl Oct 13, 2026
f45381f
Update ci.yml
albertpl Oct 13, 2026
f0cf22f
feat(frontend): Apollo-klient mot GraphQL-backend
Oct 13, 2026
e77fb05
feat(frontend): ApolloProvider rundt appen
Oct 13, 2026
336d28c
feat(frontend): spørring for søkeforslag (6 spill, bare navn og år)
Oct 13, 2026
cd839e0
style(frontend): GameSearch med forslagsliste i trykk-stil
Oct 13, 2026
569bee6
feat(frontend): GameSearch med forslag fra serveren (combobox)
Oct 13, 2026
6ea1d93
feat(frontend): bruk GameSearch i Header
Oct 13, 2026
bbc864f
feat(frontend): hovedlista oppdateres bare ved Enter
Oct 13, 2026
bf081ae
Merge pull request #53 from IT2810-H26/feat/search-suggestions
clemenbe Oct 13, 2026
419208f
Merge branch 'feat/cleanup' into feat/list-from-db
Oct 13, 2026
0939bb1
feat: spørring til frontend og databasehenting
Oct 13, 2026
b3c7266
Merge pull request #54 from IT2810-H26/feat/list-from-db
clemenbe Oct 13, 2026
a6cedf8
feat(frontend): legg til tredje visning (utstillingsrad) for spillkort
laspark Oct 13, 2026
02c4a7d
feat(frontend): vis visningsvalget som «visning 1 2 3»
laspark Oct 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 13 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ jobs:
lint-and-test:
runs-on: self-hosted
strategy:
fail-fast: false
matrix:
workspace: [frontend, backend]
defaults:
Expand All @@ -18,15 +19,23 @@ jobs:
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 24.21.0

- uses: pnpm/action-setup@v4
with:
version: 11.25.0

- uses: actions/setup-node@v4
- name: Get pnpm store path
id: pnpm-store
run: echo "path=$(pnpm store path --silent)" >> "$GITHUB_OUTPUT"

- uses: actions/cache@v4
with:
node-version: 24.21.0
cache: pnpm
cache-dependency-path: ${{ matrix.workspace }}/pnpm-lock.yaml
path: ${{ steps.pnpm-store.outputs.path }}
key: pnpm-${{ runner.os }}-${{ matrix.workspace }}-${{ hashFiles(format('{0}/pnpm-lock.yaml', matrix.workspace)) }}
restore-keys: pnpm-${{ runner.os }}-${{ matrix.workspace }}-

- name: Install dependencies
run: pnpm install --frozen-lockfile
Expand Down
2 changes: 1 addition & 1 deletion backend/.env.example
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ TUNNEL_PORT=5433
# backend server env vars
DATABASE_URL=postgresql://webapp:<PASSORD>@localhost:5433/gamesdb
PORT=3001
JWT_TOKEN=<server-rand-token>
#JWT_TOKEN=<server-rand-token>
15 changes: 14 additions & 1 deletion frontend/index.html
Original file line number Diff line number Diff line change
@@ -1,10 +1,23 @@
<!doctype html>
<html lang="en">
<html lang="no">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Damp</title>

<script>
// Setter tema før siden tegnes, så den ikke blinker lyst først i mørkt tema.
// Lagret valg vinner, ellers brukes systemets innstilling.
(function () {
var saved = null;
try {
saved = localStorage.getItem('theme');
} catch (e) {}
var dark = saved ? saved === 'dark' : matchMedia('(prefers-color-scheme: dark)').matches;
document.documentElement.dataset.theme = dark ? 'dark' : 'light';
})();
</script>
</head>
<body>
<div id="root"></div>
Expand Down
200 changes: 24 additions & 176 deletions frontend/src/App.css
Original file line number Diff line number Diff line change
@@ -1,182 +1,30 @@
.counter {
font-size: 16px;
padding: 5px 10px;
border-radius: 5px;
color: var(--accent);
background: var(--accent-bg);
border: 2px solid transparent;
transition: border-color 0.3s;
margin-bottom: 24px;

&:hover {
border-color: var(--accent-border);
}
&:focus-visible {
outline: 2px solid var(--accent);
outline-offset: 2px;
}
}

.hero {
position: relative;

.base,
.framework,
.vite {
inset-inline: 0;
margin: 0 auto;
}

.base {
width: 170px;
position: relative;
z-index: 0;
}

.framework,
.vite {
position: absolute;
}

.framework {
z-index: 1;
top: 34px;
height: 28px;
transform: perspective(2000px) rotateZ(300deg) rotateX(44deg) rotateY(39deg) scale(1.4);
}

.vite {
z-index: 0;
top: 107px;
height: 26px;
width: auto;
transform: perspective(2000px) rotateZ(300deg) rotateX(40deg) rotateY(39deg) scale(0.8);
}
}

#center {
display: flex;
flex-direction: column;
gap: 25px;
place-content: center;
place-items: center;
flex-grow: 1;

@media (max-width: 1024px) {
padding: 32px 20px 24px;
gap: 18px;
}
}

#next-steps {
display: flex;
border-top: 1px solid var(--border);
/* Hovedinnholdet under toppfeltet */
.main {
padding: 24px;
text-align: left;

& > div {
flex: 1 1 0;
padding: 32px;
@media (max-width: 1024px) {
padding: 24px 20px;
}
}

.icon {
margin-bottom: 16px;
width: 22px;
height: 22px;
}

@media (max-width: 1024px) {
flex-direction: column;
text-align: center;
}
}

#docs {
border-right: 1px solid var(--border);

@media (max-width: 1024px) {
border-right: none;
border-bottom: 1px solid var(--border);
}
}

#next-steps ul {
list-style: none;
padding: 0;
/* Linjen over resultatene: overskrift til venstre, valg av visning til høyre */
.results-bar {
display: flex;
gap: 8px;
margin: 32px 0 0;

.logo {
height: 18px;
}

a {
color: var(--text-h);
font-size: 16px;
border-radius: 6px;
background: var(--social-bg);
display: flex;
padding: 6px 12px;
align-items: center;
gap: 8px;
text-decoration: none;
transition: box-shadow 0.3s;

&:hover {
box-shadow: var(--shadow);
}
.button-icon {
height: 18px;
width: 18px;
}
}

@media (max-width: 1024px) {
margin-top: 20px;
flex-wrap: wrap;
justify-content: center;

li {
flex: 1 1 calc(50% - 8px);
}

a {
width: 100%;
justify-content: center;
box-sizing: border-box;
}
}
}

#spacer {
height: 88px;
border-top: 1px solid var(--border);
@media (max-width: 1024px) {
height: 48px;
}
align-items: baseline;
justify-content: space-between;
padding-bottom: 8px;
border-bottom: 1px solid var(--border);
}

.ticks {
position: relative;
width: 100%;

&::before,
&::after {
content: '';
position: absolute;
top: -4.5px;
border: 5px solid transparent;
}

&::before {
left: 0;
border-left-color: var(--border);
}
&::after {
right: 0;
border-right-color: var(--border);
}
}
.results-bar__views {
display: flex;
gap: 16px;
font-family: var(--mono);
font-size: 14px;
}

/* Antall treff under overskriften, i samme monospace som menyen */
.results-count {
min-height: 1.5em; /* holder plassen, så lista ikke hopper når teksten kommer */
margin: 8px 0 0;
font-family: var(--mono);
font-size: 13px;
color: var(--text);
}
Loading
Loading