FISO theme
This commit is contained in:
commit
b68b5bb58a
22
README.md
Normal file
22
README.md
Normal file
@ -0,0 +1,22 @@
|
||||
# FISO theme
|
||||
Theme created for the Stichting FISO Eindhoven website.
|
||||
|
||||
## Installing Grav development env
|
||||
1. Install Docker & Docker compose
|
||||
2. Run `docker compose up -d` with the `./fiso-theme:/var/www/html/user/themes/fiso-theme:ro` line commented out in `docker-compose.yml`.
|
||||
3. Run `docker exec -it fiso-site-grav-1 gpm install admin` and install all plugins requested.
|
||||
4. Run `docker compose down`
|
||||
5. Uncomment the `fiso-theme` line in `docker-compose.yml`
|
||||
6. Run `docker compose up` to start the development env.
|
||||
7. Open Grav on port 8000 (http://localhost:8000)
|
||||
8. Create an example admin account to manage the dev install (I always create `admin`/`FISOisTHEbest!123`)
|
||||
|
||||
## Preparing the FISO theme
|
||||
1. Open the `fiso-theme` folder in your preferred terminal
|
||||
2. Run `npm install`
|
||||
3. Run `npm run dev` to build the Tailwind CSS classes
|
||||
|
||||
## Installing it on the webserver
|
||||
1. Run `npm run build` in the `fiso-theme` folder in your terminal
|
||||
2. Copy the `fiso-theme` folder to the webhosting `user/themes` folder.
|
||||
3. Pick it in Grav admin.
|
13
docker-compose.yml
Normal file
13
docker-compose.yml
Normal file
@ -0,0 +1,13 @@
|
||||
services:
|
||||
grav:
|
||||
image: shinsenter/grav:latest
|
||||
volumes:
|
||||
- grav_install:/var/www/html
|
||||
# Only uncomment this after the initial volume has been filled
|
||||
# Otherwise, it will not auto-install.
|
||||
- ./fiso-theme:/var/www/html/user/themes/fiso-theme:ro
|
||||
ports:
|
||||
- 8000:80
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
grav_install:
|
2
fiso-theme/.gitignore
vendored
Normal file
2
fiso-theme/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
node_modules
|
||||
assets/css
|
BIN
fiso-theme/assets/img/logo.png
Normal file
BIN
fiso-theme/assets/img/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 435 KiB |
11
fiso-theme/blueprints.yaml
Normal file
11
fiso-theme/blueprints.yaml
Normal file
@ -0,0 +1,11 @@
|
||||
name: FISO Theme
|
||||
slug: fiso-theme
|
||||
type: theme
|
||||
version: 1.0.0
|
||||
description: "Theme created for the FISO website"
|
||||
author:
|
||||
name: Christiaan Goossens
|
||||
email: fiso@christiaangoossens.nl
|
||||
|
||||
dependencies:
|
||||
- { name: grav, version: '>=1.6.0' }
|
50
fiso-theme/blueprints/frontpage.yaml
Normal file
50
fiso-theme/blueprints/frontpage.yaml
Normal file
@ -0,0 +1,50 @@
|
||||
'@extends':
|
||||
type: default
|
||||
context: blueprints://pages
|
||||
|
||||
form:
|
||||
fields:
|
||||
tabs:
|
||||
type: tabs
|
||||
active: 1
|
||||
|
||||
fields:
|
||||
theme:
|
||||
type: tab
|
||||
title: Theme
|
||||
|
||||
fields:
|
||||
header.frontPageBoxTitle:
|
||||
type: string
|
||||
label: Frontpage Box Title
|
||||
default: "Just be you."
|
||||
header.frontPageBoxSubtitle:
|
||||
type: string
|
||||
label: Frontpage Box Subtitle
|
||||
default: "FISO is the umbrella representing internationalisation, inclusivity and wellbeing for students in Eindhoven."
|
||||
header.boardIntro:
|
||||
type: string
|
||||
label: Board Introduction Text (displayed above board members)
|
||||
default: "The FISO board for the academic year of 2024-2025 consists of:"
|
||||
header.board:
|
||||
type: list
|
||||
label: Board
|
||||
style: vertical
|
||||
fields:
|
||||
.name:
|
||||
type: text
|
||||
label: Board Member Name
|
||||
.function:
|
||||
type: text
|
||||
label: Board Member Function
|
||||
.email:
|
||||
type: text
|
||||
label: Board Member Email
|
||||
.photo:
|
||||
type: filepicker
|
||||
folder: 'self@'
|
||||
preview_images: true
|
||||
label: Select the board member photo (upload it to the page first)
|
||||
accept:
|
||||
- .png
|
||||
- .jpg
|
85
fiso-theme/css/main.css
Normal file
85
fiso-theme/css/main.css
Normal file
@ -0,0 +1,85 @@
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
|
||||
.grav-body-styling {
|
||||
h1 {
|
||||
@apply text-3xl font-header font-bold text-fisoPrimary mt-6 mb-4;
|
||||
}
|
||||
|
||||
h2 {
|
||||
@apply text-2xl font-header font-bold text-fisoSecondary mt-4 mb-2;
|
||||
}
|
||||
|
||||
h3 {
|
||||
@apply text-xl font-semibold text-slate-600 mt-6 mb-2;
|
||||
}
|
||||
|
||||
h4 {
|
||||
@apply text-xl text-slate-600 mt-6 mb-2;
|
||||
}
|
||||
|
||||
h5 {
|
||||
@apply font-medium text-slate-600 mt-4 mb-2;
|
||||
}
|
||||
|
||||
h6 {
|
||||
@apply text-sm font-medium text-slate-600 mt-2 mb-2;
|
||||
}
|
||||
|
||||
p {
|
||||
@apply mt-6;
|
||||
}
|
||||
|
||||
a {
|
||||
@apply whitespace-nowrap font-medium text-slate-500 hover:text-fisoSecondary;
|
||||
}
|
||||
|
||||
ul {
|
||||
@apply list-disc list-outside ml-4;
|
||||
}
|
||||
|
||||
ol {
|
||||
@apply list-decimal list-outside ml-4;
|
||||
}
|
||||
|
||||
.notices {
|
||||
p {
|
||||
@apply m-0;
|
||||
}
|
||||
|
||||
@apply rounded-md px-6 py-4 mt-6;
|
||||
}
|
||||
|
||||
.notices.yellow {
|
||||
p {
|
||||
@apply text-yellow-800;
|
||||
}
|
||||
|
||||
@apply bg-yellow-50;
|
||||
}
|
||||
|
||||
.notices.red {
|
||||
p {
|
||||
@apply text-red-800;
|
||||
}
|
||||
|
||||
@apply bg-red-50;
|
||||
}
|
||||
|
||||
.notices.blue {
|
||||
p {
|
||||
@apply text-blue-800;
|
||||
}
|
||||
|
||||
@apply bg-blue-50;
|
||||
}
|
||||
|
||||
.notices.green {
|
||||
p {
|
||||
@apply text-green-800;
|
||||
}
|
||||
|
||||
@apply bg-green-50;
|
||||
}
|
||||
}
|
27
fiso-theme/fiso-theme.php
Normal file
27
fiso-theme/fiso-theme.php
Normal file
@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace Grav\Theme;
|
||||
|
||||
use Grav\Common\Theme;
|
||||
|
||||
class FISO extends Theme
|
||||
{
|
||||
public static function getSubscribedEvents()
|
||||
{
|
||||
return [
|
||||
'onThemeInitialized' => ['onThemeInitialized', 0],
|
||||
'onTwigLoader' => ['onTwigLoader', 0],
|
||||
'onTwigInitialized' => ['onTwigInitialized', 0],
|
||||
];
|
||||
}
|
||||
|
||||
public function onThemeInitialized()
|
||||
{
|
||||
// When using Composer
|
||||
//require_once __DIR__ . '/vendor/autoload.php';
|
||||
}
|
||||
|
||||
public function onTwigLoader() {}
|
||||
|
||||
public function onTwigInitialized() {}
|
||||
}
|
0
fiso-theme/fiso-theme.yaml
Normal file
0
fiso-theme/fiso-theme.yaml
Normal file
1389
fiso-theme/package-lock.json
generated
Normal file
1389
fiso-theme/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
11
fiso-theme/package.json
Normal file
11
fiso-theme/package.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "fiso-theme",
|
||||
"version": "1.0.0",
|
||||
"scripts": {
|
||||
"dev": "npx tailwindcss -i ./css/main.css -o ./assets/css/main.css --watch",
|
||||
"build": "npx tailwindcss -i ./css/main.css -o ./assets/css/main.css"
|
||||
},
|
||||
"devDependencies": {
|
||||
"tailwindcss": "^3.4.14"
|
||||
}
|
||||
}
|
23
fiso-theme/tailwind.config.js
Normal file
23
fiso-theme/tailwind.config.js
Normal file
@ -0,0 +1,23 @@
|
||||
/** @type {import('tailwindcss').Config} */
|
||||
module.exports = {
|
||||
content: [
|
||||
'./templates/**/*.html.twig',
|
||||
],
|
||||
theme: {
|
||||
extend: {
|
||||
fontFamily: {
|
||||
header: ['MuseoModerno', 'sans-serif'],
|
||||
sans: ['"Open Sans"', 'sans-serif'],
|
||||
},
|
||||
colors: {
|
||||
fisoPrimary: '#614eff',
|
||||
fisoSecondary: '#a116ff',
|
||||
fisoSecondaryOther: '#00a2ff',
|
||||
fisoSupport1: '#43076b',
|
||||
fisoSupport2: '#d9f11f',
|
||||
}
|
||||
}
|
||||
},
|
||||
plugins: [],
|
||||
}
|
||||
|
12
fiso-theme/templates/default.html.twig
Normal file
12
fiso-theme/templates/default.html.twig
Normal file
@ -0,0 +1,12 @@
|
||||
{% extends 'partials/base.html.twig' %}
|
||||
|
||||
{% block body %}
|
||||
<div class="bg-white overflow-hidden shadow sm:rounded-lg">
|
||||
<div class="px-4 py-5 sm:p-6">
|
||||
<h1 class="text-2xl font-header font-bold text-fisoSecondary">{{ page.title }}</h1>
|
||||
<div class="mt-6 grav-body-styling">
|
||||
{{ page.content | raw }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
1
fiso-theme/templates/error.html.twig
Normal file
1
fiso-theme/templates/error.html.twig
Normal file
@ -0,0 +1 @@
|
||||
{% extends 'default.html.twig' %}
|
43
fiso-theme/templates/frontpage.html.twig
Normal file
43
fiso-theme/templates/frontpage.html.twig
Normal file
@ -0,0 +1,43 @@
|
||||
{% extends 'partials/base.html.twig' %}
|
||||
|
||||
{% block body %}
|
||||
<div class="bg-white overflow-hidden shadow sm:rounded-lg">
|
||||
<div class="px-4 py-5 sm:p-6">
|
||||
<h1 class="text-3xl font-header font-bold text-fisoPrimary">{{ header.frontPageBoxTitle }}</h1>
|
||||
<h2 class="text-xl font-medium text-slate-600">{{ header.frontPageBoxSubtitle }}</h2>
|
||||
|
||||
<div class="mt-6 grav-body-styling">
|
||||
{{ page.content | raw }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="bg-white overflow-hidden shadow sm:rounded-lg my-6">
|
||||
<div class="px-4 py-5 sm:p-6">
|
||||
<h2 class="text-2xl font-header font-bold text-fisoSecondary">Our Board</h2>
|
||||
<p>{{ header.boardIntro }}</p>
|
||||
<ul role="list" class="grid gap-y-8 my-8">
|
||||
{% for boardie in header.board %}
|
||||
<li>
|
||||
<div class="flex items-center gap-x-6">
|
||||
<img class="h-16 w-16 rounded-full" src="{{ page.media[boardie.photo].url }}">
|
||||
<div>
|
||||
<h3 class="text-base/7 font-semibold tracking-tight text-gray-900">{{ boardie.name }}</h3>
|
||||
<p class="text-sm/6 font-semibold">
|
||||
<span class="text-slate-600">{{ boardie.function }}</span><br />
|
||||
<span class="text-fisoPrimary">{{ boardie.email }}</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
<hr>
|
||||
<p class="my-4 text-sm">
|
||||
Supervised by the Supervisory Council<br />
|
||||
<span class="text-fisoPrimary">supervisory-council@fiso-eindhoven.nl</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
53
fiso-theme/templates/partials/base.html.twig
Normal file
53
fiso-theme/templates/partials/base.html.twig
Normal file
@ -0,0 +1,53 @@
|
||||
{% set theme_config = attribute(config.themes, config.system.pages.theme) %}
|
||||
<!doctype html>
|
||||
|
||||
<html lang="{{ grav.language.getActive ?: theme_config.default_lang }}">
|
||||
|
||||
<head>
|
||||
{% block head %}
|
||||
<meta charset="utf-8">
|
||||
|
||||
{% block title %}
|
||||
<title>{% if header.title %}{{ header.title|e('html') }} | {% endif %}{{ site.title|e('html') }}</title>
|
||||
{% endblock %}
|
||||
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=MuseoModerno:wght@500;700&family=Open+Sans:wght@300;400;600;700;800&display=swap"
|
||||
rel="stylesheet">
|
||||
<link rel="stylesheet" href="{{ url('theme://assets/css/main.css') }}">
|
||||
<meta name="theme-color" content="#614eff">
|
||||
<link rel="canonical" href="{{ page.url(true, true) }}" />
|
||||
{% endblock head%}
|
||||
</head>
|
||||
|
||||
<body class="bg-gray-100">
|
||||
|
||||
<div class="my-4 mx-auto max-w-4xl">
|
||||
<img width="150" class="mx-auto my-6" src="{{ url('theme://assets/img/logo.png') }}" alt="FISO"></img>
|
||||
|
||||
<div class="flex gap-x-12 justify-center mb-8">
|
||||
{% for page in pages.children.visible %}
|
||||
<a href="{{ page.url }}" class="font-semibold hover:text-fisoPrimary text-slate-900">{{ page.title }}</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container mx-auto max-w-2xl sm:px-6 lg:px-8 my-4 mb-12">
|
||||
{% block body %}
|
||||
{% endblock %}
|
||||
|
||||
<footer class="text-center text-sm text-slate-600 mt-6">
|
||||
Designed & developed with ❤️ by <a href="https://christiaangoossens.nl"
|
||||
class="hover:text-fisoSecondary">Christiaan
|
||||
Goossens</a>.<br />
|
||||
© {{ 'now' | date('Y') }} - Stichting FISO Eindhoven
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user