@riverbankcms/sdk 0.64.0 → 0.68.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -11
- package/dist/_dts/api/src/aiPlayground.d.ts +75 -20
- package/dist/_dts/api/src/apiEndpointTypes.d.ts +12 -0
- package/dist/_dts/api/src/billing.d.ts +7 -40
- package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +4 -1
- package/dist/_dts/api/src/bookingOperations.d.ts +33 -2
- package/dist/_dts/api/src/endpoints.d.ts +32 -0
- package/dist/_dts/api/src/public/types.d.ts +1 -1
- package/dist/_dts/api/src/sdkConfig/contracts.d.ts +0 -40
- package/dist/_dts/api/src/sdkContracts.d.ts +1 -1
- package/dist/_dts/api/src/siteMembers.d.ts +1 -1
- package/dist/_dts/api/src/siteOperations.d.ts +1 -1
- package/dist/_dts/billing/src/components/index.d.ts +426 -0
- package/dist/_dts/billing/src/plans/types.d.ts +1 -1
- package/dist/_dts/blocks/src/PageRenderer.d.ts +4 -0
- package/dist/_dts/blocks/src/bindings/index.d.ts +1 -1
- package/dist/_dts/blocks/src/client.d.ts +6 -0
- package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/hooks/useAvailableDates.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/useAvailableSlots.d.ts +3 -1
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +140 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.state.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/useVisibleTabPolling.d.ts +10 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.default-ui.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +484 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +5 -2
- package/dist/_dts/blocks/src/system/transforms/registry/formatting.d.ts +1 -0
- package/dist/_dts/blocks/src/system/transforms/typed.d.ts +2 -1
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +81 -0
- package/dist/_dts/preview-next/src/client/blocks/pageDesignRuntimePreview.d.ts +7 -3
- package/dist/_dts/preview-next/src/client/blocks/previewProjection/runtimeContentDecoration.d.ts +2 -2
- package/dist/_dts/sdk/src/bookings/index.d.ts +5 -2
- package/dist/_dts/sdk/src/bookings/types.d.ts +2 -0
- package/dist/_dts/sdk/src/cli/commands/push/execute/footer.d.ts +33 -0
- package/dist/_dts/sdk/src/cli/commands/push/scopes/commandBackedDatedOfferingScope.d.ts +32 -0
- package/dist/_dts/sdk/src/cli/commands/push/scopes/types.d.ts +5 -1
- package/dist/_dts/sdk/src/cli/commands/push-execute.d.ts +2 -1
- package/dist/_dts/sdk/src/cli/env.d.ts +2 -1
- package/dist/_dts/sdk/src/cli/merge-remote/entryMergePush.d.ts +2 -1
- package/dist/_dts/sdk/src/cli/site-commands/commandKeys.d.ts +13 -0
- package/dist/_dts/sdk/src/cli/site-commands/commandRuntime.d.ts +144 -0
- package/dist/_dts/sdk/src/cli/site-commands/commandRuntimeCompat.d.ts +21 -0
- package/dist/_dts/sdk/src/cli/site-commands/commandSurfaceDispatch.d.ts +27 -0
- package/dist/_dts/sdk/src/cli/site-commands/datedOfferingCommands.d.ts +56 -0
- package/dist/_dts/sdk/src/cli/site-commands/entryCommands.d.ts +29 -49
- package/dist/_dts/sdk/src/cli/site-commands/footerCommands.d.ts +56 -0
- package/dist/_dts/sdk/src/cli/site-commands/formCommands.d.ts +53 -0
- package/dist/_dts/sdk/src/cli/site-commands/index.d.ts +6 -0
- package/dist/_dts/sdk/src/cli/site-commands/navigationCommands.d.ts +53 -0
- package/dist/_dts/sdk/src/cli/site-commands/pageCommands.d.ts +79 -0
- package/dist/_dts/sdk/src/cli/site-commands/pushExecution.d.ts +19 -20
- package/dist/_dts/sdk/src/cli/site-commands/pushExecutionPlan.d.ts +8 -0
- package/dist/_dts/sdk/src/cli/site-commands/pushExecutionTypes.d.ts +97 -0
- package/dist/_dts/sdk/src/cli/site-commands/residualSettingsTrimming.d.ts +15 -0
- package/dist/_dts/sdk/src/cli/sync/executor.d.ts +10 -28
- package/dist/_dts/sdk/src/cli/sync/index.d.ts +2 -1
- package/dist/_dts/sdk/src/cli/sync/syncResultAggregation.d.ts +4 -0
- package/dist/_dts/sdk/src/config/dashboard-validation.d.ts +0 -48
- package/dist/_dts/sdk/src/config/types.d.ts +1 -1
- package/dist/_dts/sdk/src/rendering/overrides.d.ts +2 -0
- package/dist/_dts/sdk/src/theme-bridge/ThemeBridgeProvider.d.ts +4 -4
- package/dist/_dts/sdk/src/theme-bridge/generateCssVars.d.ts +4 -12
- package/dist/_dts/sdk/src/theme-bridge/index.d.ts +1 -1
- package/dist/_dts/sdk/src/theme-bridge/types.d.ts +17 -9
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/site-commands/src/adapter.d.ts +2 -2
- package/dist/_dts/site-commands/src/commands.d.ts +637 -13
- package/dist/_dts/site-commands/src/domain.d.ts +3 -3
- package/dist/_dts/site-commands/src/exposure.d.ts +41 -0
- package/dist/_dts/site-commands/src/index.d.ts +2 -0
- package/dist/_dts/site-commands/src/metadata.d.ts +159 -3
- package/dist/_dts/site-commands/src/planner.d.ts +13 -6
- package/dist/_dts/site-commands/src/refContributions.d.ts +1 -0
- package/dist/_dts/site-commands/src/refs.d.ts +19 -1
- package/dist/_dts/{sdk/src/cli/merge-remote → site-commands/src}/stableJson.d.ts +2 -0
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/index.d.ts +1 -1
- package/dist/_dts/theme-core/src/palette/utils/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/palette/utils/onColor.d.ts +2 -0
- package/dist/_dts/theme-core/src/runtime/buildThemeRuntimeFromBridge.d.ts +30 -23
- package/dist/_dts/theme-core/src/site-styles/accessibleSurfaces.d.ts +83 -0
- package/dist/_dts/theme-core/src/site-styles/contentTemplateRuntimeCompiler.d.ts +2 -1
- package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +89 -12
- package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +8 -2
- package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +3 -2
- package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +9 -6
- package/dist/_dts/ui/src/callout.d.ts +1 -1
- package/dist/cli/index.mjs +4736 -2026
- package/dist/client/bookings.mjs +5107 -3348
- package/dist/client/client.mjs +4579 -3871
- package/dist/client/hooks.mjs +325 -123
- package/dist/client/rendering/client.mjs +4474 -3869
- package/dist/client/rendering/islands.mjs +4234 -3639
- package/dist/client/rendering.mjs +4508 -3798
- package/dist/preview-next/before-render.mjs +75 -13
- package/dist/preview-next/client/runtime.mjs +3700 -2644
- package/dist/preview-next/middleware.mjs +75 -13
- package/dist/server/components.mjs +698 -383
- package/dist/server/config-validation.mjs +327 -125
- package/dist/server/config.mjs +327 -125
- package/dist/server/data.mjs +325 -123
- package/dist/server/index.mjs +92 -16
- package/dist/server/next.mjs +692 -377
- package/dist/server/page-converter.mjs +159 -41
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +700 -383
- package/dist/server/rendering.mjs +700 -383
- package/dist/server/routing.mjs +406 -131
- package/dist/server/server.mjs +326 -124
- package/dist/server/theme-bridge.mjs +1226 -4697
- package/dist/styles/index.css +38 -38
- package/package.json +1 -1
- package/dist/_dts/blocks/src/system/runtime/components/booking/DateTimeSelectionStep.d.ts +0 -18
- package/dist/_dts/blocks/src/system/runtime/components/booking/PaymentOptionSelectionStep.d.ts +0 -9
- package/dist/_dts/blocks/src/system/runtime/components/booking/ServiceResourceSelector.d.ts +0 -44
- package/dist/_dts/blocks/src/system/runtime/components/booking/ServiceResourceSelector.state.d.ts +0 -23
- package/dist/_dts/blocks/src/system/runtime/components/booking/ServiceSelectionStep.d.ts +0 -18
- package/dist/_dts/blocks/src/system/runtime/components/booking/slotDisplay.d.ts +0 -2
- package/dist/_dts/blocks/src/system/runtime/components/multi-step/MultiStepForm.d.ts +0 -21
- package/dist/_dts/blocks/src/system/runtime/components/multi-step/useMultiStep.d.ts +0 -15
- package/dist/_dts/blocks/src/system/runtime/components/multi-step/useMultiStep.state.d.ts +0 -51
- package/dist/_dts/blocks/src/system/runtime/hooks/useBookingSteps.d.ts +0 -22
- package/dist/_dts/path-utils/src/index.d.ts +0 -8
- package/dist/_dts/path-utils/src/redirectPaths.d.ts +0 -26
- package/dist/_dts/path-utils/src/safeAppPath.d.ts +0 -26
package/dist/styles/index.css
CHANGED
|
@@ -5593,32 +5593,32 @@
|
|
|
5593
5593
|
}
|
|
5594
5594
|
|
|
5595
5595
|
:where(.theme-scope) :where([data-block="appointment-booking"]) .ab-text--muted {
|
|
5596
|
-
opacity: var(--ab-text-muted-opacity);
|
|
5596
|
+
opacity: var(--ab-text-muted-opacity, 0.6);
|
|
5597
5597
|
}
|
|
5598
5598
|
|
|
5599
5599
|
:where(.theme-scope) :where([data-block="appointment-booking"]) .ab-text--faint {
|
|
5600
|
-
opacity: var(--ab-text-faint-opacity);
|
|
5600
|
+
opacity: var(--ab-text-faint-opacity, 0.4);
|
|
5601
5601
|
}
|
|
5602
5602
|
|
|
5603
5603
|
/* Selection cards (service, resource, time slot) */
|
|
5604
5604
|
:where(.theme-scope) :where([data-block="appointment-booking"]) .ab-card {
|
|
5605
5605
|
position: relative;
|
|
5606
5606
|
padding: 1rem;
|
|
5607
|
-
border: 2px solid var(--ab-card-border);
|
|
5608
|
-
border-radius: var(--rb-block-radius);
|
|
5607
|
+
border: 2px solid var(--ab-card-border, rgb(var(--tb-border, 226 232 240)));
|
|
5608
|
+
border-radius: var(--ab-card-radius, var(--rb-block-radius, 1rem));
|
|
5609
5609
|
text-align: left;
|
|
5610
5610
|
background: transparent;
|
|
5611
5611
|
cursor: pointer;
|
|
5612
|
-
transition: border-color var(--rb-block-transition) ease, background-color var(--rb-block-transition) ease;
|
|
5612
|
+
transition: border-color var(--rb-block-transition, 150ms) ease, background-color var(--rb-block-transition, 150ms) ease;
|
|
5613
5613
|
}
|
|
5614
5614
|
|
|
5615
5615
|
:where(.theme-scope) :where([data-block="appointment-booking"]) .ab-card:hover {
|
|
5616
|
-
border-color: var(--ab-card-border-hover);
|
|
5616
|
+
border-color: var(--ab-card-border-hover, rgba(var(--tb-primary, 17 24 39), 0.5));
|
|
5617
5617
|
}
|
|
5618
5618
|
|
|
5619
5619
|
:where(.theme-scope) :where([data-block="appointment-booking"]) .ab-card--selected {
|
|
5620
|
-
border-color: var(--ab-card-border-selected);
|
|
5621
|
-
background-color: var(--ab-card-bg-selected);
|
|
5620
|
+
border-color: var(--ab-card-border-selected, rgb(var(--tb-primary, 17 24 39)));
|
|
5621
|
+
background-color: var(--ab-card-bg-selected, rgba(var(--tb-primary, 17 24 39), 0.05));
|
|
5622
5622
|
}
|
|
5623
5623
|
|
|
5624
5624
|
/* Checkmark indicator */
|
|
@@ -5627,7 +5627,7 @@
|
|
|
5627
5627
|
width: 1.25rem;
|
|
5628
5628
|
height: 1.25rem;
|
|
5629
5629
|
border-radius: 50%;
|
|
5630
|
-
background-color: var(--ab-check-bg);
|
|
5630
|
+
background-color: var(--ab-check-bg, rgb(var(--tb-primary, 17 24 39)));
|
|
5631
5631
|
display: flex;
|
|
5632
5632
|
align-items: center;
|
|
5633
5633
|
justify-content: center;
|
|
@@ -5636,42 +5636,42 @@
|
|
|
5636
5636
|
:where(.theme-scope) :where([data-block="appointment-booking"]) .ab-check svg {
|
|
5637
5637
|
width: 0.75rem;
|
|
5638
5638
|
height: 0.75rem;
|
|
5639
|
-
color: var(--ab-check-text);
|
|
5639
|
+
color: var(--ab-check-text, rgb(var(--tb-background, 255 255 255)));
|
|
5640
5640
|
}
|
|
5641
5641
|
|
|
5642
5642
|
/* Info box (service summary) */
|
|
5643
5643
|
:where(.theme-scope) :where([data-block="appointment-booking"]) .ab-info-box {
|
|
5644
5644
|
padding: 1rem;
|
|
5645
|
-
border: 1px solid var(--ab-card-border);
|
|
5646
|
-
border-radius: var(--rb-block-radius);
|
|
5647
|
-
background-color: var(--ab-muted-bg);
|
|
5645
|
+
border: 1px solid var(--ab-card-border, rgb(var(--tb-border, 226 232 240)));
|
|
5646
|
+
border-radius: var(--ab-card-radius, var(--rb-block-radius, 1rem));
|
|
5647
|
+
background-color: var(--ab-muted-bg, rgba(var(--tb-foreground, var(--tb-text, 15 23 42)), 0.05));
|
|
5648
5648
|
}
|
|
5649
5649
|
|
|
5650
5650
|
/* Alert states */
|
|
5651
5651
|
:where(.theme-scope) :where([data-block="appointment-booking"]) .ab-alert {
|
|
5652
5652
|
padding: 0.75rem 1rem;
|
|
5653
|
-
border-radius: var(--rb-block-radius);
|
|
5653
|
+
border-radius: var(--ab-card-radius, var(--rb-block-radius, 1rem));
|
|
5654
5654
|
font-size: 0.875rem;
|
|
5655
5655
|
}
|
|
5656
5656
|
|
|
5657
5657
|
:where(.theme-scope) :where([data-block="appointment-booking"]) .ab-alert--success {
|
|
5658
|
-
background-color: var(--ab-success-bg);
|
|
5659
|
-
color: var(--ab-success-text);
|
|
5658
|
+
background-color: var(--ab-success-bg, rgba(var(--tb-success, 22 163 74), 0.1));
|
|
5659
|
+
color: var(--ab-success-text, rgb(var(--tb-success, 22 163 74)));
|
|
5660
5660
|
}
|
|
5661
5661
|
|
|
5662
5662
|
:where(.theme-scope) :where([data-block="appointment-booking"]) .ab-alert--error {
|
|
5663
|
-
background-color: var(--ab-error-bg);
|
|
5664
|
-
color: var(--ab-error-text);
|
|
5663
|
+
background-color: var(--ab-error-bg, rgba(var(--tb-destructive, 220 38 38), 0.1));
|
|
5664
|
+
color: var(--ab-error-text, rgb(var(--tb-destructive, 220 38 38)));
|
|
5665
5665
|
}
|
|
5666
5666
|
|
|
5667
5667
|
:where(.theme-scope) :where([data-block="appointment-booking"]) .ab-alert--warning {
|
|
5668
|
-
background-color: var(--ab-warning-bg);
|
|
5669
|
-
color: var(--ab-warning-text);
|
|
5668
|
+
background-color: var(--ab-warning-bg, rgba(var(--tb-warning, 245 158 11), 0.1));
|
|
5669
|
+
color: var(--ab-warning-text, rgb(var(--tb-warning, 245 158 11)));
|
|
5670
5670
|
}
|
|
5671
5671
|
|
|
5672
5672
|
:where(.theme-scope) :where([data-block="appointment-booking"]) .ab-alert--info {
|
|
5673
|
-
background-color: var(--ab-info-bg);
|
|
5674
|
-
color: var(--ab-info-text);
|
|
5673
|
+
background-color: var(--ab-info-bg, rgba(var(--tb-info, 14 165 233), 0.1));
|
|
5674
|
+
color: var(--ab-info-text, rgb(var(--tb-info, 14 165 233)));
|
|
5675
5675
|
}
|
|
5676
5676
|
|
|
5677
5677
|
/* Form elements */
|
|
@@ -5683,7 +5683,7 @@
|
|
|
5683
5683
|
}
|
|
5684
5684
|
|
|
5685
5685
|
:where(.theme-scope) :where([data-block="appointment-booking"]) .ab-required {
|
|
5686
|
-
color: var(--ab-error-text);
|
|
5686
|
+
color: var(--ab-error-text, rgb(var(--tb-destructive, 220 38 38)));
|
|
5687
5687
|
margin-left: 0.125rem;
|
|
5688
5688
|
}
|
|
5689
5689
|
|
|
@@ -5692,19 +5692,19 @@
|
|
|
5692
5692
|
:where(.theme-scope) :where([data-block="appointment-booking"]) .ab-textarea {
|
|
5693
5693
|
width: 100%;
|
|
5694
5694
|
padding: 0.5rem 0.75rem;
|
|
5695
|
-
border: 1px solid var(--ab-input-border);
|
|
5696
|
-
border-radius: var(--rb-block-radius);
|
|
5695
|
+
border: 1px solid var(--ab-input-border, rgb(var(--tb-border, 226 232 240)));
|
|
5696
|
+
border-radius: var(--ab-input-radius, var(--radius-control, var(--rb-block-radius, 1rem)));
|
|
5697
5697
|
background: transparent;
|
|
5698
5698
|
font-size: 0.875rem;
|
|
5699
|
-
transition: border-color var(--rb-block-transition) ease, box-shadow var(--rb-block-transition) ease;
|
|
5699
|
+
transition: border-color var(--rb-block-transition, 150ms) ease, box-shadow var(--rb-block-transition, 150ms) ease;
|
|
5700
5700
|
}
|
|
5701
5701
|
|
|
5702
5702
|
:where(.theme-scope) :where([data-block="appointment-booking"]) .ab-input:focus,
|
|
5703
5703
|
:where(.theme-scope) :where([data-block="appointment-booking"]) .ab-select:focus,
|
|
5704
5704
|
:where(.theme-scope) :where([data-block="appointment-booking"]) .ab-textarea:focus {
|
|
5705
5705
|
outline: none;
|
|
5706
|
-
border-color: var(--ab-card-border-selected);
|
|
5707
|
-
box-shadow: 0 0 0 3px var(--ab-input-focus-ring);
|
|
5706
|
+
border-color: var(--ab-card-border-selected, rgb(var(--tb-primary, 17 24 39)));
|
|
5707
|
+
box-shadow: 0 0 0 3px var(--ab-input-focus-ring, rgba(var(--tb-primary, 17 24 39), 0.3));
|
|
5708
5708
|
}
|
|
5709
5709
|
|
|
5710
5710
|
/* Buttons */
|
|
@@ -5713,31 +5713,31 @@
|
|
|
5713
5713
|
align-items: center;
|
|
5714
5714
|
justify-content: center;
|
|
5715
5715
|
padding: 0.5rem 1.5rem;
|
|
5716
|
-
border-radius: var(--rb-block-radius);
|
|
5716
|
+
border-radius: var(--ab-button-radius, var(--rb-button-radius, var(--rb-block-radius, 1rem)));
|
|
5717
5717
|
font-size: 0.875rem;
|
|
5718
5718
|
font-weight: 500;
|
|
5719
5719
|
cursor: pointer;
|
|
5720
|
-
transition: background-color var(--rb-block-transition) ease, border-color var(--rb-block-transition) ease;
|
|
5720
|
+
transition: background-color var(--rb-block-transition, 150ms) ease, border-color var(--rb-block-transition, 150ms) ease;
|
|
5721
5721
|
}
|
|
5722
5722
|
|
|
5723
5723
|
:where(.theme-scope) :where([data-block="appointment-booking"]) .ab-btn--primary {
|
|
5724
5724
|
flex: 1;
|
|
5725
|
-
background-color: var(--ab-btn-primary-bg);
|
|
5726
|
-
color: var(--ab-btn-primary-text);
|
|
5725
|
+
background-color: var(--ab-btn-primary-bg, rgb(var(--tb-primary, 17 24 39)));
|
|
5726
|
+
color: var(--ab-btn-primary-text, rgb(var(--tb-primaryForeground, 255 255 255)));
|
|
5727
5727
|
border: none;
|
|
5728
5728
|
}
|
|
5729
5729
|
|
|
5730
5730
|
:where(.theme-scope) :where([data-block="appointment-booking"]) .ab-btn--primary:hover:not(:disabled) {
|
|
5731
|
-
background-color: var(--ab-btn-primary-hover);
|
|
5731
|
+
background-color: var(--ab-btn-primary-hover, rgba(var(--tb-primary, 17 24 39), 0.9));
|
|
5732
5732
|
}
|
|
5733
5733
|
|
|
5734
5734
|
:where(.theme-scope) :where([data-block="appointment-booking"]) .ab-btn--secondary {
|
|
5735
5735
|
background: transparent;
|
|
5736
|
-
border: 1px solid var(--ab-btn-secondary-border);
|
|
5736
|
+
border: 1px solid var(--ab-btn-secondary-border, rgb(var(--tb-border, 226 232 240)));
|
|
5737
5737
|
}
|
|
5738
5738
|
|
|
5739
5739
|
:where(.theme-scope) :where([data-block="appointment-booking"]) .ab-btn--secondary:hover:not(:disabled) {
|
|
5740
|
-
background-color: var(--ab-btn-secondary-hover);
|
|
5740
|
+
background-color: var(--ab-btn-secondary-hover, rgba(var(--tb-foreground, var(--tb-text, 15 23 42)), 0.05));
|
|
5741
5741
|
}
|
|
5742
5742
|
|
|
5743
5743
|
:where(.theme-scope) :where([data-block="appointment-booking"]) .ab-btn--link {
|
|
@@ -5767,8 +5767,8 @@
|
|
|
5767
5767
|
:where(.theme-scope) :where([data-block="appointment-booking"]) .ab-skeleton {
|
|
5768
5768
|
height: 2.5rem;
|
|
5769
5769
|
width: 100%;
|
|
5770
|
-
background-color: var(--ab-muted-bg);
|
|
5771
|
-
border-radius: var(--rb-block-radius);
|
|
5770
|
+
background-color: var(--ab-muted-bg, rgba(var(--tb-foreground, var(--tb-text, 15 23 42)), 0.05));
|
|
5771
|
+
border-radius: var(--ab-card-radius, var(--rb-block-radius, 1rem));
|
|
5772
5772
|
animation: ab-pulse 1.5s ease-in-out infinite;
|
|
5773
5773
|
}
|
|
5774
5774
|
|
|
@@ -5797,7 +5797,7 @@
|
|
|
5797
5797
|
:where(.theme-scope) :where([data-block="appointment-booking"]) .ab-link {
|
|
5798
5798
|
display: inline;
|
|
5799
5799
|
margin-left: 0.5rem;
|
|
5800
|
-
color: rgb(var(--tb-primary));
|
|
5800
|
+
color: rgb(var(--tb-primary, 17 24 39));
|
|
5801
5801
|
background: none;
|
|
5802
5802
|
border: none;
|
|
5803
5803
|
padding: 0;
|
package/package.json
CHANGED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import type { BookingFormService } from '../../nodes/booking-form.state';
|
|
3
|
-
interface DateTimeSelectionStepProps {
|
|
4
|
-
siteId: string;
|
|
5
|
-
preSelectedServiceId?: string;
|
|
6
|
-
preSelectedResourceId?: string;
|
|
7
|
-
/** When there's only one service, pass it here to display info and auto-select */
|
|
8
|
-
singleService?: BookingFormService;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* DateTimeSelectionStep Component
|
|
12
|
-
*
|
|
13
|
-
* Step 2: Date and time slot selection
|
|
14
|
-
* Integrates with multi-step context and fetches available slots.
|
|
15
|
-
* Prefetches available dates to filter the date picker.
|
|
16
|
-
*/
|
|
17
|
-
export declare function DateTimeSelectionStep({ siteId, preSelectedServiceId, preSelectedResourceId, singleService, }: DateTimeSelectionStepProps): React.ReactElement;
|
|
18
|
-
export {};
|
package/dist/_dts/blocks/src/system/runtime/components/booking/PaymentOptionSelectionStep.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { type BookingFormService } from '../../nodes/booking-form.state';
|
|
3
|
-
type PaymentOptionSelectionStepProps = Readonly<{
|
|
4
|
-
services: readonly BookingFormService[];
|
|
5
|
-
defaultServiceId?: string;
|
|
6
|
-
enableAppointmentPackages?: boolean;
|
|
7
|
-
}>;
|
|
8
|
-
export declare function PaymentOptionSelectionStep({ services, defaultServiceId, enableAppointmentPackages, }: PaymentOptionSelectionStepProps): React.ReactElement;
|
|
9
|
-
export {};
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
export interface Service {
|
|
2
|
-
id: string;
|
|
3
|
-
title: string;
|
|
4
|
-
description?: string;
|
|
5
|
-
durationMinutes?: number;
|
|
6
|
-
}
|
|
7
|
-
export interface Resource {
|
|
8
|
-
id: string;
|
|
9
|
-
displayName: string;
|
|
10
|
-
title?: string;
|
|
11
|
-
}
|
|
12
|
-
export interface ServiceResourceSelectorProps {
|
|
13
|
-
/** @deprecated Site ID is now provided by BlockApiProvider context */
|
|
14
|
-
siteId?: string;
|
|
15
|
-
services: readonly Service[];
|
|
16
|
-
selectedServiceId?: string;
|
|
17
|
-
selectedResourceId?: string;
|
|
18
|
-
preSelectedServiceId?: string;
|
|
19
|
-
preSelectedResourceId?: string;
|
|
20
|
-
forceServiceSelection?: boolean;
|
|
21
|
-
shouldAutoSelectSingleResource?: boolean;
|
|
22
|
-
onSelect: (selection: {
|
|
23
|
-
serviceId: string;
|
|
24
|
-
resourceId?: string;
|
|
25
|
-
}) => void;
|
|
26
|
-
onBack?: () => void;
|
|
27
|
-
heading?: string;
|
|
28
|
-
description?: string;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* ServiceResourceSelector Component
|
|
32
|
-
*
|
|
33
|
-
* Handles Step 1 of the booking flow: service and resource selection.
|
|
34
|
-
* Only shown when the booking form allows multiple services or when
|
|
35
|
-
* resource selection is needed.
|
|
36
|
-
*
|
|
37
|
-
* Features:
|
|
38
|
-
* - Service selection (if multiple services available)
|
|
39
|
-
* - Resource selection (if multiple resources available for selected service)
|
|
40
|
-
* - Auto-skips if only one option available
|
|
41
|
-
* - Fetches resources dynamically when service is selected
|
|
42
|
-
*/
|
|
43
|
-
export declare function ServiceResourceSelector({ siteId: _siteId, // Deprecated: siteId now comes from BlockApiProvider context
|
|
44
|
-
services, selectedServiceId: controlledSelectedServiceId, selectedResourceId: controlledSelectedResourceId, preSelectedServiceId, preSelectedResourceId, forceServiceSelection, shouldAutoSelectSingleResource, onSelect, onBack, heading, description, }: ServiceResourceSelectorProps): React.ReactElement;
|
package/dist/_dts/blocks/src/system/runtime/components/booking/ServiceResourceSelector.state.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import type { Resource, Service } from "./ServiceResourceSelector";
|
|
2
|
-
export type InitialServiceSelection = Readonly<{
|
|
3
|
-
serviceId: string;
|
|
4
|
-
preserveResourceId?: string;
|
|
5
|
-
}>;
|
|
6
|
-
export declare function shouldShowServiceSelection(input: Readonly<{
|
|
7
|
-
services: readonly Service[];
|
|
8
|
-
forceServiceSelection: boolean;
|
|
9
|
-
}>): boolean;
|
|
10
|
-
export declare function resolveInitialServiceSelection(input: Readonly<{
|
|
11
|
-
services: readonly Service[];
|
|
12
|
-
selectedServiceId?: string;
|
|
13
|
-
preSelectedServiceId?: string;
|
|
14
|
-
preSelectedResourceId?: string;
|
|
15
|
-
shouldAutoSelectSingleService?: boolean;
|
|
16
|
-
hasLoadedInitialService: boolean;
|
|
17
|
-
}>): InitialServiceSelection | null;
|
|
18
|
-
export declare function resolveAutoSelectedResourceId(input: Readonly<{
|
|
19
|
-
resources: readonly Resource[];
|
|
20
|
-
preSelectedResourceId?: string;
|
|
21
|
-
selectedResourceId?: string;
|
|
22
|
-
shouldAutoSelectSingleResource: boolean;
|
|
23
|
-
}>): string | null;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { type BookingFormService } from "../../nodes/booking-form.state";
|
|
3
|
-
interface ServiceSelectionStepProps {
|
|
4
|
-
siteId: string;
|
|
5
|
-
services: readonly BookingFormService[];
|
|
6
|
-
preSelectedServiceId?: string;
|
|
7
|
-
preSelectedResourceId?: string;
|
|
8
|
-
forceServiceSelection?: boolean;
|
|
9
|
-
shouldAutoSelectSingleResource?: boolean;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* ServiceSelectionStep Component
|
|
13
|
-
*
|
|
14
|
-
* Step 1: Service and optionally resource selection
|
|
15
|
-
* Uses multi-step context to update booking data
|
|
16
|
-
*/
|
|
17
|
-
export declare function ServiceSelectionStep({ siteId, services, preSelectedServiceId, preSelectedResourceId, forceServiceSelection, shouldAutoSelectSingleResource, }: ServiceSelectionStepProps): React.ReactElement;
|
|
18
|
-
export {};
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import type { MultiStepFormProps } from "./types";
|
|
3
|
-
/**
|
|
4
|
-
* MultiStepForm Component
|
|
5
|
-
*
|
|
6
|
-
* Generic orchestrator for multi-step forms. Handles step navigation,
|
|
7
|
-
* data accumulation, validation, and progress indication.
|
|
8
|
-
*
|
|
9
|
-
* Usage:
|
|
10
|
-
* ```tsx
|
|
11
|
-
* <MultiStepForm
|
|
12
|
-
* steps={[
|
|
13
|
-
* { id: 'step1', title: 'Step 1', component: <Step1 /> },
|
|
14
|
-
* { id: 'step2', title: 'Step 2', component: <Step2 /> },
|
|
15
|
-
* ]}
|
|
16
|
-
* onComplete={(data) => console.log('Done!', data)}
|
|
17
|
-
* progressStyle="dots"
|
|
18
|
-
* />
|
|
19
|
-
* ```
|
|
20
|
-
*/
|
|
21
|
-
export declare function MultiStepForm<TData = unknown>({ steps, initialData, onComplete, onStepChange, onDataChange, progressStyle, className, persistToUrl, allowSkip, }: MultiStepFormProps<TData>): React.ReactElement;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { Step, MultiStepContextValue } from './types';
|
|
2
|
-
/**
|
|
3
|
-
* Core hook for multi-step form logic
|
|
4
|
-
*
|
|
5
|
-
* Manages step navigation, data accumulation, and validation.
|
|
6
|
-
* This is the engine that powers the MultiStepForm component.
|
|
7
|
-
*/
|
|
8
|
-
export declare function useMultiStep<TData = unknown>({ steps, initialData, onStepChange, onDataChange, onComplete, persistToUrl, }: {
|
|
9
|
-
steps: Step<TData>[];
|
|
10
|
-
initialData?: Partial<TData>;
|
|
11
|
-
onStepChange?: (stepId: string, stepIndex: number) => void;
|
|
12
|
-
onDataChange?: (data: Partial<TData>) => void;
|
|
13
|
-
onComplete?: (data: TData) => void | Promise<void>;
|
|
14
|
-
persistToUrl?: boolean;
|
|
15
|
-
}): MultiStepContextValue<TData>;
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import type { Step } from './types';
|
|
2
|
-
export type MultiStepWorkflowStatus = {
|
|
3
|
-
tag: 'idle';
|
|
4
|
-
} | {
|
|
5
|
-
tag: 'validating';
|
|
6
|
-
} | {
|
|
7
|
-
tag: 'submitting';
|
|
8
|
-
};
|
|
9
|
-
export type MultiStepState<TData = unknown> = {
|
|
10
|
-
data: Partial<TData>;
|
|
11
|
-
currentStepIndex: number;
|
|
12
|
-
errors: Record<string, string>;
|
|
13
|
-
status: MultiStepWorkflowStatus;
|
|
14
|
-
};
|
|
15
|
-
export type MultiStepAction<TData = unknown> = {
|
|
16
|
-
type: 'data-updated';
|
|
17
|
-
updates: Partial<TData>;
|
|
18
|
-
} | {
|
|
19
|
-
type: 'step-changed';
|
|
20
|
-
stepIndex: number;
|
|
21
|
-
} | {
|
|
22
|
-
type: 'validation-started';
|
|
23
|
-
} | {
|
|
24
|
-
type: 'validation-succeeded';
|
|
25
|
-
} | {
|
|
26
|
-
type: 'validation-failed';
|
|
27
|
-
errors: Record<string, string>;
|
|
28
|
-
} | {
|
|
29
|
-
type: 'submission-started';
|
|
30
|
-
} | {
|
|
31
|
-
type: 'submission-succeeded';
|
|
32
|
-
} | {
|
|
33
|
-
type: 'submission-failed';
|
|
34
|
-
message: string;
|
|
35
|
-
} | {
|
|
36
|
-
type: 'reset';
|
|
37
|
-
initialData: Partial<TData>;
|
|
38
|
-
};
|
|
39
|
-
export declare function createInitialMultiStepState<TData = unknown>(initialData: Partial<TData>): MultiStepState<TData>;
|
|
40
|
-
export declare function multiStepReducer<TData = unknown>(state: MultiStepState<TData>, action: MultiStepAction<TData>): MultiStepState<TData>;
|
|
41
|
-
export declare function getVisibleSteps<TData = unknown>(steps: Step<TData>[], data: Partial<TData>): Step<TData>[];
|
|
42
|
-
export declare function findStepIndexById<TData = unknown>(visibleSteps: Step<TData>[], stepId: string): number;
|
|
43
|
-
export declare function getNextStepIndex(state: MultiStepState, visibleStepCount: number): number;
|
|
44
|
-
export declare function getPreviousStepIndex(state: MultiStepState): number;
|
|
45
|
-
export declare function getNavigableStepIndex(stepIndex: number, visibleStepCount: number): number | null;
|
|
46
|
-
export declare function selectIsValidating(state: MultiStepState): boolean;
|
|
47
|
-
export declare function selectIsSubmitting(state: MultiStepState): boolean;
|
|
48
|
-
export declare function selectCanGoNext(state: MultiStepState): boolean;
|
|
49
|
-
export declare function selectCanGoBack(state: MultiStepState): boolean;
|
|
50
|
-
export declare function selectIsFirstStep(state: MultiStepState): boolean;
|
|
51
|
-
export declare function selectIsLastStep(state: MultiStepState, visibleStepCount: number): boolean;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Hook to build multi-step booking flow
|
|
3
|
-
*/
|
|
4
|
-
import type { Step } from "../components/multi-step/types";
|
|
5
|
-
import { type BookingFormConfig, type BookingFormData, type BookingFormService } from "../nodes/booking-form.state";
|
|
6
|
-
export type { BookingFormData };
|
|
7
|
-
/**
|
|
8
|
-
* Build the array of steps for the booking flow
|
|
9
|
-
*
|
|
10
|
-
* Steps are conditionally included based on form configuration:
|
|
11
|
-
* - Service selection: Only if multiple services available
|
|
12
|
-
* - Date/time selection: Always included
|
|
13
|
-
* - Custom fields: Only if form has fields defined
|
|
14
|
-
*/
|
|
15
|
-
export declare function useBookingSteps(siteId: string, formConfig: BookingFormConfig | null, services: readonly BookingFormService[], options?: Readonly<{
|
|
16
|
-
serviceId?: string;
|
|
17
|
-
resourceId?: string;
|
|
18
|
-
requiresServiceSelection?: boolean;
|
|
19
|
-
requiresResourceSelection?: boolean;
|
|
20
|
-
shouldAutoSelectSingleResource?: boolean;
|
|
21
|
-
enableAppointmentPackages?: boolean;
|
|
22
|
-
}>): Step<BookingFormData>[];
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export type PathSegment = string | number;
|
|
2
|
-
export declare function parsePath(path: string | Array<PathSegment>): Array<PathSegment>;
|
|
3
|
-
export declare function segmentsToPath(segments: Array<PathSegment>): string | undefined;
|
|
4
|
-
export declare function getAtPath<T = unknown>(source: unknown, path: string | Array<PathSegment>): T | undefined;
|
|
5
|
-
export declare function setAtPath(target: Record<string, unknown> | Array<unknown>, path: string | Array<PathSegment>, value: unknown): void;
|
|
6
|
-
export declare function toAbsolutePath(base: string | undefined | null, path: string): string;
|
|
7
|
-
export * from './redirectPaths';
|
|
8
|
-
export * from './safeAppPath';
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
export type RedirectPathParseError = {
|
|
2
|
-
tag: 'MISSING';
|
|
3
|
-
} | {
|
|
4
|
-
tag: 'EMPTY';
|
|
5
|
-
} | {
|
|
6
|
-
tag: 'CONTROL_CHAR';
|
|
7
|
-
} | {
|
|
8
|
-
tag: 'BACKSLASH';
|
|
9
|
-
} | {
|
|
10
|
-
tag: 'EXTERNAL_URL';
|
|
11
|
-
} | {
|
|
12
|
-
tag: 'INVALID_PATH';
|
|
13
|
-
} | {
|
|
14
|
-
tag: 'ENCODED_SEPARATOR';
|
|
15
|
-
};
|
|
16
|
-
export type RedirectPathParseResult = {
|
|
17
|
-
ok: true;
|
|
18
|
-
value: string;
|
|
19
|
-
} | {
|
|
20
|
-
ok: false;
|
|
21
|
-
error: RedirectPathParseError;
|
|
22
|
-
};
|
|
23
|
-
export declare function parseInternalRedirectPath(value: unknown): RedirectPathParseResult;
|
|
24
|
-
export declare function sanitizeInternalRedirectPath(value: unknown): string | null;
|
|
25
|
-
export declare function parseSameOriginRedirectPath(value: unknown, baseUrl: string | URL): RedirectPathParseResult;
|
|
26
|
-
export declare function sanitizeSameOriginRedirectPath(value: unknown, baseUrl: string | URL): string | null;
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { type RedirectPathParseError } from './redirectPaths';
|
|
2
|
-
declare const __brand: unique symbol;
|
|
3
|
-
type Brand<T, B extends string> = T & {
|
|
4
|
-
readonly [__brand]: B;
|
|
5
|
-
};
|
|
6
|
-
/**
|
|
7
|
-
* A redirect path that has been validated as a safe, same-origin relative path.
|
|
8
|
-
*
|
|
9
|
-
* Parse once at the boundary, then carry the branded value inward instead of
|
|
10
|
-
* re-validating ad hoc string inputs in every auth flow.
|
|
11
|
-
*/
|
|
12
|
-
export type SafeAppPath = Brand<string, 'SafeAppPath'>;
|
|
13
|
-
export type SafeAppPathParseError = RedirectPathParseError;
|
|
14
|
-
export type SafeAppPathParseResult = {
|
|
15
|
-
ok: true;
|
|
16
|
-
value: SafeAppPath;
|
|
17
|
-
} | {
|
|
18
|
-
ok: false;
|
|
19
|
-
error: SafeAppPathParseError;
|
|
20
|
-
};
|
|
21
|
-
export declare function parseSafeAppPath(value: unknown): SafeAppPathParseResult;
|
|
22
|
-
export declare function sanitizeSafeAppPath(value: unknown): SafeAppPath | null;
|
|
23
|
-
export declare function assertSafeAppPath(value: string): SafeAppPath;
|
|
24
|
-
export declare function safeAppPathOrFallback(value: unknown, fallback: SafeAppPath): SafeAppPath;
|
|
25
|
-
export declare function buildSafeRedirectUrl(path: SafeAppPath, baseUrl: string | URL): URL;
|
|
26
|
-
export {};
|