create-ginko 0.5.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 +6 -0
- package/package.json +1 -1
- package/templates/blog/ginko.config.ts +2 -2
- package/templates/company/ginko.config.ts +4 -3
- package/templates/events/ginko.config.ts +2 -2
- package/templates/local-business/ginko.config.ts +3 -2
- package/templates/nonprofit/ginko.config.ts +2 -2
- package/templates/portfolio/ginko.config.ts +2 -2
- package/templates/restaurant/ginko.config.ts +6 -5
- package/templates/saas/ginko.config.ts +5 -4
- package/templates/starter/ginko.config.ts +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# create-ginko
|
|
2
2
|
|
|
3
|
+
## 0.6.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#28](https://github.com/lupinum-dev/ginko/pull/28) [`3246028`](https://github.com/lupinum-dev/ginko/commit/3246028d0b767801950f6f54f49e7edddd204143) Thanks [@Mat4m0](https://github.com/Mat4m0)! - Fix the first release of a template or a docs home on the platform: every required field of a single now has a default (or is optional), so the platform can create its entry.
|
|
8
|
+
|
|
3
9
|
## 0.5.0
|
|
4
10
|
|
|
5
11
|
### Minor Changes
|
package/package.json
CHANGED
|
@@ -35,8 +35,8 @@ export default defineSite({
|
|
|
35
35
|
label: { en: 'Home page', de: 'Startseite', fr: 'Page d’accueil' },
|
|
36
36
|
source: 'files',
|
|
37
37
|
fields: {
|
|
38
|
-
title: f.text({ en: 'Title', de: 'Titel', fr: 'Titre' }, { max: 80 }),
|
|
39
|
-
lead: f.longtext({ en: 'Lead', de: 'Einleitung', fr: 'Introduction' }, { max: 300 }),
|
|
38
|
+
title: f.text({ en: 'Title', de: 'Titel', fr: 'Titre' }, { max: 80, default: 'Welcome' }),
|
|
39
|
+
lead: f.longtext({ en: 'Lead', de: 'Einleitung', fr: 'Introduction' }, { max: 300, default: 'A short introduction: who you are and what you offer.' }),
|
|
40
40
|
},
|
|
41
41
|
}),
|
|
42
42
|
// The posts, newest first (content/posts/). `authors` names entries of `people`. A file with `draft: true` never
|
|
@@ -42,8 +42,8 @@ export default defineSite({
|
|
|
42
42
|
label: { de: 'Startseite', en: 'Home page' },
|
|
43
43
|
source: 'files',
|
|
44
44
|
fields: {
|
|
45
|
-
title: f.text({ de: 'Titel', en: 'Title' }, { max: 100 }),
|
|
46
|
-
lead: f.longtext({ de: 'Einleitung', en: 'Lead' }, { max: 300 }),
|
|
45
|
+
title: f.text({ de: 'Titel', en: 'Title' }, { max: 100, default: 'Welcome' }),
|
|
46
|
+
lead: f.longtext({ de: 'Einleitung', en: 'Lead' }, { max: 300, default: 'A short introduction: who you are and what you offer.' }),
|
|
47
47
|
image: f.image({ de: 'Bild', en: 'Image' }, { optional: true }),
|
|
48
48
|
},
|
|
49
49
|
}),
|
|
@@ -53,9 +53,10 @@ export default defineSite({
|
|
|
53
53
|
label: { de: 'Service-Nummer', en: 'Service line' },
|
|
54
54
|
source: 'files',
|
|
55
55
|
fields: {
|
|
56
|
-
contact: f.ref({ de: 'Wer antwortet', en: 'Who answers' }, { to: 'people' }),
|
|
56
|
+
contact: f.ref({ de: 'Wer antwortet', en: 'Who answers' }, { to: 'people', optional: true }),
|
|
57
57
|
hours: f.text({ de: 'Erreichbar', en: 'Hours' }, {
|
|
58
58
|
max: 80,
|
|
59
|
+
default: 'Mon–Fri 8:00–17:00',
|
|
59
60
|
hint: { de: 'Kurz, zum Beispiel „Mo–Fr 7–17 Uhr, Sa 8–12 Uhr“.', en: 'Short, for example “Mon–Fri 7:00–17:00, Sat 8:00–12:00”.' },
|
|
60
61
|
}),
|
|
61
62
|
},
|
|
@@ -40,8 +40,8 @@ export default defineSite({
|
|
|
40
40
|
label: { de: 'Startseite', en: 'Home page' },
|
|
41
41
|
source: 'files',
|
|
42
42
|
fields: {
|
|
43
|
-
title: f.text({ de: 'Titel', en: 'Title' }, { max: 80 }),
|
|
44
|
-
lead: f.longtext({ de: 'Einleitung', en: 'Lead' }, { max: 300 }),
|
|
43
|
+
title: f.text({ de: 'Titel', en: 'Title' }, { max: 80, default: 'Welcome' }),
|
|
44
|
+
lead: f.longtext({ de: 'Einleitung', en: 'Lead' }, { max: 300, default: 'A short introduction: who you are and what you offer.' }),
|
|
45
45
|
image: f.image({ de: 'Bild', en: 'Image' }, { optional: true }),
|
|
46
46
|
},
|
|
47
47
|
}),
|
|
@@ -56,6 +56,7 @@ export default defineSite({
|
|
|
56
56
|
fields: {
|
|
57
57
|
phoneHours: f.text({ de: 'Telefonisch erreichbar', en: 'Phone hours' }, {
|
|
58
58
|
max: 80,
|
|
59
|
+
default: 'Mon–Fri 8:00–12:00',
|
|
59
60
|
hint: { de: 'Kurz, zum Beispiel „Mo–Fr 08:00–12:00“.', en: 'Short, for example “Mon–Fri 08:00–12:00”.' },
|
|
60
61
|
}),
|
|
61
62
|
bookingUrl: f.text({ de: 'Online-Terminbuchung', en: 'Online booking' }, {
|
|
@@ -81,8 +82,8 @@ export default defineSite({
|
|
|
81
82
|
label: { de: 'Startseite', en: 'Home page' },
|
|
82
83
|
source: 'files',
|
|
83
84
|
fields: {
|
|
84
|
-
title: f.text({ de: 'Titel', en: 'Title' }, { max: 80 }),
|
|
85
|
-
lead: f.longtext({ de: 'Einleitung', en: 'Lead' }, { max: 200 }),
|
|
85
|
+
title: f.text({ de: 'Titel', en: 'Title' }, { max: 80, default: 'Welcome' }),
|
|
86
|
+
lead: f.longtext({ de: 'Einleitung', en: 'Lead' }, { max: 200, default: 'A short introduction: who you are and what you offer.' }),
|
|
86
87
|
image: f.image({ de: 'Foto', en: 'Photo' }, { optional: true }),
|
|
87
88
|
},
|
|
88
89
|
}),
|
|
@@ -39,8 +39,8 @@ export default defineSite({
|
|
|
39
39
|
label: { de: 'Startseite', en: 'Home page', fr: 'Page d’accueil' },
|
|
40
40
|
source: 'files',
|
|
41
41
|
fields: {
|
|
42
|
-
title: f.text({ de: 'Titel', en: 'Title', fr: 'Titre' }, { max: 80 }),
|
|
43
|
-
lead: f.longtext({ de: 'Einleitung', en: 'Lead', fr: 'Introduction' }, { max: 300 }),
|
|
42
|
+
title: f.text({ de: 'Titel', en: 'Title', fr: 'Titre' }, { max: 80, default: 'Welcome' }),
|
|
43
|
+
lead: f.longtext({ de: 'Einleitung', en: 'Lead', fr: 'Introduction' }, { max: 300, default: 'A short introduction: who you are and what you offer.' }),
|
|
44
44
|
image: f.image({ de: 'Bild', en: 'Image', fr: 'Image' }, { optional: true }),
|
|
45
45
|
},
|
|
46
46
|
}),
|
|
@@ -37,8 +37,8 @@ export default defineSite({
|
|
|
37
37
|
label: { de: 'Startseite', en: 'Home page' },
|
|
38
38
|
source: 'files',
|
|
39
39
|
fields: {
|
|
40
|
-
title: f.text({ de: 'Titel', en: 'Title' }, { max: 100 }),
|
|
41
|
-
lead: f.longtext({ de: 'Einleitung', en: 'Lead' }, { max: 300 }),
|
|
40
|
+
title: f.text({ de: 'Titel', en: 'Title' }, { max: 100, default: 'Welcome' }),
|
|
41
|
+
lead: f.longtext({ de: 'Einleitung', en: 'Lead' }, { max: 300, default: 'A short introduction: who you are and what you offer.' }),
|
|
42
42
|
},
|
|
43
43
|
}),
|
|
44
44
|
// Legal name, address, phone and email for the footer, the imprint, the "Start a project" email and the studio's
|
|
@@ -9,7 +9,8 @@ import { pages } from './app/bricks/pages.ts'
|
|
|
9
9
|
import { locales, localized } from './app/routes.ts'
|
|
10
10
|
import { siteUrl } from './site-url.ts'
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
// `weekOf`: the start value of the lunch week on the platform (a Monday); the weekly task sets the current week.
|
|
13
|
+
const lunchBrick = lunch({ source: 'files', weekOf: '2026-10-12' })
|
|
13
14
|
|
|
14
15
|
export default defineSite({
|
|
15
16
|
site: 'restaurant',
|
|
@@ -37,8 +38,8 @@ export default defineSite({
|
|
|
37
38
|
label: { en: 'Home page', de: 'Startseite' },
|
|
38
39
|
source: 'files',
|
|
39
40
|
fields: {
|
|
40
|
-
title: f.text({ en: 'Title', de: 'Titel' }, { max: 80 }),
|
|
41
|
-
lead: f.longtext({ en: 'Lead', de: 'Einleitung' }, { max: 300 }),
|
|
41
|
+
title: f.text({ en: 'Title', de: 'Titel' }, { max: 80, default: 'Welcome' }),
|
|
42
|
+
lead: f.longtext({ en: 'Lead', de: 'Einleitung' }, { max: 300, default: 'A short introduction: who you are and what you offer.' }),
|
|
42
43
|
image: f.image({ en: 'Photo', de: 'Foto' }, { optional: true }),
|
|
43
44
|
},
|
|
44
45
|
}),
|
|
@@ -48,9 +49,9 @@ export default defineSite({
|
|
|
48
49
|
label: { en: 'Reservations', de: 'Reservierung' },
|
|
49
50
|
source: 'files',
|
|
50
51
|
fields: {
|
|
51
|
-
title: f.text({ en: 'Title', de: 'Titel' }, { max: 80 }),
|
|
52
|
+
title: f.text({ en: 'Title', de: 'Titel' }, { max: 80, default: 'Reservations' }),
|
|
52
53
|
lead: f.longtext({ en: 'Lead', de: 'Einleitung' }, { max: 300, optional: true }),
|
|
53
|
-
body: f.markdown({ en: 'Text', de: 'Text' }, { profile: 'page' }),
|
|
54
|
+
body: f.markdown({ en: 'Text', de: 'Text' }, { profile: 'page', optional: true }),
|
|
54
55
|
},
|
|
55
56
|
}),
|
|
56
57
|
// Legal name, address, phone and email. One entry, used in the footer, the imprint, the reservation links and the
|
|
@@ -72,16 +72,17 @@ export default defineSite({
|
|
|
72
72
|
label: { de: 'Startseite', en: 'Home page', fr: 'Page d’accueil' },
|
|
73
73
|
source: 'files',
|
|
74
74
|
fields: {
|
|
75
|
-
title: f.text({ de: 'Titel', en: 'Title', fr: 'Titre' }, { max: 100 }),
|
|
76
|
-
lead: f.longtext({ de: 'Einleitung', en: 'Lead', fr: 'Introduction' }, { max: 300 }),
|
|
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
77
|
image: f.image({ de: 'Bild des Produkts', en: 'Picture of the product', fr: 'Image du produit' }, { optional: true }),
|
|
78
78
|
trialUrl: f.text({ de: 'Link zum kostenlosen Test', en: 'Link to the free trial', fr: 'Lien vers l’essai gratuit' }, {
|
|
79
79
|
format: 'url',
|
|
80
80
|
translate: false,
|
|
81
|
+
default: 'https://app.planwerk.example/signup',
|
|
81
82
|
hint: { de: 'Die Anmeldeseite der App.', en: 'The sign-up page of the app.', fr: 'La page d’inscription de l’application.' },
|
|
82
83
|
}),
|
|
83
|
-
features: f.list({ de: 'Funktionen', en: 'Features', fr: 'Fonctionnalités' }, { max: 6, itemLabel: { de: 'Funktion', en: 'Feature', fr: 'Fonctionnalité' }, fields: point }),
|
|
84
|
-
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 }),
|
|
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: [] }),
|
|
85
86
|
},
|
|
86
87
|
}),
|
|
87
88
|
// Legal name, address, register entry, VAT number, phone and email for the footer, the imprint, the email of the
|
|
@@ -25,8 +25,8 @@ export default defineSite({
|
|
|
25
25
|
label: { de: 'Startseite', en: 'Home page', fr: 'Page d’accueil' },
|
|
26
26
|
source: 'files',
|
|
27
27
|
fields: {
|
|
28
|
-
title: f.text({ de: 'Titel', en: 'Title', fr: 'Titre' }, { max: 80 }),
|
|
29
|
-
lead: f.longtext({ de: 'Einleitung', en: 'Lead', fr: 'Introduction' }, { max: 300 }),
|
|
28
|
+
title: f.text({ de: 'Titel', en: 'Title', fr: 'Titre' }, { max: 80, default: 'Welcome' }),
|
|
29
|
+
lead: f.longtext({ de: 'Einleitung', en: 'Lead', fr: 'Introduction' }, { max: 300, default: 'A short introduction: who you are and what you offer.' }),
|
|
30
30
|
body: f.markdown({ de: 'Text', en: 'Text', fr: 'Texte' }, { profile: 'page', optional: true }),
|
|
31
31
|
},
|
|
32
32
|
}),
|