@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/data.mjs
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
// ../api/src/apiEndpointTypes.ts
|
|
2
|
+
function blockedDemoMutationPolicy(classification, publicMessage) {
|
|
3
|
+
if (publicMessage.trim() === "") {
|
|
4
|
+
throw new Error(`Demo mutation policy ${classification} requires publicMessage.`);
|
|
5
|
+
}
|
|
6
|
+
return {
|
|
7
|
+
classification,
|
|
8
|
+
publicMessage
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
|
|
1
12
|
// ../api/src/cache-tags.ts
|
|
2
13
|
var TAG_TEMPLATES = {
|
|
3
14
|
siteCollection: "riverbank:site",
|
|
@@ -28,6 +39,18 @@ var TAG_TEMPLATES = {
|
|
|
28
39
|
};
|
|
29
40
|
|
|
30
41
|
// ../api/src/endpoints.ts
|
|
42
|
+
var DEMO_MUTATION_BLOCKED_HIDDEN = blockedDemoMutationPolicy(
|
|
43
|
+
"blocked-hidden",
|
|
44
|
+
"This action is not available in demo sites."
|
|
45
|
+
);
|
|
46
|
+
var DEMO_MUTATION_BLOCKED_DISABLED = blockedDemoMutationPolicy(
|
|
47
|
+
"blocked-disabled",
|
|
48
|
+
"This setting is disabled in demo sites."
|
|
49
|
+
);
|
|
50
|
+
var DEMO_MUTATION_INTERNAL_ONLY = blockedDemoMutationPolicy(
|
|
51
|
+
"internal-only",
|
|
52
|
+
"This internal operation is not available in demo sites."
|
|
53
|
+
);
|
|
31
54
|
var ENDPOINT_DEFINITIONS = {
|
|
32
55
|
// AI endpoints - no cache due to dynamic nature
|
|
33
56
|
aiContentUpdateChat: {
|
|
@@ -144,7 +167,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
144
167
|
path: "/sites/{siteId}/ai/generate",
|
|
145
168
|
method: "POST",
|
|
146
169
|
auth: "user",
|
|
147
|
-
responseKind: "json"
|
|
170
|
+
responseKind: "json",
|
|
171
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
148
172
|
},
|
|
149
173
|
getOnboardingPreviewStatus: {
|
|
150
174
|
path: "/public/sites/{siteId}/onboarding/preview-status",
|
|
@@ -165,7 +189,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
165
189
|
method: "POST",
|
|
166
190
|
auth: "user",
|
|
167
191
|
errors: [],
|
|
168
|
-
responseKind: "json"
|
|
192
|
+
responseKind: "json",
|
|
193
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED
|
|
169
194
|
},
|
|
170
195
|
goLiveSite: {
|
|
171
196
|
path: "/sites/{siteId}/launch/go-live",
|
|
@@ -234,20 +259,23 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
234
259
|
path: "/sites/{siteId}/ai/site-wizard/goals",
|
|
235
260
|
method: "POST",
|
|
236
261
|
auth: "user",
|
|
237
|
-
responseKind: "json"
|
|
262
|
+
responseKind: "json",
|
|
263
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
238
264
|
},
|
|
239
265
|
aiSiteWizardIntakeTriage: {
|
|
240
266
|
path: "/sites/{siteId}/ai/site-wizard/intake-triage",
|
|
241
267
|
method: "POST",
|
|
242
268
|
auth: "user",
|
|
243
|
-
responseKind: "json"
|
|
269
|
+
responseKind: "json",
|
|
270
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
244
271
|
},
|
|
245
272
|
aiSiteWizardTelemetry: {
|
|
246
273
|
path: "/sites/{siteId}/ai/site-wizard/telemetry",
|
|
247
274
|
method: "POST",
|
|
248
275
|
auth: "user",
|
|
249
276
|
errors: [],
|
|
250
|
-
responseKind: "json"
|
|
277
|
+
responseKind: "json",
|
|
278
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
251
279
|
},
|
|
252
280
|
// Admin SEO
|
|
253
281
|
listGscPropertiesAdmin: {
|
|
@@ -454,7 +482,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
454
482
|
responseKind: "json",
|
|
455
483
|
errors: ["resource:not_found", "server:internal_error"]
|
|
456
484
|
},
|
|
457
|
-
// Ops (event
|
|
485
|
+
// Ops (staff event operators/admins)
|
|
458
486
|
opsListUpcomingEventOccurrences: {
|
|
459
487
|
path: "/ops/sites/{siteId}/events",
|
|
460
488
|
method: "GET",
|
|
@@ -472,6 +500,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
472
500
|
method: "POST",
|
|
473
501
|
auth: "user",
|
|
474
502
|
responseKind: "json",
|
|
503
|
+
demoMutation: DEMO_MUTATION_INTERNAL_ONLY,
|
|
475
504
|
errors: [
|
|
476
505
|
"validation:invalid_input",
|
|
477
506
|
"auth:forbidden",
|
|
@@ -484,6 +513,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
484
513
|
method: "POST",
|
|
485
514
|
auth: "user",
|
|
486
515
|
responseKind: "json",
|
|
516
|
+
demoMutation: DEMO_MUTATION_INTERNAL_ONLY,
|
|
487
517
|
errors: [
|
|
488
518
|
"validation:invalid_input",
|
|
489
519
|
"auth:forbidden",
|
|
@@ -502,6 +532,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
502
532
|
method: "POST",
|
|
503
533
|
auth: "user",
|
|
504
534
|
responseKind: "json",
|
|
535
|
+
demoMutation: DEMO_MUTATION_INTERNAL_ONLY,
|
|
505
536
|
errors: [
|
|
506
537
|
"validation:invalid_input",
|
|
507
538
|
"auth:forbidden",
|
|
@@ -535,6 +566,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
535
566
|
method: "POST",
|
|
536
567
|
auth: "user",
|
|
537
568
|
responseKind: "json",
|
|
569
|
+
demoMutation: DEMO_MUTATION_INTERNAL_ONLY,
|
|
538
570
|
errors: [
|
|
539
571
|
"validation:invalid_input",
|
|
540
572
|
"auth:forbidden",
|
|
@@ -563,7 +595,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
563
595
|
method: "POST",
|
|
564
596
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings],
|
|
565
597
|
auth: "user",
|
|
566
|
-
responseKind: "json"
|
|
598
|
+
responseKind: "json",
|
|
599
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
567
600
|
},
|
|
568
601
|
previewEmailTemplate: {
|
|
569
602
|
path: "/sites/{siteId}/settings/emails/preview",
|
|
@@ -614,14 +647,16 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
614
647
|
method: "POST",
|
|
615
648
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
616
649
|
auth: "user",
|
|
617
|
-
responseKind: "json"
|
|
650
|
+
responseKind: "json",
|
|
651
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
618
652
|
},
|
|
619
653
|
createNewsletterSubscribersImportUploadUrl: {
|
|
620
654
|
path: "/sites/{siteId}/newsletter/subscribers/import-url",
|
|
621
655
|
method: "POST",
|
|
622
656
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
623
657
|
auth: "user",
|
|
624
|
-
responseKind: "json"
|
|
658
|
+
responseKind: "json",
|
|
659
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
625
660
|
},
|
|
626
661
|
exportNewsletterSubscribersCsv: {
|
|
627
662
|
path: "/sites/{siteId}/newsletter/subscribers/export.csv",
|
|
@@ -818,14 +853,16 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
818
853
|
method: "POST",
|
|
819
854
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
820
855
|
auth: "user",
|
|
821
|
-
responseKind: "json"
|
|
856
|
+
responseKind: "json",
|
|
857
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
822
858
|
},
|
|
823
859
|
testSendNewsletterCampaign: {
|
|
824
860
|
path: "/sites/{siteId}/newsletter/campaigns/{campaignId}/test-send",
|
|
825
861
|
method: "POST",
|
|
826
862
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
827
863
|
auth: "user",
|
|
828
|
-
responseKind: "json"
|
|
864
|
+
responseKind: "json",
|
|
865
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
829
866
|
},
|
|
830
867
|
listNewsletterSendJobs: {
|
|
831
868
|
path: "/sites/{siteId}/newsletter/jobs",
|
|
@@ -873,6 +910,20 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
873
910
|
responseKind: "json",
|
|
874
911
|
errors: ["validation:invalid_input", "billing:plan_limit_exceeded", "server:internal_error"]
|
|
875
912
|
},
|
|
913
|
+
createAppointmentResourceWithAccountAccess: {
|
|
914
|
+
path: "/sites/{siteId}/bookings/resources/account-access",
|
|
915
|
+
method: "POST",
|
|
916
|
+
auth: "user",
|
|
917
|
+
responseKind: "json",
|
|
918
|
+
errors: [
|
|
919
|
+
"validation:invalid_input",
|
|
920
|
+
"auth:forbidden",
|
|
921
|
+
"billing:plan_limit_exceeded",
|
|
922
|
+
"resource:conflict",
|
|
923
|
+
"resource:not_found",
|
|
924
|
+
"server:internal_error"
|
|
925
|
+
]
|
|
926
|
+
},
|
|
876
927
|
getAppointmentResource: {
|
|
877
928
|
path: "/sites/{siteId}/bookings/resources/{resourceId}",
|
|
878
929
|
method: "GET",
|
|
@@ -1513,7 +1564,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
1513
1564
|
method: "DELETE",
|
|
1514
1565
|
tags: ["site", "site-{siteId}"],
|
|
1515
1566
|
auth: "user",
|
|
1516
|
-
responseKind: "json"
|
|
1567
|
+
responseKind: "json",
|
|
1568
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
1517
1569
|
},
|
|
1518
1570
|
listSiteMembers: {
|
|
1519
1571
|
path: "/sites/{siteId}/members",
|
|
@@ -1969,7 +2021,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
1969
2021
|
method: "POST",
|
|
1970
2022
|
tags: ["site-{siteId}", "content-{siteId}-{type}"],
|
|
1971
2023
|
auth: "user",
|
|
1972
|
-
responseKind: "json"
|
|
2024
|
+
responseKind: "json",
|
|
2025
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
1973
2026
|
},
|
|
1974
2027
|
updateSiteGeneralSettings: {
|
|
1975
2028
|
path: "/sites/{siteId}/settings/general",
|
|
@@ -4208,6 +4261,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4208
4261
|
method: "POST",
|
|
4209
4262
|
tags: ["site-{siteId}"],
|
|
4210
4263
|
auth: "user",
|
|
4264
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN,
|
|
4211
4265
|
errors: [
|
|
4212
4266
|
"validation:invalid_input",
|
|
4213
4267
|
"auth:forbidden",
|
|
@@ -4222,6 +4276,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4222
4276
|
method: "POST",
|
|
4223
4277
|
tags: ["site-{siteId}"],
|
|
4224
4278
|
auth: "user",
|
|
4279
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN,
|
|
4225
4280
|
errors: [
|
|
4226
4281
|
"validation:invalid_input",
|
|
4227
4282
|
"auth:forbidden",
|
|
@@ -4531,6 +4586,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4531
4586
|
tags: ["site-{siteId}", "passes-{siteId}"],
|
|
4532
4587
|
auth: "user",
|
|
4533
4588
|
responseKind: "json",
|
|
4589
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4534
4590
|
errors: ["validation:invalid_input", "server:internal_error"]
|
|
4535
4591
|
},
|
|
4536
4592
|
getBookingPass: {
|
|
@@ -4546,6 +4602,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4546
4602
|
tags: ["site-{siteId}", "passes-{siteId}"],
|
|
4547
4603
|
auth: "user",
|
|
4548
4604
|
responseKind: "json",
|
|
4605
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4549
4606
|
errors: [
|
|
4550
4607
|
"validation:invalid_input",
|
|
4551
4608
|
"resource:not_found",
|
|
@@ -4558,6 +4615,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4558
4615
|
tags: ["site-{siteId}", "passes-{siteId}"],
|
|
4559
4616
|
auth: "user",
|
|
4560
4617
|
responseKind: "json",
|
|
4618
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4561
4619
|
errors: [
|
|
4562
4620
|
"validation:invalid_input",
|
|
4563
4621
|
"resource:not_found",
|
|
@@ -4613,6 +4671,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4613
4671
|
tags: ["site-{siteId}", "memberships-{siteId}"],
|
|
4614
4672
|
auth: "user",
|
|
4615
4673
|
responseKind: "json",
|
|
4674
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4616
4675
|
errors: ["validation:invalid_input", "server:internal_error"]
|
|
4617
4676
|
},
|
|
4618
4677
|
getBookingMembership: {
|
|
@@ -4628,6 +4687,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4628
4687
|
tags: ["site-{siteId}", "memberships-{siteId}"],
|
|
4629
4688
|
auth: "user",
|
|
4630
4689
|
responseKind: "json",
|
|
4690
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4631
4691
|
errors: [
|
|
4632
4692
|
"validation:invalid_input",
|
|
4633
4693
|
"resource:not_found",
|
|
@@ -4640,6 +4700,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4640
4700
|
tags: ["site-{siteId}", "memberships-{siteId}"],
|
|
4641
4701
|
auth: "user",
|
|
4642
4702
|
responseKind: "json",
|
|
4703
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4643
4704
|
errors: [
|
|
4644
4705
|
"validation:invalid_input",
|
|
4645
4706
|
"resource:not_found",
|
|
@@ -4856,6 +4917,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4856
4917
|
tags: ["site-{siteId}", "customers-{siteId}"],
|
|
4857
4918
|
auth: "user",
|
|
4858
4919
|
responseKind: "json",
|
|
4920
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4859
4921
|
errors: [
|
|
4860
4922
|
"validation:invalid_input",
|
|
4861
4923
|
"auth:forbidden",
|
|
@@ -7115,8 +7177,7 @@ var dashboardNavVisibilityBaseSchema = z5.object({
|
|
|
7115
7177
|
var dashboardNavVisibilityRolesSchema = z5.object({
|
|
7116
7178
|
administrator: dashboardNavVisibilityBaseSchema.optional(),
|
|
7117
7179
|
editor: dashboardNavVisibilityBaseSchema.optional(),
|
|
7118
|
-
team_member: dashboardNavVisibilityBaseSchema.optional()
|
|
7119
|
-
event_host: dashboardNavVisibilityBaseSchema.optional()
|
|
7180
|
+
team_member: dashboardNavVisibilityBaseSchema.optional()
|
|
7120
7181
|
}).strip().optional();
|
|
7121
7182
|
var dashboardNavVisibilitySchema = dashboardNavVisibilityBaseSchema.extend({
|
|
7122
7183
|
roles: dashboardNavVisibilityRolesSchema
|
|
@@ -7637,6 +7698,21 @@ var appointmentSetupServiceDraftSchema = z7.object({
|
|
|
7637
7698
|
timezone: z7.string().trim().min(1).nullable(),
|
|
7638
7699
|
payment: appointmentSetupPaymentDraftSchema,
|
|
7639
7700
|
assignment: appointmentSetupServiceAssignmentDraftSchema
|
|
7701
|
+
}).superRefine((service, ctx) => {
|
|
7702
|
+
if (service.payment.priceType === "paid" && (service.priceAmount === null || service.priceAmount <= 0)) {
|
|
7703
|
+
ctx.addIssue({
|
|
7704
|
+
code: "custom",
|
|
7705
|
+
path: ["priceAmount"],
|
|
7706
|
+
message: "Paid appointment services need a positive price."
|
|
7707
|
+
});
|
|
7708
|
+
}
|
|
7709
|
+
if (service.payment.priceType === "free" && service.priceAmount !== null && service.priceAmount > 0) {
|
|
7710
|
+
ctx.addIssue({
|
|
7711
|
+
code: "custom",
|
|
7712
|
+
path: ["priceAmount"],
|
|
7713
|
+
message: "Free appointment services cannot carry a positive price."
|
|
7714
|
+
});
|
|
7715
|
+
}
|
|
7640
7716
|
});
|
|
7641
7717
|
var appointmentSetupPractitionerDraftSchema = z7.object({
|
|
7642
7718
|
ref: appointmentSetupRefSchema,
|
|
@@ -8009,6 +8085,71 @@ function registerManifest(manifest) {
|
|
|
8009
8085
|
return manifest;
|
|
8010
8086
|
}
|
|
8011
8087
|
|
|
8088
|
+
// ../theme-core/src/palette/utils/colorConversion.ts
|
|
8089
|
+
var mod = (a, n) => (a % n + n) % n;
|
|
8090
|
+
var deg = (x) => mod(x, 360);
|
|
8091
|
+
function hexToRgb(hex) {
|
|
8092
|
+
const h = hex.replace(/^#/, "");
|
|
8093
|
+
const m = h.length === 3 ? h.split("").map((c) => c + c).join("") : h;
|
|
8094
|
+
if (m.length !== 6) throw new Error("Bad hex");
|
|
8095
|
+
const int = parseInt(m, 16);
|
|
8096
|
+
return { r: int >> 16 & 255, g: int >> 8 & 255, b: int & 255 };
|
|
8097
|
+
}
|
|
8098
|
+
function srgbToLinear(u) {
|
|
8099
|
+
const x = u / 255;
|
|
8100
|
+
return x <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);
|
|
8101
|
+
}
|
|
8102
|
+
function rgbToHsl(r, g, b) {
|
|
8103
|
+
const R = r / 255, G = g / 255, B = b / 255;
|
|
8104
|
+
const max = Math.max(R, G, B), min = Math.min(R, G, B);
|
|
8105
|
+
const d = max - min;
|
|
8106
|
+
let h = 0;
|
|
8107
|
+
if (d !== 0) {
|
|
8108
|
+
switch (max) {
|
|
8109
|
+
case R:
|
|
8110
|
+
h = (G - B) / d + (G < B ? 6 : 0);
|
|
8111
|
+
break;
|
|
8112
|
+
case G:
|
|
8113
|
+
h = (B - R) / d + 2;
|
|
8114
|
+
break;
|
|
8115
|
+
case B:
|
|
8116
|
+
h = (R - G) / d + 4;
|
|
8117
|
+
break;
|
|
8118
|
+
}
|
|
8119
|
+
h *= 60;
|
|
8120
|
+
}
|
|
8121
|
+
const l = (max + min) / 2;
|
|
8122
|
+
const s = d === 0 ? 0 : d / (1 - Math.abs(2 * l - 1));
|
|
8123
|
+
return { h, s, l };
|
|
8124
|
+
}
|
|
8125
|
+
function srgbToOklab(r, g, b) {
|
|
8126
|
+
const R = srgbToLinear(r), G = srgbToLinear(g), B = srgbToLinear(b);
|
|
8127
|
+
const l = 0.4122214708 * R + 0.5363325363 * G + 0.0514459929 * B;
|
|
8128
|
+
const m = 0.2119034982 * R + 0.6806995451 * G + 0.1073969566 * B;
|
|
8129
|
+
const s = 0.0883024619 * R + 0.2817188376 * G + 0.6299787005 * B;
|
|
8130
|
+
const l_ = Math.cbrt(l), m_ = Math.cbrt(m), s_ = Math.cbrt(s);
|
|
8131
|
+
const L = 0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_;
|
|
8132
|
+
const a = 1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_;
|
|
8133
|
+
const b2 = 0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_;
|
|
8134
|
+
return { L, a, b: b2 };
|
|
8135
|
+
}
|
|
8136
|
+
function oklabToOklch(L, a, b) {
|
|
8137
|
+
const C = Math.sqrt(a * a + b * b);
|
|
8138
|
+
const h = C < 1e-7 ? 0 : deg(Math.atan2(b, a) * 180 / Math.PI);
|
|
8139
|
+
return { L, C, h };
|
|
8140
|
+
}
|
|
8141
|
+
function featuresFromHex(hex) {
|
|
8142
|
+
const { r, g, b } = hexToRgb(hex);
|
|
8143
|
+
const { h, s, l } = rgbToHsl(r, g, b);
|
|
8144
|
+
const { L, a, b: b2 } = srgbToOklab(r, g, b);
|
|
8145
|
+
const { L: okL, C: okC, h: okH } = oklabToOklch(L, a, b2);
|
|
8146
|
+
const max = Math.max(r, g, b);
|
|
8147
|
+
const v = max / 255;
|
|
8148
|
+
const Y = 0.2126 * srgbToLinear(r) + 0.7152 * srgbToLinear(g) + 0.0722 * srgbToLinear(b);
|
|
8149
|
+
const chroma = s;
|
|
8150
|
+
return { r, g, b, h, s, l, v, Y, chroma, okL, okC, okH, hex };
|
|
8151
|
+
}
|
|
8152
|
+
|
|
8012
8153
|
// ../theme-core/src/site-styles/appearancePresetResolution.ts
|
|
8013
8154
|
function assertValidOptionGroups(preset2) {
|
|
8014
8155
|
preset2.optionGroups?.forEach((group) => {
|
|
@@ -11538,6 +11679,9 @@ var curatedSiteStyleIdValues = [
|
|
|
11538
11679
|
"site-style:bright-community",
|
|
11539
11680
|
"site-style:quiet-luxury",
|
|
11540
11681
|
"site-style:practical-services",
|
|
11682
|
+
"site-style:quiet-practice",
|
|
11683
|
+
"site-style:personal-retreat-journal",
|
|
11684
|
+
"site-style:tactile-workshop",
|
|
11541
11685
|
"site-style:modern-wellness",
|
|
11542
11686
|
"site-style:bold-launch",
|
|
11543
11687
|
"site-style:south-west-twerk-school"
|
|
@@ -11620,7 +11764,8 @@ function defineCuratedSiteStyle(input) {
|
|
|
11620
11764
|
name: input.name,
|
|
11621
11765
|
description: input.description,
|
|
11622
11766
|
generationBrief: input.generationBrief,
|
|
11623
|
-
|
|
11767
|
+
selectionKeywordRules: input.selectionKeywordRules ?? [],
|
|
11768
|
+
siteCreatorSelection: input.siteCreatorSelection ?? { kind: "explicit_only" },
|
|
11624
11769
|
template: {
|
|
11625
11770
|
id: asDesignSystemTemplateId(`template:${input.id.replace("site-style:", "")}`),
|
|
11626
11771
|
name: input.name,
|
|
@@ -11764,12 +11909,13 @@ var curatedSiteStyles = [
|
|
|
11764
11909
|
name: "Quiet Luxury",
|
|
11765
11910
|
description: "Minimal, confident, and refined for premium experiences and private services.",
|
|
11766
11911
|
generationBrief: "Use fewer claims, more specificity, and restrained sensory detail. Favor elegant media and low repetition over dense panels.",
|
|
11767
|
-
|
|
11768
|
-
|
|
11769
|
-
"
|
|
11770
|
-
"
|
|
11771
|
-
"
|
|
11772
|
-
"
|
|
11912
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 20 },
|
|
11913
|
+
selectionKeywordRules: [
|
|
11914
|
+
{ kind: "word", value: "luxury" },
|
|
11915
|
+
{ kind: "word", value: "premium" },
|
|
11916
|
+
{ kind: "word", value: "boutique" },
|
|
11917
|
+
{ kind: "word", value: "bespoke" },
|
|
11918
|
+
{ kind: "word", value: "exclusive" }
|
|
11773
11919
|
],
|
|
11774
11920
|
tokenRecipes: {
|
|
11775
11921
|
palette: "high-contrast",
|
|
@@ -11798,13 +11944,14 @@ var curatedSiteStyles = [
|
|
|
11798
11944
|
name: "Practical Services",
|
|
11799
11945
|
description: "Efficient, plainspoken, and conversion-focused for trades and everyday services.",
|
|
11800
11946
|
generationBrief: "Make services, location, trust signals, and contact paths obvious. Keep copy brief and avoid ornate visual treatments.",
|
|
11801
|
-
|
|
11802
|
-
|
|
11803
|
-
"
|
|
11804
|
-
"
|
|
11805
|
-
"
|
|
11806
|
-
"
|
|
11807
|
-
"
|
|
11947
|
+
siteCreatorSelection: { kind: "primary_goal_support" },
|
|
11948
|
+
selectionKeywordRules: [
|
|
11949
|
+
{ kind: "word", value: "repair" },
|
|
11950
|
+
{ kind: "substring", value: "plumb" },
|
|
11951
|
+
{ kind: "substring", value: "electric" },
|
|
11952
|
+
{ kind: "word", value: "cleaning" },
|
|
11953
|
+
{ kind: "substring", value: "landscap" },
|
|
11954
|
+
{ kind: "substring", value: "contractor" }
|
|
11808
11955
|
],
|
|
11809
11956
|
tokenRecipes: {
|
|
11810
11957
|
palette: "brand-led",
|
|
@@ -11855,18 +12002,134 @@ var curatedSiteStyles = [
|
|
|
11855
12002
|
paletteChoice("warm-neutral-forest")
|
|
11856
12003
|
]
|
|
11857
12004
|
}),
|
|
12005
|
+
defineCuratedSiteStyle({
|
|
12006
|
+
id: "site-style:quiet-practice",
|
|
12007
|
+
name: "Quiet Practice",
|
|
12008
|
+
description: "Grounded, calm, and practical for small appointment-first practices.",
|
|
12009
|
+
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.",
|
|
12010
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 30 },
|
|
12011
|
+
selectionKeywordRules: [
|
|
12012
|
+
{ kind: "substring", value: "massage" },
|
|
12013
|
+
{ kind: "word", value: "bodywork" },
|
|
12014
|
+
{ kind: "phrase", value: "appointment practice" },
|
|
12015
|
+
{ kind: "phrase", value: "appointment-first" },
|
|
12016
|
+
{ kind: "substring", value: "practitioner" },
|
|
12017
|
+
{ kind: "substring", value: "therap" },
|
|
12018
|
+
{ kind: "substring", value: "clinic" },
|
|
12019
|
+
{ kind: "phrase", value: "wellness practice" }
|
|
12020
|
+
],
|
|
12021
|
+
tokenRecipes: {
|
|
12022
|
+
palette: "soft-natural",
|
|
12023
|
+
contrast: "standard",
|
|
12024
|
+
radius: "soft",
|
|
12025
|
+
shadow: "subtle",
|
|
12026
|
+
typography: "clean-sans",
|
|
12027
|
+
spacing: "regular",
|
|
12028
|
+
motion: "subtle"
|
|
12029
|
+
},
|
|
12030
|
+
compositionBudget: quietBudget,
|
|
12031
|
+
recommendedHeaderLookIds: ["practical-utility", "clean-base", "centered-calm"],
|
|
12032
|
+
buttonPersonalityChoices: [
|
|
12033
|
+
buttonChoice("pebble"),
|
|
12034
|
+
buttonChoice("soft-pill"),
|
|
12035
|
+
buttonChoice("editorial-link")
|
|
12036
|
+
],
|
|
12037
|
+
paletteVariantChoices: [
|
|
12038
|
+
paletteChoice("soft-natural-stone"),
|
|
12039
|
+
paletteChoice("soft-natural-sage"),
|
|
12040
|
+
paletteChoice("warm-neutral-clay")
|
|
12041
|
+
]
|
|
12042
|
+
}),
|
|
12043
|
+
defineCuratedSiteStyle({
|
|
12044
|
+
id: "site-style:personal-retreat-journal",
|
|
12045
|
+
name: "Personal Retreat Journal",
|
|
12046
|
+
description: "Warm, story-led, and readable for solo practitioners with mixed offers.",
|
|
12047
|
+
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.",
|
|
12048
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 40 },
|
|
12049
|
+
selectionKeywordRules: [
|
|
12050
|
+
{ kind: "substring", value: "retreat" },
|
|
12051
|
+
{ kind: "phrase", value: "solo practitioner" },
|
|
12052
|
+
{ kind: "phrase", value: "personal brand" },
|
|
12053
|
+
{ kind: "substring", value: "teacher" },
|
|
12054
|
+
{ kind: "substring", value: "coach" },
|
|
12055
|
+
{ kind: "phrase", value: "retreat resources" },
|
|
12056
|
+
{ kind: "substring", value: "journal" }
|
|
12057
|
+
],
|
|
12058
|
+
tokenRecipes: {
|
|
12059
|
+
palette: "warm-neutral",
|
|
12060
|
+
contrast: "standard",
|
|
12061
|
+
radius: "soft",
|
|
12062
|
+
shadow: "subtle",
|
|
12063
|
+
typography: "serif-editorial",
|
|
12064
|
+
spacing: "airy",
|
|
12065
|
+
motion: "subtle"
|
|
12066
|
+
},
|
|
12067
|
+
compositionBudget: balancedBudget,
|
|
12068
|
+
recommendedHeaderLookIds: ["editorial-line", "centered-calm", "minimal-transparent"],
|
|
12069
|
+
buttonPersonalityChoices: [
|
|
12070
|
+
buttonChoice("editorial-link"),
|
|
12071
|
+
buttonChoice("soft-pill"),
|
|
12072
|
+
buttonChoice("brushed-wash")
|
|
12073
|
+
],
|
|
12074
|
+
paletteVariantChoices: [
|
|
12075
|
+
paletteChoice("warm-neutral-forest"),
|
|
12076
|
+
paletteChoice("warm-neutral-clay"),
|
|
12077
|
+
paletteChoice("soft-natural-stone")
|
|
12078
|
+
]
|
|
12079
|
+
}),
|
|
12080
|
+
defineCuratedSiteStyle({
|
|
12081
|
+
id: "site-style:tactile-workshop",
|
|
12082
|
+
name: "Tactile Workshop",
|
|
12083
|
+
description: "Bright, hands-on, and image-led for maker studios, workshops, and creative classes.",
|
|
12084
|
+
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.",
|
|
12085
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 50 },
|
|
12086
|
+
selectionKeywordRules: [
|
|
12087
|
+
{ kind: "substring", value: "ceramic" },
|
|
12088
|
+
{ kind: "word", value: "pottery" },
|
|
12089
|
+
{ kind: "phrase", value: "maker studio" },
|
|
12090
|
+
{ kind: "phrase", value: "craft class" },
|
|
12091
|
+
{ kind: "phrase", value: "craft workshop" },
|
|
12092
|
+
{ kind: "word", value: "clay" },
|
|
12093
|
+
{ kind: "word", value: "kiln" }
|
|
12094
|
+
],
|
|
12095
|
+
tokenRecipes: {
|
|
12096
|
+
palette: "brand-led",
|
|
12097
|
+
contrast: "standard",
|
|
12098
|
+
radius: "soft",
|
|
12099
|
+
shadow: "subtle",
|
|
12100
|
+
typography: "friendly-sans",
|
|
12101
|
+
spacing: "regular",
|
|
12102
|
+
motion: "subtle"
|
|
12103
|
+
},
|
|
12104
|
+
compositionBudget: balancedBudget,
|
|
12105
|
+
recommendedHeaderLookIds: ["brand-solid", "practical-utility", "clean-base"],
|
|
12106
|
+
recommendedFooterLookIds: ["site-footer-brand-two-band", "footer-muted-grounding"],
|
|
12107
|
+
buttonPersonalityChoices: [
|
|
12108
|
+
buttonChoice("pebble"),
|
|
12109
|
+
buttonChoice("confident-chip"),
|
|
12110
|
+
buttonChoice("ink-stamp"),
|
|
12111
|
+
buttonChoice("editorial-link")
|
|
12112
|
+
],
|
|
12113
|
+
paletteVariantChoices: [
|
|
12114
|
+
paletteChoice("brand-led-warm"),
|
|
12115
|
+
paletteChoice("brand-led-cool"),
|
|
12116
|
+
paletteChoice("soft-natural-watercolor"),
|
|
12117
|
+
paletteChoice("warm-neutral-clay")
|
|
12118
|
+
]
|
|
12119
|
+
}),
|
|
11858
12120
|
defineCuratedSiteStyle({
|
|
11859
12121
|
id: "site-style:bold-launch",
|
|
11860
12122
|
name: "Bold Launch",
|
|
11861
12123
|
description: "High-energy and punchy for launches, campaigns, and creative offers.",
|
|
11862
12124
|
generationBrief: "Use crisp positioning, bold hero structure, strong calls to action, and confident visual rhythm. Keep it precise, not shouty.",
|
|
11863
|
-
|
|
11864
|
-
|
|
11865
|
-
"
|
|
11866
|
-
"
|
|
11867
|
-
"
|
|
11868
|
-
"
|
|
11869
|
-
"
|
|
12125
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 10 },
|
|
12126
|
+
selectionKeywordRules: [
|
|
12127
|
+
{ kind: "substring", value: "launch" },
|
|
12128
|
+
{ kind: "substring", value: "campaign" },
|
|
12129
|
+
{ kind: "word", value: "preorder" },
|
|
12130
|
+
{ kind: "phrase", value: "pre-order" },
|
|
12131
|
+
{ kind: "substring", value: "waitlist" },
|
|
12132
|
+
{ kind: "word", value: "drop" }
|
|
11870
12133
|
],
|
|
11871
12134
|
tokenRecipes: {
|
|
11872
12135
|
palette: "high-contrast",
|
|
@@ -11897,15 +12160,6 @@ var curatedSiteStyles = [
|
|
|
11897
12160
|
name: "South West Twerk School",
|
|
11898
12161
|
description: "Energetic, editorial, and high-contrast for a branded dance school presence.",
|
|
11899
12162
|
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.",
|
|
11900
|
-
selectionKeywords: [
|
|
11901
|
-
"dance",
|
|
11902
|
-
"classes",
|
|
11903
|
-
"workshop",
|
|
11904
|
-
"school",
|
|
11905
|
-
"movement",
|
|
11906
|
-
"performance",
|
|
11907
|
-
"community"
|
|
11908
|
-
],
|
|
11909
12163
|
tokenRecipes: {
|
|
11910
12164
|
palette: "brand-led",
|
|
11911
12165
|
contrast: "maximum",
|
|
@@ -12212,25 +12466,19 @@ var defaultDesignRuntimeRules = defineDesignRuntimeRules({
|
|
|
12212
12466
|
"muted-band": {
|
|
12213
12467
|
background: {
|
|
12214
12468
|
type: "color",
|
|
12215
|
-
color: "muted"
|
|
12216
|
-
textColor: "text",
|
|
12217
|
-
headingColor: "text"
|
|
12469
|
+
color: "muted"
|
|
12218
12470
|
}
|
|
12219
12471
|
},
|
|
12220
12472
|
"accent-band": {
|
|
12221
12473
|
background: {
|
|
12222
12474
|
type: "color",
|
|
12223
|
-
color: "primary"
|
|
12224
|
-
textColor: "primaryForeground",
|
|
12225
|
-
headingColor: "primaryForeground"
|
|
12475
|
+
color: "primary"
|
|
12226
12476
|
}
|
|
12227
12477
|
},
|
|
12228
12478
|
"brand-depth-band": {
|
|
12229
12479
|
background: {
|
|
12230
12480
|
type: "color",
|
|
12231
|
-
color: "primary-800"
|
|
12232
|
-
textColor: "primaryForeground",
|
|
12233
|
-
headingColor: "primaryForeground"
|
|
12481
|
+
color: "primary-800"
|
|
12234
12482
|
}
|
|
12235
12483
|
},
|
|
12236
12484
|
"hero-image": {
|
|
@@ -18338,6 +18586,16 @@ var jsonArrayTransform = {
|
|
|
18338
18586
|
return "";
|
|
18339
18587
|
}
|
|
18340
18588
|
};
|
|
18589
|
+
var csvTransform = {
|
|
18590
|
+
id: "value.csv",
|
|
18591
|
+
kind: "formatter",
|
|
18592
|
+
summary: "Normalize a string or array of strings into a comma-separated list",
|
|
18593
|
+
run: (value) => {
|
|
18594
|
+
const rawValues = Array.isArray(value) ? value : typeof value === "string" ? value.split(",") : [];
|
|
18595
|
+
const normalized = rawValues.filter((item) => typeof item === "string").map((item) => item.trim()).filter(Boolean);
|
|
18596
|
+
return normalized.length > 0 ? Array.from(new Set(normalized)).join(",") : "";
|
|
18597
|
+
}
|
|
18598
|
+
};
|
|
18341
18599
|
var marqueeLoopOptionsSchema = z36.object({
|
|
18342
18600
|
minItems: z36.number().int().min(1).default(10)
|
|
18343
18601
|
});
|
|
@@ -18363,6 +18621,7 @@ var formattingTransforms = [
|
|
|
18363
18621
|
dateFormatShort,
|
|
18364
18622
|
arrayLengthTransform,
|
|
18365
18623
|
jsonArrayTransform,
|
|
18624
|
+
csvTransform,
|
|
18366
18625
|
marqueeLoopTransform
|
|
18367
18626
|
];
|
|
18368
18627
|
|
|
@@ -18846,73 +19105,6 @@ var uiTransforms = [
|
|
|
18846
19105
|
|
|
18847
19106
|
// ../blocks/src/system/transforms/registry/layout.ts
|
|
18848
19107
|
import { z as z38 } from "zod";
|
|
18849
|
-
|
|
18850
|
-
// ../theme-core/src/palette/utils/colorConversion.ts
|
|
18851
|
-
var mod = (a, n) => (a % n + n) % n;
|
|
18852
|
-
var deg = (x) => mod(x, 360);
|
|
18853
|
-
function hexToRgb(hex) {
|
|
18854
|
-
const h = hex.replace(/^#/, "");
|
|
18855
|
-
const m = h.length === 3 ? h.split("").map((c) => c + c).join("") : h;
|
|
18856
|
-
if (m.length !== 6) throw new Error("Bad hex");
|
|
18857
|
-
const int = parseInt(m, 16);
|
|
18858
|
-
return { r: int >> 16 & 255, g: int >> 8 & 255, b: int & 255 };
|
|
18859
|
-
}
|
|
18860
|
-
function srgbToLinear(u) {
|
|
18861
|
-
const x = u / 255;
|
|
18862
|
-
return x <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);
|
|
18863
|
-
}
|
|
18864
|
-
function rgbToHsl(r, g, b) {
|
|
18865
|
-
const R = r / 255, G = g / 255, B = b / 255;
|
|
18866
|
-
const max = Math.max(R, G, B), min = Math.min(R, G, B);
|
|
18867
|
-
const d = max - min;
|
|
18868
|
-
let h = 0;
|
|
18869
|
-
if (d !== 0) {
|
|
18870
|
-
switch (max) {
|
|
18871
|
-
case R:
|
|
18872
|
-
h = (G - B) / d + (G < B ? 6 : 0);
|
|
18873
|
-
break;
|
|
18874
|
-
case G:
|
|
18875
|
-
h = (B - R) / d + 2;
|
|
18876
|
-
break;
|
|
18877
|
-
case B:
|
|
18878
|
-
h = (R - G) / d + 4;
|
|
18879
|
-
break;
|
|
18880
|
-
}
|
|
18881
|
-
h *= 60;
|
|
18882
|
-
}
|
|
18883
|
-
const l = (max + min) / 2;
|
|
18884
|
-
const s = d === 0 ? 0 : d / (1 - Math.abs(2 * l - 1));
|
|
18885
|
-
return { h, s, l };
|
|
18886
|
-
}
|
|
18887
|
-
function srgbToOklab(r, g, b) {
|
|
18888
|
-
const R = srgbToLinear(r), G = srgbToLinear(g), B = srgbToLinear(b);
|
|
18889
|
-
const l = 0.4122214708 * R + 0.5363325363 * G + 0.0514459929 * B;
|
|
18890
|
-
const m = 0.2119034982 * R + 0.6806995451 * G + 0.1073969566 * B;
|
|
18891
|
-
const s = 0.0883024619 * R + 0.2817188376 * G + 0.6299787005 * B;
|
|
18892
|
-
const l_ = Math.cbrt(l), m_ = Math.cbrt(m), s_ = Math.cbrt(s);
|
|
18893
|
-
const L = 0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_;
|
|
18894
|
-
const a = 1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_;
|
|
18895
|
-
const b2 = 0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_;
|
|
18896
|
-
return { L, a, b: b2 };
|
|
18897
|
-
}
|
|
18898
|
-
function oklabToOklch(L, a, b) {
|
|
18899
|
-
const C = Math.sqrt(a * a + b * b);
|
|
18900
|
-
const h = C < 1e-7 ? 0 : deg(Math.atan2(b, a) * 180 / Math.PI);
|
|
18901
|
-
return { L, C, h };
|
|
18902
|
-
}
|
|
18903
|
-
function featuresFromHex(hex) {
|
|
18904
|
-
const { r, g, b } = hexToRgb(hex);
|
|
18905
|
-
const { h, s, l } = rgbToHsl(r, g, b);
|
|
18906
|
-
const { L, a, b: b2 } = srgbToOklab(r, g, b);
|
|
18907
|
-
const { L: okL, C: okC, h: okH } = oklabToOklch(L, a, b2);
|
|
18908
|
-
const max = Math.max(r, g, b);
|
|
18909
|
-
const v = max / 255;
|
|
18910
|
-
const Y = 0.2126 * srgbToLinear(r) + 0.7152 * srgbToLinear(g) + 0.0722 * srgbToLinear(b);
|
|
18911
|
-
const chroma = s;
|
|
18912
|
-
return { r, g, b, h, s, l, v, Y, chroma, okL, okC, okH, hex };
|
|
18913
|
-
}
|
|
18914
|
-
|
|
18915
|
-
// ../blocks/src/system/transforms/registry/layout.ts
|
|
18916
19108
|
var joinClasses4 = (parts) => parts.filter(
|
|
18917
19109
|
(part) => typeof part === "string" && part.trim().length > 0
|
|
18918
19110
|
).join(" ").replace(/\s+/g, " ").trim();
|
|
@@ -23596,7 +23788,12 @@ var eventListingBlockDefinition = {
|
|
|
23596
23788
|
detailLevel: "listing",
|
|
23597
23789
|
kind: { $bind: { from: "content.kind" } },
|
|
23598
23790
|
eventSurface: { $bind: { from: "content.eventSurface" } },
|
|
23599
|
-
eventPresets: {
|
|
23791
|
+
eventPresets: {
|
|
23792
|
+
$bind: {
|
|
23793
|
+
from: "content.filterEventPresets",
|
|
23794
|
+
transforms: [{ id: "value.csv" }]
|
|
23795
|
+
}
|
|
23796
|
+
},
|
|
23600
23797
|
scheduleScope: { $bind: { from: "content.scheduleScope" } }
|
|
23601
23798
|
},
|
|
23602
23799
|
mode: "server"
|
|
@@ -24348,7 +24545,12 @@ var eventCalendarBlockDefinition = {
|
|
|
24348
24545
|
// Pass filter params if configured
|
|
24349
24546
|
kind: { $bind: { from: "content.kind" } },
|
|
24350
24547
|
eventSurface: { $bind: { from: "content.eventSurface" } },
|
|
24351
|
-
eventPresets: {
|
|
24548
|
+
eventPresets: {
|
|
24549
|
+
$bind: {
|
|
24550
|
+
from: "content.filterEventPresets",
|
|
24551
|
+
transforms: [{ id: "value.csv" }]
|
|
24552
|
+
}
|
|
24553
|
+
},
|
|
24352
24554
|
scheduleScope: { $bind: { from: "content.scheduleScope" } },
|
|
24353
24555
|
categoryIds: { $bind: { from: "content.filterCategoryIds" } },
|
|
24354
24556
|
staffMemberId: { $bind: { from: "content.filterStaffMemberId" } },
|