diff --git a/.gitignore b/.gitignore index a3858f8..c6d04ad 100644 --- a/.gitignore +++ b/.gitignore @@ -27,5 +27,13 @@ server.key server.cert public/images/uploads/1ba24ea7-f52c-4179-896f-1909269cab58.jpg + +# Vue Build-Artefakte (werden beim Deploy generiert) +public/js/ +public/css/ +public/**/*.map + +# Uploads/Runtime-Dateien nicht versionieren +public/images/uploads/ actualize.sh files/uploads/GD 24.08.2025-04.01.2026 Stand 12.08.2025.docx diff --git a/package.json b/package.json index 8e6f135..c9b6490 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "private": true, "scripts": { "serve": "vue-cli-service serve", - "build": "vue-cli-service build && npm run copy-dist", + "build": "vue-cli-service build", "copy-dist": "cp -r dist/* public/", "lint": "vue-cli-service lint" }, diff --git a/public/index.html b/public/index.html index 1654a3d..d66d924 100644 --- a/public/index.html +++ b/public/index.html @@ -1 +1,19 @@ -miriamgemeinde
\ No newline at end of file + + + + + + + + <%= htmlWebpackPlugin.options.title %> + + + +
+ + \ No newline at end of file diff --git a/src/assets/css/content-cards.css b/src/assets/css/content-cards.css new file mode 100644 index 0000000..d5cfae8 --- /dev/null +++ b/src/assets/css/content-cards.css @@ -0,0 +1,89 @@ +/** + * Phase 3 – Inhaltsmodule als Karten (ruhig, seriös, wiederverwendbar). + */ +.mg-stack { + display: grid; + gap: var(--space-4); +} + +.mg-card { + background: var(--color-bg-page); + border: 1px solid rgba(0, 0, 0, 0.12); + border-radius: 6px; + padding: var(--space-4); +} + +.mg-card--highlight { + border-color: var(--color-brand-primary); + box-shadow: 0 0 0 1px rgba(148, 0, 255, 0.18); +} + +.mg-card__grid { + display: grid; + grid-template-columns: 160px 1fr; + gap: var(--space-4); + align-items: start; +} + +@media (max-width: 640px) { + .mg-card__grid { + grid-template-columns: 1fr; + } +} + +.mg-media { + width: 100%; + aspect-ratio: 4 / 3; + border-radius: 6px; + overflow: hidden; + background: var(--color-bg-subtle); + border: 1px solid rgba(0, 0, 0, 0.08); +} + +.mg-media > img { + width: 100%; + height: 100%; + display: block; + object-fit: cover; +} + +.mg-title { + margin: 0 0 var(--space-2) 0; + font-weight: 600; +} + +.mg-meta { + display: flex; + flex-wrap: wrap; + gap: var(--space-2) var(--space-4); + margin: 0 0 var(--space-2) 0; + color: var(--color-text-muted); + font-size: 0.95rem; +} + +.mg-meta strong { + color: var(--color-text); + font-weight: 600; +} + +.mg-text { + margin: 0; +} + +.mg-badge { + display: inline-flex; + align-items: center; + gap: var(--space-1); + padding: 2px 8px; + border-radius: 999px; + background: rgba(255, 255, 255, 0.18); + border: 1px solid rgba(0, 0, 0, 0.1); + color: var(--color-text); + font-size: 0.85rem; +} + +.mg-accent-left { + border-left: 6px solid rgba(0, 0, 0, 0.12); + padding-left: var(--space-3); +} + diff --git a/src/components/ContactRender.vue b/src/components/ContactRender.vue index 62b1d2c..fcbfb26 100644 --- a/src/components/ContactRender.vue +++ b/src/components/ContactRender.vue @@ -1,28 +1,34 @@ \ No newline at end of file diff --git a/src/components/EventRender.vue b/src/components/EventRender.vue index aa10a12..167fe44 100644 --- a/src/components/EventRender.vue +++ b/src/components/EventRender.vue @@ -1,39 +1,54 @@ diff --git a/src/components/WorshipRender.vue b/src/components/WorshipRender.vue index 6177d43..7a1f0d0 100644 --- a/src/components/WorshipRender.vue +++ b/src/components/WorshipRender.vue @@ -1,51 +1,70 @@ \ No newline at end of file diff --git a/src/content/ImageContent.vue b/src/content/ImageContent.vue index 0941677..f32c39c 100644 --- a/src/content/ImageContent.vue +++ b/src/content/ImageContent.vue @@ -1,5 +1,7 @@ diff --git a/src/main.js b/src/main.js index 09fc19f..023c985 100644 --- a/src/main.js +++ b/src/main.js @@ -4,6 +4,7 @@ import router from './router'; import store from './store'; import axios from './axios'; import './assets/css/design-tokens.css'; +import './assets/css/content-cards.css'; import './assets/css/editor.css'; const app = createApp(AppComponent);