@riverbankcms/sdk 0.145.0 → 0.147.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/CHANGELOG.md +29 -0
- package/dist/{PreviewEditorSidebar-O-V6Pl5a.mjs → PreviewEditorSidebar-DtpB3_sS.mjs} +51 -33
- package/dist/{PreviewEditorUI-1UlX_9cw.mjs → PreviewEditorUI-DxTLgaHo.mjs} +3 -3
- package/dist/{PreviewQueryProvider-BxGwdOCV.mjs → PreviewQueryProvider-Dd4dxOiU.mjs} +1 -1
- package/dist/{SdkPreviewModeRuntime-DYbA_4iv.mjs → SdkPreviewModeRuntime-DMMNCngt.mjs} +311 -186
- package/dist/{SiteChromeCustomizeContext-CNTKQ9nx.mjs → SiteChromeCustomizeContext-DQXZXiqS.mjs} +3808 -2395
- package/dist/_dts/ai/src/contracts/proposals.d.ts +1122 -0
- package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +102 -0
- package/dist/_dts/api/src/accountApi.d.ts +5 -5
- package/dist/_dts/api/src/bookingConfig.d.ts +24 -1
- package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +11 -26
- package/dist/_dts/api/src/bookingManagementEventEndpointTypes.d.ts +45 -1
- package/dist/_dts/api/src/bookingOperations.d.ts +2 -44
- package/dist/_dts/api/src/bookingPeople.d.ts +92 -0
- package/dist/_dts/api/src/bookingPeopleEndpointDefinitions.d.ts +38 -0
- package/dist/_dts/api/src/bookingRecords.d.ts +11 -49
- package/dist/_dts/api/src/bookingSettingsSections.d.ts +1 -1
- package/dist/_dts/api/src/bookings.d.ts +1 -0
- package/dist/_dts/api/src/clientErrorReporting.d.ts +50 -0
- package/dist/_dts/api/src/communications.d.ts +20 -4
- package/dist/_dts/api/src/contentRuntime.d.ts +3 -7
- package/dist/_dts/api/src/endpoints.d.ts +816 -655
- package/dist/_dts/api/src/event-visibility.d.ts +20 -0
- package/dist/_dts/api/src/eventManagementContracts.d.ts +72 -4
- package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +24 -0
- package/dist/_dts/api/src/eventPageWords.d.ts +19 -0
- package/dist/_dts/api/src/eventSeriesRegistrationEndpointDefinitions.d.ts +14 -0
- package/dist/_dts/api/src/index.d.ts +9 -2
- package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
- package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
- package/dist/_dts/api/src/launchReadiness.d.ts +19 -6
- package/dist/_dts/api/src/launchRequirementPriority.d.ts +3 -0
- package/dist/_dts/api/src/mailingListIntegration.d.ts +6 -0
- package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +1 -1
- package/dist/_dts/api/src/newsletterCampaignCommandEndpoints.d.ts +13 -0
- package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +57 -0
- package/dist/_dts/api/src/occurrenceScheduling.d.ts +29 -0
- package/dist/_dts/api/src/pageSurfaceEndpoints.d.ts +44 -0
- package/dist/_dts/api/src/participantMessaging.d.ts +11 -1
- package/dist/_dts/api/src/publicAppointmentBookingContracts.d.ts +48 -0
- package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +7 -0
- package/dist/_dts/api/src/sdk-event-upsert.d.ts +55 -1
- package/dist/_dts/api/src/sdkContracts.d.ts +3 -42
- package/dist/_dts/api/src/sdkCourseBooking.d.ts +30 -0
- package/dist/_dts/api/src/sdkEventEndpointDefinitions.d.ts +76 -0
- package/dist/_dts/api/src/sdkEventLifecycle.d.ts +37 -0
- package/dist/_dts/api/src/sdkManagedEventContracts.d.ts +18 -0
- package/dist/_dts/api/src/sdkPageDesign.d.ts +388 -0
- package/dist/_dts/api/src/sdkPageDesignEndpointDefinitions.d.ts +22 -0
- package/dist/_dts/api/src/sdkPullEventContracts.d.ts +46 -0
- package/dist/_dts/api/src/siteAddressEndpoints.d.ts +29 -0
- package/dist/_dts/api/src/siteLifecycleEndpoints.d.ts +61 -0
- package/dist/_dts/api/src/siteManagementEndpointDefinitions.d.ts +49 -0
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +6 -49
- package/dist/_dts/api/src/siteOnboarding.d.ts +72 -18
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -1
- package/dist/_dts/api/src/types.d.ts +7 -1
- package/dist/_dts/api/src/wholeSeriesRuns.d.ts +14 -0
- package/dist/_dts/blocks/src/PageRenderer.d.ts +3 -4
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +8 -0
- package/dist/_dts/blocks/src/index.d.ts +2 -0
- package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +29 -1
- package/dist/_dts/blocks/src/pageRendererContracts.d.ts +5 -1
- package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +27 -5
- package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +14 -1
- package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +4 -1
- package/dist/_dts/blocks/src/system/icons/social.d.ts +1 -1
- package/dist/_dts/blocks/src/system/registry.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/api/types/appointments.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +12 -0
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +12 -0
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessEventRegistrationFlow.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.completion.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +19 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-choice.d.ts +5 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-note.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-state.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.reserved-fields.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.server.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-handler.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-success.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/AttendeeDetailsStep.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/SuccessStep.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/sessionStorage.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +20 -4
- package/dist/_dts/blocks/src/system/runtime/nodes/form.fields.d.ts +5 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.block-submission.d.ts +34 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.client.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +6 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.parts.d.ts +46 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +4 -1
- package/dist/_dts/blocks/src/system/runtime/shared/components/BookingMailingListNote.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/shared/components/CheckboxChoice.d.ts +18 -0
- package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/shared/mailingListSignupCopy.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/shared/types.d.ts +1 -0
- package/dist/_dts/blocks/src/system/transforms/registry/_utils/surfaceForegroundStyles.d.ts +3 -2
- package/dist/_dts/blocks/src/system/transforms/registry/core.d.ts +2 -0
- package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +1 -3
- package/dist/_dts/content-editor/src/index.d.ts +1 -0
- package/dist/_dts/content-editor/src/primitives/previewEditableOutline.d.ts +2 -0
- package/dist/_dts/content-editor/src/ui/editorBlockEquality.d.ts +3 -0
- package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +3 -5
- package/dist/_dts/core/src/block-content-identity.d.ts +5 -0
- package/dist/_dts/core/src/editor-state.d.ts +2 -7
- package/dist/_dts/core/src/index.d.ts +2 -1
- package/dist/_dts/core/src/mailing-list-runtime.d.ts +15 -0
- package/dist/_dts/core/src/mailing-list-setup.d.ts +2 -0
- package/dist/_dts/core/src/mailing-list-submission.d.ts +9 -1
- package/dist/_dts/core/src/navigation-portal-labels.d.ts +9 -0
- package/dist/_dts/core/src/participants.d.ts +0 -38
- package/dist/_dts/core/src/public-event-booking-availability.d.ts +20 -1
- package/dist/_dts/core/src/public-profile.d.ts +3 -1
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +151 -24
- package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +3 -0
- package/dist/_dts/editor-blocks/src/block-editor/EmptyState.d.ts +13 -1
- package/dist/_dts/editor-blocks/src/block-editor/actionPresentation.d.ts +1 -0
- package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +2 -8
- package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
- package/dist/_dts/preview-next/src/client/blocks/EditablePageRenderer.d.ts +7 -1
- package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +5 -5
- package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +1 -2
- package/dist/_dts/sdk/src/next/renderSdkContent.d.ts +0 -1
- package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +3 -2
- package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +3 -2
- package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +6 -1
- package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +5 -2
- package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +6 -1
- package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +2 -0
- package/dist/_dts/sdk/src/rendering/hooks/useContent.d.ts +5 -1
- package/dist/_dts/sdk/src/rendering/hooks/usePage.d.ts +5 -1
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/surfaces/src/index.d.ts +9 -0
- package/dist/_dts/theme-core/src/buttons/effects/types.d.ts +1 -1
- package/dist/_dts/theme-core/src/footer/effectiveNavLinkStyle.d.ts +13 -0
- package/dist/_dts/theme-core/src/footer/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/header/effectiveNavLinkStyle.d.ts +17 -0
- package/dist/_dts/theme-core/src/header/generateHeaderLogoStyles.d.ts +15 -0
- package/dist/_dts/theme-core/src/header/generateHeaderNavLinkStyles.d.ts +4 -0
- package/dist/_dts/theme-core/src/header/index.d.ts +3 -0
- package/dist/_dts/theme-core/src/header/legacyNavLinkStyle.d.ts +1 -1
- package/dist/_dts/theme-core/src/header/openingForegroundProjection.d.ts +7 -0
- package/dist/_dts/theme-core/src/header/rootPaint.d.ts +4 -0
- package/dist/_dts/theme-core/src/inputs/checkable.d.ts +42 -0
- package/dist/_dts/theme-core/src/inputs/inputGroup.d.ts +19 -0
- package/dist/_dts/theme-core/src/navigation/effectPolicy.d.ts +38 -0
- package/dist/_dts/theme-core/src/navigation/generateNavLinkCSS.d.ts +4 -0
- package/dist/_dts/theme-core/src/navigation/types.d.ts +4 -0
- package/dist/_dts/theme-core/src/site-styles/accessibleSurfaces.d.ts +1 -1
- package/dist/_dts/theme-core/src/surfaces/foregroundContract.d.ts +7 -0
- package/dist/_dts/theme-core/src/surfaces/foregroundInteraction.d.ts +29 -22
- package/dist/_dts/theme-core/src/surfaces/foregroundRoles.d.ts +10 -2
- package/dist/_dts/theme-core/src/surfaces/resolveSurfaceForeground.d.ts +9 -0
- package/dist/_dts/theme-core/src/utils/cssDeclarations.d.ts +2 -0
- package/dist/_dts/ui/src/badge.d.ts +2 -1
- package/dist/_dts/ui/src/button.d.ts +1 -1
- package/dist/_dts/ui/src/combobox-keys.d.ts +23 -0
- package/dist/_dts/ui/src/combobox-rows.d.ts +34 -0
- package/dist/_dts/ui/src/combobox.d.ts +26 -1
- package/dist/_dts/ui/src/date-picker.d.ts +5 -8
- package/dist/_dts/ui/src/editor-item-card.d.ts +1 -0
- package/dist/_dts/ui/src/field-trigger.d.ts +39 -0
- package/dist/_dts/ui/src/fieldControl.d.ts +27 -0
- package/dist/_dts/ui/src/index.d.ts +4 -1
- package/dist/_dts/ui/src/native-select.d.ts +8 -0
- package/dist/_dts/ui/src/navigation-tabs.d.ts +2 -1
- package/dist/_dts/ui/src/popover.d.ts +7 -1
- package/dist/_dts/ui/src/segmented-control.d.ts +4 -0
- package/dist/_dts/ui/src/surface.d.ts +1 -1
- package/dist/client/{BookingConsentAgreement-DlVOmpW4.mjs → BookingMailingListNote-1n4Ch_u_.mjs} +15 -4
- package/dist/client/CheckboxChoice-B33MqoUo.mjs +24 -0
- package/dist/client/{DiscountCodeDisclosure-T9q623PQ.mjs → DiscountCodeDisclosure-CKJtz0mY.mjs} +1 -1
- package/dist/client/{EventCombined.client-DnsUeONl.mjs → EventCombined.client-C0pgma9y.mjs} +7 -7
- package/dist/client/{EventListing.client-CNBFqJS4.mjs → EventListing.client-4fhLOvHP.mjs} +2 -2
- package/dist/client/{LeafletStaticMap-C7higg52.mjs → LeafletStaticMap-DScC4F3w.mjs} +1 -1
- package/dist/client/{scrollToBlock-CWs8EIdo.mjs → TerminalPanel-B5ZUsYhe.mjs} +77 -77
- package/dist/client/{ThemedButton-LAJTNrS8.mjs → ThemedButton-DoVIV1Ao.mjs} +2 -2
- package/dist/client/{accordion-BcNF9TjX.mjs → accordion-CoT5g7zo.mjs} +1 -1
- package/dist/client/{bookingForm-BUaQ3S03.mjs → bookingForm-BWxB46xD.mjs} +251 -150
- package/dist/client/bookings.mjs +415 -234
- package/dist/client/{carousel-CTdF6e0V.mjs → carousel-DtNYWFd3.mjs} +2 -2
- package/dist/client/{carousel.client-jahpU9Vz.mjs → carousel.client-A2lG-9od.mjs} +1 -1
- package/dist/client/{cart-pGtyf_XU.mjs → cart-z4qZih1Y.mjs} +3 -3
- package/dist/client/{checkout-Da9WSn7Y.mjs → checkout-DpL7euFH.mjs} +3 -3
- package/dist/client/{checkoutUrls-CW3-78uu.mjs → checkoutUrls-BEfR7kVu.mjs} +1 -1
- package/dist/client/client.mjs +3721 -2220
- package/dist/client/{colorStyles-CuJBiS-1.mjs → colorStyles-j5U9v5JA.mjs} +5 -1
- package/dist/client/{context-BFeY_Wbm.mjs → context-C8TinPJc.mjs} +1 -1
- package/dist/client/{dates-BhwVSxDg.mjs → dates-vwwxTeB0.mjs} +2 -3
- package/dist/client/{eventCalendar-BAtdnR4s.mjs → eventCalendar-DIbHfJXO.mjs} +10 -10
- package/dist/client/{eventCombined-RksA3tRC.mjs → eventCombined-DoGMJ6cg.mjs} +4 -4
- package/dist/client/{eventDetails-BB9hB4wR.mjs → eventDetails-BjN9v6a1.mjs} +4 -4
- package/dist/client/{eventListing-BpJBkviM.mjs → eventListing-DajjWgOv.mjs} +4 -4
- package/dist/client/{eventRegistration-B18jFq_o.mjs → eventRegistration-DMq9gMA-.mjs} +121 -54
- package/dist/client/{form-Dodt8Y8t.mjs → form-Qf6qTbos.mjs} +136 -105
- package/dist/client/{headerSection-B0qj9ttg.mjs → headerSection-D7qJrqFX.mjs} +3 -3
- package/dist/client/hooks.mjs +1148 -179
- package/dist/client/{locationMap-gn-iMk7a.mjs → locationMap-CCF9-t_0.mjs} +4 -4
- package/dist/client/{FieldValidationMessage-AYanWFb-.mjs → mailingListSignupCopy-DZSHZrm6.mjs} +14 -1
- package/dist/client/{media-BtJ37tzS.mjs → media-CwBGetqC.mjs} +1 -1
- package/dist/client/{newsletterForm-oByLdFkr.mjs → newsletterForm-DzCLSP4S.mjs} +206 -104
- package/dist/client/{pricing-BOU0_Hai.mjs → pricing-Cgxv2KLC.mjs} +1 -1
- package/dist/client/{productDetail-D9v1zH2j.mjs → productDetail-ru9w5GHx.mjs} +3 -3
- package/dist/client/{productList-D-mItx1n.mjs → productList-zaapKSl-.mjs} +3 -3
- package/dist/client/{propsDecoder-C3TP_z4x.mjs → propsDecoder-CwvvNOHx.mjs} +91 -28
- package/dist/client/rendering/client.mjs +1441 -826
- package/dist/client/rendering/islands.mjs +19 -19
- package/dist/client/rendering.mjs +3652 -2005
- package/dist/client/{routeIslandApiConfig-DzN1W0sq.mjs → routeIslandApiConfig-BwVFo0Y4.mjs} +1 -1
- package/dist/client/{shop-commerce-gklw_hLF.mjs → shop-commerce-De7gEnkA.mjs} +8 -8
- package/dist/client/{shop-commerce-store-Sf1eyTaZ.mjs → shop-commerce-store-B3MCxIBW.mjs} +1 -1
- package/dist/client/{shop-Dufw7N7o.mjs → shop-mktkXvbV.mjs} +7 -7
- package/dist/client/{shopShared-B5nyA41S.mjs → shopShared-TqExh235.mjs} +5 -5
- package/dist/client/{useEventFilters-CLL829vy.mjs → useEventFilters-n_OjkIjX.mjs} +8 -8
- package/dist/preview-next/before-render.mjs +490 -153
- package/dist/preview-next/client/runtime.mjs +4 -4
- package/dist/preview-next/editor-base.css +64 -2
- package/dist/preview-next/editor-chrome.css +7 -4
- package/dist/preview-next/keepAlive.mjs +450 -153
- package/dist/preview-next/middleware.mjs +451 -153
- package/dist/{previewAuthStore-BxAFlu-j.mjs → previewAuthStore-C_EHQ5XA.mjs} +475 -153
- package/dist/{sdk-runtime-D0uZFev7.mjs → sdk-runtime-BIkJg5y1.mjs} +2 -2
- package/dist/{separator-EvdCAn4V.mjs → separator-C9qDP95Z.mjs} +1 -1
- package/dist/server/components.mjs +4957 -3509
- package/dist/server/config-validation.mjs +1115 -189
- package/dist/server/config.mjs +1115 -189
- package/dist/server/data.mjs +1113 -188
- package/dist/server/index.mjs +492 -154
- package/dist/server/navigation.mjs +13 -2
- package/dist/server/next.mjs +4798 -3462
- package/dist/server/page-converter.mjs +143 -89
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +3862 -2414
- package/dist/server/rendering.mjs +5648 -4154
- package/dist/server/routing.mjs +1223 -329
- package/dist/server/server.mjs +1172 -314
- package/dist/server/theme-bridge.mjs +533 -128
- package/dist/server/theme.mjs +5 -1
- package/dist/styles/index.css +218 -69
- package/package.json +1 -1
- package/dist/_dts/core/src/participant-identity.d.ts +0 -135
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ThemeHeader } from '../schema';
|
|
2
|
+
import { type NavLinkContrastTreatment, type NavLinkStyle } from '../navigation/types';
|
|
3
|
+
import { type SurfaceForegroundInput } from '../surfaces';
|
|
4
|
+
import { type ForegroundHoverInput } from '../surfaces/foregroundInteraction';
|
|
5
|
+
export declare function effectiveHeaderNavLinkStyle(header: Partial<ThemeHeader> | undefined, contrastTreatment?: NavLinkContrastTreatment | null, navTextSize?: NavLinkStyle['textSize'] | null): NavLinkStyle | null;
|
|
6
|
+
export declare function headerForegroundCandidates(header: Partial<ThemeHeader> | undefined): {
|
|
7
|
+
text?: undefined;
|
|
8
|
+
link?: undefined;
|
|
9
|
+
linkHover?: undefined;
|
|
10
|
+
} | {
|
|
11
|
+
text: string | null | undefined;
|
|
12
|
+
link: string | null | undefined;
|
|
13
|
+
linkHover: import("../../../blocks/src/index").ThemeColorToken | null;
|
|
14
|
+
};
|
|
15
|
+
export declare function headerLeafTextColor(header: Partial<ThemeHeader> | undefined): NonNullable<ThemeHeader['textColor']>;
|
|
16
|
+
/** Transparent chrome must reset the whole contract on its own root. */
|
|
17
|
+
export declare function transparentHeaderForegroundInput(header: Partial<ThemeHeader> | undefined, palette: ForegroundHoverInput['palette']): SurfaceForegroundInput;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { LogoStyle, Theme } from '../schema';
|
|
2
|
+
import type { TokenResolver } from '../tokens/resolver';
|
|
3
|
+
import type { NavLinkStyle } from '../navigation/types';
|
|
4
|
+
type HeaderLogoStyleInput = Readonly<{
|
|
5
|
+
logo: LogoStyle | undefined;
|
|
6
|
+
themeId: string;
|
|
7
|
+
tokens: TokenResolver;
|
|
8
|
+
theme: Theme;
|
|
9
|
+
textColor?: string | null;
|
|
10
|
+
fallbackTextColor?: string | null;
|
|
11
|
+
contrastTreatment?: NavLinkStyle['contrastTreatment'];
|
|
12
|
+
useSurfaceTextColor: boolean;
|
|
13
|
+
}>;
|
|
14
|
+
export declare function generateHeaderLogoStyles(input: HeaderLogoStyleInput): string;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Theme, ThemeHeader } from '../schema';
|
|
2
|
+
import type { TokenResolver } from '../tokens/resolver';
|
|
3
|
+
import type { NavLinkContrastTreatment, NavLinkStyle } from '../navigation/types';
|
|
4
|
+
export declare function generateHeaderNavLinkStyles(header: ThemeHeader, themeId: string, tokens: TokenResolver, theme: Theme, contrastTreatment: NavLinkContrastTreatment | null, navTextSize: NavLinkStyle['textSize'] | null): string;
|
|
@@ -1 +1,4 @@
|
|
|
1
1
|
export { generateHeaderCss } from './generateHeaderCss';
|
|
2
|
+
export { headerRootPaint, type HeaderRootPaint } from './rootPaint';
|
|
3
|
+
export { effectiveHeaderNavLinkStyle, headerForegroundCandidates, headerLeafTextColor, transparentHeaderForegroundInput, } from './effectiveNavLinkStyle';
|
|
4
|
+
export { readOpeningForegroundProjection } from './openingForegroundProjection';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { NavLinkContrastTreatment, NavLinkStyle } from '../navigation/types';
|
|
2
2
|
import type { ThemeHeader } from '../schema';
|
|
3
|
-
export declare function buildLegacyHeaderNavLinkStyle(header: ThemeHeader
|
|
3
|
+
export declare function buildLegacyHeaderNavLinkStyle(header: Partial<ThemeHeader>, contrastTreatment: NavLinkContrastTreatment | null, navTextSize: NavLinkStyle['textSize'] | null): NavLinkStyle | null;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ThemeHeader } from '../schema';
|
|
2
|
+
import type { ResolvedSurfaceForeground } from '../surfaces';
|
|
3
|
+
type OpeningForeground = ResolvedSurfaceForeground;
|
|
4
|
+
/** Page-scoped render data. It is deliberately absent from the persisted theme schema. */
|
|
5
|
+
export declare function withOpeningForegroundProjection(header: ThemeHeader, foreground: OpeningForeground): ThemeHeader;
|
|
6
|
+
export declare function readOpeningForegroundProjection(header: Partial<ThemeHeader> | undefined): OpeningForeground | null;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ThemeHeader } from '../schema';
|
|
2
|
+
export type HeaderRootPaint = 'own-surface' | 'contained-nav' | 'overlay';
|
|
3
|
+
/** The nav container takes precedence when a floating header also has one. */
|
|
4
|
+
export declare function headerRootPaint(header: Partial<ThemeHeader> | null | undefined): HeaderRootPaint;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Checkbox and radio CSS shared by the full theme generator and the SDK
|
|
3
|
+
* theme bridge, so both render the same customer-facing controls.
|
|
4
|
+
*
|
|
5
|
+
* Emits:
|
|
6
|
+
* - .form-checkbox / .form-radio: the controls themselves. The tick and dot
|
|
7
|
+
* are drawn with ::before so their colour comes from theme tokens rather
|
|
8
|
+
* than a baked-in SVG.
|
|
9
|
+
* - .form-check: a label row holding a control and its text. The control
|
|
10
|
+
* lines up with the first line of text, so long labels wrap cleanly.
|
|
11
|
+
* - .form-check--tile: a bordered, fully clickable panel for agreements
|
|
12
|
+
* (booking consent, consent fields) that tints when ticked.
|
|
13
|
+
*/
|
|
14
|
+
export type CheckableCorners = 'square' | 'soft' | 'rounded' | 'pill';
|
|
15
|
+
export type CheckableCssInput = Readonly<{
|
|
16
|
+
/** Scoped root selector, e.g. `:where([data-theme-scope="x"])`. */
|
|
17
|
+
root: string;
|
|
18
|
+
/** Resolved CSS border width, e.g. `1px`. */
|
|
19
|
+
borderWidth: string;
|
|
20
|
+
/** Resolved CSS colour for the unchecked border. */
|
|
21
|
+
borderColor: string;
|
|
22
|
+
/** Resolved CSS colour for the unchecked fill. */
|
|
23
|
+
background: string;
|
|
24
|
+
/** Input corner style; checkboxes and tiles scale their radius from it. */
|
|
25
|
+
corners: CheckableCorners;
|
|
26
|
+
/**
|
|
27
|
+
* Theme colour token for the checked fill, tile tint and focus outline.
|
|
28
|
+
* Any opacity suffix is dropped (`primary/70` fills with solid primary):
|
|
29
|
+
* the tick's on-token only contrasts with the solid colour.
|
|
30
|
+
*/
|
|
31
|
+
accentToken: string;
|
|
32
|
+
/** Resolved CSS colour for an invalid agreement tile. */
|
|
33
|
+
errorColor: string;
|
|
34
|
+
}>;
|
|
35
|
+
/**
|
|
36
|
+
* Colour for the tick/dot drawn on top of the accent fill. Uses the palette's
|
|
37
|
+
* matching "on" token where there is one, falling back to white.
|
|
38
|
+
*/
|
|
39
|
+
/** The accent at full strength: `primary/70` becomes `primary`. */
|
|
40
|
+
export declare function solidAccentToken(accentToken: string): string;
|
|
41
|
+
export declare function checkableMarkColor(accentToken: string): string;
|
|
42
|
+
export declare function generateCheckableCss(input: CheckableCssInput): string;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input group: a field and an action (usually a themed button) sharing one
|
|
3
|
+
* input-styled shell, e.g. the newsletter email + Sign up row.
|
|
4
|
+
*
|
|
5
|
+
* The shell `.form-input-group` takes the theme's `.form-input` rules (the
|
|
6
|
+
* generators add it to that selector list, plus focus and error), so it
|
|
7
|
+
* follows the site's input background, border, corners and shadow. This file
|
|
8
|
+
* only adds the layout overrides and the borderless inner field.
|
|
9
|
+
*/
|
|
10
|
+
export declare const INPUT_GROUP_SELECTOR = ".form-input-group";
|
|
11
|
+
/** Shell focus ring follows the field only, not the button beside it. */
|
|
12
|
+
export declare const INPUT_GROUP_FOCUS_SELECTOR = ".form-input-group:has(> .form-input-group-field:focus-visible)";
|
|
13
|
+
export declare const INPUT_GROUP_ERROR_SELECTOR = ".form-input-group:has(> .form-input-group-field[aria-invalid=\"true\"])";
|
|
14
|
+
/**
|
|
15
|
+
* @param root - scoped root selector
|
|
16
|
+
* @param padding - the theme's input padding shorthand (`block inline`), so the
|
|
17
|
+
* inner field's text sits where a plain input's text would.
|
|
18
|
+
*/
|
|
19
|
+
export declare function generateInputGroupCss(root: string, padding: string): string;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
type NavEffectPolicy = 'paired-hover' | 'text-colour' | 'underline' | 'other';
|
|
2
|
+
/** Every registered effect has one meaning for surface-owned nav hover. */
|
|
3
|
+
export declare const NAV_EFFECT_POLICIES: {
|
|
4
|
+
readonly 'darken-background': "other";
|
|
5
|
+
readonly 'lighten-background': "other";
|
|
6
|
+
readonly 'fade-background': "other";
|
|
7
|
+
readonly 'opacity-reduce': "other";
|
|
8
|
+
readonly 'animated-gradient': "other";
|
|
9
|
+
readonly 'background-on-hover': "paired-hover";
|
|
10
|
+
readonly 'background-on-hover-alpha': "paired-hover";
|
|
11
|
+
readonly 'border-glow': "other";
|
|
12
|
+
readonly 'drop-shadow': "other";
|
|
13
|
+
readonly 'inner-shadow': "other";
|
|
14
|
+
readonly 'neumorphic-shadow': "other";
|
|
15
|
+
readonly 'outer-glow': "other";
|
|
16
|
+
readonly 'retro-3d-shadow': "other";
|
|
17
|
+
readonly 'scale-up': "other";
|
|
18
|
+
readonly 'scale-down': "other";
|
|
19
|
+
readonly lift: "other";
|
|
20
|
+
readonly 'press-down': "other";
|
|
21
|
+
readonly pop: "other";
|
|
22
|
+
readonly 'aurora-glow': "other";
|
|
23
|
+
readonly 'cosmic-stardust': "other";
|
|
24
|
+
readonly 'gradient-border-fill': "other";
|
|
25
|
+
readonly 'animated-gradient-border-fill': "other";
|
|
26
|
+
readonly 'border-bottom-grow': "other";
|
|
27
|
+
readonly 'gradient-text': "other";
|
|
28
|
+
readonly 'text-color-change': "text-colour";
|
|
29
|
+
readonly 'border-color-change': "other";
|
|
30
|
+
readonly 'sketchy-border': "other";
|
|
31
|
+
readonly 'pulse-animation': "other";
|
|
32
|
+
readonly 'nav-underline': "underline";
|
|
33
|
+
readonly 'nav-frosted-base': "other";
|
|
34
|
+
readonly 'nav-frosted-hover': "other";
|
|
35
|
+
readonly 'nav-frosted-active': "other";
|
|
36
|
+
};
|
|
37
|
+
export declare function navEffectPolicy(effectId: string): NavEffectPolicy | null;
|
|
38
|
+
export {};
|
|
@@ -18,6 +18,10 @@ export interface GenerateNavLinkCSSOptions {
|
|
|
18
18
|
style: NavLinkStyle;
|
|
19
19
|
/** CSS class name for the nav link (e.g., 'header-nav-link', 'footer-nav-link') */
|
|
20
20
|
className: string;
|
|
21
|
+
/** Text links whose colours come from the owning background surface. */
|
|
22
|
+
surfaceDependent?: boolean;
|
|
23
|
+
/** Use the owning surface at rest while preserving the style's painted hover. */
|
|
24
|
+
surfaceRestingColor?: boolean;
|
|
21
25
|
}
|
|
22
26
|
/**
|
|
23
27
|
* Generate complete CSS for nav links from a NavLinkStyle configuration
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Schema and types for composable nav link styling used by header and footer.
|
|
5
5
|
*/
|
|
6
6
|
import { z } from 'zod';
|
|
7
|
+
import { type ThemeColorToken } from '../tokens/themeColorTokens';
|
|
7
8
|
/**
|
|
8
9
|
* Padding preset options for nav links
|
|
9
10
|
*/
|
|
@@ -146,6 +147,9 @@ export type NavLinkTextSize = z.infer<typeof navLinkTextSizeSchema>;
|
|
|
146
147
|
export type NavLinkLetterSpacing = z.infer<typeof navLinkLetterSpacingSchema>;
|
|
147
148
|
export type NavLinkContrastTreatment = z.infer<typeof navLinkContrastTreatmentSchema>;
|
|
148
149
|
export type NavLinkStyle = z.infer<typeof navLinkStyleSchema>;
|
|
150
|
+
export declare function navLinkHoverColorCandidate(style: Pick<NavLinkStyle, 'hoverColorToken' | 'effects'> | null | undefined): ThemeColorToken | null;
|
|
151
|
+
export declare function navLinkOwnsHoverForeground(style: Pick<NavLinkStyle, 'effects'> | null | undefined): boolean;
|
|
152
|
+
export declare function navLinkOwnsUnderline(style: Pick<NavLinkStyle, 'effects'> | null | undefined): boolean;
|
|
149
153
|
/**
|
|
150
154
|
* Padding values for nav link padding presets
|
|
151
155
|
*/
|
|
@@ -3,7 +3,7 @@ import type { SurfaceForegroundRole } from '../surfaces/foregroundRoles';
|
|
|
3
3
|
import type { SiteStyleSurfaceIntent } from './types';
|
|
4
4
|
export type AccessibleColorSurfaceIntent = Exclude<SiteStyleSurfaceIntent, 'hero-image'>;
|
|
5
5
|
export type ContrastPolicy = 'body-aa' | 'large-text-aa' | 'decorative';
|
|
6
|
-
export type ForegroundRole = SurfaceForegroundRole
|
|
6
|
+
export type ForegroundRole = Exclude<SurfaceForegroundRole, 'linkHover'>;
|
|
7
7
|
export type AccessibleSurfaceToken = string & {
|
|
8
8
|
readonly __brand: 'AccessibleSurfaceToken';
|
|
9
9
|
};
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import { type SurfaceForegroundInput, type SurfaceForegroundRole, type SurfaceForegrounds } from './foregroundRoles';
|
|
2
|
+
import type { ThemeColorToken } from '../tokens/themeColorTokens';
|
|
3
|
+
import type { ResolvedSurfaceForeground } from './resolveSurfaceForeground';
|
|
2
4
|
export declare const SURFACE_FOREGROUND_CSS_VARS: {
|
|
3
5
|
readonly text: "--rb-surface-text-color";
|
|
4
6
|
readonly heading: "--rb-surface-heading-color";
|
|
5
7
|
readonly link: "--rb-surface-link-color";
|
|
8
|
+
readonly linkHover: "--rb-surface-link-hover-color";
|
|
6
9
|
readonly supporting: "--rb-surface-supporting-color";
|
|
7
10
|
};
|
|
8
11
|
export type SurfaceForegroundCssVariable = (typeof SURFACE_FOREGROUND_CSS_VARS)[SurfaceForegroundRole];
|
|
9
12
|
export type SurfaceForegroundStyle = Readonly<{
|
|
10
13
|
color: string;
|
|
14
|
+
'--rb-surface-link-hover-decoration': string;
|
|
11
15
|
} & Record<SurfaceForegroundCssVariable, string>>;
|
|
12
16
|
export declare const DEFAULT_SURFACE_TEXT_COLOR = "rgb(var(--tb-text, 17 24 39))";
|
|
13
17
|
export declare const DEFAULT_SURFACE_LINK_COLOR = "rgb(var(--tb-primary, var(--tb-text, 17 24 39)))";
|
|
@@ -17,3 +21,6 @@ export declare function surfaceForegroundValue(role: SurfaceForegroundRole, outs
|
|
|
17
21
|
export declare function surfaceForegroundValueWithOpacity(role: SurfaceForegroundRole, opacityPercent: number): string;
|
|
18
22
|
export declare function surfaceForegroundStyle(input: SurfaceForegroundInput): SurfaceForegroundStyle;
|
|
19
23
|
export declare function surfaceForegroundDeclarations(input: SurfaceForegroundInput): readonly string[];
|
|
24
|
+
export declare function surfaceForegroundInputFromResolved(foreground: Extract<ResolvedSurfaceForeground, {
|
|
25
|
+
kind: 'known';
|
|
26
|
+
}>, color: (token: ThemeColorToken) => string): SurfaceForegroundInput;
|
|
@@ -46,32 +46,39 @@ export declare const FOREGROUND_HOVER_OPACITY_PERCENT = 85;
|
|
|
46
46
|
* should leave hover alone rather than guess.
|
|
47
47
|
*/
|
|
48
48
|
export declare function deriveForegroundHoverToken(restingToken: ThemeColorToken): ThemeColorToken | null;
|
|
49
|
+
/**
|
|
50
|
+
* The extreme backdrop a glass tone can present, whatever page content happens
|
|
51
|
+
* to be underneath it.
|
|
52
|
+
*
|
|
53
|
+
* A 60% tint clamps the composite into a known band, which is what makes a
|
|
54
|
+
* conservative check possible at compile time even though the content passing
|
|
55
|
+
* under a sticky header is not knowable. For a dark glass the composite is
|
|
56
|
+
* lightest over white; for a light glass it is darkest over black. Those are
|
|
57
|
+
* the two ends that a foreground has to survive.
|
|
58
|
+
*/
|
|
59
|
+
export declare function worstCaseGlassBackdrop(tone: 'light' | 'dark'): string;
|
|
49
60
|
/** Flatten `foreground` at `alpha` over `background` into an opaque hex. */
|
|
50
61
|
export declare function compositeHex(foreground: string, background: string, alpha: number): string;
|
|
51
|
-
export type ForegroundHoverPlan =
|
|
52
|
-
|
|
53
|
-
Readonly<{
|
|
54
|
-
kind: 'softened';
|
|
62
|
+
export type ForegroundHoverPlan = Readonly<{
|
|
63
|
+
kind: 'candidate' | 'softened';
|
|
55
64
|
token: ThemeColorToken;
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
* Keep the resting colour. Softening it would drop below the ordinary-text
|
|
59
|
-
* ratio somewhere the glass can reach, so the hover affordance has to come
|
|
60
|
-
* from something other than colour.
|
|
61
|
-
*/
|
|
62
|
-
| Readonly<{
|
|
65
|
+
decoration: 'initial';
|
|
66
|
+
}> | Readonly<{
|
|
63
67
|
kind: 'resting';
|
|
68
|
+
token: ThemeColorToken;
|
|
69
|
+
decoration: 'underline';
|
|
70
|
+
}>;
|
|
71
|
+
export type ForegroundHoverInput = Readonly<{
|
|
72
|
+
restingToken: ThemeColorToken;
|
|
73
|
+
candidate?: ThemeColorToken | null;
|
|
74
|
+
palette: Readonly<Record<string, string>>;
|
|
75
|
+
/** Null means the complete backdrop cannot be measured. */
|
|
76
|
+
backdrops: readonly string[] | null;
|
|
64
77
|
}>;
|
|
65
78
|
/**
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
* over, so this declines to soften rather than guess.
|
|
71
|
-
*
|
|
72
|
-
* The light-glass end cannot be satisfied by any softening: against `#999999`
|
|
73
|
-
* a dark resting foreground is already close to the 4.5:1 line, so every step
|
|
74
|
-
* away from it fails. That is why this returns a plan rather than a colour —
|
|
75
|
-
* the caller has to have a non-colour affordance to fall back on.
|
|
79
|
+
* Prefer an authored hover that survives every measured backdrop, then a
|
|
80
|
+
* checked softening of the resting colour. A null backdrop set represents a
|
|
81
|
+
* trusted treatment: only an explicit authored hover may change the colour.
|
|
82
|
+
* When neither option works, retain the resting colour and underline it.
|
|
76
83
|
*/
|
|
77
|
-
export declare function planForegroundHover(
|
|
84
|
+
export declare function planForegroundHover(input: ForegroundHoverInput): ForegroundHoverPlan;
|
|
@@ -1,9 +1,17 @@
|
|
|
1
|
-
export declare const SURFACE_FOREGROUND_ROLES: readonly ["text", "heading", "link", "supporting"];
|
|
1
|
+
export declare const SURFACE_FOREGROUND_ROLES: readonly ["text", "heading", "link", "linkHover", "supporting"];
|
|
2
2
|
export type SurfaceForegroundRole = (typeof SURFACE_FOREGROUND_ROLES)[number];
|
|
3
3
|
export type SurfaceForegrounds = Readonly<Record<SurfaceForegroundRole, string>>;
|
|
4
|
-
|
|
4
|
+
type SurfaceForegroundBaseInput = Readonly<{
|
|
5
5
|
text: string;
|
|
6
6
|
heading?: string;
|
|
7
7
|
link?: string;
|
|
8
8
|
supporting?: string;
|
|
9
9
|
}>;
|
|
10
|
+
export type SurfaceForegroundInput = SurfaceForegroundBaseInput & (Readonly<{
|
|
11
|
+
linkHover?: never;
|
|
12
|
+
hoverDecoration?: never;
|
|
13
|
+
}> | Readonly<{
|
|
14
|
+
linkHover: string;
|
|
15
|
+
hoverDecoration: 'underline' | 'initial';
|
|
16
|
+
}>);
|
|
17
|
+
export {};
|
|
@@ -4,10 +4,18 @@ export { ORDINARY_TEXT_MIN_CONTRAST_RATIO } from '../palette/utils/contrast';
|
|
|
4
4
|
export type ResolvedSurfaceForegroundTokens = Readonly<Record<SurfaceForegroundRole, ThemeColorToken>>;
|
|
5
5
|
export type ResolvedSurfaceForeground = Readonly<{
|
|
6
6
|
kind: 'known';
|
|
7
|
+
provenance: SurfaceForegroundProvenance;
|
|
7
8
|
roles: ResolvedSurfaceForegroundTokens;
|
|
9
|
+
hoverDecoration: 'underline' | 'initial';
|
|
8
10
|
}> | Readonly<{
|
|
9
11
|
kind: 'unknown';
|
|
10
12
|
}>;
|
|
13
|
+
export type SurfaceForegroundProvenance = Readonly<{
|
|
14
|
+
kind: 'measured';
|
|
15
|
+
backdropHex: string;
|
|
16
|
+
}> | Readonly<{
|
|
17
|
+
kind: 'trusted-treatment';
|
|
18
|
+
}>;
|
|
11
19
|
export type SurfaceForegroundBackground = Readonly<{
|
|
12
20
|
type: 'color' | 'gradient' | 'image' | 'video';
|
|
13
21
|
color?: string | null;
|
|
@@ -20,6 +28,7 @@ export type SurfaceForegroundCandidates = Readonly<{
|
|
|
20
28
|
text?: string | null;
|
|
21
29
|
heading?: string | null;
|
|
22
30
|
link?: string | null;
|
|
31
|
+
linkHover?: string | null;
|
|
23
32
|
supporting?: string | null;
|
|
24
33
|
}>;
|
|
25
34
|
export type SurfaceForegroundResolutionOptions = Readonly<{
|
|
@@ -2,8 +2,9 @@ import * as React from "react";
|
|
|
2
2
|
import { type VariantProps } from "class-variance-authority";
|
|
3
3
|
declare const badgeVariants: (props?: ({
|
|
4
4
|
variant?: "success" | "default" | "warning" | "secondary" | "destructive" | "outline" | null | undefined;
|
|
5
|
+
dot?: boolean | "bare" | null | undefined;
|
|
5
6
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
6
7
|
export interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {
|
|
7
8
|
}
|
|
8
|
-
declare function Badge({ className, variant, ...props }: BadgeProps): React.JSX.Element;
|
|
9
|
+
declare function Badge({ className, variant, dot, ...props }: BadgeProps): React.JSX.Element;
|
|
9
10
|
export { Badge, badgeVariants };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type VariantProps } from 'class-variance-authority';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
declare const buttonVariants: (props?: ({
|
|
4
|
-
variant?: "link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | "onDark" | "
|
|
4
|
+
variant?: "link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | "onDark" | "heroGlass" | null | undefined;
|
|
5
5
|
size?: "default" | "sm" | "lg" | "icon" | null | undefined;
|
|
6
6
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
7
|
export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a key press means to a `Combobox`, from the trigger or from its search
|
|
3
|
+
* input. Pure tables, so the component only has to carry an intent out.
|
|
4
|
+
*/
|
|
5
|
+
export type ComboboxKeyIntent = Readonly<{
|
|
6
|
+
tag: 'open';
|
|
7
|
+
fallback: 'first' | 'last';
|
|
8
|
+
}> | Readonly<{
|
|
9
|
+
tag: 'move';
|
|
10
|
+
by: 1 | -1;
|
|
11
|
+
}> | Readonly<{
|
|
12
|
+
tag: 'choose';
|
|
13
|
+
}> | Readonly<{
|
|
14
|
+
tag: 'close';
|
|
15
|
+
}> | Readonly<{
|
|
16
|
+
tag: 'none';
|
|
17
|
+
}>;
|
|
18
|
+
export type ComboboxKeyResult = Readonly<{
|
|
19
|
+
intent: ComboboxKeyIntent;
|
|
20
|
+
preventDefault: boolean;
|
|
21
|
+
}>;
|
|
22
|
+
export declare function triggerKeyIntent(key: string, open: boolean, search: boolean): ComboboxKeyResult;
|
|
23
|
+
export declare function searchKeyIntent(key: string): ComboboxKeyResult;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The rows a `Combobox` list shows for a search: an optional "none" row, the
|
|
3
|
+
* matching items in the order given, and an optional "Create …" row. Pure, so
|
|
4
|
+
* the list and its keyboard handling agree on one sequence of rows.
|
|
5
|
+
*/
|
|
6
|
+
export type ComboboxRowItem = Readonly<{
|
|
7
|
+
id: string;
|
|
8
|
+
label: string;
|
|
9
|
+
searchText?: string;
|
|
10
|
+
}>;
|
|
11
|
+
export type ComboboxRow<TEntry extends ComboboxRowItem> = Readonly<{
|
|
12
|
+
kind: 'none';
|
|
13
|
+
id: string;
|
|
14
|
+
}> | Readonly<{
|
|
15
|
+
kind: 'item';
|
|
16
|
+
id: string;
|
|
17
|
+
entry: TEntry;
|
|
18
|
+
}> | Readonly<{
|
|
19
|
+
kind: 'create';
|
|
20
|
+
id: string;
|
|
21
|
+
name: string;
|
|
22
|
+
}>;
|
|
23
|
+
export declare const COMBOBOX_NONE_ROW_ID = "__none__";
|
|
24
|
+
export declare const COMBOBOX_CREATE_ROW_ID = "__create__";
|
|
25
|
+
/** Trims and collapses inner whitespace, so " Morning yoga " is "Morning yoga". */
|
|
26
|
+
export declare function normalizeComboboxQuery(query: string): string;
|
|
27
|
+
export declare function buildComboboxRows<TEntry extends ComboboxRowItem>(input: Readonly<{
|
|
28
|
+
items: readonly TEntry[];
|
|
29
|
+
query: string;
|
|
30
|
+
/** Search off means every item shows and nothing can be created. */
|
|
31
|
+
search: boolean;
|
|
32
|
+
hasNoneOption: boolean;
|
|
33
|
+
canCreate: boolean;
|
|
34
|
+
}>): ComboboxRow<TEntry>[];
|
|
@@ -5,13 +5,31 @@ export type ComboboxItem<T = unknown> = Readonly<{
|
|
|
5
5
|
searchText?: string;
|
|
6
6
|
item: T;
|
|
7
7
|
}>;
|
|
8
|
+
export type ComboboxCreateResult<T = unknown> = Readonly<{
|
|
9
|
+
ok: true;
|
|
10
|
+
item: ComboboxItem<T>;
|
|
11
|
+
}> | Readonly<{
|
|
12
|
+
ok: false;
|
|
13
|
+
message: string;
|
|
14
|
+
}>;
|
|
15
|
+
/**
|
|
16
|
+
* Offers "Create …" for a search that no item is named exactly. The created
|
|
17
|
+
* item is selected as soon as `onCreate` resolves with it; a failure keeps
|
|
18
|
+
* the list open and shows the message under the search.
|
|
19
|
+
*/
|
|
20
|
+
export type ComboboxCreate<T = unknown> = Readonly<{
|
|
21
|
+
label: (name: string) => string;
|
|
22
|
+
onCreate: (name: string) => Promise<ComboboxCreateResult<T>>;
|
|
23
|
+
}>;
|
|
8
24
|
export type ComboboxProps<T = unknown> = Readonly<{
|
|
9
25
|
items: readonly ComboboxItem<T>[];
|
|
10
26
|
value?: string;
|
|
11
27
|
onSelect: (item: ComboboxItem<T> | undefined) => void;
|
|
12
28
|
id?: string;
|
|
13
29
|
'aria-describedby'?: string;
|
|
30
|
+
'aria-invalid'?: boolean;
|
|
14
31
|
searchInputAriaLabel?: string;
|
|
32
|
+
searchPlaceholder?: string;
|
|
15
33
|
placeholder?: string;
|
|
16
34
|
emptyMessage?: string;
|
|
17
35
|
clearLabel?: string;
|
|
@@ -19,6 +37,13 @@ export type ComboboxProps<T = unknown> = Readonly<{
|
|
|
19
37
|
className?: string;
|
|
20
38
|
disabled?: boolean;
|
|
21
39
|
renderItem?: (entry: ComboboxItem<T>, selected: boolean) => ReactNode;
|
|
40
|
+
/** Shown before the label in the list and on the field, such as a colour swatch. */
|
|
41
|
+
renderLeading?: (entry: ComboboxItem<T>) => ReactNode;
|
|
22
42
|
showClear?: boolean;
|
|
43
|
+
/** A first row that clears the value, labelled like "No category". */
|
|
44
|
+
noneOption?: Readonly<{
|
|
45
|
+
label: string;
|
|
46
|
+
}>;
|
|
47
|
+
create?: ComboboxCreate<T>;
|
|
23
48
|
}>;
|
|
24
|
-
export declare function Combobox<T = unknown>(
|
|
49
|
+
export declare function Combobox<T = unknown>(props: ComboboxProps<T>): import("react").JSX.Element;
|
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
import { type ReactNode
|
|
2
|
-
import { type
|
|
3
|
-
export type DatePickerTriggerButtonProps = Omit<
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { type FieldTriggerProps } from './field-trigger';
|
|
3
|
+
export type DatePickerTriggerButtonProps = Omit<FieldTriggerProps, 'children' | 'isPlaceholder' | 'leading' | 'trailing'> & {
|
|
4
4
|
selected: boolean;
|
|
5
|
-
active?: boolean;
|
|
6
5
|
label: ReactNode;
|
|
7
6
|
placeholder: ReactNode;
|
|
8
|
-
onClick?: MouseEventHandler<HTMLButtonElement>;
|
|
9
7
|
};
|
|
10
|
-
|
|
8
|
+
/** The field that opens a calendar: a `FieldTrigger` led by a calendar icon. */
|
|
9
|
+
export declare const DatePickerTriggerButton: import("react").ForwardRefExoticComponent<Omit<FieldTriggerProps, "children" | "isPlaceholder" | "leading" | "trailing"> & {
|
|
11
10
|
selected: boolean;
|
|
12
|
-
active?: boolean;
|
|
13
11
|
label: ReactNode;
|
|
14
12
|
placeholder: ReactNode;
|
|
15
|
-
onClick?: MouseEventHandler<HTMLButtonElement>;
|
|
16
13
|
} & import("react").RefAttributes<HTMLButtonElement>>;
|
|
@@ -35,6 +35,7 @@ export type EditorItemCardMenu = Readonly<{
|
|
|
35
35
|
label: string;
|
|
36
36
|
disabled?: boolean;
|
|
37
37
|
ref?: React.Ref<HTMLButtonElement>;
|
|
38
|
+
onCloseAutoFocus?: (event: Event) => void;
|
|
38
39
|
groups: readonly EditorItemCardMenuGroup[];
|
|
39
40
|
}>;
|
|
40
41
|
export type EditorItemCardActionsProps = Readonly<{
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type ButtonHTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* A field that opens a list or calendar: the shared field surface (see
|
|
4
|
+
* fieldControl.ts), laid out as a button with a value and an icon, so a
|
|
5
|
+
* picker reads as a field beside the inputs around it rather than as a
|
|
6
|
+
* button. `SelectTrigger` and `FieldTrigger` both build on it.
|
|
7
|
+
*/
|
|
8
|
+
export declare const fieldTriggerClassName: string;
|
|
9
|
+
export type FieldTriggerProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> & Readonly<{
|
|
10
|
+
/** What the field currently shows: the chosen value, or the placeholder. */
|
|
11
|
+
children: ReactNode;
|
|
12
|
+
/** True while nothing is chosen, so the text reads as a placeholder. */
|
|
13
|
+
isPlaceholder?: boolean;
|
|
14
|
+
/** Shown before the value, such as a calendar icon or a colour swatch. */
|
|
15
|
+
leading?: ReactNode;
|
|
16
|
+
/** Pass null to drop the chevron, as the date picker does. */
|
|
17
|
+
trailing?: ReactNode;
|
|
18
|
+
/** Kept open-state styling while the popover it controls is showing. */
|
|
19
|
+
active?: boolean;
|
|
20
|
+
size?: 'sm' | 'default';
|
|
21
|
+
}>;
|
|
22
|
+
/**
|
|
23
|
+
* The button that opens a popover picker (a combobox, a multi-select, a date
|
|
24
|
+
* picker), styled as a field. Spreads the props and ref a Radix trigger passes
|
|
25
|
+
* through `asChild`.
|
|
26
|
+
*/
|
|
27
|
+
export declare const FieldTrigger: import("react").ForwardRefExoticComponent<Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children"> & Readonly<{
|
|
28
|
+
/** What the field currently shows: the chosen value, or the placeholder. */
|
|
29
|
+
children: ReactNode;
|
|
30
|
+
/** True while nothing is chosen, so the text reads as a placeholder. */
|
|
31
|
+
isPlaceholder?: boolean;
|
|
32
|
+
/** Shown before the value, such as a calendar icon or a colour swatch. */
|
|
33
|
+
leading?: ReactNode;
|
|
34
|
+
/** Pass null to drop the chevron, as the date picker does. */
|
|
35
|
+
trailing?: ReactNode;
|
|
36
|
+
/** Kept open-state styling while the popover it controls is showing. */
|
|
37
|
+
active?: boolean;
|
|
38
|
+
size?: "sm" | "default";
|
|
39
|
+
}> & import("react").RefAttributes<HTMLButtonElement>>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one field shape, as class strings, so Input, Textarea, SelectTrigger
|
|
3
|
+
* and the date picker's trigger cannot drift apart. The sizes come from the
|
|
4
|
+
* `--field-*` tokens in styles/editor-base.css (compact by default, roomy
|
|
5
|
+
* under `data-field-size="roomy"`); the colours come from the surface's
|
|
6
|
+
* palette.
|
|
7
|
+
*
|
|
8
|
+
* The focus glow and the placeholder are mixed from palette tokens here,
|
|
9
|
+
* rather than in derived tokens on `:root`, so they follow a surface that
|
|
10
|
+
* retunes its colours on an inner element.
|
|
11
|
+
*/
|
|
12
|
+
/** Keyboard focus on a field-like control: the focus border and a soft glow in its colour, no outline. */
|
|
13
|
+
export declare const FIELD_FOCUS_CLASS = "focus-visible:outline-none focus-visible:border-field-border-focus focus-visible:shadow-[0_0_0_4px_color-mix(in_srgb,var(--field-border-strong)_18%,transparent)]";
|
|
14
|
+
/** The same focus for a wrapper that draws the border around an inner input (a composite field). */
|
|
15
|
+
export declare const FIELD_FOCUS_WITHIN_CLASS = "focus-within:border-field-border-focus focus-within:shadow-[0_0_0_4px_color-mix(in_srgb,var(--field-border-strong)_18%,transparent)]";
|
|
16
|
+
/**
|
|
17
|
+
* A native checkbox or radio, for the few places the shared Checkbox and
|
|
18
|
+
* RadioGroup can't go (native `required`, a radio group split across
|
|
19
|
+
* sections, packages/ui itself).
|
|
20
|
+
*/
|
|
21
|
+
export declare const NATIVE_CHOICE_CLASS = "size-[1.125rem] shrink-0 cursor-pointer accent-[var(--primary)]";
|
|
22
|
+
/** Border, fill, radius, type, focus glow and the invalid state. No height or padding. */
|
|
23
|
+
export declare const FIELD_SURFACE_CLASS: string;
|
|
24
|
+
/** A single-line control: the surface at the field height. */
|
|
25
|
+
export declare const FIELD_CONTROL_CLASS: string;
|
|
26
|
+
/** A multi-line control: the surface with room to grow. */
|
|
27
|
+
export declare const FIELD_TEXTAREA_CLASS: string;
|
|
@@ -13,7 +13,10 @@ export { TabbedScrollableDialogContent, type TabbedScrollableDialogContentProps,
|
|
|
13
13
|
export { menuHoverInteractionClassName, menuItemInteractionClassName, menuTriggerInteractionClassName, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuGroup, DropdownMenuPortal, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent, } from './dropdown-menu';
|
|
14
14
|
export { Form, FormField, FormItem, FormLabel, FormControl, FormDescription, FormMessage, useFormField, } from './form';
|
|
15
15
|
export { Input } from './input';
|
|
16
|
-
export {
|
|
16
|
+
export { NativeSelect, type NativeSelectProps } from './native-select';
|
|
17
|
+
export { Combobox, type ComboboxCreate, type ComboboxCreateResult, type ComboboxItem, type ComboboxProps, } from './combobox';
|
|
18
|
+
export { FieldTrigger, fieldTriggerClassName, type FieldTriggerProps } from './field-trigger';
|
|
19
|
+
export { normalizeComboboxQuery } from './combobox-rows';
|
|
17
20
|
export { NumberInput, type NumberInputProps } from './number-input';
|
|
18
21
|
export { SearchInput, type SearchInputProps } from './search-input';
|
|
19
22
|
export { MultiSelect, type MultiSelectOption, type MultiSelectProps } from './multi-select';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
type NativeSelectProps = React.ComponentProps<"select"> & {
|
|
3
|
+
/** Classes for the positioning wrapper (width, margins, grid placement). */
|
|
4
|
+
containerClassName?: string;
|
|
5
|
+
};
|
|
6
|
+
/** A native `<select>` in the shared field shape, with a chevron in place of the browser arrow. */
|
|
7
|
+
declare const NativeSelect: React.ForwardRefExoticComponent<Omit<NativeSelectProps, "ref"> & React.RefAttributes<HTMLSelectElement>>;
|
|
8
|
+
export { NativeSelect, type NativeSelectProps };
|
|
@@ -15,6 +15,7 @@ export type NavigationTabsProps = {
|
|
|
15
15
|
variant?: NavigationTabsVariant;
|
|
16
16
|
urlParam?: string;
|
|
17
17
|
className?: string;
|
|
18
|
+
tabClassName?: string;
|
|
18
19
|
trailingActions?: React.ReactNode;
|
|
19
20
|
};
|
|
20
21
|
/**
|
|
@@ -27,7 +28,7 @@ export type NavigationTabsProps = {
|
|
|
27
28
|
* - URL synchronization via query param or hash
|
|
28
29
|
* - Keyboard navigation and ARIA support
|
|
29
30
|
*/
|
|
30
|
-
export declare function NavigationTabs({ tabs, activeTab: controlledActiveTab, onTabChange, variant: _variant, urlParam, className, trailingActions, }: NavigationTabsProps): import("react").JSX.Element | null;
|
|
31
|
+
export declare function NavigationTabs({ tabs, activeTab: controlledActiveTab, onTabChange, variant: _variant, urlParam, className, tabClassName, trailingActions, }: NavigationTabsProps): import("react").JSX.Element | null;
|
|
31
32
|
export type NavigationTabPanelsProps = {
|
|
32
33
|
tabs: NavigationTab[];
|
|
33
34
|
activeTab: string;
|