@riverbankcms/sdk 0.60.3 → 0.60.7
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/dist/_dts/api/src/appointmentSetup.d.ts +2 -2
- package/dist/_dts/api/src/bookingConfig.d.ts +6 -0
- package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +45 -3
- package/dist/_dts/api/src/bookingOperations.d.ts +40 -3
- package/dist/_dts/api/src/bookingVerticals.d.ts +1 -0
- package/dist/_dts/api/src/courses.d.ts +1 -5
- package/dist/_dts/api/src/endpoints.d.ts +80 -1
- package/dist/_dts/api/src/index.d.ts +3 -2
- package/dist/_dts/api/src/navigation/contracts.d.ts +9 -9
- package/dist/_dts/api/src/public/endpoints.d.ts +1 -1
- package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +15 -1
- package/dist/_dts/api/src/resources.d.ts +1 -1
- package/dist/_dts/api/src/siteBanner.d.ts +8 -8
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +3 -39
- package/dist/_dts/api/src/siteOnboarding.d.ts +1 -0
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +2 -0
- package/dist/_dts/api/src/teamMembers.d.ts +27 -0
- package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +35 -29
- package/dist/_dts/blocks/src/system/blocks/courses/shared/types.d.ts +1 -5
- package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +40 -34
- package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +1 -5
- package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +1 -1
- package/dist/_dts/blocks/src/system/blocks/products/shared.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/shared/bookingPaymentTerms.d.ts +9 -9
- package/dist/_dts/blocks/src/system/blocks/shared/teamMembers.d.ts +24 -0
- package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +18 -8
- package/dist/_dts/blocks/src/system/constants/background.d.ts +1 -1
- package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
- package/dist/_dts/blocks/src/system/data/utils.d.ts +1 -1
- package/dist/_dts/blocks/src/system/manifest/schema.d.ts +201 -201
- package/dist/_dts/blocks/src/system/manifest/validation.d.ts +2 -2
- package/dist/_dts/blocks/src/system/node/fragments/ctaButton.d.ts +2 -0
- package/dist/_dts/blocks/src/system/node/schema.d.ts +5 -5
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +4 -4
- package/dist/_dts/blocks/src/system/runtime/shared/themedButtonClass.d.ts +11 -0
- package/dist/_dts/blocks/src/system/transforms/registry/ui.d.ts +1 -1
- package/dist/_dts/blocks/src/system/transforms/typed.d.ts +3 -3
- package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +10 -2
- package/dist/_dts/content-model/src/content-types/schema.d.ts +8 -8
- package/dist/_dts/content-model/src/metadataConfig.d.ts +1 -0
- package/dist/_dts/core/src/branded.d.ts +2 -0
- package/dist/_dts/core/src/participants.d.ts +32 -1
- package/dist/_dts/core/src/rectification.d.ts +79 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +130 -14
- package/dist/_dts/db/src/schemas/forms.d.ts +61 -61
- package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +17 -15
- package/dist/_dts/sdk/src/client/types.d.ts +10 -2
- package/dist/_dts/sdk/src/config/types.d.ts +1 -1
- package/dist/_dts/sdk/src/config/validation.d.ts +40 -37
- package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +17 -8
- package/dist/_dts/sdk/src/data/prefetchBlockData.d.ts +1 -1
- package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +19 -19
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +87 -69
- package/dist/_dts/sdk/src/public-api/runtime.d.ts +1 -1
- package/dist/_dts/sdk/src/rendering/islands/types.d.ts +2 -5
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/theme-core/src/accordions/types.d.ts +11 -11
- package/dist/_dts/theme-core/src/buttons/personalities/brushed-wash.d.ts +7 -2
- package/dist/_dts/theme-core/src/buttons/personalities/confident-chip.d.ts +7 -2
- package/dist/_dts/theme-core/src/buttons/personalities/editorial-link.d.ts +7 -2
- package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +86 -5
- package/dist/_dts/theme-core/src/buttons/personalities/ink-stamp.d.ts +7 -2
- package/dist/_dts/theme-core/src/buttons/personalities/pebble.d.ts +7 -2
- package/dist/_dts/theme-core/src/buttons/personalities/soft-pill.d.ts +7 -2
- package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +20 -20
- package/dist/_dts/theme-core/src/buttons/types.d.ts +27 -27
- package/dist/_dts/theme-core/src/cards/types.d.ts +17 -17
- package/dist/_dts/theme-core/src/inputs/types.d.ts +14 -14
- package/dist/_dts/theme-core/src/interactive/baseSchema.d.ts +2 -2
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +438 -438
- package/dist/_dts/theme-core/src/navigation/types.d.ts +16 -16
- package/dist/_dts/theme-core/src/palette/variants/brand-led.d.ts +33 -9
- package/dist/_dts/theme-core/src/palette/variants/high-contrast.d.ts +33 -9
- package/dist/_dts/theme-core/src/palette/variants/index.d.ts +200 -4
- package/dist/_dts/theme-core/src/palette/variants/soft-natural.d.ts +33 -9
- package/dist/_dts/theme-core/src/palette/variants/types.d.ts +25 -25
- package/dist/_dts/theme-core/src/palette/variants/warm-neutral.d.ts +33 -9
- package/dist/_dts/theme-core/src/schema.d.ts +662 -662
- package/dist/_dts/theme-core/src/shared/componentStyles.d.ts +4 -4
- package/dist/_dts/theme-core/src/site-styles/curatedChoices.d.ts +27 -0
- package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +48 -194
- package/dist/_dts/theme-core/src/site-styles/designState.d.ts +15 -15
- package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +7 -7
- package/dist/_dts/theme-core/src/site-styles/index.d.ts +2 -1
- package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +12 -14
- package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +46 -0
- package/dist/_dts/theme-core/src/site-styles/tokenRecipes.d.ts +5 -5
- package/dist/_dts/ui/src/badge.d.ts +1 -1
- package/dist/_dts/ui/src/button-group.d.ts +1 -1
- package/dist/_dts/ui/src/button.d.ts +2 -2
- package/dist/_dts/ui/src/callout.d.ts +1 -1
- package/dist/_dts/ui/src/card.d.ts +1 -1
- package/dist/_dts/ui/src/palette/ColorChooserDialog.d.ts +47 -0
- package/dist/_dts/ui/src/palette/ColorSlotButton.d.ts +15 -0
- package/dist/_dts/ui/src/palette/ColorSwatchButton.d.ts +15 -0
- package/dist/_dts/ui/src/palette/PaletteTokenEditor.d.ts +50 -0
- package/dist/_dts/ui/src/palette/hex.d.ts +23 -0
- package/dist/_dts/ui/src/palette/index.d.ts +14 -0
- package/dist/_dts/ui/src/surface.d.ts +2 -2
- package/dist/_dts/ui/src/toggle.d.ts +4 -4
- package/dist/cli/index.mjs +1535 -1183
- package/dist/client/client.mjs +3944 -3454
- package/dist/client/hooks.mjs +2053 -1743
- package/dist/client/rendering/client.mjs +311 -167
- package/dist/client/rendering/islands.mjs +159 -73
- package/dist/client/rendering.mjs +1918 -1447
- package/dist/preview-next/before-render.mjs +147 -1
- package/dist/preview-next/client/runtime.mjs +2828 -2174
- package/dist/preview-next/middleware.mjs +147 -1
- package/dist/server/components.mjs +4311 -3928
- package/dist/server/config-validation.mjs +2201 -1906
- package/dist/server/config.mjs +2201 -1906
- package/dist/server/data.mjs +2053 -1743
- package/dist/server/index.mjs +171 -4
- package/dist/server/next.mjs +3442 -3024
- package/dist/server/page-converter.mjs +2109 -1962
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +4021 -3622
- package/dist/server/rendering.mjs +4021 -3622
- package/dist/server/routing.mjs +2377 -2058
- package/dist/server/server.mjs +2244 -1915
- package/dist/server/theme-bridge.mjs +130 -126
- package/dist/server/theme.mjs +131 -129
- package/package.json +1 -1
- package/dist/_dts/theme-core/src/site-styles/compatibility.d.ts +0 -109
package/dist/server/server.mjs
CHANGED
|
@@ -905,13 +905,150 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
905
905
|
"server:internal_error"
|
|
906
906
|
]
|
|
907
907
|
},
|
|
908
|
-
|
|
908
|
+
removeAppointmentResource: {
|
|
909
909
|
path: "/sites/{siteId}/bookings/resources/{resourceId}",
|
|
910
910
|
method: "DELETE",
|
|
911
911
|
auth: "user",
|
|
912
912
|
responseKind: "json",
|
|
913
913
|
errors: ["resource:not_found", "server:internal_error"]
|
|
914
914
|
},
|
|
915
|
+
createTeamMemberProfile: {
|
|
916
|
+
path: "/sites/{siteId}/bookings/resources/{resourceId}/profile",
|
|
917
|
+
method: "POST",
|
|
918
|
+
auth: "user",
|
|
919
|
+
responseKind: "json",
|
|
920
|
+
errors: [
|
|
921
|
+
"validation:invalid_input",
|
|
922
|
+
"resource:not_found",
|
|
923
|
+
"resource:conflict",
|
|
924
|
+
"server:internal_error"
|
|
925
|
+
]
|
|
926
|
+
},
|
|
927
|
+
updateTeamMemberProfilePolicy: {
|
|
928
|
+
path: "/sites/{siteId}/bookings/resources/profile-policy",
|
|
929
|
+
method: "PUT",
|
|
930
|
+
auth: "user",
|
|
931
|
+
responseKind: "json",
|
|
932
|
+
errors: ["validation:invalid_input", "server:internal_error"]
|
|
933
|
+
},
|
|
934
|
+
updateTeamMemberProfileContent: {
|
|
935
|
+
path: "/sites/{siteId}/bookings/resources/{resourceId}/profile/{entryId}/content",
|
|
936
|
+
method: "PUT",
|
|
937
|
+
tags: [
|
|
938
|
+
"site-{siteId}",
|
|
939
|
+
"content-{siteId}-team-member",
|
|
940
|
+
"content-entry-{entryId}"
|
|
941
|
+
],
|
|
942
|
+
auth: "user",
|
|
943
|
+
responseKind: "json",
|
|
944
|
+
errors: [
|
|
945
|
+
"validation:invalid_input",
|
|
946
|
+
"resource:not_found",
|
|
947
|
+
"resource:conflict",
|
|
948
|
+
"server:internal_error"
|
|
949
|
+
]
|
|
950
|
+
},
|
|
951
|
+
publishTeamMemberProfile: {
|
|
952
|
+
path: "/sites/{siteId}/bookings/resources/{resourceId}/profile/{entryId}/publish",
|
|
953
|
+
method: "POST",
|
|
954
|
+
tags: [
|
|
955
|
+
"site-{siteId}",
|
|
956
|
+
"content-{siteId}-team-member",
|
|
957
|
+
"content-entry-{entryId}"
|
|
958
|
+
],
|
|
959
|
+
auth: "user",
|
|
960
|
+
responseKind: "json",
|
|
961
|
+
errors: [
|
|
962
|
+
"validation:invalid_input",
|
|
963
|
+
"resource:not_found",
|
|
964
|
+
"server:internal_error"
|
|
965
|
+
]
|
|
966
|
+
},
|
|
967
|
+
discardTeamMemberProfileDraft: {
|
|
968
|
+
path: "/sites/{siteId}/bookings/resources/{resourceId}/profile/{entryId}/discard",
|
|
969
|
+
method: "POST",
|
|
970
|
+
tags: [
|
|
971
|
+
"site-{siteId}",
|
|
972
|
+
"content-{siteId}-team-member",
|
|
973
|
+
"content-entry-{entryId}"
|
|
974
|
+
],
|
|
975
|
+
auth: "user",
|
|
976
|
+
responseKind: "json",
|
|
977
|
+
errors: [
|
|
978
|
+
"validation:invalid_input",
|
|
979
|
+
"resource:not_found",
|
|
980
|
+
"resource:conflict",
|
|
981
|
+
"server:internal_error"
|
|
982
|
+
]
|
|
983
|
+
},
|
|
984
|
+
unpublishTeamMemberProfile: {
|
|
985
|
+
path: "/sites/{siteId}/bookings/resources/{resourceId}/profile/{entryId}/unpublish",
|
|
986
|
+
method: "POST",
|
|
987
|
+
tags: [
|
|
988
|
+
"site-{siteId}",
|
|
989
|
+
"content-{siteId}-team-member",
|
|
990
|
+
"content-entry-{entryId}"
|
|
991
|
+
],
|
|
992
|
+
auth: "user",
|
|
993
|
+
responseKind: "json",
|
|
994
|
+
errors: [
|
|
995
|
+
"validation:invalid_input",
|
|
996
|
+
"resource:not_found",
|
|
997
|
+
"resource:conflict",
|
|
998
|
+
"server:internal_error"
|
|
999
|
+
]
|
|
1000
|
+
},
|
|
1001
|
+
scheduleTeamMemberProfile: {
|
|
1002
|
+
path: "/sites/{siteId}/bookings/resources/{resourceId}/profile/{entryId}/schedule",
|
|
1003
|
+
method: "POST",
|
|
1004
|
+
tags: [
|
|
1005
|
+
"site-{siteId}",
|
|
1006
|
+
"content-{siteId}-team-member",
|
|
1007
|
+
"content-entry-{entryId}"
|
|
1008
|
+
],
|
|
1009
|
+
auth: "user",
|
|
1010
|
+
responseKind: "json",
|
|
1011
|
+
errors: [
|
|
1012
|
+
"validation:invalid_input",
|
|
1013
|
+
"resource:not_found",
|
|
1014
|
+
"resource:conflict",
|
|
1015
|
+
"server:internal_error"
|
|
1016
|
+
]
|
|
1017
|
+
},
|
|
1018
|
+
cancelScheduledTeamMemberProfile: {
|
|
1019
|
+
path: "/sites/{siteId}/bookings/resources/{resourceId}/profile/{entryId}/schedule",
|
|
1020
|
+
method: "DELETE",
|
|
1021
|
+
tags: [
|
|
1022
|
+
"site-{siteId}",
|
|
1023
|
+
"content-{siteId}-team-member",
|
|
1024
|
+
"content-entry-{entryId}"
|
|
1025
|
+
],
|
|
1026
|
+
auth: "user",
|
|
1027
|
+
responseKind: "json",
|
|
1028
|
+
errors: [
|
|
1029
|
+
"validation:invalid_input",
|
|
1030
|
+
"resource:not_found",
|
|
1031
|
+
"resource:conflict",
|
|
1032
|
+
"server:internal_error"
|
|
1033
|
+
]
|
|
1034
|
+
},
|
|
1035
|
+
updateTeamMemberProfileRouteMetadata: {
|
|
1036
|
+
path: "/sites/{siteId}/bookings/resources/{resourceId}/profile/routes/{routeId}/metadata",
|
|
1037
|
+
method: "PATCH",
|
|
1038
|
+
tags: [
|
|
1039
|
+
TAG_TEMPLATES.siteCollection,
|
|
1040
|
+
TAG_TEMPLATES.siteRoutableContent,
|
|
1041
|
+
TAG_TEMPLATES.routeById
|
|
1042
|
+
],
|
|
1043
|
+
auth: "user",
|
|
1044
|
+
responseKind: "json",
|
|
1045
|
+
errors: [
|
|
1046
|
+
"validation:invalid_input",
|
|
1047
|
+
"resource:not_found",
|
|
1048
|
+
"resource:conflict",
|
|
1049
|
+
"server:internal_error"
|
|
1050
|
+
]
|
|
1051
|
+
},
|
|
915
1052
|
listAppointmentServices: {
|
|
916
1053
|
path: "/sites/{siteId}/bookings/services",
|
|
917
1054
|
method: "GET",
|
|
@@ -3285,6 +3422,15 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
3285
3422
|
auth: "public",
|
|
3286
3423
|
responseKind: "json"
|
|
3287
3424
|
},
|
|
3425
|
+
listPublicTeamMembers: {
|
|
3426
|
+
path: "/public/sites/{siteId}/team-members",
|
|
3427
|
+
method: "GET",
|
|
3428
|
+
revalidate: 60,
|
|
3429
|
+
tags: ["public-team-members-{siteId}"],
|
|
3430
|
+
errors: [],
|
|
3431
|
+
auth: "public",
|
|
3432
|
+
responseKind: "json"
|
|
3433
|
+
},
|
|
3288
3434
|
getPublicCourse: {
|
|
3289
3435
|
path: "/public/sites/{siteId}/courses/{courseId}",
|
|
3290
3436
|
method: "GET",
|
|
@@ -6116,7 +6262,7 @@ var SimpleCache = class {
|
|
|
6116
6262
|
};
|
|
6117
6263
|
|
|
6118
6264
|
// src/version.ts
|
|
6119
|
-
var SDK_VERSION = "0.60.
|
|
6265
|
+
var SDK_VERSION = "0.60.7";
|
|
6120
6266
|
|
|
6121
6267
|
// src/client/error.ts
|
|
6122
6268
|
var RiverbankApiError = class _RiverbankApiError extends Error {
|
|
@@ -6910,19 +7056,20 @@ function createRiverbankClient(config) {
|
|
|
6910
7056
|
}
|
|
6911
7057
|
return {
|
|
6912
7058
|
async getSite(params) {
|
|
6913
|
-
const { slug, domain, id, signal, force } = params;
|
|
7059
|
+
const { slug, domain, id, signal, force, currentPath } = params;
|
|
6914
7060
|
if (!slug && !domain && !id) {
|
|
6915
7061
|
throw new Error(
|
|
6916
7062
|
`getSite() requires at least one identifier: slug, domain, or id. Received: ${JSON.stringify(params)}`
|
|
6917
7063
|
);
|
|
6918
7064
|
}
|
|
6919
|
-
const cacheKey = `site:${slug || domain || id}`;
|
|
7065
|
+
const cacheKey = `site:${slug || domain || id}:${currentPath ?? ""}`;
|
|
6920
7066
|
const siteId = id || slug || domain;
|
|
6921
7067
|
return resilientFetch(cacheKey, async (sig) => {
|
|
6922
7068
|
const apiParams = {};
|
|
6923
7069
|
if (params.slug) apiParams.slug = params.slug;
|
|
6924
7070
|
if (params.domain) apiParams.domain = params.domain;
|
|
6925
7071
|
if (params.id) apiParams.id = params.id;
|
|
7072
|
+
if (currentPath) apiParams.currentPath = currentPath;
|
|
6926
7073
|
if (force) apiParams.force = "true";
|
|
6927
7074
|
return await apiClient({
|
|
6928
7075
|
endpoint: "getSite",
|
|
@@ -7154,6 +7301,24 @@ function createRiverbankClient(config) {
|
|
|
7154
7301
|
return await apiClient({ endpoint: "listPublicCourses", params: apiParams, options: { signal: sig } });
|
|
7155
7302
|
}, { signal });
|
|
7156
7303
|
},
|
|
7304
|
+
async listPublicTeamMembers(params) {
|
|
7305
|
+
const { siteId, stage, signal } = params;
|
|
7306
|
+
if (!siteId) {
|
|
7307
|
+
throw new Error("listPublicTeamMembers() requires siteId");
|
|
7308
|
+
}
|
|
7309
|
+
const cacheKey = `public-team-members:${siteId}:${stage ?? ""}`;
|
|
7310
|
+
return resilientFetch(cacheKey, async (sig) => {
|
|
7311
|
+
const apiParams = {
|
|
7312
|
+
siteId,
|
|
7313
|
+
...stage && { stage }
|
|
7314
|
+
};
|
|
7315
|
+
return await apiClient({
|
|
7316
|
+
endpoint: "listPublicTeamMembers",
|
|
7317
|
+
params: apiParams,
|
|
7318
|
+
options: { signal: sig }
|
|
7319
|
+
});
|
|
7320
|
+
}, { signal });
|
|
7321
|
+
},
|
|
7157
7322
|
async listPublicProducts(params) {
|
|
7158
7323
|
const { siteId, stage, categorySelector, signal } = params;
|
|
7159
7324
|
if (!siteId) {
|
|
@@ -8191,6 +8356,7 @@ var SUPPORTED_LOADER_ENDPOINTS = [
|
|
|
8191
8356
|
"listPublicEvents",
|
|
8192
8357
|
"getPublicEventDetails",
|
|
8193
8358
|
"listPublicCourses",
|
|
8359
|
+
"listPublicTeamMembers",
|
|
8194
8360
|
"listPublicProducts",
|
|
8195
8361
|
"listPublicPasses",
|
|
8196
8362
|
"listPublicMemberships",
|
|
@@ -9407,1604 +9573,1012 @@ function assertUniqueLayoutProfileKeys(profiles) {
|
|
|
9407
9573
|
}
|
|
9408
9574
|
}
|
|
9409
9575
|
|
|
9410
|
-
// ../theme-core/src/
|
|
9576
|
+
// ../theme-core/src/buttons/personalities/types.ts
|
|
9577
|
+
import { z as z11 } from "zod";
|
|
9578
|
+
|
|
9579
|
+
// ../theme-core/src/buttons/types.ts
|
|
9411
9580
|
import { z as z9 } from "zod";
|
|
9581
|
+
var VARIANT_ROLES = [
|
|
9582
|
+
"primary",
|
|
9583
|
+
"secondary",
|
|
9584
|
+
"outline",
|
|
9585
|
+
"ghost",
|
|
9586
|
+
"link",
|
|
9587
|
+
"tertiary",
|
|
9588
|
+
"accent"
|
|
9589
|
+
];
|
|
9590
|
+
var cornerStyleSchema = z9.enum(["square", "rounded", "pill"]);
|
|
9591
|
+
var shadowSizeSchema = z9.enum(["none", "low", "medium", "high"]);
|
|
9592
|
+
var textTransformSchema = z9.enum(["none", "uppercase", "lowercase", "capitalize"]);
|
|
9593
|
+
var fontWeightSchema = z9.union([z9.literal(500), z9.literal(600), z9.literal(700)]);
|
|
9594
|
+
var buttonTypographySchema = z9.enum(["body", "heading"]);
|
|
9595
|
+
var letterSpacingSchema = z9.enum(["tight", "normal", "loose"]);
|
|
9596
|
+
var hoverTransformSchema = z9.enum(["none", "lift", "scale", "press"]);
|
|
9597
|
+
var hoverColorSchema = z9.enum(["none", "brighten", "darken", "saturate", "token"]);
|
|
9598
|
+
var buttonPaddingPresetSchema = z9.enum(["compact", "default", "spacious"]);
|
|
9599
|
+
var gradientStyleSchema = z9.enum(["linear", "radial", "conic"]);
|
|
9600
|
+
var gradientSharpnessSchema = z9.enum(["smooth", "medium", "hard"]);
|
|
9601
|
+
var prioritySchema = z9.union([z9.literal(1), z9.literal(2), z9.literal(3)]);
|
|
9602
|
+
var variantRoleSchema = z9.enum(VARIANT_ROLES);
|
|
9603
|
+
var buttonSizeNameSchema = z9.enum(["sm", "md", "lg", "xl"]);
|
|
9604
|
+
var PADDING_TOKEN_PATTERN = /^(?:0|\d+(?:\.\d+)?(?:rem|em|px|%))$/;
|
|
9605
|
+
var paddingShorthandSchema = z9.string().refine(
|
|
9606
|
+
(value) => {
|
|
9607
|
+
const parts = value.split(/\s+/).filter(Boolean);
|
|
9608
|
+
return parts.length === 2 && parts.every((token) => PADDING_TOKEN_PATTERN.test(token));
|
|
9609
|
+
},
|
|
9610
|
+
{
|
|
9611
|
+
message: 'Padding must be two space-separated CSS length tokens (e.g. "0.5rem 1rem"). Use `0` for zero.'
|
|
9612
|
+
}
|
|
9613
|
+
);
|
|
9614
|
+
var buttonSizeConfigSchema = z9.object({
|
|
9615
|
+
padding: paddingShorthandSchema,
|
|
9616
|
+
fontSize: z9.string().optional()
|
|
9617
|
+
});
|
|
9618
|
+
var buttonSizesSchema = z9.object({
|
|
9619
|
+
sm: buttonSizeConfigSchema,
|
|
9620
|
+
md: buttonSizeConfigSchema,
|
|
9621
|
+
lg: buttonSizeConfigSchema,
|
|
9622
|
+
xl: buttonSizeConfigSchema.optional()
|
|
9623
|
+
}).transform(({ sm, md, lg, xl }) => ({
|
|
9624
|
+
sm,
|
|
9625
|
+
md,
|
|
9626
|
+
lg,
|
|
9627
|
+
xl: xl ?? lg
|
|
9628
|
+
}));
|
|
9629
|
+
var buttonGlobalSettingsSchema = z9.object({
|
|
9630
|
+
cornerStyle: cornerStyleSchema,
|
|
9631
|
+
cornerRadius: z9.number().min(0).max(24).optional(),
|
|
9632
|
+
shadow: shadowSizeSchema,
|
|
9633
|
+
textTransform: textTransformSchema,
|
|
9634
|
+
fontWeight: fontWeightSchema,
|
|
9635
|
+
/**
|
|
9636
|
+
* @deprecated Set per-variant via `variant.border.widthClass` instead.
|
|
9637
|
+
* Schema field is preserved so existing presets parse; the value is unread
|
|
9638
|
+
* by the current generator and will be removed once the legacy
|
|
9639
|
+
* `primitives/content/components/Button.tsx` slot exports are deleted.
|
|
9640
|
+
*/
|
|
9641
|
+
borderWidth: z9.union([z9.literal(1), z9.literal(2), z9.literal(3)]),
|
|
9642
|
+
// === Family-level typography ===
|
|
9643
|
+
// Typography source (body or heading) — selects which theme typography pool to inherit
|
|
9644
|
+
typography: buttonTypographySchema.optional(),
|
|
9645
|
+
// Font size for all variants in the family (Tailwind token, e.g. "text-xs", "text-sm")
|
|
9646
|
+
// Sized variants get this as default; fixed variants inherit unless they override.
|
|
9647
|
+
// Size class CSS may still override at run time for sized variants.
|
|
9648
|
+
fontSize: z9.string().optional(),
|
|
9649
|
+
// Letter spacing applied to all variants
|
|
9650
|
+
letterSpacing: letterSpacingSchema.optional(),
|
|
9651
|
+
// Italic style
|
|
9652
|
+
italic: z9.boolean().optional(),
|
|
9653
|
+
// Padding preset (applies to sized variants without a sizes config)
|
|
9654
|
+
paddingPreset: buttonPaddingPresetSchema.optional(),
|
|
9655
|
+
hoverTransform: hoverTransformSchema,
|
|
9656
|
+
hoverColor: hoverColorSchema,
|
|
9657
|
+
// When hoverColor is 'token', this specifies which token to use
|
|
9658
|
+
hoverColorToken: z9.string().optional(),
|
|
9659
|
+
// Gradient settings (if any variant uses gradients)
|
|
9660
|
+
gradientStyle: gradientStyleSchema.optional(),
|
|
9661
|
+
gradientAngle: z9.number().min(0).max(360).optional(),
|
|
9662
|
+
gradientSharpness: gradientSharpnessSchema.optional()
|
|
9663
|
+
});
|
|
9664
|
+
var gradientDirectionSchema = z9.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
|
|
9665
|
+
var buttonBackgroundSchema = z9.discriminatedUnion("type", [
|
|
9666
|
+
z9.object({ type: z9.literal("solid"), colorToken: z9.string() }),
|
|
9667
|
+
z9.object({
|
|
9668
|
+
type: z9.literal("gradient"),
|
|
9669
|
+
stops: z9.array(z9.string()).min(2),
|
|
9670
|
+
direction: gradientDirectionSchema
|
|
9671
|
+
}),
|
|
9672
|
+
z9.object({ type: z9.literal("transparent") })
|
|
9673
|
+
]);
|
|
9674
|
+
var effectApplicationSchema = z9.object({
|
|
9675
|
+
effectId: z9.string(),
|
|
9676
|
+
options: z9.record(z9.string(), z9.any()).optional()
|
|
9677
|
+
});
|
|
9678
|
+
var buttonBorderSchema = z9.object({
|
|
9679
|
+
widthClass: z9.string(),
|
|
9680
|
+
colorToken: z9.string()
|
|
9681
|
+
});
|
|
9682
|
+
var variantShadowSchema = z9.object({
|
|
9683
|
+
elevation: z9.enum(["none", "low", "medium", "high"]),
|
|
9684
|
+
softness: z9.enum(["crisp", "soft", "hard"]).nullable(),
|
|
9685
|
+
position: z9.enum(["bottom", "bottom-right"]).default("bottom")
|
|
9686
|
+
});
|
|
9687
|
+
var variantEffectsSchema = z9.object({
|
|
9688
|
+
base: z9.array(effectApplicationSchema).optional(),
|
|
9689
|
+
hover: z9.array(effectApplicationSchema).optional(),
|
|
9690
|
+
active: z9.array(effectApplicationSchema).optional(),
|
|
9691
|
+
focus: z9.array(effectApplicationSchema).optional()
|
|
9692
|
+
});
|
|
9693
|
+
var variantSizeOverridesSchema = z9.object({
|
|
9694
|
+
sm: buttonSizeConfigSchema.optional(),
|
|
9695
|
+
md: buttonSizeConfigSchema.optional(),
|
|
9696
|
+
lg: buttonSizeConfigSchema.optional(),
|
|
9697
|
+
xl: buttonSizeConfigSchema.optional()
|
|
9698
|
+
});
|
|
9699
|
+
var buttonVariantSchema = z9.object({
|
|
9700
|
+
id: z9.string(),
|
|
9701
|
+
name: z9.string().min(1).max(20),
|
|
9702
|
+
enabled: z9.boolean(),
|
|
9703
|
+
priority: prioritySchema,
|
|
9704
|
+
// Base appearance (token-based)
|
|
9705
|
+
background: buttonBackgroundSchema,
|
|
9706
|
+
textColorToken: z9.string(),
|
|
9707
|
+
/** Tailwind radius token (e.g. `'rounded-md'`). Omit to inherit from `global.cornerStyle`. */
|
|
9708
|
+
borderRadius: z9.string().optional(),
|
|
9709
|
+
// Optional shadow override (uses theme.shadow if not specified)
|
|
9710
|
+
shadow: variantShadowSchema.optional(),
|
|
9711
|
+
// Border (optional)
|
|
9712
|
+
border: buttonBorderSchema.optional(),
|
|
9713
|
+
// Hover background token (per-variant override, takes precedence over global hoverColorToken)
|
|
9714
|
+
hoverBackgroundToken: z9.string().optional(),
|
|
9715
|
+
// Effect composition
|
|
9716
|
+
effects: variantEffectsSchema.optional(),
|
|
9717
|
+
// Per-variant size overrides — see VariantSizeOverrides
|
|
9718
|
+
sizes: variantSizeOverridesSchema.optional()
|
|
9719
|
+
});
|
|
9720
|
+
var buttonSystemSchema = z9.object({
|
|
9721
|
+
global: buttonGlobalSettingsSchema,
|
|
9722
|
+
variants: z9.array(buttonVariantSchema).min(1).max(6),
|
|
9723
|
+
sizes: buttonSizesSchema.optional()
|
|
9724
|
+
});
|
|
9725
|
+
|
|
9726
|
+
// ../theme-core/src/site-styles/styleTags.ts
|
|
9727
|
+
import { z as z10 } from "zod";
|
|
9412
9728
|
var STYLE_AXIS_VALUES = {
|
|
9413
9729
|
tone: ["minimal", "classic", "bold"],
|
|
9414
9730
|
energy: ["calm", "vibrant"],
|
|
9415
9731
|
motion: ["subtle", "standard", "expressive"],
|
|
9416
9732
|
era: ["editorial", "modern", "organic", "technical", "retro"]
|
|
9417
9733
|
};
|
|
9418
|
-
var styleTagsSchema =
|
|
9419
|
-
tone:
|
|
9420
|
-
energy:
|
|
9421
|
-
motion:
|
|
9422
|
-
era:
|
|
9734
|
+
var styleTagsSchema = z10.object({
|
|
9735
|
+
tone: z10.enum(STYLE_AXIS_VALUES.tone).optional(),
|
|
9736
|
+
energy: z10.enum(STYLE_AXIS_VALUES.energy).optional(),
|
|
9737
|
+
motion: z10.enum(STYLE_AXIS_VALUES.motion).optional(),
|
|
9738
|
+
era: z10.enum(STYLE_AXIS_VALUES.era).optional()
|
|
9423
9739
|
});
|
|
9424
9740
|
|
|
9425
|
-
// ../theme-core/src/
|
|
9426
|
-
|
|
9427
|
-
|
|
9428
|
-
|
|
9429
|
-
panelFrame("raised"),
|
|
9430
|
-
flushPanelFrame({ bleed: "start" })
|
|
9431
|
-
];
|
|
9432
|
-
var userContentFrames = [
|
|
9433
|
-
...generatedContentFrames,
|
|
9434
|
-
panelFrame("editorial"),
|
|
9435
|
-
flushPanelFrame({ bleed: "end" }),
|
|
9436
|
-
flushPanelFrame({ bleed: "both" })
|
|
9437
|
-
];
|
|
9438
|
-
var generatedDesignOptionCatalog = {
|
|
9439
|
-
source: "generated",
|
|
9440
|
-
sectionSurfaces: ["base", "muted-band", "accent-band", "hero-image"],
|
|
9441
|
-
contentFrames: generatedContentFrames,
|
|
9442
|
-
itemSurfaces: ["none", "default", "flat", "outlined", "raised"],
|
|
9443
|
-
transitions: ["none", "soft-fade-short", "soft-fade-long"],
|
|
9444
|
-
emphases: ["low", "medium", "high"],
|
|
9445
|
-
detachedCustom: false
|
|
9446
|
-
};
|
|
9447
|
-
var userDesignOptionCatalog = {
|
|
9448
|
-
source: "user",
|
|
9449
|
-
sectionSurfaces: generatedDesignOptionCatalog.sectionSurfaces,
|
|
9450
|
-
contentFrames: userContentFrames,
|
|
9451
|
-
itemSurfaces: [
|
|
9452
|
-
...generatedDesignOptionCatalog.itemSurfaces,
|
|
9453
|
-
"inset",
|
|
9454
|
-
"editorial"
|
|
9455
|
-
],
|
|
9456
|
-
transitions: [
|
|
9457
|
-
...generatedDesignOptionCatalog.transitions,
|
|
9458
|
-
"wave-edge",
|
|
9459
|
-
"angle-edge"
|
|
9460
|
-
],
|
|
9461
|
-
emphases: generatedDesignOptionCatalog.emphases,
|
|
9462
|
-
detachedCustom: false
|
|
9463
|
-
};
|
|
9464
|
-
var advancedDesignOptionCatalog = {
|
|
9465
|
-
source: "advanced",
|
|
9466
|
-
sectionSurfaces: userDesignOptionCatalog.sectionSurfaces,
|
|
9467
|
-
contentFrames: userDesignOptionCatalog.contentFrames,
|
|
9468
|
-
itemSurfaces: userDesignOptionCatalog.itemSurfaces,
|
|
9469
|
-
transitions: userDesignOptionCatalog.transitions,
|
|
9470
|
-
emphases: userDesignOptionCatalog.emphases,
|
|
9471
|
-
detachedCustom: true
|
|
9472
|
-
};
|
|
9473
|
-
|
|
9474
|
-
// ../theme-core/src/site-styles/curatedSiteStyles.ts
|
|
9475
|
-
var curatedSiteStyleIdValues = [
|
|
9476
|
-
"site-style:calm-studio",
|
|
9477
|
-
"site-style:clear-professional",
|
|
9478
|
-
"site-style:warm-editorial",
|
|
9479
|
-
"site-style:bright-community",
|
|
9480
|
-
"site-style:quiet-luxury",
|
|
9481
|
-
"site-style:practical-services",
|
|
9482
|
-
"site-style:modern-wellness",
|
|
9483
|
-
"site-style:bold-launch"
|
|
9484
|
-
];
|
|
9485
|
-
var quietBudget = {
|
|
9486
|
-
accentDensity: "low",
|
|
9487
|
-
panelDensity: "medium",
|
|
9488
|
-
transitionMix: "quiet",
|
|
9489
|
-
primaryCtaLimit: 2,
|
|
9490
|
-
mediaDensity: "medium",
|
|
9491
|
-
decorativeRepetition: "low"
|
|
9492
|
-
};
|
|
9493
|
-
var balancedBudget = {
|
|
9494
|
-
accentDensity: "medium",
|
|
9495
|
-
panelDensity: "medium",
|
|
9496
|
-
transitionMix: "balanced",
|
|
9497
|
-
primaryCtaLimit: 3,
|
|
9498
|
-
mediaDensity: "medium",
|
|
9499
|
-
decorativeRepetition: "medium"
|
|
9500
|
-
};
|
|
9501
|
-
var expressiveBudget = {
|
|
9502
|
-
accentDensity: "high",
|
|
9503
|
-
panelDensity: "high",
|
|
9504
|
-
transitionMix: "expressive",
|
|
9505
|
-
primaryCtaLimit: 3,
|
|
9506
|
-
mediaDensity: "high",
|
|
9507
|
-
decorativeRepetition: "medium"
|
|
9508
|
-
};
|
|
9509
|
-
function uniqueContentFrameKinds() {
|
|
9510
|
-
const kinds = [...new Set(
|
|
9511
|
-
generatedDesignOptionCatalog.contentFrames.map((frame) => frame.kind)
|
|
9512
|
-
)];
|
|
9513
|
-
const firstKind = kinds[0];
|
|
9514
|
-
if (!firstKind) {
|
|
9515
|
-
throw new Error("Expected generated design option catalog to expose at least one content frame kind.");
|
|
9741
|
+
// ../theme-core/src/buttons/personalities/types.ts
|
|
9742
|
+
function asButtonPersonalityId(value) {
|
|
9743
|
+
if (value.length === 0) {
|
|
9744
|
+
throw new Error("ButtonPersonalityId must be a non-empty string");
|
|
9516
9745
|
}
|
|
9517
|
-
return
|
|
9746
|
+
return value;
|
|
9518
9747
|
}
|
|
9519
|
-
var
|
|
9520
|
-
|
|
9748
|
+
var buttonPersonalityIdSchema = z11.string().min(1).transform((value) => asButtonPersonalityId(value));
|
|
9749
|
+
var buttonPersonalitySchema = z11.object({
|
|
9750
|
+
id: buttonPersonalityIdSchema,
|
|
9751
|
+
name: z11.string().min(1),
|
|
9752
|
+
description: z11.string().min(1),
|
|
9753
|
+
tags: styleTagsSchema,
|
|
9754
|
+
buttonSystem: buttonSystemSchema
|
|
9755
|
+
});
|
|
9756
|
+
function defineButtonPersonality(input) {
|
|
9521
9757
|
return {
|
|
9522
|
-
id:
|
|
9758
|
+
id: asButtonPersonalityId(input.id),
|
|
9523
9759
|
name: input.name,
|
|
9524
9760
|
description: input.description,
|
|
9525
|
-
|
|
9526
|
-
|
|
9527
|
-
template: {
|
|
9528
|
-
id: asDesignSystemTemplateId(`template:${input.id.replace("site-style:", "")}`),
|
|
9529
|
-
name: input.name,
|
|
9530
|
-
version: 1,
|
|
9531
|
-
tokenRecipes: input.tokenRecipes,
|
|
9532
|
-
compositionBudget: input.compositionBudget,
|
|
9533
|
-
supportedSectionSurfaces: generatedDesignOptionCatalog.sectionSurfaces,
|
|
9534
|
-
supportedContentFrames: generatedContentFrameKinds,
|
|
9535
|
-
supportedItemSurfaces: generatedDesignOptionCatalog.itemSurfaces,
|
|
9536
|
-
supportedTransitions: generatedDesignOptionCatalog.transitions
|
|
9537
|
-
},
|
|
9538
|
-
// The library IDs are already branded at construction (`asButtonPersonalityId`
|
|
9539
|
-
// / `asPaletteVariantId`); the closed-union input type guarantees only
|
|
9540
|
-
// shipped IDs reach this branch.
|
|
9541
|
-
defaultButtonPersonalityId: input.defaultButtonPersonalityId,
|
|
9542
|
-
acceptedButtons: input.acceptedButtons,
|
|
9543
|
-
defaultPaletteVariantId: input.defaultPaletteVariantId,
|
|
9544
|
-
acceptedPalettes: input.acceptedPalettes
|
|
9761
|
+
tags: input.tags,
|
|
9762
|
+
buttonSystem: input.buttonSystem
|
|
9545
9763
|
};
|
|
9546
9764
|
}
|
|
9547
|
-
|
|
9548
|
-
|
|
9549
|
-
|
|
9550
|
-
|
|
9551
|
-
|
|
9552
|
-
|
|
9553
|
-
|
|
9554
|
-
|
|
9555
|
-
|
|
9556
|
-
|
|
9557
|
-
shadow: "
|
|
9558
|
-
|
|
9559
|
-
|
|
9560
|
-
|
|
9561
|
-
|
|
9562
|
-
|
|
9563
|
-
defaultButtonPersonalityId: "soft-pill",
|
|
9564
|
-
acceptedButtons: { tone: ["minimal", "classic"], era: ["organic", "editorial"] },
|
|
9565
|
-
defaultPaletteVariantId: "soft-natural-sage",
|
|
9566
|
-
acceptedPalettes: { tone: ["minimal", "classic"], era: ["organic"] }
|
|
9567
|
-
}),
|
|
9568
|
-
defineCuratedSiteStyle({
|
|
9569
|
-
id: "site-style:clear-professional",
|
|
9570
|
-
name: "Clear Professional",
|
|
9571
|
-
description: "Crisp, trustworthy, and direct for local services and consultancies.",
|
|
9572
|
-
generationBrief: "Prioritize clarity, proof, service detail, and easy next steps. Keep visuals polished and specific, with restrained decorative treatment.",
|
|
9573
|
-
tokenRecipes: {
|
|
9574
|
-
palette: "brand-led",
|
|
9575
|
-
contrast: "strong",
|
|
9576
|
-
radius: "soft",
|
|
9577
|
-
shadow: "subtle",
|
|
9578
|
-
typography: "clean-sans",
|
|
9579
|
-
spacing: "regular",
|
|
9580
|
-
motion: "subtle"
|
|
9765
|
+
|
|
9766
|
+
// ../theme-core/src/buttons/personalities/brushed-wash.ts
|
|
9767
|
+
var brushedWash = defineButtonPersonality({
|
|
9768
|
+
id: "brushed-wash",
|
|
9769
|
+
name: "Brushed Wash",
|
|
9770
|
+
description: "Watercolour-gradient buttons with soft shadows and generous padding.",
|
|
9771
|
+
tags: { tone: "classic", energy: "vibrant", motion: "standard", era: "organic" },
|
|
9772
|
+
buttonSystem: {
|
|
9773
|
+
global: {
|
|
9774
|
+
cornerStyle: "rounded",
|
|
9775
|
+
shadow: "low",
|
|
9776
|
+
textTransform: "none",
|
|
9777
|
+
fontWeight: 500,
|
|
9778
|
+
borderWidth: 1,
|
|
9779
|
+
hoverTransform: "none",
|
|
9780
|
+
hoverColor: "none"
|
|
9581
9781
|
},
|
|
9582
|
-
|
|
9583
|
-
|
|
9584
|
-
|
|
9585
|
-
|
|
9586
|
-
|
|
9587
|
-
}),
|
|
9588
|
-
defineCuratedSiteStyle({
|
|
9589
|
-
id: "site-style:warm-editorial",
|
|
9590
|
-
name: "Warm Editorial",
|
|
9591
|
-
description: "Story-led and textured for educators, makers, venues, and retreats.",
|
|
9592
|
-
generationBrief: "Let the copy feel thoughtful and grounded. Favor narrative sections, supporting media, and a small number of editorial panels.",
|
|
9593
|
-
tokenRecipes: {
|
|
9594
|
-
palette: "warm-neutral",
|
|
9595
|
-
contrast: "standard",
|
|
9596
|
-
radius: "square",
|
|
9597
|
-
shadow: "none",
|
|
9598
|
-
typography: "serif-editorial",
|
|
9599
|
-
spacing: "airy",
|
|
9600
|
-
motion: "subtle"
|
|
9782
|
+
sizes: {
|
|
9783
|
+
sm: { padding: "0.75rem 2rem", fontSize: "text-sm" },
|
|
9784
|
+
md: { padding: "1rem 2.5rem" },
|
|
9785
|
+
lg: { padding: "1.25rem 3rem", fontSize: "text-lg" },
|
|
9786
|
+
xl: { padding: "1.625rem 3.75rem", fontSize: "text-xl" }
|
|
9601
9787
|
},
|
|
9602
|
-
|
|
9603
|
-
|
|
9604
|
-
|
|
9605
|
-
|
|
9606
|
-
|
|
9607
|
-
|
|
9608
|
-
|
|
9609
|
-
|
|
9610
|
-
|
|
9611
|
-
|
|
9612
|
-
|
|
9613
|
-
|
|
9614
|
-
|
|
9615
|
-
|
|
9616
|
-
|
|
9617
|
-
|
|
9618
|
-
|
|
9619
|
-
|
|
9620
|
-
|
|
9788
|
+
variants: [
|
|
9789
|
+
{
|
|
9790
|
+
id: "primary",
|
|
9791
|
+
name: "Primary",
|
|
9792
|
+
enabled: true,
|
|
9793
|
+
priority: 1,
|
|
9794
|
+
background: {
|
|
9795
|
+
type: "gradient",
|
|
9796
|
+
stops: ["primary", "accent"],
|
|
9797
|
+
direction: "to-r"
|
|
9798
|
+
},
|
|
9799
|
+
textColorToken: "primaryForeground",
|
|
9800
|
+
borderRadius: "rounded-lg",
|
|
9801
|
+
shadow: { elevation: "low", softness: "soft", position: "bottom" },
|
|
9802
|
+
effects: {
|
|
9803
|
+
hover: [{ effectId: "opacity-reduce", options: { reduction: -15 } }]
|
|
9804
|
+
}
|
|
9805
|
+
},
|
|
9806
|
+
{
|
|
9807
|
+
id: "secondary",
|
|
9808
|
+
name: "Secondary",
|
|
9809
|
+
enabled: true,
|
|
9810
|
+
priority: 2,
|
|
9811
|
+
background: {
|
|
9812
|
+
type: "gradient",
|
|
9813
|
+
stops: ["secondary", "accent"],
|
|
9814
|
+
direction: "to-br"
|
|
9815
|
+
},
|
|
9816
|
+
textColorToken: "primaryForeground",
|
|
9817
|
+
borderRadius: "rounded-lg",
|
|
9818
|
+
shadow: { elevation: "low", softness: "soft", position: "bottom" },
|
|
9819
|
+
effects: {
|
|
9820
|
+
hover: [{ effectId: "opacity-reduce", options: { reduction: -15 } }]
|
|
9821
|
+
}
|
|
9822
|
+
},
|
|
9823
|
+
{
|
|
9824
|
+
id: "outline",
|
|
9825
|
+
name: "Outline",
|
|
9826
|
+
enabled: true,
|
|
9827
|
+
priority: 3,
|
|
9828
|
+
background: { type: "transparent" },
|
|
9829
|
+
textColorToken: "primary",
|
|
9830
|
+
borderRadius: "rounded-lg",
|
|
9831
|
+
border: { widthClass: "border", colorToken: "primary" },
|
|
9832
|
+
effects: {
|
|
9833
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
9834
|
+
}
|
|
9835
|
+
},
|
|
9836
|
+
{
|
|
9837
|
+
id: "ghost",
|
|
9838
|
+
name: "Ghost",
|
|
9839
|
+
enabled: true,
|
|
9840
|
+
priority: 3,
|
|
9841
|
+
background: { type: "transparent" },
|
|
9842
|
+
textColorToken: "text",
|
|
9843
|
+
borderRadius: "rounded-lg",
|
|
9844
|
+
effects: {
|
|
9845
|
+
hover: [
|
|
9846
|
+
{ effectId: "background-on-hover", options: { colorToken: "surface" } }
|
|
9847
|
+
]
|
|
9848
|
+
}
|
|
9849
|
+
}
|
|
9850
|
+
]
|
|
9851
|
+
}
|
|
9852
|
+
});
|
|
9853
|
+
|
|
9854
|
+
// ../theme-core/src/buttons/personalities/confident-chip.ts
|
|
9855
|
+
var confidentChip = defineButtonPersonality({
|
|
9856
|
+
id: "confident-chip",
|
|
9857
|
+
name: "Confident Chip",
|
|
9858
|
+
description: "Mid-radius solid buttons with a crisp hover.",
|
|
9859
|
+
tags: { tone: "classic", energy: "calm", motion: "standard", era: "modern" },
|
|
9860
|
+
buttonSystem: {
|
|
9861
|
+
global: {
|
|
9862
|
+
cornerStyle: "rounded",
|
|
9863
|
+
shadow: "medium",
|
|
9864
|
+
textTransform: "none",
|
|
9865
|
+
fontWeight: 600,
|
|
9866
|
+
borderWidth: 1,
|
|
9867
|
+
hoverTransform: "none",
|
|
9868
|
+
hoverColor: "none"
|
|
9621
9869
|
},
|
|
9622
|
-
|
|
9623
|
-
|
|
9624
|
-
|
|
9625
|
-
|
|
9626
|
-
|
|
9627
|
-
|
|
9628
|
-
|
|
9629
|
-
|
|
9630
|
-
|
|
9631
|
-
|
|
9632
|
-
|
|
9633
|
-
|
|
9634
|
-
|
|
9635
|
-
|
|
9636
|
-
|
|
9637
|
-
|
|
9638
|
-
|
|
9639
|
-
|
|
9640
|
-
|
|
9641
|
-
|
|
9642
|
-
|
|
9643
|
-
|
|
9870
|
+
variants: [
|
|
9871
|
+
{
|
|
9872
|
+
id: "primary",
|
|
9873
|
+
name: "Primary",
|
|
9874
|
+
enabled: true,
|
|
9875
|
+
priority: 1,
|
|
9876
|
+
background: { type: "solid", colorToken: "primary" },
|
|
9877
|
+
textColorToken: "primaryForeground",
|
|
9878
|
+
borderRadius: "rounded-md",
|
|
9879
|
+
shadow: { elevation: "medium", softness: "soft", position: "bottom" },
|
|
9880
|
+
effects: {
|
|
9881
|
+
hover: [{ effectId: "darken-background", options: { amount: 60 } }],
|
|
9882
|
+
active: [{ effectId: "scale-down", options: { scale: "0.97" } }]
|
|
9883
|
+
}
|
|
9884
|
+
},
|
|
9885
|
+
{
|
|
9886
|
+
id: "secondary",
|
|
9887
|
+
name: "Secondary",
|
|
9888
|
+
enabled: true,
|
|
9889
|
+
priority: 2,
|
|
9890
|
+
background: { type: "solid", colorToken: "surface" },
|
|
9891
|
+
textColorToken: "text",
|
|
9892
|
+
borderRadius: "rounded-md",
|
|
9893
|
+
border: { widthClass: "border", colorToken: "border" },
|
|
9894
|
+
effects: {
|
|
9895
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "background" } }]
|
|
9896
|
+
}
|
|
9897
|
+
},
|
|
9898
|
+
{
|
|
9899
|
+
id: "outline",
|
|
9900
|
+
name: "Outline",
|
|
9901
|
+
enabled: true,
|
|
9902
|
+
priority: 3,
|
|
9903
|
+
background: { type: "transparent" },
|
|
9904
|
+
textColorToken: "primary",
|
|
9905
|
+
borderRadius: "rounded-md",
|
|
9906
|
+
border: { widthClass: "border", colorToken: "primary" },
|
|
9907
|
+
effects: {
|
|
9908
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
9909
|
+
}
|
|
9910
|
+
},
|
|
9911
|
+
{
|
|
9912
|
+
id: "ghost",
|
|
9913
|
+
name: "Ghost",
|
|
9914
|
+
enabled: true,
|
|
9915
|
+
priority: 3,
|
|
9916
|
+
background: { type: "transparent" },
|
|
9917
|
+
textColorToken: "primary",
|
|
9918
|
+
borderRadius: "rounded-md",
|
|
9919
|
+
effects: {
|
|
9920
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
9921
|
+
}
|
|
9922
|
+
}
|
|
9923
|
+
]
|
|
9924
|
+
}
|
|
9925
|
+
});
|
|
9926
|
+
|
|
9927
|
+
// ../theme-core/src/buttons/personalities/editorial-link.ts
|
|
9928
|
+
var editorialLink = defineButtonPersonality({
|
|
9929
|
+
id: "editorial-link",
|
|
9930
|
+
name: "Editorial Link",
|
|
9931
|
+
description: "Link-style with a growing underline. Refined, typographic.",
|
|
9932
|
+
tags: { tone: "minimal", energy: "calm", motion: "subtle", era: "editorial" },
|
|
9933
|
+
buttonSystem: {
|
|
9934
|
+
global: {
|
|
9935
|
+
cornerStyle: "square",
|
|
9644
9936
|
shadow: "none",
|
|
9645
|
-
|
|
9646
|
-
|
|
9647
|
-
|
|
9648
|
-
|
|
9649
|
-
|
|
9650
|
-
defaultButtonPersonalityId: "editorial-link",
|
|
9651
|
-
acceptedButtons: { tone: ["minimal", "classic"], era: ["editorial", "organic"] },
|
|
9652
|
-
defaultPaletteVariantId: "high-contrast-charcoal",
|
|
9653
|
-
acceptedPalettes: { tone: ["minimal", "classic"], era: ["editorial", "organic"] }
|
|
9654
|
-
}),
|
|
9655
|
-
defineCuratedSiteStyle({
|
|
9656
|
-
id: "site-style:practical-services",
|
|
9657
|
-
name: "Practical Services",
|
|
9658
|
-
description: "Efficient, plainspoken, and conversion-focused for trades and everyday services.",
|
|
9659
|
-
generationBrief: "Make services, location, trust signals, and contact paths obvious. Keep copy brief and avoid ornate visual treatments.",
|
|
9660
|
-
selectionKeywords: [
|
|
9661
|
-
"repair",
|
|
9662
|
-
"plumb",
|
|
9663
|
-
"electric",
|
|
9664
|
-
"cleaning",
|
|
9665
|
-
"landscap",
|
|
9666
|
-
"contractor"
|
|
9667
|
-
],
|
|
9668
|
-
tokenRecipes: {
|
|
9669
|
-
palette: "brand-led",
|
|
9670
|
-
contrast: "maximum",
|
|
9671
|
-
radius: "soft",
|
|
9672
|
-
shadow: "subtle",
|
|
9673
|
-
typography: "clean-sans",
|
|
9674
|
-
spacing: "compact",
|
|
9675
|
-
motion: "none"
|
|
9937
|
+
textTransform: "none",
|
|
9938
|
+
fontWeight: 500,
|
|
9939
|
+
borderWidth: 1,
|
|
9940
|
+
hoverTransform: "none",
|
|
9941
|
+
hoverColor: "none"
|
|
9676
9942
|
},
|
|
9677
|
-
|
|
9678
|
-
|
|
9679
|
-
|
|
9680
|
-
|
|
9681
|
-
|
|
9682
|
-
|
|
9683
|
-
|
|
9684
|
-
|
|
9685
|
-
|
|
9686
|
-
|
|
9687
|
-
|
|
9688
|
-
|
|
9689
|
-
|
|
9690
|
-
|
|
9691
|
-
|
|
9692
|
-
|
|
9693
|
-
|
|
9694
|
-
|
|
9695
|
-
|
|
9943
|
+
variants: [
|
|
9944
|
+
{
|
|
9945
|
+
id: "primary",
|
|
9946
|
+
name: "Primary",
|
|
9947
|
+
enabled: true,
|
|
9948
|
+
priority: 1,
|
|
9949
|
+
background: { type: "transparent" },
|
|
9950
|
+
textColorToken: "text",
|
|
9951
|
+
borderRadius: "rounded-none",
|
|
9952
|
+
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
9953
|
+
sizes: {
|
|
9954
|
+
sm: { padding: "0.25rem 0" },
|
|
9955
|
+
md: { padding: "0.5rem 0" },
|
|
9956
|
+
lg: { padding: "0.625rem 0" },
|
|
9957
|
+
xl: { padding: "0.75rem 0" }
|
|
9958
|
+
},
|
|
9959
|
+
effects: {
|
|
9960
|
+
base: [
|
|
9961
|
+
{ effectId: "border-bottom-grow", options: { height: 2, colorToken: "text", origin: "left" } }
|
|
9962
|
+
]
|
|
9963
|
+
}
|
|
9964
|
+
},
|
|
9965
|
+
{
|
|
9966
|
+
id: "secondary",
|
|
9967
|
+
name: "Secondary",
|
|
9968
|
+
enabled: true,
|
|
9969
|
+
priority: 2,
|
|
9970
|
+
background: { type: "transparent" },
|
|
9971
|
+
textColorToken: "mutedText",
|
|
9972
|
+
borderRadius: "rounded-none",
|
|
9973
|
+
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
9974
|
+
sizes: {
|
|
9975
|
+
sm: { padding: "0.25rem 0" },
|
|
9976
|
+
md: { padding: "0.5rem 0" },
|
|
9977
|
+
lg: { padding: "0.625rem 0" },
|
|
9978
|
+
xl: { padding: "0.75rem 0" }
|
|
9979
|
+
},
|
|
9980
|
+
effects: {
|
|
9981
|
+
base: [
|
|
9982
|
+
{ effectId: "border-bottom-grow", options: { height: 1, colorToken: "mutedText", origin: "left" } }
|
|
9983
|
+
]
|
|
9984
|
+
}
|
|
9985
|
+
},
|
|
9986
|
+
{
|
|
9987
|
+
id: "outline",
|
|
9988
|
+
name: "Outline",
|
|
9989
|
+
enabled: true,
|
|
9990
|
+
priority: 3,
|
|
9991
|
+
background: { type: "transparent" },
|
|
9992
|
+
textColorToken: "accent",
|
|
9993
|
+
borderRadius: "rounded-none",
|
|
9994
|
+
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
9995
|
+
sizes: {
|
|
9996
|
+
sm: { padding: "0.25rem 0" },
|
|
9997
|
+
md: { padding: "0.5rem 0" },
|
|
9998
|
+
lg: { padding: "0.625rem 0" },
|
|
9999
|
+
xl: { padding: "0.75rem 0" }
|
|
10000
|
+
},
|
|
10001
|
+
effects: {
|
|
10002
|
+
base: [
|
|
10003
|
+
{ effectId: "border-bottom-grow", options: { height: 1, colorToken: "accent", origin: "left" } }
|
|
10004
|
+
]
|
|
10005
|
+
}
|
|
10006
|
+
},
|
|
10007
|
+
{
|
|
10008
|
+
id: "ghost",
|
|
10009
|
+
name: "Ghost",
|
|
10010
|
+
enabled: true,
|
|
10011
|
+
priority: 3,
|
|
10012
|
+
background: { type: "transparent" },
|
|
10013
|
+
textColorToken: "mutedText",
|
|
10014
|
+
borderRadius: "rounded-none",
|
|
10015
|
+
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
10016
|
+
sizes: {
|
|
10017
|
+
sm: { padding: "0.25rem 0" },
|
|
10018
|
+
md: { padding: "0.5rem 0" },
|
|
10019
|
+
lg: { padding: "0.625rem 0" },
|
|
10020
|
+
xl: { padding: "0.75rem 0" }
|
|
10021
|
+
},
|
|
10022
|
+
effects: {
|
|
10023
|
+
hover: [{ effectId: "opacity-reduce", options: { reduction: -20 } }]
|
|
10024
|
+
}
|
|
10025
|
+
}
|
|
10026
|
+
]
|
|
10027
|
+
}
|
|
10028
|
+
});
|
|
10029
|
+
|
|
10030
|
+
// ../theme-core/src/buttons/personalities/ink-stamp.ts
|
|
10031
|
+
var inkStamp = defineButtonPersonality({
|
|
10032
|
+
id: "ink-stamp",
|
|
10033
|
+
name: "Ink Stamp",
|
|
10034
|
+
description: "Hand-stamped block-print buttons with a slight lift on hover.",
|
|
10035
|
+
tags: { tone: "bold", energy: "vibrant", motion: "standard", era: "organic" },
|
|
10036
|
+
buttonSystem: {
|
|
10037
|
+
global: {
|
|
10038
|
+
cornerStyle: "rounded",
|
|
10039
|
+
shadow: "none",
|
|
10040
|
+
textTransform: "uppercase",
|
|
10041
|
+
fontWeight: 600,
|
|
10042
|
+
borderWidth: 1,
|
|
10043
|
+
hoverTransform: "none",
|
|
10044
|
+
hoverColor: "none",
|
|
10045
|
+
letterSpacing: "loose"
|
|
9696
10046
|
},
|
|
9697
|
-
|
|
9698
|
-
|
|
9699
|
-
|
|
9700
|
-
|
|
9701
|
-
|
|
9702
|
-
}),
|
|
9703
|
-
defineCuratedSiteStyle({
|
|
9704
|
-
id: "site-style:bold-launch",
|
|
9705
|
-
name: "Bold Launch",
|
|
9706
|
-
description: "High-energy and punchy for launches, campaigns, and creative offers.",
|
|
9707
|
-
generationBrief: "Use crisp positioning, bold hero structure, strong calls to action, and confident visual rhythm. Keep it precise, not shouty.",
|
|
9708
|
-
selectionKeywords: [
|
|
9709
|
-
"launch",
|
|
9710
|
-
"campaign",
|
|
9711
|
-
"preorder",
|
|
9712
|
-
"pre-order",
|
|
9713
|
-
"waitlist",
|
|
9714
|
-
"drop"
|
|
9715
|
-
],
|
|
9716
|
-
tokenRecipes: {
|
|
9717
|
-
palette: "high-contrast",
|
|
9718
|
-
contrast: "maximum",
|
|
9719
|
-
radius: "pill",
|
|
9720
|
-
shadow: "layered",
|
|
9721
|
-
typography: "clean-sans",
|
|
9722
|
-
spacing: "regular",
|
|
9723
|
-
motion: "expressive"
|
|
10047
|
+
sizes: {
|
|
10048
|
+
sm: { padding: "0.5rem 1.25rem", fontSize: "text-xs" },
|
|
10049
|
+
md: { padding: "0.75rem 1.75rem", fontSize: "text-sm" },
|
|
10050
|
+
lg: { padding: "0.875rem 2.25rem", fontSize: "text-base" },
|
|
10051
|
+
xl: { padding: "1.125rem 2.75rem", fontSize: "text-lg" }
|
|
9724
10052
|
},
|
|
9725
|
-
|
|
9726
|
-
|
|
9727
|
-
|
|
9728
|
-
|
|
9729
|
-
|
|
9730
|
-
|
|
10053
|
+
variants: [
|
|
10054
|
+
{
|
|
10055
|
+
id: "primary",
|
|
10056
|
+
name: "Primary",
|
|
10057
|
+
enabled: true,
|
|
10058
|
+
priority: 1,
|
|
10059
|
+
background: { type: "solid", colorToken: "primary" },
|
|
10060
|
+
textColorToken: "primaryForeground",
|
|
10061
|
+
borderRadius: "rounded-md",
|
|
10062
|
+
effects: {
|
|
10063
|
+
hover: [
|
|
10064
|
+
{ effectId: "drop-shadow", options: { intensity: "medium" } },
|
|
10065
|
+
{ effectId: "scale-up", options: { scale: "1.02" } }
|
|
10066
|
+
],
|
|
10067
|
+
active: [{ effectId: "scale-down", options: { scale: "0.98" } }]
|
|
10068
|
+
}
|
|
10069
|
+
},
|
|
10070
|
+
{
|
|
10071
|
+
id: "secondary",
|
|
10072
|
+
name: "Secondary",
|
|
10073
|
+
enabled: true,
|
|
10074
|
+
priority: 2,
|
|
10075
|
+
background: { type: "transparent" },
|
|
10076
|
+
textColorToken: "primary",
|
|
10077
|
+
borderRadius: "rounded-md",
|
|
10078
|
+
border: { widthClass: "border-2", colorToken: "primary" },
|
|
10079
|
+
effects: {
|
|
10080
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
10081
|
+
}
|
|
10082
|
+
},
|
|
10083
|
+
{
|
|
10084
|
+
id: "outline",
|
|
10085
|
+
name: "Outline",
|
|
10086
|
+
enabled: true,
|
|
10087
|
+
priority: 3,
|
|
10088
|
+
background: { type: "transparent" },
|
|
10089
|
+
textColorToken: "text",
|
|
10090
|
+
borderRadius: "rounded-md",
|
|
10091
|
+
border: { widthClass: "border-2", colorToken: "border" },
|
|
10092
|
+
effects: {
|
|
10093
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
10094
|
+
}
|
|
10095
|
+
},
|
|
10096
|
+
{
|
|
10097
|
+
id: "ghost",
|
|
10098
|
+
name: "Ghost",
|
|
10099
|
+
enabled: true,
|
|
10100
|
+
priority: 3,
|
|
10101
|
+
background: { type: "transparent" },
|
|
10102
|
+
textColorToken: "accent",
|
|
10103
|
+
borderRadius: "rounded-none",
|
|
10104
|
+
sizes: {
|
|
10105
|
+
sm: { padding: "0.375rem 0", fontSize: "text-xs" },
|
|
10106
|
+
md: { padding: "0.5rem 0", fontSize: "text-sm" },
|
|
10107
|
+
lg: { padding: "0.625rem 0", fontSize: "text-base" },
|
|
10108
|
+
xl: { padding: "0.75rem 0", fontSize: "text-lg" }
|
|
10109
|
+
},
|
|
10110
|
+
effects: {
|
|
10111
|
+
base: [{ effectId: "border-bottom-grow", options: { height: 1, colorToken: "accent", origin: "left" } }]
|
|
10112
|
+
}
|
|
10113
|
+
}
|
|
10114
|
+
]
|
|
10115
|
+
}
|
|
10116
|
+
});
|
|
10117
|
+
|
|
10118
|
+
// ../theme-core/src/buttons/personalities/pebble.ts
|
|
10119
|
+
var pebble = defineButtonPersonality({
|
|
10120
|
+
id: "pebble",
|
|
10121
|
+
name: "Pebble",
|
|
10122
|
+
description: "Generous pill buttons with a soft hover lift.",
|
|
10123
|
+
tags: { tone: "classic", energy: "calm", motion: "standard", era: "organic" },
|
|
10124
|
+
buttonSystem: {
|
|
10125
|
+
global: {
|
|
10126
|
+
cornerStyle: "pill",
|
|
10127
|
+
shadow: "none",
|
|
10128
|
+
textTransform: "none",
|
|
10129
|
+
fontWeight: 500,
|
|
10130
|
+
borderWidth: 2,
|
|
10131
|
+
hoverTransform: "none",
|
|
10132
|
+
hoverColor: "none"
|
|
10133
|
+
},
|
|
10134
|
+
sizes: {
|
|
10135
|
+
sm: { padding: "0.625rem 1.75rem", fontSize: "text-sm" },
|
|
10136
|
+
md: { padding: "0.875rem 2.25rem" },
|
|
10137
|
+
lg: { padding: "1.125rem 2.75rem", fontSize: "text-lg" },
|
|
10138
|
+
xl: { padding: "1.5rem 3.5rem", fontSize: "text-xl" }
|
|
10139
|
+
},
|
|
10140
|
+
variants: [
|
|
10141
|
+
{
|
|
10142
|
+
id: "primary",
|
|
10143
|
+
name: "Primary",
|
|
10144
|
+
enabled: true,
|
|
10145
|
+
priority: 1,
|
|
10146
|
+
background: { type: "solid", colorToken: "primary" },
|
|
10147
|
+
textColorToken: "primaryForeground",
|
|
10148
|
+
borderRadius: "rounded-full",
|
|
10149
|
+
effects: {
|
|
10150
|
+
hover: [
|
|
10151
|
+
{ effectId: "scale-up", options: { scale: "1.03" } },
|
|
10152
|
+
{ effectId: "drop-shadow", options: { intensity: "medium" } }
|
|
10153
|
+
]
|
|
10154
|
+
}
|
|
10155
|
+
},
|
|
10156
|
+
{
|
|
10157
|
+
id: "secondary",
|
|
10158
|
+
name: "Secondary",
|
|
10159
|
+
enabled: true,
|
|
10160
|
+
priority: 2,
|
|
10161
|
+
background: { type: "transparent" },
|
|
10162
|
+
textColorToken: "primary",
|
|
10163
|
+
borderRadius: "rounded-full",
|
|
10164
|
+
border: { widthClass: "border-2", colorToken: "accent" },
|
|
10165
|
+
effects: {
|
|
10166
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "accent" } }]
|
|
10167
|
+
}
|
|
10168
|
+
},
|
|
10169
|
+
{
|
|
10170
|
+
id: "outline",
|
|
10171
|
+
name: "Outline",
|
|
10172
|
+
enabled: true,
|
|
10173
|
+
priority: 3,
|
|
10174
|
+
background: { type: "transparent" },
|
|
10175
|
+
textColorToken: "text",
|
|
10176
|
+
borderRadius: "rounded-full",
|
|
10177
|
+
border: { widthClass: "border", colorToken: "border" },
|
|
10178
|
+
effects: {
|
|
10179
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
10180
|
+
}
|
|
10181
|
+
},
|
|
10182
|
+
{
|
|
10183
|
+
id: "ghost",
|
|
10184
|
+
name: "Ghost",
|
|
10185
|
+
enabled: true,
|
|
10186
|
+
priority: 3,
|
|
10187
|
+
background: { type: "transparent" },
|
|
10188
|
+
textColorToken: "primary",
|
|
10189
|
+
borderRadius: "rounded-full",
|
|
10190
|
+
sizes: {
|
|
10191
|
+
sm: { padding: "0.375rem 0.875rem", fontSize: "text-sm" },
|
|
10192
|
+
md: { padding: "0.5rem 1rem" },
|
|
10193
|
+
lg: { padding: "0.625rem 1.25rem", fontSize: "text-lg" },
|
|
10194
|
+
xl: { padding: "0.75rem 1.5rem", fontSize: "text-xl" }
|
|
10195
|
+
},
|
|
10196
|
+
effects: {
|
|
10197
|
+
hover: [{ effectId: "opacity-reduce", options: { reduction: 30 } }]
|
|
10198
|
+
}
|
|
10199
|
+
}
|
|
10200
|
+
]
|
|
10201
|
+
}
|
|
10202
|
+
});
|
|
10203
|
+
|
|
10204
|
+
// ../theme-core/src/buttons/personalities/soft-pill.ts
|
|
10205
|
+
var softPill = defineButtonPersonality({
|
|
10206
|
+
id: "soft-pill",
|
|
10207
|
+
name: "Soft Pill",
|
|
10208
|
+
description: "Rounded pills with a gentle lift on hover. Quietly modern.",
|
|
10209
|
+
tags: { tone: "classic", energy: "calm", motion: "subtle", era: "organic" },
|
|
10210
|
+
buttonSystem: {
|
|
10211
|
+
global: {
|
|
10212
|
+
cornerStyle: "pill",
|
|
10213
|
+
shadow: "low",
|
|
10214
|
+
textTransform: "none",
|
|
10215
|
+
fontWeight: 500,
|
|
10216
|
+
borderWidth: 2,
|
|
10217
|
+
hoverTransform: "lift",
|
|
10218
|
+
hoverColor: "none"
|
|
10219
|
+
},
|
|
10220
|
+
variants: [
|
|
10221
|
+
{
|
|
10222
|
+
id: "primary",
|
|
10223
|
+
name: "Primary",
|
|
10224
|
+
enabled: true,
|
|
10225
|
+
priority: 1,
|
|
10226
|
+
background: { type: "solid", colorToken: "primary" },
|
|
10227
|
+
textColorToken: "primaryForeground",
|
|
10228
|
+
borderRadius: "rounded-full",
|
|
10229
|
+
shadow: { elevation: "low", softness: "soft", position: "bottom" },
|
|
10230
|
+
effects: {
|
|
10231
|
+
hover: [{ effectId: "lift", options: { translateY: "-1px" } }],
|
|
10232
|
+
active: [{ effectId: "scale-down", options: { scale: "0.98" } }]
|
|
10233
|
+
}
|
|
10234
|
+
},
|
|
10235
|
+
{
|
|
10236
|
+
id: "secondary",
|
|
10237
|
+
name: "Secondary",
|
|
10238
|
+
enabled: true,
|
|
10239
|
+
priority: 2,
|
|
10240
|
+
background: { type: "transparent" },
|
|
10241
|
+
textColorToken: "primary",
|
|
10242
|
+
borderRadius: "rounded-full",
|
|
10243
|
+
border: { widthClass: "border-2", colorToken: "primary" },
|
|
10244
|
+
effects: {
|
|
10245
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
10246
|
+
}
|
|
10247
|
+
},
|
|
10248
|
+
{
|
|
10249
|
+
id: "outline",
|
|
10250
|
+
name: "Outline",
|
|
10251
|
+
enabled: true,
|
|
10252
|
+
priority: 3,
|
|
10253
|
+
background: { type: "transparent" },
|
|
10254
|
+
textColorToken: "text",
|
|
10255
|
+
borderRadius: "rounded-full",
|
|
10256
|
+
border: { widthClass: "border", colorToken: "border" },
|
|
10257
|
+
effects: {
|
|
10258
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
10259
|
+
}
|
|
10260
|
+
},
|
|
10261
|
+
{
|
|
10262
|
+
id: "ghost",
|
|
10263
|
+
name: "Ghost",
|
|
10264
|
+
enabled: true,
|
|
10265
|
+
priority: 3,
|
|
10266
|
+
background: { type: "transparent" },
|
|
10267
|
+
textColorToken: "text",
|
|
10268
|
+
borderRadius: "rounded-full",
|
|
10269
|
+
effects: {
|
|
10270
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
10271
|
+
}
|
|
10272
|
+
}
|
|
10273
|
+
]
|
|
10274
|
+
}
|
|
10275
|
+
});
|
|
10276
|
+
|
|
10277
|
+
// ../theme-core/src/buttons/personalities/index.ts
|
|
10278
|
+
var buttonPersonalities = [
|
|
10279
|
+
softPill,
|
|
10280
|
+
confidentChip,
|
|
10281
|
+
editorialLink,
|
|
10282
|
+
pebble,
|
|
10283
|
+
inkStamp,
|
|
10284
|
+
brushedWash
|
|
9731
10285
|
];
|
|
9732
|
-
var
|
|
9733
|
-
|
|
10286
|
+
var personalitiesById = new Map(
|
|
10287
|
+
buttonPersonalities.map((p) => [p.id, p])
|
|
9734
10288
|
);
|
|
9735
10289
|
|
|
9736
|
-
// ../theme-core/src/
|
|
9737
|
-
import { z as
|
|
9738
|
-
|
|
9739
|
-
// ../theme-core/src/site-styles/rawStyleFields.ts
|
|
9740
|
-
var themeV2RuntimeStyleFieldNames = [
|
|
9741
|
-
"_frameStyles",
|
|
9742
|
-
"_sectionStyles",
|
|
9743
|
-
"_containerStyles",
|
|
9744
|
-
"_cardStyles",
|
|
9745
|
-
// styleGroup is legacy runtime transition wiring rather than a nested
|
|
9746
|
-
// override object, but normal editors should still never see it directly.
|
|
9747
|
-
"styleGroup"
|
|
9748
|
-
];
|
|
9749
|
-
var themeV2BlockSpecificRawStyleFieldNames = [
|
|
9750
|
-
"_contentCardStyles",
|
|
9751
|
-
"_textCardStyles"
|
|
9752
|
-
];
|
|
9753
|
-
var themeV2NormalEditorRawStyleFieldNames = [
|
|
9754
|
-
...themeV2RuntimeStyleFieldNames,
|
|
9755
|
-
...themeV2BlockSpecificRawStyleFieldNames
|
|
9756
|
-
];
|
|
9757
|
-
var themeV2NormalEditorRawStyleFieldNameSet = new Set(
|
|
9758
|
-
themeV2NormalEditorRawStyleFieldNames
|
|
9759
|
-
);
|
|
9760
|
-
|
|
9761
|
-
// ../theme-core/src/site-styles/designState.ts
|
|
9762
|
-
var themeV2DesignStateSchemaVersion = 1;
|
|
9763
|
-
var designResolutionPolicySchema = z10.enum(["generated", "user", "admin", "sdk"]);
|
|
9764
|
-
var runtimeStyleFieldNameSchema = z10.enum(themeV2RuntimeStyleFieldNames);
|
|
9765
|
-
var nonEmptyRuntimeStyleFieldNamesSchema = z10.array(runtimeStyleFieldNameSchema).min(1).transform((fields3) => [
|
|
9766
|
-
fields3[0],
|
|
9767
|
-
...fields3.slice(1)
|
|
9768
|
-
]);
|
|
9769
|
-
var heroLegibilityStrategySchema = z10.enum([
|
|
9770
|
-
"none",
|
|
9771
|
-
"scrim-gradient",
|
|
9772
|
-
"solid-panel"
|
|
9773
|
-
]);
|
|
9774
|
-
function uniqueNonEmpty(values) {
|
|
9775
|
-
const uniqueValues = [...new Set(values)];
|
|
9776
|
-
const firstValue = uniqueValues[0];
|
|
9777
|
-
if (!firstValue) {
|
|
9778
|
-
throw new Error("Expected at least one Theme V2 design state option.");
|
|
9779
|
-
}
|
|
9780
|
-
return [firstValue, ...uniqueValues.slice(1)];
|
|
9781
|
-
}
|
|
9782
|
-
var userPanelTreatments = uniqueNonEmpty(
|
|
9783
|
-
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "panel").map((frame) => frame.treatment)
|
|
9784
|
-
);
|
|
9785
|
-
var userFlushTreatments = uniqueNonEmpty(
|
|
9786
|
-
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.treatment)
|
|
9787
|
-
);
|
|
9788
|
-
var userFlushBleeds = uniqueNonEmpty(
|
|
9789
|
-
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.bleed)
|
|
9790
|
-
);
|
|
9791
|
-
var contentFrameIntentSchema = z10.discriminatedUnion("kind", [
|
|
9792
|
-
z10.object({ kind: z10.literal("plain") }).strict(),
|
|
9793
|
-
z10.object({
|
|
9794
|
-
kind: z10.literal("panel"),
|
|
9795
|
-
treatment: z10.enum(userPanelTreatments)
|
|
9796
|
-
}).strict(),
|
|
9797
|
-
z10.object({
|
|
9798
|
-
kind: z10.literal("flush-panel"),
|
|
9799
|
-
treatment: z10.enum(userFlushTreatments),
|
|
9800
|
-
bleed: z10.enum(userFlushBleeds)
|
|
9801
|
-
}).strict()
|
|
9802
|
-
]);
|
|
9803
|
-
var blockDesignPlanSchema = z10.object({
|
|
9804
|
-
blockId: z10.string().min(1).transform(asDesignBlockId),
|
|
9805
|
-
blockKind: z10.string().min(1),
|
|
9806
|
-
purpose: z10.string().min(1),
|
|
9807
|
-
sectionSurface: z10.enum(userDesignOptionCatalog.sectionSurfaces),
|
|
9808
|
-
contentFrame: contentFrameIntentSchema,
|
|
9809
|
-
itemSurface: z10.enum(userDesignOptionCatalog.itemSurfaces),
|
|
9810
|
-
transitionAfter: z10.enum(userDesignOptionCatalog.transitions),
|
|
9811
|
-
emphasis: z10.enum(userDesignOptionCatalog.emphases),
|
|
9812
|
-
heroLegibility: heroLegibilityStrategySchema.optional()
|
|
9813
|
-
}).strict();
|
|
9814
|
-
var styleAuthoritySchema = z10.discriminatedUnion("kind", [
|
|
9815
|
-
z10.object({
|
|
9816
|
-
kind: z10.literal("theme-v2"),
|
|
9817
|
-
source: designResolutionPolicySchema,
|
|
9818
|
-
siteStyleId: z10.string().min(1).transform(asSiteStyleId),
|
|
9819
|
-
templateId: z10.string().min(1).transform(asDesignSystemTemplateId),
|
|
9820
|
-
templateVersion: z10.number().int().nonnegative(),
|
|
9821
|
-
resolverVersion: z10.number().int().nonnegative()
|
|
9822
|
-
}).strict(),
|
|
9823
|
-
z10.object({
|
|
9824
|
-
kind: z10.literal("legacy-raw"),
|
|
9825
|
-
reason: z10.enum(["pre-theme-v2", "manual-runtime-fields"])
|
|
9826
|
-
}).strict(),
|
|
9827
|
-
z10.object({
|
|
9828
|
-
kind: z10.literal("advanced-detached"),
|
|
9829
|
-
reason: z10.literal("detached-custom-runtime-fields")
|
|
9830
|
-
}).strict()
|
|
9831
|
-
]);
|
|
9832
|
-
var blockRuntimeStyleAuthoritySchema = z10.object({
|
|
9833
|
-
unit: z10.literal("block-runtime-fields"),
|
|
9834
|
-
blockId: z10.string().min(1).transform(asDesignBlockId),
|
|
9835
|
-
fields: nonEmptyRuntimeStyleFieldNamesSchema,
|
|
9836
|
-
authority: styleAuthoritySchema
|
|
9837
|
-
}).strict();
|
|
9838
|
-
var persistedPageDesignStateV1Schema = z10.object({
|
|
9839
|
-
schemaVersion: z10.literal(themeV2DesignStateSchemaVersion),
|
|
9840
|
-
siteStyleId: z10.string().min(1).transform(asSiteStyleId),
|
|
9841
|
-
templateId: z10.string().min(1).transform(asDesignSystemTemplateId),
|
|
9842
|
-
templateVersion: z10.number().int().nonnegative(),
|
|
9843
|
-
resolverVersion: z10.number().int().nonnegative(),
|
|
9844
|
-
rhythmPresetId: z10.string().min(1),
|
|
9845
|
-
blocks: z10.array(blockDesignPlanSchema),
|
|
9846
|
-
styleAuthorities: z10.array(blockRuntimeStyleAuthoritySchema)
|
|
9847
|
-
}).strict();
|
|
9848
|
-
|
|
9849
|
-
// ../theme-core/src/site-styles/generatedSchemas.ts
|
|
9850
|
-
import { z as z11 } from "zod";
|
|
9851
|
-
function uniqueNonEmpty2(values) {
|
|
9852
|
-
const uniqueValues = [...new Set(values)];
|
|
9853
|
-
const firstValue = uniqueValues[0];
|
|
9854
|
-
if (!firstValue) {
|
|
9855
|
-
throw new Error("Expected at least one generated schema option.");
|
|
9856
|
-
}
|
|
9857
|
-
return [firstValue, ...uniqueValues.slice(1)];
|
|
9858
|
-
}
|
|
9859
|
-
var generatedPanelTreatments = uniqueNonEmpty2(
|
|
9860
|
-
generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "panel").map((frame) => frame.treatment)
|
|
9861
|
-
);
|
|
9862
|
-
var generatedFlushTreatments = uniqueNonEmpty2(
|
|
9863
|
-
generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.treatment)
|
|
9864
|
-
);
|
|
9865
|
-
var generatedFlushBleeds = uniqueNonEmpty2(
|
|
9866
|
-
generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.bleed)
|
|
9867
|
-
);
|
|
9868
|
-
var generatedPanelFrameSchema = z11.object({
|
|
9869
|
-
kind: z11.literal("panel"),
|
|
9870
|
-
treatment: z11.enum(generatedPanelTreatments)
|
|
9871
|
-
}).strict();
|
|
9872
|
-
var generatedFlushPanelFrameSchema = z11.object({
|
|
9873
|
-
kind: z11.literal("flush-panel"),
|
|
9874
|
-
treatment: z11.enum(generatedFlushTreatments),
|
|
9875
|
-
bleed: z11.enum(generatedFlushBleeds)
|
|
9876
|
-
}).strict();
|
|
9877
|
-
var generatedContentFrameIntentSchema = z11.discriminatedUnion("kind", [
|
|
9878
|
-
z11.object({ kind: z11.literal("plain") }).strict(),
|
|
9879
|
-
generatedPanelFrameSchema,
|
|
9880
|
-
generatedFlushPanelFrameSchema
|
|
9881
|
-
]);
|
|
9882
|
-
var generatedSiteStyleIdSchema = z11.enum(curatedSiteStyleIdValues).transform(asSiteStyleId);
|
|
9883
|
-
function generatedChoiceSchema(valueSchema) {
|
|
9884
|
-
return z11.discriminatedUnion("kind", [
|
|
9885
|
-
z11.object({
|
|
9886
|
-
source: z11.literal("generated"),
|
|
9887
|
-
kind: z11.literal("auto")
|
|
9888
|
-
}).strict(),
|
|
9889
|
-
z11.object({
|
|
9890
|
-
source: z11.literal("generated"),
|
|
9891
|
-
kind: z11.literal("explicit"),
|
|
9892
|
-
value: valueSchema
|
|
9893
|
-
}).strict()
|
|
9894
|
-
]);
|
|
9895
|
-
}
|
|
9896
|
-
var generatedBlockDesignIntentSchema = z11.object({
|
|
9897
|
-
sectionSurface: generatedChoiceSchema(
|
|
9898
|
-
z11.enum(generatedDesignOptionCatalog.sectionSurfaces)
|
|
9899
|
-
),
|
|
9900
|
-
contentFrame: generatedChoiceSchema(generatedContentFrameIntentSchema),
|
|
9901
|
-
itemSurface: generatedChoiceSchema(
|
|
9902
|
-
z11.enum(generatedDesignOptionCatalog.itemSurfaces)
|
|
9903
|
-
),
|
|
9904
|
-
transitionAfter: generatedChoiceSchema(
|
|
9905
|
-
z11.enum(generatedDesignOptionCatalog.transitions)
|
|
9906
|
-
),
|
|
9907
|
-
emphasis: generatedChoiceSchema(
|
|
9908
|
-
z11.enum(generatedDesignOptionCatalog.emphases)
|
|
9909
|
-
)
|
|
9910
|
-
}).strict();
|
|
9911
|
-
var generatedMediaCompositionIntentSchema = z11.enum([
|
|
9912
|
-
"none",
|
|
9913
|
-
"supporting",
|
|
9914
|
-
"dominant"
|
|
9915
|
-
]);
|
|
9916
|
-
var generatedDecorativeCompositionIntentSchema = z11.enum([
|
|
9917
|
-
"none",
|
|
9918
|
-
"supporting"
|
|
9919
|
-
]);
|
|
9920
|
-
var generatedHeroLegibilityStrategySchema = z11.enum([
|
|
9921
|
-
"none",
|
|
9922
|
-
"scrim-gradient"
|
|
9923
|
-
]);
|
|
9924
|
-
var generatedBlockMediaIntentSchema = z11.object({
|
|
9925
|
-
media: generatedMediaCompositionIntentSchema,
|
|
9926
|
-
decorative: generatedDecorativeCompositionIntentSchema,
|
|
9927
|
-
heroLegibility: generatedChoiceSchema(generatedHeroLegibilityStrategySchema)
|
|
9928
|
-
}).strict();
|
|
9929
|
-
var generatedBoundaryIntentSchema = z11.object({
|
|
9930
|
-
transitionAfter: generatedChoiceSchema(
|
|
9931
|
-
z11.enum(generatedDesignOptionCatalog.transitions)
|
|
9932
|
-
)
|
|
9933
|
-
}).strict();
|
|
9934
|
-
var generatedPageDesignBlockIntentSchema = z11.object({
|
|
9935
|
-
blockId: z11.string().min(1),
|
|
9936
|
-
blockKind: z11.string().min(1),
|
|
9937
|
-
purpose: z11.string().min(1),
|
|
9938
|
-
design: generatedBlockDesignIntentSchema,
|
|
9939
|
-
mediaIntent: generatedBlockMediaIntentSchema,
|
|
9940
|
-
boundaryIntent: generatedBoundaryIntentSchema
|
|
9941
|
-
}).strict();
|
|
9942
|
-
var generatedPageDesignIntentSchema = z11.object({
|
|
9943
|
-
siteStyleId: generatedSiteStyleIdSchema,
|
|
9944
|
-
blocks: z11.array(generatedPageDesignBlockIntentSchema)
|
|
9945
|
-
}).strict();
|
|
9946
|
-
|
|
9947
|
-
// ../theme-core/src/site-styles/pageDesignIntent.ts
|
|
9948
|
-
import { z as z12 } from "zod";
|
|
9949
|
-
var pageDesignIntentSchemaVersion = 1;
|
|
9950
|
-
var pageDesignUserPinnedAppearanceChoiceSchema = z12.object({
|
|
9951
|
-
kind: z12.literal("user-pinned"),
|
|
9952
|
-
value: z12.string().min(1).transform(asAppearancePresetId)
|
|
9953
|
-
}).strict();
|
|
9954
|
-
var pageDesignUserPinnedBoundaryChoiceSchema = z12.object({
|
|
9955
|
-
kind: z12.literal("user-pinned"),
|
|
9956
|
-
value: z12.string().min(1).transform(asBoundaryOptionId)
|
|
9957
|
-
}).strict();
|
|
9958
|
-
var pageDesignBlockLookPinSchema = z12.object({
|
|
9959
|
-
blockId: z12.string().min(1).transform(asDesignBlockId),
|
|
9960
|
-
blockKind: z12.string().min(1),
|
|
9961
|
-
choice: pageDesignUserPinnedAppearanceChoiceSchema
|
|
9962
|
-
}).strict();
|
|
9963
|
-
var pageDesignBoundaryPinSchema = z12.object({
|
|
9964
|
-
boundaryId: z12.string().min(1).transform(asDesignBoundaryId),
|
|
9965
|
-
previousBlockId: z12.string().min(1).transform(asDesignBlockId),
|
|
9966
|
-
nextBlockId: z12.string().min(1).transform(asDesignBlockId),
|
|
9967
|
-
choice: pageDesignUserPinnedBoundaryChoiceSchema
|
|
9968
|
-
}).strict().superRefine((pin, ctx) => {
|
|
9969
|
-
const expectedBoundaryId = makeBoundaryId(
|
|
9970
|
-
pin.previousBlockId,
|
|
9971
|
-
pin.nextBlockId
|
|
9972
|
-
);
|
|
9973
|
-
if (pin.boundaryId !== expectedBoundaryId) {
|
|
9974
|
-
ctx.addIssue({
|
|
9975
|
-
code: z12.ZodIssueCode.custom,
|
|
9976
|
-
path: ["boundaryId"],
|
|
9977
|
-
message: `Boundary id must match previousBlockId and nextBlockId. Expected ${expectedBoundaryId}.`
|
|
9978
|
-
});
|
|
9979
|
-
}
|
|
9980
|
-
});
|
|
9981
|
-
var pageDesignIntentV1Schema = z12.object({
|
|
9982
|
-
schemaVersion: z12.literal(pageDesignIntentSchemaVersion),
|
|
9983
|
-
siteStyleId: z12.string().min(1).transform(asSiteStyleId),
|
|
9984
|
-
pageFlowPresetId: z12.string().min(1).transform(asPageFlowPresetId),
|
|
9985
|
-
blockLookPins: z12.array(pageDesignBlockLookPinSchema),
|
|
9986
|
-
boundaryPins: z12.array(pageDesignBoundaryPinSchema)
|
|
9987
|
-
}).strict().superRefine((intent, ctx) => {
|
|
9988
|
-
addDuplicateStringIssues(ctx, {
|
|
9989
|
-
values: intent.blockLookPins.map((pin) => pin.blockId),
|
|
9990
|
-
path: ["blockLookPins"],
|
|
9991
|
-
label: "block Look pin"
|
|
9992
|
-
});
|
|
9993
|
-
addDuplicateStringIssues(ctx, {
|
|
9994
|
-
values: intent.boundaryPins.map(
|
|
9995
|
-
(pin) => boundaryKey(pin.previousBlockId, pin.nextBlockId)
|
|
9996
|
-
),
|
|
9997
|
-
path: ["boundaryPins"],
|
|
9998
|
-
label: "boundary pin"
|
|
9999
|
-
});
|
|
10000
|
-
});
|
|
10001
|
-
function addDuplicateStringIssues(ctx, input) {
|
|
10002
|
-
const seen = /* @__PURE__ */ new Set();
|
|
10003
|
-
const duplicates = /* @__PURE__ */ new Set();
|
|
10004
|
-
for (const value of input.values) {
|
|
10005
|
-
if (seen.has(value)) {
|
|
10006
|
-
duplicates.add(value);
|
|
10007
|
-
}
|
|
10008
|
-
seen.add(value);
|
|
10009
|
-
}
|
|
10010
|
-
for (const duplicate of duplicates) {
|
|
10011
|
-
ctx.addIssue({
|
|
10012
|
-
code: z12.ZodIssueCode.custom,
|
|
10013
|
-
path: [...input.path],
|
|
10014
|
-
message: `Duplicate ${input.label}: ${duplicate}.`
|
|
10015
|
-
});
|
|
10016
|
-
}
|
|
10017
|
-
}
|
|
10018
|
-
function boundaryKey(previousBlockId, nextBlockId) {
|
|
10019
|
-
return makeBoundaryId(previousBlockId, nextBlockId);
|
|
10020
|
-
}
|
|
10290
|
+
// ../theme-core/src/palette/variants/types.ts
|
|
10291
|
+
import { z as z23 } from "zod";
|
|
10021
10292
|
|
|
10022
10293
|
// ../theme-core/src/schema.ts
|
|
10023
|
-
import { z as
|
|
10294
|
+
import { z as z22 } from "zod";
|
|
10024
10295
|
|
|
10025
10296
|
// ../theme-core/src/lib/media.ts
|
|
10026
|
-
import
|
|
10027
|
-
var hotspotSchema =
|
|
10028
|
-
x:
|
|
10029
|
-
y:
|
|
10030
|
-
radius:
|
|
10031
|
-
});
|
|
10032
|
-
var rotationSchema =
|
|
10033
|
-
var rectSchema =
|
|
10034
|
-
var aspectCropSchema =
|
|
10035
|
-
aspect:
|
|
10036
|
-
rect:
|
|
10037
|
-
hotspot:
|
|
10038
|
-
rotation:
|
|
10039
|
-
});
|
|
10040
|
-
var transformSchema =
|
|
10041
|
-
aspectCrops:
|
|
10297
|
+
import z12 from "zod";
|
|
10298
|
+
var hotspotSchema = z12.object({
|
|
10299
|
+
x: z12.number().min(0).max(1),
|
|
10300
|
+
y: z12.number().min(0).max(1),
|
|
10301
|
+
radius: z12.number().optional()
|
|
10302
|
+
});
|
|
10303
|
+
var rotationSchema = z12.union([z12.literal(0), z12.literal(90), z12.literal(180), z12.literal(270)]);
|
|
10304
|
+
var rectSchema = z12.tuple([z12.number(), z12.number(), z12.number(), z12.number()]);
|
|
10305
|
+
var aspectCropSchema = z12.object({
|
|
10306
|
+
aspect: z12.preprocess((value) => value == null ? void 0 : value, z12.string().optional()),
|
|
10307
|
+
rect: z12.preprocess((value) => value == null ? void 0 : value, rectSchema.optional()),
|
|
10308
|
+
hotspot: z12.preprocess((value) => value == null ? void 0 : value, hotspotSchema.optional()),
|
|
10309
|
+
rotation: z12.preprocess((value) => value == null ? void 0 : value, rotationSchema.optional())
|
|
10310
|
+
});
|
|
10311
|
+
var transformSchema = z12.object({
|
|
10312
|
+
aspectCrops: z12.preprocess((value) => {
|
|
10042
10313
|
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
10043
10314
|
return void 0;
|
|
10044
10315
|
}
|
|
10045
10316
|
return value;
|
|
10046
|
-
},
|
|
10317
|
+
}, z12.record(z12.string(), aspectCropSchema.catch({}))).optional(),
|
|
10047
10318
|
rect: rectSchema.optional(),
|
|
10048
10319
|
hotspot: hotspotSchema.optional(),
|
|
10049
10320
|
rotation: rotationSchema.optional()
|
|
10050
10321
|
});
|
|
10051
|
-
var mediaSchema =
|
|
10052
|
-
type:
|
|
10053
|
-
purpose:
|
|
10054
|
-
placeholder:
|
|
10055
|
-
assetId:
|
|
10056
|
-
identifier:
|
|
10057
|
-
src:
|
|
10058
|
-
alt:
|
|
10059
|
-
filename:
|
|
10060
|
-
mimeType:
|
|
10061
|
-
width:
|
|
10062
|
-
height:
|
|
10063
|
-
storageBucket:
|
|
10064
|
-
storagePath:
|
|
10322
|
+
var mediaSchema = z12.object({
|
|
10323
|
+
type: z12.enum(["image", "video", "audio", "document", "spreadsheet", "archive"]),
|
|
10324
|
+
purpose: z12.string().optional(),
|
|
10325
|
+
placeholder: z12.boolean().default(true).optional(),
|
|
10326
|
+
assetId: z12.string().optional(),
|
|
10327
|
+
identifier: z12.string().optional(),
|
|
10328
|
+
src: z12.string().optional(),
|
|
10329
|
+
alt: z12.string().optional(),
|
|
10330
|
+
filename: z12.string().optional(),
|
|
10331
|
+
mimeType: z12.string().optional(),
|
|
10332
|
+
width: z12.number().optional(),
|
|
10333
|
+
height: z12.number().optional(),
|
|
10334
|
+
storageBucket: z12.string().optional(),
|
|
10335
|
+
storagePath: z12.string().optional(),
|
|
10065
10336
|
transform: transformSchema.optional()
|
|
10066
10337
|
});
|
|
10067
10338
|
|
|
10068
|
-
// ../theme-core/src/buttons/
|
|
10069
|
-
|
|
10070
|
-
|
|
10071
|
-
|
|
10072
|
-
|
|
10073
|
-
|
|
10074
|
-
|
|
10075
|
-
|
|
10076
|
-
"
|
|
10077
|
-
|
|
10078
|
-
|
|
10079
|
-
|
|
10080
|
-
|
|
10081
|
-
|
|
10082
|
-
var fontWeightSchema = z14.union([z14.literal(500), z14.literal(600), z14.literal(700)]);
|
|
10083
|
-
var buttonTypographySchema = z14.enum(["body", "heading"]);
|
|
10084
|
-
var letterSpacingSchema = z14.enum(["tight", "normal", "loose"]);
|
|
10085
|
-
var hoverTransformSchema = z14.enum(["none", "lift", "scale", "press"]);
|
|
10086
|
-
var hoverColorSchema = z14.enum(["none", "brighten", "darken", "saturate", "token"]);
|
|
10087
|
-
var buttonPaddingPresetSchema = z14.enum(["compact", "default", "spacious"]);
|
|
10088
|
-
var gradientStyleSchema = z14.enum(["linear", "radial", "conic"]);
|
|
10089
|
-
var gradientSharpnessSchema = z14.enum(["smooth", "medium", "hard"]);
|
|
10090
|
-
var prioritySchema = z14.union([z14.literal(1), z14.literal(2), z14.literal(3)]);
|
|
10091
|
-
var variantRoleSchema = z14.enum(VARIANT_ROLES);
|
|
10092
|
-
var buttonSizeNameSchema = z14.enum(["sm", "md", "lg", "xl"]);
|
|
10093
|
-
var PADDING_TOKEN_PATTERN = /^(?:0|\d+(?:\.\d+)?(?:rem|em|px|%))$/;
|
|
10094
|
-
var paddingShorthandSchema = z14.string().refine(
|
|
10095
|
-
(value) => {
|
|
10096
|
-
const parts = value.split(/\s+/).filter(Boolean);
|
|
10097
|
-
return parts.length === 2 && parts.every((token) => PADDING_TOKEN_PATTERN.test(token));
|
|
10098
|
-
},
|
|
10099
|
-
{
|
|
10100
|
-
message: 'Padding must be two space-separated CSS length tokens (e.g. "0.5rem 1rem"). Use `0` for zero.'
|
|
10101
|
-
}
|
|
10102
|
-
);
|
|
10103
|
-
var buttonSizeConfigSchema = z14.object({
|
|
10104
|
-
padding: paddingShorthandSchema,
|
|
10105
|
-
fontSize: z14.string().optional()
|
|
10106
|
-
});
|
|
10107
|
-
var buttonSizesSchema = z14.object({
|
|
10108
|
-
sm: buttonSizeConfigSchema,
|
|
10109
|
-
md: buttonSizeConfigSchema,
|
|
10110
|
-
lg: buttonSizeConfigSchema,
|
|
10111
|
-
xl: buttonSizeConfigSchema.optional()
|
|
10112
|
-
}).transform(({ sm, md, lg, xl }) => ({
|
|
10113
|
-
sm,
|
|
10114
|
-
md,
|
|
10115
|
-
lg,
|
|
10116
|
-
xl: xl ?? lg
|
|
10117
|
-
}));
|
|
10118
|
-
var buttonGlobalSettingsSchema = z14.object({
|
|
10119
|
-
cornerStyle: cornerStyleSchema,
|
|
10120
|
-
cornerRadius: z14.number().min(0).max(24).optional(),
|
|
10121
|
-
shadow: shadowSizeSchema,
|
|
10122
|
-
textTransform: textTransformSchema,
|
|
10123
|
-
fontWeight: fontWeightSchema,
|
|
10124
|
-
/**
|
|
10125
|
-
* @deprecated Set per-variant via `variant.border.widthClass` instead.
|
|
10126
|
-
* Schema field is preserved so existing presets parse; the value is unread
|
|
10127
|
-
* by the current generator and will be removed once the legacy
|
|
10128
|
-
* `primitives/content/components/Button.tsx` slot exports are deleted.
|
|
10129
|
-
*/
|
|
10130
|
-
borderWidth: z14.union([z14.literal(1), z14.literal(2), z14.literal(3)]),
|
|
10131
|
-
// === Family-level typography ===
|
|
10132
|
-
// Typography source (body or heading) — selects which theme typography pool to inherit
|
|
10133
|
-
typography: buttonTypographySchema.optional(),
|
|
10134
|
-
// Font size for all variants in the family (Tailwind token, e.g. "text-xs", "text-sm")
|
|
10135
|
-
// Sized variants get this as default; fixed variants inherit unless they override.
|
|
10136
|
-
// Size class CSS may still override at run time for sized variants.
|
|
10137
|
-
fontSize: z14.string().optional(),
|
|
10138
|
-
// Letter spacing applied to all variants
|
|
10139
|
-
letterSpacing: letterSpacingSchema.optional(),
|
|
10140
|
-
// Italic style
|
|
10141
|
-
italic: z14.boolean().optional(),
|
|
10142
|
-
// Padding preset (applies to sized variants without a sizes config)
|
|
10143
|
-
paddingPreset: buttonPaddingPresetSchema.optional(),
|
|
10144
|
-
hoverTransform: hoverTransformSchema,
|
|
10145
|
-
hoverColor: hoverColorSchema,
|
|
10146
|
-
// When hoverColor is 'token', this specifies which token to use
|
|
10147
|
-
hoverColorToken: z14.string().optional(),
|
|
10148
|
-
// Gradient settings (if any variant uses gradients)
|
|
10149
|
-
gradientStyle: gradientStyleSchema.optional(),
|
|
10150
|
-
gradientAngle: z14.number().min(0).max(360).optional(),
|
|
10151
|
-
gradientSharpness: gradientSharpnessSchema.optional()
|
|
10152
|
-
});
|
|
10153
|
-
var gradientDirectionSchema = z14.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
|
|
10154
|
-
var buttonBackgroundSchema = z14.discriminatedUnion("type", [
|
|
10155
|
-
z14.object({ type: z14.literal("solid"), colorToken: z14.string() }),
|
|
10156
|
-
z14.object({
|
|
10157
|
-
type: z14.literal("gradient"),
|
|
10158
|
-
stops: z14.array(z14.string()).min(2),
|
|
10159
|
-
direction: gradientDirectionSchema
|
|
10339
|
+
// ../theme-core/src/buttons/generateButtonCss.ts
|
|
10340
|
+
var BUTTON_SIZE_NAMES = buttonSizeNameSchema.options;
|
|
10341
|
+
|
|
10342
|
+
// ../theme-core/src/cards/types.ts
|
|
10343
|
+
import { z as z13 } from "zod";
|
|
10344
|
+
var cardSpacingSchema = z13.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
|
|
10345
|
+
var gradientDirectionSchema2 = z13.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
|
|
10346
|
+
var cardBackgroundSchema = z13.discriminatedUnion("type", [
|
|
10347
|
+
z13.object({ type: z13.literal("solid"), colorToken: z13.string() }),
|
|
10348
|
+
z13.object({
|
|
10349
|
+
type: z13.literal("gradient"),
|
|
10350
|
+
fromToken: z13.string(),
|
|
10351
|
+
toToken: z13.string(),
|
|
10352
|
+
direction: gradientDirectionSchema2
|
|
10160
10353
|
}),
|
|
10161
|
-
|
|
10354
|
+
z13.object({ type: z13.literal("transparent") })
|
|
10162
10355
|
]);
|
|
10163
|
-
var
|
|
10164
|
-
|
|
10165
|
-
|
|
10166
|
-
});
|
|
10167
|
-
var
|
|
10168
|
-
|
|
10169
|
-
|
|
10170
|
-
|
|
10171
|
-
|
|
10172
|
-
|
|
10173
|
-
|
|
10174
|
-
|
|
10175
|
-
|
|
10176
|
-
|
|
10177
|
-
|
|
10178
|
-
|
|
10179
|
-
|
|
10180
|
-
|
|
10181
|
-
|
|
10182
|
-
var variantSizeOverridesSchema = z14.object({
|
|
10183
|
-
sm: buttonSizeConfigSchema.optional(),
|
|
10184
|
-
md: buttonSizeConfigSchema.optional(),
|
|
10185
|
-
lg: buttonSizeConfigSchema.optional(),
|
|
10186
|
-
xl: buttonSizeConfigSchema.optional()
|
|
10187
|
-
});
|
|
10188
|
-
var buttonVariantSchema = z14.object({
|
|
10189
|
-
id: z14.string(),
|
|
10190
|
-
name: z14.string().min(1).max(20),
|
|
10191
|
-
enabled: z14.boolean(),
|
|
10192
|
-
priority: prioritySchema,
|
|
10193
|
-
// Base appearance (token-based)
|
|
10194
|
-
background: buttonBackgroundSchema,
|
|
10195
|
-
textColorToken: z14.string(),
|
|
10196
|
-
/** Tailwind radius token (e.g. `'rounded-md'`). Omit to inherit from `global.cornerStyle`. */
|
|
10197
|
-
borderRadius: z14.string().optional(),
|
|
10198
|
-
// Optional shadow override (uses theme.shadow if not specified)
|
|
10199
|
-
shadow: variantShadowSchema.optional(),
|
|
10356
|
+
var cardBorderSchema = z13.object({
|
|
10357
|
+
widthClass: z13.string(),
|
|
10358
|
+
colorToken: z13.string()
|
|
10359
|
+
});
|
|
10360
|
+
var cardVariantSchema = z13.object({
|
|
10361
|
+
id: z13.string(),
|
|
10362
|
+
name: z13.string().min(1).max(20),
|
|
10363
|
+
enabled: z13.boolean(),
|
|
10364
|
+
priority: z13.union([z13.literal(1), z13.literal(2), z13.literal(3)]),
|
|
10365
|
+
// Appearance (token-based)
|
|
10366
|
+
background: cardBackgroundSchema,
|
|
10367
|
+
spacing: cardSpacingSchema,
|
|
10368
|
+
// Optional overrides (uses theme defaults if not specified)
|
|
10369
|
+
shadow: z13.object({
|
|
10370
|
+
elevation: z13.enum(["none", "low", "medium", "high"]),
|
|
10371
|
+
softness: z13.enum(["crisp", "soft", "hard"]).nullable(),
|
|
10372
|
+
position: z13.enum(["bottom", "bottom-right"]).default("bottom")
|
|
10373
|
+
}).optional(),
|
|
10374
|
+
corners: z13.enum(["square", "soft", "rounded", "pill"]).optional(),
|
|
10200
10375
|
// Border (optional)
|
|
10201
|
-
border:
|
|
10202
|
-
// Hover background token (per-variant override, takes precedence over global hoverColorToken)
|
|
10203
|
-
hoverBackgroundToken: z14.string().optional(),
|
|
10204
|
-
// Effect composition
|
|
10205
|
-
effects: variantEffectsSchema.optional(),
|
|
10206
|
-
// Per-variant size overrides — see VariantSizeOverrides
|
|
10207
|
-
sizes: variantSizeOverridesSchema.optional()
|
|
10376
|
+
border: cardBorderSchema.optional()
|
|
10208
10377
|
});
|
|
10209
|
-
var
|
|
10210
|
-
|
|
10211
|
-
variants: z14.array(buttonVariantSchema).min(1).max(6),
|
|
10212
|
-
sizes: buttonSizesSchema.optional()
|
|
10378
|
+
var cardSystemSchema = z13.object({
|
|
10379
|
+
variants: z13.array(cardVariantSchema).min(1).max(3)
|
|
10213
10380
|
});
|
|
10214
10381
|
|
|
10215
|
-
// ../theme-core/src/
|
|
10216
|
-
|
|
10382
|
+
// ../theme-core/src/accordions/types.ts
|
|
10383
|
+
import { z as z14 } from "zod";
|
|
10384
|
+
var accordionIconSchema = z14.enum([
|
|
10385
|
+
"plus-minus",
|
|
10386
|
+
// + becomes - (swap or rotate 90°)
|
|
10387
|
+
"chevron",
|
|
10388
|
+
// › becomes ⌄ (rotate 90° or 180°)
|
|
10389
|
+
"caret",
|
|
10390
|
+
// ▸ becomes ▾ (rotate 90° or 180°)
|
|
10391
|
+
"arrow",
|
|
10392
|
+
// → becomes ↓ (rotate 90° or 180°)
|
|
10393
|
+
"circle-plus-minus"
|
|
10394
|
+
// ⊕ becomes ⊖ (swap with fade)
|
|
10395
|
+
]);
|
|
10396
|
+
var accordionSystemSchema = z14.object({
|
|
10397
|
+
// Visual styling (solid color only - gradients can be added later if needed)
|
|
10398
|
+
background: z14.object({
|
|
10399
|
+
type: z14.literal("solid"),
|
|
10400
|
+
colorToken: z14.string()
|
|
10401
|
+
}),
|
|
10402
|
+
// Spacing (padding inside items)
|
|
10403
|
+
spacing: z14.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]),
|
|
10404
|
+
// Border radius (null = inherit from theme.corners)
|
|
10405
|
+
corners: z14.enum(["square", "soft", "rounded", "pill"]).nullable(),
|
|
10406
|
+
// Border styling (null = inherit from theme.border)
|
|
10407
|
+
border: z14.object({
|
|
10408
|
+
widthClass: z14.string(),
|
|
10409
|
+
// e.g., 'border', 'border-2', 'border-0'
|
|
10410
|
+
colorToken: z14.string()
|
|
10411
|
+
}).nullable(),
|
|
10412
|
+
// Shadow (null = inherit from theme.shadow)
|
|
10413
|
+
shadow: z14.object({
|
|
10414
|
+
elevation: z14.enum(["none", "low", "medium", "high"]),
|
|
10415
|
+
softness: z14.enum(["soft", "crisp", "hard"]).nullable(),
|
|
10416
|
+
position: z14.enum(["bottom", "bottom-right"])
|
|
10417
|
+
}).nullable(),
|
|
10418
|
+
// Icon style and animation
|
|
10419
|
+
icon: z14.object({
|
|
10420
|
+
style: accordionIconSchema,
|
|
10421
|
+
position: z14.enum(["left", "right"]),
|
|
10422
|
+
size: z14.enum(["sm", "md", "lg"])
|
|
10423
|
+
}),
|
|
10424
|
+
// Trigger (question) styling
|
|
10425
|
+
trigger: z14.object({
|
|
10426
|
+
textColorToken: z14.string(),
|
|
10427
|
+
fontWeight: z14.enum(["regular", "medium", "semibold", "bold"]).nullable()
|
|
10428
|
+
// null = inherit from theme
|
|
10429
|
+
}),
|
|
10430
|
+
// Hover state styling
|
|
10431
|
+
hover: z14.object({
|
|
10432
|
+
backgroundColorToken: z14.string().optional(),
|
|
10433
|
+
textColorToken: z14.string().optional(),
|
|
10434
|
+
borderColorToken: z14.string().optional()
|
|
10435
|
+
}),
|
|
10436
|
+
// Content (answer) styling
|
|
10437
|
+
content: z14.object({
|
|
10438
|
+
textColorToken: z14.string()
|
|
10439
|
+
})
|
|
10440
|
+
});
|
|
10217
10441
|
|
|
10218
|
-
// ../theme-core/src/
|
|
10442
|
+
// ../theme-core/src/inputs/types.ts
|
|
10219
10443
|
import { z as z15 } from "zod";
|
|
10220
|
-
|
|
10221
|
-
|
|
10222
|
-
|
|
10223
|
-
|
|
10224
|
-
|
|
10225
|
-
|
|
10226
|
-
|
|
10227
|
-
|
|
10228
|
-
|
|
10229
|
-
|
|
10230
|
-
|
|
10231
|
-
|
|
10232
|
-
|
|
10444
|
+
var inputSystemSchema = z15.object({
|
|
10445
|
+
// Base styling (applied to all inputs)
|
|
10446
|
+
base: z15.object({
|
|
10447
|
+
background: z15.union([
|
|
10448
|
+
z15.object({
|
|
10449
|
+
type: z15.literal("solid"),
|
|
10450
|
+
colorToken: z15.string()
|
|
10451
|
+
}),
|
|
10452
|
+
z15.object({
|
|
10453
|
+
type: z15.literal("transparent")
|
|
10454
|
+
})
|
|
10455
|
+
]),
|
|
10456
|
+
textColorToken: z15.string(),
|
|
10457
|
+
border: z15.object({
|
|
10458
|
+
widthClass: z15.string(),
|
|
10459
|
+
// e.g., 'border', 'border-2'
|
|
10460
|
+
colorToken: z15.string(),
|
|
10461
|
+
style: z15.enum(["all", "underline"]).optional()
|
|
10462
|
+
}),
|
|
10463
|
+
corners: z15.enum(["square", "soft", "rounded", "pill"]).nullable(),
|
|
10464
|
+
// null = inherit from theme.corners
|
|
10465
|
+
shadow: z15.object({
|
|
10466
|
+
elevation: z15.enum(["none", "low", "medium"]),
|
|
10467
|
+
softness: z15.enum(["soft", "crisp", "hard"]).nullable()
|
|
10468
|
+
}).nullable(),
|
|
10469
|
+
spacing: z15.enum(["compact", "cozy", "medium", "comfortable"]),
|
|
10470
|
+
// padding inside inputs
|
|
10471
|
+
fontSize: z15.enum(["sm", "base", "lg"])
|
|
10472
|
+
}),
|
|
10473
|
+
// Label styling
|
|
10474
|
+
label: z15.object({
|
|
10475
|
+
textColorToken: z15.string(),
|
|
10476
|
+
fontWeight: z15.enum(["regular", "medium", "semibold", "bold", "black"]),
|
|
10477
|
+
fontSize: z15.enum(["2xs", "xs", "sm", "base"]),
|
|
10478
|
+
textTransform: z15.enum(["none", "uppercase", "lowercase", "capitalize"]).optional(),
|
|
10479
|
+
letterSpacing: z15.enum(["normal", "wide", "wider", "widest"]).optional(),
|
|
10480
|
+
opacity: z15.number().min(0.2).max(1).optional()
|
|
10481
|
+
}),
|
|
10482
|
+
// Focus state
|
|
10483
|
+
focus: z15.object({
|
|
10484
|
+
ringColorToken: z15.string(),
|
|
10485
|
+
ringWidth: z15.enum(["0", "1", "2", "3"]),
|
|
10486
|
+
borderColorToken: z15.string().optional()
|
|
10487
|
+
// Change border color on focus
|
|
10488
|
+
}),
|
|
10489
|
+
// Error state (for validation feedback)
|
|
10490
|
+
error: z15.object({
|
|
10491
|
+
borderColorToken: z15.string(),
|
|
10492
|
+
textColorToken: z15.string()
|
|
10493
|
+
}),
|
|
10494
|
+
// Disabled state
|
|
10495
|
+
disabled: z15.object({
|
|
10496
|
+
backgroundColorToken: z15.string(),
|
|
10497
|
+
textColorToken: z15.string(),
|
|
10498
|
+
opacity: z15.number().min(0.3).max(0.7)
|
|
10499
|
+
})
|
|
10233
10500
|
});
|
|
10234
|
-
function defineButtonPersonality(input) {
|
|
10235
|
-
return {
|
|
10236
|
-
id: asButtonPersonalityId(input.id),
|
|
10237
|
-
name: input.name,
|
|
10238
|
-
description: input.description,
|
|
10239
|
-
tags: input.tags,
|
|
10240
|
-
buttonSystem: input.buttonSystem
|
|
10241
|
-
};
|
|
10242
|
-
}
|
|
10243
10501
|
|
|
10244
|
-
// ../theme-core/src/
|
|
10245
|
-
|
|
10246
|
-
|
|
10247
|
-
|
|
10248
|
-
|
|
10249
|
-
|
|
10250
|
-
|
|
10251
|
-
global: {
|
|
10252
|
-
cornerStyle: "rounded",
|
|
10253
|
-
shadow: "low",
|
|
10254
|
-
textTransform: "none",
|
|
10255
|
-
fontWeight: 500,
|
|
10256
|
-
borderWidth: 1,
|
|
10257
|
-
hoverTransform: "none",
|
|
10258
|
-
hoverColor: "none"
|
|
10259
|
-
},
|
|
10260
|
-
sizes: {
|
|
10261
|
-
sm: { padding: "0.75rem 2rem", fontSize: "text-sm" },
|
|
10262
|
-
md: { padding: "1rem 2.5rem" },
|
|
10263
|
-
lg: { padding: "1.25rem 3rem", fontSize: "text-lg" },
|
|
10264
|
-
xl: { padding: "1.625rem 3.75rem", fontSize: "text-xl" }
|
|
10265
|
-
},
|
|
10266
|
-
variants: [
|
|
10267
|
-
{
|
|
10268
|
-
id: "primary",
|
|
10269
|
-
name: "Primary",
|
|
10270
|
-
enabled: true,
|
|
10271
|
-
priority: 1,
|
|
10272
|
-
background: {
|
|
10273
|
-
type: "gradient",
|
|
10274
|
-
stops: ["primary", "accent"],
|
|
10275
|
-
direction: "to-r"
|
|
10276
|
-
},
|
|
10277
|
-
textColorToken: "primaryForeground",
|
|
10278
|
-
borderRadius: "rounded-lg",
|
|
10279
|
-
shadow: { elevation: "low", softness: "soft", position: "bottom" },
|
|
10280
|
-
effects: {
|
|
10281
|
-
hover: [{ effectId: "opacity-reduce", options: { reduction: -15 } }]
|
|
10282
|
-
}
|
|
10283
|
-
},
|
|
10284
|
-
{
|
|
10285
|
-
id: "secondary",
|
|
10286
|
-
name: "Secondary",
|
|
10287
|
-
enabled: true,
|
|
10288
|
-
priority: 2,
|
|
10289
|
-
background: {
|
|
10290
|
-
type: "gradient",
|
|
10291
|
-
stops: ["secondary", "accent"],
|
|
10292
|
-
direction: "to-br"
|
|
10293
|
-
},
|
|
10294
|
-
textColorToken: "primaryForeground",
|
|
10295
|
-
borderRadius: "rounded-lg",
|
|
10296
|
-
shadow: { elevation: "low", softness: "soft", position: "bottom" },
|
|
10297
|
-
effects: {
|
|
10298
|
-
hover: [{ effectId: "opacity-reduce", options: { reduction: -15 } }]
|
|
10299
|
-
}
|
|
10300
|
-
},
|
|
10301
|
-
{
|
|
10302
|
-
id: "outline",
|
|
10303
|
-
name: "Outline",
|
|
10304
|
-
enabled: true,
|
|
10305
|
-
priority: 3,
|
|
10306
|
-
background: { type: "transparent" },
|
|
10307
|
-
textColorToken: "primary",
|
|
10308
|
-
borderRadius: "rounded-lg",
|
|
10309
|
-
border: { widthClass: "border", colorToken: "primary" },
|
|
10310
|
-
effects: {
|
|
10311
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
10312
|
-
}
|
|
10313
|
-
},
|
|
10314
|
-
{
|
|
10315
|
-
id: "ghost",
|
|
10316
|
-
name: "Ghost",
|
|
10317
|
-
enabled: true,
|
|
10318
|
-
priority: 3,
|
|
10319
|
-
background: { type: "transparent" },
|
|
10320
|
-
textColorToken: "text",
|
|
10321
|
-
borderRadius: "rounded-lg",
|
|
10322
|
-
effects: {
|
|
10323
|
-
hover: [
|
|
10324
|
-
{ effectId: "background-on-hover", options: { colorToken: "surface" } }
|
|
10325
|
-
]
|
|
10326
|
-
}
|
|
10327
|
-
}
|
|
10328
|
-
]
|
|
10329
|
-
}
|
|
10502
|
+
// ../theme-core/src/gradients/types.ts
|
|
10503
|
+
import { z as z16 } from "zod";
|
|
10504
|
+
var gradientStopSchema = z16.object({
|
|
10505
|
+
color: z16.string(),
|
|
10506
|
+
// Theme color token name (e.g., 'primary-500')
|
|
10507
|
+
position: z16.number().min(0).max(100)
|
|
10508
|
+
// Percentage 0-100
|
|
10330
10509
|
});
|
|
10331
|
-
|
|
10332
|
-
|
|
10333
|
-
|
|
10334
|
-
|
|
10335
|
-
|
|
10336
|
-
|
|
10337
|
-
|
|
10338
|
-
buttonSystem: {
|
|
10339
|
-
global: {
|
|
10340
|
-
cornerStyle: "rounded",
|
|
10341
|
-
shadow: "medium",
|
|
10342
|
-
textTransform: "none",
|
|
10343
|
-
fontWeight: 600,
|
|
10344
|
-
borderWidth: 1,
|
|
10345
|
-
hoverTransform: "none",
|
|
10346
|
-
hoverColor: "none"
|
|
10347
|
-
},
|
|
10348
|
-
variants: [
|
|
10349
|
-
{
|
|
10350
|
-
id: "primary",
|
|
10351
|
-
name: "Primary",
|
|
10352
|
-
enabled: true,
|
|
10353
|
-
priority: 1,
|
|
10354
|
-
background: { type: "solid", colorToken: "primary" },
|
|
10355
|
-
textColorToken: "primaryForeground",
|
|
10356
|
-
borderRadius: "rounded-md",
|
|
10357
|
-
shadow: { elevation: "medium", softness: "soft", position: "bottom" },
|
|
10358
|
-
effects: {
|
|
10359
|
-
hover: [{ effectId: "darken-background", options: { amount: 60 } }],
|
|
10360
|
-
active: [{ effectId: "scale-down", options: { scale: "0.97" } }]
|
|
10361
|
-
}
|
|
10362
|
-
},
|
|
10363
|
-
{
|
|
10364
|
-
id: "secondary",
|
|
10365
|
-
name: "Secondary",
|
|
10366
|
-
enabled: true,
|
|
10367
|
-
priority: 2,
|
|
10368
|
-
background: { type: "solid", colorToken: "surface" },
|
|
10369
|
-
textColorToken: "text",
|
|
10370
|
-
borderRadius: "rounded-md",
|
|
10371
|
-
border: { widthClass: "border", colorToken: "border" },
|
|
10372
|
-
effects: {
|
|
10373
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "background" } }]
|
|
10374
|
-
}
|
|
10375
|
-
},
|
|
10376
|
-
{
|
|
10377
|
-
id: "outline",
|
|
10378
|
-
name: "Outline",
|
|
10379
|
-
enabled: true,
|
|
10380
|
-
priority: 3,
|
|
10381
|
-
background: { type: "transparent" },
|
|
10382
|
-
textColorToken: "primary",
|
|
10383
|
-
borderRadius: "rounded-md",
|
|
10384
|
-
border: { widthClass: "border", colorToken: "primary" },
|
|
10385
|
-
effects: {
|
|
10386
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
10387
|
-
}
|
|
10388
|
-
},
|
|
10389
|
-
{
|
|
10390
|
-
id: "ghost",
|
|
10391
|
-
name: "Ghost",
|
|
10392
|
-
enabled: true,
|
|
10393
|
-
priority: 3,
|
|
10394
|
-
background: { type: "transparent" },
|
|
10395
|
-
textColorToken: "primary",
|
|
10396
|
-
borderRadius: "rounded-md",
|
|
10397
|
-
effects: {
|
|
10398
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
10399
|
-
}
|
|
10400
|
-
}
|
|
10401
|
-
]
|
|
10402
|
-
}
|
|
10510
|
+
var gradientConfigSchema = z16.object({
|
|
10511
|
+
type: z16.enum(["linear", "radial"]),
|
|
10512
|
+
angle: z16.number().min(0).max(360).optional(),
|
|
10513
|
+
// For linear gradients (degrees)
|
|
10514
|
+
position: z16.string().optional(),
|
|
10515
|
+
// For radial gradients ('center', 'top left', etc.)
|
|
10516
|
+
stops: z16.array(gradientStopSchema).min(2)
|
|
10403
10517
|
});
|
|
10404
10518
|
|
|
10405
|
-
// ../theme-core/src/
|
|
10406
|
-
|
|
10407
|
-
|
|
10408
|
-
|
|
10409
|
-
|
|
10410
|
-
|
|
10411
|
-
|
|
10412
|
-
|
|
10413
|
-
|
|
10414
|
-
|
|
10415
|
-
|
|
10416
|
-
|
|
10417
|
-
|
|
10418
|
-
|
|
10419
|
-
|
|
10420
|
-
|
|
10421
|
-
|
|
10422
|
-
|
|
10423
|
-
|
|
10424
|
-
|
|
10425
|
-
|
|
10426
|
-
|
|
10427
|
-
|
|
10428
|
-
|
|
10429
|
-
|
|
10430
|
-
|
|
10431
|
-
|
|
10432
|
-
|
|
10433
|
-
|
|
10434
|
-
|
|
10435
|
-
xl: { padding: "0.75rem 0" }
|
|
10436
|
-
},
|
|
10437
|
-
effects: {
|
|
10438
|
-
base: [
|
|
10439
|
-
{ effectId: "border-bottom-grow", options: { height: 2, colorToken: "text", origin: "left" } }
|
|
10440
|
-
]
|
|
10441
|
-
}
|
|
10442
|
-
},
|
|
10443
|
-
{
|
|
10444
|
-
id: "secondary",
|
|
10445
|
-
name: "Secondary",
|
|
10446
|
-
enabled: true,
|
|
10447
|
-
priority: 2,
|
|
10448
|
-
background: { type: "transparent" },
|
|
10449
|
-
textColorToken: "mutedText",
|
|
10450
|
-
borderRadius: "rounded-none",
|
|
10451
|
-
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
10452
|
-
sizes: {
|
|
10453
|
-
sm: { padding: "0.25rem 0" },
|
|
10454
|
-
md: { padding: "0.5rem 0" },
|
|
10455
|
-
lg: { padding: "0.625rem 0" },
|
|
10456
|
-
xl: { padding: "0.75rem 0" }
|
|
10457
|
-
},
|
|
10458
|
-
effects: {
|
|
10459
|
-
base: [
|
|
10460
|
-
{ effectId: "border-bottom-grow", options: { height: 1, colorToken: "mutedText", origin: "left" } }
|
|
10461
|
-
]
|
|
10462
|
-
}
|
|
10463
|
-
},
|
|
10464
|
-
{
|
|
10465
|
-
id: "outline",
|
|
10466
|
-
name: "Outline",
|
|
10467
|
-
enabled: true,
|
|
10468
|
-
priority: 3,
|
|
10469
|
-
background: { type: "transparent" },
|
|
10470
|
-
textColorToken: "accent",
|
|
10471
|
-
borderRadius: "rounded-none",
|
|
10472
|
-
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
10473
|
-
sizes: {
|
|
10474
|
-
sm: { padding: "0.25rem 0" },
|
|
10475
|
-
md: { padding: "0.5rem 0" },
|
|
10476
|
-
lg: { padding: "0.625rem 0" },
|
|
10477
|
-
xl: { padding: "0.75rem 0" }
|
|
10478
|
-
},
|
|
10479
|
-
effects: {
|
|
10480
|
-
base: [
|
|
10481
|
-
{ effectId: "border-bottom-grow", options: { height: 1, colorToken: "accent", origin: "left" } }
|
|
10482
|
-
]
|
|
10483
|
-
}
|
|
10484
|
-
},
|
|
10485
|
-
{
|
|
10486
|
-
id: "ghost",
|
|
10487
|
-
name: "Ghost",
|
|
10488
|
-
enabled: true,
|
|
10489
|
-
priority: 3,
|
|
10490
|
-
background: { type: "transparent" },
|
|
10491
|
-
textColorToken: "mutedText",
|
|
10492
|
-
borderRadius: "rounded-none",
|
|
10493
|
-
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
10494
|
-
sizes: {
|
|
10495
|
-
sm: { padding: "0.25rem 0" },
|
|
10496
|
-
md: { padding: "0.5rem 0" },
|
|
10497
|
-
lg: { padding: "0.625rem 0" },
|
|
10498
|
-
xl: { padding: "0.75rem 0" }
|
|
10499
|
-
},
|
|
10500
|
-
effects: {
|
|
10501
|
-
hover: [{ effectId: "opacity-reduce", options: { reduction: -20 } }]
|
|
10502
|
-
}
|
|
10503
|
-
}
|
|
10504
|
-
]
|
|
10505
|
-
}
|
|
10519
|
+
// ../theme-core/src/navigation/types.ts
|
|
10520
|
+
import { z as z18 } from "zod";
|
|
10521
|
+
|
|
10522
|
+
// ../theme-core/src/interactive/baseSchema.ts
|
|
10523
|
+
import { z as z17 } from "zod";
|
|
10524
|
+
var interactiveTypographySchema = z17.object({
|
|
10525
|
+
/** Font family source */
|
|
10526
|
+
typography: z17.enum(["body", "heading"]).default("body"),
|
|
10527
|
+
/** Font weight */
|
|
10528
|
+
fontWeight: z17.enum(["regular", "medium", "semibold", "bold"]).default("medium"),
|
|
10529
|
+
/** Text transform */
|
|
10530
|
+
textTransform: z17.enum(["none", "uppercase", "capitalize"]).default("none"),
|
|
10531
|
+
/** Italic style */
|
|
10532
|
+
italic: z17.boolean().default(false)
|
|
10533
|
+
});
|
|
10534
|
+
var effectApplicationSchema2 = z17.object({
|
|
10535
|
+
/** Effect preset ID */
|
|
10536
|
+
effectId: z17.string(),
|
|
10537
|
+
/** User-provided customization options */
|
|
10538
|
+
options: z17.record(z17.string(), z17.any()).optional()
|
|
10539
|
+
});
|
|
10540
|
+
var effectCompositionSchema = z17.object({
|
|
10541
|
+
/** Effects always applied */
|
|
10542
|
+
base: z17.array(effectApplicationSchema2).optional(),
|
|
10543
|
+
/** Effects applied on hover */
|
|
10544
|
+
hover: z17.array(effectApplicationSchema2).optional(),
|
|
10545
|
+
/** Effects applied on active/pressed */
|
|
10546
|
+
active: z17.array(effectApplicationSchema2).optional(),
|
|
10547
|
+
/** Effects applied on focus */
|
|
10548
|
+
focus: z17.array(effectApplicationSchema2).optional()
|
|
10506
10549
|
});
|
|
10507
10550
|
|
|
10508
|
-
// ../theme-core/src/
|
|
10509
|
-
var
|
|
10510
|
-
|
|
10511
|
-
|
|
10512
|
-
|
|
10513
|
-
|
|
10514
|
-
|
|
10515
|
-
|
|
10516
|
-
|
|
10517
|
-
|
|
10518
|
-
|
|
10519
|
-
|
|
10520
|
-
|
|
10521
|
-
|
|
10522
|
-
|
|
10523
|
-
|
|
10524
|
-
|
|
10525
|
-
|
|
10526
|
-
|
|
10527
|
-
|
|
10528
|
-
|
|
10529
|
-
|
|
10530
|
-
|
|
10531
|
-
|
|
10532
|
-
|
|
10533
|
-
|
|
10534
|
-
|
|
10535
|
-
enabled: true,
|
|
10536
|
-
priority: 1,
|
|
10537
|
-
background: { type: "solid", colorToken: "primary" },
|
|
10538
|
-
textColorToken: "primaryForeground",
|
|
10539
|
-
borderRadius: "rounded-md",
|
|
10540
|
-
effects: {
|
|
10541
|
-
hover: [
|
|
10542
|
-
{ effectId: "drop-shadow", options: { intensity: "medium" } },
|
|
10543
|
-
{ effectId: "scale-up", options: { scale: "1.02" } }
|
|
10544
|
-
],
|
|
10545
|
-
active: [{ effectId: "scale-down", options: { scale: "0.98" } }]
|
|
10546
|
-
}
|
|
10547
|
-
},
|
|
10548
|
-
{
|
|
10549
|
-
id: "secondary",
|
|
10550
|
-
name: "Secondary",
|
|
10551
|
-
enabled: true,
|
|
10552
|
-
priority: 2,
|
|
10553
|
-
background: { type: "transparent" },
|
|
10554
|
-
textColorToken: "primary",
|
|
10555
|
-
borderRadius: "rounded-md",
|
|
10556
|
-
border: { widthClass: "border-2", colorToken: "primary" },
|
|
10557
|
-
effects: {
|
|
10558
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
10559
|
-
}
|
|
10560
|
-
},
|
|
10561
|
-
{
|
|
10562
|
-
id: "outline",
|
|
10563
|
-
name: "Outline",
|
|
10564
|
-
enabled: true,
|
|
10565
|
-
priority: 3,
|
|
10566
|
-
background: { type: "transparent" },
|
|
10567
|
-
textColorToken: "text",
|
|
10568
|
-
borderRadius: "rounded-md",
|
|
10569
|
-
border: { widthClass: "border-2", colorToken: "border" },
|
|
10570
|
-
effects: {
|
|
10571
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
10572
|
-
}
|
|
10573
|
-
},
|
|
10574
|
-
{
|
|
10575
|
-
id: "ghost",
|
|
10576
|
-
name: "Ghost",
|
|
10577
|
-
enabled: true,
|
|
10578
|
-
priority: 3,
|
|
10579
|
-
background: { type: "transparent" },
|
|
10580
|
-
textColorToken: "accent",
|
|
10581
|
-
borderRadius: "rounded-none",
|
|
10582
|
-
sizes: {
|
|
10583
|
-
sm: { padding: "0.375rem 0", fontSize: "text-xs" },
|
|
10584
|
-
md: { padding: "0.5rem 0", fontSize: "text-sm" },
|
|
10585
|
-
lg: { padding: "0.625rem 0", fontSize: "text-base" },
|
|
10586
|
-
xl: { padding: "0.75rem 0", fontSize: "text-lg" }
|
|
10587
|
-
},
|
|
10588
|
-
effects: {
|
|
10589
|
-
base: [{ effectId: "border-bottom-grow", options: { height: 1, colorToken: "accent", origin: "left" } }]
|
|
10590
|
-
}
|
|
10591
|
-
}
|
|
10592
|
-
]
|
|
10593
|
-
}
|
|
10594
|
-
});
|
|
10595
|
-
|
|
10596
|
-
// ../theme-core/src/buttons/personalities/pebble.ts
|
|
10597
|
-
var pebble = defineButtonPersonality({
|
|
10598
|
-
id: "pebble",
|
|
10599
|
-
name: "Pebble",
|
|
10600
|
-
description: "Generous pill buttons with a soft hover lift.",
|
|
10601
|
-
tags: { tone: "classic", energy: "calm", motion: "standard", era: "organic" },
|
|
10602
|
-
buttonSystem: {
|
|
10603
|
-
global: {
|
|
10604
|
-
cornerStyle: "pill",
|
|
10605
|
-
shadow: "none",
|
|
10606
|
-
textTransform: "none",
|
|
10607
|
-
fontWeight: 500,
|
|
10608
|
-
borderWidth: 2,
|
|
10609
|
-
hoverTransform: "none",
|
|
10610
|
-
hoverColor: "none"
|
|
10611
|
-
},
|
|
10612
|
-
sizes: {
|
|
10613
|
-
sm: { padding: "0.625rem 1.75rem", fontSize: "text-sm" },
|
|
10614
|
-
md: { padding: "0.875rem 2.25rem" },
|
|
10615
|
-
lg: { padding: "1.125rem 2.75rem", fontSize: "text-lg" },
|
|
10616
|
-
xl: { padding: "1.5rem 3.5rem", fontSize: "text-xl" }
|
|
10617
|
-
},
|
|
10618
|
-
variants: [
|
|
10619
|
-
{
|
|
10620
|
-
id: "primary",
|
|
10621
|
-
name: "Primary",
|
|
10622
|
-
enabled: true,
|
|
10623
|
-
priority: 1,
|
|
10624
|
-
background: { type: "solid", colorToken: "primary" },
|
|
10625
|
-
textColorToken: "primaryForeground",
|
|
10626
|
-
borderRadius: "rounded-full",
|
|
10627
|
-
effects: {
|
|
10628
|
-
hover: [
|
|
10629
|
-
{ effectId: "scale-up", options: { scale: "1.03" } },
|
|
10630
|
-
{ effectId: "drop-shadow", options: { intensity: "medium" } }
|
|
10631
|
-
]
|
|
10632
|
-
}
|
|
10633
|
-
},
|
|
10634
|
-
{
|
|
10635
|
-
id: "secondary",
|
|
10636
|
-
name: "Secondary",
|
|
10637
|
-
enabled: true,
|
|
10638
|
-
priority: 2,
|
|
10639
|
-
background: { type: "transparent" },
|
|
10640
|
-
textColorToken: "primary",
|
|
10641
|
-
borderRadius: "rounded-full",
|
|
10642
|
-
border: { widthClass: "border-2", colorToken: "accent" },
|
|
10643
|
-
effects: {
|
|
10644
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "accent" } }]
|
|
10645
|
-
}
|
|
10646
|
-
},
|
|
10647
|
-
{
|
|
10648
|
-
id: "outline",
|
|
10649
|
-
name: "Outline",
|
|
10650
|
-
enabled: true,
|
|
10651
|
-
priority: 3,
|
|
10652
|
-
background: { type: "transparent" },
|
|
10653
|
-
textColorToken: "text",
|
|
10654
|
-
borderRadius: "rounded-full",
|
|
10655
|
-
border: { widthClass: "border", colorToken: "border" },
|
|
10656
|
-
effects: {
|
|
10657
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
10658
|
-
}
|
|
10659
|
-
},
|
|
10660
|
-
{
|
|
10661
|
-
id: "ghost",
|
|
10662
|
-
name: "Ghost",
|
|
10663
|
-
enabled: true,
|
|
10664
|
-
priority: 3,
|
|
10665
|
-
background: { type: "transparent" },
|
|
10666
|
-
textColorToken: "primary",
|
|
10667
|
-
borderRadius: "rounded-full",
|
|
10668
|
-
sizes: {
|
|
10669
|
-
sm: { padding: "0.375rem 0.875rem", fontSize: "text-sm" },
|
|
10670
|
-
md: { padding: "0.5rem 1rem" },
|
|
10671
|
-
lg: { padding: "0.625rem 1.25rem", fontSize: "text-lg" },
|
|
10672
|
-
xl: { padding: "0.75rem 1.5rem", fontSize: "text-xl" }
|
|
10673
|
-
},
|
|
10674
|
-
effects: {
|
|
10675
|
-
hover: [{ effectId: "opacity-reduce", options: { reduction: 30 } }]
|
|
10676
|
-
}
|
|
10677
|
-
}
|
|
10678
|
-
]
|
|
10679
|
-
}
|
|
10680
|
-
});
|
|
10681
|
-
|
|
10682
|
-
// ../theme-core/src/buttons/personalities/soft-pill.ts
|
|
10683
|
-
var softPill = defineButtonPersonality({
|
|
10684
|
-
id: "soft-pill",
|
|
10685
|
-
name: "Soft Pill",
|
|
10686
|
-
description: "Rounded pills with a gentle lift on hover. Quietly modern.",
|
|
10687
|
-
tags: { tone: "classic", energy: "calm", motion: "subtle", era: "organic" },
|
|
10688
|
-
buttonSystem: {
|
|
10689
|
-
global: {
|
|
10690
|
-
cornerStyle: "pill",
|
|
10691
|
-
shadow: "low",
|
|
10692
|
-
textTransform: "none",
|
|
10693
|
-
fontWeight: 500,
|
|
10694
|
-
borderWidth: 2,
|
|
10695
|
-
hoverTransform: "lift",
|
|
10696
|
-
hoverColor: "none"
|
|
10697
|
-
},
|
|
10698
|
-
variants: [
|
|
10699
|
-
{
|
|
10700
|
-
id: "primary",
|
|
10701
|
-
name: "Primary",
|
|
10702
|
-
enabled: true,
|
|
10703
|
-
priority: 1,
|
|
10704
|
-
background: { type: "solid", colorToken: "primary" },
|
|
10705
|
-
textColorToken: "primaryForeground",
|
|
10706
|
-
borderRadius: "rounded-full",
|
|
10707
|
-
shadow: { elevation: "low", softness: "soft", position: "bottom" },
|
|
10708
|
-
effects: {
|
|
10709
|
-
hover: [{ effectId: "lift", options: { translateY: "-1px" } }],
|
|
10710
|
-
active: [{ effectId: "scale-down", options: { scale: "0.98" } }]
|
|
10711
|
-
}
|
|
10712
|
-
},
|
|
10713
|
-
{
|
|
10714
|
-
id: "secondary",
|
|
10715
|
-
name: "Secondary",
|
|
10716
|
-
enabled: true,
|
|
10717
|
-
priority: 2,
|
|
10718
|
-
background: { type: "transparent" },
|
|
10719
|
-
textColorToken: "primary",
|
|
10720
|
-
borderRadius: "rounded-full",
|
|
10721
|
-
border: { widthClass: "border-2", colorToken: "primary" },
|
|
10722
|
-
effects: {
|
|
10723
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
10724
|
-
}
|
|
10725
|
-
},
|
|
10726
|
-
{
|
|
10727
|
-
id: "outline",
|
|
10728
|
-
name: "Outline",
|
|
10729
|
-
enabled: true,
|
|
10730
|
-
priority: 3,
|
|
10731
|
-
background: { type: "transparent" },
|
|
10732
|
-
textColorToken: "text",
|
|
10733
|
-
borderRadius: "rounded-full",
|
|
10734
|
-
border: { widthClass: "border", colorToken: "border" },
|
|
10735
|
-
effects: {
|
|
10736
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
10737
|
-
}
|
|
10738
|
-
},
|
|
10739
|
-
{
|
|
10740
|
-
id: "ghost",
|
|
10741
|
-
name: "Ghost",
|
|
10742
|
-
enabled: true,
|
|
10743
|
-
priority: 3,
|
|
10744
|
-
background: { type: "transparent" },
|
|
10745
|
-
textColorToken: "text",
|
|
10746
|
-
borderRadius: "rounded-full",
|
|
10747
|
-
effects: {
|
|
10748
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
10749
|
-
}
|
|
10750
|
-
}
|
|
10751
|
-
]
|
|
10752
|
-
}
|
|
10753
|
-
});
|
|
10754
|
-
|
|
10755
|
-
// ../theme-core/src/buttons/personalities/index.ts
|
|
10756
|
-
var buttonPersonalities = [
|
|
10757
|
-
softPill,
|
|
10758
|
-
confidentChip,
|
|
10759
|
-
editorialLink,
|
|
10760
|
-
pebble,
|
|
10761
|
-
inkStamp,
|
|
10762
|
-
brushedWash
|
|
10763
|
-
];
|
|
10764
|
-
var personalitiesById = new Map(
|
|
10765
|
-
buttonPersonalities.map((p) => [p.id, p])
|
|
10766
|
-
);
|
|
10767
|
-
|
|
10768
|
-
// ../theme-core/src/cards/types.ts
|
|
10769
|
-
import { z as z16 } from "zod";
|
|
10770
|
-
var cardSpacingSchema = z16.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
|
|
10771
|
-
var gradientDirectionSchema2 = z16.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
|
|
10772
|
-
var cardBackgroundSchema = z16.discriminatedUnion("type", [
|
|
10773
|
-
z16.object({ type: z16.literal("solid"), colorToken: z16.string() }),
|
|
10774
|
-
z16.object({
|
|
10775
|
-
type: z16.literal("gradient"),
|
|
10776
|
-
fromToken: z16.string(),
|
|
10777
|
-
toToken: z16.string(),
|
|
10778
|
-
direction: gradientDirectionSchema2
|
|
10779
|
-
}),
|
|
10780
|
-
z16.object({ type: z16.literal("transparent") })
|
|
10781
|
-
]);
|
|
10782
|
-
var cardBorderSchema = z16.object({
|
|
10783
|
-
widthClass: z16.string(),
|
|
10784
|
-
colorToken: z16.string()
|
|
10785
|
-
});
|
|
10786
|
-
var cardVariantSchema = z16.object({
|
|
10787
|
-
id: z16.string(),
|
|
10788
|
-
name: z16.string().min(1).max(20),
|
|
10789
|
-
enabled: z16.boolean(),
|
|
10790
|
-
priority: z16.union([z16.literal(1), z16.literal(2), z16.literal(3)]),
|
|
10791
|
-
// Appearance (token-based)
|
|
10792
|
-
background: cardBackgroundSchema,
|
|
10793
|
-
spacing: cardSpacingSchema,
|
|
10794
|
-
// Optional overrides (uses theme defaults if not specified)
|
|
10795
|
-
shadow: z16.object({
|
|
10796
|
-
elevation: z16.enum(["none", "low", "medium", "high"]),
|
|
10797
|
-
softness: z16.enum(["crisp", "soft", "hard"]).nullable(),
|
|
10798
|
-
position: z16.enum(["bottom", "bottom-right"]).default("bottom")
|
|
10799
|
-
}).optional(),
|
|
10800
|
-
corners: z16.enum(["square", "soft", "rounded", "pill"]).optional(),
|
|
10801
|
-
// Border (optional)
|
|
10802
|
-
border: cardBorderSchema.optional()
|
|
10803
|
-
});
|
|
10804
|
-
var cardSystemSchema = z16.object({
|
|
10805
|
-
variants: z16.array(cardVariantSchema).min(1).max(3)
|
|
10806
|
-
});
|
|
10807
|
-
|
|
10808
|
-
// ../theme-core/src/accordions/types.ts
|
|
10809
|
-
import { z as z17 } from "zod";
|
|
10810
|
-
var accordionIconSchema = z17.enum([
|
|
10811
|
-
"plus-minus",
|
|
10812
|
-
// + becomes - (swap or rotate 90°)
|
|
10813
|
-
"chevron",
|
|
10814
|
-
// › becomes ⌄ (rotate 90° or 180°)
|
|
10815
|
-
"caret",
|
|
10816
|
-
// ▸ becomes ▾ (rotate 90° or 180°)
|
|
10817
|
-
"arrow",
|
|
10818
|
-
// → becomes ↓ (rotate 90° or 180°)
|
|
10819
|
-
"circle-plus-minus"
|
|
10820
|
-
// ⊕ becomes ⊖ (swap with fade)
|
|
10821
|
-
]);
|
|
10822
|
-
var accordionSystemSchema = z17.object({
|
|
10823
|
-
// Visual styling (solid color only - gradients can be added later if needed)
|
|
10824
|
-
background: z17.object({
|
|
10825
|
-
type: z17.literal("solid"),
|
|
10826
|
-
colorToken: z17.string()
|
|
10827
|
-
}),
|
|
10828
|
-
// Spacing (padding inside items)
|
|
10829
|
-
spacing: z17.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]),
|
|
10830
|
-
// Border radius (null = inherit from theme.corners)
|
|
10831
|
-
corners: z17.enum(["square", "soft", "rounded", "pill"]).nullable(),
|
|
10832
|
-
// Border styling (null = inherit from theme.border)
|
|
10833
|
-
border: z17.object({
|
|
10834
|
-
widthClass: z17.string(),
|
|
10835
|
-
// e.g., 'border', 'border-2', 'border-0'
|
|
10836
|
-
colorToken: z17.string()
|
|
10837
|
-
}).nullable(),
|
|
10838
|
-
// Shadow (null = inherit from theme.shadow)
|
|
10839
|
-
shadow: z17.object({
|
|
10840
|
-
elevation: z17.enum(["none", "low", "medium", "high"]),
|
|
10841
|
-
softness: z17.enum(["soft", "crisp", "hard"]).nullable(),
|
|
10842
|
-
position: z17.enum(["bottom", "bottom-right"])
|
|
10843
|
-
}).nullable(),
|
|
10844
|
-
// Icon style and animation
|
|
10845
|
-
icon: z17.object({
|
|
10846
|
-
style: accordionIconSchema,
|
|
10847
|
-
position: z17.enum(["left", "right"]),
|
|
10848
|
-
size: z17.enum(["sm", "md", "lg"])
|
|
10849
|
-
}),
|
|
10850
|
-
// Trigger (question) styling
|
|
10851
|
-
trigger: z17.object({
|
|
10852
|
-
textColorToken: z17.string(),
|
|
10853
|
-
fontWeight: z17.enum(["regular", "medium", "semibold", "bold"]).nullable()
|
|
10854
|
-
// null = inherit from theme
|
|
10855
|
-
}),
|
|
10856
|
-
// Hover state styling
|
|
10857
|
-
hover: z17.object({
|
|
10858
|
-
backgroundColorToken: z17.string().optional(),
|
|
10859
|
-
textColorToken: z17.string().optional(),
|
|
10860
|
-
borderColorToken: z17.string().optional()
|
|
10861
|
-
}),
|
|
10862
|
-
// Content (answer) styling
|
|
10863
|
-
content: z17.object({
|
|
10864
|
-
textColorToken: z17.string()
|
|
10865
|
-
})
|
|
10866
|
-
});
|
|
10867
|
-
|
|
10868
|
-
// ../theme-core/src/inputs/types.ts
|
|
10869
|
-
import { z as z18 } from "zod";
|
|
10870
|
-
var inputSystemSchema = z18.object({
|
|
10871
|
-
// Base styling (applied to all inputs)
|
|
10872
|
-
base: z18.object({
|
|
10873
|
-
background: z18.union([
|
|
10874
|
-
z18.object({
|
|
10875
|
-
type: z18.literal("solid"),
|
|
10876
|
-
colorToken: z18.string()
|
|
10877
|
-
}),
|
|
10878
|
-
z18.object({
|
|
10879
|
-
type: z18.literal("transparent")
|
|
10880
|
-
})
|
|
10881
|
-
]),
|
|
10882
|
-
textColorToken: z18.string(),
|
|
10883
|
-
border: z18.object({
|
|
10884
|
-
widthClass: z18.string(),
|
|
10885
|
-
// e.g., 'border', 'border-2'
|
|
10886
|
-
colorToken: z18.string(),
|
|
10887
|
-
style: z18.enum(["all", "underline"]).optional()
|
|
10888
|
-
}),
|
|
10889
|
-
corners: z18.enum(["square", "soft", "rounded", "pill"]).nullable(),
|
|
10890
|
-
// null = inherit from theme.corners
|
|
10891
|
-
shadow: z18.object({
|
|
10892
|
-
elevation: z18.enum(["none", "low", "medium"]),
|
|
10893
|
-
softness: z18.enum(["soft", "crisp", "hard"]).nullable()
|
|
10894
|
-
}).nullable(),
|
|
10895
|
-
spacing: z18.enum(["compact", "cozy", "medium", "comfortable"]),
|
|
10896
|
-
// padding inside inputs
|
|
10897
|
-
fontSize: z18.enum(["sm", "base", "lg"])
|
|
10898
|
-
}),
|
|
10899
|
-
// Label styling
|
|
10900
|
-
label: z18.object({
|
|
10901
|
-
textColorToken: z18.string(),
|
|
10902
|
-
fontWeight: z18.enum(["regular", "medium", "semibold", "bold", "black"]),
|
|
10903
|
-
fontSize: z18.enum(["2xs", "xs", "sm", "base"]),
|
|
10904
|
-
textTransform: z18.enum(["none", "uppercase", "lowercase", "capitalize"]).optional(),
|
|
10905
|
-
letterSpacing: z18.enum(["normal", "wide", "wider", "widest"]).optional(),
|
|
10906
|
-
opacity: z18.number().min(0.2).max(1).optional()
|
|
10907
|
-
}),
|
|
10908
|
-
// Focus state
|
|
10909
|
-
focus: z18.object({
|
|
10910
|
-
ringColorToken: z18.string(),
|
|
10911
|
-
ringWidth: z18.enum(["0", "1", "2", "3"]),
|
|
10912
|
-
borderColorToken: z18.string().optional()
|
|
10913
|
-
// Change border color on focus
|
|
10914
|
-
}),
|
|
10915
|
-
// Error state (for validation feedback)
|
|
10916
|
-
error: z18.object({
|
|
10917
|
-
borderColorToken: z18.string(),
|
|
10918
|
-
textColorToken: z18.string()
|
|
10919
|
-
}),
|
|
10920
|
-
// Disabled state
|
|
10921
|
-
disabled: z18.object({
|
|
10922
|
-
backgroundColorToken: z18.string(),
|
|
10923
|
-
textColorToken: z18.string(),
|
|
10924
|
-
opacity: z18.number().min(0.3).max(0.7)
|
|
10925
|
-
})
|
|
10926
|
-
});
|
|
10927
|
-
|
|
10928
|
-
// ../theme-core/src/gradients/types.ts
|
|
10929
|
-
import { z as z19 } from "zod";
|
|
10930
|
-
var gradientStopSchema = z19.object({
|
|
10931
|
-
color: z19.string(),
|
|
10932
|
-
// Theme color token name (e.g., 'primary-500')
|
|
10933
|
-
position: z19.number().min(0).max(100)
|
|
10934
|
-
// Percentage 0-100
|
|
10935
|
-
});
|
|
10936
|
-
var gradientConfigSchema = z19.object({
|
|
10937
|
-
type: z19.enum(["linear", "radial"]),
|
|
10938
|
-
angle: z19.number().min(0).max(360).optional(),
|
|
10939
|
-
// For linear gradients (degrees)
|
|
10940
|
-
position: z19.string().optional(),
|
|
10941
|
-
// For radial gradients ('center', 'top left', etc.)
|
|
10942
|
-
stops: z19.array(gradientStopSchema).min(2)
|
|
10943
|
-
});
|
|
10944
|
-
|
|
10945
|
-
// ../theme-core/src/navigation/types.ts
|
|
10946
|
-
import { z as z21 } from "zod";
|
|
10947
|
-
|
|
10948
|
-
// ../theme-core/src/interactive/baseSchema.ts
|
|
10949
|
-
import { z as z20 } from "zod";
|
|
10950
|
-
var interactiveTypographySchema = z20.object({
|
|
10951
|
-
/** Font family source */
|
|
10952
|
-
typography: z20.enum(["body", "heading"]).default("body"),
|
|
10953
|
-
/** Font weight */
|
|
10954
|
-
fontWeight: z20.enum(["regular", "medium", "semibold", "bold"]).default("medium"),
|
|
10955
|
-
/** Text transform */
|
|
10956
|
-
textTransform: z20.enum(["none", "uppercase", "capitalize"]).default("none"),
|
|
10957
|
-
/** Italic style */
|
|
10958
|
-
italic: z20.boolean().default(false)
|
|
10959
|
-
});
|
|
10960
|
-
var effectApplicationSchema2 = z20.object({
|
|
10961
|
-
/** Effect preset ID */
|
|
10962
|
-
effectId: z20.string(),
|
|
10963
|
-
/** User-provided customization options */
|
|
10964
|
-
options: z20.record(z20.string(), z20.any()).optional()
|
|
10965
|
-
});
|
|
10966
|
-
var effectCompositionSchema = z20.object({
|
|
10967
|
-
/** Effects always applied */
|
|
10968
|
-
base: z20.array(effectApplicationSchema2).optional(),
|
|
10969
|
-
/** Effects applied on hover */
|
|
10970
|
-
hover: z20.array(effectApplicationSchema2).optional(),
|
|
10971
|
-
/** Effects applied on active/pressed */
|
|
10972
|
-
active: z20.array(effectApplicationSchema2).optional(),
|
|
10973
|
-
/** Effects applied on focus */
|
|
10974
|
-
focus: z20.array(effectApplicationSchema2).optional()
|
|
10975
|
-
});
|
|
10976
|
-
|
|
10977
|
-
// ../theme-core/src/navigation/types.ts
|
|
10978
|
-
var navLinkPaddingSchema = z21.enum(["none", "compact", "default"]);
|
|
10979
|
-
var navLinkPaddingXSchema = z21.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
|
|
10980
|
-
var navLinkBorderRadiusSchema = z21.enum(["none", "sm", "md", "full"]);
|
|
10981
|
-
var navLinkTextSizeSchema = z21.enum(["xs", "sm", "base", "lg"]);
|
|
10982
|
-
var navLinkLetterSpacingSchema = z21.enum(["normal", "wide", "wider", "widest"]);
|
|
10983
|
-
var navLinkStyleSchema = z21.object({
|
|
10984
|
-
/** Display name for the style */
|
|
10985
|
-
name: z21.string().min(1).max(30).optional(),
|
|
10986
|
-
/** Typography settings (inherited from interactive base) */
|
|
10987
|
-
...interactiveTypographySchema.shape,
|
|
10988
|
-
/** Text color token */
|
|
10989
|
-
colorToken: z21.string().default("text"),
|
|
10990
|
-
/** Optional text size override */
|
|
10991
|
-
textSize: navLinkTextSizeSchema.optional(),
|
|
10992
|
-
/** Optional letter spacing override */
|
|
10993
|
-
letterSpacing: navLinkLetterSpacingSchema.optional(),
|
|
10994
|
-
/** Hover/active color token (for color-change effects) */
|
|
10995
|
-
hoverColorToken: z21.string().nullable().optional(),
|
|
10996
|
-
/** Padding preset */
|
|
10997
|
-
padding: navLinkPaddingSchema.default("compact"),
|
|
10998
|
-
/** Horizontal padding override (overrides horizontal component of padding preset) */
|
|
10999
|
-
paddingX: navLinkPaddingXSchema.optional(),
|
|
11000
|
-
/** Border radius (for capsule/pill styles) */
|
|
11001
|
-
borderRadius: navLinkBorderRadiusSchema.default("none"),
|
|
11002
|
-
/** Composable effects */
|
|
11003
|
-
effects: effectCompositionSchema.optional()
|
|
10551
|
+
// ../theme-core/src/navigation/types.ts
|
|
10552
|
+
var navLinkPaddingSchema = z18.enum(["none", "compact", "default"]);
|
|
10553
|
+
var navLinkPaddingXSchema = z18.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
|
|
10554
|
+
var navLinkBorderRadiusSchema = z18.enum(["none", "sm", "md", "full"]);
|
|
10555
|
+
var navLinkTextSizeSchema = z18.enum(["xs", "sm", "base", "lg"]);
|
|
10556
|
+
var navLinkLetterSpacingSchema = z18.enum(["normal", "wide", "wider", "widest"]);
|
|
10557
|
+
var navLinkStyleSchema = z18.object({
|
|
10558
|
+
/** Display name for the style */
|
|
10559
|
+
name: z18.string().min(1).max(30).optional(),
|
|
10560
|
+
/** Typography settings (inherited from interactive base) */
|
|
10561
|
+
...interactiveTypographySchema.shape,
|
|
10562
|
+
/** Text color token */
|
|
10563
|
+
colorToken: z18.string().default("text"),
|
|
10564
|
+
/** Optional text size override */
|
|
10565
|
+
textSize: navLinkTextSizeSchema.optional(),
|
|
10566
|
+
/** Optional letter spacing override */
|
|
10567
|
+
letterSpacing: navLinkLetterSpacingSchema.optional(),
|
|
10568
|
+
/** Hover/active color token (for color-change effects) */
|
|
10569
|
+
hoverColorToken: z18.string().nullable().optional(),
|
|
10570
|
+
/** Padding preset */
|
|
10571
|
+
padding: navLinkPaddingSchema.default("compact"),
|
|
10572
|
+
/** Horizontal padding override (overrides horizontal component of padding preset) */
|
|
10573
|
+
paddingX: navLinkPaddingXSchema.optional(),
|
|
10574
|
+
/** Border radius (for capsule/pill styles) */
|
|
10575
|
+
borderRadius: navLinkBorderRadiusSchema.default("none"),
|
|
10576
|
+
/** Composable effects */
|
|
10577
|
+
effects: effectCompositionSchema.optional()
|
|
11004
10578
|
});
|
|
11005
10579
|
|
|
11006
10580
|
// ../theme-core/src/customCss/validation.ts
|
|
11007
|
-
import { z as
|
|
10581
|
+
import { z as z19 } from "zod";
|
|
11008
10582
|
var FORBIDDEN_SELECTORS = [":root", "html", "body"];
|
|
11009
10583
|
var UNIVERSAL_SELECTOR = "*";
|
|
11010
10584
|
var REMOTE_URL_PATTERN = /url\s*\(\s*['"]?(https?:|\/\/)/i;
|
|
@@ -11046,7 +10620,7 @@ function containsForbiddenSelector(selector) {
|
|
|
11046
10620
|
}
|
|
11047
10621
|
return false;
|
|
11048
10622
|
}
|
|
11049
|
-
var selectorSchema =
|
|
10623
|
+
var selectorSchema = z19.string().min(1, "Selector cannot be empty").max(200, "Selector too long (max 200 characters)").refine(
|
|
11050
10624
|
(s) => !containsForbiddenSelector(s),
|
|
11051
10625
|
{ message: "Global selectors (:root, html, body, *) are not allowed" }
|
|
11052
10626
|
);
|
|
@@ -11056,38 +10630,38 @@ function containsRemoteUrl(value) {
|
|
|
11056
10630
|
function containsJavascriptUrl(value) {
|
|
11057
10631
|
return JAVASCRIPT_URL_PATTERN.test(value);
|
|
11058
10632
|
}
|
|
11059
|
-
var declarationValueSchema =
|
|
10633
|
+
var declarationValueSchema = z19.string().max(500, "Declaration value too long (max 500 characters)").refine(
|
|
11060
10634
|
(v) => !containsRemoteUrl(v),
|
|
11061
10635
|
{ message: "Remote url() references are not allowed. Use local paths, data URIs, or fragment IDs." }
|
|
11062
10636
|
).refine(
|
|
11063
10637
|
(v) => !containsJavascriptUrl(v),
|
|
11064
10638
|
{ message: "javascript: URLs are not allowed" }
|
|
11065
10639
|
);
|
|
11066
|
-
var declarationsSchema =
|
|
11067
|
-
|
|
10640
|
+
var declarationsSchema = z19.record(
|
|
10641
|
+
z19.string().min(1).max(100),
|
|
11068
10642
|
// property name
|
|
11069
10643
|
declarationValueSchema
|
|
11070
10644
|
// property value
|
|
11071
10645
|
);
|
|
11072
|
-
var customCssRuleSchema =
|
|
11073
|
-
id:
|
|
10646
|
+
var customCssRuleSchema = z19.object({
|
|
10647
|
+
id: z19.string().min(1, "Rule ID is required").max(50, "Rule ID too long"),
|
|
11074
10648
|
selector: selectorSchema,
|
|
11075
10649
|
declarations: declarationsSchema
|
|
11076
10650
|
});
|
|
11077
10651
|
var blockCustomCssRuleSchema = customCssRuleSchema.extend({
|
|
11078
|
-
blockKind:
|
|
10652
|
+
blockKind: z19.string().min(1, "Block kind is required").max(50, "Block kind too long")
|
|
11079
10653
|
});
|
|
11080
|
-
var customCssRulesSchema =
|
|
11081
|
-
var blockCustomCssRulesSchema =
|
|
10654
|
+
var customCssRulesSchema = z19.array(customCssRuleSchema).optional();
|
|
10655
|
+
var blockCustomCssRulesSchema = z19.array(blockCustomCssRuleSchema).optional();
|
|
11082
10656
|
|
|
11083
10657
|
// ../theme-core/src/customCss/atRuleValidation.ts
|
|
11084
|
-
import { z as
|
|
10658
|
+
import { z as z20 } from "zod";
|
|
11085
10659
|
var KEYFRAME_OFFSET_PATTERN = /^(from|to|\d{1,3}%)$/i;
|
|
11086
10660
|
var ANIMATION_NAME_PATTERN = /^[a-zA-Z_-][a-zA-Z0-9_-]*$/;
|
|
11087
10661
|
var BLOCKED_AT_RULES = ["@import", "@charset"];
|
|
11088
10662
|
var BLOCKED_AT_RULE_PATTERN = /@(?:import|charset)\b/i;
|
|
11089
|
-
var ruleIdSchema =
|
|
11090
|
-
var nestedRuleSchema =
|
|
10663
|
+
var ruleIdSchema = z20.string().min(1, "Rule ID is required").max(50, "Rule ID too long");
|
|
10664
|
+
var nestedRuleSchema = z20.object({
|
|
11091
10665
|
selector: selectorSchema,
|
|
11092
10666
|
declarations: declarationsSchema
|
|
11093
10667
|
});
|
|
@@ -11099,146 +10673,146 @@ function isValidKeyframeOffset(offset) {
|
|
|
11099
10673
|
const value = parseInt(match[1], 10);
|
|
11100
10674
|
return value >= 0 && value <= 100;
|
|
11101
10675
|
}
|
|
11102
|
-
var keyframeOffsetSchema =
|
|
10676
|
+
var keyframeOffsetSchema = z20.string().transform((offset) => offset.trim()).refine(
|
|
11103
10677
|
(offset) => KEYFRAME_OFFSET_PATTERN.test(offset),
|
|
11104
10678
|
{ message: 'Invalid keyframe offset. Use percentages (0%, 50%, 100%) or "from"/"to"' }
|
|
11105
10679
|
).refine(
|
|
11106
10680
|
isValidKeyframeOffset,
|
|
11107
10681
|
{ message: "Keyframe offset must be between 0% and 100%" }
|
|
11108
10682
|
);
|
|
11109
|
-
var animationNameSchema =
|
|
10683
|
+
var animationNameSchema = z20.string().min(1, "Animation name is required").max(50, "Animation name too long").refine(
|
|
11110
10684
|
(name) => ANIMATION_NAME_PATTERN.test(name),
|
|
11111
10685
|
{ message: "Invalid animation name. Use letters, numbers, dashes, underscores (start with letter, dash, or underscore)" }
|
|
11112
10686
|
);
|
|
11113
|
-
var keyframeSchema =
|
|
10687
|
+
var keyframeSchema = z20.object({
|
|
11114
10688
|
offset: keyframeOffsetSchema,
|
|
11115
10689
|
declarations: declarationsSchema
|
|
11116
10690
|
});
|
|
11117
|
-
var keyframesAtRuleSchema =
|
|
10691
|
+
var keyframesAtRuleSchema = z20.object({
|
|
11118
10692
|
id: ruleIdSchema,
|
|
11119
|
-
type:
|
|
10693
|
+
type: z20.literal("keyframes"),
|
|
11120
10694
|
name: animationNameSchema,
|
|
11121
|
-
frames:
|
|
10695
|
+
frames: z20.array(keyframeSchema).min(1, "At least one keyframe is required")
|
|
11122
10696
|
});
|
|
11123
|
-
var fontFaceDeclarationsSchema =
|
|
10697
|
+
var fontFaceDeclarationsSchema = z20.record(z20.string().min(1).max(100), declarationValueSchema).refine(
|
|
11124
10698
|
(decls) => "fontFamily" in decls || "font-family" in decls,
|
|
11125
10699
|
{ message: "font-family is required in @font-face" }
|
|
11126
10700
|
);
|
|
11127
|
-
var fontFaceAtRuleSchema =
|
|
10701
|
+
var fontFaceAtRuleSchema = z20.object({
|
|
11128
10702
|
id: ruleIdSchema,
|
|
11129
|
-
type:
|
|
10703
|
+
type: z20.literal("font-face"),
|
|
11130
10704
|
declarations: fontFaceDeclarationsSchema
|
|
11131
10705
|
});
|
|
11132
|
-
var mediaQuerySchema =
|
|
11133
|
-
var mediaAtRuleSchema =
|
|
10706
|
+
var mediaQuerySchema = z20.string().min(1, "Media query is required").max(200, "Media query too long");
|
|
10707
|
+
var mediaAtRuleSchema = z20.object({
|
|
11134
10708
|
id: ruleIdSchema,
|
|
11135
|
-
type:
|
|
10709
|
+
type: z20.literal("media"),
|
|
11136
10710
|
query: mediaQuerySchema,
|
|
11137
|
-
rules:
|
|
10711
|
+
rules: z20.array(nestedRuleSchema).min(1, "At least one rule is required")
|
|
11138
10712
|
});
|
|
11139
|
-
var supportsConditionSchema =
|
|
11140
|
-
var supportsAtRuleSchema =
|
|
10713
|
+
var supportsConditionSchema = z20.string().min(1, "Supports condition is required").max(200, "Supports condition too long");
|
|
10714
|
+
var supportsAtRuleSchema = z20.object({
|
|
11141
10715
|
id: ruleIdSchema,
|
|
11142
|
-
type:
|
|
10716
|
+
type: z20.literal("supports"),
|
|
11143
10717
|
condition: supportsConditionSchema,
|
|
11144
|
-
rules:
|
|
10718
|
+
rules: z20.array(nestedRuleSchema).min(1, "At least one rule is required")
|
|
11145
10719
|
});
|
|
11146
10720
|
function containsBlockedAtRule(css) {
|
|
11147
10721
|
return BLOCKED_AT_RULE_PATTERN.test(css);
|
|
11148
10722
|
}
|
|
11149
|
-
var rawCssSchema =
|
|
10723
|
+
var rawCssSchema = z20.string().min(1, "CSS is required").max(5e3, "Raw CSS too long (max 5000 characters)").refine(
|
|
11150
10724
|
(css) => css.trim().startsWith("@"),
|
|
11151
10725
|
{ message: "Raw at-rule must start with @" }
|
|
11152
10726
|
).refine(
|
|
11153
10727
|
(css) => !containsBlockedAtRule(css),
|
|
11154
10728
|
{ message: `Blocked at-rules: ${BLOCKED_AT_RULES.join(", ")}. Use typed at-rules or local assets instead.` }
|
|
11155
10729
|
);
|
|
11156
|
-
var rawAtRuleSchema =
|
|
10730
|
+
var rawAtRuleSchema = z20.object({
|
|
11157
10731
|
id: ruleIdSchema,
|
|
11158
|
-
type:
|
|
10732
|
+
type: z20.literal("raw"),
|
|
11159
10733
|
css: rawCssSchema
|
|
11160
10734
|
});
|
|
11161
|
-
var customCssAtRuleSchema =
|
|
10735
|
+
var customCssAtRuleSchema = z20.discriminatedUnion("type", [
|
|
11162
10736
|
keyframesAtRuleSchema,
|
|
11163
10737
|
fontFaceAtRuleSchema,
|
|
11164
10738
|
mediaAtRuleSchema,
|
|
11165
10739
|
supportsAtRuleSchema,
|
|
11166
10740
|
rawAtRuleSchema
|
|
11167
10741
|
]);
|
|
11168
|
-
var customCssAtRulesSchema =
|
|
10742
|
+
var customCssAtRulesSchema = z20.array(customCssAtRuleSchema).optional();
|
|
11169
10743
|
|
|
11170
10744
|
// ../theme-core/src/shared/componentStyles.ts
|
|
11171
|
-
import { z as
|
|
11172
|
-
var componentBorderSchema =
|
|
11173
|
-
width:
|
|
11174
|
-
style:
|
|
11175
|
-
colorToken:
|
|
10745
|
+
import { z as z21 } from "zod";
|
|
10746
|
+
var componentBorderSchema = z21.object({
|
|
10747
|
+
width: z21.enum(["none", "hairline", "thin", "medium", "thick"]).default("none"),
|
|
10748
|
+
style: z21.enum(["solid", "dashed"]).default("solid"),
|
|
10749
|
+
colorToken: z21.string().optional()
|
|
11176
10750
|
// defaults to "border" if not set
|
|
11177
10751
|
});
|
|
11178
|
-
var componentShadowSchema =
|
|
11179
|
-
elevation:
|
|
10752
|
+
var componentShadowSchema = z21.object({
|
|
10753
|
+
elevation: z21.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("sm")
|
|
11180
10754
|
});
|
|
11181
10755
|
|
|
11182
10756
|
// ../theme-core/src/schema.ts
|
|
11183
|
-
var axesSchema =
|
|
11184
|
-
tone:
|
|
11185
|
-
energy:
|
|
11186
|
-
density:
|
|
11187
|
-
mediaBias:
|
|
11188
|
-
conversionBias:
|
|
11189
|
-
motion:
|
|
11190
|
-
});
|
|
11191
|
-
var colourHexString =
|
|
11192
|
-
var paletteColorSchema =
|
|
11193
|
-
name:
|
|
10757
|
+
var axesSchema = z22.object({
|
|
10758
|
+
tone: z22.enum(["minimal", "classic", "bold"]),
|
|
10759
|
+
energy: z22.enum(["calm", "vibrant"]),
|
|
10760
|
+
density: z22.enum(["airy", "regular", "compact"]),
|
|
10761
|
+
mediaBias: z22.enum(["text", "media", "mixed"]),
|
|
10762
|
+
conversionBias: z22.enum(["low", "med", "high"]),
|
|
10763
|
+
motion: z22.enum(["subtle", "standard", "expressive"])
|
|
10764
|
+
});
|
|
10765
|
+
var colourHexString = z22.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
|
|
10766
|
+
var paletteColorSchema = z22.object({
|
|
10767
|
+
name: z22.string().min(1),
|
|
11194
10768
|
hex: colourHexString
|
|
11195
10769
|
});
|
|
11196
|
-
var paletteMetaSchema =
|
|
11197
|
-
mode:
|
|
10770
|
+
var paletteMetaSchema = z22.object({
|
|
10771
|
+
mode: z22.enum(["light", "dark"])
|
|
11198
10772
|
});
|
|
11199
|
-
var paletteSchema =
|
|
11200
|
-
colors:
|
|
10773
|
+
var paletteSchema = z22.object({
|
|
10774
|
+
colors: z22.array(paletteColorSchema),
|
|
11201
10775
|
meta: paletteMetaSchema
|
|
11202
10776
|
});
|
|
11203
|
-
var typographyStyleSchema =
|
|
11204
|
-
family:
|
|
11205
|
-
weight:
|
|
11206
|
-
letterSpacing:
|
|
11207
|
-
lineHeight:
|
|
10777
|
+
var typographyStyleSchema = z22.object({
|
|
10778
|
+
family: z22.string().min(1),
|
|
10779
|
+
weight: z22.enum(["light", "regular", "medium", "semibold", "bold"]),
|
|
10780
|
+
letterSpacing: z22.enum(["tight", "normal", "loose"]),
|
|
10781
|
+
lineHeight: z22.enum(["normal", "relaxed", "loose"])
|
|
11208
10782
|
});
|
|
11209
10783
|
var bodyTypographyStyleSchema = typographyStyleSchema.extend({
|
|
11210
|
-
size:
|
|
10784
|
+
size: z22.enum(["md", "lg", "xl"])
|
|
11211
10785
|
});
|
|
11212
|
-
var headingSizeSchema =
|
|
11213
|
-
var headingTypographyOverridesSchema =
|
|
11214
|
-
weight:
|
|
11215
|
-
letterSpacing:
|
|
10786
|
+
var headingSizeSchema = z22.enum(["xs", "sm", "md", "lg", "xl", "2xl"]);
|
|
10787
|
+
var headingTypographyOverridesSchema = z22.object({
|
|
10788
|
+
weight: z22.enum(["light", "regular", "medium", "semibold", "bold"]).nullable().optional(),
|
|
10789
|
+
letterSpacing: z22.enum(["tight", "normal", "loose"]).nullable().optional(),
|
|
11216
10790
|
size: headingSizeSchema.nullable().optional(),
|
|
11217
|
-
lineHeight:
|
|
11218
|
-
italic:
|
|
11219
|
-
colorToken:
|
|
10791
|
+
lineHeight: z22.enum(["normal", "relaxed", "loose"]).nullable().optional(),
|
|
10792
|
+
italic: z22.boolean().nullable().optional(),
|
|
10793
|
+
colorToken: z22.string().min(1).nullable().optional()
|
|
11220
10794
|
// Palette token name for heading color
|
|
11221
10795
|
});
|
|
11222
10796
|
var headingTypographyStyleSchema = typographyStyleSchema.extend({
|
|
11223
|
-
case:
|
|
11224
|
-
italic:
|
|
11225
|
-
colorToken:
|
|
10797
|
+
case: z22.enum(["uppercase", "normal", "smallCaps"]).nullable(),
|
|
10798
|
+
italic: z22.boolean().nullable(),
|
|
10799
|
+
colorToken: z22.string().min(1).nullable().optional()
|
|
11226
10800
|
// Palette token name for heading color
|
|
11227
10801
|
});
|
|
11228
|
-
var proseLinkUnderlineStyleSchema =
|
|
11229
|
-
var proseLinkUnderlineThicknessSchema =
|
|
11230
|
-
var proseLinkUnderlineOffsetSchema =
|
|
11231
|
-
var proseLinkStyleSchema =
|
|
11232
|
-
colorToken:
|
|
11233
|
-
hoverColorToken:
|
|
11234
|
-
underline:
|
|
11235
|
-
decorationColorToken:
|
|
11236
|
-
hoverDecorationColorToken:
|
|
10802
|
+
var proseLinkUnderlineStyleSchema = z22.enum(["solid", "dotted", "dashed"]);
|
|
10803
|
+
var proseLinkUnderlineThicknessSchema = z22.enum(["auto", "fromFont", "thin", "medium", "thick"]);
|
|
10804
|
+
var proseLinkUnderlineOffsetSchema = z22.enum(["auto", "tight", "normal", "loose"]);
|
|
10805
|
+
var proseLinkStyleSchema = z22.object({
|
|
10806
|
+
colorToken: z22.string().min(1).optional(),
|
|
10807
|
+
hoverColorToken: z22.string().min(1).optional(),
|
|
10808
|
+
underline: z22.boolean().optional(),
|
|
10809
|
+
decorationColorToken: z22.string().min(1).optional(),
|
|
10810
|
+
hoverDecorationColorToken: z22.string().min(1).optional(),
|
|
11237
10811
|
underlineStyle: proseLinkUnderlineStyleSchema.optional(),
|
|
11238
10812
|
underlineThickness: proseLinkUnderlineThicknessSchema.optional(),
|
|
11239
10813
|
underlineOffset: proseLinkUnderlineOffsetSchema.optional()
|
|
11240
10814
|
});
|
|
11241
|
-
var semanticSpacingSchema =
|
|
10815
|
+
var semanticSpacingSchema = z22.enum([
|
|
11242
10816
|
"none",
|
|
11243
10817
|
"compact",
|
|
11244
10818
|
"cozy",
|
|
@@ -11246,62 +10820,62 @@ var semanticSpacingSchema = z25.enum([
|
|
|
11246
10820
|
"comfortable",
|
|
11247
10821
|
"spacious"
|
|
11248
10822
|
]);
|
|
11249
|
-
var boxRoundedSchema =
|
|
11250
|
-
var boxBackgroundOverlaySchema =
|
|
11251
|
-
type:
|
|
11252
|
-
color:
|
|
11253
|
-
gradient:
|
|
11254
|
-
opacity:
|
|
11255
|
-
});
|
|
11256
|
-
var boxBackgroundSchema =
|
|
11257
|
-
type:
|
|
11258
|
-
color:
|
|
11259
|
-
gradient:
|
|
10823
|
+
var boxRoundedSchema = z22.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
|
|
10824
|
+
var boxBackgroundOverlaySchema = z22.object({
|
|
10825
|
+
type: z22.enum(["none", "color", "gradient"]).nullable().optional(),
|
|
10826
|
+
color: z22.string().nullable().optional(),
|
|
10827
|
+
gradient: z22.string().nullable().optional(),
|
|
10828
|
+
opacity: z22.number().min(0).max(1).nullable().optional()
|
|
10829
|
+
});
|
|
10830
|
+
var boxBackgroundSchema = z22.object({
|
|
10831
|
+
type: z22.enum(["color", "gradient", "image"]).optional(),
|
|
10832
|
+
color: z22.string().nullable().optional(),
|
|
10833
|
+
gradient: z22.string().nullable().optional(),
|
|
11260
10834
|
image: mediaSchema.nullable().optional(),
|
|
11261
|
-
objectFit:
|
|
11262
|
-
scale:
|
|
11263
|
-
position:
|
|
11264
|
-
opacity:
|
|
10835
|
+
objectFit: z22.enum(["fill", "fit", "original", "custom"]).nullable().optional(),
|
|
10836
|
+
scale: z22.string().nullable().optional(),
|
|
10837
|
+
position: z22.string().nullable().optional(),
|
|
10838
|
+
opacity: z22.number().min(0).max(1).nullable().optional(),
|
|
11265
10839
|
overlay: boxBackgroundOverlaySchema.nullable().optional(),
|
|
11266
|
-
textColor:
|
|
11267
|
-
headingColor:
|
|
10840
|
+
textColor: z22.string().nullable().optional(),
|
|
10841
|
+
headingColor: z22.string().nullable().optional()
|
|
11268
10842
|
});
|
|
11269
|
-
var sectionStylesOverrideSchema =
|
|
10843
|
+
var sectionStylesOverrideSchema = z22.object({
|
|
11270
10844
|
background: boxBackgroundSchema.nullable().optional(),
|
|
11271
10845
|
spacing: semanticSpacingSchema.nullable().optional(),
|
|
11272
|
-
minHeight:
|
|
10846
|
+
minHeight: z22.enum(["none", "hero", "immersive"]).nullable().optional()
|
|
11273
10847
|
});
|
|
11274
|
-
var containerStylesOverrideSchema =
|
|
10848
|
+
var containerStylesOverrideSchema = z22.object({
|
|
11275
10849
|
background: boxBackgroundSchema.nullable().optional(),
|
|
11276
10850
|
spacing: semanticSpacingSchema.nullable().optional(),
|
|
11277
|
-
raised:
|
|
10851
|
+
raised: z22.boolean().nullable().optional(),
|
|
11278
10852
|
rounded: boxRoundedSchema.nullable().optional(),
|
|
11279
|
-
fullWidth:
|
|
10853
|
+
fullWidth: z22.boolean().nullable().optional()
|
|
11280
10854
|
});
|
|
11281
|
-
var cardBorderOverrideSchema =
|
|
11282
|
-
enabled:
|
|
11283
|
-
width:
|
|
11284
|
-
colorToken:
|
|
10855
|
+
var cardBorderOverrideSchema = z22.object({
|
|
10856
|
+
enabled: z22.boolean().nullable().optional(),
|
|
10857
|
+
width: z22.enum(["none", "1", "2", "3"]).nullable().optional(),
|
|
10858
|
+
colorToken: z22.string().nullable().optional()
|
|
11285
10859
|
});
|
|
11286
|
-
var cardStylesOverrideSchema =
|
|
10860
|
+
var cardStylesOverrideSchema = z22.object({
|
|
11287
10861
|
background: boxBackgroundSchema.nullable().optional(),
|
|
11288
10862
|
border: cardBorderOverrideSchema.nullable().optional(),
|
|
11289
10863
|
spacing: semanticSpacingSchema.nullable().optional(),
|
|
11290
|
-
raised:
|
|
10864
|
+
raised: z22.boolean().nullable().optional(),
|
|
11291
10865
|
rounded: boxRoundedSchema.nullable().optional()
|
|
11292
10866
|
});
|
|
11293
|
-
var blockStyleOverridesSchema =
|
|
10867
|
+
var blockStyleOverridesSchema = z22.object({
|
|
11294
10868
|
sectionStyles: sectionStylesOverrideSchema.nullable().optional(),
|
|
11295
10869
|
containerStyles: containerStylesOverrideSchema.nullable().optional(),
|
|
11296
10870
|
cardStyles: cardStylesOverrideSchema.nullable().optional()
|
|
11297
10871
|
});
|
|
11298
|
-
var blockThemeOverrideSchema =
|
|
11299
|
-
typography:
|
|
10872
|
+
var blockThemeOverrideSchema = z22.object({
|
|
10873
|
+
typography: z22.object({
|
|
11300
10874
|
proseLinkStyle: proseLinkStyleSchema.optional()
|
|
11301
10875
|
}).optional(),
|
|
11302
10876
|
styles: blockStyleOverridesSchema.optional()
|
|
11303
10877
|
});
|
|
11304
|
-
var typographyScaleSchema =
|
|
10878
|
+
var typographyScaleSchema = z22.enum([
|
|
11305
10879
|
// New intuitive names
|
|
11306
10880
|
"compact",
|
|
11307
10881
|
// ratio 1.2 (was minorThird)
|
|
@@ -11314,9 +10888,9 @@ var typographyScaleSchema = z25.enum([
|
|
|
11314
10888
|
"majorThird",
|
|
11315
10889
|
"perfectFourth"
|
|
11316
10890
|
]);
|
|
11317
|
-
var typographySchema =
|
|
10891
|
+
var typographySchema = z22.object({
|
|
11318
10892
|
body: bodyTypographyStyleSchema,
|
|
11319
|
-
headings:
|
|
10893
|
+
headings: z22.object({
|
|
11320
10894
|
default: headingTypographyStyleSchema,
|
|
11321
10895
|
h1: headingTypographyOverridesSchema,
|
|
11322
10896
|
h2: headingTypographyOverridesSchema,
|
|
@@ -11329,41 +10903,41 @@ var typographySchema = z25.object({
|
|
|
11329
10903
|
scale: typographyScaleSchema,
|
|
11330
10904
|
proseLinkStyle: proseLinkStyleSchema.optional()
|
|
11331
10905
|
});
|
|
11332
|
-
var spaceSchema =
|
|
11333
|
-
var corners =
|
|
11334
|
-
var shadow =
|
|
11335
|
-
elevation:
|
|
11336
|
-
softness:
|
|
11337
|
-
position:
|
|
10906
|
+
var spaceSchema = z22.enum(["comfortable", "standard", "dense"]);
|
|
10907
|
+
var corners = z22.enum(["square", "soft", "rounded", "pill"]);
|
|
10908
|
+
var shadow = z22.object({
|
|
10909
|
+
elevation: z22.enum(["none", "low", "medium", "high"]),
|
|
10910
|
+
softness: z22.enum(["crisp", "soft", "hard"]).nullable(),
|
|
10911
|
+
position: z22.enum(["bottom", "bottom-right"]).default("bottom")
|
|
11338
10912
|
});
|
|
11339
|
-
var border =
|
|
11340
|
-
width:
|
|
11341
|
-
style:
|
|
10913
|
+
var border = z22.object({
|
|
10914
|
+
width: z22.enum(["none", "hairline", "thin", "thick"]),
|
|
10915
|
+
style: z22.enum(["solid", "dashed"])
|
|
11342
10916
|
});
|
|
11343
|
-
var motion =
|
|
11344
|
-
level:
|
|
11345
|
-
easing:
|
|
10917
|
+
var motion = z22.object({
|
|
10918
|
+
level: z22.enum(["off", "low", "medium", "high"]),
|
|
10919
|
+
easing: z22.enum(["standard", "snappy", "gentle"]).nullable()
|
|
11346
10920
|
});
|
|
11347
|
-
var buttonStyle =
|
|
10921
|
+
var buttonStyle = z22.object({
|
|
11348
10922
|
shape: corners
|
|
11349
10923
|
// Used for --radius-control CSS variable
|
|
11350
10924
|
});
|
|
11351
|
-
var cardStyle =
|
|
11352
|
-
elevation:
|
|
11353
|
-
border:
|
|
10925
|
+
var cardStyle = z22.object({
|
|
10926
|
+
elevation: z22.enum(["none", "low", "medium", "high"]),
|
|
10927
|
+
border: z22.enum(["none", "subtle", "defined"]),
|
|
11354
10928
|
shape: corners,
|
|
11355
|
-
headerStyle:
|
|
11356
|
-
mediaTreatment:
|
|
10929
|
+
headerStyle: z22.enum(["plain", "accentBar", "subtleBg"]).nullable(),
|
|
10930
|
+
mediaTreatment: z22.enum(["square", "rounded", "bleed"]).nullable()
|
|
11357
10931
|
});
|
|
11358
|
-
var inputStyle =
|
|
10932
|
+
var inputStyle = z22.object({
|
|
11359
10933
|
shape: corners,
|
|
11360
|
-
border:
|
|
11361
|
-
focus:
|
|
11362
|
-
label:
|
|
10934
|
+
border: z22.enum(["subtle", "defined", "underline"]),
|
|
10935
|
+
focus: z22.enum(["glow", "ring", "underline"]),
|
|
10936
|
+
label: z22.enum(["inside", "above"])
|
|
11363
10937
|
});
|
|
11364
|
-
var headerVariant =
|
|
11365
|
-
var headerPositioning =
|
|
11366
|
-
var headerNavStyle =
|
|
10938
|
+
var headerVariant = z22.enum(["classic", "centered", "transparent", "floating", "editorial"]);
|
|
10939
|
+
var headerPositioning = z22.enum(["static", "sticky", "fixed"]);
|
|
10940
|
+
var headerNavStyle = z22.enum([
|
|
11367
10941
|
"minimal",
|
|
11368
10942
|
"underline",
|
|
11369
10943
|
"underline-grow",
|
|
@@ -11372,82 +10946,82 @@ var headerNavStyle = z25.enum([
|
|
|
11372
10946
|
"frosted",
|
|
11373
10947
|
"solid"
|
|
11374
10948
|
]);
|
|
11375
|
-
var navFontWeight =
|
|
11376
|
-
var headerMaxWidth =
|
|
11377
|
-
var headerContainerSchema =
|
|
11378
|
-
rounded:
|
|
11379
|
-
border:
|
|
11380
|
-
shadow:
|
|
11381
|
-
padding:
|
|
11382
|
-
tint:
|
|
11383
|
-
opacity:
|
|
10949
|
+
var navFontWeight = z22.enum(["regular", "medium", "semibold", "bold"]);
|
|
10950
|
+
var headerMaxWidth = z22.enum(["container", "full"]);
|
|
10951
|
+
var headerContainerSchema = z22.object({
|
|
10952
|
+
rounded: z22.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("xl"),
|
|
10953
|
+
border: z22.boolean().default(true),
|
|
10954
|
+
shadow: z22.boolean().default(true),
|
|
10955
|
+
padding: z22.enum(["sm", "md", "lg"]).default("md"),
|
|
10956
|
+
tint: z22.string().nullable().optional(),
|
|
10957
|
+
opacity: z22.number().min(0).max(1).default(0.12)
|
|
11384
10958
|
}).optional();
|
|
11385
10959
|
var headerBorderSchema = componentBorderSchema.extend({
|
|
11386
|
-
position:
|
|
10960
|
+
position: z22.enum(["bottom", "top", "both", "none"]).default("bottom")
|
|
11387
10961
|
}).optional();
|
|
11388
|
-
var logoStyleSchema =
|
|
11389
|
-
fontFamily:
|
|
11390
|
-
letterSpacing:
|
|
11391
|
-
gradient:
|
|
10962
|
+
var logoStyleSchema = z22.object({
|
|
10963
|
+
fontFamily: z22.enum(["heading", "body"]).default("heading"),
|
|
10964
|
+
letterSpacing: z22.enum(["normal", "wide", "wider", "widest"]).default("normal"),
|
|
10965
|
+
gradient: z22.boolean().default(false)
|
|
11392
10966
|
}).optional();
|
|
11393
|
-
var headerLogoTextSchema =
|
|
11394
|
-
mobileWrapLines:
|
|
11395
|
-
mobileMaxWidth:
|
|
11396
|
-
hideOnShrink:
|
|
10967
|
+
var headerLogoTextSchema = z22.object({
|
|
10968
|
+
mobileWrapLines: z22.union([z22.literal(1), z22.literal(2)]).optional(),
|
|
10969
|
+
mobileMaxWidth: z22.enum(["xs", "sm", "md"]).optional(),
|
|
10970
|
+
hideOnShrink: z22.boolean().optional()
|
|
11397
10971
|
}).optional();
|
|
11398
|
-
var navEffectsSchema =
|
|
11399
|
-
underlineGradient:
|
|
11400
|
-
glow:
|
|
11401
|
-
glowColor:
|
|
11402
|
-
neumorphic:
|
|
10972
|
+
var navEffectsSchema = z22.object({
|
|
10973
|
+
underlineGradient: z22.boolean().default(false),
|
|
10974
|
+
glow: z22.boolean().default(false),
|
|
10975
|
+
glowColor: z22.string().optional(),
|
|
10976
|
+
neumorphic: z22.boolean().default(false)
|
|
11403
10977
|
}).optional();
|
|
11404
|
-
var dropdownStyleSchema =
|
|
10978
|
+
var dropdownStyleSchema = z22.object({
|
|
11405
10979
|
// Container styling
|
|
11406
|
-
background:
|
|
10980
|
+
background: z22.string().default("surface"),
|
|
11407
10981
|
// color token
|
|
11408
|
-
textColor:
|
|
10982
|
+
textColor: z22.string().default("text"),
|
|
11409
10983
|
// color token
|
|
11410
|
-
borderColor:
|
|
10984
|
+
borderColor: z22.string().nullable().default("border"),
|
|
11411
10985
|
// null = no border
|
|
11412
|
-
shadow:
|
|
11413
|
-
borderRadius:
|
|
10986
|
+
shadow: z22.enum(["none", "sm", "md", "lg"]).default("md"),
|
|
10987
|
+
borderRadius: z22.enum(["none", "sm", "md", "lg"]).default("md"),
|
|
11414
10988
|
// Link hover states (explicit control)
|
|
11415
|
-
hoverBackground:
|
|
10989
|
+
hoverBackground: z22.string().nullable().optional(),
|
|
11416
10990
|
// color token, null = transparent
|
|
11417
|
-
hoverTextColor:
|
|
10991
|
+
hoverTextColor: z22.string().nullable().optional(),
|
|
11418
10992
|
// color token, null = inherit
|
|
11419
10993
|
// Typography
|
|
11420
|
-
textTransform:
|
|
11421
|
-
letterSpacing:
|
|
11422
|
-
fontWeight:
|
|
10994
|
+
textTransform: z22.enum(["none", "uppercase", "capitalize"]).default("none"),
|
|
10995
|
+
letterSpacing: z22.enum(["normal", "wide", "wider"]).default("normal"),
|
|
10996
|
+
fontWeight: z22.enum(["regular", "medium", "semibold", "bold"]).optional(),
|
|
11423
10997
|
// optional = inherit from navWeight
|
|
11424
|
-
textSize:
|
|
10998
|
+
textSize: z22.enum(["xs", "sm", "base", "lg"]).optional()
|
|
11425
10999
|
// optional = no override (browser default)
|
|
11426
11000
|
}).optional();
|
|
11427
|
-
var headerCtaGapSchema =
|
|
11428
|
-
var navContainerSchema =
|
|
11429
|
-
type:
|
|
11430
|
-
tint:
|
|
11431
|
-
opacity:
|
|
11001
|
+
var headerCtaGapSchema = z22.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
|
|
11002
|
+
var navContainerSchema = z22.object({
|
|
11003
|
+
type: z22.enum(["none", "pill", "glass"]).default("none"),
|
|
11004
|
+
tint: z22.string().nullable().optional(),
|
|
11005
|
+
opacity: z22.number().min(0).max(1).default(0.15)
|
|
11432
11006
|
}).default({ type: "none", tint: null, opacity: 0.15 });
|
|
11433
|
-
var headerBackgroundSchema =
|
|
11434
|
-
type:
|
|
11435
|
-
color:
|
|
11007
|
+
var headerBackgroundSchema = z22.object({
|
|
11008
|
+
type: z22.enum(["color", "gradient", "image"]),
|
|
11009
|
+
color: z22.string().nullable().optional(),
|
|
11436
11010
|
gradient: gradientConfigSchema.nullable().optional(),
|
|
11437
11011
|
image: mediaSchema.nullable().optional(),
|
|
11438
|
-
textColor:
|
|
11012
|
+
textColor: z22.string().nullable().optional()
|
|
11439
11013
|
});
|
|
11440
|
-
var headerSchema =
|
|
11014
|
+
var headerSchema = z22.object({
|
|
11441
11015
|
variant: headerVariant,
|
|
11442
11016
|
positioning: headerPositioning,
|
|
11443
|
-
shrinkOnScroll:
|
|
11017
|
+
shrinkOnScroll: z22.boolean(),
|
|
11444
11018
|
maxWidth: headerMaxWidth,
|
|
11445
11019
|
logoOverride: mediaSchema.nullable().optional(),
|
|
11446
11020
|
background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
|
|
11447
|
-
textColor:
|
|
11021
|
+
textColor: z22.string().nullable().optional(),
|
|
11448
11022
|
// Site title and general header text
|
|
11449
11023
|
navStyle: headerNavStyle,
|
|
11450
|
-
navColor:
|
|
11024
|
+
navColor: z22.string().nullable().optional(),
|
|
11451
11025
|
// Nav links (inherits textColor if not set)
|
|
11452
11026
|
navWeight: navFontWeight.default("medium"),
|
|
11453
11027
|
// New fields for header system enhancement
|
|
@@ -11466,50 +11040,50 @@ var headerSchema = z25.object({
|
|
|
11466
11040
|
// Dropdown menu styling (nav dropdowns and mobile drawer)
|
|
11467
11041
|
dropdownStyle: dropdownStyleSchema
|
|
11468
11042
|
});
|
|
11469
|
-
var footerVariant =
|
|
11470
|
-
var footerMaxWidth =
|
|
11471
|
-
var footerMode =
|
|
11472
|
-
var footerNavLayoutMode =
|
|
11473
|
-
var footerNavLayoutAlign =
|
|
11474
|
-
var footerSpacing =
|
|
11475
|
-
var footerLogoPlacement =
|
|
11476
|
-
var footerLogoSize =
|
|
11477
|
-
var footerLogoMaxHeight =
|
|
11478
|
-
var footerBottomTextLinkStyleSchema =
|
|
11479
|
-
colorToken:
|
|
11480
|
-
hoverColorToken:
|
|
11481
|
-
decorationColorToken:
|
|
11482
|
-
underline:
|
|
11483
|
-
});
|
|
11484
|
-
var footerBottomBarSchema =
|
|
11485
|
-
enabled:
|
|
11486
|
-
fullBleed:
|
|
11043
|
+
var footerVariant = z22.enum(["simple", "columns", "split"]);
|
|
11044
|
+
var footerMaxWidth = z22.enum(["container", "full"]);
|
|
11045
|
+
var footerMode = z22.enum(["default", "blocks", "default+blocks", "none"]);
|
|
11046
|
+
var footerNavLayoutMode = z22.enum(["stack", "inline", "inline-wrap"]);
|
|
11047
|
+
var footerNavLayoutAlign = z22.enum(["start", "center", "end", "space-between"]);
|
|
11048
|
+
var footerSpacing = z22.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
|
|
11049
|
+
var footerLogoPlacement = z22.enum(["left", "right", "above", "below"]);
|
|
11050
|
+
var footerLogoSize = z22.enum(["sm", "md", "lg", "xl"]);
|
|
11051
|
+
var footerLogoMaxHeight = z22.enum(["sm", "md", "lg", "xl"]);
|
|
11052
|
+
var footerBottomTextLinkStyleSchema = z22.object({
|
|
11053
|
+
colorToken: z22.string().optional(),
|
|
11054
|
+
hoverColorToken: z22.string().nullable().optional(),
|
|
11055
|
+
decorationColorToken: z22.string().nullable().optional(),
|
|
11056
|
+
underline: z22.boolean().optional()
|
|
11057
|
+
});
|
|
11058
|
+
var footerBottomBarSchema = z22.object({
|
|
11059
|
+
enabled: z22.boolean().optional(),
|
|
11060
|
+
fullBleed: z22.boolean().optional(),
|
|
11487
11061
|
background: headerBackgroundSchema.optional(),
|
|
11488
|
-
textColor:
|
|
11489
|
-
textAlign:
|
|
11062
|
+
textColor: z22.string().nullable().optional(),
|
|
11063
|
+
textAlign: z22.enum(["left", "center", "right"]).optional(),
|
|
11490
11064
|
paddingY: footerSpacing.optional(),
|
|
11491
11065
|
paddingX: footerSpacing.optional(),
|
|
11492
|
-
borderTop:
|
|
11493
|
-
colorToken:
|
|
11494
|
-
width:
|
|
11066
|
+
borderTop: z22.object({
|
|
11067
|
+
colorToken: z22.string().nullable().optional(),
|
|
11068
|
+
width: z22.enum(["none", "thin", "medium", "thick"]).optional()
|
|
11495
11069
|
}).optional()
|
|
11496
11070
|
});
|
|
11497
|
-
var footerNavLayoutSchema =
|
|
11071
|
+
var footerNavLayoutSchema = z22.object({
|
|
11498
11072
|
layout: footerNavLayoutMode.optional(),
|
|
11499
11073
|
align: footerNavLayoutAlign.optional(),
|
|
11500
11074
|
gapX: footerSpacing.optional(),
|
|
11501
11075
|
gapY: footerSpacing.optional(),
|
|
11502
|
-
columns:
|
|
11076
|
+
columns: z22.number().int().min(1).max(6).optional()
|
|
11503
11077
|
});
|
|
11504
|
-
var footerLogoSchema =
|
|
11505
|
-
showLogo:
|
|
11506
|
-
showLogoText:
|
|
11078
|
+
var footerLogoSchema = z22.object({
|
|
11079
|
+
showLogo: z22.boolean().default(true),
|
|
11080
|
+
showLogoText: z22.boolean().optional(),
|
|
11507
11081
|
placement: footerLogoPlacement.optional(),
|
|
11508
11082
|
size: footerLogoSize.optional(),
|
|
11509
11083
|
maxHeight: footerLogoMaxHeight.optional(),
|
|
11510
|
-
align:
|
|
11084
|
+
align: z22.enum(["start", "center", "end"]).optional()
|
|
11511
11085
|
});
|
|
11512
|
-
var footerSchema =
|
|
11086
|
+
var footerSchema = z22.object({
|
|
11513
11087
|
/**
|
|
11514
11088
|
* SDK-only footer rendering mode.
|
|
11515
11089
|
*
|
|
@@ -11518,11 +11092,11 @@ var footerSchema = z25.object({
|
|
|
11518
11092
|
mode: footerMode.optional(),
|
|
11519
11093
|
variant: footerVariant,
|
|
11520
11094
|
maxWidth: footerMaxWidth,
|
|
11521
|
-
showLogoText:
|
|
11095
|
+
showLogoText: z22.boolean().optional(),
|
|
11522
11096
|
background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
|
|
11523
11097
|
// Footer nav styling (independent from header)
|
|
11524
11098
|
navStyle: headerNavStyle.default("minimal"),
|
|
11525
|
-
navColor:
|
|
11099
|
+
navColor: z22.string().nullable().optional(),
|
|
11526
11100
|
navWeight: navFontWeight.default("medium"),
|
|
11527
11101
|
// Full nav link customization (overrides navStyle if set)
|
|
11528
11102
|
navLinkStyle: navLinkStyleSchema.optional(),
|
|
@@ -11533,15 +11107,15 @@ var footerSchema = z25.object({
|
|
|
11533
11107
|
logo: footerLogoSchema.optional(),
|
|
11534
11108
|
bottomBar: footerBottomBarSchema.optional()
|
|
11535
11109
|
});
|
|
11536
|
-
var containerPaddingPresetSchema =
|
|
11537
|
-
var layoutSchema =
|
|
11538
|
-
containerPadding:
|
|
11110
|
+
var containerPaddingPresetSchema = z22.enum(["tight", "compact", "default", "relaxed"]);
|
|
11111
|
+
var layoutSchema = z22.object({
|
|
11112
|
+
containerPadding: z22.object({
|
|
11539
11113
|
mobile: containerPaddingPresetSchema.optional(),
|
|
11540
11114
|
tablet: containerPaddingPresetSchema.optional(),
|
|
11541
11115
|
desktop: containerPaddingPresetSchema.optional()
|
|
11542
11116
|
}).optional()
|
|
11543
11117
|
}).optional();
|
|
11544
|
-
var heroTypographySizeSchema =
|
|
11118
|
+
var heroTypographySizeSchema = z22.enum([
|
|
11545
11119
|
"sm",
|
|
11546
11120
|
"base",
|
|
11547
11121
|
"lg",
|
|
@@ -11552,14 +11126,14 @@ var heroTypographySizeSchema = z25.enum([
|
|
|
11552
11126
|
"5xl",
|
|
11553
11127
|
"6xl"
|
|
11554
11128
|
]);
|
|
11555
|
-
var heroTypographyLineHeightSchema =
|
|
11556
|
-
var heroResponsiveTypographySchema =
|
|
11129
|
+
var heroTypographyLineHeightSchema = z22.enum(["tight", "snug", "normal", "relaxed"]);
|
|
11130
|
+
var heroResponsiveTypographySchema = z22.object({
|
|
11557
11131
|
headlineSize: heroTypographySizeSchema.optional(),
|
|
11558
11132
|
headlineLineHeight: heroTypographyLineHeightSchema.optional(),
|
|
11559
11133
|
subheadlineSize: heroTypographySizeSchema.optional(),
|
|
11560
11134
|
subheadlineLineHeight: heroTypographyLineHeightSchema.optional()
|
|
11561
11135
|
});
|
|
11562
|
-
var heroTypographySchema =
|
|
11136
|
+
var heroTypographySchema = z22.object({
|
|
11563
11137
|
headlineSize: heroTypographySizeSchema.optional(),
|
|
11564
11138
|
headlineLineHeight: heroTypographyLineHeightSchema.optional(),
|
|
11565
11139
|
subheadlineSize: heroTypographySizeSchema.optional(),
|
|
@@ -11568,24 +11142,24 @@ var heroTypographySchema = z25.object({
|
|
|
11568
11142
|
microHeadlineLineHeight: heroTypographyLineHeightSchema.optional(),
|
|
11569
11143
|
microSubheadlineSize: heroTypographySizeSchema.optional(),
|
|
11570
11144
|
microSubheadlineLineHeight: heroTypographyLineHeightSchema.optional(),
|
|
11571
|
-
responsive:
|
|
11145
|
+
responsive: z22.object({
|
|
11572
11146
|
tablet: heroResponsiveTypographySchema.optional(),
|
|
11573
11147
|
mobile: heroResponsiveTypographySchema.optional()
|
|
11574
11148
|
}).optional()
|
|
11575
11149
|
});
|
|
11576
|
-
var heroSchema =
|
|
11150
|
+
var heroSchema = z22.object({
|
|
11577
11151
|
typography: heroTypographySchema.optional()
|
|
11578
11152
|
}).optional();
|
|
11579
|
-
var gradientsSchema =
|
|
11580
|
-
button:
|
|
11581
|
-
hero:
|
|
11582
|
-
background:
|
|
11583
|
-
});
|
|
11584
|
-
var themeSchema =
|
|
11585
|
-
name:
|
|
11586
|
-
description:
|
|
11587
|
-
rationale:
|
|
11588
|
-
siteStyleId:
|
|
11153
|
+
var gradientsSchema = z22.object({
|
|
11154
|
+
button: z22.string().min(1).nullable().optional(),
|
|
11155
|
+
hero: z22.string().min(1).nullable().optional(),
|
|
11156
|
+
background: z22.string().min(1).nullable().optional()
|
|
11157
|
+
});
|
|
11158
|
+
var themeSchema = z22.object({
|
|
11159
|
+
name: z22.string().min(1).max(30),
|
|
11160
|
+
description: z22.string().min(1).max(400),
|
|
11161
|
+
rationale: z22.string().min(1).max(400),
|
|
11162
|
+
siteStyleId: z22.string().min(1).transform((value) => asSiteStyleId(value)).optional(),
|
|
11589
11163
|
axes: axesSchema,
|
|
11590
11164
|
palette: paletteSchema,
|
|
11591
11165
|
typography: typographySchema,
|
|
@@ -11612,16 +11186,16 @@ var themeSchema = z25.object({
|
|
|
11612
11186
|
// Block-specific customization (Tier 3)
|
|
11613
11187
|
// blockCustomVars: Per-block CSS variable overrides as bare values
|
|
11614
11188
|
// Example: { "event-registration": { "--step-color": "#6d28d9" } }
|
|
11615
|
-
blockCustomVars:
|
|
11616
|
-
|
|
11189
|
+
blockCustomVars: z22.record(
|
|
11190
|
+
z22.string(),
|
|
11617
11191
|
// block kind (matches data-block attribute)
|
|
11618
|
-
|
|
11192
|
+
z22.record(z22.string(), z22.string())
|
|
11619
11193
|
// { '--var-name': 'value' }
|
|
11620
11194
|
).optional(),
|
|
11621
11195
|
// Structured block-kind theme overrides (v1: typography prose-link style only)
|
|
11622
11196
|
// Keyed by block kind (usually data-block value like "hero"; "block.hero" also accepted)
|
|
11623
|
-
blockOverrides:
|
|
11624
|
-
|
|
11197
|
+
blockOverrides: z22.record(
|
|
11198
|
+
z22.string(),
|
|
11625
11199
|
blockThemeOverrideSchema
|
|
11626
11200
|
).optional(),
|
|
11627
11201
|
// Structured custom CSS rules
|
|
@@ -11657,22 +11231,21 @@ var themeSchema = z25.object({
|
|
|
11657
11231
|
* }
|
|
11658
11232
|
* ```
|
|
11659
11233
|
*/
|
|
11660
|
-
styleGroups:
|
|
11234
|
+
styleGroups: z22.record(z22.string(), z22.array(z22.string())).optional()
|
|
11661
11235
|
});
|
|
11662
|
-
var themesTurnSchema =
|
|
11663
|
-
message:
|
|
11664
|
-
themes:
|
|
11236
|
+
var themesTurnSchema = z22.object({
|
|
11237
|
+
message: z22.string().min(1),
|
|
11238
|
+
themes: z22.array(themeSchema).length(3)
|
|
11665
11239
|
});
|
|
11666
11240
|
|
|
11667
11241
|
// ../theme-core/src/palette/variants/types.ts
|
|
11668
|
-
import { z as z26 } from "zod";
|
|
11669
11242
|
function asPaletteVariantId(value) {
|
|
11670
11243
|
if (value.length === 0) {
|
|
11671
11244
|
throw new Error("PaletteVariantId must be a non-empty string");
|
|
11672
11245
|
}
|
|
11673
11246
|
return value;
|
|
11674
11247
|
}
|
|
11675
|
-
var paletteVariantIdSchema =
|
|
11248
|
+
var paletteVariantIdSchema = z23.string().min(1).transform((value) => asPaletteVariantId(value));
|
|
11676
11249
|
var PALETTE_TOKEN_NAMES = [
|
|
11677
11250
|
"primary",
|
|
11678
11251
|
"primaryForeground",
|
|
@@ -11688,19 +11261,19 @@ var PALETTE_TOKEN_NAMES = [
|
|
|
11688
11261
|
"text",
|
|
11689
11262
|
"border"
|
|
11690
11263
|
];
|
|
11691
|
-
var paletteTokenNameSchema =
|
|
11264
|
+
var paletteTokenNameSchema = z23.enum(PALETTE_TOKEN_NAMES);
|
|
11692
11265
|
var HEX_COLOR_REGEX = /^#[0-9a-f]{6}$/;
|
|
11693
|
-
var hexColorSchema =
|
|
11266
|
+
var hexColorSchema = z23.string().regex(HEX_COLOR_REGEX, "Hex must be #RRGGBB (lowercase)").transform((value) => value);
|
|
11694
11267
|
var variantPaletteColorSchema = paletteColorSchema.extend({
|
|
11695
11268
|
name: paletteTokenNameSchema
|
|
11696
11269
|
});
|
|
11697
|
-
var paletteVariantSchema =
|
|
11270
|
+
var paletteVariantSchema = z23.object({
|
|
11698
11271
|
id: paletteVariantIdSchema,
|
|
11699
|
-
name:
|
|
11700
|
-
description:
|
|
11272
|
+
name: z23.string().min(1),
|
|
11273
|
+
description: z23.string().min(1),
|
|
11701
11274
|
tags: styleTagsSchema,
|
|
11702
|
-
mode:
|
|
11703
|
-
colors:
|
|
11275
|
+
mode: z23.enum(["light", "dark"]),
|
|
11276
|
+
colors: z23.array(variantPaletteColorSchema).min(1)
|
|
11704
11277
|
});
|
|
11705
11278
|
function definePaletteVariant(input) {
|
|
11706
11279
|
return {
|
|
@@ -11712,7 +11285,7 @@ function definePaletteVariant(input) {
|
|
|
11712
11285
|
colors: input.colors
|
|
11713
11286
|
};
|
|
11714
11287
|
}
|
|
11715
|
-
var paletteOverridesSchema =
|
|
11288
|
+
var paletteOverridesSchema = z23.object({
|
|
11716
11289
|
primary: hexColorSchema.optional(),
|
|
11717
11290
|
primaryForeground: hexColorSchema.optional(),
|
|
11718
11291
|
secondary: hexColorSchema.optional(),
|
|
@@ -11932,96 +11505,747 @@ var softNaturalWatercolor = definePaletteVariant({
|
|
|
11932
11505
|
]
|
|
11933
11506
|
});
|
|
11934
11507
|
|
|
11935
|
-
// ../theme-core/src/palette/variants/warm-neutral.ts
|
|
11936
|
-
var warmNeutralClay = definePaletteVariant({
|
|
11937
|
-
id: "warm-neutral-clay",
|
|
11938
|
-
name: "Warm Neutral \u2014 Clay",
|
|
11939
|
-
description: "Terracotta primary on a cream ground.",
|
|
11940
|
-
tags: { tone: "classic", energy: "calm", era: "organic" },
|
|
11941
|
-
mode: "light",
|
|
11942
|
-
colors: [
|
|
11943
|
-
{ name: "primary", hex: "#8b5e34" },
|
|
11944
|
-
{ name: "secondary", hex: "#7c6f64" },
|
|
11945
|
-
{ name: "accent", hex: "#a15c38" },
|
|
11946
|
-
{ name: "success", hex: "#527853" },
|
|
11947
|
-
{ name: "warning", hex: "#b7791f" },
|
|
11948
|
-
{ name: "destructive", hex: "#b91c1c" },
|
|
11949
|
-
{ name: "background", hex: "#fffaf3" },
|
|
11950
|
-
{ name: "surface", hex: "#ffffff" },
|
|
11951
|
-
{ name: "surfaceAlt", hex: "#f5eadc" },
|
|
11952
|
-
{ name: "muted", hex: "#efe2d0" },
|
|
11953
|
-
{ name: "text", hex: "#2f241c" },
|
|
11954
|
-
{ name: "primaryForeground", hex: "#fffaf3" },
|
|
11955
|
-
{ name: "border", hex: "#d8c6b3" }
|
|
11956
|
-
]
|
|
11957
|
-
});
|
|
11958
|
-
var warmNeutralCream = definePaletteVariant({
|
|
11959
|
-
id: "warm-neutral-cream",
|
|
11960
|
-
name: "Warm Neutral \u2014 Cream",
|
|
11961
|
-
description: "Soft sand primary with pale cream surfaces.",
|
|
11962
|
-
tags: { tone: "minimal", energy: "calm", era: "organic" },
|
|
11963
|
-
mode: "light",
|
|
11964
|
-
colors: [
|
|
11965
|
-
{ name: "primary", hex: "#b08864" },
|
|
11966
|
-
{ name: "secondary", hex: "#9a8c7e" },
|
|
11967
|
-
{ name: "accent", hex: "#c2956a" },
|
|
11968
|
-
{ name: "success", hex: "#7d8a5f" },
|
|
11969
|
-
{ name: "warning", hex: "#c89a4d" },
|
|
11970
|
-
{ name: "destructive", hex: "#a3503e" },
|
|
11971
|
-
{ name: "background", hex: "#fdf8ee" },
|
|
11972
|
-
{ name: "surface", hex: "#ffffff" },
|
|
11973
|
-
{ name: "surfaceAlt", hex: "#f4ebd9" },
|
|
11974
|
-
{ name: "muted", hex: "#ede3cf" },
|
|
11975
|
-
{ name: "text", hex: "#3b2f24" },
|
|
11976
|
-
{ name: "primaryForeground", hex: "#fdf8ee" },
|
|
11977
|
-
{ name: "border", hex: "#e0d2b8" }
|
|
11978
|
-
]
|
|
11508
|
+
// ../theme-core/src/palette/variants/warm-neutral.ts
|
|
11509
|
+
var warmNeutralClay = definePaletteVariant({
|
|
11510
|
+
id: "warm-neutral-clay",
|
|
11511
|
+
name: "Warm Neutral \u2014 Clay",
|
|
11512
|
+
description: "Terracotta primary on a cream ground.",
|
|
11513
|
+
tags: { tone: "classic", energy: "calm", era: "organic" },
|
|
11514
|
+
mode: "light",
|
|
11515
|
+
colors: [
|
|
11516
|
+
{ name: "primary", hex: "#8b5e34" },
|
|
11517
|
+
{ name: "secondary", hex: "#7c6f64" },
|
|
11518
|
+
{ name: "accent", hex: "#a15c38" },
|
|
11519
|
+
{ name: "success", hex: "#527853" },
|
|
11520
|
+
{ name: "warning", hex: "#b7791f" },
|
|
11521
|
+
{ name: "destructive", hex: "#b91c1c" },
|
|
11522
|
+
{ name: "background", hex: "#fffaf3" },
|
|
11523
|
+
{ name: "surface", hex: "#ffffff" },
|
|
11524
|
+
{ name: "surfaceAlt", hex: "#f5eadc" },
|
|
11525
|
+
{ name: "muted", hex: "#efe2d0" },
|
|
11526
|
+
{ name: "text", hex: "#2f241c" },
|
|
11527
|
+
{ name: "primaryForeground", hex: "#fffaf3" },
|
|
11528
|
+
{ name: "border", hex: "#d8c6b3" }
|
|
11529
|
+
]
|
|
11530
|
+
});
|
|
11531
|
+
var warmNeutralCream = definePaletteVariant({
|
|
11532
|
+
id: "warm-neutral-cream",
|
|
11533
|
+
name: "Warm Neutral \u2014 Cream",
|
|
11534
|
+
description: "Soft sand primary with pale cream surfaces.",
|
|
11535
|
+
tags: { tone: "minimal", energy: "calm", era: "organic" },
|
|
11536
|
+
mode: "light",
|
|
11537
|
+
colors: [
|
|
11538
|
+
{ name: "primary", hex: "#b08864" },
|
|
11539
|
+
{ name: "secondary", hex: "#9a8c7e" },
|
|
11540
|
+
{ name: "accent", hex: "#c2956a" },
|
|
11541
|
+
{ name: "success", hex: "#7d8a5f" },
|
|
11542
|
+
{ name: "warning", hex: "#c89a4d" },
|
|
11543
|
+
{ name: "destructive", hex: "#a3503e" },
|
|
11544
|
+
{ name: "background", hex: "#fdf8ee" },
|
|
11545
|
+
{ name: "surface", hex: "#ffffff" },
|
|
11546
|
+
{ name: "surfaceAlt", hex: "#f4ebd9" },
|
|
11547
|
+
{ name: "muted", hex: "#ede3cf" },
|
|
11548
|
+
{ name: "text", hex: "#3b2f24" },
|
|
11549
|
+
{ name: "primaryForeground", hex: "#fdf8ee" },
|
|
11550
|
+
{ name: "border", hex: "#e0d2b8" }
|
|
11551
|
+
]
|
|
11552
|
+
});
|
|
11553
|
+
var warmNeutralForest = definePaletteVariant({
|
|
11554
|
+
id: "warm-neutral-forest",
|
|
11555
|
+
name: "Warm Neutral \u2014 Forest",
|
|
11556
|
+
description: "Deep forest green primary with earthy neutrals.",
|
|
11557
|
+
tags: { tone: "classic", energy: "calm", era: "organic" },
|
|
11558
|
+
mode: "light",
|
|
11559
|
+
colors: [
|
|
11560
|
+
{ name: "primary", hex: "#3d5840" },
|
|
11561
|
+
{ name: "secondary", hex: "#7a6f5d" },
|
|
11562
|
+
{ name: "accent", hex: "#b06b50" },
|
|
11563
|
+
{ name: "success", hex: "#5a7a5d" },
|
|
11564
|
+
{ name: "warning", hex: "#b7791f" },
|
|
11565
|
+
{ name: "destructive", hex: "#b91c1c" },
|
|
11566
|
+
{ name: "background", hex: "#fbf8f0" },
|
|
11567
|
+
{ name: "surface", hex: "#ffffff" },
|
|
11568
|
+
{ name: "surfaceAlt", hex: "#f2ecdb" },
|
|
11569
|
+
{ name: "muted", hex: "#ebe3cc" },
|
|
11570
|
+
{ name: "text", hex: "#2a2a2a" },
|
|
11571
|
+
{ name: "primaryForeground", hex: "#fbf8f0" },
|
|
11572
|
+
{ name: "border", hex: "#cdc1a4" }
|
|
11573
|
+
]
|
|
11574
|
+
});
|
|
11575
|
+
|
|
11576
|
+
// ../theme-core/src/palette/variants/index.ts
|
|
11577
|
+
var paletteVariants = [
|
|
11578
|
+
// Brand-led family
|
|
11579
|
+
brandLedCool,
|
|
11580
|
+
brandLedWarm,
|
|
11581
|
+
brandLedJewel,
|
|
11582
|
+
// Warm-neutral family
|
|
11583
|
+
warmNeutralClay,
|
|
11584
|
+
warmNeutralCream,
|
|
11585
|
+
warmNeutralForest,
|
|
11586
|
+
// High-contrast family
|
|
11587
|
+
highContrastInk,
|
|
11588
|
+
highContrastCharcoal,
|
|
11589
|
+
highContrastMonochrome,
|
|
11590
|
+
// Soft-natural family
|
|
11591
|
+
softNaturalSage,
|
|
11592
|
+
softNaturalStone,
|
|
11593
|
+
softNaturalWatercolor
|
|
11594
|
+
];
|
|
11595
|
+
var paletteVariantsById = new Map(
|
|
11596
|
+
paletteVariants.map((v) => [v.id, v])
|
|
11597
|
+
);
|
|
11598
|
+
|
|
11599
|
+
// ../theme-core/src/site-styles/sourceCatalogs.ts
|
|
11600
|
+
var generatedContentFrames = [
|
|
11601
|
+
plainFrame,
|
|
11602
|
+
panelFrame("inset"),
|
|
11603
|
+
panelFrame("raised"),
|
|
11604
|
+
flushPanelFrame({ bleed: "start" })
|
|
11605
|
+
];
|
|
11606
|
+
var userContentFrames = [
|
|
11607
|
+
...generatedContentFrames,
|
|
11608
|
+
panelFrame("editorial"),
|
|
11609
|
+
flushPanelFrame({ bleed: "end" }),
|
|
11610
|
+
flushPanelFrame({ bleed: "both" })
|
|
11611
|
+
];
|
|
11612
|
+
var generatedDesignOptionCatalog = {
|
|
11613
|
+
source: "generated",
|
|
11614
|
+
sectionSurfaces: ["base", "muted-band", "accent-band", "hero-image"],
|
|
11615
|
+
contentFrames: generatedContentFrames,
|
|
11616
|
+
itemSurfaces: ["none", "default", "flat", "outlined", "raised"],
|
|
11617
|
+
transitions: ["none", "soft-fade-short", "soft-fade-long"],
|
|
11618
|
+
emphases: ["low", "medium", "high"],
|
|
11619
|
+
detachedCustom: false
|
|
11620
|
+
};
|
|
11621
|
+
var userDesignOptionCatalog = {
|
|
11622
|
+
source: "user",
|
|
11623
|
+
sectionSurfaces: generatedDesignOptionCatalog.sectionSurfaces,
|
|
11624
|
+
contentFrames: userContentFrames,
|
|
11625
|
+
itemSurfaces: [
|
|
11626
|
+
...generatedDesignOptionCatalog.itemSurfaces,
|
|
11627
|
+
"inset",
|
|
11628
|
+
"editorial"
|
|
11629
|
+
],
|
|
11630
|
+
transitions: [
|
|
11631
|
+
...generatedDesignOptionCatalog.transitions,
|
|
11632
|
+
"wave-edge",
|
|
11633
|
+
"angle-edge"
|
|
11634
|
+
],
|
|
11635
|
+
emphases: generatedDesignOptionCatalog.emphases,
|
|
11636
|
+
detachedCustom: false
|
|
11637
|
+
};
|
|
11638
|
+
var advancedDesignOptionCatalog = {
|
|
11639
|
+
source: "advanced",
|
|
11640
|
+
sectionSurfaces: userDesignOptionCatalog.sectionSurfaces,
|
|
11641
|
+
contentFrames: userDesignOptionCatalog.contentFrames,
|
|
11642
|
+
itemSurfaces: userDesignOptionCatalog.itemSurfaces,
|
|
11643
|
+
transitions: userDesignOptionCatalog.transitions,
|
|
11644
|
+
emphases: userDesignOptionCatalog.emphases,
|
|
11645
|
+
detachedCustom: true
|
|
11646
|
+
};
|
|
11647
|
+
|
|
11648
|
+
// ../theme-core/src/site-styles/curatedSiteStyles.ts
|
|
11649
|
+
var curatedSiteStyleIdValues = [
|
|
11650
|
+
"site-style:calm-studio",
|
|
11651
|
+
"site-style:clear-professional",
|
|
11652
|
+
"site-style:warm-editorial",
|
|
11653
|
+
"site-style:bright-community",
|
|
11654
|
+
"site-style:quiet-luxury",
|
|
11655
|
+
"site-style:practical-services",
|
|
11656
|
+
"site-style:modern-wellness",
|
|
11657
|
+
"site-style:bold-launch"
|
|
11658
|
+
];
|
|
11659
|
+
var quietBudget = {
|
|
11660
|
+
accentDensity: "low",
|
|
11661
|
+
panelDensity: "medium",
|
|
11662
|
+
transitionMix: "quiet",
|
|
11663
|
+
primaryCtaLimit: 2,
|
|
11664
|
+
mediaDensity: "medium",
|
|
11665
|
+
decorativeRepetition: "low"
|
|
11666
|
+
};
|
|
11667
|
+
var balancedBudget = {
|
|
11668
|
+
accentDensity: "medium",
|
|
11669
|
+
panelDensity: "medium",
|
|
11670
|
+
transitionMix: "balanced",
|
|
11671
|
+
primaryCtaLimit: 3,
|
|
11672
|
+
mediaDensity: "medium",
|
|
11673
|
+
decorativeRepetition: "medium"
|
|
11674
|
+
};
|
|
11675
|
+
var expressiveBudget = {
|
|
11676
|
+
accentDensity: "high",
|
|
11677
|
+
panelDensity: "high",
|
|
11678
|
+
transitionMix: "expressive",
|
|
11679
|
+
primaryCtaLimit: 3,
|
|
11680
|
+
mediaDensity: "high",
|
|
11681
|
+
decorativeRepetition: "medium"
|
|
11682
|
+
};
|
|
11683
|
+
function uniqueContentFrameKinds() {
|
|
11684
|
+
const kinds = [...new Set(
|
|
11685
|
+
generatedDesignOptionCatalog.contentFrames.map((frame) => frame.kind)
|
|
11686
|
+
)];
|
|
11687
|
+
const firstKind = kinds[0];
|
|
11688
|
+
if (!firstKind) {
|
|
11689
|
+
throw new Error("Expected generated design option catalog to expose at least one content frame kind.");
|
|
11690
|
+
}
|
|
11691
|
+
return [firstKind, ...kinds.slice(1)];
|
|
11692
|
+
}
|
|
11693
|
+
var generatedContentFrameKinds = uniqueContentFrameKinds();
|
|
11694
|
+
function defineCuratedSiteStyle(input) {
|
|
11695
|
+
return {
|
|
11696
|
+
id: asSiteStyleId(input.id),
|
|
11697
|
+
name: input.name,
|
|
11698
|
+
description: input.description,
|
|
11699
|
+
generationBrief: input.generationBrief,
|
|
11700
|
+
selectionKeywords: input.selectionKeywords ?? [],
|
|
11701
|
+
template: {
|
|
11702
|
+
id: asDesignSystemTemplateId(`template:${input.id.replace("site-style:", "")}`),
|
|
11703
|
+
name: input.name,
|
|
11704
|
+
version: 1,
|
|
11705
|
+
tokenRecipes: input.tokenRecipes,
|
|
11706
|
+
compositionBudget: input.compositionBudget,
|
|
11707
|
+
supportedSectionSurfaces: generatedDesignOptionCatalog.sectionSurfaces,
|
|
11708
|
+
supportedContentFrames: generatedContentFrameKinds,
|
|
11709
|
+
supportedItemSurfaces: generatedDesignOptionCatalog.itemSurfaces,
|
|
11710
|
+
supportedTransitions: generatedDesignOptionCatalog.transitions
|
|
11711
|
+
},
|
|
11712
|
+
buttonPersonalityChoices: input.buttonPersonalityChoices,
|
|
11713
|
+
paletteVariantChoices: input.paletteVariantChoices
|
|
11714
|
+
};
|
|
11715
|
+
}
|
|
11716
|
+
function buttonChoice(id, note) {
|
|
11717
|
+
return note ? { id: asButtonPersonalityId(id), note } : { id: asButtonPersonalityId(id) };
|
|
11718
|
+
}
|
|
11719
|
+
function paletteChoice(id, note) {
|
|
11720
|
+
return note ? { id: asPaletteVariantId(id), note } : { id: asPaletteVariantId(id) };
|
|
11721
|
+
}
|
|
11722
|
+
var curatedSiteStyles = [
|
|
11723
|
+
defineCuratedSiteStyle({
|
|
11724
|
+
id: "site-style:calm-studio",
|
|
11725
|
+
name: "Calm Studio",
|
|
11726
|
+
description: "Soft, measured, and spacious for intimate appointment or class businesses.",
|
|
11727
|
+
generationBrief: "Use calm pacing, concise copy, generous breathing room, and natural imagery. Keep calls to action steady rather than urgent.",
|
|
11728
|
+
tokenRecipes: {
|
|
11729
|
+
palette: "soft-natural",
|
|
11730
|
+
contrast: "standard",
|
|
11731
|
+
radius: "soft",
|
|
11732
|
+
shadow: "subtle",
|
|
11733
|
+
typography: "friendly-sans",
|
|
11734
|
+
spacing: "airy",
|
|
11735
|
+
motion: "subtle"
|
|
11736
|
+
},
|
|
11737
|
+
compositionBudget: quietBudget,
|
|
11738
|
+
buttonPersonalityChoices: [
|
|
11739
|
+
buttonChoice("soft-pill"),
|
|
11740
|
+
buttonChoice("pebble"),
|
|
11741
|
+
buttonChoice("editorial-link"),
|
|
11742
|
+
buttonChoice("brushed-wash")
|
|
11743
|
+
],
|
|
11744
|
+
paletteVariantChoices: [
|
|
11745
|
+
paletteChoice("soft-natural-sage"),
|
|
11746
|
+
paletteChoice("soft-natural-stone"),
|
|
11747
|
+
paletteChoice("warm-neutral-clay"),
|
|
11748
|
+
paletteChoice("soft-natural-watercolor")
|
|
11749
|
+
]
|
|
11750
|
+
}),
|
|
11751
|
+
defineCuratedSiteStyle({
|
|
11752
|
+
id: "site-style:clear-professional",
|
|
11753
|
+
name: "Clear Professional",
|
|
11754
|
+
description: "Crisp, trustworthy, and direct for local services and consultancies.",
|
|
11755
|
+
generationBrief: "Prioritize clarity, proof, service detail, and easy next steps. Keep visuals polished and specific, with restrained decorative treatment.",
|
|
11756
|
+
tokenRecipes: {
|
|
11757
|
+
palette: "brand-led",
|
|
11758
|
+
contrast: "strong",
|
|
11759
|
+
radius: "soft",
|
|
11760
|
+
shadow: "subtle",
|
|
11761
|
+
typography: "clean-sans",
|
|
11762
|
+
spacing: "regular",
|
|
11763
|
+
motion: "subtle"
|
|
11764
|
+
},
|
|
11765
|
+
compositionBudget: balancedBudget,
|
|
11766
|
+
buttonPersonalityChoices: [
|
|
11767
|
+
buttonChoice("confident-chip"),
|
|
11768
|
+
buttonChoice("soft-pill"),
|
|
11769
|
+
buttonChoice("editorial-link")
|
|
11770
|
+
],
|
|
11771
|
+
paletteVariantChoices: [
|
|
11772
|
+
paletteChoice("brand-led-cool"),
|
|
11773
|
+
paletteChoice("high-contrast-ink"),
|
|
11774
|
+
paletteChoice("brand-led-jewel")
|
|
11775
|
+
]
|
|
11776
|
+
}),
|
|
11777
|
+
defineCuratedSiteStyle({
|
|
11778
|
+
id: "site-style:warm-editorial",
|
|
11779
|
+
name: "Warm Editorial",
|
|
11780
|
+
description: "Story-led and textured for educators, makers, venues, and retreats.",
|
|
11781
|
+
generationBrief: "Let the copy feel thoughtful and grounded. Favor narrative sections, supporting media, and a small number of editorial panels.",
|
|
11782
|
+
tokenRecipes: {
|
|
11783
|
+
palette: "warm-neutral",
|
|
11784
|
+
contrast: "standard",
|
|
11785
|
+
radius: "square",
|
|
11786
|
+
shadow: "none",
|
|
11787
|
+
typography: "serif-editorial",
|
|
11788
|
+
spacing: "airy",
|
|
11789
|
+
motion: "subtle"
|
|
11790
|
+
},
|
|
11791
|
+
compositionBudget: balancedBudget,
|
|
11792
|
+
buttonPersonalityChoices: [
|
|
11793
|
+
buttonChoice("editorial-link"),
|
|
11794
|
+
buttonChoice("soft-pill"),
|
|
11795
|
+
buttonChoice("brushed-wash")
|
|
11796
|
+
],
|
|
11797
|
+
paletteVariantChoices: [
|
|
11798
|
+
paletteChoice("warm-neutral-cream"),
|
|
11799
|
+
paletteChoice("warm-neutral-clay"),
|
|
11800
|
+
paletteChoice("warm-neutral-forest"),
|
|
11801
|
+
paletteChoice("soft-natural-stone")
|
|
11802
|
+
]
|
|
11803
|
+
}),
|
|
11804
|
+
defineCuratedSiteStyle({
|
|
11805
|
+
id: "site-style:bright-community",
|
|
11806
|
+
name: "Bright Community",
|
|
11807
|
+
description: "Friendly, welcoming, and active for groups, classes, and neighborhood offers.",
|
|
11808
|
+
generationBrief: "Use welcoming language, clear event or booking routes, and optimistic imagery. Let accents appear, but avoid noisy decoration.",
|
|
11809
|
+
tokenRecipes: {
|
|
11810
|
+
palette: "brand-led",
|
|
11811
|
+
contrast: "standard",
|
|
11812
|
+
radius: "rounded",
|
|
11813
|
+
shadow: "subtle",
|
|
11814
|
+
typography: "friendly-sans",
|
|
11815
|
+
spacing: "regular",
|
|
11816
|
+
motion: "expressive"
|
|
11817
|
+
},
|
|
11818
|
+
compositionBudget: balancedBudget,
|
|
11819
|
+
buttonPersonalityChoices: [
|
|
11820
|
+
buttonChoice("pebble"),
|
|
11821
|
+
buttonChoice("brushed-wash"),
|
|
11822
|
+
buttonChoice("confident-chip")
|
|
11823
|
+
],
|
|
11824
|
+
paletteVariantChoices: [
|
|
11825
|
+
paletteChoice("brand-led-warm"),
|
|
11826
|
+
paletteChoice("brand-led-jewel"),
|
|
11827
|
+
paletteChoice("soft-natural-watercolor")
|
|
11828
|
+
]
|
|
11829
|
+
}),
|
|
11830
|
+
defineCuratedSiteStyle({
|
|
11831
|
+
id: "site-style:quiet-luxury",
|
|
11832
|
+
name: "Quiet Luxury",
|
|
11833
|
+
description: "Minimal, confident, and refined for premium experiences and private services.",
|
|
11834
|
+
generationBrief: "Use fewer claims, more specificity, and restrained sensory detail. Favor elegant media and low repetition over dense panels.",
|
|
11835
|
+
selectionKeywords: [
|
|
11836
|
+
"luxury",
|
|
11837
|
+
"premium",
|
|
11838
|
+
"boutique",
|
|
11839
|
+
"bespoke",
|
|
11840
|
+
"exclusive"
|
|
11841
|
+
],
|
|
11842
|
+
tokenRecipes: {
|
|
11843
|
+
palette: "high-contrast",
|
|
11844
|
+
contrast: "strong",
|
|
11845
|
+
radius: "square",
|
|
11846
|
+
shadow: "none",
|
|
11847
|
+
typography: "classic-serif",
|
|
11848
|
+
spacing: "airy",
|
|
11849
|
+
motion: "none"
|
|
11850
|
+
},
|
|
11851
|
+
compositionBudget: quietBudget,
|
|
11852
|
+
buttonPersonalityChoices: [
|
|
11853
|
+
buttonChoice("editorial-link"),
|
|
11854
|
+
buttonChoice("confident-chip"),
|
|
11855
|
+
buttonChoice("soft-pill")
|
|
11856
|
+
],
|
|
11857
|
+
paletteVariantChoices: [
|
|
11858
|
+
paletteChoice("high-contrast-charcoal"),
|
|
11859
|
+
paletteChoice("high-contrast-ink"),
|
|
11860
|
+
paletteChoice("warm-neutral-cream")
|
|
11861
|
+
]
|
|
11862
|
+
}),
|
|
11863
|
+
defineCuratedSiteStyle({
|
|
11864
|
+
id: "site-style:practical-services",
|
|
11865
|
+
name: "Practical Services",
|
|
11866
|
+
description: "Efficient, plainspoken, and conversion-focused for trades and everyday services.",
|
|
11867
|
+
generationBrief: "Make services, location, trust signals, and contact paths obvious. Keep copy brief and avoid ornate visual treatments.",
|
|
11868
|
+
selectionKeywords: [
|
|
11869
|
+
"repair",
|
|
11870
|
+
"plumb",
|
|
11871
|
+
"electric",
|
|
11872
|
+
"cleaning",
|
|
11873
|
+
"landscap",
|
|
11874
|
+
"contractor"
|
|
11875
|
+
],
|
|
11876
|
+
tokenRecipes: {
|
|
11877
|
+
palette: "brand-led",
|
|
11878
|
+
contrast: "maximum",
|
|
11879
|
+
radius: "soft",
|
|
11880
|
+
shadow: "subtle",
|
|
11881
|
+
typography: "clean-sans",
|
|
11882
|
+
spacing: "compact",
|
|
11883
|
+
motion: "none"
|
|
11884
|
+
},
|
|
11885
|
+
compositionBudget: quietBudget,
|
|
11886
|
+
buttonPersonalityChoices: [
|
|
11887
|
+
buttonChoice("confident-chip"),
|
|
11888
|
+
buttonChoice("pebble"),
|
|
11889
|
+
buttonChoice("ink-stamp")
|
|
11890
|
+
],
|
|
11891
|
+
paletteVariantChoices: [
|
|
11892
|
+
paletteChoice("brand-led-cool"),
|
|
11893
|
+
paletteChoice("high-contrast-ink"),
|
|
11894
|
+
paletteChoice("brand-led-warm")
|
|
11895
|
+
]
|
|
11896
|
+
}),
|
|
11897
|
+
defineCuratedSiteStyle({
|
|
11898
|
+
id: "site-style:modern-wellness",
|
|
11899
|
+
name: "Modern Wellness",
|
|
11900
|
+
description: "Natural, current, and reassuring for practitioners, studios, and wellbeing offers.",
|
|
11901
|
+
generationBrief: "Keep the tone warm and practical. Use gentle section variation, natural materials, and inclusive copy without making medical claims.",
|
|
11902
|
+
tokenRecipes: {
|
|
11903
|
+
palette: "soft-natural",
|
|
11904
|
+
contrast: "standard",
|
|
11905
|
+
radius: "rounded",
|
|
11906
|
+
shadow: "subtle",
|
|
11907
|
+
typography: "clean-sans",
|
|
11908
|
+
spacing: "airy",
|
|
11909
|
+
motion: "subtle"
|
|
11910
|
+
},
|
|
11911
|
+
compositionBudget: balancedBudget,
|
|
11912
|
+
buttonPersonalityChoices: [
|
|
11913
|
+
buttonChoice("soft-pill"),
|
|
11914
|
+
buttonChoice("pebble"),
|
|
11915
|
+
buttonChoice("confident-chip")
|
|
11916
|
+
],
|
|
11917
|
+
paletteVariantChoices: [
|
|
11918
|
+
paletteChoice("soft-natural-sage"),
|
|
11919
|
+
paletteChoice("soft-natural-stone"),
|
|
11920
|
+
paletteChoice("warm-neutral-forest")
|
|
11921
|
+
]
|
|
11922
|
+
}),
|
|
11923
|
+
defineCuratedSiteStyle({
|
|
11924
|
+
id: "site-style:bold-launch",
|
|
11925
|
+
name: "Bold Launch",
|
|
11926
|
+
description: "High-energy and punchy for launches, campaigns, and creative offers.",
|
|
11927
|
+
generationBrief: "Use crisp positioning, bold hero structure, strong calls to action, and confident visual rhythm. Keep it precise, not shouty.",
|
|
11928
|
+
selectionKeywords: [
|
|
11929
|
+
"launch",
|
|
11930
|
+
"campaign",
|
|
11931
|
+
"preorder",
|
|
11932
|
+
"pre-order",
|
|
11933
|
+
"waitlist",
|
|
11934
|
+
"drop"
|
|
11935
|
+
],
|
|
11936
|
+
tokenRecipes: {
|
|
11937
|
+
palette: "high-contrast",
|
|
11938
|
+
contrast: "maximum",
|
|
11939
|
+
radius: "pill",
|
|
11940
|
+
shadow: "layered",
|
|
11941
|
+
typography: "clean-sans",
|
|
11942
|
+
spacing: "regular",
|
|
11943
|
+
motion: "expressive"
|
|
11944
|
+
},
|
|
11945
|
+
compositionBudget: expressiveBudget,
|
|
11946
|
+
buttonPersonalityChoices: [
|
|
11947
|
+
buttonChoice("ink-stamp"),
|
|
11948
|
+
buttonChoice("confident-chip"),
|
|
11949
|
+
buttonChoice("brushed-wash"),
|
|
11950
|
+
buttonChoice("pebble")
|
|
11951
|
+
],
|
|
11952
|
+
paletteVariantChoices: [
|
|
11953
|
+
paletteChoice("high-contrast-monochrome"),
|
|
11954
|
+
paletteChoice("high-contrast-ink"),
|
|
11955
|
+
paletteChoice("brand-led-jewel"),
|
|
11956
|
+
paletteChoice("brand-led-warm")
|
|
11957
|
+
]
|
|
11958
|
+
})
|
|
11959
|
+
];
|
|
11960
|
+
var curatedSiteStylesById = new Map(
|
|
11961
|
+
curatedSiteStyles.map((style) => [style.id, style])
|
|
11962
|
+
);
|
|
11963
|
+
|
|
11964
|
+
// ../theme-core/src/site-styles/designState.ts
|
|
11965
|
+
import { z as z24 } from "zod";
|
|
11966
|
+
|
|
11967
|
+
// ../theme-core/src/site-styles/rawStyleFields.ts
|
|
11968
|
+
var themeV2RuntimeStyleFieldNames = [
|
|
11969
|
+
"_frameStyles",
|
|
11970
|
+
"_sectionStyles",
|
|
11971
|
+
"_containerStyles",
|
|
11972
|
+
"_cardStyles",
|
|
11973
|
+
// styleGroup is legacy runtime transition wiring rather than a nested
|
|
11974
|
+
// override object, but normal editors should still never see it directly.
|
|
11975
|
+
"styleGroup"
|
|
11976
|
+
];
|
|
11977
|
+
var themeV2BlockSpecificRawStyleFieldNames = [
|
|
11978
|
+
"_contentCardStyles",
|
|
11979
|
+
"_textCardStyles"
|
|
11980
|
+
];
|
|
11981
|
+
var themeV2NormalEditorRawStyleFieldNames = [
|
|
11982
|
+
...themeV2RuntimeStyleFieldNames,
|
|
11983
|
+
...themeV2BlockSpecificRawStyleFieldNames
|
|
11984
|
+
];
|
|
11985
|
+
var themeV2NormalEditorRawStyleFieldNameSet = new Set(
|
|
11986
|
+
themeV2NormalEditorRawStyleFieldNames
|
|
11987
|
+
);
|
|
11988
|
+
|
|
11989
|
+
// ../theme-core/src/site-styles/designState.ts
|
|
11990
|
+
var themeV2DesignStateSchemaVersion = 1;
|
|
11991
|
+
var designResolutionPolicySchema = z24.enum(["generated", "user", "admin", "sdk"]);
|
|
11992
|
+
var runtimeStyleFieldNameSchema = z24.enum(themeV2RuntimeStyleFieldNames);
|
|
11993
|
+
var nonEmptyRuntimeStyleFieldNamesSchema = z24.array(runtimeStyleFieldNameSchema).min(1).transform((fields3) => [
|
|
11994
|
+
fields3[0],
|
|
11995
|
+
...fields3.slice(1)
|
|
11996
|
+
]);
|
|
11997
|
+
var heroLegibilityStrategySchema = z24.enum([
|
|
11998
|
+
"none",
|
|
11999
|
+
"scrim-gradient",
|
|
12000
|
+
"solid-panel"
|
|
12001
|
+
]);
|
|
12002
|
+
function uniqueNonEmpty(values) {
|
|
12003
|
+
const uniqueValues = [...new Set(values)];
|
|
12004
|
+
const firstValue = uniqueValues[0];
|
|
12005
|
+
if (!firstValue) {
|
|
12006
|
+
throw new Error("Expected at least one Theme V2 design state option.");
|
|
12007
|
+
}
|
|
12008
|
+
return [firstValue, ...uniqueValues.slice(1)];
|
|
12009
|
+
}
|
|
12010
|
+
var userPanelTreatments = uniqueNonEmpty(
|
|
12011
|
+
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "panel").map((frame) => frame.treatment)
|
|
12012
|
+
);
|
|
12013
|
+
var userFlushTreatments = uniqueNonEmpty(
|
|
12014
|
+
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.treatment)
|
|
12015
|
+
);
|
|
12016
|
+
var userFlushBleeds = uniqueNonEmpty(
|
|
12017
|
+
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.bleed)
|
|
12018
|
+
);
|
|
12019
|
+
var contentFrameIntentSchema = z24.discriminatedUnion("kind", [
|
|
12020
|
+
z24.object({ kind: z24.literal("plain") }).strict(),
|
|
12021
|
+
z24.object({
|
|
12022
|
+
kind: z24.literal("panel"),
|
|
12023
|
+
treatment: z24.enum(userPanelTreatments)
|
|
12024
|
+
}).strict(),
|
|
12025
|
+
z24.object({
|
|
12026
|
+
kind: z24.literal("flush-panel"),
|
|
12027
|
+
treatment: z24.enum(userFlushTreatments),
|
|
12028
|
+
bleed: z24.enum(userFlushBleeds)
|
|
12029
|
+
}).strict()
|
|
12030
|
+
]);
|
|
12031
|
+
var blockDesignPlanSchema = z24.object({
|
|
12032
|
+
blockId: z24.string().min(1).transform(asDesignBlockId),
|
|
12033
|
+
blockKind: z24.string().min(1),
|
|
12034
|
+
purpose: z24.string().min(1),
|
|
12035
|
+
sectionSurface: z24.enum(userDesignOptionCatalog.sectionSurfaces),
|
|
12036
|
+
contentFrame: contentFrameIntentSchema,
|
|
12037
|
+
itemSurface: z24.enum(userDesignOptionCatalog.itemSurfaces),
|
|
12038
|
+
transitionAfter: z24.enum(userDesignOptionCatalog.transitions),
|
|
12039
|
+
emphasis: z24.enum(userDesignOptionCatalog.emphases),
|
|
12040
|
+
heroLegibility: heroLegibilityStrategySchema.optional()
|
|
12041
|
+
}).strict();
|
|
12042
|
+
var styleAuthoritySchema = z24.discriminatedUnion("kind", [
|
|
12043
|
+
z24.object({
|
|
12044
|
+
kind: z24.literal("theme-v2"),
|
|
12045
|
+
source: designResolutionPolicySchema,
|
|
12046
|
+
siteStyleId: z24.string().min(1).transform(asSiteStyleId),
|
|
12047
|
+
templateId: z24.string().min(1).transform(asDesignSystemTemplateId),
|
|
12048
|
+
templateVersion: z24.number().int().nonnegative(),
|
|
12049
|
+
resolverVersion: z24.number().int().nonnegative()
|
|
12050
|
+
}).strict(),
|
|
12051
|
+
z24.object({
|
|
12052
|
+
kind: z24.literal("legacy-raw"),
|
|
12053
|
+
reason: z24.enum(["pre-theme-v2", "manual-runtime-fields"])
|
|
12054
|
+
}).strict(),
|
|
12055
|
+
z24.object({
|
|
12056
|
+
kind: z24.literal("advanced-detached"),
|
|
12057
|
+
reason: z24.literal("detached-custom-runtime-fields")
|
|
12058
|
+
}).strict()
|
|
12059
|
+
]);
|
|
12060
|
+
var blockRuntimeStyleAuthoritySchema = z24.object({
|
|
12061
|
+
unit: z24.literal("block-runtime-fields"),
|
|
12062
|
+
blockId: z24.string().min(1).transform(asDesignBlockId),
|
|
12063
|
+
fields: nonEmptyRuntimeStyleFieldNamesSchema,
|
|
12064
|
+
authority: styleAuthoritySchema
|
|
12065
|
+
}).strict();
|
|
12066
|
+
var persistedPageDesignStateV1Schema = z24.object({
|
|
12067
|
+
schemaVersion: z24.literal(themeV2DesignStateSchemaVersion),
|
|
12068
|
+
siteStyleId: z24.string().min(1).transform(asSiteStyleId),
|
|
12069
|
+
templateId: z24.string().min(1).transform(asDesignSystemTemplateId),
|
|
12070
|
+
templateVersion: z24.number().int().nonnegative(),
|
|
12071
|
+
resolverVersion: z24.number().int().nonnegative(),
|
|
12072
|
+
rhythmPresetId: z24.string().min(1),
|
|
12073
|
+
blocks: z24.array(blockDesignPlanSchema),
|
|
12074
|
+
styleAuthorities: z24.array(blockRuntimeStyleAuthoritySchema)
|
|
12075
|
+
}).strict();
|
|
12076
|
+
|
|
12077
|
+
// ../theme-core/src/site-styles/generatedSchemas.ts
|
|
12078
|
+
import { z as z25 } from "zod";
|
|
12079
|
+
function uniqueNonEmpty2(values) {
|
|
12080
|
+
const uniqueValues = [...new Set(values)];
|
|
12081
|
+
const firstValue = uniqueValues[0];
|
|
12082
|
+
if (!firstValue) {
|
|
12083
|
+
throw new Error("Expected at least one generated schema option.");
|
|
12084
|
+
}
|
|
12085
|
+
return [firstValue, ...uniqueValues.slice(1)];
|
|
12086
|
+
}
|
|
12087
|
+
var generatedPanelTreatments = uniqueNonEmpty2(
|
|
12088
|
+
generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "panel").map((frame) => frame.treatment)
|
|
12089
|
+
);
|
|
12090
|
+
var generatedFlushTreatments = uniqueNonEmpty2(
|
|
12091
|
+
generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.treatment)
|
|
12092
|
+
);
|
|
12093
|
+
var generatedFlushBleeds = uniqueNonEmpty2(
|
|
12094
|
+
generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.bleed)
|
|
12095
|
+
);
|
|
12096
|
+
var generatedPanelFrameSchema = z25.object({
|
|
12097
|
+
kind: z25.literal("panel"),
|
|
12098
|
+
treatment: z25.enum(generatedPanelTreatments)
|
|
12099
|
+
}).strict();
|
|
12100
|
+
var generatedFlushPanelFrameSchema = z25.object({
|
|
12101
|
+
kind: z25.literal("flush-panel"),
|
|
12102
|
+
treatment: z25.enum(generatedFlushTreatments),
|
|
12103
|
+
bleed: z25.enum(generatedFlushBleeds)
|
|
12104
|
+
}).strict();
|
|
12105
|
+
var generatedContentFrameIntentSchema = z25.discriminatedUnion("kind", [
|
|
12106
|
+
z25.object({ kind: z25.literal("plain") }).strict(),
|
|
12107
|
+
generatedPanelFrameSchema,
|
|
12108
|
+
generatedFlushPanelFrameSchema
|
|
12109
|
+
]);
|
|
12110
|
+
var generatedSiteStyleIdSchema = z25.enum(curatedSiteStyleIdValues).transform(asSiteStyleId);
|
|
12111
|
+
function generatedChoiceSchema(valueSchema) {
|
|
12112
|
+
return z25.discriminatedUnion("kind", [
|
|
12113
|
+
z25.object({
|
|
12114
|
+
source: z25.literal("generated"),
|
|
12115
|
+
kind: z25.literal("auto")
|
|
12116
|
+
}).strict(),
|
|
12117
|
+
z25.object({
|
|
12118
|
+
source: z25.literal("generated"),
|
|
12119
|
+
kind: z25.literal("explicit"),
|
|
12120
|
+
value: valueSchema
|
|
12121
|
+
}).strict()
|
|
12122
|
+
]);
|
|
12123
|
+
}
|
|
12124
|
+
var generatedBlockDesignIntentSchema = z25.object({
|
|
12125
|
+
sectionSurface: generatedChoiceSchema(
|
|
12126
|
+
z25.enum(generatedDesignOptionCatalog.sectionSurfaces)
|
|
12127
|
+
),
|
|
12128
|
+
contentFrame: generatedChoiceSchema(generatedContentFrameIntentSchema),
|
|
12129
|
+
itemSurface: generatedChoiceSchema(
|
|
12130
|
+
z25.enum(generatedDesignOptionCatalog.itemSurfaces)
|
|
12131
|
+
),
|
|
12132
|
+
transitionAfter: generatedChoiceSchema(
|
|
12133
|
+
z25.enum(generatedDesignOptionCatalog.transitions)
|
|
12134
|
+
),
|
|
12135
|
+
emphasis: generatedChoiceSchema(
|
|
12136
|
+
z25.enum(generatedDesignOptionCatalog.emphases)
|
|
12137
|
+
)
|
|
12138
|
+
}).strict();
|
|
12139
|
+
var generatedMediaCompositionIntentSchema = z25.enum([
|
|
12140
|
+
"none",
|
|
12141
|
+
"supporting",
|
|
12142
|
+
"dominant"
|
|
12143
|
+
]);
|
|
12144
|
+
var generatedDecorativeCompositionIntentSchema = z25.enum([
|
|
12145
|
+
"none",
|
|
12146
|
+
"supporting"
|
|
12147
|
+
]);
|
|
12148
|
+
var generatedHeroLegibilityStrategySchema = z25.enum([
|
|
12149
|
+
"none",
|
|
12150
|
+
"scrim-gradient"
|
|
12151
|
+
]);
|
|
12152
|
+
var generatedBlockMediaIntentSchema = z25.object({
|
|
12153
|
+
media: generatedMediaCompositionIntentSchema,
|
|
12154
|
+
decorative: generatedDecorativeCompositionIntentSchema,
|
|
12155
|
+
heroLegibility: generatedChoiceSchema(generatedHeroLegibilityStrategySchema)
|
|
12156
|
+
}).strict();
|
|
12157
|
+
var generatedBoundaryIntentSchema = z25.object({
|
|
12158
|
+
transitionAfter: generatedChoiceSchema(
|
|
12159
|
+
z25.enum(generatedDesignOptionCatalog.transitions)
|
|
12160
|
+
)
|
|
12161
|
+
}).strict();
|
|
12162
|
+
var generatedPageDesignBlockIntentSchema = z25.object({
|
|
12163
|
+
blockId: z25.string().min(1),
|
|
12164
|
+
blockKind: z25.string().min(1),
|
|
12165
|
+
purpose: z25.string().min(1),
|
|
12166
|
+
design: generatedBlockDesignIntentSchema,
|
|
12167
|
+
mediaIntent: generatedBlockMediaIntentSchema,
|
|
12168
|
+
boundaryIntent: generatedBoundaryIntentSchema
|
|
12169
|
+
}).strict();
|
|
12170
|
+
var generatedPageDesignIntentSchema = z25.object({
|
|
12171
|
+
siteStyleId: generatedSiteStyleIdSchema,
|
|
12172
|
+
blocks: z25.array(generatedPageDesignBlockIntentSchema)
|
|
12173
|
+
}).strict();
|
|
12174
|
+
|
|
12175
|
+
// ../theme-core/src/site-styles/pageDesignIntent.ts
|
|
12176
|
+
import { z as z26 } from "zod";
|
|
12177
|
+
var pageDesignIntentSchemaVersion = 1;
|
|
12178
|
+
var pageDesignUserPinnedAppearanceChoiceSchema = z26.object({
|
|
12179
|
+
kind: z26.literal("user-pinned"),
|
|
12180
|
+
value: z26.string().min(1).transform(asAppearancePresetId)
|
|
12181
|
+
}).strict();
|
|
12182
|
+
var pageDesignUserPinnedBoundaryChoiceSchema = z26.object({
|
|
12183
|
+
kind: z26.literal("user-pinned"),
|
|
12184
|
+
value: z26.string().min(1).transform(asBoundaryOptionId)
|
|
12185
|
+
}).strict();
|
|
12186
|
+
var pageDesignBlockLookPinSchema = z26.object({
|
|
12187
|
+
blockId: z26.string().min(1).transform(asDesignBlockId),
|
|
12188
|
+
blockKind: z26.string().min(1),
|
|
12189
|
+
choice: pageDesignUserPinnedAppearanceChoiceSchema
|
|
12190
|
+
}).strict();
|
|
12191
|
+
var pageDesignBoundaryPinSchema = z26.object({
|
|
12192
|
+
boundaryId: z26.string().min(1).transform(asDesignBoundaryId),
|
|
12193
|
+
previousBlockId: z26.string().min(1).transform(asDesignBlockId),
|
|
12194
|
+
nextBlockId: z26.string().min(1).transform(asDesignBlockId),
|
|
12195
|
+
choice: pageDesignUserPinnedBoundaryChoiceSchema
|
|
12196
|
+
}).strict().superRefine((pin, ctx) => {
|
|
12197
|
+
const expectedBoundaryId = makeBoundaryId(
|
|
12198
|
+
pin.previousBlockId,
|
|
12199
|
+
pin.nextBlockId
|
|
12200
|
+
);
|
|
12201
|
+
if (pin.boundaryId !== expectedBoundaryId) {
|
|
12202
|
+
ctx.addIssue({
|
|
12203
|
+
code: z26.ZodIssueCode.custom,
|
|
12204
|
+
path: ["boundaryId"],
|
|
12205
|
+
message: `Boundary id must match previousBlockId and nextBlockId. Expected ${expectedBoundaryId}.`
|
|
12206
|
+
});
|
|
12207
|
+
}
|
|
11979
12208
|
});
|
|
11980
|
-
var
|
|
11981
|
-
|
|
11982
|
-
|
|
11983
|
-
|
|
11984
|
-
|
|
11985
|
-
|
|
11986
|
-
|
|
11987
|
-
|
|
11988
|
-
|
|
11989
|
-
|
|
11990
|
-
|
|
11991
|
-
|
|
11992
|
-
|
|
11993
|
-
|
|
11994
|
-
|
|
11995
|
-
|
|
11996
|
-
|
|
11997
|
-
|
|
11998
|
-
|
|
11999
|
-
{ name: "border", hex: "#cdc1a4" }
|
|
12000
|
-
]
|
|
12209
|
+
var pageDesignIntentV1Schema = z26.object({
|
|
12210
|
+
schemaVersion: z26.literal(pageDesignIntentSchemaVersion),
|
|
12211
|
+
siteStyleId: z26.string().min(1).transform(asSiteStyleId),
|
|
12212
|
+
pageFlowPresetId: z26.string().min(1).transform(asPageFlowPresetId),
|
|
12213
|
+
blockLookPins: z26.array(pageDesignBlockLookPinSchema),
|
|
12214
|
+
boundaryPins: z26.array(pageDesignBoundaryPinSchema)
|
|
12215
|
+
}).strict().superRefine((intent, ctx) => {
|
|
12216
|
+
addDuplicateStringIssues(ctx, {
|
|
12217
|
+
values: intent.blockLookPins.map((pin) => pin.blockId),
|
|
12218
|
+
path: ["blockLookPins"],
|
|
12219
|
+
label: "block Look pin"
|
|
12220
|
+
});
|
|
12221
|
+
addDuplicateStringIssues(ctx, {
|
|
12222
|
+
values: intent.boundaryPins.map(
|
|
12223
|
+
(pin) => boundaryKey(pin.previousBlockId, pin.nextBlockId)
|
|
12224
|
+
),
|
|
12225
|
+
path: ["boundaryPins"],
|
|
12226
|
+
label: "boundary pin"
|
|
12227
|
+
});
|
|
12001
12228
|
});
|
|
12002
|
-
|
|
12003
|
-
|
|
12004
|
-
|
|
12005
|
-
|
|
12006
|
-
|
|
12007
|
-
|
|
12008
|
-
|
|
12009
|
-
|
|
12010
|
-
|
|
12011
|
-
|
|
12012
|
-
|
|
12013
|
-
|
|
12014
|
-
|
|
12015
|
-
|
|
12016
|
-
|
|
12017
|
-
|
|
12018
|
-
|
|
12019
|
-
|
|
12020
|
-
|
|
12021
|
-
|
|
12022
|
-
var paletteVariantsById = new Map(
|
|
12023
|
-
paletteVariants.map((v) => [v.id, v])
|
|
12024
|
-
);
|
|
12229
|
+
function addDuplicateStringIssues(ctx, input) {
|
|
12230
|
+
const seen = /* @__PURE__ */ new Set();
|
|
12231
|
+
const duplicates = /* @__PURE__ */ new Set();
|
|
12232
|
+
for (const value of input.values) {
|
|
12233
|
+
if (seen.has(value)) {
|
|
12234
|
+
duplicates.add(value);
|
|
12235
|
+
}
|
|
12236
|
+
seen.add(value);
|
|
12237
|
+
}
|
|
12238
|
+
for (const duplicate of duplicates) {
|
|
12239
|
+
ctx.addIssue({
|
|
12240
|
+
code: z26.ZodIssueCode.custom,
|
|
12241
|
+
path: [...input.path],
|
|
12242
|
+
message: `Duplicate ${input.label}: ${duplicate}.`
|
|
12243
|
+
});
|
|
12244
|
+
}
|
|
12245
|
+
}
|
|
12246
|
+
function boundaryKey(previousBlockId, nextBlockId) {
|
|
12247
|
+
return makeBoundaryId(previousBlockId, nextBlockId);
|
|
12248
|
+
}
|
|
12025
12249
|
|
|
12026
12250
|
// ../theme-core/src/site-styles/runtimeCompiler.ts
|
|
12027
12251
|
function defineDesignRuntimeRules(rules) {
|
|
@@ -13366,7 +13590,8 @@ function ctaButton(opts) {
|
|
|
13366
13590
|
},
|
|
13367
13591
|
size: {
|
|
13368
13592
|
$bind: {
|
|
13369
|
-
from: sizePath
|
|
13593
|
+
from: sizePath,
|
|
13594
|
+
fallback: opts?.sizeFallback ?? "md"
|
|
13370
13595
|
}
|
|
13371
13596
|
},
|
|
13372
13597
|
...opts?.className ? { className: opts.className } : {},
|
|
@@ -16971,7 +17196,19 @@ var teamMemberFragment = defineFragment({
|
|
|
16971
17196
|
bind("photo")
|
|
16972
17197
|
)
|
|
16973
17198
|
]),
|
|
16974
|
-
|
|
17199
|
+
link(
|
|
17200
|
+
{
|
|
17201
|
+
href: { $bind: { from: "profilePath" } },
|
|
17202
|
+
className: "rb-team-member-name-link"
|
|
17203
|
+
},
|
|
17204
|
+
[text({ as: "h3" }, bind("name"))],
|
|
17205
|
+
when("profilePath")
|
|
17206
|
+
),
|
|
17207
|
+
text(
|
|
17208
|
+
{ as: "h3" },
|
|
17209
|
+
when("profilePath", { not: true }),
|
|
17210
|
+
bind("name")
|
|
17211
|
+
),
|
|
16975
17212
|
text({ as: "p", className: "rb-team-member-role" }, when("role"), bind("role")),
|
|
16976
17213
|
richText(
|
|
16977
17214
|
{ className: "rb-prose rb-max-w-none" },
|
|
@@ -19406,14 +19643,16 @@ var headerCta = ctaButton({
|
|
|
19406
19643
|
whenPath: "menu.ctaItem.label",
|
|
19407
19644
|
variantPath: "menu.ctaItem.variant",
|
|
19408
19645
|
linkPath: "menu.ctaItem.link",
|
|
19409
|
-
|
|
19646
|
+
sizeFallback: "sm",
|
|
19647
|
+
className: `header-cta ${desktopOnlyDisplay("inline-flex")} rb-ml-6`
|
|
19410
19648
|
});
|
|
19411
19649
|
var mobileCta = ctaButton({
|
|
19412
19650
|
basePath: "menu.ctaItem",
|
|
19413
19651
|
whenPath: "menu.ctaItem.label",
|
|
19414
19652
|
variantPath: "menu.ctaItem.variant",
|
|
19415
19653
|
linkPath: "menu.ctaItem.link",
|
|
19416
|
-
|
|
19654
|
+
sizeFallback: "md",
|
|
19655
|
+
className: "nav-mobile-cta rb-w-full"
|
|
19417
19656
|
});
|
|
19418
19657
|
var mobileToggleIcon = stack({ gap: "xs", className: "nav-mobile-icon" }, [
|
|
19419
19658
|
{
|
|
@@ -21263,7 +21502,9 @@ var courseSessionSchema = z42.object({
|
|
|
21263
21502
|
var courseTeamMemberSummarySchema = z42.object({
|
|
21264
21503
|
id: z42.string(),
|
|
21265
21504
|
name: z42.string(),
|
|
21266
|
-
|
|
21505
|
+
roleLabel: z42.string().nullable(),
|
|
21506
|
+
summary: z42.string().nullable(),
|
|
21507
|
+
profilePath: z42.string().nullable()
|
|
21267
21508
|
});
|
|
21268
21509
|
var coursePricingOptionSchema = z42.object({
|
|
21269
21510
|
id: z42.string(),
|
|
@@ -21368,7 +21609,9 @@ var publicEventTicketTypeSchema = z43.object({
|
|
|
21368
21609
|
var publicTeamMemberSummarySchema = z43.object({
|
|
21369
21610
|
id: z43.string(),
|
|
21370
21611
|
name: z43.string(),
|
|
21371
|
-
|
|
21612
|
+
roleLabel: z43.string().nullable(),
|
|
21613
|
+
summary: z43.string().nullable(),
|
|
21614
|
+
profilePath: z43.string().nullable()
|
|
21372
21615
|
});
|
|
21373
21616
|
var publicEventSchema = z43.object({
|
|
21374
21617
|
kind: z43.enum(["event", "course_session"]).optional(),
|
|
@@ -27215,7 +27458,25 @@ var newsletterSignupBlockDefinition = {
|
|
|
27215
27458
|
};
|
|
27216
27459
|
|
|
27217
27460
|
// ../blocks/src/system/blocks/team-members.ts
|
|
27461
|
+
import { z as z61 } from "zod";
|
|
27218
27462
|
var ITEM_NAME2 = "member";
|
|
27463
|
+
var teamMemberPhotoSchema = mediaSchema2.refine((media2) => media2.type === "image", {
|
|
27464
|
+
message: "Team member photos must be image media"
|
|
27465
|
+
}).nullable();
|
|
27466
|
+
var teamMemberDataSchema = z61.object({
|
|
27467
|
+
_type: z61.literal("teamMember"),
|
|
27468
|
+
id: z61.string(),
|
|
27469
|
+
name: z61.string(),
|
|
27470
|
+
role: z61.string().nullable(),
|
|
27471
|
+
roleLabel: z61.string().nullable(),
|
|
27472
|
+
bio: z61.string().nullable(),
|
|
27473
|
+
summary: z61.string().nullable(),
|
|
27474
|
+
photo: teamMemberPhotoSchema,
|
|
27475
|
+
profilePath: z61.string().nullable()
|
|
27476
|
+
});
|
|
27477
|
+
var teamMembersDataSchema = z61.array(teamMemberDataSchema);
|
|
27478
|
+
var dynamicSourceWhen = { equals: "site_staff" };
|
|
27479
|
+
var manualSourceWhen = { equals: "site_staff", not: true };
|
|
27219
27480
|
var headingNode = text(
|
|
27220
27481
|
{ as: "h2" },
|
|
27221
27482
|
bind("content.heading"),
|
|
@@ -27305,7 +27566,15 @@ var teamMemberStackLayout = el(
|
|
|
27305
27566
|
]
|
|
27306
27567
|
),
|
|
27307
27568
|
stack({ gap: "sm", className: "rb-team-member-body rb-flex-1 rb-min-w-0" }, [
|
|
27308
|
-
|
|
27569
|
+
link(
|
|
27570
|
+
{
|
|
27571
|
+
href: { $bind: { from: "profilePath" } },
|
|
27572
|
+
className: "rb-team-member-name-link"
|
|
27573
|
+
},
|
|
27574
|
+
[text({ as: "h3" }, bind("name"))],
|
|
27575
|
+
when("profilePath")
|
|
27576
|
+
),
|
|
27577
|
+
text({ as: "h3" }, when("profilePath", { not: true }), bind("name")),
|
|
27309
27578
|
text(
|
|
27310
27579
|
{ as: "p", className: "rb-team-member-role" },
|
|
27311
27580
|
when("role"),
|
|
@@ -27319,12 +27588,18 @@ var teamMemberStackLayout = el(
|
|
|
27319
27588
|
])
|
|
27320
27589
|
]
|
|
27321
27590
|
);
|
|
27322
|
-
var
|
|
27591
|
+
var manualGridMembersNode = when("content.source", manualSourceWhen)(repeaterFragmentLayout({
|
|
27323
27592
|
collectionPath: "content.members",
|
|
27324
27593
|
itemName: ITEM_NAME2,
|
|
27325
27594
|
fragments: { teamMember: teamMemberFragment },
|
|
27326
27595
|
itemGap: "sm"
|
|
27327
|
-
});
|
|
27596
|
+
}));
|
|
27597
|
+
var dynamicGridMembersNode = when("content.source", dynamicSourceWhen)(repeaterFragmentLayout({
|
|
27598
|
+
collectionPath: "data.members",
|
|
27599
|
+
itemName: ITEM_NAME2,
|
|
27600
|
+
fragments: { teamMember: teamMemberFragment },
|
|
27601
|
+
itemGap: "sm"
|
|
27602
|
+
}));
|
|
27328
27603
|
var gridVariant = wrapVariant3(
|
|
27329
27604
|
el(
|
|
27330
27605
|
"grid",
|
|
@@ -27338,22 +27613,29 @@ var gridVariant = wrapVariant3(
|
|
|
27338
27613
|
},
|
|
27339
27614
|
gap: { $bind: { from: "content.gap", fallback: "medium" } }
|
|
27340
27615
|
},
|
|
27341
|
-
[
|
|
27616
|
+
[manualGridMembersNode, dynamicGridMembersNode]
|
|
27342
27617
|
)
|
|
27343
27618
|
);
|
|
27344
|
-
var
|
|
27619
|
+
var manualStackMembersNode = when("content.source", manualSourceWhen)(repeaterFragmentLayout({
|
|
27345
27620
|
collectionPath: "content.members",
|
|
27346
27621
|
itemName: ITEM_NAME2,
|
|
27347
27622
|
fragments: { teamMember: teamMemberFragment },
|
|
27348
27623
|
layoutOverrides: { teamMember: teamMemberStackLayout },
|
|
27349
27624
|
itemGap: "sm"
|
|
27350
|
-
});
|
|
27625
|
+
}));
|
|
27626
|
+
var dynamicStackMembersNode = when("content.source", dynamicSourceWhen)(repeaterFragmentLayout({
|
|
27627
|
+
collectionPath: "data.members",
|
|
27628
|
+
itemName: ITEM_NAME2,
|
|
27629
|
+
fragments: { teamMember: teamMemberFragment },
|
|
27630
|
+
layoutOverrides: { teamMember: teamMemberStackLayout },
|
|
27631
|
+
itemGap: "sm"
|
|
27632
|
+
}));
|
|
27351
27633
|
var stackVariant = wrapVariant3({
|
|
27352
27634
|
type: "stack",
|
|
27353
27635
|
props: {
|
|
27354
27636
|
gap: { $bind: { from: "content.gap", fallback: "medium" } }
|
|
27355
27637
|
},
|
|
27356
|
-
children: [
|
|
27638
|
+
children: [manualStackMembersNode, dynamicStackMembersNode]
|
|
27357
27639
|
});
|
|
27358
27640
|
var teamMembersManifest = createBlockManifest({
|
|
27359
27641
|
id: "block.team-members",
|
|
@@ -27368,6 +27650,18 @@ var teamMembersManifest = createBlockManifest({
|
|
|
27368
27650
|
required: false,
|
|
27369
27651
|
maxLength: 120
|
|
27370
27652
|
}),
|
|
27653
|
+
parseFieldDefinition({
|
|
27654
|
+
id: "source",
|
|
27655
|
+
type: "select",
|
|
27656
|
+
label: "Team members",
|
|
27657
|
+
description: "Choose whether to use the site-wide team or a hand-picked list.",
|
|
27658
|
+
defaultValue: "manual",
|
|
27659
|
+
options: [
|
|
27660
|
+
{ value: "manual", label: "Choose manually" },
|
|
27661
|
+
{ value: "site_staff", label: "Use all site team members" }
|
|
27662
|
+
],
|
|
27663
|
+
ui: { intent: "behavior" }
|
|
27664
|
+
}),
|
|
27371
27665
|
parseFieldDefinition({
|
|
27372
27666
|
id: "layoutAlign",
|
|
27373
27667
|
type: "select",
|
|
@@ -27470,18 +27764,24 @@ var teamMembersManifest = createBlockManifest({
|
|
|
27470
27764
|
],
|
|
27471
27765
|
ui: { intent: "display" }
|
|
27472
27766
|
}),
|
|
27473
|
-
|
|
27474
|
-
|
|
27475
|
-
|
|
27476
|
-
|
|
27477
|
-
|
|
27478
|
-
|
|
27479
|
-
|
|
27480
|
-
|
|
27481
|
-
|
|
27482
|
-
|
|
27767
|
+
{
|
|
27768
|
+
...fragmentsToRepeaterField(
|
|
27769
|
+
"members",
|
|
27770
|
+
"Team members",
|
|
27771
|
+
{ teamMember: teamMemberFragment },
|
|
27772
|
+
{
|
|
27773
|
+
minItems: 0,
|
|
27774
|
+
maxItems: 50,
|
|
27775
|
+
itemLabel: "Team member",
|
|
27776
|
+
itemLabelSource: "name",
|
|
27777
|
+
description: "Add people to this section."
|
|
27778
|
+
}
|
|
27779
|
+
),
|
|
27780
|
+
ui: {
|
|
27781
|
+
intent: "content",
|
|
27782
|
+
visibleWhen: { field: "source", equals: "manual" }
|
|
27483
27783
|
}
|
|
27484
|
-
|
|
27784
|
+
}
|
|
27485
27785
|
],
|
|
27486
27786
|
layout: gridVariant,
|
|
27487
27787
|
variants: {
|
|
@@ -27507,7 +27807,20 @@ var teamMembersManifest = createBlockManifest({
|
|
|
27507
27807
|
styleTokens: { spacing: "lg" }
|
|
27508
27808
|
});
|
|
27509
27809
|
var teamMembersBlockDefinition = {
|
|
27510
|
-
manifest: teamMembersManifest
|
|
27810
|
+
manifest: teamMembersManifest,
|
|
27811
|
+
dataSchemas: {
|
|
27812
|
+
members: teamMembersDataSchema
|
|
27813
|
+
},
|
|
27814
|
+
dataLoaders: {
|
|
27815
|
+
members: {
|
|
27816
|
+
endpoint: "listPublicTeamMembers",
|
|
27817
|
+
params: {
|
|
27818
|
+
siteId: { $bind: { from: "$root.siteId" } },
|
|
27819
|
+
stage: { $bind: { from: "$root.previewStage", fallback: "published" } }
|
|
27820
|
+
},
|
|
27821
|
+
mode: "server"
|
|
27822
|
+
}
|
|
27823
|
+
}
|
|
27511
27824
|
};
|
|
27512
27825
|
|
|
27513
27826
|
// ../blocks/src/system/runtime/nodes/location-map.shared.ts
|
|
@@ -28987,6 +29300,7 @@ function coercePayload(payload) {
|
|
|
28987
29300
|
if ("form" in record && typeof record.form !== "function") return record.form;
|
|
28988
29301
|
if ("entries" in record && typeof record.entries !== "function") return record.entries;
|
|
28989
29302
|
if ("services" in record && typeof record.services !== "function") return record.services;
|
|
29303
|
+
if ("teamMembers" in record && typeof record.teamMembers !== "function") return record.teamMembers;
|
|
28990
29304
|
}
|
|
28991
29305
|
return payload;
|
|
28992
29306
|
}
|
|
@@ -29108,6 +29422,10 @@ function normalizeLoaderParams(endpoint, params, context) {
|
|
|
29108
29422
|
ensureSiteId(out, context);
|
|
29109
29423
|
return out;
|
|
29110
29424
|
}
|
|
29425
|
+
if (endpoint === "listPublicTeamMembers") {
|
|
29426
|
+
ensureSiteId(out, context);
|
|
29427
|
+
return out;
|
|
29428
|
+
}
|
|
29111
29429
|
if (endpoint === "getPublishedEntryPreview") {
|
|
29112
29430
|
ensureSiteId(out, context);
|
|
29113
29431
|
return out;
|
|
@@ -29122,6 +29440,7 @@ var SUPPORTED_LOADER_ENDPOINTS2 = [
|
|
|
29122
29440
|
"getPublishedEntryPreview",
|
|
29123
29441
|
"listPublicEvents",
|
|
29124
29442
|
"listPublicCourses",
|
|
29443
|
+
"listPublicTeamMembers",
|
|
29125
29444
|
"listPublicProducts",
|
|
29126
29445
|
"listPublicPasses",
|
|
29127
29446
|
"listPublicMemberships",
|
|
@@ -29286,6 +29605,16 @@ async function prefetchBlockData2(page, context, client, options) {
|
|
|
29286
29605
|
const parsedLimit = typeof limit === "string" ? Number.parseInt(limit, 10) : typeof limit === "number" ? limit : void 0;
|
|
29287
29606
|
return await client.listPublicCourses({ siteId, limit: parsedLimit, stage });
|
|
29288
29607
|
}
|
|
29608
|
+
case "listPublicTeamMembers": {
|
|
29609
|
+
const { siteId, stage } = resolvedParams ?? {};
|
|
29610
|
+
if (!siteId) {
|
|
29611
|
+
throw new Error("listPublicTeamMembers requires siteId param");
|
|
29612
|
+
}
|
|
29613
|
+
return await client.listPublicTeamMembers({
|
|
29614
|
+
siteId,
|
|
29615
|
+
stage: typeof stage === "string" ? stage : void 0
|
|
29616
|
+
});
|
|
29617
|
+
}
|
|
29289
29618
|
case "listPublicProducts": {
|
|
29290
29619
|
const { siteId, stage, categorySelector } = resolvedParams ?? {};
|
|
29291
29620
|
if (!siteId) {
|