Initial commit
This commit is contained in:
24
.gitignore
vendored
Normal file
24
.gitignore
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# build output
|
||||||
|
dist/
|
||||||
|
|
||||||
|
# generated types
|
||||||
|
.astro/
|
||||||
|
|
||||||
|
# dependencies
|
||||||
|
node_modules/
|
||||||
|
|
||||||
|
# logs
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
pnpm-debug.log*
|
||||||
|
|
||||||
|
# environment variables
|
||||||
|
.env
|
||||||
|
.env.production
|
||||||
|
|
||||||
|
# macOS-specific files
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
|
# jetbrains setting folder
|
||||||
|
.idea/
|
4
.vscode/extensions.json
vendored
Normal file
4
.vscode/extensions.json
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"recommendations": ["astro-build.astro-vscode"],
|
||||||
|
"unwantedRecommendations": []
|
||||||
|
}
|
11
.vscode/launch.json
vendored
Normal file
11
.vscode/launch.json
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"command": "./node_modules/.bin/astro dev",
|
||||||
|
"name": "Development server",
|
||||||
|
"request": "launch",
|
||||||
|
"type": "node-terminal"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
48
README.md
Normal file
48
README.md
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
# Astro Starter Kit: Basics
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm create astro@latest -- --template basics
|
||||||
|
```
|
||||||
|
|
||||||
|
[](https://stackblitz.com/github/withastro/astro/tree/latest/examples/basics)
|
||||||
|
[](https://codesandbox.io/p/sandbox/github/withastro/astro/tree/latest/examples/basics)
|
||||||
|
[](https://codespaces.new/withastro/astro?devcontainer_path=.devcontainer/basics/devcontainer.json)
|
||||||
|
|
||||||
|
> 🧑🚀 **Seasoned astronaut?** Delete this file. Have fun!
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 🚀 Project Structure
|
||||||
|
|
||||||
|
Inside of your Astro project, you'll see the following folders and files:
|
||||||
|
|
||||||
|
```text
|
||||||
|
/
|
||||||
|
├── public/
|
||||||
|
│ └── favicon.svg
|
||||||
|
├── src/
|
||||||
|
│ ├── layouts/
|
||||||
|
│ │ └── Layout.astro
|
||||||
|
│ └── pages/
|
||||||
|
│ └── index.astro
|
||||||
|
└── package.json
|
||||||
|
```
|
||||||
|
|
||||||
|
To learn more about the folder structure of an Astro project, refer to [our guide on project structure](https://docs.astro.build/en/basics/project-structure/).
|
||||||
|
|
||||||
|
## 🧞 Commands
|
||||||
|
|
||||||
|
All commands are run from the root of the project, from a terminal:
|
||||||
|
|
||||||
|
| Command | Action |
|
||||||
|
| :------------------------ | :----------------------------------------------- |
|
||||||
|
| `npm install` | Installs dependencies |
|
||||||
|
| `npm run dev` | Starts local dev server at `localhost:4321` |
|
||||||
|
| `npm run build` | Build your production site to `./dist/` |
|
||||||
|
| `npm run preview` | Preview your build locally, before deploying |
|
||||||
|
| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` |
|
||||||
|
| `npm run astro -- --help` | Get help using the Astro CLI |
|
||||||
|
|
||||||
|
## 👀 Want to learn more?
|
||||||
|
|
||||||
|
Feel free to check [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat).
|
13
astro.config.mjs
Normal file
13
astro.config.mjs
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
// @ts-check
|
||||||
|
import { defineConfig } from 'astro/config';
|
||||||
|
import tailwindcss from "@tailwindcss/vite";
|
||||||
|
|
||||||
|
|
||||||
|
import react from "@astrojs/react";
|
||||||
|
|
||||||
|
|
||||||
|
// https://astro.build/config
|
||||||
|
export default defineConfig({
|
||||||
|
vite: { plugins: [tailwindcss()], },
|
||||||
|
integrations: [react()],
|
||||||
|
});
|
6094
package-lock.json
generated
Normal file
6094
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
22
package.json
Normal file
22
package.json
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"name": "solar-star",
|
||||||
|
"type": "module",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"scripts": {
|
||||||
|
"dev": "astro dev",
|
||||||
|
"build": "astro build",
|
||||||
|
"preview": "astro preview",
|
||||||
|
"astro": "astro"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@astrojs/react": "^4.3.0",
|
||||||
|
"@tailwindcss/vite": "^4.1.10",
|
||||||
|
"@types/react": "^19.1.8",
|
||||||
|
"@types/react-dom": "^19.1.6",
|
||||||
|
"astro": "^5.9.3",
|
||||||
|
"react": "^19.1.0",
|
||||||
|
"react-dom": "^19.1.0",
|
||||||
|
"react-icons": "^5.5.0",
|
||||||
|
"tailwindcss": "^4.1.10"
|
||||||
|
}
|
||||||
|
}
|
9
public/favicon.svg
Normal file
9
public/favicon.svg
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 128 128">
|
||||||
|
<path d="M50.4 78.5a75.1 75.1 0 0 0-28.5 6.9l24.2-65.7c.7-2 1.9-3.2 3.4-3.2h29c1.5 0 2.7 1.2 3.4 3.2l24.2 65.7s-11.6-7-28.5-7L67 45.5c-.4-1.7-1.6-2.8-2.9-2.8-1.3 0-2.5 1.1-2.9 2.7L50.4 78.5Zm-1.1 28.2Zm-4.2-20.2c-2 6.6-.6 15.8 4.2 20.2a17.5 17.5 0 0 1 .2-.7 5.5 5.5 0 0 1 5.7-4.5c2.8.1 4.3 1.5 4.7 4.7.2 1.1.2 2.3.2 3.5v.4c0 2.7.7 5.2 2.2 7.4a13 13 0 0 0 5.7 4.9v-.3l-.2-.3c-1.8-5.6-.5-9.5 4.4-12.8l1.5-1a73 73 0 0 0 3.2-2.2 16 16 0 0 0 6.8-11.4c.3-2 .1-4-.6-6l-.8.6-1.6 1a37 37 0 0 1-22.4 2.7c-5-.7-9.7-2-13.2-6.2Z" />
|
||||||
|
<style>
|
||||||
|
path { fill: #000; }
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
path { fill: #FFF; }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 749 B |
BIN
src/assets/DNS-logo-hvit.png
Normal file
BIN
src/assets/DNS-logo-hvit.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 38 KiB |
1
src/assets/background.svg
Normal file
1
src/assets/background.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="1440" height="1024" fill="none"><path fill="url(#a)" fill-rule="evenodd" d="M-217.58 475.75c91.82-72.02 225.52-29.38 341.2-44.74C240 415.56 372.33 315.14 466.77 384.9c102.9 76.02 44.74 246.76 90.31 366.31 29.83 78.24 90.48 136.14 129.48 210.23 57.92 109.99 169.67 208.23 155.9 331.77-13.52 121.26-103.42 264.33-224.23 281.37-141.96 20.03-232.72-220.96-374.06-196.99-151.7 25.73-172.68 330.24-325.85 315.72-128.6-12.2-110.9-230.73-128.15-358.76-12.16-90.14 65.87-176.25 44.1-264.57-26.42-107.2-167.12-163.46-176.72-273.45-10.15-116.29 33.01-248.75 124.87-320.79Z" clip-rule="evenodd" style="opacity:.154"/><path fill="url(#b)" fill-rule="evenodd" d="M1103.43 115.43c146.42-19.45 275.33-155.84 413.5-103.59 188.09 71.13 409 212.64 407.06 413.88-1.94 201.25-259.28 278.6-414.96 405.96-130 106.35-240.24 294.39-405.6 265.3-163.7-28.8-161.93-274.12-284.34-386.66-134.95-124.06-436-101.46-445.82-284.6-9.68-180.38 247.41-246.3 413.54-316.9 101.01-42.93 207.83 21.06 316.62 6.61Z" clip-rule="evenodd" style="opacity:.154"/><defs><linearGradient id="b" x1="373" x2="1995.44" y1="1100" y2="118.03" gradientUnits="userSpaceOnUse"><stop stop-color="#D83333"/><stop offset="1" stop-color="#F041FF"/></linearGradient><linearGradient id="a" x1="107.37" x2="1130.66" y1="1993.35" y2="1026.31" gradientUnits="userSpaceOnUse"><stop stop-color="#3245FF"/><stop offset="1" stop-color="#BC52EE"/></linearGradient></defs></svg>
|
After Width: | Height: | Size: 1.4 KiB |
BIN
src/assets/edb.png
Normal file
BIN
src/assets/edb.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 25 KiB |
BIN
src/assets/logo.png
Normal file
BIN
src/assets/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 528 KiB |
18
src/components/About.astro
Normal file
18
src/components/About.astro
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
|
||||||
|
<main class="flex gap-8 flex-col">
|
||||||
|
<h1 class="text-4xl font-bold">Om STUDiO 2025</h1>
|
||||||
|
<div class="flex gap-2 text-lg max-w-prose flex-col">
|
||||||
|
<p>
|
||||||
|
STUDiO 2025 er en studentfestival som arrangeres under fadderuka i Oslo fra 11. til 15. august på Chateau Neuf.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Det blir sosiale og spennende arrangementer hver dag! Festivalen er for alle nye og gamle studenter i Oslo. Opplev høydepunktet i semesteret - ta med fadderbarna eller vennegjengen, eller kom alene og møt nye venner.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Ikke gå glipp av den største studiekickoffen i Oslo!
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Flere av arrangementene våre er gratis, og alt er ID 18+.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</main>
|
14
src/components/FAQ.astro
Normal file
14
src/components/FAQ.astro
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<section class="flex flex-col gap-4">
|
||||||
|
<h2 class="text-xl font-bold">Ofte stilte spørsmål</h2>
|
||||||
|
<ul class="flex flex-col gap-2">
|
||||||
|
<li>
|
||||||
|
<strong>Hvordan finner jeg fram til STUDiO?</strong>
|
||||||
|
<p>Vi anbefaler å ta kollektivt til Majorstuen, eller Borgen dersom du tar t-banen</p>
|
||||||
|
<p><a href="https://neuf.no/praktisk#adkomst" target="_blank">Se mer info på Chateau Neuf sine nettsider</a></p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>Hvor lenge holder dere på?</strong>
|
||||||
|
<p>Dørene åpner kl. 18 og stenger kl. 02 hver dag, hele uken</p>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</section>
|
30
src/components/Footer.astro
Normal file
30
src/components/Footer.astro
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
---
|
||||||
|
import { Image } from 'astro:assets';
|
||||||
|
import logo from '@assets/logo.png';
|
||||||
|
import DNS from '@assets/DNS-logo-hvit.png';
|
||||||
|
import { FaFacebook, FaInstagram, FaTiktok } from 'react-icons/fa';
|
||||||
|
---
|
||||||
|
<footer class="flex items-center justify-between bg-red-900 text-white py-16 px-8 mt-20">
|
||||||
|
<div class="flex gap-2 items-center justify-center">
|
||||||
|
<Image src={logo} alt="Logo for Studentfestivalen i Oslo" class="hero-logo" width={48} height={48}/>
|
||||||
|
<p>Studentfestivalen i Oslo 2025</p>
|
||||||
|
</div>
|
||||||
|
<div class="flex gap-2 items-center justify-center">
|
||||||
|
<Image src ={DNS} alt="Logo for Det Norske Studentersamfund" class="hero-logo" width={169} height={169}/>
|
||||||
|
<div class="flex flex-col items-center justify-center gap-2">
|
||||||
|
<address>Slemdalsveien 15, 0369 Oslo</address>
|
||||||
|
<div>
|
||||||
|
<div class="flex gap-4">
|
||||||
|
<a href="https://www.facebook.com/events/692300293586085" target="_blank" rel="noopener noreferrer" aria-label="Facebook">
|
||||||
|
<FaFacebook class="text-white text-2xl hover:text-gray-300" />
|
||||||
|
</a>
|
||||||
|
<a href="https://www.instagram.com/studentfestivalenioslo/" target="_blank" rel="noopener noreferrer" aria-label="Instagram">
|
||||||
|
<FaInstagram class="text-white text-2xl hover:text-gray-300" />
|
||||||
|
</a>
|
||||||
|
<a href="https://www.tiktok.com/@studentersamfund" target="_blank" rel="noopener noreferrer" aria-label="TikTok">
|
||||||
|
<FaTiktok class="text-white text-2xl hover:text-gray-300" />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
9
src/components/Hero.astro
Normal file
9
src/components/Hero.astro
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
import logo from '@assets/logo.png';
|
||||||
|
import { Image } from 'astro:assets';
|
||||||
|
---
|
||||||
|
|
||||||
|
<section class="flex flex-col items-center justify-center h-[75vh] gap-4">
|
||||||
|
<h1 class="text-4xl">Studentfestivalen i Oslo 2025</h1>
|
||||||
|
<Image src={logo} alt="Studentfestivalen i Oslo Logo" width={250} height={250}/>
|
||||||
|
</section>
|
15
src/components/Links.astro
Normal file
15
src/components/Links.astro
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
const links = [
|
||||||
|
{ href: "https://www.neuf.no", text: "Chateau Neuf" },
|
||||||
|
{ href: "https://forms.gle/PvEh37nvRyicLFXn6", text: "Bli frivillig!" },
|
||||||
|
{ href: "https://www.instagram.com/studentfestivalenioslo/", text: "Instagram" },
|
||||||
|
{ href: "https://www.facebook.com/studentfestivalen", text: "Facebook" },
|
||||||
|
{ href: "https://www.tiktok.com/@studentersamfund", text: "TikTok" },
|
||||||
|
];
|
||||||
|
---
|
||||||
|
|
||||||
|
<div class="flex gap-4 justify-center items-center">
|
||||||
|
{links.map(link => (
|
||||||
|
<a href={link.href} target="_blank" rel="noopener noreferrer">{link.text}</a>
|
||||||
|
))}
|
||||||
|
</div>
|
47
src/components/Nav.astro
Normal file
47
src/components/Nav.astro
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
<nav class="flex justify-between items-center px-10 py-4 bg-accent mb-4">
|
||||||
|
<h1 class="text-xl font-bold text-white">
|
||||||
|
<a href="/">STUDiO 2025</a>
|
||||||
|
</h1>
|
||||||
|
<ul class="flex space-x-4 text-white">
|
||||||
|
<li><a href="/">Hjem</a></li>
|
||||||
|
<li><a href="/program">Program</a></li>
|
||||||
|
<li><a href="https://forms.gle/PvEh37nvRyicLFXn6" target="_blank">Bli frivillig</a></li>
|
||||||
|
<li><a href="/about">Om</a></li>
|
||||||
|
<li>
|
||||||
|
<button onclick={() => toggleLanguage()} class="ml-4 bg-blue-500 text-white px-3 py-1 rounded">
|
||||||
|
Norsk / English
|
||||||
|
</button>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
let currentLanguage = 'no';
|
||||||
|
|
||||||
|
function toggleLanguage() {
|
||||||
|
currentLanguage = currentLanguage === 'no' ? 'en' : 'no';
|
||||||
|
const links = document.querySelectorAll('nav ul li a');
|
||||||
|
links.forEach(link => {
|
||||||
|
const href = link.getAttribute('href');
|
||||||
|
if (currentLanguage === 'en') {
|
||||||
|
link.setAttribute('href', `/en-${href.slice(1)}`);
|
||||||
|
} else {
|
||||||
|
link.setAttribute('href', `/${href.replace('/en-', '')}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
<style>
|
||||||
|
nav a {
|
||||||
|
padding: 0.5em 0.5em;
|
||||||
|
color: var(--text);
|
||||||
|
border-bottom: 4px solid transparent;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
nav a.active {
|
||||||
|
text-decoration: none;
|
||||||
|
border-bottom-color: var(--accent);
|
||||||
|
}
|
||||||
|
</style>
|
65
src/components/Program.astro
Normal file
65
src/components/Program.astro
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
---
|
||||||
|
const currentDate = new Date().toLocaleDateString("nb-NO", {
|
||||||
|
weekday: 'long',
|
||||||
|
year: 'numeric',
|
||||||
|
month: 'long',
|
||||||
|
day: 'numeric'
|
||||||
|
});
|
||||||
|
|
||||||
|
const events = [
|
||||||
|
{
|
||||||
|
id: "9882",
|
||||||
|
slug: "magic-the-gathering-monday",
|
||||||
|
title: "Magic: The Gathering Monday",
|
||||||
|
subtitle: "",
|
||||||
|
nextOccurrence: {
|
||||||
|
id: "9326",
|
||||||
|
start: "2025-06-16 15:00:00+00:00",
|
||||||
|
end: null,
|
||||||
|
venue: {
|
||||||
|
id: "52",
|
||||||
|
slug: "galleriet",
|
||||||
|
title: "Galleriet",
|
||||||
|
preposition: "i",
|
||||||
|
url: "/lokaler/galleriet/",
|
||||||
|
},
|
||||||
|
venueCustom: "",
|
||||||
|
},
|
||||||
|
url: "https://neuf.no/arrangementer/magic-the-gathering-monday",
|
||||||
|
futureOccurrencesCount: 2,
|
||||||
|
},
|
||||||
|
// ...other events
|
||||||
|
];
|
||||||
|
|
||||||
|
function formatDate(dateString) {
|
||||||
|
const options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', hour: '2-digit', minute: '2-digit' };
|
||||||
|
return new Date(dateString).toLocaleDateString('no-NO', options);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Filter events for Monday
|
||||||
|
const mondayEvents = events.filter(event => {
|
||||||
|
const eventDate = new Date(event.nextOccurrence.start);
|
||||||
|
return eventDate.getDay() === 1; // Monday is represented by 1
|
||||||
|
});
|
||||||
|
---
|
||||||
|
|
||||||
|
<div class="flex gap-4 flex-col">
|
||||||
|
<div class="flex items-center justify-between">
|
||||||
|
<h2 class="font-bold text-xl">Hva skjer i dag?</h2>
|
||||||
|
<p>{currentDate}</p>
|
||||||
|
</div>
|
||||||
|
<ul>
|
||||||
|
{events.map(event => (
|
||||||
|
<li key={event.id}>
|
||||||
|
<a href={event.url}>
|
||||||
|
<h2>{event.title}</h2>
|
||||||
|
{event.subtitle && <p>{event.subtitle}</p>}
|
||||||
|
<p>
|
||||||
|
{event.nextOccurrence.start && formatDate(event.nextOccurrence.start)}{" "}
|
||||||
|
{event.nextOccurrence.venueCustom || `${event.nextOccurrence.venue.preposition} ${event.nextOccurrence.venue.title}`}
|
||||||
|
</p>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
</div>
|
6
src/components/Today.astro
Normal file
6
src/components/Today.astro
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
const currentDate = new Date().toLocaleDateString();
|
||||||
|
---
|
||||||
|
<div>
|
||||||
|
<p> {currentDate}</p>
|
||||||
|
</div>
|
20
src/components/Vors.astro
Normal file
20
src/components/Vors.astro
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
const videoUrl = "https://www.youtube.com/watch?v=t7T4RPBpTVY";
|
||||||
|
---
|
||||||
|
|
||||||
|
<div style="width: 560px; height: 315px;">
|
||||||
|
<div class="mt-4 text-xl mb-2">
|
||||||
|
|
||||||
|
Sett på låta for litt stemning før dere kommer🔥
|
||||||
|
</div>
|
||||||
|
<iframe
|
||||||
|
width="560"
|
||||||
|
height="315"
|
||||||
|
src={videoUrl.replace("watch?v=", "embed/")}
|
||||||
|
title="YouTube video player"
|
||||||
|
frameborder="0"
|
||||||
|
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
|
||||||
|
allowfullscreen>
|
||||||
|
</iframe>
|
||||||
|
|
||||||
|
</div>
|
30
src/data/en-program.json
Normal file
30
src/data/en-program.json
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"Monday 11th": [
|
||||||
|
{ "time": "18:00", "event": "Opening party with DJ", "cost": "free" },
|
||||||
|
{ "time": "21:00", "event": "Sing-a-long karaoke", "cost": "free" },
|
||||||
|
{ "time": "22:00", "event": "Silent Disco", "cost": "free" }
|
||||||
|
],
|
||||||
|
"Tuesday 12th": [
|
||||||
|
{ "time": "18:00", "event": "Barbecue", "cost": "free" },
|
||||||
|
{ "time": "19:00", "event": "Qualified Guessing Quiz", "cost": "free" },
|
||||||
|
{ "time": "21:00", "event": "Live Karaoke", "cost": "free" },
|
||||||
|
{ "time": "22:00", "event": "Silent Disco", "cost": "free" }
|
||||||
|
],
|
||||||
|
"Wednesday 13th": [
|
||||||
|
{ "time": "18:00", "event": "KKK: Comic Comedian Evening", "cost": "tickets out!" },
|
||||||
|
{ "time": "18:00", "event": "Hits for Quiz", "cost": "free" },
|
||||||
|
{ "time": "21:00", "event": "Karaoke", "cost": "free" },
|
||||||
|
{ "time": "22:00", "event": "Silent Disco", "cost": "free" }
|
||||||
|
],
|
||||||
|
"Thursday 14th": [
|
||||||
|
{ "time": "18:00", "event": "Drunk Impro 4K, VRØVL", "cost": "tickets out!" },
|
||||||
|
{ "time": "19:00", "event": "Shrek 2 Screening", "cost": "free" },
|
||||||
|
{ "time": "20:00", "event": "Live Karaoke", "cost": "free" },
|
||||||
|
{ "time": "22:00", "event": "Silent Disco", "cost": "free" }
|
||||||
|
],
|
||||||
|
"Friday 15th": [
|
||||||
|
{ "time": "21:00", "event": "Sing-a-long karaoke", "cost": "free" },
|
||||||
|
{ "time": "22:00", "event": "Afterparty", "cost": "free" },
|
||||||
|
{ "time": "22:00", "event": "Silent Disco", "cost": "free" }
|
||||||
|
]
|
||||||
|
}
|
30
src/data/program.json
Normal file
30
src/data/program.json
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"Mandag 11. august": [
|
||||||
|
{ "time": "18:00", "event": "Aapningsfest med DJ", "price": "gratis" },
|
||||||
|
{ "time": "21:00", "event": "Allsangkaraoke", "price": "gratis" },
|
||||||
|
{ "time": "22:00", "event": "Silent Disco", "price": "gratis" }
|
||||||
|
],
|
||||||
|
"Tirsdag 12. august": [
|
||||||
|
{ "time": "18:00", "event": "Grillfest", "price": "gratis" },
|
||||||
|
{ "time": "19:00", "event": "Kvalifisert Gjetning, Quiz", "price": "gratis" },
|
||||||
|
{ "time": "21:00", "event": "Live karaoke", "price": "gratis" },
|
||||||
|
{ "time": "22:00", "event": "Silent Disco", "price": "gratis" }
|
||||||
|
],
|
||||||
|
"Onsdag 13. august": [
|
||||||
|
{ "time": "18:00", "event": "KKK: Komisk Komedie-Kveld", "price": "billetter ute!" },
|
||||||
|
{ "time": "18:00", "event": "Hits for Quiz", "price": "gratis" },
|
||||||
|
{ "time": "21:00", "event": "Karaoke", "price": null },
|
||||||
|
{ "time": "22:00", "event": "Silent Disco", "price": null }
|
||||||
|
],
|
||||||
|
"Torsdag 14. august": [
|
||||||
|
{ "time": "18:00", "event": "Drunk Impro 4K, VROVL", "price": "billetter ute!" },
|
||||||
|
{ "time": "19:00", "event": "Shrek 2 visning", "price": "gratis" },
|
||||||
|
{ "time": "20:00", "event": "Live karaoke", "price": "gratis" },
|
||||||
|
{ "time": "22:00", "event": "Silent Disco", "price": "gratis" }
|
||||||
|
],
|
||||||
|
"Fredag 15. august": [
|
||||||
|
{ "time": "21:00", "event": "Allsangkaraoke", "price": "gratis" },
|
||||||
|
{ "time": "22:00", "event": "Afterparty", "price": "gratis" },
|
||||||
|
{ "time": "22:00", "event": "Silent Disco", "price": "gratis" }
|
||||||
|
]
|
||||||
|
}
|
23
src/layouts/Layout.astro
Normal file
23
src/layouts/Layout.astro
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
import "@styles/global.css";
|
||||||
|
import Nav from '@components/Nav.astro';
|
||||||
|
import Footer from '@components/Footer.astro';
|
||||||
|
---
|
||||||
|
|
||||||
|
<!doctype html>
|
||||||
|
<html lang="no">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width" />
|
||||||
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||||
|
<meta name="generator" content={Astro.generator} />
|
||||||
|
<title>STUDiO 2025 - Studentfestivalen i Oslo</title>
|
||||||
|
</head>
|
||||||
|
<body class="grid grid-rows-[auto_1fr_auto] jusify-center">
|
||||||
|
<Nav />
|
||||||
|
<div class="max-w-7xl grid place-self-center gap-8">
|
||||||
|
<slot />
|
||||||
|
</div>
|
||||||
|
<Footer />
|
||||||
|
</body>
|
||||||
|
</html>
|
8
src/pages/about.astro
Normal file
8
src/pages/about.astro
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
import Layout from '@layouts/Layout.astro';
|
||||||
|
import About from '@components/About.astro';
|
||||||
|
---
|
||||||
|
|
||||||
|
<Layout>
|
||||||
|
<About />
|
||||||
|
</Layout>
|
38
src/pages/en-program.astro
Normal file
38
src/pages/en-program.astro
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
---
|
||||||
|
import data from '/src/data/en-program.json';
|
||||||
|
import Layout from '@layouts/Layout.astro';
|
||||||
|
---
|
||||||
|
|
||||||
|
<Layout>
|
||||||
|
{Object.entries(data).map(([dayName, items], index) => (
|
||||||
|
<div class="day">
|
||||||
|
<h2>{dayName}</h2>
|
||||||
|
<ul>
|
||||||
|
{items.map((item, itemIndex) => (
|
||||||
|
<li class="item">
|
||||||
|
{item.time} - {item.event} - {item.price}
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</Layout>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.day {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
padding: 10px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
.day:nth-child(odd) {
|
||||||
|
background-color: #F8BC90;
|
||||||
|
}
|
||||||
|
.day:nth-child(even) {
|
||||||
|
background-color: #0A0F6D;
|
||||||
|
color: #fff; /* Optional: Adjust text color for better readability */
|
||||||
|
}
|
||||||
|
.item {
|
||||||
|
margin: 5px 0;
|
||||||
|
}
|
||||||
|
</style>
|
16
src/pages/index.astro
Normal file
16
src/pages/index.astro
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
import Layout from '@layouts/Layout.astro';
|
||||||
|
import Program from '@components/Program.astro';
|
||||||
|
import Links from '@components/Links.astro';
|
||||||
|
import FAQ from '@components/FAQ.astro';
|
||||||
|
import Hero from '@components/Hero.astro';
|
||||||
|
import Vors from '@components/Vors.astro';
|
||||||
|
---
|
||||||
|
|
||||||
|
<Layout>
|
||||||
|
<Hero />
|
||||||
|
<Links />
|
||||||
|
<Program />
|
||||||
|
<FAQ />
|
||||||
|
<Vors />
|
||||||
|
</Layout>
|
38
src/pages/program.astro
Normal file
38
src/pages/program.astro
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
---
|
||||||
|
import data from '/src/data/program.json';
|
||||||
|
import Layout from '@layouts/Layout.astro';
|
||||||
|
---
|
||||||
|
|
||||||
|
<Layout>
|
||||||
|
{Object.entries(data).map(([dayName, items], index) => (
|
||||||
|
<div class="day">
|
||||||
|
<h2>{dayName}</h2>
|
||||||
|
<ul>
|
||||||
|
{items.map((item, itemIndex) => (
|
||||||
|
<li class="item">
|
||||||
|
{item.time} - {item.event} - {item.price}
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</Layout>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.day {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
padding: 10px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
.day:nth-child(odd) {
|
||||||
|
background-color: #F8BC90;
|
||||||
|
}
|
||||||
|
.day:nth-child(even) {
|
||||||
|
background-color: #0A0F6D;
|
||||||
|
color: #fff; /* Optional: Adjust text color for better readability */
|
||||||
|
}
|
||||||
|
.item {
|
||||||
|
margin: 5px 0;
|
||||||
|
}
|
||||||
|
</style>
|
43
src/styles/global.css
Normal file
43
src/styles/global.css
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
@import "tailwindcss";
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--font-avenir: "Avenir Next", sans-serif;
|
||||||
|
--background: #E5E2D7;
|
||||||
|
--text: #333333;
|
||||||
|
--accent: #C13131;
|
||||||
|
}
|
||||||
|
|
||||||
|
@theme {
|
||||||
|
--font-avenir: var(--font-avenir);
|
||||||
|
--color-background: var(--background);
|
||||||
|
--color-text: var(--text);
|
||||||
|
--color-accent: var(--accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
html,
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
@apply text-lg;
|
||||||
|
font-family: var(--font-avenir);
|
||||||
|
color: var(--color-text);
|
||||||
|
background-color: var(--color-background);
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: var(--color-accent);
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a {
|
||||||
|
display: inline-block;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
nav a.active {
|
||||||
|
font-weight: bolder;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
23
tsconfig.json
Normal file
23
tsconfig.json
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"extends": "astro/tsconfigs/strict",
|
||||||
|
"include": [
|
||||||
|
".astro/types.d.ts",
|
||||||
|
"**/*"
|
||||||
|
],
|
||||||
|
"exclude": [
|
||||||
|
"dist"
|
||||||
|
],
|
||||||
|
"compilerOptions": {
|
||||||
|
"jsx": "react-jsx",
|
||||||
|
"jsxImportSource": "react",
|
||||||
|
"baseUrl": ".",
|
||||||
|
"paths": {
|
||||||
|
"@assets/*": ["src/assets/*"],
|
||||||
|
"@components/*": ["src/components/*"],
|
||||||
|
"@elements/*": ["src/components/elements/*"],
|
||||||
|
"@layouts/*": ["src/layouts/*"],
|
||||||
|
"@sections/*": ["src/components/sections/*"],
|
||||||
|
"@styles/*": ["src/styles/*"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user