@lupinum/ginko 0.4.0 → 0.5.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 +150 -0
- package/README.md +2 -2
- package/dist/basics.d.mts +492 -0
- package/dist/basics.d.ts +492 -0
- package/dist/basics.mjs +416 -0
- package/dist/cli/index.mjs +54 -55
- package/dist/index.d.mts +5 -4
- package/dist/index.d.ts +5 -4
- package/dist/index.mjs +3 -3
- package/dist/internal/search.mjs +6 -3
- package/dist/internal.d.mts +387 -41
- package/dist/internal.d.ts +387 -41
- package/dist/internal.mjs +267 -101
- package/dist/nuxt/module.d.mts +2 -2
- package/dist/nuxt/module.d.ts +2 -2
- package/dist/nuxt/module.mjs +105 -13
- package/dist/nuxt/runtime/GinkoImage.d.mts +1 -1
- package/dist/nuxt/runtime/GinkoMarkdown.mjs +2 -2
- package/dist/nuxt/runtime/composables.d.mts +4 -3
- package/dist/nuxt/runtime/composables.mjs +19 -15
- package/dist/nuxt/runtime/fetch.d.mts +3 -1
- package/dist/nuxt/runtime/fetch.mjs +12 -6
- package/dist/nuxt/runtime/markdown.d.mts +3 -0
- package/dist/nuxt/runtime/markdown.mjs +15 -3
- package/dist/nuxt/runtime/plugin.mjs +6 -35
- package/dist/nuxt/runtime/preview-listener.d.mts +13 -0
- package/dist/nuxt/runtime/preview-listener.mjs +37 -0
- package/dist/nuxt/runtime/preview.vue +3 -1
- package/dist/nuxt/runtime/schema.d.ts +6 -0
- package/dist/nuxt/runtime/server/bundles.d.ts +4 -0
- package/dist/nuxt/runtime/server/files-md.d.ts +2 -0
- package/dist/nuxt/runtime/server/files.d.ts +2 -0
- package/dist/nuxt/runtime/server/headers.d.ts +2 -0
- package/dist/nuxt/runtime/server/items.d.mts +12 -0
- package/dist/nuxt/runtime/server/items.d.ts +12 -0
- package/dist/nuxt/runtime/server/items.mjs +17 -0
- package/dist/nuxt/runtime/server/llms-full.d.ts +2 -0
- package/dist/nuxt/runtime/server/llms.d.ts +2 -0
- package/dist/nuxt/runtime/server/markdown-trees.d.ts +2 -0
- package/dist/nuxt/runtime/server/markdown.d.ts +2 -0
- package/dist/nuxt/runtime/server/markdown.mjs +1 -1
- package/dist/nuxt/runtime/server/platform-md.d.mts +3 -0
- package/dist/nuxt/runtime/server/platform-md.d.ts +3 -0
- package/dist/nuxt/runtime/server/platform-md.mjs +71 -0
- package/dist/nuxt/runtime/server/redirects.d.ts +2 -0
- package/dist/nuxt/runtime/server/robots.d.ts +2 -0
- package/dist/nuxt/runtime/server/search.d.ts +2 -0
- package/dist/nuxt/runtime/server/site-config.d.ts +14 -0
- package/dist/nuxt/runtime/server/sitemap-source.d.ts +2 -0
- package/dist/nuxt/runtime/server/sitemap-xml.d.ts +24 -0
- package/dist/nuxt/runtime/server/sitemap.d.ts +2 -0
- package/dist/nuxt/runtime/shared.d.mts +10 -3
- package/dist/nuxt/runtime/shared.mjs +2 -2
- package/dist/shared/ginko.1wwZv4B_.d.ts +1622 -0
- package/dist/shared/{ginko.BBkZW2nW.d.ts → ginko.6cI8KXZP.d.mts} +2 -2
- package/dist/shared/{ginko.CQvxhyez.mjs → ginko.AprJymER.mjs} +30 -1
- package/dist/shared/ginko.BNVC-g9n.mjs +10389 -0
- package/dist/shared/{ginko.Bwan3BB-.d.mts → ginko.B_pACpVU.d.ts} +2 -2
- package/dist/shared/{ginko.CrNRBkS5.mjs → ginko.C4gcOovG.mjs} +253 -309
- package/dist/shared/{ginko.C90fPpMP.mjs → ginko.CXA2R3aS.mjs} +128 -101
- package/dist/shared/ginko.CjWB8N7f.d.ts +128 -0
- package/dist/shared/ginko.D1PeQ3ds.mjs +36 -0
- package/dist/shared/ginko.DIl7l-75.mjs +26 -0
- package/dist/shared/ginko.DY7RbCEw.mjs +601 -0
- package/dist/shared/ginko.Dmgixfpf.mjs +130 -0
- package/dist/shared/{ginko.D-fNojn9.d.mts → ginko.DrkUeYFP.d.mts} +824 -10
- package/dist/shared/{ginko.D-fNojn9.d.ts → ginko.DrkUeYFP.d.ts} +824 -10
- package/dist/shared/{ginko.akHewCGt.d.mts → ginko.DvPtlHIz.d.mts} +50 -5
- package/dist/shared/{ginko.BDF3bW0C.d.ts → ginko.EelR5dt9.d.ts} +50 -5
- package/dist/shared/ginko.ULKQnAWd.d.ts +91 -0
- package/dist/shared/ginko.loGIxGZg.d.mts +91 -0
- package/dist/shared/ginko.o1yIKlgj.d.mts +128 -0
- package/dist/shared/ginko.plW4dLmm.d.mts +1622 -0
- package/dist/shared/{ginko.Dht0xxE5.mjs → ginko.raCzOPYC.mjs} +1 -2
- package/dist/shared/ginko.yKMIjJ68.mjs +84 -0
- package/dist/vue.d.mts +5 -4
- package/dist/vue.d.ts +5 -4
- package/dist/vue.mjs +1 -1
- package/i18n/ar.json +212 -0
- package/i18n/de.json +9 -1
- package/i18n/en.json +9 -1
- package/i18n/es.json +12 -4
- package/i18n/fr.json +212 -0
- package/i18n/it.json +212 -0
- package/package.json +7 -3
- package/dist/shared/ginko.BTUfZCfa.d.mts +0 -172
- package/dist/shared/ginko.C-QjDn3O.mjs +0 -4944
- package/dist/shared/ginko.Dc0oNcDv.d.ts +0 -172
- package/dist/shared/ginko.Mn30dmlm.mjs +0 -20
|
@@ -0,0 +1,492 @@
|
|
|
1
|
+
import { B as BasicsOptions, H as HoursContext } from './shared/ginko.plW4dLmm.mjs';
|
|
2
|
+
export { D as DayHours, a as DayRule, E as EventJsonLdInput, b as EventsOptions, c as Exception, d as HolidayClosure, e as HolidayNames, f as HolidaySetting, g as HourPlan, h as HoursData, i as HoursLine, j as HoursLineContext, k as HoursOptions, l as HoursSource, S as SessionJsonLdInput, m as SessionStatus, n as Span, T as Times, o as TodayState, W as Weekday, p as austrianHolidays, q as calendarIn, r as calendarOf, s as closedOnClosure, t as eventJsonLd, u as events, v as germanHolidays, w as holidayOn, x as hourPlans, y as hours, z as hoursLine, A as hoursOn, C as notices, F as noticesOn, G as offerJsonLd, I as planOn, J as sessions, K as sessionsInOrder, L as singaporeHolidays, M as spansOf, N as spansText, O as timesOf, P as todayState, Q as upcomingClosures, R as upcomingHolidayClosures, U as upcomingPlans, V as weekFor, X as weekOf, Y as weekdayOf } from './shared/ginko.plW4dLmm.mjs';
|
|
3
|
+
import { SingleBrick, Locale, CollectionBrick } from './index.mjs';
|
|
4
|
+
import { TextField, LongTextField, SlugField, ChoiceField, DateField, MarkdownField, ImageField, RefField, ListField, FileField } from './internal.mjs';
|
|
5
|
+
export { s as Holiday, t as HolidayCalendar, y as HolidayCalendarName, H as HolidaysOption, u as StoredHolidays, z as calendarOfCountry } from './shared/ginko.DrkUeYFP.mjs';
|
|
6
|
+
import { OrganizationLdInput } from './internal.mjs';
|
|
7
|
+
import { RouteTemplate } from './index.mjs';
|
|
8
|
+
export { w as withoutFiles } from './shared/ginko.DvPtlHIz.mjs';
|
|
9
|
+
import '@lupinum/ginko-i18n/core';
|
|
10
|
+
import 'comark';
|
|
11
|
+
import './shared/ginko.6cI8KXZP.mjs';
|
|
12
|
+
|
|
13
|
+
declare function site(o?: BasicsOptions): SingleBrick<{
|
|
14
|
+
legalName: TextField & {
|
|
15
|
+
readonly hint: Record<string, string>;
|
|
16
|
+
readonly optional: true;
|
|
17
|
+
readonly translate: false;
|
|
18
|
+
};
|
|
19
|
+
street: TextField & {
|
|
20
|
+
readonly optional: true;
|
|
21
|
+
readonly translate: false;
|
|
22
|
+
};
|
|
23
|
+
postalCode: TextField & {
|
|
24
|
+
readonly max: 10;
|
|
25
|
+
readonly optional: true;
|
|
26
|
+
readonly translate: false;
|
|
27
|
+
};
|
|
28
|
+
city: TextField & {
|
|
29
|
+
readonly optional: true;
|
|
30
|
+
readonly translate: false;
|
|
31
|
+
};
|
|
32
|
+
email: TextField & {
|
|
33
|
+
readonly optional: true;
|
|
34
|
+
readonly format: "email";
|
|
35
|
+
};
|
|
36
|
+
phone: TextField & {
|
|
37
|
+
readonly optional: true;
|
|
38
|
+
readonly format: "tel";
|
|
39
|
+
readonly hint: Record<string, string>;
|
|
40
|
+
};
|
|
41
|
+
registryNumber: TextField & {
|
|
42
|
+
readonly optional: true;
|
|
43
|
+
readonly translate: false;
|
|
44
|
+
};
|
|
45
|
+
registryCourt: TextField & {
|
|
46
|
+
readonly optional: true;
|
|
47
|
+
};
|
|
48
|
+
vatId: TextField & {
|
|
49
|
+
readonly optional: true;
|
|
50
|
+
readonly translate: false;
|
|
51
|
+
};
|
|
52
|
+
}>;
|
|
53
|
+
/** The values of a `site()` brick as the site reads them; every one is optional. */
|
|
54
|
+
interface SiteData {
|
|
55
|
+
legalName?: string;
|
|
56
|
+
street?: string;
|
|
57
|
+
postalCode?: string;
|
|
58
|
+
city?: string;
|
|
59
|
+
email?: string;
|
|
60
|
+
phone?: string;
|
|
61
|
+
registryNumber?: string;
|
|
62
|
+
registryCourt?: string;
|
|
63
|
+
vatId?: string;
|
|
64
|
+
}
|
|
65
|
+
interface SiteJsonLdOptions extends Pick<OrganizationLdInput, 'name' | 'url' | 'type' | 'logo' | 'sameAs'> {
|
|
66
|
+
/** ISO 3166 code such as `DE`, written as `addressCountry`. Default (in `useGinkoSeo`): `country` of the site config. */
|
|
67
|
+
country?: string;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* schema.org Organization, LocalBusiness or NGO with the address and contact of the `site()` brick. On a page whose
|
|
71
|
+
* JSON-LD has this node, the Nuxt module does not add its own Organization from `seo.organization`: pass that
|
|
72
|
+
* config's `logo` and `sameAs` here.
|
|
73
|
+
*/
|
|
74
|
+
declare function siteJsonLd(data: SiteData, o: SiteJsonLdOptions): Record<string, unknown>;
|
|
75
|
+
|
|
76
|
+
/** The kinds of legal text (`legalType`), in the agency preset's order: stored values, they never change. */
|
|
77
|
+
declare const legalTypes: readonly [{
|
|
78
|
+
readonly value: "privacy";
|
|
79
|
+
readonly label: Record<string, string>;
|
|
80
|
+
}, {
|
|
81
|
+
readonly value: "customer-privacy";
|
|
82
|
+
readonly label: Record<string, string>;
|
|
83
|
+
}, {
|
|
84
|
+
readonly value: "imprint";
|
|
85
|
+
readonly label: Record<string, string>;
|
|
86
|
+
}, {
|
|
87
|
+
readonly value: "terms";
|
|
88
|
+
readonly label: Record<string, string>;
|
|
89
|
+
}, {
|
|
90
|
+
readonly value: "cookies";
|
|
91
|
+
readonly label: Record<string, string>;
|
|
92
|
+
}, {
|
|
93
|
+
readonly value: "accessibility";
|
|
94
|
+
readonly label: Record<string, string>;
|
|
95
|
+
}];
|
|
96
|
+
interface LegalOptions<R extends Record<Locale, RouteTemplate> | undefined> extends BasicsOptions {
|
|
97
|
+
/** A page per text, e.g. `{ en: '/[slug]', de: '/de/[slug]' }`. Without it the texts have no pages of their own. */
|
|
98
|
+
route?: R;
|
|
99
|
+
}
|
|
100
|
+
declare function legal<const R extends Record<Locale, RouteTemplate> | undefined = undefined>(o?: LegalOptions<R>): CollectionBrick<{
|
|
101
|
+
readonly title: TextField & Omit<TextField, "type" | "label" | "pos" | "retired" | "default"> & {
|
|
102
|
+
default?: (string | Partial<Record<string, string>>) | undefined;
|
|
103
|
+
};
|
|
104
|
+
readonly description: LongTextField & {
|
|
105
|
+
readonly optional: true;
|
|
106
|
+
};
|
|
107
|
+
readonly slug: SlugField & {
|
|
108
|
+
readonly from: "title";
|
|
109
|
+
};
|
|
110
|
+
readonly legalType: ChoiceField<"privacy" | "customer-privacy" | "imprint" | "terms" | "cookies" | "accessibility"> & Omit<{
|
|
111
|
+
readonly options: readonly [{
|
|
112
|
+
readonly value: "privacy";
|
|
113
|
+
readonly label: Record<string, string>;
|
|
114
|
+
}, {
|
|
115
|
+
readonly value: "customer-privacy";
|
|
116
|
+
readonly label: Record<string, string>;
|
|
117
|
+
}, {
|
|
118
|
+
readonly value: "imprint";
|
|
119
|
+
readonly label: Record<string, string>;
|
|
120
|
+
}, {
|
|
121
|
+
readonly value: "terms";
|
|
122
|
+
readonly label: Record<string, string>;
|
|
123
|
+
}, {
|
|
124
|
+
readonly value: "cookies";
|
|
125
|
+
readonly label: Record<string, string>;
|
|
126
|
+
}, {
|
|
127
|
+
readonly value: "accessibility";
|
|
128
|
+
readonly label: Record<string, string>;
|
|
129
|
+
}];
|
|
130
|
+
}, "options">;
|
|
131
|
+
readonly updatedAt: DateField & Omit<DateField, "type" | "label" | "pos" | "retired" | "default"> & {
|
|
132
|
+
default?: string | undefined;
|
|
133
|
+
};
|
|
134
|
+
readonly body: MarkdownField & {
|
|
135
|
+
readonly translate: "manual";
|
|
136
|
+
};
|
|
137
|
+
}, R>;
|
|
138
|
+
|
|
139
|
+
interface PeopleOptions<R extends Record<Locale, RouteTemplate> | undefined> extends BasicsOptions {
|
|
140
|
+
/**
|
|
141
|
+
* A page per person, e.g. `{ en: '/speakers/[slug]', de: '/de/vortragende/[slug]' }`. With it, each person gets a
|
|
142
|
+
* web address (`slug`, made from the name). Without it the stored fields stay as they are.
|
|
143
|
+
*/
|
|
144
|
+
route?: R;
|
|
145
|
+
}
|
|
146
|
+
declare const slugField: () => SlugField & {
|
|
147
|
+
readonly from: "name";
|
|
148
|
+
};
|
|
149
|
+
/** The `slug` field when people have pages: its type follows `route`, so `GinkoItem` has `slug` and `url` only then. */
|
|
150
|
+
type SlugOf<R> = R extends undefined ? {} : {
|
|
151
|
+
slug: ReturnType<typeof slugField>;
|
|
152
|
+
};
|
|
153
|
+
/** People in the owner's order. Files: `content/people/<n>.<name>[.<locale>].md`. */
|
|
154
|
+
declare function people<const R extends Record<Locale, RouteTemplate> | undefined = undefined>(o?: PeopleOptions<R>): CollectionBrick<{
|
|
155
|
+
readonly name: TextField & {
|
|
156
|
+
readonly translate: false;
|
|
157
|
+
};
|
|
158
|
+
readonly role: TextField & {
|
|
159
|
+
readonly optional: true;
|
|
160
|
+
};
|
|
161
|
+
readonly bio: LongTextField & {
|
|
162
|
+
readonly optional: true;
|
|
163
|
+
};
|
|
164
|
+
readonly email: TextField & {
|
|
165
|
+
readonly optional: true;
|
|
166
|
+
readonly format: "email";
|
|
167
|
+
readonly translate: false;
|
|
168
|
+
};
|
|
169
|
+
readonly phone: TextField & {
|
|
170
|
+
readonly optional: true;
|
|
171
|
+
readonly format: "tel";
|
|
172
|
+
readonly translate: false;
|
|
173
|
+
};
|
|
174
|
+
readonly photo: ImageField & {
|
|
175
|
+
readonly optional: true;
|
|
176
|
+
};
|
|
177
|
+
} & SlugOf<R>, R>;
|
|
178
|
+
interface PersonJsonLdInput {
|
|
179
|
+
name: string;
|
|
180
|
+
/** The person's role (`jobTitle`). */
|
|
181
|
+
role?: string;
|
|
182
|
+
/** A short bio (`description`). */
|
|
183
|
+
bio?: string;
|
|
184
|
+
email?: string;
|
|
185
|
+
phone?: string;
|
|
186
|
+
/** Absolute URL of the photo. */
|
|
187
|
+
image?: string;
|
|
188
|
+
/** Absolute URL of the person's page or website. */
|
|
189
|
+
url?: string;
|
|
190
|
+
/** The organisation the person belongs to (`worksFor`). */
|
|
191
|
+
worksFor?: {
|
|
192
|
+
name: string;
|
|
193
|
+
url?: string;
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
/** schema.org Person, for an entry of `people()` or `authors()`. */
|
|
197
|
+
declare function personJsonLd(p: PersonJsonLdInput): Record<string, unknown>;
|
|
198
|
+
|
|
199
|
+
interface PostsOptions<R extends Record<Locale, RouteTemplate> | undefined> extends BasicsOptions {
|
|
200
|
+
/** A page per post, e.g. `{ en: '/blog/[slug]', de: '/de/blog/[slug]' }`. */
|
|
201
|
+
route?: R;
|
|
202
|
+
/** Most posts (default 500). */
|
|
203
|
+
max?: number;
|
|
204
|
+
/**
|
|
205
|
+
* The brick the post's `authors` name (default `'authors'`, the shape of `@lupinum/ginko-docs`). A site with a
|
|
206
|
+
* `people()` brick passes `'people'`, so a writer is one entry for the team page and the byline.
|
|
207
|
+
*/
|
|
208
|
+
authors?: string;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Posts, newest first. `authors` names entries of the `authors` brick (add `authors: authors()` to `bricks`), or of
|
|
212
|
+
* the brick given as the `authors` option (for example `people`).
|
|
213
|
+
* Files: `content/posts/<name>[.<locale>].md`.
|
|
214
|
+
*/
|
|
215
|
+
declare function posts<const R extends Record<Locale, RouteTemplate> | undefined = undefined>(o?: PostsOptions<R>): CollectionBrick<{
|
|
216
|
+
readonly title: TextField & Omit<TextField, "type" | "label" | "pos" | "retired" | "default"> & {
|
|
217
|
+
default?: (string | Partial<Record<string, string>>) | undefined;
|
|
218
|
+
};
|
|
219
|
+
readonly description: LongTextField & {
|
|
220
|
+
readonly optional: true;
|
|
221
|
+
};
|
|
222
|
+
readonly date: DateField & Omit<DateField, "type" | "label" | "pos" | "retired" | "default"> & {
|
|
223
|
+
default?: string | undefined;
|
|
224
|
+
};
|
|
225
|
+
readonly authors: RefField & {
|
|
226
|
+
multiple: true;
|
|
227
|
+
} & {
|
|
228
|
+
readonly to: string;
|
|
229
|
+
readonly optional: true;
|
|
230
|
+
};
|
|
231
|
+
readonly image: ImageField & {
|
|
232
|
+
readonly optional: true;
|
|
233
|
+
};
|
|
234
|
+
readonly tags: ListField<{
|
|
235
|
+
readonly tag: TextField & {
|
|
236
|
+
readonly max: 40;
|
|
237
|
+
};
|
|
238
|
+
}> & Omit<{
|
|
239
|
+
readonly itemLabel: Record<string, string>;
|
|
240
|
+
readonly fields: {
|
|
241
|
+
readonly tag: TextField & {
|
|
242
|
+
readonly max: 40;
|
|
243
|
+
};
|
|
244
|
+
};
|
|
245
|
+
readonly max: 10;
|
|
246
|
+
readonly optional: true;
|
|
247
|
+
}, "fields">;
|
|
248
|
+
readonly slug: SlugField & {
|
|
249
|
+
readonly from: "title";
|
|
250
|
+
};
|
|
251
|
+
readonly body: MarkdownField & {
|
|
252
|
+
readonly profile: "page";
|
|
253
|
+
};
|
|
254
|
+
}, R>;
|
|
255
|
+
/** The people who write posts; a post names them in `authors`. Files: `content/authors/<name>[.<locale>].yml`. */
|
|
256
|
+
declare function authors(o?: BasicsOptions): CollectionBrick<{
|
|
257
|
+
readonly name: TextField & Omit<TextField, "type" | "label" | "pos" | "retired" | "default"> & {
|
|
258
|
+
default?: (string | Partial<Record<string, string>>) | undefined;
|
|
259
|
+
};
|
|
260
|
+
readonly role: TextField & {
|
|
261
|
+
readonly optional: true;
|
|
262
|
+
};
|
|
263
|
+
readonly avatar: ImageField & {
|
|
264
|
+
readonly optional: true;
|
|
265
|
+
};
|
|
266
|
+
/** Shown as a link on the author's name. */
|
|
267
|
+
readonly url: TextField & {
|
|
268
|
+
readonly format: "url";
|
|
269
|
+
readonly optional: true;
|
|
270
|
+
};
|
|
271
|
+
}, undefined>;
|
|
272
|
+
interface ChangelogOptions extends BasicsOptions {
|
|
273
|
+
/** Most entries (default 500). */
|
|
274
|
+
max?: number;
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* One entry per release, newest first. Files: `content/changelog/<name>[.<locale>].md` with `version` and `date` in
|
|
278
|
+
* the frontmatter (a dot in the name reads as a language: use `v1-2-0.md`).
|
|
279
|
+
*/
|
|
280
|
+
declare function changelog(o?: ChangelogOptions): CollectionBrick<{
|
|
281
|
+
readonly version: TextField & {
|
|
282
|
+
readonly max: 40;
|
|
283
|
+
readonly translate: false;
|
|
284
|
+
};
|
|
285
|
+
readonly date: DateField & Omit<DateField, "type" | "label" | "pos" | "retired" | "default"> & {
|
|
286
|
+
default?: string | undefined;
|
|
287
|
+
};
|
|
288
|
+
readonly body: MarkdownField & {
|
|
289
|
+
readonly profile: "page";
|
|
290
|
+
};
|
|
291
|
+
}, undefined>;
|
|
292
|
+
/**
|
|
293
|
+
* The anchor of a release on a changelog page, a valid id and a stable public address: `4.6.0` → `v4-6-0`
|
|
294
|
+
* (`/changelog#v4-6-0`). Every site that renders the `changelog` brick uses it, so the addresses stay the same.
|
|
295
|
+
*/
|
|
296
|
+
declare function releaseAnchor(version: string): string;
|
|
297
|
+
interface PostJsonLdInput {
|
|
298
|
+
title: string;
|
|
299
|
+
/** Absolute URL of the post. */
|
|
300
|
+
url: string;
|
|
301
|
+
/** The post's date (`YYYY-MM-DD`). */
|
|
302
|
+
date: string;
|
|
303
|
+
/** When the post last changed (an ISO date or time). */
|
|
304
|
+
modified?: string;
|
|
305
|
+
description?: string;
|
|
306
|
+
/** Absolute URL of the image. */
|
|
307
|
+
image?: string;
|
|
308
|
+
/** The post's authors, as the `authors` brick has them; `url` is their website. */
|
|
309
|
+
authors?: readonly {
|
|
310
|
+
name: string;
|
|
311
|
+
url?: string;
|
|
312
|
+
}[];
|
|
313
|
+
tags?: readonly string[];
|
|
314
|
+
/** The language of the post (BCP-47). */
|
|
315
|
+
lang: string;
|
|
316
|
+
}
|
|
317
|
+
/** schema.org BlogPosting for one post. */
|
|
318
|
+
declare function postJsonLd(p: PostJsonLdInput): Record<string, unknown>;
|
|
319
|
+
|
|
320
|
+
interface JobsOptions<R extends Record<Locale, RouteTemplate> | undefined> extends BasicsOptions {
|
|
321
|
+
/** A page per job, e.g. `{ en: '/jobs/[slug]', de: '/de/jobs/[slug]' }`. */
|
|
322
|
+
route?: R;
|
|
323
|
+
}
|
|
324
|
+
declare function jobs<const R extends Record<Locale, RouteTemplate> | undefined = undefined>(o?: JobsOptions<R>): CollectionBrick<{
|
|
325
|
+
readonly title: TextField & Omit<TextField, "type" | "label" | "pos" | "retired" | "default"> & {
|
|
326
|
+
default?: (string | Partial<Record<string, string>>) | undefined;
|
|
327
|
+
};
|
|
328
|
+
readonly description: LongTextField & Omit<LongTextField, "type" | "label" | "pos" | "retired" | "default"> & {
|
|
329
|
+
default?: (string | Partial<Record<string, string>>) | undefined;
|
|
330
|
+
};
|
|
331
|
+
readonly slug: SlugField & {
|
|
332
|
+
readonly from: "title";
|
|
333
|
+
};
|
|
334
|
+
readonly location: TextField & Omit<TextField, "type" | "label" | "pos" | "retired" | "default"> & {
|
|
335
|
+
default?: (string | Partial<Record<string, string>>) | undefined;
|
|
336
|
+
};
|
|
337
|
+
readonly employmentType: ChoiceField<"fullTime" | "partTime" | "freelance" | "internship" | "apprenticeship"> & Omit<{
|
|
338
|
+
readonly options: readonly [{
|
|
339
|
+
readonly value: "fullTime";
|
|
340
|
+
readonly label: Record<string, string>;
|
|
341
|
+
}, {
|
|
342
|
+
readonly value: "partTime";
|
|
343
|
+
readonly label: Record<string, string>;
|
|
344
|
+
}, {
|
|
345
|
+
readonly value: "freelance";
|
|
346
|
+
readonly label: Record<string, string>;
|
|
347
|
+
}, {
|
|
348
|
+
readonly value: "internship";
|
|
349
|
+
readonly label: Record<string, string>;
|
|
350
|
+
}, {
|
|
351
|
+
readonly value: "apprenticeship";
|
|
352
|
+
readonly label: Record<string, string>;
|
|
353
|
+
}];
|
|
354
|
+
}, "options">;
|
|
355
|
+
readonly remote: ChoiceField<"remote" | "onsite" | "hybrid"> & Omit<{
|
|
356
|
+
readonly options: readonly [{
|
|
357
|
+
readonly value: "onsite";
|
|
358
|
+
readonly label: Record<string, string>;
|
|
359
|
+
}, {
|
|
360
|
+
readonly value: "hybrid";
|
|
361
|
+
readonly label: Record<string, string>;
|
|
362
|
+
}, {
|
|
363
|
+
readonly value: "remote";
|
|
364
|
+
readonly label: Record<string, string>;
|
|
365
|
+
}];
|
|
366
|
+
readonly default: "onsite";
|
|
367
|
+
}, "options">;
|
|
368
|
+
readonly applyUrl: TextField & {
|
|
369
|
+
readonly format: "url";
|
|
370
|
+
readonly optional: true;
|
|
371
|
+
};
|
|
372
|
+
readonly applyEmail: TextField & {
|
|
373
|
+
readonly format: "email";
|
|
374
|
+
readonly optional: true;
|
|
375
|
+
};
|
|
376
|
+
readonly validUntil: DateField & {
|
|
377
|
+
readonly hint: Record<string, string>;
|
|
378
|
+
};
|
|
379
|
+
readonly body: MarkdownField;
|
|
380
|
+
}, R>;
|
|
381
|
+
interface JobJsonLdInput {
|
|
382
|
+
title: string;
|
|
383
|
+
/** Absolute URL of the job's page. */
|
|
384
|
+
url: string;
|
|
385
|
+
/** The full description as plain text or HTML (for example the plain text of `body`). */
|
|
386
|
+
description: string;
|
|
387
|
+
/** The day the ad went online (`YYYY-MM-DD`). */
|
|
388
|
+
datePosted: string;
|
|
389
|
+
/** The last day of the ad (`validUntil`), written as `validThrough`. */
|
|
390
|
+
validUntil: string;
|
|
391
|
+
employmentType?: string;
|
|
392
|
+
/** `remote` marks the job as remote work (`TELECOMMUTE`). */
|
|
393
|
+
remote?: string;
|
|
394
|
+
/** The town or city (`location`). */
|
|
395
|
+
location?: string;
|
|
396
|
+
/** The employer: the site's name and address. */
|
|
397
|
+
organization: {
|
|
398
|
+
name: string;
|
|
399
|
+
url: string;
|
|
400
|
+
logo?: string;
|
|
401
|
+
};
|
|
402
|
+
/**
|
|
403
|
+
* ISO 3166 code such as `DE`: `addressCountry`, and where remote applicants must live. Default (in `useGinkoSeo`):
|
|
404
|
+
* `country` of the site config.
|
|
405
|
+
*/
|
|
406
|
+
country?: string;
|
|
407
|
+
}
|
|
408
|
+
/** schema.org JobPosting for one job. */
|
|
409
|
+
declare function jobJsonLd(j: JobJsonLdInput): Record<string, unknown>;
|
|
410
|
+
|
|
411
|
+
declare function faq(o?: BasicsOptions): CollectionBrick<{
|
|
412
|
+
readonly question: TextField & Omit<TextField, "type" | "label" | "pos" | "retired" | "default"> & {
|
|
413
|
+
default?: (string | Partial<Record<string, string>>) | undefined;
|
|
414
|
+
};
|
|
415
|
+
readonly answer: LongTextField & Omit<LongTextField, "type" | "label" | "pos" | "retired" | "default"> & {
|
|
416
|
+
default?: (string | Partial<Record<string, string>>) | undefined;
|
|
417
|
+
};
|
|
418
|
+
}, undefined>;
|
|
419
|
+
/** schema.org FAQPage for the questions shown on one page. */
|
|
420
|
+
declare function faqJsonLd(items: readonly {
|
|
421
|
+
question: string;
|
|
422
|
+
answer: string;
|
|
423
|
+
}[]): Record<string, unknown>;
|
|
424
|
+
|
|
425
|
+
declare function downloads(o?: BasicsOptions): CollectionBrick<{
|
|
426
|
+
readonly title: TextField & Omit<TextField, "type" | "label" | "pos" | "retired" | "default"> & {
|
|
427
|
+
default?: (string | Partial<Record<string, string>>) | undefined;
|
|
428
|
+
};
|
|
429
|
+
readonly summary: LongTextField & {
|
|
430
|
+
readonly optional: true;
|
|
431
|
+
};
|
|
432
|
+
readonly date: DateField & Omit<DateField, "type" | "label" | "pos" | "retired" | "default"> & {
|
|
433
|
+
default?: string | undefined;
|
|
434
|
+
};
|
|
435
|
+
readonly file: FileField & {
|
|
436
|
+
readonly accept: readonly ["pdf"];
|
|
437
|
+
readonly maxBytes: number;
|
|
438
|
+
};
|
|
439
|
+
readonly language: TextField & {
|
|
440
|
+
readonly optional: true;
|
|
441
|
+
readonly translate: false;
|
|
442
|
+
readonly max: 35;
|
|
443
|
+
readonly hint: Record<string, string>;
|
|
444
|
+
};
|
|
445
|
+
}, undefined>;
|
|
446
|
+
|
|
447
|
+
interface RssItem {
|
|
448
|
+
title: string;
|
|
449
|
+
/** Absolute. */
|
|
450
|
+
link: string;
|
|
451
|
+
description?: string;
|
|
452
|
+
/** `YYYY-MM-DD`. */
|
|
453
|
+
date: string;
|
|
454
|
+
authors: string[];
|
|
455
|
+
}
|
|
456
|
+
interface RssFeed {
|
|
457
|
+
title: string;
|
|
458
|
+
/** Absolute address of the page the feed belongs to. */
|
|
459
|
+
link: string;
|
|
460
|
+
/** Absolute address of the feed itself. */
|
|
461
|
+
self: string;
|
|
462
|
+
description: string;
|
|
463
|
+
language: string;
|
|
464
|
+
items: RssItem[];
|
|
465
|
+
}
|
|
466
|
+
/** Title and description only, as plain text: the feed links to the page for the full post. */
|
|
467
|
+
declare function rssXml(feed: RssFeed): string;
|
|
468
|
+
|
|
469
|
+
/**
|
|
470
|
+
* `openingHoursSpecification` (the week that applies `today`) and, when a day within `days` days (default 60) differs
|
|
471
|
+
* from it, `specialOpeningHoursSpecification`: spread both into a LocalBusiness node.
|
|
472
|
+
*/
|
|
473
|
+
declare function openingHoursJsonLd(ctx: HoursContext, today: string, days?: number): Record<string, unknown>;
|
|
474
|
+
|
|
475
|
+
declare function gallery(opts?: BasicsOptions): SingleBrick<{
|
|
476
|
+
readonly images: ListField<{
|
|
477
|
+
readonly image: ImageField;
|
|
478
|
+
}> & Omit<{
|
|
479
|
+
readonly itemLabel: {
|
|
480
|
+
de: string;
|
|
481
|
+
en: string;
|
|
482
|
+
};
|
|
483
|
+
readonly fields: {
|
|
484
|
+
readonly image: ImageField;
|
|
485
|
+
};
|
|
486
|
+
readonly max: 24;
|
|
487
|
+
readonly default: readonly [];
|
|
488
|
+
}, "fields">;
|
|
489
|
+
}>;
|
|
490
|
+
|
|
491
|
+
export { BasicsOptions, HoursContext, authors, changelog, downloads, faq, faqJsonLd, gallery, jobJsonLd, jobs, legal, legalTypes, openingHoursJsonLd, people, personJsonLd, postJsonLd, posts, releaseAnchor, rssXml, site, siteJsonLd };
|
|
492
|
+
export type { ChangelogOptions, JobJsonLdInput, JobsOptions, LegalOptions, PersonJsonLdInput, PostJsonLdInput, PostsOptions, RssFeed, RssItem, SiteData, SiteJsonLdOptions };
|