create-ginko 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +34 -0
- package/README.md +15 -8
- package/index.mjs +115 -44
- package/package.json +6 -1
- package/presets/gastro/app/pages/index.vue +6 -4
- package/presets/gastro-de/app/pages/index.vue +6 -4
- package/template-files.mjs +377 -0
- package/templates/blog/.env.example +8 -0
- package/templates/blog/.github/screenshots/home-dark.png +0 -0
- package/templates/blog/.github/screenshots/home-light.png +0 -0
- package/templates/blog/.github/workflows/ci.yml +27 -0
- package/templates/blog/DESIGN.md +197 -0
- package/templates/blog/LICENSE +21 -0
- package/templates/blog/MEDIA.md +29 -0
- package/templates/blog/NOTES.md +16 -0
- package/templates/blog/README.md +274 -0
- package/templates/blog/app/app.config.ts +29 -0
- package/templates/blog/app/app.vue +7 -0
- package/templates/blog/app/assets/css/main.css +18 -0
- package/templates/blog/app/assets/css/tokens.css +400 -0
- package/templates/blog/app/components/InitialsAvatar.vue +18 -0
- package/templates/blog/app/components/ProseBody.vue +13 -0
- package/templates/blog/app/components/block/Cards.vue +54 -0
- package/templates/blog/app/components/block/Cta.vue +26 -0
- package/templates/blog/app/components/block/Empty.vue +26 -0
- package/templates/blog/app/components/block/Features.vue +24 -0
- package/templates/blog/app/components/block/Hero.vue +47 -0
- package/templates/blog/app/components/block/PageHeader.vue +21 -0
- package/templates/blog/app/components/block/Section.vue +31 -0
- package/templates/blog/app/components/blog/Byline.vue +22 -0
- package/templates/blog/app/components/blog/PostList.vue +33 -0
- package/templates/blog/app/components/blog/TagList.vue +17 -0
- package/templates/blog/app/components/home/LatestPost.vue +31 -0
- package/templates/blog/app/components/people/List.vue +41 -0
- package/templates/blog/app/components/site/Contact.vue +38 -0
- package/templates/blog/app/components/site/Footer.vue +81 -0
- package/templates/blog/app/components/site/FooterStatus.vue +24 -0
- package/templates/blog/app/components/site/Header.vue +52 -0
- package/templates/blog/app/components/site/LanguageSwitch.vue +34 -0
- package/templates/blog/app/components/site/Logo.vue +17 -0
- package/templates/blog/app/components/site/NavLink.vue +19 -0
- package/templates/blog/app/components/site/NavSheet.vue +63 -0
- package/templates/blog/app/components/site/Notice.vue +21 -0
- package/templates/blog/app/components/site/PageCta.vue +14 -0
- package/templates/blog/app/components/site/SkipLink.vue +15 -0
- package/templates/blog/app/components/site/ThemeToggle.vue +28 -0
- package/templates/blog/app/components/ui/button/Button.vue +30 -0
- package/templates/blog/app/components/ui/button/index.ts +44 -0
- package/templates/blog/app/components/ui/sheet/Sheet.vue +16 -0
- package/templates/blog/app/components/ui/sheet/SheetClose.vue +13 -0
- package/templates/blog/app/components/ui/sheet/SheetContent.vue +54 -0
- package/templates/blog/app/components/ui/sheet/SheetDescription.vue +23 -0
- package/templates/blog/app/components/ui/sheet/SheetOverlay.vue +22 -0
- package/templates/blog/app/components/ui/sheet/SheetTitle.vue +23 -0
- package/templates/blog/app/components/ui/sheet/SheetTrigger.vue +13 -0
- package/templates/blog/app/components/ui/sheet/index.ts +7 -0
- package/templates/blog/app/composables/useBlog.ts +103 -0
- package/templates/blog/app/composables/usePageSeo.ts +50 -0
- package/templates/blog/app/composables/useSiteAppConfig.ts +79 -0
- package/templates/blog/app/error.vue +35 -0
- package/templates/blog/app/layouts/default.vue +23 -0
- package/templates/blog/app/lib/utils.ts +26 -0
- package/templates/blog/app/pages/about/[slug].vue +48 -0
- package/templates/blog/app/pages/index.vue +54 -0
- package/templates/blog/app/pages/legal/[slug].vue +46 -0
- package/templates/blog/app/pages/news/[slug].vue +94 -0
- package/templates/blog/app/pages/news/index.vue +54 -0
- package/templates/blog/app/pages/news/tags/[tag].vue +41 -0
- package/templates/blog/app/pages/team.vue +40 -0
- package/templates/blog/app/routes.ts +31 -0
- package/templates/blog/app/utils/telHref.ts +3 -0
- package/templates/blog/components.json +21 -0
- package/templates/blog/content/home.de.md +4 -0
- package/templates/blog/content/home.md +4 -0
- package/templates/blog/content/legal/1.privacy.de.md +30 -0
- package/templates/blog/content/legal/1.privacy.md +30 -0
- package/templates/blog/content/legal/2.terms.de.md +22 -0
- package/templates/blog/content/legal/2.terms.md +23 -0
- package/templates/blog/content/legal/3.imprint.de.md +14 -0
- package/templates/blog/content/legal/3.imprint.md +15 -0
- package/templates/blog/content/notices/1.sample.de.md +3 -0
- package/templates/blog/content/notices/1.sample.md +4 -0
- package/templates/blog/content/people/1.ida-wren.de.md +4 -0
- package/templates/blog/content/people/1.ida-wren.md +5 -0
- package/templates/blog/content/people/2.tom-marsh.de.md +4 -0
- package/templates/blog/content/people/2.tom-marsh.md +5 -0
- package/templates/blog/content/posts/counting-street-trees.de.md +24 -0
- package/templates/blog/content/posts/counting-street-trees.md +25 -0
- package/templates/blog/content/posts/forest-at-the-end-of-the-line.de.md +26 -0
- package/templates/blog/content/posts/forest-at-the-end-of-the-line.md +28 -0
- package/templates/blog/content/posts/lichen-on-the-old-bridge.de.md +11 -0
- package/templates/blog/content/posts/lichen-on-the-old-bridge.md +14 -0
- package/templates/blog/content/posts/owls-in-the-old-cemetery.de.md +22 -0
- package/templates/blog/content/posts/owls-in-the-old-cemetery.md +23 -0
- package/templates/blog/content/posts/rock-pools-at-low-tide.de.md +25 -0
- package/templates/blog/content/posts/rock-pools-at-low-tide.md +26 -0
- package/templates/blog/content/posts/rock-pools.jpg +0 -0
- package/templates/blog/content/posts/swifts-over-the-car-park.de.md +22 -0
- package/templates/blog/content/posts/swifts-over-the-car-park.md +23 -0
- package/templates/blog/content/posts/ten-minute-notebook.de.md +36 -0
- package/templates/blog/content/posts/ten-minute-notebook.md +38 -0
- package/templates/blog/content/posts/why-we-keep-field-notes.de.md +24 -0
- package/templates/blog/content/posts/why-we-keep-field-notes.md +25 -0
- package/templates/blog/content/posts/winter-birds-by-the-bike-shed.de.md +22 -0
- package/templates/blog/content/posts/winter-birds-by-the-bike-shed.md +23 -0
- package/templates/blog/content/site.md +4 -0
- package/templates/blog/eslint.config.mjs +12 -0
- package/templates/blog/eslint.tailwind.mjs +33 -0
- package/templates/blog/ginko.config.ts +59 -0
- package/templates/blog/gitignore +7 -0
- package/templates/blog/i18n/blog/de.json +18 -0
- package/templates/blog/i18n/blog/en.json +18 -0
- package/templates/blog/i18n/de.json +31 -0
- package/templates/blog/i18n/en.json +27 -0
- package/templates/blog/i18n/people/de.json +6 -0
- package/templates/blog/i18n/people/en.json +6 -0
- package/templates/blog/i18n/site/de.json +39 -0
- package/templates/blog/i18n/site/en.json +39 -0
- package/templates/blog/modules/feature-messages.ts +19 -0
- package/templates/blog/modules/feeds/index.ts +22 -0
- package/templates/blog/modules/feeds/routes.ts +13 -0
- package/templates/blog/modules/page-paths/index.ts +26 -0
- package/templates/blog/modules/page-paths/paths.ts +48 -0
- package/templates/blog/nuxt.config.ts +27 -0
- package/templates/blog/package.json +57 -0
- package/templates/blog/pnpm-workspace.yaml +6 -0
- package/templates/blog/public/media/forest-path.jpg +0 -0
- package/templates/blog/public/media/notebook.jpg +0 -0
- package/templates/blog/server/middleware/news-feed.ts +37 -0
- package/templates/blog/server/plugins/font-preload.ts +17 -0
- package/templates/blog/site-url.ts +21 -0
- package/templates/blog/tsconfig.json +9 -0
- package/templates/blog.json +11 -0
- package/templates/company/.env.example +8 -0
- package/templates/company/.github/screenshots/home-dark.png +0 -0
- package/templates/company/.github/screenshots/home-light.png +0 -0
- package/templates/company/.github/workflows/ci.yml +27 -0
- package/templates/company/DESIGN.md +197 -0
- package/templates/company/LICENSE +21 -0
- package/templates/company/MEDIA.md +32 -0
- package/templates/company/NOTES.md +19 -0
- package/templates/company/README.md +254 -0
- package/templates/company/app/app.config.ts +33 -0
- package/templates/company/app/app.vue +7 -0
- package/templates/company/app/assets/css/main.css +22 -0
- package/templates/company/app/assets/css/tokens.css +400 -0
- package/templates/company/app/bricks/logos-quotes.ts +47 -0
- package/templates/company/app/bricks/pages.ts +38 -0
- package/templates/company/app/bricks/services.ts +64 -0
- package/templates/company/app/components/InitialsAvatar.vue +18 -0
- package/templates/company/app/components/ProseBody.vue +13 -0
- package/templates/company/app/components/ServiceLine.vue +15 -0
- package/templates/company/app/components/block/Cards.vue +54 -0
- package/templates/company/app/components/block/Cta.vue +26 -0
- package/templates/company/app/components/block/Empty.vue +26 -0
- package/templates/company/app/components/block/Features.vue +24 -0
- package/templates/company/app/components/block/Hero.vue +47 -0
- package/templates/company/app/components/block/Logos.vue +22 -0
- package/templates/company/app/components/block/PageHeader.vue +21 -0
- package/templates/company/app/components/block/Quote.vue +19 -0
- package/templates/company/app/components/block/Section.vue +31 -0
- package/templates/company/app/components/blog/Byline.vue +22 -0
- package/templates/company/app/components/blog/PostList.vue +33 -0
- package/templates/company/app/components/blog/TagList.vue +17 -0
- package/templates/company/app/components/downloads/FileButton.vue +21 -0
- package/templates/company/app/components/downloads/List.vue +37 -0
- package/templates/company/app/components/event/Upcoming.vue +25 -0
- package/templates/company/app/components/jobs/List.vue +26 -0
- package/templates/company/app/components/people/List.vue +41 -0
- package/templates/company/app/components/people/TeamContact.vue +37 -0
- package/templates/company/app/components/site/Contact.vue +38 -0
- package/templates/company/app/components/site/Footer.vue +81 -0
- package/templates/company/app/components/site/Header.vue +52 -0
- package/templates/company/app/components/site/LanguageSwitch.vue +34 -0
- package/templates/company/app/components/site/Logo.vue +17 -0
- package/templates/company/app/components/site/NavLink.vue +19 -0
- package/templates/company/app/components/site/NavSheet.vue +63 -0
- package/templates/company/app/components/site/Notice.vue +21 -0
- package/templates/company/app/components/site/SkipLink.vue +15 -0
- package/templates/company/app/components/site/ThemeToggle.vue +28 -0
- package/templates/company/app/components/ui/button/Button.vue +30 -0
- package/templates/company/app/components/ui/button/index.ts +44 -0
- package/templates/company/app/components/ui/sheet/Sheet.vue +16 -0
- package/templates/company/app/components/ui/sheet/SheetClose.vue +13 -0
- package/templates/company/app/components/ui/sheet/SheetContent.vue +54 -0
- package/templates/company/app/components/ui/sheet/SheetDescription.vue +23 -0
- package/templates/company/app/components/ui/sheet/SheetOverlay.vue +22 -0
- package/templates/company/app/components/ui/sheet/SheetTitle.vue +23 -0
- package/templates/company/app/components/ui/sheet/SheetTrigger.vue +13 -0
- package/templates/company/app/components/ui/sheet/index.ts +7 -0
- package/templates/company/app/composables/useBlog.ts +103 -0
- package/templates/company/app/composables/useDownloads.ts +54 -0
- package/templates/company/app/composables/useEvents.ts +182 -0
- package/templates/company/app/composables/useJobs.ts +108 -0
- package/templates/company/app/composables/usePageSeo.ts +50 -0
- package/templates/company/app/composables/useServiceLine.ts +10 -0
- package/templates/company/app/composables/useServices.ts +93 -0
- package/templates/company/app/composables/useSiteAppConfig.ts +79 -0
- package/templates/company/app/error.vue +35 -0
- package/templates/company/app/layouts/default.vue +23 -0
- package/templates/company/app/lib/utils.ts +26 -0
- package/templates/company/app/pages/[...slug].vue +36 -0
- package/templates/company/app/pages/downloads.vue +20 -0
- package/templates/company/app/pages/events/[slug].vue +106 -0
- package/templates/company/app/pages/events/index.vue +20 -0
- package/templates/company/app/pages/index.vue +84 -0
- package/templates/company/app/pages/jobs/[slug].vue +63 -0
- package/templates/company/app/pages/jobs/index.vue +36 -0
- package/templates/company/app/pages/legal/[slug].vue +46 -0
- package/templates/company/app/pages/news/[slug].vue +94 -0
- package/templates/company/app/pages/news/index.vue +54 -0
- package/templates/company/app/pages/news/tags/[tag].vue +41 -0
- package/templates/company/app/pages/services/[slug].vue +90 -0
- package/templates/company/app/pages/services/index.vue +18 -0
- package/templates/company/app/pages/team.vue +40 -0
- package/templates/company/app/routes.ts +33 -0
- package/templates/company/app/utils/telHref.ts +3 -0
- package/templates/company/components.json +21 -0
- package/templates/company/content/downloads/hk-centrifugal-pumps.de.md +4 -0
- package/templates/company/content/downloads/hk-centrifugal-pumps.md +7 -0
- package/templates/company/content/downloads/pumping-stations.de.md +4 -0
- package/templates/company/content/downloads/pumping-stations.md +7 -0
- package/templates/company/content/downloads/ts-submersible-pumps.de.md +4 -0
- package/templates/company/content/downloads/ts-submersible-pumps.md +7 -0
- package/templates/company/content/events/1.municipal-water-forum.de.md +9 -0
- package/templates/company/content/events/1.municipal-water-forum.md +14 -0
- package/templates/company/content/events/2.pump-days-north.de.md +7 -0
- package/templates/company/content/events/2.pump-days-north.md +12 -0
- package/templates/company/content/events/3.industrial-water-expo.de.md +7 -0
- package/templates/company/content/events/3.industrial-water-expo.md +12 -0
- package/templates/company/content/home.de.md +6 -0
- package/templates/company/content/home.md +7 -0
- package/templates/company/content/jobs/apprenticeship-industrial-mechanic.de.md +22 -0
- package/templates/company/content/jobs/apprenticeship-industrial-mechanic.md +26 -0
- package/templates/company/content/jobs/sales-engineer.de.md +25 -0
- package/templates/company/content/jobs/sales-engineer.md +29 -0
- package/templates/company/content/jobs/service-technician.de.md +25 -0
- package/templates/company/content/jobs/service-technician.md +29 -0
- package/templates/company/content/jobs/summer-internship-assembly.de.md +8 -0
- package/templates/company/content/jobs/summer-internship-assembly.md +14 -0
- package/templates/company/content/legal/1.privacy.de.md +18 -0
- package/templates/company/content/legal/1.privacy.md +20 -0
- package/templates/company/content/legal/2.terms.de.md +19 -0
- package/templates/company/content/legal/2.terms.md +21 -0
- package/templates/company/content/legal/3.imprint.de.md +16 -0
- package/templates/company/content/legal/3.imprint.md +18 -0
- package/templates/company/content/logos/1.public-works.md +6 -0
- package/templates/company/content/logos/2.water-board.md +6 -0
- package/templates/company/content/logos/3.brewery.md +6 -0
- package/templates/company/content/logos/4.treatment-works.md +6 -0
- package/templates/company/content/notices/1.municipal-water-forum.de.md +3 -0
- package/templates/company/content/notices/1.municipal-water-forum.md +4 -0
- package/templates/company/content/pages/1.about.de.md +19 -0
- package/templates/company/content/pages/1.about.md +20 -0
- package/templates/company/content/people/1.katrin-albers.de.md +4 -0
- package/templates/company/content/people/1.katrin-albers.md +7 -0
- package/templates/company/content/people/2.tobias-brandt.de.md +4 -0
- package/templates/company/content/people/2.tobias-brandt.md +7 -0
- package/templates/company/content/people/3.miriam-ostendorf.de.md +4 -0
- package/templates/company/content/people/3.miriam-ostendorf.md +7 -0
- package/templates/company/content/people/4.sabine-krueger.de.md +4 -0
- package/templates/company/content/people/4.sabine-krueger.md +7 -0
- package/templates/company/content/posts/apprentices-start.de.md +12 -0
- package/templates/company/content/posts/apprentices-start.md +14 -0
- package/templates/company/content/posts/saturday-service.de.md +12 -0
- package/templates/company/content/posts/saturday-service.md +14 -0
- package/templates/company/content/posts/treatment-works-pumps.de.md +20 -0
- package/templates/company/content/posts/treatment-works-pumps.md +23 -0
- package/templates/company/content/posts/ts-pumps-atex.de.md +12 -0
- package/templates/company/content/posts/ts-pumps-atex.md +14 -0
- package/templates/company/content/quotes/1.public-works.de.md +4 -0
- package/templates/company/content/quotes/1.public-works.md +5 -0
- package/templates/company/content/quotes/2.brewery.de.md +4 -0
- package/templates/company/content/quotes/2.brewery.md +5 -0
- package/templates/company/content/serviceLine.de.md +3 -0
- package/templates/company/content/serviceLine.md +5 -0
- package/templates/company/content/services/1.hk-centrifugal-pumps.de.md +31 -0
- package/templates/company/content/services/1.hk-centrifugal-pumps.md +35 -0
- package/templates/company/content/services/2.ts-submersible-pumps.de.md +26 -0
- package/templates/company/content/services/2.ts-submersible-pumps.md +30 -0
- package/templates/company/content/services/3.pumping-stations.de.md +29 -0
- package/templates/company/content/services/3.pumping-stations.md +33 -0
- package/templates/company/content/services/4.pump-check.de.md +25 -0
- package/templates/company/content/services/4.pump-check.md +30 -0
- package/templates/company/content/services/5.repair-and-overhaul.de.md +20 -0
- package/templates/company/content/services/5.repair-and-overhaul.md +23 -0
- package/templates/company/content/site.de.md +3 -0
- package/templates/company/content/site.md +12 -0
- package/templates/company/eslint.config.mjs +12 -0
- package/templates/company/eslint.tailwind.mjs +33 -0
- package/templates/company/ginko.config.ts +99 -0
- package/templates/company/gitignore +7 -0
- package/templates/company/i18n/blog/de.json +18 -0
- package/templates/company/i18n/blog/en.json +18 -0
- package/templates/company/i18n/de.json +60 -0
- package/templates/company/i18n/downloads/de.json +6 -0
- package/templates/company/i18n/downloads/en.json +6 -0
- package/templates/company/i18n/en.json +58 -0
- package/templates/company/i18n/events/de.json +20 -0
- package/templates/company/i18n/events/en.json +20 -0
- package/templates/company/i18n/jobs/de.json +35 -0
- package/templates/company/i18n/jobs/en.json +35 -0
- package/templates/company/i18n/people/de.json +6 -0
- package/templates/company/i18n/people/en.json +6 -0
- package/templates/company/i18n/services/de.json +20 -0
- package/templates/company/i18n/services/en.json +20 -0
- package/templates/company/i18n/site/de.json +39 -0
- package/templates/company/i18n/site/en.json +39 -0
- package/templates/company/modules/feature-messages.ts +19 -0
- package/templates/company/modules/feeds/index.ts +22 -0
- package/templates/company/modules/feeds/routes.ts +13 -0
- package/templates/company/modules/page-paths/index.ts +26 -0
- package/templates/company/modules/page-paths/paths.ts +48 -0
- package/templates/company/nuxt.config.ts +29 -0
- package/templates/company/package.json +64 -0
- package/templates/company/pnpm-workspace.yaml +6 -0
- package/templates/company/public/logos/customer-four.svg +6 -0
- package/templates/company/public/logos/customer-one.svg +5 -0
- package/templates/company/public/logos/customer-three.svg +5 -0
- package/templates/company/public/logos/customer-two.svg +4 -0
- package/templates/company/public/media/pipework.jpg +0 -0
- package/templates/company/public/media/process-pumps.jpg +0 -0
- package/templates/company/public/media/pump-check.jpg +0 -0
- package/templates/company/public/media/treatment-works.jpg +0 -0
- package/templates/company/public/media/works-hall.jpg +0 -0
- package/templates/company/public/sheets/hk-centrifugal-pumps.pdf +0 -0
- package/templates/company/public/sheets/pumping-stations.pdf +0 -0
- package/templates/company/public/sheets/ts-submersible-pumps.pdf +0 -0
- package/templates/company/server/middleware/news-feed.ts +37 -0
- package/templates/company/server/plugins/font-preload.ts +17 -0
- package/templates/company/site-url.ts +21 -0
- package/templates/company/tsconfig.json +9 -0
- package/templates/company.json +18 -0
- package/templates/docs/.env.example +9 -0
- package/templates/docs/.github/screenshots/home-light.png +0 -0
- package/templates/docs/.github/screenshots/page-dark.png +0 -0
- package/templates/docs/.github/workflows/ci.yml +27 -0
- package/templates/docs/DESIGN.md +77 -0
- package/templates/docs/LICENSE +21 -0
- package/templates/docs/MEDIA.md +14 -0
- package/templates/docs/NOTES.md +18 -0
- package/templates/docs/README.md +255 -0
- package/templates/docs/app/app.config.ts +26 -0
- package/templates/docs/app/assets/css/main.css +14 -0
- package/templates/docs/content/changelog/v1-6-0.de.md +13 -0
- package/templates/docs/content/changelog/v1-6-0.md +18 -0
- package/templates/docs/content/changelog/v2-0-0.de.md +14 -0
- package/templates/docs/content/changelog/v2-0-0.md +19 -0
- package/templates/docs/content/changelog/v2-1-0.de.md +9 -0
- package/templates/docs/content/changelog/v2-1-0.md +14 -0
- package/templates/docs/content/docs/1.introduction.de.md +32 -0
- package/templates/docs/content/docs/1.introduction.md +31 -0
- package/templates/docs/content/docs/10.incidents-and-checks.de.md +82 -0
- package/templates/docs/content/docs/10.incidents-and-checks.md +81 -0
- package/templates/docs/content/docs/11.error-codes.de.md +36 -0
- package/templates/docs/content/docs/11.error-codes.md +35 -0
- package/templates/docs/content/docs/2.getting-started.de.md +57 -0
- package/templates/docs/content/docs/2.getting-started.md +56 -0
- package/templates/docs/content/docs/3.authentication.de.md +55 -0
- package/templates/docs/content/docs/3.authentication.md +54 -0
- package/templates/docs/content/docs/4.pagination.de.md +45 -0
- package/templates/docs/content/docs/4.pagination.md +44 -0
- package/templates/docs/content/docs/5.errors-and-retries.de.md +69 -0
- package/templates/docs/content/docs/5.errors-and-retries.md +66 -0
- package/templates/docs/content/docs/6.webhooks.de.md +53 -0
- package/templates/docs/content/docs/6.webhooks.md +52 -0
- package/templates/docs/content/docs/7.upgrading-to-v2.md +73 -0
- package/templates/docs/content/docs/8.client.de.md +57 -0
- package/templates/docs/content/docs/8.client.md +56 -0
- package/templates/docs/content/docs/9.monitors.de.md +96 -0
- package/templates/docs/content/docs/9.monitors.md +95 -0
- package/templates/docs/content/home.de.md +47 -0
- package/templates/docs/content/home.md +54 -0
- package/templates/docs/eslint.config.mjs +7 -0
- package/templates/docs/ginko.config.ts +36 -0
- package/templates/docs/gitignore +7 -0
- package/templates/docs/i18n/de.json +5 -0
- package/templates/docs/i18n/en.json +5 -0
- package/templates/docs/nuxt.config.ts +18 -0
- package/templates/docs/package.json +42 -0
- package/templates/docs/pnpm-workspace.yaml +6 -0
- package/templates/docs/public/favicon.svg +1 -0
- package/templates/docs/public/logo-dark.svg +1 -0
- package/templates/docs/public/logo.svg +1 -0
- package/templates/docs/site-url.ts +21 -0
- package/templates/docs/tsconfig.json +9 -0
- package/templates/docs.json +7 -0
- package/templates/events/.env.example +8 -0
- package/templates/events/.github/screenshots/home-dark.png +0 -0
- package/templates/events/.github/screenshots/home-light.png +0 -0
- package/templates/events/.github/workflows/ci.yml +27 -0
- package/templates/events/DESIGN.md +197 -0
- package/templates/events/LICENSE +21 -0
- package/templates/events/MEDIA.md +32 -0
- package/templates/events/NOTES.md +13 -0
- package/templates/events/README.md +247 -0
- package/templates/events/app/app.config.ts +30 -0
- package/templates/events/app/app.vue +7 -0
- package/templates/events/app/assets/css/main.css +22 -0
- package/templates/events/app/assets/css/tokens.css +400 -0
- package/templates/events/app/bricks/logos-quotes.ts +47 -0
- package/templates/events/app/bricks/pages.ts +38 -0
- package/templates/events/app/components/InitialsAvatar.vue +18 -0
- package/templates/events/app/components/ProseBody.vue +13 -0
- package/templates/events/app/components/block/Cards.vue +54 -0
- package/templates/events/app/components/block/Cta.vue +26 -0
- package/templates/events/app/components/block/Empty.vue +26 -0
- package/templates/events/app/components/block/Faq.vue +19 -0
- package/templates/events/app/components/block/Features.vue +24 -0
- package/templates/events/app/components/block/Gallery.vue +81 -0
- package/templates/events/app/components/block/Hero.vue +47 -0
- package/templates/events/app/components/block/Logos.vue +22 -0
- package/templates/events/app/components/block/PageHeader.vue +21 -0
- package/templates/events/app/components/block/Quote.vue +19 -0
- package/templates/events/app/components/block/Section.vue +31 -0
- package/templates/events/app/components/event/Programme.vue +16 -0
- package/templates/events/app/components/event/Upcoming.vue +25 -0
- package/templates/events/app/components/pages/Top.vue +11 -0
- package/templates/events/app/components/session/NowNext.vue +54 -0
- package/templates/events/app/components/session/Programme.vue +40 -0
- package/templates/events/app/components/session/Row.vue +61 -0
- package/templates/events/app/components/session/Speakers.vue +28 -0
- package/templates/events/app/components/site/Contact.vue +38 -0
- package/templates/events/app/components/site/Footer.vue +81 -0
- package/templates/events/app/components/site/Header.vue +52 -0
- package/templates/events/app/components/site/LanguageSwitch.vue +34 -0
- package/templates/events/app/components/site/Lightbox.vue +62 -0
- package/templates/events/app/components/site/Logo.vue +17 -0
- package/templates/events/app/components/site/NavLink.vue +19 -0
- package/templates/events/app/components/site/NavSheet.vue +63 -0
- package/templates/events/app/components/site/Notice.vue +21 -0
- package/templates/events/app/components/site/SkipLink.vue +15 -0
- package/templates/events/app/components/site/ThemeToggle.vue +28 -0
- package/templates/events/app/components/ui/accordion/Accordion.vue +16 -0
- package/templates/events/app/components/ui/accordion/AccordionContent.vue +26 -0
- package/templates/events/app/components/ui/accordion/AccordionItem.vue +24 -0
- package/templates/events/app/components/ui/accordion/AccordionTrigger.vue +35 -0
- package/templates/events/app/components/ui/accordion/index.ts +5 -0
- package/templates/events/app/components/ui/button/Button.vue +30 -0
- package/templates/events/app/components/ui/button/index.ts +44 -0
- package/templates/events/app/components/ui/sheet/Sheet.vue +16 -0
- package/templates/events/app/components/ui/sheet/SheetClose.vue +13 -0
- package/templates/events/app/components/ui/sheet/SheetContent.vue +54 -0
- package/templates/events/app/components/ui/sheet/SheetDescription.vue +23 -0
- package/templates/events/app/components/ui/sheet/SheetOverlay.vue +22 -0
- package/templates/events/app/components/ui/sheet/SheetTitle.vue +23 -0
- package/templates/events/app/components/ui/sheet/SheetTrigger.vue +13 -0
- package/templates/events/app/components/ui/sheet/index.ts +7 -0
- package/templates/events/app/composables/useEvents.ts +182 -0
- package/templates/events/app/composables/usePageSeo.ts +50 -0
- package/templates/events/app/composables/useSessions.ts +111 -0
- package/templates/events/app/composables/useSiteAppConfig.ts +79 -0
- package/templates/events/app/error.vue +35 -0
- package/templates/events/app/layouts/default.vue +23 -0
- package/templates/events/app/lib/utils.ts +26 -0
- package/templates/events/app/pages/[...slug].vue +36 -0
- package/templates/events/app/pages/events/[slug].vue +106 -0
- package/templates/events/app/pages/events/index.vue +20 -0
- package/templates/events/app/pages/faq.vue +39 -0
- package/templates/events/app/pages/index.vue +134 -0
- package/templates/events/app/pages/legal/[slug].vue +46 -0
- package/templates/events/app/pages/programme.vue +42 -0
- package/templates/events/app/pages/speakers/[slug].vue +62 -0
- package/templates/events/app/pages/speakers/index.vue +31 -0
- package/templates/events/app/routes.ts +31 -0
- package/templates/events/app/utils/sessions.ts +64 -0
- package/templates/events/app/utils/telHref.ts +3 -0
- package/templates/events/components.json +21 -0
- package/templates/events/content/events/1.open-data-days.de.md +9 -0
- package/templates/events/content/events/1.open-data-days.md +19 -0
- package/templates/events/content/events/2.open-data-meetup.de.md +7 -0
- package/templates/events/content/events/2.open-data-meetup.md +14 -0
- package/templates/events/content/events/3.last-edition.de.md +5 -0
- package/templates/events/content/events/3.last-edition.md +12 -0
- package/templates/events/content/events/4.next-edition.de.md +5 -0
- package/templates/events/content/events/4.next-edition.md +13 -0
- package/templates/events/content/faq/1.getting-there.de.md +4 -0
- package/templates/events/content/faq/1.getting-there.md +4 -0
- package/templates/events/content/faq/2.accessibility.de.md +4 -0
- package/templates/events/content/faq/2.accessibility.md +4 -0
- package/templates/events/content/faq/3.tickets.de.md +4 -0
- package/templates/events/content/faq/3.tickets.md +4 -0
- package/templates/events/content/faq/4.food.de.md +4 -0
- package/templates/events/content/faq/4.food.md +4 -0
- package/templates/events/content/faq/5.code-of-conduct.de.md +4 -0
- package/templates/events/content/faq/5.code-of-conduct.md +4 -0
- package/templates/events/content/faq/6.language.de.md +4 -0
- package/templates/events/content/faq/6.language.md +4 -0
- package/templates/events/content/faq/7.recordings.de.md +4 -0
- package/templates/events/content/faq/7.recordings.md +4 -0
- package/templates/events/content/faq/8.ticket-transfer.de.md +4 -0
- package/templates/events/content/faq/8.ticket-transfer.md +4 -0
- package/templates/events/content/gallery.de.md +9 -0
- package/templates/events/content/gallery.md +12 -0
- package/templates/events/content/home.de.md +6 -0
- package/templates/events/content/home.md +7 -0
- package/templates/events/content/legal/1.privacy.de.md +19 -0
- package/templates/events/content/legal/1.privacy.md +20 -0
- package/templates/events/content/legal/2.terms.de.md +19 -0
- package/templates/events/content/legal/2.terms.md +20 -0
- package/templates/events/content/legal/3.imprint.de.md +19 -0
- package/templates/events/content/legal/3.imprint.md +20 -0
- package/templates/events/content/logos/1.kaltenegger-it.md +6 -0
- package/templates/events/content/logos/2.nordlicht-hosting.md +6 -0
- package/templates/events/content/logos/3.hallgarten-stiftung.md +6 -0
- package/templates/events/content/logos/4.kanalcafe.md +6 -0
- package/templates/events/content/notices/1.ticket-sales.de.md +3 -0
- package/templates/events/content/notices/1.ticket-sales.md +4 -0
- package/templates/events/content/pages/1.venue.de.md +36 -0
- package/templates/events/content/pages/1.venue.md +37 -0
- package/templates/events/content/pages/2.code-of-conduct.de.md +25 -0
- package/templates/events/content/pages/2.code-of-conduct.md +25 -0
- package/templates/events/content/pages/3.sponsoring.de.md +17 -0
- package/templates/events/content/pages/3.sponsoring.md +17 -0
- package/templates/events/content/people/1.lena-hofer.de.md +4 -0
- package/templates/events/content/people/1.lena-hofer.md +6 -0
- package/templates/events/content/people/2.tobias-wagner.de.md +4 -0
- package/templates/events/content/people/2.tobias-wagner.md +6 -0
- package/templates/events/content/people/3.amira-haddad.de.md +4 -0
- package/templates/events/content/people/3.amira-haddad.md +6 -0
- package/templates/events/content/people/4.jonas-leitner.de.md +4 -0
- package/templates/events/content/people/4.jonas-leitner.md +6 -0
- package/templates/events/content/people/5.sophie-brunner.de.md +4 -0
- package/templates/events/content/people/5.sophie-brunner.md +6 -0
- package/templates/events/content/people/6.david-okafor.de.md +4 -0
- package/templates/events/content/people/6.david-okafor.md +6 -0
- package/templates/events/content/people/7.katrin-moser.de.md +4 -0
- package/templates/events/content/people/7.katrin-moser.md +6 -0
- package/templates/events/content/people/8.nina-pichler.de.md +4 -0
- package/templates/events/content/people/8.nina-pichler.md +6 -0
- package/templates/events/content/people/9.felix-gruber.de.md +3 -0
- package/templates/events/content/people/9.felix-gruber.md +5 -0
- package/templates/events/content/sessions/balcony-sensors.de.md +4 -0
- package/templates/events/content/sessions/balcony-sensors.md +10 -0
- package/templates/events/content/sessions/budget-stories.de.md +4 -0
- package/templates/events/content/sessions/budget-stories.md +11 -0
- package/templates/events/content/sessions/closing.de.md +4 -0
- package/templates/events/content/sessions/closing.md +11 -0
- package/templates/events/content/sessions/doors-open.de.md +3 -0
- package/templates/events/content/sessions/doors-open.md +9 -0
- package/templates/events/content/sessions/honest-charts.de.md +4 -0
- package/templates/events/content/sessions/honest-charts.md +11 -0
- package/templates/events/content/sessions/keynote-city.de.md +4 -0
- package/templates/events/content/sessions/keynote-city.md +11 -0
- package/templates/events/content/sessions/lightning-talks.de.md +4 -0
- package/templates/events/content/sessions/lightning-talks.md +10 -0
- package/templates/events/content/sessions/lunch-1.de.md +3 -0
- package/templates/events/content/sessions/lunch-1.md +9 -0
- package/templates/events/content/sessions/lunch-2.de.md +3 -0
- package/templates/events/content/sessions/lunch-2.md +9 -0
- package/templates/events/content/sessions/next-edition-keynote.de.md +3 -0
- package/templates/events/content/sessions/next-edition-keynote.md +9 -0
- package/templates/events/content/sessions/open-data-schools.de.md +4 -0
- package/templates/events/content/sessions/open-data-schools.md +11 -0
- package/templates/events/content/sessions/open-statistics.de.md +4 -0
- package/templates/events/content/sessions/open-statistics.md +11 -0
- package/templates/events/content/sessions/panel-who-pays.de.md +4 -0
- package/templates/events/content/sessions/panel-who-pays.md +11 -0
- package/templates/events/content/sessions/privacy-line.de.md +4 -0
- package/templates/events/content/sessions/privacy-line.md +11 -0
- package/templates/events/content/sessions/readable-metadata.de.md +4 -0
- package/templates/events/content/sessions/readable-metadata.md +11 -0
- package/templates/events/content/sessions/transport-data.de.md +4 -0
- package/templates/events/content/sessions/transport-data.md +11 -0
- package/templates/events/content/sessions/welcome.de.md +3 -0
- package/templates/events/content/sessions/welcome.md +10 -0
- package/templates/events/content/sessions/workshop-charts.de.md +4 -0
- package/templates/events/content/sessions/workshop-charts.md +11 -0
- package/templates/events/content/sessions/workshop-clean-data.de.md +4 -0
- package/templates/events/content/sessions/workshop-clean-data.md +11 -0
- package/templates/events/content/sessions/workshop-portal.de.md +4 -0
- package/templates/events/content/sessions/workshop-portal.md +11 -0
- package/templates/events/content/site.md +10 -0
- package/templates/events/eslint.config.mjs +12 -0
- package/templates/events/eslint.tailwind.mjs +33 -0
- package/templates/events/ginko.config.ts +75 -0
- package/templates/events/gitignore +7 -0
- package/templates/events/i18n/de.json +37 -0
- package/templates/events/i18n/en.json +37 -0
- package/templates/events/i18n/events/de.json +20 -0
- package/templates/events/i18n/events/en.json +20 -0
- package/templates/events/i18n/faq/de.json +6 -0
- package/templates/events/i18n/faq/en.json +6 -0
- package/templates/events/i18n/gallery/de.json +8 -0
- package/templates/events/i18n/gallery/en.json +8 -0
- package/templates/events/i18n/sessions/de.json +33 -0
- package/templates/events/i18n/sessions/en.json +33 -0
- package/templates/events/i18n/site/de.json +39 -0
- package/templates/events/i18n/site/en.json +39 -0
- package/templates/events/modules/feature-messages.ts +19 -0
- package/templates/events/modules/feeds/index.ts +22 -0
- package/templates/events/modules/feeds/routes.ts +13 -0
- package/templates/events/modules/page-paths/index.ts +26 -0
- package/templates/events/modules/page-paths/paths.ts +48 -0
- package/templates/events/nuxt.config.ts +27 -0
- package/templates/events/package.json +61 -0
- package/templates/events/pnpm-workspace.yaml +6 -0
- package/templates/events/public/logos/hallgarten-stiftung.svg +4 -0
- package/templates/events/public/logos/kaltenegger-it.svg +4 -0
- package/templates/events/public/logos/kanalcafe.svg +4 -0
- package/templates/events/public/logos/nordlicht-hosting.svg +4 -0
- package/templates/events/public/media/coffee-break.jpg +0 -0
- package/templates/events/public/media/hero.jpg +0 -0
- package/templates/events/public/media/talk.jpg +0 -0
- package/templates/events/public/media/venue.jpg +0 -0
- package/templates/events/public/media/workshop-tables.jpg +0 -0
- package/templates/events/server/plugins/font-preload.ts +17 -0
- package/templates/events/site-url.ts +21 -0
- package/templates/events/tsconfig.json +9 -0
- package/templates/events.json +18 -0
- package/templates/local-business/.env.example +8 -0
- package/templates/local-business/.github/screenshots/home-dark.png +0 -0
- package/templates/local-business/.github/screenshots/home-light.png +0 -0
- package/templates/local-business/.github/workflows/ci.yml +27 -0
- package/templates/local-business/DESIGN.md +197 -0
- package/templates/local-business/LICENSE +21 -0
- package/templates/local-business/MEDIA.md +27 -0
- package/templates/local-business/NOTES.md +31 -0
- package/templates/local-business/README.md +256 -0
- package/templates/local-business/app/app.config.ts +32 -0
- package/templates/local-business/app/app.vue +7 -0
- package/templates/local-business/app/assets/css/main.css +18 -0
- package/templates/local-business/app/assets/css/tokens.css +400 -0
- package/templates/local-business/app/bricks/pages.ts +38 -0
- package/templates/local-business/app/bricks/services.ts +64 -0
- package/templates/local-business/app/components/InitialsAvatar.vue +18 -0
- package/templates/local-business/app/components/ProseBody.vue +13 -0
- package/templates/local-business/app/components/block/Cards.vue +54 -0
- package/templates/local-business/app/components/block/Cta.vue +26 -0
- package/templates/local-business/app/components/block/Empty.vue +26 -0
- package/templates/local-business/app/components/block/Faq.vue +19 -0
- package/templates/local-business/app/components/block/Features.vue +24 -0
- package/templates/local-business/app/components/block/Gallery.vue +81 -0
- package/templates/local-business/app/components/block/Hero.vue +47 -0
- package/templates/local-business/app/components/block/PageHeader.vue +21 -0
- package/templates/local-business/app/components/block/Section.vue +31 -0
- package/templates/local-business/app/components/hours/Table.vue +119 -0
- package/templates/local-business/app/components/hours/Today.vue +55 -0
- package/templates/local-business/app/components/people/List.vue +41 -0
- package/templates/local-business/app/components/services/Actions.vue +18 -0
- package/templates/local-business/app/components/site/Contact.vue +38 -0
- package/templates/local-business/app/components/site/Footer.vue +81 -0
- package/templates/local-business/app/components/site/FooterStatus.vue +9 -0
- package/templates/local-business/app/components/site/Header.vue +52 -0
- package/templates/local-business/app/components/site/LanguageSwitch.vue +34 -0
- package/templates/local-business/app/components/site/Lightbox.vue +62 -0
- package/templates/local-business/app/components/site/Logo.vue +17 -0
- package/templates/local-business/app/components/site/NavLink.vue +19 -0
- package/templates/local-business/app/components/site/NavSheet.vue +63 -0
- package/templates/local-business/app/components/site/Notice.vue +21 -0
- package/templates/local-business/app/components/site/SkipLink.vue +15 -0
- package/templates/local-business/app/components/site/ThemeToggle.vue +28 -0
- package/templates/local-business/app/components/ui/accordion/Accordion.vue +16 -0
- package/templates/local-business/app/components/ui/accordion/AccordionContent.vue +26 -0
- package/templates/local-business/app/components/ui/accordion/AccordionItem.vue +24 -0
- package/templates/local-business/app/components/ui/accordion/AccordionTrigger.vue +35 -0
- package/templates/local-business/app/components/ui/accordion/index.ts +5 -0
- package/templates/local-business/app/components/ui/button/Button.vue +30 -0
- package/templates/local-business/app/components/ui/button/index.ts +44 -0
- package/templates/local-business/app/components/ui/sheet/Sheet.vue +16 -0
- package/templates/local-business/app/components/ui/sheet/SheetClose.vue +13 -0
- package/templates/local-business/app/components/ui/sheet/SheetContent.vue +54 -0
- package/templates/local-business/app/components/ui/sheet/SheetDescription.vue +23 -0
- package/templates/local-business/app/components/ui/sheet/SheetOverlay.vue +22 -0
- package/templates/local-business/app/components/ui/sheet/SheetTitle.vue +23 -0
- package/templates/local-business/app/components/ui/sheet/SheetTrigger.vue +13 -0
- package/templates/local-business/app/components/ui/sheet/index.ts +7 -0
- package/templates/local-business/app/components/visit/Book.vue +46 -0
- package/templates/local-business/app/composables/useHours.ts +81 -0
- package/templates/local-business/app/composables/usePageSeo.ts +50 -0
- package/templates/local-business/app/composables/useServices.ts +93 -0
- package/templates/local-business/app/composables/useSiteAppConfig.ts +79 -0
- package/templates/local-business/app/composables/useVisit.ts +19 -0
- package/templates/local-business/app/error.vue +35 -0
- package/templates/local-business/app/layouts/default.vue +23 -0
- package/templates/local-business/app/lib/utils.ts +26 -0
- package/templates/local-business/app/pages/[...slug].vue +36 -0
- package/templates/local-business/app/pages/contact.vue +62 -0
- package/templates/local-business/app/pages/faq.vue +39 -0
- package/templates/local-business/app/pages/index.vue +114 -0
- package/templates/local-business/app/pages/legal/[slug].vue +46 -0
- package/templates/local-business/app/pages/services/[slug].vue +90 -0
- package/templates/local-business/app/pages/services/index.vue +18 -0
- package/templates/local-business/app/pages/team.vue +40 -0
- package/templates/local-business/app/routes.ts +31 -0
- package/templates/local-business/app/utils/hours.ts +58 -0
- package/templates/local-business/app/utils/telHref.ts +3 -0
- package/templates/local-business/components.json +21 -0
- package/templates/local-business/content/faq/1.prescription.de.md +4 -0
- package/templates/local-business/content/faq/1.prescription.md +4 -0
- package/templates/local-business/content/faq/2.insurance.de.md +4 -0
- package/templates/local-business/content/faq/2.insurance.md +4 -0
- package/templates/local-business/content/faq/3.bring.de.md +4 -0
- package/templates/local-business/content/faq/3.bring.md +4 -0
- package/templates/local-business/content/faq/4.cancel.de.md +4 -0
- package/templates/local-business/content/faq/4.cancel.md +4 -0
- package/templates/local-business/content/faq/5.sessions.de.md +4 -0
- package/templates/local-business/content/faq/5.sessions.md +4 -0
- package/templates/local-business/content/faq/6.payment.de.md +4 -0
- package/templates/local-business/content/faq/6.payment.md +4 -0
- package/templates/local-business/content/gallery.de.md +7 -0
- package/templates/local-business/content/gallery.md +9 -0
- package/templates/local-business/content/home.de.md +5 -0
- package/templates/local-business/content/home.md +7 -0
- package/templates/local-business/content/hourPlans/1.summer-hours.de.md +3 -0
- package/templates/local-business/content/hourPlans/1.summer-hours.md +31 -0
- package/templates/local-business/content/hours.de.md +5 -0
- package/templates/local-business/content/hours.md +40 -0
- package/templates/local-business/content/legal/1.privacy.de.md +39 -0
- package/templates/local-business/content/legal/1.privacy.md +38 -0
- package/templates/local-business/content/legal/2.terms.de.md +22 -0
- package/templates/local-business/content/legal/2.terms.md +22 -0
- package/templates/local-business/content/legal/3.imprint.de.md +17 -0
- package/templates/local-business/content/legal/3.imprint.md +17 -0
- package/templates/local-business/content/notices/1.courtyard-works.de.md +3 -0
- package/templates/local-business/content/notices/1.courtyard-works.md +4 -0
- package/templates/local-business/content/pages/1.about.de.md +23 -0
- package/templates/local-business/content/pages/1.about.md +24 -0
- package/templates/local-business/content/people/1.anna-hofer.de.md +4 -0
- package/templates/local-business/content/people/1.anna-hofer.md +5 -0
- package/templates/local-business/content/people/2.lukas-brandstaetter.de.md +4 -0
- package/templates/local-business/content/people/2.lukas-brandstaetter.md +5 -0
- package/templates/local-business/content/people/3.mira-kovac.de.md +4 -0
- package/templates/local-business/content/people/3.mira-kovac.md +5 -0
- package/templates/local-business/content/people/4.elisabeth-gruber.de.md +4 -0
- package/templates/local-business/content/people/4.elisabeth-gruber.md +5 -0
- package/templates/local-business/content/services/1.physiotherapy.de.md +22 -0
- package/templates/local-business/content/services/1.physiotherapy.md +25 -0
- package/templates/local-business/content/services/2.manual-therapy.de.md +11 -0
- package/templates/local-business/content/services/2.manual-therapy.md +15 -0
- package/templates/local-business/content/services/3.sports-physiotherapy.de.md +18 -0
- package/templates/local-business/content/services/3.sports-physiotherapy.md +22 -0
- package/templates/local-business/content/services/4.lymphatic-drainage.de.md +18 -0
- package/templates/local-business/content/services/4.lymphatic-drainage.md +22 -0
- package/templates/local-business/content/services/5.massage.de.md +11 -0
- package/templates/local-business/content/services/5.massage.md +14 -0
- package/templates/local-business/content/services/6.home-visits.de.md +11 -0
- package/templates/local-business/content/services/6.home-visits.md +12 -0
- package/templates/local-business/content/site.de.md +3 -0
- package/templates/local-business/content/site.md +11 -0
- package/templates/local-business/content/visit.de.md +6 -0
- package/templates/local-business/content/visit.md +7 -0
- package/templates/local-business/eslint.config.mjs +12 -0
- package/templates/local-business/eslint.tailwind.mjs +33 -0
- package/templates/local-business/ginko.config.ts +98 -0
- package/templates/local-business/gitignore +7 -0
- package/templates/local-business/i18n/de.json +49 -0
- package/templates/local-business/i18n/en.json +49 -0
- package/templates/local-business/i18n/faq/de.json +6 -0
- package/templates/local-business/i18n/faq/en.json +6 -0
- package/templates/local-business/i18n/gallery/de.json +8 -0
- package/templates/local-business/i18n/gallery/en.json +8 -0
- package/templates/local-business/i18n/hours/de.json +27 -0
- package/templates/local-business/i18n/hours/en.json +27 -0
- package/templates/local-business/i18n/people/de.json +6 -0
- package/templates/local-business/i18n/people/en.json +6 -0
- package/templates/local-business/i18n/services/de.json +20 -0
- package/templates/local-business/i18n/services/en.json +20 -0
- package/templates/local-business/i18n/site/de.json +39 -0
- package/templates/local-business/i18n/site/en.json +39 -0
- package/templates/local-business/modules/feature-messages.ts +19 -0
- package/templates/local-business/modules/feeds/index.ts +22 -0
- package/templates/local-business/modules/feeds/routes.ts +13 -0
- package/templates/local-business/modules/page-paths/index.ts +26 -0
- package/templates/local-business/modules/page-paths/paths.ts +48 -0
- package/templates/local-business/nuxt.config.ts +29 -0
- package/templates/local-business/package.json +62 -0
- package/templates/local-business/pnpm-workspace.yaml +6 -0
- package/templates/local-business/public/media/massage.jpg +0 -0
- package/templates/local-business/public/media/treatment-room.jpg +0 -0
- package/templates/local-business/server/plugins/font-preload.ts +17 -0
- package/templates/local-business/site-url.ts +21 -0
- package/templates/local-business/tsconfig.json +9 -0
- package/templates/local-business.json +11 -0
- package/templates/nonprofit/.env.example +8 -0
- package/templates/nonprofit/.github/screenshots/home-dark.png +0 -0
- package/templates/nonprofit/.github/screenshots/home-light.png +0 -0
- package/templates/nonprofit/.github/workflows/ci.yml +27 -0
- package/templates/nonprofit/DESIGN.md +197 -0
- package/templates/nonprofit/LICENSE +21 -0
- package/templates/nonprofit/MEDIA.md +34 -0
- package/templates/nonprofit/NOTES.md +18 -0
- package/templates/nonprofit/README.md +227 -0
- package/templates/nonprofit/app/app.config.ts +34 -0
- package/templates/nonprofit/app/app.vue +7 -0
- package/templates/nonprofit/app/assets/css/main.css +35 -0
- package/templates/nonprofit/app/assets/css/tokens.css +400 -0
- package/templates/nonprofit/app/bricks/logos-quotes.ts +47 -0
- package/templates/nonprofit/app/bricks/pages.ts +38 -0
- package/templates/nonprofit/app/bricks/projects.ts +114 -0
- package/templates/nonprofit/app/components/InitialsAvatar.vue +18 -0
- package/templates/nonprofit/app/components/ProseBody.vue +13 -0
- package/templates/nonprofit/app/components/block/Cards.vue +54 -0
- package/templates/nonprofit/app/components/block/Cta.vue +26 -0
- package/templates/nonprofit/app/components/block/Empty.vue +26 -0
- package/templates/nonprofit/app/components/block/Features.vue +24 -0
- package/templates/nonprofit/app/components/block/Hero.vue +47 -0
- package/templates/nonprofit/app/components/block/Logos.vue +22 -0
- package/templates/nonprofit/app/components/block/PageHeader.vue +21 -0
- package/templates/nonprofit/app/components/block/Quote.vue +19 -0
- package/templates/nonprofit/app/components/block/Section.vue +31 -0
- package/templates/nonprofit/app/components/blog/Byline.vue +22 -0
- package/templates/nonprofit/app/components/blog/PostList.vue +33 -0
- package/templates/nonprofit/app/components/blog/TagList.vue +17 -0
- package/templates/nonprofit/app/components/downloads/FileButton.vue +21 -0
- package/templates/nonprofit/app/components/downloads/List.vue +37 -0
- package/templates/nonprofit/app/components/event/Next.vue +24 -0
- package/templates/nonprofit/app/components/event/Upcoming.vue +25 -0
- package/templates/nonprofit/app/components/pages/Top.vue +19 -0
- package/templates/nonprofit/app/components/people/List.vue +41 -0
- package/templates/nonprofit/app/components/people/TeamContact.vue +7 -0
- package/templates/nonprofit/app/components/site/Contact.vue +38 -0
- package/templates/nonprofit/app/components/site/Footer.vue +81 -0
- package/templates/nonprofit/app/components/site/Header.vue +52 -0
- package/templates/nonprofit/app/components/site/LanguageSwitch.vue +34 -0
- package/templates/nonprofit/app/components/site/Logo.vue +17 -0
- package/templates/nonprofit/app/components/site/NavLink.vue +19 -0
- package/templates/nonprofit/app/components/site/NavSheet.vue +63 -0
- package/templates/nonprofit/app/components/site/Notice.vue +21 -0
- package/templates/nonprofit/app/components/site/SkipLink.vue +15 -0
- package/templates/nonprofit/app/components/site/ThemeToggle.vue +28 -0
- package/templates/nonprofit/app/components/ui/button/Button.vue +30 -0
- package/templates/nonprofit/app/components/ui/button/index.ts +44 -0
- package/templates/nonprofit/app/components/ui/sheet/Sheet.vue +16 -0
- package/templates/nonprofit/app/components/ui/sheet/SheetClose.vue +13 -0
- package/templates/nonprofit/app/components/ui/sheet/SheetContent.vue +54 -0
- package/templates/nonprofit/app/components/ui/sheet/SheetDescription.vue +23 -0
- package/templates/nonprofit/app/components/ui/sheet/SheetOverlay.vue +22 -0
- package/templates/nonprofit/app/components/ui/sheet/SheetTitle.vue +23 -0
- package/templates/nonprofit/app/components/ui/sheet/SheetTrigger.vue +13 -0
- package/templates/nonprofit/app/components/ui/sheet/index.ts +7 -0
- package/templates/nonprofit/app/composables/useBlog.ts +103 -0
- package/templates/nonprofit/app/composables/useDownloads.ts +54 -0
- package/templates/nonprofit/app/composables/useEvents.ts +182 -0
- package/templates/nonprofit/app/composables/usePageSeo.ts +50 -0
- package/templates/nonprofit/app/composables/useProjects.ts +31 -0
- package/templates/nonprofit/app/composables/useSiteAppConfig.ts +79 -0
- package/templates/nonprofit/app/error.vue +35 -0
- package/templates/nonprofit/app/layouts/default.vue +23 -0
- package/templates/nonprofit/app/lib/utils.ts +26 -0
- package/templates/nonprofit/app/pages/[...slug].vue +36 -0
- package/templates/nonprofit/app/pages/downloads.vue +20 -0
- package/templates/nonprofit/app/pages/events/[slug].vue +106 -0
- package/templates/nonprofit/app/pages/events/index.vue +20 -0
- package/templates/nonprofit/app/pages/index.vue +64 -0
- package/templates/nonprofit/app/pages/legal/[slug].vue +46 -0
- package/templates/nonprofit/app/pages/news/[slug].vue +94 -0
- package/templates/nonprofit/app/pages/news/index.vue +54 -0
- package/templates/nonprofit/app/pages/news/tags/[tag].vue +41 -0
- package/templates/nonprofit/app/pages/projects/[slug].vue +49 -0
- package/templates/nonprofit/app/pages/projects/index.vue +24 -0
- package/templates/nonprofit/app/pages/team.vue +40 -0
- package/templates/nonprofit/app/routes.ts +32 -0
- package/templates/nonprofit/app/utils/telHref.ts +3 -0
- package/templates/nonprofit/components.json +21 -0
- package/templates/nonprofit/content/downloads/annual-report.ar.md +4 -0
- package/templates/nonprofit/content/downloads/annual-report.de.md +4 -0
- package/templates/nonprofit/content/downloads/annual-report.fr.md +4 -0
- package/templates/nonprofit/content/downloads/annual-report.md +7 -0
- package/templates/nonprofit/content/events/1.winter-clean-up.ar.md +9 -0
- package/templates/nonprofit/content/events/1.winter-clean-up.de.md +9 -0
- package/templates/nonprofit/content/events/1.winter-clean-up.fr.md +9 -0
- package/templates/nonprofit/content/events/1.winter-clean-up.md +14 -0
- package/templates/nonprofit/content/events/2.members-meeting.ar.md +9 -0
- package/templates/nonprofit/content/events/2.members-meeting.de.md +9 -0
- package/templates/nonprofit/content/events/2.members-meeting.fr.md +9 -0
- package/templates/nonprofit/content/events/2.members-meeting.md +15 -0
- package/templates/nonprofit/content/events/3.spring-clean-up.ar.md +9 -0
- package/templates/nonprofit/content/events/3.spring-clean-up.de.md +9 -0
- package/templates/nonprofit/content/events/3.spring-clean-up.fr.md +9 -0
- package/templates/nonprofit/content/events/3.spring-clean-up.md +14 -0
- package/templates/nonprofit/content/home.ar.md +6 -0
- package/templates/nonprofit/content/home.de.md +6 -0
- package/templates/nonprofit/content/home.fr.md +6 -0
- package/templates/nonprofit/content/home.md +7 -0
- package/templates/nonprofit/content/legal/1.privacy.ar.md +18 -0
- package/templates/nonprofit/content/legal/1.privacy.de.md +18 -0
- package/templates/nonprofit/content/legal/1.privacy.fr.md +18 -0
- package/templates/nonprofit/content/legal/1.privacy.md +20 -0
- package/templates/nonprofit/content/legal/2.terms.ar.md +17 -0
- package/templates/nonprofit/content/legal/2.terms.de.md +17 -0
- package/templates/nonprofit/content/legal/2.terms.fr.md +17 -0
- package/templates/nonprofit/content/legal/2.terms.md +19 -0
- package/templates/nonprofit/content/legal/3.imprint.ar.md +16 -0
- package/templates/nonprofit/content/legal/3.imprint.de.md +16 -0
- package/templates/nonprofit/content/legal/3.imprint.fr.md +16 -0
- package/templates/nonprofit/content/legal/3.imprint.md +18 -0
- package/templates/nonprofit/content/logos/1.partner-one.md +6 -0
- package/templates/nonprofit/content/logos/2.partner-two.md +6 -0
- package/templates/nonprofit/content/logos/3.partner-three.md +6 -0
- package/templates/nonprofit/content/notices/1.annual-report-online.ar.md +3 -0
- package/templates/nonprofit/content/notices/1.annual-report-online.de.md +3 -0
- package/templates/nonprofit/content/notices/1.annual-report-online.fr.md +3 -0
- package/templates/nonprofit/content/notices/1.annual-report-online.md +4 -0
- package/templates/nonprofit/content/pages/1.about.ar.md +21 -0
- package/templates/nonprofit/content/pages/1.about.de.md +21 -0
- package/templates/nonprofit/content/pages/1.about.fr.md +21 -0
- package/templates/nonprofit/content/pages/1.about.md +21 -0
- package/templates/nonprofit/content/pages/2.get-involved.ar.md +19 -0
- package/templates/nonprofit/content/pages/2.get-involved.de.md +19 -0
- package/templates/nonprofit/content/pages/2.get-involved.fr.md +19 -0
- package/templates/nonprofit/content/pages/2.get-involved.md +20 -0
- package/templates/nonprofit/content/pages/3.donate.ar.md +26 -0
- package/templates/nonprofit/content/pages/3.donate.de.md +26 -0
- package/templates/nonprofit/content/pages/3.donate.fr.md +26 -0
- package/templates/nonprofit/content/pages/3.donate.md +27 -0
- package/templates/nonprofit/content/people/1.jana-becker.ar.md +4 -0
- package/templates/nonprofit/content/people/1.jana-becker.de.md +4 -0
- package/templates/nonprofit/content/people/1.jana-becker.fr.md +4 -0
- package/templates/nonprofit/content/people/1.jana-becker.md +5 -0
- package/templates/nonprofit/content/people/2.yusuf-demir.ar.md +4 -0
- package/templates/nonprofit/content/people/2.yusuf-demir.de.md +4 -0
- package/templates/nonprofit/content/people/2.yusuf-demir.fr.md +4 -0
- package/templates/nonprofit/content/people/2.yusuf-demir.md +5 -0
- package/templates/nonprofit/content/people/3.claire-martin.ar.md +4 -0
- package/templates/nonprofit/content/people/3.claire-martin.de.md +4 -0
- package/templates/nonprofit/content/people/3.claire-martin.fr.md +4 -0
- package/templates/nonprofit/content/people/3.claire-martin.md +5 -0
- package/templates/nonprofit/content/people/4.lukas-hoffmann.ar.md +4 -0
- package/templates/nonprofit/content/people/4.lukas-hoffmann.de.md +4 -0
- package/templates/nonprofit/content/people/4.lukas-hoffmann.fr.md +4 -0
- package/templates/nonprofit/content/people/4.lukas-hoffmann.md +6 -0
- package/templates/nonprofit/content/posts/a-home-for-our-tools.ar.md +10 -0
- package/templates/nonprofit/content/posts/a-home-for-our-tools.de.md +10 -0
- package/templates/nonprofit/content/posts/a-home-for-our-tools.fr.md +10 -0
- package/templates/nonprofit/content/posts/a-home-for-our-tools.md +12 -0
- package/templates/nonprofit/content/posts/autumn-clean-up.ar.md +20 -0
- package/templates/nonprofit/content/posts/autumn-clean-up.de.md +20 -0
- package/templates/nonprofit/content/posts/autumn-clean-up.fr.md +20 -0
- package/templates/nonprofit/content/posts/autumn-clean-up.md +23 -0
- package/templates/nonprofit/content/posts/hedge-planting-plan.md +12 -0
- package/templates/nonprofit/content/posts/water-tests-with-schools.ar.md +16 -0
- package/templates/nonprofit/content/posts/water-tests-with-schools.de.md +16 -0
- package/templates/nonprofit/content/posts/water-tests-with-schools.fr.md +16 -0
- package/templates/nonprofit/content/posts/water-tests-with-schools.md +18 -0
- package/templates/nonprofit/content/posts/winter-clean-up.ar.md +14 -0
- package/templates/nonprofit/content/posts/winter-clean-up.de.md +14 -0
- package/templates/nonprofit/content/posts/winter-clean-up.fr.md +14 -0
- package/templates/nonprofit/content/posts/winter-clean-up.md +16 -0
- package/templates/nonprofit/content/projects/1.clean-banks.ar.md +9 -0
- package/templates/nonprofit/content/projects/1.clean-banks.de.md +9 -0
- package/templates/nonprofit/content/projects/1.clean-banks.fr.md +9 -0
- package/templates/nonprofit/content/projects/1.clean-banks.md +10 -0
- package/templates/nonprofit/content/projects/2.water-tests.ar.md +9 -0
- package/templates/nonprofit/content/projects/2.water-tests.de.md +9 -0
- package/templates/nonprofit/content/projects/2.water-tests.fr.md +9 -0
- package/templates/nonprofit/content/projects/2.water-tests.md +10 -0
- package/templates/nonprofit/content/projects/3.hedge-campaign.ar.md +10 -0
- package/templates/nonprofit/content/projects/3.hedge-campaign.de.md +10 -0
- package/templates/nonprofit/content/projects/3.hedge-campaign.fr.md +10 -0
- package/templates/nonprofit/content/projects/3.hedge-campaign.md +13 -0
- package/templates/nonprofit/content/projects/4.gloves-appeal.md +9 -0
- package/templates/nonprofit/content/quotes/1.volunteer.ar.md +4 -0
- package/templates/nonprofit/content/quotes/1.volunteer.de.md +4 -0
- package/templates/nonprofit/content/quotes/1.volunteer.fr.md +4 -0
- package/templates/nonprofit/content/quotes/1.volunteer.md +5 -0
- package/templates/nonprofit/content/quotes/2.teacher.ar.md +4 -0
- package/templates/nonprofit/content/quotes/2.teacher.de.md +4 -0
- package/templates/nonprofit/content/quotes/2.teacher.fr.md +4 -0
- package/templates/nonprofit/content/quotes/2.teacher.md +5 -0
- package/templates/nonprofit/content/site.ar.md +3 -0
- package/templates/nonprofit/content/site.de.md +3 -0
- package/templates/nonprofit/content/site.fr.md +3 -0
- package/templates/nonprofit/content/site.md +11 -0
- package/templates/nonprofit/eslint.config.mjs +12 -0
- package/templates/nonprofit/eslint.tailwind.mjs +33 -0
- package/templates/nonprofit/ginko.config.ts +77 -0
- package/templates/nonprofit/gitignore +7 -0
- package/templates/nonprofit/i18n/ar.json +37 -0
- package/templates/nonprofit/i18n/blog/ar.json +18 -0
- package/templates/nonprofit/i18n/blog/de.json +18 -0
- package/templates/nonprofit/i18n/blog/en.json +18 -0
- package/templates/nonprofit/i18n/blog/fr.json +18 -0
- package/templates/nonprofit/i18n/de.json +37 -0
- package/templates/nonprofit/i18n/downloads/ar.json +6 -0
- package/templates/nonprofit/i18n/downloads/de.json +6 -0
- package/templates/nonprofit/i18n/downloads/en.json +6 -0
- package/templates/nonprofit/i18n/downloads/fr.json +6 -0
- package/templates/nonprofit/i18n/en.json +37 -0
- package/templates/nonprofit/i18n/events/ar.json +20 -0
- package/templates/nonprofit/i18n/events/de.json +20 -0
- package/templates/nonprofit/i18n/events/en.json +20 -0
- package/templates/nonprofit/i18n/events/fr.json +20 -0
- package/templates/nonprofit/i18n/fr.json +37 -0
- package/templates/nonprofit/i18n/people/ar.json +6 -0
- package/templates/nonprofit/i18n/people/de.json +6 -0
- package/templates/nonprofit/i18n/people/en.json +6 -0
- package/templates/nonprofit/i18n/people/fr.json +6 -0
- package/templates/nonprofit/i18n/projects/ar.json +7 -0
- package/templates/nonprofit/i18n/projects/de.json +7 -0
- package/templates/nonprofit/i18n/projects/en.json +7 -0
- package/templates/nonprofit/i18n/projects/fr.json +7 -0
- package/templates/nonprofit/i18n/site/ar.json +39 -0
- package/templates/nonprofit/i18n/site/de.json +39 -0
- package/templates/nonprofit/i18n/site/en.json +39 -0
- package/templates/nonprofit/i18n/site/fr.json +39 -0
- package/templates/nonprofit/modules/feature-messages.ts +19 -0
- package/templates/nonprofit/modules/feeds/index.ts +22 -0
- package/templates/nonprofit/modules/feeds/routes.ts +13 -0
- package/templates/nonprofit/modules/page-paths/index.ts +26 -0
- package/templates/nonprofit/modules/page-paths/paths.ts +48 -0
- package/templates/nonprofit/nuxt.config.ts +36 -0
- package/templates/nonprofit/package.json +63 -0
- package/templates/nonprofit/pnpm-workspace.yaml +6 -0
- package/templates/nonprofit/public/files/annual-report-2025.pdf +0 -0
- package/templates/nonprofit/public/logos/partner-one.svg +5 -0
- package/templates/nonprofit/public/logos/partner-three.svg +5 -0
- package/templates/nonprofit/public/logos/partner-two.svg +4 -0
- package/templates/nonprofit/public/media/bank-clean-up.jpg +0 -0
- package/templates/nonprofit/public/media/forest-stream.jpg +0 -0
- package/templates/nonprofit/public/media/green-bank.jpg +0 -0
- package/templates/nonprofit/public/media/planting.jpg +0 -0
- package/templates/nonprofit/public/media/river-town.jpg +0 -0
- package/templates/nonprofit/public/media/workshop.jpg +0 -0
- package/templates/nonprofit/server/middleware/news-feed.ts +37 -0
- package/templates/nonprofit/server/plugins/font-preload.ts +17 -0
- package/templates/nonprofit/site-url.ts +21 -0
- package/templates/nonprofit/tsconfig.json +9 -0
- package/templates/nonprofit.json +20 -0
- package/templates/portfolio/.env.example +8 -0
- package/templates/portfolio/.github/screenshots/home-dark.png +0 -0
- package/templates/portfolio/.github/screenshots/home-light.png +0 -0
- package/templates/portfolio/.github/workflows/ci.yml +27 -0
- package/templates/portfolio/DESIGN.md +197 -0
- package/templates/portfolio/LICENSE +21 -0
- package/templates/portfolio/MEDIA.md +35 -0
- package/templates/portfolio/NOTES.md +18 -0
- package/templates/portfolio/README.md +267 -0
- package/templates/portfolio/app/app.config.ts +27 -0
- package/templates/portfolio/app/app.vue +7 -0
- package/templates/portfolio/app/assets/css/main.css +56 -0
- package/templates/portfolio/app/assets/css/tokens.css +400 -0
- package/templates/portfolio/app/bricks/pages.ts +38 -0
- package/templates/portfolio/app/bricks/projects.ts +114 -0
- package/templates/portfolio/app/components/InitialsAvatar.vue +18 -0
- package/templates/portfolio/app/components/ProseBody.vue +13 -0
- package/templates/portfolio/app/components/StartProject.vue +15 -0
- package/templates/portfolio/app/components/block/Cards.vue +54 -0
- package/templates/portfolio/app/components/block/Cta.vue +26 -0
- package/templates/portfolio/app/components/block/Empty.vue +26 -0
- package/templates/portfolio/app/components/block/Features.vue +24 -0
- package/templates/portfolio/app/components/block/Gallery.vue +81 -0
- package/templates/portfolio/app/components/block/Hero.vue +47 -0
- package/templates/portfolio/app/components/block/PageHeader.vue +21 -0
- package/templates/portfolio/app/components/block/Section.vue +31 -0
- package/templates/portfolio/app/components/blog/Byline.vue +22 -0
- package/templates/portfolio/app/components/blog/PostList.vue +33 -0
- package/templates/portfolio/app/components/blog/TagList.vue +17 -0
- package/templates/portfolio/app/components/pages/Top.vue +12 -0
- package/templates/portfolio/app/components/people/List.vue +41 -0
- package/templates/portfolio/app/components/people/TeamContact.vue +9 -0
- package/templates/portfolio/app/components/projects/Body.vue +62 -0
- package/templates/portfolio/app/components/projects/List.vue +38 -0
- package/templates/portfolio/app/components/site/Contact.vue +38 -0
- package/templates/portfolio/app/components/site/Footer.vue +81 -0
- package/templates/portfolio/app/components/site/Header.vue +52 -0
- package/templates/portfolio/app/components/site/LanguageSwitch.vue +34 -0
- package/templates/portfolio/app/components/site/Lightbox.vue +62 -0
- package/templates/portfolio/app/components/site/Logo.vue +17 -0
- package/templates/portfolio/app/components/site/NavLink.vue +19 -0
- package/templates/portfolio/app/components/site/NavSheet.vue +63 -0
- package/templates/portfolio/app/components/site/Notice.vue +21 -0
- package/templates/portfolio/app/components/site/SkipLink.vue +15 -0
- package/templates/portfolio/app/components/site/ThemeToggle.vue +28 -0
- package/templates/portfolio/app/components/ui/button/Button.vue +30 -0
- package/templates/portfolio/app/components/ui/button/index.ts +44 -0
- package/templates/portfolio/app/components/ui/sheet/Sheet.vue +16 -0
- package/templates/portfolio/app/components/ui/sheet/SheetClose.vue +13 -0
- package/templates/portfolio/app/components/ui/sheet/SheetContent.vue +54 -0
- package/templates/portfolio/app/components/ui/sheet/SheetDescription.vue +23 -0
- package/templates/portfolio/app/components/ui/sheet/SheetOverlay.vue +22 -0
- package/templates/portfolio/app/components/ui/sheet/SheetTitle.vue +23 -0
- package/templates/portfolio/app/components/ui/sheet/SheetTrigger.vue +13 -0
- package/templates/portfolio/app/components/ui/sheet/index.ts +7 -0
- package/templates/portfolio/app/composables/useBlog.ts +103 -0
- package/templates/portfolio/app/composables/usePageSeo.ts +50 -0
- package/templates/portfolio/app/composables/useProjectJsonLd.ts +26 -0
- package/templates/portfolio/app/composables/useProjects.ts +31 -0
- package/templates/portfolio/app/composables/useSiteAppConfig.ts +79 -0
- package/templates/portfolio/app/composables/useStartProject.ts +12 -0
- package/templates/portfolio/app/error.vue +35 -0
- package/templates/portfolio/app/layouts/default.vue +23 -0
- package/templates/portfolio/app/lib/utils.ts +26 -0
- package/templates/portfolio/app/pages/[...slug].vue +36 -0
- package/templates/portfolio/app/pages/index.vue +60 -0
- package/templates/portfolio/app/pages/legal/[slug].vue +46 -0
- package/templates/portfolio/app/pages/news/[slug].vue +94 -0
- package/templates/portfolio/app/pages/news/index.vue +54 -0
- package/templates/portfolio/app/pages/news/tags/[tag].vue +41 -0
- package/templates/portfolio/app/pages/projects/[slug].vue +49 -0
- package/templates/portfolio/app/pages/projects/index.vue +24 -0
- package/templates/portfolio/app/pages/team.vue +40 -0
- package/templates/portfolio/app/routes.ts +30 -0
- package/templates/portfolio/app/utils/telHref.ts +3 -0
- package/templates/portfolio/components.json +21 -0
- package/templates/portfolio/content/home.de.md +4 -0
- package/templates/portfolio/content/home.md +4 -0
- package/templates/portfolio/content/legal/1.privacy.de.md +19 -0
- package/templates/portfolio/content/legal/1.privacy.md +21 -0
- package/templates/portfolio/content/legal/2.imprint.de.md +15 -0
- package/templates/portfolio/content/legal/2.imprint.md +17 -0
- package/templates/portfolio/content/notices/1.holm-chair.de.md +3 -0
- package/templates/portfolio/content/notices/1.holm-chair.md +4 -0
- package/templates/portfolio/content/pages/1.how-we-work.de.md +23 -0
- package/templates/portfolio/content/pages/1.how-we-work.md +23 -0
- package/templates/portfolio/content/people/1.maren-holt.de.md +4 -0
- package/templates/portfolio/content/people/1.maren-holt.md +6 -0
- package/templates/portfolio/content/people/2.ole-petersen.de.md +4 -0
- package/templates/portfolio/content/people/2.ole-petersen.md +6 -0
- package/templates/portfolio/content/posts/full-size-drawings.de.md +11 -0
- package/templates/portfolio/content/posts/full-size-drawings.md +13 -0
- package/templates/portfolio/content/posts/lime-plaster.de.md +11 -0
- package/templates/portfolio/content/posts/lime-plaster.md +13 -0
- package/templates/portfolio/content/projects/1.attic-flat-ottensen.de.md +19 -0
- package/templates/portfolio/content/projects/1.attic-flat-ottensen.md +22 -0
- package/templates/portfolio/content/projects/2.elbsand-vases.de.md +18 -0
- package/templates/portfolio/content/projects/2.elbsand-vases.md +21 -0
- package/templates/portfolio/content/projects/3.werftblick-entrance-hall.de.md +18 -0
- package/templates/portfolio/content/projects/3.werftblick-entrance-hall.md +22 -0
- package/templates/portfolio/content/projects/4.holm-chair.de.md +18 -0
- package/templates/portfolio/content/projects/4.holm-chair.md +21 -0
- package/templates/portfolio/content/site.md +13 -0
- package/templates/portfolio/eslint.config.mjs +12 -0
- package/templates/portfolio/eslint.tailwind.mjs +33 -0
- package/templates/portfolio/ginko.config.ts +70 -0
- package/templates/portfolio/gitignore +7 -0
- package/templates/portfolio/i18n/blog/de.json +18 -0
- package/templates/portfolio/i18n/blog/en.json +18 -0
- package/templates/portfolio/i18n/de.json +47 -0
- package/templates/portfolio/i18n/en.json +47 -0
- package/templates/portfolio/i18n/gallery/de.json +8 -0
- package/templates/portfolio/i18n/gallery/en.json +8 -0
- package/templates/portfolio/i18n/people/de.json +6 -0
- package/templates/portfolio/i18n/people/en.json +6 -0
- package/templates/portfolio/i18n/projects/de.json +7 -0
- package/templates/portfolio/i18n/projects/en.json +7 -0
- package/templates/portfolio/i18n/site/de.json +39 -0
- package/templates/portfolio/i18n/site/en.json +39 -0
- package/templates/portfolio/modules/feature-messages.ts +19 -0
- package/templates/portfolio/modules/feeds/index.ts +22 -0
- package/templates/portfolio/modules/feeds/routes.ts +13 -0
- package/templates/portfolio/modules/page-paths/index.ts +26 -0
- package/templates/portfolio/modules/page-paths/paths.ts +48 -0
- package/templates/portfolio/nuxt.config.ts +30 -0
- package/templates/portfolio/package.json +60 -0
- package/templates/portfolio/pnpm-workspace.yaml +6 -0
- package/templates/portfolio/public/media/attic-light.jpg +0 -0
- package/templates/portfolio/public/media/ceramic-vases.jpg +0 -0
- package/templates/portfolio/public/media/concrete-stair.jpg +0 -0
- package/templates/portfolio/public/media/material-samples.jpg +0 -0
- package/templates/portfolio/public/media/oak-chair.jpg +0 -0
- package/templates/portfolio/public/media/workshop-drawings.jpg +0 -0
- package/templates/portfolio/server/middleware/news-feed.ts +37 -0
- package/templates/portfolio/server/plugins/font-preload.ts +17 -0
- package/templates/portfolio/site-url.ts +21 -0
- package/templates/portfolio/tsconfig.json +9 -0
- package/templates/portfolio.json +11 -0
- package/templates/restaurant/.env.example +8 -0
- package/templates/restaurant/.github/screenshots/home-dark.png +0 -0
- package/templates/restaurant/.github/screenshots/home-light.png +0 -0
- package/templates/restaurant/.github/workflows/ci.yml +27 -0
- package/templates/restaurant/DESIGN.md +197 -0
- package/templates/restaurant/LICENSE +21 -0
- package/templates/restaurant/MEDIA.md +37 -0
- package/templates/restaurant/README.md +249 -0
- package/templates/restaurant/app/app.config.ts +33 -0
- package/templates/restaurant/app/app.vue +7 -0
- package/templates/restaurant/app/assets/css/main.css +20 -0
- package/templates/restaurant/app/assets/css/tokens.css +400 -0
- package/templates/restaurant/app/bricks/pages.ts +38 -0
- package/templates/restaurant/app/components/InitialsAvatar.vue +18 -0
- package/templates/restaurant/app/components/ProseBody.vue +13 -0
- package/templates/restaurant/app/components/block/Cards.vue +54 -0
- package/templates/restaurant/app/components/block/Cta.vue +26 -0
- package/templates/restaurant/app/components/block/Empty.vue +26 -0
- package/templates/restaurant/app/components/block/Features.vue +24 -0
- package/templates/restaurant/app/components/block/Gallery.vue +81 -0
- package/templates/restaurant/app/components/block/Hero.vue +47 -0
- package/templates/restaurant/app/components/block/PageHeader.vue +21 -0
- package/templates/restaurant/app/components/block/Section.vue +31 -0
- package/templates/restaurant/app/components/event/Upcoming.vue +25 -0
- package/templates/restaurant/app/components/hours/Table.vue +119 -0
- package/templates/restaurant/app/components/hours/Today.vue +55 -0
- package/templates/restaurant/app/components/menu/AllergenKey.vue +17 -0
- package/templates/restaurant/app/components/menu/Allergens.vue +24 -0
- package/templates/restaurant/app/components/menu/Diet.vue +16 -0
- package/templates/restaurant/app/components/menu/Dish.vue +30 -0
- package/templates/restaurant/app/components/menu/LunchDays.vue +42 -0
- package/templates/restaurant/app/components/site/Contact.vue +38 -0
- package/templates/restaurant/app/components/site/Footer.vue +81 -0
- package/templates/restaurant/app/components/site/FooterStatus.vue +9 -0
- package/templates/restaurant/app/components/site/Header.vue +52 -0
- package/templates/restaurant/app/components/site/LanguageSwitch.vue +34 -0
- package/templates/restaurant/app/components/site/Lightbox.vue +62 -0
- package/templates/restaurant/app/components/site/Logo.vue +17 -0
- package/templates/restaurant/app/components/site/NavLink.vue +19 -0
- package/templates/restaurant/app/components/site/NavSheet.vue +63 -0
- package/templates/restaurant/app/components/site/Notice.vue +21 -0
- package/templates/restaurant/app/components/site/SkipLink.vue +15 -0
- package/templates/restaurant/app/components/site/ThemeToggle.vue +28 -0
- package/templates/restaurant/app/components/ui/button/Button.vue +30 -0
- package/templates/restaurant/app/components/ui/button/index.ts +44 -0
- package/templates/restaurant/app/components/ui/sheet/Sheet.vue +16 -0
- package/templates/restaurant/app/components/ui/sheet/SheetClose.vue +13 -0
- package/templates/restaurant/app/components/ui/sheet/SheetContent.vue +54 -0
- package/templates/restaurant/app/components/ui/sheet/SheetDescription.vue +23 -0
- package/templates/restaurant/app/components/ui/sheet/SheetOverlay.vue +22 -0
- package/templates/restaurant/app/components/ui/sheet/SheetTitle.vue +23 -0
- package/templates/restaurant/app/components/ui/sheet/SheetTrigger.vue +13 -0
- package/templates/restaurant/app/components/ui/sheet/index.ts +7 -0
- package/templates/restaurant/app/composables/useEvents.ts +182 -0
- package/templates/restaurant/app/composables/useHours.ts +81 -0
- package/templates/restaurant/app/composables/useMenu.ts +76 -0
- package/templates/restaurant/app/composables/usePageSeo.ts +50 -0
- package/templates/restaurant/app/composables/useSiteAppConfig.ts +79 -0
- package/templates/restaurant/app/error.vue +35 -0
- package/templates/restaurant/app/layouts/default.vue +23 -0
- package/templates/restaurant/app/layouts/print.vue +9 -0
- package/templates/restaurant/app/lib/utils.ts +26 -0
- package/templates/restaurant/app/pages/[...slug].vue +36 -0
- package/templates/restaurant/app/pages/events/[slug].vue +106 -0
- package/templates/restaurant/app/pages/events/index.vue +20 -0
- package/templates/restaurant/app/pages/gallery.vue +17 -0
- package/templates/restaurant/app/pages/index.vue +163 -0
- package/templates/restaurant/app/pages/legal/[slug].vue +46 -0
- package/templates/restaurant/app/pages/lunch.vue +30 -0
- package/templates/restaurant/app/pages/menu/index.vue +46 -0
- package/templates/restaurant/app/pages/menu/print.vue +69 -0
- package/templates/restaurant/app/pages/reservations.vue +52 -0
- package/templates/restaurant/app/routes.ts +33 -0
- package/templates/restaurant/app/utils/hours.ts +58 -0
- package/templates/restaurant/app/utils/telHref.ts +3 -0
- package/templates/restaurant/components.json +21 -0
- package/templates/restaurant/content/events/1.wine-evening.de.md +10 -0
- package/templates/restaurant/content/events/1.wine-evening.it.md +10 -0
- package/templates/restaurant/content/events/1.wine-evening.md +16 -0
- package/templates/restaurant/content/events/2.cooking-class.de.md +10 -0
- package/templates/restaurant/content/events/2.cooking-class.it.md +10 -0
- package/templates/restaurant/content/events/2.cooking-class.md +16 -0
- package/templates/restaurant/content/gallery.de.md +15 -0
- package/templates/restaurant/content/gallery.it.md +15 -0
- package/templates/restaurant/content/gallery.md +21 -0
- package/templates/restaurant/content/home.de.md +6 -0
- package/templates/restaurant/content/home.it.md +6 -0
- package/templates/restaurant/content/home.md +7 -0
- package/templates/restaurant/content/hourPlans/1.winter-hours.de.md +3 -0
- package/templates/restaurant/content/hourPlans/1.winter-hours.it.md +3 -0
- package/templates/restaurant/content/hourPlans/1.winter-hours.md +41 -0
- package/templates/restaurant/content/hours.de.md +4 -0
- package/templates/restaurant/content/hours.it.md +4 -0
- package/templates/restaurant/content/hours.md +45 -0
- package/templates/restaurant/content/legal/1.privacy.de.md +28 -0
- package/templates/restaurant/content/legal/1.privacy.it.md +28 -0
- package/templates/restaurant/content/legal/1.privacy.md +29 -0
- package/templates/restaurant/content/legal/2.terms.de.md +21 -0
- package/templates/restaurant/content/legal/2.terms.it.md +21 -0
- package/templates/restaurant/content/legal/2.terms.md +22 -0
- package/templates/restaurant/content/legal/3.imprint.de.md +15 -0
- package/templates/restaurant/content/legal/3.imprint.it.md +15 -0
- package/templates/restaurant/content/legal/3.imprint.md +16 -0
- package/templates/restaurant/content/lunch.de.md +3 -0
- package/templates/restaurant/content/lunch.it.md +3 -0
- package/templates/restaurant/content/lunch.md +25 -0
- package/templates/restaurant/content/menu/1.liptauer.de.md +4 -0
- package/templates/restaurant/content/menu/1.liptauer.it.md +4 -0
- package/templates/restaurant/content/menu/1.liptauer.md +8 -0
- package/templates/restaurant/content/menu/10.kaiserschmarrn.de.md +4 -0
- package/templates/restaurant/content/menu/10.kaiserschmarrn.it.md +4 -0
- package/templates/restaurant/content/menu/10.kaiserschmarrn.md +8 -0
- package/templates/restaurant/content/menu/11.apple-strudel.de.md +4 -0
- package/templates/restaurant/content/menu/11.apple-strudel.it.md +4 -0
- package/templates/restaurant/content/menu/11.apple-strudel.md +8 -0
- package/templates/restaurant/content/menu/12.apple-spritzer.de.md +4 -0
- package/templates/restaurant/content/menu/12.apple-spritzer.it.md +4 -0
- package/templates/restaurant/content/menu/12.apple-spritzer.md +8 -0
- package/templates/restaurant/content/menu/13.elderflower-soda.de.md +3 -0
- package/templates/restaurant/content/menu/13.elderflower-soda.it.md +3 -0
- package/templates/restaurant/content/menu/13.elderflower-soda.md +7 -0
- package/templates/restaurant/content/menu/14.melange.de.md +4 -0
- package/templates/restaurant/content/menu/14.melange.it.md +4 -0
- package/templates/restaurant/content/menu/14.melange.md +8 -0
- package/templates/restaurant/content/menu/15.gruener-veltliner.de.md +4 -0
- package/templates/restaurant/content/menu/15.gruener-veltliner.it.md +4 -0
- package/templates/restaurant/content/menu/15.gruener-veltliner.md +8 -0
- package/templates/restaurant/content/menu/16.zweigelt.de.md +4 -0
- package/templates/restaurant/content/menu/16.zweigelt.it.md +4 -0
- package/templates/restaurant/content/menu/16.zweigelt.md +8 -0
- package/templates/restaurant/content/menu/17.maerzen.de.md +4 -0
- package/templates/restaurant/content/menu/17.maerzen.it.md +4 -0
- package/templates/restaurant/content/menu/17.maerzen.md +8 -0
- package/templates/restaurant/content/menu/2.cured-char.de.md +4 -0
- package/templates/restaurant/content/menu/2.cured-char.it.md +4 -0
- package/templates/restaurant/content/menu/2.cured-char.md +8 -0
- package/templates/restaurant/content/menu/3.frittaten-soup.de.md +4 -0
- package/templates/restaurant/content/menu/3.frittaten-soup.it.md +4 -0
- package/templates/restaurant/content/menu/3.frittaten-soup.md +8 -0
- package/templates/restaurant/content/menu/4.pumpkin-soup.de.md +4 -0
- package/templates/restaurant/content/menu/4.pumpkin-soup.it.md +4 -0
- package/templates/restaurant/content/menu/4.pumpkin-soup.md +8 -0
- package/templates/restaurant/content/menu/5.wiener-schnitzel.de.md +4 -0
- package/templates/restaurant/content/menu/5.wiener-schnitzel.it.md +4 -0
- package/templates/restaurant/content/menu/5.wiener-schnitzel.md +8 -0
- package/templates/restaurant/content/menu/6.tafelspitz.de.md +4 -0
- package/templates/restaurant/content/menu/6.tafelspitz.it.md +4 -0
- package/templates/restaurant/content/menu/6.tafelspitz.md +8 -0
- package/templates/restaurant/content/menu/7.roast-pork.de.md +4 -0
- package/templates/restaurant/content/menu/7.roast-pork.it.md +4 -0
- package/templates/restaurant/content/menu/7.roast-pork.md +8 -0
- package/templates/restaurant/content/menu/8.kasnocken.de.md +4 -0
- package/templates/restaurant/content/menu/8.kasnocken.it.md +4 -0
- package/templates/restaurant/content/menu/8.kasnocken.md +8 -0
- package/templates/restaurant/content/menu/9.lentil-goulash.de.md +4 -0
- package/templates/restaurant/content/menu/9.lentil-goulash.it.md +4 -0
- package/templates/restaurant/content/menu/9.lentil-goulash.md +8 -0
- package/templates/restaurant/content/notices/1.cook-wanted.de.md +3 -0
- package/templates/restaurant/content/notices/1.cook-wanted.it.md +3 -0
- package/templates/restaurant/content/notices/1.cook-wanted.md +4 -0
- package/templates/restaurant/content/pages/1.about.de.md +23 -0
- package/templates/restaurant/content/pages/1.about.it.md +23 -0
- package/templates/restaurant/content/pages/1.about.md +24 -0
- package/templates/restaurant/content/reservations.de.md +20 -0
- package/templates/restaurant/content/reservations.it.md +20 -0
- package/templates/restaurant/content/reservations.md +20 -0
- package/templates/restaurant/content/site.de.md +3 -0
- package/templates/restaurant/content/site.it.md +3 -0
- package/templates/restaurant/content/site.md +12 -0
- package/templates/restaurant/eslint.config.mjs +12 -0
- package/templates/restaurant/eslint.tailwind.mjs +33 -0
- package/templates/restaurant/ginko.config.ts +79 -0
- package/templates/restaurant/gitignore +7 -0
- package/templates/restaurant/i18n/de.json +31 -0
- package/templates/restaurant/i18n/en.json +31 -0
- package/templates/restaurant/i18n/events/de.json +20 -0
- package/templates/restaurant/i18n/events/en.json +20 -0
- package/templates/restaurant/i18n/events/it.json +20 -0
- package/templates/restaurant/i18n/gallery/de.json +8 -0
- package/templates/restaurant/i18n/gallery/en.json +8 -0
- package/templates/restaurant/i18n/gallery/it.json +8 -0
- package/templates/restaurant/i18n/hours/de.json +27 -0
- package/templates/restaurant/i18n/hours/en.json +27 -0
- package/templates/restaurant/i18n/hours/it.json +27 -0
- package/templates/restaurant/i18n/it.json +31 -0
- package/templates/restaurant/i18n/menu/de.json +54 -0
- package/templates/restaurant/i18n/menu/en.json +54 -0
- package/templates/restaurant/i18n/menu/it.json +54 -0
- package/templates/restaurant/i18n/site/de.json +39 -0
- package/templates/restaurant/i18n/site/en.json +39 -0
- package/templates/restaurant/i18n/site/it.json +39 -0
- package/templates/restaurant/modules/feature-messages.ts +19 -0
- package/templates/restaurant/modules/feeds/index.ts +22 -0
- package/templates/restaurant/modules/feeds/routes.ts +13 -0
- package/templates/restaurant/modules/page-paths/index.ts +26 -0
- package/templates/restaurant/modules/page-paths/paths.ts +48 -0
- package/templates/restaurant/nuxt.config.ts +27 -0
- package/templates/restaurant/package.json +61 -0
- package/templates/restaurant/pnpm-workspace.yaml +6 -0
- package/templates/restaurant/public/media/garten.jpg +0 -0
- package/templates/restaurant/public/media/gastraum.jpg +0 -0
- package/templates/restaurant/public/media/gaststube.jpg +0 -0
- package/templates/restaurant/public/media/kueche.jpg +0 -0
- package/templates/restaurant/public/media/schnitzel.jpg +0 -0
- package/templates/restaurant/public/media/strudel.jpg +0 -0
- package/templates/restaurant/public/media/weinabend.jpg +0 -0
- package/templates/restaurant/server/plugins/font-preload.ts +17 -0
- package/templates/restaurant/site-url.ts +21 -0
- package/templates/restaurant/tsconfig.json +9 -0
- package/templates/restaurant.json +19 -0
- package/templates/saas/.env.example +8 -0
- package/templates/saas/.github/screenshots/home-dark.png +0 -0
- package/templates/saas/.github/screenshots/home-light.png +0 -0
- package/templates/saas/.github/workflows/ci.yml +27 -0
- package/templates/saas/DESIGN.md +197 -0
- package/templates/saas/LICENSE +21 -0
- package/templates/saas/MEDIA.md +20 -0
- package/templates/saas/NOTES.md +23 -0
- package/templates/saas/README.md +264 -0
- package/templates/saas/app/app.config.ts +37 -0
- package/templates/saas/app/app.vue +7 -0
- package/templates/saas/app/assets/css/main.css +30 -0
- package/templates/saas/app/assets/css/tokens.css +400 -0
- package/templates/saas/app/bricks/logos-quotes.ts +47 -0
- package/templates/saas/app/bricks/pages.ts +38 -0
- package/templates/saas/app/bricks/pricing.ts +60 -0
- package/templates/saas/app/components/DocsPageEnd.vue +8 -0
- package/templates/saas/app/components/InitialsAvatar.vue +18 -0
- package/templates/saas/app/components/ProseBody.vue +13 -0
- package/templates/saas/app/components/block/Cards.vue +54 -0
- package/templates/saas/app/components/block/Cta.vue +26 -0
- package/templates/saas/app/components/block/Empty.vue +26 -0
- package/templates/saas/app/components/block/Faq.vue +19 -0
- package/templates/saas/app/components/block/Features.vue +24 -0
- package/templates/saas/app/components/block/Hero.vue +47 -0
- package/templates/saas/app/components/block/Logos.vue +22 -0
- package/templates/saas/app/components/block/PageHeader.vue +21 -0
- package/templates/saas/app/components/block/Quote.vue +19 -0
- package/templates/saas/app/components/block/Section.vue +31 -0
- package/templates/saas/app/components/blog/Byline.vue +22 -0
- package/templates/saas/app/components/blog/PostList.vue +33 -0
- package/templates/saas/app/components/blog/TagList.vue +17 -0
- package/templates/saas/app/components/changelog/Latest.vue +32 -0
- package/templates/saas/app/components/help/Contact.vue +14 -0
- package/templates/saas/app/components/pages/Top.vue +30 -0
- package/templates/saas/app/components/pricing/More.vue +21 -0
- package/templates/saas/app/components/pricing/Plans.vue +60 -0
- package/templates/saas/app/components/site/Contact.vue +38 -0
- package/templates/saas/app/components/site/Footer.vue +81 -0
- package/templates/saas/app/components/site/Header.vue +52 -0
- package/templates/saas/app/components/site/LanguageSwitch.vue +34 -0
- package/templates/saas/app/components/site/Logo.vue +17 -0
- package/templates/saas/app/components/site/NavLink.vue +19 -0
- package/templates/saas/app/components/site/NavSheet.vue +63 -0
- package/templates/saas/app/components/site/Notice.vue +21 -0
- package/templates/saas/app/components/site/PageCta.vue +12 -0
- package/templates/saas/app/components/site/SkipLink.vue +15 -0
- package/templates/saas/app/components/site/ThemeToggle.vue +28 -0
- package/templates/saas/app/components/ui/accordion/Accordion.vue +16 -0
- package/templates/saas/app/components/ui/accordion/AccordionContent.vue +26 -0
- package/templates/saas/app/components/ui/accordion/AccordionItem.vue +24 -0
- package/templates/saas/app/components/ui/accordion/AccordionTrigger.vue +35 -0
- package/templates/saas/app/components/ui/accordion/index.ts +5 -0
- package/templates/saas/app/components/ui/button/Button.vue +30 -0
- package/templates/saas/app/components/ui/button/index.ts +44 -0
- package/templates/saas/app/components/ui/sheet/Sheet.vue +16 -0
- package/templates/saas/app/components/ui/sheet/SheetClose.vue +13 -0
- package/templates/saas/app/components/ui/sheet/SheetContent.vue +54 -0
- package/templates/saas/app/components/ui/sheet/SheetDescription.vue +23 -0
- package/templates/saas/app/components/ui/sheet/SheetOverlay.vue +22 -0
- package/templates/saas/app/components/ui/sheet/SheetTitle.vue +23 -0
- package/templates/saas/app/components/ui/sheet/SheetTrigger.vue +13 -0
- package/templates/saas/app/components/ui/sheet/index.ts +7 -0
- package/templates/saas/app/composables/useBlog.ts +103 -0
- package/templates/saas/app/composables/useChangelog.ts +54 -0
- package/templates/saas/app/composables/usePageSeo.ts +50 -0
- package/templates/saas/app/composables/usePricing.ts +110 -0
- package/templates/saas/app/composables/useSiteAppConfig.ts +79 -0
- package/templates/saas/app/error.vue +35 -0
- package/templates/saas/app/layouts/default.vue +23 -0
- package/templates/saas/app/lib/utils.ts +26 -0
- package/templates/saas/app/pages/[...slug].vue +36 -0
- package/templates/saas/app/pages/changelog.vue +47 -0
- package/templates/saas/app/pages/faq.vue +39 -0
- package/templates/saas/app/pages/help/index.vue +21 -0
- package/templates/saas/app/pages/index.vue +67 -0
- package/templates/saas/app/pages/legal/[slug].vue +46 -0
- package/templates/saas/app/pages/news/[slug].vue +94 -0
- package/templates/saas/app/pages/news/index.vue +54 -0
- package/templates/saas/app/pages/news/tags/[tag].vue +41 -0
- package/templates/saas/app/pages/pricing.vue +27 -0
- package/templates/saas/app/routes.ts +31 -0
- package/templates/saas/app/utils/telHref.ts +3 -0
- package/templates/saas/components.json +21 -0
- package/templates/saas/content/changelog/v4-3-0.de.md +18 -0
- package/templates/saas/content/changelog/v4-3-0.fr.md +18 -0
- package/templates/saas/content/changelog/v4-3-0.md +20 -0
- package/templates/saas/content/changelog/v4-4-0.de.md +15 -0
- package/templates/saas/content/changelog/v4-4-0.fr.md +15 -0
- package/templates/saas/content/changelog/v4-4-0.md +17 -0
- package/templates/saas/content/changelog/v4-4-1.de.md +11 -0
- package/templates/saas/content/changelog/v4-4-1.fr.md +11 -0
- package/templates/saas/content/changelog/v4-4-1.md +13 -0
- package/templates/saas/content/changelog/v4-5-0.de.md +19 -0
- package/templates/saas/content/changelog/v4-5-0.fr.md +19 -0
- package/templates/saas/content/changelog/v4-5-0.md +21 -0
- package/templates/saas/content/changelog/v4-6-0.de.md +19 -0
- package/templates/saas/content/changelog/v4-6-0.fr.md +19 -0
- package/templates/saas/content/changelog/v4-6-0.md +21 -0
- package/templates/saas/content/docs/1.getting-started.de.md +33 -0
- package/templates/saas/content/docs/1.getting-started.fr.md +33 -0
- package/templates/saas/content/docs/1.getting-started.md +32 -0
- package/templates/saas/content/docs/2.shifts.de.md +24 -0
- package/templates/saas/content/docs/2.shifts.fr.md +24 -0
- package/templates/saas/content/docs/2.shifts.md +23 -0
- package/templates/saas/content/docs/3.export.de.md +21 -0
- package/templates/saas/content/docs/3.export.fr.md +21 -0
- package/templates/saas/content/docs/3.export.md +20 -0
- package/templates/saas/content/faq/1.billing.de.md +4 -0
- package/templates/saas/content/faq/1.billing.fr.md +4 -0
- package/templates/saas/content/faq/1.billing.md +4 -0
- package/templates/saas/content/faq/2.cancellation.de.md +4 -0
- package/templates/saas/content/faq/2.cancellation.fr.md +4 -0
- package/templates/saas/content/faq/2.cancellation.md +4 -0
- package/templates/saas/content/faq/3.data-export.de.md +4 -0
- package/templates/saas/content/faq/3.data-export.fr.md +4 -0
- package/templates/saas/content/faq/3.data-export.md +4 -0
- package/templates/saas/content/faq/4.change-plan.de.md +4 -0
- package/templates/saas/content/faq/4.change-plan.fr.md +4 -0
- package/templates/saas/content/faq/4.change-plan.md +4 -0
- package/templates/saas/content/faq/5.trial.de.md +4 -0
- package/templates/saas/content/faq/5.trial.fr.md +4 -0
- package/templates/saas/content/faq/5.trial.md +4 -0
- package/templates/saas/content/faq/6.data-location.de.md +4 -0
- package/templates/saas/content/faq/6.data-location.fr.md +4 -0
- package/templates/saas/content/faq/6.data-location.md +4 -0
- package/templates/saas/content/faq/7.data-processing.de.md +4 -0
- package/templates/saas/content/faq/7.data-processing.fr.md +4 -0
- package/templates/saas/content/faq/7.data-processing.md +4 -0
- package/templates/saas/content/home.de.md +24 -0
- package/templates/saas/content/home.fr.md +24 -0
- package/templates/saas/content/home.md +26 -0
- package/templates/saas/content/legal/1.privacy.de.md +20 -0
- package/templates/saas/content/legal/1.privacy.fr.md +20 -0
- package/templates/saas/content/legal/1.privacy.md +22 -0
- package/templates/saas/content/legal/2.terms.de.md +20 -0
- package/templates/saas/content/legal/2.terms.fr.md +20 -0
- package/templates/saas/content/legal/2.terms.md +22 -0
- package/templates/saas/content/legal/3.imprint.de.md +16 -0
- package/templates/saas/content/legal/3.imprint.fr.md +16 -0
- package/templates/saas/content/legal/3.imprint.md +18 -0
- package/templates/saas/content/logos/1.sonnenlinde.md +6 -0
- package/templates/saas/content/logos/2.elsterau.md +6 -0
- package/templates/saas/content/logos/3.rosental.md +6 -0
- package/templates/saas/content/logos/4.muldental.md +6 -0
- package/templates/saas/content/notices/5.swap-requests.de.md +3 -0
- package/templates/saas/content/notices/5.swap-requests.fr.md +3 -0
- package/templates/saas/content/notices/5.swap-requests.md +4 -0
- package/templates/saas/content/pages/1.security.de.md +25 -0
- package/templates/saas/content/pages/1.security.fr.md +25 -0
- package/templates/saas/content/pages/1.security.md +25 -0
- package/templates/saas/content/pages/2.about.de.md +17 -0
- package/templates/saas/content/pages/2.about.fr.md +17 -0
- package/templates/saas/content/pages/2.about.md +17 -0
- package/templates/saas/content/pages/3.contact.de.md +15 -0
- package/templates/saas/content/pages/3.contact.fr.md +15 -0
- package/templates/saas/content/pages/3.contact.md +15 -0
- package/templates/saas/content/people/1.lena-hartmann.de.md +4 -0
- package/templates/saas/content/people/1.lena-hartmann.fr.md +4 -0
- package/templates/saas/content/people/1.lena-hartmann.md +5 -0
- package/templates/saas/content/people/2.jonas-pohl.de.md +4 -0
- package/templates/saas/content/people/2.jonas-pohl.fr.md +4 -0
- package/templates/saas/content/people/2.jonas-pohl.md +5 -0
- package/templates/saas/content/posts/rest-periods.de.md +20 -0
- package/templates/saas/content/posts/rest-periods.fr.md +20 -0
- package/templates/saas/content/posts/rest-periods.md +22 -0
- package/templates/saas/content/posts/summer-holidays.de.md +16 -0
- package/templates/saas/content/posts/summer-holidays.fr.md +16 -0
- package/templates/saas/content/posts/summer-holidays.md +18 -0
- package/templates/saas/content/posts/swap-requests.de.md +18 -0
- package/templates/saas/content/posts/swap-requests.fr.md +18 -0
- package/templates/saas/content/posts/swap-requests.md +20 -0
- package/templates/saas/content/pricing/1.small.de.md +11 -0
- package/templates/saas/content/pricing/1.small.fr.md +11 -0
- package/templates/saas/content/pricing/1.small.md +15 -0
- package/templates/saas/content/pricing/2.standard.de.md +11 -0
- package/templates/saas/content/pricing/2.standard.fr.md +11 -0
- package/templates/saas/content/pricing/2.standard.md +16 -0
- package/templates/saas/content/pricing/3.group.de.md +11 -0
- package/templates/saas/content/pricing/3.group.fr.md +11 -0
- package/templates/saas/content/pricing/3.group.md +12 -0
- package/templates/saas/content/quotes/1.ward-lead.de.md +4 -0
- package/templates/saas/content/quotes/1.ward-lead.fr.md +4 -0
- package/templates/saas/content/quotes/1.ward-lead.md +5 -0
- package/templates/saas/content/site.de.md +3 -0
- package/templates/saas/content/site.fr.md +3 -0
- package/templates/saas/content/site.md +12 -0
- package/templates/saas/eslint.config.mjs +12 -0
- package/templates/saas/eslint.tailwind.mjs +33 -0
- package/templates/saas/ginko.config.ts +109 -0
- package/templates/saas/gitignore +7 -0
- package/templates/saas/i18n/blog/de.json +18 -0
- package/templates/saas/i18n/blog/en.json +18 -0
- package/templates/saas/i18n/blog/fr.json +18 -0
- package/templates/saas/i18n/changelog/de.json +9 -0
- package/templates/saas/i18n/changelog/en.json +9 -0
- package/templates/saas/i18n/changelog/fr.json +9 -0
- package/templates/saas/i18n/de.json +48 -0
- package/templates/saas/i18n/en.json +48 -0
- package/templates/saas/i18n/faq/de.json +6 -0
- package/templates/saas/i18n/faq/en.json +6 -0
- package/templates/saas/i18n/faq/fr.json +6 -0
- package/templates/saas/i18n/fr.json +48 -0
- package/templates/saas/i18n/pricing/de.json +14 -0
- package/templates/saas/i18n/pricing/en.json +14 -0
- package/templates/saas/i18n/pricing/fr.json +14 -0
- package/templates/saas/i18n/site/de.json +39 -0
- package/templates/saas/i18n/site/en.json +39 -0
- package/templates/saas/i18n/site/fr.json +39 -0
- package/templates/saas/modules/feature-messages.ts +19 -0
- package/templates/saas/modules/feeds/index.ts +22 -0
- package/templates/saas/modules/feeds/routes.ts +13 -0
- package/templates/saas/modules/page-paths/index.ts +26 -0
- package/templates/saas/modules/page-paths/paths.ts +48 -0
- package/templates/saas/nuxt.config.ts +30 -0
- package/templates/saas/package.json +63 -0
- package/templates/saas/pnpm-workspace.yaml +6 -0
- package/templates/saas/public/logos/care-home-four.svg +4 -0
- package/templates/saas/public/logos/care-home-one.svg +4 -0
- package/templates/saas/public/logos/care-home-two.svg +4 -0
- package/templates/saas/public/logos/clinic-three.svg +4 -0
- package/templates/saas/public/media/rota.svg +76 -0
- package/templates/saas/server/middleware/changelog-feed.ts +50 -0
- package/templates/saas/server/middleware/news-feed.ts +37 -0
- package/templates/saas/server/plugins/font-preload.ts +17 -0
- package/templates/saas/shared/utils/changelog.ts +13 -0
- package/templates/saas/site-url.ts +21 -0
- package/templates/saas/tsconfig.json +9 -0
- package/templates/saas.json +12 -0
- package/templates/starter/.env.example +8 -0
- package/templates/starter/.github/screenshots/home-dark.png +0 -0
- package/templates/starter/.github/screenshots/home-light.png +0 -0
- package/templates/starter/.github/workflows/ci.yml +27 -0
- package/templates/starter/DESIGN.md +197 -0
- package/templates/starter/LICENSE +21 -0
- package/templates/starter/MEDIA.md +11 -0
- package/templates/starter/README.md +199 -0
- package/templates/starter/app/app.config.ts +21 -0
- package/templates/starter/app/app.vue +7 -0
- package/templates/starter/app/assets/css/main.css +19 -0
- package/templates/starter/app/assets/css/tokens.css +400 -0
- package/templates/starter/app/bricks/pages.ts +38 -0
- package/templates/starter/app/components/InitialsAvatar.vue +18 -0
- package/templates/starter/app/components/ProseBody.vue +13 -0
- package/templates/starter/app/components/block/Cards.vue +54 -0
- package/templates/starter/app/components/block/Cta.vue +26 -0
- package/templates/starter/app/components/block/Empty.vue +26 -0
- package/templates/starter/app/components/block/Features.vue +24 -0
- package/templates/starter/app/components/block/Hero.vue +47 -0
- package/templates/starter/app/components/block/PageHeader.vue +21 -0
- package/templates/starter/app/components/block/Section.vue +31 -0
- package/templates/starter/app/components/pages/Top.vue +11 -0
- package/templates/starter/app/components/site/Contact.vue +38 -0
- package/templates/starter/app/components/site/Footer.vue +81 -0
- package/templates/starter/app/components/site/Header.vue +52 -0
- package/templates/starter/app/components/site/LanguageSwitch.vue +34 -0
- package/templates/starter/app/components/site/Logo.vue +17 -0
- package/templates/starter/app/components/site/NavLink.vue +19 -0
- package/templates/starter/app/components/site/NavSheet.vue +63 -0
- package/templates/starter/app/components/site/Notice.vue +21 -0
- package/templates/starter/app/components/site/SkipLink.vue +15 -0
- package/templates/starter/app/components/site/ThemeToggle.vue +28 -0
- package/templates/starter/app/components/ui/button/Button.vue +30 -0
- package/templates/starter/app/components/ui/button/index.ts +44 -0
- package/templates/starter/app/components/ui/sheet/Sheet.vue +16 -0
- package/templates/starter/app/components/ui/sheet/SheetClose.vue +13 -0
- package/templates/starter/app/components/ui/sheet/SheetContent.vue +54 -0
- package/templates/starter/app/components/ui/sheet/SheetDescription.vue +23 -0
- package/templates/starter/app/components/ui/sheet/SheetOverlay.vue +22 -0
- package/templates/starter/app/components/ui/sheet/SheetTitle.vue +23 -0
- package/templates/starter/app/components/ui/sheet/SheetTrigger.vue +13 -0
- package/templates/starter/app/components/ui/sheet/index.ts +7 -0
- package/templates/starter/app/composables/usePageSeo.ts +50 -0
- package/templates/starter/app/composables/useSiteAppConfig.ts +79 -0
- package/templates/starter/app/error.vue +35 -0
- package/templates/starter/app/layouts/default.vue +23 -0
- package/templates/starter/app/lib/utils.ts +26 -0
- package/templates/starter/app/pages/[...slug].vue +36 -0
- package/templates/starter/app/pages/index.vue +24 -0
- package/templates/starter/app/pages/legal/[slug].vue +46 -0
- package/templates/starter/app/routes.ts +14 -0
- package/templates/starter/app/utils/telHref.ts +3 -0
- package/templates/starter/components.json +21 -0
- package/templates/starter/content/home.de.md +16 -0
- package/templates/starter/content/home.md +16 -0
- package/templates/starter/content/legal/1.privacy.de.md +28 -0
- package/templates/starter/content/legal/1.privacy.md +29 -0
- package/templates/starter/content/legal/2.terms.de.md +21 -0
- package/templates/starter/content/legal/2.terms.md +22 -0
- package/templates/starter/content/legal/3.imprint.de.md +16 -0
- package/templates/starter/content/legal/3.imprint.md +16 -0
- package/templates/starter/content/notices/1.welcome.de.md +4 -0
- package/templates/starter/content/notices/1.welcome.md +5 -0
- package/templates/starter/content/pages/1.about.de.md +20 -0
- package/templates/starter/content/pages/1.about.md +18 -0
- package/templates/starter/content/pages/2.contact.de.md +17 -0
- package/templates/starter/content/pages/2.contact.md +15 -0
- package/templates/starter/content/site.md +12 -0
- package/templates/starter/eslint.config.mjs +12 -0
- package/templates/starter/eslint.tailwind.mjs +33 -0
- package/templates/starter/ginko.config.ts +42 -0
- package/templates/starter/gitignore +7 -0
- package/templates/starter/i18n/de.json +6 -0
- package/templates/starter/i18n/en.json +6 -0
- package/templates/starter/i18n/site/de.json +39 -0
- package/templates/starter/i18n/site/en.json +39 -0
- package/templates/starter/modules/feature-messages.ts +19 -0
- package/templates/starter/modules/feeds/index.ts +22 -0
- package/templates/starter/modules/feeds/routes.ts +13 -0
- package/templates/starter/modules/page-paths/index.ts +26 -0
- package/templates/starter/modules/page-paths/paths.ts +48 -0
- package/templates/starter/nuxt.config.ts +27 -0
- package/templates/starter/package.json +55 -0
- package/templates/starter/pnpm-workspace.yaml +6 -0
- package/templates/starter/server/plugins/font-preload.ts +17 -0
- package/templates/starter/site-url.ts +21 -0
- package/templates/starter/tsconfig.json +9 -0
- package/templates/starter.json +11 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
# Replace these values with your own before you go live (they are sample values that reach nobody).
|
|
3
|
+
legalName: Planwerk GmbH
|
|
4
|
+
street: Kranichhof 8
|
|
5
|
+
postalCode: '04109'
|
|
6
|
+
city: Leipzig
|
|
7
|
+
email: hello@planwerk.example
|
|
8
|
+
phone: '+49 341 0123 4567'
|
|
9
|
+
# registryNumber: HRB 12345
|
|
10
|
+
# registryCourt: Amtsgericht Leipzig
|
|
11
|
+
vatId: DE318472062
|
|
12
|
+
---
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
import withNuxt from './.nuxt/eslint.config.mjs'
|
|
3
|
+
import { tailwindClassesConfig } from './eslint.tailwind.mjs'
|
|
4
|
+
|
|
5
|
+
export default withNuxt(
|
|
6
|
+
{
|
|
7
|
+
// An optional TypeScript prop is `undefined` when not passed; a default for each would only repeat that.
|
|
8
|
+
rules: { 'vue/require-default-prop': 'off' },
|
|
9
|
+
},
|
|
10
|
+
// A class Tailwind does not know is an error (tokens.css removes the default palette, scale, radii and shadows).
|
|
11
|
+
tailwindClassesConfig,
|
|
12
|
+
)
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// Synced from templates/_features/ui/eslint.tailwind.mjs by `pnpm templates sync`. Edit the source, not this copy.
|
|
2
|
+
// @ts-check
|
|
3
|
+
// Lint rule shared by every template: a class Tailwind does not know is an error.
|
|
4
|
+
// tokens.css switches off Tailwind's default palette, type scale, radii and shadows, so a class such as `text-sm`,
|
|
5
|
+
// `shadow-lg` or `bg-red-500` generates no CSS and does nothing. Without this rule that mistake is silent.
|
|
6
|
+
// Tailwind reads the template's CSS entry (the same file the build uses), so a new token is known at once.
|
|
7
|
+
import betterTailwind from 'eslint-plugin-better-tailwindcss'
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Classes that are not Tailwind on purpose. Each one is a hook for a stylesheet, a script or the print layout.
|
|
11
|
+
* The plugin treats every entry as an unanchored regular expression, so each one must be anchored (`^name$`):
|
|
12
|
+
* a bare 'dark' would also skip `dark:bg-red-500`. Keep this list short; never add a real pattern.
|
|
13
|
+
*/
|
|
14
|
+
const allowedClasses = [
|
|
15
|
+
// Plain CSS classes written in tokens.css (not Tailwind utilities).
|
|
16
|
+
'^prose$', // ProseBody: the reading column and the styles for rendered Markdown
|
|
17
|
+
'^surface-primary$', // BlockCta: a band in the accent colour that swaps text, buttons and focus ring
|
|
18
|
+
// Not a style at all: the colour-mode class. Tailwind's `dark:` variant reads it, so the lightbox sets it on
|
|
19
|
+
// itself to stay dark in light mode.
|
|
20
|
+
'^dark$',
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
export const tailwindClassesConfig = {
|
|
24
|
+
name: 'ginko/unknown-tailwind-classes',
|
|
25
|
+
files: ['app/**/*.vue', 'app/**/*.ts'],
|
|
26
|
+
plugins: { 'better-tailwindcss': betterTailwind },
|
|
27
|
+
settings: {
|
|
28
|
+
'better-tailwindcss': { entryPoint: 'app/assets/css/main.css' },
|
|
29
|
+
},
|
|
30
|
+
rules: {
|
|
31
|
+
'better-tailwindcss/no-unknown-classes': ['error', { ignore: allowedClasses }],
|
|
32
|
+
},
|
|
33
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
// SaaS template: a small German software company with a web app for planning shifts in care homes and small clinics:
|
|
2
|
+
// what the product does on the home page, the plans with their prices, the changelog, questions and answers, a blog,
|
|
3
|
+
// customer logos and a quote, security and data facts, and legal texts, in English (main), German and French. Every
|
|
4
|
+
// brick reads Markdown from content/ (source: 'files'), so the site runs without an account and can be built as static
|
|
5
|
+
// files. To let the team change a brick in Ginko Studio later, remove `source: 'files'` from it (README, "Move to
|
|
6
|
+
// the Studio").
|
|
7
|
+
import { defineSite, f, single } from '@lupinum/ginko'
|
|
8
|
+
import { changelog, faq, legal, notices, people, posts, site } from '@lupinum/ginko/basics'
|
|
9
|
+
import { components, docsCollection } from '@lupinum/ginko-docs/config'
|
|
10
|
+
import { logos, quotes } from './app/bricks/logos-quotes.ts'
|
|
11
|
+
import { pages } from './app/bricks/pages.ts'
|
|
12
|
+
import { pricing } from './app/bricks/pricing.ts'
|
|
13
|
+
import { locales, localized } from './app/routes.ts'
|
|
14
|
+
import { siteUrl } from './site-url.ts'
|
|
15
|
+
|
|
16
|
+
/** A short title and one or two sentences, for the lists of the home page. */
|
|
17
|
+
const point = {
|
|
18
|
+
title: f.text({ de: 'Titel', en: 'Title', fr: 'Titre' }, { max: 60 }),
|
|
19
|
+
text: f.longtext({ de: 'Text', en: 'Text', fr: 'Texte' }, { max: 240 }),
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export default defineSite({
|
|
23
|
+
site: 'saas',
|
|
24
|
+
name: 'Planwerk',
|
|
25
|
+
// `color` fills the share cards: the light `--brand` of app/assets/css/main.css.
|
|
26
|
+
seo: {
|
|
27
|
+
description: 'Planwerk is a web app for planning shifts in care homes and small clinics: rota, rule checks, swaps and hours for payroll, hosted in Germany.',
|
|
28
|
+
color: '#6d28d9',
|
|
29
|
+
},
|
|
30
|
+
url: siteUrl('https://example.com'),
|
|
31
|
+
timeZone: 'Europe/Berlin',
|
|
32
|
+
// `addressCountry` in the Organization JSON-LD.
|
|
33
|
+
country: 'DE',
|
|
34
|
+
locales,
|
|
35
|
+
languages: { en: 'en-GB', de: 'de-DE', fr: 'fr-FR' },
|
|
36
|
+
// The currency of the plans' prices.
|
|
37
|
+
currency: 'EUR',
|
|
38
|
+
pages: {
|
|
39
|
+
home: localized('/'),
|
|
40
|
+
pricing: localized('/pricing'),
|
|
41
|
+
changelog: localized('/changelog'),
|
|
42
|
+
news: localized('/news'),
|
|
43
|
+
faq: localized('/faq'),
|
|
44
|
+
help: localized('/help'),
|
|
45
|
+
},
|
|
46
|
+
// The order of the bricks is the order of the Studio's Today page: the weekly changelog entry first, then the
|
|
47
|
+
// notice, the prices and the questions.
|
|
48
|
+
components,
|
|
49
|
+
bricks: {
|
|
50
|
+
// The help center (content/docs/, pages from @lupinum/ginko-docs) at /help; app/pages/help/index.vue is its start page.
|
|
51
|
+
docs: docsCollection({ locales, base: '/help' }),
|
|
52
|
+
// One file per release (content/changelog/), newest first: version, date and the text, which starts with one
|
|
53
|
+
// sentence (the summary on the home page and in the feed), then `<!-- more -->`, then the changes under the
|
|
54
|
+
// headings New, Improved and Fixed. In the Studio, Today shows how old the newest entry is.
|
|
55
|
+
changelog: {
|
|
56
|
+
...changelog({ source: 'files' }),
|
|
57
|
+
status: { age: 'date' },
|
|
58
|
+
tasks: [
|
|
59
|
+
{ id: 'add', kind: 'create', label: { de: 'Änderung eintragen', en: 'Add a release', fr: 'Ajouter une version' } },
|
|
60
|
+
{ id: 'edit', kind: 'edit', pick: true, fields: ['version', 'date', 'body'], label: { de: 'Eintrag bearbeiten', en: 'Edit a release', fr: 'Modifier une version' } },
|
|
61
|
+
],
|
|
62
|
+
},
|
|
63
|
+
// Short lines at the top of every page ("New in 4.6: …"), each until a date (content/notices/).
|
|
64
|
+
notices: notices({ source: 'files' }),
|
|
65
|
+
// The plans, each with a price per month and per year in `currency`, or "on request" (content/pricing/).
|
|
66
|
+
pricing: pricing({ source: 'files' }),
|
|
67
|
+
// Questions and answers: billing, cancellation, data export, data location (content/faq/).
|
|
68
|
+
faq: faq({ source: 'files' }),
|
|
69
|
+
// The first screen of the home page and its lists (content/home.md): what the product does and for whom, the link
|
|
70
|
+
// to the free trial in the app, a picture of the product, its main features and the facts about security and data.
|
|
71
|
+
home: single({
|
|
72
|
+
label: { de: 'Startseite', en: 'Home page', fr: 'Page d’accueil' },
|
|
73
|
+
source: 'files',
|
|
74
|
+
fields: {
|
|
75
|
+
title: f.text({ de: 'Titel', en: 'Title', fr: 'Titre' }, { max: 100, default: 'Welcome' }),
|
|
76
|
+
lead: f.longtext({ de: 'Einleitung', en: 'Lead', fr: 'Introduction' }, { max: 300, default: 'A short introduction: who you are and what you offer.' }),
|
|
77
|
+
image: f.image({ de: 'Bild des Produkts', en: 'Picture of the product', fr: 'Image du produit' }, { optional: true }),
|
|
78
|
+
trialUrl: f.text({ de: 'Link zum kostenlosen Test', en: 'Link to the free trial', fr: 'Lien vers l’essai gratuit' }, {
|
|
79
|
+
format: 'url',
|
|
80
|
+
translate: false,
|
|
81
|
+
default: 'https://app.planwerk.example/signup',
|
|
82
|
+
hint: { de: 'Die Anmeldeseite der App.', en: 'The sign-up page of the app.', fr: 'La page d’inscription de l’application.' },
|
|
83
|
+
}),
|
|
84
|
+
features: f.list({ de: 'Funktionen', en: 'Features', fr: 'Fonctionnalités' }, { max: 6, itemLabel: { de: 'Funktion', en: 'Feature', fr: 'Fonctionnalité' }, fields: point, default: [] }),
|
|
85
|
+
facts: f.list({ de: 'Sicherheit und Daten', en: 'Security and data', fr: 'Sécurité et données' }, { max: 4, itemLabel: { de: 'Punkt', en: 'Fact', fr: 'Point' }, fields: point, default: [] }),
|
|
86
|
+
},
|
|
87
|
+
}),
|
|
88
|
+
// Legal name, address, register entry, VAT number, phone and email for the footer, the imprint, the email of the
|
|
89
|
+
// plan on request and the Organization JSON-LD (content/site.md).
|
|
90
|
+
site: site({ source: 'files' }),
|
|
91
|
+
// Privacy policy, terms of service and imprint: one file per text in content/legal/.
|
|
92
|
+
legal: legal({ source: 'files', route: localized('/legal/[slug]') }),
|
|
93
|
+
// Product news, newest first (content/posts/). `authors` names entries of `people`. A file with `draft: true` never
|
|
94
|
+
// goes online. In the Studio, "Write a post" on Today.
|
|
95
|
+
posts: {
|
|
96
|
+
...posts({ source: 'files', authors: 'people', route: localized('/news/[slug]') }),
|
|
97
|
+
drafts: true,
|
|
98
|
+
tasks: [{ id: 'write', kind: 'create', label: { de: 'Beitrag schreiben', en: 'Write a post', fr: 'Écrire un article' } }],
|
|
99
|
+
},
|
|
100
|
+
// The people who write the posts (content/people/). No photos: the site shows initials.
|
|
101
|
+
people: people({ source: 'files' }),
|
|
102
|
+
// Customer logos on the home page (content/logos/, the files in public/logos/).
|
|
103
|
+
logos: logos({ source: 'files' }),
|
|
104
|
+
// What customers say, on the home page (content/quotes/), with their permission.
|
|
105
|
+
quotes: quotes({ source: 'files' }),
|
|
106
|
+
// Security, about us, contact and any other page (content/pages/).
|
|
107
|
+
pages: pages({ route: localized('/[slug]'), source: 'files' }),
|
|
108
|
+
},
|
|
109
|
+
})
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "Neuigkeiten",
|
|
3
|
+
"lead": "Was passiert ist und was als Nächstes kommt.",
|
|
4
|
+
"by": "von {names}",
|
|
5
|
+
"authors": "Geschrieben von",
|
|
6
|
+
"tags": "Schlagwörter",
|
|
7
|
+
"all": "Alle Beiträge zeigen",
|
|
8
|
+
"empty": "Noch keine Beiträge",
|
|
9
|
+
"feed": "RSS-Feed",
|
|
10
|
+
"latest": "Alle Neuigkeiten",
|
|
11
|
+
"tagged": "Beiträge mit dem Schlagwort {tag}",
|
|
12
|
+
"count": "{count, plural, one {# Beitrag} other {# Beiträge}}",
|
|
13
|
+
"topicCount": "{name}, {count, plural, one {# Beitrag} other {# Beiträge}}",
|
|
14
|
+
"minutes": "{count} Min. Lesezeit",
|
|
15
|
+
"older": "Älterer Beitrag",
|
|
16
|
+
"newer": "Neuerer Beitrag",
|
|
17
|
+
"pager": "Ältere und neuere Beiträge"
|
|
18
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "News",
|
|
3
|
+
"lead": "What happened, and what comes next.",
|
|
4
|
+
"by": "by {names}",
|
|
5
|
+
"authors": "Written by",
|
|
6
|
+
"tags": "Tags",
|
|
7
|
+
"all": "Show all posts",
|
|
8
|
+
"empty": "No posts yet",
|
|
9
|
+
"feed": "RSS feed",
|
|
10
|
+
"latest": "All news",
|
|
11
|
+
"tagged": "Posts tagged {tag}",
|
|
12
|
+
"count": "{count, plural, one {# post} other {# posts}}",
|
|
13
|
+
"topicCount": "{name}, {count, plural, one {# post} other {# posts}}",
|
|
14
|
+
"minutes": "{count} min read",
|
|
15
|
+
"older": "Older post",
|
|
16
|
+
"newer": "Newer post",
|
|
17
|
+
"pager": "Older and newer posts"
|
|
18
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "Actualités",
|
|
3
|
+
"lead": "Ce qui s’est passé, et ce qui vient ensuite.",
|
|
4
|
+
"by": "par {names}",
|
|
5
|
+
"authors": "Écrit par",
|
|
6
|
+
"tags": "Mots-clés",
|
|
7
|
+
"all": "Voir tous les articles",
|
|
8
|
+
"empty": "Pas encore d’articles",
|
|
9
|
+
"feed": "Flux RSS",
|
|
10
|
+
"latest": "Toutes les actualités",
|
|
11
|
+
"tagged": "Articles avec le mot-clé « {tag} »",
|
|
12
|
+
"count": "{count, plural, one {# article} other {# articles}}",
|
|
13
|
+
"topicCount": "{name}, {count, plural, one {# article} other {# articles}}",
|
|
14
|
+
"minutes": "{count} min de lecture",
|
|
15
|
+
"older": "Article plus ancien",
|
|
16
|
+
"newer": "Article plus récent",
|
|
17
|
+
"pager": "Articles plus anciens et plus récents"
|
|
18
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "Neuerungen",
|
|
3
|
+
"lead": "Was sich am Produkt geändert hat, das Neueste zuerst.",
|
|
4
|
+
"version": "Version {version}",
|
|
5
|
+
"latest": "Neueste Versionen",
|
|
6
|
+
"all": "Alle Neuerungen",
|
|
7
|
+
"empty": "Noch keine Neuerungen",
|
|
8
|
+
"feed": "Neuerungen als RSS-Feed"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "Nouveautés",
|
|
3
|
+
"lead": "Ce qui a changé dans le produit, du plus récent au plus ancien.",
|
|
4
|
+
"version": "Version {version}",
|
|
5
|
+
"latest": "Dernières nouveautés",
|
|
6
|
+
"all": "Toutes les nouveautés",
|
|
7
|
+
"empty": "Aucune nouveauté pour l’instant",
|
|
8
|
+
"feed": "Nouveautés en flux RSS"
|
|
9
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"home": {
|
|
3
|
+
"title": "Dienstplanung für Pflegeheime und kleine Kliniken",
|
|
4
|
+
"trial": "Kostenlos testen",
|
|
5
|
+
"pricing": "Preise ansehen",
|
|
6
|
+
"from": "Tarife ab {price} im Monat.",
|
|
7
|
+
"trialNote": "30 Tage kostenlos, ohne Zahlungsdaten. Der Test endet von selbst.",
|
|
8
|
+
"features": "Was {name} kann",
|
|
9
|
+
"featuresLead": "Vom Monatsdienstplan bis zu den Stunden für die Lohnabrechnung, an einem Ort.",
|
|
10
|
+
"customers": "Kunden",
|
|
11
|
+
"customersLead": "Pflegeheime und Kliniken, die mit {name} planen.",
|
|
12
|
+
"security": "Sicherheit und Daten",
|
|
13
|
+
"securityMore": "Wie wir Ihre Daten schützen",
|
|
14
|
+
"cta": {
|
|
15
|
+
"title": "Planen Sie die Dienste des nächsten Monats mit {name}.",
|
|
16
|
+
"text": "Testen Sie {name} 30 Tage mit Ihrem eigenen Team, ohne Zahlungsdaten."
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"faq": {
|
|
20
|
+
"title": "Häufige Fragen",
|
|
21
|
+
"lead": "Antworten zu Abrechnung, Vertrag, Ihren Daten und dem Test."
|
|
22
|
+
},
|
|
23
|
+
"pricing": {
|
|
24
|
+
"lead": "Ein Preis pro Pflegeheim oder Klinik, für alle Beschäftigten. Sie wechseln jederzeit in einen größeren Tarif; in einen kleineren wechseln oder kündigen Sie zum Ende des Abrechnungszeitraums.",
|
|
25
|
+
"questions": "Fragen zur Abrechnung",
|
|
26
|
+
"allQuestions": "Alle Fragen und Antworten"
|
|
27
|
+
},
|
|
28
|
+
"blog": {
|
|
29
|
+
"title": "Blog",
|
|
30
|
+
"lead": "Neues aus dem Produkt, und wie Pflegeheime ihre Dienste planen.",
|
|
31
|
+
"latest": "Alle Beiträge"
|
|
32
|
+
},
|
|
33
|
+
"changelog": {
|
|
34
|
+
"lead": "Was sich an {name} geändert hat, das Neueste zuerst: neue Funktionen, Verbesserungen und behobene Fehler."
|
|
35
|
+
},
|
|
36
|
+
"about": {
|
|
37
|
+
"team": "Das Team"
|
|
38
|
+
},
|
|
39
|
+
"help": {
|
|
40
|
+
"title": "Hilfe",
|
|
41
|
+
"lead": "Anleitungen für die Dienstplanung, vom ersten Plan bis zum Export für die Lohnabrechnung. Durchsuchen Sie sie oder beginnen Sie mit einem Thema.",
|
|
42
|
+
"stuck": "Keine Antwort gefunden?",
|
|
43
|
+
"stuckText": "Schreiben Sie uns oder rufen Sie an, mit dem Namen Ihres Hauses; wir antworten an Werktagen, meist am selben Tag."
|
|
44
|
+
},
|
|
45
|
+
"docs": {
|
|
46
|
+
"searchPlaceholder": "Hilfe durchsuchen…"
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"home": {
|
|
3
|
+
"title": "Shift planning for care homes and small clinics",
|
|
4
|
+
"trial": "Start free trial",
|
|
5
|
+
"pricing": "See pricing",
|
|
6
|
+
"from": "Plans from {price} a month.",
|
|
7
|
+
"trialNote": "Free for 30 days, with no payment details. The trial ends by itself.",
|
|
8
|
+
"features": "What {name} does",
|
|
9
|
+
"featuresLead": "From the monthly rota to the hours for payroll, in one place.",
|
|
10
|
+
"customers": "Customers",
|
|
11
|
+
"customersLead": "Care homes and clinics that plan with {name}.",
|
|
12
|
+
"security": "Security and data",
|
|
13
|
+
"securityMore": "How we protect your data",
|
|
14
|
+
"cta": {
|
|
15
|
+
"title": "Plan next month’s shifts with {name}.",
|
|
16
|
+
"text": "Try it for 30 days with your own team, without payment details."
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"faq": {
|
|
20
|
+
"title": "FAQ",
|
|
21
|
+
"lead": "Questions and answers about billing, contracts, your data and the trial."
|
|
22
|
+
},
|
|
23
|
+
"pricing": {
|
|
24
|
+
"lead": "One price per care home or clinic, for all its staff. Upgrade at any time; downgrade or cancel at the end of a billing period.",
|
|
25
|
+
"questions": "Questions about billing",
|
|
26
|
+
"allQuestions": "All questions and answers"
|
|
27
|
+
},
|
|
28
|
+
"blog": {
|
|
29
|
+
"title": "Blog",
|
|
30
|
+
"lead": "Product news, and how care homes plan their shifts.",
|
|
31
|
+
"latest": "All posts"
|
|
32
|
+
},
|
|
33
|
+
"changelog": {
|
|
34
|
+
"lead": "What changed in {name}, newest first: new features, improvements and fixes."
|
|
35
|
+
},
|
|
36
|
+
"about": {
|
|
37
|
+
"team": "The team"
|
|
38
|
+
},
|
|
39
|
+
"help": {
|
|
40
|
+
"title": "Help",
|
|
41
|
+
"lead": "Guides for planners, from the first rota to the payroll export. Search them, or start with a topic.",
|
|
42
|
+
"stuck": "Still stuck?",
|
|
43
|
+
"stuckText": "Write to us or call us with the name of your home; we answer on working days, usually the same day."
|
|
44
|
+
},
|
|
45
|
+
"docs": {
|
|
46
|
+
"searchPlaceholder": "Search help…"
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"home": {
|
|
3
|
+
"title": "Planning des équipes pour EHPAD et petites cliniques",
|
|
4
|
+
"trial": "Commencer l’essai gratuit",
|
|
5
|
+
"pricing": "Voir les tarifs",
|
|
6
|
+
"from": "Formules à partir de {price} par mois.",
|
|
7
|
+
"trialNote": "Gratuit pendant 30 jours, sans moyen de paiement. L’essai s’arrête de lui-même.",
|
|
8
|
+
"features": "Ce que fait {name}",
|
|
9
|
+
"featuresLead": "Du planning du mois aux heures pour la paie, au même endroit.",
|
|
10
|
+
"customers": "Clients",
|
|
11
|
+
"customersLead": "Des EHPAD et des cliniques qui planifient avec {name}.",
|
|
12
|
+
"security": "Sécurité et données",
|
|
13
|
+
"securityMore": "Comment nous protégeons vos données",
|
|
14
|
+
"cta": {
|
|
15
|
+
"title": "Planifiez les équipes du mois prochain avec {name}.",
|
|
16
|
+
"text": "Essayez {name} pendant 30 jours avec votre propre équipe, sans moyen de paiement."
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"faq": {
|
|
20
|
+
"title": "Questions fréquentes",
|
|
21
|
+
"lead": "Les réponses sur la facturation, le contrat, vos données et l’essai."
|
|
22
|
+
},
|
|
23
|
+
"pricing": {
|
|
24
|
+
"lead": "Un prix par établissement, pour tout son personnel. Passez à une offre plus grande à tout moment ; passez à une offre plus petite ou résiliez à la fin de la période de facturation.",
|
|
25
|
+
"questions": "Questions sur la facturation",
|
|
26
|
+
"allQuestions": "Toutes les questions"
|
|
27
|
+
},
|
|
28
|
+
"blog": {
|
|
29
|
+
"title": "Blog",
|
|
30
|
+
"lead": "Les nouveautés du produit, et comment les établissements planifient leurs équipes.",
|
|
31
|
+
"latest": "Tous les articles"
|
|
32
|
+
},
|
|
33
|
+
"changelog": {
|
|
34
|
+
"lead": "Ce qui a changé dans {name}, du plus récent au plus ancien : nouvelles fonctions, améliorations et corrections."
|
|
35
|
+
},
|
|
36
|
+
"about": {
|
|
37
|
+
"team": "L’équipe"
|
|
38
|
+
},
|
|
39
|
+
"help": {
|
|
40
|
+
"title": "Aide",
|
|
41
|
+
"lead": "Des guides pour la planification, du premier planning à l’export pour la paie. Lancez une recherche ou commencez par un sujet.",
|
|
42
|
+
"stuck": "Pas de réponse ?",
|
|
43
|
+
"stuckText": "Écrivez-nous ou appelez-nous en indiquant le nom de votre établissement ; nous répondons les jours ouvrés, en général le jour même."
|
|
44
|
+
},
|
|
45
|
+
"docs": {
|
|
46
|
+
"searchPlaceholder": "Rechercher dans l’aide…"
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "Preise",
|
|
3
|
+
"lead": "Was jeder Tarif kostet und was er enthält.",
|
|
4
|
+
"empty": "Noch keine Tarife",
|
|
5
|
+
"recommended": "Empfohlen",
|
|
6
|
+
"perMonth": "pro Monat",
|
|
7
|
+
"orYearly": "oder {price} jährlich",
|
|
8
|
+
"onRequest": "Auf Anfrage",
|
|
9
|
+
"free": "Kostenlos",
|
|
10
|
+
"included": "Enthalten",
|
|
11
|
+
"net": "Alle Preise zzgl. MwSt.",
|
|
12
|
+
"gross": "Alle Preise inkl. MwSt.",
|
|
13
|
+
"subject": "Anfrage: {plan}"
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "Pricing",
|
|
3
|
+
"lead": "What each plan costs and what it includes.",
|
|
4
|
+
"empty": "No plans yet",
|
|
5
|
+
"recommended": "Recommended",
|
|
6
|
+
"perMonth": "per month",
|
|
7
|
+
"orYearly": "or {price} per year",
|
|
8
|
+
"onRequest": "On request",
|
|
9
|
+
"free": "Free",
|
|
10
|
+
"included": "Included",
|
|
11
|
+
"net": "All prices plus VAT.",
|
|
12
|
+
"gross": "All prices include VAT.",
|
|
13
|
+
"subject": "Enquiry: {plan}"
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "Tarifs",
|
|
3
|
+
"lead": "Ce que coûte chaque offre et ce qu’elle comprend.",
|
|
4
|
+
"empty": "Aucune offre pour l’instant",
|
|
5
|
+
"recommended": "Recommandé",
|
|
6
|
+
"perMonth": "par mois",
|
|
7
|
+
"orYearly": "ou {price} par an",
|
|
8
|
+
"onRequest": "Sur demande",
|
|
9
|
+
"free": "Gratuit",
|
|
10
|
+
"included": "Inclus",
|
|
11
|
+
"net": "Tous les prix s’entendent hors TVA.",
|
|
12
|
+
"gross": "Tous les prix s’entendent TVA comprise.",
|
|
13
|
+
"subject": "Demande : {plan}"
|
|
14
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skip": "Zum Inhalt springen",
|
|
3
|
+
"home": "Startseite",
|
|
4
|
+
"nav": {
|
|
5
|
+
"label": "Hauptnavigation",
|
|
6
|
+
"open": "Navigation öffnen",
|
|
7
|
+
"title": "Navigation"
|
|
8
|
+
},
|
|
9
|
+
"close": "Schließen",
|
|
10
|
+
"theme": "Dunkles Design",
|
|
11
|
+
"language": {
|
|
12
|
+
"label": "Sprache",
|
|
13
|
+
"untranslated": "{language}: Diese Seite ist nicht übersetzt, zur Startseite"
|
|
14
|
+
},
|
|
15
|
+
"footer": {
|
|
16
|
+
"pages": "Seiten",
|
|
17
|
+
"contact": "Kontakt",
|
|
18
|
+
"legal": "Rechtliches",
|
|
19
|
+
"links": "Anderswo"
|
|
20
|
+
},
|
|
21
|
+
"notice": "Hinweis",
|
|
22
|
+
"updated": "Stand: {date}",
|
|
23
|
+
"empty": "Legen Sie eine Datei in <code>{path}</code> an.",
|
|
24
|
+
"error": {
|
|
25
|
+
"code": "Fehler {code}",
|
|
26
|
+
"notFound": "Seite nicht gefunden",
|
|
27
|
+
"notFoundText": "Vielleicht ist die Adresse falsch geschrieben, oder die Seite wurde verschoben.",
|
|
28
|
+
"failed": "Etwas ist schiefgelaufen",
|
|
29
|
+
"failedText": "Bitte laden Sie die Seite neu. Wenn der Fehler bleibt, versuchen Sie es später noch einmal.",
|
|
30
|
+
"home": "Zur Startseite"
|
|
31
|
+
},
|
|
32
|
+
"imprint": {
|
|
33
|
+
"address": "Anschrift",
|
|
34
|
+
"registry": "Registereintrag",
|
|
35
|
+
"vat": "Umsatzsteuer-ID",
|
|
36
|
+
"email": "E-Mail",
|
|
37
|
+
"phone": "Telefon"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skip": "Skip to content",
|
|
3
|
+
"home": "Home",
|
|
4
|
+
"nav": {
|
|
5
|
+
"label": "Main",
|
|
6
|
+
"open": "Open navigation",
|
|
7
|
+
"title": "Navigation"
|
|
8
|
+
},
|
|
9
|
+
"close": "Close",
|
|
10
|
+
"theme": "Dark mode",
|
|
11
|
+
"language": {
|
|
12
|
+
"label": "Language",
|
|
13
|
+
"untranslated": "{language}: this page is not translated, go to the home page"
|
|
14
|
+
},
|
|
15
|
+
"footer": {
|
|
16
|
+
"pages": "Pages",
|
|
17
|
+
"contact": "Contact",
|
|
18
|
+
"legal": "Legal",
|
|
19
|
+
"links": "Elsewhere"
|
|
20
|
+
},
|
|
21
|
+
"notice": "Notice",
|
|
22
|
+
"updated": "Last updated {date}",
|
|
23
|
+
"empty": "Add a file to <code>{path}</code>.",
|
|
24
|
+
"error": {
|
|
25
|
+
"code": "Error {code}",
|
|
26
|
+
"notFound": "Page not found",
|
|
27
|
+
"notFoundText": "The address may be mistyped, or the page has moved.",
|
|
28
|
+
"failed": "Something went wrong",
|
|
29
|
+
"failedText": "Please reload the page. If the error stays, try again later.",
|
|
30
|
+
"home": "Go to the home page"
|
|
31
|
+
},
|
|
32
|
+
"imprint": {
|
|
33
|
+
"address": "Address",
|
|
34
|
+
"registry": "Register",
|
|
35
|
+
"vat": "VAT number",
|
|
36
|
+
"email": "Email",
|
|
37
|
+
"phone": "Phone"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skip": "Aller au contenu",
|
|
3
|
+
"home": "Accueil",
|
|
4
|
+
"nav": {
|
|
5
|
+
"label": "Principal",
|
|
6
|
+
"open": "Ouvrir le menu",
|
|
7
|
+
"title": "Menu"
|
|
8
|
+
},
|
|
9
|
+
"close": "Fermer",
|
|
10
|
+
"theme": "Mode sombre",
|
|
11
|
+
"language": {
|
|
12
|
+
"label": "Langue",
|
|
13
|
+
"untranslated": "{language} : cette page n’est pas traduite, aller à l’accueil"
|
|
14
|
+
},
|
|
15
|
+
"footer": {
|
|
16
|
+
"pages": "Pages",
|
|
17
|
+
"contact": "Contact",
|
|
18
|
+
"legal": "Informations légales",
|
|
19
|
+
"links": "Ailleurs"
|
|
20
|
+
},
|
|
21
|
+
"notice": "Avis",
|
|
22
|
+
"updated": "Dernière mise à jour le {date}",
|
|
23
|
+
"empty": "Ajoutez un fichier dans <code>{path}</code>.",
|
|
24
|
+
"error": {
|
|
25
|
+
"code": "Erreur {code}",
|
|
26
|
+
"notFound": "Page introuvable",
|
|
27
|
+
"notFoundText": "L’adresse contient peut-être une faute de frappe, ou la page a été déplacée.",
|
|
28
|
+
"failed": "Une erreur s’est produite",
|
|
29
|
+
"failedText": "Veuillez recharger la page. Si l’erreur persiste, réessayez plus tard.",
|
|
30
|
+
"home": "Aller à l’accueil"
|
|
31
|
+
},
|
|
32
|
+
"imprint": {
|
|
33
|
+
"address": "Adresse",
|
|
34
|
+
"registry": "Immatriculation",
|
|
35
|
+
"vat": "Numéro de TVA",
|
|
36
|
+
"email": "E-mail",
|
|
37
|
+
"phone": "Téléphone"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// Synced from templates/_features/site/modules/feature-messages.ts by `pnpm templates sync`. Edit the source, not this copy.
|
|
2
|
+
import { readdirSync, statSync } from 'node:fs'
|
|
3
|
+
import type {} from '@lupinum/ginko-i18n'
|
|
4
|
+
import { createResolver, defineNuxtModule } from 'nuxt/kit'
|
|
5
|
+
|
|
6
|
+
// The texts of the shared components: each folder in i18n/ (i18n/site/en.json, …) is read under its folder name, so
|
|
7
|
+
// `useI18n('site')` finds them. The site's own i18n/<code>.json still wins per key, so a text is changed there, not
|
|
8
|
+
// in the shared files. Files of a language the site does not have are ignored.
|
|
9
|
+
export default defineNuxtModule({
|
|
10
|
+
meta: { name: 'feature-messages' },
|
|
11
|
+
setup(_options, nuxt) {
|
|
12
|
+
const { resolve } = createResolver(nuxt.options.rootDir)
|
|
13
|
+
const root = resolve('i18n')
|
|
14
|
+
const folders = readdirSync(root).filter((name) => statSync(resolve('i18n', name)).isDirectory())
|
|
15
|
+
nuxt.hook('ginko-i18n:sources', (sources) => {
|
|
16
|
+
for (const namespace of folders) sources.push({ namespace, dir: resolve('i18n', namespace) })
|
|
17
|
+
})
|
|
18
|
+
},
|
|
19
|
+
})
|