@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
@@ -30032,16 +30032,18 @@ function toTrimmedString(value) {
30032
30032
  return trimmed ? trimmed : void 0;
30033
30033
  }
30034
30034
  function normalizeBookingFormConfig(form2) {
30035
- if (!form2) return null;
30035
+ if (!isRecord4(form2)) return null;
30036
+ const id = readNonEmptyString(form2.id);
30037
+ const name = readNonEmptyString(form2.name);
30038
+ if (!id || !name) return null;
30039
+ const schemaSource = isRecord4(form2.schema) ? form2.schema : isRecord4(form2.schemaJson) ? form2.schemaJson : null;
30040
+ const settingsSource = isRecord4(form2.settings) ? form2.settings : isRecord4(form2.settingsJson) ? form2.settingsJson : null;
30036
30041
  return {
30037
- id: form2.id,
30038
- name: form2.name,
30039
- slug: "",
30040
- settings: form2.settingsJson,
30041
- schema: form2.schemaJson ? {
30042
- version: form2.schemaJson.version,
30043
- fields: form2.schemaJson.fields ?? []
30044
- } : void 0
30042
+ id,
30043
+ name,
30044
+ slug: typeof form2.slug === "string" ? form2.slug : "",
30045
+ settings: normalizeBookingSettings(settingsSource),
30046
+ schema: normalizeBookingSchema(schemaSource)
30045
30047
  };
30046
30048
  }
30047
30049
  function normalizeBookingServices(services) {
@@ -30057,12 +30059,106 @@ function normalizeBookingServices(services) {
30057
30059
  return [];
30058
30060
  }
30059
30061
  if (Array.isArray(services)) {
30060
- return services.map(normalizeService);
30062
+ return services.filter(isBookingFormService).map(normalizeService);
30063
+ }
30064
+ if (isRecord4(services) && "services" in services) {
30065
+ return Array.isArray(services.services) ? services.services.filter(isBookingFormService).map(normalizeService) : [];
30061
30066
  }
30062
- if ("services" in services) {
30063
- return Array.isArray(services.services) ? services.services.map(normalizeService) : [];
30067
+ return isRecord4(services) ? Object.values(services).filter(isBookingFormService).map(normalizeService) : [];
30068
+ }
30069
+ function normalizeBookingSchema(value) {
30070
+ if (!value) return void 0;
30071
+ const rawFields = Array.isArray(value.fields) ? value.fields : [];
30072
+ const fields3 = rawFields.map(readBookingFormField).filter((field) => field !== null);
30073
+ return {
30074
+ version: typeof value.version === "string" ? value.version : void 0,
30075
+ fields: fields3
30076
+ };
30077
+ }
30078
+ function readBookingFormField(value) {
30079
+ if (!isRecord4(value)) return null;
30080
+ const id = readNonEmptyString(value.id);
30081
+ const label = readNonEmptyString(value.label);
30082
+ const type = readBookingFieldType(value.type);
30083
+ if (!id || !label || !type) return null;
30084
+ return {
30085
+ id,
30086
+ label,
30087
+ type,
30088
+ required: typeof value.required === "boolean" ? value.required : void 0,
30089
+ placeholder: readOptionalString(value.placeholder),
30090
+ helpText: readOptionalString(value.helpText),
30091
+ options: readBookingFieldOptions(value.options),
30092
+ multiple: typeof value.multiple === "boolean" ? value.multiple : void 0,
30093
+ minLength: readOptionalNumber(value.minLength),
30094
+ maxLength: readOptionalNumber(value.maxLength),
30095
+ pattern: readOptionalString(value.pattern),
30096
+ min: readOptionalNumber(value.min),
30097
+ max: readOptionalNumber(value.max)
30098
+ };
30099
+ }
30100
+ function readBookingFieldType(value) {
30101
+ switch (value) {
30102
+ case "text":
30103
+ case "email":
30104
+ case "textarea":
30105
+ case "select":
30106
+ case "radio":
30107
+ case "checkbox":
30108
+ case "booking_requirement_consent":
30109
+ case "tel":
30110
+ case "url":
30111
+ case "number":
30112
+ case "date":
30113
+ case "time":
30114
+ return value;
30115
+ default:
30116
+ return null;
30064
30117
  }
30065
- return Object.values(services).map(normalizeService);
30118
+ }
30119
+ function readBookingFieldOptions(value) {
30120
+ if (!Array.isArray(value)) return void 0;
30121
+ const options = value.map(readBookingFieldOption).filter((option) => option !== null);
30122
+ return options.length > 0 ? options : void 0;
30123
+ }
30124
+ function readBookingFieldOption(value) {
30125
+ if (!isRecord4(value)) return null;
30126
+ const optionValue = readNonEmptyString(value.value);
30127
+ const label = readNonEmptyString(value.label);
30128
+ return optionValue && label ? { value: optionValue, label } : null;
30129
+ }
30130
+ function normalizeBookingSettings(value) {
30131
+ if (!value || value.type !== "booking") return void 0;
30132
+ return {
30133
+ type: "booking",
30134
+ serviceId: readOptionalString(value.serviceId),
30135
+ serviceIds: readStringArray(value.serviceIds),
30136
+ resourceId: readOptionalString(value.resourceId),
30137
+ requiresApproval: typeof value.requiresApproval === "boolean" ? value.requiresApproval : void 0,
30138
+ successMessage: readOptionalString(value.successMessage)
30139
+ };
30140
+ }
30141
+ function isBookingFormService(value) {
30142
+ return isRecord4(value) && typeof value.id === "string" && typeof value.siteId === "string" && typeof value.title === "string";
30143
+ }
30144
+ function readNonEmptyString(value) {
30145
+ if (typeof value !== "string") return null;
30146
+ const trimmed = value.trim();
30147
+ return trimmed.length > 0 ? trimmed : null;
30148
+ }
30149
+ function readOptionalString(value) {
30150
+ return typeof value === "string" ? value : void 0;
30151
+ }
30152
+ function readOptionalNumber(value) {
30153
+ return typeof value === "number" && Number.isFinite(value) ? value : void 0;
30154
+ }
30155
+ function readStringArray(value) {
30156
+ if (!Array.isArray(value)) return void 0;
30157
+ const strings = value.filter((item) => typeof item === "string");
30158
+ return strings.length > 0 ? strings : void 0;
30159
+ }
30160
+ function isRecord4(value) {
30161
+ return typeof value === "object" && value !== null;
30066
30162
  }
30067
30163
 
30068
30164
  // ../blocks/src/system/runtime/nodes/booking-form.interactive.ts
@@ -37370,6 +37466,8 @@ var MemoBlockSection = React6.memo(
37370
37466
  themeConfig,
37371
37467
  data: void 0,
37372
37468
  siteId: dataContext?.siteId,
37469
+ apiBaseUrl: dataContext?.apiBaseUrl,
37470
+ portalToken: dataContext?.portalToken ?? null,
37373
37471
  supabaseUrl: dataContext?.supabaseUrl,
37374
37472
  imageResolveContext,
37375
37473
  blockId: block.id ?? null,
@@ -37484,6 +37582,8 @@ var MemoBlockSection = React6.memo(
37484
37582
  themeConfig,
37485
37583
  data: resolved,
37486
37584
  siteId: dataContext?.siteId,
37585
+ apiBaseUrl: dataContext?.apiBaseUrl,
37586
+ portalToken: dataContext?.portalToken ?? null,
37487
37587
  supabaseUrl: dataContext?.supabaseUrl,
37488
37588
  imageResolveContext,
37489
37589
  blockId: block.id ?? null,
@@ -43246,32 +43346,32 @@ var containerResponsiveThemeCss = `/*
43246
43346
  }
43247
43347
 
43248
43348
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-text--muted {
43249
- opacity: var(--ab-text-muted-opacity);
43349
+ opacity: var(--ab-text-muted-opacity, 0.6);
43250
43350
  }
43251
43351
 
43252
43352
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-text--faint {
43253
- opacity: var(--ab-text-faint-opacity);
43353
+ opacity: var(--ab-text-faint-opacity, 0.4);
43254
43354
  }
43255
43355
 
43256
43356
  /* Selection cards (service, resource, time slot) */
43257
43357
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-card {
43258
43358
  position: relative;
43259
43359
  padding: 1rem;
43260
- border: 2px solid var(--ab-card-border);
43261
- border-radius: var(--rb-block-radius);
43360
+ border: 2px solid var(--ab-card-border, rgb(var(--tb-border, 226 232 240)));
43361
+ border-radius: var(--ab-card-radius, var(--rb-block-radius, 1rem));
43262
43362
  text-align: left;
43263
43363
  background: transparent;
43264
43364
  cursor: pointer;
43265
- transition: border-color var(--rb-block-transition) ease, background-color var(--rb-block-transition) ease;
43365
+ transition: border-color var(--rb-block-transition, 150ms) ease, background-color var(--rb-block-transition, 150ms) ease;
43266
43366
  }
43267
43367
 
43268
43368
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-card:hover {
43269
- border-color: var(--ab-card-border-hover);
43369
+ border-color: var(--ab-card-border-hover, rgba(var(--tb-primary, 17 24 39), 0.5));
43270
43370
  }
43271
43371
 
43272
43372
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-card--selected {
43273
- border-color: var(--ab-card-border-selected);
43274
- background-color: var(--ab-card-bg-selected);
43373
+ border-color: var(--ab-card-border-selected, rgb(var(--tb-primary, 17 24 39)));
43374
+ background-color: var(--ab-card-bg-selected, rgba(var(--tb-primary, 17 24 39), 0.05));
43275
43375
  }
43276
43376
 
43277
43377
  /* Checkmark indicator */
@@ -43280,7 +43380,7 @@ var containerResponsiveThemeCss = `/*
43280
43380
  width: 1.25rem;
43281
43381
  height: 1.25rem;
43282
43382
  border-radius: 50%;
43283
- background-color: var(--ab-check-bg);
43383
+ background-color: var(--ab-check-bg, rgb(var(--tb-primary, 17 24 39)));
43284
43384
  display: flex;
43285
43385
  align-items: center;
43286
43386
  justify-content: center;
@@ -43289,42 +43389,42 @@ var containerResponsiveThemeCss = `/*
43289
43389
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-check svg {
43290
43390
  width: 0.75rem;
43291
43391
  height: 0.75rem;
43292
- color: var(--ab-check-text);
43392
+ color: var(--ab-check-text, rgb(var(--tb-background, 255 255 255)));
43293
43393
  }
43294
43394
 
43295
43395
  /* Info box (service summary) */
43296
43396
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-info-box {
43297
43397
  padding: 1rem;
43298
- border: 1px solid var(--ab-card-border);
43299
- border-radius: var(--rb-block-radius);
43300
- background-color: var(--ab-muted-bg);
43398
+ border: 1px solid var(--ab-card-border, rgb(var(--tb-border, 226 232 240)));
43399
+ border-radius: var(--ab-card-radius, var(--rb-block-radius, 1rem));
43400
+ background-color: var(--ab-muted-bg, rgba(var(--tb-foreground, var(--tb-text, 15 23 42)), 0.05));
43301
43401
  }
43302
43402
 
43303
43403
  /* Alert states */
43304
43404
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-alert {
43305
43405
  padding: 0.75rem 1rem;
43306
- border-radius: var(--rb-block-radius);
43406
+ border-radius: var(--ab-card-radius, var(--rb-block-radius, 1rem));
43307
43407
  font-size: 0.875rem;
43308
43408
  }
43309
43409
 
43310
43410
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-alert--success {
43311
- background-color: var(--ab-success-bg);
43312
- color: var(--ab-success-text);
43411
+ background-color: var(--ab-success-bg, rgba(var(--tb-success, 22 163 74), 0.1));
43412
+ color: var(--ab-success-text, rgb(var(--tb-success, 22 163 74)));
43313
43413
  }
43314
43414
 
43315
43415
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-alert--error {
43316
- background-color: var(--ab-error-bg);
43317
- color: var(--ab-error-text);
43416
+ background-color: var(--ab-error-bg, rgba(var(--tb-destructive, 220 38 38), 0.1));
43417
+ color: var(--ab-error-text, rgb(var(--tb-destructive, 220 38 38)));
43318
43418
  }
43319
43419
 
43320
43420
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-alert--warning {
43321
- background-color: var(--ab-warning-bg);
43322
- color: var(--ab-warning-text);
43421
+ background-color: var(--ab-warning-bg, rgba(var(--tb-warning, 245 158 11), 0.1));
43422
+ color: var(--ab-warning-text, rgb(var(--tb-warning, 245 158 11)));
43323
43423
  }
43324
43424
 
43325
43425
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-alert--info {
43326
- background-color: var(--ab-info-bg);
43327
- color: var(--ab-info-text);
43426
+ background-color: var(--ab-info-bg, rgba(var(--tb-info, 14 165 233), 0.1));
43427
+ color: var(--ab-info-text, rgb(var(--tb-info, 14 165 233)));
43328
43428
  }
43329
43429
 
43330
43430
  /* Form elements */
@@ -43336,7 +43436,7 @@ var containerResponsiveThemeCss = `/*
43336
43436
  }
43337
43437
 
43338
43438
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-required {
43339
- color: var(--ab-error-text);
43439
+ color: var(--ab-error-text, rgb(var(--tb-destructive, 220 38 38)));
43340
43440
  margin-left: 0.125rem;
43341
43441
  }
43342
43442
 
@@ -43345,19 +43445,19 @@ var containerResponsiveThemeCss = `/*
43345
43445
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-textarea {
43346
43446
  width: 100%;
43347
43447
  padding: 0.5rem 0.75rem;
43348
- border: 1px solid var(--ab-input-border);
43349
- border-radius: var(--rb-block-radius);
43448
+ border: 1px solid var(--ab-input-border, rgb(var(--tb-border, 226 232 240)));
43449
+ border-radius: var(--ab-input-radius, var(--radius-control, var(--rb-block-radius, 1rem)));
43350
43450
  background: transparent;
43351
43451
  font-size: 0.875rem;
43352
- transition: border-color var(--rb-block-transition) ease, box-shadow var(--rb-block-transition) ease;
43452
+ transition: border-color var(--rb-block-transition, 150ms) ease, box-shadow var(--rb-block-transition, 150ms) ease;
43353
43453
  }
43354
43454
 
43355
43455
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-input:focus,
43356
43456
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-select:focus,
43357
43457
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-textarea:focus {
43358
43458
  outline: none;
43359
- border-color: var(--ab-card-border-selected);
43360
- box-shadow: 0 0 0 3px var(--ab-input-focus-ring);
43459
+ border-color: var(--ab-card-border-selected, rgb(var(--tb-primary, 17 24 39)));
43460
+ box-shadow: 0 0 0 3px var(--ab-input-focus-ring, rgba(var(--tb-primary, 17 24 39), 0.3));
43361
43461
  }
43362
43462
 
43363
43463
  /* Buttons */
@@ -43366,31 +43466,31 @@ var containerResponsiveThemeCss = `/*
43366
43466
  align-items: center;
43367
43467
  justify-content: center;
43368
43468
  padding: 0.5rem 1.5rem;
43369
- border-radius: var(--rb-block-radius);
43469
+ border-radius: var(--ab-button-radius, var(--rb-button-radius, var(--rb-block-radius, 1rem)));
43370
43470
  font-size: 0.875rem;
43371
43471
  font-weight: 500;
43372
43472
  cursor: pointer;
43373
- transition: background-color var(--rb-block-transition) ease, border-color var(--rb-block-transition) ease;
43473
+ transition: background-color var(--rb-block-transition, 150ms) ease, border-color var(--rb-block-transition, 150ms) ease;
43374
43474
  }
43375
43475
 
43376
43476
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-btn--primary {
43377
43477
  flex: 1;
43378
- background-color: var(--ab-btn-primary-bg);
43379
- color: var(--ab-btn-primary-text);
43478
+ background-color: var(--ab-btn-primary-bg, rgb(var(--tb-primary, 17 24 39)));
43479
+ color: var(--ab-btn-primary-text, rgb(var(--tb-primaryForeground, 255 255 255)));
43380
43480
  border: none;
43381
43481
  }
43382
43482
 
43383
43483
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-btn--primary:hover:not(:disabled) {
43384
- background-color: var(--ab-btn-primary-hover);
43484
+ background-color: var(--ab-btn-primary-hover, rgba(var(--tb-primary, 17 24 39), 0.9));
43385
43485
  }
43386
43486
 
43387
43487
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-btn--secondary {
43388
43488
  background: transparent;
43389
- border: 1px solid var(--ab-btn-secondary-border);
43489
+ border: 1px solid var(--ab-btn-secondary-border, rgb(var(--tb-border, 226 232 240)));
43390
43490
  }
43391
43491
 
43392
43492
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-btn--secondary:hover:not(:disabled) {
43393
- background-color: var(--ab-btn-secondary-hover);
43493
+ background-color: var(--ab-btn-secondary-hover, rgba(var(--tb-foreground, var(--tb-text, 15 23 42)), 0.05));
43394
43494
  }
43395
43495
 
43396
43496
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-btn--link {
@@ -43420,8 +43520,8 @@ var containerResponsiveThemeCss = `/*
43420
43520
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-skeleton {
43421
43521
  height: 2.5rem;
43422
43522
  width: 100%;
43423
- background-color: var(--ab-muted-bg);
43424
- border-radius: var(--rb-block-radius);
43523
+ background-color: var(--ab-muted-bg, rgba(var(--tb-foreground, var(--tb-text, 15 23 42)), 0.05));
43524
+ border-radius: var(--ab-card-radius, var(--rb-block-radius, 1rem));
43425
43525
  animation: ab-pulse 1.5s ease-in-out infinite;
43426
43526
  }
43427
43527
 
@@ -43450,7 +43550,7 @@ var containerResponsiveThemeCss = `/*
43450
43550
  :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-link {
43451
43551
  display: inline;
43452
43552
  margin-left: 0.5rem;
43453
- color: rgb(var(--tb-primary));
43553
+ color: rgb(var(--tb-primary, 17 24 39));
43454
43554
  background: none;
43455
43555
  border: none;
43456
43556
  padding: 0;
@@ -50067,6 +50167,20 @@ var ENDPOINT_DEFINITIONS = {
50067
50167
  responseKind: "json",
50068
50168
  errors: ["validation:invalid_input", "billing:plan_limit_exceeded", "server:internal_error"]
50069
50169
  },
50170
+ createAppointmentResourceWithAccountAccess: {
50171
+ path: "/sites/{siteId}/bookings/resources/account-access",
50172
+ method: "POST",
50173
+ auth: "user",
50174
+ responseKind: "json",
50175
+ errors: [
50176
+ "validation:invalid_input",
50177
+ "auth:forbidden",
50178
+ "billing:plan_limit_exceeded",
50179
+ "resource:conflict",
50180
+ "resource:not_found",
50181
+ "server:internal_error"
50182
+ ]
50183
+ },
50070
50184
  getAppointmentResource: {
50071
50185
  path: "/sites/{siteId}/bookings/resources/{resourceId}",
50072
50186
  method: "GET",
@@ -55910,7 +56024,7 @@ function preset(id, verticalId, canonicalBehaviour, label, pluralLabel, descript
55910
56024
  }
55911
56025
 
55912
56026
  // ../api/src/utils/isRecord.ts
55913
- function isRecord4(value) {
56027
+ function isRecord5(value) {
55914
56028
  return typeof value === "object" && value !== null && !Array.isArray(value);
55915
56029
  }
55916
56030
 
@@ -56199,7 +56313,7 @@ function sanitizeMarks(marks) {
56199
56313
  if (mark.type === "bold" || mark.type === "strong" || mark.type === "italic" || mark.type === "em") {
56200
56314
  return [{ type: mark.type }];
56201
56315
  }
56202
- if (mark.type === "link" && isRecord4(mark.attrs) && typeof mark.attrs.href === "string") {
56316
+ if (mark.type === "link" && isRecord5(mark.attrs) && typeof mark.attrs.href === "string") {
56203
56317
  const attrs = { href: mark.attrs.href };
56204
56318
  if (typeof mark.attrs.target === "string" && mark.attrs.target.trim().length > 0) {
56205
56319
  attrs.target = mark.attrs.target;
@@ -56214,10 +56328,10 @@ function sanitizeMarks(marks) {
56214
56328
  return sanitized.length > 0 ? sanitized : void 0;
56215
56329
  }
56216
56330
  function unwrapRichTextValue(value) {
56217
- if (isRecord4(value) && isRecord4(value.doc)) {
56331
+ if (isRecord5(value) && isRecord5(value.doc)) {
56218
56332
  return unwrapRichTextValue(value.doc);
56219
56333
  }
56220
- if (isRecord4(value) && value.type === "doc") {
56334
+ if (isRecord5(value) && value.type === "doc") {
56221
56335
  return {
56222
56336
  type: "doc",
56223
56337
  content: Array.isArray(value.content) ? value.content.filter(isTipTapNodeLike).map(coerceTipTapNode) : []
@@ -56226,7 +56340,7 @@ function unwrapRichTextValue(value) {
56226
56340
  return EMPTY_SITE_BANNER_BODY;
56227
56341
  }
56228
56342
  function isTipTapNodeLike(value) {
56229
- return isRecord4(value) && typeof value.type === "string";
56343
+ return isRecord5(value) && typeof value.type === "string";
56230
56344
  }
56231
56345
  function coerceTipTapNode(value) {
56232
56346
  return {
@@ -56234,9 +56348,9 @@ function coerceTipTapNode(value) {
56234
56348
  ...Array.isArray(value.content) ? { content: value.content.filter(isTipTapNodeLike).map(coerceTipTapNode) } : {},
56235
56349
  ...typeof value.text === "string" ? { text: value.text } : {},
56236
56350
  ...Array.isArray(value.marks) ? {
56237
- marks: value.marks.filter((mark) => isRecord4(mark) && typeof mark.type === "string").map((mark) => ({
56351
+ marks: value.marks.filter((mark) => isRecord5(mark) && typeof mark.type === "string").map((mark) => ({
56238
56352
  type: mark.type,
56239
- ...isRecord4(mark.attrs) ? { attrs: mark.attrs } : {}
56353
+ ...isRecord5(mark.attrs) ? { attrs: mark.attrs } : {}
56240
56354
  }))
56241
56355
  } : {}
56242
56356
  };
@@ -56710,6 +56824,8 @@ function renderBlockOverride({
56710
56824
  themeConfig: props2.theme,
56711
56825
  data: resolvedData,
56712
56826
  siteId: props2.siteId,
56827
+ apiBaseUrl: props2.apiBaseUrl,
56828
+ portalToken: props2.portalToken ?? null,
56713
56829
  supabaseUrl: props2.supabaseUrl,
56714
56830
  imageResolveContext: runtime.imageResolveContext,
56715
56831
  blockId: props2.blockId ?? null,
@@ -937,6 +937,20 @@ var init_endpoints = __esm({
937
937
  responseKind: "json",
938
938
  errors: ["validation:invalid_input", "billing:plan_limit_exceeded", "server:internal_error"]
939
939
  },
940
+ createAppointmentResourceWithAccountAccess: {
941
+ path: "/sites/{siteId}/bookings/resources/account-access",
942
+ method: "POST",
943
+ auth: "user",
944
+ responseKind: "json",
945
+ errors: [
946
+ "validation:invalid_input",
947
+ "auth:forbidden",
948
+ "billing:plan_limit_exceeded",
949
+ "resource:conflict",
950
+ "resource:not_found",
951
+ "server:internal_error"
952
+ ]
953
+ },
940
954
  getAppointmentResource: {
941
955
  path: "/sites/{siteId}/bookings/resources/{resourceId}",
942
956
  method: "GET",
@@ -965,6 +965,20 @@ var ENDPOINT_DEFINITIONS = {
965
965
  responseKind: "json",
966
966
  errors: ["validation:invalid_input", "billing:plan_limit_exceeded", "server:internal_error"]
967
967
  },
968
+ createAppointmentResourceWithAccountAccess: {
969
+ path: "/sites/{siteId}/bookings/resources/account-access",
970
+ method: "POST",
971
+ auth: "user",
972
+ responseKind: "json",
973
+ errors: [
974
+ "validation:invalid_input",
975
+ "auth:forbidden",
976
+ "billing:plan_limit_exceeded",
977
+ "resource:conflict",
978
+ "resource:not_found",
979
+ "server:internal_error"
980
+ ]
981
+ },
968
982
  getAppointmentResource: {
969
983
  path: "/sites/{siteId}/bookings/resources/{resourceId}",
970
984
  method: "GET",
@@ -6777,7 +6791,7 @@ var SimpleCache = class {
6777
6791
  };
6778
6792
 
6779
6793
  // src/version.ts
6780
- var SDK_VERSION = "0.67.0";
6794
+ var SDK_VERSION = "0.68.0";
6781
6795
 
6782
6796
  // src/client/error.ts
6783
6797
  var RiverbankApiError = class _RiverbankApiError extends Error {