@aglyn/aglyn 1.0.0-beta.277 → 1.0.0-beta.283
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/package.json +11 -11
- package/src/lib/app-utils/account-preferences.d.ts +146 -11
- package/src/lib/app-utils/account-preferences.js +266 -18
- package/src/lib/app-utils/account-preferences.js.map +1 -1
- package/src/lib/app-utils/activity-presenter.js +2 -26
- package/src/lib/app-utils/activity-presenter.js.map +1 -1
- package/src/lib/app-utils/activity-type-labels.d.ts +18 -0
- package/src/lib/app-utils/activity-type-labels.js +46 -0
- package/src/lib/app-utils/activity-type-labels.js.map +1 -0
- package/src/lib/app-utils/artifact-provenance.d.ts +3 -1
- package/src/lib/app-utils/artifact-provenance.js.map +1 -1
- package/src/lib/app-utils/bundle-intent.d.ts +37 -0
- package/src/lib/app-utils/bundle-intent.js +47 -3
- package/src/lib/app-utils/bundle-intent.js.map +1 -1
- package/src/lib/app-utils/compose-reusable-components.d.ts +17 -1
- package/src/lib/app-utils/compose-reusable-components.js +80 -5
- package/src/lib/app-utils/compose-reusable-components.js.map +1 -1
- package/src/lib/app-utils/docs-help-sections.generated.js +13 -1
- package/src/lib/app-utils/docs-help-sections.generated.js.map +1 -1
- package/src/lib/app-utils/docs-help.generated.d.ts +23 -11
- package/src/lib/app-utils/docs-help.generated.js +64 -7
- package/src/lib/app-utils/docs-help.generated.js.map +1 -1
- package/src/lib/app-utils/docs-index.generated.js +359 -51
- package/src/lib/app-utils/docs-index.generated.js.map +1 -1
- package/src/lib/app-utils/error-beacon.d.ts +19 -0
- package/src/lib/app-utils/error-beacon.js +28 -0
- package/src/lib/app-utils/error-beacon.js.map +1 -1
- package/src/lib/app-utils/health-report.d.ts +3 -2
- package/src/lib/app-utils/health-report.js +22 -2
- package/src/lib/app-utils/health-report.js.map +1 -1
- package/src/lib/app-utils/native-nav.d.ts +39 -4
- package/src/lib/app-utils/native-nav.js +69 -3
- package/src/lib/app-utils/native-nav.js.map +1 -1
- package/src/lib/app-utils/native-themes.d.ts +28 -17
- package/src/lib/app-utils/native-themes.js +123 -45
- package/src/lib/app-utils/native-themes.js.map +1 -1
- package/src/lib/app-utils/operator-alerts.js +4 -2
- package/src/lib/app-utils/operator-alerts.js.map +1 -1
- package/src/lib/app-utils/org-permission-editor.d.ts +75 -0
- package/src/lib/app-utils/org-permission-editor.js +124 -0
- package/src/lib/app-utils/org-permission-editor.js.map +1 -0
- package/src/lib/app-utils/org-permissions.d.ts +36 -0
- package/src/lib/app-utils/org-permissions.js +78 -26
- package/src/lib/app-utils/org-permissions.js.map +1 -1
- package/src/lib/app-utils/org-role-grants.d.ts +59 -9
- package/src/lib/app-utils/org-role-grants.js +97 -10
- package/src/lib/app-utils/org-role-grants.js.map +1 -1
- package/src/lib/app-utils/plan-entitlements.d.ts +13 -0
- package/src/lib/app-utils/plan-entitlements.js +22 -0
- package/src/lib/app-utils/plan-entitlements.js.map +1 -1
- package/src/lib/app-utils/release-flags.d.ts +52 -1
- package/src/lib/app-utils/release-flags.js +68 -2
- package/src/lib/app-utils/release-flags.js.map +1 -1
- package/src/lib/app-utils/reusable-component-keys.d.ts +13 -0
- package/src/lib/app-utils/reusable-component-keys.js +12 -0
- package/src/lib/app-utils/reusable-component-keys.js.map +1 -1
- package/src/lib/app-utils/screen-analytics-aggregate.d.ts +34 -0
- package/src/lib/app-utils/screen-analytics-aggregate.js +37 -0
- package/src/lib/app-utils/screen-analytics-aggregate.js.map +1 -1
- package/src/lib/app-utils/site-care.d.ts +35 -0
- package/src/lib/app-utils/site-care.js +48 -0
- package/src/lib/app-utils/site-care.js.map +1 -1
- package/src/lib/app-utils/site-font-pairings.d.ts +59 -0
- package/src/lib/app-utils/site-font-pairings.js +514 -0
- package/src/lib/app-utils/site-font-pairings.js.map +1 -0
- package/src/lib/app-utils/site-starter.d.ts +136 -0
- package/src/lib/app-utils/site-starter.js +116 -0
- package/src/lib/app-utils/site-starter.js.map +1 -0
- package/src/lib/app-utils/stock-photos/stock-photo-picker-server.d.ts +95 -0
- package/src/lib/app-utils/stock-photos/stock-photo-picker-server.js +333 -0
- package/src/lib/app-utils/stock-photos/stock-photo-picker-server.js.map +1 -0
- package/src/lib/app-utils/stock-photos/stock-photo-picker.d.ts +188 -0
- package/src/lib/app-utils/stock-photos/stock-photo-picker.js +193 -0
- package/src/lib/app-utils/stock-photos/stock-photo-picker.js.map +1 -0
- package/src/lib/plugin-manager/feature-plugins.d.ts +32 -0
- package/src/lib/plugin-manager/feature-plugins.js +12 -0
- package/src/lib/plugin-manager/feature-plugins.js.map +1 -1
- package/src/lib/plugin-manager/first-party-plugins.generated.js +27 -1
- package/src/lib/plugin-manager/first-party-plugins.generated.js.map +1 -1
- package/src/lib/plugin-manager/plugin-entitlements.d.ts +37 -0
- package/src/lib/plugin-manager/plugin-entitlements.js +84 -2
- package/src/lib/plugin-manager/plugin-entitlements.js.map +1 -1
- package/src/lib/plugin-manager/plugin-media-ingest.d.ts +15 -0
- package/src/lib/plugin-manager/plugin-media-ingest.js.map +1 -1
- package/src/lib/plugin-manager/plugin-permissions.d.ts +7 -0
- package/src/lib/plugin-manager/plugin-permissions.js.map +1 -1
- package/src/lib/plugin-manager/plugin-product-catalog.d.ts +12 -0
- package/src/lib/plugin-manager/plugin-product-catalog.js.map +1 -1
- package/src/lib/plugin-manager/plugin-site-starters.d.ts +73 -0
- package/src/lib/plugin-manager/plugin-site-starters.js +30 -0
- package/src/lib/plugin-manager/plugin-site-starters.js.map +1 -0
- package/src/lib/plugin-manager/plugin-sitemap-sections.d.ts +8 -1
- package/src/lib/plugin-manager/plugin-sitemap-sections.js.map +1 -1
- package/src/lib/plugin-manager/stock-photo-provider.d.ts +12 -0
- package/src/lib/plugin-manager/stock-photo-provider.js.map +1 -1
|
@@ -0,0 +1,514 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Aglyn LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/ /**
|
|
17
|
+
* The font pairings a site's look is chosen from (AGL-4049): a heading family
|
|
18
|
+
* over a body family, each with the weights it loads.
|
|
19
|
+
*
|
|
20
|
+
* The platform's, not one plugin's: the AI site start picks among them for a
|
|
21
|
+
* business's own look, and a site starter names the one it was designed in
|
|
22
|
+
* (`site-starter.ts`), so a starter and a generated site speak one list.
|
|
23
|
+
* Moved here from the AI plugin's `ai-site-kinds.ts`, which re-exports it
|
|
24
|
+
* under its old names.
|
|
25
|
+
*
|
|
26
|
+
* Pure data, safe for any surface to import.
|
|
27
|
+
*/ /** A font pairing a look may choose: a heading family over a body family. */ /**
|
|
28
|
+
* The pairings, every family from the Google Fonts catalog the fonts plugin
|
|
29
|
+
* serves (`google-fonts.catalog.json`) and every weight one that family
|
|
30
|
+
* has — the AI plugin's `ai-site-look.spec.ts` holds both. The tenant loads
|
|
31
|
+
* them the way it loads the starter theme's family, so nothing here adds a
|
|
32
|
+
* font host.
|
|
33
|
+
*/ export const SITE_FONT_PAIRINGS = [
|
|
34
|
+
{
|
|
35
|
+
id: 'jakarta',
|
|
36
|
+
feel: 'modern, friendly sans',
|
|
37
|
+
heading: {
|
|
38
|
+
family: 'Plus Jakarta Sans',
|
|
39
|
+
category: 'sans-serif',
|
|
40
|
+
weight: 800,
|
|
41
|
+
sub: 700
|
|
42
|
+
},
|
|
43
|
+
body: {
|
|
44
|
+
family: 'Plus Jakarta Sans',
|
|
45
|
+
category: 'sans-serif',
|
|
46
|
+
weights: [
|
|
47
|
+
400,
|
|
48
|
+
500,
|
|
49
|
+
600,
|
|
50
|
+
700
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
tracking: -0.02
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
id: 'inter',
|
|
57
|
+
feel: 'neutral, precise sans',
|
|
58
|
+
heading: {
|
|
59
|
+
family: 'Inter',
|
|
60
|
+
category: 'sans-serif',
|
|
61
|
+
weight: 700,
|
|
62
|
+
sub: 600
|
|
63
|
+
},
|
|
64
|
+
body: {
|
|
65
|
+
family: 'Inter',
|
|
66
|
+
category: 'sans-serif',
|
|
67
|
+
weights: [
|
|
68
|
+
400,
|
|
69
|
+
500,
|
|
70
|
+
600,
|
|
71
|
+
700
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
tracking: -0.025
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
id: 'grotesk',
|
|
78
|
+
feel: 'designer grotesk',
|
|
79
|
+
heading: {
|
|
80
|
+
family: 'Space Grotesk',
|
|
81
|
+
category: 'sans-serif',
|
|
82
|
+
weight: 600,
|
|
83
|
+
sub: 600
|
|
84
|
+
},
|
|
85
|
+
body: {
|
|
86
|
+
family: 'Inter',
|
|
87
|
+
category: 'sans-serif',
|
|
88
|
+
weights: [
|
|
89
|
+
400,
|
|
90
|
+
500,
|
|
91
|
+
600,
|
|
92
|
+
700
|
|
93
|
+
]
|
|
94
|
+
},
|
|
95
|
+
tracking: -0.03
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
id: 'syne',
|
|
99
|
+
feel: 'expressive, art-school display',
|
|
100
|
+
heading: {
|
|
101
|
+
family: 'Syne',
|
|
102
|
+
category: 'sans-serif',
|
|
103
|
+
weight: 700,
|
|
104
|
+
sub: 600
|
|
105
|
+
},
|
|
106
|
+
body: {
|
|
107
|
+
family: 'Inter',
|
|
108
|
+
category: 'sans-serif',
|
|
109
|
+
weights: [
|
|
110
|
+
400,
|
|
111
|
+
500,
|
|
112
|
+
600,
|
|
113
|
+
700
|
|
114
|
+
]
|
|
115
|
+
},
|
|
116
|
+
tracking: -0.02
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
id: 'bricolage',
|
|
120
|
+
feel: 'contemporary, characterful sans',
|
|
121
|
+
heading: {
|
|
122
|
+
family: 'Bricolage Grotesque',
|
|
123
|
+
category: 'sans-serif',
|
|
124
|
+
weight: 700,
|
|
125
|
+
sub: 600
|
|
126
|
+
},
|
|
127
|
+
body: {
|
|
128
|
+
family: 'DM Sans',
|
|
129
|
+
category: 'sans-serif',
|
|
130
|
+
weights: [
|
|
131
|
+
400,
|
|
132
|
+
500,
|
|
133
|
+
600,
|
|
134
|
+
700
|
|
135
|
+
]
|
|
136
|
+
},
|
|
137
|
+
tracking: -0.025
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
id: 'editorial',
|
|
141
|
+
feel: 'editorial serif over clean sans',
|
|
142
|
+
heading: {
|
|
143
|
+
family: 'Playfair Display',
|
|
144
|
+
category: 'serif',
|
|
145
|
+
weight: 700,
|
|
146
|
+
sub: 600
|
|
147
|
+
},
|
|
148
|
+
body: {
|
|
149
|
+
family: 'Source Sans 3',
|
|
150
|
+
category: 'sans-serif',
|
|
151
|
+
weights: [
|
|
152
|
+
400,
|
|
153
|
+
500,
|
|
154
|
+
600,
|
|
155
|
+
700
|
|
156
|
+
]
|
|
157
|
+
},
|
|
158
|
+
tracking: -0.01
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
id: 'fraunces',
|
|
162
|
+
feel: 'warm, soft serif',
|
|
163
|
+
heading: {
|
|
164
|
+
family: 'Fraunces',
|
|
165
|
+
category: 'serif',
|
|
166
|
+
weight: 600,
|
|
167
|
+
sub: 600
|
|
168
|
+
},
|
|
169
|
+
body: {
|
|
170
|
+
family: 'Inter',
|
|
171
|
+
category: 'sans-serif',
|
|
172
|
+
weights: [
|
|
173
|
+
400,
|
|
174
|
+
500,
|
|
175
|
+
600,
|
|
176
|
+
700
|
|
177
|
+
]
|
|
178
|
+
},
|
|
179
|
+
tracking: -0.015
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
id: 'instrument',
|
|
183
|
+
feel: 'elegant, light serif headlines',
|
|
184
|
+
heading: {
|
|
185
|
+
family: 'Instrument Serif',
|
|
186
|
+
category: 'serif',
|
|
187
|
+
weight: 400,
|
|
188
|
+
sub: 400
|
|
189
|
+
},
|
|
190
|
+
body: {
|
|
191
|
+
family: 'Inter',
|
|
192
|
+
category: 'sans-serif',
|
|
193
|
+
weights: [
|
|
194
|
+
400,
|
|
195
|
+
500,
|
|
196
|
+
600,
|
|
197
|
+
700
|
|
198
|
+
]
|
|
199
|
+
},
|
|
200
|
+
tracking: -0.01
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
id: 'reading',
|
|
204
|
+
feel: 'reading-first serif, serif body',
|
|
205
|
+
heading: {
|
|
206
|
+
family: 'Newsreader',
|
|
207
|
+
category: 'serif',
|
|
208
|
+
weight: 600,
|
|
209
|
+
sub: 600
|
|
210
|
+
},
|
|
211
|
+
body: {
|
|
212
|
+
family: 'Source Serif 4',
|
|
213
|
+
category: 'serif',
|
|
214
|
+
weights: [
|
|
215
|
+
400,
|
|
216
|
+
600,
|
|
217
|
+
700
|
|
218
|
+
]
|
|
219
|
+
},
|
|
220
|
+
tracking: -0.01
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
id: 'garamond',
|
|
224
|
+
feel: 'refined, classic serif',
|
|
225
|
+
heading: {
|
|
226
|
+
family: 'Cormorant Garamond',
|
|
227
|
+
category: 'serif',
|
|
228
|
+
weight: 600,
|
|
229
|
+
sub: 600
|
|
230
|
+
},
|
|
231
|
+
body: {
|
|
232
|
+
family: 'Montserrat',
|
|
233
|
+
category: 'sans-serif',
|
|
234
|
+
weights: [
|
|
235
|
+
400,
|
|
236
|
+
500,
|
|
237
|
+
600,
|
|
238
|
+
700
|
|
239
|
+
]
|
|
240
|
+
}
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
id: 'baskerville',
|
|
244
|
+
feel: 'established, trustworthy serif',
|
|
245
|
+
heading: {
|
|
246
|
+
family: 'Libre Baskerville',
|
|
247
|
+
category: 'serif',
|
|
248
|
+
weight: 700,
|
|
249
|
+
sub: 700
|
|
250
|
+
},
|
|
251
|
+
body: {
|
|
252
|
+
family: 'Source Sans 3',
|
|
253
|
+
category: 'sans-serif',
|
|
254
|
+
weights: [
|
|
255
|
+
400,
|
|
256
|
+
500,
|
|
257
|
+
600,
|
|
258
|
+
700
|
|
259
|
+
]
|
|
260
|
+
}
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
id: 'merriweather',
|
|
264
|
+
feel: 'sturdy, readable serif',
|
|
265
|
+
heading: {
|
|
266
|
+
family: 'Merriweather',
|
|
267
|
+
category: 'serif',
|
|
268
|
+
weight: 700,
|
|
269
|
+
sub: 700
|
|
270
|
+
},
|
|
271
|
+
body: {
|
|
272
|
+
family: 'Lato',
|
|
273
|
+
category: 'sans-serif',
|
|
274
|
+
weights: [
|
|
275
|
+
400,
|
|
276
|
+
700
|
|
277
|
+
]
|
|
278
|
+
}
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
id: 'lora',
|
|
282
|
+
feel: 'gentle, calm serif',
|
|
283
|
+
heading: {
|
|
284
|
+
family: 'Lora',
|
|
285
|
+
category: 'serif',
|
|
286
|
+
weight: 600,
|
|
287
|
+
sub: 600
|
|
288
|
+
},
|
|
289
|
+
body: {
|
|
290
|
+
family: 'Open Sans',
|
|
291
|
+
category: 'sans-serif',
|
|
292
|
+
weights: [
|
|
293
|
+
400,
|
|
294
|
+
500,
|
|
295
|
+
600,
|
|
296
|
+
700
|
|
297
|
+
]
|
|
298
|
+
}
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
id: 'dmserif',
|
|
302
|
+
feel: 'polished display serif',
|
|
303
|
+
heading: {
|
|
304
|
+
family: 'DM Serif Display',
|
|
305
|
+
category: 'serif',
|
|
306
|
+
weight: 400,
|
|
307
|
+
sub: 400
|
|
308
|
+
},
|
|
309
|
+
body: {
|
|
310
|
+
family: 'DM Sans',
|
|
311
|
+
category: 'sans-serif',
|
|
312
|
+
weights: [
|
|
313
|
+
400,
|
|
314
|
+
500,
|
|
315
|
+
600,
|
|
316
|
+
700
|
|
317
|
+
]
|
|
318
|
+
}
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
id: 'oswald',
|
|
322
|
+
feel: 'bold, condensed, workmanlike',
|
|
323
|
+
heading: {
|
|
324
|
+
family: 'Oswald',
|
|
325
|
+
category: 'sans-serif',
|
|
326
|
+
weight: 600,
|
|
327
|
+
sub: 500
|
|
328
|
+
},
|
|
329
|
+
body: {
|
|
330
|
+
family: 'Roboto',
|
|
331
|
+
category: 'sans-serif',
|
|
332
|
+
weights: [
|
|
333
|
+
400,
|
|
334
|
+
500,
|
|
335
|
+
700
|
|
336
|
+
]
|
|
337
|
+
},
|
|
338
|
+
caps: true,
|
|
339
|
+
tracking: 0.01
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
id: 'archivo',
|
|
343
|
+
feel: 'heavy, high-impact sans',
|
|
344
|
+
heading: {
|
|
345
|
+
family: 'Archivo Black',
|
|
346
|
+
category: 'sans-serif',
|
|
347
|
+
weight: 400,
|
|
348
|
+
sub: 400
|
|
349
|
+
},
|
|
350
|
+
body: {
|
|
351
|
+
family: 'Archivo',
|
|
352
|
+
category: 'sans-serif',
|
|
353
|
+
weights: [
|
|
354
|
+
400,
|
|
355
|
+
500,
|
|
356
|
+
600,
|
|
357
|
+
700
|
|
358
|
+
]
|
|
359
|
+
},
|
|
360
|
+
tracking: -0.01
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
id: 'barlow',
|
|
364
|
+
feel: 'athletic, condensed sans',
|
|
365
|
+
heading: {
|
|
366
|
+
family: 'Barlow Condensed',
|
|
367
|
+
category: 'sans-serif',
|
|
368
|
+
weight: 700,
|
|
369
|
+
sub: 600
|
|
370
|
+
},
|
|
371
|
+
body: {
|
|
372
|
+
family: 'Barlow',
|
|
373
|
+
category: 'sans-serif',
|
|
374
|
+
weights: [
|
|
375
|
+
400,
|
|
376
|
+
500,
|
|
377
|
+
600,
|
|
378
|
+
700
|
|
379
|
+
]
|
|
380
|
+
},
|
|
381
|
+
caps: true,
|
|
382
|
+
tracking: 0.01
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
id: 'anton',
|
|
386
|
+
feel: 'loud poster display',
|
|
387
|
+
heading: {
|
|
388
|
+
family: 'Anton',
|
|
389
|
+
category: 'sans-serif',
|
|
390
|
+
weight: 400,
|
|
391
|
+
sub: 400
|
|
392
|
+
},
|
|
393
|
+
body: {
|
|
394
|
+
family: 'Inter',
|
|
395
|
+
category: 'sans-serif',
|
|
396
|
+
weights: [
|
|
397
|
+
400,
|
|
398
|
+
500,
|
|
399
|
+
600,
|
|
400
|
+
700
|
|
401
|
+
]
|
|
402
|
+
},
|
|
403
|
+
caps: true,
|
|
404
|
+
tracking: 0.01
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
id: 'nunito',
|
|
408
|
+
feel: 'rounded, approachable sans',
|
|
409
|
+
heading: {
|
|
410
|
+
family: 'Nunito',
|
|
411
|
+
category: 'sans-serif',
|
|
412
|
+
weight: 800,
|
|
413
|
+
sub: 700
|
|
414
|
+
},
|
|
415
|
+
body: {
|
|
416
|
+
family: 'Nunito Sans',
|
|
417
|
+
category: 'sans-serif',
|
|
418
|
+
weights: [
|
|
419
|
+
400,
|
|
420
|
+
600,
|
|
421
|
+
700
|
|
422
|
+
]
|
|
423
|
+
}
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
id: 'quicksand',
|
|
427
|
+
feel: 'soft, airy rounded sans',
|
|
428
|
+
heading: {
|
|
429
|
+
family: 'Quicksand',
|
|
430
|
+
category: 'sans-serif',
|
|
431
|
+
weight: 700,
|
|
432
|
+
sub: 600
|
|
433
|
+
},
|
|
434
|
+
body: {
|
|
435
|
+
family: 'Nunito Sans',
|
|
436
|
+
category: 'sans-serif',
|
|
437
|
+
weights: [
|
|
438
|
+
400,
|
|
439
|
+
600,
|
|
440
|
+
700
|
|
441
|
+
]
|
|
442
|
+
}
|
|
443
|
+
},
|
|
444
|
+
{
|
|
445
|
+
id: 'manrope',
|
|
446
|
+
feel: 'crisp, confident sans',
|
|
447
|
+
heading: {
|
|
448
|
+
family: 'Manrope',
|
|
449
|
+
category: 'sans-serif',
|
|
450
|
+
weight: 800,
|
|
451
|
+
sub: 700
|
|
452
|
+
},
|
|
453
|
+
body: {
|
|
454
|
+
family: 'Manrope',
|
|
455
|
+
category: 'sans-serif',
|
|
456
|
+
weights: [
|
|
457
|
+
400,
|
|
458
|
+
500,
|
|
459
|
+
600,
|
|
460
|
+
700
|
|
461
|
+
]
|
|
462
|
+
},
|
|
463
|
+
tracking: -0.02
|
|
464
|
+
},
|
|
465
|
+
{
|
|
466
|
+
id: 'outfit',
|
|
467
|
+
feel: 'geometric, upbeat sans',
|
|
468
|
+
heading: {
|
|
469
|
+
family: 'Outfit',
|
|
470
|
+
category: 'sans-serif',
|
|
471
|
+
weight: 700,
|
|
472
|
+
sub: 600
|
|
473
|
+
},
|
|
474
|
+
body: {
|
|
475
|
+
family: 'Outfit',
|
|
476
|
+
category: 'sans-serif',
|
|
477
|
+
weights: [
|
|
478
|
+
400,
|
|
479
|
+
500,
|
|
480
|
+
600,
|
|
481
|
+
700
|
|
482
|
+
]
|
|
483
|
+
},
|
|
484
|
+
tracking: -0.02
|
|
485
|
+
},
|
|
486
|
+
{
|
|
487
|
+
id: 'plex',
|
|
488
|
+
feel: 'technical, engineered sans',
|
|
489
|
+
heading: {
|
|
490
|
+
family: 'IBM Plex Sans',
|
|
491
|
+
category: 'sans-serif',
|
|
492
|
+
weight: 600,
|
|
493
|
+
sub: 600
|
|
494
|
+
},
|
|
495
|
+
body: {
|
|
496
|
+
family: 'IBM Plex Sans',
|
|
497
|
+
category: 'sans-serif',
|
|
498
|
+
weights: [
|
|
499
|
+
400,
|
|
500
|
+
500,
|
|
501
|
+
600,
|
|
502
|
+
700
|
|
503
|
+
]
|
|
504
|
+
},
|
|
505
|
+
tracking: -0.01
|
|
506
|
+
}
|
|
507
|
+
];
|
|
508
|
+
/** A pairing by id, or `null`. */ export function siteFontPairing(id) {
|
|
509
|
+
var _SITE_FONT_PAIRINGS_find;
|
|
510
|
+
if (typeof id !== 'string' || !id) return null;
|
|
511
|
+
return (_SITE_FONT_PAIRINGS_find = SITE_FONT_PAIRINGS.find((pairing)=>pairing.id === id)) != null ? _SITE_FONT_PAIRINGS_find : null;
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
//# sourceMappingURL=site-font-pairings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/site-font-pairings.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * The font pairings a site's look is chosen from (AGL-4049): a heading family\n * over a body family, each with the weights it loads.\n *\n * The platform's, not one plugin's: the AI site start picks among them for a\n * business's own look, and a site starter names the one it was designed in\n * (`site-starter.ts`), so a starter and a generated site speak one list.\n * Moved here from the AI plugin's `ai-site-kinds.ts`, which re-exports it\n * under its old names.\n *\n * Pure data, safe for any surface to import.\n */\n\n/** A font pairing a look may choose: a heading family over a body family. */\nexport interface SiteFontPairing {\n id: string\n /** What the pairing reads like, as the model is told. */\n feel: string\n heading: { family: string; category: 'sans-serif' | 'serif'; weight: number; sub: number }\n body: { family: string; category: 'sans-serif' | 'serif'; weights: number[] }\n /** Letter spacing the headings carry, in em. */\n tracking?: number\n /** Headings set in capitals: a condensed display face. */\n caps?: boolean\n}\n\n/**\n * The pairings, every family from the Google Fonts catalog the fonts plugin\n * serves (`google-fonts.catalog.json`) and every weight one that family\n * has — the AI plugin's `ai-site-look.spec.ts` holds both. The tenant loads\n * them the way it loads the starter theme's family, so nothing here adds a\n * font host.\n */\nexport const SITE_FONT_PAIRINGS: readonly SiteFontPairing[] = [\n { id: 'jakarta', feel: 'modern, friendly sans', heading: { family: 'Plus Jakarta Sans', category: 'sans-serif', weight: 800, sub: 700 }, body: { family: 'Plus Jakarta Sans', category: 'sans-serif', weights: [400, 500, 600, 700] }, tracking: -0.02 },\n { id: 'inter', feel: 'neutral, precise sans', heading: { family: 'Inter', category: 'sans-serif', weight: 700, sub: 600 }, body: { family: 'Inter', category: 'sans-serif', weights: [400, 500, 600, 700] }, tracking: -0.025 },\n { id: 'grotesk', feel: 'designer grotesk', heading: { family: 'Space Grotesk', category: 'sans-serif', weight: 600, sub: 600 }, body: { family: 'Inter', category: 'sans-serif', weights: [400, 500, 600, 700] }, tracking: -0.03 },\n { id: 'syne', feel: 'expressive, art-school display', heading: { family: 'Syne', category: 'sans-serif', weight: 700, sub: 600 }, body: { family: 'Inter', category: 'sans-serif', weights: [400, 500, 600, 700] }, tracking: -0.02 },\n { id: 'bricolage', feel: 'contemporary, characterful sans', heading: { family: 'Bricolage Grotesque', category: 'sans-serif', weight: 700, sub: 600 }, body: { family: 'DM Sans', category: 'sans-serif', weights: [400, 500, 600, 700] }, tracking: -0.025 },\n { id: 'editorial', feel: 'editorial serif over clean sans', heading: { family: 'Playfair Display', category: 'serif', weight: 700, sub: 600 }, body: { family: 'Source Sans 3', category: 'sans-serif', weights: [400, 500, 600, 700] }, tracking: -0.01 },\n { id: 'fraunces', feel: 'warm, soft serif', heading: { family: 'Fraunces', category: 'serif', weight: 600, sub: 600 }, body: { family: 'Inter', category: 'sans-serif', weights: [400, 500, 600, 700] }, tracking: -0.015 },\n { id: 'instrument', feel: 'elegant, light serif headlines', heading: { family: 'Instrument Serif', category: 'serif', weight: 400, sub: 400 }, body: { family: 'Inter', category: 'sans-serif', weights: [400, 500, 600, 700] }, tracking: -0.01 },\n { id: 'reading', feel: 'reading-first serif, serif body', heading: { family: 'Newsreader', category: 'serif', weight: 600, sub: 600 }, body: { family: 'Source Serif 4', category: 'serif', weights: [400, 600, 700] }, tracking: -0.01 },\n { id: 'garamond', feel: 'refined, classic serif', heading: { family: 'Cormorant Garamond', category: 'serif', weight: 600, sub: 600 }, body: { family: 'Montserrat', category: 'sans-serif', weights: [400, 500, 600, 700] } },\n { id: 'baskerville', feel: 'established, trustworthy serif', heading: { family: 'Libre Baskerville', category: 'serif', weight: 700, sub: 700 }, body: { family: 'Source Sans 3', category: 'sans-serif', weights: [400, 500, 600, 700] } },\n { id: 'merriweather', feel: 'sturdy, readable serif', heading: { family: 'Merriweather', category: 'serif', weight: 700, sub: 700 }, body: { family: 'Lato', category: 'sans-serif', weights: [400, 700] } },\n { id: 'lora', feel: 'gentle, calm serif', heading: { family: 'Lora', category: 'serif', weight: 600, sub: 600 }, body: { family: 'Open Sans', category: 'sans-serif', weights: [400, 500, 600, 700] } },\n { id: 'dmserif', feel: 'polished display serif', heading: { family: 'DM Serif Display', category: 'serif', weight: 400, sub: 400 }, body: { family: 'DM Sans', category: 'sans-serif', weights: [400, 500, 600, 700] } },\n { id: 'oswald', feel: 'bold, condensed, workmanlike', heading: { family: 'Oswald', category: 'sans-serif', weight: 600, sub: 500 }, body: { family: 'Roboto', category: 'sans-serif', weights: [400, 500, 700] }, caps: true, tracking: 0.01 },\n { id: 'archivo', feel: 'heavy, high-impact sans', heading: { family: 'Archivo Black', category: 'sans-serif', weight: 400, sub: 400 }, body: { family: 'Archivo', category: 'sans-serif', weights: [400, 500, 600, 700] }, tracking: -0.01 },\n { id: 'barlow', feel: 'athletic, condensed sans', heading: { family: 'Barlow Condensed', category: 'sans-serif', weight: 700, sub: 600 }, body: { family: 'Barlow', category: 'sans-serif', weights: [400, 500, 600, 700] }, caps: true, tracking: 0.01 },\n { id: 'anton', feel: 'loud poster display', heading: { family: 'Anton', category: 'sans-serif', weight: 400, sub: 400 }, body: { family: 'Inter', category: 'sans-serif', weights: [400, 500, 600, 700] }, caps: true, tracking: 0.01 },\n { id: 'nunito', feel: 'rounded, approachable sans', heading: { family: 'Nunito', category: 'sans-serif', weight: 800, sub: 700 }, body: { family: 'Nunito Sans', category: 'sans-serif', weights: [400, 600, 700] } },\n { id: 'quicksand', feel: 'soft, airy rounded sans', heading: { family: 'Quicksand', category: 'sans-serif', weight: 700, sub: 600 }, body: { family: 'Nunito Sans', category: 'sans-serif', weights: [400, 600, 700] } },\n { id: 'manrope', feel: 'crisp, confident sans', heading: { family: 'Manrope', category: 'sans-serif', weight: 800, sub: 700 }, body: { family: 'Manrope', category: 'sans-serif', weights: [400, 500, 600, 700] }, tracking: -0.02 },\n { id: 'outfit', feel: 'geometric, upbeat sans', heading: { family: 'Outfit', category: 'sans-serif', weight: 700, sub: 600 }, body: { family: 'Outfit', category: 'sans-serif', weights: [400, 500, 600, 700] }, tracking: -0.02 },\n { id: 'plex', feel: 'technical, engineered sans', heading: { family: 'IBM Plex Sans', category: 'sans-serif', weight: 600, sub: 600 }, body: { family: 'IBM Plex Sans', category: 'sans-serif', weights: [400, 500, 600, 700] }, tracking: -0.01 },\n\n]\n\n/** A pairing by id, or `null`. */\nexport function siteFontPairing(id: unknown): SiteFontPairing | null {\n if (typeof id !== 'string' || !id) return null\n return SITE_FONT_PAIRINGS.find((pairing) => pairing.id === id) ?? null\n}\n"],"names":["SITE_FONT_PAIRINGS","id","feel","heading","family","category","weight","sub","body","weights","tracking","caps","siteFontPairing","find","pairing"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED;;;;;;;;;;;CAWC,GAED,2EAA2E,GAa3E;;;;;;CAMC,GACD,OAAO,MAAMA,qBAAiD;IAC5D;QAAEC,IAAI;QAAWC,MAAM;QAAyBC,SAAS;YAAEC,QAAQ;YAAqBC,UAAU;YAAcC,QAAQ;YAAKC,KAAK;QAAI;QAAGC,MAAM;YAAEJ,QAAQ;YAAqBC,UAAU;YAAcI,SAAS;gBAAC;gBAAK;gBAAK;gBAAK;aAAI;QAAC;QAAGC,UAAU,CAAC;IAAK;IACvP;QAAET,IAAI;QAASC,MAAM;QAAyBC,SAAS;YAAEC,QAAQ;YAASC,UAAU;YAAcC,QAAQ;YAAKC,KAAK;QAAI;QAAGC,MAAM;YAAEJ,QAAQ;YAASC,UAAU;YAAcI,SAAS;gBAAC;gBAAK;gBAAK;gBAAK;aAAI;QAAC;QAAGC,UAAU,CAAC;IAAM;IAC9N;QAAET,IAAI;QAAWC,MAAM;QAAoBC,SAAS;YAAEC,QAAQ;YAAiBC,UAAU;YAAcC,QAAQ;YAAKC,KAAK;QAAI;QAAGC,MAAM;YAAEJ,QAAQ;YAASC,UAAU;YAAcI,SAAS;gBAAC;gBAAK;gBAAK;gBAAK;aAAI;QAAC;QAAGC,UAAU,CAAC;IAAK;IAClO;QAAET,IAAI;QAAQC,MAAM;QAAkCC,SAAS;YAAEC,QAAQ;YAAQC,UAAU;YAAcC,QAAQ;YAAKC,KAAK;QAAI;QAAGC,MAAM;YAAEJ,QAAQ;YAASC,UAAU;YAAcI,SAAS;gBAAC;gBAAK;gBAAK;gBAAK;aAAI;QAAC;QAAGC,UAAU,CAAC;IAAK;IACpO;QAAET,IAAI;QAAaC,MAAM;QAAmCC,SAAS;YAAEC,QAAQ;YAAuBC,UAAU;YAAcC,QAAQ;YAAKC,KAAK;QAAI;QAAGC,MAAM;YAAEJ,QAAQ;YAAWC,UAAU;YAAcI,SAAS;gBAAC;gBAAK;gBAAK;gBAAK;aAAI;QAAC;QAAGC,UAAU,CAAC;IAAM;IAC5P;QAAET,IAAI;QAAaC,MAAM;QAAmCC,SAAS;YAAEC,QAAQ;YAAoBC,UAAU;YAASC,QAAQ;YAAKC,KAAK;QAAI;QAAGC,MAAM;YAAEJ,QAAQ;YAAiBC,UAAU;YAAcI,SAAS;gBAAC;gBAAK;gBAAK;gBAAK;aAAI;QAAC;QAAGC,UAAU,CAAC;IAAK;IACzP;QAAET,IAAI;QAAYC,MAAM;QAAoBC,SAAS;YAAEC,QAAQ;YAAYC,UAAU;YAASC,QAAQ;YAAKC,KAAK;QAAI;QAAGC,MAAM;YAAEJ,QAAQ;YAASC,UAAU;YAAcI,SAAS;gBAAC;gBAAK;gBAAK;gBAAK;aAAI;QAAC;QAAGC,UAAU,CAAC;IAAM;IAC1N;QAAET,IAAI;QAAcC,MAAM;QAAkCC,SAAS;YAAEC,QAAQ;YAAoBC,UAAU;YAASC,QAAQ;YAAKC,KAAK;QAAI;QAAGC,MAAM;YAAEJ,QAAQ;YAASC,UAAU;YAAcI,SAAS;gBAAC;gBAAK;gBAAK;gBAAK;aAAI;QAAC;QAAGC,UAAU,CAAC;IAAK;IACjP;QAAET,IAAI;QAAWC,MAAM;QAAmCC,SAAS;YAAEC,QAAQ;YAAcC,UAAU;YAASC,QAAQ;YAAKC,KAAK;QAAI;QAAGC,MAAM;YAAEJ,QAAQ;YAAkBC,UAAU;YAASI,SAAS;gBAAC;gBAAK;gBAAK;aAAI;QAAC;QAAGC,UAAU,CAAC;IAAK;IACxO;QAAET,IAAI;QAAYC,MAAM;QAA0BC,SAAS;YAAEC,QAAQ;YAAsBC,UAAU;YAASC,QAAQ;YAAKC,KAAK;QAAI;QAAGC,MAAM;YAAEJ,QAAQ;YAAcC,UAAU;YAAcI,SAAS;gBAAC;gBAAK;gBAAK;gBAAK;aAAI;QAAC;IAAE;IAC7N;QAAER,IAAI;QAAeC,MAAM;QAAkCC,SAAS;YAAEC,QAAQ;YAAqBC,UAAU;YAASC,QAAQ;YAAKC,KAAK;QAAI;QAAGC,MAAM;YAAEJ,QAAQ;YAAiBC,UAAU;YAAcI,SAAS;gBAAC;gBAAK;gBAAK;gBAAK;aAAI;QAAC;IAAE;IAC1O;QAAER,IAAI;QAAgBC,MAAM;QAA0BC,SAAS;YAAEC,QAAQ;YAAgBC,UAAU;YAASC,QAAQ;YAAKC,KAAK;QAAI;QAAGC,MAAM;YAAEJ,QAAQ;YAAQC,UAAU;YAAcI,SAAS;gBAAC;gBAAK;aAAI;QAAC;IAAE;IAC3M;QAAER,IAAI;QAAQC,MAAM;QAAsBC,SAAS;YAAEC,QAAQ;YAAQC,UAAU;YAASC,QAAQ;YAAKC,KAAK;QAAI;QAAGC,MAAM;YAAEJ,QAAQ;YAAaC,UAAU;YAAcI,SAAS;gBAAC;gBAAK;gBAAK;gBAAK;aAAI;QAAC;IAAE;IACtM;QAAER,IAAI;QAAWC,MAAM;QAA0BC,SAAS;YAAEC,QAAQ;YAAoBC,UAAU;YAASC,QAAQ;YAAKC,KAAK;QAAI;QAAGC,MAAM;YAAEJ,QAAQ;YAAWC,UAAU;YAAcI,SAAS;gBAAC;gBAAK;gBAAK;gBAAK;aAAI;QAAC;IAAE;IACvN;QAAER,IAAI;QAAUC,MAAM;QAAgCC,SAAS;YAAEC,QAAQ;YAAUC,UAAU;YAAcC,QAAQ;YAAKC,KAAK;QAAI;QAAGC,MAAM;YAAEJ,QAAQ;YAAUC,UAAU;YAAcI,SAAS;gBAAC;gBAAK;gBAAK;aAAI;QAAC;QAAGE,MAAM;QAAMD,UAAU;IAAK;IAC7O;QAAET,IAAI;QAAWC,MAAM;QAA2BC,SAAS;YAAEC,QAAQ;YAAiBC,UAAU;YAAcC,QAAQ;YAAKC,KAAK;QAAI;QAAGC,MAAM;YAAEJ,QAAQ;YAAWC,UAAU;YAAcI,SAAS;gBAAC;gBAAK;gBAAK;gBAAK;aAAI;QAAC;QAAGC,UAAU,CAAC;IAAK;IAC3O;QAAET,IAAI;QAAUC,MAAM;QAA4BC,SAAS;YAAEC,QAAQ;YAAoBC,UAAU;YAAcC,QAAQ;YAAKC,KAAK;QAAI;QAAGC,MAAM;YAAEJ,QAAQ;YAAUC,UAAU;YAAcI,SAAS;gBAAC;gBAAK;gBAAK;gBAAK;aAAI;QAAC;QAAGE,MAAM;QAAMD,UAAU;IAAK;IACxP;QAAET,IAAI;QAASC,MAAM;QAAuBC,SAAS;YAAEC,QAAQ;YAASC,UAAU;YAAcC,QAAQ;YAAKC,KAAK;QAAI;QAAGC,MAAM;YAAEJ,QAAQ;YAASC,UAAU;YAAcI,SAAS;gBAAC;gBAAK;gBAAK;gBAAK;aAAI;QAAC;QAAGE,MAAM;QAAMD,UAAU;IAAK;IACtO;QAAET,IAAI;QAAUC,MAAM;QAA8BC,SAAS;YAAEC,QAAQ;YAAUC,UAAU;YAAcC,QAAQ;YAAKC,KAAK;QAAI;QAAGC,MAAM;YAAEJ,QAAQ;YAAeC,UAAU;YAAcI,SAAS;gBAAC;gBAAK;gBAAK;aAAI;QAAC;IAAE;IACpN;QAAER,IAAI;QAAaC,MAAM;QAA2BC,SAAS;YAAEC,QAAQ;YAAaC,UAAU;YAAcC,QAAQ;YAAKC,KAAK;QAAI;QAAGC,MAAM;YAAEJ,QAAQ;YAAeC,UAAU;YAAcI,SAAS;gBAAC;gBAAK;gBAAK;aAAI;QAAC;IAAE;IACvN;QAAER,IAAI;QAAWC,MAAM;QAAyBC,SAAS;YAAEC,QAAQ;YAAWC,UAAU;YAAcC,QAAQ;YAAKC,KAAK;QAAI;QAAGC,MAAM;YAAEJ,QAAQ;YAAWC,UAAU;YAAcI,SAAS;gBAAC;gBAAK;gBAAK;gBAAK;aAAI;QAAC;QAAGC,UAAU,CAAC;IAAK;IACnO;QAAET,IAAI;QAAUC,MAAM;QAA0BC,SAAS;YAAEC,QAAQ;YAAUC,UAAU;YAAcC,QAAQ;YAAKC,KAAK;QAAI;QAAGC,MAAM;YAAEJ,QAAQ;YAAUC,UAAU;YAAcI,SAAS;gBAAC;gBAAK;gBAAK;gBAAK;aAAI;QAAC;QAAGC,UAAU,CAAC;IAAK;IACjO;QAAET,IAAI;QAAQC,MAAM;QAA8BC,SAAS;YAAEC,QAAQ;YAAiBC,UAAU;YAAcC,QAAQ;YAAKC,KAAK;QAAI;QAAGC,MAAM;YAAEJ,QAAQ;YAAiBC,UAAU;YAAcI,SAAS;gBAAC;gBAAK;gBAAK;gBAAK;aAAI;QAAC;QAAGC,UAAU,CAAC;IAAK;CAElP,CAAA;AAED,gCAAgC,GAChC,OAAO,SAASE,gBAAgBX,EAAW;QAElCD;IADP,IAAI,OAAOC,OAAO,YAAY,CAACA,IAAI,OAAO;IAC1C,QAAOD,2BAAAA,mBAAmBa,IAAI,CAAC,CAACC,UAAYA,QAAQb,EAAE,KAAKA,eAApDD,2BAA2D;AACpE"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Aglyn LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import type { HostTheme } from '@aglyn/shared-data-types';
|
|
18
|
+
/**
|
|
19
|
+
* Site starters (AGL-4049): a whole site a person picks before it exists,
|
|
20
|
+
* every one of them a listing anyone may publish and price, the platform's own
|
|
21
|
+
* included.
|
|
22
|
+
*
|
|
23
|
+
* This module is the vocabulary every reader of a starter shares: the artifact
|
|
24
|
+
* type it is listed under, the facets a search filters on (stamped on the
|
|
25
|
+
* listing as plain fields, so a query can match them), the payload a resolved
|
|
26
|
+
* starter hands the site it creates, and the one check that payload must pass.
|
|
27
|
+
* Who stores starters and how they are bought is the starter source's business
|
|
28
|
+
* (`plugin-manager/plugin-site-starters.ts`); nothing here reads or writes.
|
|
29
|
+
*
|
|
30
|
+
* Pure data and readers, safe for any surface to import.
|
|
31
|
+
*/
|
|
32
|
+
/** The artifact type a site starter is listed and installed under (AGL-4049). */
|
|
33
|
+
export declare const SITE_STARTER_ARTIFACT_TYPE: "siteStarter";
|
|
34
|
+
/**
|
|
35
|
+
* How a starter fills the site it creates: `base` copies its pages as they
|
|
36
|
+
* are; `ai` hands them to the AI site start with the answers it asks for, so
|
|
37
|
+
* the pages are rewritten for the business.
|
|
38
|
+
*/
|
|
39
|
+
export type SiteStarterMode = 'base' | 'ai';
|
|
40
|
+
/**
|
|
41
|
+
* The platform's built-in themes a site's look is layered on (AGL-3497,
|
|
42
|
+
* AGL-4049), by the short name of the themes plugin's preset id
|
|
43
|
+
* (`theme-presets.<name>`), and `starter`: the theme a new site is born with.
|
|
44
|
+
* A starter on a built-in theme names one of these; the AI site start picks
|
|
45
|
+
* among the same list.
|
|
46
|
+
*/
|
|
47
|
+
export declare const SITE_THEME_BASES: readonly ["starter", "material-ui", "bootstrap", "minimal", "material3", "ant-design", "fluent", "carbon", "cupertino"];
|
|
48
|
+
export type SiteThemeBase = (typeof SITE_THEME_BASES)[number];
|
|
49
|
+
/** Whether a value names one of the {@link SITE_THEME_BASES}. */
|
|
50
|
+
export declare function isSiteThemeBase(value: unknown): value is SiteThemeBase;
|
|
51
|
+
/**
|
|
52
|
+
* A starter's theme (AGL-4049), one of two shapes: a built-in theme with the
|
|
53
|
+
* starter's brand colors and font pairing over it, which is how a person's own
|
|
54
|
+
* pick and edits are stored, or a full theme of its author's own.
|
|
55
|
+
*/
|
|
56
|
+
export type SiteStarterTheme = {
|
|
57
|
+
kind: 'builtin';
|
|
58
|
+
/** One of the {@link SITE_THEME_BASES}. */
|
|
59
|
+
base: string;
|
|
60
|
+
/** Palette overrides by scheme, as the theme editor stores them. */
|
|
61
|
+
brand: {
|
|
62
|
+
light: Record<string, string>;
|
|
63
|
+
dark?: Record<string, string>;
|
|
64
|
+
};
|
|
65
|
+
/** A font pairing id (`site-font-pairings.ts`), or `null` for the base theme's own fonts. */
|
|
66
|
+
fonts: string | null;
|
|
67
|
+
} | {
|
|
68
|
+
kind: 'full';
|
|
69
|
+
theme: HostTheme;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* What a starter search filters on (AGL-4049). `kind` is the kind of site it
|
|
73
|
+
* is, an id the core does not interpret (the AI plugin keeps the kinds),
|
|
74
|
+
* `base` a {@link SITE_THEME_BASES} name and `fonts` a font pairing id
|
|
75
|
+
* (`site-font-pairings.ts`), each `null` where the starter names none;
|
|
76
|
+
* `pages` is how many pages it creates.
|
|
77
|
+
*/
|
|
78
|
+
export interface SiteStarterFacets {
|
|
79
|
+
kind: string | null;
|
|
80
|
+
base: string | null;
|
|
81
|
+
fonts: string | null;
|
|
82
|
+
pages: number;
|
|
83
|
+
mode: SiteStarterMode;
|
|
84
|
+
}
|
|
85
|
+
/** A person's pick: the listing, and the version when one is pinned. */
|
|
86
|
+
export interface SiteStarterChoice {
|
|
87
|
+
listingId: string;
|
|
88
|
+
version?: string;
|
|
89
|
+
}
|
|
90
|
+
/** What a resolved starter hands the site it creates (AGL-4049). */
|
|
91
|
+
export interface SiteStarterPayload {
|
|
92
|
+
mode: SiteStarterMode;
|
|
93
|
+
facets: SiteStarterFacets;
|
|
94
|
+
theme: SiteStarterTheme;
|
|
95
|
+
/**
|
|
96
|
+
* The starter's pages, each carrying its routing `slug` as a starter
|
|
97
|
+
* template's screens do: `'/'` is the home page, and a page without one is
|
|
98
|
+
* unpublished.
|
|
99
|
+
*/
|
|
100
|
+
screens: unknown[];
|
|
101
|
+
/** The shared layout every page sits in: the header and footer. */
|
|
102
|
+
layout: unknown | null;
|
|
103
|
+
/** The questions an `ai` starter asks before the site job runs; required for `ai`. */
|
|
104
|
+
answers?: Record<string, unknown>;
|
|
105
|
+
}
|
|
106
|
+
/** The most pages one starter may create. */
|
|
107
|
+
export declare const SITE_STARTER_MAX_SCREENS = 25;
|
|
108
|
+
/**
|
|
109
|
+
* A listing's starter facets, read defensively from the fields
|
|
110
|
+
* {@link siteStarterFacetFields} stamps: a missing or malformed field reads as
|
|
111
|
+
* none, a page count as a whole number from zero, and a mode as `base` unless
|
|
112
|
+
* it says `ai`.
|
|
113
|
+
*/
|
|
114
|
+
export declare function siteStarterFacetsOf(doc: Record<string, unknown>): SiteStarterFacets;
|
|
115
|
+
/** The listing fields a starter's publish stamps, the inverse of {@link siteStarterFacetsOf}. */
|
|
116
|
+
export declare function siteStarterFacetFields(facets: SiteStarterFacets): Record<string, unknown>;
|
|
117
|
+
/** Whether a starter's facets meet a filter: every facet the filter names, equal; an absent one, any. */
|
|
118
|
+
export declare function matchSiteStarterFacets(facets: SiteStarterFacets, filter: Partial<SiteStarterFacets>): boolean;
|
|
119
|
+
/**
|
|
120
|
+
* The ids a caller knows, by facet. `siteStarterRefusal` checks a kind, base
|
|
121
|
+
* or font pairing id only against the set its caller passes: the core keeps
|
|
122
|
+
* no list of kinds, and which bases and pairings are offered is the caller's
|
|
123
|
+
* to say (`new Set(SITE_THEME_BASES)`, the ids of `SITE_FONT_PAIRINGS`).
|
|
124
|
+
*/
|
|
125
|
+
export interface SiteStarterKnownIds {
|
|
126
|
+
kinds?: ReadonlySet<string>;
|
|
127
|
+
bases?: ReadonlySet<string>;
|
|
128
|
+
fonts?: ReadonlySet<string>;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Why a starter's payload cannot start a site, in the words its author is
|
|
132
|
+
* told, or `null` when it can (AGL-4049). Checked when a starter is published
|
|
133
|
+
* and again when one is resolved, since a site is created from it with no
|
|
134
|
+
* step between to catch what is missing.
|
|
135
|
+
*/
|
|
136
|
+
export declare function siteStarterRefusal(payload: SiteStarterPayload, known?: SiteStarterKnownIds): string | null;
|