@suiteop/storefront 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 +14 -0
- package/README.md +4 -2
- package/dist/astro-content-model.cjs +3 -3
- package/dist/astro-content-model.js +2 -2
- package/dist/astro.cjs +1 -1
- package/dist/astro.d.cts +66 -1
- package/dist/astro.d.ts +66 -1
- package/dist/astro.js +1 -1
- package/dist/{availability-Dh0yLSkj.d.cts → availability.d-Cla9GuGc.d.cts} +8 -8
- package/dist/{availability-Dh0yLSkj.d.ts → availability.d-Cla9GuGc.d.ts} +8 -8
- package/dist/checkout.d.cts +11 -0
- package/dist/checkout.d.ts +11 -0
- package/dist/{chunk-IUNIQSFB.js → chunk-3B6ZYRYF.js} +1 -1
- package/dist/chunk-3NE27PHL.cjs +19 -0
- package/dist/chunk-JF245QUY.cjs +9 -0
- package/dist/{chunk-NNWJZUQL.cjs → chunk-OXCLLFCY.cjs} +2 -2
- package/dist/chunk-QBHOJGZI.cjs +21 -0
- package/dist/chunk-UQWQPTHO.js +3 -0
- package/dist/chunk-XOCFEVP4.js +6 -0
- package/dist/chunk-YIYGBTAM.js +9 -0
- package/dist/{client-C9Igm7O-.d.ts → client-CX8K7JNt.d.cts} +65 -11
- package/dist/{client-2KyVv-2l.d.cts → client-s-lEwqzc.d.ts} +65 -11
- package/dist/components.d.cts +43 -1
- package/dist/components.d.ts +43 -1
- package/dist/config.cjs +3 -3
- package/dist/config.d.cts +78 -74
- package/dist/config.d.ts +78 -74
- package/dist/config.js +2 -2
- package/dist/content.cjs +9 -9
- package/dist/content.d.cts +53 -9
- package/dist/content.d.ts +53 -9
- package/dist/content.js +2 -2
- package/dist/{errors-DpImb0Uf.d.cts → errors-Oax7djdp.d.ts} +54 -13
- package/dist/{errors-BGgJ--XR.d.ts → errors-welPvrD6.d.cts} +54 -13
- package/dist/index.cjs +12 -12
- package/dist/index.d.cts +27 -8
- package/dist/index.d.ts +27 -8
- package/dist/index.js +3 -3
- package/dist/react.cjs +4 -4
- package/dist/react.d.cts +24 -3
- package/dist/react.d.ts +24 -3
- package/dist/react.js +3 -3
- package/package.json +1 -1
- package/dist/chunk-5TUJX6GY.js +0 -5
- package/dist/chunk-LY73ZYN5.cjs +0 -20
- package/dist/chunk-NZWYOV5Y.cjs +0 -19
- package/dist/chunk-PYVUDQSQ.js +0 -3
- package/dist/chunk-YSKWSL2F.js +0 -9
- package/dist/chunk-ZLAOY6IF.cjs +0 -9
package/dist/config.d.cts
CHANGED
|
@@ -4,11 +4,11 @@ declare const STOREFRONT_FONTS: readonly ["inter", "montserrat", "poppins", "ral
|
|
|
4
4
|
type StorefrontFont = (typeof STOREFRONT_FONTS)[number];
|
|
5
5
|
declare const STOREFRONT_FONT_FAMILIES: Record<StorefrontFont, string>;
|
|
6
6
|
|
|
7
|
-
declare const STOREFRONT_LOCALES: readonly [
|
|
7
|
+
declare const STOREFRONT_LOCALES: readonly ['en', 'fr', 'es', 'de', 'it', 'pt', 'nl'];
|
|
8
8
|
type StorefrontLocale = (typeof STOREFRONT_LOCALES)[number];
|
|
9
|
-
declare const STOREFRONT_LAYOUTS: readonly [
|
|
9
|
+
declare const STOREFRONT_LAYOUTS: readonly ['listings', 'locations', 'areas', 'single'];
|
|
10
10
|
type StorefrontLayout = (typeof STOREFRONT_LAYOUTS)[number];
|
|
11
|
-
declare const STOREFRONT_THEMES: readonly [
|
|
11
|
+
declare const STOREFRONT_THEMES: readonly ['folio', 'hearth', 'circuit', 'tide', 'noir', 'fjord'];
|
|
12
12
|
type StorefrontTheme = (typeof STOREFRONT_THEMES)[number];
|
|
13
13
|
declare const storefrontSiteConfigSchema: z.ZodObject<{
|
|
14
14
|
layout: z.ZodCatch<z.ZodOptional<z.ZodEnum<{
|
|
@@ -18,12 +18,12 @@ declare const storefrontSiteConfigSchema: z.ZodObject<{
|
|
|
18
18
|
single: "single";
|
|
19
19
|
}>>>;
|
|
20
20
|
theme: z.ZodCatch<z.ZodOptional<z.ZodEnum<{
|
|
21
|
+
circuit: "circuit";
|
|
22
|
+
fjord: "fjord";
|
|
21
23
|
folio: "folio";
|
|
22
24
|
hearth: "hearth";
|
|
23
|
-
circuit: "circuit";
|
|
24
|
-
tide: "tide";
|
|
25
25
|
noir: "noir";
|
|
26
|
-
|
|
26
|
+
tide: "tide";
|
|
27
27
|
}>>>;
|
|
28
28
|
brand: z.ZodObject<{
|
|
29
29
|
name: z.ZodString;
|
|
@@ -41,146 +41,146 @@ declare const storefrontSiteConfigSchema: z.ZodObject<{
|
|
|
41
41
|
}, z.core.$strip>;
|
|
42
42
|
fonts: z.ZodOptional<z.ZodObject<{
|
|
43
43
|
heading: z.ZodOptional<z.ZodEnum<{
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
poppins: "poppins";
|
|
47
|
-
raleway: "raleway";
|
|
48
|
-
nunito: "nunito";
|
|
49
|
-
work_sans: "work_sans";
|
|
50
|
-
mulish: "mulish";
|
|
44
|
+
anybody: "anybody";
|
|
45
|
+
archivo: "archivo";
|
|
51
46
|
barlow: "barlow";
|
|
52
|
-
jost: "jost";
|
|
53
47
|
bitter: "bitter";
|
|
54
|
-
|
|
55
|
-
|
|
48
|
+
cormorant_garamond: "cormorant_garamond";
|
|
49
|
+
crimson_pro: "crimson_pro";
|
|
50
|
+
dm_sans: "dm_sans";
|
|
51
|
+
eb_garamond: "eb_garamond";
|
|
52
|
+
fraunces: "fraunces";
|
|
56
53
|
gantari: "gantari";
|
|
57
|
-
|
|
54
|
+
ibm_plex_sans: "ibm_plex_sans";
|
|
55
|
+
ibm_plex_serif: "ibm_plex_serif";
|
|
56
|
+
inter: "inter";
|
|
57
|
+
josefin_sans: "josefin_sans";
|
|
58
|
+
jost: "jost";
|
|
59
|
+
karla: "karla";
|
|
58
60
|
lato: "lato";
|
|
61
|
+
libre_franklin: "libre_franklin";
|
|
62
|
+
lora: "lora";
|
|
63
|
+
manrope: "manrope";
|
|
64
|
+
merriweather: "merriweather";
|
|
65
|
+
montserrat: "montserrat";
|
|
66
|
+
mulish: "mulish";
|
|
67
|
+
nunito: "nunito";
|
|
68
|
+
open_sans: "open_sans";
|
|
69
|
+
outfit: "outfit";
|
|
70
|
+
overpass: "overpass";
|
|
59
71
|
playfair_display: "playfair_display";
|
|
60
|
-
|
|
72
|
+
plus_jakarta_sans: "plus_jakarta_sans";
|
|
73
|
+
poppins: "poppins";
|
|
74
|
+
public_sans: "public_sans";
|
|
75
|
+
raleway: "raleway";
|
|
61
76
|
reddit_sans: "reddit_sans";
|
|
62
|
-
overpass: "overpass";
|
|
63
77
|
roboto: "roboto";
|
|
64
|
-
open_sans: "open_sans";
|
|
65
|
-
merriweather: "merriweather";
|
|
66
|
-
outfit: "outfit";
|
|
67
|
-
fraunces: "fraunces";
|
|
68
|
-
dm_sans: "dm_sans";
|
|
69
|
-
cormorant_garamond: "cormorant_garamond";
|
|
70
|
-
eb_garamond: "eb_garamond";
|
|
71
|
-
lora: "lora";
|
|
72
|
-
crimson_pro: "crimson_pro";
|
|
73
78
|
source_serif_4: "source_serif_4";
|
|
74
|
-
ibm_plex_serif: "ibm_plex_serif";
|
|
75
|
-
manrope: "manrope";
|
|
76
|
-
plus_jakarta_sans: "plus_jakarta_sans";
|
|
77
79
|
space_grotesk: "space_grotesk";
|
|
78
|
-
|
|
79
|
-
libre_franklin: "libre_franklin";
|
|
80
|
-
josefin_sans: "josefin_sans";
|
|
80
|
+
work_sans: "work_sans";
|
|
81
81
|
}>>;
|
|
82
82
|
body: z.ZodOptional<z.ZodEnum<{
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
poppins: "poppins";
|
|
86
|
-
raleway: "raleway";
|
|
87
|
-
nunito: "nunito";
|
|
88
|
-
work_sans: "work_sans";
|
|
89
|
-
mulish: "mulish";
|
|
83
|
+
anybody: "anybody";
|
|
84
|
+
archivo: "archivo";
|
|
90
85
|
barlow: "barlow";
|
|
91
|
-
jost: "jost";
|
|
92
86
|
bitter: "bitter";
|
|
93
|
-
|
|
94
|
-
|
|
87
|
+
cormorant_garamond: "cormorant_garamond";
|
|
88
|
+
crimson_pro: "crimson_pro";
|
|
89
|
+
dm_sans: "dm_sans";
|
|
90
|
+
eb_garamond: "eb_garamond";
|
|
91
|
+
fraunces: "fraunces";
|
|
95
92
|
gantari: "gantari";
|
|
96
|
-
|
|
93
|
+
ibm_plex_sans: "ibm_plex_sans";
|
|
94
|
+
ibm_plex_serif: "ibm_plex_serif";
|
|
95
|
+
inter: "inter";
|
|
96
|
+
josefin_sans: "josefin_sans";
|
|
97
|
+
jost: "jost";
|
|
98
|
+
karla: "karla";
|
|
97
99
|
lato: "lato";
|
|
100
|
+
libre_franklin: "libre_franklin";
|
|
101
|
+
lora: "lora";
|
|
102
|
+
manrope: "manrope";
|
|
103
|
+
merriweather: "merriweather";
|
|
104
|
+
montserrat: "montserrat";
|
|
105
|
+
mulish: "mulish";
|
|
106
|
+
nunito: "nunito";
|
|
107
|
+
open_sans: "open_sans";
|
|
108
|
+
outfit: "outfit";
|
|
109
|
+
overpass: "overpass";
|
|
98
110
|
playfair_display: "playfair_display";
|
|
99
|
-
|
|
111
|
+
plus_jakarta_sans: "plus_jakarta_sans";
|
|
112
|
+
poppins: "poppins";
|
|
113
|
+
public_sans: "public_sans";
|
|
114
|
+
raleway: "raleway";
|
|
100
115
|
reddit_sans: "reddit_sans";
|
|
101
|
-
overpass: "overpass";
|
|
102
116
|
roboto: "roboto";
|
|
103
|
-
open_sans: "open_sans";
|
|
104
|
-
merriweather: "merriweather";
|
|
105
|
-
outfit: "outfit";
|
|
106
|
-
fraunces: "fraunces";
|
|
107
|
-
dm_sans: "dm_sans";
|
|
108
|
-
cormorant_garamond: "cormorant_garamond";
|
|
109
|
-
eb_garamond: "eb_garamond";
|
|
110
|
-
lora: "lora";
|
|
111
|
-
crimson_pro: "crimson_pro";
|
|
112
117
|
source_serif_4: "source_serif_4";
|
|
113
|
-
ibm_plex_serif: "ibm_plex_serif";
|
|
114
|
-
manrope: "manrope";
|
|
115
|
-
plus_jakarta_sans: "plus_jakarta_sans";
|
|
116
118
|
space_grotesk: "space_grotesk";
|
|
117
|
-
|
|
118
|
-
libre_franklin: "libre_franklin";
|
|
119
|
-
josefin_sans: "josefin_sans";
|
|
119
|
+
work_sans: "work_sans";
|
|
120
120
|
}>>;
|
|
121
121
|
}, z.core.$strip>>;
|
|
122
122
|
nav: z.ZodArray<z.ZodObject<{
|
|
123
123
|
label: z.ZodRecord<z.ZodEnum<{
|
|
124
|
+
de: "de";
|
|
124
125
|
en: "en";
|
|
125
126
|
es: "es";
|
|
126
127
|
fr: "fr";
|
|
127
|
-
nl: "nl";
|
|
128
|
-
de: "de";
|
|
129
128
|
it: "it";
|
|
129
|
+
nl: "nl";
|
|
130
130
|
pt: "pt";
|
|
131
131
|
}> & z.core.$partial, z.ZodString>;
|
|
132
132
|
href: z.ZodString;
|
|
133
133
|
}, z.core.$strip>>;
|
|
134
134
|
footer: z.ZodObject<{
|
|
135
135
|
text: z.ZodRecord<z.ZodEnum<{
|
|
136
|
+
de: "de";
|
|
136
137
|
en: "en";
|
|
137
138
|
es: "es";
|
|
138
139
|
fr: "fr";
|
|
139
|
-
nl: "nl";
|
|
140
|
-
de: "de";
|
|
141
140
|
it: "it";
|
|
141
|
+
nl: "nl";
|
|
142
142
|
pt: "pt";
|
|
143
143
|
}> & z.core.$partial, z.ZodString>;
|
|
144
144
|
links: z.ZodArray<z.ZodObject<{
|
|
145
145
|
label: z.ZodRecord<z.ZodEnum<{
|
|
146
|
+
de: "de";
|
|
146
147
|
en: "en";
|
|
147
148
|
es: "es";
|
|
148
149
|
fr: "fr";
|
|
149
|
-
nl: "nl";
|
|
150
|
-
de: "de";
|
|
151
150
|
it: "it";
|
|
151
|
+
nl: "nl";
|
|
152
152
|
pt: "pt";
|
|
153
153
|
}> & z.core.$partial, z.ZodString>;
|
|
154
154
|
href: z.ZodString;
|
|
155
155
|
}, z.core.$strip>>;
|
|
156
156
|
}, z.core.$strip>;
|
|
157
157
|
defaultLocale: z.ZodEnum<{
|
|
158
|
+
de: "de";
|
|
158
159
|
en: "en";
|
|
159
160
|
es: "es";
|
|
160
161
|
fr: "fr";
|
|
161
|
-
nl: "nl";
|
|
162
|
-
de: "de";
|
|
163
162
|
it: "it";
|
|
163
|
+
nl: "nl";
|
|
164
164
|
pt: "pt";
|
|
165
165
|
}>;
|
|
166
166
|
locales: z.ZodArray<z.ZodEnum<{
|
|
167
|
+
de: "de";
|
|
167
168
|
en: "en";
|
|
168
169
|
es: "es";
|
|
169
170
|
fr: "fr";
|
|
170
|
-
nl: "nl";
|
|
171
|
-
de: "de";
|
|
172
171
|
it: "it";
|
|
172
|
+
nl: "nl";
|
|
173
173
|
pt: "pt";
|
|
174
174
|
}>>;
|
|
175
175
|
seo: z.ZodObject<{
|
|
176
176
|
titleTemplate: z.ZodString;
|
|
177
177
|
defaultDescription: z.ZodRecord<z.ZodEnum<{
|
|
178
|
+
de: "de";
|
|
178
179
|
en: "en";
|
|
179
180
|
es: "es";
|
|
180
181
|
fr: "fr";
|
|
181
|
-
nl: "nl";
|
|
182
|
-
de: "de";
|
|
183
182
|
it: "it";
|
|
183
|
+
nl: "nl";
|
|
184
184
|
pt: "pt";
|
|
185
185
|
}> & z.core.$partial, z.ZodString>;
|
|
186
186
|
ogImageUrl: z.ZodNullable<z.ZodURL>;
|
|
@@ -325,6 +325,10 @@ interface ResolvedStorefrontTheme {
|
|
|
325
325
|
type ThemeConfig = Pick<StorefrontSiteConfig, 'colors'> & Partial<Pick<StorefrontSiteConfig, 'theme' | 'layout' | 'fonts'>>;
|
|
326
326
|
declare function resolveStorefrontTheme(config: ThemeConfig): ResolvedStorefrontTheme;
|
|
327
327
|
|
|
328
|
+
/**
|
|
329
|
+
* Validates `suiteop.config.ts` and returns it. Throws a `ZodError` listing every problem, so a
|
|
330
|
+
* build with an invalid theme fails loudly instead of rendering a broken site.
|
|
331
|
+
*/
|
|
328
332
|
declare function defineSuiteOpConfig(config: StorefrontSiteConfig): StorefrontSiteConfig;
|
|
329
333
|
|
|
330
334
|
export { DEFAULT_STOREFRONT_LAYOUT, DEFAULT_STOREFRONT_THEME, type DerivedStorefrontTheme, type ResolvedStorefrontTheme, STOREFRONT_FONT_FAMILIES, STOREFRONT_LAYOUTS, STOREFRONT_LOCALES, STOREFRONT_THEMES, STOREFRONT_THEME_RECIPES, type StorefrontLayout, type StorefrontLocale, type StorefrontSiteConfig, type StorefrontTheme, type StorefrontThemeRecipe, defineSuiteOpConfig, deriveStorefrontTheme, resolveStorefrontTheme, storefrontSiteConfigSchema };
|
package/dist/config.d.ts
CHANGED
|
@@ -4,11 +4,11 @@ declare const STOREFRONT_FONTS: readonly ["inter", "montserrat", "poppins", "ral
|
|
|
4
4
|
type StorefrontFont = (typeof STOREFRONT_FONTS)[number];
|
|
5
5
|
declare const STOREFRONT_FONT_FAMILIES: Record<StorefrontFont, string>;
|
|
6
6
|
|
|
7
|
-
declare const STOREFRONT_LOCALES: readonly [
|
|
7
|
+
declare const STOREFRONT_LOCALES: readonly ['en', 'fr', 'es', 'de', 'it', 'pt', 'nl'];
|
|
8
8
|
type StorefrontLocale = (typeof STOREFRONT_LOCALES)[number];
|
|
9
|
-
declare const STOREFRONT_LAYOUTS: readonly [
|
|
9
|
+
declare const STOREFRONT_LAYOUTS: readonly ['listings', 'locations', 'areas', 'single'];
|
|
10
10
|
type StorefrontLayout = (typeof STOREFRONT_LAYOUTS)[number];
|
|
11
|
-
declare const STOREFRONT_THEMES: readonly [
|
|
11
|
+
declare const STOREFRONT_THEMES: readonly ['folio', 'hearth', 'circuit', 'tide', 'noir', 'fjord'];
|
|
12
12
|
type StorefrontTheme = (typeof STOREFRONT_THEMES)[number];
|
|
13
13
|
declare const storefrontSiteConfigSchema: z.ZodObject<{
|
|
14
14
|
layout: z.ZodCatch<z.ZodOptional<z.ZodEnum<{
|
|
@@ -18,12 +18,12 @@ declare const storefrontSiteConfigSchema: z.ZodObject<{
|
|
|
18
18
|
single: "single";
|
|
19
19
|
}>>>;
|
|
20
20
|
theme: z.ZodCatch<z.ZodOptional<z.ZodEnum<{
|
|
21
|
+
circuit: "circuit";
|
|
22
|
+
fjord: "fjord";
|
|
21
23
|
folio: "folio";
|
|
22
24
|
hearth: "hearth";
|
|
23
|
-
circuit: "circuit";
|
|
24
|
-
tide: "tide";
|
|
25
25
|
noir: "noir";
|
|
26
|
-
|
|
26
|
+
tide: "tide";
|
|
27
27
|
}>>>;
|
|
28
28
|
brand: z.ZodObject<{
|
|
29
29
|
name: z.ZodString;
|
|
@@ -41,146 +41,146 @@ declare const storefrontSiteConfigSchema: z.ZodObject<{
|
|
|
41
41
|
}, z.core.$strip>;
|
|
42
42
|
fonts: z.ZodOptional<z.ZodObject<{
|
|
43
43
|
heading: z.ZodOptional<z.ZodEnum<{
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
poppins: "poppins";
|
|
47
|
-
raleway: "raleway";
|
|
48
|
-
nunito: "nunito";
|
|
49
|
-
work_sans: "work_sans";
|
|
50
|
-
mulish: "mulish";
|
|
44
|
+
anybody: "anybody";
|
|
45
|
+
archivo: "archivo";
|
|
51
46
|
barlow: "barlow";
|
|
52
|
-
jost: "jost";
|
|
53
47
|
bitter: "bitter";
|
|
54
|
-
|
|
55
|
-
|
|
48
|
+
cormorant_garamond: "cormorant_garamond";
|
|
49
|
+
crimson_pro: "crimson_pro";
|
|
50
|
+
dm_sans: "dm_sans";
|
|
51
|
+
eb_garamond: "eb_garamond";
|
|
52
|
+
fraunces: "fraunces";
|
|
56
53
|
gantari: "gantari";
|
|
57
|
-
|
|
54
|
+
ibm_plex_sans: "ibm_plex_sans";
|
|
55
|
+
ibm_plex_serif: "ibm_plex_serif";
|
|
56
|
+
inter: "inter";
|
|
57
|
+
josefin_sans: "josefin_sans";
|
|
58
|
+
jost: "jost";
|
|
59
|
+
karla: "karla";
|
|
58
60
|
lato: "lato";
|
|
61
|
+
libre_franklin: "libre_franklin";
|
|
62
|
+
lora: "lora";
|
|
63
|
+
manrope: "manrope";
|
|
64
|
+
merriweather: "merriweather";
|
|
65
|
+
montserrat: "montserrat";
|
|
66
|
+
mulish: "mulish";
|
|
67
|
+
nunito: "nunito";
|
|
68
|
+
open_sans: "open_sans";
|
|
69
|
+
outfit: "outfit";
|
|
70
|
+
overpass: "overpass";
|
|
59
71
|
playfair_display: "playfair_display";
|
|
60
|
-
|
|
72
|
+
plus_jakarta_sans: "plus_jakarta_sans";
|
|
73
|
+
poppins: "poppins";
|
|
74
|
+
public_sans: "public_sans";
|
|
75
|
+
raleway: "raleway";
|
|
61
76
|
reddit_sans: "reddit_sans";
|
|
62
|
-
overpass: "overpass";
|
|
63
77
|
roboto: "roboto";
|
|
64
|
-
open_sans: "open_sans";
|
|
65
|
-
merriweather: "merriweather";
|
|
66
|
-
outfit: "outfit";
|
|
67
|
-
fraunces: "fraunces";
|
|
68
|
-
dm_sans: "dm_sans";
|
|
69
|
-
cormorant_garamond: "cormorant_garamond";
|
|
70
|
-
eb_garamond: "eb_garamond";
|
|
71
|
-
lora: "lora";
|
|
72
|
-
crimson_pro: "crimson_pro";
|
|
73
78
|
source_serif_4: "source_serif_4";
|
|
74
|
-
ibm_plex_serif: "ibm_plex_serif";
|
|
75
|
-
manrope: "manrope";
|
|
76
|
-
plus_jakarta_sans: "plus_jakarta_sans";
|
|
77
79
|
space_grotesk: "space_grotesk";
|
|
78
|
-
|
|
79
|
-
libre_franklin: "libre_franklin";
|
|
80
|
-
josefin_sans: "josefin_sans";
|
|
80
|
+
work_sans: "work_sans";
|
|
81
81
|
}>>;
|
|
82
82
|
body: z.ZodOptional<z.ZodEnum<{
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
poppins: "poppins";
|
|
86
|
-
raleway: "raleway";
|
|
87
|
-
nunito: "nunito";
|
|
88
|
-
work_sans: "work_sans";
|
|
89
|
-
mulish: "mulish";
|
|
83
|
+
anybody: "anybody";
|
|
84
|
+
archivo: "archivo";
|
|
90
85
|
barlow: "barlow";
|
|
91
|
-
jost: "jost";
|
|
92
86
|
bitter: "bitter";
|
|
93
|
-
|
|
94
|
-
|
|
87
|
+
cormorant_garamond: "cormorant_garamond";
|
|
88
|
+
crimson_pro: "crimson_pro";
|
|
89
|
+
dm_sans: "dm_sans";
|
|
90
|
+
eb_garamond: "eb_garamond";
|
|
91
|
+
fraunces: "fraunces";
|
|
95
92
|
gantari: "gantari";
|
|
96
|
-
|
|
93
|
+
ibm_plex_sans: "ibm_plex_sans";
|
|
94
|
+
ibm_plex_serif: "ibm_plex_serif";
|
|
95
|
+
inter: "inter";
|
|
96
|
+
josefin_sans: "josefin_sans";
|
|
97
|
+
jost: "jost";
|
|
98
|
+
karla: "karla";
|
|
97
99
|
lato: "lato";
|
|
100
|
+
libre_franklin: "libre_franklin";
|
|
101
|
+
lora: "lora";
|
|
102
|
+
manrope: "manrope";
|
|
103
|
+
merriweather: "merriweather";
|
|
104
|
+
montserrat: "montserrat";
|
|
105
|
+
mulish: "mulish";
|
|
106
|
+
nunito: "nunito";
|
|
107
|
+
open_sans: "open_sans";
|
|
108
|
+
outfit: "outfit";
|
|
109
|
+
overpass: "overpass";
|
|
98
110
|
playfair_display: "playfair_display";
|
|
99
|
-
|
|
111
|
+
plus_jakarta_sans: "plus_jakarta_sans";
|
|
112
|
+
poppins: "poppins";
|
|
113
|
+
public_sans: "public_sans";
|
|
114
|
+
raleway: "raleway";
|
|
100
115
|
reddit_sans: "reddit_sans";
|
|
101
|
-
overpass: "overpass";
|
|
102
116
|
roboto: "roboto";
|
|
103
|
-
open_sans: "open_sans";
|
|
104
|
-
merriweather: "merriweather";
|
|
105
|
-
outfit: "outfit";
|
|
106
|
-
fraunces: "fraunces";
|
|
107
|
-
dm_sans: "dm_sans";
|
|
108
|
-
cormorant_garamond: "cormorant_garamond";
|
|
109
|
-
eb_garamond: "eb_garamond";
|
|
110
|
-
lora: "lora";
|
|
111
|
-
crimson_pro: "crimson_pro";
|
|
112
117
|
source_serif_4: "source_serif_4";
|
|
113
|
-
ibm_plex_serif: "ibm_plex_serif";
|
|
114
|
-
manrope: "manrope";
|
|
115
|
-
plus_jakarta_sans: "plus_jakarta_sans";
|
|
116
118
|
space_grotesk: "space_grotesk";
|
|
117
|
-
|
|
118
|
-
libre_franklin: "libre_franklin";
|
|
119
|
-
josefin_sans: "josefin_sans";
|
|
119
|
+
work_sans: "work_sans";
|
|
120
120
|
}>>;
|
|
121
121
|
}, z.core.$strip>>;
|
|
122
122
|
nav: z.ZodArray<z.ZodObject<{
|
|
123
123
|
label: z.ZodRecord<z.ZodEnum<{
|
|
124
|
+
de: "de";
|
|
124
125
|
en: "en";
|
|
125
126
|
es: "es";
|
|
126
127
|
fr: "fr";
|
|
127
|
-
nl: "nl";
|
|
128
|
-
de: "de";
|
|
129
128
|
it: "it";
|
|
129
|
+
nl: "nl";
|
|
130
130
|
pt: "pt";
|
|
131
131
|
}> & z.core.$partial, z.ZodString>;
|
|
132
132
|
href: z.ZodString;
|
|
133
133
|
}, z.core.$strip>>;
|
|
134
134
|
footer: z.ZodObject<{
|
|
135
135
|
text: z.ZodRecord<z.ZodEnum<{
|
|
136
|
+
de: "de";
|
|
136
137
|
en: "en";
|
|
137
138
|
es: "es";
|
|
138
139
|
fr: "fr";
|
|
139
|
-
nl: "nl";
|
|
140
|
-
de: "de";
|
|
141
140
|
it: "it";
|
|
141
|
+
nl: "nl";
|
|
142
142
|
pt: "pt";
|
|
143
143
|
}> & z.core.$partial, z.ZodString>;
|
|
144
144
|
links: z.ZodArray<z.ZodObject<{
|
|
145
145
|
label: z.ZodRecord<z.ZodEnum<{
|
|
146
|
+
de: "de";
|
|
146
147
|
en: "en";
|
|
147
148
|
es: "es";
|
|
148
149
|
fr: "fr";
|
|
149
|
-
nl: "nl";
|
|
150
|
-
de: "de";
|
|
151
150
|
it: "it";
|
|
151
|
+
nl: "nl";
|
|
152
152
|
pt: "pt";
|
|
153
153
|
}> & z.core.$partial, z.ZodString>;
|
|
154
154
|
href: z.ZodString;
|
|
155
155
|
}, z.core.$strip>>;
|
|
156
156
|
}, z.core.$strip>;
|
|
157
157
|
defaultLocale: z.ZodEnum<{
|
|
158
|
+
de: "de";
|
|
158
159
|
en: "en";
|
|
159
160
|
es: "es";
|
|
160
161
|
fr: "fr";
|
|
161
|
-
nl: "nl";
|
|
162
|
-
de: "de";
|
|
163
162
|
it: "it";
|
|
163
|
+
nl: "nl";
|
|
164
164
|
pt: "pt";
|
|
165
165
|
}>;
|
|
166
166
|
locales: z.ZodArray<z.ZodEnum<{
|
|
167
|
+
de: "de";
|
|
167
168
|
en: "en";
|
|
168
169
|
es: "es";
|
|
169
170
|
fr: "fr";
|
|
170
|
-
nl: "nl";
|
|
171
|
-
de: "de";
|
|
172
171
|
it: "it";
|
|
172
|
+
nl: "nl";
|
|
173
173
|
pt: "pt";
|
|
174
174
|
}>>;
|
|
175
175
|
seo: z.ZodObject<{
|
|
176
176
|
titleTemplate: z.ZodString;
|
|
177
177
|
defaultDescription: z.ZodRecord<z.ZodEnum<{
|
|
178
|
+
de: "de";
|
|
178
179
|
en: "en";
|
|
179
180
|
es: "es";
|
|
180
181
|
fr: "fr";
|
|
181
|
-
nl: "nl";
|
|
182
|
-
de: "de";
|
|
183
182
|
it: "it";
|
|
183
|
+
nl: "nl";
|
|
184
184
|
pt: "pt";
|
|
185
185
|
}> & z.core.$partial, z.ZodString>;
|
|
186
186
|
ogImageUrl: z.ZodNullable<z.ZodURL>;
|
|
@@ -325,6 +325,10 @@ interface ResolvedStorefrontTheme {
|
|
|
325
325
|
type ThemeConfig = Pick<StorefrontSiteConfig, 'colors'> & Partial<Pick<StorefrontSiteConfig, 'theme' | 'layout' | 'fonts'>>;
|
|
326
326
|
declare function resolveStorefrontTheme(config: ThemeConfig): ResolvedStorefrontTheme;
|
|
327
327
|
|
|
328
|
+
/**
|
|
329
|
+
* Validates `suiteop.config.ts` and returns it. Throws a `ZodError` listing every problem, so a
|
|
330
|
+
* build with an invalid theme fails loudly instead of rendering a broken site.
|
|
331
|
+
*/
|
|
328
332
|
declare function defineSuiteOpConfig(config: StorefrontSiteConfig): StorefrontSiteConfig;
|
|
329
333
|
|
|
330
334
|
export { DEFAULT_STOREFRONT_LAYOUT, DEFAULT_STOREFRONT_THEME, type DerivedStorefrontTheme, type ResolvedStorefrontTheme, STOREFRONT_FONT_FAMILIES, STOREFRONT_LAYOUTS, STOREFRONT_LOCALES, STOREFRONT_THEMES, STOREFRONT_THEME_RECIPES, type StorefrontLayout, type StorefrontLocale, type StorefrontSiteConfig, type StorefrontTheme, type StorefrontThemeRecipe, defineSuiteOpConfig, deriveStorefrontTheme, resolveStorefrontTheme, storefrontSiteConfigSchema };
|
package/dist/config.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { STOREFRONT_FONTS, STOREFRONT_FONT_FAMILIES } from './chunk-
|
|
2
|
-
export { STOREFRONT_FONT_FAMILIES } from './chunk-
|
|
1
|
+
import { STOREFRONT_FONTS, STOREFRONT_FONT_FAMILIES } from './chunk-UQWQPTHO.js';
|
|
2
|
+
export { STOREFRONT_FONT_FAMILIES } from './chunk-UQWQPTHO.js';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
|
|
5
5
|
var STOREFRONT_LOCALES=["en","fr","es","de","it","pt","nl"];var STOREFRONT_LAYOUTS=["listings","locations","areas","single"];var STOREFRONT_THEMES=["folio","hearth","circuit","tide","noir","fjord"];var REQUIRED="validation.required";var TOO_LONG="validation.max_length";var TOO_MANY="validation.too_large";var INVALID="validation.invalid";var text=max=>z.string(INVALID).max(max,TOO_LONG);var localeSchema=z.enum(STOREFRONT_LOCALES,"validation.storefront.locale_unsupported");var hexSchema=z.string(INVALID).regex(/^#[0-9A-Fa-f]{6}$/,"validation.storefront.color_hex");var assetUrlSchema=z.url({protocol:/^https$/,error:"validation.storefront.url_https"});var localizedSchema=z.partialRecord(localeSchema,text(200),INVALID);var linkSchema=z.object({label:localizedSchema,href:text(500).regex(/^(\/(?!\/)|https:\/\/)/,"validation.storefront.link_href")},INVALID);var fontSchema=z.enum(STOREFRONT_FONTS,"validation.invalid_option");var storefrontSiteConfigSchema=z.object({layout:z.enum(STOREFRONT_LAYOUTS).optional().catch(void 0),theme:z.enum(STOREFRONT_THEMES).optional().catch(void 0),brand:z.object({name:text(80).min(1,REQUIRED),logoUrl:assetUrlSchema.nullable(),logoOnDarkUrl:assetUrlSchema.nullable().optional(),faviconUrl:assetUrlSchema.nullable()},INVALID),colors:z.object({primary:hexSchema,secondary:hexSchema.nullable().optional(),primaryForeground:hexSchema.optional(),background:hexSchema.optional(),foreground:hexSchema.optional(),accent:hexSchema.optional()},INVALID),fonts:z.object({heading:fontSchema.optional(),body:fontSchema.optional()},INVALID).optional(),nav:z.array(linkSchema,INVALID).max(8,TOO_MANY),footer:z.object({text:localizedSchema,links:z.array(linkSchema,INVALID).max(12,TOO_MANY)},INVALID),defaultLocale:localeSchema,locales:z.array(localeSchema,INVALID).min(1,REQUIRED).max(STOREFRONT_LOCALES.length,TOO_MANY),seo:z.object({titleTemplate:text(80).includes("%s",{error:"validation.storefront.title_template_placeholder"}),defaultDescription:localizedSchema,ogImageUrl:assetUrlSchema.nullable()},INVALID)},INVALID).refine(c=>c.locales.includes(c.defaultLocale),{path:["defaultLocale"],message:"validation.storefront.default_locale_not_listed"});var DEFAULT_STOREFRONT_LAYOUT="listings";var DEFAULT_STOREFRONT_THEME="tide";var STOREFRONT_THEME_RECIPES={folio:{mode:"light",fonts:{heading:"eb_garamond",body:"libre_franklin"},radius:{sm:0,md:0,lg:0,btn:0},btn:{size:12,w:600,ls:"0.14em",tt:"uppercase",h:46},type:{display:[88,1,400,"-0.015em"],h1:[56,1.05,400,"-0.01em"],h2:[36,1.15,400,"0"],h3:[24,1.25,500,"0"],body:[18,1.6,400,"0"],small:[14,1.5,400,"0"],label:[11,1.3,600,"0.16em","uppercase"]},space:{section:144,gutter:32},neutral:{hue:null,mix:0,c:.006},L:{bg:.985,surface:1,surface2:.955,tint:.95,border:.87,ink:.19,muted:.47,dark:.22},C:{ink:.02,dark:.04,tint:.022},shadow:false},hearth:{mode:"light",fonts:{heading:"lora",body:"karla"},radius:{sm:6,md:12,lg:18,btn:8},btn:{size:15,w:700,ls:"0",tt:"none",h:48},type:{display:[64,1.08,500,"-0.01em"],h1:[48,1.12,500,"-0.01em"],h2:[32,1.2,500,"0"],h3:[22,1.3,600,"0"],body:[17,1.6,400,"0"],small:[14,1.5,400,"0"],label:[12,1.3,700,"0.1em","uppercase"]},space:{section:112,gutter:28},neutral:{hue:75,mix:.85,c:.014},L:{bg:.972,surface:.99,surface2:.945,tint:.935,border:.885,ink:.25,muted:.48,dark:.28},C:{ink:.025,dark:.05,tint:.032},shadow:true},circuit:{mode:"light",fonts:{heading:"space_grotesk",body:"ibm_plex_sans"},radius:{sm:8,md:12,lg:16,btn:999},btn:{size:15,w:600,ls:"-0.005em",tt:"none",h:44},type:{display:[64,1.02,600,"-0.035em"],h1:[44,1.08,600,"-0.03em"],h2:[30,1.15,600,"-0.02em"],h3:[20,1.3,600,"-0.01em"],body:[16,1.55,400,"0"],small:[14,1.45,400,"0"],label:[12,1.3,600,"0.02em"]},space:{section:88,gutter:20},neutral:{hue:null,mix:0,c:.004},L:{bg:1,surface:.975,surface2:.958,tint:.958,border:.915,ink:.17,muted:.48,dark:.19},C:{ink:.012,dark:.03,tint:.035},shadow:true},tide:{mode:"light",fonts:{heading:"outfit",body:"mulish"},radius:{sm:12,md:20,lg:28,btn:999},btn:{size:15,w:700,ls:"0.01em",tt:"none",h:50},type:{display:[76,1.02,300,"-0.02em"],h1:[48,1.1,400,"-0.015em"],h2:[34,1.15,400,"-0.01em"],h3:[21,1.3,500,"0"],body:[17,1.6,400,"0"],small:[14,1.5,400,"0"],label:[12,1.3,700,"0.08em","uppercase"]},space:{section:120,gutter:24},neutral:{hue:null,mix:0,c:.005},L:{bg:.99,surface:.968,surface2:.945,tint:.95,border:.905,ink:.26,muted:.48,dark:.29},C:{ink:.035,dark:.055,tint:.028},shadow:true},noir:{mode:"dark",fonts:{heading:"cormorant_garamond",body:"manrope"},radius:{sm:0,md:2,lg:2,btn:0},btn:{size:11,w:600,ls:"0.22em",tt:"uppercase",h:48},type:{display:[84,1,300,"0.02em","uppercase"],h1:[56,1.05,300,"0.01em"],h2:[38,1.15,400,"0"],h3:[24,1.25,500,"0.02em"],body:[16,1.7,400,"0"],small:[13,1.55,400,"0.01em"],label:[11,1.3,600,"0.24em","uppercase"]},space:{section:152,gutter:32},neutral:{hue:null,mix:0,c:.016},L:{bg:.165,surface:.205,surface2:.245,tint:.24,border:.34,ink:.94,muted:.76,dark:.12},C:{ink:.01,dark:.014,tint:.035},shadow:false},fjord:{mode:"light",fonts:{heading:"dm_sans",body:"dm_sans"},radius:{sm:2,md:4,lg:6,btn:4},btn:{size:14,w:500,ls:"0",tt:"none",h:44},type:{display:[60,1.05,500,"-0.03em"],h1:[42,1.1,500,"-0.025em"],h2:[28,1.2,500,"-0.015em"],h3:[19,1.35,500,"-0.005em"],body:[16,1.6,400,"0"],small:[13,1.5,400,"0"],label:[12,1.3,500,"0"]},space:{section:128,gutter:24},neutral:{hue:85,mix:.85,c:.006},L:{bg:.976,surface:.995,surface2:.948,tint:.945,border:.895,ink:.23,muted:.49,dark:.26},C:{ink:.008,dark:.02,tint:.022},shadow:false}};var clamp=(v,a,b)=>Math.min(b,Math.max(a,v));var toLin=c=>c<=.04045?c/12.92:Math.pow((c+.055)/1.055,2.4);var toGam=c=>c<=.0031308?12.92*c:1.055*Math.pow(c,1/2.4)-.055;var hexToRgb=hex=>{const h=hex.replace("#","");return [0,2,4].map(i=>parseInt(h.slice(i,i+2),16)/255)};var rgbToHex=rgb=>"#"+rgb.map(v=>Math.round(clamp(v,0,1)*255).toString(16).padStart(2,"0")).join("").toUpperCase();function hexToOklch(hex){const[r,g,b]=hexToRgb(hex).map(toLin);const l=Math.cbrt(.4122214708*r+.5363325363*g+.0514459929*b);const m=Math.cbrt(.2119034982*r+.6806995451*g+.1073969566*b);const s=Math.cbrt(.0883024619*r+.2817188376*g+.6299787005*b);const L=.2104542553*l+.793617785*m-.0040720468*s;const A=1.9779984951*l-2.428592205*m+.4505937099*s;const B=.0259040371*l+.7827717662*m-.808675766*s;let H=Math.atan2(B,A)*180/Math.PI;if(H<0)H+=360;return [L,Math.sqrt(A*A+B*B),H]}function oklchToLinear(L,C,H){const a=C*Math.cos(H*Math.PI/180);const b=C*Math.sin(H*Math.PI/180);const l=(L+.3963377774*a+.2158037573*b)**3;const m=(L-.1055613458*a-.0638541728*b)**3;const s=(L-.0894841775*a-1.291485548*b)**3;return [4.0767416621*l-3.3077115913*m+.2309699292*s,-1.2684380046*l+2.6097574011*m-.3413193965*s,-0.0041960863*l-.7034186147*m+1.707614701*s]}var inGamut=rgb=>rgb.every(v=>v>=-1e-4&&v<=1.0001);function oklchToHex(lightness,C,H){const L=clamp(lightness,0,1);let rgb=oklchToLinear(L,C,H);if(!inGamut(rgb)){let lo=0;let hi=C;for(let i=0;i<22;i++){const mid=(lo+hi)/2;if(inGamut(oklchToLinear(L,mid,H)))lo=mid;else hi=mid;}rgb=oklchToLinear(L,lo,H);}return rgbToHex(rgb.map(v=>toGam(clamp(v,0,1))))}var luminance=hex=>{const[r,g,b]=hexToRgb(hex).map(toLin);return .2126*r+.7152*g+.0722*b};function contrastRatio(a,b){const x=luminance(a);const y=luminance(b);return (Math.max(x,y)+.05)/(Math.min(x,y)+.05)}var minContrast=(hex,grounds)=>Math.min(...grounds.map(g=>contrastRatio(hex,g)));var rgba=(hex,alpha)=>{const[r,g,b]=hexToRgb(hex).map(v=>Math.round(v*255));return `rgba(${r},${g},${b},${alpha})`};var mixHue=(a,b,t)=>{const d=(b-a+540)%360-180;return (a+d*t+360)%360};function fit(lightness,C,H,grounds,target,dir){let L=lightness;let hex=oklchToHex(L,C,H);let steps=0;while(minContrast(hex,grounds)<target&&steps<100){L=clamp(L+dir*.01,0,1);hex=oklchToHex(L,C,H);steps++;}return {hex,L,steps}}var SERIF_FONTS=new Set(["playfair_display","merriweather","bitter","fraunces","cormorant_garamond","eb_garamond","lora","crimson_pro","source_serif_4","ibm_plex_serif"]);function storefrontFontStack(font){return `'${STOREFRONT_FONT_FAMILIES[font]}', ${SERIF_FONTS.has(font)?"serif":"sans-serif"}`}var AA=4.5;var INK=7;function derivePalette(recipe,brandHex,secondary,overrides){const[bL,bC,bH]=hexToOklch(brandHex);const nh=recipe.neutral.hue==null?bH:mixHue(bH,recipe.neutral.hue,recipe.neutral.mix);const nc=recipe.neutral.c;const{L,C}=recipe;const dark=recipe.mode==="dark";const dir=dark?1:-1;const N=(l,c=nc)=>oklchToHex(l,c,nh);const bg=overrides.background?.toUpperCase()??N(L.bg);const surface=N(L.surface,L.surface>=.999?0:nc);const surface2=N(L.surface2);const tint=oklchToHex(L.tint,Math.min(bC,C.tint),bH);const border=N(L.border,nc*1.5);const borderStrong=N(dark?L.border+.12:L.border-.2,nc*1.5);const grounds=[bg,surface,surface2,tint];const ink=overrides.foreground?.toUpperCase()??fit(L.ink,C.ink,nh,grounds,INK,dir).hex;const muted=fit(L.muted,nc*2.5,nh,grounds,AA,dir).hex;const brandText=fit(bL,bC,bH,grounds,AA,dir);const accentText=overrides.accent?.toUpperCase()??brandText.hex;const notes=[];let p;let on;if(!dark){const white=oklchToHex(.995,.003,bH);if(contrastRatio(brandHex,white)>=AA){p={hex:brandHex.toUpperCase(),L:bL};on=white;}else if(bL>=.7&&contrastRatio(brandHex,ink)>=AA){p={hex:brandHex.toUpperCase(),L:bL};on=ink;notes.push({code:"light_brand_ink_label",text:"Light brand: button keeps the colour and takes an ink label"});}else {p=fit(bL,bC,bH,[white],AA,-1);on=white;notes.push({code:"button_darkened",from:round2(bL),to:round2(p.L),text:`Button darkened L ${bL.toFixed(2)} \u2192 ${p.L.toFixed(2)} for a white label`});}}else {on=bg;p=fit(Math.max(bL,.72),bC,bH,[bg,surface],AA,1);if(p.L>bL+.005){notes.push({code:"brand_lifted",from:round2(bL),to:round2(p.L),text:`Brand lifted L ${bL.toFixed(2)} \u2192 ${p.L.toFixed(2)} to read on dark`});}}const onPrimary=overrides.primaryForeground?.toUpperCase()??on;let primaryHover=oklchToHex(p.L+(dark?.05:-0.06),bC,bH);if(contrastRatio(primaryHover,onPrimary)<AA){primaryHover=oklchToHex(p.L+(dark?-0.04:.04),bC,bH);}const darkToken=oklchToHex(L.dark,Math.min(bC,C.dark),bH);const phBg=dark?oklchToHex(.27,Math.min(bC,.03),bH):oklchToHex(L.tint-.045,Math.min(bC,.03),bH);const t={bg,surface,surface2,tint,border,borderStrong,ink,muted,primary:p.hex,onPrimary,primaryHover,accentText,dark:darkToken,onDark:oklchToHex(.97,.008,bH),onDarkMuted:fit(.82,.012,bH,[darkToken],AA,1).hex,darkAccent:fit(Math.max(bL,.72),bC,bH,[darkToken],AA,1).hex,focus:dark?p.hex:accentText,phBg,phText:fit(dark?.7:.48,.02,bH,[phBg],AA,dir).hex};if(secondary)t.accent2=fit(...hexToOklch(secondary),grounds,AA,dir).hex;if(!dark&&brandText.steps>0&&accentText===brandText.hex){notes.push({code:"brand_text_darkened",steps:brandText.steps,text:`Brand text darkened ${brandText.steps} step${brandText.steps>1?"s":""} to reach 4.5:1`});}return {t,notes}}var round2=n=>Math.round(n*100)/100;function failingOverride(t,overrides){const grounds=[t.bg,t.surface,t.surface2,t.tint];if(overrides.foreground){const ratio=minContrast(t.ink,grounds);if(ratio<AA)return {field:"foreground",ratio,against:"background"}}if(overrides.accent){const ratio=minContrast(t.accentText,grounds);if(ratio<AA)return {field:"accent",ratio,against:"background"}}if(overrides.primaryForeground){const ratio=contrastRatio(t.onPrimary,t.primary);if(ratio<AA)return {field:"primaryForeground",ratio,against:"button"}}if(overrides.background){const ratio=Math.min(contrastRatio(t.ink,t.bg),contrastRatio(t.muted,t.bg));if(ratio<AA)return {field:"background",ratio,against:"text"}}return null}function deriveStorefrontTheme(theme,brandHex,opts={}){const recipe=STOREFRONT_THEME_RECIPES[theme];const overrides={...opts.overrides};const problems=[];let palette=derivePalette(recipe,brandHex,opts.secondary,overrides);for(let problem=failingOverride(palette.t,overrides);problem;){problems.push({...problem,ratio:Math.round(problem.ratio*10)/10});delete overrides[problem.field];palette=derivePalette(recipe,brandHex,opts.secondary,overrides);problem=failingOverride(palette.t,overrides);}const{t,notes}=palette;const r=recipe.radius;const px=n=>`${n}px`;const vars={"--so-bg":t.bg,"--so-surface":t.surface,"--so-surface-2":t.surface2,"--so-tint":t.tint,"--so-border":t.border,"--so-border-strong":t.borderStrong,"--so-ink":t.ink,"--so-muted":t.muted,"--so-primary":t.primary,"--so-on-primary":t.onPrimary,"--so-primary-hover":t.primaryHover,"--so-accent-text":t.accentText,"--so-dark":t.dark,"--so-on-dark":t.onDark,"--so-on-dark-muted":t.onDarkMuted,"--so-dark-accent":t.darkAccent,"--so-focus":t.focus,"--so-ph-bg":t.phBg,"--so-ph-text":t.phText,"--so-ph-line":rgba(t.phText,.16),"--so-accent-2":t.accent2??t.accentText,"--so-scrim":`linear-gradient(180deg, ${rgba(t.dark,.55)} 0%, ${rgba(t.dark,0)} 26%, ${rgba(t.dark,0)} 40%, ${rgba(t.dark,.72)} 100%)`,"--so-scrim-solid":rgba(t.dark,.45),"--so-shadow":recipe.shadow?`0 1px 2px ${rgba(t.dark,.06)}, 0 10px 30px ${rgba(t.dark,.1)}`:"none","--so-shadow-float":`0 2px 6px ${rgba(t.dark,.08)}, 0 18px 50px ${rgba(t.dark,.18)}`,"--so-font-heading":storefrontFontStack(opts.heading??recipe.fonts.heading),"--so-font-body":storefrontFontStack(opts.body??recipe.fonts.body),"--so-r-sm":px(r.sm),"--so-r-md":px(r.md),"--so-r-lg":px(r.lg),"--so-r-btn":px(r.btn),"--so-btn-size":px(recipe.btn.size),"--so-btn-w":String(recipe.btn.w),"--so-btn-ls":recipe.btn.ls,"--so-btn-tt":recipe.btn.tt,"--so-btn-h":px(recipe.btn.h),"--so-section":px(recipe.space.section),"--so-gutter":px(recipe.space.gutter)};for(const[step,[size,lh,w,ls,tt]]of Object.entries(recipe.type)){vars[`--t-${step}-size`]=px(size);vars[`--t-${step}-lh`]=String(lh);vars[`--t-${step}-w`]=String(w);vars[`--t-${step}-ls`]=ls;vars[`--t-${step}-tt`]=tt??"none";}const grade=x=>x>=7?"AAA":x>=AA?"AA":"Fail";const checks=[["Body text",t.ink,t.bg],["Muted text",t.muted,t.surface2],["Button label",t.onPrimary,t.primary],["Brand text",t.accentText,t.bg],["On dark section",t.onDark,t.dark],["Brand on dark",t.darkAccent,t.dark]].map(([label,a,b])=>{const x=Math.round(contrastRatio(a,b)*10)/10;return {label,ratio:x.toFixed(1),grade:grade(x),pass:x>=AA}});return {theme,tokens:t,vars,checks,notes,problems}}function storefrontThemeFonts(theme,fonts){const pair=STOREFRONT_THEME_RECIPES[theme].fonts;return {heading:fonts?.heading??pair.heading,body:fonts?.body??pair.body}}function resolveStorefrontTheme(config){const theme=config.theme??DEFAULT_STOREFRONT_THEME;const fonts=storefrontThemeFonts(theme,config.fonts);const{primary,secondary,background,foreground,accent,primaryForeground}=explicitThemeChoices(config).colors;const derived=deriveStorefrontTheme(theme,primary,{secondary,...fonts,overrides:{background,foreground,accent,primaryForeground}});return {theme,layout:config.layout??DEFAULT_STOREFRONT_LAYOUT,fonts,derived,cssVariables:derived.vars}}var OVERRIDE_TOKENS={background:"bg",foreground:"ink",accent:"accentText",primaryForeground:"onPrimary"};var OVERRIDES=Object.keys(OVERRIDE_TOKENS);function legacyButtonLabel(primary,t){if(contrastRatio(t.onPrimary,primary)>=AA)return t.onPrimary;const reads=[t.onDark,t.ink,t.dark,t.bg].filter(hex=>contrastRatio(hex,primary)>=AA);return (reads.length?reads:["#FFFFFF","#000000"]).reduce((best,hex)=>contrastRatio(hex,primary)>contrastRatio(best,primary)?hex:best)}function explicitThemeChoices(config){const theme=config.theme??DEFAULT_STOREFRONT_THEME;const given=pickOverrides(config.colors);const colors={...config.colors};for(const field of OVERRIDES){const value=given[field];if(!value)continue;const others={...given};delete others[field];const{tokens}=deriveStorefrontTheme(theme,config.colors.primary,{overrides:others});const derived=field==="primaryForeground"?[tokens.onPrimary,legacyButtonLabel(config.colors.primary,tokens)]:[tokens[OVERRIDE_TOKENS[field]]];if(derived.includes(value.toUpperCase()))delete colors[field];}const pair=STOREFRONT_THEME_RECIPES[theme].fonts;const fonts={...config.fonts?.heading&&config.fonts.heading!==pair.heading?{heading:config.fonts.heading}:{},...config.fonts?.body&&config.fonts.body!==pair.body?{body:config.fonts.body}:{}};const{fonts:_fonts,...rest}=config;return {...rest,colors,...fonts.heading||fonts.body?{fonts}:{}}}function pickOverrides(colors){const{background,foreground,accent,primaryForeground}=colors;return Object.fromEntries(Object.entries({background,foreground,accent,primaryForeground}).filter(([,v])=>!!v))}function defineSuiteOpConfig(config){return storefrontSiteConfigSchema.parse(config)}
|
package/dist/content.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('./chunk-
|
|
3
|
+
var chunkOXCLLFCY_cjs = require('./chunk-OXCLLFCY.cjs');
|
|
4
|
+
require('./chunk-QBHOJGZI.cjs');
|
|
5
5
|
require('./chunk-J5FZ4WDQ.cjs');
|
|
6
6
|
require('./chunk-EHQFWSP6.cjs');
|
|
7
7
|
|
|
@@ -9,29 +9,29 @@ require('./chunk-EHQFWSP6.cjs');
|
|
|
9
9
|
|
|
10
10
|
Object.defineProperty(exports, "contentModelSchema", {
|
|
11
11
|
enumerable: true,
|
|
12
|
-
get: function () { return
|
|
12
|
+
get: function () { return chunkOXCLLFCY_cjs.contentModelSchema; }
|
|
13
13
|
});
|
|
14
14
|
Object.defineProperty(exports, "createContentReader", {
|
|
15
15
|
enumerable: true,
|
|
16
|
-
get: function () { return
|
|
16
|
+
get: function () { return chunkOXCLLFCY_cjs.createContentReader; }
|
|
17
17
|
});
|
|
18
18
|
Object.defineProperty(exports, "defineContent", {
|
|
19
19
|
enumerable: true,
|
|
20
|
-
get: function () { return
|
|
20
|
+
get: function () { return chunkOXCLLFCY_cjs.defineContent; }
|
|
21
21
|
});
|
|
22
22
|
Object.defineProperty(exports, "field", {
|
|
23
23
|
enumerable: true,
|
|
24
|
-
get: function () { return
|
|
24
|
+
get: function () { return chunkOXCLLFCY_cjs.field; }
|
|
25
25
|
});
|
|
26
26
|
Object.defineProperty(exports, "parseContentModel", {
|
|
27
27
|
enumerable: true,
|
|
28
|
-
get: function () { return
|
|
28
|
+
get: function () { return chunkOXCLLFCY_cjs.parseContentModel; }
|
|
29
29
|
});
|
|
30
30
|
Object.defineProperty(exports, "readFields", {
|
|
31
31
|
enumerable: true,
|
|
32
|
-
get: function () { return
|
|
32
|
+
get: function () { return chunkOXCLLFCY_cjs.readFields; }
|
|
33
33
|
});
|
|
34
34
|
Object.defineProperty(exports, "toContentModel", {
|
|
35
35
|
enumerable: true,
|
|
36
|
-
get: function () { return
|
|
36
|
+
get: function () { return chunkOXCLLFCY_cjs.toContentModel; }
|
|
37
37
|
});
|