@riverbankcms/sdk 0.64.0 → 0.67.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_dts/api/src/aiPlayground.d.ts +18 -11
- package/dist/_dts/api/src/apiEndpointTypes.d.ts +12 -0
- package/dist/_dts/api/src/bookingOperations.d.ts +1 -1
- package/dist/_dts/api/src/endpoints.d.ts +25 -0
- package/dist/_dts/api/src/sdkConfig/contracts.d.ts +0 -40
- package/dist/_dts/api/src/sdkContracts.d.ts +1 -1
- package/dist/_dts/api/src/siteMembers.d.ts +1 -1
- package/dist/_dts/api/src/siteOperations.d.ts +1 -1
- package/dist/_dts/billing/src/plans/types.d.ts +1 -1
- package/dist/_dts/blocks/src/bindings/index.d.ts +1 -1
- package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
- package/dist/_dts/blocks/src/system/transforms/registry/formatting.d.ts +1 -0
- package/dist/_dts/blocks/src/system/transforms/typed.d.ts +2 -1
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +81 -0
- package/dist/_dts/preview-next/src/client/blocks/pageDesignRuntimePreview.d.ts +7 -3
- package/dist/_dts/preview-next/src/client/blocks/previewProjection/runtimeContentDecoration.d.ts +2 -2
- package/dist/_dts/sdk/src/cli/commands/push/execute/footer.d.ts +33 -0
- package/dist/_dts/sdk/src/cli/commands/push-execute.d.ts +2 -1
- package/dist/_dts/sdk/src/cli/env.d.ts +2 -1
- package/dist/_dts/sdk/src/cli/merge-remote/entryMergePush.d.ts +2 -1
- package/dist/_dts/sdk/src/cli/site-commands/commandKeys.d.ts +13 -0
- package/dist/_dts/sdk/src/cli/site-commands/commandRuntime.d.ts +114 -0
- package/dist/_dts/sdk/src/cli/site-commands/entryCommands.d.ts +26 -48
- package/dist/_dts/sdk/src/cli/site-commands/footerCommands.d.ts +50 -0
- package/dist/_dts/sdk/src/cli/site-commands/formCommands.d.ts +57 -0
- package/dist/_dts/sdk/src/cli/site-commands/index.d.ts +5 -0
- package/dist/_dts/sdk/src/cli/site-commands/navigationCommands.d.ts +57 -0
- package/dist/_dts/sdk/src/cli/site-commands/pageCommands.d.ts +83 -0
- package/dist/_dts/sdk/src/cli/site-commands/pushExecution.d.ts +67 -14
- package/dist/_dts/sdk/src/cli/sync/executor.d.ts +10 -28
- package/dist/_dts/sdk/src/cli/sync/index.d.ts +1 -1
- package/dist/_dts/sdk/src/config/dashboard-validation.d.ts +0 -48
- package/dist/_dts/sdk/src/config/types.d.ts +1 -1
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/site-commands/src/adapter.d.ts +2 -2
- package/dist/_dts/site-commands/src/commands.d.ts +410 -13
- package/dist/_dts/site-commands/src/domain.d.ts +3 -3
- package/dist/_dts/site-commands/src/exposure.d.ts +41 -0
- package/dist/_dts/site-commands/src/index.d.ts +1 -0
- package/dist/_dts/site-commands/src/metadata.d.ts +93 -2
- package/dist/_dts/site-commands/src/planner.d.ts +13 -6
- package/dist/_dts/site-commands/src/refs.d.ts +13 -1
- package/dist/_dts/theme-core/src/palette/utils/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/palette/utils/onColor.d.ts +2 -0
- package/dist/_dts/theme-core/src/site-styles/accessibleSurfaces.d.ts +83 -0
- package/dist/_dts/theme-core/src/site-styles/contentTemplateRuntimeCompiler.d.ts +2 -1
- package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +89 -12
- package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +8 -2
- package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +3 -2
- package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +9 -6
- package/dist/_dts/ui/src/callout.d.ts +1 -1
- package/dist/cli/index.mjs +4290 -2513
- package/dist/client/client.mjs +598 -372
- package/dist/client/hooks.mjs +311 -123
- package/dist/client/rendering/client.mjs +209 -68
- package/dist/client/rendering/islands.mjs +281 -150
- package/dist/client/rendering.mjs +416 -190
- package/dist/preview-next/before-render.mjs +61 -13
- package/dist/preview-next/client/runtime.mjs +930 -376
- package/dist/preview-next/middleware.mjs +61 -13
- package/dist/server/components.mjs +526 -325
- package/dist/server/config-validation.mjs +313 -125
- package/dist/server/config.mjs +313 -125
- package/dist/server/data.mjs +311 -123
- package/dist/server/index.mjs +78 -16
- package/dist/server/next.mjs +527 -326
- package/dist/server/page-converter.mjs +159 -41
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +526 -325
- package/dist/server/rendering.mjs +526 -325
- package/dist/server/routing.mjs +392 -131
- package/dist/server/server.mjs +312 -124
- package/dist/server/theme-bridge.mjs +155 -48
- package/package.json +1 -1
- package/dist/_dts/path-utils/src/index.d.ts +0 -8
- package/dist/_dts/path-utils/src/redirectPaths.d.ts +0 -26
- package/dist/_dts/path-utils/src/safeAppPath.d.ts +0 -26
package/dist/server/config.mjs
CHANGED
|
@@ -46,6 +46,17 @@ function fallbackBinding(...sources) {
|
|
|
46
46
|
// src/config/validation.ts
|
|
47
47
|
import { z as z68 } from "zod";
|
|
48
48
|
|
|
49
|
+
// ../api/src/apiEndpointTypes.ts
|
|
50
|
+
function blockedDemoMutationPolicy(classification, publicMessage) {
|
|
51
|
+
if (publicMessage.trim() === "") {
|
|
52
|
+
throw new Error(`Demo mutation policy ${classification} requires publicMessage.`);
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
classification,
|
|
56
|
+
publicMessage
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
49
60
|
// ../api/src/cache-tags.ts
|
|
50
61
|
var TAG_TEMPLATES = {
|
|
51
62
|
siteCollection: "riverbank:site",
|
|
@@ -76,6 +87,18 @@ var TAG_TEMPLATES = {
|
|
|
76
87
|
};
|
|
77
88
|
|
|
78
89
|
// ../api/src/endpoints.ts
|
|
90
|
+
var DEMO_MUTATION_BLOCKED_HIDDEN = blockedDemoMutationPolicy(
|
|
91
|
+
"blocked-hidden",
|
|
92
|
+
"This action is not available in demo sites."
|
|
93
|
+
);
|
|
94
|
+
var DEMO_MUTATION_BLOCKED_DISABLED = blockedDemoMutationPolicy(
|
|
95
|
+
"blocked-disabled",
|
|
96
|
+
"This setting is disabled in demo sites."
|
|
97
|
+
);
|
|
98
|
+
var DEMO_MUTATION_INTERNAL_ONLY = blockedDemoMutationPolicy(
|
|
99
|
+
"internal-only",
|
|
100
|
+
"This internal operation is not available in demo sites."
|
|
101
|
+
);
|
|
79
102
|
var ENDPOINT_DEFINITIONS = {
|
|
80
103
|
// AI endpoints - no cache due to dynamic nature
|
|
81
104
|
aiContentUpdateChat: {
|
|
@@ -192,7 +215,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
192
215
|
path: "/sites/{siteId}/ai/generate",
|
|
193
216
|
method: "POST",
|
|
194
217
|
auth: "user",
|
|
195
|
-
responseKind: "json"
|
|
218
|
+
responseKind: "json",
|
|
219
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
196
220
|
},
|
|
197
221
|
getOnboardingPreviewStatus: {
|
|
198
222
|
path: "/public/sites/{siteId}/onboarding/preview-status",
|
|
@@ -213,7 +237,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
213
237
|
method: "POST",
|
|
214
238
|
auth: "user",
|
|
215
239
|
errors: [],
|
|
216
|
-
responseKind: "json"
|
|
240
|
+
responseKind: "json",
|
|
241
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED
|
|
217
242
|
},
|
|
218
243
|
goLiveSite: {
|
|
219
244
|
path: "/sites/{siteId}/launch/go-live",
|
|
@@ -282,20 +307,23 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
282
307
|
path: "/sites/{siteId}/ai/site-wizard/goals",
|
|
283
308
|
method: "POST",
|
|
284
309
|
auth: "user",
|
|
285
|
-
responseKind: "json"
|
|
310
|
+
responseKind: "json",
|
|
311
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
286
312
|
},
|
|
287
313
|
aiSiteWizardIntakeTriage: {
|
|
288
314
|
path: "/sites/{siteId}/ai/site-wizard/intake-triage",
|
|
289
315
|
method: "POST",
|
|
290
316
|
auth: "user",
|
|
291
|
-
responseKind: "json"
|
|
317
|
+
responseKind: "json",
|
|
318
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
292
319
|
},
|
|
293
320
|
aiSiteWizardTelemetry: {
|
|
294
321
|
path: "/sites/{siteId}/ai/site-wizard/telemetry",
|
|
295
322
|
method: "POST",
|
|
296
323
|
auth: "user",
|
|
297
324
|
errors: [],
|
|
298
|
-
responseKind: "json"
|
|
325
|
+
responseKind: "json",
|
|
326
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
299
327
|
},
|
|
300
328
|
// Admin SEO
|
|
301
329
|
listGscPropertiesAdmin: {
|
|
@@ -502,7 +530,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
502
530
|
responseKind: "json",
|
|
503
531
|
errors: ["resource:not_found", "server:internal_error"]
|
|
504
532
|
},
|
|
505
|
-
// Ops (event
|
|
533
|
+
// Ops (staff event operators/admins)
|
|
506
534
|
opsListUpcomingEventOccurrences: {
|
|
507
535
|
path: "/ops/sites/{siteId}/events",
|
|
508
536
|
method: "GET",
|
|
@@ -520,6 +548,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
520
548
|
method: "POST",
|
|
521
549
|
auth: "user",
|
|
522
550
|
responseKind: "json",
|
|
551
|
+
demoMutation: DEMO_MUTATION_INTERNAL_ONLY,
|
|
523
552
|
errors: [
|
|
524
553
|
"validation:invalid_input",
|
|
525
554
|
"auth:forbidden",
|
|
@@ -532,6 +561,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
532
561
|
method: "POST",
|
|
533
562
|
auth: "user",
|
|
534
563
|
responseKind: "json",
|
|
564
|
+
demoMutation: DEMO_MUTATION_INTERNAL_ONLY,
|
|
535
565
|
errors: [
|
|
536
566
|
"validation:invalid_input",
|
|
537
567
|
"auth:forbidden",
|
|
@@ -550,6 +580,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
550
580
|
method: "POST",
|
|
551
581
|
auth: "user",
|
|
552
582
|
responseKind: "json",
|
|
583
|
+
demoMutation: DEMO_MUTATION_INTERNAL_ONLY,
|
|
553
584
|
errors: [
|
|
554
585
|
"validation:invalid_input",
|
|
555
586
|
"auth:forbidden",
|
|
@@ -583,6 +614,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
583
614
|
method: "POST",
|
|
584
615
|
auth: "user",
|
|
585
616
|
responseKind: "json",
|
|
617
|
+
demoMutation: DEMO_MUTATION_INTERNAL_ONLY,
|
|
586
618
|
errors: [
|
|
587
619
|
"validation:invalid_input",
|
|
588
620
|
"auth:forbidden",
|
|
@@ -611,7 +643,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
611
643
|
method: "POST",
|
|
612
644
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings],
|
|
613
645
|
auth: "user",
|
|
614
|
-
responseKind: "json"
|
|
646
|
+
responseKind: "json",
|
|
647
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
615
648
|
},
|
|
616
649
|
previewEmailTemplate: {
|
|
617
650
|
path: "/sites/{siteId}/settings/emails/preview",
|
|
@@ -662,14 +695,16 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
662
695
|
method: "POST",
|
|
663
696
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
664
697
|
auth: "user",
|
|
665
|
-
responseKind: "json"
|
|
698
|
+
responseKind: "json",
|
|
699
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
666
700
|
},
|
|
667
701
|
createNewsletterSubscribersImportUploadUrl: {
|
|
668
702
|
path: "/sites/{siteId}/newsletter/subscribers/import-url",
|
|
669
703
|
method: "POST",
|
|
670
704
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
671
705
|
auth: "user",
|
|
672
|
-
responseKind: "json"
|
|
706
|
+
responseKind: "json",
|
|
707
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
673
708
|
},
|
|
674
709
|
exportNewsletterSubscribersCsv: {
|
|
675
710
|
path: "/sites/{siteId}/newsletter/subscribers/export.csv",
|
|
@@ -866,14 +901,16 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
866
901
|
method: "POST",
|
|
867
902
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
868
903
|
auth: "user",
|
|
869
|
-
responseKind: "json"
|
|
904
|
+
responseKind: "json",
|
|
905
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
870
906
|
},
|
|
871
907
|
testSendNewsletterCampaign: {
|
|
872
908
|
path: "/sites/{siteId}/newsletter/campaigns/{campaignId}/test-send",
|
|
873
909
|
method: "POST",
|
|
874
910
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
875
911
|
auth: "user",
|
|
876
|
-
responseKind: "json"
|
|
912
|
+
responseKind: "json",
|
|
913
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
877
914
|
},
|
|
878
915
|
listNewsletterSendJobs: {
|
|
879
916
|
path: "/sites/{siteId}/newsletter/jobs",
|
|
@@ -1561,7 +1598,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
1561
1598
|
method: "DELETE",
|
|
1562
1599
|
tags: ["site", "site-{siteId}"],
|
|
1563
1600
|
auth: "user",
|
|
1564
|
-
responseKind: "json"
|
|
1601
|
+
responseKind: "json",
|
|
1602
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
1565
1603
|
},
|
|
1566
1604
|
listSiteMembers: {
|
|
1567
1605
|
path: "/sites/{siteId}/members",
|
|
@@ -2017,7 +2055,8 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
2017
2055
|
method: "POST",
|
|
2018
2056
|
tags: ["site-{siteId}", "content-{siteId}-{type}"],
|
|
2019
2057
|
auth: "user",
|
|
2020
|
-
responseKind: "json"
|
|
2058
|
+
responseKind: "json",
|
|
2059
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
2021
2060
|
},
|
|
2022
2061
|
updateSiteGeneralSettings: {
|
|
2023
2062
|
path: "/sites/{siteId}/settings/general",
|
|
@@ -4256,6 +4295,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4256
4295
|
method: "POST",
|
|
4257
4296
|
tags: ["site-{siteId}"],
|
|
4258
4297
|
auth: "user",
|
|
4298
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN,
|
|
4259
4299
|
errors: [
|
|
4260
4300
|
"validation:invalid_input",
|
|
4261
4301
|
"auth:forbidden",
|
|
@@ -4270,6 +4310,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4270
4310
|
method: "POST",
|
|
4271
4311
|
tags: ["site-{siteId}"],
|
|
4272
4312
|
auth: "user",
|
|
4313
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN,
|
|
4273
4314
|
errors: [
|
|
4274
4315
|
"validation:invalid_input",
|
|
4275
4316
|
"auth:forbidden",
|
|
@@ -4579,6 +4620,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4579
4620
|
tags: ["site-{siteId}", "passes-{siteId}"],
|
|
4580
4621
|
auth: "user",
|
|
4581
4622
|
responseKind: "json",
|
|
4623
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4582
4624
|
errors: ["validation:invalid_input", "server:internal_error"]
|
|
4583
4625
|
},
|
|
4584
4626
|
getBookingPass: {
|
|
@@ -4594,6 +4636,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4594
4636
|
tags: ["site-{siteId}", "passes-{siteId}"],
|
|
4595
4637
|
auth: "user",
|
|
4596
4638
|
responseKind: "json",
|
|
4639
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4597
4640
|
errors: [
|
|
4598
4641
|
"validation:invalid_input",
|
|
4599
4642
|
"resource:not_found",
|
|
@@ -4606,6 +4649,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4606
4649
|
tags: ["site-{siteId}", "passes-{siteId}"],
|
|
4607
4650
|
auth: "user",
|
|
4608
4651
|
responseKind: "json",
|
|
4652
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4609
4653
|
errors: [
|
|
4610
4654
|
"validation:invalid_input",
|
|
4611
4655
|
"resource:not_found",
|
|
@@ -4661,6 +4705,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4661
4705
|
tags: ["site-{siteId}", "memberships-{siteId}"],
|
|
4662
4706
|
auth: "user",
|
|
4663
4707
|
responseKind: "json",
|
|
4708
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4664
4709
|
errors: ["validation:invalid_input", "server:internal_error"]
|
|
4665
4710
|
},
|
|
4666
4711
|
getBookingMembership: {
|
|
@@ -4676,6 +4721,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4676
4721
|
tags: ["site-{siteId}", "memberships-{siteId}"],
|
|
4677
4722
|
auth: "user",
|
|
4678
4723
|
responseKind: "json",
|
|
4724
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4679
4725
|
errors: [
|
|
4680
4726
|
"validation:invalid_input",
|
|
4681
4727
|
"resource:not_found",
|
|
@@ -4688,6 +4734,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4688
4734
|
tags: ["site-{siteId}", "memberships-{siteId}"],
|
|
4689
4735
|
auth: "user",
|
|
4690
4736
|
responseKind: "json",
|
|
4737
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4691
4738
|
errors: [
|
|
4692
4739
|
"validation:invalid_input",
|
|
4693
4740
|
"resource:not_found",
|
|
@@ -4904,6 +4951,7 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
4904
4951
|
tags: ["site-{siteId}", "customers-{siteId}"],
|
|
4905
4952
|
auth: "user",
|
|
4906
4953
|
responseKind: "json",
|
|
4954
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
4907
4955
|
errors: [
|
|
4908
4956
|
"validation:invalid_input",
|
|
4909
4957
|
"auth:forbidden",
|
|
@@ -6492,6 +6540,7 @@ var ALLOWED_TRANSFORM_IDS = [
|
|
|
6492
6540
|
"date.formatShort",
|
|
6493
6541
|
"array.length",
|
|
6494
6542
|
"value.jsonArray",
|
|
6543
|
+
"value.csv",
|
|
6495
6544
|
"array.marqueeLoop",
|
|
6496
6545
|
// Layout (layout.ts)
|
|
6497
6546
|
"layout.maxWidthClass",
|
|
@@ -7261,8 +7310,7 @@ var dashboardNavVisibilityBaseSchema = z5.object({
|
|
|
7261
7310
|
var dashboardNavVisibilityRolesSchema = z5.object({
|
|
7262
7311
|
administrator: dashboardNavVisibilityBaseSchema.optional(),
|
|
7263
7312
|
editor: dashboardNavVisibilityBaseSchema.optional(),
|
|
7264
|
-
team_member: dashboardNavVisibilityBaseSchema.optional()
|
|
7265
|
-
event_host: dashboardNavVisibilityBaseSchema.optional()
|
|
7313
|
+
team_member: dashboardNavVisibilityBaseSchema.optional()
|
|
7266
7314
|
}).strip().optional();
|
|
7267
7315
|
var dashboardNavVisibilitySchema = dashboardNavVisibilityBaseSchema.extend({
|
|
7268
7316
|
roles: dashboardNavVisibilityRolesSchema
|
|
@@ -7783,6 +7831,21 @@ var appointmentSetupServiceDraftSchema = z7.object({
|
|
|
7783
7831
|
timezone: z7.string().trim().min(1).nullable(),
|
|
7784
7832
|
payment: appointmentSetupPaymentDraftSchema,
|
|
7785
7833
|
assignment: appointmentSetupServiceAssignmentDraftSchema
|
|
7834
|
+
}).superRefine((service, ctx) => {
|
|
7835
|
+
if (service.payment.priceType === "paid" && (service.priceAmount === null || service.priceAmount <= 0)) {
|
|
7836
|
+
ctx.addIssue({
|
|
7837
|
+
code: "custom",
|
|
7838
|
+
path: ["priceAmount"],
|
|
7839
|
+
message: "Paid appointment services need a positive price."
|
|
7840
|
+
});
|
|
7841
|
+
}
|
|
7842
|
+
if (service.payment.priceType === "free" && service.priceAmount !== null && service.priceAmount > 0) {
|
|
7843
|
+
ctx.addIssue({
|
|
7844
|
+
code: "custom",
|
|
7845
|
+
path: ["priceAmount"],
|
|
7846
|
+
message: "Free appointment services cannot carry a positive price."
|
|
7847
|
+
});
|
|
7848
|
+
}
|
|
7786
7849
|
});
|
|
7787
7850
|
var appointmentSetupPractitionerDraftSchema = z7.object({
|
|
7788
7851
|
ref: appointmentSetupRefSchema,
|
|
@@ -8200,6 +8263,71 @@ function registerManifest(manifest) {
|
|
|
8200
8263
|
return manifest;
|
|
8201
8264
|
}
|
|
8202
8265
|
|
|
8266
|
+
// ../theme-core/src/palette/utils/colorConversion.ts
|
|
8267
|
+
var mod = (a, n) => (a % n + n) % n;
|
|
8268
|
+
var deg = (x) => mod(x, 360);
|
|
8269
|
+
function hexToRgb(hex) {
|
|
8270
|
+
const h = hex.replace(/^#/, "");
|
|
8271
|
+
const m = h.length === 3 ? h.split("").map((c) => c + c).join("") : h;
|
|
8272
|
+
if (m.length !== 6) throw new Error("Bad hex");
|
|
8273
|
+
const int = parseInt(m, 16);
|
|
8274
|
+
return { r: int >> 16 & 255, g: int >> 8 & 255, b: int & 255 };
|
|
8275
|
+
}
|
|
8276
|
+
function srgbToLinear(u) {
|
|
8277
|
+
const x = u / 255;
|
|
8278
|
+
return x <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);
|
|
8279
|
+
}
|
|
8280
|
+
function rgbToHsl(r, g, b) {
|
|
8281
|
+
const R = r / 255, G = g / 255, B = b / 255;
|
|
8282
|
+
const max = Math.max(R, G, B), min = Math.min(R, G, B);
|
|
8283
|
+
const d = max - min;
|
|
8284
|
+
let h = 0;
|
|
8285
|
+
if (d !== 0) {
|
|
8286
|
+
switch (max) {
|
|
8287
|
+
case R:
|
|
8288
|
+
h = (G - B) / d + (G < B ? 6 : 0);
|
|
8289
|
+
break;
|
|
8290
|
+
case G:
|
|
8291
|
+
h = (B - R) / d + 2;
|
|
8292
|
+
break;
|
|
8293
|
+
case B:
|
|
8294
|
+
h = (R - G) / d + 4;
|
|
8295
|
+
break;
|
|
8296
|
+
}
|
|
8297
|
+
h *= 60;
|
|
8298
|
+
}
|
|
8299
|
+
const l = (max + min) / 2;
|
|
8300
|
+
const s = d === 0 ? 0 : d / (1 - Math.abs(2 * l - 1));
|
|
8301
|
+
return { h, s, l };
|
|
8302
|
+
}
|
|
8303
|
+
function srgbToOklab(r, g, b) {
|
|
8304
|
+
const R = srgbToLinear(r), G = srgbToLinear(g), B = srgbToLinear(b);
|
|
8305
|
+
const l = 0.4122214708 * R + 0.5363325363 * G + 0.0514459929 * B;
|
|
8306
|
+
const m = 0.2119034982 * R + 0.6806995451 * G + 0.1073969566 * B;
|
|
8307
|
+
const s = 0.0883024619 * R + 0.2817188376 * G + 0.6299787005 * B;
|
|
8308
|
+
const l_ = Math.cbrt(l), m_ = Math.cbrt(m), s_ = Math.cbrt(s);
|
|
8309
|
+
const L = 0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_;
|
|
8310
|
+
const a = 1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_;
|
|
8311
|
+
const b2 = 0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_;
|
|
8312
|
+
return { L, a, b: b2 };
|
|
8313
|
+
}
|
|
8314
|
+
function oklabToOklch(L, a, b) {
|
|
8315
|
+
const C = Math.sqrt(a * a + b * b);
|
|
8316
|
+
const h = C < 1e-7 ? 0 : deg(Math.atan2(b, a) * 180 / Math.PI);
|
|
8317
|
+
return { L, C, h };
|
|
8318
|
+
}
|
|
8319
|
+
function featuresFromHex(hex) {
|
|
8320
|
+
const { r, g, b } = hexToRgb(hex);
|
|
8321
|
+
const { h, s, l } = rgbToHsl(r, g, b);
|
|
8322
|
+
const { L, a, b: b2 } = srgbToOklab(r, g, b);
|
|
8323
|
+
const { L: okL, C: okC, h: okH } = oklabToOklch(L, a, b2);
|
|
8324
|
+
const max = Math.max(r, g, b);
|
|
8325
|
+
const v = max / 255;
|
|
8326
|
+
const Y = 0.2126 * srgbToLinear(r) + 0.7152 * srgbToLinear(g) + 0.0722 * srgbToLinear(b);
|
|
8327
|
+
const chroma = s;
|
|
8328
|
+
return { r, g, b, h, s, l, v, Y, chroma, okL, okC, okH, hex };
|
|
8329
|
+
}
|
|
8330
|
+
|
|
8203
8331
|
// ../theme-core/src/site-styles/appearancePresetResolution.ts
|
|
8204
8332
|
function assertValidOptionGroups(preset2) {
|
|
8205
8333
|
preset2.optionGroups?.forEach((group) => {
|
|
@@ -11729,6 +11857,9 @@ var curatedSiteStyleIdValues = [
|
|
|
11729
11857
|
"site-style:bright-community",
|
|
11730
11858
|
"site-style:quiet-luxury",
|
|
11731
11859
|
"site-style:practical-services",
|
|
11860
|
+
"site-style:quiet-practice",
|
|
11861
|
+
"site-style:personal-retreat-journal",
|
|
11862
|
+
"site-style:tactile-workshop",
|
|
11732
11863
|
"site-style:modern-wellness",
|
|
11733
11864
|
"site-style:bold-launch",
|
|
11734
11865
|
"site-style:south-west-twerk-school"
|
|
@@ -11811,7 +11942,8 @@ function defineCuratedSiteStyle(input) {
|
|
|
11811
11942
|
name: input.name,
|
|
11812
11943
|
description: input.description,
|
|
11813
11944
|
generationBrief: input.generationBrief,
|
|
11814
|
-
|
|
11945
|
+
selectionKeywordRules: input.selectionKeywordRules ?? [],
|
|
11946
|
+
siteCreatorSelection: input.siteCreatorSelection ?? { kind: "explicit_only" },
|
|
11815
11947
|
template: {
|
|
11816
11948
|
id: asDesignSystemTemplateId(`template:${input.id.replace("site-style:", "")}`),
|
|
11817
11949
|
name: input.name,
|
|
@@ -11955,12 +12087,13 @@ var curatedSiteStyles = [
|
|
|
11955
12087
|
name: "Quiet Luxury",
|
|
11956
12088
|
description: "Minimal, confident, and refined for premium experiences and private services.",
|
|
11957
12089
|
generationBrief: "Use fewer claims, more specificity, and restrained sensory detail. Favor elegant media and low repetition over dense panels.",
|
|
11958
|
-
|
|
11959
|
-
|
|
11960
|
-
"
|
|
11961
|
-
"
|
|
11962
|
-
"
|
|
11963
|
-
"
|
|
12090
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 20 },
|
|
12091
|
+
selectionKeywordRules: [
|
|
12092
|
+
{ kind: "word", value: "luxury" },
|
|
12093
|
+
{ kind: "word", value: "premium" },
|
|
12094
|
+
{ kind: "word", value: "boutique" },
|
|
12095
|
+
{ kind: "word", value: "bespoke" },
|
|
12096
|
+
{ kind: "word", value: "exclusive" }
|
|
11964
12097
|
],
|
|
11965
12098
|
tokenRecipes: {
|
|
11966
12099
|
palette: "high-contrast",
|
|
@@ -11989,13 +12122,14 @@ var curatedSiteStyles = [
|
|
|
11989
12122
|
name: "Practical Services",
|
|
11990
12123
|
description: "Efficient, plainspoken, and conversion-focused for trades and everyday services.",
|
|
11991
12124
|
generationBrief: "Make services, location, trust signals, and contact paths obvious. Keep copy brief and avoid ornate visual treatments.",
|
|
11992
|
-
|
|
11993
|
-
|
|
11994
|
-
"
|
|
11995
|
-
"
|
|
11996
|
-
"
|
|
11997
|
-
"
|
|
11998
|
-
"
|
|
12125
|
+
siteCreatorSelection: { kind: "primary_goal_support" },
|
|
12126
|
+
selectionKeywordRules: [
|
|
12127
|
+
{ kind: "word", value: "repair" },
|
|
12128
|
+
{ kind: "substring", value: "plumb" },
|
|
12129
|
+
{ kind: "substring", value: "electric" },
|
|
12130
|
+
{ kind: "word", value: "cleaning" },
|
|
12131
|
+
{ kind: "substring", value: "landscap" },
|
|
12132
|
+
{ kind: "substring", value: "contractor" }
|
|
11999
12133
|
],
|
|
12000
12134
|
tokenRecipes: {
|
|
12001
12135
|
palette: "brand-led",
|
|
@@ -12046,18 +12180,134 @@ var curatedSiteStyles = [
|
|
|
12046
12180
|
paletteChoice("warm-neutral-forest")
|
|
12047
12181
|
]
|
|
12048
12182
|
}),
|
|
12183
|
+
defineCuratedSiteStyle({
|
|
12184
|
+
id: "site-style:quiet-practice",
|
|
12185
|
+
name: "Quiet Practice",
|
|
12186
|
+
description: "Grounded, calm, and practical for small appointment-first practices.",
|
|
12187
|
+
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.",
|
|
12188
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 30 },
|
|
12189
|
+
selectionKeywordRules: [
|
|
12190
|
+
{ kind: "substring", value: "massage" },
|
|
12191
|
+
{ kind: "word", value: "bodywork" },
|
|
12192
|
+
{ kind: "phrase", value: "appointment practice" },
|
|
12193
|
+
{ kind: "phrase", value: "appointment-first" },
|
|
12194
|
+
{ kind: "substring", value: "practitioner" },
|
|
12195
|
+
{ kind: "substring", value: "therap" },
|
|
12196
|
+
{ kind: "substring", value: "clinic" },
|
|
12197
|
+
{ kind: "phrase", value: "wellness practice" }
|
|
12198
|
+
],
|
|
12199
|
+
tokenRecipes: {
|
|
12200
|
+
palette: "soft-natural",
|
|
12201
|
+
contrast: "standard",
|
|
12202
|
+
radius: "soft",
|
|
12203
|
+
shadow: "subtle",
|
|
12204
|
+
typography: "clean-sans",
|
|
12205
|
+
spacing: "regular",
|
|
12206
|
+
motion: "subtle"
|
|
12207
|
+
},
|
|
12208
|
+
compositionBudget: quietBudget,
|
|
12209
|
+
recommendedHeaderLookIds: ["practical-utility", "clean-base", "centered-calm"],
|
|
12210
|
+
buttonPersonalityChoices: [
|
|
12211
|
+
buttonChoice("pebble"),
|
|
12212
|
+
buttonChoice("soft-pill"),
|
|
12213
|
+
buttonChoice("editorial-link")
|
|
12214
|
+
],
|
|
12215
|
+
paletteVariantChoices: [
|
|
12216
|
+
paletteChoice("soft-natural-stone"),
|
|
12217
|
+
paletteChoice("soft-natural-sage"),
|
|
12218
|
+
paletteChoice("warm-neutral-clay")
|
|
12219
|
+
]
|
|
12220
|
+
}),
|
|
12221
|
+
defineCuratedSiteStyle({
|
|
12222
|
+
id: "site-style:personal-retreat-journal",
|
|
12223
|
+
name: "Personal Retreat Journal",
|
|
12224
|
+
description: "Warm, story-led, and readable for solo practitioners with mixed offers.",
|
|
12225
|
+
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.",
|
|
12226
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 40 },
|
|
12227
|
+
selectionKeywordRules: [
|
|
12228
|
+
{ kind: "substring", value: "retreat" },
|
|
12229
|
+
{ kind: "phrase", value: "solo practitioner" },
|
|
12230
|
+
{ kind: "phrase", value: "personal brand" },
|
|
12231
|
+
{ kind: "substring", value: "teacher" },
|
|
12232
|
+
{ kind: "substring", value: "coach" },
|
|
12233
|
+
{ kind: "phrase", value: "retreat resources" },
|
|
12234
|
+
{ kind: "substring", value: "journal" }
|
|
12235
|
+
],
|
|
12236
|
+
tokenRecipes: {
|
|
12237
|
+
palette: "warm-neutral",
|
|
12238
|
+
contrast: "standard",
|
|
12239
|
+
radius: "soft",
|
|
12240
|
+
shadow: "subtle",
|
|
12241
|
+
typography: "serif-editorial",
|
|
12242
|
+
spacing: "airy",
|
|
12243
|
+
motion: "subtle"
|
|
12244
|
+
},
|
|
12245
|
+
compositionBudget: balancedBudget,
|
|
12246
|
+
recommendedHeaderLookIds: ["editorial-line", "centered-calm", "minimal-transparent"],
|
|
12247
|
+
buttonPersonalityChoices: [
|
|
12248
|
+
buttonChoice("editorial-link"),
|
|
12249
|
+
buttonChoice("soft-pill"),
|
|
12250
|
+
buttonChoice("brushed-wash")
|
|
12251
|
+
],
|
|
12252
|
+
paletteVariantChoices: [
|
|
12253
|
+
paletteChoice("warm-neutral-forest"),
|
|
12254
|
+
paletteChoice("warm-neutral-clay"),
|
|
12255
|
+
paletteChoice("soft-natural-stone")
|
|
12256
|
+
]
|
|
12257
|
+
}),
|
|
12258
|
+
defineCuratedSiteStyle({
|
|
12259
|
+
id: "site-style:tactile-workshop",
|
|
12260
|
+
name: "Tactile Workshop",
|
|
12261
|
+
description: "Bright, hands-on, and image-led for maker studios, workshops, and creative classes.",
|
|
12262
|
+
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.",
|
|
12263
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 50 },
|
|
12264
|
+
selectionKeywordRules: [
|
|
12265
|
+
{ kind: "substring", value: "ceramic" },
|
|
12266
|
+
{ kind: "word", value: "pottery" },
|
|
12267
|
+
{ kind: "phrase", value: "maker studio" },
|
|
12268
|
+
{ kind: "phrase", value: "craft class" },
|
|
12269
|
+
{ kind: "phrase", value: "craft workshop" },
|
|
12270
|
+
{ kind: "word", value: "clay" },
|
|
12271
|
+
{ kind: "word", value: "kiln" }
|
|
12272
|
+
],
|
|
12273
|
+
tokenRecipes: {
|
|
12274
|
+
palette: "brand-led",
|
|
12275
|
+
contrast: "standard",
|
|
12276
|
+
radius: "soft",
|
|
12277
|
+
shadow: "subtle",
|
|
12278
|
+
typography: "friendly-sans",
|
|
12279
|
+
spacing: "regular",
|
|
12280
|
+
motion: "subtle"
|
|
12281
|
+
},
|
|
12282
|
+
compositionBudget: balancedBudget,
|
|
12283
|
+
recommendedHeaderLookIds: ["brand-solid", "practical-utility", "clean-base"],
|
|
12284
|
+
recommendedFooterLookIds: ["site-footer-brand-two-band", "footer-muted-grounding"],
|
|
12285
|
+
buttonPersonalityChoices: [
|
|
12286
|
+
buttonChoice("pebble"),
|
|
12287
|
+
buttonChoice("confident-chip"),
|
|
12288
|
+
buttonChoice("ink-stamp"),
|
|
12289
|
+
buttonChoice("editorial-link")
|
|
12290
|
+
],
|
|
12291
|
+
paletteVariantChoices: [
|
|
12292
|
+
paletteChoice("brand-led-warm"),
|
|
12293
|
+
paletteChoice("brand-led-cool"),
|
|
12294
|
+
paletteChoice("soft-natural-watercolor"),
|
|
12295
|
+
paletteChoice("warm-neutral-clay")
|
|
12296
|
+
]
|
|
12297
|
+
}),
|
|
12049
12298
|
defineCuratedSiteStyle({
|
|
12050
12299
|
id: "site-style:bold-launch",
|
|
12051
12300
|
name: "Bold Launch",
|
|
12052
12301
|
description: "High-energy and punchy for launches, campaigns, and creative offers.",
|
|
12053
12302
|
generationBrief: "Use crisp positioning, bold hero structure, strong calls to action, and confident visual rhythm. Keep it precise, not shouty.",
|
|
12054
|
-
|
|
12055
|
-
|
|
12056
|
-
"
|
|
12057
|
-
"
|
|
12058
|
-
"
|
|
12059
|
-
"
|
|
12060
|
-
"
|
|
12303
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 10 },
|
|
12304
|
+
selectionKeywordRules: [
|
|
12305
|
+
{ kind: "substring", value: "launch" },
|
|
12306
|
+
{ kind: "substring", value: "campaign" },
|
|
12307
|
+
{ kind: "word", value: "preorder" },
|
|
12308
|
+
{ kind: "phrase", value: "pre-order" },
|
|
12309
|
+
{ kind: "substring", value: "waitlist" },
|
|
12310
|
+
{ kind: "word", value: "drop" }
|
|
12061
12311
|
],
|
|
12062
12312
|
tokenRecipes: {
|
|
12063
12313
|
palette: "high-contrast",
|
|
@@ -12088,15 +12338,6 @@ var curatedSiteStyles = [
|
|
|
12088
12338
|
name: "South West Twerk School",
|
|
12089
12339
|
description: "Energetic, editorial, and high-contrast for a branded dance school presence.",
|
|
12090
12340
|
generationBrief: "Use confident rhythm, bold burgundy-and-gold accents, large editorial intro copy, strong booking routes, and dark feature sections where proof or forms need emphasis.",
|
|
12091
|
-
selectionKeywords: [
|
|
12092
|
-
"dance",
|
|
12093
|
-
"classes",
|
|
12094
|
-
"workshop",
|
|
12095
|
-
"school",
|
|
12096
|
-
"movement",
|
|
12097
|
-
"performance",
|
|
12098
|
-
"community"
|
|
12099
|
-
],
|
|
12100
12341
|
tokenRecipes: {
|
|
12101
12342
|
palette: "brand-led",
|
|
12102
12343
|
contrast: "maximum",
|
|
@@ -12403,25 +12644,19 @@ var defaultDesignRuntimeRules = defineDesignRuntimeRules({
|
|
|
12403
12644
|
"muted-band": {
|
|
12404
12645
|
background: {
|
|
12405
12646
|
type: "color",
|
|
12406
|
-
color: "muted"
|
|
12407
|
-
textColor: "text",
|
|
12408
|
-
headingColor: "text"
|
|
12647
|
+
color: "muted"
|
|
12409
12648
|
}
|
|
12410
12649
|
},
|
|
12411
12650
|
"accent-band": {
|
|
12412
12651
|
background: {
|
|
12413
12652
|
type: "color",
|
|
12414
|
-
color: "primary"
|
|
12415
|
-
textColor: "primaryForeground",
|
|
12416
|
-
headingColor: "primaryForeground"
|
|
12653
|
+
color: "primary"
|
|
12417
12654
|
}
|
|
12418
12655
|
},
|
|
12419
12656
|
"brand-depth-band": {
|
|
12420
12657
|
background: {
|
|
12421
12658
|
type: "color",
|
|
12422
|
-
color: "primary-800"
|
|
12423
|
-
textColor: "primaryForeground",
|
|
12424
|
-
headingColor: "primaryForeground"
|
|
12659
|
+
color: "primary-800"
|
|
12425
12660
|
}
|
|
12426
12661
|
},
|
|
12427
12662
|
"hero-image": {
|
|
@@ -18518,6 +18753,16 @@ var jsonArrayTransform = {
|
|
|
18518
18753
|
return "";
|
|
18519
18754
|
}
|
|
18520
18755
|
};
|
|
18756
|
+
var csvTransform = {
|
|
18757
|
+
id: "value.csv",
|
|
18758
|
+
kind: "formatter",
|
|
18759
|
+
summary: "Normalize a string or array of strings into a comma-separated list",
|
|
18760
|
+
run: (value) => {
|
|
18761
|
+
const rawValues = Array.isArray(value) ? value : typeof value === "string" ? value.split(",") : [];
|
|
18762
|
+
const normalized = rawValues.filter((item) => typeof item === "string").map((item) => item.trim()).filter(Boolean);
|
|
18763
|
+
return normalized.length > 0 ? Array.from(new Set(normalized)).join(",") : "";
|
|
18764
|
+
}
|
|
18765
|
+
};
|
|
18521
18766
|
var marqueeLoopOptionsSchema = z36.object({
|
|
18522
18767
|
minItems: z36.number().int().min(1).default(10)
|
|
18523
18768
|
});
|
|
@@ -18543,6 +18788,7 @@ var formattingTransforms = [
|
|
|
18543
18788
|
dateFormatShort,
|
|
18544
18789
|
arrayLengthTransform,
|
|
18545
18790
|
jsonArrayTransform,
|
|
18791
|
+
csvTransform,
|
|
18546
18792
|
marqueeLoopTransform
|
|
18547
18793
|
];
|
|
18548
18794
|
|
|
@@ -19026,73 +19272,6 @@ var uiTransforms = [
|
|
|
19026
19272
|
|
|
19027
19273
|
// ../blocks/src/system/transforms/registry/layout.ts
|
|
19028
19274
|
import { z as z38 } from "zod";
|
|
19029
|
-
|
|
19030
|
-
// ../theme-core/src/palette/utils/colorConversion.ts
|
|
19031
|
-
var mod = (a, n) => (a % n + n) % n;
|
|
19032
|
-
var deg = (x) => mod(x, 360);
|
|
19033
|
-
function hexToRgb(hex) {
|
|
19034
|
-
const h = hex.replace(/^#/, "");
|
|
19035
|
-
const m = h.length === 3 ? h.split("").map((c) => c + c).join("") : h;
|
|
19036
|
-
if (m.length !== 6) throw new Error("Bad hex");
|
|
19037
|
-
const int = parseInt(m, 16);
|
|
19038
|
-
return { r: int >> 16 & 255, g: int >> 8 & 255, b: int & 255 };
|
|
19039
|
-
}
|
|
19040
|
-
function srgbToLinear(u) {
|
|
19041
|
-
const x = u / 255;
|
|
19042
|
-
return x <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);
|
|
19043
|
-
}
|
|
19044
|
-
function rgbToHsl(r, g, b) {
|
|
19045
|
-
const R = r / 255, G = g / 255, B = b / 255;
|
|
19046
|
-
const max = Math.max(R, G, B), min = Math.min(R, G, B);
|
|
19047
|
-
const d = max - min;
|
|
19048
|
-
let h = 0;
|
|
19049
|
-
if (d !== 0) {
|
|
19050
|
-
switch (max) {
|
|
19051
|
-
case R:
|
|
19052
|
-
h = (G - B) / d + (G < B ? 6 : 0);
|
|
19053
|
-
break;
|
|
19054
|
-
case G:
|
|
19055
|
-
h = (B - R) / d + 2;
|
|
19056
|
-
break;
|
|
19057
|
-
case B:
|
|
19058
|
-
h = (R - G) / d + 4;
|
|
19059
|
-
break;
|
|
19060
|
-
}
|
|
19061
|
-
h *= 60;
|
|
19062
|
-
}
|
|
19063
|
-
const l = (max + min) / 2;
|
|
19064
|
-
const s = d === 0 ? 0 : d / (1 - Math.abs(2 * l - 1));
|
|
19065
|
-
return { h, s, l };
|
|
19066
|
-
}
|
|
19067
|
-
function srgbToOklab(r, g, b) {
|
|
19068
|
-
const R = srgbToLinear(r), G = srgbToLinear(g), B = srgbToLinear(b);
|
|
19069
|
-
const l = 0.4122214708 * R + 0.5363325363 * G + 0.0514459929 * B;
|
|
19070
|
-
const m = 0.2119034982 * R + 0.6806995451 * G + 0.1073969566 * B;
|
|
19071
|
-
const s = 0.0883024619 * R + 0.2817188376 * G + 0.6299787005 * B;
|
|
19072
|
-
const l_ = Math.cbrt(l), m_ = Math.cbrt(m), s_ = Math.cbrt(s);
|
|
19073
|
-
const L = 0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_;
|
|
19074
|
-
const a = 1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_;
|
|
19075
|
-
const b2 = 0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_;
|
|
19076
|
-
return { L, a, b: b2 };
|
|
19077
|
-
}
|
|
19078
|
-
function oklabToOklch(L, a, b) {
|
|
19079
|
-
const C = Math.sqrt(a * a + b * b);
|
|
19080
|
-
const h = C < 1e-7 ? 0 : deg(Math.atan2(b, a) * 180 / Math.PI);
|
|
19081
|
-
return { L, C, h };
|
|
19082
|
-
}
|
|
19083
|
-
function featuresFromHex(hex) {
|
|
19084
|
-
const { r, g, b } = hexToRgb(hex);
|
|
19085
|
-
const { h, s, l } = rgbToHsl(r, g, b);
|
|
19086
|
-
const { L, a, b: b2 } = srgbToOklab(r, g, b);
|
|
19087
|
-
const { L: okL, C: okC, h: okH } = oklabToOklch(L, a, b2);
|
|
19088
|
-
const max = Math.max(r, g, b);
|
|
19089
|
-
const v = max / 255;
|
|
19090
|
-
const Y = 0.2126 * srgbToLinear(r) + 0.7152 * srgbToLinear(g) + 0.0722 * srgbToLinear(b);
|
|
19091
|
-
const chroma = s;
|
|
19092
|
-
return { r, g, b, h, s, l, v, Y, chroma, okL, okC, okH, hex };
|
|
19093
|
-
}
|
|
19094
|
-
|
|
19095
|
-
// ../blocks/src/system/transforms/registry/layout.ts
|
|
19096
19275
|
var joinClasses4 = (parts) => parts.filter(
|
|
19097
19276
|
(part) => typeof part === "string" && part.trim().length > 0
|
|
19098
19277
|
).join(" ").replace(/\s+/g, " ").trim();
|
|
@@ -23773,7 +23952,12 @@ var eventListingBlockDefinition = {
|
|
|
23773
23952
|
detailLevel: "listing",
|
|
23774
23953
|
kind: { $bind: { from: "content.kind" } },
|
|
23775
23954
|
eventSurface: { $bind: { from: "content.eventSurface" } },
|
|
23776
|
-
eventPresets: {
|
|
23955
|
+
eventPresets: {
|
|
23956
|
+
$bind: {
|
|
23957
|
+
from: "content.filterEventPresets",
|
|
23958
|
+
transforms: [{ id: "value.csv" }]
|
|
23959
|
+
}
|
|
23960
|
+
},
|
|
23777
23961
|
scheduleScope: { $bind: { from: "content.scheduleScope" } }
|
|
23778
23962
|
},
|
|
23779
23963
|
mode: "server"
|
|
@@ -24525,7 +24709,12 @@ var eventCalendarBlockDefinition = {
|
|
|
24525
24709
|
// Pass filter params if configured
|
|
24526
24710
|
kind: { $bind: { from: "content.kind" } },
|
|
24527
24711
|
eventSurface: { $bind: { from: "content.eventSurface" } },
|
|
24528
|
-
eventPresets: {
|
|
24712
|
+
eventPresets: {
|
|
24713
|
+
$bind: {
|
|
24714
|
+
from: "content.filterEventPresets",
|
|
24715
|
+
transforms: [{ id: "value.csv" }]
|
|
24716
|
+
}
|
|
24717
|
+
},
|
|
24529
24718
|
scheduleScope: { $bind: { from: "content.scheduleScope" } },
|
|
24530
24719
|
categoryIds: { $bind: { from: "content.filterCategoryIds" } },
|
|
24531
24720
|
staffMemberId: { $bind: { from: "content.filterStaffMemberId" } },
|
|
@@ -30120,8 +30309,7 @@ var dashboardNavVisibilityBaseSchema2 = z66.object({
|
|
|
30120
30309
|
var dashboardNavVisibilityRolesSchema2 = z66.object({
|
|
30121
30310
|
administrator: dashboardNavVisibilityBaseSchema2.optional(),
|
|
30122
30311
|
editor: dashboardNavVisibilityBaseSchema2.optional(),
|
|
30123
|
-
team_member: dashboardNavVisibilityBaseSchema2.optional()
|
|
30124
|
-
event_host: dashboardNavVisibilityBaseSchema2.optional()
|
|
30312
|
+
team_member: dashboardNavVisibilityBaseSchema2.optional()
|
|
30125
30313
|
}).strip().optional();
|
|
30126
30314
|
var dashboardNavVisibilitySchema2 = dashboardNavVisibilityBaseSchema2.extend({
|
|
30127
30315
|
roles: dashboardNavVisibilityRolesSchema2
|