@riverbankcms/sdk 0.64.0 → 0.68.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/README.md +21 -11
- package/dist/_dts/api/src/aiPlayground.d.ts +75 -20
- package/dist/_dts/api/src/apiEndpointTypes.d.ts +12 -0
- package/dist/_dts/api/src/billing.d.ts +7 -40
- package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +4 -1
- package/dist/_dts/api/src/bookingOperations.d.ts +33 -2
- package/dist/_dts/api/src/endpoints.d.ts +32 -0
- package/dist/_dts/api/src/public/types.d.ts +1 -1
- 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/components/index.d.ts +426 -0
- package/dist/_dts/billing/src/plans/types.d.ts +1 -1
- package/dist/_dts/blocks/src/PageRenderer.d.ts +4 -0
- package/dist/_dts/blocks/src/bindings/index.d.ts +1 -1
- package/dist/_dts/blocks/src/client.d.ts +6 -0
- package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/hooks/useAvailableDates.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/useAvailableSlots.d.ts +3 -1
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +140 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.state.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/useVisibleTabPolling.d.ts +10 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.default-ui.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +484 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +5 -2
- 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/bookings/index.d.ts +5 -2
- package/dist/_dts/sdk/src/bookings/types.d.ts +2 -0
- package/dist/_dts/sdk/src/cli/commands/push/execute/footer.d.ts +33 -0
- package/dist/_dts/sdk/src/cli/commands/push/scopes/commandBackedDatedOfferingScope.d.ts +32 -0
- package/dist/_dts/sdk/src/cli/commands/push/scopes/types.d.ts +5 -1
- 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 +144 -0
- package/dist/_dts/sdk/src/cli/site-commands/commandRuntimeCompat.d.ts +21 -0
- package/dist/_dts/sdk/src/cli/site-commands/commandSurfaceDispatch.d.ts +27 -0
- package/dist/_dts/sdk/src/cli/site-commands/datedOfferingCommands.d.ts +56 -0
- package/dist/_dts/sdk/src/cli/site-commands/entryCommands.d.ts +29 -49
- package/dist/_dts/sdk/src/cli/site-commands/footerCommands.d.ts +56 -0
- package/dist/_dts/sdk/src/cli/site-commands/formCommands.d.ts +53 -0
- package/dist/_dts/sdk/src/cli/site-commands/index.d.ts +6 -0
- package/dist/_dts/sdk/src/cli/site-commands/navigationCommands.d.ts +53 -0
- package/dist/_dts/sdk/src/cli/site-commands/pageCommands.d.ts +79 -0
- package/dist/_dts/sdk/src/cli/site-commands/pushExecution.d.ts +19 -20
- package/dist/_dts/sdk/src/cli/site-commands/pushExecutionPlan.d.ts +8 -0
- package/dist/_dts/sdk/src/cli/site-commands/pushExecutionTypes.d.ts +97 -0
- package/dist/_dts/sdk/src/cli/site-commands/residualSettingsTrimming.d.ts +15 -0
- package/dist/_dts/sdk/src/cli/sync/executor.d.ts +10 -28
- package/dist/_dts/sdk/src/cli/sync/index.d.ts +2 -1
- package/dist/_dts/sdk/src/cli/sync/syncResultAggregation.d.ts +4 -0
- 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/rendering/overrides.d.ts +2 -0
- package/dist/_dts/sdk/src/theme-bridge/ThemeBridgeProvider.d.ts +4 -4
- package/dist/_dts/sdk/src/theme-bridge/generateCssVars.d.ts +4 -12
- package/dist/_dts/sdk/src/theme-bridge/index.d.ts +1 -1
- package/dist/_dts/sdk/src/theme-bridge/types.d.ts +17 -9
- 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 +637 -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 +2 -0
- package/dist/_dts/site-commands/src/metadata.d.ts +159 -3
- package/dist/_dts/site-commands/src/planner.d.ts +13 -6
- package/dist/_dts/site-commands/src/refContributions.d.ts +1 -0
- package/dist/_dts/site-commands/src/refs.d.ts +19 -1
- package/dist/_dts/{sdk/src/cli/merge-remote → site-commands/src}/stableJson.d.ts +2 -0
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/index.d.ts +1 -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/runtime/buildThemeRuntimeFromBridge.d.ts +30 -23
- 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 +4736 -2026
- package/dist/client/bookings.mjs +5107 -3348
- package/dist/client/client.mjs +4579 -3871
- package/dist/client/hooks.mjs +325 -123
- package/dist/client/rendering/client.mjs +4474 -3869
- package/dist/client/rendering/islands.mjs +4234 -3639
- package/dist/client/rendering.mjs +4508 -3798
- package/dist/preview-next/before-render.mjs +75 -13
- package/dist/preview-next/client/runtime.mjs +3700 -2644
- package/dist/preview-next/middleware.mjs +75 -13
- package/dist/server/components.mjs +698 -383
- package/dist/server/config-validation.mjs +327 -125
- package/dist/server/config.mjs +327 -125
- package/dist/server/data.mjs +325 -123
- package/dist/server/index.mjs +92 -16
- package/dist/server/next.mjs +692 -377
- package/dist/server/page-converter.mjs +159 -41
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +700 -383
- package/dist/server/rendering.mjs +700 -383
- package/dist/server/routing.mjs +406 -131
- package/dist/server/server.mjs +326 -124
- package/dist/server/theme-bridge.mjs +1226 -4697
- package/dist/styles/index.css +38 -38
- package/package.json +1 -1
- package/dist/_dts/blocks/src/system/runtime/components/booking/DateTimeSelectionStep.d.ts +0 -18
- package/dist/_dts/blocks/src/system/runtime/components/booking/PaymentOptionSelectionStep.d.ts +0 -9
- package/dist/_dts/blocks/src/system/runtime/components/booking/ServiceResourceSelector.d.ts +0 -44
- package/dist/_dts/blocks/src/system/runtime/components/booking/ServiceResourceSelector.state.d.ts +0 -23
- package/dist/_dts/blocks/src/system/runtime/components/booking/ServiceSelectionStep.d.ts +0 -18
- package/dist/_dts/blocks/src/system/runtime/components/booking/slotDisplay.d.ts +0 -2
- package/dist/_dts/blocks/src/system/runtime/components/multi-step/MultiStepForm.d.ts +0 -21
- package/dist/_dts/blocks/src/system/runtime/components/multi-step/useMultiStep.d.ts +0 -15
- package/dist/_dts/blocks/src/system/runtime/components/multi-step/useMultiStep.state.d.ts +0 -51
- package/dist/_dts/blocks/src/system/runtime/hooks/useBookingSteps.d.ts +0 -22
- 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/server/config.mjs
CHANGED
|
@@ -46,6 +46,17 @@ function fallbackBinding(...sources) {
|
|
|
46
46
|
// src/config/validation.ts
|
|
47
47
|
import { z as z68 } from "zod";
|
|
48
48
|
|
|
49
|
+
// ../api/src/apiEndpointTypes.ts
|
|
50
|
+
function blockedDemoMutationPolicy(classification, publicMessage) {
|
|
51
|
+
if (publicMessage.trim() === "") {
|
|
52
|
+
throw new Error(`Demo mutation policy ${classification} requires publicMessage.`);
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
classification,
|
|
56
|
+
publicMessage
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
49
60
|
// ../api/src/cache-tags.ts
|
|
50
61
|
var TAG_TEMPLATES = {
|
|
51
62
|
siteCollection: "riverbank:site",
|
|
@@ -76,6 +87,18 @@ var TAG_TEMPLATES = {
|
|
|
76
87
|
};
|
|
77
88
|
|
|
78
89
|
// ../api/src/endpoints.ts
|
|
90
|
+
var DEMO_MUTATION_BLOCKED_HIDDEN = blockedDemoMutationPolicy(
|
|
91
|
+
"blocked-hidden",
|
|
92
|
+
"This action is not available in demo sites."
|
|
93
|
+
);
|
|
94
|
+
var DEMO_MUTATION_BLOCKED_DISABLED = blockedDemoMutationPolicy(
|
|
95
|
+
"blocked-disabled",
|
|
96
|
+
"This setting is disabled in demo sites."
|
|
97
|
+
);
|
|
98
|
+
var DEMO_MUTATION_INTERNAL_ONLY = blockedDemoMutationPolicy(
|
|
99
|
+
"internal-only",
|
|
100
|
+
"This internal operation is not available in demo sites."
|
|
101
|
+
);
|
|
79
102
|
var ENDPOINT_DEFINITIONS = {
|
|
80
103
|
// AI endpoints - no cache due to dynamic nature
|
|
81
104
|
aiContentUpdateChat: {
|
|
@@ -192,7 +215,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
192
215
|
path: "/sites/{siteId}/ai/generate",
|
|
193
216
|
method: "POST",
|
|
194
217
|
auth: "user",
|
|
195
|
-
responseKind: "json"
|
|
218
|
+
responseKind: "json",
|
|
219
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
196
220
|
},
|
|
197
221
|
getOnboardingPreviewStatus: {
|
|
198
222
|
path: "/public/sites/{siteId}/onboarding/preview-status",
|
|
@@ -213,7 +237,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
213
237
|
method: "POST",
|
|
214
238
|
auth: "user",
|
|
215
239
|
errors: [],
|
|
216
|
-
responseKind: "json"
|
|
240
|
+
responseKind: "json",
|
|
241
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED
|
|
217
242
|
},
|
|
218
243
|
goLiveSite: {
|
|
219
244
|
path: "/sites/{siteId}/launch/go-live",
|
|
@@ -282,20 +307,23 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
282
307
|
path: "/sites/{siteId}/ai/site-wizard/goals",
|
|
283
308
|
method: "POST",
|
|
284
309
|
auth: "user",
|
|
285
|
-
responseKind: "json"
|
|
310
|
+
responseKind: "json",
|
|
311
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
286
312
|
},
|
|
287
313
|
aiSiteWizardIntakeTriage: {
|
|
288
314
|
path: "/sites/{siteId}/ai/site-wizard/intake-triage",
|
|
289
315
|
method: "POST",
|
|
290
316
|
auth: "user",
|
|
291
|
-
responseKind: "json"
|
|
317
|
+
responseKind: "json",
|
|
318
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
292
319
|
},
|
|
293
320
|
aiSiteWizardTelemetry: {
|
|
294
321
|
path: "/sites/{siteId}/ai/site-wizard/telemetry",
|
|
295
322
|
method: "POST",
|
|
296
323
|
auth: "user",
|
|
297
324
|
errors: [],
|
|
298
|
-
responseKind: "json"
|
|
325
|
+
responseKind: "json",
|
|
326
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
299
327
|
},
|
|
300
328
|
// Admin SEO
|
|
301
329
|
listGscPropertiesAdmin: {
|
|
@@ -502,7 +530,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
502
530
|
responseKind: "json",
|
|
503
531
|
errors: ["resource:not_found", "server:internal_error"]
|
|
504
532
|
},
|
|
505
|
-
// Ops (event
|
|
533
|
+
// Ops (staff event operators/admins)
|
|
506
534
|
opsListUpcomingEventOccurrences: {
|
|
507
535
|
path: "/ops/sites/{siteId}/events",
|
|
508
536
|
method: "GET",
|
|
@@ -520,6 +548,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
520
548
|
method: "POST",
|
|
521
549
|
auth: "user",
|
|
522
550
|
responseKind: "json",
|
|
551
|
+
demoMutation: DEMO_MUTATION_INTERNAL_ONLY,
|
|
523
552
|
errors: [
|
|
524
553
|
"validation:invalid_input",
|
|
525
554
|
"auth:forbidden",
|
|
@@ -532,6 +561,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
532
561
|
method: "POST",
|
|
533
562
|
auth: "user",
|
|
534
563
|
responseKind: "json",
|
|
564
|
+
demoMutation: DEMO_MUTATION_INTERNAL_ONLY,
|
|
535
565
|
errors: [
|
|
536
566
|
"validation:invalid_input",
|
|
537
567
|
"auth:forbidden",
|
|
@@ -550,6 +580,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
550
580
|
method: "POST",
|
|
551
581
|
auth: "user",
|
|
552
582
|
responseKind: "json",
|
|
583
|
+
demoMutation: DEMO_MUTATION_INTERNAL_ONLY,
|
|
553
584
|
errors: [
|
|
554
585
|
"validation:invalid_input",
|
|
555
586
|
"auth:forbidden",
|
|
@@ -583,6 +614,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
583
614
|
method: "POST",
|
|
584
615
|
auth: "user",
|
|
585
616
|
responseKind: "json",
|
|
617
|
+
demoMutation: DEMO_MUTATION_INTERNAL_ONLY,
|
|
586
618
|
errors: [
|
|
587
619
|
"validation:invalid_input",
|
|
588
620
|
"auth:forbidden",
|
|
@@ -611,7 +643,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
611
643
|
method: "POST",
|
|
612
644
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings],
|
|
613
645
|
auth: "user",
|
|
614
|
-
responseKind: "json"
|
|
646
|
+
responseKind: "json",
|
|
647
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
615
648
|
},
|
|
616
649
|
previewEmailTemplate: {
|
|
617
650
|
path: "/sites/{siteId}/settings/emails/preview",
|
|
@@ -662,14 +695,16 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
662
695
|
method: "POST",
|
|
663
696
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
664
697
|
auth: "user",
|
|
665
|
-
responseKind: "json"
|
|
698
|
+
responseKind: "json",
|
|
699
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
666
700
|
},
|
|
667
701
|
createNewsletterSubscribersImportUploadUrl: {
|
|
668
702
|
path: "/sites/{siteId}/newsletter/subscribers/import-url",
|
|
669
703
|
method: "POST",
|
|
670
704
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
671
705
|
auth: "user",
|
|
672
|
-
responseKind: "json"
|
|
706
|
+
responseKind: "json",
|
|
707
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
673
708
|
},
|
|
674
709
|
exportNewsletterSubscribersCsv: {
|
|
675
710
|
path: "/sites/{siteId}/newsletter/subscribers/export.csv",
|
|
@@ -866,14 +901,16 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
866
901
|
method: "POST",
|
|
867
902
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
868
903
|
auth: "user",
|
|
869
|
-
responseKind: "json"
|
|
904
|
+
responseKind: "json",
|
|
905
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
870
906
|
},
|
|
871
907
|
testSendNewsletterCampaign: {
|
|
872
908
|
path: "/sites/{siteId}/newsletter/campaigns/{campaignId}/test-send",
|
|
873
909
|
method: "POST",
|
|
874
910
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
875
911
|
auth: "user",
|
|
876
|
-
responseKind: "json"
|
|
912
|
+
responseKind: "json",
|
|
913
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
877
914
|
},
|
|
878
915
|
listNewsletterSendJobs: {
|
|
879
916
|
path: "/sites/{siteId}/newsletter/jobs",
|
|
@@ -921,6 +958,20 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
921
958
|
responseKind: "json",
|
|
922
959
|
errors: ["validation:invalid_input", "billing:plan_limit_exceeded", "server:internal_error"]
|
|
923
960
|
},
|
|
961
|
+
createAppointmentResourceWithAccountAccess: {
|
|
962
|
+
path: "/sites/{siteId}/bookings/resources/account-access",
|
|
963
|
+
method: "POST",
|
|
964
|
+
auth: "user",
|
|
965
|
+
responseKind: "json",
|
|
966
|
+
errors: [
|
|
967
|
+
"validation:invalid_input",
|
|
968
|
+
"auth:forbidden",
|
|
969
|
+
"billing:plan_limit_exceeded",
|
|
970
|
+
"resource:conflict",
|
|
971
|
+
"resource:not_found",
|
|
972
|
+
"server:internal_error"
|
|
973
|
+
]
|
|
974
|
+
},
|
|
924
975
|
getAppointmentResource: {
|
|
925
976
|
path: "/sites/{siteId}/bookings/resources/{resourceId}",
|
|
926
977
|
method: "GET",
|
|
@@ -1561,7 +1612,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
1561
1612
|
method: "DELETE",
|
|
1562
1613
|
tags: ["site", "site-{siteId}"],
|
|
1563
1614
|
auth: "user",
|
|
1564
|
-
responseKind: "json"
|
|
1615
|
+
responseKind: "json",
|
|
1616
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
1565
1617
|
},
|
|
1566
1618
|
listSiteMembers: {
|
|
1567
1619
|
path: "/sites/{siteId}/members",
|
|
@@ -2017,7 +2069,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
2017
2069
|
method: "POST",
|
|
2018
2070
|
tags: ["site-{siteId}", "content-{siteId}-{type}"],
|
|
2019
2071
|
auth: "user",
|
|
2020
|
-
responseKind: "json"
|
|
2072
|
+
responseKind: "json",
|
|
2073
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
2021
2074
|
},
|
|
2022
2075
|
updateSiteGeneralSettings: {
|
|
2023
2076
|
path: "/sites/{siteId}/settings/general",
|
|
@@ -4256,6 +4309,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4256
4309
|
method: "POST",
|
|
4257
4310
|
tags: ["site-{siteId}"],
|
|
4258
4311
|
auth: "user",
|
|
4312
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN,
|
|
4259
4313
|
errors: [
|
|
4260
4314
|
"validation:invalid_input",
|
|
4261
4315
|
"auth:forbidden",
|
|
@@ -4270,6 +4324,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4270
4324
|
method: "POST",
|
|
4271
4325
|
tags: ["site-{siteId}"],
|
|
4272
4326
|
auth: "user",
|
|
4327
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN,
|
|
4273
4328
|
errors: [
|
|
4274
4329
|
"validation:invalid_input",
|
|
4275
4330
|
"auth:forbidden",
|
|
@@ -4579,6 +4634,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4579
4634
|
tags: ["site-{siteId}", "passes-{siteId}"],
|
|
4580
4635
|
auth: "user",
|
|
4581
4636
|
responseKind: "json",
|
|
4637
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4582
4638
|
errors: ["validation:invalid_input", "server:internal_error"]
|
|
4583
4639
|
},
|
|
4584
4640
|
getBookingPass: {
|
|
@@ -4594,6 +4650,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4594
4650
|
tags: ["site-{siteId}", "passes-{siteId}"],
|
|
4595
4651
|
auth: "user",
|
|
4596
4652
|
responseKind: "json",
|
|
4653
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4597
4654
|
errors: [
|
|
4598
4655
|
"validation:invalid_input",
|
|
4599
4656
|
"resource:not_found",
|
|
@@ -4606,6 +4663,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4606
4663
|
tags: ["site-{siteId}", "passes-{siteId}"],
|
|
4607
4664
|
auth: "user",
|
|
4608
4665
|
responseKind: "json",
|
|
4666
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4609
4667
|
errors: [
|
|
4610
4668
|
"validation:invalid_input",
|
|
4611
4669
|
"resource:not_found",
|
|
@@ -4661,6 +4719,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4661
4719
|
tags: ["site-{siteId}", "memberships-{siteId}"],
|
|
4662
4720
|
auth: "user",
|
|
4663
4721
|
responseKind: "json",
|
|
4722
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4664
4723
|
errors: ["validation:invalid_input", "server:internal_error"]
|
|
4665
4724
|
},
|
|
4666
4725
|
getBookingMembership: {
|
|
@@ -4676,6 +4735,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4676
4735
|
tags: ["site-{siteId}", "memberships-{siteId}"],
|
|
4677
4736
|
auth: "user",
|
|
4678
4737
|
responseKind: "json",
|
|
4738
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4679
4739
|
errors: [
|
|
4680
4740
|
"validation:invalid_input",
|
|
4681
4741
|
"resource:not_found",
|
|
@@ -4688,6 +4748,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4688
4748
|
tags: ["site-{siteId}", "memberships-{siteId}"],
|
|
4689
4749
|
auth: "user",
|
|
4690
4750
|
responseKind: "json",
|
|
4751
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4691
4752
|
errors: [
|
|
4692
4753
|
"validation:invalid_input",
|
|
4693
4754
|
"resource:not_found",
|
|
@@ -4904,6 +4965,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4904
4965
|
tags: ["site-{siteId}", "customers-{siteId}"],
|
|
4905
4966
|
auth: "user",
|
|
4906
4967
|
responseKind: "json",
|
|
4968
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4907
4969
|
errors: [
|
|
4908
4970
|
"validation:invalid_input",
|
|
4909
4971
|
"auth:forbidden",
|
|
@@ -6492,6 +6554,7 @@ var ALLOWED_TRANSFORM_IDS = [
|
|
|
6492
6554
|
"date.formatShort",
|
|
6493
6555
|
"array.length",
|
|
6494
6556
|
"value.jsonArray",
|
|
6557
|
+
"value.csv",
|
|
6495
6558
|
"array.marqueeLoop",
|
|
6496
6559
|
// Layout (layout.ts)
|
|
6497
6560
|
"layout.maxWidthClass",
|
|
@@ -7261,8 +7324,7 @@ var dashboardNavVisibilityBaseSchema = z5.object({
|
|
|
7261
7324
|
var dashboardNavVisibilityRolesSchema = z5.object({
|
|
7262
7325
|
administrator: dashboardNavVisibilityBaseSchema.optional(),
|
|
7263
7326
|
editor: dashboardNavVisibilityBaseSchema.optional(),
|
|
7264
|
-
team_member: dashboardNavVisibilityBaseSchema.optional()
|
|
7265
|
-
event_host: dashboardNavVisibilityBaseSchema.optional()
|
|
7327
|
+
team_member: dashboardNavVisibilityBaseSchema.optional()
|
|
7266
7328
|
}).strip().optional();
|
|
7267
7329
|
var dashboardNavVisibilitySchema = dashboardNavVisibilityBaseSchema.extend({
|
|
7268
7330
|
roles: dashboardNavVisibilityRolesSchema
|
|
@@ -7783,6 +7845,21 @@ var appointmentSetupServiceDraftSchema = z7.object({
|
|
|
7783
7845
|
timezone: z7.string().trim().min(1).nullable(),
|
|
7784
7846
|
payment: appointmentSetupPaymentDraftSchema,
|
|
7785
7847
|
assignment: appointmentSetupServiceAssignmentDraftSchema
|
|
7848
|
+
}).superRefine((service, ctx) => {
|
|
7849
|
+
if (service.payment.priceType === "paid" && (service.priceAmount === null || service.priceAmount <= 0)) {
|
|
7850
|
+
ctx.addIssue({
|
|
7851
|
+
code: "custom",
|
|
7852
|
+
path: ["priceAmount"],
|
|
7853
|
+
message: "Paid appointment services need a positive price."
|
|
7854
|
+
});
|
|
7855
|
+
}
|
|
7856
|
+
if (service.payment.priceType === "free" && service.priceAmount !== null && service.priceAmount > 0) {
|
|
7857
|
+
ctx.addIssue({
|
|
7858
|
+
code: "custom",
|
|
7859
|
+
path: ["priceAmount"],
|
|
7860
|
+
message: "Free appointment services cannot carry a positive price."
|
|
7861
|
+
});
|
|
7862
|
+
}
|
|
7786
7863
|
});
|
|
7787
7864
|
var appointmentSetupPractitionerDraftSchema = z7.object({
|
|
7788
7865
|
ref: appointmentSetupRefSchema,
|
|
@@ -8200,6 +8277,71 @@ function registerManifest(manifest) {
|
|
|
8200
8277
|
return manifest;
|
|
8201
8278
|
}
|
|
8202
8279
|
|
|
8280
|
+
// ../theme-core/src/palette/utils/colorConversion.ts
|
|
8281
|
+
var mod = (a, n) => (a % n + n) % n;
|
|
8282
|
+
var deg = (x) => mod(x, 360);
|
|
8283
|
+
function hexToRgb(hex) {
|
|
8284
|
+
const h = hex.replace(/^#/, "");
|
|
8285
|
+
const m = h.length === 3 ? h.split("").map((c) => c + c).join("") : h;
|
|
8286
|
+
if (m.length !== 6) throw new Error("Bad hex");
|
|
8287
|
+
const int = parseInt(m, 16);
|
|
8288
|
+
return { r: int >> 16 & 255, g: int >> 8 & 255, b: int & 255 };
|
|
8289
|
+
}
|
|
8290
|
+
function srgbToLinear(u) {
|
|
8291
|
+
const x = u / 255;
|
|
8292
|
+
return x <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);
|
|
8293
|
+
}
|
|
8294
|
+
function rgbToHsl(r, g, b) {
|
|
8295
|
+
const R = r / 255, G = g / 255, B = b / 255;
|
|
8296
|
+
const max = Math.max(R, G, B), min = Math.min(R, G, B);
|
|
8297
|
+
const d = max - min;
|
|
8298
|
+
let h = 0;
|
|
8299
|
+
if (d !== 0) {
|
|
8300
|
+
switch (max) {
|
|
8301
|
+
case R:
|
|
8302
|
+
h = (G - B) / d + (G < B ? 6 : 0);
|
|
8303
|
+
break;
|
|
8304
|
+
case G:
|
|
8305
|
+
h = (B - R) / d + 2;
|
|
8306
|
+
break;
|
|
8307
|
+
case B:
|
|
8308
|
+
h = (R - G) / d + 4;
|
|
8309
|
+
break;
|
|
8310
|
+
}
|
|
8311
|
+
h *= 60;
|
|
8312
|
+
}
|
|
8313
|
+
const l = (max + min) / 2;
|
|
8314
|
+
const s = d === 0 ? 0 : d / (1 - Math.abs(2 * l - 1));
|
|
8315
|
+
return { h, s, l };
|
|
8316
|
+
}
|
|
8317
|
+
function srgbToOklab(r, g, b) {
|
|
8318
|
+
const R = srgbToLinear(r), G = srgbToLinear(g), B = srgbToLinear(b);
|
|
8319
|
+
const l = 0.4122214708 * R + 0.5363325363 * G + 0.0514459929 * B;
|
|
8320
|
+
const m = 0.2119034982 * R + 0.6806995451 * G + 0.1073969566 * B;
|
|
8321
|
+
const s = 0.0883024619 * R + 0.2817188376 * G + 0.6299787005 * B;
|
|
8322
|
+
const l_ = Math.cbrt(l), m_ = Math.cbrt(m), s_ = Math.cbrt(s);
|
|
8323
|
+
const L = 0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_;
|
|
8324
|
+
const a = 1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_;
|
|
8325
|
+
const b2 = 0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_;
|
|
8326
|
+
return { L, a, b: b2 };
|
|
8327
|
+
}
|
|
8328
|
+
function oklabToOklch(L, a, b) {
|
|
8329
|
+
const C = Math.sqrt(a * a + b * b);
|
|
8330
|
+
const h = C < 1e-7 ? 0 : deg(Math.atan2(b, a) * 180 / Math.PI);
|
|
8331
|
+
return { L, C, h };
|
|
8332
|
+
}
|
|
8333
|
+
function featuresFromHex(hex) {
|
|
8334
|
+
const { r, g, b } = hexToRgb(hex);
|
|
8335
|
+
const { h, s, l } = rgbToHsl(r, g, b);
|
|
8336
|
+
const { L, a, b: b2 } = srgbToOklab(r, g, b);
|
|
8337
|
+
const { L: okL, C: okC, h: okH } = oklabToOklch(L, a, b2);
|
|
8338
|
+
const max = Math.max(r, g, b);
|
|
8339
|
+
const v = max / 255;
|
|
8340
|
+
const Y = 0.2126 * srgbToLinear(r) + 0.7152 * srgbToLinear(g) + 0.0722 * srgbToLinear(b);
|
|
8341
|
+
const chroma = s;
|
|
8342
|
+
return { r, g, b, h, s, l, v, Y, chroma, okL, okC, okH, hex };
|
|
8343
|
+
}
|
|
8344
|
+
|
|
8203
8345
|
// ../theme-core/src/site-styles/appearancePresetResolution.ts
|
|
8204
8346
|
function assertValidOptionGroups(preset2) {
|
|
8205
8347
|
preset2.optionGroups?.forEach((group) => {
|
|
@@ -11729,6 +11871,9 @@ var curatedSiteStyleIdValues = [
|
|
|
11729
11871
|
"site-style:bright-community",
|
|
11730
11872
|
"site-style:quiet-luxury",
|
|
11731
11873
|
"site-style:practical-services",
|
|
11874
|
+
"site-style:quiet-practice",
|
|
11875
|
+
"site-style:personal-retreat-journal",
|
|
11876
|
+
"site-style:tactile-workshop",
|
|
11732
11877
|
"site-style:modern-wellness",
|
|
11733
11878
|
"site-style:bold-launch",
|
|
11734
11879
|
"site-style:south-west-twerk-school"
|
|
@@ -11811,7 +11956,8 @@ function defineCuratedSiteStyle(input) {
|
|
|
11811
11956
|
name: input.name,
|
|
11812
11957
|
description: input.description,
|
|
11813
11958
|
generationBrief: input.generationBrief,
|
|
11814
|
-
|
|
11959
|
+
selectionKeywordRules: input.selectionKeywordRules ?? [],
|
|
11960
|
+
siteCreatorSelection: input.siteCreatorSelection ?? { kind: "explicit_only" },
|
|
11815
11961
|
template: {
|
|
11816
11962
|
id: asDesignSystemTemplateId(`template:${input.id.replace("site-style:", "")}`),
|
|
11817
11963
|
name: input.name,
|
|
@@ -11955,12 +12101,13 @@ var curatedSiteStyles = [
|
|
|
11955
12101
|
name: "Quiet Luxury",
|
|
11956
12102
|
description: "Minimal, confident, and refined for premium experiences and private services.",
|
|
11957
12103
|
generationBrief: "Use fewer claims, more specificity, and restrained sensory detail. Favor elegant media and low repetition over dense panels.",
|
|
11958
|
-
|
|
11959
|
-
|
|
11960
|
-
"
|
|
11961
|
-
"
|
|
11962
|
-
"
|
|
11963
|
-
"
|
|
12104
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 20 },
|
|
12105
|
+
selectionKeywordRules: [
|
|
12106
|
+
{ kind: "word", value: "luxury" },
|
|
12107
|
+
{ kind: "word", value: "premium" },
|
|
12108
|
+
{ kind: "word", value: "boutique" },
|
|
12109
|
+
{ kind: "word", value: "bespoke" },
|
|
12110
|
+
{ kind: "word", value: "exclusive" }
|
|
11964
12111
|
],
|
|
11965
12112
|
tokenRecipes: {
|
|
11966
12113
|
palette: "high-contrast",
|
|
@@ -11989,13 +12136,14 @@ var curatedSiteStyles = [
|
|
|
11989
12136
|
name: "Practical Services",
|
|
11990
12137
|
description: "Efficient, plainspoken, and conversion-focused for trades and everyday services.",
|
|
11991
12138
|
generationBrief: "Make services, location, trust signals, and contact paths obvious. Keep copy brief and avoid ornate visual treatments.",
|
|
11992
|
-
|
|
11993
|
-
|
|
11994
|
-
"
|
|
11995
|
-
"
|
|
11996
|
-
"
|
|
11997
|
-
"
|
|
11998
|
-
"
|
|
12139
|
+
siteCreatorSelection: { kind: "primary_goal_support" },
|
|
12140
|
+
selectionKeywordRules: [
|
|
12141
|
+
{ kind: "word", value: "repair" },
|
|
12142
|
+
{ kind: "substring", value: "plumb" },
|
|
12143
|
+
{ kind: "substring", value: "electric" },
|
|
12144
|
+
{ kind: "word", value: "cleaning" },
|
|
12145
|
+
{ kind: "substring", value: "landscap" },
|
|
12146
|
+
{ kind: "substring", value: "contractor" }
|
|
11999
12147
|
],
|
|
12000
12148
|
tokenRecipes: {
|
|
12001
12149
|
palette: "brand-led",
|
|
@@ -12046,18 +12194,134 @@ var curatedSiteStyles = [
|
|
|
12046
12194
|
paletteChoice("warm-neutral-forest")
|
|
12047
12195
|
]
|
|
12048
12196
|
}),
|
|
12197
|
+
defineCuratedSiteStyle({
|
|
12198
|
+
id: "site-style:quiet-practice",
|
|
12199
|
+
name: "Quiet Practice",
|
|
12200
|
+
description: "Grounded, calm, and practical for small appointment-first practices.",
|
|
12201
|
+
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.",
|
|
12202
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 30 },
|
|
12203
|
+
selectionKeywordRules: [
|
|
12204
|
+
{ kind: "substring", value: "massage" },
|
|
12205
|
+
{ kind: "word", value: "bodywork" },
|
|
12206
|
+
{ kind: "phrase", value: "appointment practice" },
|
|
12207
|
+
{ kind: "phrase", value: "appointment-first" },
|
|
12208
|
+
{ kind: "substring", value: "practitioner" },
|
|
12209
|
+
{ kind: "substring", value: "therap" },
|
|
12210
|
+
{ kind: "substring", value: "clinic" },
|
|
12211
|
+
{ kind: "phrase", value: "wellness practice" }
|
|
12212
|
+
],
|
|
12213
|
+
tokenRecipes: {
|
|
12214
|
+
palette: "soft-natural",
|
|
12215
|
+
contrast: "standard",
|
|
12216
|
+
radius: "soft",
|
|
12217
|
+
shadow: "subtle",
|
|
12218
|
+
typography: "clean-sans",
|
|
12219
|
+
spacing: "regular",
|
|
12220
|
+
motion: "subtle"
|
|
12221
|
+
},
|
|
12222
|
+
compositionBudget: quietBudget,
|
|
12223
|
+
recommendedHeaderLookIds: ["practical-utility", "clean-base", "centered-calm"],
|
|
12224
|
+
buttonPersonalityChoices: [
|
|
12225
|
+
buttonChoice("pebble"),
|
|
12226
|
+
buttonChoice("soft-pill"),
|
|
12227
|
+
buttonChoice("editorial-link")
|
|
12228
|
+
],
|
|
12229
|
+
paletteVariantChoices: [
|
|
12230
|
+
paletteChoice("soft-natural-stone"),
|
|
12231
|
+
paletteChoice("soft-natural-sage"),
|
|
12232
|
+
paletteChoice("warm-neutral-clay")
|
|
12233
|
+
]
|
|
12234
|
+
}),
|
|
12235
|
+
defineCuratedSiteStyle({
|
|
12236
|
+
id: "site-style:personal-retreat-journal",
|
|
12237
|
+
name: "Personal Retreat Journal",
|
|
12238
|
+
description: "Warm, story-led, and readable for solo practitioners with mixed offers.",
|
|
12239
|
+
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.",
|
|
12240
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 40 },
|
|
12241
|
+
selectionKeywordRules: [
|
|
12242
|
+
{ kind: "substring", value: "retreat" },
|
|
12243
|
+
{ kind: "phrase", value: "solo practitioner" },
|
|
12244
|
+
{ kind: "phrase", value: "personal brand" },
|
|
12245
|
+
{ kind: "substring", value: "teacher" },
|
|
12246
|
+
{ kind: "substring", value: "coach" },
|
|
12247
|
+
{ kind: "phrase", value: "retreat resources" },
|
|
12248
|
+
{ kind: "substring", value: "journal" }
|
|
12249
|
+
],
|
|
12250
|
+
tokenRecipes: {
|
|
12251
|
+
palette: "warm-neutral",
|
|
12252
|
+
contrast: "standard",
|
|
12253
|
+
radius: "soft",
|
|
12254
|
+
shadow: "subtle",
|
|
12255
|
+
typography: "serif-editorial",
|
|
12256
|
+
spacing: "airy",
|
|
12257
|
+
motion: "subtle"
|
|
12258
|
+
},
|
|
12259
|
+
compositionBudget: balancedBudget,
|
|
12260
|
+
recommendedHeaderLookIds: ["editorial-line", "centered-calm", "minimal-transparent"],
|
|
12261
|
+
buttonPersonalityChoices: [
|
|
12262
|
+
buttonChoice("editorial-link"),
|
|
12263
|
+
buttonChoice("soft-pill"),
|
|
12264
|
+
buttonChoice("brushed-wash")
|
|
12265
|
+
],
|
|
12266
|
+
paletteVariantChoices: [
|
|
12267
|
+
paletteChoice("warm-neutral-forest"),
|
|
12268
|
+
paletteChoice("warm-neutral-clay"),
|
|
12269
|
+
paletteChoice("soft-natural-stone")
|
|
12270
|
+
]
|
|
12271
|
+
}),
|
|
12272
|
+
defineCuratedSiteStyle({
|
|
12273
|
+
id: "site-style:tactile-workshop",
|
|
12274
|
+
name: "Tactile Workshop",
|
|
12275
|
+
description: "Bright, hands-on, and image-led for maker studios, workshops, and creative classes.",
|
|
12276
|
+
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.",
|
|
12277
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 50 },
|
|
12278
|
+
selectionKeywordRules: [
|
|
12279
|
+
{ kind: "substring", value: "ceramic" },
|
|
12280
|
+
{ kind: "word", value: "pottery" },
|
|
12281
|
+
{ kind: "phrase", value: "maker studio" },
|
|
12282
|
+
{ kind: "phrase", value: "craft class" },
|
|
12283
|
+
{ kind: "phrase", value: "craft workshop" },
|
|
12284
|
+
{ kind: "word", value: "clay" },
|
|
12285
|
+
{ kind: "word", value: "kiln" }
|
|
12286
|
+
],
|
|
12287
|
+
tokenRecipes: {
|
|
12288
|
+
palette: "brand-led",
|
|
12289
|
+
contrast: "standard",
|
|
12290
|
+
radius: "soft",
|
|
12291
|
+
shadow: "subtle",
|
|
12292
|
+
typography: "friendly-sans",
|
|
12293
|
+
spacing: "regular",
|
|
12294
|
+
motion: "subtle"
|
|
12295
|
+
},
|
|
12296
|
+
compositionBudget: balancedBudget,
|
|
12297
|
+
recommendedHeaderLookIds: ["brand-solid", "practical-utility", "clean-base"],
|
|
12298
|
+
recommendedFooterLookIds: ["site-footer-brand-two-band", "footer-muted-grounding"],
|
|
12299
|
+
buttonPersonalityChoices: [
|
|
12300
|
+
buttonChoice("pebble"),
|
|
12301
|
+
buttonChoice("confident-chip"),
|
|
12302
|
+
buttonChoice("ink-stamp"),
|
|
12303
|
+
buttonChoice("editorial-link")
|
|
12304
|
+
],
|
|
12305
|
+
paletteVariantChoices: [
|
|
12306
|
+
paletteChoice("brand-led-warm"),
|
|
12307
|
+
paletteChoice("brand-led-cool"),
|
|
12308
|
+
paletteChoice("soft-natural-watercolor"),
|
|
12309
|
+
paletteChoice("warm-neutral-clay")
|
|
12310
|
+
]
|
|
12311
|
+
}),
|
|
12049
12312
|
defineCuratedSiteStyle({
|
|
12050
12313
|
id: "site-style:bold-launch",
|
|
12051
12314
|
name: "Bold Launch",
|
|
12052
12315
|
description: "High-energy and punchy for launches, campaigns, and creative offers.",
|
|
12053
12316
|
generationBrief: "Use crisp positioning, bold hero structure, strong calls to action, and confident visual rhythm. Keep it precise, not shouty.",
|
|
12054
|
-
|
|
12055
|
-
|
|
12056
|
-
"
|
|
12057
|
-
"
|
|
12058
|
-
"
|
|
12059
|
-
"
|
|
12060
|
-
"
|
|
12317
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 10 },
|
|
12318
|
+
selectionKeywordRules: [
|
|
12319
|
+
{ kind: "substring", value: "launch" },
|
|
12320
|
+
{ kind: "substring", value: "campaign" },
|
|
12321
|
+
{ kind: "word", value: "preorder" },
|
|
12322
|
+
{ kind: "phrase", value: "pre-order" },
|
|
12323
|
+
{ kind: "substring", value: "waitlist" },
|
|
12324
|
+
{ kind: "word", value: "drop" }
|
|
12061
12325
|
],
|
|
12062
12326
|
tokenRecipes: {
|
|
12063
12327
|
palette: "high-contrast",
|
|
@@ -12088,15 +12352,6 @@ var curatedSiteStyles = [
|
|
|
12088
12352
|
name: "South West Twerk School",
|
|
12089
12353
|
description: "Energetic, editorial, and high-contrast for a branded dance school presence.",
|
|
12090
12354
|
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.",
|
|
12091
|
-
selectionKeywords: [
|
|
12092
|
-
"dance",
|
|
12093
|
-
"classes",
|
|
12094
|
-
"workshop",
|
|
12095
|
-
"school",
|
|
12096
|
-
"movement",
|
|
12097
|
-
"performance",
|
|
12098
|
-
"community"
|
|
12099
|
-
],
|
|
12100
12355
|
tokenRecipes: {
|
|
12101
12356
|
palette: "brand-led",
|
|
12102
12357
|
contrast: "maximum",
|
|
@@ -12403,25 +12658,19 @@ var defaultDesignRuntimeRules = defineDesignRuntimeRules({
|
|
|
12403
12658
|
"muted-band": {
|
|
12404
12659
|
background: {
|
|
12405
12660
|
type: "color",
|
|
12406
|
-
color: "muted"
|
|
12407
|
-
textColor: "text",
|
|
12408
|
-
headingColor: "text"
|
|
12661
|
+
color: "muted"
|
|
12409
12662
|
}
|
|
12410
12663
|
},
|
|
12411
12664
|
"accent-band": {
|
|
12412
12665
|
background: {
|
|
12413
12666
|
type: "color",
|
|
12414
|
-
color: "primary"
|
|
12415
|
-
textColor: "primaryForeground",
|
|
12416
|
-
headingColor: "primaryForeground"
|
|
12667
|
+
color: "primary"
|
|
12417
12668
|
}
|
|
12418
12669
|
},
|
|
12419
12670
|
"brand-depth-band": {
|
|
12420
12671
|
background: {
|
|
12421
12672
|
type: "color",
|
|
12422
|
-
color: "primary-800"
|
|
12423
|
-
textColor: "primaryForeground",
|
|
12424
|
-
headingColor: "primaryForeground"
|
|
12673
|
+
color: "primary-800"
|
|
12425
12674
|
}
|
|
12426
12675
|
},
|
|
12427
12676
|
"hero-image": {
|
|
@@ -18518,6 +18767,16 @@ var jsonArrayTransform = {
|
|
|
18518
18767
|
return "";
|
|
18519
18768
|
}
|
|
18520
18769
|
};
|
|
18770
|
+
var csvTransform = {
|
|
18771
|
+
id: "value.csv",
|
|
18772
|
+
kind: "formatter",
|
|
18773
|
+
summary: "Normalize a string or array of strings into a comma-separated list",
|
|
18774
|
+
run: (value) => {
|
|
18775
|
+
const rawValues = Array.isArray(value) ? value : typeof value === "string" ? value.split(",") : [];
|
|
18776
|
+
const normalized = rawValues.filter((item) => typeof item === "string").map((item) => item.trim()).filter(Boolean);
|
|
18777
|
+
return normalized.length > 0 ? Array.from(new Set(normalized)).join(",") : "";
|
|
18778
|
+
}
|
|
18779
|
+
};
|
|
18521
18780
|
var marqueeLoopOptionsSchema = z36.object({
|
|
18522
18781
|
minItems: z36.number().int().min(1).default(10)
|
|
18523
18782
|
});
|
|
@@ -18543,6 +18802,7 @@ var formattingTransforms = [
|
|
|
18543
18802
|
dateFormatShort,
|
|
18544
18803
|
arrayLengthTransform,
|
|
18545
18804
|
jsonArrayTransform,
|
|
18805
|
+
csvTransform,
|
|
18546
18806
|
marqueeLoopTransform
|
|
18547
18807
|
];
|
|
18548
18808
|
|
|
@@ -19026,73 +19286,6 @@ var uiTransforms = [
|
|
|
19026
19286
|
|
|
19027
19287
|
// ../blocks/src/system/transforms/registry/layout.ts
|
|
19028
19288
|
import { z as z38 } from "zod";
|
|
19029
|
-
|
|
19030
|
-
// ../theme-core/src/palette/utils/colorConversion.ts
|
|
19031
|
-
var mod = (a, n) => (a % n + n) % n;
|
|
19032
|
-
var deg = (x) => mod(x, 360);
|
|
19033
|
-
function hexToRgb(hex) {
|
|
19034
|
-
const h = hex.replace(/^#/, "");
|
|
19035
|
-
const m = h.length === 3 ? h.split("").map((c) => c + c).join("") : h;
|
|
19036
|
-
if (m.length !== 6) throw new Error("Bad hex");
|
|
19037
|
-
const int = parseInt(m, 16);
|
|
19038
|
-
return { r: int >> 16 & 255, g: int >> 8 & 255, b: int & 255 };
|
|
19039
|
-
}
|
|
19040
|
-
function srgbToLinear(u) {
|
|
19041
|
-
const x = u / 255;
|
|
19042
|
-
return x <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);
|
|
19043
|
-
}
|
|
19044
|
-
function rgbToHsl(r, g, b) {
|
|
19045
|
-
const R = r / 255, G = g / 255, B = b / 255;
|
|
19046
|
-
const max = Math.max(R, G, B), min = Math.min(R, G, B);
|
|
19047
|
-
const d = max - min;
|
|
19048
|
-
let h = 0;
|
|
19049
|
-
if (d !== 0) {
|
|
19050
|
-
switch (max) {
|
|
19051
|
-
case R:
|
|
19052
|
-
h = (G - B) / d + (G < B ? 6 : 0);
|
|
19053
|
-
break;
|
|
19054
|
-
case G:
|
|
19055
|
-
h = (B - R) / d + 2;
|
|
19056
|
-
break;
|
|
19057
|
-
case B:
|
|
19058
|
-
h = (R - G) / d + 4;
|
|
19059
|
-
break;
|
|
19060
|
-
}
|
|
19061
|
-
h *= 60;
|
|
19062
|
-
}
|
|
19063
|
-
const l = (max + min) / 2;
|
|
19064
|
-
const s = d === 0 ? 0 : d / (1 - Math.abs(2 * l - 1));
|
|
19065
|
-
return { h, s, l };
|
|
19066
|
-
}
|
|
19067
|
-
function srgbToOklab(r, g, b) {
|
|
19068
|
-
const R = srgbToLinear(r), G = srgbToLinear(g), B = srgbToLinear(b);
|
|
19069
|
-
const l = 0.4122214708 * R + 0.5363325363 * G + 0.0514459929 * B;
|
|
19070
|
-
const m = 0.2119034982 * R + 0.6806995451 * G + 0.1073969566 * B;
|
|
19071
|
-
const s = 0.0883024619 * R + 0.2817188376 * G + 0.6299787005 * B;
|
|
19072
|
-
const l_ = Math.cbrt(l), m_ = Math.cbrt(m), s_ = Math.cbrt(s);
|
|
19073
|
-
const L = 0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_;
|
|
19074
|
-
const a = 1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_;
|
|
19075
|
-
const b2 = 0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_;
|
|
19076
|
-
return { L, a, b: b2 };
|
|
19077
|
-
}
|
|
19078
|
-
function oklabToOklch(L, a, b) {
|
|
19079
|
-
const C = Math.sqrt(a * a + b * b);
|
|
19080
|
-
const h = C < 1e-7 ? 0 : deg(Math.atan2(b, a) * 180 / Math.PI);
|
|
19081
|
-
return { L, C, h };
|
|
19082
|
-
}
|
|
19083
|
-
function featuresFromHex(hex) {
|
|
19084
|
-
const { r, g, b } = hexToRgb(hex);
|
|
19085
|
-
const { h, s, l } = rgbToHsl(r, g, b);
|
|
19086
|
-
const { L, a, b: b2 } = srgbToOklab(r, g, b);
|
|
19087
|
-
const { L: okL, C: okC, h: okH } = oklabToOklch(L, a, b2);
|
|
19088
|
-
const max = Math.max(r, g, b);
|
|
19089
|
-
const v = max / 255;
|
|
19090
|
-
const Y = 0.2126 * srgbToLinear(r) + 0.7152 * srgbToLinear(g) + 0.0722 * srgbToLinear(b);
|
|
19091
|
-
const chroma = s;
|
|
19092
|
-
return { r, g, b, h, s, l, v, Y, chroma, okL, okC, okH, hex };
|
|
19093
|
-
}
|
|
19094
|
-
|
|
19095
|
-
// ../blocks/src/system/transforms/registry/layout.ts
|
|
19096
19289
|
var joinClasses4 = (parts) => parts.filter(
|
|
19097
19290
|
(part) => typeof part === "string" && part.trim().length > 0
|
|
19098
19291
|
).join(" ").replace(/\s+/g, " ").trim();
|
|
@@ -23773,7 +23966,12 @@ var eventListingBlockDefinition = {
|
|
|
23773
23966
|
detailLevel: "listing",
|
|
23774
23967
|
kind: { $bind: { from: "content.kind" } },
|
|
23775
23968
|
eventSurface: { $bind: { from: "content.eventSurface" } },
|
|
23776
|
-
eventPresets: {
|
|
23969
|
+
eventPresets: {
|
|
23970
|
+
$bind: {
|
|
23971
|
+
from: "content.filterEventPresets",
|
|
23972
|
+
transforms: [{ id: "value.csv" }]
|
|
23973
|
+
}
|
|
23974
|
+
},
|
|
23777
23975
|
scheduleScope: { $bind: { from: "content.scheduleScope" } }
|
|
23778
23976
|
},
|
|
23779
23977
|
mode: "server"
|
|
@@ -24525,7 +24723,12 @@ var eventCalendarBlockDefinition = {
|
|
|
24525
24723
|
// Pass filter params if configured
|
|
24526
24724
|
kind: { $bind: { from: "content.kind" } },
|
|
24527
24725
|
eventSurface: { $bind: { from: "content.eventSurface" } },
|
|
24528
|
-
eventPresets: {
|
|
24726
|
+
eventPresets: {
|
|
24727
|
+
$bind: {
|
|
24728
|
+
from: "content.filterEventPresets",
|
|
24729
|
+
transforms: [{ id: "value.csv" }]
|
|
24730
|
+
}
|
|
24731
|
+
},
|
|
24529
24732
|
scheduleScope: { $bind: { from: "content.scheduleScope" } },
|
|
24530
24733
|
categoryIds: { $bind: { from: "content.filterCategoryIds" } },
|
|
24531
24734
|
staffMemberId: { $bind: { from: "content.filterStaffMemberId" } },
|
|
@@ -30120,8 +30323,7 @@ var dashboardNavVisibilityBaseSchema2 = z66.object({
|
|
|
30120
30323
|
var dashboardNavVisibilityRolesSchema2 = z66.object({
|
|
30121
30324
|
administrator: dashboardNavVisibilityBaseSchema2.optional(),
|
|
30122
30325
|
editor: dashboardNavVisibilityBaseSchema2.optional(),
|
|
30123
|
-
team_member: dashboardNavVisibilityBaseSchema2.optional()
|
|
30124
|
-
event_host: dashboardNavVisibilityBaseSchema2.optional()
|
|
30326
|
+
team_member: dashboardNavVisibilityBaseSchema2.optional()
|
|
30125
30327
|
}).strip().optional();
|
|
30126
30328
|
var dashboardNavVisibilitySchema2 = dashboardNavVisibilityBaseSchema2.extend({
|
|
30127
30329
|
roles: dashboardNavVisibilityRolesSchema2
|