@riverbankcms/sdk 0.125.0 → 0.127.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 +3 -1
- package/dist/{PreviewEditorSidebar-BezDOtQ7.mjs → PreviewEditorSidebar-BXtfF7tp.mjs} +122 -301
- package/dist/{PreviewEditorUI-CgSqmfo2.mjs → PreviewEditorUI-Dou73Q0K.mjs} +3 -3
- package/dist/{PreviewQueryProvider-BH-3-jSj.mjs → PreviewQueryProvider-DgFDIwvK.mjs} +1 -1
- package/dist/{SdkPreviewModeRuntime-Co3AHfj0.mjs → SdkPreviewModeRuntime-B0HPXr-l.mjs} +141 -63
- package/dist/{SiteChromeCustomizeContext-BHF-KANn.mjs → SiteChromeCustomizeContext-DZiDBAYu.mjs} +5330 -5841
- package/dist/_dts/ai/src/contracts/proposals.d.ts +1552 -202
- package/dist/_dts/api/src/common/envelope.d.ts +1 -1
- package/dist/_dts/api/src/contentRuntime.d.ts +1 -7
- package/dist/_dts/api/src/endpoints.d.ts +0 -7
- package/dist/_dts/api/src/sdk-event-upsert.d.ts +42 -0
- package/dist/_dts/api/src/sdkContracts.d.ts +11 -9
- package/dist/_dts/api/src/siteOperations.d.ts +18 -1
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +1 -14
- package/dist/_dts/block-form/src/backend/store-backend.d.ts +2 -1
- package/dist/_dts/block-form/src/blockDraftSaveability.d.ts +1 -0
- package/dist/_dts/blocks/src/index.d.ts +3 -2
- package/dist/_dts/blocks/src/lib/media.d.ts +267 -0
- package/dist/_dts/blocks/src/system/constants/buttonRoles.d.ts +0 -13
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationStripeReturn.d.ts +15 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +4 -4
- package/dist/_dts/blocks/src/system/runtime/nodes/mergeResolveImageUrlContexts.d.ts +7 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +2 -2
- package/dist/_dts/content-editor/src/ui/blockValidationManifestRegistry.d.ts +17 -0
- package/dist/_dts/content-editor/src/ui/blockValidationView.d.ts +1 -1
- package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +4 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +322 -171
- package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +4 -0
- package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockValidationManifests.d.ts +26 -0
- package/dist/_dts/editor-blocks/src/widgets/rich-text/imageInsert.d.ts +3 -3
- package/dist/_dts/media-editor/src/MediaEditor.d.ts +2 -2
- package/dist/_dts/media-editor/src/context.d.ts +1 -2
- package/dist/_dts/media-editor/src/index.d.ts +3 -1
- package/dist/_dts/media-editor/src/mediaSelection.d.ts +32 -0
- package/dist/_dts/media-editor/src/types.d.ts +3 -1
- package/dist/_dts/media-editor/src/useMediaSelection.d.ts +26 -0
- package/dist/_dts/preview-next/src/client/index.d.ts +2 -0
- package/dist/_dts/preview-next/src/client/preview/HeaderMenuControls.d.ts +12 -0
- package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +1 -2
- package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +13 -3
- package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +7 -2
- package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +6 -60
- package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +3 -13
- package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +8 -100
- package/dist/_dts/preview-next/src/client/preview/headerInteractionPaletteSurfaceState.d.ts +8 -0
- package/dist/_dts/preview-next/src/client/preview/previewThemeRoles.d.ts +15 -0
- package/dist/_dts/preview-next/src/client/preview/siteChromeCustomizeTypes.d.ts +54 -0
- package/dist/_dts/preview-next/src/client/preview/siteChromeLookRows.d.ts +13 -3
- package/dist/_dts/preview-next/src/client/preview/siteChromeNavQuickControlHistory.d.ts +3 -0
- package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlHistoryState.d.ts +6 -3
- package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +1 -4
- package/dist/_dts/preview-next/src/client/preview/styleConfiguratorApplyPayload.d.ts +1 -15
- package/dist/_dts/preview-next/src/client/preview/styleConfiguratorSnapshot.d.ts +11 -21
- package/dist/_dts/sdk/src/cli/commands/event.d.ts +2 -2
- package/dist/_dts/sdk/src/cli/commands/eventOccurrenceSchedule.d.ts +12 -0
- package/dist/_dts/sdk/src/cli/commands/push/pushAllExtras.d.ts +6 -0
- package/dist/_dts/sdk/src/cli/commands/style.d.ts +1 -1
- package/dist/_dts/sdk/src/cli/content/legacyEventScheduleShapeError.d.ts +5 -0
- package/dist/_dts/sdk/src/cli/content/localEventSchedule.d.ts +17 -0
- package/dist/_dts/sdk/src/cli/content/reader.d.ts +5 -10
- package/dist/_dts/sdk/src/cli/migrations/events.d.ts +1 -1
- package/dist/_dts/sdk/src/cli/site-commands/eventScheduleCompiler.d.ts +24 -0
- package/dist/_dts/sdk/src/client/management/http.d.ts +1 -1
- package/dist/_dts/sdk/src/client/management/types.d.ts +3 -28
- package/dist/_dts/sdk/src/config/index.d.ts +1 -1
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -20
- package/dist/_dts/sdk/src/rendering/index.d.ts +1 -1
- package/dist/_dts/sdk/src/rendering/islands/types.d.ts +2 -2
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/site-commands/src/commandContract.d.ts +33 -5
- package/dist/_dts/site-commands/src/commandDomain.d.ts +2 -2
- package/dist/_dts/site-commands/src/commands.d.ts +38 -9
- package/dist/_dts/site-commands/src/siteStyleCommandSchema.d.ts +28 -1
- package/dist/_dts/site-commands/src/siteStyleSelectionSchemaBuilder.d.ts +4 -4
- package/dist/_dts/theme-core/src/buttons/effects/presets/background.d.ts +1 -1
- package/dist/_dts/theme-core/src/buttons/styles/registry.d.ts +0 -18
- package/dist/_dts/theme-core/src/buttons/types.d.ts +1 -3
- package/dist/_dts/theme-core/src/header/containerSchema.d.ts +20 -0
- package/dist/_dts/theme-core/src/header/generateHeaderCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/header/interactionPalette.d.ts +14 -0
- package/dist/_dts/theme-core/src/header/legacyNavLinkStyle.d.ts +3 -0
- package/dist/_dts/theme-core/src/header/paintTargets.d.ts +25 -0
- package/dist/_dts/theme-core/src/header/scrollTreatment.d.ts +11 -0
- package/dist/_dts/theme-core/src/header/surfaceRules.d.ts +9 -0
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +15 -0
- package/dist/_dts/theme-core/src/palette/colors.d.ts +1 -1
- package/dist/_dts/theme-core/src/palette/concretePalette.d.ts +20 -0
- package/dist/_dts/theme-core/src/palette/curated/index.d.ts +2 -17
- package/dist/_dts/theme-core/src/palette/index.d.ts +1 -6
- package/dist/_dts/theme-core/src/palette/schema.d.ts +39 -0
- package/dist/_dts/theme-core/src/schema.d.ts +105 -45
- package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +3 -51
- package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +4 -11
- package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +3 -51
- package/dist/_dts/theme-core/src/site-styles/headerInteractionPalette.d.ts +32 -0
- package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +19 -106
- package/dist/_dts/theme-core/src/site-styles/headerOpeningForeground.d.ts +22 -0
- package/dist/_dts/theme-core/src/site-styles/headerOpeningSection.d.ts +2 -0
- package/dist/_dts/theme-core/src/site-styles/headerStyleParts.d.ts +4 -0
- package/dist/_dts/theme-core/src/site-styles/index.d.ts +3 -0
- package/dist/_dts/theme-core/src/site-styles/lookOptionGroups.d.ts +24 -0
- package/dist/_dts/theme-core/src/site-styles/lookResolution.d.ts +1 -2
- package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +4 -22
- package/dist/_dts/theme-core/src/site-styles/pageDesignEditorOptions.d.ts +21 -0
- package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +5 -7
- package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +5 -6
- package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +4 -1
- package/dist/cli/index.mjs +1583 -1601
- package/dist/cli/init-docs/content/cli-reference.md +6 -3
- package/dist/cli/init-docs/content/content-management.md +24 -13
- package/dist/client/{DiscountCodeDisclosure-CyPpekBp.mjs → DiscountCodeDisclosure-BDFRp8Y7.mjs} +1 -1
- package/dist/client/{EventCombined.client-zywit-60.mjs → EventCombined.client-DJgF1_lf.mjs} +2 -2
- package/dist/client/{EventListing.client-J2nLhkKT.mjs → EventListing.client-CnWGNjOr.mjs} +2 -2
- package/dist/client/{LeafletStaticMap-CSubXWt6.mjs → LeafletStaticMap-BISs9Bl7.mjs} +1 -1
- package/dist/client/{MagicLinkForm-DDLIfiq9.mjs → MagicLinkForm-b5E_HoG9.mjs} +1 -1
- package/dist/client/{StepIndicator-DE8EvHIp.mjs → StepIndicator-D8gVYkK-.mjs} +2 -2
- package/dist/client/{accordion-Ct5T5NiA.mjs → accordion-DFDajgDz.mjs} +1 -1
- package/dist/client/{bookingForm-DMxtLPxw.mjs → bookingForm-Bdqj9-52.mjs} +5 -6
- package/dist/client/bookings.mjs +315 -46
- package/dist/client/{carousel--FMqgvob.mjs → carousel-Cvqf-kN8.mjs} +1 -1
- package/dist/client/{cart-BKX1bWiU.mjs → cart-CuH2TJXP.mjs} +3 -3
- package/dist/client/{checkout-B_jxi4WW.mjs → checkout-CMNPpejZ.mjs} +3 -3
- package/dist/client/client.mjs +1381 -1427
- package/dist/client/{courseRegistration-DH4MlkRD.mjs → courseRegistration-DTEYWL6Z.mjs} +6 -7
- package/dist/client/{eventCalendar-BQILwAcL.mjs → eventCalendar-BW-XoxZ0.mjs} +4 -4
- package/dist/client/{eventCombined-DFFW_Vmo.mjs → eventCombined-Bpn7s0y9.mjs} +2 -2
- package/dist/client/{eventDetails-B045CTSJ.mjs → eventDetails-D2uUSTMH.mjs} +3 -3
- package/dist/client/{eventListing-BDMYNVzS.mjs → eventListing-CVr1c094.mjs} +2 -2
- package/dist/client/{eventRegistration-CQ2-BSnB.mjs → eventRegistration-Dv4AvkMw.mjs} +30 -22
- package/dist/client/{form-DJKuyZgN.mjs → form-DxdKf9fs.mjs} +1 -1
- package/dist/client/{headerSection-DeTjfiDo.mjs → headerSection-BaXI5Sro.mjs} +2 -2
- package/dist/client/hooks.mjs +851 -976
- package/dist/client/{locationMap-i2wDA8gB.mjs → locationMap-BEtW2fKz.mjs} +2 -2
- package/dist/client/{newsletterForm-DKiueauk.mjs → newsletterForm-BKKs0S4R.mjs} +1 -1
- package/dist/client/{pricing-C01J3Epx.mjs → pricing-ClkqcElA.mjs} +1 -1
- package/dist/client/{productDetail-Dfc1sZaX.mjs → productDetail-H-ru8dyy.mjs} +3 -3
- package/dist/client/{productList-BXbvXWTF.mjs → productList-Buyi5c0C.mjs} +3 -3
- package/dist/client/{propsDecoder-CIR5DQ1l.mjs → propsDecoder-BF7i6Ijg.mjs} +293 -65
- package/dist/client/rendering/client.mjs +1145 -1190
- package/dist/client/rendering/islands.mjs +18 -18
- package/dist/client/rendering.mjs +1257 -1298
- package/dist/client/{useDiscountCodeUi-Bcyh4508.mjs → scrollToBlock-D_7t8yWb.mjs} +18 -2
- package/dist/client/{shop-BbNwPKM-.mjs → shop-CF7SZQNX.mjs} +5 -6
- package/dist/client/{shop-commerce-XO-XMFEt.mjs → shop-commerce-DA7_Rq5p.mjs} +4 -4
- package/dist/client/{shop-commerce-store-Byh6OUGK.mjs → shop-commerce-store-BmLqW7Gh.mjs} +1 -1
- package/dist/client/{shopShared-Bbq39mwr.mjs → shopShared-WL-E1znM.mjs} +2 -2
- package/dist/client/{useEventFilters-C8OOJ3el.mjs → useEventFilters-rc8VLeLV.mjs} +2 -2
- package/dist/client/{usePolling-CyJVo9kF.mjs → usePolling-1ncrfd4S.mjs} +2 -2
- package/dist/preview-next/before-render.mjs +0 -7
- package/dist/preview-next/client/runtime.mjs +4 -4
- package/dist/preview-next/middleware.mjs +0 -7
- package/dist/{previewAuthStore-CJX21dGi.mjs → previewAuthStore-Dev9CdG9.mjs} +0 -7
- package/dist/{sdk-runtime-BGhyuE-E.mjs → sdk-runtime-BnrCCFJq.mjs} +2 -2
- package/dist/{separator-BFs-Kmv5.mjs → separator-CFvBx2yl.mjs} +1 -1
- package/dist/server/components.mjs +1389 -1489
- package/dist/server/config-validation.mjs +851 -976
- package/dist/server/config.mjs +851 -976
- package/dist/server/data.mjs +851 -976
- package/dist/server/index.mjs +1 -8
- package/dist/server/next.mjs +1393 -1500
- package/dist/server/page-converter.mjs +851 -976
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +1346 -1446
- package/dist/server/rendering.mjs +1390 -1490
- package/dist/server/routing.mjs +939 -1041
- package/dist/server/server.mjs +852 -984
- package/dist/server/theme-bridge.mjs +322 -279
- package/dist/server/theme.mjs +277 -33
- package/package.json +1 -1
- package/dist/_dts/editor-blocks/src/widgets/rich-text/ensureRichTextImageAssetIdentifier.d.ts +0 -8
- package/dist/_dts/theme-core/src/palette/editorState.d.ts +0 -75
- package/dist/_dts/theme-core/src/palette/libraryModel.d.ts +0 -64
- package/dist/_dts/theme-core/src/palette/persistenceReadSource.d.ts +0 -81
- package/dist/_dts/theme-core/src/palette/resolveSelection.d.ts +0 -75
- package/dist/_dts/theme-core/src/palette/selection.d.ts +0 -74
- package/dist/_dts/theme-core/src/palette/sitePalettePersistence.d.ts +0 -34
- package/dist/client/scrollToBlock-C86BYkyV.mjs +0 -17
package/dist/server/theme.mjs
CHANGED
|
@@ -431,7 +431,7 @@ const PALETTE_TOKEN_NAMES = [
|
|
|
431
431
|
"text",
|
|
432
432
|
"border"
|
|
433
433
|
];
|
|
434
|
-
z$1.enum(PALETTE_TOKEN_NAMES);
|
|
434
|
+
const paletteTokenNameSchema = z$1.enum(PALETTE_TOKEN_NAMES);
|
|
435
435
|
const themeColorBaseTokenNames = [
|
|
436
436
|
...PALETTE_TOKEN_NAMES,
|
|
437
437
|
...blockColorTokenNames,
|
|
@@ -478,6 +478,144 @@ function parseThemeColorToken(value) {
|
|
|
478
478
|
}
|
|
479
479
|
const themeColorTokenSchema = z$1.string().min(1).refine((value) => Boolean(isThemeColorToken(value)), "Expected a known Theme V2 color token");
|
|
480
480
|
//#endregion
|
|
481
|
+
//#region ../theme-core/src/palette/colors.ts
|
|
482
|
+
const HEX_COLOR_REGEX = /^#[0-9a-f]{6}$/;
|
|
483
|
+
const NORMALIZABLE_HEX_REGEX = /^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i;
|
|
484
|
+
const THEME_PALETTE_COLOR_ORDER = [
|
|
485
|
+
"primary",
|
|
486
|
+
"secondary",
|
|
487
|
+
"accent",
|
|
488
|
+
"success",
|
|
489
|
+
"warning",
|
|
490
|
+
"destructive",
|
|
491
|
+
"background",
|
|
492
|
+
"surface",
|
|
493
|
+
"surfaceAlt",
|
|
494
|
+
"muted",
|
|
495
|
+
"text",
|
|
496
|
+
"primaryForeground",
|
|
497
|
+
"border"
|
|
498
|
+
];
|
|
499
|
+
const hexColorSchema = z$1.string().regex(HEX_COLOR_REGEX, "Hex must be #RRGGBB (lowercase)").transform((value) => value);
|
|
500
|
+
const paletteModeSchema = z$1.enum(["light", "dark"]);
|
|
501
|
+
const PALETTE_VALUE_KEY_PREFIX = "palette-value:v1|";
|
|
502
|
+
z$1.string().regex(/^[0-9a-f]{64}$/, "Palette hash must be a lowercase SHA-256 value").transform((value) => value);
|
|
503
|
+
const paletteColorsSchema = z$1.object({
|
|
504
|
+
primary: hexColorSchema,
|
|
505
|
+
primaryForeground: hexColorSchema,
|
|
506
|
+
secondary: hexColorSchema,
|
|
507
|
+
accent: hexColorSchema,
|
|
508
|
+
success: hexColorSchema,
|
|
509
|
+
warning: hexColorSchema,
|
|
510
|
+
destructive: hexColorSchema,
|
|
511
|
+
background: hexColorSchema,
|
|
512
|
+
surface: hexColorSchema,
|
|
513
|
+
surfaceAlt: hexColorSchema,
|
|
514
|
+
muted: hexColorSchema,
|
|
515
|
+
text: hexColorSchema,
|
|
516
|
+
border: hexColorSchema
|
|
517
|
+
}).strict().transform((value) => value);
|
|
518
|
+
function normalizePaletteHex(value) {
|
|
519
|
+
if (!NORMALIZABLE_HEX_REGEX.test(value)) return null;
|
|
520
|
+
const normalized = value.toLowerCase();
|
|
521
|
+
if (normalized.length === 7) return normalized;
|
|
522
|
+
const triplet = normalized.slice(1);
|
|
523
|
+
const red = triplet.charAt(0);
|
|
524
|
+
const green = triplet.charAt(1);
|
|
525
|
+
const blue = triplet.charAt(2);
|
|
526
|
+
return `#${red}${red}${green}${green}${blue}${blue}`;
|
|
527
|
+
}
|
|
528
|
+
function paletteColorsFromEntries(entries) {
|
|
529
|
+
const values = {};
|
|
530
|
+
for (const entry of entries) {
|
|
531
|
+
const parsedRole = paletteTokenNameSchema.safeParse(entry.name);
|
|
532
|
+
if (!parsedRole.success) return {
|
|
533
|
+
ok: false,
|
|
534
|
+
error: {
|
|
535
|
+
kind: "unknown-role",
|
|
536
|
+
role: entry.name
|
|
537
|
+
}
|
|
538
|
+
};
|
|
539
|
+
const role = parsedRole.data;
|
|
540
|
+
if (values[role] !== void 0) return {
|
|
541
|
+
ok: false,
|
|
542
|
+
error: {
|
|
543
|
+
kind: "duplicate-role",
|
|
544
|
+
role
|
|
545
|
+
}
|
|
546
|
+
};
|
|
547
|
+
const hex = normalizePaletteHex(entry.hex);
|
|
548
|
+
if (!hex) return {
|
|
549
|
+
ok: false,
|
|
550
|
+
error: {
|
|
551
|
+
kind: "invalid-color",
|
|
552
|
+
role,
|
|
553
|
+
value: entry.hex
|
|
554
|
+
}
|
|
555
|
+
};
|
|
556
|
+
values[role] = hex;
|
|
557
|
+
}
|
|
558
|
+
const missing = PALETTE_TOKEN_NAMES.filter((role) => values[role] === void 0);
|
|
559
|
+
if (missing.length > 0) return {
|
|
560
|
+
ok: false,
|
|
561
|
+
error: {
|
|
562
|
+
kind: "missing-roles",
|
|
563
|
+
roles: missing
|
|
564
|
+
}
|
|
565
|
+
};
|
|
566
|
+
return {
|
|
567
|
+
ok: true,
|
|
568
|
+
colors: paletteColorsSchema.parse(values)
|
|
569
|
+
};
|
|
570
|
+
}
|
|
571
|
+
function paletteColorEntries(colors) {
|
|
572
|
+
return THEME_PALETTE_COLOR_ORDER.map((name) => ({
|
|
573
|
+
name,
|
|
574
|
+
hex: colors[name]
|
|
575
|
+
}));
|
|
576
|
+
}
|
|
577
|
+
function paletteColorFingerprint(colors) {
|
|
578
|
+
return PALETTE_TOKEN_NAMES.map((name) => `${name}:${colors[name]}`).join("|");
|
|
579
|
+
}
|
|
580
|
+
function canonicalPaletteHashInput(colors, mode) {
|
|
581
|
+
return `${mode}|${paletteColorFingerprint(colors)}`;
|
|
582
|
+
}
|
|
583
|
+
/**
|
|
584
|
+
* Stable curated-catalogue identity. Do not reorder roles: the order comes
|
|
585
|
+
* from PALETTE_TOKEN_NAMES through canonicalPaletteHashInput.
|
|
586
|
+
*/
|
|
587
|
+
function paletteValueKey(colors, mode) {
|
|
588
|
+
return `${PALETTE_VALUE_KEY_PREFIX}${canonicalPaletteHashInput(colors, mode)}`;
|
|
589
|
+
}
|
|
590
|
+
/** Parses only the exact v1 canonical form emitted by paletteValueKey. */
|
|
591
|
+
function parsePaletteValueKey(value) {
|
|
592
|
+
if (typeof value !== "string" || !value.startsWith(PALETTE_VALUE_KEY_PREFIX)) return null;
|
|
593
|
+
const [rawMode, ...rawRoles] = value.slice(17).split("|");
|
|
594
|
+
const mode = paletteModeSchema.safeParse(rawMode);
|
|
595
|
+
if (!mode.success || rawRoles.length !== PALETTE_TOKEN_NAMES.length) return null;
|
|
596
|
+
const colors = paletteColorsFromEntries(rawRoles.map((roleValue) => {
|
|
597
|
+
const separator = roleValue.indexOf(":");
|
|
598
|
+
return separator === -1 ? {
|
|
599
|
+
name: "",
|
|
600
|
+
hex: ""
|
|
601
|
+
} : {
|
|
602
|
+
name: roleValue.slice(0, separator),
|
|
603
|
+
hex: roleValue.slice(separator + 1)
|
|
604
|
+
};
|
|
605
|
+
}));
|
|
606
|
+
if (!colors.ok || paletteValueKey(colors.colors, mode.data) !== value) return null;
|
|
607
|
+
return value;
|
|
608
|
+
}
|
|
609
|
+
z$1.string().transform((value, ctx) => {
|
|
610
|
+
const parsed = parsePaletteValueKey(value);
|
|
611
|
+
if (parsed) return parsed;
|
|
612
|
+
ctx.addIssue({
|
|
613
|
+
code: "custom",
|
|
614
|
+
message: "Invalid canonical palette value key"
|
|
615
|
+
});
|
|
616
|
+
return z$1.NEVER;
|
|
617
|
+
});
|
|
618
|
+
//#endregion
|
|
481
619
|
//#region ../theme-core/src/lib/media.ts
|
|
482
620
|
const hotspotSchema = z.object({
|
|
483
621
|
x: z.number().min(0).max(1),
|
|
@@ -535,6 +673,34 @@ const mediaSchema = z.object({
|
|
|
535
673
|
transform: transformSchema.optional()
|
|
536
674
|
});
|
|
537
675
|
//#endregion
|
|
676
|
+
//#region ../theme-core/src/palette/schema.ts
|
|
677
|
+
const colourHexString = z$1.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
|
|
678
|
+
const paletteColorSchema = z$1.object({
|
|
679
|
+
name: z$1.string().min(1),
|
|
680
|
+
hex: colourHexString
|
|
681
|
+
});
|
|
682
|
+
const paletteMetaSchema = z$1.object({ mode: z$1.enum(["light", "dark"]) });
|
|
683
|
+
const paletteSchema = z$1.object({
|
|
684
|
+
colors: z$1.array(paletteColorSchema),
|
|
685
|
+
meta: paletteMetaSchema
|
|
686
|
+
}).transform((palette, ctx) => {
|
|
687
|
+
const colors = paletteColorsFromEntries(palette.colors);
|
|
688
|
+
if (!colors.ok) {
|
|
689
|
+
ctx.addIssue({
|
|
690
|
+
code: "custom",
|
|
691
|
+
message: `Invalid complete palette: ${colors.error.kind}`
|
|
692
|
+
});
|
|
693
|
+
return z$1.NEVER;
|
|
694
|
+
}
|
|
695
|
+
return {
|
|
696
|
+
colors: paletteColorEntries(colors.colors).map(({ name, hex }) => ({
|
|
697
|
+
name: String(name),
|
|
698
|
+
hex: String(hex)
|
|
699
|
+
})),
|
|
700
|
+
meta: palette.meta
|
|
701
|
+
};
|
|
702
|
+
});
|
|
703
|
+
//#endregion
|
|
538
704
|
//#region ../theme-core/src/buttons/types.ts
|
|
539
705
|
/**
|
|
540
706
|
* Standard semantic variant roles a theme exposes.
|
|
@@ -547,8 +713,6 @@ const VARIANT_ROLES = [
|
|
|
547
713
|
"secondary",
|
|
548
714
|
"outline",
|
|
549
715
|
"ghost",
|
|
550
|
-
"link",
|
|
551
|
-
"tertiary",
|
|
552
716
|
"accent"
|
|
553
717
|
];
|
|
554
718
|
/**
|
|
@@ -557,7 +721,7 @@ const VARIANT_ROLES = [
|
|
|
557
721
|
* IDs become class selectors, so keep the contract deliberately narrower than
|
|
558
722
|
* an arbitrary string and shared with every authoring/runtime boundary.
|
|
559
723
|
*/
|
|
560
|
-
const buttonVariantIdSchema = z$1.string().min(1).max(50).regex(/^[a-z0-9-]+$/, "Button variant IDs may contain lowercase letters, numbers, and hyphens only");
|
|
724
|
+
const buttonVariantIdSchema = z$1.string().min(1).max(50).regex(/^[a-z0-9-]+$/, "Button variant IDs may contain lowercase letters, numbers, and hyphens only").refine((value) => value !== "link" && value !== "tertiary", { message: "Retired button role IDs are not valid variant IDs" });
|
|
561
725
|
function parseOpaqueButtonColourToken(value) {
|
|
562
726
|
const token = parseThemeColorToken(value);
|
|
563
727
|
if (token === null) return null;
|
|
@@ -1472,6 +1636,59 @@ function parseThemeForPersistence(value) {
|
|
|
1472
1636
|
value: theme
|
|
1473
1637
|
};
|
|
1474
1638
|
}
|
|
1639
|
+
shadeBackgroundEffect({
|
|
1640
|
+
id: "darken-background",
|
|
1641
|
+
name: "Darken on Hover",
|
|
1642
|
+
description: "Darkens the background color on hover",
|
|
1643
|
+
label: "Darken Amount (shade step)",
|
|
1644
|
+
shadeDirection: 1
|
|
1645
|
+
});
|
|
1646
|
+
shadeBackgroundEffect({
|
|
1647
|
+
id: "lighten-background",
|
|
1648
|
+
name: "Lighten on Hover",
|
|
1649
|
+
description: "Lightens the background color on hover",
|
|
1650
|
+
label: "Lighten Amount (shade step)",
|
|
1651
|
+
shadeDirection: -1
|
|
1652
|
+
});
|
|
1653
|
+
function shadeBackgroundEffect(config) {
|
|
1654
|
+
return {
|
|
1655
|
+
id: config.id,
|
|
1656
|
+
name: config.name,
|
|
1657
|
+
description: config.description,
|
|
1658
|
+
category: "background",
|
|
1659
|
+
pseudoElement: "none",
|
|
1660
|
+
applicableTo: ["button"],
|
|
1661
|
+
customizableOption: {
|
|
1662
|
+
name: "amount",
|
|
1663
|
+
type: "select",
|
|
1664
|
+
label: config.label,
|
|
1665
|
+
default: 100,
|
|
1666
|
+
options: [
|
|
1667
|
+
0,
|
|
1668
|
+
100,
|
|
1669
|
+
200,
|
|
1670
|
+
300,
|
|
1671
|
+
400,
|
|
1672
|
+
500,
|
|
1673
|
+
600,
|
|
1674
|
+
700,
|
|
1675
|
+
800,
|
|
1676
|
+
900
|
|
1677
|
+
]
|
|
1678
|
+
},
|
|
1679
|
+
isApplicable: (buttonConfig) => buttonConfig.background.type === "solid",
|
|
1680
|
+
generateCSS: ({ themeId, variantId, options, tokens, buttonConfig }) => {
|
|
1681
|
+
if (buttonConfig.background.type !== "solid") return "";
|
|
1682
|
+
const amount = (options.amount || 100) * config.shadeDirection;
|
|
1683
|
+
const baseToken = buttonConfig.background.colorToken ?? "primary-500";
|
|
1684
|
+
return `
|
|
1685
|
+
:where([data-theme-scope="${themeId}"]) .${variantId}:hover {
|
|
1686
|
+
background-color: ${tokens.getColor(tokens.adjustShade(baseToken, amount))};
|
|
1687
|
+
}
|
|
1688
|
+
`;
|
|
1689
|
+
}
|
|
1690
|
+
};
|
|
1691
|
+
}
|
|
1475
1692
|
buttonSizeNameSchema.options;
|
|
1476
1693
|
//#endregion
|
|
1477
1694
|
//#region ../theme-core/src/buttons/styles/domain.ts
|
|
@@ -4021,6 +4238,60 @@ const siteChromeBackgroundOverrideOwner = "site-chrome-editor";
|
|
|
4021
4238
|
* palette context and happens in `parseThemeColorReference`.
|
|
4022
4239
|
*/
|
|
4023
4240
|
const tokenOrCssColorValueSchema = z$1.string();
|
|
4241
|
+
const BREAKPOINT_LG = 1024;
|
|
4242
|
+
const BREAKPOINT_XL = 1280;
|
|
4243
|
+
const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
|
|
4244
|
+
function mqUp(px) {
|
|
4245
|
+
return `(min-width: ${px}px)`;
|
|
4246
|
+
}
|
|
4247
|
+
function mqDown(px) {
|
|
4248
|
+
return `(max-width: ${px}px)`;
|
|
4249
|
+
}
|
|
4250
|
+
function mqBetween(minPx, maxPx) {
|
|
4251
|
+
return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
|
|
4252
|
+
}
|
|
4253
|
+
mqUp(640);
|
|
4254
|
+
mqUp(768);
|
|
4255
|
+
mqUp(BREAKPOINT_LG);
|
|
4256
|
+
mqUp(BREAKPOINT_XL);
|
|
4257
|
+
mqDown(639);
|
|
4258
|
+
mqDown(767);
|
|
4259
|
+
mqDown(BREAKPOINT_LG_DOWN);
|
|
4260
|
+
mqBetween(640, BREAKPOINT_LG_DOWN);
|
|
4261
|
+
mqDown(640);
|
|
4262
|
+
mqDown(768);
|
|
4263
|
+
//#endregion
|
|
4264
|
+
//#region ../theme-core/src/header/scrollTreatment.ts
|
|
4265
|
+
const headerScrollTreatmentSchema = z$1.discriminatedUnion("kind", [z$1.object({
|
|
4266
|
+
kind: z$1.literal("contrast-glass"),
|
|
4267
|
+
backgroundTone: z$1.enum(["light", "dark"])
|
|
4268
|
+
})]).optional();
|
|
4269
|
+
//#endregion
|
|
4270
|
+
//#region ../theme-core/src/header/containerSchema.ts
|
|
4271
|
+
const headerContainerSchema = z$1.object({
|
|
4272
|
+
rounded: z$1.enum([
|
|
4273
|
+
"none",
|
|
4274
|
+
"sm",
|
|
4275
|
+
"md",
|
|
4276
|
+
"lg",
|
|
4277
|
+
"xl",
|
|
4278
|
+
"2xl"
|
|
4279
|
+
]).default("xl"),
|
|
4280
|
+
border: z$1.boolean().default(true),
|
|
4281
|
+
shadow: z$1.boolean().default(true),
|
|
4282
|
+
padding: z$1.enum([
|
|
4283
|
+
"sm",
|
|
4284
|
+
"md",
|
|
4285
|
+
"lg"
|
|
4286
|
+
]).default("md"),
|
|
4287
|
+
tint: z$1.string().nullable().optional(),
|
|
4288
|
+
opacity: z$1.number().min(0).max(1).default(.12)
|
|
4289
|
+
}).optional();
|
|
4290
|
+
const headerInteractionPaletteSchema = z$1.enum([
|
|
4291
|
+
"primary",
|
|
4292
|
+
"secondary",
|
|
4293
|
+
"accent"
|
|
4294
|
+
]);
|
|
4024
4295
|
//#endregion
|
|
4025
4296
|
//#region ../theme-core/src/schema.ts
|
|
4026
4297
|
const axesSchema = z$1.object({
|
|
@@ -4051,16 +4322,6 @@ const axesSchema = z$1.object({
|
|
|
4051
4322
|
"expressive"
|
|
4052
4323
|
])
|
|
4053
4324
|
});
|
|
4054
|
-
const colourHexString = z$1.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
|
|
4055
|
-
const paletteColorSchema = z$1.object({
|
|
4056
|
-
name: z$1.string().min(1),
|
|
4057
|
-
hex: colourHexString
|
|
4058
|
-
});
|
|
4059
|
-
const paletteMetaSchema = z$1.object({ mode: z$1.enum(["light", "dark"]) });
|
|
4060
|
-
const paletteSchema = z$1.object({
|
|
4061
|
-
colors: z$1.array(paletteColorSchema),
|
|
4062
|
-
meta: paletteMetaSchema
|
|
4063
|
-
});
|
|
4064
4325
|
const typographyStyleSchema = z$1.object({
|
|
4065
4326
|
family: z$1.string().min(1),
|
|
4066
4327
|
weight: z$1.enum([
|
|
@@ -4440,25 +4701,6 @@ const navFontWeight = z$1.enum([
|
|
|
4440
4701
|
]);
|
|
4441
4702
|
const headerMaxWidth = z$1.enum(["container", "full"]);
|
|
4442
4703
|
const headerBarFrame = z$1.enum(["full-bleed", "inset-shell"]);
|
|
4443
|
-
const headerContainerSchema = z$1.object({
|
|
4444
|
-
rounded: z$1.enum([
|
|
4445
|
-
"none",
|
|
4446
|
-
"sm",
|
|
4447
|
-
"md",
|
|
4448
|
-
"lg",
|
|
4449
|
-
"xl",
|
|
4450
|
-
"2xl"
|
|
4451
|
-
]).default("xl"),
|
|
4452
|
-
border: z$1.boolean().default(true),
|
|
4453
|
-
shadow: z$1.boolean().default(true),
|
|
4454
|
-
padding: z$1.enum([
|
|
4455
|
-
"sm",
|
|
4456
|
-
"md",
|
|
4457
|
-
"lg"
|
|
4458
|
-
]).default("md"),
|
|
4459
|
-
tint: z$1.string().nullable().optional(),
|
|
4460
|
-
opacity: z$1.number().min(0).max(1).default(.12)
|
|
4461
|
-
}).optional();
|
|
4462
4704
|
const headerBorderSchema = componentBorderSchema.extend({ position: z$1.enum([
|
|
4463
4705
|
"bottom",
|
|
4464
4706
|
"top",
|
|
@@ -4585,6 +4827,7 @@ const headerSchema = z$1.object({
|
|
|
4585
4827
|
shrinkOnScroll: z$1.boolean(),
|
|
4586
4828
|
maxWidth: headerMaxWidth,
|
|
4587
4829
|
barFrame: headerBarFrame.optional(),
|
|
4830
|
+
scrollTreatment: headerScrollTreatmentSchema,
|
|
4588
4831
|
logoOverride: mediaSchema.nullable().optional(),
|
|
4589
4832
|
background: headerBackgroundSchema.default({
|
|
4590
4833
|
type: "color",
|
|
@@ -4597,6 +4840,7 @@ const headerSchema = z$1.object({
|
|
|
4597
4840
|
navFontRole: z$1.enum(["body", "heading"]).optional(),
|
|
4598
4841
|
navTypography: z$1.enum(["body", "heading"]).optional(),
|
|
4599
4842
|
navTextSize: navLinkStyleSchema.shape.textSize,
|
|
4843
|
+
interactionPalette: headerInteractionPaletteSchema.optional(),
|
|
4600
4844
|
navPlacement: z$1.enum(["end", "center"]).optional(),
|
|
4601
4845
|
container: headerContainerSchema,
|
|
4602
4846
|
border: headerBorderSchema,
|
package/package.json
CHANGED
package/dist/_dts/editor-blocks/src/widgets/rich-text/ensureRichTextImageAssetIdentifier.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { ApiClient } from '../../../../api/src/request';
|
|
2
|
-
import type { MediaAssetWithLabels } from '@riverbankcms/media-storage-supabase';
|
|
3
|
-
type EnsureRichTextImageAssetIdentifierArgs = {
|
|
4
|
-
apiClient: ApiClient;
|
|
5
|
-
asset: MediaAssetWithLabels;
|
|
6
|
-
};
|
|
7
|
-
export declare function ensureRichTextImageAssetIdentifier({ apiClient, asset, }: EnsureRichTextImageAssetIdentifierArgs): Promise<MediaAssetWithLabels>;
|
|
8
|
-
export {};
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import type { PaletteColors, PaletteMode } from './colors';
|
|
2
|
-
import type { KnownCuratedPaletteValueKey } from './curated';
|
|
3
|
-
import type { ResolvedPaletteSelection } from './resolveSelection';
|
|
4
|
-
import type { PaletteCommand, PaletteSelection, SitePaletteId, SitePaletteVersion } from './selection';
|
|
5
|
-
export type PalettePreview = Readonly<{
|
|
6
|
-
kind: 'clean';
|
|
7
|
-
resolved: ResolvedPaletteSelection;
|
|
8
|
-
}> | Readonly<{
|
|
9
|
-
kind: 'selected';
|
|
10
|
-
resolved: ResolvedPaletteSelection;
|
|
11
|
-
}> | Readonly<{
|
|
12
|
-
kind: 'edited-curated';
|
|
13
|
-
sourceValueKey: KnownCuratedPaletteValueKey;
|
|
14
|
-
colors: PaletteColors;
|
|
15
|
-
mode: PaletteMode;
|
|
16
|
-
}> | Readonly<{
|
|
17
|
-
kind: 'edited-site';
|
|
18
|
-
paletteId: SitePaletteId;
|
|
19
|
-
expectedVersion: SitePaletteVersion;
|
|
20
|
-
colors: PaletteColors;
|
|
21
|
-
mode: PaletteMode;
|
|
22
|
-
}> | Readonly<{
|
|
23
|
-
kind: 'new-site';
|
|
24
|
-
colors: PaletteColors;
|
|
25
|
-
mode: PaletteMode;
|
|
26
|
-
}>;
|
|
27
|
-
export type PaletteEditorState = Readonly<{
|
|
28
|
-
committed: ResolvedPaletteSelection;
|
|
29
|
-
preview: PalettePreview;
|
|
30
|
-
}>;
|
|
31
|
-
/**
|
|
32
|
-
* A complete palette projection for consumers which render a draft. Unlike a
|
|
33
|
-
* command, this is always enough to compile the preview without reaching back
|
|
34
|
-
* to a curated base plus a sparse overrides map.
|
|
35
|
-
*/
|
|
36
|
-
export type CompletePaletteEditorPreview = Readonly<{
|
|
37
|
-
kind: 'selected';
|
|
38
|
-
selection: PaletteSelection;
|
|
39
|
-
colors: PaletteColors;
|
|
40
|
-
mode: PaletteMode;
|
|
41
|
-
version: SitePaletteVersion | null;
|
|
42
|
-
}> | Readonly<{
|
|
43
|
-
kind: 'edited-curated';
|
|
44
|
-
sourceValueKey: KnownCuratedPaletteValueKey;
|
|
45
|
-
colors: PaletteColors;
|
|
46
|
-
mode: PaletteMode;
|
|
47
|
-
}> | Readonly<{
|
|
48
|
-
kind: 'edited-site';
|
|
49
|
-
selection: Extract<PaletteSelection, {
|
|
50
|
-
kind: 'site';
|
|
51
|
-
}>;
|
|
52
|
-
expectedVersion: SitePaletteVersion;
|
|
53
|
-
colors: PaletteColors;
|
|
54
|
-
mode: PaletteMode;
|
|
55
|
-
}> | Readonly<{
|
|
56
|
-
kind: 'new-site';
|
|
57
|
-
colors: PaletteColors;
|
|
58
|
-
mode: PaletteMode;
|
|
59
|
-
}>;
|
|
60
|
-
export type PaletteEditorAction = Readonly<{
|
|
61
|
-
kind: 'select';
|
|
62
|
-
resolved: ResolvedPaletteSelection;
|
|
63
|
-
}> | Readonly<{
|
|
64
|
-
kind: 'edit';
|
|
65
|
-
colors: PaletteColors;
|
|
66
|
-
mode: PaletteMode;
|
|
67
|
-
}> | Readonly<{
|
|
68
|
-
kind: 'create';
|
|
69
|
-
}> | Readonly<{
|
|
70
|
-
kind: 'cancel';
|
|
71
|
-
}>;
|
|
72
|
-
export declare function createPaletteEditorState(committed: ResolvedPaletteSelection): PaletteEditorState;
|
|
73
|
-
export declare function reducePaletteEditorState(state: PaletteEditorState, action: PaletteEditorAction): PaletteEditorState;
|
|
74
|
-
export declare function planPaletteCommand(state: PaletteEditorState): PaletteCommand;
|
|
75
|
-
export declare function completePaletteEditorPreview(state: PaletteEditorState): CompletePaletteEditorPreview;
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import type { CuratedPalette, KnownCuratedPaletteValueKey } from './curated';
|
|
2
|
-
import type { PaletteColors, PaletteMode } from './colors';
|
|
3
|
-
import type { PaletteSelection, SitePalette, SitePaletteId, SitePaletteOrigin, SitePaletteVersion } from './selection';
|
|
4
|
-
export type PaletteSwatch = readonly [
|
|
5
|
-
PaletteColors['background'],
|
|
6
|
-
PaletteColors['surface'],
|
|
7
|
-
PaletteColors['primary'],
|
|
8
|
-
PaletteColors['secondary'],
|
|
9
|
-
PaletteColors['accent']
|
|
10
|
-
];
|
|
11
|
-
export type CuratedPaletteLibraryItem = Readonly<{
|
|
12
|
-
kind: 'curated';
|
|
13
|
-
valueKey: KnownCuratedPaletteValueKey;
|
|
14
|
-
colors: PaletteColors;
|
|
15
|
-
mode: PaletteMode;
|
|
16
|
-
swatch: PaletteSwatch;
|
|
17
|
-
accessibleLabel: string;
|
|
18
|
-
selected: boolean;
|
|
19
|
-
}>;
|
|
20
|
-
export type SitePaletteLibraryItem = Readonly<{
|
|
21
|
-
kind: 'site';
|
|
22
|
-
paletteId: SitePaletteId;
|
|
23
|
-
colors: PaletteColors;
|
|
24
|
-
mode: PaletteMode;
|
|
25
|
-
origin: SitePaletteOrigin;
|
|
26
|
-
version: SitePaletteVersion;
|
|
27
|
-
swatch: PaletteSwatch;
|
|
28
|
-
accessibleLabel: string;
|
|
29
|
-
selected: boolean;
|
|
30
|
-
}>;
|
|
31
|
-
export type PaletteLibraryItem = CuratedPaletteLibraryItem | SitePaletteLibraryItem;
|
|
32
|
-
export type PaletteLibraryReadModel = Readonly<{
|
|
33
|
-
active: PaletteLibraryAuthority;
|
|
34
|
-
yours: readonly SitePaletteLibraryItem[];
|
|
35
|
-
suggested: readonly CuratedPaletteLibraryItem[];
|
|
36
|
-
more: readonly CuratedPaletteLibraryItem[];
|
|
37
|
-
}>;
|
|
38
|
-
export type PaletteLibraryAuthority = Readonly<{
|
|
39
|
-
kind: 'available';
|
|
40
|
-
selection: PaletteSelection;
|
|
41
|
-
}> | Readonly<{
|
|
42
|
-
kind: 'invalid';
|
|
43
|
-
}>;
|
|
44
|
-
export type PaletteLibraryReadModelError = Readonly<{
|
|
45
|
-
kind: 'active-curated-palette-missing';
|
|
46
|
-
valueKey: KnownCuratedPaletteValueKey;
|
|
47
|
-
}> | Readonly<{
|
|
48
|
-
kind: 'active-site-palette-missing';
|
|
49
|
-
paletteId: SitePaletteId;
|
|
50
|
-
}>;
|
|
51
|
-
export type PaletteLibraryReadModelResult = Readonly<{
|
|
52
|
-
ok: true;
|
|
53
|
-
model: PaletteLibraryReadModel;
|
|
54
|
-
}> | Readonly<{
|
|
55
|
-
ok: false;
|
|
56
|
-
error: PaletteLibraryReadModelError;
|
|
57
|
-
}>;
|
|
58
|
-
export declare function buildPaletteLibraryReadModel(input: Readonly<{
|
|
59
|
-
active: PaletteLibraryAuthority;
|
|
60
|
-
sitePalettes: readonly SitePalette[];
|
|
61
|
-
curatedPalettes: readonly CuratedPalette[];
|
|
62
|
-
recommendations: readonly KnownCuratedPaletteValueKey[];
|
|
63
|
-
}>): PaletteLibraryReadModelResult;
|
|
64
|
-
export declare function paletteSelectionForItem(item: PaletteLibraryItem): PaletteSelection;
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { type PaletteValueKey } from './curated';
|
|
2
|
-
import { resolvedCuratedPaletteSelection, resolvedSitePaletteSelection, type ResolvedPaletteSelection } from './resolveSelection';
|
|
3
|
-
import { type PaletteSelection, type SitePalette } from './selection';
|
|
4
|
-
import type { SitePaletteParseError } from './sitePalettePersistence';
|
|
5
|
-
/** The post-backfill product boundary: exactly one active reference is required. */
|
|
6
|
-
export type AuthoritativePaletteSelectionParseError = Readonly<{
|
|
7
|
-
kind: 'missing-active-palette-reference';
|
|
8
|
-
}> | Readonly<{
|
|
9
|
-
kind: 'dual-active-reference';
|
|
10
|
-
}> | Readonly<{
|
|
11
|
-
kind: 'unknown-active-curated-palette';
|
|
12
|
-
value: string;
|
|
13
|
-
}> | Readonly<{
|
|
14
|
-
kind: 'invalid-active-site-palette-id';
|
|
15
|
-
value: string;
|
|
16
|
-
}>;
|
|
17
|
-
export type AuthoritativePaletteSelectionParseResult = Readonly<{
|
|
18
|
-
ok: true;
|
|
19
|
-
selection: PaletteSelection;
|
|
20
|
-
}> | Readonly<{
|
|
21
|
-
ok: false;
|
|
22
|
-
error: AuthoritativePaletteSelectionParseError;
|
|
23
|
-
}>;
|
|
24
|
-
export declare function parseAuthoritativePaletteSelection(input: Readonly<{
|
|
25
|
-
activePaletteValueKey: string | null;
|
|
26
|
-
activeSitePaletteId: string | null;
|
|
27
|
-
}>): AuthoritativePaletteSelectionParseResult;
|
|
28
|
-
/** Runtime state is authority-backed or explicitly invalid; legacy is migration-only. */
|
|
29
|
-
export type RuntimePaletteState = Readonly<{
|
|
30
|
-
kind: 'migrated';
|
|
31
|
-
authority: 'curated';
|
|
32
|
-
selection: Extract<PaletteSelection, {
|
|
33
|
-
kind: 'curated';
|
|
34
|
-
}>;
|
|
35
|
-
colors: ReturnType<typeof resolvedCuratedPaletteSelection>['colors'];
|
|
36
|
-
mode: ReturnType<typeof resolvedCuratedPaletteSelection>['mode'];
|
|
37
|
-
sitePaletteVersion: null;
|
|
38
|
-
}> | Readonly<{
|
|
39
|
-
kind: 'migrated';
|
|
40
|
-
authority: 'site';
|
|
41
|
-
selection: Extract<PaletteSelection, {
|
|
42
|
-
kind: 'site';
|
|
43
|
-
}>;
|
|
44
|
-
colors: ReturnType<typeof resolvedSitePaletteSelection>['colors'];
|
|
45
|
-
mode: ReturnType<typeof resolvedSitePaletteSelection>['mode'];
|
|
46
|
-
sitePaletteVersion: ReturnType<typeof resolvedSitePaletteSelection>['version'];
|
|
47
|
-
}> | Readonly<{
|
|
48
|
-
kind: 'invalid';
|
|
49
|
-
reason: AuthoritativePaletteSelectionParseError['kind'] | 'invalid-saved-theme-palette' | 'active-site-palette-missing' | 'invalid-active-site-palette' | 'active-site-palette-mismatch' | 'active-curated-palette-missing';
|
|
50
|
-
}>;
|
|
51
|
-
export type AuthoritativeRuntimePaletteState = RuntimePaletteState;
|
|
52
|
-
export type ActiveSitePaletteAuthority = Readonly<{
|
|
53
|
-
kind: 'missing';
|
|
54
|
-
}> | Readonly<{
|
|
55
|
-
kind: 'malformed';
|
|
56
|
-
error: SitePaletteParseError;
|
|
57
|
-
}> | Readonly<{
|
|
58
|
-
kind: 'resolved';
|
|
59
|
-
palette: SitePalette;
|
|
60
|
-
}>;
|
|
61
|
-
export type RuntimePaletteResolutionError = Readonly<{
|
|
62
|
-
kind: 'runtime-curated-palette-missing';
|
|
63
|
-
paletteId: PaletteValueKey;
|
|
64
|
-
}> | Readonly<{
|
|
65
|
-
kind: 'runtime-curated-palette-mismatch';
|
|
66
|
-
paletteId: PaletteValueKey;
|
|
67
|
-
}>;
|
|
68
|
-
export type RuntimePaletteResolution = Readonly<{
|
|
69
|
-
ok: true;
|
|
70
|
-
resolved: ResolvedPaletteSelection;
|
|
71
|
-
}> | Readonly<{
|
|
72
|
-
ok: false;
|
|
73
|
-
error: RuntimePaletteResolutionError;
|
|
74
|
-
}>;
|
|
75
|
-
export declare function resolveMigratedRuntimePaletteState(state: Extract<RuntimePaletteState, {
|
|
76
|
-
kind: 'migrated';
|
|
77
|
-
}>): RuntimePaletteResolution;
|
|
78
|
-
export declare function runtimePaletteStateFromAuthoritativeSelection(input: Readonly<{
|
|
79
|
-
selection: PaletteSelection;
|
|
80
|
-
activeSitePaletteAuthority: ActiveSitePaletteAuthority;
|
|
81
|
-
}>): AuthoritativeRuntimePaletteState;
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import type { PaletteColors, PaletteMode, PaletteValueKey } from './colors';
|
|
2
|
-
import { type CuratedPalette } from './curated';
|
|
3
|
-
import type { PaletteSelection, SitePalette, SitePaletteId } from './selection';
|
|
4
|
-
declare const resolvedPaletteSelectionBrand: unique symbol;
|
|
5
|
-
export type ResolvedCuratedPaletteSelection = Readonly<{
|
|
6
|
-
kind: 'curated';
|
|
7
|
-
selection: Extract<PaletteSelection, {
|
|
8
|
-
kind: 'curated';
|
|
9
|
-
}>;
|
|
10
|
-
colors: PaletteColors;
|
|
11
|
-
mode: PaletteMode;
|
|
12
|
-
[resolvedPaletteSelectionBrand]: true;
|
|
13
|
-
}>;
|
|
14
|
-
export type ResolvedSitePaletteSelection = Readonly<{
|
|
15
|
-
kind: 'site';
|
|
16
|
-
selection: Extract<PaletteSelection, {
|
|
17
|
-
kind: 'site';
|
|
18
|
-
}>;
|
|
19
|
-
colors: PaletteColors;
|
|
20
|
-
mode: PaletteMode;
|
|
21
|
-
version: SitePalette['version'];
|
|
22
|
-
[resolvedPaletteSelectionBrand]: true;
|
|
23
|
-
}>;
|
|
24
|
-
export type ResolvedPaletteSelection = ResolvedCuratedPaletteSelection | ResolvedSitePaletteSelection;
|
|
25
|
-
/**
|
|
26
|
-
* A complete palette that exists only in an editor preview. It deliberately
|
|
27
|
-
* has no persisted selection: a new palette must not pretend to be the first
|
|
28
|
-
* curated recommendation merely to satisfy a renderer.
|
|
29
|
-
*/
|
|
30
|
-
export type ResolvedDraftPaletteSelection = Readonly<{
|
|
31
|
-
kind: 'draft';
|
|
32
|
-
selection: null;
|
|
33
|
-
colors: PaletteColors;
|
|
34
|
-
mode: PaletteMode;
|
|
35
|
-
[resolvedPaletteSelectionBrand]: true;
|
|
36
|
-
}>;
|
|
37
|
-
/** A persisted palette selection or a complete, unsaved editor draft. */
|
|
38
|
-
export type CompleteResolvedPaletteSelection = ResolvedPaletteSelection | ResolvedDraftPaletteSelection;
|
|
39
|
-
export type PaletteSelectionResolutionError = Readonly<{
|
|
40
|
-
kind: 'curated-palette-not-found';
|
|
41
|
-
valueKey: PaletteValueKey;
|
|
42
|
-
}> | Readonly<{
|
|
43
|
-
kind: 'site-palette-not-found';
|
|
44
|
-
paletteId: SitePaletteId;
|
|
45
|
-
}>;
|
|
46
|
-
export type PaletteSelectionResolution = Readonly<{
|
|
47
|
-
ok: true;
|
|
48
|
-
resolved: ResolvedPaletteSelection;
|
|
49
|
-
}> | Readonly<{
|
|
50
|
-
ok: false;
|
|
51
|
-
error: PaletteSelectionResolutionError;
|
|
52
|
-
}>;
|
|
53
|
-
/** Core-owned constructors keep the resolved marker out of application code. */
|
|
54
|
-
export declare function resolvedCuratedPaletteSelection(palette: CuratedPalette): ResolvedCuratedPaletteSelection;
|
|
55
|
-
export declare function resolvedSitePaletteSelection(palette: SitePalette): ResolvedSitePaletteSelection;
|
|
56
|
-
/** Builds a resolved site-owned preview from the record fields it owns. */
|
|
57
|
-
export declare function resolvedSitePaletteSelectionFromPreview(input: Readonly<{
|
|
58
|
-
paletteId: SitePalette['id'];
|
|
59
|
-
colors: PaletteColors;
|
|
60
|
-
mode: PaletteMode;
|
|
61
|
-
version: SitePalette['version'];
|
|
62
|
-
}>): ResolvedSitePaletteSelection;
|
|
63
|
-
export declare function resolvedDraftPaletteSelection(input: Readonly<{
|
|
64
|
-
colors: PaletteColors;
|
|
65
|
-
mode: PaletteMode;
|
|
66
|
-
}>): ResolvedDraftPaletteSelection;
|
|
67
|
-
/** Resolves a persisted selection against the records that actually own it. */
|
|
68
|
-
export declare function resolvePaletteSelection(input: Readonly<{
|
|
69
|
-
selection: PaletteSelection;
|
|
70
|
-
curatedPalettes: readonly CuratedPalette[];
|
|
71
|
-
sitePalettes: readonly SitePalette[];
|
|
72
|
-
}>): PaletteSelectionResolution;
|
|
73
|
-
/** Resolves catalog authority without asking callers to manufacture a brand. */
|
|
74
|
-
export declare function resolveCuratedPaletteSelection(valueKey: PaletteValueKey): PaletteSelectionResolution;
|
|
75
|
-
export {};
|