meno-core 1.0.53 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +1 -3
- package/bin/cli.ts +66 -261
- package/build-astro.ts +150 -128
- package/dist/bin/cli.js +42 -185
- package/dist/bin/cli.js.map +2 -2
- package/dist/chunks/chunk-2AR55GYH.js +42 -0
- package/dist/chunks/chunk-2AR55GYH.js.map +7 -0
- package/dist/chunks/{chunk-JGWFTO6P.js → chunk-2IIQK7T3.js} +2624 -1389
- package/dist/chunks/chunk-2IIQK7T3.js.map +7 -0
- package/dist/chunks/chunk-4ZRU52J2.js +169 -0
- package/dist/chunks/chunk-4ZRU52J2.js.map +7 -0
- package/dist/chunks/{chunk-UB44F4Z2.js → chunk-5X4HCN7J.js} +5 -7
- package/dist/chunks/chunk-5X4HCN7J.js.map +7 -0
- package/dist/chunks/{chunk-WQFG7PAH.js → chunk-7CCVOL5M.js} +15 -19
- package/dist/chunks/chunk-7CCVOL5M.js.map +7 -0
- package/dist/chunks/{chunk-YBLHKYFF.js → chunk-AR7LHIFY.js} +8 -2
- package/dist/chunks/chunk-AR7LHIFY.js.map +7 -0
- package/dist/chunks/{chunk-O3NAGJP4.js → chunk-NUP7H7D3.js} +135 -41
- package/dist/chunks/chunk-NUP7H7D3.js.map +7 -0
- package/dist/chunks/{chunk-X754AHS5.js → chunk-QWTQZHG3.js} +194 -90
- package/dist/chunks/chunk-QWTQZHG3.js.map +7 -0
- package/dist/chunks/{chunk-H3GJ4H2U.js → chunk-XTKNX4FW.js} +216 -87
- package/dist/chunks/chunk-XTKNX4FW.js.map +7 -0
- package/dist/chunks/{fs-JGINUXGL.js → fs-G3ANWEFP.js} +2 -2
- package/dist/lib/client/index.js +1003 -475
- package/dist/lib/client/index.js.map +3 -3
- package/dist/lib/server/index.js +14393 -6371
- package/dist/lib/server/index.js.map +4 -4
- package/dist/lib/shared/index.js +342 -101
- package/dist/lib/shared/index.js.map +4 -4
- package/dist/lib/shared/richtext/index.js +1 -1
- package/dist/lib/test-utils/index.js +64 -80
- package/dist/lib/test-utils/index.js.map +2 -2
- package/entries/client-router.tsx +10 -8
- package/lib/client/ClientInitializer.ts +8 -8
- package/lib/client/ErrorBoundary.test.tsx +246 -186
- package/lib/client/ErrorBoundary.tsx +183 -132
- package/lib/client/componentRegistry.test.ts +96 -108
- package/lib/client/componentRegistry.ts +1 -3
- package/lib/client/contexts/ThemeContext.tsx +3 -2
- package/lib/client/core/ComponentBuilder.test.ts +663 -560
- package/lib/client/core/ComponentBuilder.ts +427 -155
- package/lib/client/core/ComponentRenderer.test.tsx +2 -4
- package/lib/client/core/ComponentRenderer.tsx +46 -33
- package/lib/client/core/builders/embedBuilder.ts +242 -54
- package/lib/client/core/builders/linkBuilder.ts +72 -45
- package/lib/client/core/builders/linkNodeBuilder.ts +79 -54
- package/lib/client/core/builders/listBuilder.ts +155 -89
- package/lib/client/core/builders/localeListBuilder.ts +97 -62
- package/lib/client/core/builders/types.ts +5 -5
- package/lib/client/core/cmsTemplateProcessor.ts +8 -9
- package/lib/client/elementRegistry.ts +3 -3
- package/lib/client/fontFamiliesService.test.ts +2 -10
- package/lib/client/fontFamiliesService.ts +3 -3
- package/lib/client/hmr/HMRManager.tsx +47 -30
- package/lib/client/hmrCssReload.ts +49 -14
- package/lib/client/hmrWebSocket.ts +14 -19
- package/lib/client/hooks/useColorVariables.test.ts +21 -21
- package/lib/client/hooks/useColorVariables.ts +23 -18
- package/lib/client/hooks/usePropertyAutocomplete.ts +4 -6
- package/lib/client/hooks/useVariables.ts +6 -4
- package/lib/client/hydration/HydrationUtils.test.ts +24 -25
- package/lib/client/hydration/HydrationUtils.ts +3 -4
- package/lib/client/i18nConfigService.test.ts +2 -7
- package/lib/client/i18nConfigService.ts +2 -2
- package/lib/client/meno-filter/MenoFilter.test.ts +47 -49
- package/lib/client/meno-filter/MenoFilter.ts +14 -15
- package/lib/client/meno-filter/bindings.ts +18 -43
- package/lib/client/meno-filter/init.ts +4 -4
- package/lib/client/meno-filter/renderer.ts +30 -32
- package/lib/client/meno-filter/script.generated.ts +1 -3
- package/lib/client/meno-filter/ui.ts +4 -6
- package/lib/client/meno-filter/updates.ts +18 -23
- package/lib/client/meno-filter/utils.ts +1 -1
- package/lib/client/navigation.test.ts +174 -178
- package/lib/client/navigation.ts +0 -1
- package/lib/client/responsiveStyleResolver.knownTokens.test.ts +71 -0
- package/lib/client/responsiveStyleResolver.test.ts +234 -232
- package/lib/client/responsiveStyleResolver.ts +74 -20
- package/lib/client/routing/RouteLoader.test.ts +24 -25
- package/lib/client/routing/RouteLoader.ts +27 -35
- package/lib/client/routing/Router.tsx +210 -153
- package/lib/client/scripts/ScriptExecutor.test.ts +157 -158
- package/lib/client/scripts/ScriptExecutor.ts +18 -36
- package/lib/client/services/PrefetchService.test.ts +3 -3
- package/lib/client/services/PrefetchService.ts +23 -29
- package/lib/client/styleProcessor.test.ts +9 -9
- package/lib/client/styleProcessor.ts +24 -15
- package/lib/client/styles/StyleInjector.test.ts +122 -115
- package/lib/client/styles/StyleInjector.ts +10 -7
- package/lib/client/styles/UtilityClassCollector.ts +62 -28
- package/lib/client/styles/cspNonce.test.ts +2 -5
- package/lib/client/templateEngine.test.ts +554 -488
- package/lib/client/templateEngine.ts +203 -73
- package/lib/client/theme.test.ts +1 -1
- package/lib/client/theme.ts +0 -1
- package/lib/client/utils/toast.ts +0 -1
- package/lib/server/__integration__/api-routes.test.ts +8 -4
- package/lib/server/__integration__/cms-integration.test.ts +1 -4
- package/lib/server/__integration__/server-lifecycle.test.ts +4 -5
- package/lib/server/__integration__/ssr-rendering.test.ts +47 -37
- package/lib/server/__integration__/static-assets.test.ts +3 -3
- package/lib/server/__integration__/test-helpers.ts +87 -74
- package/lib/server/ab/generateFunctions.ts +12 -10
- package/lib/server/astro/cmsPageEmitter.ts +26 -42
- package/lib/server/astro/componentEmitter.ts +35 -43
- package/lib/server/astro/cssCollector.ts +10 -26
- package/lib/server/astro/nodeToAstro.test.ts +1754 -34
- package/lib/server/astro/nodeToAstro.ts +232 -216
- package/lib/server/astro/normalizeOrphanTemplateProps.test.ts +115 -119
- package/lib/server/astro/normalizeOrphanTemplateProps.ts +11 -18
- package/lib/server/astro/pageEmitter.ts +9 -13
- package/lib/server/astro/tailwindMapper.test.ts +10 -37
- package/lib/server/astro/tailwindMapper.ts +33 -40
- package/lib/server/astro/templateTransformer.ts +17 -20
- package/lib/server/createServer.ts +7 -19
- package/lib/server/cssGenerator.test.ts +35 -44
- package/lib/server/cssGenerator.ts +8 -19
- package/lib/server/fileWatcher.test.ts +164 -13
- package/lib/server/fileWatcher.ts +209 -124
- package/lib/server/index.ts +14 -17
- package/lib/server/jsonLoader.test.ts +39 -2
- package/lib/server/jsonLoader.ts +39 -34
- package/lib/server/middleware/cors.test.ts +21 -21
- package/lib/server/middleware/cors.ts +28 -4
- package/lib/server/middleware/errorHandler.test.ts +7 -5
- package/lib/server/middleware/errorHandler.ts +3 -8
- package/lib/server/middleware/index.ts +0 -1
- package/lib/server/middleware/logger.test.ts +10 -8
- package/lib/server/middleware/logger.ts +17 -29
- package/lib/server/migrateTemplates.ts +3 -3
- package/lib/server/pageCache.test.ts +76 -77
- package/lib/server/pageCache.ts +0 -1
- package/lib/server/projectContext.ts +5 -4
- package/lib/server/providers/fileSystemCMSProvider.test.ts +142 -99
- package/lib/server/providers/fileSystemCMSProvider.ts +62 -38
- package/lib/server/routes/api/cms.test.ts +26 -14
- package/lib/server/routes/api/cms.ts +9 -14
- package/lib/server/routes/api/colors.test.ts +2 -2
- package/lib/server/routes/api/components.ts +31 -35
- package/lib/server/routes/api/config.ts +3 -4
- package/lib/server/routes/api/core-routes.ts +49 -76
- package/lib/server/routes/api/enums.test.ts +2 -2
- package/lib/server/routes/api/functions.ts +9 -17
- package/lib/server/routes/api/index.ts +3 -6
- package/lib/server/routes/api/pages.ts +8 -11
- package/lib/server/routes/api/shared.test.ts +1 -1
- package/lib/server/routes/api/shared.ts +12 -9
- package/lib/server/routes/api/variables.test.ts +3 -5
- package/lib/server/routes/api/variables.ts +1 -1
- package/lib/server/routes/index.ts +25 -28
- package/lib/server/routes/pages.ts +35 -31
- package/lib/server/routes/static.ts +17 -6
- package/lib/server/runtime/bundler.ts +98 -61
- package/lib/server/runtime/fs.ts +16 -26
- package/lib/server/runtime/httpServer.ts +8 -12
- package/lib/server/services/ColorService.test.ts +3 -3
- package/lib/server/services/ColorService.ts +37 -29
- package/lib/server/services/EnumService.test.ts +4 -8
- package/lib/server/services/EnumService.ts +11 -3
- package/lib/server/services/VariableService.test.ts +8 -12
- package/lib/server/services/VariableService.ts +11 -3
- package/lib/server/services/cmsService.test.ts +158 -120
- package/lib/server/services/cmsService.ts +36 -146
- package/lib/server/services/componentService.test.ts +125 -45
- package/lib/server/services/componentService.ts +70 -46
- package/lib/server/services/configService.test.ts +22 -45
- package/lib/server/services/configService.ts +50 -27
- package/lib/server/services/fileWatcherService.ts +42 -8
- package/lib/server/services/index.ts +0 -1
- package/lib/server/services/pageService.test.ts +8 -10
- package/lib/server/services/pageService.ts +32 -18
- package/lib/server/ssr/attributeBuilder.ts +18 -8
- package/lib/server/ssr/buildErrorOverlay.ts +11 -12
- package/lib/server/ssr/clientDataInjector.ts +7 -21
- package/lib/server/ssr/cmsSSRProcessor.ts +4 -8
- package/lib/server/ssr/cssCollector.ts +1 -1
- package/lib/server/ssr/errorOverlay.test.ts +1 -1
- package/lib/server/ssr/errorOverlay.ts +3 -9
- package/lib/server/ssr/htmlGenerator.nonce.test.ts +9 -14
- package/lib/server/ssr/htmlGenerator.test.ts +120 -44
- package/lib/server/ssr/htmlGenerator.ts +126 -91
- package/lib/server/ssr/imageMetadata.test.ts +3 -1
- package/lib/server/ssr/imageMetadata.ts +27 -21
- package/lib/server/ssr/jsCollector.test.ts +8 -18
- package/lib/server/ssr/jsCollector.ts +3 -8
- package/lib/server/ssr/liveReloadIntegration.test.ts +76 -36
- package/lib/server/ssr/metaTagGenerator.ts +2 -2
- package/lib/server/ssr/ssrRenderer.branches.test.ts +1103 -0
- package/lib/server/ssr/ssrRenderer.test.ts +316 -256
- package/lib/server/ssr/ssrRenderer.ts +795 -243
- package/lib/server/ssrRenderer.test.ts +1048 -954
- package/lib/server/utils/jsonLineMapper.test.ts +28 -28
- package/lib/server/utils/jsonLineMapper.ts +7 -7
- package/lib/server/validateStyleCoverage.ts +18 -21
- package/lib/server/websocketManager.ts +28 -19
- package/lib/shared/attributeNodeUtils.test.ts +15 -15
- package/lib/shared/attributeNodeUtils.ts +5 -12
- package/lib/shared/breakpoints.test.ts +5 -5
- package/lib/shared/breakpoints.ts +4 -11
- package/lib/shared/cmsQuery.test.ts +81 -0
- package/lib/shared/cmsQuery.ts +92 -0
- package/lib/shared/cmsQueryParser.test.ts +50 -42
- package/lib/shared/cmsQueryParser.ts +60 -38
- package/lib/shared/colorConversions.ts +9 -9
- package/lib/shared/colorVariableUtils.test.ts +27 -5
- package/lib/shared/colorVariableUtils.ts +21 -12
- package/lib/shared/componentRefs.ts +1 -5
- package/lib/shared/constants.test.ts +3 -3
- package/lib/shared/constants.ts +8 -8
- package/lib/shared/cssGeneration.test.ts +285 -144
- package/lib/shared/cssGeneration.ts +217 -531
- package/lib/shared/cssNamedColors.ts +152 -30
- package/lib/shared/cssProperties.test.ts +69 -70
- package/lib/shared/cssProperties.ts +298 -114
- package/lib/shared/elementClassName.test.ts +109 -109
- package/lib/shared/elementClassName.ts +3 -3
- package/lib/shared/elementUtils.ts +12 -16
- package/lib/shared/errorLogger.test.ts +12 -12
- package/lib/shared/errorLogger.ts +2 -10
- package/lib/shared/errors.test.ts +2 -13
- package/lib/shared/errors.ts +2 -8
- package/lib/shared/expressionEvaluator.test.ts +145 -0
- package/lib/shared/expressionEvaluator.ts +52 -24
- package/lib/shared/fontLoader.test.ts +32 -18
- package/lib/shared/fontLoader.ts +2 -2
- package/lib/shared/friendlyError.ts +2 -3
- package/lib/shared/gradientUtils.test.ts +3 -7
- package/lib/shared/gradientUtils.ts +17 -14
- package/lib/shared/hrefRefs.test.ts +2 -2
- package/lib/shared/hrefRefs.ts +2 -10
- package/lib/shared/i18n.test.ts +4 -4
- package/lib/shared/i18n.ts +18 -38
- package/lib/shared/index.ts +27 -0
- package/lib/shared/inlineSvgStyleRules.ts +14 -13
- package/lib/shared/interactiveStyleMappings.test.ts +32 -54
- package/lib/shared/interactiveStyleMappings.ts +11 -24
- package/lib/shared/interactiveStyles.test.ts +165 -188
- package/lib/shared/interfaces/contentProvider.ts +1 -1
- package/lib/shared/itemTemplateUtils.test.ts +11 -17
- package/lib/shared/itemTemplateUtils.ts +27 -39
- package/lib/shared/jsonRepair.ts +16 -10
- package/lib/shared/libraryLoader.test.ts +21 -55
- package/lib/shared/libraryLoader.ts +7 -22
- package/lib/shared/linkUtils.ts +1 -1
- package/lib/shared/logger.test.ts +66 -0
- package/lib/shared/logger.ts +94 -0
- package/lib/shared/markdown.ts +25 -0
- package/lib/shared/netlifyLocale404.test.ts +179 -0
- package/lib/shared/netlifyLocale404.ts +110 -0
- package/lib/shared/nodeUtils.test.ts +28 -16
- package/lib/shared/nodeUtils.ts +76 -23
- package/lib/shared/pathArrayUtils.test.ts +1 -2
- package/lib/shared/pathArrayUtils.ts +1 -1
- package/lib/shared/pathSecurity.ts +2 -2
- package/lib/shared/pathUtils.test.ts +4 -6
- package/lib/shared/pathUtils.ts +42 -49
- package/lib/shared/paths/Path.test.ts +2 -2
- package/lib/shared/paths/Path.ts +0 -1
- package/lib/shared/paths/PathConverter.test.ts +1 -1
- package/lib/shared/paths/PathConverter.ts +17 -20
- package/lib/shared/paths/PathUtils.ts +13 -13
- package/lib/shared/paths/PathValidator.test.ts +2 -15
- package/lib/shared/paths/PathValidator.ts +12 -10
- package/lib/shared/paths/index.ts +1 -2
- package/lib/shared/permissions.test.ts +168 -0
- package/lib/shared/permissions.ts +162 -0
- package/lib/shared/propResolver.test.ts +240 -244
- package/lib/shared/propResolver.ts +15 -26
- package/lib/shared/pxToRem.test.ts +7 -6
- package/lib/shared/pxToRem.ts +2 -5
- package/lib/shared/registry/BaseNodeTypeRegistry.test.ts +12 -6
- package/lib/shared/registry/ClientRegistry.ts +0 -2
- package/lib/shared/registry/ComponentRegistry.test.ts +46 -32
- package/lib/shared/registry/ComponentRegistry.ts +12 -9
- package/lib/shared/registry/NodeTypeDefinition.ts +16 -9
- package/lib/shared/registry/RegistryManager.ts +1 -2
- package/lib/shared/registry/SSRRegistry.ts +0 -2
- package/lib/shared/registry/createNodeType.ts +7 -9
- package/lib/shared/registry/defineNodeType.ts +2 -6
- package/lib/shared/registry/fieldPresets.ts +3 -1
- package/lib/shared/registry/index.ts +0 -1
- package/lib/shared/registry/nodeTypes/ComponentInstanceNodeType.ts +14 -15
- package/lib/shared/registry/nodeTypes/CustomNodeType.ts +103 -0
- package/lib/shared/registry/nodeTypes/EmbedNodeType.ts +18 -11
- package/lib/shared/registry/nodeTypes/HtmlNodeType.ts +48 -19
- package/lib/shared/registry/nodeTypes/IslandNodeType.ts +129 -0
- package/lib/shared/registry/nodeTypes/LinkNodeType.ts +21 -19
- package/lib/shared/registry/nodeTypes/ListNodeType.ts +117 -77
- package/lib/shared/registry/nodeTypes/LocaleListNodeType.ts +27 -21
- package/lib/shared/registry/nodeTypes/MarkdownNodeType.ts +78 -0
- package/lib/shared/registry/nodeTypes/SlotMarkerType.ts +12 -8
- package/lib/shared/registry/nodeTypes/index.ts +26 -3
- package/lib/shared/responsiveScaling.test.ts +16 -34
- package/lib/shared/responsiveScaling.ts +61 -42
- package/lib/shared/responsiveStyleUtils.test.ts +0 -1
- package/lib/shared/responsiveStyleUtils.ts +11 -13
- package/lib/shared/richtext/htmlToTiptap.test.ts +139 -130
- package/lib/shared/richtext/htmlToTiptap.ts +2 -4
- package/lib/shared/richtext/tiptapToHtml.test.ts +5 -6
- package/lib/shared/richtext/types.ts +1 -8
- package/lib/shared/slugTranslator.test.ts +13 -13
- package/lib/shared/slugTranslator.ts +12 -16
- package/lib/shared/slugify.ts +9 -15
- package/lib/shared/styleNodeUtils.test.ts +8 -8
- package/lib/shared/styleNodeUtils.ts +18 -20
- package/lib/shared/styleUtils.test.ts +87 -61
- package/lib/shared/styleUtils.ts +5 -6
- package/lib/shared/themeDefaults.test.ts +11 -14
- package/lib/shared/themeDefaults.ts +3 -4
- package/lib/shared/tree/PathBuilder.test.ts +63 -145
- package/lib/shared/tree/PathBuilder.ts +59 -47
- package/lib/shared/treePathUtils.test.ts +51 -12
- package/lib/shared/treePathUtils.ts +91 -60
- package/lib/shared/types/api.ts +105 -8
- package/lib/shared/types/cms.test.ts +34 -0
- package/lib/shared/types/cms.ts +90 -34
- package/lib/shared/types/comment.ts +49 -16
- package/lib/shared/types/components.ts +51 -25
- package/lib/shared/types/errors.test.ts +1 -6
- package/lib/shared/types/errors.ts +3 -7
- package/lib/shared/types/experiments.ts +28 -28
- package/lib/shared/types/index.ts +25 -2
- package/lib/shared/types/permissions.ts +139 -0
- package/lib/shared/types/styles.ts +0 -1
- package/lib/shared/types/variables.test.ts +4 -13
- package/lib/shared/types/variables.ts +51 -30
- package/lib/shared/types.ts +1 -2
- package/lib/shared/utilityClassConfig.ts +751 -321
- package/lib/shared/utilityClassMapper.durability.test.ts +117 -0
- package/lib/shared/utilityClassMapper.test.ts +433 -95
- package/lib/shared/utilityClassMapper.ts +322 -249
- package/lib/shared/utilityClassNames.test.ts +38 -0
- package/lib/shared/utilityClassNames.ts +458 -0
- package/lib/shared/utils.test.ts +2 -10
- package/lib/shared/utils.ts +19 -10
- package/lib/shared/validation/cmsValidators.ts +2 -1
- package/lib/shared/validation/commentValidators.test.ts +53 -0
- package/lib/shared/validation/commentValidators.ts +12 -1
- package/lib/shared/validation/index.ts +1 -0
- package/lib/shared/validation/permissionsValidators.test.ts +49 -0
- package/lib/shared/validation/permissionsValidators.ts +49 -0
- package/lib/shared/validation/propValidator.test.ts +19 -21
- package/lib/shared/validation/propValidator.ts +13 -18
- package/lib/shared/validation/schemas.test.ts +64 -32
- package/lib/shared/validation/schemas.ts +616 -345
- package/lib/shared/validation/validators.test.ts +3 -8
- package/lib/shared/validation/validators.ts +89 -68
- package/lib/shared/viewportUnits.integration.test.ts +14 -10
- package/lib/shared/viewportUnits.test.ts +24 -23
- package/lib/shared/viewportUnits.ts +12 -5
- package/lib/test-utils/dom-setup.ts +1 -1
- package/lib/test-utils/factories/ConsoleMockFactory.ts +10 -14
- package/lib/test-utils/factories/DomMockFactory.ts +17 -23
- package/lib/test-utils/factories/EventMockFactory.ts +7 -13
- package/lib/test-utils/factories/FetchMockFactory.ts +39 -57
- package/lib/test-utils/factories/ServerMockFactory.ts +6 -10
- package/lib/test-utils/factories/StoreMockFactory.ts +18 -29
- package/lib/test-utils/fixtures.ts +45 -45
- package/lib/test-utils/helpers/asyncHelpers.test.ts +15 -18
- package/lib/test-utils/helpers/asyncHelpers.ts +11 -20
- package/lib/test-utils/helpers.ts +1 -5
- package/lib/test-utils/index.ts +0 -4
- package/lib/test-utils/mockFactories.ts +13 -19
- package/lib/test-utils/mocks.ts +6 -4
- package/package.json +3 -5
- package/scripts/build-for-publish.mjs +2 -4
- package/scripts/build-meno-filter.ts +4 -7
- package/tsconfig.json +1 -0
- package/vite.config.ts +4 -4
- package/build-next.ts +0 -1361
- package/build-static.test.ts +0 -424
- package/build-static.ts +0 -1074
- package/dist/build-static.js +0 -36
- package/dist/chunks/chunk-2MHDV5BF.js +0 -251
- package/dist/chunks/chunk-2MHDV5BF.js.map +0 -7
- package/dist/chunks/chunk-AZQYF6KE.js +0 -559
- package/dist/chunks/chunk-AZQYF6KE.js.map +0 -7
- package/dist/chunks/chunk-GZHGVVW3.js +0 -322
- package/dist/chunks/chunk-GZHGVVW3.js.map +0 -7
- package/dist/chunks/chunk-H3GJ4H2U.js.map +0 -7
- package/dist/chunks/chunk-I7YIGZXT.js +0 -467
- package/dist/chunks/chunk-I7YIGZXT.js.map +0 -7
- package/dist/chunks/chunk-IGYR22T6.js +0 -6192
- package/dist/chunks/chunk-IGYR22T6.js.map +0 -7
- package/dist/chunks/chunk-JGP5A3Y5.js +0 -1136
- package/dist/chunks/chunk-JGP5A3Y5.js.map +0 -7
- package/dist/chunks/chunk-JGWFTO6P.js.map +0 -7
- package/dist/chunks/chunk-O3NAGJP4.js.map +0 -7
- package/dist/chunks/chunk-QB2LNO4W.js +0 -77
- package/dist/chunks/chunk-QB2LNO4W.js.map +0 -7
- package/dist/chunks/chunk-R6XHAFBF.js +0 -3821
- package/dist/chunks/chunk-R6XHAFBF.js.map +0 -7
- package/dist/chunks/chunk-UB44F4Z2.js.map +0 -7
- package/dist/chunks/chunk-WQFG7PAH.js.map +0 -7
- package/dist/chunks/chunk-X754AHS5.js.map +0 -7
- package/dist/chunks/chunk-YBLHKYFF.js.map +0 -7
- package/dist/chunks/configService-R3OGU2UD.js +0 -13
- package/dist/chunks/configService-R3OGU2UD.js.map +0 -7
- package/dist/chunks/constants-STK2YBIW.js +0 -46
- package/dist/chunks/constants-STK2YBIW.js.map +0 -7
- package/dist/chunks/fs-JGINUXGL.js.map +0 -7
- package/dist/entries/server-router.js +0 -67
- package/dist/entries/server-router.js.map +0 -7
- package/entries/server-router.tsx +0 -81
- package/lib/server/providers/fileSystemPageProvider.ts +0 -160
- package/lib/server/webflow/buildWebflow.ts +0 -635
- package/lib/server/webflow/index.ts +0 -23
- package/lib/server/webflow/nodeToWebflow.test.ts +0 -3170
- package/lib/server/webflow/nodeToWebflow.ts +0 -2435
- package/lib/server/webflow/styleMapper.test.ts +0 -389
- package/lib/server/webflow/styleMapper.ts +0 -695
- package/lib/server/webflow/templateWrapper.ts +0 -49
- package/lib/server/webflow/types.ts +0 -396
- /package/dist/{build-static.js.map → chunks/fs-G3ANWEFP.js.map} +0 -0
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Webflow Designer Extension template wrapper.
|
|
3
|
-
*
|
|
4
|
-
* The Webflow Designer injects the `webflow` API global only when extension
|
|
5
|
-
* HTML is wrapped in a template fetched from `webflow-ext.com`. This module
|
|
6
|
-
* fetches the template once per process, caches it, then splices the
|
|
7
|
-
* extension's <head>/<body> content into the `{{ui}}` placeholder.
|
|
8
|
-
*
|
|
9
|
-
* Used by both the studio's mounted `/webflow-extension/*` route and the
|
|
10
|
-
* standalone serve.ts on port 1337, so they stay in sync automatically.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import { readFile } from 'fs/promises';
|
|
14
|
-
|
|
15
|
-
let cachedTemplate: string | null = null;
|
|
16
|
-
|
|
17
|
-
async function getWebflowTemplate(appName: string): Promise<string> {
|
|
18
|
-
if (cachedTemplate) return cachedTemplate;
|
|
19
|
-
const url = `https://webflow-ext.com/template/v2?name=${encodeURIComponent(appName)}`;
|
|
20
|
-
const res = await fetch(url);
|
|
21
|
-
if (!res.ok) throw new Error(`Failed to fetch Webflow template: ${res.status}`);
|
|
22
|
-
cachedTemplate = await res.text();
|
|
23
|
-
return cachedTemplate;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Wrap extension HTML in the Webflow Designer template.
|
|
28
|
-
* `manifestPath` points to the extension's `webflow.json` — its `name` field
|
|
29
|
-
* is forwarded as the `?name=` query param to webflow-ext.com.
|
|
30
|
-
*
|
|
31
|
-
* On any failure (manifest read, template fetch) we log a warning and return
|
|
32
|
-
* the raw HTML, matching the prior behavior of the two duplicate copies.
|
|
33
|
-
*/
|
|
34
|
-
export async function wrapInWebflowTemplate(html: string, manifestPath: string): Promise<string> {
|
|
35
|
-
try {
|
|
36
|
-
const manifest = JSON.parse(await readFile(manifestPath, 'utf-8'));
|
|
37
|
-
const template = await getWebflowTemplate(manifest.name || 'Meno Import');
|
|
38
|
-
|
|
39
|
-
const headMatch = html.match(/<head[^>]*>([\s\S]*?)<\/head>/i);
|
|
40
|
-
const bodyMatch = html.match(/<body[^>]*>([\s\S]*?)<\/body>/i);
|
|
41
|
-
const headContent = headMatch ? headMatch[1] : '';
|
|
42
|
-
const bodyContent = bodyMatch ? bodyMatch[1] : '';
|
|
43
|
-
|
|
44
|
-
return template.replace('{{ui}}', headContent + bodyContent);
|
|
45
|
-
} catch (err: any) {
|
|
46
|
-
console.warn('Could not fetch Webflow wrapper template:', err.message);
|
|
47
|
-
return html;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
@@ -1,396 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Webflow Export Types
|
|
3
|
-
* Defines the payload structure for Webflow Designer API consumption.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import type { CMSFieldType } from '../../shared/types/cms';
|
|
7
|
-
|
|
8
|
-
// ---------------------------------------------------------------------------
|
|
9
|
-
// Style Classes
|
|
10
|
-
// ---------------------------------------------------------------------------
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Webflow Designer API breakpoint identifiers.
|
|
14
|
-
* `main` is the desktop / default tier; `xxl|xl|large` are above-desktop;
|
|
15
|
-
* `medium|small|tiny` are below-desktop.
|
|
16
|
-
* Reference: https://developers.webflow.com/designer/reference/set-style-properties
|
|
17
|
-
*/
|
|
18
|
-
export type WebflowBreakpoint =
|
|
19
|
-
| 'xxl'
|
|
20
|
-
| 'xl'
|
|
21
|
-
| 'large'
|
|
22
|
-
| 'main'
|
|
23
|
-
| 'medium'
|
|
24
|
-
| 'small'
|
|
25
|
-
| 'tiny';
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Webflow Designer API pseudo-state identifiers.
|
|
29
|
-
* Reference: https://developers.webflow.com/designer/reference/set-style-properties
|
|
30
|
-
*/
|
|
31
|
-
export type WebflowPseudoState =
|
|
32
|
-
| 'noPseudo'
|
|
33
|
-
| 'hover'
|
|
34
|
-
| 'focus'
|
|
35
|
-
| 'focus-visible'
|
|
36
|
-
| 'focus-within'
|
|
37
|
-
| 'active'
|
|
38
|
-
| 'visited'
|
|
39
|
-
| 'pressed'
|
|
40
|
-
| 'before'
|
|
41
|
-
| 'after'
|
|
42
|
-
| 'placeholder'
|
|
43
|
-
| 'empty'
|
|
44
|
-
| 'first-child'
|
|
45
|
-
| 'last-child'
|
|
46
|
-
| 'nth-child(odd)'
|
|
47
|
-
| 'nth-child(even)';
|
|
48
|
-
|
|
49
|
-
/** CSS properties as a flat record */
|
|
50
|
-
export type CSSProperties = Record<string, string>;
|
|
51
|
-
|
|
52
|
-
/** A named Webflow style class with responsive + pseudo-state overrides */
|
|
53
|
-
export interface WebflowStyleClass {
|
|
54
|
-
/** Unique class name (e.g., "navigation-hamburger" for components, "p-about-grid5" for pages) */
|
|
55
|
-
name: string;
|
|
56
|
-
/** Base (Desktop) CSS properties */
|
|
57
|
-
base: CSSProperties;
|
|
58
|
-
/** Breakpoint overrides */
|
|
59
|
-
breakpoints?: Partial<Record<WebflowBreakpoint, CSSProperties>>;
|
|
60
|
-
/** Pseudo-state overrides */
|
|
61
|
-
pseudoStates?: Partial<Record<WebflowPseudoState, CSSProperties>>;
|
|
62
|
-
/** Combo class parent (if this is a variant class) */
|
|
63
|
-
comboParent?: string;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// ---------------------------------------------------------------------------
|
|
67
|
-
// Elements
|
|
68
|
-
// ---------------------------------------------------------------------------
|
|
69
|
-
|
|
70
|
-
/** A Webflow element (DOM node) */
|
|
71
|
-
export interface WebflowElement {
|
|
72
|
-
/** HTML tag (div, section, h1, a, img, etc.) */
|
|
73
|
-
tag: string;
|
|
74
|
-
/** Primary class name applied to this element */
|
|
75
|
-
className?: string;
|
|
76
|
-
/** Additional combo class names (for StyleMapping variants) */
|
|
77
|
-
comboClasses?: string[];
|
|
78
|
-
/** Inline text content (for text nodes) */
|
|
79
|
-
textContent?: string;
|
|
80
|
-
/**
|
|
81
|
-
* Child elements. Plain strings are inline text runs (Webflow String nodes)
|
|
82
|
-
* — used for mixed content like `<h1>foo <span>bar</span> baz</h1>`.
|
|
83
|
-
*/
|
|
84
|
-
children?: Array<WebflowElement | string>;
|
|
85
|
-
/** HTML attributes (src, alt, href, target, etc.) */
|
|
86
|
-
attributes?: Record<string, string | number | boolean>;
|
|
87
|
-
/**
|
|
88
|
-
* Inline SVG markup for an embed node. The Webflow extension uploads this
|
|
89
|
-
* as an `image/svg+xml` asset and emits an Image element — Webflow's
|
|
90
|
-
* Designer API has no public method to set HtmlEmbed code content.
|
|
91
|
-
*/
|
|
92
|
-
svgSource?: string;
|
|
93
|
-
/** Source URL for an `<img>`-rooted embed; uploaded into Webflow as an asset. */
|
|
94
|
-
imageSrc?: string;
|
|
95
|
-
/** Alt text paired with `svgSource` / `imageSrc`. */
|
|
96
|
-
imageAlt?: string;
|
|
97
|
-
/**
|
|
98
|
-
* Pre-fetched image bytes for `<img>` / embed elements whose source URL
|
|
99
|
-
* the Webflow Designer iframe can't reach (e.g. project-relative paths
|
|
100
|
-
* like `/images/foo.webp`, which would resolve against `designer.webflow.com`).
|
|
101
|
-
* The extension uploads these directly via `createAsset` instead of
|
|
102
|
-
* `fetch`-ing them.
|
|
103
|
-
*/
|
|
104
|
-
imageDataBase64?: string;
|
|
105
|
-
imageDataMime?: string;
|
|
106
|
-
imageDataFileName?: string;
|
|
107
|
-
/**
|
|
108
|
-
* Embed payload that is neither SVG nor a single `<img>`. The extension
|
|
109
|
-
* logs it and skips insertion (no equivalent Webflow API exists).
|
|
110
|
-
*/
|
|
111
|
-
unsupportedEmbed?: { reason: string; preview: string; label?: string };
|
|
112
|
-
/**
|
|
113
|
-
* When set, this element is an instance of a Webflow Component registered
|
|
114
|
-
* via `payload.components`. The extension appends the registered Component
|
|
115
|
-
* (looked up by name) instead of building children. `tag`/`className`/etc.
|
|
116
|
-
* remain set as a fallback for older extensions that don't understand
|
|
117
|
-
* `componentRef`.
|
|
118
|
-
*/
|
|
119
|
-
componentRef?: string;
|
|
120
|
-
/**
|
|
121
|
-
* Inline-expanded element tree to use when the Webflow Designer API can't
|
|
122
|
-
* register Components (older runtime, missing `canCreateComponents`
|
|
123
|
-
* permission). Mirrors the pre-promotion expansion of the Meno component so
|
|
124
|
-
* the extension can render the same markup it does today.
|
|
125
|
-
*/
|
|
126
|
-
inlineFallback?: WebflowElement[];
|
|
127
|
-
/**
|
|
128
|
-
* Bound CMS list marker. When set, this element is the synthetic wrapper
|
|
129
|
-
* for `<list sourceType="collection">` emitted in bound mode (see
|
|
130
|
-
* `buildWebflowPayload({ bindCollectionLists: true })`). Value is the Meno
|
|
131
|
-
* collection slug; the extension translates that to a Webflow collection
|
|
132
|
-
* ID via the v1 sync ID map and inserts a `DynamoWrapper` preset.
|
|
133
|
-
* Children are the *single* rendered item template (not N copies), with
|
|
134
|
-
* field references preserved as `menoBind` markers below.
|
|
135
|
-
*/
|
|
136
|
-
menoCollectionRef?: string;
|
|
137
|
-
/**
|
|
138
|
-
* Per-element CMS field binding markers. Captured at server emit time from
|
|
139
|
-
* the source `{{field}}` template; the extension translates them into
|
|
140
|
-
* `data-meno-bind-*` custom attributes on the inserted element and surfaces
|
|
141
|
-
* a manual-bind checklist. Webflow's Designer API has no `setBinding` /
|
|
142
|
-
* `setCollection` write surface yet (Apr 2026 — confirmed by Webflow
|
|
143
|
-
* staff Plata + Selser on the developer forum), so the user does the
|
|
144
|
-
* actual field binding once in the Designer UI after insertion.
|
|
145
|
-
*/
|
|
146
|
-
menoBind?: {
|
|
147
|
-
/** Bind this element's text content to this CMS field slug. */
|
|
148
|
-
textField?: string;
|
|
149
|
-
/** Map of attribute name → CMS field slug to bind. */
|
|
150
|
-
attrFields?: Record<string, string>;
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
// ---------------------------------------------------------------------------
|
|
155
|
-
// Bound-list sentinel (server-side internal — extension consumes `menoBind`)
|
|
156
|
-
// ---------------------------------------------------------------------------
|
|
157
|
-
|
|
158
|
-
/**
|
|
159
|
-
* String sentinel inserted in place of a real CMS field value when emitting a
|
|
160
|
-
* bound Collection List. The existing template engine is reused unchanged: a
|
|
161
|
-
* synthetic placeholder item maps every schema field to
|
|
162
|
-
* `${SENTINEL_PREFIX}${fieldSlug}${SENTINEL_SUFFIX}`, so `{{post.title}}`
|
|
163
|
-
* resolves to that string. A post-walk then converts those strings into
|
|
164
|
-
* `WebflowElement.menoBind` markers and replaces them with a readable
|
|
165
|
-
* placeholder so the user can see what each child is meant to display.
|
|
166
|
-
*/
|
|
167
|
-
export const MENO_BIND_SENTINEL_PREFIX = '__MENO_BIND__:';
|
|
168
|
-
export const MENO_BIND_SENTINEL_SUFFIX = ':__';
|
|
169
|
-
export const MENO_BIND_SENTINEL_RE = /__MENO_BIND__:([^:]+):__/g;
|
|
170
|
-
export const MENO_BIND_SENTINEL_EXACT_RE = /^__MENO_BIND__:([^:]+):__$/;
|
|
171
|
-
|
|
172
|
-
/** Synthetic tag for the bound Collection List wrapper. */
|
|
173
|
-
export const COLLECTION_LIST_TAG = '__collection_list__';
|
|
174
|
-
|
|
175
|
-
/**
|
|
176
|
-
* A Meno component promoted to a Webflow Component. The extension calls
|
|
177
|
-
* `webflow.registerComponent` once per entry, then `parent.append(component)`
|
|
178
|
-
* for every element in the page tree that has a matching `componentRef`.
|
|
179
|
-
*/
|
|
180
|
-
export interface WebflowComponentDef {
|
|
181
|
-
/** Component name as it appears in Webflow's Components panel. */
|
|
182
|
-
name: string;
|
|
183
|
-
/** Element tree that becomes the Component's body. */
|
|
184
|
-
elements: WebflowElement[];
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
// ---------------------------------------------------------------------------
|
|
188
|
-
// Pages
|
|
189
|
-
// ---------------------------------------------------------------------------
|
|
190
|
-
|
|
191
|
-
/** A Webflow page */
|
|
192
|
-
export interface WebflowPage {
|
|
193
|
-
/** Page title */
|
|
194
|
-
title: string;
|
|
195
|
-
/** URL slug (e.g., "about", "blog/post-1") */
|
|
196
|
-
slug: string;
|
|
197
|
-
/** Meta description */
|
|
198
|
-
description?: string;
|
|
199
|
-
/** Comma-separated keywords from page meta */
|
|
200
|
-
keywords?: string;
|
|
201
|
-
/** Open Graph title */
|
|
202
|
-
ogTitle?: string;
|
|
203
|
-
/** Open Graph description */
|
|
204
|
-
ogDescription?: string;
|
|
205
|
-
/** Open Graph image URL */
|
|
206
|
-
ogImage?: string;
|
|
207
|
-
/** Root elements of the page body */
|
|
208
|
-
elements: WebflowElement[];
|
|
209
|
-
/** Locale code */
|
|
210
|
-
locale?: string;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
/**
|
|
214
|
-
* A component-level script bundled into the export. The Webflow extension
|
|
215
|
-
* concatenates these into a single `<script>` injected at the end of `<body>`
|
|
216
|
-
* so interactive Meno components (FAQ accordion, dropdowns, mobile menu) work
|
|
217
|
-
* once published.
|
|
218
|
-
*/
|
|
219
|
-
export interface WebflowScript {
|
|
220
|
-
/** Component name (used by the runtime to find element instances). */
|
|
221
|
-
componentName: string;
|
|
222
|
-
/** Component's JavaScript code (verbatim from `Component.js`). */
|
|
223
|
-
code: string;
|
|
224
|
-
/** Whether the source defined defineVars (true / explicit list / undefined). */
|
|
225
|
-
defineVars?: true | string[];
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
// ---------------------------------------------------------------------------
|
|
229
|
-
// CMS
|
|
230
|
-
// ---------------------------------------------------------------------------
|
|
231
|
-
|
|
232
|
-
/** Webflow CMS field type mapping */
|
|
233
|
-
export type WebflowFieldType =
|
|
234
|
-
| 'PlainText'
|
|
235
|
-
| 'RichText'
|
|
236
|
-
| 'Number'
|
|
237
|
-
| 'Switch'
|
|
238
|
-
| 'Image'
|
|
239
|
-
| 'Date'
|
|
240
|
-
| 'Option'
|
|
241
|
-
| 'File'
|
|
242
|
-
| 'Reference';
|
|
243
|
-
|
|
244
|
-
/** A field in a Webflow CMS collection */
|
|
245
|
-
export interface WebflowCMSField {
|
|
246
|
-
/** Field display name */
|
|
247
|
-
name: string;
|
|
248
|
-
/** Field slug (machine name) */
|
|
249
|
-
slug: string;
|
|
250
|
-
/** Webflow field type */
|
|
251
|
-
type: WebflowFieldType;
|
|
252
|
-
/** Whether this field is required */
|
|
253
|
-
required?: boolean;
|
|
254
|
-
/** Options for Option type fields */
|
|
255
|
-
options?: string[];
|
|
256
|
-
/** Help text shown to editors in the Webflow CMS UI */
|
|
257
|
-
helpText?: string;
|
|
258
|
-
/**
|
|
259
|
-
* For Reference fields: Meno collection slug of the target collection.
|
|
260
|
-
* The sync orchestrator resolves this to a Webflow collection ID at create
|
|
261
|
-
* time (pass 2 of the two-pass collection create — references can only be
|
|
262
|
-
* added once their target exists).
|
|
263
|
-
*/
|
|
264
|
-
referenceCollection?: string;
|
|
265
|
-
/** True for multi-reference (array of IDs); false / undefined for single ref. */
|
|
266
|
-
multiReference?: boolean;
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
/** A Webflow CMS collection definition */
|
|
270
|
-
export interface WebflowCMSCollection {
|
|
271
|
-
/** Collection display name (plural) */
|
|
272
|
-
name: string;
|
|
273
|
-
/** Singular form of the display name (Webflow requires this for new collections) */
|
|
274
|
-
singularName: string;
|
|
275
|
-
/** Collection slug */
|
|
276
|
-
slug: string;
|
|
277
|
-
/** URL pattern for detail pages */
|
|
278
|
-
urlPattern?: string;
|
|
279
|
-
/** Field definitions */
|
|
280
|
-
fields: WebflowCMSField[];
|
|
281
|
-
/** Collection items */
|
|
282
|
-
items: Record<string, unknown>[];
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
// ---------------------------------------------------------------------------
|
|
286
|
-
// Assets
|
|
287
|
-
// ---------------------------------------------------------------------------
|
|
288
|
-
|
|
289
|
-
/** Reference to an asset that needs uploading to Webflow */
|
|
290
|
-
export interface WebflowAssetRef {
|
|
291
|
-
/** Local file path relative to project root */
|
|
292
|
-
localPath: string;
|
|
293
|
-
/** Asset type */
|
|
294
|
-
type: 'image' | 'font' | 'video' | 'file';
|
|
295
|
-
/** File name */
|
|
296
|
-
fileName: string;
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
// ---------------------------------------------------------------------------
|
|
300
|
-
// Export Payload
|
|
301
|
-
// ---------------------------------------------------------------------------
|
|
302
|
-
|
|
303
|
-
/** Per-locale slug mapping for a single source page */
|
|
304
|
-
export interface WebflowSlugMap {
|
|
305
|
-
/** The page's canonical id (e.g., "about", "blog/post-1") */
|
|
306
|
-
pageId: string;
|
|
307
|
-
/** Locale code → translated slug */
|
|
308
|
-
slugs: Record<string, string>;
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
/** Complete Webflow export payload */
|
|
312
|
-
export interface WebflowExportPayload {
|
|
313
|
-
/** Export format version */
|
|
314
|
-
version: 1;
|
|
315
|
-
/** Timestamp of export */
|
|
316
|
-
exportedAt: string;
|
|
317
|
-
/** All pages with their element trees */
|
|
318
|
-
pages: WebflowPage[];
|
|
319
|
-
/** All style class definitions */
|
|
320
|
-
styles: WebflowStyleClass[];
|
|
321
|
-
/** CMS collection definitions (if any) */
|
|
322
|
-
cms: WebflowCMSCollection[];
|
|
323
|
-
/** Asset references (images, fonts, etc.) */
|
|
324
|
-
assets: WebflowAssetRef[];
|
|
325
|
-
/** Per-locale slug translations so the consumer can route between locales */
|
|
326
|
-
slugMappings?: WebflowSlugMap[];
|
|
327
|
-
/** Component scripts — bundled at body end so components stay interactive. */
|
|
328
|
-
scripts?: WebflowScript[];
|
|
329
|
-
/**
|
|
330
|
-
* Meno components promoted to Webflow Components (currently `Navigation`
|
|
331
|
-
* and `Footer`). The extension registers each one before inserting page
|
|
332
|
-
* elements; pages reference them via `WebflowElement.componentRef`.
|
|
333
|
-
*/
|
|
334
|
-
components?: WebflowComponentDef[];
|
|
335
|
-
/**
|
|
336
|
-
* Concatenated `Component.css` sidecars (raw CSS) for components that ship
|
|
337
|
-
* hand-written styles. Component-scoped rules — data-attribute selectors,
|
|
338
|
-
* runtime state classes (e.g. `.is-open`), `:checked ~` siblings — aren't
|
|
339
|
-
* representable in Webflow's class system and are silently lost when only
|
|
340
|
-
* the per-element classes are emitted. The user pastes this into Site
|
|
341
|
-
* Settings → Custom Code → Head Code along with the combo-class overrides.
|
|
342
|
-
*/
|
|
343
|
-
componentCss?: string;
|
|
344
|
-
/**
|
|
345
|
-
* Raw CSS for `interactiveStyles` rules that Webflow's class system can't
|
|
346
|
-
* represent natively — anything with a `prefix` (descendant/sibling
|
|
347
|
-
* selector built from a state class on an ancestor), a class-style
|
|
348
|
-
* `postfix` like `.is-open`, or breakpoint-divided pseudo states.
|
|
349
|
-
* Pseudo-only rules with empty prefix continue to flow through Webflow's
|
|
350
|
-
* `Style.setProperties({ pseudo })`. Pasted into Site Settings → Custom
|
|
351
|
-
* Code → Head Code along with `componentCss`.
|
|
352
|
-
*/
|
|
353
|
-
interactiveCss?: string;
|
|
354
|
-
/**
|
|
355
|
-
* Project i18n summary so the extension can show a locale picker. Always
|
|
356
|
-
* present; single-locale projects still receive their lone locale here.
|
|
357
|
-
* `selectedLocale` reflects which locale's pages were emitted in this
|
|
358
|
-
* payload — the extension uses it to round-trip the picker selection.
|
|
359
|
-
*/
|
|
360
|
-
i18n?: {
|
|
361
|
-
defaultLocale: string;
|
|
362
|
-
locales: Array<{ code: string; name: string; nativeName?: string }>;
|
|
363
|
-
selectedLocale: string;
|
|
364
|
-
};
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
// ---------------------------------------------------------------------------
|
|
368
|
-
// Helpers
|
|
369
|
-
// ---------------------------------------------------------------------------
|
|
370
|
-
|
|
371
|
-
/** Map Meno CMS field type → Webflow field type */
|
|
372
|
-
export function mapCMSFieldType(menoType: CMSFieldType): WebflowFieldType {
|
|
373
|
-
switch (menoType) {
|
|
374
|
-
case 'string':
|
|
375
|
-
return 'PlainText';
|
|
376
|
-
case 'text':
|
|
377
|
-
case 'rich-text':
|
|
378
|
-
return 'RichText';
|
|
379
|
-
case 'number':
|
|
380
|
-
return 'Number';
|
|
381
|
-
case 'boolean':
|
|
382
|
-
return 'Switch';
|
|
383
|
-
case 'image':
|
|
384
|
-
return 'Image';
|
|
385
|
-
case 'date':
|
|
386
|
-
return 'Date';
|
|
387
|
-
case 'select':
|
|
388
|
-
return 'Option';
|
|
389
|
-
case 'file':
|
|
390
|
-
return 'File';
|
|
391
|
-
case 'reference':
|
|
392
|
-
return 'Reference';
|
|
393
|
-
default:
|
|
394
|
-
return 'PlainText';
|
|
395
|
-
}
|
|
396
|
-
}
|
|
File without changes
|