@riverbankcms/sdk 0.145.0 → 0.146.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 +17 -0
- package/dist/{PreviewEditorSidebar-O-V6Pl5a.mjs → PreviewEditorSidebar-kg2r2Fyi.mjs} +4 -4
- package/dist/{PreviewEditorUI-1UlX_9cw.mjs → PreviewEditorUI-sWMLp5dT.mjs} +3 -3
- package/dist/{PreviewQueryProvider-BxGwdOCV.mjs → PreviewQueryProvider-Cg51xq1w.mjs} +1 -1
- package/dist/{SdkPreviewModeRuntime-DYbA_4iv.mjs → SdkPreviewModeRuntime-h2ti3Hch.mjs} +280 -182
- package/dist/{SiteChromeCustomizeContext-CNTKQ9nx.mjs → SiteChromeCustomizeContext-DEACFH9m.mjs} +1330 -734
- package/dist/_dts/ai/src/contracts/proposals.d.ts +924 -0
- package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +84 -0
- package/dist/_dts/api/src/bookingConfig.d.ts +8 -1
- package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +8 -14
- package/dist/_dts/api/src/bookingManagementEventEndpointTypes.d.ts +45 -1
- 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 +223 -88
- package/dist/_dts/api/src/event-visibility.d.ts +20 -0
- package/dist/_dts/api/src/eventManagementContracts.d.ts +56 -3
- 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 +7 -1
- 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 +20 -2
- package/dist/_dts/api/src/launchRequirementPriority.d.ts +3 -0
- package/dist/_dts/api/src/newsletterCampaignCommandEndpoints.d.ts +13 -0
- package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +42 -0
- package/dist/_dts/api/src/occurrenceScheduling.d.ts +10 -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/sdk-event-upsert.d.ts +40 -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/siteManagementEndpointDefinitions.d.ts +49 -0
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +2 -32
- package/dist/_dts/api/src/siteOnboarding.d.ts +75 -9
- 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/index.d.ts +2 -0
- package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +10 -0
- package/dist/_dts/blocks/src/pageRendererContracts.d.ts +3 -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/icons/social.d.ts +1 -1
- package/dist/_dts/blocks/src/system/registry.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +1 -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 +36 -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 +2 -1
- 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/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 +1 -0
- package/dist/_dts/core/src/mailing-list-submission.d.ts +3 -1
- 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 +49 -2
- 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/types.d.ts +2 -8
- package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
- package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +3 -4
- 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 +2 -2
- package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +2 -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/generated/containerResponsiveThemeCss.d.ts +1 -1
- 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/ui/src/navigation-tabs.d.ts +2 -1
- package/dist/client/{BookingConsentAgreement-DlVOmpW4.mjs → BookingConsentAgreement-BQKL045f.mjs} +2 -2
- package/dist/client/CheckboxChoice--W2n6yKs.mjs +24 -0
- package/dist/client/{DiscountCodeDisclosure-T9q623PQ.mjs → DiscountCodeDisclosure-CsOtjFY7.mjs} +1 -1
- package/dist/client/{EventCombined.client-DnsUeONl.mjs → EventCombined.client-BdRjVbhH.mjs} +6 -6
- package/dist/client/{EventListing.client-CNBFqJS4.mjs → EventListing.client-DBxC6xOU.mjs} +2 -2
- package/dist/client/{LeafletStaticMap-C7higg52.mjs → LeafletStaticMap-mHEJKrTs.mjs} +1 -1
- package/dist/client/{ThemedButton-LAJTNrS8.mjs → ThemedButton-CE5KYT6z.mjs} +1 -1
- package/dist/client/{accordion-BcNF9TjX.mjs → accordion-BEQNSptH.mjs} +1 -1
- package/dist/client/{bookingForm-BUaQ3S03.mjs → bookingForm-AMr-s5vw.mjs} +33 -52
- package/dist/client/bookings.mjs +48 -46
- package/dist/client/{carousel-CTdF6e0V.mjs → carousel-Bbt_QgJy.mjs} +1 -1
- package/dist/client/{cart-pGtyf_XU.mjs → cart-CnWi30zJ.mjs} +3 -3
- package/dist/client/{checkout-Da9WSn7Y.mjs → checkout-f3nkWgd4.mjs} +3 -3
- package/dist/client/client.mjs +1611 -815
- package/dist/client/{context-BFeY_Wbm.mjs → context-Bc8T6pCe.mjs} +1 -1
- package/dist/client/{dates-BhwVSxDg.mjs → dates-DUsCEzLb.mjs} +2 -3
- package/dist/client/{eventCalendar-BAtdnR4s.mjs → eventCalendar-CKwgXui5.mjs} +9 -9
- package/dist/client/{eventCombined-RksA3tRC.mjs → eventCombined-CBAOSTGR.mjs} +4 -4
- package/dist/client/{eventDetails-BB9hB4wR.mjs → eventDetails-Dh-_WiBD.mjs} +4 -4
- package/dist/client/{eventListing-BpJBkviM.mjs → eventListing-CA3frIH5.mjs} +4 -4
- package/dist/client/{eventRegistration-B18jFq_o.mjs → eventRegistration-BHtsgdcg.mjs} +21 -22
- package/dist/client/{form-Dodt8Y8t.mjs → form-C2h3YAcg.mjs} +135 -104
- package/dist/client/{headerSection-B0qj9ttg.mjs → headerSection-lwMuMTH9.mjs} +3 -3
- package/dist/client/hooks.mjs +489 -65
- package/dist/client/{locationMap-gn-iMk7a.mjs → locationMap-DJ2bLODV.mjs} +3 -3
- package/dist/client/{newsletterForm-oByLdFkr.mjs → newsletterForm-8Pu5K32g.mjs} +203 -101
- package/dist/client/{pricing-BOU0_Hai.mjs → pricing-HHx3IgBz.mjs} +1 -1
- package/dist/client/{productDetail-D9v1zH2j.mjs → productDetail-C_1odnAf.mjs} +3 -3
- package/dist/client/{productList-D-mItx1n.mjs → productList-CtCv-Nmx.mjs} +3 -3
- package/dist/client/{propsDecoder-C3TP_z4x.mjs → propsDecoder-Dcgsncxb.mjs} +40 -23
- package/dist/client/rendering/client.mjs +490 -457
- package/dist/client/rendering/islands.mjs +17 -17
- package/dist/client/rendering.mjs +1515 -628
- package/dist/client/{routeIslandApiConfig-DzN1W0sq.mjs → routeIslandApiConfig-CWLP7wu3.mjs} +1 -1
- package/dist/client/{scrollToBlock-CWs8EIdo.mjs → scrollToBlock-BNgaEUpo.mjs} +1 -1
- package/dist/client/{shop-Dufw7N7o.mjs → shop-DQXrQ8kJ.mjs} +7 -7
- package/dist/client/{shop-commerce-gklw_hLF.mjs → shop-commerce-B88zmWWo.mjs} +6 -6
- package/dist/client/{shop-commerce-store-Sf1eyTaZ.mjs → shop-commerce-store-DtSfkKuX.mjs} +1 -1
- package/dist/client/{shopShared-B5nyA41S.mjs → shopShared-cuaONpkJ.mjs} +4 -4
- package/dist/client/{useEventFilters-CLL829vy.mjs → useEventFilters-Bukew6Gb.mjs} +6 -6
- package/dist/preview-next/before-render.mjs +368 -103
- package/dist/preview-next/client/runtime.mjs +4 -4
- package/dist/preview-next/editor-base.css +11 -0
- package/dist/preview-next/keepAlive.mjs +328 -103
- package/dist/preview-next/middleware.mjs +329 -103
- package/dist/{previewAuthStore-BxAFlu-j.mjs → previewAuthStore-h5IgbSp4.mjs} +353 -103
- package/dist/{sdk-runtime-D0uZFev7.mjs → sdk-runtime-DTc1uIXn.mjs} +2 -2
- package/dist/{separator-EvdCAn4V.mjs → separator-BpHS1KZK.mjs} +1 -1
- package/dist/server/components.mjs +1376 -331
- package/dist/server/config-validation.mjs +405 -27
- package/dist/server/config.mjs +405 -27
- package/dist/server/data.mjs +405 -27
- package/dist/server/index.mjs +370 -104
- package/dist/server/next.mjs +1430 -463
- package/dist/server/page-converter.mjs +36 -25
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +1374 -331
- package/dist/server/rendering.mjs +1436 -364
- package/dist/server/routing.mjs +476 -43
- package/dist/server/server.mjs +504 -169
- package/dist/server/theme-bridge.mjs +467 -111
- package/dist/styles/index.css +186 -65
- package/package.json +1 -1
|
@@ -11911,6 +11911,270 @@ const curatedSiteStyles = [
|
|
|
11911
11911
|
];
|
|
11912
11912
|
new Map(curatedSiteStyles.map((style) => [style.id, style]));
|
|
11913
11913
|
//#endregion
|
|
11914
|
+
//#region ../theme-core/src/inputs/checkable.ts
|
|
11915
|
+
/**
|
|
11916
|
+
* Checkbox and radio CSS shared by the full theme generator and the SDK
|
|
11917
|
+
* theme bridge, so both render the same customer-facing controls.
|
|
11918
|
+
*
|
|
11919
|
+
* Emits:
|
|
11920
|
+
* - .form-checkbox / .form-radio: the controls themselves. The tick and dot
|
|
11921
|
+
* are drawn with ::before so their colour comes from theme tokens rather
|
|
11922
|
+
* than a baked-in SVG.
|
|
11923
|
+
* - .form-check: a label row holding a control and its text. The control
|
|
11924
|
+
* lines up with the first line of text, so long labels wrap cleanly.
|
|
11925
|
+
* - .form-check--tile: a bordered, fully clickable panel for agreements
|
|
11926
|
+
* (booking consent, consent fields) that tints when ticked.
|
|
11927
|
+
*/
|
|
11928
|
+
const CHECKABLE_SIZE = "1.375rem";
|
|
11929
|
+
/** Never fully round: a round checkbox reads as a radio. */
|
|
11930
|
+
const CHECKBOX_RADIUS = {
|
|
11931
|
+
square: "0",
|
|
11932
|
+
soft: "0.25rem",
|
|
11933
|
+
rounded: "0.375rem",
|
|
11934
|
+
pill: "0.375rem"
|
|
11935
|
+
};
|
|
11936
|
+
/** Tiles hold wrapping text, so pill themes get a generous radius, not a capsule. */
|
|
11937
|
+
const TILE_RADIUS = {
|
|
11938
|
+
square: "0",
|
|
11939
|
+
soft: "0.5rem",
|
|
11940
|
+
rounded: "0.75rem",
|
|
11941
|
+
pill: "1rem"
|
|
11942
|
+
};
|
|
11943
|
+
const ON_ACCENT_TOKENS = {
|
|
11944
|
+
primary: "onPrimary",
|
|
11945
|
+
secondary: "onSecondary",
|
|
11946
|
+
accent: "onAccent"
|
|
11947
|
+
};
|
|
11948
|
+
/**
|
|
11949
|
+
* Colour for the tick/dot drawn on top of the accent fill. Uses the palette's
|
|
11950
|
+
* matching "on" token where there is one, falling back to white.
|
|
11951
|
+
*/
|
|
11952
|
+
/** The accent at full strength: `primary/70` becomes `primary`. */
|
|
11953
|
+
function solidAccentToken(accentToken) {
|
|
11954
|
+
const parsed = parseColorTokenParts(accentToken);
|
|
11955
|
+
return parsed.kind === "token" ? parsed.token : accentToken;
|
|
11956
|
+
}
|
|
11957
|
+
function checkableMarkColor(accentToken) {
|
|
11958
|
+
const parsed = parseColorTokenParts(accentToken);
|
|
11959
|
+
const onToken = parsed.kind === "token" ? ON_ACCENT_TOKENS[parsed.token] : void 0;
|
|
11960
|
+
return onToken ? `rgb(var(--tb-${onToken}, 255 255 255))` : "rgb(255 255 255)";
|
|
11961
|
+
}
|
|
11962
|
+
function checkableSelectors(root) {
|
|
11963
|
+
return {
|
|
11964
|
+
checkbox: `${root} .form-checkbox`,
|
|
11965
|
+
radio: `${root} .form-radio`,
|
|
11966
|
+
check: `${root} .form-check`,
|
|
11967
|
+
tile: `${root} .form-check--tile`
|
|
11968
|
+
};
|
|
11969
|
+
}
|
|
11970
|
+
/** The box and circle themselves, unchecked. */
|
|
11971
|
+
function controlBaseCss(sel, input) {
|
|
11972
|
+
const border = input.borderWidth === "0" ? "1px" : input.borderWidth;
|
|
11973
|
+
return [
|
|
11974
|
+
`${sel.checkbox},
|
|
11975
|
+
${sel.radio} {
|
|
11976
|
+
appearance: none;
|
|
11977
|
+
display: inline-grid;
|
|
11978
|
+
place-content: center;
|
|
11979
|
+
width: ${CHECKABLE_SIZE};
|
|
11980
|
+
height: ${CHECKABLE_SIZE};
|
|
11981
|
+
margin: 0;
|
|
11982
|
+
flex-shrink: 0;
|
|
11983
|
+
border: ${border} solid ${input.borderColor};
|
|
11984
|
+
background-color: ${input.background};
|
|
11985
|
+
color: inherit;
|
|
11986
|
+
cursor: pointer;
|
|
11987
|
+
transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
|
|
11988
|
+
}`,
|
|
11989
|
+
`${sel.checkbox} {
|
|
11990
|
+
border-radius: ${CHECKBOX_RADIUS[input.corners]};
|
|
11991
|
+
}`,
|
|
11992
|
+
`${sel.radio} {
|
|
11993
|
+
border-radius: 9999px;
|
|
11994
|
+
}`
|
|
11995
|
+
];
|
|
11996
|
+
}
|
|
11997
|
+
/** The tick and dot, drawn with ::before so their colour is a theme token. */
|
|
11998
|
+
function controlMarkCss(sel, accentToken) {
|
|
11999
|
+
return [
|
|
12000
|
+
`${sel.checkbox}::before,
|
|
12001
|
+
${sel.radio}::before {
|
|
12002
|
+
content: "";
|
|
12003
|
+
background-color: ${checkableMarkColor(accentToken)};
|
|
12004
|
+
transform: scale(0);
|
|
12005
|
+
transition: transform 0.12s ease;
|
|
12006
|
+
}`,
|
|
12007
|
+
`${sel.checkbox}::before {
|
|
12008
|
+
width: 0.75rem;
|
|
12009
|
+
height: 0.75rem;
|
|
12010
|
+
clip-path: polygon(14% 52%, 0 67%, 38% 100%, 100% 22%, 85% 8%, 37% 70%);
|
|
12011
|
+
}`,
|
|
12012
|
+
`${sel.radio}::before {
|
|
12013
|
+
width: 0.5rem;
|
|
12014
|
+
height: 0.5rem;
|
|
12015
|
+
border-radius: 9999px;
|
|
12016
|
+
}`
|
|
12017
|
+
];
|
|
12018
|
+
}
|
|
12019
|
+
function controlStateCss(sel, input) {
|
|
12020
|
+
const accent = rgbColorValue(solidAccentToken(input.accentToken));
|
|
12021
|
+
return [
|
|
12022
|
+
`${sel.checkbox}:hover,
|
|
12023
|
+
${sel.radio}:hover,
|
|
12024
|
+
${sel.check}:hover > .form-checkbox,
|
|
12025
|
+
${sel.check}:hover > .form-radio {
|
|
12026
|
+
border-color: ${accent};
|
|
12027
|
+
}`,
|
|
12028
|
+
`${sel.checkbox}:checked,
|
|
12029
|
+
${sel.radio}:checked {
|
|
12030
|
+
background-color: ${accent};
|
|
12031
|
+
border-color: ${accent};
|
|
12032
|
+
}`,
|
|
12033
|
+
`${sel.checkbox}:checked::before,
|
|
12034
|
+
${sel.radio}:checked::before {
|
|
12035
|
+
transform: scale(1);
|
|
12036
|
+
}`,
|
|
12037
|
+
`${sel.checkbox}:focus-visible,
|
|
12038
|
+
${sel.radio}:focus-visible {
|
|
12039
|
+
outline: 2px solid ${accent};
|
|
12040
|
+
outline-offset: 2px;
|
|
12041
|
+
}`,
|
|
12042
|
+
`${sel.checkbox}:disabled,
|
|
12043
|
+
${sel.radio}:disabled {
|
|
12044
|
+
opacity: 0.5;
|
|
12045
|
+
cursor: not-allowed;
|
|
12046
|
+
}`
|
|
12047
|
+
];
|
|
12048
|
+
}
|
|
12049
|
+
/** Label row: control lined up with the first line of wrapping text. */
|
|
12050
|
+
function checkRowCss(sel) {
|
|
12051
|
+
return [
|
|
12052
|
+
`${sel.check} {
|
|
12053
|
+
display: flex;
|
|
12054
|
+
align-items: flex-start;
|
|
12055
|
+
gap: 0.75rem;
|
|
12056
|
+
line-height: 1.5;
|
|
12057
|
+
cursor: pointer;
|
|
12058
|
+
}`,
|
|
12059
|
+
`${sel.check} > .form-checkbox,
|
|
12060
|
+
${sel.check} > .form-radio {
|
|
12061
|
+
margin-top: 0.0625rem;
|
|
12062
|
+
margin-top: max(0px, calc((1lh - ${CHECKABLE_SIZE}) / 2));
|
|
12063
|
+
}`,
|
|
12064
|
+
`${sel.check}:has(> :disabled) {
|
|
12065
|
+
cursor: not-allowed;
|
|
12066
|
+
}`
|
|
12067
|
+
];
|
|
12068
|
+
}
|
|
12069
|
+
function agreementTileCss(sel, input) {
|
|
12070
|
+
const accent = rgbColorValue(solidAccentToken(input.accentToken));
|
|
12071
|
+
return [
|
|
12072
|
+
`${sel.tile} {
|
|
12073
|
+
padding: 0.875rem 1rem;
|
|
12074
|
+
border: 1px solid color-mix(in srgb, currentColor 22%, transparent);
|
|
12075
|
+
border-radius: ${TILE_RADIUS[input.corners]};
|
|
12076
|
+
transition: border-color 0.15s ease, background-color 0.15s ease;
|
|
12077
|
+
}`,
|
|
12078
|
+
`${sel.tile}:hover {
|
|
12079
|
+
border-color: color-mix(in srgb, ${accent} 55%, transparent);
|
|
12080
|
+
}`,
|
|
12081
|
+
`${sel.tile}:has(> .form-checkbox:checked) {
|
|
12082
|
+
border-color: ${accent};
|
|
12083
|
+
background-color: color-mix(in srgb, ${accent} 7%, transparent);
|
|
12084
|
+
}`,
|
|
12085
|
+
`${sel.tile}:has(> .form-checkbox[aria-invalid="true"]) {
|
|
12086
|
+
border-color: ${input.errorColor};
|
|
12087
|
+
}`
|
|
12088
|
+
];
|
|
12089
|
+
}
|
|
12090
|
+
function checkableMediaCss(sel) {
|
|
12091
|
+
return [`@media (prefers-reduced-motion: reduce) {
|
|
12092
|
+
${sel.checkbox}, ${sel.radio}, ${sel.checkbox}::before, ${sel.radio}::before, ${sel.tile} {
|
|
12093
|
+
transition: none;
|
|
12094
|
+
}
|
|
12095
|
+
}`, `@media (forced-colors: active) {
|
|
12096
|
+
${sel.checkbox}::before,
|
|
12097
|
+
${sel.radio}::before {
|
|
12098
|
+
background-color: CanvasText;
|
|
12099
|
+
}
|
|
12100
|
+
}`];
|
|
12101
|
+
}
|
|
12102
|
+
/**
|
|
12103
|
+
* Exposes the accent and mark colours so other choice controls (newsletter
|
|
12104
|
+
* topic chips) match the checkboxes without re-deriving the theme tokens.
|
|
12105
|
+
*/
|
|
12106
|
+
function checkableVarsCss(input) {
|
|
12107
|
+
return [`${input.root} {
|
|
12108
|
+
--rb-check-accent: ${rgbColorValue(solidAccentToken(input.accentToken))};
|
|
12109
|
+
--rb-check-mark: ${checkableMarkColor(input.accentToken)};
|
|
12110
|
+
}`];
|
|
12111
|
+
}
|
|
12112
|
+
function generateCheckableCss(input) {
|
|
12113
|
+
const sel = checkableSelectors(input.root);
|
|
12114
|
+
return [
|
|
12115
|
+
...checkableVarsCss(input),
|
|
12116
|
+
...controlBaseCss(sel, input),
|
|
12117
|
+
...controlMarkCss(sel, input.accentToken),
|
|
12118
|
+
...controlStateCss(sel, input),
|
|
12119
|
+
...checkRowCss(sel),
|
|
12120
|
+
...agreementTileCss(sel, input),
|
|
12121
|
+
...checkableMediaCss(sel)
|
|
12122
|
+
].join("\n\n");
|
|
12123
|
+
}
|
|
12124
|
+
//#endregion
|
|
12125
|
+
//#region ../theme-core/src/inputs/inputGroup.ts
|
|
12126
|
+
/**
|
|
12127
|
+
* Input group: a field and an action (usually a themed button) sharing one
|
|
12128
|
+
* input-styled shell, e.g. the newsletter email + Sign up row.
|
|
12129
|
+
*
|
|
12130
|
+
* The shell `.form-input-group` takes the theme's `.form-input` rules (the
|
|
12131
|
+
* generators add it to that selector list, plus focus and error), so it
|
|
12132
|
+
* follows the site's input background, border, corners and shadow. This file
|
|
12133
|
+
* only adds the layout overrides and the borderless inner field.
|
|
12134
|
+
*/
|
|
12135
|
+
const INPUT_GROUP_SELECTOR = ".form-input-group";
|
|
12136
|
+
/** Shell focus ring follows the field only, not the button beside it. */
|
|
12137
|
+
const INPUT_GROUP_FOCUS_SELECTOR = ".form-input-group:has(> .form-input-group-field:focus-visible)";
|
|
12138
|
+
const INPUT_GROUP_ERROR_SELECTOR = ".form-input-group:has(> .form-input-group-field[aria-invalid=\"true\"])";
|
|
12139
|
+
const GROUP_INSET = "0.25rem";
|
|
12140
|
+
/**
|
|
12141
|
+
* @param root - scoped root selector
|
|
12142
|
+
* @param padding - the theme's input padding shorthand (`block inline`), so the
|
|
12143
|
+
* inner field's text sits where a plain input's text would.
|
|
12144
|
+
*/
|
|
12145
|
+
function generateInputGroupCss(root, padding) {
|
|
12146
|
+
const [block = padding, inline = block] = padding.trim().split(/\s+/);
|
|
12147
|
+
return `${root} .form-input-group {
|
|
12148
|
+
display: flex;
|
|
12149
|
+
align-items: stretch;
|
|
12150
|
+
gap: ${GROUP_INSET};
|
|
12151
|
+
padding: ${GROUP_INSET};
|
|
12152
|
+
}
|
|
12153
|
+
|
|
12154
|
+
${root} .form-input-group-field {
|
|
12155
|
+
flex: 1 1 auto;
|
|
12156
|
+
min-width: 0;
|
|
12157
|
+
margin: 0;
|
|
12158
|
+
border: 0;
|
|
12159
|
+
border-radius: 0;
|
|
12160
|
+
background: transparent;
|
|
12161
|
+
box-shadow: none;
|
|
12162
|
+
outline: none;
|
|
12163
|
+
color: inherit;
|
|
12164
|
+
font: inherit;
|
|
12165
|
+
padding: calc(${block} - ${GROUP_INSET}) calc(${inline} - ${GROUP_INSET});
|
|
12166
|
+
}
|
|
12167
|
+
|
|
12168
|
+
${root} .form-input-group-field::placeholder {
|
|
12169
|
+
color: inherit;
|
|
12170
|
+
opacity: 0.6;
|
|
12171
|
+
}
|
|
12172
|
+
|
|
12173
|
+
${root} .form-input-group > :not(.form-input-group-field) {
|
|
12174
|
+
flex-shrink: 0;
|
|
12175
|
+
}`;
|
|
12176
|
+
}
|
|
12177
|
+
//#endregion
|
|
11914
12178
|
//#region ../theme-core/src/status/generateStatusCss.ts
|
|
11915
12179
|
/**
|
|
11916
12180
|
* Corner radius map - derives alert border-radius from theme.corners
|
|
@@ -13213,6 +13477,9 @@ const containerResponsiveThemeCss = `/*
|
|
|
13213
13477
|
.rb-h-4 {
|
|
13214
13478
|
height: 1rem;
|
|
13215
13479
|
}
|
|
13480
|
+
.rb-h-5 {
|
|
13481
|
+
height: 1.25rem;
|
|
13482
|
+
}
|
|
13216
13483
|
.rb-h-8 {
|
|
13217
13484
|
height: 2rem;
|
|
13218
13485
|
}
|
|
@@ -17178,6 +17445,10 @@ const containerResponsiveThemeCss = `/*
|
|
|
17178
17445
|
margin-bottom: 0.25rem;
|
|
17179
17446
|
}
|
|
17180
17447
|
|
|
17448
|
+
:where(.theme-scope) :where([data-block='event-registration']) .er-consent-check {
|
|
17449
|
+
margin-top: 0.75rem;
|
|
17450
|
+
}
|
|
17451
|
+
|
|
17181
17452
|
:where(.theme-scope) :where([data-block='event-registration']) .er-required {
|
|
17182
17453
|
color: var(--er-required);
|
|
17183
17454
|
}
|
|
@@ -21897,13 +22168,6 @@ const containerResponsiveThemeCss = `/*
|
|
|
21897
22168
|
margin: 0;
|
|
21898
22169
|
}
|
|
21899
22170
|
|
|
21900
|
-
/* Inline field (checkbox, radio with label) */
|
|
21901
|
-
:where(.theme-scope) :where([data-block="form"]) .fb-inline {
|
|
21902
|
-
display: flex;
|
|
21903
|
-
align-items: center;
|
|
21904
|
-
gap: 0.5rem;
|
|
21905
|
-
}
|
|
21906
|
-
|
|
21907
22171
|
/* Success state */
|
|
21908
22172
|
:where(.theme-scope) :where([data-block="form"]) .fb-success {
|
|
21909
22173
|
background-color: var(--fb-success-bg);
|
|
@@ -24020,9 +24284,11 @@ const containerResponsiveThemeCss = `/*
|
|
|
24020
24284
|
*/
|
|
24021
24285
|
|
|
24022
24286
|
/* Newsletter copy styling */
|
|
24287
|
+
/* Size only: weight, family and colour come from the theme's heading styles */
|
|
24023
24288
|
:where(.theme-scope) :where([data-block="newsletter-signup"]) .newsletter-copy-title {
|
|
24024
|
-
font-size: 1.5rem;
|
|
24025
|
-
|
|
24289
|
+
font-size: clamp(1.75rem, 1.35rem + 1.6vw, 2.5rem);
|
|
24290
|
+
line-height: 1.15;
|
|
24291
|
+
text-wrap: balance;
|
|
24026
24292
|
}
|
|
24027
24293
|
|
|
24028
24294
|
:where(.theme-scope) :where([data-block="newsletter-signup"]) .newsletter-copy-subtitle {
|
|
@@ -24046,37 +24312,150 @@ const containerResponsiveThemeCss = `/*
|
|
|
24046
24312
|
gap: var(--rb-gap-sm, 0.75rem);
|
|
24047
24313
|
}
|
|
24048
24314
|
|
|
24049
|
-
/*
|
|
24315
|
+
/* Extra preset fields (name, company...). Labels are visually hidden, so
|
|
24316
|
+
these sit in a row above the email entry. */
|
|
24317
|
+
:where(.theme-scope) .newsletter-extra-fields {
|
|
24318
|
+
display: grid;
|
|
24319
|
+
grid-template-columns: repeat(auto-fit, minmax(min(12rem, 100%), 1fr));
|
|
24320
|
+
gap: 0.5rem;
|
|
24321
|
+
}
|
|
24322
|
+
|
|
24050
24323
|
:where(.theme-scope) .newsletter-field {
|
|
24051
24324
|
display: flex;
|
|
24052
24325
|
flex-direction: column;
|
|
24053
24326
|
gap: 0.25rem;
|
|
24327
|
+
text-align: left;
|
|
24054
24328
|
}
|
|
24055
24329
|
|
|
24056
|
-
/*
|
|
24057
|
-
|
|
24058
|
-
|
|
24059
|
-
:where(.theme-scope) .newsletter-
|
|
24330
|
+
/* Email entry: the email field and the themed submit button share one shell.
|
|
24331
|
+
The shell's look (background, border, corners, focus ring) comes from the
|
|
24332
|
+
theme's input system via .form-input-group; this only handles layout. */
|
|
24333
|
+
:where(.theme-scope) .newsletter-entry {
|
|
24334
|
+
container-type: inline-size;
|
|
24060
24335
|
display: flex;
|
|
24061
24336
|
flex-direction: column;
|
|
24062
|
-
gap: 0.
|
|
24337
|
+
gap: 0.375rem;
|
|
24338
|
+
text-align: left;
|
|
24339
|
+
}
|
|
24340
|
+
|
|
24341
|
+
:where(.theme-scope) .newsletter-entry-group > button {
|
|
24342
|
+
white-space: nowrap;
|
|
24343
|
+
}
|
|
24344
|
+
|
|
24345
|
+
/* Too narrow for field and button side by side (phones, footer columns):
|
|
24346
|
+
stack them inside the shell and keep pill themes from turning the taller
|
|
24347
|
+
shell into a capsule. */
|
|
24348
|
+
@container (max-width: 22rem) {
|
|
24349
|
+
:where(.theme-scope) .newsletter-entry .newsletter-entry-group {
|
|
24350
|
+
flex-direction: column;
|
|
24351
|
+
border-radius: min(var(--rb-input-radius, 0.5rem), 1rem);
|
|
24352
|
+
}
|
|
24353
|
+
|
|
24354
|
+
:where(.theme-scope) .newsletter-entry .newsletter-entry-group > button {
|
|
24355
|
+
width: 100%;
|
|
24356
|
+
justify-content: center;
|
|
24357
|
+
}
|
|
24358
|
+
}
|
|
24359
|
+
|
|
24360
|
+
/* Topic choices (visitor picks what to hear about) as toggle chips. Each chip
|
|
24361
|
+
is a real checkbox underneath; the chip is its visible face. */
|
|
24362
|
+
:where(.theme-scope) .newsletter-topics {
|
|
24063
24363
|
border: none;
|
|
24064
24364
|
padding: 0;
|
|
24065
24365
|
margin: 0;
|
|
24066
24366
|
min-width: 0;
|
|
24067
24367
|
}
|
|
24068
24368
|
|
|
24069
|
-
:where(.theme-scope) .newsletter-topics
|
|
24369
|
+
:where(.theme-scope) .newsletter-topics-legend {
|
|
24070
24370
|
padding: 0;
|
|
24071
|
-
margin-bottom: 0.
|
|
24371
|
+
margin-bottom: 0.625rem;
|
|
24372
|
+
font-size: 0.9375rem;
|
|
24373
|
+
color: var(--rb-surface-text-color, rgb(var(--tb-text, 17 24 39)));
|
|
24072
24374
|
}
|
|
24073
24375
|
|
|
24074
|
-
:where(.theme-scope) .newsletter-topic-
|
|
24376
|
+
:where(.theme-scope) .newsletter-topic-chips {
|
|
24075
24377
|
display: flex;
|
|
24076
|
-
|
|
24378
|
+
flex-wrap: wrap;
|
|
24077
24379
|
gap: 0.5rem;
|
|
24078
24380
|
}
|
|
24079
24381
|
|
|
24382
|
+
:where(.theme-scope) .newsletter-stacked .newsletter-topics-legend {
|
|
24383
|
+
width: 100%;
|
|
24384
|
+
}
|
|
24385
|
+
|
|
24386
|
+
:where(.theme-scope) .newsletter-stacked .newsletter-topic-chips {
|
|
24387
|
+
justify-content: center;
|
|
24388
|
+
}
|
|
24389
|
+
|
|
24390
|
+
:where(.theme-scope) .newsletter-topic-chip {
|
|
24391
|
+
position: relative;
|
|
24392
|
+
display: inline-flex;
|
|
24393
|
+
}
|
|
24394
|
+
|
|
24395
|
+
:where(.theme-scope) .newsletter-topic-chip > input {
|
|
24396
|
+
position: absolute;
|
|
24397
|
+
inset: 0;
|
|
24398
|
+
width: 100%;
|
|
24399
|
+
height: 100%;
|
|
24400
|
+
margin: 0;
|
|
24401
|
+
opacity: 0;
|
|
24402
|
+
cursor: pointer;
|
|
24403
|
+
}
|
|
24404
|
+
|
|
24405
|
+
:where(.theme-scope) .newsletter-topic-chip > span {
|
|
24406
|
+
display: inline-flex;
|
|
24407
|
+
align-items: center;
|
|
24408
|
+
gap: 0.375rem;
|
|
24409
|
+
padding: 0.4375rem 0.9375rem;
|
|
24410
|
+
border: 1px solid color-mix(in srgb, currentColor 35%, transparent);
|
|
24411
|
+
border-radius: var(--rb-button-radius, var(--rb-input-radius, 9999px));
|
|
24412
|
+
font-size: 0.9375rem;
|
|
24413
|
+
line-height: 1.3;
|
|
24414
|
+
color: var(--rb-surface-text-color, rgb(var(--tb-text, 17 24 39)));
|
|
24415
|
+
transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
|
|
24416
|
+
}
|
|
24417
|
+
|
|
24418
|
+
/* Tick that grows in when the chip is on */
|
|
24419
|
+
:where(.theme-scope) .newsletter-topic-chip > span::before {
|
|
24420
|
+
content: "";
|
|
24421
|
+
width: 0;
|
|
24422
|
+
height: 0.7em;
|
|
24423
|
+
background-color: currentColor;
|
|
24424
|
+
clip-path: polygon(14% 52%, 0 67%, 38% 100%, 100% 22%, 85% 8%, 37% 70%);
|
|
24425
|
+
transition: width 0.15s ease;
|
|
24426
|
+
}
|
|
24427
|
+
|
|
24428
|
+
:where(.theme-scope) .newsletter-topic-chip:hover > span {
|
|
24429
|
+
border-color: currentColor;
|
|
24430
|
+
}
|
|
24431
|
+
|
|
24432
|
+
/* Same accent and mark colours as the theme's checkboxes */
|
|
24433
|
+
:where(.theme-scope) .newsletter-topic-chip > input:checked + span {
|
|
24434
|
+
background-color: var(--rb-check-accent, rgb(var(--tb-primary)));
|
|
24435
|
+
border-color: var(--rb-check-accent, rgb(var(--tb-primary)));
|
|
24436
|
+
color: var(--rb-check-mark, rgb(var(--tb-onPrimary, 255 255 255)));
|
|
24437
|
+
}
|
|
24438
|
+
|
|
24439
|
+
:where(.theme-scope) .newsletter-topic-chip > input:checked + span::before {
|
|
24440
|
+
width: 0.7em;
|
|
24441
|
+
}
|
|
24442
|
+
|
|
24443
|
+
:where(.theme-scope) .newsletter-topic-chip > input:focus-visible + span {
|
|
24444
|
+
outline: 2px solid var(--rb-check-accent, rgb(var(--tb-primary)));
|
|
24445
|
+
outline-offset: 2px;
|
|
24446
|
+
}
|
|
24447
|
+
|
|
24448
|
+
:where(.theme-scope) .newsletter-topic-chip > input:disabled + span {
|
|
24449
|
+
opacity: 0.6;
|
|
24450
|
+
}
|
|
24451
|
+
|
|
24452
|
+
@media (prefers-reduced-motion: reduce) {
|
|
24453
|
+
:where(.theme-scope) .newsletter-topic-chip > span,
|
|
24454
|
+
:where(.theme-scope) .newsletter-topic-chip > span::before {
|
|
24455
|
+
transition: none;
|
|
24456
|
+
}
|
|
24457
|
+
}
|
|
24458
|
+
|
|
24080
24459
|
/* Error panel and field notes. The form block scopes these to its own
|
|
24081
24460
|
data-block, so the newsletter form (which also renders in the footer)
|
|
24082
24461
|
needs its own copy of the treatment. */
|
|
@@ -24094,13 +24473,7 @@ const containerResponsiveThemeCss = `/*
|
|
|
24094
24473
|
color: var(--fb-error-text);
|
|
24095
24474
|
}
|
|
24096
24475
|
|
|
24097
|
-
/*
|
|
24098
|
-
:where(.theme-scope) .newsletter-required {
|
|
24099
|
-
color: rgb(var(--tb-primary));
|
|
24100
|
-
margin-left: 0.125rem;
|
|
24101
|
-
}
|
|
24102
|
-
|
|
24103
|
-
/* Submit button container */
|
|
24476
|
+
/* Submit button container (only when a preset has no email field) */
|
|
24104
24477
|
:where(.theme-scope) .newsletter-submit {
|
|
24105
24478
|
margin-top: 0.5rem;
|
|
24106
24479
|
}
|
|
@@ -24112,52 +24485,29 @@ const containerResponsiveThemeCss = `/*
|
|
|
24112
24485
|
justify-content: center;
|
|
24113
24486
|
}
|
|
24114
24487
|
|
|
24115
|
-
/* Privacy note */
|
|
24488
|
+
/* Privacy note: quieter than the intro so the entry row leads */
|
|
24116
24489
|
:where(.theme-scope) .newsletter-privacy-note {
|
|
24117
24490
|
margin-top: 0.75rem;
|
|
24118
|
-
font-size:
|
|
24119
|
-
line-height: 1.
|
|
24120
|
-
color: var(--rb-surface-text-color, rgb(var(--tb-text, 17 24 39)));
|
|
24491
|
+
font-size: 0.8125rem;
|
|
24492
|
+
line-height: 1.5;
|
|
24493
|
+
color: var(--rb-surface-supporting-color, var(--rb-surface-text-color, rgb(var(--tb-text, 17 24 39))));
|
|
24494
|
+
opacity: 0.85;
|
|
24121
24495
|
text-align: center;
|
|
24122
24496
|
}
|
|
24123
24497
|
|
|
24124
24498
|
/* =============================================================================
|
|
24125
|
-
* Inline Variant -
|
|
24499
|
+
* Inline Variant - left-aligned, wider entry row
|
|
24126
24500
|
* =============================================================================
|
|
24127
24501
|
*/
|
|
24128
24502
|
|
|
24129
|
-
:where(.theme-scope) .newsletter-inline .newsletter-form
|
|
24130
|
-
|
|
24131
|
-
|
|
24132
|
-
|
|
24133
|
-
gap: var(--rb-gap-sm, 0.75rem);
|
|
24134
|
-
}
|
|
24135
|
-
|
|
24136
|
-
:where(.theme-scope) .newsletter-inline .newsletter-field {
|
|
24137
|
-
flex: 1 1 auto;
|
|
24138
|
-
min-width: 10rem;
|
|
24139
|
-
}
|
|
24140
|
-
|
|
24141
|
-
:where(.theme-scope) .newsletter-inline .newsletter-submit {
|
|
24142
|
-
margin-top: 0;
|
|
24143
|
-
flex-shrink: 0;
|
|
24144
|
-
}
|
|
24145
|
-
|
|
24146
|
-
:where(.theme-scope) .newsletter-inline .newsletter-topics {
|
|
24147
|
-
flex-basis: 100%;
|
|
24503
|
+
:where(.theme-scope) .newsletter-inline .newsletter-form {
|
|
24504
|
+
max-width: 40rem;
|
|
24505
|
+
margin-left: 0;
|
|
24506
|
+
margin-right: 0;
|
|
24148
24507
|
}
|
|
24149
24508
|
|
|
24150
|
-
|
|
24151
|
-
|
|
24152
|
-
@scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
|
|
24153
|
-
:where(.theme-scope) .newsletter-inline .newsletter-form-fields {
|
|
24154
|
-
flex-direction: column;
|
|
24155
|
-
}
|
|
24156
|
-
|
|
24157
|
-
:where(.theme-scope) .newsletter-inline .newsletter-field {
|
|
24158
|
-
min-width: 100%;
|
|
24159
|
-
}
|
|
24160
|
-
}
|
|
24509
|
+
:where(.theme-scope) .newsletter-inline .newsletter-privacy-note {
|
|
24510
|
+
text-align: left;
|
|
24161
24511
|
}
|
|
24162
24512
|
|
|
24163
24513
|
/* =============================================================================
|
|
@@ -24295,12 +24645,6 @@ const containerResponsiveThemeCss = `/*
|
|
|
24295
24645
|
margin: 0;
|
|
24296
24646
|
}
|
|
24297
24647
|
|
|
24298
|
-
:where(.theme-scope) :where([data-block="contact-newsletter"]) .fb-inline {
|
|
24299
|
-
display: flex;
|
|
24300
|
-
align-items: center;
|
|
24301
|
-
gap: 0.5rem;
|
|
24302
|
-
}
|
|
24303
|
-
|
|
24304
24648
|
:where(.theme-scope) :where([data-block="contact-newsletter"]) .fb-success,
|
|
24305
24649
|
:where(.theme-scope) :where([data-block="contact-newsletter"]) .fb-error,
|
|
24306
24650
|
:where(.theme-scope) :where([data-block="contact-newsletter"]) .fb-empty {
|
|
@@ -26197,6 +26541,44 @@ const containerResponsiveThemeCss = `/*
|
|
|
26197
26541
|
flex: 0 0 auto;
|
|
26198
26542
|
}
|
|
26199
26543
|
}
|
|
26544
|
+
}
|
|
26545
|
+
|
|
26546
|
+
/* =============================================================================
|
|
26547
|
+
* Site footer: social links
|
|
26548
|
+
*
|
|
26549
|
+
* Icon links get a 40px tap target with a hairline ring drawn from the link's
|
|
26550
|
+
* own colour, so it follows the footer's text colour on any surface. Links
|
|
26551
|
+
* without an icon (unknown platforms) stay plain text.
|
|
26552
|
+
* =============================================================================
|
|
26553
|
+
*/
|
|
26554
|
+
|
|
26555
|
+
:where(.theme-scope) .rb-footer-socials {
|
|
26556
|
+
display: flex;
|
|
26557
|
+
flex-wrap: wrap;
|
|
26558
|
+
align-items: center;
|
|
26559
|
+
gap: 0.75rem 1.25rem;
|
|
26560
|
+
}
|
|
26561
|
+
|
|
26562
|
+
:where(.theme-scope) .rb-footer-social-link:has(> .rb-footer-social-icon) {
|
|
26563
|
+
display: inline-grid;
|
|
26564
|
+
place-items: center;
|
|
26565
|
+
width: 2.5rem;
|
|
26566
|
+
height: 2.5rem;
|
|
26567
|
+
border: 1px solid color-mix(in srgb, currentColor 22%, transparent);
|
|
26568
|
+
border-radius: 9999px;
|
|
26569
|
+
}
|
|
26570
|
+
|
|
26571
|
+
:where(.theme-scope) .rb-footer-socials:has(.rb-footer-social-icon) {
|
|
26572
|
+
gap: 0.5rem;
|
|
26573
|
+
}
|
|
26574
|
+
|
|
26575
|
+
:where(.theme-scope) .rb-footer-social-link:has(> .rb-footer-social-icon):hover {
|
|
26576
|
+
border-color: currentColor;
|
|
26577
|
+
}
|
|
26578
|
+
|
|
26579
|
+
:where(.theme-scope) .rb-footer-social-icon {
|
|
26580
|
+
width: 1.5rem;
|
|
26581
|
+
height: 1.5rem;
|
|
26200
26582
|
}`;
|
|
26201
26583
|
//#endregion
|
|
26202
26584
|
//#region ../theme-core/src/ThemeScopeCore.tsx
|
|
@@ -26446,6 +26828,7 @@ const BORDER_WIDTH_MAP = {
|
|
|
26446
26828
|
medium: "2px",
|
|
26447
26829
|
thick: "4px"
|
|
26448
26830
|
};
|
|
26831
|
+
const INPUT_PADDING = "0.5rem 0.75rem";
|
|
26449
26832
|
const SHADOW_VALUES = {
|
|
26450
26833
|
none: "none",
|
|
26451
26834
|
low: "0 1px 2px rgba(0,0,0,0.04)",
|
|
@@ -26479,16 +26862,18 @@ function generateInputCoreCss(scopeId, settings) {
|
|
|
26479
26862
|
color: rgb(var(--tb-${settings.textToken}));
|
|
26480
26863
|
border: ${borderWidth} solid rgb(var(--tb-${settings.borderToken}));
|
|
26481
26864
|
border-radius: ${borderRadius};
|
|
26482
|
-
padding:
|
|
26865
|
+
padding: ${INPUT_PADDING};
|
|
26483
26866
|
font-size: 1rem;
|
|
26484
26867
|
width: 100%;
|
|
26485
26868
|
outline: none;
|
|
26486
26869
|
transition: border-color 0.2s ease, box-shadow 0.2s ease;
|
|
26487
26870
|
${settings.shadow !== "none" ? `box-shadow: ${SHADOW_VALUES[settings.shadow]};` : ""}
|
|
26488
26871
|
`.trim();
|
|
26489
|
-
cssBlocks.push(`${root} .form-input
|
|
26872
|
+
cssBlocks.push(`${root} .form-input,
|
|
26873
|
+
${root} ${INPUT_GROUP_SELECTOR} {
|
|
26490
26874
|
${sharedInputRules}
|
|
26491
26875
|
}`);
|
|
26876
|
+
cssBlocks.push(generateInputGroupCss(root, INPUT_PADDING));
|
|
26492
26877
|
cssBlocks.push(`${root} .form-textarea {
|
|
26493
26878
|
${sharedInputRules}
|
|
26494
26879
|
resize: vertical;
|
|
@@ -26505,14 +26890,16 @@ function generateInputCoreCss(scopeId, settings) {
|
|
|
26505
26890
|
}`);
|
|
26506
26891
|
cssBlocks.push(`${root} .form-input:focus-visible,
|
|
26507
26892
|
${root} .form-textarea:focus-visible,
|
|
26508
|
-
${root} .form-select:focus-visible
|
|
26893
|
+
${root} .form-select:focus-visible,
|
|
26894
|
+
${root} ${INPUT_GROUP_FOCUS_SELECTOR} {
|
|
26509
26895
|
outline: none;
|
|
26510
26896
|
box-shadow: 0 0 0 ${settings.focusRingWidth}px rgb(var(--tb-${settings.focusRingToken}));
|
|
26511
26897
|
border-color: rgb(var(--tb-${settings.focusRingToken}));
|
|
26512
26898
|
}`);
|
|
26513
26899
|
cssBlocks.push(`${root} .form-input[aria-invalid="true"],
|
|
26514
26900
|
${root} .form-textarea[aria-invalid="true"],
|
|
26515
|
-
${root} .form-select[aria-invalid="true"]
|
|
26901
|
+
${root} .form-select[aria-invalid="true"],
|
|
26902
|
+
${root} ${INPUT_GROUP_ERROR_SELECTOR} {
|
|
26516
26903
|
border-color: rgb(var(--tb-${settings.errorBorderToken}));
|
|
26517
26904
|
color: rgb(var(--tb-${settings.errorTextToken}));
|
|
26518
26905
|
}`);
|
|
@@ -26524,46 +26911,15 @@ ${root} .form-select:disabled {
|
|
|
26524
26911
|
opacity: 0.6;
|
|
26525
26912
|
cursor: not-allowed;
|
|
26526
26913
|
}`);
|
|
26527
|
-
cssBlocks.push(
|
|
26528
|
-
|
|
26529
|
-
|
|
26530
|
-
|
|
26531
|
-
|
|
26532
|
-
|
|
26533
|
-
|
|
26534
|
-
|
|
26535
|
-
|
|
26536
|
-
transition: background-color 0.2s ease, border-color 0.2s ease;
|
|
26537
|
-
}`);
|
|
26538
|
-
cssBlocks.push(`${root} .form-radio {
|
|
26539
|
-
appearance: none;
|
|
26540
|
-
width: 1.125rem;
|
|
26541
|
-
height: 1.125rem;
|
|
26542
|
-
flex-shrink: 0;
|
|
26543
|
-
border: ${borderWidth} solid rgb(var(--tb-${settings.borderToken}));
|
|
26544
|
-
border-radius: 9999px;
|
|
26545
|
-
background-color: rgb(var(--tb-${settings.backgroundToken}));
|
|
26546
|
-
cursor: pointer;
|
|
26547
|
-
transition: background-color 0.2s ease, border-color 0.2s ease;
|
|
26548
|
-
}`);
|
|
26549
|
-
cssBlocks.push(`${root} .form-checkbox:checked {
|
|
26550
|
-
background-color: rgb(var(--tb-${settings.focusRingToken}));
|
|
26551
|
-
border-color: rgb(var(--tb-${settings.focusRingToken}));
|
|
26552
|
-
background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e");
|
|
26553
|
-
background-size: 100% 100%;
|
|
26554
|
-
background-position: center;
|
|
26555
|
-
background-repeat: no-repeat;
|
|
26556
|
-
}`);
|
|
26557
|
-
cssBlocks.push(`${root} .form-radio:checked {
|
|
26558
|
-
background-color: rgb(var(--tb-${settings.focusRingToken}));
|
|
26559
|
-
border-color: rgb(var(--tb-${settings.focusRingToken}));
|
|
26560
|
-
background-image: radial-gradient(circle, white 40%, transparent 40%);
|
|
26561
|
-
}`);
|
|
26562
|
-
cssBlocks.push(`${root} .form-checkbox:focus-visible,
|
|
26563
|
-
${root} .form-radio:focus-visible {
|
|
26564
|
-
outline: none;
|
|
26565
|
-
box-shadow: 0 0 0 ${settings.focusRingWidth}px rgb(var(--tb-${settings.focusRingToken}));
|
|
26566
|
-
}`);
|
|
26914
|
+
cssBlocks.push(generateCheckableCss({
|
|
26915
|
+
root,
|
|
26916
|
+
borderWidth,
|
|
26917
|
+
borderColor: `rgb(var(--tb-${settings.borderToken}))`,
|
|
26918
|
+
background: `rgb(var(--tb-${settings.backgroundToken}))`,
|
|
26919
|
+
corners: settings.corners,
|
|
26920
|
+
accentToken: settings.focusRingToken,
|
|
26921
|
+
errorColor: `rgb(var(--tb-${settings.errorBorderToken}))`
|
|
26922
|
+
}));
|
|
26567
26923
|
return cssBlocks.join("\n\n");
|
|
26568
26924
|
}
|
|
26569
26925
|
/**
|