@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/client/hooks.mjs
CHANGED
|
@@ -5,6 +5,17 @@ import { use } from "react";
|
|
|
5
5
|
// src/rendering/hooks/usePage.ts
|
|
6
6
|
import { useState, useEffect } from "react";
|
|
7
7
|
|
|
8
|
+
// ../api/src/apiEndpointTypes.ts
|
|
9
|
+
function blockedDemoMutationPolicy(classification, publicMessage) {
|
|
10
|
+
if (publicMessage.trim() === "") {
|
|
11
|
+
throw new Error(`Demo mutation policy ${classification} requires publicMessage.`);
|
|
12
|
+
}
|
|
13
|
+
return {
|
|
14
|
+
classification,
|
|
15
|
+
publicMessage
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
|
|
8
19
|
// ../api/src/cache-tags.ts
|
|
9
20
|
var TAG_TEMPLATES = {
|
|
10
21
|
siteCollection: "riverbank:site",
|
|
@@ -35,6 +46,18 @@ var TAG_TEMPLATES = {
|
|
|
35
46
|
};
|
|
36
47
|
|
|
37
48
|
// ../api/src/endpoints.ts
|
|
49
|
+
var DEMO_MUTATION_BLOCKED_HIDDEN = blockedDemoMutationPolicy(
|
|
50
|
+
"blocked-hidden",
|
|
51
|
+
"This action is not available in demo sites."
|
|
52
|
+
);
|
|
53
|
+
var DEMO_MUTATION_BLOCKED_DISABLED = blockedDemoMutationPolicy(
|
|
54
|
+
"blocked-disabled",
|
|
55
|
+
"This setting is disabled in demo sites."
|
|
56
|
+
);
|
|
57
|
+
var DEMO_MUTATION_INTERNAL_ONLY = blockedDemoMutationPolicy(
|
|
58
|
+
"internal-only",
|
|
59
|
+
"This internal operation is not available in demo sites."
|
|
60
|
+
);
|
|
38
61
|
var ENDPOINT_DEFINITIONS = {
|
|
39
62
|
// AI endpoints - no cache due to dynamic nature
|
|
40
63
|
aiContentUpdateChat: {
|
|
@@ -151,7 +174,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
151
174
|
path: "/sites/{siteId}/ai/generate",
|
|
152
175
|
method: "POST",
|
|
153
176
|
auth: "user",
|
|
154
|
-
responseKind: "json"
|
|
177
|
+
responseKind: "json",
|
|
178
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
155
179
|
},
|
|
156
180
|
getOnboardingPreviewStatus: {
|
|
157
181
|
path: "/public/sites/{siteId}/onboarding/preview-status",
|
|
@@ -172,7 +196,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
172
196
|
method: "POST",
|
|
173
197
|
auth: "user",
|
|
174
198
|
errors: [],
|
|
175
|
-
responseKind: "json"
|
|
199
|
+
responseKind: "json",
|
|
200
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED
|
|
176
201
|
},
|
|
177
202
|
goLiveSite: {
|
|
178
203
|
path: "/sites/{siteId}/launch/go-live",
|
|
@@ -241,20 +266,23 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
241
266
|
path: "/sites/{siteId}/ai/site-wizard/goals",
|
|
242
267
|
method: "POST",
|
|
243
268
|
auth: "user",
|
|
244
|
-
responseKind: "json"
|
|
269
|
+
responseKind: "json",
|
|
270
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
245
271
|
},
|
|
246
272
|
aiSiteWizardIntakeTriage: {
|
|
247
273
|
path: "/sites/{siteId}/ai/site-wizard/intake-triage",
|
|
248
274
|
method: "POST",
|
|
249
275
|
auth: "user",
|
|
250
|
-
responseKind: "json"
|
|
276
|
+
responseKind: "json",
|
|
277
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
251
278
|
},
|
|
252
279
|
aiSiteWizardTelemetry: {
|
|
253
280
|
path: "/sites/{siteId}/ai/site-wizard/telemetry",
|
|
254
281
|
method: "POST",
|
|
255
282
|
auth: "user",
|
|
256
283
|
errors: [],
|
|
257
|
-
responseKind: "json"
|
|
284
|
+
responseKind: "json",
|
|
285
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
258
286
|
},
|
|
259
287
|
// Admin SEO
|
|
260
288
|
listGscPropertiesAdmin: {
|
|
@@ -461,7 +489,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
461
489
|
responseKind: "json",
|
|
462
490
|
errors: ["resource:not_found", "server:internal_error"]
|
|
463
491
|
},
|
|
464
|
-
// Ops (event
|
|
492
|
+
// Ops (staff event operators/admins)
|
|
465
493
|
opsListUpcomingEventOccurrences: {
|
|
466
494
|
path: "/ops/sites/{siteId}/events",
|
|
467
495
|
method: "GET",
|
|
@@ -479,6 +507,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
479
507
|
method: "POST",
|
|
480
508
|
auth: "user",
|
|
481
509
|
responseKind: "json",
|
|
510
|
+
demoMutation: DEMO_MUTATION_INTERNAL_ONLY,
|
|
482
511
|
errors: [
|
|
483
512
|
"validation:invalid_input",
|
|
484
513
|
"auth:forbidden",
|
|
@@ -491,6 +520,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
491
520
|
method: "POST",
|
|
492
521
|
auth: "user",
|
|
493
522
|
responseKind: "json",
|
|
523
|
+
demoMutation: DEMO_MUTATION_INTERNAL_ONLY,
|
|
494
524
|
errors: [
|
|
495
525
|
"validation:invalid_input",
|
|
496
526
|
"auth:forbidden",
|
|
@@ -509,6 +539,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
509
539
|
method: "POST",
|
|
510
540
|
auth: "user",
|
|
511
541
|
responseKind: "json",
|
|
542
|
+
demoMutation: DEMO_MUTATION_INTERNAL_ONLY,
|
|
512
543
|
errors: [
|
|
513
544
|
"validation:invalid_input",
|
|
514
545
|
"auth:forbidden",
|
|
@@ -542,6 +573,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
542
573
|
method: "POST",
|
|
543
574
|
auth: "user",
|
|
544
575
|
responseKind: "json",
|
|
576
|
+
demoMutation: DEMO_MUTATION_INTERNAL_ONLY,
|
|
545
577
|
errors: [
|
|
546
578
|
"validation:invalid_input",
|
|
547
579
|
"auth:forbidden",
|
|
@@ -570,7 +602,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
570
602
|
method: "POST",
|
|
571
603
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings],
|
|
572
604
|
auth: "user",
|
|
573
|
-
responseKind: "json"
|
|
605
|
+
responseKind: "json",
|
|
606
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
574
607
|
},
|
|
575
608
|
previewEmailTemplate: {
|
|
576
609
|
path: "/sites/{siteId}/settings/emails/preview",
|
|
@@ -621,14 +654,16 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
621
654
|
method: "POST",
|
|
622
655
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
623
656
|
auth: "user",
|
|
624
|
-
responseKind: "json"
|
|
657
|
+
responseKind: "json",
|
|
658
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
625
659
|
},
|
|
626
660
|
createNewsletterSubscribersImportUploadUrl: {
|
|
627
661
|
path: "/sites/{siteId}/newsletter/subscribers/import-url",
|
|
628
662
|
method: "POST",
|
|
629
663
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
630
664
|
auth: "user",
|
|
631
|
-
responseKind: "json"
|
|
665
|
+
responseKind: "json",
|
|
666
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
632
667
|
},
|
|
633
668
|
exportNewsletterSubscribersCsv: {
|
|
634
669
|
path: "/sites/{siteId}/newsletter/subscribers/export.csv",
|
|
@@ -825,14 +860,16 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
825
860
|
method: "POST",
|
|
826
861
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
827
862
|
auth: "user",
|
|
828
|
-
responseKind: "json"
|
|
863
|
+
responseKind: "json",
|
|
864
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
829
865
|
},
|
|
830
866
|
testSendNewsletterCampaign: {
|
|
831
867
|
path: "/sites/{siteId}/newsletter/campaigns/{campaignId}/test-send",
|
|
832
868
|
method: "POST",
|
|
833
869
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
834
870
|
auth: "user",
|
|
835
|
-
responseKind: "json"
|
|
871
|
+
responseKind: "json",
|
|
872
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
836
873
|
},
|
|
837
874
|
listNewsletterSendJobs: {
|
|
838
875
|
path: "/sites/{siteId}/newsletter/jobs",
|
|
@@ -880,6 +917,20 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
880
917
|
responseKind: "json",
|
|
881
918
|
errors: ["validation:invalid_input", "billing:plan_limit_exceeded", "server:internal_error"]
|
|
882
919
|
},
|
|
920
|
+
createAppointmentResourceWithAccountAccess: {
|
|
921
|
+
path: "/sites/{siteId}/bookings/resources/account-access",
|
|
922
|
+
method: "POST",
|
|
923
|
+
auth: "user",
|
|
924
|
+
responseKind: "json",
|
|
925
|
+
errors: [
|
|
926
|
+
"validation:invalid_input",
|
|
927
|
+
"auth:forbidden",
|
|
928
|
+
"billing:plan_limit_exceeded",
|
|
929
|
+
"resource:conflict",
|
|
930
|
+
"resource:not_found",
|
|
931
|
+
"server:internal_error"
|
|
932
|
+
]
|
|
933
|
+
},
|
|
883
934
|
getAppointmentResource: {
|
|
884
935
|
path: "/sites/{siteId}/bookings/resources/{resourceId}",
|
|
885
936
|
method: "GET",
|
|
@@ -1520,7 +1571,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
1520
1571
|
method: "DELETE",
|
|
1521
1572
|
tags: ["site", "site-{siteId}"],
|
|
1522
1573
|
auth: "user",
|
|
1523
|
-
responseKind: "json"
|
|
1574
|
+
responseKind: "json",
|
|
1575
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
1524
1576
|
},
|
|
1525
1577
|
listSiteMembers: {
|
|
1526
1578
|
path: "/sites/{siteId}/members",
|
|
@@ -1976,7 +2028,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
1976
2028
|
method: "POST",
|
|
1977
2029
|
tags: ["site-{siteId}", "content-{siteId}-{type}"],
|
|
1978
2030
|
auth: "user",
|
|
1979
|
-
responseKind: "json"
|
|
2031
|
+
responseKind: "json",
|
|
2032
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
1980
2033
|
},
|
|
1981
2034
|
updateSiteGeneralSettings: {
|
|
1982
2035
|
path: "/sites/{siteId}/settings/general",
|
|
@@ -4215,6 +4268,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4215
4268
|
method: "POST",
|
|
4216
4269
|
tags: ["site-{siteId}"],
|
|
4217
4270
|
auth: "user",
|
|
4271
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN,
|
|
4218
4272
|
errors: [
|
|
4219
4273
|
"validation:invalid_input",
|
|
4220
4274
|
"auth:forbidden",
|
|
@@ -4229,6 +4283,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4229
4283
|
method: "POST",
|
|
4230
4284
|
tags: ["site-{siteId}"],
|
|
4231
4285
|
auth: "user",
|
|
4286
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN,
|
|
4232
4287
|
errors: [
|
|
4233
4288
|
"validation:invalid_input",
|
|
4234
4289
|
"auth:forbidden",
|
|
@@ -4538,6 +4593,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4538
4593
|
tags: ["site-{siteId}", "passes-{siteId}"],
|
|
4539
4594
|
auth: "user",
|
|
4540
4595
|
responseKind: "json",
|
|
4596
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4541
4597
|
errors: ["validation:invalid_input", "server:internal_error"]
|
|
4542
4598
|
},
|
|
4543
4599
|
getBookingPass: {
|
|
@@ -4553,6 +4609,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4553
4609
|
tags: ["site-{siteId}", "passes-{siteId}"],
|
|
4554
4610
|
auth: "user",
|
|
4555
4611
|
responseKind: "json",
|
|
4612
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4556
4613
|
errors: [
|
|
4557
4614
|
"validation:invalid_input",
|
|
4558
4615
|
"resource:not_found",
|
|
@@ -4565,6 +4622,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4565
4622
|
tags: ["site-{siteId}", "passes-{siteId}"],
|
|
4566
4623
|
auth: "user",
|
|
4567
4624
|
responseKind: "json",
|
|
4625
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4568
4626
|
errors: [
|
|
4569
4627
|
"validation:invalid_input",
|
|
4570
4628
|
"resource:not_found",
|
|
@@ -4620,6 +4678,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4620
4678
|
tags: ["site-{siteId}", "memberships-{siteId}"],
|
|
4621
4679
|
auth: "user",
|
|
4622
4680
|
responseKind: "json",
|
|
4681
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4623
4682
|
errors: ["validation:invalid_input", "server:internal_error"]
|
|
4624
4683
|
},
|
|
4625
4684
|
getBookingMembership: {
|
|
@@ -4635,6 +4694,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4635
4694
|
tags: ["site-{siteId}", "memberships-{siteId}"],
|
|
4636
4695
|
auth: "user",
|
|
4637
4696
|
responseKind: "json",
|
|
4697
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4638
4698
|
errors: [
|
|
4639
4699
|
"validation:invalid_input",
|
|
4640
4700
|
"resource:not_found",
|
|
@@ -4647,6 +4707,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4647
4707
|
tags: ["site-{siteId}", "memberships-{siteId}"],
|
|
4648
4708
|
auth: "user",
|
|
4649
4709
|
responseKind: "json",
|
|
4710
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4650
4711
|
errors: [
|
|
4651
4712
|
"validation:invalid_input",
|
|
4652
4713
|
"resource:not_found",
|
|
@@ -4863,6 +4924,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4863
4924
|
tags: ["site-{siteId}", "customers-{siteId}"],
|
|
4864
4925
|
auth: "user",
|
|
4865
4926
|
responseKind: "json",
|
|
4927
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4866
4928
|
errors: [
|
|
4867
4929
|
"validation:invalid_input",
|
|
4868
4930
|
"auth:forbidden",
|
|
@@ -7122,8 +7184,7 @@ var dashboardNavVisibilityBaseSchema = z5.object({
|
|
|
7122
7184
|
var dashboardNavVisibilityRolesSchema = z5.object({
|
|
7123
7185
|
administrator: dashboardNavVisibilityBaseSchema.optional(),
|
|
7124
7186
|
editor: dashboardNavVisibilityBaseSchema.optional(),
|
|
7125
|
-
team_member: dashboardNavVisibilityBaseSchema.optional()
|
|
7126
|
-
event_host: dashboardNavVisibilityBaseSchema.optional()
|
|
7187
|
+
team_member: dashboardNavVisibilityBaseSchema.optional()
|
|
7127
7188
|
}).strip().optional();
|
|
7128
7189
|
var dashboardNavVisibilitySchema = dashboardNavVisibilityBaseSchema.extend({
|
|
7129
7190
|
roles: dashboardNavVisibilityRolesSchema
|
|
@@ -7644,6 +7705,21 @@ var appointmentSetupServiceDraftSchema = z7.object({
|
|
|
7644
7705
|
timezone: z7.string().trim().min(1).nullable(),
|
|
7645
7706
|
payment: appointmentSetupPaymentDraftSchema,
|
|
7646
7707
|
assignment: appointmentSetupServiceAssignmentDraftSchema
|
|
7708
|
+
}).superRefine((service, ctx) => {
|
|
7709
|
+
if (service.payment.priceType === "paid" && (service.priceAmount === null || service.priceAmount <= 0)) {
|
|
7710
|
+
ctx.addIssue({
|
|
7711
|
+
code: "custom",
|
|
7712
|
+
path: ["priceAmount"],
|
|
7713
|
+
message: "Paid appointment services need a positive price."
|
|
7714
|
+
});
|
|
7715
|
+
}
|
|
7716
|
+
if (service.payment.priceType === "free" && service.priceAmount !== null && service.priceAmount > 0) {
|
|
7717
|
+
ctx.addIssue({
|
|
7718
|
+
code: "custom",
|
|
7719
|
+
path: ["priceAmount"],
|
|
7720
|
+
message: "Free appointment services cannot carry a positive price."
|
|
7721
|
+
});
|
|
7722
|
+
}
|
|
7647
7723
|
});
|
|
7648
7724
|
var appointmentSetupPractitionerDraftSchema = z7.object({
|
|
7649
7725
|
ref: appointmentSetupRefSchema,
|
|
@@ -8016,6 +8092,71 @@ function registerManifest(manifest) {
|
|
|
8016
8092
|
return manifest;
|
|
8017
8093
|
}
|
|
8018
8094
|
|
|
8095
|
+
// ../theme-core/src/palette/utils/colorConversion.ts
|
|
8096
|
+
var mod = (a, n) => (a % n + n) % n;
|
|
8097
|
+
var deg = (x) => mod(x, 360);
|
|
8098
|
+
function hexToRgb(hex) {
|
|
8099
|
+
const h = hex.replace(/^#/, "");
|
|
8100
|
+
const m = h.length === 3 ? h.split("").map((c) => c + c).join("") : h;
|
|
8101
|
+
if (m.length !== 6) throw new Error("Bad hex");
|
|
8102
|
+
const int = parseInt(m, 16);
|
|
8103
|
+
return { r: int >> 16 & 255, g: int >> 8 & 255, b: int & 255 };
|
|
8104
|
+
}
|
|
8105
|
+
function srgbToLinear(u) {
|
|
8106
|
+
const x = u / 255;
|
|
8107
|
+
return x <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);
|
|
8108
|
+
}
|
|
8109
|
+
function rgbToHsl(r, g, b) {
|
|
8110
|
+
const R = r / 255, G = g / 255, B = b / 255;
|
|
8111
|
+
const max = Math.max(R, G, B), min = Math.min(R, G, B);
|
|
8112
|
+
const d = max - min;
|
|
8113
|
+
let h = 0;
|
|
8114
|
+
if (d !== 0) {
|
|
8115
|
+
switch (max) {
|
|
8116
|
+
case R:
|
|
8117
|
+
h = (G - B) / d + (G < B ? 6 : 0);
|
|
8118
|
+
break;
|
|
8119
|
+
case G:
|
|
8120
|
+
h = (B - R) / d + 2;
|
|
8121
|
+
break;
|
|
8122
|
+
case B:
|
|
8123
|
+
h = (R - G) / d + 4;
|
|
8124
|
+
break;
|
|
8125
|
+
}
|
|
8126
|
+
h *= 60;
|
|
8127
|
+
}
|
|
8128
|
+
const l = (max + min) / 2;
|
|
8129
|
+
const s = d === 0 ? 0 : d / (1 - Math.abs(2 * l - 1));
|
|
8130
|
+
return { h, s, l };
|
|
8131
|
+
}
|
|
8132
|
+
function srgbToOklab(r, g, b) {
|
|
8133
|
+
const R = srgbToLinear(r), G = srgbToLinear(g), B = srgbToLinear(b);
|
|
8134
|
+
const l = 0.4122214708 * R + 0.5363325363 * G + 0.0514459929 * B;
|
|
8135
|
+
const m = 0.2119034982 * R + 0.6806995451 * G + 0.1073969566 * B;
|
|
8136
|
+
const s = 0.0883024619 * R + 0.2817188376 * G + 0.6299787005 * B;
|
|
8137
|
+
const l_ = Math.cbrt(l), m_ = Math.cbrt(m), s_ = Math.cbrt(s);
|
|
8138
|
+
const L = 0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_;
|
|
8139
|
+
const a = 1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_;
|
|
8140
|
+
const b2 = 0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_;
|
|
8141
|
+
return { L, a, b: b2 };
|
|
8142
|
+
}
|
|
8143
|
+
function oklabToOklch(L, a, b) {
|
|
8144
|
+
const C = Math.sqrt(a * a + b * b);
|
|
8145
|
+
const h = C < 1e-7 ? 0 : deg(Math.atan2(b, a) * 180 / Math.PI);
|
|
8146
|
+
return { L, C, h };
|
|
8147
|
+
}
|
|
8148
|
+
function featuresFromHex(hex) {
|
|
8149
|
+
const { r, g, b } = hexToRgb(hex);
|
|
8150
|
+
const { h, s, l } = rgbToHsl(r, g, b);
|
|
8151
|
+
const { L, a, b: b2 } = srgbToOklab(r, g, b);
|
|
8152
|
+
const { L: okL, C: okC, h: okH } = oklabToOklch(L, a, b2);
|
|
8153
|
+
const max = Math.max(r, g, b);
|
|
8154
|
+
const v = max / 255;
|
|
8155
|
+
const Y = 0.2126 * srgbToLinear(r) + 0.7152 * srgbToLinear(g) + 0.0722 * srgbToLinear(b);
|
|
8156
|
+
const chroma = s;
|
|
8157
|
+
return { r, g, b, h, s, l, v, Y, chroma, okL, okC, okH, hex };
|
|
8158
|
+
}
|
|
8159
|
+
|
|
8019
8160
|
// ../theme-core/src/site-styles/appearancePresetResolution.ts
|
|
8020
8161
|
function assertValidOptionGroups(preset2) {
|
|
8021
8162
|
preset2.optionGroups?.forEach((group) => {
|
|
@@ -11545,6 +11686,9 @@ var curatedSiteStyleIdValues = [
|
|
|
11545
11686
|
"site-style:bright-community",
|
|
11546
11687
|
"site-style:quiet-luxury",
|
|
11547
11688
|
"site-style:practical-services",
|
|
11689
|
+
"site-style:quiet-practice",
|
|
11690
|
+
"site-style:personal-retreat-journal",
|
|
11691
|
+
"site-style:tactile-workshop",
|
|
11548
11692
|
"site-style:modern-wellness",
|
|
11549
11693
|
"site-style:bold-launch",
|
|
11550
11694
|
"site-style:south-west-twerk-school"
|
|
@@ -11627,7 +11771,8 @@ function defineCuratedSiteStyle(input) {
|
|
|
11627
11771
|
name: input.name,
|
|
11628
11772
|
description: input.description,
|
|
11629
11773
|
generationBrief: input.generationBrief,
|
|
11630
|
-
|
|
11774
|
+
selectionKeywordRules: input.selectionKeywordRules ?? [],
|
|
11775
|
+
siteCreatorSelection: input.siteCreatorSelection ?? { kind: "explicit_only" },
|
|
11631
11776
|
template: {
|
|
11632
11777
|
id: asDesignSystemTemplateId(`template:${input.id.replace("site-style:", "")}`),
|
|
11633
11778
|
name: input.name,
|
|
@@ -11771,12 +11916,13 @@ var curatedSiteStyles = [
|
|
|
11771
11916
|
name: "Quiet Luxury",
|
|
11772
11917
|
description: "Minimal, confident, and refined for premium experiences and private services.",
|
|
11773
11918
|
generationBrief: "Use fewer claims, more specificity, and restrained sensory detail. Favor elegant media and low repetition over dense panels.",
|
|
11774
|
-
|
|
11775
|
-
|
|
11776
|
-
"
|
|
11777
|
-
"
|
|
11778
|
-
"
|
|
11779
|
-
"
|
|
11919
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 20 },
|
|
11920
|
+
selectionKeywordRules: [
|
|
11921
|
+
{ kind: "word", value: "luxury" },
|
|
11922
|
+
{ kind: "word", value: "premium" },
|
|
11923
|
+
{ kind: "word", value: "boutique" },
|
|
11924
|
+
{ kind: "word", value: "bespoke" },
|
|
11925
|
+
{ kind: "word", value: "exclusive" }
|
|
11780
11926
|
],
|
|
11781
11927
|
tokenRecipes: {
|
|
11782
11928
|
palette: "high-contrast",
|
|
@@ -11805,13 +11951,14 @@ var curatedSiteStyles = [
|
|
|
11805
11951
|
name: "Practical Services",
|
|
11806
11952
|
description: "Efficient, plainspoken, and conversion-focused for trades and everyday services.",
|
|
11807
11953
|
generationBrief: "Make services, location, trust signals, and contact paths obvious. Keep copy brief and avoid ornate visual treatments.",
|
|
11808
|
-
|
|
11809
|
-
|
|
11810
|
-
"
|
|
11811
|
-
"
|
|
11812
|
-
"
|
|
11813
|
-
"
|
|
11814
|
-
"
|
|
11954
|
+
siteCreatorSelection: { kind: "primary_goal_support" },
|
|
11955
|
+
selectionKeywordRules: [
|
|
11956
|
+
{ kind: "word", value: "repair" },
|
|
11957
|
+
{ kind: "substring", value: "plumb" },
|
|
11958
|
+
{ kind: "substring", value: "electric" },
|
|
11959
|
+
{ kind: "word", value: "cleaning" },
|
|
11960
|
+
{ kind: "substring", value: "landscap" },
|
|
11961
|
+
{ kind: "substring", value: "contractor" }
|
|
11815
11962
|
],
|
|
11816
11963
|
tokenRecipes: {
|
|
11817
11964
|
palette: "brand-led",
|
|
@@ -11862,18 +12009,134 @@ var curatedSiteStyles = [
|
|
|
11862
12009
|
paletteChoice("warm-neutral-forest")
|
|
11863
12010
|
]
|
|
11864
12011
|
}),
|
|
12012
|
+
defineCuratedSiteStyle({
|
|
12013
|
+
id: "site-style:quiet-practice",
|
|
12014
|
+
name: "Quiet Practice",
|
|
12015
|
+
description: "Grounded, calm, and practical for small appointment-first practices.",
|
|
12016
|
+
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.",
|
|
12017
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 30 },
|
|
12018
|
+
selectionKeywordRules: [
|
|
12019
|
+
{ kind: "substring", value: "massage" },
|
|
12020
|
+
{ kind: "word", value: "bodywork" },
|
|
12021
|
+
{ kind: "phrase", value: "appointment practice" },
|
|
12022
|
+
{ kind: "phrase", value: "appointment-first" },
|
|
12023
|
+
{ kind: "substring", value: "practitioner" },
|
|
12024
|
+
{ kind: "substring", value: "therap" },
|
|
12025
|
+
{ kind: "substring", value: "clinic" },
|
|
12026
|
+
{ kind: "phrase", value: "wellness practice" }
|
|
12027
|
+
],
|
|
12028
|
+
tokenRecipes: {
|
|
12029
|
+
palette: "soft-natural",
|
|
12030
|
+
contrast: "standard",
|
|
12031
|
+
radius: "soft",
|
|
12032
|
+
shadow: "subtle",
|
|
12033
|
+
typography: "clean-sans",
|
|
12034
|
+
spacing: "regular",
|
|
12035
|
+
motion: "subtle"
|
|
12036
|
+
},
|
|
12037
|
+
compositionBudget: quietBudget,
|
|
12038
|
+
recommendedHeaderLookIds: ["practical-utility", "clean-base", "centered-calm"],
|
|
12039
|
+
buttonPersonalityChoices: [
|
|
12040
|
+
buttonChoice("pebble"),
|
|
12041
|
+
buttonChoice("soft-pill"),
|
|
12042
|
+
buttonChoice("editorial-link")
|
|
12043
|
+
],
|
|
12044
|
+
paletteVariantChoices: [
|
|
12045
|
+
paletteChoice("soft-natural-stone"),
|
|
12046
|
+
paletteChoice("soft-natural-sage"),
|
|
12047
|
+
paletteChoice("warm-neutral-clay")
|
|
12048
|
+
]
|
|
12049
|
+
}),
|
|
12050
|
+
defineCuratedSiteStyle({
|
|
12051
|
+
id: "site-style:personal-retreat-journal",
|
|
12052
|
+
name: "Personal Retreat Journal",
|
|
12053
|
+
description: "Warm, story-led, and readable for solo practitioners with mixed offers.",
|
|
12054
|
+
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.",
|
|
12055
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 40 },
|
|
12056
|
+
selectionKeywordRules: [
|
|
12057
|
+
{ kind: "substring", value: "retreat" },
|
|
12058
|
+
{ kind: "phrase", value: "solo practitioner" },
|
|
12059
|
+
{ kind: "phrase", value: "personal brand" },
|
|
12060
|
+
{ kind: "substring", value: "teacher" },
|
|
12061
|
+
{ kind: "substring", value: "coach" },
|
|
12062
|
+
{ kind: "phrase", value: "retreat resources" },
|
|
12063
|
+
{ kind: "substring", value: "journal" }
|
|
12064
|
+
],
|
|
12065
|
+
tokenRecipes: {
|
|
12066
|
+
palette: "warm-neutral",
|
|
12067
|
+
contrast: "standard",
|
|
12068
|
+
radius: "soft",
|
|
12069
|
+
shadow: "subtle",
|
|
12070
|
+
typography: "serif-editorial",
|
|
12071
|
+
spacing: "airy",
|
|
12072
|
+
motion: "subtle"
|
|
12073
|
+
},
|
|
12074
|
+
compositionBudget: balancedBudget,
|
|
12075
|
+
recommendedHeaderLookIds: ["editorial-line", "centered-calm", "minimal-transparent"],
|
|
12076
|
+
buttonPersonalityChoices: [
|
|
12077
|
+
buttonChoice("editorial-link"),
|
|
12078
|
+
buttonChoice("soft-pill"),
|
|
12079
|
+
buttonChoice("brushed-wash")
|
|
12080
|
+
],
|
|
12081
|
+
paletteVariantChoices: [
|
|
12082
|
+
paletteChoice("warm-neutral-forest"),
|
|
12083
|
+
paletteChoice("warm-neutral-clay"),
|
|
12084
|
+
paletteChoice("soft-natural-stone")
|
|
12085
|
+
]
|
|
12086
|
+
}),
|
|
12087
|
+
defineCuratedSiteStyle({
|
|
12088
|
+
id: "site-style:tactile-workshop",
|
|
12089
|
+
name: "Tactile Workshop",
|
|
12090
|
+
description: "Bright, hands-on, and image-led for maker studios, workshops, and creative classes.",
|
|
12091
|
+
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.",
|
|
12092
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 50 },
|
|
12093
|
+
selectionKeywordRules: [
|
|
12094
|
+
{ kind: "substring", value: "ceramic" },
|
|
12095
|
+
{ kind: "word", value: "pottery" },
|
|
12096
|
+
{ kind: "phrase", value: "maker studio" },
|
|
12097
|
+
{ kind: "phrase", value: "craft class" },
|
|
12098
|
+
{ kind: "phrase", value: "craft workshop" },
|
|
12099
|
+
{ kind: "word", value: "clay" },
|
|
12100
|
+
{ kind: "word", value: "kiln" }
|
|
12101
|
+
],
|
|
12102
|
+
tokenRecipes: {
|
|
12103
|
+
palette: "brand-led",
|
|
12104
|
+
contrast: "standard",
|
|
12105
|
+
radius: "soft",
|
|
12106
|
+
shadow: "subtle",
|
|
12107
|
+
typography: "friendly-sans",
|
|
12108
|
+
spacing: "regular",
|
|
12109
|
+
motion: "subtle"
|
|
12110
|
+
},
|
|
12111
|
+
compositionBudget: balancedBudget,
|
|
12112
|
+
recommendedHeaderLookIds: ["brand-solid", "practical-utility", "clean-base"],
|
|
12113
|
+
recommendedFooterLookIds: ["site-footer-brand-two-band", "footer-muted-grounding"],
|
|
12114
|
+
buttonPersonalityChoices: [
|
|
12115
|
+
buttonChoice("pebble"),
|
|
12116
|
+
buttonChoice("confident-chip"),
|
|
12117
|
+
buttonChoice("ink-stamp"),
|
|
12118
|
+
buttonChoice("editorial-link")
|
|
12119
|
+
],
|
|
12120
|
+
paletteVariantChoices: [
|
|
12121
|
+
paletteChoice("brand-led-warm"),
|
|
12122
|
+
paletteChoice("brand-led-cool"),
|
|
12123
|
+
paletteChoice("soft-natural-watercolor"),
|
|
12124
|
+
paletteChoice("warm-neutral-clay")
|
|
12125
|
+
]
|
|
12126
|
+
}),
|
|
11865
12127
|
defineCuratedSiteStyle({
|
|
11866
12128
|
id: "site-style:bold-launch",
|
|
11867
12129
|
name: "Bold Launch",
|
|
11868
12130
|
description: "High-energy and punchy for launches, campaigns, and creative offers.",
|
|
11869
12131
|
generationBrief: "Use crisp positioning, bold hero structure, strong calls to action, and confident visual rhythm. Keep it precise, not shouty.",
|
|
11870
|
-
|
|
11871
|
-
|
|
11872
|
-
"
|
|
11873
|
-
"
|
|
11874
|
-
"
|
|
11875
|
-
"
|
|
11876
|
-
"
|
|
12132
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 10 },
|
|
12133
|
+
selectionKeywordRules: [
|
|
12134
|
+
{ kind: "substring", value: "launch" },
|
|
12135
|
+
{ kind: "substring", value: "campaign" },
|
|
12136
|
+
{ kind: "word", value: "preorder" },
|
|
12137
|
+
{ kind: "phrase", value: "pre-order" },
|
|
12138
|
+
{ kind: "substring", value: "waitlist" },
|
|
12139
|
+
{ kind: "word", value: "drop" }
|
|
11877
12140
|
],
|
|
11878
12141
|
tokenRecipes: {
|
|
11879
12142
|
palette: "high-contrast",
|
|
@@ -11904,15 +12167,6 @@ var curatedSiteStyles = [
|
|
|
11904
12167
|
name: "South West Twerk School",
|
|
11905
12168
|
description: "Energetic, editorial, and high-contrast for a branded dance school presence.",
|
|
11906
12169
|
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.",
|
|
11907
|
-
selectionKeywords: [
|
|
11908
|
-
"dance",
|
|
11909
|
-
"classes",
|
|
11910
|
-
"workshop",
|
|
11911
|
-
"school",
|
|
11912
|
-
"movement",
|
|
11913
|
-
"performance",
|
|
11914
|
-
"community"
|
|
11915
|
-
],
|
|
11916
12170
|
tokenRecipes: {
|
|
11917
12171
|
palette: "brand-led",
|
|
11918
12172
|
contrast: "maximum",
|
|
@@ -12219,25 +12473,19 @@ var defaultDesignRuntimeRules = defineDesignRuntimeRules({
|
|
|
12219
12473
|
"muted-band": {
|
|
12220
12474
|
background: {
|
|
12221
12475
|
type: "color",
|
|
12222
|
-
color: "muted"
|
|
12223
|
-
textColor: "text",
|
|
12224
|
-
headingColor: "text"
|
|
12476
|
+
color: "muted"
|
|
12225
12477
|
}
|
|
12226
12478
|
},
|
|
12227
12479
|
"accent-band": {
|
|
12228
12480
|
background: {
|
|
12229
12481
|
type: "color",
|
|
12230
|
-
color: "primary"
|
|
12231
|
-
textColor: "primaryForeground",
|
|
12232
|
-
headingColor: "primaryForeground"
|
|
12482
|
+
color: "primary"
|
|
12233
12483
|
}
|
|
12234
12484
|
},
|
|
12235
12485
|
"brand-depth-band": {
|
|
12236
12486
|
background: {
|
|
12237
12487
|
type: "color",
|
|
12238
|
-
color: "primary-800"
|
|
12239
|
-
textColor: "primaryForeground",
|
|
12240
|
-
headingColor: "primaryForeground"
|
|
12488
|
+
color: "primary-800"
|
|
12241
12489
|
}
|
|
12242
12490
|
},
|
|
12243
12491
|
"hero-image": {
|
|
@@ -18345,6 +18593,16 @@ var jsonArrayTransform = {
|
|
|
18345
18593
|
return "";
|
|
18346
18594
|
}
|
|
18347
18595
|
};
|
|
18596
|
+
var csvTransform = {
|
|
18597
|
+
id: "value.csv",
|
|
18598
|
+
kind: "formatter",
|
|
18599
|
+
summary: "Normalize a string or array of strings into a comma-separated list",
|
|
18600
|
+
run: (value) => {
|
|
18601
|
+
const rawValues = Array.isArray(value) ? value : typeof value === "string" ? value.split(",") : [];
|
|
18602
|
+
const normalized = rawValues.filter((item) => typeof item === "string").map((item) => item.trim()).filter(Boolean);
|
|
18603
|
+
return normalized.length > 0 ? Array.from(new Set(normalized)).join(",") : "";
|
|
18604
|
+
}
|
|
18605
|
+
};
|
|
18348
18606
|
var marqueeLoopOptionsSchema = z36.object({
|
|
18349
18607
|
minItems: z36.number().int().min(1).default(10)
|
|
18350
18608
|
});
|
|
@@ -18370,6 +18628,7 @@ var formattingTransforms = [
|
|
|
18370
18628
|
dateFormatShort,
|
|
18371
18629
|
arrayLengthTransform,
|
|
18372
18630
|
jsonArrayTransform,
|
|
18631
|
+
csvTransform,
|
|
18373
18632
|
marqueeLoopTransform
|
|
18374
18633
|
];
|
|
18375
18634
|
|
|
@@ -18853,73 +19112,6 @@ var uiTransforms = [
|
|
|
18853
19112
|
|
|
18854
19113
|
// ../blocks/src/system/transforms/registry/layout.ts
|
|
18855
19114
|
import { z as z38 } from "zod";
|
|
18856
|
-
|
|
18857
|
-
// ../theme-core/src/palette/utils/colorConversion.ts
|
|
18858
|
-
var mod = (a, n) => (a % n + n) % n;
|
|
18859
|
-
var deg = (x) => mod(x, 360);
|
|
18860
|
-
function hexToRgb(hex) {
|
|
18861
|
-
const h = hex.replace(/^#/, "");
|
|
18862
|
-
const m = h.length === 3 ? h.split("").map((c) => c + c).join("") : h;
|
|
18863
|
-
if (m.length !== 6) throw new Error("Bad hex");
|
|
18864
|
-
const int = parseInt(m, 16);
|
|
18865
|
-
return { r: int >> 16 & 255, g: int >> 8 & 255, b: int & 255 };
|
|
18866
|
-
}
|
|
18867
|
-
function srgbToLinear(u) {
|
|
18868
|
-
const x = u / 255;
|
|
18869
|
-
return x <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);
|
|
18870
|
-
}
|
|
18871
|
-
function rgbToHsl(r, g, b) {
|
|
18872
|
-
const R = r / 255, G = g / 255, B = b / 255;
|
|
18873
|
-
const max = Math.max(R, G, B), min = Math.min(R, G, B);
|
|
18874
|
-
const d = max - min;
|
|
18875
|
-
let h = 0;
|
|
18876
|
-
if (d !== 0) {
|
|
18877
|
-
switch (max) {
|
|
18878
|
-
case R:
|
|
18879
|
-
h = (G - B) / d + (G < B ? 6 : 0);
|
|
18880
|
-
break;
|
|
18881
|
-
case G:
|
|
18882
|
-
h = (B - R) / d + 2;
|
|
18883
|
-
break;
|
|
18884
|
-
case B:
|
|
18885
|
-
h = (R - G) / d + 4;
|
|
18886
|
-
break;
|
|
18887
|
-
}
|
|
18888
|
-
h *= 60;
|
|
18889
|
-
}
|
|
18890
|
-
const l = (max + min) / 2;
|
|
18891
|
-
const s = d === 0 ? 0 : d / (1 - Math.abs(2 * l - 1));
|
|
18892
|
-
return { h, s, l };
|
|
18893
|
-
}
|
|
18894
|
-
function srgbToOklab(r, g, b) {
|
|
18895
|
-
const R = srgbToLinear(r), G = srgbToLinear(g), B = srgbToLinear(b);
|
|
18896
|
-
const l = 0.4122214708 * R + 0.5363325363 * G + 0.0514459929 * B;
|
|
18897
|
-
const m = 0.2119034982 * R + 0.6806995451 * G + 0.1073969566 * B;
|
|
18898
|
-
const s = 0.0883024619 * R + 0.2817188376 * G + 0.6299787005 * B;
|
|
18899
|
-
const l_ = Math.cbrt(l), m_ = Math.cbrt(m), s_ = Math.cbrt(s);
|
|
18900
|
-
const L = 0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_;
|
|
18901
|
-
const a = 1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_;
|
|
18902
|
-
const b2 = 0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_;
|
|
18903
|
-
return { L, a, b: b2 };
|
|
18904
|
-
}
|
|
18905
|
-
function oklabToOklch(L, a, b) {
|
|
18906
|
-
const C = Math.sqrt(a * a + b * b);
|
|
18907
|
-
const h = C < 1e-7 ? 0 : deg(Math.atan2(b, a) * 180 / Math.PI);
|
|
18908
|
-
return { L, C, h };
|
|
18909
|
-
}
|
|
18910
|
-
function featuresFromHex(hex) {
|
|
18911
|
-
const { r, g, b } = hexToRgb(hex);
|
|
18912
|
-
const { h, s, l } = rgbToHsl(r, g, b);
|
|
18913
|
-
const { L, a, b: b2 } = srgbToOklab(r, g, b);
|
|
18914
|
-
const { L: okL, C: okC, h: okH } = oklabToOklch(L, a, b2);
|
|
18915
|
-
const max = Math.max(r, g, b);
|
|
18916
|
-
const v = max / 255;
|
|
18917
|
-
const Y = 0.2126 * srgbToLinear(r) + 0.7152 * srgbToLinear(g) + 0.0722 * srgbToLinear(b);
|
|
18918
|
-
const chroma = s;
|
|
18919
|
-
return { r, g, b, h, s, l, v, Y, chroma, okL, okC, okH, hex };
|
|
18920
|
-
}
|
|
18921
|
-
|
|
18922
|
-
// ../blocks/src/system/transforms/registry/layout.ts
|
|
18923
19115
|
var joinClasses4 = (parts) => parts.filter(
|
|
18924
19116
|
(part) => typeof part === "string" && part.trim().length > 0
|
|
18925
19117
|
).join(" ").replace(/\s+/g, " ").trim();
|
|
@@ -23603,7 +23795,12 @@ var eventListingBlockDefinition = {
|
|
|
23603
23795
|
detailLevel: "listing",
|
|
23604
23796
|
kind: { $bind: { from: "content.kind" } },
|
|
23605
23797
|
eventSurface: { $bind: { from: "content.eventSurface" } },
|
|
23606
|
-
eventPresets: {
|
|
23798
|
+
eventPresets: {
|
|
23799
|
+
$bind: {
|
|
23800
|
+
from: "content.filterEventPresets",
|
|
23801
|
+
transforms: [{ id: "value.csv" }]
|
|
23802
|
+
}
|
|
23803
|
+
},
|
|
23607
23804
|
scheduleScope: { $bind: { from: "content.scheduleScope" } }
|
|
23608
23805
|
},
|
|
23609
23806
|
mode: "server"
|
|
@@ -24355,7 +24552,12 @@ var eventCalendarBlockDefinition = {
|
|
|
24355
24552
|
// Pass filter params if configured
|
|
24356
24553
|
kind: { $bind: { from: "content.kind" } },
|
|
24357
24554
|
eventSurface: { $bind: { from: "content.eventSurface" } },
|
|
24358
|
-
eventPresets: {
|
|
24555
|
+
eventPresets: {
|
|
24556
|
+
$bind: {
|
|
24557
|
+
from: "content.filterEventPresets",
|
|
24558
|
+
transforms: [{ id: "value.csv" }]
|
|
24559
|
+
}
|
|
24560
|
+
},
|
|
24359
24561
|
scheduleScope: { $bind: { from: "content.scheduleScope" } },
|
|
24360
24562
|
categoryIds: { $bind: { from: "content.filterCategoryIds" } },
|
|
24361
24563
|
staffMemberId: { $bind: { from: "content.filterStaffMemberId" } },
|