@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
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
// src/config/validation.ts
|
|
2
2
|
import { z as z68 } from "zod";
|
|
3
3
|
|
|
4
|
+
// ../api/src/apiEndpointTypes.ts
|
|
5
|
+
function blockedDemoMutationPolicy(classification, publicMessage) {
|
|
6
|
+
if (publicMessage.trim() === "") {
|
|
7
|
+
throw new Error(`Demo mutation policy ${classification} requires publicMessage.`);
|
|
8
|
+
}
|
|
9
|
+
return {
|
|
10
|
+
classification,
|
|
11
|
+
publicMessage
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
|
|
4
15
|
// ../api/src/cache-tags.ts
|
|
5
16
|
var TAG_TEMPLATES = {
|
|
6
17
|
siteCollection: "riverbank:site",
|
|
@@ -31,6 +42,18 @@ var TAG_TEMPLATES = {
|
|
|
31
42
|
};
|
|
32
43
|
|
|
33
44
|
// ../api/src/endpoints.ts
|
|
45
|
+
var DEMO_MUTATION_BLOCKED_HIDDEN = blockedDemoMutationPolicy(
|
|
46
|
+
"blocked-hidden",
|
|
47
|
+
"This action is not available in demo sites."
|
|
48
|
+
);
|
|
49
|
+
var DEMO_MUTATION_BLOCKED_DISABLED = blockedDemoMutationPolicy(
|
|
50
|
+
"blocked-disabled",
|
|
51
|
+
"This setting is disabled in demo sites."
|
|
52
|
+
);
|
|
53
|
+
var DEMO_MUTATION_INTERNAL_ONLY = blockedDemoMutationPolicy(
|
|
54
|
+
"internal-only",
|
|
55
|
+
"This internal operation is not available in demo sites."
|
|
56
|
+
);
|
|
34
57
|
var ENDPOINT_DEFINITIONS = {
|
|
35
58
|
// AI endpoints - no cache due to dynamic nature
|
|
36
59
|
aiContentUpdateChat: {
|
|
@@ -147,7 +170,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
147
170
|
path: "/sites/{siteId}/ai/generate",
|
|
148
171
|
method: "POST",
|
|
149
172
|
auth: "user",
|
|
150
|
-
responseKind: "json"
|
|
173
|
+
responseKind: "json",
|
|
174
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
151
175
|
},
|
|
152
176
|
getOnboardingPreviewStatus: {
|
|
153
177
|
path: "/public/sites/{siteId}/onboarding/preview-status",
|
|
@@ -168,7 +192,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
168
192
|
method: "POST",
|
|
169
193
|
auth: "user",
|
|
170
194
|
errors: [],
|
|
171
|
-
responseKind: "json"
|
|
195
|
+
responseKind: "json",
|
|
196
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED
|
|
172
197
|
},
|
|
173
198
|
goLiveSite: {
|
|
174
199
|
path: "/sites/{siteId}/launch/go-live",
|
|
@@ -237,20 +262,23 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
237
262
|
path: "/sites/{siteId}/ai/site-wizard/goals",
|
|
238
263
|
method: "POST",
|
|
239
264
|
auth: "user",
|
|
240
|
-
responseKind: "json"
|
|
265
|
+
responseKind: "json",
|
|
266
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
241
267
|
},
|
|
242
268
|
aiSiteWizardIntakeTriage: {
|
|
243
269
|
path: "/sites/{siteId}/ai/site-wizard/intake-triage",
|
|
244
270
|
method: "POST",
|
|
245
271
|
auth: "user",
|
|
246
|
-
responseKind: "json"
|
|
272
|
+
responseKind: "json",
|
|
273
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
247
274
|
},
|
|
248
275
|
aiSiteWizardTelemetry: {
|
|
249
276
|
path: "/sites/{siteId}/ai/site-wizard/telemetry",
|
|
250
277
|
method: "POST",
|
|
251
278
|
auth: "user",
|
|
252
279
|
errors: [],
|
|
253
|
-
responseKind: "json"
|
|
280
|
+
responseKind: "json",
|
|
281
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
254
282
|
},
|
|
255
283
|
// Admin SEO
|
|
256
284
|
listGscPropertiesAdmin: {
|
|
@@ -457,7 +485,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
457
485
|
responseKind: "json",
|
|
458
486
|
errors: ["resource:not_found", "server:internal_error"]
|
|
459
487
|
},
|
|
460
|
-
// Ops (event
|
|
488
|
+
// Ops (staff event operators/admins)
|
|
461
489
|
opsListUpcomingEventOccurrences: {
|
|
462
490
|
path: "/ops/sites/{siteId}/events",
|
|
463
491
|
method: "GET",
|
|
@@ -475,6 +503,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
475
503
|
method: "POST",
|
|
476
504
|
auth: "user",
|
|
477
505
|
responseKind: "json",
|
|
506
|
+
demoMutation: DEMO_MUTATION_INTERNAL_ONLY,
|
|
478
507
|
errors: [
|
|
479
508
|
"validation:invalid_input",
|
|
480
509
|
"auth:forbidden",
|
|
@@ -487,6 +516,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
487
516
|
method: "POST",
|
|
488
517
|
auth: "user",
|
|
489
518
|
responseKind: "json",
|
|
519
|
+
demoMutation: DEMO_MUTATION_INTERNAL_ONLY,
|
|
490
520
|
errors: [
|
|
491
521
|
"validation:invalid_input",
|
|
492
522
|
"auth:forbidden",
|
|
@@ -505,6 +535,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
505
535
|
method: "POST",
|
|
506
536
|
auth: "user",
|
|
507
537
|
responseKind: "json",
|
|
538
|
+
demoMutation: DEMO_MUTATION_INTERNAL_ONLY,
|
|
508
539
|
errors: [
|
|
509
540
|
"validation:invalid_input",
|
|
510
541
|
"auth:forbidden",
|
|
@@ -538,6 +569,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
538
569
|
method: "POST",
|
|
539
570
|
auth: "user",
|
|
540
571
|
responseKind: "json",
|
|
572
|
+
demoMutation: DEMO_MUTATION_INTERNAL_ONLY,
|
|
541
573
|
errors: [
|
|
542
574
|
"validation:invalid_input",
|
|
543
575
|
"auth:forbidden",
|
|
@@ -566,7 +598,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
566
598
|
method: "POST",
|
|
567
599
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings],
|
|
568
600
|
auth: "user",
|
|
569
|
-
responseKind: "json"
|
|
601
|
+
responseKind: "json",
|
|
602
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
570
603
|
},
|
|
571
604
|
previewEmailTemplate: {
|
|
572
605
|
path: "/sites/{siteId}/settings/emails/preview",
|
|
@@ -617,14 +650,16 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
617
650
|
method: "POST",
|
|
618
651
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
619
652
|
auth: "user",
|
|
620
|
-
responseKind: "json"
|
|
653
|
+
responseKind: "json",
|
|
654
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
621
655
|
},
|
|
622
656
|
createNewsletterSubscribersImportUploadUrl: {
|
|
623
657
|
path: "/sites/{siteId}/newsletter/subscribers/import-url",
|
|
624
658
|
method: "POST",
|
|
625
659
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
626
660
|
auth: "user",
|
|
627
|
-
responseKind: "json"
|
|
661
|
+
responseKind: "json",
|
|
662
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
628
663
|
},
|
|
629
664
|
exportNewsletterSubscribersCsv: {
|
|
630
665
|
path: "/sites/{siteId}/newsletter/subscribers/export.csv",
|
|
@@ -821,14 +856,16 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
821
856
|
method: "POST",
|
|
822
857
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
823
858
|
auth: "user",
|
|
824
|
-
responseKind: "json"
|
|
859
|
+
responseKind: "json",
|
|
860
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
825
861
|
},
|
|
826
862
|
testSendNewsletterCampaign: {
|
|
827
863
|
path: "/sites/{siteId}/newsletter/campaigns/{campaignId}/test-send",
|
|
828
864
|
method: "POST",
|
|
829
865
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
830
866
|
auth: "user",
|
|
831
|
-
responseKind: "json"
|
|
867
|
+
responseKind: "json",
|
|
868
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
832
869
|
},
|
|
833
870
|
listNewsletterSendJobs: {
|
|
834
871
|
path: "/sites/{siteId}/newsletter/jobs",
|
|
@@ -876,6 +913,20 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
876
913
|
responseKind: "json",
|
|
877
914
|
errors: ["validation:invalid_input", "billing:plan_limit_exceeded", "server:internal_error"]
|
|
878
915
|
},
|
|
916
|
+
createAppointmentResourceWithAccountAccess: {
|
|
917
|
+
path: "/sites/{siteId}/bookings/resources/account-access",
|
|
918
|
+
method: "POST",
|
|
919
|
+
auth: "user",
|
|
920
|
+
responseKind: "json",
|
|
921
|
+
errors: [
|
|
922
|
+
"validation:invalid_input",
|
|
923
|
+
"auth:forbidden",
|
|
924
|
+
"billing:plan_limit_exceeded",
|
|
925
|
+
"resource:conflict",
|
|
926
|
+
"resource:not_found",
|
|
927
|
+
"server:internal_error"
|
|
928
|
+
]
|
|
929
|
+
},
|
|
879
930
|
getAppointmentResource: {
|
|
880
931
|
path: "/sites/{siteId}/bookings/resources/{resourceId}",
|
|
881
932
|
method: "GET",
|
|
@@ -1516,7 +1567,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
1516
1567
|
method: "DELETE",
|
|
1517
1568
|
tags: ["site", "site-{siteId}"],
|
|
1518
1569
|
auth: "user",
|
|
1519
|
-
responseKind: "json"
|
|
1570
|
+
responseKind: "json",
|
|
1571
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
1520
1572
|
},
|
|
1521
1573
|
listSiteMembers: {
|
|
1522
1574
|
path: "/sites/{siteId}/members",
|
|
@@ -1972,7 +2024,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
1972
2024
|
method: "POST",
|
|
1973
2025
|
tags: ["site-{siteId}", "content-{siteId}-{type}"],
|
|
1974
2026
|
auth: "user",
|
|
1975
|
-
responseKind: "json"
|
|
2027
|
+
responseKind: "json",
|
|
2028
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
1976
2029
|
},
|
|
1977
2030
|
updateSiteGeneralSettings: {
|
|
1978
2031
|
path: "/sites/{siteId}/settings/general",
|
|
@@ -4211,6 +4264,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4211
4264
|
method: "POST",
|
|
4212
4265
|
tags: ["site-{siteId}"],
|
|
4213
4266
|
auth: "user",
|
|
4267
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN,
|
|
4214
4268
|
errors: [
|
|
4215
4269
|
"validation:invalid_input",
|
|
4216
4270
|
"auth:forbidden",
|
|
@@ -4225,6 +4279,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4225
4279
|
method: "POST",
|
|
4226
4280
|
tags: ["site-{siteId}"],
|
|
4227
4281
|
auth: "user",
|
|
4282
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN,
|
|
4228
4283
|
errors: [
|
|
4229
4284
|
"validation:invalid_input",
|
|
4230
4285
|
"auth:forbidden",
|
|
@@ -4534,6 +4589,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4534
4589
|
tags: ["site-{siteId}", "passes-{siteId}"],
|
|
4535
4590
|
auth: "user",
|
|
4536
4591
|
responseKind: "json",
|
|
4592
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4537
4593
|
errors: ["validation:invalid_input", "server:internal_error"]
|
|
4538
4594
|
},
|
|
4539
4595
|
getBookingPass: {
|
|
@@ -4549,6 +4605,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4549
4605
|
tags: ["site-{siteId}", "passes-{siteId}"],
|
|
4550
4606
|
auth: "user",
|
|
4551
4607
|
responseKind: "json",
|
|
4608
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4552
4609
|
errors: [
|
|
4553
4610
|
"validation:invalid_input",
|
|
4554
4611
|
"resource:not_found",
|
|
@@ -4561,6 +4618,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4561
4618
|
tags: ["site-{siteId}", "passes-{siteId}"],
|
|
4562
4619
|
auth: "user",
|
|
4563
4620
|
responseKind: "json",
|
|
4621
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4564
4622
|
errors: [
|
|
4565
4623
|
"validation:invalid_input",
|
|
4566
4624
|
"resource:not_found",
|
|
@@ -4616,6 +4674,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4616
4674
|
tags: ["site-{siteId}", "memberships-{siteId}"],
|
|
4617
4675
|
auth: "user",
|
|
4618
4676
|
responseKind: "json",
|
|
4677
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4619
4678
|
errors: ["validation:invalid_input", "server:internal_error"]
|
|
4620
4679
|
},
|
|
4621
4680
|
getBookingMembership: {
|
|
@@ -4631,6 +4690,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4631
4690
|
tags: ["site-{siteId}", "memberships-{siteId}"],
|
|
4632
4691
|
auth: "user",
|
|
4633
4692
|
responseKind: "json",
|
|
4693
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4634
4694
|
errors: [
|
|
4635
4695
|
"validation:invalid_input",
|
|
4636
4696
|
"resource:not_found",
|
|
@@ -4643,6 +4703,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4643
4703
|
tags: ["site-{siteId}", "memberships-{siteId}"],
|
|
4644
4704
|
auth: "user",
|
|
4645
4705
|
responseKind: "json",
|
|
4706
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4646
4707
|
errors: [
|
|
4647
4708
|
"validation:invalid_input",
|
|
4648
4709
|
"resource:not_found",
|
|
@@ -4859,6 +4920,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4859
4920
|
tags: ["site-{siteId}", "customers-{siteId}"],
|
|
4860
4921
|
auth: "user",
|
|
4861
4922
|
responseKind: "json",
|
|
4923
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4862
4924
|
errors: [
|
|
4863
4925
|
"validation:invalid_input",
|
|
4864
4926
|
"auth:forbidden",
|
|
@@ -6447,6 +6509,7 @@ var ALLOWED_TRANSFORM_IDS = [
|
|
|
6447
6509
|
"date.formatShort",
|
|
6448
6510
|
"array.length",
|
|
6449
6511
|
"value.jsonArray",
|
|
6512
|
+
"value.csv",
|
|
6450
6513
|
"array.marqueeLoop",
|
|
6451
6514
|
// Layout (layout.ts)
|
|
6452
6515
|
"layout.maxWidthClass",
|
|
@@ -7216,8 +7279,7 @@ var dashboardNavVisibilityBaseSchema = z5.object({
|
|
|
7216
7279
|
var dashboardNavVisibilityRolesSchema = z5.object({
|
|
7217
7280
|
administrator: dashboardNavVisibilityBaseSchema.optional(),
|
|
7218
7281
|
editor: dashboardNavVisibilityBaseSchema.optional(),
|
|
7219
|
-
team_member: dashboardNavVisibilityBaseSchema.optional()
|
|
7220
|
-
event_host: dashboardNavVisibilityBaseSchema.optional()
|
|
7282
|
+
team_member: dashboardNavVisibilityBaseSchema.optional()
|
|
7221
7283
|
}).strip().optional();
|
|
7222
7284
|
var dashboardNavVisibilitySchema = dashboardNavVisibilityBaseSchema.extend({
|
|
7223
7285
|
roles: dashboardNavVisibilityRolesSchema
|
|
@@ -7738,6 +7800,21 @@ var appointmentSetupServiceDraftSchema = z7.object({
|
|
|
7738
7800
|
timezone: z7.string().trim().min(1).nullable(),
|
|
7739
7801
|
payment: appointmentSetupPaymentDraftSchema,
|
|
7740
7802
|
assignment: appointmentSetupServiceAssignmentDraftSchema
|
|
7803
|
+
}).superRefine((service, ctx) => {
|
|
7804
|
+
if (service.payment.priceType === "paid" && (service.priceAmount === null || service.priceAmount <= 0)) {
|
|
7805
|
+
ctx.addIssue({
|
|
7806
|
+
code: "custom",
|
|
7807
|
+
path: ["priceAmount"],
|
|
7808
|
+
message: "Paid appointment services need a positive price."
|
|
7809
|
+
});
|
|
7810
|
+
}
|
|
7811
|
+
if (service.payment.priceType === "free" && service.priceAmount !== null && service.priceAmount > 0) {
|
|
7812
|
+
ctx.addIssue({
|
|
7813
|
+
code: "custom",
|
|
7814
|
+
path: ["priceAmount"],
|
|
7815
|
+
message: "Free appointment services cannot carry a positive price."
|
|
7816
|
+
});
|
|
7817
|
+
}
|
|
7741
7818
|
});
|
|
7742
7819
|
var appointmentSetupPractitionerDraftSchema = z7.object({
|
|
7743
7820
|
ref: appointmentSetupRefSchema,
|
|
@@ -8155,6 +8232,71 @@ function registerManifest(manifest) {
|
|
|
8155
8232
|
return manifest;
|
|
8156
8233
|
}
|
|
8157
8234
|
|
|
8235
|
+
// ../theme-core/src/palette/utils/colorConversion.ts
|
|
8236
|
+
var mod = (a, n) => (a % n + n) % n;
|
|
8237
|
+
var deg = (x) => mod(x, 360);
|
|
8238
|
+
function hexToRgb(hex) {
|
|
8239
|
+
const h = hex.replace(/^#/, "");
|
|
8240
|
+
const m = h.length === 3 ? h.split("").map((c) => c + c).join("") : h;
|
|
8241
|
+
if (m.length !== 6) throw new Error("Bad hex");
|
|
8242
|
+
const int = parseInt(m, 16);
|
|
8243
|
+
return { r: int >> 16 & 255, g: int >> 8 & 255, b: int & 255 };
|
|
8244
|
+
}
|
|
8245
|
+
function srgbToLinear(u) {
|
|
8246
|
+
const x = u / 255;
|
|
8247
|
+
return x <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);
|
|
8248
|
+
}
|
|
8249
|
+
function rgbToHsl(r, g, b) {
|
|
8250
|
+
const R = r / 255, G = g / 255, B = b / 255;
|
|
8251
|
+
const max = Math.max(R, G, B), min = Math.min(R, G, B);
|
|
8252
|
+
const d = max - min;
|
|
8253
|
+
let h = 0;
|
|
8254
|
+
if (d !== 0) {
|
|
8255
|
+
switch (max) {
|
|
8256
|
+
case R:
|
|
8257
|
+
h = (G - B) / d + (G < B ? 6 : 0);
|
|
8258
|
+
break;
|
|
8259
|
+
case G:
|
|
8260
|
+
h = (B - R) / d + 2;
|
|
8261
|
+
break;
|
|
8262
|
+
case B:
|
|
8263
|
+
h = (R - G) / d + 4;
|
|
8264
|
+
break;
|
|
8265
|
+
}
|
|
8266
|
+
h *= 60;
|
|
8267
|
+
}
|
|
8268
|
+
const l = (max + min) / 2;
|
|
8269
|
+
const s = d === 0 ? 0 : d / (1 - Math.abs(2 * l - 1));
|
|
8270
|
+
return { h, s, l };
|
|
8271
|
+
}
|
|
8272
|
+
function srgbToOklab(r, g, b) {
|
|
8273
|
+
const R = srgbToLinear(r), G = srgbToLinear(g), B = srgbToLinear(b);
|
|
8274
|
+
const l = 0.4122214708 * R + 0.5363325363 * G + 0.0514459929 * B;
|
|
8275
|
+
const m = 0.2119034982 * R + 0.6806995451 * G + 0.1073969566 * B;
|
|
8276
|
+
const s = 0.0883024619 * R + 0.2817188376 * G + 0.6299787005 * B;
|
|
8277
|
+
const l_ = Math.cbrt(l), m_ = Math.cbrt(m), s_ = Math.cbrt(s);
|
|
8278
|
+
const L = 0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_;
|
|
8279
|
+
const a = 1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_;
|
|
8280
|
+
const b2 = 0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_;
|
|
8281
|
+
return { L, a, b: b2 };
|
|
8282
|
+
}
|
|
8283
|
+
function oklabToOklch(L, a, b) {
|
|
8284
|
+
const C = Math.sqrt(a * a + b * b);
|
|
8285
|
+
const h = C < 1e-7 ? 0 : deg(Math.atan2(b, a) * 180 / Math.PI);
|
|
8286
|
+
return { L, C, h };
|
|
8287
|
+
}
|
|
8288
|
+
function featuresFromHex(hex) {
|
|
8289
|
+
const { r, g, b } = hexToRgb(hex);
|
|
8290
|
+
const { h, s, l } = rgbToHsl(r, g, b);
|
|
8291
|
+
const { L, a, b: b2 } = srgbToOklab(r, g, b);
|
|
8292
|
+
const { L: okL, C: okC, h: okH } = oklabToOklch(L, a, b2);
|
|
8293
|
+
const max = Math.max(r, g, b);
|
|
8294
|
+
const v = max / 255;
|
|
8295
|
+
const Y = 0.2126 * srgbToLinear(r) + 0.7152 * srgbToLinear(g) + 0.0722 * srgbToLinear(b);
|
|
8296
|
+
const chroma = s;
|
|
8297
|
+
return { r, g, b, h, s, l, v, Y, chroma, okL, okC, okH, hex };
|
|
8298
|
+
}
|
|
8299
|
+
|
|
8158
8300
|
// ../theme-core/src/site-styles/appearancePresetResolution.ts
|
|
8159
8301
|
function assertValidOptionGroups(preset2) {
|
|
8160
8302
|
preset2.optionGroups?.forEach((group) => {
|
|
@@ -11684,6 +11826,9 @@ var curatedSiteStyleIdValues = [
|
|
|
11684
11826
|
"site-style:bright-community",
|
|
11685
11827
|
"site-style:quiet-luxury",
|
|
11686
11828
|
"site-style:practical-services",
|
|
11829
|
+
"site-style:quiet-practice",
|
|
11830
|
+
"site-style:personal-retreat-journal",
|
|
11831
|
+
"site-style:tactile-workshop",
|
|
11687
11832
|
"site-style:modern-wellness",
|
|
11688
11833
|
"site-style:bold-launch",
|
|
11689
11834
|
"site-style:south-west-twerk-school"
|
|
@@ -11766,7 +11911,8 @@ function defineCuratedSiteStyle(input) {
|
|
|
11766
11911
|
name: input.name,
|
|
11767
11912
|
description: input.description,
|
|
11768
11913
|
generationBrief: input.generationBrief,
|
|
11769
|
-
|
|
11914
|
+
selectionKeywordRules: input.selectionKeywordRules ?? [],
|
|
11915
|
+
siteCreatorSelection: input.siteCreatorSelection ?? { kind: "explicit_only" },
|
|
11770
11916
|
template: {
|
|
11771
11917
|
id: asDesignSystemTemplateId(`template:${input.id.replace("site-style:", "")}`),
|
|
11772
11918
|
name: input.name,
|
|
@@ -11910,12 +12056,13 @@ var curatedSiteStyles = [
|
|
|
11910
12056
|
name: "Quiet Luxury",
|
|
11911
12057
|
description: "Minimal, confident, and refined for premium experiences and private services.",
|
|
11912
12058
|
generationBrief: "Use fewer claims, more specificity, and restrained sensory detail. Favor elegant media and low repetition over dense panels.",
|
|
11913
|
-
|
|
11914
|
-
|
|
11915
|
-
"
|
|
11916
|
-
"
|
|
11917
|
-
"
|
|
11918
|
-
"
|
|
12059
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 20 },
|
|
12060
|
+
selectionKeywordRules: [
|
|
12061
|
+
{ kind: "word", value: "luxury" },
|
|
12062
|
+
{ kind: "word", value: "premium" },
|
|
12063
|
+
{ kind: "word", value: "boutique" },
|
|
12064
|
+
{ kind: "word", value: "bespoke" },
|
|
12065
|
+
{ kind: "word", value: "exclusive" }
|
|
11919
12066
|
],
|
|
11920
12067
|
tokenRecipes: {
|
|
11921
12068
|
palette: "high-contrast",
|
|
@@ -11944,13 +12091,14 @@ var curatedSiteStyles = [
|
|
|
11944
12091
|
name: "Practical Services",
|
|
11945
12092
|
description: "Efficient, plainspoken, and conversion-focused for trades and everyday services.",
|
|
11946
12093
|
generationBrief: "Make services, location, trust signals, and contact paths obvious. Keep copy brief and avoid ornate visual treatments.",
|
|
11947
|
-
|
|
11948
|
-
|
|
11949
|
-
"
|
|
11950
|
-
"
|
|
11951
|
-
"
|
|
11952
|
-
"
|
|
11953
|
-
"
|
|
12094
|
+
siteCreatorSelection: { kind: "primary_goal_support" },
|
|
12095
|
+
selectionKeywordRules: [
|
|
12096
|
+
{ kind: "word", value: "repair" },
|
|
12097
|
+
{ kind: "substring", value: "plumb" },
|
|
12098
|
+
{ kind: "substring", value: "electric" },
|
|
12099
|
+
{ kind: "word", value: "cleaning" },
|
|
12100
|
+
{ kind: "substring", value: "landscap" },
|
|
12101
|
+
{ kind: "substring", value: "contractor" }
|
|
11954
12102
|
],
|
|
11955
12103
|
tokenRecipes: {
|
|
11956
12104
|
palette: "brand-led",
|
|
@@ -12001,18 +12149,134 @@ var curatedSiteStyles = [
|
|
|
12001
12149
|
paletteChoice("warm-neutral-forest")
|
|
12002
12150
|
]
|
|
12003
12151
|
}),
|
|
12152
|
+
defineCuratedSiteStyle({
|
|
12153
|
+
id: "site-style:quiet-practice",
|
|
12154
|
+
name: "Quiet Practice",
|
|
12155
|
+
description: "Grounded, calm, and practical for small appointment-first practices.",
|
|
12156
|
+
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.",
|
|
12157
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 30 },
|
|
12158
|
+
selectionKeywordRules: [
|
|
12159
|
+
{ kind: "substring", value: "massage" },
|
|
12160
|
+
{ kind: "word", value: "bodywork" },
|
|
12161
|
+
{ kind: "phrase", value: "appointment practice" },
|
|
12162
|
+
{ kind: "phrase", value: "appointment-first" },
|
|
12163
|
+
{ kind: "substring", value: "practitioner" },
|
|
12164
|
+
{ kind: "substring", value: "therap" },
|
|
12165
|
+
{ kind: "substring", value: "clinic" },
|
|
12166
|
+
{ kind: "phrase", value: "wellness practice" }
|
|
12167
|
+
],
|
|
12168
|
+
tokenRecipes: {
|
|
12169
|
+
palette: "soft-natural",
|
|
12170
|
+
contrast: "standard",
|
|
12171
|
+
radius: "soft",
|
|
12172
|
+
shadow: "subtle",
|
|
12173
|
+
typography: "clean-sans",
|
|
12174
|
+
spacing: "regular",
|
|
12175
|
+
motion: "subtle"
|
|
12176
|
+
},
|
|
12177
|
+
compositionBudget: quietBudget,
|
|
12178
|
+
recommendedHeaderLookIds: ["practical-utility", "clean-base", "centered-calm"],
|
|
12179
|
+
buttonPersonalityChoices: [
|
|
12180
|
+
buttonChoice("pebble"),
|
|
12181
|
+
buttonChoice("soft-pill"),
|
|
12182
|
+
buttonChoice("editorial-link")
|
|
12183
|
+
],
|
|
12184
|
+
paletteVariantChoices: [
|
|
12185
|
+
paletteChoice("soft-natural-stone"),
|
|
12186
|
+
paletteChoice("soft-natural-sage"),
|
|
12187
|
+
paletteChoice("warm-neutral-clay")
|
|
12188
|
+
]
|
|
12189
|
+
}),
|
|
12190
|
+
defineCuratedSiteStyle({
|
|
12191
|
+
id: "site-style:personal-retreat-journal",
|
|
12192
|
+
name: "Personal Retreat Journal",
|
|
12193
|
+
description: "Warm, story-led, and readable for solo practitioners with mixed offers.",
|
|
12194
|
+
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.",
|
|
12195
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 40 },
|
|
12196
|
+
selectionKeywordRules: [
|
|
12197
|
+
{ kind: "substring", value: "retreat" },
|
|
12198
|
+
{ kind: "phrase", value: "solo practitioner" },
|
|
12199
|
+
{ kind: "phrase", value: "personal brand" },
|
|
12200
|
+
{ kind: "substring", value: "teacher" },
|
|
12201
|
+
{ kind: "substring", value: "coach" },
|
|
12202
|
+
{ kind: "phrase", value: "retreat resources" },
|
|
12203
|
+
{ kind: "substring", value: "journal" }
|
|
12204
|
+
],
|
|
12205
|
+
tokenRecipes: {
|
|
12206
|
+
palette: "warm-neutral",
|
|
12207
|
+
contrast: "standard",
|
|
12208
|
+
radius: "soft",
|
|
12209
|
+
shadow: "subtle",
|
|
12210
|
+
typography: "serif-editorial",
|
|
12211
|
+
spacing: "airy",
|
|
12212
|
+
motion: "subtle"
|
|
12213
|
+
},
|
|
12214
|
+
compositionBudget: balancedBudget,
|
|
12215
|
+
recommendedHeaderLookIds: ["editorial-line", "centered-calm", "minimal-transparent"],
|
|
12216
|
+
buttonPersonalityChoices: [
|
|
12217
|
+
buttonChoice("editorial-link"),
|
|
12218
|
+
buttonChoice("soft-pill"),
|
|
12219
|
+
buttonChoice("brushed-wash")
|
|
12220
|
+
],
|
|
12221
|
+
paletteVariantChoices: [
|
|
12222
|
+
paletteChoice("warm-neutral-forest"),
|
|
12223
|
+
paletteChoice("warm-neutral-clay"),
|
|
12224
|
+
paletteChoice("soft-natural-stone")
|
|
12225
|
+
]
|
|
12226
|
+
}),
|
|
12227
|
+
defineCuratedSiteStyle({
|
|
12228
|
+
id: "site-style:tactile-workshop",
|
|
12229
|
+
name: "Tactile Workshop",
|
|
12230
|
+
description: "Bright, hands-on, and image-led for maker studios, workshops, and creative classes.",
|
|
12231
|
+
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.",
|
|
12232
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 50 },
|
|
12233
|
+
selectionKeywordRules: [
|
|
12234
|
+
{ kind: "substring", value: "ceramic" },
|
|
12235
|
+
{ kind: "word", value: "pottery" },
|
|
12236
|
+
{ kind: "phrase", value: "maker studio" },
|
|
12237
|
+
{ kind: "phrase", value: "craft class" },
|
|
12238
|
+
{ kind: "phrase", value: "craft workshop" },
|
|
12239
|
+
{ kind: "word", value: "clay" },
|
|
12240
|
+
{ kind: "word", value: "kiln" }
|
|
12241
|
+
],
|
|
12242
|
+
tokenRecipes: {
|
|
12243
|
+
palette: "brand-led",
|
|
12244
|
+
contrast: "standard",
|
|
12245
|
+
radius: "soft",
|
|
12246
|
+
shadow: "subtle",
|
|
12247
|
+
typography: "friendly-sans",
|
|
12248
|
+
spacing: "regular",
|
|
12249
|
+
motion: "subtle"
|
|
12250
|
+
},
|
|
12251
|
+
compositionBudget: balancedBudget,
|
|
12252
|
+
recommendedHeaderLookIds: ["brand-solid", "practical-utility", "clean-base"],
|
|
12253
|
+
recommendedFooterLookIds: ["site-footer-brand-two-band", "footer-muted-grounding"],
|
|
12254
|
+
buttonPersonalityChoices: [
|
|
12255
|
+
buttonChoice("pebble"),
|
|
12256
|
+
buttonChoice("confident-chip"),
|
|
12257
|
+
buttonChoice("ink-stamp"),
|
|
12258
|
+
buttonChoice("editorial-link")
|
|
12259
|
+
],
|
|
12260
|
+
paletteVariantChoices: [
|
|
12261
|
+
paletteChoice("brand-led-warm"),
|
|
12262
|
+
paletteChoice("brand-led-cool"),
|
|
12263
|
+
paletteChoice("soft-natural-watercolor"),
|
|
12264
|
+
paletteChoice("warm-neutral-clay")
|
|
12265
|
+
]
|
|
12266
|
+
}),
|
|
12004
12267
|
defineCuratedSiteStyle({
|
|
12005
12268
|
id: "site-style:bold-launch",
|
|
12006
12269
|
name: "Bold Launch",
|
|
12007
12270
|
description: "High-energy and punchy for launches, campaigns, and creative offers.",
|
|
12008
12271
|
generationBrief: "Use crisp positioning, bold hero structure, strong calls to action, and confident visual rhythm. Keep it precise, not shouty.",
|
|
12009
|
-
|
|
12010
|
-
|
|
12011
|
-
"
|
|
12012
|
-
"
|
|
12013
|
-
"
|
|
12014
|
-
"
|
|
12015
|
-
"
|
|
12272
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 10 },
|
|
12273
|
+
selectionKeywordRules: [
|
|
12274
|
+
{ kind: "substring", value: "launch" },
|
|
12275
|
+
{ kind: "substring", value: "campaign" },
|
|
12276
|
+
{ kind: "word", value: "preorder" },
|
|
12277
|
+
{ kind: "phrase", value: "pre-order" },
|
|
12278
|
+
{ kind: "substring", value: "waitlist" },
|
|
12279
|
+
{ kind: "word", value: "drop" }
|
|
12016
12280
|
],
|
|
12017
12281
|
tokenRecipes: {
|
|
12018
12282
|
palette: "high-contrast",
|
|
@@ -12043,15 +12307,6 @@ var curatedSiteStyles = [
|
|
|
12043
12307
|
name: "South West Twerk School",
|
|
12044
12308
|
description: "Energetic, editorial, and high-contrast for a branded dance school presence.",
|
|
12045
12309
|
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.",
|
|
12046
|
-
selectionKeywords: [
|
|
12047
|
-
"dance",
|
|
12048
|
-
"classes",
|
|
12049
|
-
"workshop",
|
|
12050
|
-
"school",
|
|
12051
|
-
"movement",
|
|
12052
|
-
"performance",
|
|
12053
|
-
"community"
|
|
12054
|
-
],
|
|
12055
12310
|
tokenRecipes: {
|
|
12056
12311
|
palette: "brand-led",
|
|
12057
12312
|
contrast: "maximum",
|
|
@@ -12358,25 +12613,19 @@ var defaultDesignRuntimeRules = defineDesignRuntimeRules({
|
|
|
12358
12613
|
"muted-band": {
|
|
12359
12614
|
background: {
|
|
12360
12615
|
type: "color",
|
|
12361
|
-
color: "muted"
|
|
12362
|
-
textColor: "text",
|
|
12363
|
-
headingColor: "text"
|
|
12616
|
+
color: "muted"
|
|
12364
12617
|
}
|
|
12365
12618
|
},
|
|
12366
12619
|
"accent-band": {
|
|
12367
12620
|
background: {
|
|
12368
12621
|
type: "color",
|
|
12369
|
-
color: "primary"
|
|
12370
|
-
textColor: "primaryForeground",
|
|
12371
|
-
headingColor: "primaryForeground"
|
|
12622
|
+
color: "primary"
|
|
12372
12623
|
}
|
|
12373
12624
|
},
|
|
12374
12625
|
"brand-depth-band": {
|
|
12375
12626
|
background: {
|
|
12376
12627
|
type: "color",
|
|
12377
|
-
color: "primary-800"
|
|
12378
|
-
textColor: "primaryForeground",
|
|
12379
|
-
headingColor: "primaryForeground"
|
|
12628
|
+
color: "primary-800"
|
|
12380
12629
|
}
|
|
12381
12630
|
},
|
|
12382
12631
|
"hero-image": {
|
|
@@ -18473,6 +18722,16 @@ var jsonArrayTransform = {
|
|
|
18473
18722
|
return "";
|
|
18474
18723
|
}
|
|
18475
18724
|
};
|
|
18725
|
+
var csvTransform = {
|
|
18726
|
+
id: "value.csv",
|
|
18727
|
+
kind: "formatter",
|
|
18728
|
+
summary: "Normalize a string or array of strings into a comma-separated list",
|
|
18729
|
+
run: (value) => {
|
|
18730
|
+
const rawValues = Array.isArray(value) ? value : typeof value === "string" ? value.split(",") : [];
|
|
18731
|
+
const normalized = rawValues.filter((item) => typeof item === "string").map((item) => item.trim()).filter(Boolean);
|
|
18732
|
+
return normalized.length > 0 ? Array.from(new Set(normalized)).join(",") : "";
|
|
18733
|
+
}
|
|
18734
|
+
};
|
|
18476
18735
|
var marqueeLoopOptionsSchema = z36.object({
|
|
18477
18736
|
minItems: z36.number().int().min(1).default(10)
|
|
18478
18737
|
});
|
|
@@ -18498,6 +18757,7 @@ var formattingTransforms = [
|
|
|
18498
18757
|
dateFormatShort,
|
|
18499
18758
|
arrayLengthTransform,
|
|
18500
18759
|
jsonArrayTransform,
|
|
18760
|
+
csvTransform,
|
|
18501
18761
|
marqueeLoopTransform
|
|
18502
18762
|
];
|
|
18503
18763
|
|
|
@@ -18981,73 +19241,6 @@ var uiTransforms = [
|
|
|
18981
19241
|
|
|
18982
19242
|
// ../blocks/src/system/transforms/registry/layout.ts
|
|
18983
19243
|
import { z as z38 } from "zod";
|
|
18984
|
-
|
|
18985
|
-
// ../theme-core/src/palette/utils/colorConversion.ts
|
|
18986
|
-
var mod = (a, n) => (a % n + n) % n;
|
|
18987
|
-
var deg = (x) => mod(x, 360);
|
|
18988
|
-
function hexToRgb(hex) {
|
|
18989
|
-
const h = hex.replace(/^#/, "");
|
|
18990
|
-
const m = h.length === 3 ? h.split("").map((c) => c + c).join("") : h;
|
|
18991
|
-
if (m.length !== 6) throw new Error("Bad hex");
|
|
18992
|
-
const int = parseInt(m, 16);
|
|
18993
|
-
return { r: int >> 16 & 255, g: int >> 8 & 255, b: int & 255 };
|
|
18994
|
-
}
|
|
18995
|
-
function srgbToLinear(u) {
|
|
18996
|
-
const x = u / 255;
|
|
18997
|
-
return x <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);
|
|
18998
|
-
}
|
|
18999
|
-
function rgbToHsl(r, g, b) {
|
|
19000
|
-
const R = r / 255, G = g / 255, B = b / 255;
|
|
19001
|
-
const max = Math.max(R, G, B), min = Math.min(R, G, B);
|
|
19002
|
-
const d = max - min;
|
|
19003
|
-
let h = 0;
|
|
19004
|
-
if (d !== 0) {
|
|
19005
|
-
switch (max) {
|
|
19006
|
-
case R:
|
|
19007
|
-
h = (G - B) / d + (G < B ? 6 : 0);
|
|
19008
|
-
break;
|
|
19009
|
-
case G:
|
|
19010
|
-
h = (B - R) / d + 2;
|
|
19011
|
-
break;
|
|
19012
|
-
case B:
|
|
19013
|
-
h = (R - G) / d + 4;
|
|
19014
|
-
break;
|
|
19015
|
-
}
|
|
19016
|
-
h *= 60;
|
|
19017
|
-
}
|
|
19018
|
-
const l = (max + min) / 2;
|
|
19019
|
-
const s = d === 0 ? 0 : d / (1 - Math.abs(2 * l - 1));
|
|
19020
|
-
return { h, s, l };
|
|
19021
|
-
}
|
|
19022
|
-
function srgbToOklab(r, g, b) {
|
|
19023
|
-
const R = srgbToLinear(r), G = srgbToLinear(g), B = srgbToLinear(b);
|
|
19024
|
-
const l = 0.4122214708 * R + 0.5363325363 * G + 0.0514459929 * B;
|
|
19025
|
-
const m = 0.2119034982 * R + 0.6806995451 * G + 0.1073969566 * B;
|
|
19026
|
-
const s = 0.0883024619 * R + 0.2817188376 * G + 0.6299787005 * B;
|
|
19027
|
-
const l_ = Math.cbrt(l), m_ = Math.cbrt(m), s_ = Math.cbrt(s);
|
|
19028
|
-
const L = 0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_;
|
|
19029
|
-
const a = 1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_;
|
|
19030
|
-
const b2 = 0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_;
|
|
19031
|
-
return { L, a, b: b2 };
|
|
19032
|
-
}
|
|
19033
|
-
function oklabToOklch(L, a, b) {
|
|
19034
|
-
const C = Math.sqrt(a * a + b * b);
|
|
19035
|
-
const h = C < 1e-7 ? 0 : deg(Math.atan2(b, a) * 180 / Math.PI);
|
|
19036
|
-
return { L, C, h };
|
|
19037
|
-
}
|
|
19038
|
-
function featuresFromHex(hex) {
|
|
19039
|
-
const { r, g, b } = hexToRgb(hex);
|
|
19040
|
-
const { h, s, l } = rgbToHsl(r, g, b);
|
|
19041
|
-
const { L, a, b: b2 } = srgbToOklab(r, g, b);
|
|
19042
|
-
const { L: okL, C: okC, h: okH } = oklabToOklch(L, a, b2);
|
|
19043
|
-
const max = Math.max(r, g, b);
|
|
19044
|
-
const v = max / 255;
|
|
19045
|
-
const Y = 0.2126 * srgbToLinear(r) + 0.7152 * srgbToLinear(g) + 0.0722 * srgbToLinear(b);
|
|
19046
|
-
const chroma = s;
|
|
19047
|
-
return { r, g, b, h, s, l, v, Y, chroma, okL, okC, okH, hex };
|
|
19048
|
-
}
|
|
19049
|
-
|
|
19050
|
-
// ../blocks/src/system/transforms/registry/layout.ts
|
|
19051
19244
|
var joinClasses4 = (parts) => parts.filter(
|
|
19052
19245
|
(part) => typeof part === "string" && part.trim().length > 0
|
|
19053
19246
|
).join(" ").replace(/\s+/g, " ").trim();
|
|
@@ -23728,7 +23921,12 @@ var eventListingBlockDefinition = {
|
|
|
23728
23921
|
detailLevel: "listing",
|
|
23729
23922
|
kind: { $bind: { from: "content.kind" } },
|
|
23730
23923
|
eventSurface: { $bind: { from: "content.eventSurface" } },
|
|
23731
|
-
eventPresets: {
|
|
23924
|
+
eventPresets: {
|
|
23925
|
+
$bind: {
|
|
23926
|
+
from: "content.filterEventPresets",
|
|
23927
|
+
transforms: [{ id: "value.csv" }]
|
|
23928
|
+
}
|
|
23929
|
+
},
|
|
23732
23930
|
scheduleScope: { $bind: { from: "content.scheduleScope" } }
|
|
23733
23931
|
},
|
|
23734
23932
|
mode: "server"
|
|
@@ -24480,7 +24678,12 @@ var eventCalendarBlockDefinition = {
|
|
|
24480
24678
|
// Pass filter params if configured
|
|
24481
24679
|
kind: { $bind: { from: "content.kind" } },
|
|
24482
24680
|
eventSurface: { $bind: { from: "content.eventSurface" } },
|
|
24483
|
-
eventPresets: {
|
|
24681
|
+
eventPresets: {
|
|
24682
|
+
$bind: {
|
|
24683
|
+
from: "content.filterEventPresets",
|
|
24684
|
+
transforms: [{ id: "value.csv" }]
|
|
24685
|
+
}
|
|
24686
|
+
},
|
|
24484
24687
|
scheduleScope: { $bind: { from: "content.scheduleScope" } },
|
|
24485
24688
|
categoryIds: { $bind: { from: "content.filterCategoryIds" } },
|
|
24486
24689
|
staffMemberId: { $bind: { from: "content.filterStaffMemberId" } },
|
|
@@ -30087,8 +30290,7 @@ var dashboardNavVisibilityBaseSchema2 = z66.object({
|
|
|
30087
30290
|
var dashboardNavVisibilityRolesSchema2 = z66.object({
|
|
30088
30291
|
administrator: dashboardNavVisibilityBaseSchema2.optional(),
|
|
30089
30292
|
editor: dashboardNavVisibilityBaseSchema2.optional(),
|
|
30090
|
-
team_member: dashboardNavVisibilityBaseSchema2.optional()
|
|
30091
|
-
event_host: dashboardNavVisibilityBaseSchema2.optional()
|
|
30293
|
+
team_member: dashboardNavVisibilityBaseSchema2.optional()
|
|
30092
30294
|
}).strip().optional();
|
|
30093
30295
|
var dashboardNavVisibilitySchema2 = dashboardNavVisibilityBaseSchema2.extend({
|
|
30094
30296
|
roles: dashboardNavVisibilityRolesSchema2
|