@riverbankcms/sdk 0.129.1 → 0.130.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 +32 -10
- package/dist/{PreviewEditorSidebar-DceRseRV.mjs → PreviewEditorSidebar-DiEpbOdw.mjs} +313 -239
- package/dist/{PreviewEditorUI-BNunq3kk.mjs → PreviewEditorUI-C6MvxnIa.mjs} +3 -3
- package/dist/{PreviewQueryProvider-B1kbhaJD.mjs → PreviewQueryProvider-C2rnoPz6.mjs} +1 -1
- package/dist/{SdkPreviewModeRuntime-Bt87-62u.mjs → SdkPreviewModeRuntime-DRXA_m5L.mjs} +208 -211
- package/dist/{SiteChromeCustomizeContext-BLl-OlL4.mjs → SiteChromeCustomizeContext-BTHdv5_-.mjs} +6204 -6239
- package/dist/_dts/ai/src/contracts/proposalPrimitives.d.ts +52 -0
- package/dist/_dts/ai/src/contracts/proposals.d.ts +4950 -29100
- package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +32572 -0
- package/dist/_dts/api/src/appointmentSetup.d.ts +21 -9
- package/dist/_dts/api/src/bookingConfig.d.ts +4 -46
- package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +13 -11
- package/dist/_dts/api/src/bookingRecords.d.ts +1 -0
- package/dist/_dts/api/src/contentRuntime.d.ts +3 -5
- package/dist/_dts/api/src/endpoints.d.ts +14 -21
- package/dist/_dts/api/src/eventManagementContracts.d.ts +76 -0
- package/dist/_dts/api/src/index.d.ts +3 -2
- package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +22 -47
- package/dist/_dts/api/src/sdk-event-schedule.d.ts +5 -0
- package/dist/_dts/api/src/sdk-event-upsert.d.ts +112 -20
- package/dist/_dts/api/src/sdkContracts.d.ts +38 -66
- package/dist/_dts/api/src/sdkManagedEventContracts.d.ts +35 -0
- package/dist/_dts/api/src/sdkThemeWire.d.ts +2423 -501
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +5 -0
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +23 -37
- package/dist/_dts/blocks/src/contracts/index.d.ts +2 -0
- package/dist/_dts/blocks/src/contracts/non-block-islands.d.ts +6 -8
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +36 -14
- package/dist/_dts/blocks/src/index.d.ts +5 -3
- package/dist/_dts/blocks/src/lib/media.d.ts +9 -539
- package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +3 -2
- package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +135 -90
- package/dist/_dts/blocks/src/system/blocks/shop.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/shop.shared.d.ts +37 -4
- package/dist/_dts/blocks/src/system/blocks/site-footer-nav-groups-layout.d.ts +1 -1
- package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +3 -0
- package/dist/_dts/blocks/src/system/componentFactory.d.ts +5 -5
- package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +8 -6
- package/dist/_dts/blocks/src/system/customize/serializeBackgroundOverride.d.ts +3 -0
- package/dist/_dts/blocks/src/system/fields/background.d.ts +2 -20
- package/dist/_dts/blocks/src/system/fields/backgroundContent.d.ts +17 -0
- package/dist/_dts/blocks/src/system/fields/backgroundContentAudit.d.ts +20 -0
- package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +5 -33
- package/dist/_dts/blocks/src/system/fragments/builder.d.ts +1 -0
- package/dist/_dts/blocks/src/system/fragments/types.d.ts +1 -0
- package/dist/_dts/blocks/src/system/helpers/index.d.ts +1 -1
- package/dist/_dts/blocks/src/system/helpers/resolveBackground.d.ts +10 -45
- package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +7 -4
- package/dist/_dts/blocks/src/system/manifest/fieldValidation/writeCanonicalization.d.ts +4 -0
- package/dist/_dts/blocks/src/system/manifest/schema.d.ts +123 -55
- package/dist/_dts/blocks/src/system/registry.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/api/types/shop.d.ts +2 -37
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +61 -24
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +30 -12
- package/dist/_dts/blocks/src/system/runtime/header/enhanceHeaderSection.d.ts +3 -5
- package/dist/_dts/blocks/src/system/runtime/header/headerScrollRuntime.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/header/runtimeContract.d.ts +22 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/commerce/shared/display.d.ts +9 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/commerce/shared/view.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/header-section.client.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/header-section.frame.d.ts +21 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/header-section.server.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/shop.interactive.d.ts +41 -12
- package/dist/_dts/blocks/src/system/runtime/nodes/shop.pass-contract.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/shop.state.d.ts +3 -3
- package/dist/_dts/blocks/src/system/transforms/registry/_utils/surfaceForegroundStyles.d.ts +3 -1
- package/dist/_dts/blocks/src/system/transforms/registry/background.d.ts +1 -1
- package/dist/_dts/blocks/src/system/transforms/registry/boxStyles.d.ts +3 -1
- package/dist/_dts/blocks/src/system/transforms/registry/core.d.ts +4 -1
- package/dist/_dts/blocks/src/system/transforms/registry/headerRuntime.d.ts +3 -0
- package/dist/_dts/blocks/src/system/transforms/registry/index.d.ts +2 -1
- package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +0 -3
- package/dist/_dts/blocks/src/system/transforms/typed.d.ts +41 -43
- package/dist/_dts/content-editor/src/FooterComposerOverview.d.ts +4 -2
- package/dist/_dts/content-editor/src/FooterComposerPanel.d.ts +2 -17
- package/dist/_dts/content-editor/src/FooterNavigationLayoutControl.d.ts +5 -0
- package/dist/_dts/content-editor/src/footerComposer.d.ts +2 -1
- package/dist/_dts/content-editor/src/footerComposerPanelTypes.d.ts +21 -0
- package/dist/_dts/content-editor/src/footerPreviewRuntime.d.ts +2 -1
- package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +11 -1
- package/dist/_dts/content-editor/src/useFooterNavigationLayout.d.ts +26 -0
- package/dist/_dts/content-model/src/templates/defaults.d.ts +7 -0
- package/dist/_dts/core/src/booking-date-time.d.ts +2 -2
- package/dist/_dts/core/src/booking-time-zone.d.ts +6 -0
- package/dist/_dts/core/src/footer-composition-types.d.ts +4 -4
- package/dist/_dts/core/src/footer-navigation-layout.d.ts +4 -0
- package/dist/_dts/core/src/index.d.ts +1 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +38 -18
- package/dist/_dts/preview-next/src/client/preview/FooterSidebarDisclosure.d.ts +8 -0
- package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +5 -5
- package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +15 -17
- package/dist/_dts/preview-next/src/client/preview/PreviewFooterEditorPanel.d.ts +20 -0
- package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +3 -5
- package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +3 -5
- package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +4 -4
- package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +3 -5
- package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +6 -7
- package/dist/_dts/preview-next/src/client/preview/siteChromeBrandPreferences.d.ts +7 -7
- package/dist/_dts/preview-next/src/client/preview/siteChromeCustomizeTypes.d.ts +4 -4
- package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlHistoryState.d.ts +2 -2
- package/dist/_dts/preview-next/src/client/preview/siteChromeSavePlan.d.ts +12 -11
- package/dist/_dts/preview-next/src/client/preview/siteChromeSelectionRows.d.ts +53 -0
- package/dist/_dts/preview-next/src/client/preview/siteStyleAccess.d.ts +1 -6
- package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +6 -15
- package/dist/_dts/preview-next/src/client/preview/styleConfiguratorSnapshot.d.ts +4 -6
- package/dist/_dts/sdk/src/config/types.d.ts +1 -0
- package/dist/_dts/sdk/src/config/validation.d.ts +2 -0
- package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +4 -41
- package/dist/_dts/sdk/src/next/catch-all-theme-admission.d.ts +23 -0
- package/dist/_dts/sdk/src/next/index.d.ts +8 -6
- package/dist/_dts/sdk/src/next/resolveTheme.d.ts +1 -2
- package/dist/_dts/sdk/src/next/types.d.ts +10 -0
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +2 -16
- package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +3 -2
- package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +5 -3
- package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +1 -1
- package/dist/_dts/sdk/src/rendering/hooks/useContent.d.ts +4 -2
- package/dist/_dts/sdk/src/rendering/index.d.ts +2 -0
- package/dist/_dts/sdk/src/rendering/islands/types.d.ts +6 -1
- package/dist/_dts/sdk/src/rendering/server.d.ts +2 -0
- package/dist/_dts/sdk/src/rendering/themeAdmission.d.ts +11 -0
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/theme-core/src/blockOverrides.d.ts +1 -1
- package/dist/_dts/theme-core/src/boxBackgroundSchema.d.ts +184 -0
- package/dist/_dts/theme-core/src/buttons/buttonColourContract.d.ts +96 -0
- package/dist/_dts/theme-core/src/buttons/buttonSurfaceContext.d.ts +78 -0
- package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/buttons/parseThemeForPersistence.d.ts +2 -2
- package/dist/_dts/theme-core/src/buttons/resolveButtonColourStates.d.ts +9 -57
- package/dist/_dts/theme-core/src/buttons/resolvedButtonCss.d.ts +6 -3
- package/dist/_dts/theme-core/src/buttons/styles/domain.d.ts +8 -7
- package/dist/_dts/theme-core/src/buttons/styles/recipes/quietArrow.d.ts +1 -0
- package/dist/_dts/theme-core/src/buttons/styles/recipes/staticRecipes.d.ts +11 -0
- package/dist/_dts/theme-core/src/buttons/styles/registry.d.ts +12 -0
- package/dist/_dts/theme-core/src/buttons/styles/selection.d.ts +5 -0
- package/dist/_dts/theme-core/src/buttons/types.d.ts +51 -4
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/lib/media.d.ts +583 -10
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +5117 -1433
- package/dist/_dts/theme-core/src/schema.d.ts +5079 -2005
- package/dist/_dts/theme-core/src/site-styles/compilationPlan.d.ts +6 -14
- package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +29 -102
- package/dist/_dts/theme-core/src/site-styles/customizableSurfaces.d.ts +3 -76
- package/dist/_dts/theme-core/src/site-styles/designState.d.ts +4 -4
- package/dist/_dts/theme-core/src/site-styles/generatedDesignPipeline.d.ts +3 -7
- package/dist/_dts/theme-core/src/site-styles/generatedDesignPipelineHelpers.d.ts +17 -0
- package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +2 -2
- package/dist/_dts/theme-core/src/site-styles/headerLayoutCatalog.d.ts +281 -0
- package/dist/_dts/theme-core/src/site-styles/headerLayoutResolution.d.ts +13 -0
- package/dist/_dts/theme-core/src/site-styles/headerLayoutStyles.d.ts +6 -0
- package/dist/_dts/theme-core/src/site-styles/{headerLookTypes.d.ts → headerLayoutTypes.d.ts} +16 -86
- package/dist/_dts/theme-core/src/site-styles/headerNavStyles.d.ts +6 -0
- package/dist/_dts/theme-core/src/site-styles/headerOpeningForeground.d.ts +7 -4
- package/dist/_dts/theme-core/src/site-styles/headerOpeningSection.d.ts +2 -2
- package/dist/_dts/theme-core/src/site-styles/headerStyleCompiler.d.ts +2 -2
- package/dist/_dts/theme-core/src/site-styles/imageSurfaceBackground.d.ts +14 -0
- package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -1
- package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +14 -41
- package/dist/_dts/theme-core/src/site-styles/runtimeBackgroundResolution.d.ts +23 -0
- package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +8 -6
- package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +1 -1
- package/dist/client/{CourseRegistrationWizard-xRmA7REV.mjs → CourseRegistrationWizard-Bvtz9G9g.mjs} +5 -5
- package/dist/client/{DiscountCodeDisclosure-B9vriL5C.mjs → DiscountCodeDisclosure-Ur-Xx1U_.mjs} +1 -1
- package/dist/client/{EventCombined.client-BgVnVTlz.mjs → EventCombined.client-EhscD4U6.mjs} +2 -2
- package/dist/client/{EventListing.client-CqdsO7jO.mjs → EventListing.client-Bn26cFTY.mjs} +2 -2
- package/dist/client/{LeafletStaticMap-CKPxot9M.mjs → LeafletStaticMap-BUw9Ntzr.mjs} +1 -1
- package/dist/client/{StepIndicator-DGCYuBJ1.mjs → StepIndicator-BfbdiVQI.mjs} +2 -2
- package/dist/client/{accordion-BfN5Eqd-.mjs → accordion-CjIeof73.mjs} +1 -1
- package/dist/client/{bookingForm-DOvCpBFP.mjs → bookingForm-DwEeovf_.mjs} +5 -5
- package/dist/client/bookings.mjs +1028 -1038
- package/dist/client/{carousel-DPNmiH0f.mjs → carousel-BMrfgOba.mjs} +1 -1
- package/dist/client/{cart--egVXlrR.mjs → cart-rXEdxTdb.mjs} +3 -3
- package/dist/client/{checkout-DywWtMcq.mjs → checkout-D3JlSzh3.mjs} +3 -3
- package/dist/client/client.mjs +18345 -18311
- package/dist/client/{courseRegistration-Dk9qFVwt.mjs → courseRegistration-DO5XvMAA.mjs} +2 -2
- package/dist/client/{eventCalendar-Bkz2HjlS.mjs → eventCalendar-DO6rTqCn.mjs} +4 -4
- package/dist/client/{eventCombined-D4kipYWg.mjs → eventCombined-bJ3i_ovU.mjs} +2 -2
- package/dist/client/{eventDetails-Dz_5ix2Q.mjs → eventDetails-CCbrXE7o.mjs} +3 -3
- package/dist/client/{eventListing-D0vm-zST.mjs → eventListing-Bdlt9YTm.mjs} +2 -2
- package/dist/client/{eventRegistration-Cw1E4Q4p.mjs → eventRegistration-B02lt6iY.mjs} +6 -6
- package/dist/client/{form-C2Zf1n3K.mjs → form-DrUBAAox.mjs} +1 -1
- package/dist/client/{headerSection-CP05gzdc.mjs → headerSection-MzqvHL6T.mjs} +151 -104
- package/dist/client/hooks.mjs +4532 -4216
- package/dist/client/{locationMap-Cl3x9PYJ.mjs → locationMap-DG8BxTBm.mjs} +2 -2
- package/dist/client/{newsletterForm-DyEJoClm.mjs → newsletterForm-BzO-Td3p.mjs} +1 -1
- package/dist/client/{pricing-DGuNR1W4.mjs → pricing-NgK7ozkg.mjs} +1 -1
- package/dist/client/{productDetail-Cq-HrGew.mjs → productDetail-CfQ7rhVK.mjs} +3 -3
- package/dist/client/{productList-DbB3jwqd.mjs → productList-C23rOLUi.mjs} +3 -3
- package/dist/client/{propsDecoder-CiTuhUwY.mjs → propsDecoder-CAZdhwjs.mjs} +2166 -2157
- package/dist/client/rendering/client.mjs +3600 -4118
- package/dist/client/rendering/islands.mjs +18 -18
- package/dist/client/rendering.mjs +15950 -15890
- package/dist/client/{scrollToBlock-CShkRqab.mjs → scrollToBlock-DSSqVQr1.mjs} +1 -1
- package/dist/client/{shop-Cu4Ib-ZA.mjs → shop-BMToKLK7.mjs} +34 -23
- package/dist/client/{shop-commerce-BzpsOdh7.mjs → shop-commerce-DB4JRKmp.mjs} +4 -4
- package/dist/client/{shop-commerce-store-DaE7Fhj8.mjs → shop-commerce-store-BOqSIOuc.mjs} +1 -1
- package/dist/client/{shopShared-cF0c20vB.mjs → shopShared-B6SK9DZv.mjs} +9 -3
- package/dist/client/{useEventFilters-QZ3HMgaJ.mjs → useEventFilters-CULOa4nB.mjs} +2 -2
- package/dist/client/{usePolling-BKf0GcE-.mjs → usePolling-BGG_8-jl.mjs} +2 -2
- package/dist/preview-next/before-render.mjs +16 -27
- package/dist/preview-next/client/runtime.mjs +4 -4
- package/dist/preview-next/middleware.mjs +16 -27
- package/dist/{previewAuthStore-BesgU5Xu.mjs → previewAuthStore-_GXFRg2W.mjs} +16 -27
- package/dist/{sdk-runtime-C20CVWbb.mjs → sdk-runtime-hhSOMShR.mjs} +2 -2
- package/dist/{separator-BE3NCquy.mjs → separator-flRaFc14.mjs} +1 -1
- package/dist/server/components.mjs +17770 -17866
- package/dist/server/config-validation.mjs +4711 -4421
- package/dist/server/config.mjs +4715 -4425
- package/dist/server/data.mjs +4515 -4216
- package/dist/server/date-time.mjs +22 -13
- package/dist/server/index.mjs +17 -28
- package/dist/server/next.mjs +17586 -17650
- package/dist/server/page-converter.mjs +3759 -4390
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +18952 -19064
- package/dist/server/rendering.mjs +17824 -17901
- package/dist/server/routing.mjs +4748 -4365
- package/dist/server/server.mjs +4591 -4269
- package/dist/server/theme-bridge.mjs +1393 -1886
- package/dist/server/theme.mjs +736 -605
- package/dist/styles/index.css +22 -3
- package/package.json +1 -1
- package/dist/_dts/preview-next/src/client/preview/siteChromeLookRows.d.ts +0 -66
- package/dist/_dts/theme-core/src/site-styles/headerLayoutStyleCatalog.d.ts +0 -254
- package/dist/_dts/theme-core/src/site-styles/headerLegacyLooks.d.ts +0 -372
- package/dist/_dts/theme-core/src/site-styles/headerLookBranding.d.ts +0 -106
- package/dist/_dts/theme-core/src/site-styles/headerLookSelection.d.ts +0 -2
- package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +0 -7
- package/dist/_dts/theme-core/src/site-styles/headerStyleCompilerPrimitives.d.ts +0 -23
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import type { ButtonUnsupportedEffectReason } from './effectClassification';
|
|
2
|
+
import type { ButtonColourTreatment, OpaqueButtonColourToken } from './types';
|
|
3
|
+
export declare const BUTTON_VISUAL_STATES: readonly ["base", "hover", "focus", "active", "disabled"];
|
|
4
|
+
export type ButtonVisualState = (typeof BUTTON_VISUAL_STATES)[number];
|
|
5
|
+
/** A surface whose rendered colour and foreground contract are both known. */
|
|
6
|
+
export type KnownButtonSurface = Readonly<{
|
|
7
|
+
kind: 'solid';
|
|
8
|
+
backgroundHex: string;
|
|
9
|
+
backgroundCss: string;
|
|
10
|
+
foregroundHex: string;
|
|
11
|
+
foregroundCss: string;
|
|
12
|
+
}>;
|
|
13
|
+
export type ButtonColourPalette = Readonly<Record<string, string>>;
|
|
14
|
+
export declare const BUTTON_CONTRAST_POLICY: {
|
|
15
|
+
readonly textMinimumRatio: 4.5;
|
|
16
|
+
readonly nonTextMinimumRatio: 3;
|
|
17
|
+
readonly gradientSamplesPerSegment: 20;
|
|
18
|
+
readonly alphaBackgrounds: "reject-without-known-surface";
|
|
19
|
+
readonly disabled: "retain-full-colour-contract";
|
|
20
|
+
};
|
|
21
|
+
export type ButtonColourContractError = Readonly<{
|
|
22
|
+
tag: 'unknown_palette_token';
|
|
23
|
+
variantId: string;
|
|
24
|
+
state: ButtonVisualState;
|
|
25
|
+
token: OpaqueButtonColourToken;
|
|
26
|
+
}> | Readonly<{
|
|
27
|
+
tag: 'missing_on_colour';
|
|
28
|
+
variantId: string;
|
|
29
|
+
state: ButtonVisualState;
|
|
30
|
+
backgroundToken: OpaqueButtonColourToken;
|
|
31
|
+
foregroundToken: OpaqueButtonColourToken;
|
|
32
|
+
}> | Readonly<{
|
|
33
|
+
tag: 'insufficient_contrast';
|
|
34
|
+
variantId: string;
|
|
35
|
+
state: ButtonVisualState;
|
|
36
|
+
background: string;
|
|
37
|
+
foreground: string;
|
|
38
|
+
ratio: number;
|
|
39
|
+
requiredRatio: number;
|
|
40
|
+
}> | Readonly<{
|
|
41
|
+
tag: 'insufficient_surface_contrast';
|
|
42
|
+
variantId: string;
|
|
43
|
+
state: ButtonVisualState;
|
|
44
|
+
buttonPaint: string;
|
|
45
|
+
surface: string;
|
|
46
|
+
ratio: number;
|
|
47
|
+
requiredRatio: number;
|
|
48
|
+
}> | Readonly<{
|
|
49
|
+
tag: 'unsupported_colour_effect';
|
|
50
|
+
variantId: string;
|
|
51
|
+
state: ButtonVisualState;
|
|
52
|
+
effectId: string;
|
|
53
|
+
reason: ButtonUnsupportedEffectReason;
|
|
54
|
+
}> | Readonly<{
|
|
55
|
+
tag: 'invalid_colour_effect_options';
|
|
56
|
+
variantId: string;
|
|
57
|
+
state: ButtonVisualState;
|
|
58
|
+
effectId: string;
|
|
59
|
+
option: string;
|
|
60
|
+
}> | Readonly<{
|
|
61
|
+
tag: 'inapplicable_colour_effect';
|
|
62
|
+
variantId: string;
|
|
63
|
+
state: ButtonVisualState;
|
|
64
|
+
effectId: string;
|
|
65
|
+
treatment: ButtonColourTreatment['type'];
|
|
66
|
+
}> | Readonly<{
|
|
67
|
+
tag: 'unknown_button_effect';
|
|
68
|
+
variantId: string;
|
|
69
|
+
state: ButtonVisualState;
|
|
70
|
+
effectId: string;
|
|
71
|
+
}>;
|
|
72
|
+
export declare function formatButtonColourContractError(error: ButtonColourContractError): string;
|
|
73
|
+
export declare function validateButtonSurfaceContrast(input: Readonly<{
|
|
74
|
+
variantId: string;
|
|
75
|
+
state: ButtonVisualState;
|
|
76
|
+
buttonPaint: string;
|
|
77
|
+
surfaceHex: string;
|
|
78
|
+
}>): Readonly<{
|
|
79
|
+
ok: true;
|
|
80
|
+
}> | Readonly<{
|
|
81
|
+
ok: false;
|
|
82
|
+
error: ButtonColourContractError;
|
|
83
|
+
}>;
|
|
84
|
+
export declare function validateButtonTextContrast(input: Readonly<{
|
|
85
|
+
variantId: string;
|
|
86
|
+
state: ButtonVisualState;
|
|
87
|
+
background: string;
|
|
88
|
+
backgroundHex: string;
|
|
89
|
+
foreground: string;
|
|
90
|
+
foregroundHex: string;
|
|
91
|
+
}>): Readonly<{
|
|
92
|
+
ok: true;
|
|
93
|
+
}> | Readonly<{
|
|
94
|
+
ok: false;
|
|
95
|
+
error: ButtonColourContractError;
|
|
96
|
+
}>;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { type ButtonColourContractError, type ButtonColourPalette, type ButtonVisualState, type KnownButtonSurface, type ResolvedButtonColourStates, type ResolvedButtonFocusIndicator } from './resolveButtonColourStates';
|
|
2
|
+
import type { ButtonSystem, VariantRole } from './types';
|
|
3
|
+
export type ButtonSurfaceContext = Readonly<{
|
|
4
|
+
kind: 'known-solid';
|
|
5
|
+
source: 'palette-token' | 'literal-css' | 'fallback-token';
|
|
6
|
+
surface: KnownButtonSurface;
|
|
7
|
+
}> | Readonly<{
|
|
8
|
+
kind: 'unknown';
|
|
9
|
+
reason: 'missing-background' | 'image-background' | 'gradient-background' | 'composited-background' | 'unresolvable-colour';
|
|
10
|
+
}>;
|
|
11
|
+
/**
|
|
12
|
+
* Narrow rendering-boundary contract for the surface beneath a button.
|
|
13
|
+
* Blocks own their authored background schema and translate it into this
|
|
14
|
+
* vocabulary; theme-core does not inspect or guess at that external shape.
|
|
15
|
+
*/
|
|
16
|
+
export type ButtonSurfaceInput = Readonly<{
|
|
17
|
+
kind: 'inherit';
|
|
18
|
+
foreground?: string | null;
|
|
19
|
+
}> | Readonly<{
|
|
20
|
+
kind: 'solid';
|
|
21
|
+
color?: string | null;
|
|
22
|
+
foreground?: string | null;
|
|
23
|
+
composited: boolean;
|
|
24
|
+
}> | Readonly<{
|
|
25
|
+
kind: 'image';
|
|
26
|
+
}> | Readonly<{
|
|
27
|
+
kind: 'gradient';
|
|
28
|
+
}> | Readonly<{
|
|
29
|
+
kind: 'unknown';
|
|
30
|
+
}>;
|
|
31
|
+
export type RejectedButtonSurfaceCandidate = Readonly<{
|
|
32
|
+
candidate: 'preferred' | 'surface-outline' | VariantRole;
|
|
33
|
+
error: ButtonColourContractError;
|
|
34
|
+
}>;
|
|
35
|
+
export type ContextualButtonResolution = Readonly<{
|
|
36
|
+
kind: 'preferred';
|
|
37
|
+
requestedRole: VariantRole;
|
|
38
|
+
states: ResolvedButtonColourStates;
|
|
39
|
+
focusIndicator: ResolvedButtonFocusIndicator;
|
|
40
|
+
boundary: Readonly<{
|
|
41
|
+
width: string;
|
|
42
|
+
color: string;
|
|
43
|
+
}> | null;
|
|
44
|
+
}> | Readonly<{
|
|
45
|
+
kind: 'repaired';
|
|
46
|
+
requestedRole: VariantRole;
|
|
47
|
+
candidate: 'surface-outline' | VariantRole;
|
|
48
|
+
states: ResolvedButtonColourStates;
|
|
49
|
+
focusIndicator: ResolvedButtonFocusIndicator;
|
|
50
|
+
boundary: Readonly<{
|
|
51
|
+
width: string;
|
|
52
|
+
color: string;
|
|
53
|
+
}> | null;
|
|
54
|
+
rejectedCandidates: readonly RejectedButtonSurfaceCandidate[];
|
|
55
|
+
}> | Readonly<{
|
|
56
|
+
kind: 'unresolved';
|
|
57
|
+
requestedRole: VariantRole;
|
|
58
|
+
rejectedCandidates: readonly RejectedButtonSurfaceCandidate[];
|
|
59
|
+
}>;
|
|
60
|
+
/**
|
|
61
|
+
* Derive only what the rendered section can honestly prove about its backing.
|
|
62
|
+
* Images, gradients, alpha/composite layers and arbitrary CSS remain unknown.
|
|
63
|
+
*/
|
|
64
|
+
export declare function deriveButtonSurfaceContext(input: ButtonSurfaceInput, palette: Readonly<Record<string, string>>, fallbackToken?: string): ButtonSurfaceContext;
|
|
65
|
+
export declare function resolveContextualButtonRole(input: Readonly<{
|
|
66
|
+
role: VariantRole;
|
|
67
|
+
buttonSystem: ButtonSystem;
|
|
68
|
+
palette: ButtonColourPalette;
|
|
69
|
+
surface: KnownButtonSurface;
|
|
70
|
+
}>): ContextualButtonResolution;
|
|
71
|
+
export declare function contextualButtonSurfaceStyles(resolution: ContextualButtonResolution): Readonly<Record<string, string>>;
|
|
72
|
+
/**
|
|
73
|
+
* Break an inherited surface contract when a nested element establishes a
|
|
74
|
+
* backing whose colours cannot be proven (for example an image or gradient).
|
|
75
|
+
*/
|
|
76
|
+
export declare function contextualButtonSurfaceResetStyles(): Readonly<Record<string, string>>;
|
|
77
|
+
export declare function actionVariableName(role: string, state: ButtonVisualState, property: string): string;
|
|
78
|
+
export declare function actionVariableFallback(role: string, state: ButtonVisualState, property: string, fallback: string): string;
|
|
@@ -8,6 +8,7 @@ export * from './parseThemeForPersistence';
|
|
|
8
8
|
export * from './classNames';
|
|
9
9
|
export * from './generateButtonCss';
|
|
10
10
|
export * from './resolveButtonColourStates';
|
|
11
|
+
export * from './buttonSurfaceContext';
|
|
11
12
|
export * from './affordanceIcons';
|
|
12
13
|
export * from './generateDefaultButtonSystem';
|
|
13
14
|
export * from './constants';
|
|
@@ -14,8 +14,8 @@ declare const validatedThemeForPersistenceBrand: unique symbol;
|
|
|
14
14
|
/**
|
|
15
15
|
* A schema-parsed Theme whose button variants all compile against its palette.
|
|
16
16
|
*
|
|
17
|
-
* The brand is intentionally phantom
|
|
18
|
-
*
|
|
17
|
+
* The brand is intentionally phantom. The parser also canonicalizes legacy
|
|
18
|
+
* button systems by adding the standard surface policy before the next save.
|
|
19
19
|
*/
|
|
20
20
|
export type ValidatedThemeForPersistence = Theme & {
|
|
21
21
|
readonly [validatedThemeForPersistenceBrand]: true;
|
|
@@ -1,65 +1,17 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import
|
|
3
|
-
|
|
1
|
+
import type { ButtonGlobalSettings, ButtonVariant, OpaqueButtonColourToken, VariantEffects } from './types';
|
|
2
|
+
import { type ButtonColourContractError, type ButtonColourPalette, type ButtonVisualState, type KnownButtonSurface } from './buttonColourContract';
|
|
3
|
+
export { BUTTON_CONTRAST_POLICY, BUTTON_VISUAL_STATES, formatButtonColourContractError, type ButtonColourContractError, type ButtonColourPalette, type ButtonVisualState, type KnownButtonSurface, } from './buttonColourContract';
|
|
4
4
|
export { classifyButtonEffectId, type ButtonEffectClassification, } from './effectClassification';
|
|
5
|
-
export declare const BUTTON_VISUAL_STATES: readonly ["base", "hover", "focus", "active", "disabled"];
|
|
6
|
-
export type ButtonVisualState = (typeof BUTTON_VISUAL_STATES)[number];
|
|
7
|
-
export declare const BUTTON_CONTRAST_POLICY: {
|
|
8
|
-
readonly textMinimumRatio: 4.5;
|
|
9
|
-
readonly nonTextMinimumRatio: 3;
|
|
10
|
-
readonly gradientSamplesPerSegment: 20;
|
|
11
|
-
readonly alphaBackgrounds: "reject-without-known-surface";
|
|
12
|
-
readonly disabled: "retain-full-colour-contract";
|
|
13
|
-
};
|
|
14
|
-
export type ButtonColourContractError = Readonly<{
|
|
15
|
-
tag: 'unknown_palette_token';
|
|
16
|
-
variantId: string;
|
|
17
|
-
state: ButtonVisualState;
|
|
18
|
-
token: OpaqueButtonColourToken;
|
|
19
|
-
}> | Readonly<{
|
|
20
|
-
tag: 'missing_on_colour';
|
|
21
|
-
variantId: string;
|
|
22
|
-
state: ButtonVisualState;
|
|
23
|
-
backgroundToken: OpaqueButtonColourToken;
|
|
24
|
-
foregroundToken: OpaqueButtonColourToken;
|
|
25
|
-
}> | Readonly<{
|
|
26
|
-
tag: 'insufficient_contrast';
|
|
27
|
-
variantId: string;
|
|
28
|
-
state: ButtonVisualState;
|
|
29
|
-
background: string;
|
|
30
|
-
foreground: string;
|
|
31
|
-
ratio: number;
|
|
32
|
-
requiredRatio: number;
|
|
33
|
-
}> | Readonly<{
|
|
34
|
-
tag: 'unsupported_colour_effect';
|
|
35
|
-
variantId: string;
|
|
36
|
-
state: ButtonVisualState;
|
|
37
|
-
effectId: string;
|
|
38
|
-
reason: ButtonUnsupportedEffectReason;
|
|
39
|
-
}> | Readonly<{
|
|
40
|
-
tag: 'invalid_colour_effect_options';
|
|
41
|
-
variantId: string;
|
|
42
|
-
state: ButtonVisualState;
|
|
43
|
-
effectId: string;
|
|
44
|
-
option: string;
|
|
45
|
-
}> | Readonly<{
|
|
46
|
-
tag: 'inapplicable_colour_effect';
|
|
47
|
-
variantId: string;
|
|
48
|
-
state: ButtonVisualState;
|
|
49
|
-
effectId: string;
|
|
50
|
-
treatment: ButtonColourTreatment['type'];
|
|
51
|
-
}> | Readonly<{
|
|
52
|
-
tag: 'unknown_button_effect';
|
|
53
|
-
variantId: string;
|
|
54
|
-
state: ButtonVisualState;
|
|
55
|
-
effectId: string;
|
|
56
|
-
}>;
|
|
57
5
|
export type ResolvedButtonColour = Readonly<{
|
|
58
6
|
kind: 'solid';
|
|
59
7
|
backgroundToken: OpaqueButtonColourToken;
|
|
60
8
|
foregroundToken: OpaqueButtonColourToken;
|
|
61
9
|
backgroundCss: string;
|
|
62
10
|
foregroundCss: string;
|
|
11
|
+
}> | Readonly<{
|
|
12
|
+
kind: 'known-solid';
|
|
13
|
+
backgroundCss: string;
|
|
14
|
+
foregroundCss: string;
|
|
63
15
|
}> | Readonly<{
|
|
64
16
|
kind: 'gradient';
|
|
65
17
|
backgroundTokens: readonly [OpaqueButtonColourToken, OpaqueButtonColourToken, ...OpaqueButtonColourToken[]];
|
|
@@ -95,6 +47,6 @@ export type ButtonColourContractResult = Readonly<{
|
|
|
95
47
|
export declare function compileButtonColourStates(input: Readonly<{
|
|
96
48
|
variant: ButtonVariant;
|
|
97
49
|
global: ButtonGlobalSettings;
|
|
98
|
-
palette:
|
|
50
|
+
palette: ButtonColourPalette;
|
|
51
|
+
surface?: KnownButtonSurface;
|
|
99
52
|
}>): ButtonColourContractResult;
|
|
100
|
-
export declare function formatButtonColourContractError(error: ButtonColourContractError): string;
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import type { ResolvedButtonColour, ResolvedButtonFocusIndicator } from './resolveButtonColourStates';
|
|
1
|
+
import type { ButtonVisualState, ResolvedButtonColour, ResolvedButtonFocusIndicator } from './resolveButtonColourStates';
|
|
2
2
|
export type ButtonCssDeclaration = readonly [property: string, value: string];
|
|
3
3
|
/**
|
|
4
4
|
* Canonical colour declaration mapping shared by full themes and ThemeBridge.
|
|
5
5
|
* Both background properties are always emitted so transitions cannot retain
|
|
6
6
|
* a stale gradient or solid layer.
|
|
7
7
|
*/
|
|
8
|
-
export declare function resolvedButtonColourDeclarations(colour: ResolvedButtonColour
|
|
9
|
-
|
|
8
|
+
export declare function resolvedButtonColourDeclarations(colour: ResolvedButtonColour, action?: Readonly<{
|
|
9
|
+
role: string;
|
|
10
|
+
state: ButtonVisualState;
|
|
11
|
+
}>): readonly ButtonCssDeclaration[];
|
|
12
|
+
export declare function resolvedButtonFocusDeclarations(indicator: ResolvedButtonFocusIndicator, role?: string): readonly ButtonCssDeclaration[];
|
|
10
13
|
/**
|
|
11
14
|
* Disabled buttons retain their validated colour pair and add a non-layout
|
|
12
15
|
* visual affordance. `currentColor` keeps the cue inside the same contrast
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { z } from 'zod';
|
|
2
2
|
import type { StyleTags } from '../../site-styles/styleTags';
|
|
3
|
-
import type { ButtonGlobalSettings, ButtonSizes, ButtonSystem, ButtonVariant } from '../types';
|
|
3
|
+
import type { ButtonGlobalSettings, ButtonSizes, ButtonSurfacePolicy, ButtonSystem, ButtonVariant } from '../types';
|
|
4
4
|
export declare const PUBLIC_BUTTON_ROLES: readonly ["primary", "secondary", "outline", "ghost", "accent"];
|
|
5
5
|
export type PublicButtonRole = (typeof PUBLIC_BUTTON_ROLES)[number];
|
|
6
6
|
export type CompleteButtonRole = 'primary' | 'secondary';
|
|
@@ -13,7 +13,7 @@ export type PublicButtonVariant<TRole extends PublicButtonRole = PublicButtonRol
|
|
|
13
13
|
export type CompleteButtonRoles = Readonly<{
|
|
14
14
|
[TRole in PublicButtonRole]: PublicButtonVariant<TRole>;
|
|
15
15
|
}>;
|
|
16
|
-
type CompleteRoleDefinition
|
|
16
|
+
type CompleteRoleDefinition = Readonly<{
|
|
17
17
|
kind: 'complete';
|
|
18
18
|
appearance: ButtonVariantAppearance;
|
|
19
19
|
}>;
|
|
@@ -23,16 +23,17 @@ type DerivedRoleDefinition = Readonly<{
|
|
|
23
23
|
overrides?: Partial<ButtonVariantAppearance>;
|
|
24
24
|
}>;
|
|
25
25
|
export type ButtonRoleDefinitions = Readonly<{
|
|
26
|
-
primary: CompleteRoleDefinition
|
|
27
|
-
secondary: CompleteRoleDefinition
|
|
28
|
-
outline: CompleteRoleDefinition
|
|
29
|
-
ghost: CompleteRoleDefinition
|
|
30
|
-
accent: CompleteRoleDefinition
|
|
26
|
+
primary: CompleteRoleDefinition;
|
|
27
|
+
secondary: CompleteRoleDefinition;
|
|
28
|
+
outline: CompleteRoleDefinition | DerivedRoleDefinition;
|
|
29
|
+
ghost: CompleteRoleDefinition | DerivedRoleDefinition;
|
|
30
|
+
accent: CompleteRoleDefinition | DerivedRoleDefinition;
|
|
31
31
|
}>;
|
|
32
32
|
export type ButtonStyleSystemDefinition = Readonly<{
|
|
33
33
|
global: ButtonGlobalSettings;
|
|
34
34
|
sizes?: ButtonSizes;
|
|
35
35
|
roles: ButtonRoleDefinitions;
|
|
36
|
+
surfacePolicy?: ButtonSurfacePolicy;
|
|
36
37
|
}>;
|
|
37
38
|
type StringParameterKey<TParameters> = Extract<keyof TParameters, string>;
|
|
38
39
|
export type ButtonStyleControl<TParameters> = {
|
|
@@ -55,6 +55,7 @@ export declare const softPillRecipe: Readonly<{
|
|
|
55
55
|
overrides?: Partial<import("..").ButtonVariantAppearance>;
|
|
56
56
|
}>;
|
|
57
57
|
}>;
|
|
58
|
+
surfacePolicy?: import("../..").ButtonSurfacePolicy;
|
|
58
59
|
}>;
|
|
59
60
|
}>;
|
|
60
61
|
export declare const earthPillRecipe: Readonly<{
|
|
@@ -114,6 +115,7 @@ export declare const earthPillRecipe: Readonly<{
|
|
|
114
115
|
overrides?: Partial<import("..").ButtonVariantAppearance>;
|
|
115
116
|
}>;
|
|
116
117
|
}>;
|
|
118
|
+
surfacePolicy?: import("../..").ButtonSurfacePolicy;
|
|
117
119
|
}>;
|
|
118
120
|
}>;
|
|
119
121
|
export declare const confidentChipRecipe: Readonly<{
|
|
@@ -173,6 +175,7 @@ export declare const confidentChipRecipe: Readonly<{
|
|
|
173
175
|
overrides?: Partial<import("..").ButtonVariantAppearance>;
|
|
174
176
|
}>;
|
|
175
177
|
}>;
|
|
178
|
+
surfacePolicy?: import("../..").ButtonSurfacePolicy;
|
|
176
179
|
}>;
|
|
177
180
|
}>;
|
|
178
181
|
export declare const editorialLinkRecipe: Readonly<{
|
|
@@ -232,6 +235,7 @@ export declare const editorialLinkRecipe: Readonly<{
|
|
|
232
235
|
overrides?: Partial<import("..").ButtonVariantAppearance>;
|
|
233
236
|
}>;
|
|
234
237
|
}>;
|
|
238
|
+
surfacePolicy?: import("../..").ButtonSurfacePolicy;
|
|
235
239
|
}>;
|
|
236
240
|
}>;
|
|
237
241
|
export declare const pebbleRecipe: Readonly<{
|
|
@@ -291,6 +295,7 @@ export declare const pebbleRecipe: Readonly<{
|
|
|
291
295
|
overrides?: Partial<import("..").ButtonVariantAppearance>;
|
|
292
296
|
}>;
|
|
293
297
|
}>;
|
|
298
|
+
surfacePolicy?: import("../..").ButtonSurfacePolicy;
|
|
294
299
|
}>;
|
|
295
300
|
}>;
|
|
296
301
|
export declare const brushedWashRecipe: Readonly<{
|
|
@@ -350,6 +355,7 @@ export declare const brushedWashRecipe: Readonly<{
|
|
|
350
355
|
overrides?: Partial<import("..").ButtonVariantAppearance>;
|
|
351
356
|
}>;
|
|
352
357
|
}>;
|
|
358
|
+
surfacePolicy?: import("../..").ButtonSurfacePolicy;
|
|
353
359
|
}>;
|
|
354
360
|
}>;
|
|
355
361
|
export declare const inkStampRecipe: Readonly<{
|
|
@@ -409,6 +415,7 @@ export declare const inkStampRecipe: Readonly<{
|
|
|
409
415
|
overrides?: Partial<import("..").ButtonVariantAppearance>;
|
|
410
416
|
}>;
|
|
411
417
|
}>;
|
|
418
|
+
surfacePolicy?: import("../..").ButtonSurfacePolicy;
|
|
412
419
|
}>;
|
|
413
420
|
}>;
|
|
414
421
|
export declare const flatInkRecipe: Readonly<{
|
|
@@ -468,6 +475,7 @@ export declare const flatInkRecipe: Readonly<{
|
|
|
468
475
|
overrides?: Partial<import("..").ButtonVariantAppearance>;
|
|
469
476
|
}>;
|
|
470
477
|
}>;
|
|
478
|
+
surfacePolicy?: import("../..").ButtonSurfacePolicy;
|
|
471
479
|
}>;
|
|
472
480
|
}>;
|
|
473
481
|
export declare const showtimePillRecipe: Readonly<{
|
|
@@ -527,6 +535,7 @@ export declare const showtimePillRecipe: Readonly<{
|
|
|
527
535
|
overrides?: Partial<import("..").ButtonVariantAppearance>;
|
|
528
536
|
}>;
|
|
529
537
|
}>;
|
|
538
|
+
surfacePolicy?: import("../..").ButtonSurfacePolicy;
|
|
530
539
|
}>;
|
|
531
540
|
}>;
|
|
532
541
|
export declare const joyStampRecipe: Readonly<{
|
|
@@ -586,6 +595,7 @@ export declare const joyStampRecipe: Readonly<{
|
|
|
586
595
|
overrides?: Partial<import("..").ButtonVariantAppearance>;
|
|
587
596
|
}>;
|
|
588
597
|
}>;
|
|
598
|
+
surfacePolicy?: import("../..").ButtonSurfacePolicy;
|
|
589
599
|
}>;
|
|
590
600
|
}>;
|
|
591
601
|
export declare const ornateRitualRecipe: Readonly<{
|
|
@@ -645,5 +655,6 @@ export declare const ornateRitualRecipe: Readonly<{
|
|
|
645
655
|
overrides?: Partial<import("..").ButtonVariantAppearance>;
|
|
646
656
|
}>;
|
|
647
657
|
}>;
|
|
658
|
+
surfacePolicy?: import("../..").ButtonSurfacePolicy;
|
|
648
659
|
}>;
|
|
649
660
|
}>;
|
|
@@ -58,6 +58,7 @@ export declare const buttonStyleRecipes: readonly [Readonly<{
|
|
|
58
58
|
overrides?: Partial<import("./domain").ButtonVariantAppearance>;
|
|
59
59
|
}>;
|
|
60
60
|
}>;
|
|
61
|
+
surfacePolicy?: import("..").ButtonSurfacePolicy;
|
|
61
62
|
}>;
|
|
62
63
|
}>, Readonly<{
|
|
63
64
|
id: "earth-pill";
|
|
@@ -116,6 +117,7 @@ export declare const buttonStyleRecipes: readonly [Readonly<{
|
|
|
116
117
|
overrides?: Partial<import("./domain").ButtonVariantAppearance>;
|
|
117
118
|
}>;
|
|
118
119
|
}>;
|
|
120
|
+
surfacePolicy?: import("..").ButtonSurfacePolicy;
|
|
119
121
|
}>;
|
|
120
122
|
}>, Readonly<{
|
|
121
123
|
id: "confident-chip";
|
|
@@ -174,6 +176,7 @@ export declare const buttonStyleRecipes: readonly [Readonly<{
|
|
|
174
176
|
overrides?: Partial<import("./domain").ButtonVariantAppearance>;
|
|
175
177
|
}>;
|
|
176
178
|
}>;
|
|
179
|
+
surfacePolicy?: import("..").ButtonSurfacePolicy;
|
|
177
180
|
}>;
|
|
178
181
|
}>, Readonly<{
|
|
179
182
|
id: "editorial-link";
|
|
@@ -232,6 +235,7 @@ export declare const buttonStyleRecipes: readonly [Readonly<{
|
|
|
232
235
|
overrides?: Partial<import("./domain").ButtonVariantAppearance>;
|
|
233
236
|
}>;
|
|
234
237
|
}>;
|
|
238
|
+
surfacePolicy?: import("..").ButtonSurfacePolicy;
|
|
235
239
|
}>;
|
|
236
240
|
}>, Readonly<{
|
|
237
241
|
id: "pebble";
|
|
@@ -290,6 +294,7 @@ export declare const buttonStyleRecipes: readonly [Readonly<{
|
|
|
290
294
|
overrides?: Partial<import("./domain").ButtonVariantAppearance>;
|
|
291
295
|
}>;
|
|
292
296
|
}>;
|
|
297
|
+
surfacePolicy?: import("..").ButtonSurfacePolicy;
|
|
293
298
|
}>;
|
|
294
299
|
}>, Readonly<{
|
|
295
300
|
id: "ink-stamp";
|
|
@@ -348,6 +353,7 @@ export declare const buttonStyleRecipes: readonly [Readonly<{
|
|
|
348
353
|
overrides?: Partial<import("./domain").ButtonVariantAppearance>;
|
|
349
354
|
}>;
|
|
350
355
|
}>;
|
|
356
|
+
surfacePolicy?: import("..").ButtonSurfacePolicy;
|
|
351
357
|
}>;
|
|
352
358
|
}>, Readonly<{
|
|
353
359
|
id: "flat-ink";
|
|
@@ -406,6 +412,7 @@ export declare const buttonStyleRecipes: readonly [Readonly<{
|
|
|
406
412
|
overrides?: Partial<import("./domain").ButtonVariantAppearance>;
|
|
407
413
|
}>;
|
|
408
414
|
}>;
|
|
415
|
+
surfacePolicy?: import("..").ButtonSurfacePolicy;
|
|
409
416
|
}>;
|
|
410
417
|
}>, Readonly<{
|
|
411
418
|
id: "brushed-wash";
|
|
@@ -464,6 +471,7 @@ export declare const buttonStyleRecipes: readonly [Readonly<{
|
|
|
464
471
|
overrides?: Partial<import("./domain").ButtonVariantAppearance>;
|
|
465
472
|
}>;
|
|
466
473
|
}>;
|
|
474
|
+
surfacePolicy?: import("..").ButtonSurfacePolicy;
|
|
467
475
|
}>;
|
|
468
476
|
}>, Readonly<{
|
|
469
477
|
id: "showtime-pill";
|
|
@@ -522,6 +530,7 @@ export declare const buttonStyleRecipes: readonly [Readonly<{
|
|
|
522
530
|
overrides?: Partial<import("./domain").ButtonVariantAppearance>;
|
|
523
531
|
}>;
|
|
524
532
|
}>;
|
|
533
|
+
surfacePolicy?: import("..").ButtonSurfacePolicy;
|
|
525
534
|
}>;
|
|
526
535
|
}>, Readonly<{
|
|
527
536
|
id: "joy-stamp";
|
|
@@ -580,6 +589,7 @@ export declare const buttonStyleRecipes: readonly [Readonly<{
|
|
|
580
589
|
overrides?: Partial<import("./domain").ButtonVariantAppearance>;
|
|
581
590
|
}>;
|
|
582
591
|
}>;
|
|
592
|
+
surfacePolicy?: import("..").ButtonSurfacePolicy;
|
|
583
593
|
}>;
|
|
584
594
|
}>, Readonly<{
|
|
585
595
|
id: "ornate-ritual";
|
|
@@ -638,6 +648,7 @@ export declare const buttonStyleRecipes: readonly [Readonly<{
|
|
|
638
648
|
overrides?: Partial<import("./domain").ButtonVariantAppearance>;
|
|
639
649
|
}>;
|
|
640
650
|
}>;
|
|
651
|
+
surfacePolicy?: import("..").ButtonSurfacePolicy;
|
|
641
652
|
}>;
|
|
642
653
|
}>, Readonly<{
|
|
643
654
|
id: "quiet-arrow";
|
|
@@ -704,6 +715,7 @@ export declare const buttonStyleRecipes: readonly [Readonly<{
|
|
|
704
715
|
overrides?: Partial<import("./domain").ButtonVariantAppearance>;
|
|
705
716
|
}>;
|
|
706
717
|
}>;
|
|
718
|
+
surfacePolicy?: import("..").ButtonSurfacePolicy;
|
|
707
719
|
}>;
|
|
708
720
|
}>];
|
|
709
721
|
export type RegisteredButtonStyleRecipe = (typeof buttonStyleRecipes)[number];
|
|
@@ -60,6 +60,11 @@ export declare const DEFAULT_BUTTON_STYLE_SELECTION: {
|
|
|
60
60
|
};
|
|
61
61
|
export declare function createDefaultButtonStyleSelection(styleId: ButtonStyleId): ButtonStyleSelection;
|
|
62
62
|
export declare function isButtonStyleId(value: string): value is ButtonStyleId;
|
|
63
|
+
export type PersistedButtonStyleSelectionResult = Readonly<{
|
|
64
|
+
selection: ButtonStyleSelection;
|
|
65
|
+
warning: 'invalid-persisted-button-style-selection' | null;
|
|
66
|
+
}>;
|
|
67
|
+
export declare function parsePersistedButtonStyleSelection(value: unknown, fallback?: ButtonStyleSelection): PersistedButtonStyleSelectionResult;
|
|
63
68
|
/**
|
|
64
69
|
* Stable identity for a validated style selection. Parsing first canonicalises
|
|
65
70
|
* parameter key order, so future recipe parameters do not require editor-core
|
|
@@ -6,9 +6,9 @@ import { type ThemeColorToken } from '../tokens/themeColorTokens';
|
|
|
6
6
|
* Defines the type-safe configuration for site button styles.
|
|
7
7
|
*/
|
|
8
8
|
export type Shadow = {
|
|
9
|
-
elevation:
|
|
10
|
-
softness:
|
|
11
|
-
position:
|
|
9
|
+
elevation: 'none' | 'low' | 'medium' | 'high';
|
|
10
|
+
softness: 'crisp' | 'soft' | 'hard' | null;
|
|
11
|
+
position: 'bottom' | 'bottom-right';
|
|
12
12
|
/**
|
|
13
13
|
* Optional palette token for the shadow colour. When omitted the shadow
|
|
14
14
|
* falls back to the historical neutral black (`rgb(0 0 0 / …)`), so existing
|
|
@@ -105,7 +105,11 @@ export type ButtonColourTreatment = {
|
|
|
105
105
|
colorToken: OpaqueButtonColourToken;
|
|
106
106
|
} | {
|
|
107
107
|
type: 'gradient';
|
|
108
|
-
stops: [
|
|
108
|
+
stops: [
|
|
109
|
+
OpaqueButtonColourToken,
|
|
110
|
+
OpaqueButtonColourToken,
|
|
111
|
+
...OpaqueButtonColourToken[]
|
|
112
|
+
];
|
|
109
113
|
direction: GradientDirection;
|
|
110
114
|
foregroundToken: OpaqueButtonColourToken;
|
|
111
115
|
} | {
|
|
@@ -313,6 +317,35 @@ export declare const variantRoleSchema: z.ZodEnum<{
|
|
|
313
317
|
secondary: "secondary";
|
|
314
318
|
ghost: "ghost";
|
|
315
319
|
}>;
|
|
320
|
+
export declare const buttonSurfaceFallbackSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
321
|
+
kind: z.ZodLiteral<"surface-outline">;
|
|
322
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
323
|
+
kind: z.ZodLiteral<"variant">;
|
|
324
|
+
role: z.ZodEnum<{
|
|
325
|
+
outline: "outline";
|
|
326
|
+
accent: "accent";
|
|
327
|
+
primary: "primary";
|
|
328
|
+
secondary: "secondary";
|
|
329
|
+
ghost: "ghost";
|
|
330
|
+
}>;
|
|
331
|
+
}, z.core.$strict>], "kind">;
|
|
332
|
+
export type ButtonSurfaceFallback = z.infer<typeof buttonSurfaceFallbackSchema>;
|
|
333
|
+
export type ButtonSurfacePolicy = Record<VariantRole, ButtonSurfaceFallback[]>;
|
|
334
|
+
type ReadonlyButtonSurfacePolicy = Readonly<Record<VariantRole, readonly ButtonSurfaceFallback[]>>;
|
|
335
|
+
export declare const STANDARD_BUTTON_SURFACE_POLICY: ReadonlyButtonSurfacePolicy;
|
|
336
|
+
export declare function createStandardButtonSurfacePolicy(): ButtonSurfacePolicy;
|
|
337
|
+
export declare const buttonSurfacePolicySchema: z.ZodObject<Record<"outline" | "accent" | "primary" | "secondary" | "ghost", z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
338
|
+
kind: z.ZodLiteral<"surface-outline">;
|
|
339
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
340
|
+
kind: z.ZodLiteral<"variant">;
|
|
341
|
+
role: z.ZodEnum<{
|
|
342
|
+
outline: "outline";
|
|
343
|
+
accent: "accent";
|
|
344
|
+
primary: "primary";
|
|
345
|
+
secondary: "secondary";
|
|
346
|
+
ghost: "ghost";
|
|
347
|
+
}>;
|
|
348
|
+
}, z.core.$strict>], "kind">>>, z.core.$strict>;
|
|
316
349
|
export declare const buttonSizeNameSchema: z.ZodEnum<{
|
|
317
350
|
sm: "sm";
|
|
318
351
|
md: "md";
|
|
@@ -2240,6 +2273,18 @@ export declare const buttonSystemSchema: z.ZodObject<{
|
|
|
2240
2273
|
fontSize?: string | undefined;
|
|
2241
2274
|
} | undefined;
|
|
2242
2275
|
}>>>;
|
|
2276
|
+
surfacePolicy: z.ZodOptional<z.ZodObject<Record<"outline" | "accent" | "primary" | "secondary" | "ghost", z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
2277
|
+
kind: z.ZodLiteral<"surface-outline">;
|
|
2278
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
2279
|
+
kind: z.ZodLiteral<"variant">;
|
|
2280
|
+
role: z.ZodEnum<{
|
|
2281
|
+
outline: "outline";
|
|
2282
|
+
accent: "accent";
|
|
2283
|
+
primary: "primary";
|
|
2284
|
+
secondary: "secondary";
|
|
2285
|
+
ghost: "ghost";
|
|
2286
|
+
}>;
|
|
2287
|
+
}, z.core.$strict>], "kind">>>, z.core.$strict>>;
|
|
2243
2288
|
}, z.core.$strict>;
|
|
2244
2289
|
export type Priority = 1 | 2 | 3;
|
|
2245
2290
|
interface ButtonGlobalSettingsBase {
|
|
@@ -2315,5 +2360,7 @@ export interface ButtonSystem {
|
|
|
2315
2360
|
global: ButtonGlobalSettings;
|
|
2316
2361
|
variants: ButtonVariant[];
|
|
2317
2362
|
sizes?: ButtonSizes;
|
|
2363
|
+
/** Optional only for pre-policy in-memory fixtures; persistence canonicalizes it. */
|
|
2364
|
+
surfacePolicy?: ButtonSurfacePolicy;
|
|
2318
2365
|
}
|
|
2319
2366
|
export {};
|