Skip to content
Merged
Show file tree
Hide file tree
Changes from 15 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
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
9 changes: 5 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ MunichMakerLab Website

this website has been built with astro and tries to minimize the gotchas and special purpose additions for maintainabilities sake.

## 🚀 Project Structure
## Project Structure

Inside of this project, you'll see the following folders and files:

Expand All @@ -21,7 +21,7 @@ Inside of this project, you'll see the following folders and files:
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/).
Tl;dr: The actual pages of the website are in [src/pages](/src/pages/) and are mostly markdown. Adding another page should be as easy as just creating another file, copy-pasting the head section and customizing it and the page itself.

## 🧞 Commands
## Commands

All commands are run from the root of the project, from a terminal:

Expand All @@ -35,7 +35,8 @@ All commands are run from the root of the project, from a terminal:
| `npm run astro -- --help` | Get help using the Astro CLI |
| `npm run lint` | Lint the project with ESLint |
| `npm run format:check` | Check Code Styling with Prettier |
| `npm run format:fix` | Check Code Styling with Prettier and fix |

## 👀 Want to learn more?
## More Docs

Feel free to check [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat).
[Astr documentation](https://docs.astro.build) or [Discord server](https://astro.build/chat).
26 changes: 13 additions & 13 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
"preview": "astro preview",
"astro": "astro",
"lint": "eslint .",
"format:check": "prettier --check ."
"format:check": "prettier --check .",
"format:fix": "prettier --write ."
},
"dependencies": {
"@astrojs/markdoc": "^1.0.4",
Expand Down
Binary file added public/img/bg_banner.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/bg_bench.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/bg_opendoors.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/bg_program.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/IBAN_Sparkasse_Spende.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/Makerlab_Location_2.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/Makerlab_Location_Arial_large.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/impressions/01 (Large).JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/impressions/02 (Large).JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/impressions/03 (Large).JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/impressions/04 (Large).jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/impressions/05 (Large).jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/impressions/06 (Large).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/impressions/07 (Large).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/impressions/08 (Large).jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/impressions/09 (Large).jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/impressions/10 (Large).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/impressions/11 (Large).jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/impressions/12 (Large).jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/impressions/13 (Large).jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/impressions/14 (Large).jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/impressions/15 (Large).jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/impressions/16 (Large).jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/impressions/17 (Large).jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/impressions/18 (Large).jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/impressions/19 (Large).jpg
Binary file added src/assets/impressions/20 (Large).jpg
Binary file added src/assets/impressions/21 (Large).jpg
Binary file added src/assets/impressions/22 (Large).jpg
Binary file added src/assets/impressions/23 (Large).jpg
Binary file added src/assets/impressions/24 (Large).jpg
Binary file added src/assets/impressions/25 (Large).jpg
Binary file added src/assets/paypal_donate_makerlab_muma.png
15 changes: 15 additions & 0 deletions src/components/Calendar.vue
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,21 @@ const calendarOptions = computed(() => ({
--fc-list-event-hover-bg-color: var(--card);
}

/* Smaller event text */
.calendar-container :deep(.fc-event-title),
.calendar-container :deep(.fc-event-time),
.calendar-container :deep(.fc-list-event-title),
.calendar-container :deep(.fc-list-event-time) {
font-size: 0.8rem;
}

/* Reset global link color so FullCalendar's own color system controls text */
.calendar-container :deep(a) {
color: inherit;
text-decoration: none;
text-decoration-color: initial;
}

.event-popover {
position: fixed; /* Fixed allows it to float over everything regardless of calendar scroll */
z-index: 1000;
Expand Down
7 changes: 1 addition & 6 deletions src/components/Footer.astro
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,7 @@ const t = getUiTranslations(locale);
<a href="https://github.com/munichmakerlab">
<Icon name="mdi:github" />
</a>
<a
href="https://www.meetup.com/the-hacking-room-project-munich/"
target="_blank"
rel="noopener noreferrer"
aria-label="Meetup"
>
<a href="https://www.meetup.com/munichmakerlab/" target="_blank" rel="noopener noreferrer" aria-label="Meetup">
<Icon name="mdi:meetup" />
</a>
<a href="https://www.youtube.com/channel/UCTZVQ5naAWNuawd1DLnmlQA">
Expand Down
75 changes: 75 additions & 0 deletions src/components/ImpressionGallery.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
---
import type { ImageMetadata } from 'astro';
import { Image, getImage } from 'astro:assets';

const rawModules = import.meta.glob<{ default: ImageMetadata }>(
'../assets/impressions/*.{jpg,jpeg,png,webp,JPG,JPEG,PNG,WEBP}',
{ eager: true },
);

const images = await Promise.all(
Object.values(rawModules).map(async (mod) => {
const src = mod.default;
const full = await getImage({ src, format: 'webp' });
return { src, fullSrc: full.src, width: src.width, height: src.height };
}),
);
---

{
images.length > 0 && (
<div id="impressions-gallery" class="impressions-grid">
{images.map(({ src, fullSrc, width, height }) => (
<a href={fullSrc} data-pswp-width={width} data-pswp-height={height}>
<Image src={src} alt="" width={600} height={400} />
</a>
))}
</div>
)
}

<script>
import PhotoSwipeLightbox from 'photoswipe/lightbox';
import 'photoswipe/style.css';

const lightbox = new PhotoSwipeLightbox({
gallery: '#impressions-gallery',
children: 'a',
pswpModule: () => import('photoswipe'),
});
lightbox.init();
</script>

<style>
.impressions-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 8px;
margin: 1rem 0;
}

.impressions-grid a {
display: block;
overflow: hidden;
border-radius: 6px;
aspect-ratio: 4/3;
}

.impressions-grid img {
width: 100%;
height: 100%;
object-fit: cover;
cursor: pointer;
transition: transform 0.2s ease;
}

.impressions-grid img:hover {
transform: scale(1.03);
}

@media (max-width: 600px) {
.impressions-grid {
grid-template-columns: repeat(2, 1fr);
}
}
</style>
35 changes: 35 additions & 0 deletions src/components/LightboxImage.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
import type { ImageMetadata } from 'astro';
import { Image, getImage } from 'astro:assets';

interface Props {
src: ImageMetadata;
alt: string;
width?: number;
}

const { src, alt, width = 800 } = Astro.props;
const full = await getImage({ src, format: 'webp' });
---

<div class="lightbox-single">
<a href={full.src} data-pswp-width={src.width} data-pswp-height={src.height}>
<Image src={src} alt={alt} width={width} style="cursor: zoom-in;" />
</a>
</div>

<script>
import PhotoSwipeLightbox from 'photoswipe/lightbox';
import 'photoswipe/style.css';

document.querySelectorAll('.lightbox-single').forEach((el, i) => {
const id = `lightbox-single-${i}`;
el.id = id;
const lightbox = new PhotoSwipeLightbox({
gallery: `#${id}`,
children: 'a',
pswpModule: () => import('photoswipe'),
});
lightbox.init();
});
</script>
13 changes: 11 additions & 2 deletions src/components/Navbar.vue
Original file line number Diff line number Diff line change
Expand Up @@ -63,13 +63,22 @@ const links = [
name: t.navbar.visit,
path: props.navLinks.visit,
},
{
name: t.navbar.events,
path: props.navLinks.events,
},

{
name: t.navbar.join,
path: props.navLinks.join,
},
{
name: t.navbar.contact,
path: props.navLinks.contact,
},
{
name: t.navbar.events,
path: props.navLinks.events,
name: t.navbar.donate,
path: props.navLinks.donate,
},
{
name: t.navbar.wiki,
Expand Down
2 changes: 2 additions & 0 deletions src/i18n/ui/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ export const de: Translations = {
contact: 'Kontakt',
events: 'Events',
wiki: 'Wiki',
donate: 'Spenden',
join: 'Mitmachen',
},
footer: {
formerChannels: 'Frühere Kanäle:',
Expand Down
2 changes: 2 additions & 0 deletions src/i18n/ui/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ export const en = {
contact: 'Contact',
events: 'Events',
wiki: 'Wiki',
donate: 'Donate',
join: 'Join Us',
},
footer: {
formerChannels: 'Former channels:',
Expand Down
32 changes: 19 additions & 13 deletions src/layouts/Content.astro
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ const navLinks = {
visit: getRelativeLocaleUrl(currentLocale, '/visit'),
contact: getRelativeLocaleUrl(currentLocale, '/contact'),
events: getRelativeLocaleUrl(currentLocale, '/events/'),
join: getRelativeLocaleUrl(currentLocale, '/join'),
donate: getRelativeLocaleUrl(currentLocale, '/donate'),
};
---

Expand Down Expand Up @@ -68,6 +70,7 @@ const navLinks = {
color-scheme: light;
font-family: 'Lora', Arial, Helvetica, sans-serif;
font-size: 20px;
line-height: 1.75;
--bg: #ffffff;
--fg: #404040;
--muted: #666666;
Expand Down Expand Up @@ -105,21 +108,24 @@ const navLinks = {
}

a {
color: var(--fg);
color: var(--link);
text-underline-offset: 3px;
text-decoration-color: color-mix(in srgb, var(--link) 40%, transparent);
transition:
text-decoration-color 0.15s ease,
color 0.15s ease;
}
.content {
width: 50vw;
margin: auto;
margin-top: 5rem;
a:hover {
text-decoration-color: var(--link);
}

@media (max-width: 950px) {
.content {
width: 90vw;
}
.content img {
max-width: 100%;
height: auto;
}
.content {
max-width: 1400px;
width: 90%;
margin: 5rem auto 0;
}
.content img {
max-width: 100%;
height: auto;
}
</style>
Loading
Loading