@riverbankcms/sdk 0.64.0 → 0.67.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/dist/_dts/api/src/aiPlayground.d.ts +18 -11
- package/dist/_dts/api/src/apiEndpointTypes.d.ts +12 -0
- package/dist/_dts/api/src/bookingOperations.d.ts +1 -1
- package/dist/_dts/api/src/endpoints.d.ts +25 -0
- package/dist/_dts/api/src/sdkConfig/contracts.d.ts +0 -40
- package/dist/_dts/api/src/sdkContracts.d.ts +1 -1
- package/dist/_dts/api/src/siteMembers.d.ts +1 -1
- package/dist/_dts/api/src/siteOperations.d.ts +1 -1
- package/dist/_dts/billing/src/plans/types.d.ts +1 -1
- package/dist/_dts/blocks/src/bindings/index.d.ts +1 -1
- package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
- package/dist/_dts/blocks/src/system/transforms/registry/formatting.d.ts +1 -0
- package/dist/_dts/blocks/src/system/transforms/typed.d.ts +2 -1
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +81 -0
- package/dist/_dts/preview-next/src/client/blocks/pageDesignRuntimePreview.d.ts +7 -3
- package/dist/_dts/preview-next/src/client/blocks/previewProjection/runtimeContentDecoration.d.ts +2 -2
- package/dist/_dts/sdk/src/cli/commands/push/execute/footer.d.ts +33 -0
- package/dist/_dts/sdk/src/cli/commands/push-execute.d.ts +2 -1
- package/dist/_dts/sdk/src/cli/env.d.ts +2 -1
- package/dist/_dts/sdk/src/cli/merge-remote/entryMergePush.d.ts +2 -1
- package/dist/_dts/sdk/src/cli/site-commands/commandKeys.d.ts +13 -0
- package/dist/_dts/sdk/src/cli/site-commands/commandRuntime.d.ts +114 -0
- package/dist/_dts/sdk/src/cli/site-commands/entryCommands.d.ts +26 -48
- package/dist/_dts/sdk/src/cli/site-commands/footerCommands.d.ts +50 -0
- package/dist/_dts/sdk/src/cli/site-commands/formCommands.d.ts +57 -0
- package/dist/_dts/sdk/src/cli/site-commands/index.d.ts +5 -0
- package/dist/_dts/sdk/src/cli/site-commands/navigationCommands.d.ts +57 -0
- package/dist/_dts/sdk/src/cli/site-commands/pageCommands.d.ts +83 -0
- package/dist/_dts/sdk/src/cli/site-commands/pushExecution.d.ts +67 -14
- package/dist/_dts/sdk/src/cli/sync/executor.d.ts +10 -28
- package/dist/_dts/sdk/src/cli/sync/index.d.ts +1 -1
- package/dist/_dts/sdk/src/config/dashboard-validation.d.ts +0 -48
- package/dist/_dts/sdk/src/config/types.d.ts +1 -1
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/site-commands/src/adapter.d.ts +2 -2
- package/dist/_dts/site-commands/src/commands.d.ts +410 -13
- package/dist/_dts/site-commands/src/domain.d.ts +3 -3
- package/dist/_dts/site-commands/src/exposure.d.ts +41 -0
- package/dist/_dts/site-commands/src/index.d.ts +1 -0
- package/dist/_dts/site-commands/src/metadata.d.ts +93 -2
- package/dist/_dts/site-commands/src/planner.d.ts +13 -6
- package/dist/_dts/site-commands/src/refs.d.ts +13 -1
- package/dist/_dts/theme-core/src/palette/utils/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/palette/utils/onColor.d.ts +2 -0
- package/dist/_dts/theme-core/src/site-styles/accessibleSurfaces.d.ts +83 -0
- package/dist/_dts/theme-core/src/site-styles/contentTemplateRuntimeCompiler.d.ts +2 -1
- package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +89 -12
- package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +8 -2
- package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +3 -2
- package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +9 -6
- package/dist/_dts/ui/src/callout.d.ts +1 -1
- package/dist/cli/index.mjs +4290 -2513
- package/dist/client/client.mjs +598 -372
- package/dist/client/hooks.mjs +311 -123
- package/dist/client/rendering/client.mjs +209 -68
- package/dist/client/rendering/islands.mjs +281 -150
- package/dist/client/rendering.mjs +416 -190
- package/dist/preview-next/before-render.mjs +61 -13
- package/dist/preview-next/client/runtime.mjs +930 -376
- package/dist/preview-next/middleware.mjs +61 -13
- package/dist/server/components.mjs +526 -325
- package/dist/server/config-validation.mjs +313 -125
- package/dist/server/config.mjs +313 -125
- package/dist/server/data.mjs +311 -123
- package/dist/server/index.mjs +78 -16
- package/dist/server/next.mjs +527 -326
- package/dist/server/page-converter.mjs +159 -41
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +526 -325
- package/dist/server/rendering.mjs +526 -325
- package/dist/server/routing.mjs +392 -131
- package/dist/server/server.mjs +312 -124
- package/dist/server/theme-bridge.mjs +155 -48
- package/package.json +1 -1
- package/dist/_dts/path-utils/src/index.d.ts +0 -8
- package/dist/_dts/path-utils/src/redirectPaths.d.ts +0 -26
- package/dist/_dts/path-utils/src/safeAppPath.d.ts +0 -26
package/dist/client/client.mjs
CHANGED
|
@@ -1283,6 +1283,7 @@ var init_validation_constants = __esm({
|
|
|
1283
1283
|
"date.formatShort",
|
|
1284
1284
|
"array.length",
|
|
1285
1285
|
"value.jsonArray",
|
|
1286
|
+
"value.csv",
|
|
1286
1287
|
"array.marqueeLoop",
|
|
1287
1288
|
// Layout (layout.ts)
|
|
1288
1289
|
"layout.maxWidthClass",
|
|
@@ -2110,6 +2111,171 @@ var init_augmentManifest = __esm({
|
|
|
2110
2111
|
}
|
|
2111
2112
|
});
|
|
2112
2113
|
|
|
2114
|
+
// ../theme-core/src/palette/utils/colorConversion.ts
|
|
2115
|
+
function hexToRgb(hex) {
|
|
2116
|
+
const h = hex.replace(/^#/, "");
|
|
2117
|
+
const m = h.length === 3 ? h.split("").map((c2) => c2 + c2).join("") : h;
|
|
2118
|
+
if (m.length !== 6) throw new Error("Bad hex");
|
|
2119
|
+
const int = parseInt(m, 16);
|
|
2120
|
+
return { r: int >> 16 & 255, g: int >> 8 & 255, b: int & 255 };
|
|
2121
|
+
}
|
|
2122
|
+
function rgbToHex(r2, g, b2) {
|
|
2123
|
+
const to2 = (n) => Math.round(n).toString(16).padStart(2, "0");
|
|
2124
|
+
return `#${to2(r2)}${to2(g)}${to2(b2)}`;
|
|
2125
|
+
}
|
|
2126
|
+
function srgbToLinear(u) {
|
|
2127
|
+
const x = u / 255;
|
|
2128
|
+
return x <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);
|
|
2129
|
+
}
|
|
2130
|
+
function linearToSrgb(x) {
|
|
2131
|
+
const y = x <= 31308e-7 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055;
|
|
2132
|
+
return clamp01(y) * 255;
|
|
2133
|
+
}
|
|
2134
|
+
function rgbToHsl(r2, g, b2) {
|
|
2135
|
+
const R2 = r2 / 255, G2 = g / 255, B = b2 / 255;
|
|
2136
|
+
const max = Math.max(R2, G2, B), min = Math.min(R2, G2, B);
|
|
2137
|
+
const d = max - min;
|
|
2138
|
+
let h = 0;
|
|
2139
|
+
if (d !== 0) {
|
|
2140
|
+
switch (max) {
|
|
2141
|
+
case R2:
|
|
2142
|
+
h = (G2 - B) / d + (G2 < B ? 6 : 0);
|
|
2143
|
+
break;
|
|
2144
|
+
case G2:
|
|
2145
|
+
h = (B - R2) / d + 2;
|
|
2146
|
+
break;
|
|
2147
|
+
case B:
|
|
2148
|
+
h = (R2 - G2) / d + 4;
|
|
2149
|
+
break;
|
|
2150
|
+
}
|
|
2151
|
+
h *= 60;
|
|
2152
|
+
}
|
|
2153
|
+
const l = (max + min) / 2;
|
|
2154
|
+
const s = d === 0 ? 0 : d / (1 - Math.abs(2 * l - 1));
|
|
2155
|
+
return { h, s, l };
|
|
2156
|
+
}
|
|
2157
|
+
function srgbToOklab(r2, g, b2) {
|
|
2158
|
+
const R2 = srgbToLinear(r2), G2 = srgbToLinear(g), B = srgbToLinear(b2);
|
|
2159
|
+
const l = 0.4122214708 * R2 + 0.5363325363 * G2 + 0.0514459929 * B;
|
|
2160
|
+
const m = 0.2119034982 * R2 + 0.6806995451 * G2 + 0.1073969566 * B;
|
|
2161
|
+
const s = 0.0883024619 * R2 + 0.2817188376 * G2 + 0.6299787005 * B;
|
|
2162
|
+
const l_ = Math.cbrt(l), m_ = Math.cbrt(m), s_ = Math.cbrt(s);
|
|
2163
|
+
const L2 = 0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_;
|
|
2164
|
+
const a = 1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_;
|
|
2165
|
+
const b22 = 0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_;
|
|
2166
|
+
return { L: L2, a, b: b22 };
|
|
2167
|
+
}
|
|
2168
|
+
function oklabToSrgb(L2, a, b2) {
|
|
2169
|
+
const l_ = Math.pow(L2 + 0.3963377774 * a + 0.2158037573 * b2, 3);
|
|
2170
|
+
const m_ = Math.pow(L2 - 0.1055613458 * a - 0.0638541728 * b2, 3);
|
|
2171
|
+
const s_ = Math.pow(L2 - 0.0894841775 * a - 1.291485548 * b2, 3);
|
|
2172
|
+
const R2 = 4.0767416621 * l_ - 3.3077115913 * m_ + 0.2309699292 * s_;
|
|
2173
|
+
const G2 = -1.2684380046 * l_ + 2.6097574011 * m_ - 0.3413193965 * s_;
|
|
2174
|
+
const B = -0.0041960863 * l_ - 0.7034186147 * m_ + 1.707614701 * s_;
|
|
2175
|
+
return { r: linearToSrgb(R2), g: linearToSrgb(G2), b: linearToSrgb(B) };
|
|
2176
|
+
}
|
|
2177
|
+
function oklabToOklch(L2, a, b2) {
|
|
2178
|
+
const C = Math.sqrt(a * a + b2 * b2);
|
|
2179
|
+
const h = C < 1e-7 ? 0 : deg(Math.atan2(b2, a) * 180 / Math.PI);
|
|
2180
|
+
return { L: L2, C, h };
|
|
2181
|
+
}
|
|
2182
|
+
function oklchToOklab(L2, C, h) {
|
|
2183
|
+
const hr = h * Math.PI / 180;
|
|
2184
|
+
const a = C * Math.cos(hr);
|
|
2185
|
+
const b2 = C * Math.sin(hr);
|
|
2186
|
+
return { L: L2, a, b: b2 };
|
|
2187
|
+
}
|
|
2188
|
+
function inSRGB(r2, g, b2) {
|
|
2189
|
+
return r2 >= 0 && r2 <= 255 && g >= 0 && g <= 255 && b2 >= 0 && b2 <= 255;
|
|
2190
|
+
}
|
|
2191
|
+
function oklchToHexGamut(L2, C, h) {
|
|
2192
|
+
let lo2 = 0, hi = C, best = 0;
|
|
2193
|
+
for (let i = 0; i < 18; i++) {
|
|
2194
|
+
const mid = (lo2 + hi) / 2;
|
|
2195
|
+
const { a: a2, b: b3 } = oklchToOklab(L2, mid, h);
|
|
2196
|
+
const { r: r3, g: g2, b: bb2 } = oklabToSrgb(L2, a2, b3);
|
|
2197
|
+
if (inSRGB(r3, g2, bb2)) {
|
|
2198
|
+
best = mid;
|
|
2199
|
+
lo2 = mid;
|
|
2200
|
+
} else {
|
|
2201
|
+
hi = mid;
|
|
2202
|
+
}
|
|
2203
|
+
}
|
|
2204
|
+
const { a, b: b2 } = oklchToOklab(L2, best, h);
|
|
2205
|
+
const { r: r2, g, b: bb } = oklabToSrgb(L2, a, b2);
|
|
2206
|
+
return rgbToHex(r2, g, bb);
|
|
2207
|
+
}
|
|
2208
|
+
function featuresFromHex(hex) {
|
|
2209
|
+
const { r: r2, g, b: b2 } = hexToRgb(hex);
|
|
2210
|
+
const { h, s, l } = rgbToHsl(r2, g, b2);
|
|
2211
|
+
const { L: L2, a, b: b22 } = srgbToOklab(r2, g, b2);
|
|
2212
|
+
const { L: okL, C: okC, h: okH } = oklabToOklch(L2, a, b22);
|
|
2213
|
+
const max = Math.max(r2, g, b2);
|
|
2214
|
+
const v = max / 255;
|
|
2215
|
+
const Y = 0.2126 * srgbToLinear(r2) + 0.7152 * srgbToLinear(g) + 0.0722 * srgbToLinear(b2);
|
|
2216
|
+
const chroma = s;
|
|
2217
|
+
return { r: r2, g, b: b2, h, s, l, v, Y, chroma, okL, okC, okH, hex };
|
|
2218
|
+
}
|
|
2219
|
+
var clamp01, mod, deg;
|
|
2220
|
+
var init_colorConversion = __esm({
|
|
2221
|
+
"../theme-core/src/palette/utils/colorConversion.ts"() {
|
|
2222
|
+
"use strict";
|
|
2223
|
+
clamp01 = (x) => Math.max(0, Math.min(1, x));
|
|
2224
|
+
mod = (a, n) => (a % n + n) % n;
|
|
2225
|
+
deg = (x) => mod(x, 360);
|
|
2226
|
+
}
|
|
2227
|
+
});
|
|
2228
|
+
|
|
2229
|
+
// ../theme-core/src/palette/utils/contrast.ts
|
|
2230
|
+
function relativeLuminance(r2, g, b2) {
|
|
2231
|
+
const R2 = srgbToLinear(r2), G2 = srgbToLinear(g), B = srgbToLinear(b2);
|
|
2232
|
+
return 0.2126 * R2 + 0.7152 * G2 + 0.0722 * B;
|
|
2233
|
+
}
|
|
2234
|
+
var init_contrast = __esm({
|
|
2235
|
+
"../theme-core/src/palette/utils/contrast.ts"() {
|
|
2236
|
+
"use strict";
|
|
2237
|
+
init_colorConversion();
|
|
2238
|
+
}
|
|
2239
|
+
});
|
|
2240
|
+
|
|
2241
|
+
// ../theme-core/src/palette/utils/onColor.ts
|
|
2242
|
+
function onColorTokenName(backgroundToken) {
|
|
2243
|
+
return `on${backgroundToken.split("-").filter((part) => part.length > 0).map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join("")}`;
|
|
2244
|
+
}
|
|
2245
|
+
function isOnColorBackgroundCandidateToken(token) {
|
|
2246
|
+
const role = token.match(/^(.*?)(?:-\d{2,3})?$/)?.[1] ?? token;
|
|
2247
|
+
return BACKGROUND_ROLE_NAMES.has(role);
|
|
2248
|
+
}
|
|
2249
|
+
var BACKGROUND_ROLE_NAMES;
|
|
2250
|
+
var init_onColor = __esm({
|
|
2251
|
+
"../theme-core/src/palette/utils/onColor.ts"() {
|
|
2252
|
+
"use strict";
|
|
2253
|
+
BACKGROUND_ROLE_NAMES = /* @__PURE__ */ new Set([
|
|
2254
|
+
"primary",
|
|
2255
|
+
"secondary",
|
|
2256
|
+
"accent",
|
|
2257
|
+
"success",
|
|
2258
|
+
"warning",
|
|
2259
|
+
"destructive",
|
|
2260
|
+
"info",
|
|
2261
|
+
"background",
|
|
2262
|
+
"surface",
|
|
2263
|
+
"surfaceAlt",
|
|
2264
|
+
"muted",
|
|
2265
|
+
"neutral"
|
|
2266
|
+
]);
|
|
2267
|
+
}
|
|
2268
|
+
});
|
|
2269
|
+
|
|
2270
|
+
// ../theme-core/src/site-styles/accessibleSurfaces.ts
|
|
2271
|
+
var init_accessibleSurfaces = __esm({
|
|
2272
|
+
"../theme-core/src/site-styles/accessibleSurfaces.ts"() {
|
|
2273
|
+
"use strict";
|
|
2274
|
+
init_contrast();
|
|
2275
|
+
init_onColor();
|
|
2276
|
+
}
|
|
2277
|
+
});
|
|
2278
|
+
|
|
2113
2279
|
// ../theme-core/src/site-styles/appearancePresetResolution.ts
|
|
2114
2280
|
function assertValidOptionGroups(preset2) {
|
|
2115
2281
|
preset2.optionGroups?.forEach((group) => {
|
|
@@ -5558,7 +5724,7 @@ function getContrastingTextColorToken(backgroundToken, theme) {
|
|
|
5558
5724
|
}
|
|
5559
5725
|
return isLightTheme ? "neutral-50" : "neutral-950";
|
|
5560
5726
|
}
|
|
5561
|
-
var
|
|
5727
|
+
var init_contrast2 = __esm({
|
|
5562
5728
|
"../theme-core/src/buttons/utils/contrast.ts"() {
|
|
5563
5729
|
"use strict";
|
|
5564
5730
|
}
|
|
@@ -5639,7 +5805,7 @@ var BORDER_WIDTH_TO_CLASS_MAP, VALID_CORNER_STYLES, VALID_SHADOW_SIZES;
|
|
|
5639
5805
|
var init_generateDefaultButtonSystem = __esm({
|
|
5640
5806
|
"../theme-core/src/buttons/generateDefaultButtonSystem.ts"() {
|
|
5641
5807
|
"use strict";
|
|
5642
|
-
|
|
5808
|
+
init_contrast2();
|
|
5643
5809
|
BORDER_WIDTH_TO_CLASS_MAP = {
|
|
5644
5810
|
none: "border-0",
|
|
5645
5811
|
// 0px
|
|
@@ -8327,7 +8493,8 @@ function defineCuratedSiteStyle(input) {
|
|
|
8327
8493
|
name: input.name,
|
|
8328
8494
|
description: input.description,
|
|
8329
8495
|
generationBrief: input.generationBrief,
|
|
8330
|
-
|
|
8496
|
+
selectionKeywordRules: input.selectionKeywordRules ?? [],
|
|
8497
|
+
siteCreatorSelection: input.siteCreatorSelection ?? { kind: "explicit_only" },
|
|
8331
8498
|
template: {
|
|
8332
8499
|
id: asDesignSystemTemplateId(`template:${input.id.replace("site-style:", "")}`),
|
|
8333
8500
|
name: input.name,
|
|
@@ -8372,6 +8539,9 @@ var init_curatedSiteStyles = __esm({
|
|
|
8372
8539
|
"site-style:bright-community",
|
|
8373
8540
|
"site-style:quiet-luxury",
|
|
8374
8541
|
"site-style:practical-services",
|
|
8542
|
+
"site-style:quiet-practice",
|
|
8543
|
+
"site-style:personal-retreat-journal",
|
|
8544
|
+
"site-style:tactile-workshop",
|
|
8375
8545
|
"site-style:modern-wellness",
|
|
8376
8546
|
"site-style:bold-launch",
|
|
8377
8547
|
"site-style:south-west-twerk-school"
|
|
@@ -8555,12 +8725,13 @@ var init_curatedSiteStyles = __esm({
|
|
|
8555
8725
|
name: "Quiet Luxury",
|
|
8556
8726
|
description: "Minimal, confident, and refined for premium experiences and private services.",
|
|
8557
8727
|
generationBrief: "Use fewer claims, more specificity, and restrained sensory detail. Favor elegant media and low repetition over dense panels.",
|
|
8558
|
-
|
|
8559
|
-
|
|
8560
|
-
"
|
|
8561
|
-
"
|
|
8562
|
-
"
|
|
8563
|
-
"
|
|
8728
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 20 },
|
|
8729
|
+
selectionKeywordRules: [
|
|
8730
|
+
{ kind: "word", value: "luxury" },
|
|
8731
|
+
{ kind: "word", value: "premium" },
|
|
8732
|
+
{ kind: "word", value: "boutique" },
|
|
8733
|
+
{ kind: "word", value: "bespoke" },
|
|
8734
|
+
{ kind: "word", value: "exclusive" }
|
|
8564
8735
|
],
|
|
8565
8736
|
tokenRecipes: {
|
|
8566
8737
|
palette: "high-contrast",
|
|
@@ -8589,13 +8760,14 @@ var init_curatedSiteStyles = __esm({
|
|
|
8589
8760
|
name: "Practical Services",
|
|
8590
8761
|
description: "Efficient, plainspoken, and conversion-focused for trades and everyday services.",
|
|
8591
8762
|
generationBrief: "Make services, location, trust signals, and contact paths obvious. Keep copy brief and avoid ornate visual treatments.",
|
|
8592
|
-
|
|
8593
|
-
|
|
8594
|
-
"
|
|
8595
|
-
"
|
|
8596
|
-
"
|
|
8597
|
-
"
|
|
8598
|
-
"
|
|
8763
|
+
siteCreatorSelection: { kind: "primary_goal_support" },
|
|
8764
|
+
selectionKeywordRules: [
|
|
8765
|
+
{ kind: "word", value: "repair" },
|
|
8766
|
+
{ kind: "substring", value: "plumb" },
|
|
8767
|
+
{ kind: "substring", value: "electric" },
|
|
8768
|
+
{ kind: "word", value: "cleaning" },
|
|
8769
|
+
{ kind: "substring", value: "landscap" },
|
|
8770
|
+
{ kind: "substring", value: "contractor" }
|
|
8599
8771
|
],
|
|
8600
8772
|
tokenRecipes: {
|
|
8601
8773
|
palette: "brand-led",
|
|
@@ -8646,18 +8818,134 @@ var init_curatedSiteStyles = __esm({
|
|
|
8646
8818
|
paletteChoice("warm-neutral-forest")
|
|
8647
8819
|
]
|
|
8648
8820
|
}),
|
|
8821
|
+
defineCuratedSiteStyle({
|
|
8822
|
+
id: "site-style:quiet-practice",
|
|
8823
|
+
name: "Quiet Practice",
|
|
8824
|
+
description: "Grounded, calm, and practical for small appointment-first practices.",
|
|
8825
|
+
generationBrief: "Make services, practitioner trust, preparation notes, and booking routes easy to scan. Keep the tone warm and specific, with quiet confidence rather than spa cliches or medical claims.",
|
|
8826
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 30 },
|
|
8827
|
+
selectionKeywordRules: [
|
|
8828
|
+
{ kind: "substring", value: "massage" },
|
|
8829
|
+
{ kind: "word", value: "bodywork" },
|
|
8830
|
+
{ kind: "phrase", value: "appointment practice" },
|
|
8831
|
+
{ kind: "phrase", value: "appointment-first" },
|
|
8832
|
+
{ kind: "substring", value: "practitioner" },
|
|
8833
|
+
{ kind: "substring", value: "therap" },
|
|
8834
|
+
{ kind: "substring", value: "clinic" },
|
|
8835
|
+
{ kind: "phrase", value: "wellness practice" }
|
|
8836
|
+
],
|
|
8837
|
+
tokenRecipes: {
|
|
8838
|
+
palette: "soft-natural",
|
|
8839
|
+
contrast: "standard",
|
|
8840
|
+
radius: "soft",
|
|
8841
|
+
shadow: "subtle",
|
|
8842
|
+
typography: "clean-sans",
|
|
8843
|
+
spacing: "regular",
|
|
8844
|
+
motion: "subtle"
|
|
8845
|
+
},
|
|
8846
|
+
compositionBudget: quietBudget,
|
|
8847
|
+
recommendedHeaderLookIds: ["practical-utility", "clean-base", "centered-calm"],
|
|
8848
|
+
buttonPersonalityChoices: [
|
|
8849
|
+
buttonChoice("pebble"),
|
|
8850
|
+
buttonChoice("soft-pill"),
|
|
8851
|
+
buttonChoice("editorial-link")
|
|
8852
|
+
],
|
|
8853
|
+
paletteVariantChoices: [
|
|
8854
|
+
paletteChoice("soft-natural-stone"),
|
|
8855
|
+
paletteChoice("soft-natural-sage"),
|
|
8856
|
+
paletteChoice("warm-neutral-clay")
|
|
8857
|
+
]
|
|
8858
|
+
}),
|
|
8859
|
+
defineCuratedSiteStyle({
|
|
8860
|
+
id: "site-style:personal-retreat-journal",
|
|
8861
|
+
name: "Personal Retreat Journal",
|
|
8862
|
+
description: "Warm, story-led, and readable for solo practitioners with mixed offers.",
|
|
8863
|
+
generationBrief: "Center the practitioner as the guide, then make private sessions, classes, retreats, and resources feel like clear pathways. Keep retreat copy grounded and practical, with enough editorial warmth for longer reading.",
|
|
8864
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 40 },
|
|
8865
|
+
selectionKeywordRules: [
|
|
8866
|
+
{ kind: "substring", value: "retreat" },
|
|
8867
|
+
{ kind: "phrase", value: "solo practitioner" },
|
|
8868
|
+
{ kind: "phrase", value: "personal brand" },
|
|
8869
|
+
{ kind: "substring", value: "teacher" },
|
|
8870
|
+
{ kind: "substring", value: "coach" },
|
|
8871
|
+
{ kind: "phrase", value: "retreat resources" },
|
|
8872
|
+
{ kind: "substring", value: "journal" }
|
|
8873
|
+
],
|
|
8874
|
+
tokenRecipes: {
|
|
8875
|
+
palette: "warm-neutral",
|
|
8876
|
+
contrast: "standard",
|
|
8877
|
+
radius: "soft",
|
|
8878
|
+
shadow: "subtle",
|
|
8879
|
+
typography: "serif-editorial",
|
|
8880
|
+
spacing: "airy",
|
|
8881
|
+
motion: "subtle"
|
|
8882
|
+
},
|
|
8883
|
+
compositionBudget: balancedBudget,
|
|
8884
|
+
recommendedHeaderLookIds: ["editorial-line", "centered-calm", "minimal-transparent"],
|
|
8885
|
+
buttonPersonalityChoices: [
|
|
8886
|
+
buttonChoice("editorial-link"),
|
|
8887
|
+
buttonChoice("soft-pill"),
|
|
8888
|
+
buttonChoice("brushed-wash")
|
|
8889
|
+
],
|
|
8890
|
+
paletteVariantChoices: [
|
|
8891
|
+
paletteChoice("warm-neutral-forest"),
|
|
8892
|
+
paletteChoice("warm-neutral-clay"),
|
|
8893
|
+
paletteChoice("soft-natural-stone")
|
|
8894
|
+
]
|
|
8895
|
+
}),
|
|
8896
|
+
defineCuratedSiteStyle({
|
|
8897
|
+
id: "site-style:tactile-workshop",
|
|
8898
|
+
name: "Tactile Workshop",
|
|
8899
|
+
description: "Bright, hands-on, and image-led for maker studios, workshops, and creative classes.",
|
|
8900
|
+
generationBrief: "Lead with objects, materials, studio process, and practical booking detail. Keep the tone warm and direct, with useful mess, clear dates, and enough gallery rhythm to feel like a real creative studio.",
|
|
8901
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 50 },
|
|
8902
|
+
selectionKeywordRules: [
|
|
8903
|
+
{ kind: "substring", value: "ceramic" },
|
|
8904
|
+
{ kind: "word", value: "pottery" },
|
|
8905
|
+
{ kind: "phrase", value: "maker studio" },
|
|
8906
|
+
{ kind: "phrase", value: "craft class" },
|
|
8907
|
+
{ kind: "phrase", value: "craft workshop" },
|
|
8908
|
+
{ kind: "word", value: "clay" },
|
|
8909
|
+
{ kind: "word", value: "kiln" }
|
|
8910
|
+
],
|
|
8911
|
+
tokenRecipes: {
|
|
8912
|
+
palette: "brand-led",
|
|
8913
|
+
contrast: "standard",
|
|
8914
|
+
radius: "soft",
|
|
8915
|
+
shadow: "subtle",
|
|
8916
|
+
typography: "friendly-sans",
|
|
8917
|
+
spacing: "regular",
|
|
8918
|
+
motion: "subtle"
|
|
8919
|
+
},
|
|
8920
|
+
compositionBudget: balancedBudget,
|
|
8921
|
+
recommendedHeaderLookIds: ["brand-solid", "practical-utility", "clean-base"],
|
|
8922
|
+
recommendedFooterLookIds: ["site-footer-brand-two-band", "footer-muted-grounding"],
|
|
8923
|
+
buttonPersonalityChoices: [
|
|
8924
|
+
buttonChoice("pebble"),
|
|
8925
|
+
buttonChoice("confident-chip"),
|
|
8926
|
+
buttonChoice("ink-stamp"),
|
|
8927
|
+
buttonChoice("editorial-link")
|
|
8928
|
+
],
|
|
8929
|
+
paletteVariantChoices: [
|
|
8930
|
+
paletteChoice("brand-led-warm"),
|
|
8931
|
+
paletteChoice("brand-led-cool"),
|
|
8932
|
+
paletteChoice("soft-natural-watercolor"),
|
|
8933
|
+
paletteChoice("warm-neutral-clay")
|
|
8934
|
+
]
|
|
8935
|
+
}),
|
|
8649
8936
|
defineCuratedSiteStyle({
|
|
8650
8937
|
id: "site-style:bold-launch",
|
|
8651
8938
|
name: "Bold Launch",
|
|
8652
8939
|
description: "High-energy and punchy for launches, campaigns, and creative offers.",
|
|
8653
8940
|
generationBrief: "Use crisp positioning, bold hero structure, strong calls to action, and confident visual rhythm. Keep it precise, not shouty.",
|
|
8654
|
-
|
|
8655
|
-
|
|
8656
|
-
"
|
|
8657
|
-
"
|
|
8658
|
-
"
|
|
8659
|
-
"
|
|
8660
|
-
"
|
|
8941
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 10 },
|
|
8942
|
+
selectionKeywordRules: [
|
|
8943
|
+
{ kind: "substring", value: "launch" },
|
|
8944
|
+
{ kind: "substring", value: "campaign" },
|
|
8945
|
+
{ kind: "word", value: "preorder" },
|
|
8946
|
+
{ kind: "phrase", value: "pre-order" },
|
|
8947
|
+
{ kind: "substring", value: "waitlist" },
|
|
8948
|
+
{ kind: "word", value: "drop" }
|
|
8661
8949
|
],
|
|
8662
8950
|
tokenRecipes: {
|
|
8663
8951
|
palette: "high-contrast",
|
|
@@ -8688,15 +8976,6 @@ var init_curatedSiteStyles = __esm({
|
|
|
8688
8976
|
name: "South West Twerk School",
|
|
8689
8977
|
description: "Energetic, editorial, and high-contrast for a branded dance school presence.",
|
|
8690
8978
|
generationBrief: "Use confident rhythm, bold burgundy-and-gold accents, large editorial intro copy, strong booking routes, and dark feature sections where proof or forms need emphasis.",
|
|
8691
|
-
selectionKeywords: [
|
|
8692
|
-
"dance",
|
|
8693
|
-
"classes",
|
|
8694
|
-
"workshop",
|
|
8695
|
-
"school",
|
|
8696
|
-
"movement",
|
|
8697
|
-
"performance",
|
|
8698
|
-
"community"
|
|
8699
|
-
],
|
|
8700
8979
|
tokenRecipes: {
|
|
8701
8980
|
palette: "brand-led",
|
|
8702
8981
|
contrast: "maximum",
|
|
@@ -8985,6 +9264,177 @@ var init_modern_minimal = __esm({
|
|
|
8985
9264
|
}
|
|
8986
9265
|
});
|
|
8987
9266
|
|
|
9267
|
+
// ../theme-core/src/palette/generateShades.ts
|
|
9268
|
+
function generateShades(hexColor, name) {
|
|
9269
|
+
const shadeSteps = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950];
|
|
9270
|
+
const base = featuresFromHex(hexColor);
|
|
9271
|
+
const hue = base.okH;
|
|
9272
|
+
const baseChroma = base.okC;
|
|
9273
|
+
const toneMap = {
|
|
9274
|
+
50: 0.975,
|
|
9275
|
+
100: 0.945,
|
|
9276
|
+
200: 0.89,
|
|
9277
|
+
300: 0.82,
|
|
9278
|
+
400: 0.74,
|
|
9279
|
+
500: 0.66,
|
|
9280
|
+
600: 0.58,
|
|
9281
|
+
700: 0.49,
|
|
9282
|
+
800: 0.4,
|
|
9283
|
+
900: 0.28,
|
|
9284
|
+
950: 0.16
|
|
9285
|
+
};
|
|
9286
|
+
const shadeDefs = shadeSteps.map((step, idx) => {
|
|
9287
|
+
const t = idx / (shadeSteps.length - 1);
|
|
9288
|
+
const L2 = toneMap[step];
|
|
9289
|
+
const chromaFactor = 0.06 + 0.94 * Math.sin(Math.PI * t);
|
|
9290
|
+
const C = baseChroma * chromaFactor;
|
|
9291
|
+
return {
|
|
9292
|
+
name: `${name}-${step}`,
|
|
9293
|
+
hex: oklchToHexGamut(L2, C, hue)
|
|
9294
|
+
};
|
|
9295
|
+
});
|
|
9296
|
+
shadeDefs.push({ name, hex: hexColor });
|
|
9297
|
+
return shadeDefs;
|
|
9298
|
+
}
|
|
9299
|
+
var init_generateShades = __esm({
|
|
9300
|
+
"../theme-core/src/palette/generateShades.ts"() {
|
|
9301
|
+
"use strict";
|
|
9302
|
+
init_colorConversion();
|
|
9303
|
+
}
|
|
9304
|
+
});
|
|
9305
|
+
|
|
9306
|
+
// ../theme-core/src/palette/neutralScale.ts
|
|
9307
|
+
function generateNeutralScale({
|
|
9308
|
+
background,
|
|
9309
|
+
steps = 11,
|
|
9310
|
+
warm = false
|
|
9311
|
+
}) {
|
|
9312
|
+
const isDark = background === "#000000" || background.startsWith("#0") || background.startsWith("#1");
|
|
9313
|
+
const shadeNames = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950];
|
|
9314
|
+
const count = Math.min(steps, shadeNames.length);
|
|
9315
|
+
const scale = [];
|
|
9316
|
+
for (let i = 0; i < count; i++) {
|
|
9317
|
+
const t = i / (count - 1);
|
|
9318
|
+
const tone = isDark ? mix(0.06, 0.92, t) : mix(0.98, 0.1, t);
|
|
9319
|
+
const hex = oklchToHexGamut(tone, 0.02, warm ? 85 : 250);
|
|
9320
|
+
const name = `neutral-${shadeNames[i]}`;
|
|
9321
|
+
scale.push({ name, hex });
|
|
9322
|
+
}
|
|
9323
|
+
return scale;
|
|
9324
|
+
}
|
|
9325
|
+
function mix(a, b2, t) {
|
|
9326
|
+
return a + (b2 - a) * Math.max(0, Math.min(1, t));
|
|
9327
|
+
}
|
|
9328
|
+
var init_neutralScale = __esm({
|
|
9329
|
+
"../theme-core/src/palette/neutralScale.ts"() {
|
|
9330
|
+
"use strict";
|
|
9331
|
+
init_colorConversion();
|
|
9332
|
+
}
|
|
9333
|
+
});
|
|
9334
|
+
|
|
9335
|
+
// ../theme-core/src/palette/utils/textColor.ts
|
|
9336
|
+
function pickBlackOrWhiteTextColor(background, minContrast = 4.5) {
|
|
9337
|
+
const { r: r2, g, b: b2 } = parseColorToRgb(background);
|
|
9338
|
+
const luminance = relativeLuminance(r2, g, b2);
|
|
9339
|
+
const blackContrast = (luminance + 0.05) / 0.05;
|
|
9340
|
+
const whiteContrast = 1.05 / (luminance + 0.05);
|
|
9341
|
+
if (blackContrast >= minContrast && whiteContrast < minContrast) {
|
|
9342
|
+
return "#000000";
|
|
9343
|
+
}
|
|
9344
|
+
if (whiteContrast >= minContrast && blackContrast < minContrast) {
|
|
9345
|
+
return "#FFFFFF";
|
|
9346
|
+
}
|
|
9347
|
+
return blackContrast >= whiteContrast ? "#000000" : "#FFFFFF";
|
|
9348
|
+
}
|
|
9349
|
+
function getTextColorForBackground(background) {
|
|
9350
|
+
return pickBlackOrWhiteTextColor(background);
|
|
9351
|
+
}
|
|
9352
|
+
function parseColorToRgb(input) {
|
|
9353
|
+
const trimmed = input.trim();
|
|
9354
|
+
if (trimmed.startsWith("#")) {
|
|
9355
|
+
return hexToRgb(trimmed);
|
|
9356
|
+
}
|
|
9357
|
+
const rgbMatch = trimmed.match(
|
|
9358
|
+
/^rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})(?:\s*,\s*(?:0|1|0?\.\d+))?\s*\)$/i
|
|
9359
|
+
);
|
|
9360
|
+
if (rgbMatch?.[1] && rgbMatch[2] && rgbMatch[3]) {
|
|
9361
|
+
return {
|
|
9362
|
+
r: clamp255(Number(rgbMatch[1])),
|
|
9363
|
+
g: clamp255(Number(rgbMatch[2])),
|
|
9364
|
+
b: clamp255(Number(rgbMatch[3]))
|
|
9365
|
+
};
|
|
9366
|
+
}
|
|
9367
|
+
throw new Error("Unsupported color format");
|
|
9368
|
+
}
|
|
9369
|
+
function clamp255(value) {
|
|
9370
|
+
if (Number.isNaN(value)) return 0;
|
|
9371
|
+
return Math.max(0, Math.min(255, value));
|
|
9372
|
+
}
|
|
9373
|
+
var init_textColor = __esm({
|
|
9374
|
+
"../theme-core/src/palette/utils/textColor.ts"() {
|
|
9375
|
+
"use strict";
|
|
9376
|
+
init_colorConversion();
|
|
9377
|
+
init_contrast();
|
|
9378
|
+
}
|
|
9379
|
+
});
|
|
9380
|
+
|
|
9381
|
+
// ../theme-core/src/palette/expandPalette.ts
|
|
9382
|
+
function colorsToMap(palette) {
|
|
9383
|
+
const map = {};
|
|
9384
|
+
for (const c2 of palette.colors) {
|
|
9385
|
+
map[c2.name] = c2.hex;
|
|
9386
|
+
}
|
|
9387
|
+
return map;
|
|
9388
|
+
}
|
|
9389
|
+
function isBackgroundDark(hex) {
|
|
9390
|
+
try {
|
|
9391
|
+
return featuresFromHex(hex).Y < 0.5;
|
|
9392
|
+
} catch {
|
|
9393
|
+
return false;
|
|
9394
|
+
}
|
|
9395
|
+
}
|
|
9396
|
+
function expandPalette(palette) {
|
|
9397
|
+
const base = colorsToMap(palette);
|
|
9398
|
+
const expanded = { ...base };
|
|
9399
|
+
const background = base.background || base.surface || "#ffffff";
|
|
9400
|
+
const neutral2 = generateNeutralScale({ background, steps: 11, warm: false });
|
|
9401
|
+
neutral2.forEach((n) => {
|
|
9402
|
+
expanded[n.name] = n.hex;
|
|
9403
|
+
});
|
|
9404
|
+
for (const [name, hex] of Object.entries(base)) {
|
|
9405
|
+
if (hex) {
|
|
9406
|
+
const shades = generateShades(hex, name);
|
|
9407
|
+
shades.forEach((shade) => {
|
|
9408
|
+
expanded[shade.name] = shade.hex;
|
|
9409
|
+
});
|
|
9410
|
+
}
|
|
9411
|
+
}
|
|
9412
|
+
if (base.text) expanded.body = base.text;
|
|
9413
|
+
if (base.danger && !base.destructive) {
|
|
9414
|
+
expanded.destructive = base.danger;
|
|
9415
|
+
}
|
|
9416
|
+
const isDark = base.background ? isBackgroundDark(base.background) : false;
|
|
9417
|
+
const isDarkMode = palette.meta?.mode === "dark" || isDark;
|
|
9418
|
+
expanded.mutedText = isDarkMode ? expanded["neutral-600"] ?? "#666" : expanded["neutral-500"] ?? "#888";
|
|
9419
|
+
for (const [token, hex] of Object.entries({ ...expanded })) {
|
|
9420
|
+
if (!hex || !isOnColorBackgroundCandidateToken(token)) continue;
|
|
9421
|
+
const onToken = onColorTokenName(token);
|
|
9422
|
+
if (expanded[onToken]) continue;
|
|
9423
|
+
expanded[onToken] = getTextColorForBackground(hex);
|
|
9424
|
+
}
|
|
9425
|
+
return expanded;
|
|
9426
|
+
}
|
|
9427
|
+
var init_expandPalette = __esm({
|
|
9428
|
+
"../theme-core/src/palette/expandPalette.ts"() {
|
|
9429
|
+
"use strict";
|
|
9430
|
+
init_generateShades();
|
|
9431
|
+
init_neutralScale();
|
|
9432
|
+
init_colorConversion();
|
|
9433
|
+
init_textColor();
|
|
9434
|
+
init_onColor();
|
|
9435
|
+
}
|
|
9436
|
+
});
|
|
9437
|
+
|
|
8988
9438
|
// ../theme-core/src/site-styles/rawStyleFields.ts
|
|
8989
9439
|
var themeV2RuntimeStyleFieldNames, themeV2BlockSpecificRawStyleFieldNames, themeV2NormalEditorRawStyleFieldNames, themeV2NormalEditorRawStyleFieldNameSet;
|
|
8990
9440
|
var init_rawStyleFields = __esm({
|
|
@@ -9168,35 +9618,31 @@ var init_runtimeCompiler = __esm({
|
|
|
9168
9618
|
"use strict";
|
|
9169
9619
|
init_schema3();
|
|
9170
9620
|
init_modern_minimal();
|
|
9621
|
+
init_expandPalette();
|
|
9171
9622
|
init_personalities();
|
|
9172
9623
|
init_variants();
|
|
9173
9624
|
init_designState();
|
|
9174
9625
|
init_types2();
|
|
9626
|
+
init_accessibleSurfaces();
|
|
9175
9627
|
defaultDesignRuntimeRules = defineDesignRuntimeRules({
|
|
9176
9628
|
sectionSurfaces: {
|
|
9177
9629
|
base: {},
|
|
9178
9630
|
"muted-band": {
|
|
9179
9631
|
background: {
|
|
9180
9632
|
type: "color",
|
|
9181
|
-
color: "muted"
|
|
9182
|
-
textColor: "text",
|
|
9183
|
-
headingColor: "text"
|
|
9633
|
+
color: "muted"
|
|
9184
9634
|
}
|
|
9185
9635
|
},
|
|
9186
9636
|
"accent-band": {
|
|
9187
9637
|
background: {
|
|
9188
9638
|
type: "color",
|
|
9189
|
-
color: "primary"
|
|
9190
|
-
textColor: "primaryForeground",
|
|
9191
|
-
headingColor: "primaryForeground"
|
|
9639
|
+
color: "primary"
|
|
9192
9640
|
}
|
|
9193
9641
|
},
|
|
9194
9642
|
"brand-depth-band": {
|
|
9195
9643
|
background: {
|
|
9196
9644
|
type: "color",
|
|
9197
|
-
color: "primary-800"
|
|
9198
|
-
textColor: "primaryForeground",
|
|
9199
|
-
headingColor: "primaryForeground"
|
|
9645
|
+
color: "primary-800"
|
|
9200
9646
|
}
|
|
9201
9647
|
},
|
|
9202
9648
|
"hero-image": {
|
|
@@ -9662,6 +10108,7 @@ var init_tokenRecipes = __esm({
|
|
|
9662
10108
|
var init_site_styles = __esm({
|
|
9663
10109
|
"../theme-core/src/site-styles/index.ts"() {
|
|
9664
10110
|
"use strict";
|
|
10111
|
+
init_accessibleSurfaces();
|
|
9665
10112
|
init_appearancePresets();
|
|
9666
10113
|
init_blockFlow();
|
|
9667
10114
|
init_compositionBudget();
|
|
@@ -15598,121 +16045,6 @@ var init_form = __esm({
|
|
|
15598
16045
|
}
|
|
15599
16046
|
});
|
|
15600
16047
|
|
|
15601
|
-
// ../theme-core/src/palette/utils/colorConversion.ts
|
|
15602
|
-
function hexToRgb(hex) {
|
|
15603
|
-
const h = hex.replace(/^#/, "");
|
|
15604
|
-
const m = h.length === 3 ? h.split("").map((c2) => c2 + c2).join("") : h;
|
|
15605
|
-
if (m.length !== 6) throw new Error("Bad hex");
|
|
15606
|
-
const int = parseInt(m, 16);
|
|
15607
|
-
return { r: int >> 16 & 255, g: int >> 8 & 255, b: int & 255 };
|
|
15608
|
-
}
|
|
15609
|
-
function rgbToHex(r2, g, b2) {
|
|
15610
|
-
const to2 = (n) => Math.round(n).toString(16).padStart(2, "0");
|
|
15611
|
-
return `#${to2(r2)}${to2(g)}${to2(b2)}`;
|
|
15612
|
-
}
|
|
15613
|
-
function srgbToLinear(u) {
|
|
15614
|
-
const x = u / 255;
|
|
15615
|
-
return x <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);
|
|
15616
|
-
}
|
|
15617
|
-
function linearToSrgb(x) {
|
|
15618
|
-
const y = x <= 31308e-7 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055;
|
|
15619
|
-
return clamp01(y) * 255;
|
|
15620
|
-
}
|
|
15621
|
-
function rgbToHsl(r2, g, b2) {
|
|
15622
|
-
const R2 = r2 / 255, G2 = g / 255, B = b2 / 255;
|
|
15623
|
-
const max = Math.max(R2, G2, B), min = Math.min(R2, G2, B);
|
|
15624
|
-
const d = max - min;
|
|
15625
|
-
let h = 0;
|
|
15626
|
-
if (d !== 0) {
|
|
15627
|
-
switch (max) {
|
|
15628
|
-
case R2:
|
|
15629
|
-
h = (G2 - B) / d + (G2 < B ? 6 : 0);
|
|
15630
|
-
break;
|
|
15631
|
-
case G2:
|
|
15632
|
-
h = (B - R2) / d + 2;
|
|
15633
|
-
break;
|
|
15634
|
-
case B:
|
|
15635
|
-
h = (R2 - G2) / d + 4;
|
|
15636
|
-
break;
|
|
15637
|
-
}
|
|
15638
|
-
h *= 60;
|
|
15639
|
-
}
|
|
15640
|
-
const l = (max + min) / 2;
|
|
15641
|
-
const s = d === 0 ? 0 : d / (1 - Math.abs(2 * l - 1));
|
|
15642
|
-
return { h, s, l };
|
|
15643
|
-
}
|
|
15644
|
-
function srgbToOklab(r2, g, b2) {
|
|
15645
|
-
const R2 = srgbToLinear(r2), G2 = srgbToLinear(g), B = srgbToLinear(b2);
|
|
15646
|
-
const l = 0.4122214708 * R2 + 0.5363325363 * G2 + 0.0514459929 * B;
|
|
15647
|
-
const m = 0.2119034982 * R2 + 0.6806995451 * G2 + 0.1073969566 * B;
|
|
15648
|
-
const s = 0.0883024619 * R2 + 0.2817188376 * G2 + 0.6299787005 * B;
|
|
15649
|
-
const l_ = Math.cbrt(l), m_ = Math.cbrt(m), s_ = Math.cbrt(s);
|
|
15650
|
-
const L2 = 0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_;
|
|
15651
|
-
const a = 1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_;
|
|
15652
|
-
const b22 = 0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_;
|
|
15653
|
-
return { L: L2, a, b: b22 };
|
|
15654
|
-
}
|
|
15655
|
-
function oklabToSrgb(L2, a, b2) {
|
|
15656
|
-
const l_ = Math.pow(L2 + 0.3963377774 * a + 0.2158037573 * b2, 3);
|
|
15657
|
-
const m_ = Math.pow(L2 - 0.1055613458 * a - 0.0638541728 * b2, 3);
|
|
15658
|
-
const s_ = Math.pow(L2 - 0.0894841775 * a - 1.291485548 * b2, 3);
|
|
15659
|
-
const R2 = 4.0767416621 * l_ - 3.3077115913 * m_ + 0.2309699292 * s_;
|
|
15660
|
-
const G2 = -1.2684380046 * l_ + 2.6097574011 * m_ - 0.3413193965 * s_;
|
|
15661
|
-
const B = -0.0041960863 * l_ - 0.7034186147 * m_ + 1.707614701 * s_;
|
|
15662
|
-
return { r: linearToSrgb(R2), g: linearToSrgb(G2), b: linearToSrgb(B) };
|
|
15663
|
-
}
|
|
15664
|
-
function oklabToOklch(L2, a, b2) {
|
|
15665
|
-
const C = Math.sqrt(a * a + b2 * b2);
|
|
15666
|
-
const h = C < 1e-7 ? 0 : deg(Math.atan2(b2, a) * 180 / Math.PI);
|
|
15667
|
-
return { L: L2, C, h };
|
|
15668
|
-
}
|
|
15669
|
-
function oklchToOklab(L2, C, h) {
|
|
15670
|
-
const hr = h * Math.PI / 180;
|
|
15671
|
-
const a = C * Math.cos(hr);
|
|
15672
|
-
const b2 = C * Math.sin(hr);
|
|
15673
|
-
return { L: L2, a, b: b2 };
|
|
15674
|
-
}
|
|
15675
|
-
function inSRGB(r2, g, b2) {
|
|
15676
|
-
return r2 >= 0 && r2 <= 255 && g >= 0 && g <= 255 && b2 >= 0 && b2 <= 255;
|
|
15677
|
-
}
|
|
15678
|
-
function oklchToHexGamut(L2, C, h) {
|
|
15679
|
-
let lo2 = 0, hi = C, best = 0;
|
|
15680
|
-
for (let i = 0; i < 18; i++) {
|
|
15681
|
-
const mid = (lo2 + hi) / 2;
|
|
15682
|
-
const { a: a2, b: b3 } = oklchToOklab(L2, mid, h);
|
|
15683
|
-
const { r: r3, g: g2, b: bb2 } = oklabToSrgb(L2, a2, b3);
|
|
15684
|
-
if (inSRGB(r3, g2, bb2)) {
|
|
15685
|
-
best = mid;
|
|
15686
|
-
lo2 = mid;
|
|
15687
|
-
} else {
|
|
15688
|
-
hi = mid;
|
|
15689
|
-
}
|
|
15690
|
-
}
|
|
15691
|
-
const { a, b: b2 } = oklchToOklab(L2, best, h);
|
|
15692
|
-
const { r: r2, g, b: bb } = oklabToSrgb(L2, a, b2);
|
|
15693
|
-
return rgbToHex(r2, g, bb);
|
|
15694
|
-
}
|
|
15695
|
-
function featuresFromHex(hex) {
|
|
15696
|
-
const { r: r2, g, b: b2 } = hexToRgb(hex);
|
|
15697
|
-
const { h, s, l } = rgbToHsl(r2, g, b2);
|
|
15698
|
-
const { L: L2, a, b: b22 } = srgbToOklab(r2, g, b2);
|
|
15699
|
-
const { L: okL, C: okC, h: okH } = oklabToOklch(L2, a, b22);
|
|
15700
|
-
const max = Math.max(r2, g, b2);
|
|
15701
|
-
const v = max / 255;
|
|
15702
|
-
const Y = 0.2126 * srgbToLinear(r2) + 0.7152 * srgbToLinear(g) + 0.0722 * srgbToLinear(b2);
|
|
15703
|
-
const chroma = s;
|
|
15704
|
-
return { r: r2, g, b: b2, h, s, l, v, Y, chroma, okL, okC, okH, hex };
|
|
15705
|
-
}
|
|
15706
|
-
var clamp01, mod, deg;
|
|
15707
|
-
var init_colorConversion = __esm({
|
|
15708
|
-
"../theme-core/src/palette/utils/colorConversion.ts"() {
|
|
15709
|
-
"use strict";
|
|
15710
|
-
clamp01 = (x) => Math.max(0, Math.min(1, x));
|
|
15711
|
-
mod = (a, n) => (a % n + n) % n;
|
|
15712
|
-
deg = (x) => mod(x, 360);
|
|
15713
|
-
}
|
|
15714
|
-
});
|
|
15715
|
-
|
|
15716
16048
|
// ../blocks/src/lib/typeGuards.ts
|
|
15717
16049
|
function isRecord4(value) {
|
|
15718
16050
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
@@ -18013,64 +18345,6 @@ var init_utils = __esm({
|
|
|
18013
18345
|
}
|
|
18014
18346
|
});
|
|
18015
18347
|
|
|
18016
|
-
// ../theme-core/src/palette/utils/contrast.ts
|
|
18017
|
-
function relativeLuminance(r2, g, b2) {
|
|
18018
|
-
const R2 = srgbToLinear(r2), G2 = srgbToLinear(g), B = srgbToLinear(b2);
|
|
18019
|
-
return 0.2126 * R2 + 0.7152 * G2 + 0.0722 * B;
|
|
18020
|
-
}
|
|
18021
|
-
var init_contrast2 = __esm({
|
|
18022
|
-
"../theme-core/src/palette/utils/contrast.ts"() {
|
|
18023
|
-
"use strict";
|
|
18024
|
-
init_colorConversion();
|
|
18025
|
-
}
|
|
18026
|
-
});
|
|
18027
|
-
|
|
18028
|
-
// ../theme-core/src/palette/utils/textColor.ts
|
|
18029
|
-
function pickBlackOrWhiteTextColor(background, minContrast = 4.5) {
|
|
18030
|
-
const { r: r2, g, b: b2 } = parseColorToRgb(background);
|
|
18031
|
-
const luminance = relativeLuminance(r2, g, b2);
|
|
18032
|
-
const blackContrast = (luminance + 0.05) / 0.05;
|
|
18033
|
-
const whiteContrast = 1.05 / (luminance + 0.05);
|
|
18034
|
-
if (blackContrast >= minContrast && whiteContrast < minContrast) {
|
|
18035
|
-
return "#000000";
|
|
18036
|
-
}
|
|
18037
|
-
if (whiteContrast >= minContrast && blackContrast < minContrast) {
|
|
18038
|
-
return "#FFFFFF";
|
|
18039
|
-
}
|
|
18040
|
-
return blackContrast >= whiteContrast ? "#000000" : "#FFFFFF";
|
|
18041
|
-
}
|
|
18042
|
-
function getTextColorForBackground(background) {
|
|
18043
|
-
return pickBlackOrWhiteTextColor(background);
|
|
18044
|
-
}
|
|
18045
|
-
function parseColorToRgb(input) {
|
|
18046
|
-
const trimmed = input.trim();
|
|
18047
|
-
if (trimmed.startsWith("#")) {
|
|
18048
|
-
return hexToRgb(trimmed);
|
|
18049
|
-
}
|
|
18050
|
-
const rgbMatch = trimmed.match(
|
|
18051
|
-
/^rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})(?:\s*,\s*(?:0|1|0?\.\d+))?\s*\)$/i
|
|
18052
|
-
);
|
|
18053
|
-
if (rgbMatch?.[1] && rgbMatch[2] && rgbMatch[3]) {
|
|
18054
|
-
return {
|
|
18055
|
-
r: clamp255(Number(rgbMatch[1])),
|
|
18056
|
-
g: clamp255(Number(rgbMatch[2])),
|
|
18057
|
-
b: clamp255(Number(rgbMatch[3]))
|
|
18058
|
-
};
|
|
18059
|
-
}
|
|
18060
|
-
throw new Error("Unsupported color format");
|
|
18061
|
-
}
|
|
18062
|
-
function clamp255(value) {
|
|
18063
|
-
if (Number.isNaN(value)) return 0;
|
|
18064
|
-
return Math.max(0, Math.min(255, value));
|
|
18065
|
-
}
|
|
18066
|
-
var init_textColor = __esm({
|
|
18067
|
-
"../theme-core/src/palette/utils/textColor.ts"() {
|
|
18068
|
-
"use strict";
|
|
18069
|
-
init_colorConversion();
|
|
18070
|
-
init_contrast2();
|
|
18071
|
-
}
|
|
18072
|
-
});
|
|
18073
|
-
|
|
18074
18348
|
// ../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
|
|
18075
18349
|
function r(e) {
|
|
18076
18350
|
var t, f, n = "";
|
|
@@ -20104,7 +20378,12 @@ var init_event_listing = __esm({
|
|
|
20104
20378
|
detailLevel: "listing",
|
|
20105
20379
|
kind: { $bind: { from: "content.kind" } },
|
|
20106
20380
|
eventSurface: { $bind: { from: "content.eventSurface" } },
|
|
20107
|
-
eventPresets: {
|
|
20381
|
+
eventPresets: {
|
|
20382
|
+
$bind: {
|
|
20383
|
+
from: "content.filterEventPresets",
|
|
20384
|
+
transforms: [{ id: "value.csv" }]
|
|
20385
|
+
}
|
|
20386
|
+
},
|
|
20108
20387
|
scheduleScope: { $bind: { from: "content.scheduleScope" } }
|
|
20109
20388
|
},
|
|
20110
20389
|
mode: "server"
|
|
@@ -20948,7 +21227,12 @@ var init_event_calendar = __esm({
|
|
|
20948
21227
|
// Pass filter params if configured
|
|
20949
21228
|
kind: { $bind: { from: "content.kind" } },
|
|
20950
21229
|
eventSurface: { $bind: { from: "content.eventSurface" } },
|
|
20951
|
-
eventPresets: {
|
|
21230
|
+
eventPresets: {
|
|
21231
|
+
$bind: {
|
|
21232
|
+
from: "content.filterEventPresets",
|
|
21233
|
+
transforms: [{ id: "value.csv" }]
|
|
21234
|
+
}
|
|
21235
|
+
},
|
|
20952
21236
|
scheduleScope: { $bind: { from: "content.scheduleScope" } },
|
|
20953
21237
|
categoryIds: { $bind: { from: "content.filterCategoryIds" } },
|
|
20954
21238
|
staffMemberId: { $bind: { from: "content.filterStaffMemberId" } },
|
|
@@ -29344,140 +29628,6 @@ var init_blockOverrides = __esm({
|
|
|
29344
29628
|
}
|
|
29345
29629
|
});
|
|
29346
29630
|
|
|
29347
|
-
// ../theme-core/src/palette/generateShades.ts
|
|
29348
|
-
function generateShades(hexColor, name) {
|
|
29349
|
-
const shadeSteps = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950];
|
|
29350
|
-
const base = featuresFromHex(hexColor);
|
|
29351
|
-
const hue = base.okH;
|
|
29352
|
-
const baseChroma = base.okC;
|
|
29353
|
-
const toneMap = {
|
|
29354
|
-
50: 0.975,
|
|
29355
|
-
100: 0.945,
|
|
29356
|
-
200: 0.89,
|
|
29357
|
-
300: 0.82,
|
|
29358
|
-
400: 0.74,
|
|
29359
|
-
500: 0.66,
|
|
29360
|
-
600: 0.58,
|
|
29361
|
-
700: 0.49,
|
|
29362
|
-
800: 0.4,
|
|
29363
|
-
900: 0.28,
|
|
29364
|
-
950: 0.16
|
|
29365
|
-
};
|
|
29366
|
-
const shadeDefs = shadeSteps.map((step, idx) => {
|
|
29367
|
-
const t = idx / (shadeSteps.length - 1);
|
|
29368
|
-
const L2 = toneMap[step];
|
|
29369
|
-
const chromaFactor = 0.06 + 0.94 * Math.sin(Math.PI * t);
|
|
29370
|
-
const C = baseChroma * chromaFactor;
|
|
29371
|
-
return {
|
|
29372
|
-
name: `${name}-${step}`,
|
|
29373
|
-
hex: oklchToHexGamut(L2, C, hue)
|
|
29374
|
-
};
|
|
29375
|
-
});
|
|
29376
|
-
shadeDefs.push({ name, hex: hexColor });
|
|
29377
|
-
return shadeDefs;
|
|
29378
|
-
}
|
|
29379
|
-
var init_generateShades = __esm({
|
|
29380
|
-
"../theme-core/src/palette/generateShades.ts"() {
|
|
29381
|
-
"use strict";
|
|
29382
|
-
init_colorConversion();
|
|
29383
|
-
}
|
|
29384
|
-
});
|
|
29385
|
-
|
|
29386
|
-
// ../theme-core/src/palette/neutralScale.ts
|
|
29387
|
-
function generateNeutralScale({
|
|
29388
|
-
background,
|
|
29389
|
-
steps = 11,
|
|
29390
|
-
warm = false
|
|
29391
|
-
}) {
|
|
29392
|
-
const isDark = background === "#000000" || background.startsWith("#0") || background.startsWith("#1");
|
|
29393
|
-
const shadeNames = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950];
|
|
29394
|
-
const count = Math.min(steps, shadeNames.length);
|
|
29395
|
-
const scale = [];
|
|
29396
|
-
for (let i = 0; i < count; i++) {
|
|
29397
|
-
const t = i / (count - 1);
|
|
29398
|
-
const tone = isDark ? mix(0.06, 0.92, t) : mix(0.98, 0.1, t);
|
|
29399
|
-
const hex = oklchToHexGamut(tone, 0.02, warm ? 85 : 250);
|
|
29400
|
-
const name = `neutral-${shadeNames[i]}`;
|
|
29401
|
-
scale.push({ name, hex });
|
|
29402
|
-
}
|
|
29403
|
-
return scale;
|
|
29404
|
-
}
|
|
29405
|
-
function mix(a, b2, t) {
|
|
29406
|
-
return a + (b2 - a) * Math.max(0, Math.min(1, t));
|
|
29407
|
-
}
|
|
29408
|
-
var init_neutralScale = __esm({
|
|
29409
|
-
"../theme-core/src/palette/neutralScale.ts"() {
|
|
29410
|
-
"use strict";
|
|
29411
|
-
init_colorConversion();
|
|
29412
|
-
}
|
|
29413
|
-
});
|
|
29414
|
-
|
|
29415
|
-
// ../theme-core/src/palette/expandPalette.ts
|
|
29416
|
-
function colorsToMap(palette) {
|
|
29417
|
-
const map = {};
|
|
29418
|
-
for (const c2 of palette.colors) {
|
|
29419
|
-
map[c2.name] = c2.hex;
|
|
29420
|
-
}
|
|
29421
|
-
return map;
|
|
29422
|
-
}
|
|
29423
|
-
function isBackgroundDark(hex) {
|
|
29424
|
-
try {
|
|
29425
|
-
return featuresFromHex(hex).Y < 0.5;
|
|
29426
|
-
} catch {
|
|
29427
|
-
return false;
|
|
29428
|
-
}
|
|
29429
|
-
}
|
|
29430
|
-
function expandPalette(palette) {
|
|
29431
|
-
const base = colorsToMap(palette);
|
|
29432
|
-
const expanded = { ...base };
|
|
29433
|
-
const background = base.background || base.surface || "#ffffff";
|
|
29434
|
-
const neutral2 = generateNeutralScale({ background, steps: 11, warm: false });
|
|
29435
|
-
neutral2.forEach((n) => {
|
|
29436
|
-
expanded[n.name] = n.hex;
|
|
29437
|
-
});
|
|
29438
|
-
for (const [name, hex] of Object.entries(base)) {
|
|
29439
|
-
if (hex) {
|
|
29440
|
-
const shades = generateShades(hex, name);
|
|
29441
|
-
shades.forEach((shade) => {
|
|
29442
|
-
expanded[shade.name] = shade.hex;
|
|
29443
|
-
});
|
|
29444
|
-
}
|
|
29445
|
-
}
|
|
29446
|
-
if (base.text) expanded.body = base.text;
|
|
29447
|
-
if (base.danger && !base.destructive) {
|
|
29448
|
-
expanded.destructive = base.danger;
|
|
29449
|
-
}
|
|
29450
|
-
const isDark = base.background ? isBackgroundDark(base.background) : false;
|
|
29451
|
-
const isDarkMode = palette.meta?.mode === "dark" || isDark;
|
|
29452
|
-
expanded.mutedText = isDarkMode ? expanded["neutral-600"] ?? "#666" : expanded["neutral-500"] ?? "#888";
|
|
29453
|
-
const onRoles = [
|
|
29454
|
-
{ role: "primary", on: "onPrimary" },
|
|
29455
|
-
{ role: "secondary", on: "onSecondary" },
|
|
29456
|
-
{ role: "accent", on: "onAccent" },
|
|
29457
|
-
{ role: "success", on: "onSuccess" },
|
|
29458
|
-
{ role: "warning", on: "onWarning" },
|
|
29459
|
-
{ role: "destructive", on: "onDestructive" },
|
|
29460
|
-
{ role: "info", on: "onInfo" },
|
|
29461
|
-
{ role: "surface", on: "onSurface" }
|
|
29462
|
-
];
|
|
29463
|
-
for (const { role, on: on2 } of onRoles) {
|
|
29464
|
-
const bg = base[role];
|
|
29465
|
-
if (!bg) continue;
|
|
29466
|
-
if (expanded[on2]) continue;
|
|
29467
|
-
expanded[on2] = getTextColorForBackground(bg);
|
|
29468
|
-
}
|
|
29469
|
-
return expanded;
|
|
29470
|
-
}
|
|
29471
|
-
var init_expandPalette = __esm({
|
|
29472
|
-
"../theme-core/src/palette/expandPalette.ts"() {
|
|
29473
|
-
"use strict";
|
|
29474
|
-
init_generateShades();
|
|
29475
|
-
init_neutralScale();
|
|
29476
|
-
init_colorConversion();
|
|
29477
|
-
init_textColor();
|
|
29478
|
-
}
|
|
29479
|
-
});
|
|
29480
|
-
|
|
29481
29631
|
// ../theme-core/src/runtime/fontFamily.ts
|
|
29482
29632
|
function isGenericFamily(font) {
|
|
29483
29633
|
return GENERIC_CSS_FAMILIES.includes(font.toLowerCase());
|
|
@@ -63651,6 +63801,17 @@ var init_newsletterForm2 = __esm({
|
|
|
63651
63801
|
// src/rendering/hooks/usePage.ts
|
|
63652
63802
|
import { useState, useEffect } from "react";
|
|
63653
63803
|
|
|
63804
|
+
// ../api/src/apiEndpointTypes.ts
|
|
63805
|
+
function blockedDemoMutationPolicy(classification, publicMessage) {
|
|
63806
|
+
if (publicMessage.trim() === "") {
|
|
63807
|
+
throw new Error(`Demo mutation policy ${classification} requires publicMessage.`);
|
|
63808
|
+
}
|
|
63809
|
+
return {
|
|
63810
|
+
classification,
|
|
63811
|
+
publicMessage
|
|
63812
|
+
};
|
|
63813
|
+
}
|
|
63814
|
+
|
|
63654
63815
|
// ../api/src/cache-tags.ts
|
|
63655
63816
|
var TAG_TEMPLATES = {
|
|
63656
63817
|
siteCollection: "riverbank:site",
|
|
@@ -63681,6 +63842,18 @@ var TAG_TEMPLATES = {
|
|
|
63681
63842
|
};
|
|
63682
63843
|
|
|
63683
63844
|
// ../api/src/endpoints.ts
|
|
63845
|
+
var DEMO_MUTATION_BLOCKED_HIDDEN = blockedDemoMutationPolicy(
|
|
63846
|
+
"blocked-hidden",
|
|
63847
|
+
"This action is not available in demo sites."
|
|
63848
|
+
);
|
|
63849
|
+
var DEMO_MUTATION_BLOCKED_DISABLED = blockedDemoMutationPolicy(
|
|
63850
|
+
"blocked-disabled",
|
|
63851
|
+
"This setting is disabled in demo sites."
|
|
63852
|
+
);
|
|
63853
|
+
var DEMO_MUTATION_INTERNAL_ONLY = blockedDemoMutationPolicy(
|
|
63854
|
+
"internal-only",
|
|
63855
|
+
"This internal operation is not available in demo sites."
|
|
63856
|
+
);
|
|
63684
63857
|
var ENDPOINT_DEFINITIONS = {
|
|
63685
63858
|
// AI endpoints - no cache due to dynamic nature
|
|
63686
63859
|
aiContentUpdateChat: {
|
|
@@ -63797,7 +63970,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
63797
63970
|
path: "/sites/{siteId}/ai/generate",
|
|
63798
63971
|
method: "POST",
|
|
63799
63972
|
auth: "user",
|
|
63800
|
-
responseKind: "json"
|
|
63973
|
+
responseKind: "json",
|
|
63974
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
63801
63975
|
},
|
|
63802
63976
|
getOnboardingPreviewStatus: {
|
|
63803
63977
|
path: "/public/sites/{siteId}/onboarding/preview-status",
|
|
@@ -63818,7 +63992,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
63818
63992
|
method: "POST",
|
|
63819
63993
|
auth: "user",
|
|
63820
63994
|
errors: [],
|
|
63821
|
-
responseKind: "json"
|
|
63995
|
+
responseKind: "json",
|
|
63996
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED
|
|
63822
63997
|
},
|
|
63823
63998
|
goLiveSite: {
|
|
63824
63999
|
path: "/sites/{siteId}/launch/go-live",
|
|
@@ -63887,20 +64062,23 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
63887
64062
|
path: "/sites/{siteId}/ai/site-wizard/goals",
|
|
63888
64063
|
method: "POST",
|
|
63889
64064
|
auth: "user",
|
|
63890
|
-
responseKind: "json"
|
|
64065
|
+
responseKind: "json",
|
|
64066
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
63891
64067
|
},
|
|
63892
64068
|
aiSiteWizardIntakeTriage: {
|
|
63893
64069
|
path: "/sites/{siteId}/ai/site-wizard/intake-triage",
|
|
63894
64070
|
method: "POST",
|
|
63895
64071
|
auth: "user",
|
|
63896
|
-
responseKind: "json"
|
|
64072
|
+
responseKind: "json",
|
|
64073
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
63897
64074
|
},
|
|
63898
64075
|
aiSiteWizardTelemetry: {
|
|
63899
64076
|
path: "/sites/{siteId}/ai/site-wizard/telemetry",
|
|
63900
64077
|
method: "POST",
|
|
63901
64078
|
auth: "user",
|
|
63902
64079
|
errors: [],
|
|
63903
|
-
responseKind: "json"
|
|
64080
|
+
responseKind: "json",
|
|
64081
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
63904
64082
|
},
|
|
63905
64083
|
// Admin SEO
|
|
63906
64084
|
listGscPropertiesAdmin: {
|
|
@@ -64107,7 +64285,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
64107
64285
|
responseKind: "json",
|
|
64108
64286
|
errors: ["resource:not_found", "server:internal_error"]
|
|
64109
64287
|
},
|
|
64110
|
-
// Ops (event
|
|
64288
|
+
// Ops (staff event operators/admins)
|
|
64111
64289
|
opsListUpcomingEventOccurrences: {
|
|
64112
64290
|
path: "/ops/sites/{siteId}/events",
|
|
64113
64291
|
method: "GET",
|
|
@@ -64125,6 +64303,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
64125
64303
|
method: "POST",
|
|
64126
64304
|
auth: "user",
|
|
64127
64305
|
responseKind: "json",
|
|
64306
|
+
demoMutation: DEMO_MUTATION_INTERNAL_ONLY,
|
|
64128
64307
|
errors: [
|
|
64129
64308
|
"validation:invalid_input",
|
|
64130
64309
|
"auth:forbidden",
|
|
@@ -64137,6 +64316,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
64137
64316
|
method: "POST",
|
|
64138
64317
|
auth: "user",
|
|
64139
64318
|
responseKind: "json",
|
|
64319
|
+
demoMutation: DEMO_MUTATION_INTERNAL_ONLY,
|
|
64140
64320
|
errors: [
|
|
64141
64321
|
"validation:invalid_input",
|
|
64142
64322
|
"auth:forbidden",
|
|
@@ -64155,6 +64335,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
64155
64335
|
method: "POST",
|
|
64156
64336
|
auth: "user",
|
|
64157
64337
|
responseKind: "json",
|
|
64338
|
+
demoMutation: DEMO_MUTATION_INTERNAL_ONLY,
|
|
64158
64339
|
errors: [
|
|
64159
64340
|
"validation:invalid_input",
|
|
64160
64341
|
"auth:forbidden",
|
|
@@ -64188,6 +64369,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
64188
64369
|
method: "POST",
|
|
64189
64370
|
auth: "user",
|
|
64190
64371
|
responseKind: "json",
|
|
64372
|
+
demoMutation: DEMO_MUTATION_INTERNAL_ONLY,
|
|
64191
64373
|
errors: [
|
|
64192
64374
|
"validation:invalid_input",
|
|
64193
64375
|
"auth:forbidden",
|
|
@@ -64216,7 +64398,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
64216
64398
|
method: "POST",
|
|
64217
64399
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings],
|
|
64218
64400
|
auth: "user",
|
|
64219
|
-
responseKind: "json"
|
|
64401
|
+
responseKind: "json",
|
|
64402
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
64220
64403
|
},
|
|
64221
64404
|
previewEmailTemplate: {
|
|
64222
64405
|
path: "/sites/{siteId}/settings/emails/preview",
|
|
@@ -64267,14 +64450,16 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
64267
64450
|
method: "POST",
|
|
64268
64451
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
64269
64452
|
auth: "user",
|
|
64270
|
-
responseKind: "json"
|
|
64453
|
+
responseKind: "json",
|
|
64454
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
64271
64455
|
},
|
|
64272
64456
|
createNewsletterSubscribersImportUploadUrl: {
|
|
64273
64457
|
path: "/sites/{siteId}/newsletter/subscribers/import-url",
|
|
64274
64458
|
method: "POST",
|
|
64275
64459
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
64276
64460
|
auth: "user",
|
|
64277
|
-
responseKind: "json"
|
|
64461
|
+
responseKind: "json",
|
|
64462
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
64278
64463
|
},
|
|
64279
64464
|
exportNewsletterSubscribersCsv: {
|
|
64280
64465
|
path: "/sites/{siteId}/newsletter/subscribers/export.csv",
|
|
@@ -64471,14 +64656,16 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
64471
64656
|
method: "POST",
|
|
64472
64657
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
64473
64658
|
auth: "user",
|
|
64474
|
-
responseKind: "json"
|
|
64659
|
+
responseKind: "json",
|
|
64660
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
64475
64661
|
},
|
|
64476
64662
|
testSendNewsletterCampaign: {
|
|
64477
64663
|
path: "/sites/{siteId}/newsletter/campaigns/{campaignId}/test-send",
|
|
64478
64664
|
method: "POST",
|
|
64479
64665
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
64480
64666
|
auth: "user",
|
|
64481
|
-
responseKind: "json"
|
|
64667
|
+
responseKind: "json",
|
|
64668
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
64482
64669
|
},
|
|
64483
64670
|
listNewsletterSendJobs: {
|
|
64484
64671
|
path: "/sites/{siteId}/newsletter/jobs",
|
|
@@ -65166,7 +65353,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
65166
65353
|
method: "DELETE",
|
|
65167
65354
|
tags: ["site", "site-{siteId}"],
|
|
65168
65355
|
auth: "user",
|
|
65169
|
-
responseKind: "json"
|
|
65356
|
+
responseKind: "json",
|
|
65357
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
65170
65358
|
},
|
|
65171
65359
|
listSiteMembers: {
|
|
65172
65360
|
path: "/sites/{siteId}/members",
|
|
@@ -65622,7 +65810,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
65622
65810
|
method: "POST",
|
|
65623
65811
|
tags: ["site-{siteId}", "content-{siteId}-{type}"],
|
|
65624
65812
|
auth: "user",
|
|
65625
|
-
responseKind: "json"
|
|
65813
|
+
responseKind: "json",
|
|
65814
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
65626
65815
|
},
|
|
65627
65816
|
updateSiteGeneralSettings: {
|
|
65628
65817
|
path: "/sites/{siteId}/settings/general",
|
|
@@ -67861,6 +68050,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
67861
68050
|
method: "POST",
|
|
67862
68051
|
tags: ["site-{siteId}"],
|
|
67863
68052
|
auth: "user",
|
|
68053
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN,
|
|
67864
68054
|
errors: [
|
|
67865
68055
|
"validation:invalid_input",
|
|
67866
68056
|
"auth:forbidden",
|
|
@@ -67875,6 +68065,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
67875
68065
|
method: "POST",
|
|
67876
68066
|
tags: ["site-{siteId}"],
|
|
67877
68067
|
auth: "user",
|
|
68068
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN,
|
|
67878
68069
|
errors: [
|
|
67879
68070
|
"validation:invalid_input",
|
|
67880
68071
|
"auth:forbidden",
|
|
@@ -68184,6 +68375,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
68184
68375
|
tags: ["site-{siteId}", "passes-{siteId}"],
|
|
68185
68376
|
auth: "user",
|
|
68186
68377
|
responseKind: "json",
|
|
68378
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
68187
68379
|
errors: ["validation:invalid_input", "server:internal_error"]
|
|
68188
68380
|
},
|
|
68189
68381
|
getBookingPass: {
|
|
@@ -68199,6 +68391,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
68199
68391
|
tags: ["site-{siteId}", "passes-{siteId}"],
|
|
68200
68392
|
auth: "user",
|
|
68201
68393
|
responseKind: "json",
|
|
68394
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
68202
68395
|
errors: [
|
|
68203
68396
|
"validation:invalid_input",
|
|
68204
68397
|
"resource:not_found",
|
|
@@ -68211,6 +68404,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
68211
68404
|
tags: ["site-{siteId}", "passes-{siteId}"],
|
|
68212
68405
|
auth: "user",
|
|
68213
68406
|
responseKind: "json",
|
|
68407
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
68214
68408
|
errors: [
|
|
68215
68409
|
"validation:invalid_input",
|
|
68216
68410
|
"resource:not_found",
|
|
@@ -68266,6 +68460,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
68266
68460
|
tags: ["site-{siteId}", "memberships-{siteId}"],
|
|
68267
68461
|
auth: "user",
|
|
68268
68462
|
responseKind: "json",
|
|
68463
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
68269
68464
|
errors: ["validation:invalid_input", "server:internal_error"]
|
|
68270
68465
|
},
|
|
68271
68466
|
getBookingMembership: {
|
|
@@ -68281,6 +68476,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
68281
68476
|
tags: ["site-{siteId}", "memberships-{siteId}"],
|
|
68282
68477
|
auth: "user",
|
|
68283
68478
|
responseKind: "json",
|
|
68479
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
68284
68480
|
errors: [
|
|
68285
68481
|
"validation:invalid_input",
|
|
68286
68482
|
"resource:not_found",
|
|
@@ -68293,6 +68489,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
68293
68489
|
tags: ["site-{siteId}", "memberships-{siteId}"],
|
|
68294
68490
|
auth: "user",
|
|
68295
68491
|
responseKind: "json",
|
|
68492
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
68296
68493
|
errors: [
|
|
68297
68494
|
"validation:invalid_input",
|
|
68298
68495
|
"resource:not_found",
|
|
@@ -68509,6 +68706,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
68509
68706
|
tags: ["site-{siteId}", "customers-{siteId}"],
|
|
68510
68707
|
auth: "user",
|
|
68511
68708
|
responseKind: "json",
|
|
68709
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
68512
68710
|
errors: [
|
|
68513
68711
|
"validation:invalid_input",
|
|
68514
68712
|
"auth:forbidden",
|
|
@@ -69906,8 +70104,7 @@ var dashboardNavVisibilityBaseSchema = z5.object({
|
|
|
69906
70104
|
var dashboardNavVisibilityRolesSchema = z5.object({
|
|
69907
70105
|
administrator: dashboardNavVisibilityBaseSchema.optional(),
|
|
69908
70106
|
editor: dashboardNavVisibilityBaseSchema.optional(),
|
|
69909
|
-
team_member: dashboardNavVisibilityBaseSchema.optional()
|
|
69910
|
-
event_host: dashboardNavVisibilityBaseSchema.optional()
|
|
70107
|
+
team_member: dashboardNavVisibilityBaseSchema.optional()
|
|
69911
70108
|
}).strip().optional();
|
|
69912
70109
|
var dashboardNavVisibilitySchema = dashboardNavVisibilityBaseSchema.extend({
|
|
69913
70110
|
roles: dashboardNavVisibilityRolesSchema
|
|
@@ -70852,6 +71049,21 @@ var appointmentSetupServiceDraftSchema = z7.object({
|
|
|
70852
71049
|
timezone: z7.string().trim().min(1).nullable(),
|
|
70853
71050
|
payment: appointmentSetupPaymentDraftSchema,
|
|
70854
71051
|
assignment: appointmentSetupServiceAssignmentDraftSchema
|
|
71052
|
+
}).superRefine((service, ctx) => {
|
|
71053
|
+
if (service.payment.priceType === "paid" && (service.priceAmount === null || service.priceAmount <= 0)) {
|
|
71054
|
+
ctx.addIssue({
|
|
71055
|
+
code: "custom",
|
|
71056
|
+
path: ["priceAmount"],
|
|
71057
|
+
message: "Paid appointment services need a positive price."
|
|
71058
|
+
});
|
|
71059
|
+
}
|
|
71060
|
+
if (service.payment.priceType === "free" && service.priceAmount !== null && service.priceAmount > 0) {
|
|
71061
|
+
ctx.addIssue({
|
|
71062
|
+
code: "custom",
|
|
71063
|
+
path: ["priceAmount"],
|
|
71064
|
+
message: "Free appointment services cannot carry a positive price."
|
|
71065
|
+
});
|
|
71066
|
+
}
|
|
70855
71067
|
});
|
|
70856
71068
|
var appointmentSetupPractitionerDraftSchema = z7.object({
|
|
70857
71069
|
ref: appointmentSetupRefSchema,
|
|
@@ -72716,6 +72928,16 @@ var jsonArrayTransform = {
|
|
|
72716
72928
|
return "";
|
|
72717
72929
|
}
|
|
72718
72930
|
};
|
|
72931
|
+
var csvTransform = {
|
|
72932
|
+
id: "value.csv",
|
|
72933
|
+
kind: "formatter",
|
|
72934
|
+
summary: "Normalize a string or array of strings into a comma-separated list",
|
|
72935
|
+
run: (value) => {
|
|
72936
|
+
const rawValues = Array.isArray(value) ? value : typeof value === "string" ? value.split(",") : [];
|
|
72937
|
+
const normalized = rawValues.filter((item) => typeof item === "string").map((item) => item.trim()).filter(Boolean);
|
|
72938
|
+
return normalized.length > 0 ? Array.from(new Set(normalized)).join(",") : "";
|
|
72939
|
+
}
|
|
72940
|
+
};
|
|
72719
72941
|
var marqueeLoopOptionsSchema = z39.object({
|
|
72720
72942
|
minItems: z39.number().int().min(1).default(10)
|
|
72721
72943
|
});
|
|
@@ -72741,6 +72963,7 @@ var formattingTransforms = [
|
|
|
72741
72963
|
dateFormatShort,
|
|
72742
72964
|
arrayLengthTransform,
|
|
72743
72965
|
jsonArrayTransform,
|
|
72966
|
+
csvTransform,
|
|
72744
72967
|
marqueeLoopTransform
|
|
72745
72968
|
];
|
|
72746
72969
|
|
|
@@ -80482,11 +80705,11 @@ init_neutralScale();
|
|
|
80482
80705
|
|
|
80483
80706
|
// ../theme-core/src/palette/utils/index.ts
|
|
80484
80707
|
init_colorConversion();
|
|
80485
|
-
|
|
80708
|
+
init_contrast();
|
|
80486
80709
|
|
|
80487
80710
|
// ../theme-core/src/palette/utils/colorPlacement.ts
|
|
80488
80711
|
init_colorConversion();
|
|
80489
|
-
|
|
80712
|
+
init_contrast();
|
|
80490
80713
|
|
|
80491
80714
|
// ../theme-core/src/palette/utils/backgroundGeneration.ts
|
|
80492
80715
|
init_colorConversion();
|
|
@@ -80508,14 +80731,14 @@ init_colorConversion();
|
|
|
80508
80731
|
|
|
80509
80732
|
// ../theme-core/src/palette/utils/suggestRecipes.ts
|
|
80510
80733
|
init_colorConversion();
|
|
80511
|
-
|
|
80734
|
+
init_contrast();
|
|
80512
80735
|
|
|
80513
80736
|
// ../theme-core/src/palette/utils/generatePalette.ts
|
|
80514
80737
|
init_colorConversion();
|
|
80515
|
-
|
|
80738
|
+
init_contrast();
|
|
80516
80739
|
|
|
80517
80740
|
// ../theme-core/src/palette/utils/legs.ts
|
|
80518
|
-
|
|
80741
|
+
init_contrast();
|
|
80519
80742
|
init_colorConversion();
|
|
80520
80743
|
|
|
80521
80744
|
// ../theme-core/src/palette/utils/supportRoles.ts
|
|
@@ -80528,7 +80751,10 @@ init_colorConversion();
|
|
|
80528
80751
|
init_textColor();
|
|
80529
80752
|
|
|
80530
80753
|
// ../theme-core/src/palette/utils/legibility.ts
|
|
80531
|
-
|
|
80754
|
+
init_contrast();
|
|
80755
|
+
|
|
80756
|
+
// ../theme-core/src/palette/utils/index.ts
|
|
80757
|
+
init_onColor();
|
|
80532
80758
|
|
|
80533
80759
|
// ../theme-core/src/mock-themes/components/PaletteCard.tsx
|
|
80534
80760
|
init_expandPalette();
|
|
@@ -83404,7 +83630,7 @@ var SimpleCache = class {
|
|
|
83404
83630
|
};
|
|
83405
83631
|
|
|
83406
83632
|
// src/version.ts
|
|
83407
|
-
var SDK_VERSION = "0.
|
|
83633
|
+
var SDK_VERSION = "0.67.0";
|
|
83408
83634
|
|
|
83409
83635
|
// src/client/error.ts
|
|
83410
83636
|
var RiverbankApiError = class _RiverbankApiError extends Error {
|