@riverbankcms/sdk 0.67.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.
Files changed (88) hide show
  1. package/README.md +21 -11
  2. package/dist/_dts/api/src/aiPlayground.d.ts +62 -14
  3. package/dist/_dts/api/src/billing.d.ts +7 -40
  4. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +4 -1
  5. package/dist/_dts/api/src/bookingOperations.d.ts +32 -1
  6. package/dist/_dts/api/src/endpoints.d.ts +7 -0
  7. package/dist/_dts/api/src/public/types.d.ts +1 -1
  8. package/dist/_dts/billing/src/components/index.d.ts +426 -0
  9. package/dist/_dts/blocks/src/PageRenderer.d.ts +4 -0
  10. package/dist/_dts/blocks/src/client.d.ts +6 -0
  11. package/dist/_dts/blocks/src/system/runtime/hooks/useAvailableDates.d.ts +1 -0
  12. package/dist/_dts/blocks/src/system/runtime/hooks/useAvailableSlots.d.ts +3 -1
  13. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +140 -0
  14. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.state.d.ts +2 -0
  15. package/dist/_dts/blocks/src/system/runtime/hooks/useVisibleTabPolling.d.ts +10 -0
  16. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.default-ui.d.ts +8 -0
  17. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +484 -0
  18. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +5 -2
  19. package/dist/_dts/sdk/src/bookings/index.d.ts +5 -2
  20. package/dist/_dts/sdk/src/bookings/types.d.ts +2 -0
  21. package/dist/_dts/sdk/src/cli/commands/push/scopes/commandBackedDatedOfferingScope.d.ts +32 -0
  22. package/dist/_dts/sdk/src/cli/commands/push/scopes/types.d.ts +5 -1
  23. package/dist/_dts/sdk/src/cli/site-commands/commandRuntime.d.ts +41 -11
  24. package/dist/_dts/sdk/src/cli/site-commands/commandRuntimeCompat.d.ts +21 -0
  25. package/dist/_dts/sdk/src/cli/site-commands/commandSurfaceDispatch.d.ts +27 -0
  26. package/dist/_dts/sdk/src/cli/site-commands/datedOfferingCommands.d.ts +56 -0
  27. package/dist/_dts/sdk/src/cli/site-commands/entryCommands.d.ts +3 -1
  28. package/dist/_dts/sdk/src/cli/site-commands/footerCommands.d.ts +7 -1
  29. package/dist/_dts/sdk/src/cli/site-commands/formCommands.d.ts +4 -8
  30. package/dist/_dts/sdk/src/cli/site-commands/index.d.ts +1 -0
  31. package/dist/_dts/sdk/src/cli/site-commands/navigationCommands.d.ts +4 -8
  32. package/dist/_dts/sdk/src/cli/site-commands/pageCommands.d.ts +4 -8
  33. package/dist/_dts/sdk/src/cli/site-commands/pushExecution.d.ts +14 -68
  34. package/dist/_dts/sdk/src/cli/site-commands/pushExecutionPlan.d.ts +8 -0
  35. package/dist/_dts/sdk/src/cli/site-commands/pushExecutionTypes.d.ts +97 -0
  36. package/dist/_dts/sdk/src/cli/site-commands/residualSettingsTrimming.d.ts +15 -0
  37. package/dist/_dts/sdk/src/cli/sync/index.d.ts +1 -0
  38. package/dist/_dts/sdk/src/cli/sync/syncResultAggregation.d.ts +4 -0
  39. package/dist/_dts/sdk/src/rendering/overrides.d.ts +2 -0
  40. package/dist/_dts/sdk/src/theme-bridge/ThemeBridgeProvider.d.ts +4 -4
  41. package/dist/_dts/sdk/src/theme-bridge/generateCssVars.d.ts +4 -12
  42. package/dist/_dts/sdk/src/theme-bridge/index.d.ts +1 -1
  43. package/dist/_dts/sdk/src/theme-bridge/types.d.ts +17 -9
  44. package/dist/_dts/sdk/src/version.d.ts +1 -1
  45. package/dist/_dts/site-commands/src/commands.d.ts +228 -1
  46. package/dist/_dts/site-commands/src/domain.d.ts +1 -1
  47. package/dist/_dts/site-commands/src/index.d.ts +1 -0
  48. package/dist/_dts/site-commands/src/metadata.d.ts +66 -1
  49. package/dist/_dts/site-commands/src/refContributions.d.ts +1 -0
  50. package/dist/_dts/site-commands/src/refs.d.ts +7 -1
  51. package/dist/_dts/{sdk/src/cli/merge-remote → site-commands/src}/stableJson.d.ts +2 -0
  52. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  53. package/dist/_dts/theme-core/src/index.d.ts +1 -1
  54. package/dist/_dts/theme-core/src/runtime/buildThemeRuntimeFromBridge.d.ts +30 -23
  55. package/dist/cli/index.mjs +1699 -766
  56. package/dist/client/bookings.mjs +5107 -3348
  57. package/dist/client/client.mjs +4004 -3522
  58. package/dist/client/hooks.mjs +14 -0
  59. package/dist/client/rendering/client.mjs +4185 -3721
  60. package/dist/client/rendering/islands.mjs +4317 -3853
  61. package/dist/client/rendering.mjs +4076 -3592
  62. package/dist/preview-next/before-render.mjs +14 -0
  63. package/dist/preview-next/client/runtime.mjs +2770 -2268
  64. package/dist/preview-next/middleware.mjs +14 -0
  65. package/dist/server/components.mjs +172 -58
  66. package/dist/server/config-validation.mjs +14 -0
  67. package/dist/server/config.mjs +14 -0
  68. package/dist/server/data.mjs +14 -0
  69. package/dist/server/index.mjs +15 -1
  70. package/dist/server/next.mjs +166 -52
  71. package/dist/server/prebuild.mjs +1 -1
  72. package/dist/server/rendering/server.mjs +174 -58
  73. package/dist/server/rendering.mjs +174 -58
  74. package/dist/server/routing.mjs +14 -0
  75. package/dist/server/server.mjs +15 -1
  76. package/dist/server/theme-bridge.mjs +1247 -4825
  77. package/dist/styles/index.css +38 -38
  78. package/package.json +1 -1
  79. package/dist/_dts/blocks/src/system/runtime/components/booking/DateTimeSelectionStep.d.ts +0 -18
  80. package/dist/_dts/blocks/src/system/runtime/components/booking/PaymentOptionSelectionStep.d.ts +0 -9
  81. package/dist/_dts/blocks/src/system/runtime/components/booking/ServiceResourceSelector.d.ts +0 -44
  82. package/dist/_dts/blocks/src/system/runtime/components/booking/ServiceResourceSelector.state.d.ts +0 -23
  83. package/dist/_dts/blocks/src/system/runtime/components/booking/ServiceSelectionStep.d.ts +0 -18
  84. package/dist/_dts/blocks/src/system/runtime/components/booking/slotDisplay.d.ts +0 -2
  85. package/dist/_dts/blocks/src/system/runtime/components/multi-step/MultiStepForm.d.ts +0 -21
  86. package/dist/_dts/blocks/src/system/runtime/components/multi-step/useMultiStep.d.ts +0 -15
  87. package/dist/_dts/blocks/src/system/runtime/components/multi-step/useMultiStep.state.d.ts +0 -51
  88. package/dist/_dts/blocks/src/system/runtime/hooks/useBookingSteps.d.ts +0 -22
@@ -30026,16 +30026,18 @@ function toTrimmedString(value) {
30026
30026
  return trimmed ? trimmed : void 0;
30027
30027
  }
30028
30028
  function normalizeBookingFormConfig(form2) {
30029
- if (!form2) return null;
30029
+ if (!isRecord4(form2)) return null;
30030
+ const id = readNonEmptyString(form2.id);
30031
+ const name = readNonEmptyString(form2.name);
30032
+ if (!id || !name) return null;
30033
+ const schemaSource = isRecord4(form2.schema) ? form2.schema : isRecord4(form2.schemaJson) ? form2.schemaJson : null;
30034
+ const settingsSource = isRecord4(form2.settings) ? form2.settings : isRecord4(form2.settingsJson) ? form2.settingsJson : null;
30030
30035
  return {
30031
- id: form2.id,
30032
- name: form2.name,
30033
- slug: "",
30034
- settings: form2.settingsJson,
30035
- schema: form2.schemaJson ? {
30036
- version: form2.schemaJson.version,
30037
- fields: form2.schemaJson.fields ?? []
30038
- } : void 0
30036
+ id,
30037
+ name,
30038
+ slug: typeof form2.slug === "string" ? form2.slug : "",
30039
+ settings: normalizeBookingSettings(settingsSource),
30040
+ schema: normalizeBookingSchema(schemaSource)
30039
30041
  };
30040
30042
  }
30041
30043
  function normalizeBookingServices(services) {
@@ -30051,12 +30053,106 @@ function normalizeBookingServices(services) {
30051
30053
  return [];
30052
30054
  }
30053
30055
  if (Array.isArray(services)) {
30054
- return services.map(normalizeService);
30056
+ return services.filter(isBookingFormService).map(normalizeService);
30057
+ }
30058
+ if (isRecord4(services) && "services" in services) {
30059
+ return Array.isArray(services.services) ? services.services.filter(isBookingFormService).map(normalizeService) : [];
30055
30060
  }
30056
- if ("services" in services) {
30057
- return Array.isArray(services.services) ? services.services.map(normalizeService) : [];
30061
+ return isRecord4(services) ? Object.values(services).filter(isBookingFormService).map(normalizeService) : [];
30062
+ }
30063
+ function normalizeBookingSchema(value) {
30064
+ if (!value) return void 0;
30065
+ const rawFields = Array.isArray(value.fields) ? value.fields : [];
30066
+ const fields3 = rawFields.map(readBookingFormField).filter((field) => field !== null);
30067
+ return {
30068
+ version: typeof value.version === "string" ? value.version : void 0,
30069
+ fields: fields3
30070
+ };
30071
+ }
30072
+ function readBookingFormField(value) {
30073
+ if (!isRecord4(value)) return null;
30074
+ const id = readNonEmptyString(value.id);
30075
+ const label = readNonEmptyString(value.label);
30076
+ const type = readBookingFieldType(value.type);
30077
+ if (!id || !label || !type) return null;
30078
+ return {
30079
+ id,
30080
+ label,
30081
+ type,
30082
+ required: typeof value.required === "boolean" ? value.required : void 0,
30083
+ placeholder: readOptionalString(value.placeholder),
30084
+ helpText: readOptionalString(value.helpText),
30085
+ options: readBookingFieldOptions(value.options),
30086
+ multiple: typeof value.multiple === "boolean" ? value.multiple : void 0,
30087
+ minLength: readOptionalNumber(value.minLength),
30088
+ maxLength: readOptionalNumber(value.maxLength),
30089
+ pattern: readOptionalString(value.pattern),
30090
+ min: readOptionalNumber(value.min),
30091
+ max: readOptionalNumber(value.max)
30092
+ };
30093
+ }
30094
+ function readBookingFieldType(value) {
30095
+ switch (value) {
30096
+ case "text":
30097
+ case "email":
30098
+ case "textarea":
30099
+ case "select":
30100
+ case "radio":
30101
+ case "checkbox":
30102
+ case "booking_requirement_consent":
30103
+ case "tel":
30104
+ case "url":
30105
+ case "number":
30106
+ case "date":
30107
+ case "time":
30108
+ return value;
30109
+ default:
30110
+ return null;
30058
30111
  }
30059
- return Object.values(services).map(normalizeService);
30112
+ }
30113
+ function readBookingFieldOptions(value) {
30114
+ if (!Array.isArray(value)) return void 0;
30115
+ const options = value.map(readBookingFieldOption).filter((option) => option !== null);
30116
+ return options.length > 0 ? options : void 0;
30117
+ }
30118
+ function readBookingFieldOption(value) {
30119
+ if (!isRecord4(value)) return null;
30120
+ const optionValue = readNonEmptyString(value.value);
30121
+ const label = readNonEmptyString(value.label);
30122
+ return optionValue && label ? { value: optionValue, label } : null;
30123
+ }
30124
+ function normalizeBookingSettings(value) {
30125
+ if (!value || value.type !== "booking") return void 0;
30126
+ return {
30127
+ type: "booking",
30128
+ serviceId: readOptionalString(value.serviceId),
30129
+ serviceIds: readStringArray(value.serviceIds),
30130
+ resourceId: readOptionalString(value.resourceId),
30131
+ requiresApproval: typeof value.requiresApproval === "boolean" ? value.requiresApproval : void 0,
30132
+ successMessage: readOptionalString(value.successMessage)
30133
+ };
30134
+ }
30135
+ function isBookingFormService(value) {
30136
+ return isRecord4(value) && typeof value.id === "string" && typeof value.siteId === "string" && typeof value.title === "string";
30137
+ }
30138
+ function readNonEmptyString(value) {
30139
+ if (typeof value !== "string") return null;
30140
+ const trimmed = value.trim();
30141
+ return trimmed.length > 0 ? trimmed : null;
30142
+ }
30143
+ function readOptionalString(value) {
30144
+ return typeof value === "string" ? value : void 0;
30145
+ }
30146
+ function readOptionalNumber(value) {
30147
+ return typeof value === "number" && Number.isFinite(value) ? value : void 0;
30148
+ }
30149
+ function readStringArray(value) {
30150
+ if (!Array.isArray(value)) return void 0;
30151
+ const strings = value.filter((item) => typeof item === "string");
30152
+ return strings.length > 0 ? strings : void 0;
30153
+ }
30154
+ function isRecord4(value) {
30155
+ return typeof value === "object" && value !== null;
30060
30156
  }
30061
30157
 
30062
30158
  // ../blocks/src/system/runtime/nodes/booking-form.interactive.ts
@@ -37364,6 +37460,8 @@ var MemoBlockSection = React6.memo(
37364
37460
  themeConfig,
37365
37461
  data: void 0,
37366
37462
  siteId: dataContext?.siteId,
37463
+ apiBaseUrl: dataContext?.apiBaseUrl,
37464
+ portalToken: dataContext?.portalToken ?? null,
37367
37465
  supabaseUrl: dataContext?.supabaseUrl,
37368
37466
  imageResolveContext,
37369
37467
  blockId: block.id ?? null,
@@ -37478,6 +37576,8 @@ var MemoBlockSection = React6.memo(
37478
37576
  themeConfig,
37479
37577
  data: resolved,
37480
37578
  siteId: dataContext?.siteId,
37579
+ apiBaseUrl: dataContext?.apiBaseUrl,
37580
+ portalToken: dataContext?.portalToken ?? null,
37481
37581
  supabaseUrl: dataContext?.supabaseUrl,
37482
37582
  imageResolveContext,
37483
37583
  blockId: block.id ?? null,
@@ -43240,32 +43340,32 @@ var containerResponsiveThemeCss = `/*
43240
43340
  }
43241
43341
 
43242
43342
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-text--muted {
43243
- opacity: var(--ab-text-muted-opacity);
43343
+ opacity: var(--ab-text-muted-opacity, 0.6);
43244
43344
  }
43245
43345
 
43246
43346
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-text--faint {
43247
- opacity: var(--ab-text-faint-opacity);
43347
+ opacity: var(--ab-text-faint-opacity, 0.4);
43248
43348
  }
43249
43349
 
43250
43350
  /* Selection cards (service, resource, time slot) */
43251
43351
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-card {
43252
43352
  position: relative;
43253
43353
  padding: 1rem;
43254
- border: 2px solid var(--ab-card-border);
43255
- border-radius: var(--rb-block-radius);
43354
+ border: 2px solid var(--ab-card-border, rgb(var(--tb-border, 226 232 240)));
43355
+ border-radius: var(--ab-card-radius, var(--rb-block-radius, 1rem));
43256
43356
  text-align: left;
43257
43357
  background: transparent;
43258
43358
  cursor: pointer;
43259
- transition: border-color var(--rb-block-transition) ease, background-color var(--rb-block-transition) ease;
43359
+ transition: border-color var(--rb-block-transition, 150ms) ease, background-color var(--rb-block-transition, 150ms) ease;
43260
43360
  }
43261
43361
 
43262
43362
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-card:hover {
43263
- border-color: var(--ab-card-border-hover);
43363
+ border-color: var(--ab-card-border-hover, rgba(var(--tb-primary, 17 24 39), 0.5));
43264
43364
  }
43265
43365
 
43266
43366
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-card--selected {
43267
- border-color: var(--ab-card-border-selected);
43268
- background-color: var(--ab-card-bg-selected);
43367
+ border-color: var(--ab-card-border-selected, rgb(var(--tb-primary, 17 24 39)));
43368
+ background-color: var(--ab-card-bg-selected, rgba(var(--tb-primary, 17 24 39), 0.05));
43269
43369
  }
43270
43370
 
43271
43371
  /* Checkmark indicator */
@@ -43274,7 +43374,7 @@ var containerResponsiveThemeCss = `/*
43274
43374
  width: 1.25rem;
43275
43375
  height: 1.25rem;
43276
43376
  border-radius: 50%;
43277
- background-color: var(--ab-check-bg);
43377
+ background-color: var(--ab-check-bg, rgb(var(--tb-primary, 17 24 39)));
43278
43378
  display: flex;
43279
43379
  align-items: center;
43280
43380
  justify-content: center;
@@ -43283,42 +43383,42 @@ var containerResponsiveThemeCss = `/*
43283
43383
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-check svg {
43284
43384
  width: 0.75rem;
43285
43385
  height: 0.75rem;
43286
- color: var(--ab-check-text);
43386
+ color: var(--ab-check-text, rgb(var(--tb-background, 255 255 255)));
43287
43387
  }
43288
43388
 
43289
43389
  /* Info box (service summary) */
43290
43390
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-info-box {
43291
43391
  padding: 1rem;
43292
- border: 1px solid var(--ab-card-border);
43293
- border-radius: var(--rb-block-radius);
43294
- background-color: var(--ab-muted-bg);
43392
+ border: 1px solid var(--ab-card-border, rgb(var(--tb-border, 226 232 240)));
43393
+ border-radius: var(--ab-card-radius, var(--rb-block-radius, 1rem));
43394
+ background-color: var(--ab-muted-bg, rgba(var(--tb-foreground, var(--tb-text, 15 23 42)), 0.05));
43295
43395
  }
43296
43396
 
43297
43397
  /* Alert states */
43298
43398
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-alert {
43299
43399
  padding: 0.75rem 1rem;
43300
- border-radius: var(--rb-block-radius);
43400
+ border-radius: var(--ab-card-radius, var(--rb-block-radius, 1rem));
43301
43401
  font-size: 0.875rem;
43302
43402
  }
43303
43403
 
43304
43404
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-alert--success {
43305
- background-color: var(--ab-success-bg);
43306
- color: var(--ab-success-text);
43405
+ background-color: var(--ab-success-bg, rgba(var(--tb-success, 22 163 74), 0.1));
43406
+ color: var(--ab-success-text, rgb(var(--tb-success, 22 163 74)));
43307
43407
  }
43308
43408
 
43309
43409
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-alert--error {
43310
- background-color: var(--ab-error-bg);
43311
- color: var(--ab-error-text);
43410
+ background-color: var(--ab-error-bg, rgba(var(--tb-destructive, 220 38 38), 0.1));
43411
+ color: var(--ab-error-text, rgb(var(--tb-destructive, 220 38 38)));
43312
43412
  }
43313
43413
 
43314
43414
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-alert--warning {
43315
- background-color: var(--ab-warning-bg);
43316
- color: var(--ab-warning-text);
43415
+ background-color: var(--ab-warning-bg, rgba(var(--tb-warning, 245 158 11), 0.1));
43416
+ color: var(--ab-warning-text, rgb(var(--tb-warning, 245 158 11)));
43317
43417
  }
43318
43418
 
43319
43419
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-alert--info {
43320
- background-color: var(--ab-info-bg);
43321
- color: var(--ab-info-text);
43420
+ background-color: var(--ab-info-bg, rgba(var(--tb-info, 14 165 233), 0.1));
43421
+ color: var(--ab-info-text, rgb(var(--tb-info, 14 165 233)));
43322
43422
  }
43323
43423
 
43324
43424
  /* Form elements */
@@ -43330,7 +43430,7 @@ var containerResponsiveThemeCss = `/*
43330
43430
  }
43331
43431
 
43332
43432
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-required {
43333
- color: var(--ab-error-text);
43433
+ color: var(--ab-error-text, rgb(var(--tb-destructive, 220 38 38)));
43334
43434
  margin-left: 0.125rem;
43335
43435
  }
43336
43436
 
@@ -43339,19 +43439,19 @@ var containerResponsiveThemeCss = `/*
43339
43439
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-textarea {
43340
43440
  width: 100%;
43341
43441
  padding: 0.5rem 0.75rem;
43342
- border: 1px solid var(--ab-input-border);
43343
- border-radius: var(--rb-block-radius);
43442
+ border: 1px solid var(--ab-input-border, rgb(var(--tb-border, 226 232 240)));
43443
+ border-radius: var(--ab-input-radius, var(--radius-control, var(--rb-block-radius, 1rem)));
43344
43444
  background: transparent;
43345
43445
  font-size: 0.875rem;
43346
- transition: border-color var(--rb-block-transition) ease, box-shadow var(--rb-block-transition) ease;
43446
+ transition: border-color var(--rb-block-transition, 150ms) ease, box-shadow var(--rb-block-transition, 150ms) ease;
43347
43447
  }
43348
43448
 
43349
43449
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-input:focus,
43350
43450
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-select:focus,
43351
43451
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-textarea:focus {
43352
43452
  outline: none;
43353
- border-color: var(--ab-card-border-selected);
43354
- box-shadow: 0 0 0 3px var(--ab-input-focus-ring);
43453
+ border-color: var(--ab-card-border-selected, rgb(var(--tb-primary, 17 24 39)));
43454
+ box-shadow: 0 0 0 3px var(--ab-input-focus-ring, rgba(var(--tb-primary, 17 24 39), 0.3));
43355
43455
  }
43356
43456
 
43357
43457
  /* Buttons */
@@ -43360,31 +43460,31 @@ var containerResponsiveThemeCss = `/*
43360
43460
  align-items: center;
43361
43461
  justify-content: center;
43362
43462
  padding: 0.5rem 1.5rem;
43363
- border-radius: var(--rb-block-radius);
43463
+ border-radius: var(--ab-button-radius, var(--rb-button-radius, var(--rb-block-radius, 1rem)));
43364
43464
  font-size: 0.875rem;
43365
43465
  font-weight: 500;
43366
43466
  cursor: pointer;
43367
- transition: background-color var(--rb-block-transition) ease, border-color var(--rb-block-transition) ease;
43467
+ transition: background-color var(--rb-block-transition, 150ms) ease, border-color var(--rb-block-transition, 150ms) ease;
43368
43468
  }
43369
43469
 
43370
43470
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-btn--primary {
43371
43471
  flex: 1;
43372
- background-color: var(--ab-btn-primary-bg);
43373
- color: var(--ab-btn-primary-text);
43472
+ background-color: var(--ab-btn-primary-bg, rgb(var(--tb-primary, 17 24 39)));
43473
+ color: var(--ab-btn-primary-text, rgb(var(--tb-primaryForeground, 255 255 255)));
43374
43474
  border: none;
43375
43475
  }
43376
43476
 
43377
43477
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-btn--primary:hover:not(:disabled) {
43378
- background-color: var(--ab-btn-primary-hover);
43478
+ background-color: var(--ab-btn-primary-hover, rgba(var(--tb-primary, 17 24 39), 0.9));
43379
43479
  }
43380
43480
 
43381
43481
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-btn--secondary {
43382
43482
  background: transparent;
43383
- border: 1px solid var(--ab-btn-secondary-border);
43483
+ border: 1px solid var(--ab-btn-secondary-border, rgb(var(--tb-border, 226 232 240)));
43384
43484
  }
43385
43485
 
43386
43486
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-btn--secondary:hover:not(:disabled) {
43387
- background-color: var(--ab-btn-secondary-hover);
43487
+ background-color: var(--ab-btn-secondary-hover, rgba(var(--tb-foreground, var(--tb-text, 15 23 42)), 0.05));
43388
43488
  }
43389
43489
 
43390
43490
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-btn--link {
@@ -43414,8 +43514,8 @@ var containerResponsiveThemeCss = `/*
43414
43514
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-skeleton {
43415
43515
  height: 2.5rem;
43416
43516
  width: 100%;
43417
- background-color: var(--ab-muted-bg);
43418
- border-radius: var(--rb-block-radius);
43517
+ background-color: var(--ab-muted-bg, rgba(var(--tb-foreground, var(--tb-text, 15 23 42)), 0.05));
43518
+ border-radius: var(--ab-card-radius, var(--rb-block-radius, 1rem));
43419
43519
  animation: ab-pulse 1.5s ease-in-out infinite;
43420
43520
  }
43421
43521
 
@@ -43444,7 +43544,7 @@ var containerResponsiveThemeCss = `/*
43444
43544
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-link {
43445
43545
  display: inline;
43446
43546
  margin-left: 0.5rem;
43447
- color: rgb(var(--tb-primary));
43547
+ color: rgb(var(--tb-primary, 17 24 39));
43448
43548
  background: none;
43449
43549
  border: none;
43450
43550
  padding: 0;
@@ -50044,6 +50144,20 @@ var ENDPOINT_DEFINITIONS = {
50044
50144
  responseKind: "json",
50045
50145
  errors: ["validation:invalid_input", "billing:plan_limit_exceeded", "server:internal_error"]
50046
50146
  },
50147
+ createAppointmentResourceWithAccountAccess: {
50148
+ path: "/sites/{siteId}/bookings/resources/account-access",
50149
+ method: "POST",
50150
+ auth: "user",
50151
+ responseKind: "json",
50152
+ errors: [
50153
+ "validation:invalid_input",
50154
+ "auth:forbidden",
50155
+ "billing:plan_limit_exceeded",
50156
+ "resource:conflict",
50157
+ "resource:not_found",
50158
+ "server:internal_error"
50159
+ ]
50160
+ },
50047
50161
  getAppointmentResource: {
50048
50162
  path: "/sites/{siteId}/bookings/resources/{resourceId}",
50049
50163
  method: "GET",
@@ -55887,7 +56001,7 @@ function preset(id, verticalId, canonicalBehaviour, label, pluralLabel, descript
55887
56001
  }
55888
56002
 
55889
56003
  // ../api/src/utils/isRecord.ts
55890
- function isRecord4(value) {
56004
+ function isRecord5(value) {
55891
56005
  return typeof value === "object" && value !== null && !Array.isArray(value);
55892
56006
  }
55893
56007
 
@@ -56176,7 +56290,7 @@ function sanitizeMarks(marks) {
56176
56290
  if (mark.type === "bold" || mark.type === "strong" || mark.type === "italic" || mark.type === "em") {
56177
56291
  return [{ type: mark.type }];
56178
56292
  }
56179
- if (mark.type === "link" && isRecord4(mark.attrs) && typeof mark.attrs.href === "string") {
56293
+ if (mark.type === "link" && isRecord5(mark.attrs) && typeof mark.attrs.href === "string") {
56180
56294
  const attrs = { href: mark.attrs.href };
56181
56295
  if (typeof mark.attrs.target === "string" && mark.attrs.target.trim().length > 0) {
56182
56296
  attrs.target = mark.attrs.target;
@@ -56191,10 +56305,10 @@ function sanitizeMarks(marks) {
56191
56305
  return sanitized.length > 0 ? sanitized : void 0;
56192
56306
  }
56193
56307
  function unwrapRichTextValue(value) {
56194
- if (isRecord4(value) && isRecord4(value.doc)) {
56308
+ if (isRecord5(value) && isRecord5(value.doc)) {
56195
56309
  return unwrapRichTextValue(value.doc);
56196
56310
  }
56197
- if (isRecord4(value) && value.type === "doc") {
56311
+ if (isRecord5(value) && value.type === "doc") {
56198
56312
  return {
56199
56313
  type: "doc",
56200
56314
  content: Array.isArray(value.content) ? value.content.filter(isTipTapNodeLike).map(coerceTipTapNode) : []
@@ -56203,7 +56317,7 @@ function unwrapRichTextValue(value) {
56203
56317
  return EMPTY_SITE_BANNER_BODY;
56204
56318
  }
56205
56319
  function isTipTapNodeLike(value) {
56206
- return isRecord4(value) && typeof value.type === "string";
56320
+ return isRecord5(value) && typeof value.type === "string";
56207
56321
  }
56208
56322
  function coerceTipTapNode(value) {
56209
56323
  return {
@@ -56211,9 +56325,9 @@ function coerceTipTapNode(value) {
56211
56325
  ...Array.isArray(value.content) ? { content: value.content.filter(isTipTapNodeLike).map(coerceTipTapNode) } : {},
56212
56326
  ...typeof value.text === "string" ? { text: value.text } : {},
56213
56327
  ...Array.isArray(value.marks) ? {
56214
- marks: value.marks.filter((mark) => isRecord4(mark) && typeof mark.type === "string").map((mark) => ({
56328
+ marks: value.marks.filter((mark) => isRecord5(mark) && typeof mark.type === "string").map((mark) => ({
56215
56329
  type: mark.type,
56216
- ...isRecord4(mark.attrs) ? { attrs: mark.attrs } : {}
56330
+ ...isRecord5(mark.attrs) ? { attrs: mark.attrs } : {}
56217
56331
  }))
56218
56332
  } : {}
56219
56333
  };
@@ -56680,6 +56794,8 @@ function renderBlockOverride({
56680
56794
  themeConfig: props2.theme,
56681
56795
  data: resolvedData,
56682
56796
  siteId: props2.siteId,
56797
+ apiBaseUrl: props2.apiBaseUrl,
56798
+ portalToken: props2.portalToken ?? null,
56683
56799
  supabaseUrl: props2.supabaseUrl,
56684
56800
  imageResolveContext: runtime.imageResolveContext,
56685
56801
  blockId: props2.blockId ?? null,