@developer_tribe/react-builder 1.2.14 → 1.2.15
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/build-components/BIcon/BIconProps.generated.d.ts +2 -0
- package/dist/build-components/BackgroundImage/BackgroundImageProps.generated.d.ts +2 -0
- package/dist/build-components/Button/ButtonProps.generated.d.ts +2 -0
- package/dist/build-components/Carousel/CarouselProps.generated.d.ts +2 -0
- package/dist/build-components/CarouselButtons/CarouselButtonsProps.generated.d.ts +2 -0
- package/dist/build-components/CarouselDots/CarouselDotsProps.generated.d.ts +2 -0
- package/dist/build-components/CarouselItem/CarouselItemProps.generated.d.ts +2 -0
- package/dist/build-components/CarouselProvider/CarouselProviderProps.generated.d.ts +2 -0
- package/dist/build-components/CountDown/CountDown.d.ts +2 -0
- package/dist/build-components/CountDown/CountDownProps.generated.d.ts +61 -0
- package/dist/build-components/CountDown/formatCountdownTime.d.ts +1 -0
- package/dist/build-components/Counter/Counter.d.ts +2 -0
- package/dist/build-components/Counter/CounterProps.generated.d.ts +61 -0
- package/dist/build-components/Image/ImageProps.generated.d.ts +2 -0
- package/dist/build-components/Main/MainProps.generated.d.ts +2 -0
- package/dist/build-components/Onboard/OnboardProps.generated.d.ts +2 -0
- package/dist/build-components/OnboardButton/OnboardButtonProps.generated.d.ts +2 -0
- package/dist/build-components/OnboardButtons/OnboardButtonsProps.generated.d.ts +2 -0
- package/dist/build-components/OnboardDot/OnboardDotProps.generated.d.ts +2 -0
- package/dist/build-components/OnboardFooter/OnboardFooterProps.generated.d.ts +2 -0
- package/dist/build-components/OnboardImage/OnboardImageProps.generated.d.ts +2 -0
- package/dist/build-components/OnboardItem/OnboardItemProps.generated.d.ts +2 -0
- package/dist/build-components/OnboardProvider/OnboardProviderProps.generated.d.ts +2 -0
- package/dist/build-components/OnboardSubtitle/OnboardSubtitleProps.generated.d.ts +2 -0
- package/dist/build-components/OnboardTitle/OnboardTitleProps.generated.d.ts +2 -0
- package/dist/build-components/PaywallBackground/PaywallBackgroundProps.generated.d.ts +2 -0
- package/dist/build-components/PaywallCloseButton/PaywallCloseButtonProps.generated.d.ts +2 -0
- package/dist/build-components/PaywallCounter/PaywallCounter.d.ts +2 -0
- package/dist/build-components/PaywallCounter/PaywallCounterProps.generated.d.ts +61 -0
- package/dist/build-components/PaywallOptions/PaywallOptionsProps.generated.d.ts +2 -0
- package/dist/build-components/PaywallProvider/PaywallProviderProps.generated.d.ts +2 -0
- package/dist/build-components/PaywallSubscribeButton/PaywallSubscribeButtonProps.generated.d.ts +2 -0
- package/dist/build-components/RadioButton/RadioButtonProps.generated.d.ts +2 -0
- package/dist/build-components/Text/TextProps.generated.d.ts +2 -0
- package/dist/build-components/View/ViewProps.generated.d.ts +2 -0
- package/dist/build-components/index.d.ts +4 -1
- package/dist/build-components/patterns.generated.d.ts +2961 -1552
- package/dist/components/BuilderProvider.d.ts +0 -1
- package/dist/index.cjs.js +4 -4
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.esm.js +4 -4
- package/dist/index.esm.js.map +1 -1
- package/dist/index.native.d.ts +7 -0
- package/dist/index.web.cjs.js +7 -5
- package/dist/index.web.cjs.js.map +1 -1
- package/dist/index.web.esm.js +7 -5
- package/dist/index.web.esm.js.map +1 -1
- package/dist/utils/getDefaultProject.d.ts +4 -0
- package/dist/utils/patterns.d.ts +3 -0
- package/package.json +2 -1
- package/scripts/prebuild/utils/createComponentTsx.js +1 -1
- package/scripts/prebuild/utils/createGeneratedProps.js +6 -2
- package/scripts/prebuild/utils/createRenderNodeGenerated.js +26 -5
- package/scripts/prebuild/utils/validateAllComponentsOrThrow.js +17 -5
- package/scripts/prebuild/utils/validateExistingComponentTsx.js +12 -8
- package/src/AttributesEditor.tsx +7 -2
- package/src/RenderPage.tsx +34 -3
- package/src/assets/meta.json +1 -1
- package/src/assets/samples/carousel-sample.json +44 -14
- package/src/assets/samples/getSamples.ts +3 -1
- package/src/assets/samples/paywall-1.json +73 -29
- package/src/assets/samples/paywall-2.json +338 -0
- package/src/assets/samples/simple-1.json +9 -3
- package/src/assets/samples/simple-2.json +72 -24
- package/src/assets/samples/unmigrated-builder-1.1.1.json +19 -7
- package/src/assets/samples/unmigrated-builder1.json +10 -4
- package/src/assets/samples/unvalidated-builder1.json +10 -4
- package/src/assets/samples/unvalidated-crash1.json +3 -1
- package/src/assets/samples/unvalidated-crashcomponent1.json +3 -1
- package/src/assets/samples/vpn-onboard-1.json +88 -40
- package/src/assets/samples/vpn-onboard-2.json +85 -37
- package/src/assets/samples/vpn-onboard-3.json +93 -45
- package/src/assets/samples/vpn-onboard-4.json +93 -45
- package/src/assets/samples/vpn-onboard-5.json +121 -53
- package/src/assets/samples/vpn-onboard-6.json +93 -45
- package/src/attributes-editor/AttributesEditorView.tsx +39 -1
- package/src/attributes-editor/Field.tsx +30 -0
- package/src/build-components/BIcon/BIconProps.generated.ts +2 -0
- package/src/build-components/BIcon/pattern.json +2 -0
- package/src/build-components/BackgroundImage/BackgroundImageProps.generated.ts +2 -0
- package/src/build-components/BackgroundImage/pattern.json +2 -0
- package/src/build-components/Button/ButtonProps.generated.ts +2 -0
- package/src/build-components/Button/pattern.json +2 -0
- package/src/build-components/Carousel/CarouselProps.generated.ts +2 -0
- package/src/build-components/Carousel/pattern.json +2 -0
- package/src/build-components/CarouselButtons/CarouselButtonsProps.generated.ts +2 -0
- package/src/build-components/CarouselButtons/pattern.json +2 -0
- package/src/build-components/CarouselDots/CarouselDotsProps.generated.ts +2 -0
- package/src/build-components/CarouselDots/pattern.json +2 -0
- package/src/build-components/CarouselItem/CarouselItemProps.generated.ts +2 -0
- package/src/build-components/CarouselItem/pattern.json +4 -1
- package/src/build-components/CarouselProvider/CarouselProviderProps.generated.ts +2 -0
- package/src/build-components/CarouselProvider/pattern.json +4 -1
- package/src/build-components/CountDown/CountDown.tsx +73 -0
- package/src/build-components/CountDown/CountDownProps.generated.ts +78 -0
- package/src/build-components/CountDown/formatCountdownTime.ts +10 -0
- package/src/build-components/CountDown/pattern.json +24 -0
- package/src/build-components/Counter/Counter.tsx +44 -0
- package/src/build-components/Counter/CounterProps.generated.ts +78 -0
- package/src/build-components/Counter/pattern.json +26 -0
- package/src/build-components/Image/ImageProps.generated.ts +2 -0
- package/src/build-components/Image/pattern.json +2 -0
- package/src/build-components/Main/MainProps.generated.ts +2 -0
- package/src/build-components/Main/pattern.json +2 -0
- package/src/build-components/Onboard/OnboardProps.generated.ts +2 -0
- package/src/build-components/Onboard/pattern.json +4 -1
- package/src/build-components/OnboardButton/OnboardButtonProps.generated.ts +2 -0
- package/src/build-components/OnboardButton/pattern.json +2 -0
- package/src/build-components/OnboardButtons/OnboardButtonsProps.generated.ts +2 -0
- package/src/build-components/OnboardButtons/pattern.json +2 -0
- package/src/build-components/OnboardDot/OnboardDotProps.generated.ts +2 -0
- package/src/build-components/OnboardDot/pattern.json +2 -0
- package/src/build-components/OnboardFooter/OnboardFooterProps.generated.ts +2 -0
- package/src/build-components/OnboardFooter/pattern.json +2 -0
- package/src/build-components/OnboardImage/OnboardImageProps.generated.ts +2 -0
- package/src/build-components/OnboardImage/pattern.json +2 -0
- package/src/build-components/OnboardItem/OnboardItemProps.generated.ts +2 -0
- package/src/build-components/OnboardItem/pattern.json +2 -0
- package/src/build-components/OnboardProvider/OnboardProviderProps.generated.ts +2 -0
- package/src/build-components/OnboardProvider/pattern.json +2 -0
- package/src/build-components/OnboardSubtitle/OnboardSubtitleProps.generated.ts +2 -0
- package/src/build-components/OnboardSubtitle/pattern.json +4 -1
- package/src/build-components/OnboardTitle/OnboardTitleProps.generated.ts +2 -0
- package/src/build-components/OnboardTitle/pattern.json +4 -1
- package/src/build-components/PaywallBackground/PaywallBackgroundProps.generated.ts +2 -0
- package/src/build-components/PaywallBackground/pattern.json +4 -1
- package/src/build-components/PaywallCloseButton/PaywallCloseButton.tsx +7 -5
- package/src/build-components/PaywallCloseButton/PaywallCloseButtonProps.generated.ts +2 -0
- package/src/build-components/PaywallCloseButton/pattern.json +4 -1
- package/src/build-components/PaywallCounter/PaywallCounter.tsx +49 -0
- package/src/build-components/PaywallCounter/PaywallCounterProps.generated.ts +78 -0
- package/src/build-components/PaywallCounter/pattern.json +24 -0
- package/src/build-components/PaywallOptions/PaywallOptionsProps.generated.ts +2 -0
- package/src/build-components/PaywallOptions/pattern.json +4 -1
- package/src/build-components/PaywallProvider/PaywallProvider.tsx +8 -16
- package/src/build-components/PaywallProvider/PaywallProviderProps.generated.ts +2 -0
- package/src/build-components/PaywallProvider/pattern.json +4 -1
- package/src/build-components/PaywallSubscribeButton/PaywallSubscribeButtonProps.generated.ts +2 -0
- package/src/build-components/PaywallSubscribeButton/pattern.json +4 -1
- package/src/build-components/RadioButton/RadioButtonProps.generated.ts +2 -0
- package/src/build-components/RadioButton/pattern.json +2 -0
- package/src/build-components/RenderNode.generated.tsx +17 -2
- package/src/build-components/Text/TextProps.generated.ts +2 -0
- package/src/build-components/Text/pattern.json +3 -1
- package/src/build-components/View/View.tsx +1 -1
- package/src/build-components/View/ViewProps.generated.ts +2 -0
- package/src/build-components/View/pattern.json +35 -38
- package/src/build-components/index.ts +15 -0
- package/src/build-components/patterns.generated.ts +3084 -1570
- package/src/components/BuilderButton.tsx +23 -6
- package/src/components/BuilderProvider.tsx +10 -7
- package/src/index.native.ts +7 -0
- package/src/index.ts +1 -0
- package/src/mockOS/context/MockOSContext.tsx +22 -8
- package/src/mockOS/managers/navigationManager.ts +4 -0
- package/src/pages/projectPageUtils.ts +3 -2
- package/src/utils/analyseNodeByPatterns.ts +21 -0
- package/src/utils/getDefaultProject.ts +34 -0
- package/src/utils/patterns.ts +6 -7
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/types/PreviewConfig.ts","../src/paywall/hooks/usePaywallCounter.ts","../src/paywall/hooks/useCloseStatusPaywall.ts","../src/paywall/hooks/useCarouselOptionsSeperator.ts","../src/paywall/hooks/useCalculateLocalizedPrice.ts","../src/paywall/hooks/useDiscountRate.ts","../src/components/BuilderProvider.tsx","../src/components/ParamsProvider.tsx","../src/components/LocalizationParamsProvider.tsx","../src/hooks/useParams.ts","../src/hooks/useLocalizationParams.ts","../src/hooks/useLocalize.ts","../src/utils/replaceLocalizationParams.ts","../node_modules/use-sync-external-store/shim/index.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js","../node_modules/use-sync-external-store/shim/with-selector.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js","../node_modules/zustand/esm/vanilla.mjs","../node_modules/zustand/esm/traditional.mjs","../node_modules/zustand/esm/vanilla/shallow.mjs","../src/utils/getDevices.ts","../node_modules/zustand/esm/middleware.mjs","../src/store.ts","../src/size-matters/index.ts","../src/utils/parseColor.ts","../src/utils/extractViewStyle/extractViewStyleNative.ts","../src/utils/fontWeight.ts","../src/utils/loadFontFamily.ts","../src/utils/extractTextStyle/extractTextStyleNative.ts","../src/attribute-analyser/style/native/useExtractTextStyle.ts","../src/attribute-analyser/style/native/useExtractViewStyle.ts","../src/attribute-analyser/style/native/useExtractImageStyle.ts","../src/utils/extractImageStyle.ts","../src/utils/generateRandomKeyForNode.ts","../src/build-components/patterns.generated.ts","../src/utils/patterns.ts","../src/utils/nodeGuards.ts","../src/utils/analyseNodeByPatterns.ts","../src/utils/analyseNodeStructural.ts","../src/utils/__special_exceptions.ts","../src/utils/analyseNode.ts","../src/utils/getMeta.ts","../src/utils/novaToJson.ts","../src/utils/querySelector.ts","../src/utils/getImage.ts","../src/build-components/useNode.ts","../src/assets/samples/getSamples.ts"],"sourcesContent":["export interface AppConfig {\n theme: 'light' | 'dark';\n isRtl: boolean; //This could be device in future\n screenStyle: {\n light: { backgroundColor: string; color: string; seperatorColor?: string };\n dark: { backgroundColor: string; color: string; seperatorColor?: string };\n };\n localication: Localication;\n defaultLanguage?: string;\n baseSize: { width: number; height: number };\n}\n\nexport const defaultAppConfig: AppConfig = {\n theme: 'light',\n isRtl: false,\n screenStyle: {\n light: { backgroundColor: '#FDFDFD', color: '#161827' },\n dark: { backgroundColor: '#12131A', color: '#E9EBF9' },\n },\n localication: {},\n baseSize: { width: 375, height: 812 },\n};\n\nexport type Localication = Record<string, Record<string, string>>;\n","/**\n * Placeholder hook — will be implemented later.\n */\nexport function usePaywallCounter(): number {\n return 0;\n}\n","/**\n * Placeholder hook — will be implemented later.\n */\nexport function useCloseStatusPaywall(): boolean {\n return false;\n}\n","/**\n * Placeholder hook — will be implemented later.\n *\n * NOTE: name kept as `Seperator` to match existing external API usage.\n */\nexport function useCarouselOptionsSeperator(): string {\n return '';\n}\n","/**\n * Placeholder hook — will be implemented later.\n */\nexport function useCalculateLocalizedPrice(): string {\n return '';\n}\n","/**\n * Placeholder hook — will be implemented later.\n */\nexport function useDiscountRate(): number {\n return 0;\n}\n","import React, { createContext, useContext, useMemo } from 'react';\nimport type { Product } from '../paywall/types/paywall-types';\nimport type { PaywallBenefits } from '../paywall/types/benefits';\nimport type { AppConfig } from '../types/PreviewConfig';\nimport type { Fonts } from '../types/Fonts';\nimport type { ProjectColors } from '../types/Project';\n\n// NOTE: We keep this context intentionally tiny.\n// IMPORTANT: This provider may be mounted once but consumed by multiple `build-components`\n// on the same screen. Keep the value minimal + stable to avoid unnecessary rerenders.\n// In React Native, `products` should be sourced from an IAP wrapper (e.g. `react-native-iap`)\n// and passed in via `params` from the host app.\nexport type Products = Product;\n\nexport type BuilderProviderParams = {\n products: Products[];\n benefits: PaywallBenefits;\n /**\n * Render platform for style extraction + meta filtering.\n * - 'web' (default): returns CSS-friendly styles for DOM rendering.\n * - 'native': returns React Native-friendly styles (no DOM-only props like overflowX/Y).\n */\n platform?: 'web' | 'native';\n onPaywallClose?: () => void;\n onPaywallSubscribe?: (product?: Product) => void | boolean | Promise<boolean>;\n /**\n * Optional runtime config + styling inputs.\n * These are intentionally passed down via BuilderProvider so `build-components`\n * never need to touch `useRenderStore`.\n */\n appConfig?: AppConfig;\n projectColors?: ProjectColors;\n fonts?: Fonts;\n appFont?: string | undefined;\n /**\n * Optional selection info (used by builder UI; ignored by host runtime).\n */\n previewMode?: boolean;\n selectedKey?: string;\n};\n\ntype BuilderProviderProps = {\n params: BuilderProviderParams;\n children: React.ReactNode;\n};\n\nconst BuilderContext = createContext<BuilderProviderParams | undefined>(\n undefined,\n);\n\nexport function BuilderProvider({ params, children }: BuilderProviderProps) {\n const value = useMemo<BuilderProviderParams>(\n () => ({\n products: Array.isArray(params?.products) ? params.products : [],\n benefits:\n params?.benefits && typeof params.benefits === 'object'\n ? (params.benefits as PaywallBenefits)\n : {},\n onPaywallClose:\n typeof params?.onPaywallClose === 'function'\n ? params.onPaywallClose\n : undefined,\n onPaywallSubscribe:\n typeof params?.onPaywallSubscribe === 'function'\n ? params.onPaywallSubscribe\n : undefined,\n appConfig:\n params?.appConfig && typeof params.appConfig === 'object'\n ? (params.appConfig as AppConfig)\n : undefined,\n projectColors:\n params?.projectColors && typeof params.projectColors === 'object'\n ? (params.projectColors as ProjectColors)\n : undefined,\n fonts: Array.isArray(params?.fonts) ? (params.fonts as Fonts) : undefined,\n appFont: params?.appFont,\n platform: params?.platform === 'native' ? 'native' : 'web',\n previewMode: !!params?.previewMode,\n selectedKey:\n typeof params?.selectedKey === 'string'\n ? params.selectedKey\n : undefined,\n }),\n [\n params?.benefits,\n params?.products,\n params?.platform,\n params?.onPaywallClose,\n params?.onPaywallSubscribe,\n params?.appConfig,\n params?.projectColors,\n params?.fonts,\n params?.appFont,\n params?.previewMode,\n params?.selectedKey,\n ],\n );\n\n return (\n <BuilderContext.Provider value={value}>{children}</BuilderContext.Provider>\n );\n}\n\nexport function useBuilderParams(): BuilderProviderParams {\n return (\n useContext(BuilderContext) ?? {\n products: [],\n benefits: {},\n platform: 'web',\n }\n );\n}\n","import React, { createContext, useMemo } from 'react';\n\nexport type LocalizationParams = Record<string, string>;\nexport type OtherParams = Record<string, string | boolean | number>;\n\nexport type ParamsContextValue = {\n localizationParams: LocalizationParams;\n otherParams: OtherParams;\n /**\n * `true` when the value comes from an actual `<ParamsProvider />` in the tree.\n * Used to detect nesting vs the default context value.\n */\n isProvided: boolean;\n};\n\nexport type ParamsProviderProps = {\n localizationParams?: LocalizationParams;\n otherParams?: OtherParams;\n children: React.ReactNode;\n};\n\nexport const ParamsContext = createContext<ParamsContextValue>({\n localizationParams: {},\n otherParams: {},\n isProvided: false,\n});\n\nexport function ParamsProvider({\n localizationParams,\n otherParams,\n children,\n}: ParamsProviderProps) {\n const value = useMemo<ParamsContextValue>(\n () => ({\n localizationParams: localizationParams ?? {},\n otherParams: otherParams ?? {},\n isProvided: true,\n }),\n [localizationParams, otherParams],\n );\n\n return (\n <ParamsContext.Provider value={value}>{children}</ParamsContext.Provider>\n );\n}\n","import React from 'react';\nimport { ParamsProvider, type LocalizationParams } from './ParamsProvider';\n\n/**\n * Backward-compatible wrapper.\n * Prefer `ParamsProvider` instead.\n */\nexport type LocalizationParamsProviderProps = {\n params: LocalizationParams;\n children: React.ReactNode;\n};\n\nexport function LocalizationParamsProvider({\n params,\n children,\n}: LocalizationParamsProviderProps) {\n return (\n <ParamsProvider localizationParams={params} otherParams={{}}>\n {children}\n </ParamsProvider>\n );\n}\n","import { useContext } from 'react';\nimport { ParamsContext } from '../components/ParamsProvider';\n\nexport function useParams() {\n return (\n useContext(ParamsContext) ?? {\n localizationParams: {},\n otherParams: {},\n isProvided: false,\n }\n );\n}\n","import { useParams } from './useParams';\n\nexport function useLocalizationParams() {\n return useParams().localizationParams ?? {};\n}\n","import { useCallback } from 'react';\nimport type { AppConfig } from '../types/PreviewConfig';\nimport { defaultAppConfig } from '../types/PreviewConfig';\nimport { useBuilderParams } from '../components/BuilderProvider';\nimport { useLocalizationParams } from './useLocalizationParams';\nimport { replaceLocalizationParams } from '../utils/replaceLocalizationParams';\n\nexport type LocalizeFn = (keyOrText: string) => string;\n\nexport function useLocalize(options?: { appConfig?: AppConfig }): LocalizeFn {\n const { appConfig: builderAppConfig } = useBuilderParams();\n const appConfig = options?.appConfig ?? builderAppConfig ?? defaultAppConfig;\n const { defaultLanguage, localication } = appConfig;\n const params = useLocalizationParams();\n\n return useCallback(\n (keyOrText: string) => {\n const raw =\n localication?.[defaultLanguage ?? 'en']?.[keyOrText] ?? keyOrText;\n return replaceLocalizationParams(raw, params);\n },\n [defaultLanguage, localication, params],\n );\n}\n","export function replaceLocalizationParams(\n text: string,\n params?: Record<string, string> | null,\n): string {\n if (!text) return text;\n if (!params) return text;\n\n return (\n Object.entries(params).reduce((acc, [key, val]) => {\n const needle = `@${key}`;\n // Replace all occurrences without regex escaping pitfalls.\n return acc.split(needle).join(String(val));\n }, text) || text\n );\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n var value = getSnapshot(),\n _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n}\nvar shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n","/**\n * @license React\n * use-sync-external-store-shim.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n }\n function useSyncExternalStore$2(subscribe, getSnapshot) {\n didWarnOld18Alpha ||\n void 0 === React.startTransition ||\n ((didWarnOld18Alpha = !0),\n console.error(\n \"You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release.\"\n ));\n var value = getSnapshot();\n if (!didWarnUncachedGetSnapshot) {\n var cachedValue = getSnapshot();\n objectIs(value, cachedValue) ||\n (console.error(\n \"The result of getSnapshot should be cached to avoid an infinite loop\"\n ),\n (didWarnUncachedGetSnapshot = !0));\n }\n cachedValue = useState({\n inst: { value: value, getSnapshot: getSnapshot }\n });\n var inst = cachedValue[0].inst,\n forceUpdate = cachedValue[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n }\n function checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n }\n function useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = require(\"react\"),\n objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue,\n didWarnOld18Alpha = !1,\n didWarnUncachedGetSnapshot = !1,\n shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\n exports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\"),\n shim = require(\"use-sync-external-store/shim\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n};\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = require(\"react\"),\n shim = require(\"use-sync-external-store/shim\"),\n objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\n exports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n ) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot))\n return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n };\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);\n\nexport { createStore };\n","import React from 'react';\nimport useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector.js';\nimport { createStore } from 'zustand/vanilla';\n\nconst { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;\nconst identity = (arg) => arg;\nfunction useStoreWithEqualityFn(api, selector = identity, equalityFn) {\n const slice = useSyncExternalStoreWithSelector(\n api.subscribe,\n api.getState,\n api.getInitialState,\n selector,\n equalityFn\n );\n React.useDebugValue(slice);\n return slice;\n}\nconst createWithEqualityFnImpl = (createState, defaultEqualityFn) => {\n const api = createStore(createState);\n const useBoundStoreWithEqualityFn = (selector, equalityFn = defaultEqualityFn) => useStoreWithEqualityFn(api, selector, equalityFn);\n Object.assign(useBoundStoreWithEqualityFn, api);\n return useBoundStoreWithEqualityFn;\n};\nconst createWithEqualityFn = ((createState, defaultEqualityFn) => createState ? createWithEqualityFnImpl(createState, defaultEqualityFn) : createWithEqualityFnImpl);\n\nexport { createWithEqualityFn, useStoreWithEqualityFn };\n","const isIterable = (obj) => Symbol.iterator in obj;\nconst hasIterableEntries = (value) => (\n // HACK: avoid checking entries type\n \"entries\" in value\n);\nconst compareEntries = (valueA, valueB) => {\n const mapA = valueA instanceof Map ? valueA : new Map(valueA.entries());\n const mapB = valueB instanceof Map ? valueB : new Map(valueB.entries());\n if (mapA.size !== mapB.size) {\n return false;\n }\n for (const [key, value] of mapA) {\n if (!mapB.has(key) || !Object.is(value, mapB.get(key))) {\n return false;\n }\n }\n return true;\n};\nconst compareIterables = (valueA, valueB) => {\n const iteratorA = valueA[Symbol.iterator]();\n const iteratorB = valueB[Symbol.iterator]();\n let nextA = iteratorA.next();\n let nextB = iteratorB.next();\n while (!nextA.done && !nextB.done) {\n if (!Object.is(nextA.value, nextB.value)) {\n return false;\n }\n nextA = iteratorA.next();\n nextB = iteratorB.next();\n }\n return !!nextA.done && !!nextB.done;\n};\nfunction shallow(valueA, valueB) {\n if (Object.is(valueA, valueB)) {\n return true;\n }\n if (typeof valueA !== \"object\" || valueA === null || typeof valueB !== \"object\" || valueB === null) {\n return false;\n }\n if (Object.getPrototypeOf(valueA) !== Object.getPrototypeOf(valueB)) {\n return false;\n }\n if (isIterable(valueA) && isIterable(valueB)) {\n if (hasIterableEntries(valueA) && hasIterableEntries(valueB)) {\n return compareEntries(valueA, valueB);\n }\n return compareIterables(valueA, valueB);\n }\n return compareEntries(\n { entries: () => Object.entries(valueA) },\n { entries: () => Object.entries(valueB) }\n );\n}\n\nexport { shallow };\n","import { Device } from '../types/Device';\nimport devices from '../assets/devices.json';\n\nexport function getDevices(): Device[] {\n const deviceList = (devices as Device[]).slice();\n deviceList.sort((a, b) => {\n const ai = a.importance ?? 999;\n const bi = b.importance ?? 999;\n return ai - bi;\n });\n return deviceList;\n}\n\n//TODO: object instead of function\nexport function getDefaultDevice(): Device {\n return getDevices()[0];\n}\n","const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...args) => api.dispatch(...args), ...initial };\n};\nconst redux = reduxImpl;\n\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name) => {\n const api = trackedConnections.get(name);\n if (!api) return {};\n return Object.fromEntries(\n Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])\n );\n};\nconst extractConnectionInformation = (store, extensionConnector, options) => {\n if (store === void 0) {\n return {\n type: \"untracked\",\n connection: extensionConnector.connect(options)\n };\n }\n const existingConnection = trackedConnections.get(options.name);\n if (existingConnection) {\n return { type: \"tracked\", store, ...existingConnection };\n }\n const newConnection = {\n connection: extensionConnector.connect(options),\n stores: {}\n };\n trackedConnections.set(options.name, newConnection);\n return { type: \"tracked\", store, ...newConnection };\n};\nconst removeStoreFromTrackedConnections = (name, store) => {\n if (store === void 0) return;\n const connectionInfo = trackedConnections.get(name);\n if (!connectionInfo) return;\n delete connectionInfo.stores[store];\n if (Object.keys(connectionInfo.stores).length === 0) {\n trackedConnections.delete(name);\n }\n};\nconst findCallerName = (stack) => {\n var _a, _b;\n if (!stack) return void 0;\n const traceLines = stack.split(\"\\n\");\n const apiSetStateLineIndex = traceLines.findIndex(\n (traceLine) => traceLine.includes(\"api.setState\")\n );\n if (apiSetStateLineIndex < 0) return void 0;\n const callerLine = ((_a = traceLines[apiSetStateLineIndex + 1]) == null ? void 0 : _a.trim()) || \"\";\n return (_b = /.+ (.+) .+/.exec(callerLine)) == null ? void 0 : _b[1];\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (e) {\n }\n if (!extensionConnector) {\n return fn(set, get, api);\n }\n const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n let isRecording = true;\n api.setState = ((state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording) return r;\n const action = nameOrAction === void 0 ? {\n type: anonymousActionType || findCallerName(new Error().stack) || \"anonymous\"\n } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction;\n if (store === void 0) {\n connection == null ? void 0 : connection.send(action, get());\n return r;\n }\n connection == null ? void 0 : connection.send(\n {\n ...action,\n type: `${store}/${action.type}`\n },\n {\n ...getTrackedConnectionState(options.name),\n [store]: api.getState()\n }\n );\n return r;\n });\n api.devtools = {\n cleanup: () => {\n if (connection && typeof connection.unsubscribe === \"function\") {\n connection.unsubscribe();\n }\n removeStoreFromTrackedConnections(options.name, store);\n }\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n if (connectionInformation.type === \"untracked\") {\n connection == null ? void 0 : connection.init(initialState);\n } else {\n connectionInformation.stores[connectionInformation.store] = api;\n connection == null ? void 0 : connection.init(\n Object.fromEntries(\n Object.entries(connectionInformation.stores).map(([key, store2]) => [\n key,\n key === connectionInformation.store ? initialState : store2.getState()\n ])\n )\n );\n }\n if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...args) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && args[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...args);\n };\n }\n connection.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n if (store === void 0) {\n setStateFromDevtools(action.state);\n return;\n }\n if (Object.keys(action.state).length !== 1) {\n console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format.\n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n }\n const stateFromDevtools = action.state[store];\n if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n setStateFromDevtools(stateFromDevtools);\n }\n return;\n }\n if (!api.dispatchFromDevtools) return;\n if (typeof api.dispatch !== \"function\") return;\n api.dispatch(action);\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n if (store === void 0) {\n return connection == null ? void 0 : connection.init(api.getState());\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"COMMIT\":\n if (store === void 0) {\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n setStateFromDevtools(state[store]);\n connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n setStateFromDevtools(state[store]);\n }\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState) return;\n if (store === void 0) {\n setStateFromDevtools(lastComputedState);\n } else {\n setStateFromDevtools(lastComputedState[store]);\n }\n connection == null ? void 0 : connection.send(\n null,\n // FIXME no-any\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, fn) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0) fn(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = ((selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n });\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nfunction combine(initialState, create) {\n return (...args) => Object.assign({}, initialState, create(...args));\n}\n\nfunction createJSONStorage(getStorage, options) {\n let storage;\n try {\n storage = getStorage();\n } catch (e) {\n return;\n }\n const persistStorage = {\n getItem: (name) => {\n var _a;\n const parse = (str2) => {\n if (str2 === null) {\n return null;\n }\n return JSON.parse(str2, options == null ? void 0 : options.reviver);\n };\n const str = (_a = storage.getItem(name)) != null ? _a : null;\n if (str instanceof Promise) {\n return str.then(parse);\n }\n return parse(str);\n },\n setItem: (name, newValue) => storage.setItem(name, JSON.stringify(newValue, options == null ? void 0 : options.replacer)),\n removeItem: (name) => storage.removeItem(name)\n };\n return persistStorage;\n}\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst persistImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n storage: createJSONStorage(() => localStorage),\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage = options.storage;\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const setItem = () => {\n const state = options.partialize({ ...get() });\n return storage.setItem(options.name, {\n state,\n version: options.version\n });\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n return setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n return setItem();\n },\n get,\n api\n );\n api.getInitialState = () => configResult;\n let stateFromStorage;\n const hydrate = () => {\n var _a, _b;\n if (!storage) return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => {\n var _a2;\n return cb((_a2 = get()) != null ? _a2 : configResult);\n });\n const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n const migration = options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n if (migration instanceof Promise) {\n return migration.then((result) => [true, result]);\n }\n return [true, migration];\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return [false, deserializedStorageValue.state];\n }\n }\n return [false, void 0];\n }).then((migrationResult) => {\n var _a2;\n const [migrated, migratedState] = migrationResult;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n if (migrated) {\n return setItem();\n }\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n stateFromStorage = get();\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.storage) {\n storage = newOptions.storage;\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n if (!options.skipHydration) {\n hydrate();\n }\n return stateFromStorage || configResult;\n};\nconst persist = persistImpl;\n\nexport { combine, createJSONStorage, devtools, persist, redux, subscribeWithSelector };\n","import { createWithEqualityFn } from 'zustand/traditional';\nimport { shallow } from 'zustand/shallow';\nimport type { Device } from './types/Device';\nimport {\n defaultAppConfig,\n type AppConfig,\n type Localication,\n} from './types/PreviewConfig';\nimport { getDefaultDevice } from './utils/getDevices';\nimport { ScreenStyle } from './RenderPage';\nimport { createJSONStorage, persist } from 'zustand/middleware';\nimport { Node } from './types/Node';\nimport type { LogEntry, LogLevel, ProjectColors } from './types/Project';\nimport type { Product } from './paywall/types/paywall-types';\nimport type {\n PaywallBenefits,\n PaywallBenefitValue,\n} from './paywall/types/benefits';\nimport type { Fonts } from './types/Fonts';\n//TODO: project base store and general store should be separated. We can we use context\ntype RenderStore = {\n projectName: string;\n setProjectName: (name: string) => void;\n copiedNode: Node | null;\n setCopiedNode: (node: Node | null) => void;\n current: Node | null;\n setCurrent: (node: Node | null) => void;\n forceRender: number;\n incForceRender: () => void;\n device: Device;\n setDevice: (device: Device) => void;\n appConfig: AppConfig;\n setAppConfig: (appConfig: AppConfig) => void;\n projectColors?: ProjectColors;\n setProjectColors: (projectColors?: ProjectColors) => void;\n previewMode: boolean;\n setPreviewMode: (previewMode: boolean) => void;\n // Mockable: products (persisted)\n products: Product[];\n addProduct: () => void;\n removeProduct: (index: number) => void;\n updateProduct: (index: number, patch: Partial<Product>) => void;\n setProducts: (products: Product[]) => void;\n clearProducts: () => void;\n // Mockable: benefits (persisted)\n benefits: PaywallBenefits;\n setBenefits: (benefits: PaywallBenefits) => void;\n clearBenefits: () => void;\n upsertBenefit: (key: string, value: PaywallBenefitValue) => void;\n removeBenefit: (key: string) => void;\n renameBenefit: (fromKey: string, toKey: string) => void;\n // Logging\n logs: LogEntry[];\n logLevel: LogLevel;\n setLogLevel: (level: LogLevel) => void;\n addLog: (\n entry: Omit<LogEntry, 'id' | 'timestamp'> & {\n id?: string;\n timestamp?: number;\n },\n ) => void;\n clearLogs: () => void;\n\n // Fonts (provided by host app)\n fonts: Fonts;\n setFonts: (fonts: Fonts) => void;\n // NOTE: appFont is intentionally non-optional as a prop in `ProjectPage`,\n // but the value itself can be undefined when the host can't determine it.\n appFont: string | undefined;\n setAppFont: (appFont: string | undefined) => void;\n // Validation/runtime errors surfaced to the host UI\n errors: string[];\n setErrors: (errors: string[]) => void;\n addError: (error: string) => void;\n clearErrors: () => void;\n // Cache loaded font families to avoid repeated loads\n loadedFonts: string[];\n markFontLoaded: (fontFamily: string) => void;\n};\n\nexport const useRenderStore = createWithEqualityFn<RenderStore>()(\n persist(\n (set) => ({\n projectName: '',\n setProjectName: (name) => set({ projectName: name }),\n copiedNode: null,\n setCopiedNode: (node) => set({ copiedNode: node }),\n current: null,\n setCurrent: (node) => set({ current: node }),\n forceRender: 0,\n incForceRender: () =>\n set((state) => ({ forceRender: state.forceRender + 1 })),\n device: getDefaultDevice(),\n setDevice: (device) => set({ device }),\n appConfig: defaultAppConfig,\n setAppConfig: (appConfig) => set({ appConfig }),\n projectColors: undefined,\n setProjectColors: (projectColors) => set({ projectColors }),\n previewMode: false,\n setPreviewMode: (previewMode) => set({ previewMode }),\n products: [],\n addProduct: () =>\n set((state) => ({\n products: [\n ...(Array.isArray(state.products) ? state.products : []),\n {\n productId: '',\n title: '',\n description: '',\n localizedPrice: '',\n price: '',\n currency: '',\n },\n ],\n })),\n removeProduct: (index) =>\n set((state) => ({\n products: state.products.filter((_, idx) => idx !== index),\n })),\n updateProduct: (index, patch) =>\n set((state) => {\n const prev = state.products;\n if (!Array.isArray(prev)) return state;\n if (index < 0 || index >= prev.length) return state;\n const next = prev.map((p, idx) =>\n idx === index ? { ...p, ...(patch ?? {}) } : p,\n );\n return { products: next };\n }),\n setProducts: (products) =>\n set({\n products: Array.isArray(products) ? products : [],\n }),\n clearProducts: () => set({ products: [] }),\n\n benefits: {},\n setBenefits: (benefits) =>\n set({\n benefits:\n benefits && typeof benefits === 'object' && !Array.isArray(benefits)\n ? (benefits as PaywallBenefits)\n : {},\n }),\n clearBenefits: () => set({ benefits: {} }),\n upsertBenefit: (key, value) =>\n set((state) => {\n const normalizedKey = typeof key === 'string' ? key.trim() : '';\n if (!normalizedKey) return state;\n if (\n typeof value !== 'string' &&\n typeof value !== 'number' &&\n typeof value !== 'boolean'\n ) {\n return state;\n }\n const prev = state.benefits;\n const next: PaywallBenefits = { ...(prev ?? {}) };\n next[normalizedKey] = value;\n return { benefits: next };\n }),\n removeBenefit: (key) =>\n set((state) => {\n const normalizedKey = typeof key === 'string' ? key.trim() : '';\n if (!normalizedKey) return state;\n const prev = state.benefits;\n if (!prev || typeof prev !== 'object') return state;\n if (!(normalizedKey in prev)) return state;\n const next: PaywallBenefits = { ...(prev ?? {}) };\n delete next[normalizedKey];\n return { benefits: next };\n }),\n renameBenefit: (fromKey, toKey) =>\n set((state) => {\n const from = typeof fromKey === 'string' ? fromKey.trim() : '';\n const to = typeof toKey === 'string' ? toKey.trim() : '';\n if (!from || !to) return state;\n if (from === to) return state;\n const prev = state.benefits;\n if (!prev || typeof prev !== 'object') return state;\n if (!(from in prev)) return state;\n const next: PaywallBenefits = { ...(prev ?? {}) };\n const value = next[from] as PaywallBenefitValue;\n delete next[from];\n next[to] = value;\n return { benefits: next };\n }),\n // Logging defaults\n logs: [],\n logLevel: 'INFO',\n setLogLevel: (level) => set({ logLevel: level }),\n addLog: (entry) =>\n set((state) => {\n const now = Date.now();\n const id =\n entry.id ?? `${now}-${Math.random().toString(36).slice(2, 8)}`;\n const timestamp = entry.timestamp ?? now;\n const newEntry: LogEntry = {\n id,\n timestamp,\n level: entry.level,\n source: entry.source,\n message: entry.message,\n payload: entry.payload,\n };\n return { logs: [...state.logs, newEntry] };\n }),\n clearLogs: () => set({ logs: [] }),\n\n fonts: [],\n setFonts: (fonts) => set({ fonts: Array.isArray(fonts) ? fonts : [] }),\n appFont: undefined,\n setAppFont: (appFont) => set({ appFont }),\n errors: [],\n setErrors: (errors) =>\n set({ errors: Array.isArray(errors) ? errors : [] }),\n addError: (error) =>\n set((state) => ({\n errors: [\n ...(Array.isArray(state.errors) ? state.errors : []),\n String(error),\n ],\n })),\n clearErrors: () => set({ errors: [] }),\n loadedFonts: [],\n markFontLoaded: (fontFamily) =>\n set((state) => {\n const family =\n typeof fontFamily === 'string' ? fontFamily.trim() : '';\n if (!family) return state;\n const prev = Array.isArray(state.loadedFonts)\n ? state.loadedFonts\n : [];\n if (prev.includes(family)) return state;\n return { loadedFonts: [...prev, family] };\n }),\n }),\n {\n name: 'render-store',\n partialize: (state) => ({\n // Explicitly DO NOT persist projectName (it comes from ProjectPage props)\n copiedNode: state.copiedNode ?? null,\n logLevel: state.logLevel,\n products: state.products,\n benefits: state.benefits,\n }),\n storage: createJSONStorage(() => localStorage),\n },\n ),\n shallow,\n);\n","import { useRenderStore } from '../store';\nimport { defaultAppConfig } from '../types/PreviewConfig';\nimport { getDefaultDevice } from '../utils/getDevices';\n\nconst fallbackDevice = getDefaultDevice();\nconst fallbackBaseSize = defaultAppConfig.baseSize;\n\nfunction ensureNumber(value: number | undefined, fallback: number) {\n return typeof value === 'number' && Number.isFinite(value) ? value : fallback;\n}\n\nfunction getBaseDimensions() {\n const currentState = useRenderStore.getState();\n const device = currentState.device ?? fallbackDevice;\n const baseSize = currentState.appConfig?.baseSize ?? fallbackBaseSize;\n\n const deviceWidth = ensureNumber(device?.width, fallbackDevice.width);\n const deviceHeight = ensureNumber(device?.height, fallbackDevice.height);\n const baseWidth = ensureNumber(baseSize?.width, fallbackBaseSize.width);\n const baseHeight = ensureNumber(baseSize?.height, fallbackBaseSize.height);\n\n const [shortDimension, longDimension] =\n deviceWidth < deviceHeight\n ? [deviceWidth, deviceHeight]\n : [deviceHeight, deviceWidth];\n\n return {\n baseSize: { width: baseWidth, height: baseHeight },\n shortDimension,\n longDimension,\n };\n}\nexport function scale(size: number) {\n const { baseSize, shortDimension } = getBaseDimensions();\n return (shortDimension / baseSize.width) * size;\n}\nexport function verticalScale(size: number) {\n const { baseSize, longDimension } = getBaseDimensions();\n return (longDimension / baseSize.height) * size;\n}\n\nexport const s = scale;\nexport const vs = verticalScale;\nexport const fs = verticalScale;\n\nexport function parseSize(value?: string | number) {\n if (value === undefined) return undefined;\n if (typeof value === 'number') {\n return value;\n }\n\n const raw = String(value).trim();\n const lower = raw.toLowerCase();\n\n // Handle explicit scalers via suffixes\n if (lower.endsWith('@s')) {\n const n = parseFloat(lower.slice(0, -2));\n return Number.isFinite(n) ? s(n) : raw;\n }\n if (lower.endsWith('@vs')) {\n const n = parseFloat(lower.slice(0, -3));\n return Number.isFinite(n) ? vs(n) : raw;\n }\n if (lower.endsWith('@f') || lower.endsWith('@fs')) {\n const cut = lower.endsWith('@f') ? -2 : -3;\n const n = parseFloat(lower.slice(0, cut));\n return Number.isFinite(n) ? fs(n) : raw;\n }\n\n // Preserve percentage values as-is\n if (lower.endsWith('%')) {\n const numericPortion = parseFloat(lower.slice(0, -1));\n return Number.isFinite(numericPortion) ? `${numericPortion}%` : raw;\n }\n\n // Handle px explicitly (treat as absolute, not scaled)\n if (lower.endsWith('px')) {\n const n = parseFloat(lower.replace('px', ''));\n return Number.isFinite(n) ? n : raw;\n }\n\n // Plain numeric strings fall back to provided scaler\n const numeric = parseFloat(lower);\n if (Number.isFinite(numeric)) {\n return numeric;\n }\n\n // Unknown format, return as-is\n return raw;\n}\n","import type { ProjectColors } from '../types/Project';\n\nconst STATIC_PREFIX = 'STATIC_COLORS.';\nconst THEME_PREFIX = 'THEME_COLORS.';\n\nexport type ParseColorOptions = {\n projectColors?: ProjectColors;\n theme?: string;\n};\n\nexport function parseColor(value?: string, options: ParseColorOptions = {}) {\n if (typeof value !== 'string') return value;\n const trimmed = value.trim();\n if (!trimmed) return undefined;\n\n const { projectColors, theme } = options;\n if (!projectColors) return trimmed;\n\n if (trimmed.startsWith(STATIC_PREFIX)) {\n const token = trimmed.slice(STATIC_PREFIX.length);\n const resolved = projectColors.STATIC_COLORS?.[token];\n return typeof resolved === 'string' && resolved.trim()\n ? resolved.trim()\n : trimmed;\n }\n\n if (trimmed.startsWith(THEME_PREFIX)) {\n const token = trimmed.slice(THEME_PREFIX.length);\n if (!token) return trimmed;\n\n const resolvedTheme = theme ?? 'light';\n const themeTokens = projectColors.THEME_COLORS?.[resolvedTheme];\n const resolved = themeTokens?.[token];\n if (typeof resolved === 'string' && resolved.trim()) {\n return resolved.trim();\n }\n\n return trimmed;\n }\n\n return trimmed;\n}\n","import { ViewPropsGenerated } from '../../build-components/View/ViewProps.generated';\nimport type { NodeData } from '../../types/Node';\nimport type { ProjectColors } from '../../types/Project';\nimport { parseSize } from '../../size-matters';\nimport { parseColor } from '../parseColor';\n\nexport type ExtractViewStyleNativeOptions = {\n projectColors?: ProjectColors;\n theme?: string;\n};\n\n/**\n * Extracts a React Native-friendly style object from node attributes.\n * Unlike the web/CSS extractor, this avoids DOM-only props like overflowX/overflowY and maxWidth/maxHeight \"100%\" fallbacks.\n */\nexport function extractViewStyleNative<\n T extends ViewPropsGenerated['attributes'],\n>(node: NodeData<T>, options: ExtractViewStyleNativeOptions = {}) {\n const attributes = node.attributes;\n const styleBag = (attributes as any)?.style as\n | Record<string, unknown>\n | undefined;\n const get = (key: string): unknown => {\n const direct = (attributes as any)?.[key];\n if (direct !== undefined && direct !== null) return direct;\n return styleBag?.[key];\n };\n\n // RN default is already column, but we keep it explicit for predictable output.\n const style: Record<string, unknown> = {\n flexDirection: 'column',\n };\n if (!attributes) return style;\n\n const isEmptySizeValue = (value: unknown) =>\n value === undefined ||\n value === null ||\n (typeof value === 'string' && value.trim() === '');\n\n // NOTE: \"scrollable\" is treated as non-style for RN; host apps should use ScrollView/FlatList.\n // We intentionally do not map it to overflowX/Y.\n\n const flexDirection = get('flexDirection');\n if (flexDirection) style.flexDirection = flexDirection as any;\n const alignItems = get('alignItems');\n if (alignItems) style.alignItems = alignItems as any;\n const justifyContent = get('justifyContent');\n if (justifyContent) style.justifyContent = justifyContent as any;\n\n const setParsedSize = (property: string, rawValue: unknown) => {\n if (isEmptySizeValue(rawValue)) return;\n const parsed = parseSize(rawValue as any);\n // RN generally expects numbers (dp). We allow percentages for width/height-like props.\n if (typeof parsed === 'number' || typeof parsed === 'string') {\n (style as any)[property] = parsed;\n }\n };\n\n // RN supports these \"shorthand\" props directly.\n setParsedSize('padding', get('padding'));\n setParsedSize('paddingHorizontal', get('paddingHorizontal'));\n setParsedSize('paddingVertical', get('paddingVertical'));\n setParsedSize('paddingTop', get('paddingTop'));\n setParsedSize('paddingBottom', get('paddingBottom'));\n setParsedSize('paddingLeft', get('paddingLeft'));\n setParsedSize('paddingRight', get('paddingRight'));\n\n setParsedSize('margin', get('margin'));\n setParsedSize(\n 'marginHorizontal',\n (attributes as any)?.marginHorizontal ?? styleBag?.marginHorizontal,\n );\n setParsedSize('marginVertical', get('marginVertical'));\n setParsedSize('marginTop', get('marginTop'));\n setParsedSize('marginBottom', get('marginBottom'));\n setParsedSize('marginLeft', get('marginLeft'));\n setParsedSize('marginRight', get('marginRight'));\n\n const backgroundColor = get('backgroundColor') as any;\n if (backgroundColor) {\n (style as any).backgroundColor =\n parseColor(backgroundColor, {\n projectColors: options.projectColors,\n theme: options.theme,\n }) ?? backgroundColor;\n }\n\n setParsedSize('borderRadius', get('borderRadius'));\n setParsedSize('width', get('width'));\n setParsedSize('minWidth', get('minWidth'));\n setParsedSize('maxWidth', get('maxWidth'));\n setParsedSize('height', get('height'));\n setParsedSize('minHeight', get('minHeight'));\n setParsedSize('maxHeight', get('maxHeight'));\n\n const flex = get('flex') as any;\n if (flex !== undefined) (style as any).flex = flex;\n\n const position = get('position') as any;\n if (position) (style as any).position = position;\n\n setParsedSize('top', get('top'));\n setParsedSize('bottom', get('bottom'));\n setParsedSize('left', get('left'));\n setParsedSize('right', get('right'));\n\n const zIndex = get('zIndex') as any;\n if (zIndex !== undefined) (style as any).zIndex = zIndex;\n\n return style;\n}\n","export const FONT_WEIGHT_OPTIONS = [\n 'normal',\n 'bold',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n] as const;\n\nexport type FontWeightOption = (typeof FONT_WEIGHT_OPTIONS)[number];\n\nexport function normalizeFontWeight(\n value: unknown,\n): FontWeightOption | undefined {\n if (typeof value === 'number' && Number.isFinite(value)) {\n const asString = String(value) as FontWeightOption;\n return FONT_WEIGHT_OPTIONS.includes(asString) ? asString : undefined;\n }\n if (typeof value === 'string') {\n const trimmed = value.trim() as FontWeightOption;\n return FONT_WEIGHT_OPTIONS.includes(trimmed) ? trimmed : undefined;\n }\n return undefined;\n}\n","import type { Fonts, FontDefinition } from '../types/Fonts';\nimport { fontsDebug } from './fontsDebug';\n\nfunction normalizeFamilyName(value: unknown): string {\n return typeof value === 'string' ? value.trim() : '';\n}\n\nexport function findFontDefinition(\n fonts: Fonts,\n familyName: string,\n): FontDefinition | undefined {\n const name = normalizeFamilyName(familyName);\n if (!name) return undefined;\n if (!Array.isArray(fonts)) return undefined;\n return fonts.find((f) => f?.name === name);\n}\n\nfunction parseWeightKey(value: unknown): number | null {\n if (typeof value !== 'string') return null;\n const trimmed = value.trim();\n if (!trimmed) return null;\n const n = Number(trimmed);\n return Number.isFinite(n) ? n : null;\n}\n\n/**\n * Given a family sources map (weightKey -> url) and a requested weight,\n * returns the closest available weight key (or a sensible fallback).\n */\nexport function resolveClosestFontWeightKey(\n family: Record<string, string>,\n requestedWeight?: string,\n): string | undefined {\n const entries = Object.entries(family ?? {}).filter(\n ([k, v]) =>\n typeof k === 'string' &&\n k.trim().length > 0 &&\n typeof v === 'string' &&\n v.trim().length > 0,\n );\n if (entries.length === 0) return undefined;\n\n const reqKey = normalizeFamilyName(requestedWeight);\n if (reqKey && entries.some(([k]) => k === reqKey)) return reqKey;\n\n // Prefer 400 if nothing exact matches.\n if (entries.some(([k]) => k === '400')) return '400';\n\n const reqNum = parseWeightKey(reqKey);\n const numeric = entries\n .map(([k]) => ({ k, n: parseWeightKey(k) }))\n .filter((x): x is { k: string; n: number } => typeof x.n === 'number');\n if (numeric.length === 0) return entries[0][0];\n\n if (typeof reqNum !== 'number') {\n // No requested weight: pick the smallest numeric weight as a stable default.\n numeric.sort((a, b) => a.n - b.n);\n return numeric[0].k;\n }\n\n // Pick closest numeric weight.\n let best = numeric[0];\n let bestDiff = Math.abs(best.n - reqNum);\n for (const cand of numeric) {\n const diff = Math.abs(cand.n - reqNum);\n if (diff < bestDiff) {\n best = cand;\n bestDiff = diff;\n }\n }\n return best.k;\n}\n\nexport function resolveFontSourceForWeight(\n family: Record<string, string>,\n requestedWeight?: string,\n): { weight: string; url: string } | undefined {\n const weight = resolveClosestFontWeightKey(family, requestedWeight);\n if (!weight) return undefined;\n const url = family?.[weight];\n if (typeof url !== 'string' || !url.trim()) return undefined;\n return { weight, url: url.trim() };\n}\n\ntype LoadFontFamilyOptions = {\n preferWeight?: string;\n /**\n * If true (default), fetch the font file via `fetch()` first so:\n * - the request is visible in DevTools Network (Fetch/XHR)\n * - we can log response status and surface CORS/404 clearly\n *\n * If false, falls back to `new FontFace(name, 'url(...)')`.\n */\n forceFetch?: boolean;\n};\n\n/**\n * Web-only font loader.\n * - Uses the `FontFace` API when available.\n * - Loads a single preferred weight (default: 400) to keep it \"lazy\".\n * - Caller is responsible for caching (e.g. via `loadedFonts` in the store).\n */\nexport async function loadFontFamily(\n fonts: Fonts,\n familyName: string,\n options: LoadFontFamilyOptions = {},\n): Promise<void> {\n const name = normalizeFamilyName(familyName);\n if (!name) throw new Error('fontFamily is empty');\n\n fontsDebug.info('loadFontFamily: start', {\n familyName: name,\n preferWeight: options.preferWeight,\n });\n\n const def = findFontDefinition(fonts, name);\n if (!def) throw new Error(`fontFamily \"${name}\" not found in fonts`);\n\n const family = def.family;\n if (!family || typeof family !== 'object') {\n throw new Error(`fontFamily \"${name}\" has no \"family\" sources`);\n }\n\n // Not a browser environment (SSR / RN): do nothing.\n if (typeof document === 'undefined') return;\n\n const fontsApi = (document as any).fonts as FontFaceSet | undefined;\n if (!fontsApi || typeof (globalThis as any).FontFace !== 'function') {\n throw new Error('Font loading is not supported in this environment');\n }\n const safeFontsApi = fontsApi as FontFaceSet;\n\n function hasLoadedFace(familyName: string, weight: string): boolean {\n try {\n const set = safeFontsApi as unknown as Iterable<FontFace>;\n for (const face of set) {\n const f = face as unknown as {\n family?: string;\n weight?: string;\n status?: string;\n };\n const fam =\n typeof f.family === 'string' ? f.family.replace(/['\"]/g, '') : '';\n const w = typeof f.weight === 'string' ? f.weight.trim() : '';\n if (fam === familyName && w === weight && f.status === 'loaded') {\n return true;\n }\n }\n } catch {\n // ignore\n }\n return false;\n }\n\n const resolved = resolveFontSourceForWeight(\n family as Record<string, string>,\n normalizeFamilyName(options.preferWeight),\n );\n if (!resolved)\n throw new Error(`fontFamily \"${name}\" has no usable source URLs`);\n const { weight: preferWeight, url } = resolved;\n\n fontsDebug.info('loadFontFamily: resolved source', {\n familyName: name,\n weight: preferWeight,\n url,\n });\n\n // If the browser already has it (e.g. via global CSS), skip work.\n try {\n // Use a weight-aware check so we can lazily load additional weights on demand.\n const checkQuery = `${preferWeight} 16px \"${name}\"`;\n const already = fontsApi.check(checkQuery);\n fontsDebug.info('loadFontFamily: document.fonts.check', {\n familyName: name,\n query: checkQuery,\n result: already,\n });\n const loadedFace = hasLoadedFace(name, preferWeight);\n fontsDebug.info('loadFontFamily: hasLoadedFace', {\n familyName: name,\n weight: preferWeight,\n result: loadedFace,\n });\n // Only skip when the face is actually loaded.\n if (loadedFace) {\n fontsDebug.info(\n 'loadFontFamily: already available (document.fonts.check)',\n {\n familyName: name,\n weight: preferWeight,\n },\n );\n return;\n }\n } catch {\n // ignore check failures; we'll try to load.\n }\n\n const forceFetch = options.forceFetch !== false;\n let source: string | ArrayBuffer = `url(${url})`;\n const urlSource = `url(${url})`;\n\n if (forceFetch && typeof fetch === 'function') {\n try {\n fontsDebug.info('loadFontFamily: fetching font file', {\n url,\n familyName: name,\n weight: preferWeight,\n });\n const res = await fetch(url, {\n mode: 'cors',\n cache: 'no-store',\n credentials: 'omit',\n });\n fontsDebug.info('loadFontFamily: font fetch response', {\n url,\n ok: res.ok,\n status: res.status,\n statusText: res.statusText,\n });\n if (!res.ok) {\n throw new Error(`Font fetch failed: ${res.status} ${res.statusText}`);\n }\n source = await res.arrayBuffer();\n fontsDebug.info('loadFontFamily: font file downloaded', {\n url,\n bytes: (source as ArrayBuffer).byteLength,\n familyName: name,\n weight: preferWeight,\n });\n } catch (e) {\n // Fallback to native font loading. This can still succeed in some environments where fetch is blocked.\n fontsDebug.compactError(\n 'loadFontFamily: fetch failed; falling back to url()',\n e,\n {\n url,\n familyName: name,\n weight: preferWeight,\n },\n );\n source = urlSource;\n }\n } else {\n fontsDebug.info('loadFontFamily: using url() source (no fetch)', {\n url,\n familyName: name,\n weight: preferWeight,\n });\n }\n\n async function loadAndAdd(src: string | ArrayBuffer, label: string) {\n const face = new (globalThis as any).FontFace(name, src as any, {\n weight: preferWeight,\n display: 'swap',\n }) as FontFace;\n fontsDebug.info('loadFontFamily: FontFace.load() begin', {\n familyName: name,\n weight: preferWeight,\n source: label,\n });\n const loaded = await face.load();\n safeFontsApi.add(loaded);\n fontsDebug.info('loadFontFamily: loaded + added to document.fonts', {\n familyName: name,\n weight: preferWeight,\n source: label,\n });\n }\n\n try {\n // Preferred path (buffer if we fetched, else url()).\n await loadAndAdd(\n source,\n typeof source === 'string' ? 'url()' : 'arrayBuffer',\n );\n } catch (e) {\n // Some browsers can be picky about ArrayBuffer sources. Retry using url() as a last resort.\n fontsDebug.compactError('loadFontFamily: FontFace.load failed', e, {\n familyName: name,\n weight: preferWeight,\n tried: typeof source === 'string' ? 'url()' : 'arrayBuffer',\n });\n if (typeof source !== 'string') {\n fontsDebug.info('loadFontFamily: retrying with url() source', {\n familyName: name,\n weight: preferWeight,\n url,\n });\n await loadAndAdd(urlSource, 'url() retry');\n } else {\n throw e;\n }\n }\n\n try {\n const afterQuery = `${preferWeight} 16px \"${name}\"`;\n const after = safeFontsApi.check(afterQuery);\n fontsDebug.info('loadFontFamily: document.fonts.check after add', {\n familyName: name,\n weight: preferWeight,\n result: after,\n });\n // Force the browser to \"activate\" the face for this query (and reveal errors if any).\n if (typeof (safeFontsApi as any).load === 'function') {\n fontsDebug.info('loadFontFamily: document.fonts.load begin', {\n query: afterQuery,\n });\n await (safeFontsApi as any).load(afterQuery);\n fontsDebug.info('loadFontFamily: document.fonts.load done', {\n query: afterQuery,\n });\n }\n } catch {\n // ignore\n }\n}\n","import type { NodeData } from '../../types/Node';\nimport type { TextPropsGenerated } from '../../build-components/Text/TextProps.generated';\nimport type { AppConfig } from '../../types/PreviewConfig';\nimport { defaultAppConfig } from '../../types/PreviewConfig';\nimport type { ProjectColors } from '../../types/Project';\nimport type { Fonts } from '../../types/Fonts';\nimport { fs, parseSize } from '../../size-matters';\nimport { parseColor } from '../parseColor';\nimport { extractViewStyleNative } from '../extractViewStyle';\nimport { normalizeFontWeight } from '../fontWeight';\nimport {\n findFontDefinition,\n resolveClosestFontWeightKey,\n} from '../loadFontFamily';\n\nexport type ExtractTextStyleNativeOptions = {\n appConfig?: AppConfig;\n projectColors?: ProjectColors;\n fonts?: Fonts;\n};\n\nfunction weightToNumericKey(weight: unknown): string | undefined {\n const normalized = normalizeFontWeight(weight);\n if (!normalized) return undefined;\n if (normalized === 'normal') return '400';\n if (normalized === 'bold') return '700';\n return normalized;\n}\n\n/**\n * React Native-friendly text style extraction.\n * - Avoids web-only quoting of fontFamily.\n * - Returns numeric fontSize (dp) when possible.\n * - Merges with extractViewStyleNative so padding/margin/etc still work in RN.\n */\nexport function extractTextStyleNative<\n T extends TextPropsGenerated['attributes'],\n>(node: NodeData<T>, options: ExtractTextStyleNativeOptions = {}) {\n const attributes = node.attributes;\n const styleBag = (attributes as any)?.style as\n | Record<string, unknown>\n | undefined;\n const get = (key: string): unknown => {\n const direct = (attributes as any)?.[key];\n if (direct !== undefined && direct !== null) return direct;\n return styleBag?.[key];\n };\n\n const resolvedAppConfig = options.appConfig ?? defaultAppConfig;\n const { screenStyle, theme } = resolvedAppConfig;\n const fallbackColor =\n theme === 'light' ? screenStyle.light.color : screenStyle.dark.color;\n\n const style: Record<string, unknown> = {};\n if (!attributes) {\n style.fontSize = fs(14);\n style.color = fallbackColor;\n return style;\n }\n\n const rawFontSize = get('fontSize') as any;\n const parsedFontSize = parseSize(rawFontSize);\n if (typeof parsedFontSize === 'number') style.fontSize = parsedFontSize;\n else style.fontSize = fs(14);\n\n const fontFamily = get('fontFamily') as any;\n const fontWeight = get('fontWeight') as any;\n const requestedWeight = weightToNumericKey(fontWeight);\n const normalizedFontFamily =\n typeof fontFamily === 'string' && fontFamily.trim().length > 0\n ? fontFamily.trim()\n : undefined;\n\n if (normalizedFontFamily) {\n const def = findFontDefinition(options.fonts ?? [], normalizedFontFamily);\n const resolvedWeightKey =\n def?.family && typeof def.family === 'object'\n ? resolveClosestFontWeightKey(\n def.family as Record<string, string>,\n requestedWeight,\n )\n : requestedWeight;\n\n style.fontFamily = normalizedFontFamily;\n if (resolvedWeightKey) style.fontWeight = resolvedWeightKey;\n }\n\n const normalizedFontWeight = normalizeFontWeight(fontWeight);\n if (!normalizedFontFamily && normalizedFontWeight)\n style.fontWeight = normalizedFontWeight;\n\n const resolvedTextColor = parseColor(get('color') as any, {\n projectColors: options.projectColors,\n theme,\n });\n style.color = resolvedTextColor ?? fallbackColor;\n\n const textAlign = get('textAlign');\n if (textAlign) style.textAlign = textAlign as any;\n\n const viewStyle = extractViewStyleNative(node, {\n projectColors: options.projectColors,\n theme,\n });\n return { ...viewStyle, ...style };\n}\n","import { useMemo } from 'react';\nimport type { NodeData } from '../../../types/Node';\nimport type { TextPropsGenerated } from '../../../build-components/Text/TextProps.generated';\nimport { defaultAppConfig } from '../../../types/PreviewConfig';\nimport { useBuilderParams } from '../../../components/BuilderProvider';\nimport { extractTextStyleNative } from '../../../utils/extractTextStyle';\n\nexport function useExtractTextStyle<T extends TextPropsGenerated['attributes']>(\n node: NodeData<T>,\n) {\n const {\n appConfig: builderAppConfig,\n projectColors: builderProjectColors,\n fonts: builderFonts,\n } = useBuilderParams();\n\n const appConfig = builderAppConfig ?? defaultAppConfig;\n const projectColors = builderProjectColors;\n const fonts = builderFonts;\n\n return useMemo(\n () => {\n const style = extractTextStyleNative(node, {\n appConfig,\n projectColors,\n fonts,\n });\n\n const attrs = node.attributes as unknown as Record<string, unknown>;\n const styleBag =\n (attrs?.style as Record<string, unknown> | undefined) ?? undefined;\n const { style: _style, ...rest } = attrs ?? {};\n void _style;\n\n return {\n style,\n other: {\n ...rest,\n // These are \"behavior\" flags stored under style in the schema.\n adjustsFontSizeToFit: styleBag?.adjustsFontSizeToFit as\n | boolean\n | undefined,\n showEllipsis: styleBag?.showEllipsis as boolean | undefined,\n },\n };\n },\n // fonts is intentionally included: extractTextStyleNative resolves weights via font definitions.\n [node, appConfig, projectColors, fonts],\n );\n}\n","import { useMemo } from 'react';\nimport type { NodeData } from '../../../types/Node';\nimport type { ViewPropsGenerated } from '../../../build-components/View/ViewProps.generated';\nimport { useBuilderParams } from '../../../components/BuilderProvider';\nimport { extractViewStyleNative } from '../../../utils/extractViewStyle';\nimport { defaultAppConfig } from '../../../types/PreviewConfig';\n\nexport function useExtractViewStyle<T extends ViewPropsGenerated['attributes']>(\n node: NodeData<T>,\n) {\n const { appConfig, projectColors: builderProjectColors } = useBuilderParams();\n const theme = appConfig?.theme ?? defaultAppConfig.theme;\n const projectColors = builderProjectColors;\n\n return useMemo(() => {\n const style = extractViewStyleNative(node, { theme, projectColors });\n\n const attrs = node.attributes as unknown as Record<string, unknown>;\n const styleBag =\n (attrs?.style as Record<string, unknown> | undefined) ?? undefined;\n const { style: _style, ...rest } = attrs ?? {};\n void _style;\n\n return {\n style,\n other: {\n ...rest,\n scrollable: styleBag?.scrollable as boolean | undefined,\n },\n };\n }, [node, theme, projectColors]);\n}\n","import { useMemo } from 'react';\nimport type { NodeData } from '../../../types/Node';\nimport type { ImagePropsGenerated } from '../../../build-components/Image/ImageProps.generated';\nimport { useBuilderParams } from '../../../components/BuilderProvider';\nimport { extractImageStyleNative } from '../../../utils/extractImageStyle';\nimport { defaultAppConfig } from '../../../types/PreviewConfig';\n\nexport function useExtractImageStyle<\n T extends ImagePropsGenerated['attributes'],\n>(node: NodeData<T>) {\n const { appConfig, projectColors: builderProjectColors } = useBuilderParams();\n const theme = appConfig?.theme ?? defaultAppConfig.theme;\n const projectColors = builderProjectColors;\n\n return useMemo(() => {\n // extractImageStyleNative includes `resizeMode` in the returned object, but in RN\n // resizeMode is typically passed as an Image prop. We normalize to `{ style, other }`.\n const styleWithResizeMode = extractImageStyleNative(node, {\n theme,\n projectColors,\n });\n const { resizeMode: resizeModeFromStyle, ...style } =\n (styleWithResizeMode as unknown as Record<string, unknown>) ?? {};\n\n const attrs = node.attributes as unknown as Record<string, unknown>;\n const styleBag =\n (attrs?.style as Record<string, unknown> | undefined) ?? undefined;\n const { style: _style, ...rest } = attrs ?? {};\n void _style;\n\n return {\n style,\n other: {\n ...rest,\n // In RN, resizeMode is commonly an Image prop (not style). We expose it as \"other\".\n resizeMode: (resizeModeFromStyle ??\n (styleBag?.resizeMode as unknown)) as\n | 'cover'\n | 'contain'\n | 'stretch'\n | 'center'\n | undefined,\n },\n };\n }, [node, theme, projectColors]);\n}\n","import { ImagePropsGenerated } from '../build-components/Image/ImageProps.generated';\nimport type { NodeData } from '../types/Node';\nimport {\n extractViewStyle,\n extractViewStyleNative,\n ExtractViewStyleOptions,\n} from './extractViewStyle';\n\nexport function extractImageStyle<T extends ImagePropsGenerated['attributes']>(\n node: NodeData<T>,\n options: ExtractViewStyleOptions = {},\n) {\n const attributes = node.attributes;\n const styleBag = (attributes as any)?.style as\n | Record<string, unknown>\n | undefined;\n const style: React.CSSProperties = {};\n\n if (!attributes) return style;\n\n // Map resizeMode to CSS object-fit\n const resizeMode = ((attributes as any)?.resizeMode ??\n styleBag?.resizeMode) as any;\n if (resizeMode === 'cover') style.objectFit = 'cover';\n else if (resizeMode === 'contain') style.objectFit = 'contain';\n else if (resizeMode === 'stretch') style.objectFit = 'fill';\n else if (resizeMode === 'center') style.objectFit = 'none';\n\n return { ...extractViewStyle(node, options), ...style };\n}\n\nexport function extractImageStyleNative<\n T extends ImagePropsGenerated['attributes'],\n>(node: NodeData<T>, options: ExtractViewStyleOptions = {}) {\n const attributes = node.attributes;\n const styleBag = (attributes as any)?.style as\n | Record<string, unknown>\n | undefined;\n if (!attributes) return {};\n\n const resizeMode = ((attributes as any)?.resizeMode ??\n styleBag?.resizeMode) as any;\n\n // In RN, resizeMode is usually an Image prop, but many codebases also accept it on ImageStyle.\n // We return it here so consumers can pass it through as they prefer.\n const nativeStyle: Record<string, unknown> = {};\n if (resizeMode) nativeStyle.resizeMode = resizeMode;\n\n return { ...extractViewStyleNative(node, options as any), ...nativeStyle };\n}\n","export function generateRandomKeyForNode(type: string) {\n return type + '-' + Math.random().toString(36).substring(2, 15);\n}\n","/* AUTO-GENERATED FILE - DO NOT EDIT */\n\n// Export resolved patterns (after extends resolution)\nexport const patterns = [\n {\n schemaVersion: 2,\n pattern: {\n type: 'BIcon',\n children: 'never',\n attributes: {\n adjustsFontSizeToFit: 'boolean',\n showEllipsis: 'boolean',\n style: {\n color: 'color',\n fontSize: 'size',\n fontFamily: 'fontFamily',\n fontWeight: 'fontWeight',\n textAlign: ['left', 'center', 'right', 'justify'],\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n scrollable: 'boolean',\n iconType: 'iconType',\n size: 'number',\n strokeWidth: 'number',\n },\n },\n meta: {\n desiredParent: ['all'],\n label: 'BIcon',\n description: 'Renders an icon from the icon set.',\n attributes: {\n styles: {\n color: {\n label: 'Color',\n description: 'Text color.',\n category: 'style',\n specialCategory: null,\n sort: 1,\n },\n fontSize: {\n label: 'Font Size',\n description: 'Text size.',\n category: 'style',\n specialCategory: null,\n sort: 2,\n preferedScale: 's',\n },\n fontFamily: {\n label: 'Font Family',\n description: 'Font family used for the text.',\n category: 'style',\n specialCategory: null,\n sort: 3,\n },\n fontWeight: {\n label: 'Font Weight',\n description: 'Text weight.',\n category: 'style',\n specialCategory: null,\n sort: 4,\n },\n textAlign: {\n label: 'Text Align',\n description: 'Text alignment.',\n category: 'style',\n specialCategory: null,\n sort: 5,\n },\n },\n adjustsFontSizeToFit: {\n label: 'Adjust Font Size To Fit',\n description:\n 'Automatically reduces font size to fit the available space.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n showEllipsis: {\n label: 'Show Ellipsis',\n description:\n 'If text overflows, show ellipsis (…); applied as single-line truncation.',\n category: 'other',\n specialCategory: null,\n sort: 2,\n },\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferedScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferedScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferedScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferedScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferedScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferedScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferedScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferedScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferedScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferedScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferedScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferedScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferedScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferedScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferedScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferedScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferedScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferedScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferedScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferedScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferedScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferedScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferedScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferedScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferedScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n iconType: {\n label: 'Icon',\n description: 'Which icon to render.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n size: {\n label: 'Size',\n description: 'Icon size (px).',\n category: 'other',\n specialCategory: null,\n sort: 2,\n },\n strokeWidth: {\n label: 'Stroke Width',\n description: 'SVG stroke width override (applied to the icon paths).',\n category: 'other',\n specialCategory: null,\n sort: 3,\n },\n },\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferedScale: 's',\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n fontSize: '16',\n },\n iconType: 'activity',\n strokeWidth: 1.5,\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'BackgroundImage',\n children: 'never',\n attributes: {\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n src: 'string',\n resizeMode: ['cover', 'contain', 'stretch', 'center'],\n },\n defaults: {\n resizeMode: 'cover',\n style: {\n width: '100%',\n height: '100%',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n },\n },\n },\n meta: {\n desiredParent: ['all', 'background'],\n label: 'Background Image',\n description: 'Background image.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferedScale: 's',\n },\n resizeMode: {\n label: 'Resize Mode',\n description: 'How the image fits its container.',\n category: 'style',\n specialCategory: null,\n sort: 4,\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferedScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferedScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferedScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferedScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferedScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferedScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferedScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferedScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferedScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferedScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferedScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferedScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferedScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferedScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferedScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferedScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferedScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferedScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferedScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferedScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferedScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferedScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferedScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferedScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferedScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n src: {\n label: 'Src',\n description: 'Image source URL.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n },\n defaults: {\n resizeMode: 'cover',\n style: {\n flexDirection: 'column',\n position: 'absolute',\n zIndex: 0,\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'Button',\n children: 'string',\n attributes: {\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n color: 'color',\n fontSize: 'size',\n fontWeight: [\n 'normal',\n 'bold',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n ],\n },\n },\n },\n meta: {\n desiredParent: ['all'],\n label: 'Button',\n description: 'Simple action button.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferedScale: 's',\n },\n color: {\n label: 'Color',\n description: 'Text color of the button.',\n category: 'style',\n specialCategory: null,\n sort: 1,\n },\n fontSize: {\n label: 'Font Size',\n description: 'Text size of the button.',\n category: 'style',\n specialCategory: null,\n sort: 2,\n },\n fontWeight: {\n label: 'Font Weight',\n description: 'Text weight of the button.',\n category: 'style',\n specialCategory: null,\n sort: 3,\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferedScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferedScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferedScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferedScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferedScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferedScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferedScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferedScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferedScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferedScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferedScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferedScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferedScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferedScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferedScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferedScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferedScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferedScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferedScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferedScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferedScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferedScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferedScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferedScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferedScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: 'transparent',\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'Carousel',\n children: 'node',\n attributes: {\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n loop: 'boolean',\n dragFree: 'boolean',\n align: ['start', 'center', 'end'],\n },\n },\n meta: {\n desiredParent: ['=CarouselProvider'],\n label: 'Carousel',\n description: 'Container for carousel items.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferedScale: 's',\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferedScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferedScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferedScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferedScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferedScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferedScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferedScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferedScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferedScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferedScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferedScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferedScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferedScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferedScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferedScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferedScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferedScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferedScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferedScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferedScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferedScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferedScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferedScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferedScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferedScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n },\n defaults: {\n style: { flexDirection: 'row', position: 'relative', zIndex: 1 },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'CarouselButtons',\n children: 'never',\n attributes: {\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n buttonType: ['previous_button', 'next_button', 'skip_button'],\n skipNumber: 'number',\n },\n },\n meta: {\n desiredParent: ['>OnboardProvider', '>CarouselProvider'],\n label: 'Carousel Buttons',\n description: 'Renders built-in carousel buttons.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferedScale: 's',\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferedScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferedScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferedScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferedScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferedScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferedScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferedScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferedScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferedScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferedScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferedScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferedScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferedScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferedScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferedScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferedScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferedScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferedScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferedScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferedScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferedScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferedScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferedScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferedScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferedScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n buttonType: {\n label: 'Button Type',\n description: 'Which carousel button to show.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n skipNumber: {\n label: 'Skip Number',\n description: 'Index to skip to when tapped.',\n category: 'other',\n specialCategory: null,\n sort: 2,\n },\n },\n },\n defaults: {\n style: { flexDirection: 'column', position: 'relative', zIndex: 1 },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'CarouselDots',\n children: 'never',\n attributes: {\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n dotType: [\n 'expanding_dot',\n 'normal_dot',\n 'scaling_dot',\n 'sliding_border',\n 'sliding_dot',\n 'liquid_like',\n ],\n },\n },\n meta: {\n desiredParent: ['>CarouselProvider'],\n label: 'Carousel Dots',\n description: 'Renders page indicator dots.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferedScale: 's',\n },\n dotType: {\n label: 'Dot Type',\n description: 'Style used for the dots.',\n category: 'style',\n specialCategory: null,\n sort: 1,\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferedScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferedScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferedScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferedScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferedScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferedScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferedScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferedScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferedScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferedScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferedScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferedScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferedScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferedScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferedScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferedScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferedScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferedScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferedScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferedScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferedScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferedScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferedScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferedScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferedScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n },\n defaults: {\n style: { flexDirection: 'column', position: 'relative', zIndex: 1 },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'CarouselItem',\n children: 'node',\n attributes: {\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n },\n },\n meta: {\n desiredParent: ['=Carousel'],\n label: 'Carousel Item',\n description: 'Single slide inside a carousel.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferedScale: 's',\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferedScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferedScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferedScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferedScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferedScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferedScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferedScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferedScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferedScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferedScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferedScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferedScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferedScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferedScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferedScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferedScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferedScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferedScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferedScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferedScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferedScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferedScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferedScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferedScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferedScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n },\n defaults: {\n style: { flexDirection: 'column', position: 'relative', zIndex: 1 },\n },\n types: {},\n },\n {\n schemaVersion: 1,\n pattern: {\n type: 'CarouselProvider',\n children: 'node',\n attributes: {\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n },\n },\n meta: {\n desiredParent: ['root', '>View'],\n label: 'Carousel Provider',\n description: 'Provides carousel context to its children.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferedScale: 's',\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferedScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferedScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferedScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferedScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferedScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferedScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferedScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferedScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferedScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferedScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferedScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferedScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferedScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferedScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferedScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferedScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferedScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferedScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferedScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferedScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferedScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferedScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferedScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferedScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferedScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n },\n defaults: {\n style: { flexDirection: 'column', position: 'relative', zIndex: 1 },\n },\n allowUnknownAttributes: false,\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'Image',\n children: 'never',\n attributes: {\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n src: 'string',\n width: 'size',\n height: 'size',\n resizeMode: ['cover', 'contain', 'stretch', 'center'],\n },\n },\n meta: {\n desiredParent: ['all'],\n label: 'Image',\n description: 'Shows an image or graphic.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferedScale: 's',\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferedScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferedScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferedScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferedScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferedScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferedScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferedScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferedScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferedScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferedScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferedScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferedScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferedScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferedScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferedScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Image width.',\n category: 'container',\n specialCategory: null,\n sort: 2,\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferedScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferedScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Image height.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferedScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferedScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferedScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferedScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferedScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferedScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n src: {\n label: 'Src',\n description: 'Image source URL.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n resizeMode: {\n label: 'Resize Mode',\n description: 'How the image fits the frame.',\n category: 'other',\n specialCategory: null,\n sort: 4,\n },\n },\n },\n defaults: {\n style: { flexDirection: 'column', position: 'relative', zIndex: 1 },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'Main',\n children: 'node',\n attributes: {\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n useSafeAreaView: 'boolean',\n },\n },\n meta: {\n desiredParent: ['root'],\n label: 'Main',\n description: 'Top-level screen wrapper (safe area, base layout).',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferedScale: 's',\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferedScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferedScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferedScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferedScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferedScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferedScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferedScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferedScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferedScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferedScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferedScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferedScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferedScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferedScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferedScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferedScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferedScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferedScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferedScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferedScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferedScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferedScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferedScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferedScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferedScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n useSafeAreaView: {\n label: 'Use Safe Area View',\n description:\n 'Wraps content with a safe-area-aware container (when supported by the target).',\n category: 'container',\n specialCategory: null,\n sort: 1,\n forceVisible: true,\n },\n },\n hideAllAttributes: true,\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n width: '100%',\n height: '100%',\n flex: 1,\n },\n useSafeAreaView: true,\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'Onboard',\n children: 'node',\n attributes: {\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n },\n },\n meta: {\n desiredParent: ['=OnboardProvider'],\n label: 'Onboard',\n description: 'Wraps the onboarding flow.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferedScale: 's',\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferedScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferedScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferedScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferedScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferedScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferedScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferedScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferedScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferedScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferedScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferedScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferedScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferedScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferedScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferedScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferedScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferedScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferedScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferedScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferedScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferedScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferedScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferedScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferedScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferedScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n desiredChildren: ['=OnboardItem'],\n },\n defaults: {\n style: { flexDirection: 'row', position: 'relative', zIndex: 1 },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'OnboardButton',\n children: 'never',\n attributes: {\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n labelKey: 'string',\n button_text_color: 'color',\n animation: [\n 'simple-animation',\n 'line-animation',\n 'blur',\n 'blur-animation',\n 'blur-line-animation',\n ],\n animation_color: 'color',\n button_background_color: 'color',\n flex: 'number',\n events: 'EventObject[]',\n },\n },\n meta: {\n desiredParent: ['=OnboardButtons'],\n label: 'Onboard Button',\n description: 'Single action button for onboarding.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferedScale: 's',\n },\n button_text_color: {\n label: 'Button Text Color',\n description: 'Text color of the button.',\n category: 'style',\n specialCategory: null,\n sort: 2,\n },\n animation: {\n label: 'Animation',\n description: 'Animation style for the button.',\n category: 'style',\n specialCategory: null,\n sort: 3,\n },\n animation_color: {\n label: 'Animation Color',\n description: 'Color used by the animation.',\n category: 'style',\n specialCategory: null,\n sort: 4,\n },\n button_background_color: {\n label: 'Button Background Color',\n description: 'Background color of the button.',\n category: 'style',\n specialCategory: null,\n sort: 5,\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferedScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferedScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferedScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferedScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferedScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferedScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferedScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferedScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferedScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferedScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferedScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferedScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferedScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferedScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferedScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferedScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferedScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferedScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferedScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferedScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferedScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow value in layout.',\n category: 'container',\n specialCategory: null,\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferedScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferedScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferedScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferedScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n labelKey: {\n label: 'Label Key',\n description: 'Localization key for the button text.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n events: {\n label: 'Events',\n description: 'List of events fired by the button.',\n category: 'other',\n specialCategory: null,\n sort: 7,\n },\n },\n },\n defaults: {\n style: { flexDirection: 'column', position: 'relative', zIndex: 1 },\n },\n types: {\n EventObject: {\n type: ['Permission', 'Navigate'],\n permission: ['att', 'notification', 'rating', 'GDPR', 'null'],\n navigate_to: 'string',\n targetIndex: 'number',\n },\n },\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'OnboardButtons',\n children: 'node',\n attributes: {\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n buttonType: ['previous_button', 'next_button', 'skip_button'],\n skipNumber: 'number',\n buttons_direction: ['row', 'column'],\n forIndex: 'number',\n seperatorColor: 'color',\n condition: ['carousel-index'],\n conditionVariable: 'number',\n },\n },\n meta: {\n desiredParent: ['=OnboardItem'],\n label: 'Onboard Buttons',\n description: 'Wrapper for onboarding button set.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferedScale: 's',\n },\n seperatorColor: {\n label: 'Seperator Color',\n description: 'Color of the divider line.',\n category: 'style',\n specialCategory: null,\n sort: 5,\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferedScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferedScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferedScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferedScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferedScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferedScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferedScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferedScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferedScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferedScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferedScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferedScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferedScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferedScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferedScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferedScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferedScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferedScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferedScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferedScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferedScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferedScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferedScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferedScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferedScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n buttonType: {\n label: 'Button Type',\n description: 'Which onboard button to show.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n skipNumber: {\n label: 'Skip Number',\n description: 'Slide index to skip to.',\n category: 'other',\n specialCategory: null,\n sort: 2,\n },\n buttons_direction: {\n label: 'Buttons Direction',\n description: 'Direction to lay out buttons.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n forIndex: {\n label: 'For Index',\n description: 'Show only for this slide index.',\n category: 'other',\n specialCategory: null,\n sort: 4,\n },\n condition: {\n label: 'Condition',\n description: 'Built-in condition to check.',\n category: 'other',\n specialCategory: null,\n sort: 6,\n },\n conditionVariable: {\n label: 'Condition Variable',\n description: 'Value used when checking the condition.',\n category: 'other',\n specialCategory: null,\n sort: 7,\n },\n },\n },\n defaults: {\n style: { flexDirection: 'column', position: 'relative', zIndex: 1 },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'OnboardDot',\n children: 'never',\n attributes: {\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n dotType: [\n 'expanding_dot',\n 'normal_dot',\n 'scaling_dot',\n 'sliding_border',\n 'sliding_dot',\n 'liquid_like',\n ],\n inactive_dot_opacity: 'number',\n expanding_dot_width: 'size',\n active_dot_color: 'color',\n flexDirection: 'never',\n alignItems: 'never',\n justifyContent: 'never',\n },\n },\n meta: {\n desiredParent: ['>OnboardProvider'],\n label: 'Onboard Dot',\n description: 'Renders onboarding progress dots.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferedScale: 's',\n },\n dotType: {\n label: 'Dot Type',\n description: 'Dot animation style.',\n category: 'style',\n specialCategory: null,\n sort: 1,\n },\n inactive_dot_opacity: {\n label: 'Inactive Dot Opacity',\n description: 'Opacity for inactive dots.',\n category: 'style',\n specialCategory: null,\n sort: 2,\n },\n expanding_dot_width: {\n label: 'Expanding Dot Width',\n description: 'Width used while expanding.',\n category: 'style',\n specialCategory: null,\n sort: 3,\n },\n active_dot_color: {\n label: 'Active Dot Color',\n description: 'Color of the active dot.',\n category: 'style',\n specialCategory: null,\n sort: 4,\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferedScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferedScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferedScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferedScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferedScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferedScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferedScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferedScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferedScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferedScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferedScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferedScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferedScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferedScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferedScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferedScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferedScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferedScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferedScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferedScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferedScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferedScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferedScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferedScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferedScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n },\n defaults: {\n style: { flexDirection: 'column', position: 'relative', zIndex: 1 },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'OnboardFooter',\n children: 'node',\n attributes: {\n adjustsFontSizeToFit: 'boolean',\n showEllipsis: 'boolean',\n style: {\n color: 'color',\n fontSize: 'size',\n fontFamily: 'fontFamily',\n fontWeight: 'fontWeight',\n textAlign: ['left', 'center', 'right', 'justify'],\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n scrollable: 'boolean',\n textLocalizationKey: 'string',\n linkedWordFirstLocalizationKey: 'string',\n linkedWordFirstColor: 'color',\n linkedWordFirstPage: 'string',\n linkedWordSecondLocalizationKey: 'string',\n linkedWordSecondColor: 'color',\n linkedWordSecondPage: 'string',\n },\n },\n meta: {\n desiredParent: ['>OnboardItem'],\n label: 'Onboard Footer',\n description: 'Footer text with optional links.',\n attributes: {\n styles: {\n color: {\n label: 'Color',\n description: 'Text color.',\n category: 'style',\n specialCategory: null,\n sort: 1,\n },\n fontSize: {\n label: 'Font Size',\n description: 'Text size.',\n category: 'style',\n specialCategory: null,\n sort: 2,\n preferedScale: 's',\n },\n fontFamily: {\n label: 'Font Family',\n description: 'Font family used for the text.',\n category: 'style',\n specialCategory: null,\n sort: 3,\n },\n fontWeight: {\n label: 'Font Weight',\n description: 'Text weight.',\n category: 'style',\n specialCategory: null,\n sort: 4,\n },\n textAlign: {\n label: 'Text Align',\n description: 'Text alignment.',\n category: 'style',\n specialCategory: null,\n sort: 5,\n },\n },\n adjustsFontSizeToFit: {\n label: 'Adjust Font Size To Fit',\n description:\n 'Automatically reduces font size to fit the available space.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n showEllipsis: {\n label: 'Show Ellipsis',\n description:\n 'If text overflows, show ellipsis (…); applied as single-line truncation.',\n category: 'other',\n specialCategory: null,\n sort: 2,\n },\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferedScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferedScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferedScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferedScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferedScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferedScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferedScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferedScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferedScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferedScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferedScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferedScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferedScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferedScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferedScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferedScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferedScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferedScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferedScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferedScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferedScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferedScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferedScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferedScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferedScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n textLocalizationKey: {\n label: 'Text Localization Key',\n description: 'Localization key for the footer text.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n linkedWordFirstLocalizationKey: {\n label: 'Linked Word First Localization Key',\n description: 'Key for the first linked word.',\n category: 'other',\n specialCategory: null,\n sort: 2,\n },\n linkedWordFirstPage: {\n label: 'Linked Word First Page',\n description: 'Page opened by the first link.',\n category: 'other',\n specialCategory: null,\n sort: 4,\n },\n linkedWordSecondLocalizationKey: {\n label: 'Linked Word Second Localization Key',\n description: 'Key for the second linked word.',\n category: 'other',\n specialCategory: null,\n sort: 5,\n },\n linkedWordSecondPage: {\n label: 'Linked Word Second Page',\n description: 'Page opened by the second link.',\n category: 'other',\n specialCategory: null,\n sort: 7,\n },\n },\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferedScale: 's',\n },\n linkedWordFirstColor: {\n label: 'Linked Word First Color',\n description: 'Color of the first linked word.',\n category: 'style',\n specialCategory: null,\n sort: 3,\n },\n linkedWordSecondColor: {\n label: 'Linked Word Second Color',\n description: 'Color of the second linked word.',\n category: 'style',\n specialCategory: null,\n sort: 6,\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n paddingHorizontal: '24@s',\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'OnboardImage',\n children: 'node',\n attributes: {\n src: 'string',\n width: 'size',\n height: 'size',\n resizeMode: ['cover', 'contain', 'stretch', 'center'],\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n video_url: 'string',\n lottie: 'string',\n },\n },\n meta: {\n desiredParent: ['>OnboardProvider', '>OnboardItem', '!=Onboard'],\n label: 'Onboard Image',\n description: 'Onboarding hero image with media.',\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferedScale: 's',\n },\n },\n attributes: {\n src: {\n label: 'Src',\n description: 'Image source URL.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferedScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferedScale: 'vs',\n },\n resizeMode: {\n label: 'Resize Mode',\n description: 'How the image fits the frame.',\n category: 'other',\n specialCategory: null,\n sort: 4,\n },\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferedScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferedScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferedScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferedScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferedScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferedScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferedScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferedScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferedScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferedScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferedScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferedScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferedScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferedScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferedScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferedScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferedScale: 's',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferedScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferedScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferedScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferedScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferedScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferedScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n video_url: {\n label: 'Video Url',\n description: 'URL for the onboarding video.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n lottie: {\n label: 'Lottie',\n description: 'Path to the lottie animation.',\n category: 'other',\n specialCategory: null,\n sort: 2,\n },\n },\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n },\n defaults: {\n style: { flexDirection: 'column', position: 'relative', zIndex: 1 },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'OnboardItem',\n children: 'node',\n attributes: {\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n display: ['flex', 'block'],\n gap: 'size',\n flexDirection: ['row', 'column'],\n paddingHorizontal: 'size',\n },\n },\n meta: {\n desiredParent: ['=Onboard'],\n label: 'Onboard Item',\n description: 'Single onboarding screen section.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferedScale: 's',\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Order of child stacking.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between child blocks.',\n category: 'container',\n specialCategory: null,\n sort: 2,\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferedScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 4,\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferedScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferedScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferedScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferedScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferedScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferedScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferedScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferedScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferedScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferedScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferedScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferedScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferedScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferedScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferedScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferedScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferedScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferedScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferedScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferedScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferedScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferedScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n display: {\n label: 'Display',\n description: 'Controls layout display mode.',\n category: 'container',\n specialCategory: null,\n sort: 1,\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n gap: '16@vs',\n paddingHorizontal: '24@s',\n },\n display: 'flex',\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'OnboardProvider',\n children: 'node',\n attributes: {\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n theme: ['light', 'dark', 'all'],\n borderRadius: 'never',\n },\n },\n meta: {\n desiredParent: ['root'],\n label: 'Onboard Provider',\n description: 'Provides shared settings for onboarding.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferedScale: 's',\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferedScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferedScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferedScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferedScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding for the provider.',\n category: 'container',\n specialCategory: 'padding',\n sort: 1,\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding for the provider.',\n category: 'container',\n specialCategory: 'padding',\n sort: 3,\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding for the provider.',\n category: 'container',\n specialCategory: 'padding',\n sort: 4,\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding for the provider.',\n category: 'container',\n specialCategory: 'padding',\n sort: 2,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferedScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferedScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferedScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferedScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferedScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferedScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferedScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferedScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferedScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferedScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferedScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferedScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferedScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferedScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferedScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferedScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferedScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n theme: {\n label: 'Theme',\n description:\n 'Controls which app theme(s) this onboarding is intended for.',\n category: 'other',\n specialCategory: null,\n sort: -10,\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n width: '100%',\n height: '100%',\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'OnboardSubtitle',\n children: 'string',\n attributes: {\n adjustsFontSizeToFit: 'boolean',\n showEllipsis: 'boolean',\n style: {\n color: 'color',\n fontSize: 'size',\n fontFamily: 'fontFamily',\n fontWeight: 'fontWeight',\n textAlign: ['left', 'center', 'right', 'justify'],\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n scrollable: 'boolean',\n },\n },\n meta: {\n desiredParent: ['>OnboardProvider', '>OnboardItem'],\n label: 'Onboard Subtitle',\n description: 'Subtitle text for an onboarding step.',\n attributes: {\n styles: {\n color: {\n label: 'Color',\n description: 'Text color.',\n category: 'style',\n specialCategory: null,\n sort: 1,\n },\n fontSize: {\n label: 'Font Size',\n description: 'Text size.',\n category: 'style',\n specialCategory: null,\n sort: 2,\n preferedScale: 's',\n },\n fontFamily: {\n label: 'Font Family',\n description: 'Font family used for the text.',\n category: 'style',\n specialCategory: null,\n sort: 3,\n },\n fontWeight: {\n label: 'Font Weight',\n description: 'Text weight.',\n category: 'style',\n specialCategory: null,\n sort: 4,\n },\n textAlign: {\n label: 'Text Align',\n description: 'Text alignment.',\n category: 'style',\n specialCategory: null,\n sort: 5,\n },\n },\n adjustsFontSizeToFit: {\n label: 'Adjust Font Size To Fit',\n description:\n 'Automatically reduces font size to fit the available space.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n showEllipsis: {\n label: 'Show Ellipsis',\n description:\n 'If text overflows, show ellipsis (…); applied as single-line truncation.',\n category: 'other',\n specialCategory: null,\n sort: 2,\n },\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferedScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferedScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferedScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferedScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferedScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferedScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferedScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferedScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferedScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferedScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferedScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferedScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferedScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferedScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferedScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferedScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferedScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferedScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferedScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferedScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferedScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferedScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferedScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferedScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferedScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferedScale: 's',\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n fontSize: '14@fs',\n fontWeight: '600',\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'OnboardTitle',\n children: 'string',\n attributes: {\n adjustsFontSizeToFit: 'boolean',\n showEllipsis: 'boolean',\n style: {\n color: 'color',\n fontSize: 'size',\n fontFamily: 'fontFamily',\n fontWeight: 'fontWeight',\n textAlign: ['left', 'center', 'right', 'justify'],\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n scrollable: 'boolean',\n },\n },\n meta: {\n desiredParent: ['>OnboardItem', '>OnboardProvider'],\n label: 'Onboard Title',\n description: 'Title text for an onboarding step.',\n attributes: {\n styles: {\n color: {\n label: 'Color',\n description: 'Text color.',\n category: 'style',\n specialCategory: null,\n sort: 1,\n },\n fontSize: {\n label: 'Font Size',\n description: 'Text size.',\n category: 'style',\n specialCategory: null,\n sort: 2,\n preferedScale: 's',\n },\n fontFamily: {\n label: 'Font Family',\n description: 'Font family used for the text.',\n category: 'style',\n specialCategory: null,\n sort: 3,\n },\n fontWeight: {\n label: 'Font Weight',\n description: 'Text weight.',\n category: 'style',\n specialCategory: null,\n sort: 4,\n },\n textAlign: {\n label: 'Text Align',\n description: 'Text alignment.',\n category: 'style',\n specialCategory: null,\n sort: 5,\n },\n },\n adjustsFontSizeToFit: {\n label: 'Adjust Font Size To Fit',\n description:\n 'Automatically reduces font size to fit the available space.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n showEllipsis: {\n label: 'Show Ellipsis',\n description:\n 'If text overflows, show ellipsis (…); applied as single-line truncation.',\n category: 'other',\n specialCategory: null,\n sort: 2,\n },\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferedScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferedScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferedScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferedScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferedScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferedScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferedScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferedScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferedScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferedScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferedScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferedScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferedScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferedScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferedScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferedScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferedScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferedScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferedScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferedScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferedScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferedScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferedScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferedScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferedScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferedScale: 's',\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n fontSize: '24@fs',\n fontWeight: '700',\n textAlign: 'center',\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'PaywallBackground',\n children: 'never',\n attributes: {\n src: 'string',\n resizeMode: ['cover', 'contain', 'stretch', 'center'],\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n },\n defaults: {\n resizeMode: 'cover',\n style: {\n width: '100%',\n height: '100%',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n },\n },\n },\n meta: {\n desiredParent: ['>PaywallProvider'],\n label: 'Paywall Background',\n description: 'Paywall Background component.',\n src: {\n label: 'Src',\n description: 'Image source URL.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n styles: {\n resizeMode: {\n label: 'Resize Mode',\n description: 'How the image fits its container.',\n category: 'style',\n specialCategory: null,\n sort: 4,\n },\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferedScale: 's',\n },\n },\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferedScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferedScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferedScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferedScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferedScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferedScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferedScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferedScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferedScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferedScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferedScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferedScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferedScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferedScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferedScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferedScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferedScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferedScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferedScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferedScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferedScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferedScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferedScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferedScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferedScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n },\n defaults: {\n resizeMode: 'cover',\n style: {\n width: '100%',\n height: '100%',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 1,\n flexDirection: 'column',\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'PaywallCloseButton',\n children: 'never',\n attributes: {\n iconType: 'iconType',\n size: 'number',\n strokeWidth: 'number',\n adjustsFontSizeToFit: 'boolean',\n showEllipsis: 'boolean',\n style: {\n color: 'color',\n fontSize: 'size',\n fontFamily: 'fontFamily',\n fontWeight: 'fontWeight',\n textAlign: ['left', 'center', 'right', 'justify'],\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n scrollable: 'boolean',\n },\n },\n meta: {\n desiredParent: ['>PaywallProvider'],\n label: 'Paywall Close Button',\n description: 'Paywall Close Button component.',\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferedScale: 's',\n },\n },\n attributes: {\n iconType: {\n label: 'Icon',\n description: 'Which icon to render.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n size: {\n label: 'Size',\n description: 'Icon size (px).',\n category: 'other',\n specialCategory: null,\n sort: 2,\n },\n strokeWidth: {\n label: 'Stroke Width',\n description: 'SVG stroke width override (applied to the icon paths).',\n category: 'other',\n specialCategory: null,\n sort: 3,\n },\n styles: {\n color: {\n label: 'Color',\n description: 'Text color.',\n category: 'style',\n specialCategory: null,\n sort: 1,\n },\n fontSize: {\n label: 'Font Size',\n description: 'Text size.',\n category: 'style',\n specialCategory: null,\n sort: 2,\n preferedScale: 's',\n },\n fontFamily: {\n label: 'Font Family',\n description: 'Font family used for the text.',\n category: 'style',\n specialCategory: null,\n sort: 3,\n },\n fontWeight: {\n label: 'Font Weight',\n description: 'Text weight.',\n category: 'style',\n specialCategory: null,\n sort: 4,\n },\n textAlign: {\n label: 'Text Align',\n description: 'Text alignment.',\n category: 'style',\n specialCategory: null,\n sort: 5,\n },\n },\n adjustsFontSizeToFit: {\n label: 'Adjust Font Size To Fit',\n description:\n 'Automatically reduces font size to fit the available space.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n showEllipsis: {\n label: 'Show Ellipsis',\n description:\n 'If text overflows, show ellipsis (…); applied as single-line truncation.',\n category: 'other',\n specialCategory: null,\n sort: 2,\n },\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferedScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferedScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferedScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferedScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferedScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferedScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferedScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferedScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferedScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferedScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferedScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferedScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferedScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferedScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferedScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferedScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferedScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferedScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferedScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferedScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferedScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferedScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferedScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferedScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferedScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n },\n defaults: {\n iconType: 'close',\n strokeWidth: 1.5,\n style: {\n fontSize: '16',\n flexDirection: 'row',\n position: 'relative',\n zIndex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n },\n size: 24,\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'PaywallOptions',\n children: 'node',\n attributes: {\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n },\n },\n meta: {\n desiredParent: ['>PaywallProvider'],\n label: 'Paywall Options',\n description: 'Paywall options selector component.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferedScale: 's',\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferedScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferedScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferedScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferedScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferedScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferedScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferedScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferedScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferedScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferedScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferedScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferedScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferedScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferedScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferedScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferedScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferedScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferedScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferedScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferedScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferedScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferedScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferedScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferedScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferedScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'row',\n position: 'relative',\n zIndex: 1,\n justifyContent: 'space-between',\n alignItems: 'center',\n minHeight: '60px',\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'PaywallProvider',\n children: 'node',\n attributes: {\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n },\n },\n meta: {\n desiredParent: ['all'],\n label: 'Paywall Provider',\n description: 'Provider/wrapper for paywall screen components.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferedScale: 's',\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferedScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferedScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferedScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferedScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferedScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferedScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferedScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferedScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferedScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferedScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferedScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferedScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferedScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferedScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferedScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferedScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferedScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferedScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferedScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferedScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferedScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferedScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferedScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferedScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferedScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n mockableFeatures: { products: true, benefits: true },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n width: '100%',\n height: '100%',\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'PaywallSubscribeButton',\n children: 'string',\n attributes: {\n style: {\n color: 'color',\n fontSize: 'size',\n fontWeight: [\n 'normal',\n 'bold',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n ],\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n scrollable: 'boolean',\n },\n },\n meta: {\n desiredParent: ['>PaywallProvider'],\n label: 'Paywall Subscribe Button',\n description: 'Paywall subscribe call-to-action button. Extends Button.',\n styles: {\n color: {\n label: 'Color',\n description: 'Text color of the button.',\n category: 'style',\n specialCategory: null,\n sort: 1,\n },\n fontSize: {\n label: 'Font Size',\n description: 'Text size of the button.',\n category: 'style',\n specialCategory: null,\n sort: 2,\n },\n fontWeight: {\n label: 'Font Weight',\n description: 'Text weight of the button.',\n category: 'style',\n specialCategory: null,\n sort: 3,\n },\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferedScale: 's',\n },\n },\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferedScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferedScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferedScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferedScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferedScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferedScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferedScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferedScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferedScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferedScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferedScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferedScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferedScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferedScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferedScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferedScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferedScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferedScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferedScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferedScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferedScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferedScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferedScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferedScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferedScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n },\n defaults: {\n style: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: '#6495ED',\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n paddingHorizontal: '20@s',\n paddingVertical: '12@vs',\n borderRadius: '12@s',\n color: '#FFFFFF',\n fontSize: '16@fs',\n fontWeight: '700',\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'RadioButton',\n children: 'never',\n attributes: {\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n selected: 'boolean',\n color: 'color',\n size: 'number',\n },\n },\n meta: {\n desiredParent: ['all'],\n label: 'Radio Button',\n description: 'Generic radio button icon.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferedScale: 's',\n },\n color: {\n label: 'Color',\n description: 'Radio color.',\n category: 'style',\n specialCategory: null,\n sort: 1,\n },\n size: {\n label: 'Size',\n description: 'Radio size in px.',\n category: 'style',\n specialCategory: null,\n sort: 2,\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferedScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferedScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferedScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferedScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferedScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferedScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferedScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferedScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferedScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferedScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferedScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferedScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferedScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferedScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferedScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferedScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferedScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferedScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferedScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferedScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferedScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferedScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferedScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferedScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferedScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n selected: {\n label: 'Selected',\n description: 'Whether the radio is selected.',\n category: 'other',\n specialCategory: null,\n sort: 0,\n },\n },\n },\n defaults: {\n style: { flexDirection: 'column', position: 'relative', zIndex: 1 },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'Text',\n children: 'string',\n attributes: {\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n color: 'color',\n fontSize: 'size',\n fontFamily: 'fontFamily',\n fontWeight: 'fontWeight',\n textAlign: ['left', 'center', 'right', 'justify'],\n },\n adjustsFontSizeToFit: 'boolean',\n showEllipsis: 'boolean',\n },\n },\n meta: {\n desiredParent: ['all'],\n label: 'Text',\n description: 'Displays simple text.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferedScale: 's',\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferedScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferedScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferedScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferedScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferedScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferedScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferedScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferedScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferedScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferedScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferedScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferedScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferedScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferedScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferedScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferedScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferedScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferedScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferedScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferedScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferedScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferedScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferedScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferedScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferedScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n styles: {\n color: {\n label: 'Color',\n description: 'Text color.',\n category: 'style',\n specialCategory: null,\n sort: 1,\n },\n fontSize: {\n label: 'Font Size',\n description: 'Text size.',\n category: 'style',\n specialCategory: null,\n sort: 2,\n preferedScale: 's',\n },\n fontFamily: {\n label: 'Font Family',\n description: 'Font family used for the text.',\n category: 'style',\n specialCategory: null,\n sort: 3,\n },\n fontWeight: {\n label: 'Font Weight',\n description: 'Text weight.',\n category: 'style',\n specialCategory: null,\n sort: 4,\n },\n textAlign: {\n label: 'Text Align',\n description: 'Text alignment.',\n category: 'style',\n specialCategory: null,\n sort: 5,\n },\n },\n adjustsFontSizeToFit: {\n label: 'Adjust Font Size To Fit',\n description:\n 'Automatically reduces font size to fit the available space.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n showEllipsis: {\n label: 'Show Ellipsis',\n description:\n 'If text overflows, show ellipsis (…); applied as single-line truncation.',\n category: 'other',\n specialCategory: null,\n sort: 2,\n },\n },\n },\n defaults: {\n style: { flexDirection: 'column', position: 'relative', zIndex: 1 },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'View',\n children: 'node',\n attributes: {\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n },\n },\n meta: {\n desiredParent: ['all'],\n label: 'View',\n description: 'Base layout container.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferedScale: 's',\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferedScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferedScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferedScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferedScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferedScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferedScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferedScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferedScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferedScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferedScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferedScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferedScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferedScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferedScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferedScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferedScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferedScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferedScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferedScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferedScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferedScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferedScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferedScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferedScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferedScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n },\n defaults: {\n style: { flexDirection: 'column', position: 'relative', zIndex: 1 },\n },\n },\n] as const;\n","import { patterns as generatedPatterns } from '../build-components/patterns.generated';\nimport type { NodeDefaultAttribute } from '../types/Node';\n\nexport type AttributeMeta = {\n label?: string;\n description?: string;\n category?: 'style' | 'container' | 'other' | string;\n specialCategory?: 'padding' | 'margin' | 'offset' | null | string;\n sort?: number;\n preferedScale?: 's' | 'vs' | 'f' | '%' | '' | string;\n /**\n * When true, this attribute should remain visible even if the component\n * metadata requests hiding all attributes (e.g. `meta.hideAllAttributes`).\n */\n forceVisible?: boolean;\n /**\n * Alias for `forceVisible` used by some patterns.\n */\n override?: boolean;\n};\n\nexport type SpecialCategoryMeta = {\n label?: string;\n description?: string;\n category?: 'style' | 'container' | 'other' | string;\n sort?: number;\n};\n\ntype PatternMeta = {\n label?: string;\n description?: string;\n // schemaVersion >= 2 uses `styles` (formerly `attributes`)\n styles?: Record<string, AttributeMeta>;\n // backwards-compat for schemaVersion 1 patterns\n attributes?: Record<string, AttributeMeta>;\n specialCategories?: Record<string, SpecialCategoryMeta>;\n desiredParent?: string[];\n desiredChildren?: string[];\n mockableFeatures?: Record<string, boolean>;\n /** If true, hide all attributes in the editor except ones with `forceVisible/override`. */\n hideAllAttributes?: boolean;\n};\n\ntype Pattern = {\n schemaVersion: number;\n pattern: {\n type: string;\n children: unknown;\n attributes?: Record<string, string | string[]>;\n };\n defaults?: NodeDefaultAttribute;\n\n // Optional custom complex types referenced by attributes like \"X[]\" or \"X\"\n // Each entry maps a type name (e.g., \"EventObject\") to its field schema\n // where the inner record maps fieldName -> primitive type or enum options\n types?: Record<string, Record<string, string | string[]>>;\n // Optional defaults to be applied to node.attributes if not provided\n meta?: PatternMeta;\n};\n\nconst patterns: Pattern[] = generatedPatterns as unknown as Pattern[];\n\nexport type BuilderPlatform = 'web' | 'native';\n\nfunction normalizePlatform(platform?: BuilderPlatform | null): BuilderPlatform {\n return platform === 'native' ? 'native' : 'web';\n}\n\n/**\n * Keys that conceptually behave like component props (behavior/flags) rather than\n * style properties. These should NOT be normalized into `attributes.style`.\n */\nexport const NON_STYLE_ATTRIBUTE_KEYS = new Set<string>([\n 'scrollable',\n 'showEllipsis',\n 'adjustsFontSizeToFit',\n]);\n\n/**\n * schemaVersion=2 stores style-like keys inside `attributes.style`.\n *\n * We treat View+Text schema keys as style-like by default, but explicitly exclude\n * known non-style props (behavior flags).\n */\nexport function getStyleAttributeKeySet(): Set<string> {\n const viewSchema = getAttributeSchema('View') ?? {};\n const textSchema = getAttributeSchema('Text') ?? {};\n const viewStyle =\n typeof (viewSchema as any)?.style === 'object' && (viewSchema as any)?.style\n ? Object.keys((viewSchema as any).style)\n : Object.keys(viewSchema);\n const textStyle =\n typeof (textSchema as any)?.style === 'object' && (textSchema as any)?.style\n ? Object.keys((textSchema as any).style)\n : Object.keys(textSchema);\n const out = new Set<string>([...viewStyle, ...textStyle]);\n for (const k of NON_STYLE_ATTRIBUTE_KEYS) out.delete(k);\n return out;\n}\n\nfunction adjustMetaForPlatform(\n meta: Record<string, AttributeMeta> | undefined,\n platform?: BuilderPlatform,\n): Record<string, AttributeMeta> | undefined {\n if (!meta) return undefined;\n const p = normalizePlatform(platform);\n\n // Values that are not directly style-friendly for the target platform should be shown under \"other\"\n // (so they remain editable, but are clearly non-style / platform-specific behavior).\n const moveToOtherAlways = new Set<string>(['scrollable']);\n const moveToOtherOnWeb = new Set<string>([\n // RN-only shorthands; on web they are translated to paddingLeft/Right, etc.\n 'paddingHorizontal',\n 'paddingVertical',\n 'marginHorizontal',\n 'marginVertical',\n ]);\n const moveToOtherOnNative = new Set<string>([\n // CSS-only layout convenience (not widely supported in RN style across versions).\n 'gap',\n // Web-only text behaviors (implemented via DOM).\n 'showEllipsis',\n 'adjustsFontSizeToFit',\n ]);\n\n const shouldMove = (key: string) =>\n moveToOtherAlways.has(key) ||\n (p === 'web' ? moveToOtherOnWeb.has(key) : moveToOtherOnNative.has(key));\n\n let changed = false;\n const out: Record<string, AttributeMeta> = {};\n for (const [key, value] of Object.entries(meta)) {\n if (!value || typeof value !== 'object') {\n out[key] = value;\n continue;\n }\n if (shouldMove(key)) {\n out[key] = { ...value, category: 'other', specialCategory: null };\n changed = true;\n } else {\n out[key] = value;\n }\n }\n return changed ? out : meta;\n}\n\n// Build a fast lookup map without normalization for direct access\nconst patternIndex: Map<string, Pattern> = new Map<string, Pattern>(\n patterns.map((p) => [p.pattern.type, p]),\n);\n\nfunction pascalToCamelCase(s: string): string {\n if (!s) return s;\n return s[0].toLowerCase() + s.slice(1);\n}\n\nfunction pascalToKebabCase(s: string): string {\n if (!s) return s;\n // BackgroundImage -> background-image, IAPBackground -> iap-background\n return s\n .replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n .replace(/([A-Z]+)([A-Z][a-z0-9]+)/g, '$1-$2')\n .toLowerCase();\n}\n\nconst typeAliases: Map<string, string> = new Map<string, string>();\nfor (const p of patterns) {\n const canonical = p?.pattern?.type;\n if (typeof canonical !== 'string' || !canonical) continue;\n const aliases = [\n canonical,\n canonical.toLowerCase(),\n pascalToCamelCase(canonical),\n pascalToKebabCase(canonical),\n ];\n for (const a of aliases) {\n if (!a) continue;\n if (!typeAliases.has(a)) {\n typeAliases.set(a, canonical);\n }\n }\n}\n\n/** Normalize legacy/variant component type strings to the canonical pattern.type (PascalCase). */\nexport function normalizeComponentType(\n type?: string | null,\n): string | undefined {\n if (typeof type !== 'string' || !type) return undefined;\n if (patternIndex.has(type)) return type;\n return typeAliases.get(type) ?? typeAliases.get(type.toLowerCase());\n}\n\nexport function getPatternByType(type?: string | null): Pattern | undefined {\n if (typeof type !== 'string') return undefined;\n const normalized = normalizeComponentType(type) ?? type;\n return patternIndex.get(normalized);\n}\n\nexport function getAttributeSchema(\n type?: string | null,\n): Record<string, string | string[]> | undefined {\n const p = getPatternByType(type);\n return p?.pattern.attributes;\n}\n\nexport function getAttributeMeta(\n type?: string | null,\n platform?: BuilderPlatform,\n): Record<string, AttributeMeta> | undefined {\n const p = getPatternByType(type);\n const styles = p?.meta?.styles;\n const attributes = p?.meta?.attributes;\n\n // Some patterns store style meta under `meta.attributes.styles` (nested) instead of `meta.styles`.\n const nestedStyles =\n attributes &&\n typeof attributes === 'object' &&\n (attributes as any).styles &&\n typeof (attributes as any).styles === 'object'\n ? ((attributes as any).styles as Record<string, AttributeMeta>)\n : undefined;\n\n // When `meta.attributes.styles` exists, treat `meta.attributes` (minus `styles`) as non-style meta.\n const attributesWithoutNestedStyles =\n attributes && typeof attributes === 'object'\n ? Object.fromEntries(\n Object.entries(attributes as Record<string, unknown>).filter(\n ([k]) => k !== 'styles',\n ),\n )\n : attributes;\n\n // schemaVersion=2 prefers `meta.styles` but some repos split UI meta into:\n // - meta.styles: style-tab fields\n // - meta.attributes: non-style fields (container/other)\n // Merge both to keep the editor + platform adjustments working.\n const merged =\n styles || attributesWithoutNestedStyles || nestedStyles\n ? {\n ...(attributesWithoutNestedStyles as Record<string, AttributeMeta>),\n ...(styles as Record<string, AttributeMeta>),\n ...(nestedStyles as Record<string, AttributeMeta>),\n }\n : undefined;\n\n return adjustMetaForPlatform(merged, platform);\n}\n\n/** Returns defaults block (if any) for a given component type */\nexport function getDefaultsForType(\n type?: string | null,\n): NodeDefaultAttribute | undefined {\n const p = getPatternByType(type);\n return p?.defaults as NodeDefaultAttribute | undefined;\n}\n\n/**\n * Returns the schema of a custom complex type declared under a component pattern's `types` block.\n * For example, OnboardButton.pattern.types.EventObject\n */\nexport function getTypeSchema(\n componentType?: string | null,\n typeName?: string | null,\n): Record<string, string | string[]> | undefined {\n if (!componentType || !typeName) return undefined;\n const p = getPatternByType(componentType);\n // Some JSON imports may not type-check \"types\" so we fallback to any access\n const types: Record<string, Record<string, string | string[]>> | undefined = (\n p as unknown as {\n types?: Record<string, Record<string, string | string[]>>;\n }\n )?.types;\n return types?.[typeName];\n}\n\n/** Utility: returns true if the type name refers to a primitive scalar */\nexport function isPrimitiveType(typeName: string): boolean {\n return (\n typeName === 'string' ||\n typeName === 'number' ||\n typeName === 'boolean' ||\n typeName === 'color' ||\n typeName === 'size' ||\n typeName === 'fontFamily' ||\n typeName === 'fontWeight' ||\n typeName === 'iconType'\n );\n}\n\n/** Utility: parse `X[]` forms and return the item type if present */\nexport function getArrayItemType(typeName: string): string | null {\n if (typeof typeName !== 'string') return null;\n return typeName.endsWith('[]') ? typeName.slice(0, -2) : null;\n}\n","import type { Node, NodeDefaultAttribute } from '../types/Node';\n\nexport function isNodeNullOrUndefined<T = NodeDefaultAttribute>(\n node: Node<T>,\n): boolean {\n return node === null || node === undefined;\n}\n\nexport function isNodeString<T = NodeDefaultAttribute>(node: Node<T>): boolean {\n return typeof node === 'string';\n}\n\nexport function isNodeArray<T = NodeDefaultAttribute>(node: Node<T>): boolean {\n return node instanceof Array;\n}\n\nexport function isEmptyObject<T = NodeDefaultAttribute>(\n node: Node<T>,\n): boolean {\n return (\n typeof node === 'object' &&\n node !== null &&\n !Array.isArray(node) &&\n Object.keys(node as object).length === 0\n );\n}\n","import type { Node, NodeData, NodeDefaultAttribute } from '../types/Node';\nimport {\n getArrayItemType,\n getAttributeSchema,\n getPatternByType,\n getTypeSchema,\n isPrimitiveType,\n normalizeComponentType,\n} from './patterns';\nimport { FONT_WEIGHT_OPTIONS, normalizeFontWeight } from './fontWeight';\nimport {\n isEmptyObject,\n isNodeArray,\n isNodeNullOrUndefined,\n isNodeString,\n} from './nodeGuards';\n\nexport type AnalyseResultWithPath = {\n valid: boolean;\n message?: string;\n path?: string;\n};\n\ntype AttributeTypeSpec = string | string[];\n// schema v2 supports nesting style specs under `attributes.style` (one level deep)\ntype NestedAttributeSchema = Record<string, AttributeTypeSpec>;\ntype AttributeSchema = Record<\n string,\n AttributeTypeSpec | NestedAttributeSchema\n>;\n\ntype PatternLike = {\n pattern: {\n type: string;\n children: unknown;\n attributes?: AttributeSchema;\n };\n};\n\nfunction ok(): AnalyseResultWithPath {\n return { valid: true };\n}\n\nfunction fail(message: string, path?: string): AnalyseResultWithPath {\n return { valid: false, message, path };\n}\n\nfunction joinPath(base: string, next: string): string {\n if (!base) return next;\n if (!next) return base;\n // next may already include brackets (e.g. [0])\n return next.startsWith('[') ? `${base}${next}` : `${base}.${next}`;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction getStyleSubSchema(\n schema: AttributeSchema | undefined,\n): AttributeSchema {\n if (!schema) return {};\n const maybe = schema.style;\n if (!maybe) return {};\n if (typeof maybe === 'string' || Array.isArray(maybe)) return {};\n return (maybe ?? {}) as AttributeSchema;\n}\n\nfunction isNodeDataLike(\n value: unknown,\n): value is NodeData<NodeDefaultAttribute> {\n if (!isPlainObject(value)) return false;\n const maybeType = (value as Record<string, unknown>).type;\n // `children` is optional in persisted JSON; treat missing as `undefined`.\n // The structural validator handles overall shape; the pattern validator should\n // focus on types/attributes/children rules, not require the key to exist.\n return typeof maybeType === 'string';\n}\n\nfunction normalizeTypeOrFallback(type: string): string {\n return normalizeComponentType(type) ?? type;\n}\n\nfunction getChildrenSpecTokens(pattern: PatternLike): string[] {\n const raw = pattern?.pattern?.children;\n if (typeof raw === 'string') return [raw];\n if (Array.isArray(raw)) return raw.filter((x) => typeof x === 'string');\n return [];\n}\n\nfunction splitChildrenSpec(tokens: string[]): {\n baseKinds: Set<'never' | 'string' | 'node'>;\n allowedComponentTypes: Set<string>;\n} {\n const baseKinds = new Set<'never' | 'string' | 'node'>();\n const allowedComponentTypes = new Set<string>();\n for (const t of tokens) {\n // NOTE: pattern.children no longer uses the 'array' token.\n // 'node' means \"a node OR an array of nodes\".\n if (t === 'never' || t === 'string' || t === 'node') {\n baseKinds.add(t);\n } else if (t === 'array') {\n // Backwards-compat: treat 'array' as 'node'\n baseKinds.add('node');\n } else if (typeof t === 'string' && t) {\n allowedComponentTypes.add(normalizeTypeOrFallback(t));\n }\n }\n return { baseKinds, allowedComponentTypes };\n}\n\nfunction validateChildrenNeverRule(\n children: Node<NodeDefaultAttribute>,\n baseKinds: Set<'never' | 'string' | 'node'>,\n path: string,\n): AnalyseResultWithPath {\n if (!baseKinds.has('never')) return ok();\n if (isNodeNullOrUndefined(children) || isEmptyObject(children)) return ok();\n return fail(`Children not allowed (pattern.children = \"never\")`, path);\n}\n\nfunction validateChildrenKindRule(\n children: Node<NodeDefaultAttribute>,\n baseKinds: Set<'never' | 'string' | 'node'>,\n allowedComponentTypes: Set<string>,\n path: string,\n): AnalyseResultWithPath {\n if (isNodeNullOrUndefined(children) || isEmptyObject(children)) return ok();\n\n // Component-type specs allow either a single node or an array of nodes.\n if (allowedComponentTypes.size > 0) {\n if (isNodeArray(children)) return ok();\n if (isNodeDataLike(children)) return ok();\n return fail(\n `Children must be a node or array of nodes (allowed: ${Array.from(\n allowedComponentTypes,\n ).join(', ')})`,\n path,\n );\n }\n\n if (isNodeString(children)) {\n return baseKinds.has('string')\n ? ok()\n : fail(`Children must not be a string`, path);\n }\n if (isNodeArray(children)) {\n // 'node' allows both a single node and an array of nodes\n return baseKinds.has('node')\n ? ok()\n : fail(`Children must not be an array`, path);\n }\n if (isNodeDataLike(children)) {\n return baseKinds.has('node')\n ? ok()\n : fail(`Children must not be a node`, path);\n }\n\n // Unknown object shape\n return fail(`Children has invalid shape`, path);\n}\n\nfunction validateChildrenAllowedComponentTypesRule(\n children: Node<NodeDefaultAttribute>,\n allowedComponentTypes: Set<string>,\n path: string,\n): AnalyseResultWithPath {\n if (allowedComponentTypes.size === 0) return ok();\n if (isNodeNullOrUndefined(children) || isEmptyObject(children)) return ok();\n\n const allowed = Array.from(allowedComponentTypes);\n\n const validateChildType = (child: unknown, childPath: string) => {\n if (!isNodeDataLike(child)) {\n return fail(`Child must be an object node`, childPath);\n }\n const actual = normalizeTypeOrFallback(child.type);\n if (!allowedComponentTypes.has(actual)) {\n return fail(\n `Child type \"${child.type}\" is not allowed here (allowed: ${allowed.join(\n ', ',\n )})`,\n joinPath(childPath, 'type'),\n );\n }\n return ok();\n };\n\n if (isNodeArray(children)) {\n const arr = children as unknown[];\n for (let i = 0; i < arr.length; i++) {\n const res = validateChildType(arr[i], `${path}[${i}]`);\n if (!res.valid) return res;\n }\n return ok();\n }\n\n return validateChildType(children, path);\n}\n\nfunction validateChildrenByPattern(\n nodeData: NodeData<NodeDefaultAttribute>,\n pattern: PatternLike,\n path: string,\n): AnalyseResultWithPath {\n const tokens = getChildrenSpecTokens(pattern);\n const { baseKinds, allowedComponentTypes } = splitChildrenSpec(tokens);\n\n const neverRes = validateChildrenNeverRule(\n nodeData.children,\n baseKinds,\n path,\n );\n if (!neverRes.valid) return neverRes;\n\n const kindRes = validateChildrenKindRule(\n nodeData.children,\n baseKinds,\n allowedComponentTypes,\n path,\n );\n if (!kindRes.valid) return kindRes;\n\n return validateChildrenAllowedComponentTypesRule(\n nodeData.children,\n allowedComponentTypes,\n path,\n );\n}\n\nfunction validatePrimitiveValue(\n value: unknown,\n primitiveType: string,\n path: string,\n): AnalyseResultWithPath {\n switch (primitiveType) {\n case 'string':\n return typeof value === 'string' ? ok() : fail(`Expected string`, path);\n case 'number':\n return typeof value === 'number' ? ok() : fail(`Expected number`, path);\n case 'boolean':\n return typeof value === 'boolean' ? ok() : fail(`Expected boolean`, path);\n case 'color':\n return typeof value === 'string'\n ? ok()\n : fail(`Expected color (string)`, path);\n case 'size':\n // Sizes can be numbers or strings like \"16@fs\" / \"100%\" / \"20px\"\n return typeof value === 'number' || typeof value === 'string'\n ? ok()\n : fail(`Expected size (string or number)`, path);\n case 'fontWeight': {\n const normalized = normalizeFontWeight(value);\n if (normalized) return ok();\n return fail(\n `Expected fontWeight (${FONT_WEIGHT_OPTIONS.join(', ')})`,\n path,\n );\n }\n case 'iconType':\n return typeof value === 'string'\n ? ok()\n : fail(`Expected iconType (string)`, path);\n default:\n return fail(`Unknown primitive type \"${primitiveType}\"`, path);\n }\n}\n\nfunction validateEnumValue(\n value: unknown,\n options: string[],\n path: string,\n): AnalyseResultWithPath {\n if (typeof value === 'string') {\n return options.includes(value)\n ? ok()\n : fail(`Expected one of: ${options.join(', ')}`, path);\n }\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (typeof v !== 'string' || !options.includes(v)) {\n return fail(\n `Expected an array of: ${options.join(', ')}`,\n `${path}[${i}]`,\n );\n }\n }\n return ok();\n }\n return fail(`Expected a string or string[] enum value`, path);\n}\n\nfunction validateCustomObjectValue(\n componentType: string,\n value: unknown,\n typeName: string,\n path: string,\n): AnalyseResultWithPath {\n const schema = getTypeSchema(componentType, typeName);\n if (!schema) {\n return fail(`Unknown custom type \"${typeName}\"`, path);\n }\n if (!isPlainObject(value)) {\n return fail(`Expected object for type \"${typeName}\"`, path);\n }\n\n for (const [fieldName, fieldSpec] of Object.entries(schema)) {\n if (!(fieldName in value)) continue;\n const fieldValue = (value as Record<string, unknown>)[fieldName];\n const fieldPath = joinPath(path, fieldName);\n const res = validateAttributeValue(\n componentType,\n fieldValue,\n fieldSpec,\n fieldPath,\n );\n if (!res.valid) return res;\n }\n\n return ok();\n}\n\nfunction validateAttributeValue(\n componentType: string,\n value: unknown,\n spec: AttributeTypeSpec,\n path: string,\n): AnalyseResultWithPath {\n // Pattern validation does not enforce requiredness (it only validates types for\n // keys that exist). Treat null/undefined as \"unset\" so persisted JSON can use\n // null to clear fields (e.g. events[].navigate_to = null).\n if (value == null) return ok();\n\n if (Array.isArray(spec)) {\n return validateEnumValue(value, spec, path);\n }\n\n const arrayItemType = getArrayItemType(spec);\n if (arrayItemType) {\n if (!Array.isArray(value)) {\n return fail(`Expected array for type \"${spec}\"`, path);\n }\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const itemPath = `${path}[${i}]`;\n const res = validateAttributeValue(\n componentType,\n item,\n arrayItemType,\n itemPath,\n );\n if (!res.valid) return res;\n }\n return ok();\n }\n\n if (isPrimitiveType(spec)) {\n return validatePrimitiveValue(value, spec, path);\n }\n\n return validateCustomObjectValue(componentType, value, spec, path);\n}\n\nfunction validateAttributesByPattern(\n nodeData: NodeData<NodeDefaultAttribute>,\n pattern: PatternLike,\n path: string,\n): AnalyseResultWithPath {\n const attrs = nodeData.attributes;\n if (attrs == null) return ok();\n if (!isPlainObject(attrs)) return fail(`attributes must be an object`, path);\n\n const schema: AttributeSchema = (getAttributeSchema(pattern.pattern.type) ??\n pattern.pattern.attributes ??\n {}) as AttributeSchema;\n const styleSchema = getStyleSubSchema(schema);\n\n // Validate nested `attributes.style` as an object; validate any style keys that also exist in schema.\n const maybeStyle = (attrs as Record<string, unknown>).style;\n if (maybeStyle != null) {\n if (!isPlainObject(maybeStyle)) {\n return fail(`style must be an object`, joinPath(path, 'style'));\n }\n for (const [styleKey, styleValue] of Object.entries(\n maybeStyle as Record<string, unknown>,\n )) {\n const spec = (styleSchema?.[styleKey] ?? schema?.[styleKey]) as\n | AttributeTypeSpec\n | undefined;\n if (!spec) continue; // allow unknown style keys (free-form CSSProperties)\n const res = validateAttributeValue(\n pattern.pattern.type,\n styleValue,\n spec,\n joinPath(joinPath(path, 'style'), styleKey),\n );\n if (!res.valid) return res;\n }\n }\n\n for (const [attrName, attrValue] of Object.entries(attrs)) {\n if (attrName === 'style') continue;\n const attrSpec = schema?.[attrName] as AttributeTypeSpec | undefined;\n if (!attrSpec) {\n // Back-compat: allow legacy flat style keys even when the schema nests them.\n const legacyStyleSpec = styleSchema?.[attrName] as\n | AttributeTypeSpec\n | undefined;\n if (!legacyStyleSpec) {\n return fail(\n `Unknown attribute \"${attrName}\"`,\n joinPath(path, attrName),\n );\n }\n const res = validateAttributeValue(\n pattern.pattern.type,\n attrValue,\n legacyStyleSpec,\n joinPath(path, attrName),\n );\n if (!res.valid) return res;\n continue;\n }\n const res = validateAttributeValue(\n pattern.pattern.type,\n attrValue,\n attrSpec,\n joinPath(path, attrName),\n );\n if (!res.valid) return res;\n }\n\n return ok();\n}\n\nfunction validateNodeDataByPatterns(\n nodeData: NodeData<NodeDefaultAttribute>,\n path: string,\n): AnalyseResultWithPath {\n const normalizedType = normalizeTypeOrFallback(nodeData.type);\n const pattern = getPatternByType(normalizedType) as unknown as\n | PatternLike\n | undefined;\n if (!pattern) {\n return fail(\n `Unknown component type \"${nodeData.type}\"`,\n joinPath(path, 'type'),\n );\n }\n\n const attrRes = validateAttributesByPattern(\n { ...nodeData, type: normalizedType },\n pattern,\n joinPath(path, 'attributes'),\n );\n if (!attrRes.valid) return attrRes;\n\n const childrenRes = validateChildrenByPattern(\n { ...nodeData, type: normalizedType },\n pattern,\n joinPath(path, 'children'),\n );\n if (!childrenRes.valid) return childrenRes;\n\n return ok();\n}\n\nfunction validateAnyNodeByPatterns(\n node: Node<NodeDefaultAttribute>,\n path: string,\n): AnalyseResultWithPath {\n if (\n isNodeNullOrUndefined(node) ||\n isNodeString(node) ||\n isEmptyObject(node)\n ) {\n return ok();\n }\n\n if (isNodeArray(node)) {\n const arr = node as unknown as Node<NodeDefaultAttribute>[];\n for (let i = 0; i < arr.length; i++) {\n const res = validateAnyNodeByPatterns(arr[i], `${path}[${i}]`);\n if (!res.valid) return res;\n }\n return ok();\n }\n\n if (!isNodeDataLike(node)) {\n return fail(`Invalid node shape`, path);\n }\n\n const selfRes = validateNodeDataByPatterns(node, path);\n if (!selfRes.valid) return selfRes;\n\n return validateAnyNodeByPatterns(\n node.children as Node<NodeDefaultAttribute>,\n joinPath(path, 'children'),\n );\n}\n\n/**\n * Validates a Node tree against the generated component patterns:\n * - Enforces `pattern.children` including \"never\"\n * - Validates `attributes` against `pattern.attributes` (+ custom `types`)\n *\n * Notes:\n * - Null/undefined children are considered \"no children\" and are allowed even\n * when patterns expect some kind of children.\n */\nexport function analyseNodeByPatterns(\n node: Node<NodeDefaultAttribute>,\n): AnalyseResultWithPath {\n return validateAnyNodeByPatterns(node, 'root');\n}\n","import type { Node, NodeData, NodeDefaultAttribute } from '../types/Node';\nimport {\n isEmptyObject,\n isNodeArray,\n isNodeNullOrUndefined,\n isNodeString,\n} from './nodeGuards';\n\nexport type AnalyseResult = {\n valid: boolean;\n message?: string;\n};\n\n/**\n * Structural validation only:\n * - Ensures the input is a valid Node union recursively (null/string/array/object)\n * - Does NOT validate against component patterns.\n */\nexport function analyseNodeStructural(\n node: Node<NodeDefaultAttribute>,\n): AnalyseResult {\n if (isNodeNullOrUndefined(node)) {\n return { valid: true, message: 'null or undefined is valid' };\n }\n\n if (isNodeString(node)) {\n return { valid: true, message: 'string is valid' };\n }\n\n if (isNodeArray(node)) {\n const nodeArray = node as unknown as Node[];\n for (const value of nodeArray) {\n const res = analyseNodeStructural(value as Node<NodeDefaultAttribute>);\n if (!res.valid) return res;\n }\n return { valid: true, message: 'Array is valid' };\n }\n\n const recordData = node as NodeData;\n if (isEmptyObject(recordData)) {\n return { valid: true, message: 'empty object is valid' };\n }\n\n if (recordData.children) {\n const res = analyseNodeStructural(\n recordData.children as Node<NodeDefaultAttribute>,\n );\n if (!res.valid) return res;\n }\n\n return { valid: true, message: 'everything is structurally valid' };\n}\n","import type { Node, NodeData, NodeDefaultAttribute } from '../types/Node';\nimport { isNodeArray, isNodeNullOrUndefined, isNodeString } from './nodeGuards';\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction looksLikeSelectOptionObject(\n value: unknown,\n): value is { value: unknown } {\n if (!isPlainObject(value)) return false;\n // Avoid unwrapping actual node-like objects or typed objects that use `type`.\n if ('type' in value || 'children' in value || 'attributes' in value) {\n return false;\n }\n if (!('value' in value)) return false;\n const keys = Object.keys(value);\n // Typical shapes: { value }, { value, label }, { value, label, id }\n if (keys.length < 1 || keys.length > 3) return false;\n const allowed = new Set(['value', 'label', 'id']);\n for (const k of keys) if (!allowed.has(k)) return false;\n const v = (value as Record<string, unknown>).value;\n return (\n v == null ||\n typeof v === 'string' ||\n typeof v === 'number' ||\n typeof v === 'boolean'\n );\n}\n\nfunction normalizeUnknownValue(value: unknown): unknown {\n if (value == null) return value;\n\n if (Array.isArray(value)) {\n return value.map(normalizeUnknownValue);\n }\n\n if (!isPlainObject(value)) return value;\n\n if (looksLikeSelectOptionObject(value)) {\n return normalizeUnknownValue((value as { value: unknown }).value);\n }\n\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(value)) {\n out[k] = normalizeUnknownValue(v);\n }\n return out;\n}\n\n/**\n * Special-case normalization for persisted JSON before validation.\n *\n * Keep \"exceptions\" here rather than inside the core validation logic.\n */\nexport function normalizeNodeForValidation(\n node: Node<NodeDefaultAttribute>,\n): Node<NodeDefaultAttribute> {\n if (isNodeNullOrUndefined(node) || isNodeString(node)) {\n return node;\n }\n\n if (isNodeArray(node)) {\n const nodeArray = node as unknown as Node<NodeDefaultAttribute>[];\n return nodeArray.map(\n normalizeNodeForValidation,\n ) as unknown as Node<NodeDefaultAttribute>;\n }\n\n const recordData = node as NodeData<NodeDefaultAttribute>;\n\n const attributes = isPlainObject(recordData.attributes)\n ? (normalizeUnknownValue(recordData.attributes) as Record<string, unknown>)\n : recordData.attributes;\n\n const children =\n recordData.children !== undefined\n ? (normalizeNodeForValidation(\n recordData.children as Node<NodeDefaultAttribute>,\n ) as Node<NodeDefaultAttribute>)\n : recordData.children;\n\n return {\n ...recordData,\n attributes: attributes as any,\n children,\n };\n}\n","import { Node, NodeData, NodeDefaultAttribute } from '../types/Node';\nimport { generateRandomKeyForNode } from './generateRandomKeyForNode';\nimport { analyseNodeByPatterns } from './analyseNodeByPatterns';\nimport { analyseNodeStructural } from './analyseNodeStructural';\nimport { isNodeArray, isNodeNullOrUndefined, isNodeString } from './nodeGuards';\nimport { normalizeNodeForValidation } from './__special_exceptions';\n\nexport {\n isEmptyObject,\n isNodeArray,\n isNodeNullOrUndefined,\n isNodeString,\n} from './nodeGuards';\n\nfunction assignMissingKeys(\n node: Node<NodeDefaultAttribute>,\n usedKeys: Set<string>,\n): Node<NodeDefaultAttribute> {\n if (isNodeNullOrUndefined(node) || isNodeString(node)) {\n return node;\n }\n\n if (isNodeArray(node)) {\n const nodeArray = node as unknown as Node<NodeDefaultAttribute>[];\n return nodeArray.map((child) =>\n assignMissingKeys(child, usedKeys),\n ) as unknown as Node<NodeDefaultAttribute>;\n }\n\n const recordData = node as NodeData<NodeDefaultAttribute>;\n\n let key = recordData.key;\n if (key && usedKeys.has(key)) {\n // Repair duplicate keys by generating a new unique key.\n key = undefined;\n }\n\n if (!key) {\n do {\n key = generateRandomKeyForNode(recordData.type);\n } while (usedKeys.has(key));\n }\n usedKeys.add(key);\n\n const children = recordData.children\n ? (assignMissingKeys(\n recordData.children as Node<NodeDefaultAttribute>,\n usedKeys,\n ) as Node<NodeDefaultAttribute>)\n : recordData.children;\n\n return {\n ...recordData,\n key,\n children,\n };\n}\n\nexport function analyseNode(node: Node<NodeDefaultAttribute>): {\n valid: boolean;\n message?: string;\n} {\n const structural = analyseNodeStructural(node);\n if (!structural.valid) return structural;\n\n const patternRes = analyseNodeByPatterns(node);\n if (!patternRes.valid) {\n const prefix = patternRes.path ? `${patternRes.path}: ` : '';\n return { valid: false, message: `${prefix}${patternRes.message ?? ''}` };\n }\n\n return { valid: true, message: 'Node is valid (structure + patterns)' };\n}\n\nexport function analyseAndProccess(\n node: Node<NodeDefaultAttribute>,\n): Node<NodeDefaultAttribute> | null {\n if (isNodeNullOrUndefined(node)) {\n return null;\n }\n\n // Normalize persisted JSON \"select option\" objects into primitives before\n // validation (e.g. { label, value } -> value). This commonly appears in\n // attributes like events[].navigate_to.\n const normalized = normalizeNodeForValidation(node);\n\n const { valid, message } = analyseNode(normalized);\n if (!valid) {\n throw new Error(message ?? 'Node is not valid');\n }\n\n const usedKeys = new Set<string>();\n return assignMissingKeys(normalized, usedKeys);\n}\n","import metaJson from '../assets/meta.json';\n\nexport type BuilderMeta = {\n supportedProjectVersion: string;\n reactBuilderVersion: string;\n};\n\nconst meta: BuilderMeta = {\n supportedProjectVersion: metaJson.supportedProjectVersion,\n reactBuilderVersion: metaJson.reactBuilderVersion,\n};\n\nexport function getMeta(): BuilderMeta {\n return { ...meta };\n}\n","import { Node, NodeData } from '../types/Node';\nimport { Project, ProjectBase } from '../types/Project';\n//TODO: deprecated olmasına rağmen snapshot testi ekle\n/**\n * @deprecated Legacy converter for old \"nova\" onboard JSON formats.\n * The built-in samples are now shipped in the new `Project<Node>` format,\n * so this should no longer be needed in normal usage.\n */\nexport function novaToJson(nova: ProjectBase<unknown>): Node {\n const layout = (nova.data as any).data?.layout;\n if (layout === 'onboard-layout') {\n return onboardNovaToJson(nova);\n }\n return null;\n}\n//@eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction onboardNovaToJson(nova: ProjectBase<unknown>): Node {\n const attributes =\n (nova?.data as any)?.data?.attributes ||\n (nova?.data as any)?.attributes ||\n {};\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const generalComponents = (attributes?.general_components || []) as any[];\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const pages = (attributes?.data || []) as any[];\n\n const dotsNode = mapDotsFromGeneralComponents(generalComponents);\n const footerNode = mapFooterFromGeneralComponents(generalComponents);\n const { carouselNode, providerLevelButtons } = buildCarouselFromPages(pages);\n\n const providerNode: NodeData = {\n type: 'OnboardProvider',\n key: (nova?.data as any)?.data?.key,\n children: [\n carouselNode,\n // Place dots above buttons in visual order\n ...(dotsNode ? [dotsNode] : []),\n ...(providerLevelButtons.length ? providerLevelButtons : []),\n ...(footerNode ? [footerNode] : []),\n ],\n attributes: {\n theme: (nova?.data as any)?.theme,\n },\n };\n\n const mainNode: NodeData = {\n type: 'Main',\n isMain: true,\n key: (nova?.data as any)?.data?.key,\n children: [providerNode],\n attributes: {\n // default safe area view on; can be overridden in the editor\n useSafeAreaView: true,\n },\n };\n\n // Provider should have its own key if needed; avoid duplicating root key on child.\n delete (providerNode as any).key;\n\n return mainNode;\n}\n//@eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction buildCarouselFromPages(pages: any[]): {\n carouselNode: NodeData;\n providerLevelButtons: Node[];\n} {\n const simplePages = pages.filter(\n (p) => p?.layout === 'simple-onboard-layout',\n );\n const pageKeyToIndex = new Map<string, number>();\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n simplePages.forEach((p: any, idx: number) => {\n const key = p?.attributes?.key;\n if (typeof key === 'string') pageKeyToIndex.set(key, idx);\n });\n\n const providerLevelButtons: Node[] = [];\n const items: Node[] = simplePages.map((page) =>\n buildCarouselItem(page, pageKeyToIndex, providerLevelButtons),\n );\n\n const carouselNode: NodeData = {\n type: 'Onboard',\n children: items as unknown as Node,\n };\n\n return { carouselNode, providerLevelButtons };\n}\n\nfunction buildCarouselItem(\n page: any,\n pageKeyToIndex: Map<string, number>,\n providerLevelButtons: Node[],\n): NodeData {\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const components = (page?.attributes?.components || []) as any[];\n const children: Node[] = [];\n\n // Resolve page index for condition mapping\n const currentKey = page?.attributes?.key as string | undefined;\n const pageIndex =\n typeof currentKey === 'string' && pageKeyToIndex.has(currentKey)\n ? pageKeyToIndex.get(currentKey)!\n : undefined;\n\n for (const comp of components) {\n if (comp?.layout === 'title-layout') {\n const title = comp?.attributes?.title_localization_key || '';\n const color = comp?.attributes?.title_color || undefined;\n const {\n fontSize: titleFontSize,\n textAlign: titleTextAlign,\n marginTop: titleMarginTop,\n fontWeight: titleFontWeight,\n } = extractTextStyleAttributesFromComponent(comp);\n children.push({\n type: 'OnboardTitle',\n attributes:\n color ||\n titleFontSize ||\n titleTextAlign ||\n titleMarginTop ||\n titleFontWeight\n ? {\n ...(color ? { color } : {}),\n ...(typeof titleFontSize === 'number'\n ? { fontSize: titleFontSize }\n : {}),\n ...(titleTextAlign ? { textAlign: titleTextAlign } : {}),\n ...(typeof titleMarginTop === 'number'\n ? { marginTop: titleMarginTop }\n : {}),\n ...(titleFontWeight ? { fontWeight: titleFontWeight } : {}),\n }\n : undefined,\n children: title,\n });\n } else if (comp?.layout === 'subtitle-layout') {\n const subtitle = comp?.attributes?.subtitle_localization_key || '';\n const color = comp?.attributes?.subtitle_color || undefined;\n const {\n fontSize: subtitleFontSize,\n textAlign: subtitleTextAlign,\n marginTop: subtitleMarginTop,\n fontWeight: subtitleFontWeight,\n } = extractTextStyleAttributesFromComponent(comp);\n children.push({\n type: 'OnboardSubtitle',\n attributes:\n color ||\n subtitleFontSize ||\n subtitleTextAlign ||\n subtitleMarginTop ||\n subtitleFontWeight\n ? {\n ...(color ? { color } : {}),\n ...(typeof subtitleFontSize === 'number'\n ? { fontSize: subtitleFontSize }\n : {}),\n ...(subtitleTextAlign ? { textAlign: subtitleTextAlign } : {}),\n ...(typeof subtitleMarginTop === 'number'\n ? { marginTop: subtitleMarginTop }\n : {}),\n ...(subtitleFontWeight\n ? { fontWeight: subtitleFontWeight }\n : {}),\n }\n : undefined,\n children: subtitle,\n });\n } else if (comp?.layout === 'image-layout') {\n const src = comp?.attributes?.image || comp?.attributes?.src || '';\n const rawHeight =\n comp?.attributes?.height ??\n comp?.attributes?.ios_height ??\n comp?.attributes?.android_height;\n const height =\n typeof rawHeight === 'string'\n ? Number.parseInt(rawHeight, 10)\n : typeof rawHeight === 'number'\n ? rawHeight\n : undefined;\n\n // derive resizeMode from is_bg_image and try to extract borderRadius from styles\n const isBgImage = Boolean(comp?.attributes?.is_bg_image);\n const imageStyle = extractViewStyleAttributesFromComponent(comp);\n // optional rich media\n const lottie = comp?.attributes?.lottie as string | undefined;\n const videoUrl = comp?.attributes?.video_url as string | undefined;\n\n if (src) {\n children.push({\n type: 'OnboardImage',\n attributes: {\n src,\n ...(height ? { height } : {}),\n resizeMode: isBgImage ? 'cover' : 'contain',\n ...(typeof imageStyle.borderRadius === 'number'\n ? { borderRadius: imageStyle.borderRadius }\n : {}),\n ...(typeof lottie === 'string' ? { lottie } : {}),\n ...(typeof videoUrl === 'string' ? { video_url: videoUrl } : {}),\n },\n children: undefined as unknown as Node,\n } as unknown as NodeData);\n }\n } else if (comp?.layout === 'Buttons') {\n const direction = comp?.attributes?.buttons_direction;\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const buttons = (comp?.attributes?.buttons || []) as any[];\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const buttonNodes: Node[] = [];\n for (const btn of buttons) {\n const attrs = btn?.attributes || {};\n const labelKey = attrs?.button_text_localization_key || '';\n const buttonTextColor = attrs?.button_text_color;\n const buttonBackgroundColor = attrs?.button_background_color;\n const animation = attrs?.animation as\n | 'simple-animation'\n | 'line-animation'\n | 'blur'\n | 'blur-animation'\n | 'blur-line-animation'\n | undefined;\n const animationColor = attrs?.animation_color as string | undefined;\n const flex = attrs?.flex ? Number(attrs.flex) : undefined;\n\n // Normalize events and compute Navigate target indices when resolvable\n let targetIndex: number | undefined = undefined;\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const actions = (attrs?.actions || []) as any[];\n const normalizedEvents: {\n type: 'Permission' | 'Navigate';\n permission?: string;\n navigate_to?: string | null;\n targetIndex?: number;\n }[] = [];\n for (const action of actions) {\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const events = (action?.attributes?.events || []) as any[];\n for (const e of events) {\n if (e?.layout === 'Permission') {\n const permission = e?.attributes?.permission as\n | string\n | undefined;\n normalizedEvents.push({ type: 'Permission', permission });\n } else if (e?.layout === 'Navigate') {\n const nextKey = e?.attributes?.next_page_key as\n | string\n | undefined;\n // If key exists among simple-onboard-layout pages, prefer index navigation\n const hasTarget =\n typeof nextKey === 'string' && pageKeyToIndex.has(nextKey);\n const navigate_to = hasTarget\n ? null\n : typeof nextKey === 'string'\n ? nextKey\n : null;\n normalizedEvents.push({\n type: 'Navigate',\n navigate_to,\n ...(hasTarget\n ? { targetIndex: pageKeyToIndex.get(nextKey!)! }\n : {}),\n });\n if (hasTarget) {\n targetIndex = pageKeyToIndex.get(nextKey!)!;\n }\n }\n }\n }\n\n buttonNodes.push({\n type: 'OnboardButton',\n attributes: {\n labelKey,\n ...(typeof buttonTextColor === 'string'\n ? { button_text_color: buttonTextColor }\n : {}),\n ...(typeof animation === 'string' ? { animation } : {}),\n ...(typeof animationColor === 'string'\n ? { animation_color: animationColor }\n : {}),\n ...(typeof buttonBackgroundColor === 'string'\n ? { button_background_color: buttonBackgroundColor }\n : {}),\n ...(typeof flex === 'number' ? { flex } : {}),\n ...(normalizedEvents.length ? { events: normalizedEvents } : {}),\n },\n children: undefined as unknown as Node,\n } as unknown as NodeData);\n }\n\n if (buttonNodes.length > 0) {\n // Place buttons at provider level with visibility conditioned by page index\n providerLevelButtons.push({\n type: 'OnboardButtons',\n attributes: {\n ...(direction ? { buttons_direction: direction } : {}),\n ...(typeof pageIndex === 'number'\n ? { condition: 'carousel-index', conditionVariable: pageIndex }\n : {}),\n },\n children: buttonNodes as unknown as Node,\n } as unknown as NodeData);\n }\n }\n }\n\n const pageKeyAttr = page?.attributes?.key;\n const resolvedKey =\n (typeof pageKeyAttr === 'string' && pageKeyAttr) ||\n (typeof page?.key === 'string' ? page.key : undefined);\n\n return {\n type: 'OnboardItem',\n ...(resolvedKey ? { key: resolvedKey } : {}),\n children,\n };\n}\n\n//@eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction extractTextStyleAttributesFromComponent(comp: any): {\n fontSize?: number;\n textAlign?: 'left' | 'center' | 'right' | 'justify';\n marginTop?: number;\n fontWeight?:\n | 'normal'\n | 'bold'\n | '100'\n | '200'\n | '300'\n | '400'\n | '500'\n | '600'\n | '700'\n | '800'\n | '900';\n} {\n const result: {\n fontSize?: number;\n textAlign?: 'left' | 'center' | 'right' | 'justify';\n marginTop?: number;\n fontWeight?:\n | 'normal'\n | 'bold'\n | '100'\n | '200'\n | '300'\n | '400'\n | '500'\n | '600'\n | '700'\n | '800'\n | '900';\n } = {};\n\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const stylesRoot = (comp?.attributes?.styles || []) as any[];\n if (!Array.isArray(stylesRoot) || stylesRoot.length === 0) return result;\n\n const allowedAligns = new Set(['left', 'center', 'right', 'justify']);\n const allowedWeights = new Set([\n 'normal',\n 'bold',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n ]);\n\n for (const s of stylesRoot) {\n if (s?.layout !== 'style-layout') continue;\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const nested = (s?.attributes?.styles || []) as any[];\n if (!Array.isArray(nested)) continue;\n for (const st of nested) {\n if (st?.layout !== 'Styles') continue;\n const type = st?.attributes?.type;\n if (type !== 'textStyle') continue;\n const style = st?.attributes?.style || {};\n\n const rawFontSize = style?.fontSize;\n if (typeof rawFontSize === 'number' && Number.isFinite(rawFontSize)) {\n result.fontSize = rawFontSize;\n } else if (typeof rawFontSize === 'string') {\n const n = Number.parseInt(rawFontSize, 10);\n if (Number.isFinite(n)) result.fontSize = n;\n }\n\n const align = style?.textAlign;\n if (typeof align === 'string' && allowedAligns.has(align)) {\n result.textAlign = align as typeof result.textAlign;\n }\n\n const rawMarginTop = style?.marginTop;\n if (typeof rawMarginTop === 'number' && Number.isFinite(rawMarginTop)) {\n result.marginTop = rawMarginTop;\n } else if (typeof rawMarginTop === 'string') {\n const n = Number.parseInt(rawMarginTop, 10);\n if (Number.isFinite(n)) result.marginTop = n;\n }\n\n const rawWeight = style?.fontWeight;\n let normalizedWeight: string | undefined;\n if (typeof rawWeight === 'number' && Number.isFinite(rawWeight)) {\n normalizedWeight = String(rawWeight);\n } else if (typeof rawWeight === 'string') {\n normalizedWeight = rawWeight;\n }\n if (normalizedWeight && allowedWeights.has(normalizedWeight)) {\n result.fontWeight = normalizedWeight as typeof result.fontWeight;\n }\n }\n }\n\n return result;\n}\n\n//@eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction extractViewStyleAttributesFromComponent(comp: any): {\n borderRadius?: number;\n} {\n const result: { borderRadius?: number } = {};\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const stylesRoot = (comp?.attributes?.styles || []) as any[];\n if (!Array.isArray(stylesRoot) || stylesRoot.length === 0) return result;\n for (const s of stylesRoot) {\n if (s?.layout !== 'style-layout') continue;\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const nested = (s?.attributes?.styles || []) as any[];\n if (!Array.isArray(nested)) continue;\n for (const st of nested) {\n if (st?.layout !== 'Styles') continue;\n const style = st?.attributes?.style || {};\n const rawBr = style?.borderRadius;\n if (typeof rawBr === 'number' && Number.isFinite(rawBr)) {\n result.borderRadius = rawBr;\n } else if (typeof rawBr === 'string') {\n const n = Number.parseInt(rawBr, 10);\n if (Number.isFinite(n)) result.borderRadius = n;\n }\n }\n }\n return result;\n}\n\nfunction mapDotsFromGeneralComponents(generalComponents: any[]): Node | null {\n const dots = generalComponents.find((gc) => gc?.layout === 'dots-layout');\n if (!dots) return null;\n const dotArray = dots?.attributes?.dot || [];\n const firstDot = dotArray?.[0];\n const dotType = firstDot?.layout as\n | 'expanding_dot'\n | 'normal_dot'\n | 'scaling_dot'\n | 'sliding_border'\n | 'sliding_dot'\n | 'liquid_like';\n const dotAttrs = (firstDot?.attributes || {}) as Record<string, unknown>;\n\n const parseNumber = (value: unknown): number | undefined => {\n if (typeof value === 'number') return value;\n if (typeof value === 'string' && value.trim().length > 0) {\n const n = Number(value);\n return Number.isFinite(n) ? n : undefined;\n }\n return undefined;\n };\n\n const inactiveDotOpacity = parseNumber(dotAttrs?.inactive_dot_opacity);\n const expandingDotWidth = parseNumber(dotAttrs?.expanding_dot_width);\n const dot_style =\n typeof dotAttrs?.dot_style === 'string'\n ? (dotAttrs.dot_style as string)\n : undefined;\n const container_style =\n typeof dotAttrs?.container_style === 'string'\n ? (dotAttrs.container_style as string)\n : undefined;\n const active_dot_color =\n typeof dotAttrs?.active_dot_color === 'string'\n ? (dotAttrs.active_dot_color as string)\n : undefined;\n\n const attributes: Record<string, unknown> = {};\n if (dotType) attributes.dotType = dotType;\n if (inactiveDotOpacity !== undefined)\n attributes.inactive_dot_opacity = inactiveDotOpacity;\n if (expandingDotWidth !== undefined)\n attributes.expanding_dot_width = expandingDotWidth;\n if (dot_style) attributes.dot_style = dot_style;\n if (container_style) attributes.container_style = container_style;\n if (active_dot_color) attributes.active_dot_color = active_dot_color;\n return {\n type: 'OnboardDot',\n attributes: Object.keys(attributes).length ? attributes : undefined,\n children: undefined as unknown as Node,\n } as unknown as NodeData;\n}\n\nfunction mapFooterFromGeneralComponents(generalComponents: any[]): Node | null {\n const footer = generalComponents.find((gc) => gc?.layout === 'footer-layout');\n if (!footer) return null;\n const texts = (footer?.attributes?.texts || []) as any[];\n const linkedWords: { text_key?: string; color?: string; page?: string }[] =\n [];\n let baseTextKey: string | undefined;\n let baseTextColor: string | undefined;\n\n for (const t of texts) {\n if (t?.layout === 'Text') {\n const textKey = t?.attributes?.text_localization_key || '';\n const color = t?.attributes?.text_color || undefined;\n if (!baseTextKey) baseTextKey = textKey;\n if (!baseTextColor && typeof color === 'string') baseTextColor = color;\n\n // Extract linked words if present\n const lws = (t?.attributes?.linkedwords || []) as any[];\n for (const w of lws) {\n if (w?.layout === 'LinkedWords') {\n const text_key = w?.attributes?.linked_word_localization_key as\n | string\n | undefined;\n const lwColor = w?.attributes?.linked_word_color as\n | string\n | undefined;\n const page = w?.attributes?.page as string | undefined;\n linkedWords.push({ text_key, color: lwColor, page });\n }\n }\n }\n }\n\n const attributes: Record<string, unknown> = { gap: 8 };\n if (baseTextKey) attributes.textLocalizationKey = baseTextKey;\n // OnboardFooter extends Text, so the canonical text color attribute is `color`.\n if (baseTextColor) attributes.color = baseTextColor;\n const first = linkedWords[0];\n const second = linkedWords[1];\n if (first) {\n if (first.text_key)\n attributes.linkedWordFirstLocalizationKey = first.text_key;\n if (first.color) attributes.linkedWordFirstColor = first.color;\n if (first.page) attributes.linkedWordFirstPage = first.page;\n }\n if (second) {\n if (second.text_key)\n attributes.linkedWordSecondLocalizationKey = second.text_key;\n if (second.color) attributes.linkedWordSecondColor = second.color;\n if (second.page) attributes.linkedWordSecondPage = second.page;\n }\n\n return {\n type: 'OnboardFooter',\n attributes,\n children: undefined as unknown as Node,\n } as NodeData;\n}\n","import { Node, NodeData } from '../types/Node';\n\nfunction isNodeData(value: Node): value is NodeData<Record<string, unknown>> {\n if (value === null || value === undefined) return false;\n if (Array.isArray(value)) return false;\n if (typeof value === 'string') return false;\n if (typeof value !== 'object') return false;\n return (\n 'type' in (value as Record<string, unknown>) &&\n 'children' in (value as Record<string, unknown>)\n );\n}\n\nexport function querySelector(node: Node, selector: string): NodeData[] {\n if (node === null || node === undefined) return [];\n if (!selector) return [];\n\n const isKeySearch = selector.startsWith('#');\n const keyToMatch = isKeySearch ? selector.slice(1) : undefined;\n\n const matches = (n: NodeData): boolean => {\n if (isKeySearch) return n.key === keyToMatch;\n return n.type === selector;\n };\n\n const result: NodeData[] = [];\n\n const visit = (current: Node) => {\n if (current === null || current === undefined) return;\n if (Array.isArray(current)) {\n for (const child of current) visit(child);\n return;\n }\n if (typeof current === 'string') return;\n if (isNodeData(current)) {\n if (matches(current)) result.push(current);\n visit(current.children);\n }\n };\n\n visit(node);\n return result;\n}\n","export const TRIBE_ASSETS_BASE_URL =\n 'https://tribemarketing.s3.eu-central-1.amazonaws.com/tribehub-assets/';\n\nexport enum TribeAssetName {\n Android = 'android.svg',\n Apple = 'apple.svg',\n Background = 'background.jpg',\n}\n\nfunction normalizeAssetName(name: string): string {\n const trimmed = name.trim().replace(/^\\/+/, '');\n\n // Common typos / aliases\n if (trimmed === 'backgorund.jpg') return 'background.jpg';\n if (trimmed === 'ios.svg') return 'apple.svg';\n\n return trimmed;\n}\n\nfunction encodePath(path: string): string {\n // Encode each segment but keep `/` separators intact.\n return path\n .split('/')\n .filter(Boolean)\n .map((seg) => encodeURIComponent(seg))\n .join('/');\n}\n\n/**\n * Returns a full CDN URL for a given asset name/path.\n *\n * Examples:\n * - getImage(TribeAssetName.Android)\n * - getImage(TribeAssetName.Apple) // also accepts 'ios.svg' via parseTribeAssetName/resolveImageSrc\n * - getImage(TribeAssetName.Background) // also accepts 'backgorund.jpg' via parseTribeAssetName/resolveImageSrc\n */\nexport function getImage(name: TribeAssetName): string {\n const normalized = normalizeAssetName(name);\n const base = TRIBE_ASSETS_BASE_URL.endsWith('/')\n ? TRIBE_ASSETS_BASE_URL\n : `${TRIBE_ASSETS_BASE_URL}/`;\n\n return `${base}${encodePath(normalized)}`;\n}\n\nexport function parseTribeAssetName(name: string): TribeAssetName | null {\n const normalized = normalizeAssetName(name);\n switch (normalized) {\n case TribeAssetName.Android:\n return TribeAssetName.Android;\n case TribeAssetName.Apple:\n return TribeAssetName.Apple;\n case TribeAssetName.Background:\n return TribeAssetName.Background;\n default:\n return null;\n }\n}\n\nfunction isAbsoluteUrl(src: string): boolean {\n // Covers http(s), data, blob, and protocol-relative URLs.\n return /^(https?:)?\\/\\//.test(src) || /^(data|blob):/.test(src);\n}\n\n/**\n * Resolves a `src` value into a usable URL:\n * - Absolute URLs are returned unchanged\n * - Known tribe asset names (or aliases) are converted via `getImage`\n * - Unknown relative strings are returned unchanged\n */\nexport function resolveImageSrc(src?: string | null): string | undefined {\n if (!src) return undefined;\n if (isAbsoluteUrl(src)) return src;\n const parsed = parseTribeAssetName(src);\n return parsed ? getImage(parsed) : src;\n}\n","import { NodeData, NodeDefaultAttribute } from '../types/Node';\nimport { getDefaultsForType } from '../utils/patterns';\n\nexport default function useNode<\n T extends NodeDefaultAttribute = NodeDefaultAttribute,\n>(node: NodeData<T>): NodeData<T> {\n const type = node?.type;\n const defaults = getDefaultsForType(type) as Partial<T> | undefined;\n if (!defaults) return node;\n const nodeAttributes = ((node.attributes as T) ?? ({} as T)) as T & {\n style?: Record<string, unknown>;\n };\n const defaultAttributes = defaults as T as T & {\n style?: Record<string, unknown>;\n };\n const mergedAttributes: T = {\n ...(defaultAttributes as T),\n ...(nodeAttributes as T),\n // Deep merge `style` so default style values aren't lost when the node provides partial style overrides.\n style: {\n ...(defaultAttributes?.style ?? {}),\n ...(nodeAttributes?.style ?? {}),\n },\n } as T;\n if (\n mergedAttributes &&\n typeof (mergedAttributes as any).style === 'object' &&\n (mergedAttributes as any).style != null &&\n Object.keys((mergedAttributes as any).style).length === 0\n ) {\n delete (mergedAttributes as any).style;\n }\n return { ...node, attributes: mergedAttributes };\n}\n","import { Project } from '../../types/Project';\nimport simple1 from './simple-1.json';\nimport simple2 from './simple-2.json';\nimport carouselSample from './carousel-sample.json';\nimport unvalidatedBuilder1 from './unvalidated-builder1.json';\nimport unvalidatedCrash1 from './unvalidated-crash1.json';\nimport unvalidatedCrashComponent1 from './unvalidated-crashcomponent1.json';\nimport unmigratedBuilder1 from './unmigrated-builder1.json';\nimport unmigratedBuilder1_1_1 from './unmigrated-builder-1.1.1.json';\nimport paywall1 from './paywall-1.json';\nimport vpnOnboard1 from './vpn-onboard-1.json';\nimport vpnOnboard2 from './vpn-onboard-2.json';\nimport vpnOnboard3 from './vpn-onboard-3.json';\nimport vpnOnboard4 from './vpn-onboard-4.json';\nimport vpnOnboard5 from './vpn-onboard-5.json';\nimport vpnOnboard6 from './vpn-onboard-6.json';\nimport { defaultAppConfig } from '../../types/PreviewConfig';\n\nfunction normalizeSample(sample: any): Project {\n return {\n ...sample,\n appConfig: { ...defaultAppConfig, ...(sample as any).appConfig },\n } as Project;\n}\n\nexport function getSamples(): Project[] {\n const onboardSamples = [\n vpnOnboard1,\n vpnOnboard2,\n vpnOnboard3,\n vpnOnboard4,\n vpnOnboard5,\n vpnOnboard6,\n ].map(normalizeSample);\n\n return [\n normalizeSample(simple1),\n normalizeSample(simple2),\n normalizeSample(carouselSample),\n normalizeSample(unvalidatedBuilder1),\n normalizeSample(unvalidatedCrash1),\n normalizeSample(unvalidatedCrashComponent1),\n normalizeSample(unmigratedBuilder1),\n normalizeSample(unmigratedBuilder1_1_1),\n normalizeSample(paywall1),\n ...onboardSamples,\n ];\n}\n\nexport function getBasicSamples(): Project[] {\n return [\n normalizeSample(simple1),\n normalizeSample(simple2),\n normalizeSample(carouselSample),\n normalizeSample(unvalidatedBuilder1),\n ];\n}\n\nexport function getOnboardSamples(): Project[] {\n return [\n vpnOnboard1,\n vpnOnboard2,\n vpnOnboard3,\n vpnOnboard4,\n vpnOnboard5,\n vpnOnboard6,\n ].map(normalizeSample);\n}\n\nexport function getPaywallSamples(): Project[] {\n return [normalizeSample(paywall1)];\n}\n"],"names":["defaultAppConfig","theme","isRtl","screenStyle","light","backgroundColor","color","dark","localication","baseSize","width","height","usePaywallCounter","useCloseStatusPaywall","useCarouselOptionsSeperator","useCalculateLocalizedPrice","useDiscountRate","BuilderContext","createContext","undefined","BuilderProvider","params","children","value","useMemo","products","Array","isArray","benefits","onPaywallClose","onPaywallSubscribe","appConfig","projectColors","fonts","appFont","platform","previewMode","selectedKey","_jsx","Provider","useBuilderParams","useContext","ParamsContext","localizationParams","otherParams","isProvided","ParamsProvider","LocalizationParamsProvider","useParams","useLocalizationParams","useLocalize","options","builderAppConfig","defaultLanguage","useCallback","keyOrText","text","Object","entries","reduce","acc","key","val","needle","split","join","String","replaceLocalizationParams","process","env","NODE_ENV","shimModule","exports","React","require$$0","objectIs","is","x","y","useState","useEffect","useLayoutEffect","useDebugValue","checkIfSnapshotChanged","inst","latestGetSnapshot","getSnapshot","nextValue","error","shim","window","document","createElement","subscribe","_useState","forceUpdate","useSyncExternalStoreShim_production","useSyncExternalStore","__REACT_DEVTOOLS_GLOBAL_HOOK__","registerInternalModuleStart","Error","didWarnOld18Alpha","didWarnUncachedGetSnapshot","startTransition","console","cachedValue","useSyncExternalStoreShim_development","registerInternalModuleStop","withSelectorModule","require$$1","useRef","withSelector_production","useSyncExternalStoreWithSelector","getServerSnapshot","selector","isEqual","instRef","current","hasValue","memoizedSelector","nextSnapshot","hasMemo","memoizedSnapshot","currentSelection","memoizedSelection","nextSelection","maybeGetServerSnapshot","withSelector_development","createStoreImpl","createState","state","listeners","Set","setState","partial","replace","nextState","previousState","assign","forEach","listener","getState","api","getInitialState","initialState","add","delete","useSyncExternalStoreExports","identity","arg","isIterable","obj","Symbol","iterator","hasIterableEntries","compareEntries","valueA","valueB","mapA","Map","mapB","size","has","get","getDevices","deviceList","devices","slice","sort","a","b","importance","getDefaultDevice","createJSONStorage","getStorage","storage","e","persistStorage","getItem","name","_a","parse","str2","JSON","str","Promise","then","setItem","newValue","stringify","removeItem","toThenable","fn","input","result","onFulfilled","_onRejected","this","_onFulfilled","catch","onRejected","useRenderStore","defaultEqualityFn","createStore","useBoundStoreWithEqualityFn","equalityFn","useStoreWithEqualityFn","createWithEqualityFn","config","baseOptions","set","localStorage","partialize","version","merge","persistedState","currentState","hasHydrated","hydrationListeners","finishHydrationListeners","args","warn","savedSetState","configResult","stateFromStorage","hydrate","_b","cb","_a2","postRehydrationCallback","onRehydrateStorage","call","bind","deserializedStorageValue","migrate","migration","migrationResult","migrated","migratedState","persist","setOptions","newOptions","clearStorage","getOptions","rehydrate","onHydrate","onFinishHydration","skipHydration","projectName","setProjectName","copiedNode","setCopiedNode","node","setCurrent","forceRender","incForceRender","device","setDevice","setAppConfig","setProjectColors","setPreviewMode","addProduct","productId","title","description","localizedPrice","price","currency","removeProduct","index","filter","_","idx","updateProduct","patch","prev","length","map","p","setProducts","clearProducts","setBenefits","clearBenefits","upsertBenefit","normalizedKey","trim","next","removeBenefit","renameBenefit","fromKey","toKey","from","to","logs","logLevel","setLogLevel","level","addLog","entry","now","Date","newEntry","id","Math","random","toString","timestamp","source","message","payload","clearLogs","setFonts","setAppFont","errors","setErrors","addError","clearErrors","loadedFonts","markFontLoaded","fontFamily","family","includes","getPrototypeOf","iteratorA","iteratorB","nextA","nextB","done","compareIterables","fallbackDevice","fallbackBaseSize","ensureNumber","fallback","Number","isFinite","getBaseDimensions","deviceWidth","deviceHeight","baseWidth","baseHeight","shortDimension","longDimension","verticalScale","s","vs","fs","parseSize","raw","lower","toLowerCase","endsWith","n","parseFloat","cut","numericPortion","numeric","STATIC_PREFIX","THEME_PREFIX","parseColor","trimmed","startsWith","token","resolved","STATIC_COLORS","resolvedTheme","themeTokens","THEME_COLORS","extractViewStyleNative","attributes","styleBag","style","direct","flexDirection","alignItems","justifyContent","setParsedSize","property","rawValue","parsed","marginHorizontal","flex","position","zIndex","FONT_WEIGHT_OPTIONS","normalizeFontWeight","asString","normalizeFamilyName","parseWeightKey","extractTextStyleNative","resolvedAppConfig","fallbackColor","fontSize","parsedFontSize","fontWeight","requestedWeight","weight","normalized","weightToNumericKey","normalizedFontFamily","def","familyName","find","f","findFontDefinition","resolvedWeightKey","k","v","reqKey","some","reqNum","best","bestDiff","abs","cand","diff","resolveClosestFontWeightKey","normalizedFontWeight","resolvedTextColor","textAlign","useExtractTextStyle","builderProjectColors","builderFonts","attrs","_style","rest","other","adjustsFontSizeToFit","showEllipsis","useExtractViewStyle","scrollable","useExtractImageStyle","styleWithResizeMode","resizeMode","nativeStyle","extractImageStyleNative","resizeModeFromStyle","generateRandomKeyForNode","type","substring","patterns","schemaVersion","pattern","gap","padding","paddingHorizontal","paddingVertical","paddingTop","paddingBottom","paddingLeft","paddingRight","margin","marginVertical","marginTop","marginBottom","marginLeft","marginRight","borderRadius","minWidth","maxWidth","minHeight","maxHeight","top","bottom","left","right","iconType","strokeWidth","meta","desiredParent","label","styles","category","specialCategory","preferedScale","specialCategories","offset","defaults","types","src","display","loop","dragFree","align","buttonType","skipNumber","dotType","allowUnknownAttributes","useSafeAreaView","forceVisible","hideAllAttributes","desiredChildren","labelKey","button_text_color","animation","animation_color","button_background_color","events","EventObject","permission","navigate_to","targetIndex","buttons_direction","forIndex","seperatorColor","condition","conditionVariable","inactive_dot_opacity","expanding_dot_width","active_dot_color","textLocalizationKey","linkedWordFirstLocalizationKey","linkedWordFirstColor","linkedWordFirstPage","linkedWordSecondLocalizationKey","linkedWordSecondColor","linkedWordSecondPage","video_url","lottie","mockableFeatures","selected","patternIndex","pascalToCamelCase","pascalToKebabCase","typeAliases","canonical","aliases","normalizeComponentType","getPatternByType","getAttributeSchema","getAttributeMeta","nestedStyles","attributesWithoutNestedStyles","fromEntries","normalizePlatform","moveToOtherAlways","moveToOtherOnWeb","moveToOtherOnNative","shouldMove","changed","out","adjustMetaForPlatform","getDefaultsForType","getTypeSchema","componentType","typeName","isPrimitiveType","getArrayItemType","isNodeNullOrUndefined","isNodeString","isNodeArray","isEmptyObject","keys","fail","path","valid","joinPath","base","isPlainObject","isNodeDataLike","normalizeTypeOrFallback","validateChildrenByPattern","nodeData","tokens","getChildrenSpecTokens","baseKinds","allowedComponentTypes","t","splitChildrenSpec","neverRes","validateChildrenNeverRule","kindRes","validateChildrenKindRule","allowed","validateChildType","child","childPath","actual","arr","i","res","validateChildrenAllowedComponentTypesRule","validateAttributeValue","spec","validateEnumValue","arrayItemType","primitiveType","validatePrimitiveValue","schema","fieldName","fieldSpec","validateCustomObjectValue","validateAttributesByPattern","styleSchema","maybe","getStyleSubSchema","maybeStyle","styleKey","styleValue","attrName","attrValue","attrSpec","legacyStyleSpec","validateAnyNodeByPatterns","selfRes","attrRes","childrenRes","validateNodeDataByPatterns","analyseNodeStructural","nodeArray","recordData","normalizeUnknownValue","looksLikeSelectOptionObject","normalizeNodeForValidation","assignMissingKeys","usedKeys","analyseNode","structural","patternRes","analyseNodeByPatterns","analyseAndProccess","supportedProjectVersion","reactBuilderVersion","getMeta","novaToJson","nova","layout","data","generalComponents","general_components","pages","dotsNode","dots","gc","dotArray","dot","firstDot","dotAttrs","parseNumber","inactiveDotOpacity","expandingDotWidth","dot_style","container_style","mapDotsFromGeneralComponents","footerNode","footer","texts","linkedWords","baseTextKey","baseTextColor","textKey","text_localization_key","text_color","lws","linkedwords","w","text_key","linked_word_localization_key","lwColor","linked_word_color","page","push","first","second","mapFooterFromGeneralComponents","carouselNode","providerLevelButtons","simplePages","pageKeyToIndex","items","components","currentKey","pageIndex","comp","title_localization_key","title_color","titleFontSize","titleTextAlign","titleMarginTop","titleFontWeight","extractTextStyleAttributesFromComponent","subtitle","subtitle_localization_key","subtitle_color","subtitleFontSize","subtitleTextAlign","subtitleMarginTop","subtitleFontWeight","image","rawHeight","ios_height","android_height","parseInt","isBgImage","Boolean","is_bg_image","imageStyle","extractViewStyleAttributesFromComponent","videoUrl","direction","buttons","buttonNodes","btn","button_text_localization_key","buttonTextColor","buttonBackgroundColor","animationColor","actions","normalizedEvents","action","nextKey","next_page_key","hasTarget","pageKeyAttr","resolvedKey","buildCarouselItem","buildCarouselFromPages","providerNode","mainNode","isMain","onboardNovaToJson","stylesRoot","allowedAligns","allowedWeights","nested","st","rawFontSize","rawMarginTop","rawWeight","normalizedWeight","rawBr","querySelector","isKeySearch","keyToMatch","visit","TRIBE_ASSETS_BASE_URL","TribeAssetName","normalizeAssetName","getImage","seg","encodeURIComponent","parseTribeAssetName","Android","Apple","Background","resolveImageSrc","test","isAbsoluteUrl","useNode","nodeAttributes","defaultAttributes","mergedAttributes","normalizeSample","sample","getSamples","onboardSamples","vpnOnboard1","vpnOnboard2","vpnOnboard3","vpnOnboard4","vpnOnboard5","vpnOnboard6","simple1","simple2","carouselSample","unvalidatedBuilder1","unvalidatedCrash1","unvalidatedCrashComponent1","unmigratedBuilder1","unmigratedBuilder1_1_1","paywall1","getBasicSamples","getOnboardSamples"],"mappings":"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","x_google_ignoreList":[13,14,15,16,17,18,19,20,21,23]}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/types/PreviewConfig.ts","../src/paywall/hooks/usePaywallCounter.ts","../src/paywall/hooks/useCloseStatusPaywall.ts","../src/paywall/hooks/useCarouselOptionsSeperator.ts","../src/paywall/hooks/useCalculateLocalizedPrice.ts","../src/paywall/hooks/useDiscountRate.ts","../src/components/BuilderProvider.tsx","../src/components/ParamsProvider.tsx","../src/components/LocalizationParamsProvider.tsx","../src/hooks/useParams.ts","../src/hooks/useLocalizationParams.ts","../src/hooks/useLocalize.ts","../src/utils/replaceLocalizationParams.ts","../node_modules/use-sync-external-store/shim/index.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js","../node_modules/use-sync-external-store/shim/with-selector.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js","../node_modules/zustand/esm/vanilla.mjs","../node_modules/zustand/esm/traditional.mjs","../node_modules/zustand/esm/vanilla/shallow.mjs","../src/utils/getDevices.ts","../node_modules/zustand/esm/middleware.mjs","../src/store.ts","../src/size-matters/index.ts","../src/utils/parseColor.ts","../src/utils/extractViewStyle/extractViewStyleNative.ts","../src/utils/fontWeight.ts","../src/utils/loadFontFamily.ts","../src/utils/extractTextStyle/extractTextStyleNative.ts","../src/attribute-analyser/style/native/useExtractTextStyle.ts","../src/attribute-analyser/style/native/useExtractViewStyle.ts","../src/attribute-analyser/style/native/useExtractImageStyle.ts","../src/utils/extractImageStyle.ts","../src/utils/generateRandomKeyForNode.ts","../src/build-components/patterns.generated.ts","../src/utils/patterns.ts","../src/utils/nodeGuards.ts","../src/utils/analyseNodeByPatterns.ts","../src/utils/analyseNodeStructural.ts","../src/utils/__special_exceptions.ts","../src/utils/analyseNode.ts","../src/utils/getMeta.ts","../src/utils/novaToJson.ts","../src/utils/querySelector.ts","../src/utils/getImage.ts","../src/build-components/useNode.ts","../src/assets/samples/getSamples.ts","../src/utils/getDefaultProject.ts"],"sourcesContent":["export interface AppConfig {\n theme: 'light' | 'dark';\n isRtl: boolean; //This could be device in future\n screenStyle: {\n light: { backgroundColor: string; color: string; seperatorColor?: string };\n dark: { backgroundColor: string; color: string; seperatorColor?: string };\n };\n localication: Localication;\n defaultLanguage?: string;\n baseSize: { width: number; height: number };\n}\n\nexport const defaultAppConfig: AppConfig = {\n theme: 'light',\n isRtl: false,\n screenStyle: {\n light: { backgroundColor: '#FDFDFD', color: '#161827' },\n dark: { backgroundColor: '#12131A', color: '#E9EBF9' },\n },\n localication: {},\n baseSize: { width: 375, height: 812 },\n};\n\nexport type Localication = Record<string, Record<string, string>>;\n","/**\n * Placeholder hook — will be implemented later.\n */\nexport function usePaywallCounter(): number {\n return 0;\n}\n","/**\n * Placeholder hook — will be implemented later.\n */\nexport function useCloseStatusPaywall(): boolean {\n return false;\n}\n","/**\n * Placeholder hook — will be implemented later.\n *\n * NOTE: name kept as `Seperator` to match existing external API usage.\n */\nexport function useCarouselOptionsSeperator(): string {\n return '';\n}\n","/**\n * Placeholder hook — will be implemented later.\n */\nexport function useCalculateLocalizedPrice(): string {\n return '';\n}\n","/**\n * Placeholder hook — will be implemented later.\n */\nexport function useDiscountRate(): number {\n return 0;\n}\n","import React, { createContext, useContext, useEffect, useMemo } from 'react';\nimport type { Product } from '../paywall/types/paywall-types';\nimport type { PaywallBenefits } from '../paywall/types/benefits';\nimport type { AppConfig } from '../types/PreviewConfig';\nimport type { Fonts } from '../types/Fonts';\nimport type { ProjectColors } from '../types/Project';\n\n// NOTE: We keep this context intentionally tiny.\n// IMPORTANT: This provider may be mounted once but consumed by multiple `build-components`\n// on the same screen. Keep the value minimal + stable to avoid unnecessary rerenders.\n// In React Native, `products` should be sourced from an IAP wrapper (e.g. `react-native-iap`)\n// and passed in via `params` from the host app.\nexport type Products = Product;\n\nexport type BuilderProviderParams = {\n products: Products[];\n benefits: PaywallBenefits;\n /**\n * Render platform for style extraction + meta filtering.\n * - 'web' (default): returns CSS-friendly styles for DOM rendering.\n * - 'native': returns React Native-friendly styles (no DOM-only props like overflowX/Y).\n */\n platform?: 'web' | 'native';\n onPaywallSubscribe?: (product?: Product) => void | boolean | Promise<boolean>;\n /**\n * Optional runtime config + styling inputs.\n * These are intentionally passed down via BuilderProvider so `build-components`\n * never need to touch `useRenderStore`.\n */\n appConfig?: AppConfig;\n projectColors?: ProjectColors;\n fonts?: Fonts;\n appFont?: string | undefined;\n /**\n * Optional selection info (used by builder UI; ignored by host runtime).\n */\n previewMode?: boolean;\n selectedKey?: string;\n};\n\ntype BuilderProviderProps = {\n params: BuilderProviderParams;\n children: React.ReactNode;\n};\n\nconst BuilderContext = createContext<BuilderProviderParams | undefined>(\n undefined,\n);\n\nexport function BuilderProvider({ params, children }: BuilderProviderProps) {\n const value = useMemo<BuilderProviderParams>(\n () => ({\n products: Array.isArray(params?.products) ? params.products : [],\n benefits:\n params?.benefits && typeof params.benefits === 'object'\n ? (params.benefits as PaywallBenefits)\n : {},\n onPaywallSubscribe:\n typeof params?.onPaywallSubscribe === 'function'\n ? params.onPaywallSubscribe\n : undefined,\n appConfig:\n params?.appConfig && typeof params.appConfig === 'object'\n ? (params.appConfig as AppConfig)\n : undefined,\n projectColors:\n params?.projectColors && typeof params.projectColors === 'object'\n ? (params.projectColors as ProjectColors)\n : undefined,\n fonts: Array.isArray(params?.fonts) ? (params.fonts as Fonts) : undefined,\n appFont: params?.appFont,\n platform: params?.platform === 'native' ? 'native' : 'web',\n previewMode: !!params?.previewMode,\n selectedKey:\n typeof params?.selectedKey === 'string'\n ? params.selectedKey\n : undefined,\n }),\n [\n params?.benefits,\n params?.products,\n params?.platform,\n params?.onPaywallSubscribe,\n params?.appConfig,\n params?.projectColors,\n params?.fonts,\n params?.appFont,\n params?.previewMode,\n params?.selectedKey,\n ],\n );\n\n useEffect(() => {\n console.info('[preview] BuilderProvider params', {\n previewMode: value.previewMode,\n selectedKey: value.selectedKey,\n platform: value.platform,\n productsCount: Array.isArray(value.products) ? value.products.length : 0,\n });\n }, [value.previewMode, value.selectedKey, value.platform, value.products]);\n\n return (\n <BuilderContext.Provider value={value}>{children}</BuilderContext.Provider>\n );\n}\n\nexport function useBuilderParams(): BuilderProviderParams {\n return (\n useContext(BuilderContext) ?? {\n products: [],\n benefits: {},\n platform: 'web',\n }\n );\n}\n","import React, { createContext, useMemo } from 'react';\n\nexport type LocalizationParams = Record<string, string>;\nexport type OtherParams = Record<string, string | boolean | number>;\n\nexport type ParamsContextValue = {\n localizationParams: LocalizationParams;\n otherParams: OtherParams;\n /**\n * `true` when the value comes from an actual `<ParamsProvider />` in the tree.\n * Used to detect nesting vs the default context value.\n */\n isProvided: boolean;\n};\n\nexport type ParamsProviderProps = {\n localizationParams?: LocalizationParams;\n otherParams?: OtherParams;\n children: React.ReactNode;\n};\n\nexport const ParamsContext = createContext<ParamsContextValue>({\n localizationParams: {},\n otherParams: {},\n isProvided: false,\n});\n\nexport function ParamsProvider({\n localizationParams,\n otherParams,\n children,\n}: ParamsProviderProps) {\n const value = useMemo<ParamsContextValue>(\n () => ({\n localizationParams: localizationParams ?? {},\n otherParams: otherParams ?? {},\n isProvided: true,\n }),\n [localizationParams, otherParams],\n );\n\n return (\n <ParamsContext.Provider value={value}>{children}</ParamsContext.Provider>\n );\n}\n","import React from 'react';\nimport { ParamsProvider, type LocalizationParams } from './ParamsProvider';\n\n/**\n * Backward-compatible wrapper.\n * Prefer `ParamsProvider` instead.\n */\nexport type LocalizationParamsProviderProps = {\n params: LocalizationParams;\n children: React.ReactNode;\n};\n\nexport function LocalizationParamsProvider({\n params,\n children,\n}: LocalizationParamsProviderProps) {\n return (\n <ParamsProvider localizationParams={params} otherParams={{}}>\n {children}\n </ParamsProvider>\n );\n}\n","import { useContext } from 'react';\nimport { ParamsContext } from '../components/ParamsProvider';\n\nexport function useParams() {\n return (\n useContext(ParamsContext) ?? {\n localizationParams: {},\n otherParams: {},\n isProvided: false,\n }\n );\n}\n","import { useParams } from './useParams';\n\nexport function useLocalizationParams() {\n return useParams().localizationParams ?? {};\n}\n","import { useCallback } from 'react';\nimport type { AppConfig } from '../types/PreviewConfig';\nimport { defaultAppConfig } from '../types/PreviewConfig';\nimport { useBuilderParams } from '../components/BuilderProvider';\nimport { useLocalizationParams } from './useLocalizationParams';\nimport { replaceLocalizationParams } from '../utils/replaceLocalizationParams';\n\nexport type LocalizeFn = (keyOrText: string) => string;\n\nexport function useLocalize(options?: { appConfig?: AppConfig }): LocalizeFn {\n const { appConfig: builderAppConfig } = useBuilderParams();\n const appConfig = options?.appConfig ?? builderAppConfig ?? defaultAppConfig;\n const { defaultLanguage, localication } = appConfig;\n const params = useLocalizationParams();\n\n return useCallback(\n (keyOrText: string) => {\n const raw =\n localication?.[defaultLanguage ?? 'en']?.[keyOrText] ?? keyOrText;\n return replaceLocalizationParams(raw, params);\n },\n [defaultLanguage, localication, params],\n );\n}\n","export function replaceLocalizationParams(\n text: string,\n params?: Record<string, string> | null,\n): string {\n if (!text) return text;\n if (!params) return text;\n\n return (\n Object.entries(params).reduce((acc, [key, val]) => {\n const needle = `@${key}`;\n // Replace all occurrences without regex escaping pitfalls.\n return acc.split(needle).join(String(val));\n }, text) || text\n );\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n var value = getSnapshot(),\n _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n}\nvar shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n","/**\n * @license React\n * use-sync-external-store-shim.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n }\n function useSyncExternalStore$2(subscribe, getSnapshot) {\n didWarnOld18Alpha ||\n void 0 === React.startTransition ||\n ((didWarnOld18Alpha = !0),\n console.error(\n \"You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release.\"\n ));\n var value = getSnapshot();\n if (!didWarnUncachedGetSnapshot) {\n var cachedValue = getSnapshot();\n objectIs(value, cachedValue) ||\n (console.error(\n \"The result of getSnapshot should be cached to avoid an infinite loop\"\n ),\n (didWarnUncachedGetSnapshot = !0));\n }\n cachedValue = useState({\n inst: { value: value, getSnapshot: getSnapshot }\n });\n var inst = cachedValue[0].inst,\n forceUpdate = cachedValue[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n }\n function checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n }\n function useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = require(\"react\"),\n objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue,\n didWarnOld18Alpha = !1,\n didWarnUncachedGetSnapshot = !1,\n shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\n exports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\"),\n shim = require(\"use-sync-external-store/shim\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n};\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = require(\"react\"),\n shim = require(\"use-sync-external-store/shim\"),\n objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\n exports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n ) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot))\n return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n };\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);\n\nexport { createStore };\n","import React from 'react';\nimport useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector.js';\nimport { createStore } from 'zustand/vanilla';\n\nconst { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;\nconst identity = (arg) => arg;\nfunction useStoreWithEqualityFn(api, selector = identity, equalityFn) {\n const slice = useSyncExternalStoreWithSelector(\n api.subscribe,\n api.getState,\n api.getInitialState,\n selector,\n equalityFn\n );\n React.useDebugValue(slice);\n return slice;\n}\nconst createWithEqualityFnImpl = (createState, defaultEqualityFn) => {\n const api = createStore(createState);\n const useBoundStoreWithEqualityFn = (selector, equalityFn = defaultEqualityFn) => useStoreWithEqualityFn(api, selector, equalityFn);\n Object.assign(useBoundStoreWithEqualityFn, api);\n return useBoundStoreWithEqualityFn;\n};\nconst createWithEqualityFn = ((createState, defaultEqualityFn) => createState ? createWithEqualityFnImpl(createState, defaultEqualityFn) : createWithEqualityFnImpl);\n\nexport { createWithEqualityFn, useStoreWithEqualityFn };\n","const isIterable = (obj) => Symbol.iterator in obj;\nconst hasIterableEntries = (value) => (\n // HACK: avoid checking entries type\n \"entries\" in value\n);\nconst compareEntries = (valueA, valueB) => {\n const mapA = valueA instanceof Map ? valueA : new Map(valueA.entries());\n const mapB = valueB instanceof Map ? valueB : new Map(valueB.entries());\n if (mapA.size !== mapB.size) {\n return false;\n }\n for (const [key, value] of mapA) {\n if (!mapB.has(key) || !Object.is(value, mapB.get(key))) {\n return false;\n }\n }\n return true;\n};\nconst compareIterables = (valueA, valueB) => {\n const iteratorA = valueA[Symbol.iterator]();\n const iteratorB = valueB[Symbol.iterator]();\n let nextA = iteratorA.next();\n let nextB = iteratorB.next();\n while (!nextA.done && !nextB.done) {\n if (!Object.is(nextA.value, nextB.value)) {\n return false;\n }\n nextA = iteratorA.next();\n nextB = iteratorB.next();\n }\n return !!nextA.done && !!nextB.done;\n};\nfunction shallow(valueA, valueB) {\n if (Object.is(valueA, valueB)) {\n return true;\n }\n if (typeof valueA !== \"object\" || valueA === null || typeof valueB !== \"object\" || valueB === null) {\n return false;\n }\n if (Object.getPrototypeOf(valueA) !== Object.getPrototypeOf(valueB)) {\n return false;\n }\n if (isIterable(valueA) && isIterable(valueB)) {\n if (hasIterableEntries(valueA) && hasIterableEntries(valueB)) {\n return compareEntries(valueA, valueB);\n }\n return compareIterables(valueA, valueB);\n }\n return compareEntries(\n { entries: () => Object.entries(valueA) },\n { entries: () => Object.entries(valueB) }\n );\n}\n\nexport { shallow };\n","import { Device } from '../types/Device';\nimport devices from '../assets/devices.json';\n\nexport function getDevices(): Device[] {\n const deviceList = (devices as Device[]).slice();\n deviceList.sort((a, b) => {\n const ai = a.importance ?? 999;\n const bi = b.importance ?? 999;\n return ai - bi;\n });\n return deviceList;\n}\n\n//TODO: object instead of function\nexport function getDefaultDevice(): Device {\n return getDevices()[0];\n}\n","const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...args) => api.dispatch(...args), ...initial };\n};\nconst redux = reduxImpl;\n\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name) => {\n const api = trackedConnections.get(name);\n if (!api) return {};\n return Object.fromEntries(\n Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])\n );\n};\nconst extractConnectionInformation = (store, extensionConnector, options) => {\n if (store === void 0) {\n return {\n type: \"untracked\",\n connection: extensionConnector.connect(options)\n };\n }\n const existingConnection = trackedConnections.get(options.name);\n if (existingConnection) {\n return { type: \"tracked\", store, ...existingConnection };\n }\n const newConnection = {\n connection: extensionConnector.connect(options),\n stores: {}\n };\n trackedConnections.set(options.name, newConnection);\n return { type: \"tracked\", store, ...newConnection };\n};\nconst removeStoreFromTrackedConnections = (name, store) => {\n if (store === void 0) return;\n const connectionInfo = trackedConnections.get(name);\n if (!connectionInfo) return;\n delete connectionInfo.stores[store];\n if (Object.keys(connectionInfo.stores).length === 0) {\n trackedConnections.delete(name);\n }\n};\nconst findCallerName = (stack) => {\n var _a, _b;\n if (!stack) return void 0;\n const traceLines = stack.split(\"\\n\");\n const apiSetStateLineIndex = traceLines.findIndex(\n (traceLine) => traceLine.includes(\"api.setState\")\n );\n if (apiSetStateLineIndex < 0) return void 0;\n const callerLine = ((_a = traceLines[apiSetStateLineIndex + 1]) == null ? void 0 : _a.trim()) || \"\";\n return (_b = /.+ (.+) .+/.exec(callerLine)) == null ? void 0 : _b[1];\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (e) {\n }\n if (!extensionConnector) {\n return fn(set, get, api);\n }\n const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n let isRecording = true;\n api.setState = ((state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording) return r;\n const action = nameOrAction === void 0 ? {\n type: anonymousActionType || findCallerName(new Error().stack) || \"anonymous\"\n } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction;\n if (store === void 0) {\n connection == null ? void 0 : connection.send(action, get());\n return r;\n }\n connection == null ? void 0 : connection.send(\n {\n ...action,\n type: `${store}/${action.type}`\n },\n {\n ...getTrackedConnectionState(options.name),\n [store]: api.getState()\n }\n );\n return r;\n });\n api.devtools = {\n cleanup: () => {\n if (connection && typeof connection.unsubscribe === \"function\") {\n connection.unsubscribe();\n }\n removeStoreFromTrackedConnections(options.name, store);\n }\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n if (connectionInformation.type === \"untracked\") {\n connection == null ? void 0 : connection.init(initialState);\n } else {\n connectionInformation.stores[connectionInformation.store] = api;\n connection == null ? void 0 : connection.init(\n Object.fromEntries(\n Object.entries(connectionInformation.stores).map(([key, store2]) => [\n key,\n key === connectionInformation.store ? initialState : store2.getState()\n ])\n )\n );\n }\n if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...args) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && args[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...args);\n };\n }\n connection.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n if (store === void 0) {\n setStateFromDevtools(action.state);\n return;\n }\n if (Object.keys(action.state).length !== 1) {\n console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format.\n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n }\n const stateFromDevtools = action.state[store];\n if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n setStateFromDevtools(stateFromDevtools);\n }\n return;\n }\n if (!api.dispatchFromDevtools) return;\n if (typeof api.dispatch !== \"function\") return;\n api.dispatch(action);\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n if (store === void 0) {\n return connection == null ? void 0 : connection.init(api.getState());\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"COMMIT\":\n if (store === void 0) {\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n setStateFromDevtools(state[store]);\n connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n setStateFromDevtools(state[store]);\n }\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState) return;\n if (store === void 0) {\n setStateFromDevtools(lastComputedState);\n } else {\n setStateFromDevtools(lastComputedState[store]);\n }\n connection == null ? void 0 : connection.send(\n null,\n // FIXME no-any\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, fn) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0) fn(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = ((selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n });\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nfunction combine(initialState, create) {\n return (...args) => Object.assign({}, initialState, create(...args));\n}\n\nfunction createJSONStorage(getStorage, options) {\n let storage;\n try {\n storage = getStorage();\n } catch (e) {\n return;\n }\n const persistStorage = {\n getItem: (name) => {\n var _a;\n const parse = (str2) => {\n if (str2 === null) {\n return null;\n }\n return JSON.parse(str2, options == null ? void 0 : options.reviver);\n };\n const str = (_a = storage.getItem(name)) != null ? _a : null;\n if (str instanceof Promise) {\n return str.then(parse);\n }\n return parse(str);\n },\n setItem: (name, newValue) => storage.setItem(name, JSON.stringify(newValue, options == null ? void 0 : options.replacer)),\n removeItem: (name) => storage.removeItem(name)\n };\n return persistStorage;\n}\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst persistImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n storage: createJSONStorage(() => localStorage),\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage = options.storage;\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const setItem = () => {\n const state = options.partialize({ ...get() });\n return storage.setItem(options.name, {\n state,\n version: options.version\n });\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n return setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n return setItem();\n },\n get,\n api\n );\n api.getInitialState = () => configResult;\n let stateFromStorage;\n const hydrate = () => {\n var _a, _b;\n if (!storage) return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => {\n var _a2;\n return cb((_a2 = get()) != null ? _a2 : configResult);\n });\n const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n const migration = options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n if (migration instanceof Promise) {\n return migration.then((result) => [true, result]);\n }\n return [true, migration];\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return [false, deserializedStorageValue.state];\n }\n }\n return [false, void 0];\n }).then((migrationResult) => {\n var _a2;\n const [migrated, migratedState] = migrationResult;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n if (migrated) {\n return setItem();\n }\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n stateFromStorage = get();\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.storage) {\n storage = newOptions.storage;\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n if (!options.skipHydration) {\n hydrate();\n }\n return stateFromStorage || configResult;\n};\nconst persist = persistImpl;\n\nexport { combine, createJSONStorage, devtools, persist, redux, subscribeWithSelector };\n","import { createWithEqualityFn } from 'zustand/traditional';\nimport { shallow } from 'zustand/shallow';\nimport type { Device } from './types/Device';\nimport {\n defaultAppConfig,\n type AppConfig,\n type Localication,\n} from './types/PreviewConfig';\nimport { getDefaultDevice } from './utils/getDevices';\nimport { ScreenStyle } from './RenderPage';\nimport { createJSONStorage, persist } from 'zustand/middleware';\nimport { Node } from './types/Node';\nimport type { LogEntry, LogLevel, ProjectColors } from './types/Project';\nimport type { Product } from './paywall/types/paywall-types';\nimport type {\n PaywallBenefits,\n PaywallBenefitValue,\n} from './paywall/types/benefits';\nimport type { Fonts } from './types/Fonts';\n//TODO: project base store and general store should be separated. We can we use context\ntype RenderStore = {\n projectName: string;\n setProjectName: (name: string) => void;\n copiedNode: Node | null;\n setCopiedNode: (node: Node | null) => void;\n current: Node | null;\n setCurrent: (node: Node | null) => void;\n forceRender: number;\n incForceRender: () => void;\n device: Device;\n setDevice: (device: Device) => void;\n appConfig: AppConfig;\n setAppConfig: (appConfig: AppConfig) => void;\n projectColors?: ProjectColors;\n setProjectColors: (projectColors?: ProjectColors) => void;\n previewMode: boolean;\n setPreviewMode: (previewMode: boolean) => void;\n // Mockable: products (persisted)\n products: Product[];\n addProduct: () => void;\n removeProduct: (index: number) => void;\n updateProduct: (index: number, patch: Partial<Product>) => void;\n setProducts: (products: Product[]) => void;\n clearProducts: () => void;\n // Mockable: benefits (persisted)\n benefits: PaywallBenefits;\n setBenefits: (benefits: PaywallBenefits) => void;\n clearBenefits: () => void;\n upsertBenefit: (key: string, value: PaywallBenefitValue) => void;\n removeBenefit: (key: string) => void;\n renameBenefit: (fromKey: string, toKey: string) => void;\n // Logging\n logs: LogEntry[];\n logLevel: LogLevel;\n setLogLevel: (level: LogLevel) => void;\n addLog: (\n entry: Omit<LogEntry, 'id' | 'timestamp'> & {\n id?: string;\n timestamp?: number;\n },\n ) => void;\n clearLogs: () => void;\n\n // Fonts (provided by host app)\n fonts: Fonts;\n setFonts: (fonts: Fonts) => void;\n // NOTE: appFont is intentionally non-optional as a prop in `ProjectPage`,\n // but the value itself can be undefined when the host can't determine it.\n appFont: string | undefined;\n setAppFont: (appFont: string | undefined) => void;\n // Validation/runtime errors surfaced to the host UI\n errors: string[];\n setErrors: (errors: string[]) => void;\n addError: (error: string) => void;\n clearErrors: () => void;\n // Cache loaded font families to avoid repeated loads\n loadedFonts: string[];\n markFontLoaded: (fontFamily: string) => void;\n};\n\nexport const useRenderStore = createWithEqualityFn<RenderStore>()(\n persist(\n (set) => ({\n projectName: '',\n setProjectName: (name) => set({ projectName: name }),\n copiedNode: null,\n setCopiedNode: (node) => set({ copiedNode: node }),\n current: null,\n setCurrent: (node) => set({ current: node }),\n forceRender: 0,\n incForceRender: () =>\n set((state) => ({ forceRender: state.forceRender + 1 })),\n device: getDefaultDevice(),\n setDevice: (device) => set({ device }),\n appConfig: defaultAppConfig,\n setAppConfig: (appConfig) => set({ appConfig }),\n projectColors: undefined,\n setProjectColors: (projectColors) => set({ projectColors }),\n previewMode: false,\n setPreviewMode: (previewMode) => set({ previewMode }),\n products: [],\n addProduct: () =>\n set((state) => ({\n products: [\n ...(Array.isArray(state.products) ? state.products : []),\n {\n productId: '',\n title: '',\n description: '',\n localizedPrice: '',\n price: '',\n currency: '',\n },\n ],\n })),\n removeProduct: (index) =>\n set((state) => ({\n products: state.products.filter((_, idx) => idx !== index),\n })),\n updateProduct: (index, patch) =>\n set((state) => {\n const prev = state.products;\n if (!Array.isArray(prev)) return state;\n if (index < 0 || index >= prev.length) return state;\n const next = prev.map((p, idx) =>\n idx === index ? { ...p, ...(patch ?? {}) } : p,\n );\n return { products: next };\n }),\n setProducts: (products) =>\n set({\n products: Array.isArray(products) ? products : [],\n }),\n clearProducts: () => set({ products: [] }),\n\n benefits: {},\n setBenefits: (benefits) =>\n set({\n benefits:\n benefits && typeof benefits === 'object' && !Array.isArray(benefits)\n ? (benefits as PaywallBenefits)\n : {},\n }),\n clearBenefits: () => set({ benefits: {} }),\n upsertBenefit: (key, value) =>\n set((state) => {\n const normalizedKey = typeof key === 'string' ? key.trim() : '';\n if (!normalizedKey) return state;\n if (\n typeof value !== 'string' &&\n typeof value !== 'number' &&\n typeof value !== 'boolean'\n ) {\n return state;\n }\n const prev = state.benefits;\n const next: PaywallBenefits = { ...(prev ?? {}) };\n next[normalizedKey] = value;\n return { benefits: next };\n }),\n removeBenefit: (key) =>\n set((state) => {\n const normalizedKey = typeof key === 'string' ? key.trim() : '';\n if (!normalizedKey) return state;\n const prev = state.benefits;\n if (!prev || typeof prev !== 'object') return state;\n if (!(normalizedKey in prev)) return state;\n const next: PaywallBenefits = { ...(prev ?? {}) };\n delete next[normalizedKey];\n return { benefits: next };\n }),\n renameBenefit: (fromKey, toKey) =>\n set((state) => {\n const from = typeof fromKey === 'string' ? fromKey.trim() : '';\n const to = typeof toKey === 'string' ? toKey.trim() : '';\n if (!from || !to) return state;\n if (from === to) return state;\n const prev = state.benefits;\n if (!prev || typeof prev !== 'object') return state;\n if (!(from in prev)) return state;\n const next: PaywallBenefits = { ...(prev ?? {}) };\n const value = next[from] as PaywallBenefitValue;\n delete next[from];\n next[to] = value;\n return { benefits: next };\n }),\n // Logging defaults\n logs: [],\n logLevel: 'INFO',\n setLogLevel: (level) => set({ logLevel: level }),\n addLog: (entry) =>\n set((state) => {\n const now = Date.now();\n const id =\n entry.id ?? `${now}-${Math.random().toString(36).slice(2, 8)}`;\n const timestamp = entry.timestamp ?? now;\n const newEntry: LogEntry = {\n id,\n timestamp,\n level: entry.level,\n source: entry.source,\n message: entry.message,\n payload: entry.payload,\n };\n return { logs: [...state.logs, newEntry] };\n }),\n clearLogs: () => set({ logs: [] }),\n\n fonts: [],\n setFonts: (fonts) => set({ fonts: Array.isArray(fonts) ? fonts : [] }),\n appFont: undefined,\n setAppFont: (appFont) => set({ appFont }),\n errors: [],\n setErrors: (errors) =>\n set({ errors: Array.isArray(errors) ? errors : [] }),\n addError: (error) =>\n set((state) => ({\n errors: [\n ...(Array.isArray(state.errors) ? state.errors : []),\n String(error),\n ],\n })),\n clearErrors: () => set({ errors: [] }),\n loadedFonts: [],\n markFontLoaded: (fontFamily) =>\n set((state) => {\n const family =\n typeof fontFamily === 'string' ? fontFamily.trim() : '';\n if (!family) return state;\n const prev = Array.isArray(state.loadedFonts)\n ? state.loadedFonts\n : [];\n if (prev.includes(family)) return state;\n return { loadedFonts: [...prev, family] };\n }),\n }),\n {\n name: 'render-store',\n partialize: (state) => ({\n // Explicitly DO NOT persist projectName (it comes from ProjectPage props)\n copiedNode: state.copiedNode ?? null,\n logLevel: state.logLevel,\n products: state.products,\n benefits: state.benefits,\n }),\n storage: createJSONStorage(() => localStorage),\n },\n ),\n shallow,\n);\n","import { useRenderStore } from '../store';\nimport { defaultAppConfig } from '../types/PreviewConfig';\nimport { getDefaultDevice } from '../utils/getDevices';\n\nconst fallbackDevice = getDefaultDevice();\nconst fallbackBaseSize = defaultAppConfig.baseSize;\n\nfunction ensureNumber(value: number | undefined, fallback: number) {\n return typeof value === 'number' && Number.isFinite(value) ? value : fallback;\n}\n\nfunction getBaseDimensions() {\n const currentState = useRenderStore.getState();\n const device = currentState.device ?? fallbackDevice;\n const baseSize = currentState.appConfig?.baseSize ?? fallbackBaseSize;\n\n const deviceWidth = ensureNumber(device?.width, fallbackDevice.width);\n const deviceHeight = ensureNumber(device?.height, fallbackDevice.height);\n const baseWidth = ensureNumber(baseSize?.width, fallbackBaseSize.width);\n const baseHeight = ensureNumber(baseSize?.height, fallbackBaseSize.height);\n\n const [shortDimension, longDimension] =\n deviceWidth < deviceHeight\n ? [deviceWidth, deviceHeight]\n : [deviceHeight, deviceWidth];\n\n return {\n baseSize: { width: baseWidth, height: baseHeight },\n shortDimension,\n longDimension,\n };\n}\nexport function scale(size: number) {\n const { baseSize, shortDimension } = getBaseDimensions();\n return (shortDimension / baseSize.width) * size;\n}\nexport function verticalScale(size: number) {\n const { baseSize, longDimension } = getBaseDimensions();\n return (longDimension / baseSize.height) * size;\n}\n\nexport const s = scale;\nexport const vs = verticalScale;\nexport const fs = verticalScale;\n\nexport function parseSize(value?: string | number) {\n if (value === undefined) return undefined;\n if (typeof value === 'number') {\n return value;\n }\n\n const raw = String(value).trim();\n const lower = raw.toLowerCase();\n\n // Handle explicit scalers via suffixes\n if (lower.endsWith('@s')) {\n const n = parseFloat(lower.slice(0, -2));\n return Number.isFinite(n) ? s(n) : raw;\n }\n if (lower.endsWith('@vs')) {\n const n = parseFloat(lower.slice(0, -3));\n return Number.isFinite(n) ? vs(n) : raw;\n }\n if (lower.endsWith('@f') || lower.endsWith('@fs')) {\n const cut = lower.endsWith('@f') ? -2 : -3;\n const n = parseFloat(lower.slice(0, cut));\n return Number.isFinite(n) ? fs(n) : raw;\n }\n\n // Preserve percentage values as-is\n if (lower.endsWith('%')) {\n const numericPortion = parseFloat(lower.slice(0, -1));\n return Number.isFinite(numericPortion) ? `${numericPortion}%` : raw;\n }\n\n // Handle px explicitly (treat as absolute, not scaled)\n if (lower.endsWith('px')) {\n const n = parseFloat(lower.replace('px', ''));\n return Number.isFinite(n) ? n : raw;\n }\n\n // Plain numeric strings fall back to provided scaler\n const numeric = parseFloat(lower);\n if (Number.isFinite(numeric)) {\n return numeric;\n }\n\n // Unknown format, return as-is\n return raw;\n}\n","import type { ProjectColors } from '../types/Project';\n\nconst STATIC_PREFIX = 'STATIC_COLORS.';\nconst THEME_PREFIX = 'THEME_COLORS.';\n\nexport type ParseColorOptions = {\n projectColors?: ProjectColors;\n theme?: string;\n};\n\nexport function parseColor(value?: string, options: ParseColorOptions = {}) {\n if (typeof value !== 'string') return value;\n const trimmed = value.trim();\n if (!trimmed) return undefined;\n\n const { projectColors, theme } = options;\n if (!projectColors) return trimmed;\n\n if (trimmed.startsWith(STATIC_PREFIX)) {\n const token = trimmed.slice(STATIC_PREFIX.length);\n const resolved = projectColors.STATIC_COLORS?.[token];\n return typeof resolved === 'string' && resolved.trim()\n ? resolved.trim()\n : trimmed;\n }\n\n if (trimmed.startsWith(THEME_PREFIX)) {\n const token = trimmed.slice(THEME_PREFIX.length);\n if (!token) return trimmed;\n\n const resolvedTheme = theme ?? 'light';\n const themeTokens = projectColors.THEME_COLORS?.[resolvedTheme];\n const resolved = themeTokens?.[token];\n if (typeof resolved === 'string' && resolved.trim()) {\n return resolved.trim();\n }\n\n return trimmed;\n }\n\n return trimmed;\n}\n","import { ViewPropsGenerated } from '../../build-components/View/ViewProps.generated';\nimport type { NodeData } from '../../types/Node';\nimport type { ProjectColors } from '../../types/Project';\nimport { parseSize } from '../../size-matters';\nimport { parseColor } from '../parseColor';\n\nexport type ExtractViewStyleNativeOptions = {\n projectColors?: ProjectColors;\n theme?: string;\n};\n\n/**\n * Extracts a React Native-friendly style object from node attributes.\n * Unlike the web/CSS extractor, this avoids DOM-only props like overflowX/overflowY and maxWidth/maxHeight \"100%\" fallbacks.\n */\nexport function extractViewStyleNative<\n T extends ViewPropsGenerated['attributes'],\n>(node: NodeData<T>, options: ExtractViewStyleNativeOptions = {}) {\n const attributes = node.attributes;\n const styleBag = (attributes as any)?.style as\n | Record<string, unknown>\n | undefined;\n const get = (key: string): unknown => {\n const direct = (attributes as any)?.[key];\n if (direct !== undefined && direct !== null) return direct;\n return styleBag?.[key];\n };\n\n // RN default is already column, but we keep it explicit for predictable output.\n const style: Record<string, unknown> = {\n flexDirection: 'column',\n };\n if (!attributes) return style;\n\n const isEmptySizeValue = (value: unknown) =>\n value === undefined ||\n value === null ||\n (typeof value === 'string' && value.trim() === '');\n\n // NOTE: \"scrollable\" is treated as non-style for RN; host apps should use ScrollView/FlatList.\n // We intentionally do not map it to overflowX/Y.\n\n const flexDirection = get('flexDirection');\n if (flexDirection) style.flexDirection = flexDirection as any;\n const alignItems = get('alignItems');\n if (alignItems) style.alignItems = alignItems as any;\n const justifyContent = get('justifyContent');\n if (justifyContent) style.justifyContent = justifyContent as any;\n\n const setParsedSize = (property: string, rawValue: unknown) => {\n if (isEmptySizeValue(rawValue)) return;\n const parsed = parseSize(rawValue as any);\n // RN generally expects numbers (dp). We allow percentages for width/height-like props.\n if (typeof parsed === 'number' || typeof parsed === 'string') {\n (style as any)[property] = parsed;\n }\n };\n\n // RN supports these \"shorthand\" props directly.\n setParsedSize('padding', get('padding'));\n setParsedSize('paddingHorizontal', get('paddingHorizontal'));\n setParsedSize('paddingVertical', get('paddingVertical'));\n setParsedSize('paddingTop', get('paddingTop'));\n setParsedSize('paddingBottom', get('paddingBottom'));\n setParsedSize('paddingLeft', get('paddingLeft'));\n setParsedSize('paddingRight', get('paddingRight'));\n\n setParsedSize('margin', get('margin'));\n setParsedSize(\n 'marginHorizontal',\n (attributes as any)?.marginHorizontal ?? styleBag?.marginHorizontal,\n );\n setParsedSize('marginVertical', get('marginVertical'));\n setParsedSize('marginTop', get('marginTop'));\n setParsedSize('marginBottom', get('marginBottom'));\n setParsedSize('marginLeft', get('marginLeft'));\n setParsedSize('marginRight', get('marginRight'));\n\n const backgroundColor = get('backgroundColor') as any;\n if (backgroundColor) {\n (style as any).backgroundColor =\n parseColor(backgroundColor, {\n projectColors: options.projectColors,\n theme: options.theme,\n }) ?? backgroundColor;\n }\n\n setParsedSize('borderRadius', get('borderRadius'));\n setParsedSize('width', get('width'));\n setParsedSize('minWidth', get('minWidth'));\n setParsedSize('maxWidth', get('maxWidth'));\n setParsedSize('height', get('height'));\n setParsedSize('minHeight', get('minHeight'));\n setParsedSize('maxHeight', get('maxHeight'));\n\n const flex = get('flex') as any;\n if (flex !== undefined) (style as any).flex = flex;\n\n const position = get('position') as any;\n if (position) (style as any).position = position;\n\n setParsedSize('top', get('top'));\n setParsedSize('bottom', get('bottom'));\n setParsedSize('left', get('left'));\n setParsedSize('right', get('right'));\n\n const zIndex = get('zIndex') as any;\n if (zIndex !== undefined) (style as any).zIndex = zIndex;\n\n return style;\n}\n","export const FONT_WEIGHT_OPTIONS = [\n 'normal',\n 'bold',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n] as const;\n\nexport type FontWeightOption = (typeof FONT_WEIGHT_OPTIONS)[number];\n\nexport function normalizeFontWeight(\n value: unknown,\n): FontWeightOption | undefined {\n if (typeof value === 'number' && Number.isFinite(value)) {\n const asString = String(value) as FontWeightOption;\n return FONT_WEIGHT_OPTIONS.includes(asString) ? asString : undefined;\n }\n if (typeof value === 'string') {\n const trimmed = value.trim() as FontWeightOption;\n return FONT_WEIGHT_OPTIONS.includes(trimmed) ? trimmed : undefined;\n }\n return undefined;\n}\n","import type { Fonts, FontDefinition } from '../types/Fonts';\nimport { fontsDebug } from './fontsDebug';\n\nfunction normalizeFamilyName(value: unknown): string {\n return typeof value === 'string' ? value.trim() : '';\n}\n\nexport function findFontDefinition(\n fonts: Fonts,\n familyName: string,\n): FontDefinition | undefined {\n const name = normalizeFamilyName(familyName);\n if (!name) return undefined;\n if (!Array.isArray(fonts)) return undefined;\n return fonts.find((f) => f?.name === name);\n}\n\nfunction parseWeightKey(value: unknown): number | null {\n if (typeof value !== 'string') return null;\n const trimmed = value.trim();\n if (!trimmed) return null;\n const n = Number(trimmed);\n return Number.isFinite(n) ? n : null;\n}\n\n/**\n * Given a family sources map (weightKey -> url) and a requested weight,\n * returns the closest available weight key (or a sensible fallback).\n */\nexport function resolveClosestFontWeightKey(\n family: Record<string, string>,\n requestedWeight?: string,\n): string | undefined {\n const entries = Object.entries(family ?? {}).filter(\n ([k, v]) =>\n typeof k === 'string' &&\n k.trim().length > 0 &&\n typeof v === 'string' &&\n v.trim().length > 0,\n );\n if (entries.length === 0) return undefined;\n\n const reqKey = normalizeFamilyName(requestedWeight);\n if (reqKey && entries.some(([k]) => k === reqKey)) return reqKey;\n\n // Prefer 400 if nothing exact matches.\n if (entries.some(([k]) => k === '400')) return '400';\n\n const reqNum = parseWeightKey(reqKey);\n const numeric = entries\n .map(([k]) => ({ k, n: parseWeightKey(k) }))\n .filter((x): x is { k: string; n: number } => typeof x.n === 'number');\n if (numeric.length === 0) return entries[0][0];\n\n if (typeof reqNum !== 'number') {\n // No requested weight: pick the smallest numeric weight as a stable default.\n numeric.sort((a, b) => a.n - b.n);\n return numeric[0].k;\n }\n\n // Pick closest numeric weight.\n let best = numeric[0];\n let bestDiff = Math.abs(best.n - reqNum);\n for (const cand of numeric) {\n const diff = Math.abs(cand.n - reqNum);\n if (diff < bestDiff) {\n best = cand;\n bestDiff = diff;\n }\n }\n return best.k;\n}\n\nexport function resolveFontSourceForWeight(\n family: Record<string, string>,\n requestedWeight?: string,\n): { weight: string; url: string } | undefined {\n const weight = resolveClosestFontWeightKey(family, requestedWeight);\n if (!weight) return undefined;\n const url = family?.[weight];\n if (typeof url !== 'string' || !url.trim()) return undefined;\n return { weight, url: url.trim() };\n}\n\ntype LoadFontFamilyOptions = {\n preferWeight?: string;\n /**\n * If true (default), fetch the font file via `fetch()` first so:\n * - the request is visible in DevTools Network (Fetch/XHR)\n * - we can log response status and surface CORS/404 clearly\n *\n * If false, falls back to `new FontFace(name, 'url(...)')`.\n */\n forceFetch?: boolean;\n};\n\n/**\n * Web-only font loader.\n * - Uses the `FontFace` API when available.\n * - Loads a single preferred weight (default: 400) to keep it \"lazy\".\n * - Caller is responsible for caching (e.g. via `loadedFonts` in the store).\n */\nexport async function loadFontFamily(\n fonts: Fonts,\n familyName: string,\n options: LoadFontFamilyOptions = {},\n): Promise<void> {\n const name = normalizeFamilyName(familyName);\n if (!name) throw new Error('fontFamily is empty');\n\n fontsDebug.info('loadFontFamily: start', {\n familyName: name,\n preferWeight: options.preferWeight,\n });\n\n const def = findFontDefinition(fonts, name);\n if (!def) throw new Error(`fontFamily \"${name}\" not found in fonts`);\n\n const family = def.family;\n if (!family || typeof family !== 'object') {\n throw new Error(`fontFamily \"${name}\" has no \"family\" sources`);\n }\n\n // Not a browser environment (SSR / RN): do nothing.\n if (typeof document === 'undefined') return;\n\n const fontsApi = (document as any).fonts as FontFaceSet | undefined;\n if (!fontsApi || typeof (globalThis as any).FontFace !== 'function') {\n throw new Error('Font loading is not supported in this environment');\n }\n const safeFontsApi = fontsApi as FontFaceSet;\n\n function hasLoadedFace(familyName: string, weight: string): boolean {\n try {\n const set = safeFontsApi as unknown as Iterable<FontFace>;\n for (const face of set) {\n const f = face as unknown as {\n family?: string;\n weight?: string;\n status?: string;\n };\n const fam =\n typeof f.family === 'string' ? f.family.replace(/['\"]/g, '') : '';\n const w = typeof f.weight === 'string' ? f.weight.trim() : '';\n if (fam === familyName && w === weight && f.status === 'loaded') {\n return true;\n }\n }\n } catch {\n // ignore\n }\n return false;\n }\n\n const resolved = resolveFontSourceForWeight(\n family as Record<string, string>,\n normalizeFamilyName(options.preferWeight),\n );\n if (!resolved)\n throw new Error(`fontFamily \"${name}\" has no usable source URLs`);\n const { weight: preferWeight, url } = resolved;\n\n fontsDebug.info('loadFontFamily: resolved source', {\n familyName: name,\n weight: preferWeight,\n url,\n });\n\n // If the browser already has it (e.g. via global CSS), skip work.\n try {\n // Use a weight-aware check so we can lazily load additional weights on demand.\n const checkQuery = `${preferWeight} 16px \"${name}\"`;\n const already = fontsApi.check(checkQuery);\n fontsDebug.info('loadFontFamily: document.fonts.check', {\n familyName: name,\n query: checkQuery,\n result: already,\n });\n const loadedFace = hasLoadedFace(name, preferWeight);\n fontsDebug.info('loadFontFamily: hasLoadedFace', {\n familyName: name,\n weight: preferWeight,\n result: loadedFace,\n });\n // Only skip when the face is actually loaded.\n if (loadedFace) {\n fontsDebug.info(\n 'loadFontFamily: already available (document.fonts.check)',\n {\n familyName: name,\n weight: preferWeight,\n },\n );\n return;\n }\n } catch {\n // ignore check failures; we'll try to load.\n }\n\n const forceFetch = options.forceFetch !== false;\n let source: string | ArrayBuffer = `url(${url})`;\n const urlSource = `url(${url})`;\n\n if (forceFetch && typeof fetch === 'function') {\n try {\n fontsDebug.info('loadFontFamily: fetching font file', {\n url,\n familyName: name,\n weight: preferWeight,\n });\n const res = await fetch(url, {\n mode: 'cors',\n cache: 'no-store',\n credentials: 'omit',\n });\n fontsDebug.info('loadFontFamily: font fetch response', {\n url,\n ok: res.ok,\n status: res.status,\n statusText: res.statusText,\n });\n if (!res.ok) {\n throw new Error(`Font fetch failed: ${res.status} ${res.statusText}`);\n }\n source = await res.arrayBuffer();\n fontsDebug.info('loadFontFamily: font file downloaded', {\n url,\n bytes: (source as ArrayBuffer).byteLength,\n familyName: name,\n weight: preferWeight,\n });\n } catch (e) {\n // Fallback to native font loading. This can still succeed in some environments where fetch is blocked.\n fontsDebug.compactError(\n 'loadFontFamily: fetch failed; falling back to url()',\n e,\n {\n url,\n familyName: name,\n weight: preferWeight,\n },\n );\n source = urlSource;\n }\n } else {\n fontsDebug.info('loadFontFamily: using url() source (no fetch)', {\n url,\n familyName: name,\n weight: preferWeight,\n });\n }\n\n async function loadAndAdd(src: string | ArrayBuffer, label: string) {\n const face = new (globalThis as any).FontFace(name, src as any, {\n weight: preferWeight,\n display: 'swap',\n }) as FontFace;\n fontsDebug.info('loadFontFamily: FontFace.load() begin', {\n familyName: name,\n weight: preferWeight,\n source: label,\n });\n const loaded = await face.load();\n safeFontsApi.add(loaded);\n fontsDebug.info('loadFontFamily: loaded + added to document.fonts', {\n familyName: name,\n weight: preferWeight,\n source: label,\n });\n }\n\n try {\n // Preferred path (buffer if we fetched, else url()).\n await loadAndAdd(\n source,\n typeof source === 'string' ? 'url()' : 'arrayBuffer',\n );\n } catch (e) {\n // Some browsers can be picky about ArrayBuffer sources. Retry using url() as a last resort.\n fontsDebug.compactError('loadFontFamily: FontFace.load failed', e, {\n familyName: name,\n weight: preferWeight,\n tried: typeof source === 'string' ? 'url()' : 'arrayBuffer',\n });\n if (typeof source !== 'string') {\n fontsDebug.info('loadFontFamily: retrying with url() source', {\n familyName: name,\n weight: preferWeight,\n url,\n });\n await loadAndAdd(urlSource, 'url() retry');\n } else {\n throw e;\n }\n }\n\n try {\n const afterQuery = `${preferWeight} 16px \"${name}\"`;\n const after = safeFontsApi.check(afterQuery);\n fontsDebug.info('loadFontFamily: document.fonts.check after add', {\n familyName: name,\n weight: preferWeight,\n result: after,\n });\n // Force the browser to \"activate\" the face for this query (and reveal errors if any).\n if (typeof (safeFontsApi as any).load === 'function') {\n fontsDebug.info('loadFontFamily: document.fonts.load begin', {\n query: afterQuery,\n });\n await (safeFontsApi as any).load(afterQuery);\n fontsDebug.info('loadFontFamily: document.fonts.load done', {\n query: afterQuery,\n });\n }\n } catch {\n // ignore\n }\n}\n","import type { NodeData } from '../../types/Node';\nimport type { TextPropsGenerated } from '../../build-components/Text/TextProps.generated';\nimport type { AppConfig } from '../../types/PreviewConfig';\nimport { defaultAppConfig } from '../../types/PreviewConfig';\nimport type { ProjectColors } from '../../types/Project';\nimport type { Fonts } from '../../types/Fonts';\nimport { fs, parseSize } from '../../size-matters';\nimport { parseColor } from '../parseColor';\nimport { extractViewStyleNative } from '../extractViewStyle';\nimport { normalizeFontWeight } from '../fontWeight';\nimport {\n findFontDefinition,\n resolveClosestFontWeightKey,\n} from '../loadFontFamily';\n\nexport type ExtractTextStyleNativeOptions = {\n appConfig?: AppConfig;\n projectColors?: ProjectColors;\n fonts?: Fonts;\n};\n\nfunction weightToNumericKey(weight: unknown): string | undefined {\n const normalized = normalizeFontWeight(weight);\n if (!normalized) return undefined;\n if (normalized === 'normal') return '400';\n if (normalized === 'bold') return '700';\n return normalized;\n}\n\n/**\n * React Native-friendly text style extraction.\n * - Avoids web-only quoting of fontFamily.\n * - Returns numeric fontSize (dp) when possible.\n * - Merges with extractViewStyleNative so padding/margin/etc still work in RN.\n */\nexport function extractTextStyleNative<\n T extends TextPropsGenerated['attributes'],\n>(node: NodeData<T>, options: ExtractTextStyleNativeOptions = {}) {\n const attributes = node.attributes;\n const styleBag = (attributes as any)?.style as\n | Record<string, unknown>\n | undefined;\n const get = (key: string): unknown => {\n const direct = (attributes as any)?.[key];\n if (direct !== undefined && direct !== null) return direct;\n return styleBag?.[key];\n };\n\n const resolvedAppConfig = options.appConfig ?? defaultAppConfig;\n const { screenStyle, theme } = resolvedAppConfig;\n const fallbackColor =\n theme === 'light' ? screenStyle.light.color : screenStyle.dark.color;\n\n const style: Record<string, unknown> = {};\n if (!attributes) {\n style.fontSize = fs(14);\n style.color = fallbackColor;\n return style;\n }\n\n const rawFontSize = get('fontSize') as any;\n const parsedFontSize = parseSize(rawFontSize);\n if (typeof parsedFontSize === 'number') style.fontSize = parsedFontSize;\n else style.fontSize = fs(14);\n\n const fontFamily = get('fontFamily') as any;\n const fontWeight = get('fontWeight') as any;\n const requestedWeight = weightToNumericKey(fontWeight);\n const normalizedFontFamily =\n typeof fontFamily === 'string' && fontFamily.trim().length > 0\n ? fontFamily.trim()\n : undefined;\n\n if (normalizedFontFamily) {\n const def = findFontDefinition(options.fonts ?? [], normalizedFontFamily);\n const resolvedWeightKey =\n def?.family && typeof def.family === 'object'\n ? resolveClosestFontWeightKey(\n def.family as Record<string, string>,\n requestedWeight,\n )\n : requestedWeight;\n\n style.fontFamily = normalizedFontFamily;\n if (resolvedWeightKey) style.fontWeight = resolvedWeightKey;\n }\n\n const normalizedFontWeight = normalizeFontWeight(fontWeight);\n if (!normalizedFontFamily && normalizedFontWeight)\n style.fontWeight = normalizedFontWeight;\n\n const resolvedTextColor = parseColor(get('color') as any, {\n projectColors: options.projectColors,\n theme,\n });\n style.color = resolvedTextColor ?? fallbackColor;\n\n const textAlign = get('textAlign');\n if (textAlign) style.textAlign = textAlign as any;\n\n const viewStyle = extractViewStyleNative(node, {\n projectColors: options.projectColors,\n theme,\n });\n return { ...viewStyle, ...style };\n}\n","import { useMemo } from 'react';\nimport type { NodeData } from '../../../types/Node';\nimport type { TextPropsGenerated } from '../../../build-components/Text/TextProps.generated';\nimport { defaultAppConfig } from '../../../types/PreviewConfig';\nimport { useBuilderParams } from '../../../components/BuilderProvider';\nimport { extractTextStyleNative } from '../../../utils/extractTextStyle';\n\nexport function useExtractTextStyle<T extends TextPropsGenerated['attributes']>(\n node: NodeData<T>,\n) {\n const {\n appConfig: builderAppConfig,\n projectColors: builderProjectColors,\n fonts: builderFonts,\n } = useBuilderParams();\n\n const appConfig = builderAppConfig ?? defaultAppConfig;\n const projectColors = builderProjectColors;\n const fonts = builderFonts;\n\n return useMemo(\n () => {\n const style = extractTextStyleNative(node, {\n appConfig,\n projectColors,\n fonts,\n });\n\n const attrs = node.attributes as unknown as Record<string, unknown>;\n const styleBag =\n (attrs?.style as Record<string, unknown> | undefined) ?? undefined;\n const { style: _style, ...rest } = attrs ?? {};\n void _style;\n\n return {\n style,\n other: {\n ...rest,\n // These are \"behavior\" flags stored under style in the schema.\n adjustsFontSizeToFit: styleBag?.adjustsFontSizeToFit as\n | boolean\n | undefined,\n showEllipsis: styleBag?.showEllipsis as boolean | undefined,\n },\n };\n },\n // fonts is intentionally included: extractTextStyleNative resolves weights via font definitions.\n [node, appConfig, projectColors, fonts],\n );\n}\n","import { useMemo } from 'react';\nimport type { NodeData } from '../../../types/Node';\nimport type { ViewPropsGenerated } from '../../../build-components/View/ViewProps.generated';\nimport { useBuilderParams } from '../../../components/BuilderProvider';\nimport { extractViewStyleNative } from '../../../utils/extractViewStyle';\nimport { defaultAppConfig } from '../../../types/PreviewConfig';\n\nexport function useExtractViewStyle<T extends ViewPropsGenerated['attributes']>(\n node: NodeData<T>,\n) {\n const { appConfig, projectColors: builderProjectColors } = useBuilderParams();\n const theme = appConfig?.theme ?? defaultAppConfig.theme;\n const projectColors = builderProjectColors;\n\n return useMemo(() => {\n const style = extractViewStyleNative(node, { theme, projectColors });\n\n const attrs = node.attributes as unknown as Record<string, unknown>;\n const styleBag =\n (attrs?.style as Record<string, unknown> | undefined) ?? undefined;\n const { style: _style, ...rest } = attrs ?? {};\n void _style;\n\n return {\n style,\n other: {\n ...rest,\n scrollable: styleBag?.scrollable as boolean | undefined,\n },\n };\n }, [node, theme, projectColors]);\n}\n","import { useMemo } from 'react';\nimport type { NodeData } from '../../../types/Node';\nimport type { ImagePropsGenerated } from '../../../build-components/Image/ImageProps.generated';\nimport { useBuilderParams } from '../../../components/BuilderProvider';\nimport { extractImageStyleNative } from '../../../utils/extractImageStyle';\nimport { defaultAppConfig } from '../../../types/PreviewConfig';\n\nexport function useExtractImageStyle<\n T extends ImagePropsGenerated['attributes'],\n>(node: NodeData<T>) {\n const { appConfig, projectColors: builderProjectColors } = useBuilderParams();\n const theme = appConfig?.theme ?? defaultAppConfig.theme;\n const projectColors = builderProjectColors;\n\n return useMemo(() => {\n // extractImageStyleNative includes `resizeMode` in the returned object, but in RN\n // resizeMode is typically passed as an Image prop. We normalize to `{ style, other }`.\n const styleWithResizeMode = extractImageStyleNative(node, {\n theme,\n projectColors,\n });\n const { resizeMode: resizeModeFromStyle, ...style } =\n (styleWithResizeMode as unknown as Record<string, unknown>) ?? {};\n\n const attrs = node.attributes as unknown as Record<string, unknown>;\n const styleBag =\n (attrs?.style as Record<string, unknown> | undefined) ?? undefined;\n const { style: _style, ...rest } = attrs ?? {};\n void _style;\n\n return {\n style,\n other: {\n ...rest,\n // In RN, resizeMode is commonly an Image prop (not style). We expose it as \"other\".\n resizeMode: (resizeModeFromStyle ??\n (styleBag?.resizeMode as unknown)) as\n | 'cover'\n | 'contain'\n | 'stretch'\n | 'center'\n | undefined,\n },\n };\n }, [node, theme, projectColors]);\n}\n","import { ImagePropsGenerated } from '../build-components/Image/ImageProps.generated';\nimport type { NodeData } from '../types/Node';\nimport {\n extractViewStyle,\n extractViewStyleNative,\n ExtractViewStyleOptions,\n} from './extractViewStyle';\n\nexport function extractImageStyle<T extends ImagePropsGenerated['attributes']>(\n node: NodeData<T>,\n options: ExtractViewStyleOptions = {},\n) {\n const attributes = node.attributes;\n const styleBag = (attributes as any)?.style as\n | Record<string, unknown>\n | undefined;\n const style: React.CSSProperties = {};\n\n if (!attributes) return style;\n\n // Map resizeMode to CSS object-fit\n const resizeMode = ((attributes as any)?.resizeMode ??\n styleBag?.resizeMode) as any;\n if (resizeMode === 'cover') style.objectFit = 'cover';\n else if (resizeMode === 'contain') style.objectFit = 'contain';\n else if (resizeMode === 'stretch') style.objectFit = 'fill';\n else if (resizeMode === 'center') style.objectFit = 'none';\n\n return { ...extractViewStyle(node, options), ...style };\n}\n\nexport function extractImageStyleNative<\n T extends ImagePropsGenerated['attributes'],\n>(node: NodeData<T>, options: ExtractViewStyleOptions = {}) {\n const attributes = node.attributes;\n const styleBag = (attributes as any)?.style as\n | Record<string, unknown>\n | undefined;\n if (!attributes) return {};\n\n const resizeMode = ((attributes as any)?.resizeMode ??\n styleBag?.resizeMode) as any;\n\n // In RN, resizeMode is usually an Image prop, but many codebases also accept it on ImageStyle.\n // We return it here so consumers can pass it through as they prefer.\n const nativeStyle: Record<string, unknown> = {};\n if (resizeMode) nativeStyle.resizeMode = resizeMode;\n\n return { ...extractViewStyleNative(node, options as any), ...nativeStyle };\n}\n","export function generateRandomKeyForNode(type: string) {\n return type + '-' + Math.random().toString(36).substring(2, 15);\n}\n","/* AUTO-GENERATED FILE - DO NOT EDIT */\n\n// Export resolved patterns (after extends resolution)\nexport const patterns = [\n {\n schemaVersion: 2,\n pattern: {\n type: 'BIcon',\n children: 'never',\n attributes: {\n title: 'title',\n description: 'description',\n adjustsFontSizeToFit: 'boolean',\n showEllipsis: 'boolean',\n style: {\n color: 'color',\n fontSize: 'size',\n fontFamily: 'fontFamily',\n fontWeight: 'fontWeight',\n textAlign: ['left', 'center', 'right', 'justify'],\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n scrollable: 'boolean',\n iconType: 'iconType',\n size: 'number',\n strokeWidth: 'number',\n },\n },\n meta: {\n desiredParent: ['all'],\n label: 'BIcon',\n description: 'Renders an icon from the icon set.',\n attributes: {\n styles: {\n color: {\n label: 'Color',\n description: 'Text color.',\n category: 'style',\n specialCategory: null,\n sort: 1,\n },\n fontSize: {\n label: 'Font Size',\n description: 'Text size.',\n category: 'style',\n specialCategory: null,\n sort: 2,\n preferredScale: 's',\n },\n fontFamily: {\n label: 'Font Family',\n description: 'Font family used for the text.',\n category: 'style',\n specialCategory: null,\n sort: 3,\n },\n fontWeight: {\n label: 'Font Weight',\n description: 'Text weight.',\n category: 'style',\n specialCategory: null,\n sort: 4,\n },\n textAlign: {\n label: 'Text Align',\n description: 'Text alignment.',\n category: 'style',\n specialCategory: null,\n sort: 5,\n },\n },\n adjustsFontSizeToFit: {\n label: 'Adjust Font Size To Fit',\n description:\n 'Automatically reduces font size to fit the available space.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n showEllipsis: {\n label: 'Show Ellipsis',\n description:\n 'If text overflows, show ellipsis (…); applied as single-line truncation.',\n category: 'other',\n specialCategory: null,\n sort: 2,\n },\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n iconType: {\n label: 'Icon',\n description: 'Which icon to render.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n size: {\n label: 'Size',\n description: 'Icon size (px).',\n category: 'other',\n specialCategory: null,\n sort: 2,\n },\n strokeWidth: {\n label: 'Stroke Width',\n description: 'SVG stroke width override (applied to the icon paths).',\n category: 'other',\n specialCategory: null,\n sort: 3,\n },\n },\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n fontSize: '16',\n },\n iconType: 'activity',\n strokeWidth: 1.5,\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'BackgroundImage',\n children: 'never',\n attributes: {\n title: 'title',\n description: 'description',\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n src: 'string',\n resizeMode: ['cover', 'contain', 'stretch', 'center'],\n },\n defaults: {\n resizeMode: 'cover',\n style: {\n width: '100%',\n height: '100%',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n },\n },\n },\n meta: {\n desiredParent: ['all', 'background'],\n label: 'Background Image',\n description: 'Background image.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n resizeMode: {\n label: 'Resize Mode',\n description: 'How the image fits its container.',\n category: 'style',\n specialCategory: null,\n sort: 4,\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n src: {\n label: 'Src',\n description: 'Image source URL.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n },\n defaults: {\n resizeMode: 'cover',\n style: {\n flexDirection: 'column',\n position: 'absolute',\n zIndex: 0,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'Button',\n children: 'string',\n attributes: {\n title: 'title',\n description: 'description',\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n color: 'color',\n fontSize: 'size',\n fontWeight: [\n 'normal',\n 'bold',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n ],\n },\n },\n },\n meta: {\n desiredParent: ['all'],\n label: 'Button',\n description: 'Simple action button.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n color: {\n label: 'Color',\n description: 'Text color of the button.',\n category: 'style',\n specialCategory: null,\n sort: 1,\n },\n fontSize: {\n label: 'Font Size',\n description: 'Text size of the button.',\n category: 'style',\n specialCategory: null,\n sort: 2,\n },\n fontWeight: {\n label: 'Font Weight',\n description: 'Text weight of the button.',\n category: 'style',\n specialCategory: null,\n sort: 3,\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: 'transparent',\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'Carousel',\n children: 'node',\n attributes: {\n title: 'title',\n description: 'description',\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n loop: 'boolean',\n dragFree: 'boolean',\n align: ['start', 'center', 'end'],\n },\n },\n meta: {\n desiredParent: ['=CarouselProvider'],\n label: 'Carousel',\n description: 'Container for carousel items.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'row',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'CarouselButtons',\n children: 'never',\n attributes: {\n title: 'title',\n description: 'description',\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n buttonType: ['previous_button', 'next_button', 'skip_button'],\n skipNumber: 'number',\n },\n },\n meta: {\n desiredParent: ['>OnboardProvider', '>CarouselProvider'],\n label: 'Carousel Buttons',\n description: 'Renders built-in carousel buttons.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n buttonType: {\n label: 'Button Type',\n description: 'Which carousel button to show.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n skipNumber: {\n label: 'Skip Number',\n description: 'Index to skip to when tapped.',\n category: 'other',\n specialCategory: null,\n sort: 2,\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'CarouselDots',\n children: 'never',\n attributes: {\n title: 'title',\n description: 'description',\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n dotType: [\n 'expanding_dot',\n 'normal_dot',\n 'scaling_dot',\n 'sliding_border',\n 'sliding_dot',\n 'liquid_like',\n ],\n },\n },\n meta: {\n desiredParent: ['>CarouselProvider'],\n label: 'Carousel Dots',\n description: 'Renders page indicator dots.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n dotType: {\n label: 'Dot Type',\n description: 'Style used for the dots.',\n category: 'style',\n specialCategory: null,\n sort: 1,\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'CarouselItem',\n children: 'node',\n attributes: {\n title: 'title',\n description: 'description',\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n },\n },\n meta: {\n desiredParent: ['=Carousel'],\n label: 'Carousel Item',\n description: 'Single slide inside a carousel.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n },\n },\n types: {},\n },\n {\n schemaVersion: 1,\n pattern: {\n type: 'CarouselProvider',\n children: 'node',\n attributes: {\n title: 'title',\n description: 'description',\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n },\n },\n meta: {\n desiredParent: ['root', '>View'],\n label: 'Carousel Provider',\n description: 'Provides carousel context to its children.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n },\n },\n allowUnknownAttributes: false,\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'CountDown',\n children: 'never',\n attributes: {\n count: 'number',\n title: 'title',\n description: 'description',\n adjustsFontSizeToFit: 'boolean',\n showEllipsis: 'boolean',\n style: {\n color: 'color',\n fontSize: 'size',\n fontFamily: 'fontFamily',\n fontWeight: 'fontWeight',\n textAlign: ['left', 'center', 'right', 'justify'],\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n scrollable: 'boolean',\n },\n },\n meta: {\n desiredParent: ['all'],\n label: 'Count Down',\n description: 'Displays a countdown timer.',\n attributes: {\n count: {\n label: 'Count (ms)',\n description: 'Countdown duration in milliseconds.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n styles: {\n color: {\n label: 'Color',\n description: 'Text color.',\n category: 'style',\n specialCategory: null,\n sort: 1,\n },\n fontSize: {\n label: 'Font Size',\n description: 'Text size.',\n category: 'style',\n specialCategory: null,\n sort: 2,\n preferredScale: 's',\n },\n fontFamily: {\n label: 'Font Family',\n description: 'Font family used for the text.',\n category: 'style',\n specialCategory: null,\n sort: 3,\n },\n fontWeight: {\n label: 'Font Weight',\n description: 'Text weight.',\n category: 'style',\n specialCategory: null,\n sort: 4,\n },\n textAlign: {\n label: 'Text Align',\n description: 'Text alignment.',\n category: 'style',\n specialCategory: null,\n sort: 5,\n },\n },\n adjustsFontSizeToFit: {\n label: 'Adjust Font Size To Fit',\n description:\n 'Automatically reduces font size to fit the available space.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n showEllipsis: {\n label: 'Show Ellipsis',\n description:\n 'If text overflows, show ellipsis (…); applied as single-line truncation.',\n category: 'other',\n specialCategory: null,\n sort: 2,\n },\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'Counter',\n children: 'never',\n attributes: {\n title: 'title',\n description: 'description',\n adjustsFontSizeToFit: 'boolean',\n showEllipsis: 'boolean',\n style: {\n color: 'color',\n fontSize: 'size',\n fontFamily: 'fontFamily',\n fontWeight: 'fontWeight',\n textAlign: ['left', 'center', 'right', 'justify'],\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n scrollable: 'boolean',\n count: 'number',\n },\n },\n meta: {\n desiredParent: ['all'],\n label: 'Counter',\n description: 'Displays a numeric counter.',\n attributes: {\n styles: {\n color: {\n label: 'Color',\n description: 'Text color.',\n category: 'style',\n specialCategory: null,\n sort: 1,\n },\n fontSize: {\n label: 'Font Size',\n description: 'Text size.',\n category: 'style',\n specialCategory: null,\n sort: 2,\n preferredScale: 's',\n },\n fontFamily: {\n label: 'Font Family',\n description: 'Font family used for the text.',\n category: 'style',\n specialCategory: null,\n sort: 3,\n },\n fontWeight: {\n label: 'Font Weight',\n description: 'Text weight.',\n category: 'style',\n specialCategory: null,\n sort: 4,\n },\n textAlign: {\n label: 'Text Align',\n description: 'Text alignment.',\n category: 'style',\n specialCategory: null,\n sort: 5,\n },\n },\n adjustsFontSizeToFit: {\n label: 'Adjust Font Size To Fit',\n description:\n 'Automatically reduces font size to fit the available space.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n showEllipsis: {\n label: 'Show Ellipsis',\n description:\n 'If text overflows, show ellipsis (…); applied as single-line truncation.',\n category: 'other',\n specialCategory: null,\n sort: 2,\n },\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n count: {\n label: 'Count',\n description: 'Numeric value to display.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n },\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'Image',\n children: 'never',\n attributes: {\n title: 'title',\n description: 'description',\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n src: 'string',\n width: 'size',\n height: 'size',\n resizeMode: ['cover', 'contain', 'stretch', 'center'],\n },\n },\n meta: {\n desiredParent: ['all'],\n label: 'Image',\n description: 'Shows an image or graphic.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Image width.',\n category: 'container',\n specialCategory: null,\n sort: 2,\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Image height.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n src: {\n label: 'Src',\n description: 'Image source URL.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n resizeMode: {\n label: 'Resize Mode',\n description: 'How the image fits the frame.',\n category: 'other',\n specialCategory: null,\n sort: 4,\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'Main',\n children: 'node',\n attributes: {\n title: 'title',\n description: 'description',\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n useSafeAreaView: 'boolean',\n },\n },\n meta: {\n desiredParent: ['root'],\n label: 'Main',\n description: 'Top-level screen wrapper (safe area, base layout).',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n useSafeAreaView: {\n label: 'Use Safe Area View',\n description:\n 'Wraps content with a safe-area-aware container (when supported by the target).',\n category: 'container',\n specialCategory: null,\n sort: 1,\n forceVisible: true,\n },\n },\n hideAllAttributes: true,\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n width: '100%',\n height: '100%',\n flex: 1,\n },\n useSafeAreaView: true,\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'Onboard',\n children: 'node',\n attributes: {\n title: 'title',\n description: 'description',\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n },\n },\n meta: {\n desiredParent: ['=OnboardProvider'],\n label: 'Onboard',\n description: 'Wraps the onboarding flow.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n desiredChildren: ['=OnboardItem'],\n },\n defaults: {\n style: {\n flexDirection: 'row',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'OnboardButton',\n children: 'never',\n attributes: {\n title: 'title',\n description: 'description',\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n labelKey: 'string',\n button_text_color: 'color',\n animation: [\n 'simple-animation',\n 'line-animation',\n 'blur',\n 'blur-animation',\n 'blur-line-animation',\n ],\n animation_color: 'color',\n button_background_color: 'color',\n flex: 'number',\n events: 'EventObject[]',\n },\n },\n meta: {\n desiredParent: ['=OnboardButtons'],\n label: 'Onboard Button',\n description: 'Single action button for onboarding.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n button_text_color: {\n label: 'Button Text Color',\n description: 'Text color of the button.',\n category: 'style',\n specialCategory: null,\n sort: 2,\n },\n animation: {\n label: 'Animation',\n description: 'Animation style for the button.',\n category: 'style',\n specialCategory: null,\n sort: 3,\n },\n animation_color: {\n label: 'Animation Color',\n description: 'Color used by the animation.',\n category: 'style',\n specialCategory: null,\n sort: 4,\n },\n button_background_color: {\n label: 'Button Background Color',\n description: 'Background color of the button.',\n category: 'style',\n specialCategory: null,\n sort: 5,\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow value in layout.',\n category: 'container',\n specialCategory: null,\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n labelKey: {\n label: 'Label Key',\n description: 'Localization key for the button text.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n events: {\n label: 'Events',\n description: 'List of events fired by the button.',\n category: 'other',\n specialCategory: null,\n sort: 7,\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n },\n },\n types: {\n EventObject: {\n type: ['Permission', 'Navigate'],\n permission: ['att', 'notification', 'rating', 'GDPR', 'null'],\n navigate_to: 'string',\n targetIndex: 'number',\n },\n },\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'OnboardButtons',\n children: 'node',\n attributes: {\n title: 'title',\n description: 'description',\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n buttonType: ['previous_button', 'next_button', 'skip_button'],\n skipNumber: 'number',\n buttons_direction: ['row', 'column'],\n forIndex: 'number',\n seperatorColor: 'color',\n condition: ['carousel-index'],\n conditionVariable: 'number',\n },\n },\n meta: {\n desiredParent: ['=OnboardItem'],\n label: 'Onboard Buttons',\n description: 'Wrapper for onboarding button set.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n seperatorColor: {\n label: 'Seperator Color',\n description: 'Color of the divider line.',\n category: 'style',\n specialCategory: null,\n sort: 5,\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n buttonType: {\n label: 'Button Type',\n description: 'Which onboard button to show.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n skipNumber: {\n label: 'Skip Number',\n description: 'Slide index to skip to.',\n category: 'other',\n specialCategory: null,\n sort: 2,\n },\n buttons_direction: {\n label: 'Buttons Direction',\n description: 'Direction to lay out buttons.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n forIndex: {\n label: 'For Index',\n description: 'Show only for this slide index.',\n category: 'other',\n specialCategory: null,\n sort: 4,\n },\n condition: {\n label: 'Condition',\n description: 'Built-in condition to check.',\n category: 'other',\n specialCategory: null,\n sort: 6,\n },\n conditionVariable: {\n label: 'Condition Variable',\n description: 'Value used when checking the condition.',\n category: 'other',\n specialCategory: null,\n sort: 7,\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'OnboardDot',\n children: 'never',\n attributes: {\n title: 'title',\n description: 'description',\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n dotType: [\n 'expanding_dot',\n 'normal_dot',\n 'scaling_dot',\n 'sliding_border',\n 'sliding_dot',\n 'liquid_like',\n ],\n inactive_dot_opacity: 'number',\n expanding_dot_width: 'size',\n active_dot_color: 'color',\n flexDirection: 'never',\n alignItems: 'never',\n justifyContent: 'never',\n },\n },\n meta: {\n desiredParent: ['>OnboardProvider'],\n label: 'Onboard Dot',\n description: 'Renders onboarding progress dots.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n dotType: {\n label: 'Dot Type',\n description: 'Dot animation style.',\n category: 'style',\n specialCategory: null,\n sort: 1,\n },\n inactive_dot_opacity: {\n label: 'Inactive Dot Opacity',\n description: 'Opacity for inactive dots.',\n category: 'style',\n specialCategory: null,\n sort: 2,\n },\n expanding_dot_width: {\n label: 'Expanding Dot Width',\n description: 'Width used while expanding.',\n category: 'style',\n specialCategory: null,\n sort: 3,\n },\n active_dot_color: {\n label: 'Active Dot Color',\n description: 'Color of the active dot.',\n category: 'style',\n specialCategory: null,\n sort: 4,\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'OnboardFooter',\n children: 'node',\n attributes: {\n title: 'title',\n description: 'description',\n adjustsFontSizeToFit: 'boolean',\n showEllipsis: 'boolean',\n style: {\n color: 'color',\n fontSize: 'size',\n fontFamily: 'fontFamily',\n fontWeight: 'fontWeight',\n textAlign: ['left', 'center', 'right', 'justify'],\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n scrollable: 'boolean',\n textLocalizationKey: 'string',\n linkedWordFirstLocalizationKey: 'string',\n linkedWordFirstColor: 'color',\n linkedWordFirstPage: 'string',\n linkedWordSecondLocalizationKey: 'string',\n linkedWordSecondColor: 'color',\n linkedWordSecondPage: 'string',\n },\n },\n meta: {\n desiredParent: ['>OnboardItem'],\n label: 'Onboard Footer',\n description: 'Footer text with optional links.',\n attributes: {\n styles: {\n color: {\n label: 'Color',\n description: 'Text color.',\n category: 'style',\n specialCategory: null,\n sort: 1,\n },\n fontSize: {\n label: 'Font Size',\n description: 'Text size.',\n category: 'style',\n specialCategory: null,\n sort: 2,\n preferredScale: 's',\n },\n fontFamily: {\n label: 'Font Family',\n description: 'Font family used for the text.',\n category: 'style',\n specialCategory: null,\n sort: 3,\n },\n fontWeight: {\n label: 'Font Weight',\n description: 'Text weight.',\n category: 'style',\n specialCategory: null,\n sort: 4,\n },\n textAlign: {\n label: 'Text Align',\n description: 'Text alignment.',\n category: 'style',\n specialCategory: null,\n sort: 5,\n },\n },\n adjustsFontSizeToFit: {\n label: 'Adjust Font Size To Fit',\n description:\n 'Automatically reduces font size to fit the available space.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n showEllipsis: {\n label: 'Show Ellipsis',\n description:\n 'If text overflows, show ellipsis (…); applied as single-line truncation.',\n category: 'other',\n specialCategory: null,\n sort: 2,\n },\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n textLocalizationKey: {\n label: 'Text Localization Key',\n description: 'Localization key for the footer text.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n linkedWordFirstLocalizationKey: {\n label: 'Linked Word First Localization Key',\n description: 'Key for the first linked word.',\n category: 'other',\n specialCategory: null,\n sort: 2,\n },\n linkedWordFirstPage: {\n label: 'Linked Word First Page',\n description: 'Page opened by the first link.',\n category: 'other',\n specialCategory: null,\n sort: 4,\n },\n linkedWordSecondLocalizationKey: {\n label: 'Linked Word Second Localization Key',\n description: 'Key for the second linked word.',\n category: 'other',\n specialCategory: null,\n sort: 5,\n },\n linkedWordSecondPage: {\n label: 'Linked Word Second Page',\n description: 'Page opened by the second link.',\n category: 'other',\n specialCategory: null,\n sort: 7,\n },\n },\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n linkedWordFirstColor: {\n label: 'Linked Word First Color',\n description: 'Color of the first linked word.',\n category: 'style',\n specialCategory: null,\n sort: 3,\n },\n linkedWordSecondColor: {\n label: 'Linked Word Second Color',\n description: 'Color of the second linked word.',\n category: 'style',\n specialCategory: null,\n sort: 6,\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n paddingHorizontal: '24@s',\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'OnboardImage',\n children: 'node',\n attributes: {\n title: 'title',\n description: 'description',\n src: 'string',\n width: 'size',\n height: 'size',\n resizeMode: ['cover', 'contain', 'stretch', 'center'],\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n video_url: 'string',\n lottie: 'string',\n },\n },\n meta: {\n desiredParent: ['>OnboardProvider', '>OnboardItem', '!=Onboard'],\n label: 'Onboard Image',\n description: 'Onboarding hero image with media.',\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n },\n attributes: {\n src: {\n label: 'Src',\n description: 'Image source URL.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n resizeMode: {\n label: 'Resize Mode',\n description: 'How the image fits the frame.',\n category: 'other',\n specialCategory: null,\n sort: 4,\n },\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n video_url: {\n label: 'Video Url',\n description: 'URL for the onboarding video.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n lottie: {\n label: 'Lottie',\n description: 'Path to the lottie animation.',\n category: 'other',\n specialCategory: null,\n sort: 2,\n },\n },\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'OnboardItem',\n children: 'node',\n attributes: {\n title: 'title',\n description: 'description',\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n display: ['flex', 'block'],\n gap: 'size',\n flexDirection: ['row', 'column'],\n paddingHorizontal: 'size',\n },\n },\n meta: {\n desiredParent: ['=Onboard'],\n label: 'Onboard Item',\n description: 'Single onboarding screen section.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Order of child stacking.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between child blocks.',\n category: 'container',\n specialCategory: null,\n sort: 2,\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 4,\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n display: {\n label: 'Display',\n description: 'Controls layout display mode.',\n category: 'container',\n specialCategory: null,\n sort: 1,\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n gap: '16@vs',\n paddingHorizontal: '24@s',\n },\n display: 'flex',\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'OnboardProvider',\n children: 'node',\n attributes: {\n title: 'title',\n description: 'description',\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n theme: ['light', 'dark', 'all'],\n borderRadius: 'never',\n },\n },\n meta: {\n desiredParent: ['root'],\n label: 'Onboard Provider',\n description: 'Provides shared settings for onboarding.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding for the provider.',\n category: 'container',\n specialCategory: 'padding',\n sort: 1,\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding for the provider.',\n category: 'container',\n specialCategory: 'padding',\n sort: 3,\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding for the provider.',\n category: 'container',\n specialCategory: 'padding',\n sort: 4,\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding for the provider.',\n category: 'container',\n specialCategory: 'padding',\n sort: 2,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n theme: {\n label: 'Theme',\n description:\n 'Controls which app theme(s) this onboarding is intended for.',\n category: 'other',\n specialCategory: null,\n sort: -10,\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n width: '100%',\n height: '100%',\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'OnboardSubtitle',\n children: 'string',\n attributes: {\n title: 'title',\n description: 'description',\n adjustsFontSizeToFit: 'boolean',\n showEllipsis: 'boolean',\n style: {\n color: 'color',\n fontSize: 'size',\n fontFamily: 'fontFamily',\n fontWeight: 'fontWeight',\n textAlign: ['left', 'center', 'right', 'justify'],\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n scrollable: 'boolean',\n },\n },\n meta: {\n desiredParent: ['>OnboardProvider', '>OnboardItem'],\n label: 'Onboard Subtitle',\n description: 'Subtitle text for an onboarding step.',\n attributes: {\n styles: {\n color: {\n label: 'Color',\n description: 'Text color.',\n category: 'style',\n specialCategory: null,\n sort: 1,\n },\n fontSize: {\n label: 'Font Size',\n description: 'Text size.',\n category: 'style',\n specialCategory: null,\n sort: 2,\n preferredScale: 's',\n },\n fontFamily: {\n label: 'Font Family',\n description: 'Font family used for the text.',\n category: 'style',\n specialCategory: null,\n sort: 3,\n },\n fontWeight: {\n label: 'Font Weight',\n description: 'Text weight.',\n category: 'style',\n specialCategory: null,\n sort: 4,\n },\n textAlign: {\n label: 'Text Align',\n description: 'Text alignment.',\n category: 'style',\n specialCategory: null,\n sort: 5,\n },\n },\n adjustsFontSizeToFit: {\n label: 'Adjust Font Size To Fit',\n description:\n 'Automatically reduces font size to fit the available space.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n showEllipsis: {\n label: 'Show Ellipsis',\n description:\n 'If text overflows, show ellipsis (…); applied as single-line truncation.',\n category: 'other',\n specialCategory: null,\n sort: 2,\n },\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n fontSize: '14@fs',\n fontWeight: '600',\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'OnboardTitle',\n children: 'string',\n attributes: {\n title: 'title',\n description: 'description',\n adjustsFontSizeToFit: 'boolean',\n showEllipsis: 'boolean',\n style: {\n color: 'color',\n fontSize: 'size',\n fontFamily: 'fontFamily',\n fontWeight: 'fontWeight',\n textAlign: ['left', 'center', 'right', 'justify'],\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n scrollable: 'boolean',\n },\n },\n meta: {\n desiredParent: ['>OnboardItem', '>OnboardProvider'],\n label: 'Onboard Title',\n description: 'Title text for an onboarding step.',\n attributes: {\n styles: {\n color: {\n label: 'Color',\n description: 'Text color.',\n category: 'style',\n specialCategory: null,\n sort: 1,\n },\n fontSize: {\n label: 'Font Size',\n description: 'Text size.',\n category: 'style',\n specialCategory: null,\n sort: 2,\n preferredScale: 's',\n },\n fontFamily: {\n label: 'Font Family',\n description: 'Font family used for the text.',\n category: 'style',\n specialCategory: null,\n sort: 3,\n },\n fontWeight: {\n label: 'Font Weight',\n description: 'Text weight.',\n category: 'style',\n specialCategory: null,\n sort: 4,\n },\n textAlign: {\n label: 'Text Align',\n description: 'Text alignment.',\n category: 'style',\n specialCategory: null,\n sort: 5,\n },\n },\n adjustsFontSizeToFit: {\n label: 'Adjust Font Size To Fit',\n description:\n 'Automatically reduces font size to fit the available space.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n showEllipsis: {\n label: 'Show Ellipsis',\n description:\n 'If text overflows, show ellipsis (…); applied as single-line truncation.',\n category: 'other',\n specialCategory: null,\n sort: 2,\n },\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n fontSize: '24@fs',\n fontWeight: '700',\n textAlign: 'center',\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'PaywallBackground',\n children: 'never',\n attributes: {\n title: 'title',\n description: 'description',\n src: 'string',\n resizeMode: ['cover', 'contain', 'stretch', 'center'],\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n },\n defaults: {\n resizeMode: 'cover',\n style: {\n width: '100%',\n height: '100%',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n },\n },\n },\n meta: {\n desiredParent: ['>PaywallProvider'],\n label: 'Paywall Background',\n description: 'Paywall Background component.',\n src: {\n label: 'Src',\n description: 'Image source URL.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n styles: {\n resizeMode: {\n label: 'Resize Mode',\n description: 'How the image fits its container.',\n category: 'style',\n specialCategory: null,\n sort: 4,\n },\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n },\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n },\n defaults: {\n resizeMode: 'cover',\n style: {\n width: '100%',\n height: '100%',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 1,\n flexDirection: 'column',\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'PaywallCloseButton',\n children: 'never',\n attributes: {\n title: 'title',\n description: 'description',\n iconType: 'iconType',\n size: 'number',\n strokeWidth: 'number',\n adjustsFontSizeToFit: 'boolean',\n showEllipsis: 'boolean',\n style: {\n color: 'color',\n fontSize: 'size',\n fontFamily: 'fontFamily',\n fontWeight: 'fontWeight',\n textAlign: ['left', 'center', 'right', 'justify'],\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n scrollable: 'boolean',\n },\n },\n meta: {\n desiredParent: ['>PaywallProvider'],\n label: 'Paywall Close Button',\n description: 'Paywall Close Button component.',\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n },\n attributes: {\n iconType: {\n label: 'Icon',\n description: 'Which icon to render.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n size: {\n label: 'Size',\n description: 'Icon size (px).',\n category: 'other',\n specialCategory: null,\n sort: 2,\n },\n strokeWidth: {\n label: 'Stroke Width',\n description: 'SVG stroke width override (applied to the icon paths).',\n category: 'other',\n specialCategory: null,\n sort: 3,\n },\n styles: {\n color: {\n label: 'Color',\n description: 'Text color.',\n category: 'style',\n specialCategory: null,\n sort: 1,\n },\n fontSize: {\n label: 'Font Size',\n description: 'Text size.',\n category: 'style',\n specialCategory: null,\n sort: 2,\n preferredScale: 's',\n },\n fontFamily: {\n label: 'Font Family',\n description: 'Font family used for the text.',\n category: 'style',\n specialCategory: null,\n sort: 3,\n },\n fontWeight: {\n label: 'Font Weight',\n description: 'Text weight.',\n category: 'style',\n specialCategory: null,\n sort: 4,\n },\n textAlign: {\n label: 'Text Align',\n description: 'Text alignment.',\n category: 'style',\n specialCategory: null,\n sort: 5,\n },\n },\n adjustsFontSizeToFit: {\n label: 'Adjust Font Size To Fit',\n description:\n 'Automatically reduces font size to fit the available space.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n showEllipsis: {\n label: 'Show Ellipsis',\n description:\n 'If text overflows, show ellipsis (…); applied as single-line truncation.',\n category: 'other',\n specialCategory: null,\n sort: 2,\n },\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n },\n defaults: {\n iconType: 'close',\n strokeWidth: 1.5,\n style: {\n fontSize: '16',\n flexDirection: 'row',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n justifyContent: 'center',\n alignItems: 'center',\n },\n size: 24,\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'PaywallCounter',\n children: 'never',\n attributes: {\n count: 'number',\n title: 'title',\n description: 'description',\n adjustsFontSizeToFit: 'boolean',\n showEllipsis: 'boolean',\n style: {\n color: 'color',\n fontSize: 'size',\n fontFamily: 'fontFamily',\n fontWeight: 'fontWeight',\n textAlign: ['left', 'center', 'right', 'justify'],\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n scrollable: 'boolean',\n },\n },\n meta: {\n desiredParent: ['all'],\n label: 'Paywall Counter',\n description: 'Displays the paywall counter value.',\n attributes: {\n count: {\n label: 'Fallback Count',\n description:\n 'Used only when the paywall counter hook returns no value.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n styles: {\n color: {\n label: 'Color',\n description: 'Text color.',\n category: 'style',\n specialCategory: null,\n sort: 1,\n },\n fontSize: {\n label: 'Font Size',\n description: 'Text size.',\n category: 'style',\n specialCategory: null,\n sort: 2,\n preferredScale: 's',\n },\n fontFamily: {\n label: 'Font Family',\n description: 'Font family used for the text.',\n category: 'style',\n specialCategory: null,\n sort: 3,\n },\n fontWeight: {\n label: 'Font Weight',\n description: 'Text weight.',\n category: 'style',\n specialCategory: null,\n sort: 4,\n },\n textAlign: {\n label: 'Text Align',\n description: 'Text alignment.',\n category: 'style',\n specialCategory: null,\n sort: 5,\n },\n },\n adjustsFontSizeToFit: {\n label: 'Adjust Font Size To Fit',\n description:\n 'Automatically reduces font size to fit the available space.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n showEllipsis: {\n label: 'Show Ellipsis',\n description:\n 'If text overflows, show ellipsis (…); applied as single-line truncation.',\n category: 'other',\n specialCategory: null,\n sort: 2,\n },\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'PaywallOptions',\n children: 'node',\n attributes: {\n title: 'title',\n description: 'description',\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n },\n },\n meta: {\n desiredParent: ['>PaywallProvider'],\n label: 'Paywall Options',\n description: 'Paywall options selector component.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'row',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n justifyContent: 'space-between',\n alignItems: 'center',\n minHeight: '60px',\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'PaywallProvider',\n children: 'node',\n attributes: {\n title: 'title',\n description: 'description',\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n },\n },\n meta: {\n desiredParent: ['all'],\n label: 'Paywall Provider',\n description: 'Provider/wrapper for paywall screen components.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n mockableFeatures: { products: true, benefits: true },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n width: '100%',\n height: '100%',\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'PaywallSubscribeButton',\n children: 'string',\n attributes: {\n title: 'title',\n description: 'description',\n style: {\n color: 'color',\n fontSize: 'size',\n fontWeight: [\n 'normal',\n 'bold',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n ],\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n scrollable: 'boolean',\n },\n },\n meta: {\n desiredParent: ['>PaywallProvider'],\n label: 'Paywall Subscribe Button',\n description: 'Paywall subscribe call-to-action button. Extends Button.',\n styles: {\n color: {\n label: 'Color',\n description: 'Text color of the button.',\n category: 'style',\n specialCategory: null,\n sort: 1,\n },\n fontSize: {\n label: 'Font Size',\n description: 'Text size of the button.',\n category: 'style',\n specialCategory: null,\n sort: 2,\n },\n fontWeight: {\n label: 'Font Weight',\n description: 'Text weight of the button.',\n category: 'style',\n specialCategory: null,\n sort: 3,\n },\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n },\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n },\n defaults: {\n style: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: '#6495ED',\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n paddingHorizontal: '20@s',\n paddingVertical: '12@vs',\n borderRadius: '12@s',\n color: '#FFFFFF',\n fontSize: '16@fs',\n fontWeight: '700',\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'RadioButton',\n children: 'never',\n attributes: {\n title: 'title',\n description: 'description',\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n selected: 'boolean',\n color: 'color',\n size: 'number',\n },\n },\n meta: {\n desiredParent: ['all'],\n label: 'Radio Button',\n description: 'Generic radio button icon.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n color: {\n label: 'Color',\n description: 'Radio color.',\n category: 'style',\n specialCategory: null,\n sort: 1,\n },\n size: {\n label: 'Size',\n description: 'Radio size in px.',\n category: 'style',\n specialCategory: null,\n sort: 2,\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n selected: {\n label: 'Selected',\n description: 'Whether the radio is selected.',\n category: 'other',\n specialCategory: null,\n sort: 0,\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'Text',\n children: 'string',\n attributes: {\n title: 'title',\n description: 'description',\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n color: 'color',\n fontSize: 'size',\n fontFamily: 'fontFamily',\n fontWeight: 'fontWeight',\n textAlign: ['left', 'center', 'right', 'justify'],\n },\n adjustsFontSizeToFit: 'boolean',\n showEllipsis: 'boolean',\n },\n },\n meta: {\n desiredParent: ['all'],\n label: 'Text',\n description: 'Displays simple text.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n styles: {\n color: {\n label: 'Color',\n description: 'Text color.',\n category: 'style',\n specialCategory: null,\n sort: 1,\n },\n fontSize: {\n label: 'Font Size',\n description: 'Text size.',\n category: 'style',\n specialCategory: null,\n sort: 2,\n preferredScale: 's',\n },\n fontFamily: {\n label: 'Font Family',\n description: 'Font family used for the text.',\n category: 'style',\n specialCategory: null,\n sort: 3,\n },\n fontWeight: {\n label: 'Font Weight',\n description: 'Text weight.',\n category: 'style',\n specialCategory: null,\n sort: 4,\n },\n textAlign: {\n label: 'Text Align',\n description: 'Text alignment.',\n category: 'style',\n specialCategory: null,\n sort: 5,\n },\n },\n adjustsFontSizeToFit: {\n label: 'Adjust Font Size To Fit',\n description:\n 'Automatically reduces font size to fit the available space.',\n category: 'other',\n specialCategory: null,\n sort: 1,\n },\n showEllipsis: {\n label: 'Show Ellipsis',\n description:\n 'If text overflows, show ellipsis (…); applied as single-line truncation.',\n category: 'other',\n specialCategory: null,\n sort: 2,\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n },\n },\n types: {},\n },\n {\n schemaVersion: 2,\n pattern: {\n type: 'View',\n children: 'node',\n attributes: {\n title: 'title',\n description: 'description',\n scrollable: 'boolean',\n style: {\n flexDirection: ['row', 'column'],\n alignItems: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'baseline',\n ],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'size',\n padding: 'size',\n paddingHorizontal: 'size',\n paddingVertical: 'size',\n paddingTop: 'size',\n paddingBottom: 'size',\n paddingLeft: 'size',\n paddingRight: 'size',\n margin: 'size',\n marginHorizontal: 'size',\n marginVertical: 'size',\n marginTop: 'size',\n marginBottom: 'size',\n marginLeft: 'size',\n marginRight: 'size',\n backgroundColor: 'color',\n borderRadius: 'size',\n width: 'size',\n minWidth: 'size',\n maxWidth: 'size',\n height: 'size',\n minHeight: 'size',\n maxHeight: 'size',\n flex: 'number',\n position: ['relative', 'absolute'],\n top: 'size',\n bottom: 'size',\n left: 'size',\n right: 'size',\n zIndex: 'number',\n },\n },\n },\n meta: {\n desiredParent: ['all'],\n label: 'View',\n description: 'Base layout container.',\n specialCategories: {\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n sort: 1,\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n sort: 2,\n },\n size: {\n label: 'Size',\n description: 'Fixed dimensions.',\n category: 'container',\n sort: 3,\n },\n offset: {\n label: 'Offset',\n description: 'Absolute positioning offsets.',\n category: 'container',\n sort: 4,\n },\n },\n styles: {\n backgroundColor: {\n label: 'Background Color',\n description: 'Background fill color.',\n category: 'style',\n specialCategory: null,\n sort: 20,\n },\n borderRadius: {\n label: 'Border Radius',\n description: 'Corner rounding amount.',\n category: 'style',\n specialCategory: null,\n sort: 21,\n preferredScale: 's',\n },\n },\n attributes: {\n scrollable: {\n label: 'Scrollable',\n description: 'Turns scroll interaction on.',\n category: 'container',\n specialCategory: null,\n sort: -1,\n },\n flexDirection: {\n label: 'Flex Direction',\n description: 'Sets row or column layout.',\n category: 'container',\n specialCategory: null,\n sort: 4,\n },\n alignItems: {\n label: 'Align Items',\n description: 'Controls cross-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n justifyContent: {\n label: 'Justify Content',\n description: 'Controls main-axis alignment.',\n category: 'container',\n specialCategory: null,\n sort: 5,\n },\n gap: {\n label: 'Gap',\n description: 'Space between children.',\n category: 'container',\n specialCategory: null,\n sort: 10,\n preferredScale: 's',\n },\n padding: {\n label: 'Padding',\n description: 'Uniform padding on all sides.',\n category: 'container',\n specialCategory: 'padding',\n sort: 6,\n preferredScale: 's',\n },\n paddingHorizontal: {\n label: 'Padding Horizontal',\n description: 'Left and right padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 7,\n preferredScale: 's',\n },\n paddingVertical: {\n label: 'Padding Vertical',\n description: 'Top and bottom padding.',\n category: 'container',\n specialCategory: 'padding',\n sort: 8,\n preferredScale: 'vs',\n },\n paddingTop: {\n label: 'Padding Top',\n description: 'Top padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 9,\n preferredScale: 'vs',\n },\n paddingBottom: {\n label: 'Padding Bottom',\n description: 'Bottom padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 10,\n preferredScale: 'vs',\n },\n paddingLeft: {\n label: 'Padding Left',\n description: 'Left padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 11,\n preferredScale: 's',\n },\n paddingRight: {\n label: 'Padding Right',\n description: 'Right padding only.',\n category: 'container',\n specialCategory: 'padding',\n sort: 12,\n preferredScale: 's',\n },\n margin: {\n label: 'Margin',\n description: 'Uniform margin on all sides.',\n category: 'container',\n specialCategory: 'margin',\n sort: 13,\n preferredScale: 's',\n },\n marginHorizontal: {\n label: 'Margin Horizontal',\n description: 'Left and right margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 14,\n preferredScale: 's',\n },\n marginVertical: {\n label: 'Margin Vertical',\n description: 'Top and bottom margin.',\n category: 'container',\n specialCategory: 'margin',\n sort: 15,\n preferredScale: 'vs',\n },\n marginTop: {\n label: 'Margin Top',\n description: 'Top margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 16,\n preferredScale: 'vs',\n },\n marginBottom: {\n label: 'Margin Bottom',\n description: 'Bottom margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 17,\n preferredScale: 'vs',\n },\n marginLeft: {\n label: 'Margin Left',\n description: 'Left margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 18,\n preferredScale: 's',\n },\n marginRight: {\n label: 'Margin Right',\n description: 'Right margin only.',\n category: 'container',\n specialCategory: 'margin',\n sort: 19,\n preferredScale: 's',\n },\n width: {\n label: 'Width',\n description: 'Fixed width value.',\n category: 'container',\n specialCategory: 'size',\n sort: 0,\n preferredScale: 's',\n },\n minWidth: {\n label: 'Min Width',\n description: 'Minimum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 1,\n preferredScale: 's',\n },\n maxWidth: {\n label: 'Max Width',\n description: 'Maximum width constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 2,\n preferredScale: 's',\n },\n height: {\n label: 'Height',\n description: 'Fixed height value.',\n category: 'container',\n specialCategory: 'size',\n sort: 3,\n preferredScale: 'vs',\n },\n minHeight: {\n label: 'Min Height',\n description: 'Minimum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 4,\n preferredScale: 'vs',\n },\n maxHeight: {\n label: 'Max Height',\n description: 'Maximum height constraint.',\n category: 'container',\n specialCategory: 'size',\n sort: 5,\n preferredScale: 'vs',\n },\n flex: {\n label: 'Flex',\n description: 'Flex grow factor (e.g. 1 fills available space).',\n category: 'container',\n specialCategory: 'size',\n sort: 6,\n },\n position: {\n label: 'Position',\n description: 'Sets layout positioning mode.',\n category: 'container',\n specialCategory: null,\n sort: 3,\n },\n top: {\n label: 'Top',\n description: 'Offset from the top edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 22,\n preferredScale: 'vs',\n },\n bottom: {\n label: 'Bottom',\n description: 'Offset from the bottom edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 23,\n preferredScale: 'vs',\n },\n left: {\n label: 'Left',\n description: 'Offset from the left edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 24,\n preferredScale: 's',\n },\n right: {\n label: 'Right',\n description: 'Offset from the right edge.',\n category: 'container',\n specialCategory: 'offset',\n sort: 25,\n preferredScale: 's',\n },\n zIndex: {\n label: 'Z-Index',\n description: 'Controls stacking order.',\n category: 'container',\n specialCategory: null,\n sort: 26,\n },\n },\n },\n defaults: {\n style: {\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n alignSelf: 'flex-start',\n flexGrow: 0,\n flexShrink: 0,\n },\n },\n },\n] as const;\n","import { patterns as generatedPatterns } from '../build-components/patterns.generated';\nimport type { NodeDefaultAttribute } from '../types/Node';\n\nexport type AttributeMeta = {\n label?: string;\n description?: string;\n category?: 'style' | 'container' | 'other' | string;\n specialCategory?: 'padding' | 'margin' | 'offset' | null | string;\n sort?: number;\n /** Legacy typo kept for backwards compatibility with older patterns. */\n preferedScale?: 's' | 'vs' | 'f' | '%' | '' | string;\n /** Correct spelling. Prefer this in new/updated patterns. */\n preferredScale?: 's' | 'vs' | 'f' | '%' | '' | string;\n /**\n * When true, this attribute should remain visible even if the component\n * metadata requests hiding all attributes (e.g. `meta.hideAllAttributes`).\n */\n forceVisible?: boolean;\n /**\n * Alias for `forceVisible` used by some patterns.\n */\n override?: boolean;\n};\n\nexport type SpecialCategoryMeta = {\n label?: string;\n description?: string;\n category?: 'style' | 'container' | 'other' | string;\n sort?: number;\n};\n\ntype PatternMeta = {\n label?: string;\n description?: string;\n // schemaVersion >= 2 uses `styles` (formerly `attributes`)\n styles?: Record<string, AttributeMeta>;\n // backwards-compat for schemaVersion 1 patterns\n attributes?: Record<string, AttributeMeta>;\n specialCategories?: Record<string, SpecialCategoryMeta>;\n desiredParent?: string[];\n desiredChildren?: string[];\n mockableFeatures?: Record<string, boolean>;\n /** If true, hide all attributes in the editor except ones with `forceVisible/override`. */\n hideAllAttributes?: boolean;\n};\n\ntype Pattern = {\n schemaVersion: number;\n pattern: {\n type: string;\n children: unknown;\n attributes?: Record<string, string | string[]>;\n };\n defaults?: NodeDefaultAttribute;\n\n // Optional custom complex types referenced by attributes like \"X[]\" or \"X\"\n // Each entry maps a type name (e.g., \"EventObject\") to its field schema\n // where the inner record maps fieldName -> primitive type or enum options\n types?: Record<string, Record<string, string | string[]>>;\n // Optional defaults to be applied to node.attributes if not provided\n meta?: PatternMeta;\n};\n\nconst patterns: Pattern[] = generatedPatterns as unknown as Pattern[];\n\nexport type BuilderPlatform = 'web' | 'native';\n\nfunction normalizePlatform(platform?: BuilderPlatform | null): BuilderPlatform {\n return platform === 'native' ? 'native' : 'web';\n}\n\n/**\n * Keys that conceptually behave like component props (behavior/flags) rather than\n * style properties. These should NOT be normalized into `attributes.style`.\n */\nexport const NON_STYLE_ATTRIBUTE_KEYS = new Set<string>([\n 'scrollable',\n 'showEllipsis',\n 'adjustsFontSizeToFit',\n]);\n\n/**\n * schemaVersion=2 stores style-like keys inside `attributes.style`.\n *\n * We treat View+Text schema keys as style-like by default, but explicitly exclude\n * known non-style props (behavior flags).\n */\nexport function getStyleAttributeKeySet(): Set<string> {\n const viewSchema = getAttributeSchema('View') ?? {};\n const textSchema = getAttributeSchema('Text') ?? {};\n const viewStyle =\n typeof (viewSchema as any)?.style === 'object' && (viewSchema as any)?.style\n ? Object.keys((viewSchema as any).style)\n : Object.keys(viewSchema);\n const textStyle =\n typeof (textSchema as any)?.style === 'object' && (textSchema as any)?.style\n ? Object.keys((textSchema as any).style)\n : Object.keys(textSchema);\n const out = new Set<string>([...viewStyle, ...textStyle]);\n for (const k of NON_STYLE_ATTRIBUTE_KEYS) out.delete(k);\n return out;\n}\n\nfunction adjustMetaForPlatform(\n meta: Record<string, AttributeMeta> | undefined,\n platform?: BuilderPlatform,\n): Record<string, AttributeMeta> | undefined {\n if (!meta) return undefined;\n const p = normalizePlatform(platform);\n\n // Values that are not directly style-friendly for the target platform should be shown under \"other\"\n // (so they remain editable, but are clearly non-style / platform-specific behavior).\n const moveToOtherAlways = new Set<string>(['scrollable']);\n const moveToOtherOnWeb = new Set<string>([]);\n const moveToOtherOnNative = new Set<string>([\n // CSS-only layout convenience (not widely supported in RN style across versions).\n 'gap',\n // Web-only text behaviors (implemented via DOM).\n 'showEllipsis',\n 'adjustsFontSizeToFit',\n ]);\n\n const shouldMove = (key: string) =>\n moveToOtherAlways.has(key) ||\n (p === 'web' ? moveToOtherOnWeb.has(key) : moveToOtherOnNative.has(key));\n\n let changed = false;\n const out: Record<string, AttributeMeta> = {};\n for (const [key, value] of Object.entries(meta)) {\n if (!value || typeof value !== 'object') {\n out[key] = value;\n continue;\n }\n if (shouldMove(key)) {\n out[key] = { ...value, category: 'other', specialCategory: null };\n changed = true;\n } else {\n out[key] = value;\n }\n }\n return changed ? out : meta;\n}\n\n// Build a fast lookup map without normalization for direct access\nconst patternIndex: Map<string, Pattern> = new Map<string, Pattern>(\n patterns.map((p) => [p.pattern.type, p]),\n);\n\nfunction pascalToCamelCase(s: string): string {\n if (!s) return s;\n return s[0].toLowerCase() + s.slice(1);\n}\n\nfunction pascalToKebabCase(s: string): string {\n if (!s) return s;\n // BackgroundImage -> background-image, IAPBackground -> iap-background\n return s\n .replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n .replace(/([A-Z]+)([A-Z][a-z0-9]+)/g, '$1-$2')\n .toLowerCase();\n}\n\nconst typeAliases: Map<string, string> = new Map<string, string>();\nfor (const p of patterns) {\n const canonical = p?.pattern?.type;\n if (typeof canonical !== 'string' || !canonical) continue;\n const aliases = [\n canonical,\n canonical.toLowerCase(),\n pascalToCamelCase(canonical),\n pascalToKebabCase(canonical),\n ];\n for (const a of aliases) {\n if (!a) continue;\n if (!typeAliases.has(a)) {\n typeAliases.set(a, canonical);\n }\n }\n}\n\n/** Normalize legacy/variant component type strings to the canonical pattern.type (PascalCase). */\nexport function normalizeComponentType(\n type?: string | null,\n): string | undefined {\n if (typeof type !== 'string' || !type) return undefined;\n if (patternIndex.has(type)) return type;\n return typeAliases.get(type) ?? typeAliases.get(type.toLowerCase());\n}\n\nexport function getPatternByType(type?: string | null): Pattern | undefined {\n if (typeof type !== 'string') return undefined;\n const normalized = normalizeComponentType(type) ?? type;\n return patternIndex.get(normalized);\n}\n\nexport function getAttributeSchema(\n type?: string | null,\n): Record<string, string | string[]> | undefined {\n const p = getPatternByType(type);\n return p?.pattern.attributes;\n}\n\nexport function getAttributeMeta(\n type?: string | null,\n platform?: BuilderPlatform,\n): Record<string, AttributeMeta> | undefined {\n const p = getPatternByType(type);\n const styles = p?.meta?.styles;\n const attributes = p?.meta?.attributes;\n\n // Some patterns store style meta under `meta.attributes.styles` (nested) instead of `meta.styles`.\n const nestedStyles =\n attributes &&\n typeof attributes === 'object' &&\n (attributes as any).styles &&\n typeof (attributes as any).styles === 'object'\n ? ((attributes as any).styles as Record<string, AttributeMeta>)\n : undefined;\n\n // When `meta.attributes.styles` exists, treat `meta.attributes` (minus `styles`) as non-style meta.\n const attributesWithoutNestedStyles =\n attributes && typeof attributes === 'object'\n ? Object.fromEntries(\n Object.entries(attributes as Record<string, unknown>).filter(\n ([k]) => k !== 'styles',\n ),\n )\n : attributes;\n\n // schemaVersion=2 prefers `meta.styles` but some repos split UI meta into:\n // - meta.styles: style-tab fields\n // - meta.attributes: non-style fields (container/other)\n // Merge both to keep the editor + platform adjustments working.\n const merged =\n styles || attributesWithoutNestedStyles || nestedStyles\n ? {\n ...(attributesWithoutNestedStyles as Record<string, AttributeMeta>),\n ...(styles as Record<string, AttributeMeta>),\n ...(nestedStyles as Record<string, AttributeMeta>),\n }\n : undefined;\n\n return adjustMetaForPlatform(merged, platform);\n}\n\n/** Returns defaults block (if any) for a given component type */\nexport function getDefaultsForType(\n type?: string | null,\n): NodeDefaultAttribute | undefined {\n const p = getPatternByType(type);\n return p?.defaults as NodeDefaultAttribute | undefined;\n}\n\n/**\n * Returns the schema of a custom complex type declared under a component pattern's `types` block.\n * For example, OnboardButton.pattern.types.EventObject\n */\nexport function getTypeSchema(\n componentType?: string | null,\n typeName?: string | null,\n): Record<string, string | string[]> | undefined {\n if (!componentType || !typeName) return undefined;\n const p = getPatternByType(componentType);\n // Some JSON imports may not type-check \"types\" so we fallback to any access\n const types: Record<string, Record<string, string | string[]>> | undefined = (\n p as unknown as {\n types?: Record<string, Record<string, string | string[]>>;\n }\n )?.types;\n return types?.[typeName];\n}\n\n/** Utility: returns true if the type name refers to a primitive scalar */\nexport function isPrimitiveType(typeName: string): boolean {\n return (\n typeName === 'string' ||\n typeName === 'title' ||\n typeName === 'description' ||\n typeName === 'number' ||\n typeName === 'boolean' ||\n typeName === 'color' ||\n typeName === 'size' ||\n typeName === 'fontFamily' ||\n typeName === 'fontWeight' ||\n typeName === 'iconType'\n );\n}\n\n/** Utility: parse `X[]` forms and return the item type if present */\nexport function getArrayItemType(typeName: string): string | null {\n if (typeof typeName !== 'string') return null;\n return typeName.endsWith('[]') ? typeName.slice(0, -2) : null;\n}\n","import type { Node, NodeDefaultAttribute } from '../types/Node';\n\nexport function isNodeNullOrUndefined<T = NodeDefaultAttribute>(\n node: Node<T>,\n): boolean {\n return node === null || node === undefined;\n}\n\nexport function isNodeString<T = NodeDefaultAttribute>(node: Node<T>): boolean {\n return typeof node === 'string';\n}\n\nexport function isNodeArray<T = NodeDefaultAttribute>(node: Node<T>): boolean {\n return node instanceof Array;\n}\n\nexport function isEmptyObject<T = NodeDefaultAttribute>(\n node: Node<T>,\n): boolean {\n return (\n typeof node === 'object' &&\n node !== null &&\n !Array.isArray(node) &&\n Object.keys(node as object).length === 0\n );\n}\n","import type { Node, NodeData, NodeDefaultAttribute } from '../types/Node';\nimport {\n getArrayItemType,\n getAttributeSchema,\n getPatternByType,\n getTypeSchema,\n isPrimitiveType,\n normalizeComponentType,\n} from './patterns';\nimport { FONT_WEIGHT_OPTIONS, normalizeFontWeight } from './fontWeight';\nimport {\n isEmptyObject,\n isNodeArray,\n isNodeNullOrUndefined,\n isNodeString,\n} from './nodeGuards';\n\nexport type AnalyseResultWithPath = {\n valid: boolean;\n message?: string;\n path?: string;\n};\n\ntype AttributeTypeSpec = string | string[];\n// schema v2 supports nesting style specs under `attributes.style` (one level deep)\ntype NestedAttributeSchema = Record<string, AttributeTypeSpec>;\ntype AttributeSchema = Record<\n string,\n AttributeTypeSpec | NestedAttributeSchema\n>;\n\ntype PatternLike = {\n pattern: {\n type: string;\n children: unknown;\n attributes?: AttributeSchema;\n };\n};\n\nfunction ok(): AnalyseResultWithPath {\n return { valid: true };\n}\n\nfunction fail(message: string, path?: string): AnalyseResultWithPath {\n return { valid: false, message, path };\n}\n\nfunction joinPath(base: string, next: string): string {\n if (!base) return next;\n if (!next) return base;\n // next may already include brackets (e.g. [0])\n return next.startsWith('[') ? `${base}${next}` : `${base}.${next}`;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction getStyleSubSchema(\n schema: AttributeSchema | undefined,\n): AttributeSchema {\n if (!schema) return {};\n const maybe = schema.style;\n if (!maybe) return {};\n if (typeof maybe === 'string' || Array.isArray(maybe)) return {};\n return (maybe ?? {}) as AttributeSchema;\n}\n\nfunction isNodeDataLike(\n value: unknown,\n): value is NodeData<NodeDefaultAttribute> {\n if (!isPlainObject(value)) return false;\n const maybeType = (value as Record<string, unknown>).type;\n // `children` is optional in persisted JSON; treat missing as `undefined`.\n // The structural validator handles overall shape; the pattern validator should\n // focus on types/attributes/children rules, not require the key to exist.\n return typeof maybeType === 'string';\n}\n\nfunction normalizeTypeOrFallback(type: string): string {\n return normalizeComponentType(type) ?? type;\n}\n\nfunction getChildrenSpecTokens(pattern: PatternLike): string[] {\n const raw = pattern?.pattern?.children;\n if (typeof raw === 'string') return [raw];\n if (Array.isArray(raw)) return raw.filter((x) => typeof x === 'string');\n return [];\n}\n\nfunction splitChildrenSpec(tokens: string[]): {\n baseKinds: Set<'never' | 'string' | 'node'>;\n allowedComponentTypes: Set<string>;\n} {\n const baseKinds = new Set<'never' | 'string' | 'node'>();\n const allowedComponentTypes = new Set<string>();\n for (const t of tokens) {\n // NOTE: pattern.children no longer uses the 'array' token.\n // 'node' means \"a node OR an array of nodes\".\n if (t === 'never' || t === 'string' || t === 'node') {\n baseKinds.add(t);\n } else if (t === 'array') {\n // Backwards-compat: treat 'array' as 'node'\n baseKinds.add('node');\n } else if (typeof t === 'string' && t) {\n allowedComponentTypes.add(normalizeTypeOrFallback(t));\n }\n }\n return { baseKinds, allowedComponentTypes };\n}\n\nfunction validateChildrenNeverRule(\n children: Node<NodeDefaultAttribute>,\n baseKinds: Set<'never' | 'string' | 'node'>,\n path: string,\n): AnalyseResultWithPath {\n if (!baseKinds.has('never')) return ok();\n if (isNodeNullOrUndefined(children) || isEmptyObject(children)) return ok();\n return fail(`Children not allowed (pattern.children = \"never\")`, path);\n}\n\nfunction validateChildrenKindRule(\n children: Node<NodeDefaultAttribute>,\n baseKinds: Set<'never' | 'string' | 'node'>,\n allowedComponentTypes: Set<string>,\n path: string,\n): AnalyseResultWithPath {\n if (isNodeNullOrUndefined(children) || isEmptyObject(children)) return ok();\n\n // Component-type specs allow either a single node or an array of nodes.\n if (allowedComponentTypes.size > 0) {\n if (isNodeArray(children)) return ok();\n if (isNodeDataLike(children)) return ok();\n return fail(\n `Children must be a node or array of nodes (allowed: ${Array.from(\n allowedComponentTypes,\n ).join(', ')})`,\n path,\n );\n }\n\n if (isNodeString(children)) {\n return baseKinds.has('string')\n ? ok()\n : fail(`Children must not be a string`, path);\n }\n if (isNodeArray(children)) {\n // 'node' allows both a single node and an array of nodes\n return baseKinds.has('node')\n ? ok()\n : fail(`Children must not be an array`, path);\n }\n if (isNodeDataLike(children)) {\n return baseKinds.has('node')\n ? ok()\n : fail(`Children must not be a node`, path);\n }\n\n // Unknown object shape\n return fail(`Children has invalid shape`, path);\n}\n\nfunction validateChildrenAllowedComponentTypesRule(\n children: Node<NodeDefaultAttribute>,\n allowedComponentTypes: Set<string>,\n path: string,\n): AnalyseResultWithPath {\n if (allowedComponentTypes.size === 0) return ok();\n if (isNodeNullOrUndefined(children) || isEmptyObject(children)) return ok();\n\n const allowed = Array.from(allowedComponentTypes);\n\n const validateChildType = (child: unknown, childPath: string) => {\n if (!isNodeDataLike(child)) {\n return fail(`Child must be an object node`, childPath);\n }\n const actual = normalizeTypeOrFallback(child.type);\n if (!allowedComponentTypes.has(actual)) {\n return fail(\n `Child type \"${child.type}\" is not allowed here (allowed: ${allowed.join(\n ', ',\n )})`,\n joinPath(childPath, 'type'),\n );\n }\n return ok();\n };\n\n if (isNodeArray(children)) {\n const arr = children as unknown[];\n for (let i = 0; i < arr.length; i++) {\n const res = validateChildType(arr[i], `${path}[${i}]`);\n if (!res.valid) return res;\n }\n return ok();\n }\n\n return validateChildType(children, path);\n}\n\nfunction validateChildrenByPattern(\n nodeData: NodeData<NodeDefaultAttribute>,\n pattern: PatternLike,\n path: string,\n): AnalyseResultWithPath {\n const tokens = getChildrenSpecTokens(pattern);\n const { baseKinds, allowedComponentTypes } = splitChildrenSpec(tokens);\n\n const neverRes = validateChildrenNeverRule(\n nodeData.children,\n baseKinds,\n path,\n );\n if (!neverRes.valid) return neverRes;\n\n const kindRes = validateChildrenKindRule(\n nodeData.children,\n baseKinds,\n allowedComponentTypes,\n path,\n );\n if (!kindRes.valid) return kindRes;\n\n return validateChildrenAllowedComponentTypesRule(\n nodeData.children,\n allowedComponentTypes,\n path,\n );\n}\n\nfunction validatePrimitiveValue(\n value: unknown,\n primitiveType: string,\n path: string,\n): AnalyseResultWithPath {\n switch (primitiveType) {\n case 'string':\n return typeof value === 'string' ? ok() : fail(`Expected string`, path);\n case 'number':\n return typeof value === 'number' ? ok() : fail(`Expected number`, path);\n case 'boolean':\n return typeof value === 'boolean' ? ok() : fail(`Expected boolean`, path);\n case 'color':\n return typeof value === 'string'\n ? ok()\n : fail(`Expected color (string)`, path);\n case 'title':\n if (typeof value !== 'string') {\n return fail(`Expected title (string)`, path);\n }\n return value.length <= 20\n ? ok()\n : fail(`Expected title to be <= 20 characters`, path);\n case 'description':\n return typeof value === 'string'\n ? ok()\n : fail(`Expected description (string)`, path);\n case 'size':\n // Sizes can be numbers or strings like \"16@fs\" / \"100%\" / \"20px\"\n return typeof value === 'number' || typeof value === 'string'\n ? ok()\n : fail(`Expected size (string or number)`, path);\n case 'fontWeight': {\n const normalized = normalizeFontWeight(value);\n if (normalized) return ok();\n return fail(\n `Expected fontWeight (${FONT_WEIGHT_OPTIONS.join(', ')})`,\n path,\n );\n }\n case 'iconType':\n return typeof value === 'string'\n ? ok()\n : fail(`Expected iconType (string)`, path);\n default:\n return fail(`Unknown primitive type \"${primitiveType}\"`, path);\n }\n}\n\nfunction validateEnumValue(\n value: unknown,\n options: string[],\n path: string,\n): AnalyseResultWithPath {\n if (typeof value === 'string') {\n return options.includes(value)\n ? ok()\n : fail(`Expected one of: ${options.join(', ')}`, path);\n }\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (typeof v !== 'string' || !options.includes(v)) {\n return fail(\n `Expected an array of: ${options.join(', ')}`,\n `${path}[${i}]`,\n );\n }\n }\n return ok();\n }\n return fail(`Expected a string or string[] enum value`, path);\n}\n\nfunction validateCustomObjectValue(\n componentType: string,\n value: unknown,\n typeName: string,\n path: string,\n): AnalyseResultWithPath {\n const schema = getTypeSchema(componentType, typeName);\n if (!schema) {\n return fail(`Unknown custom type \"${typeName}\"`, path);\n }\n if (!isPlainObject(value)) {\n return fail(`Expected object for type \"${typeName}\"`, path);\n }\n\n for (const [fieldName, fieldSpec] of Object.entries(schema)) {\n if (!(fieldName in value)) continue;\n const fieldValue = (value as Record<string, unknown>)[fieldName];\n const fieldPath = joinPath(path, fieldName);\n const res = validateAttributeValue(\n componentType,\n fieldValue,\n fieldSpec,\n fieldPath,\n );\n if (!res.valid) return res;\n }\n\n return ok();\n}\n\nfunction validateAttributeValue(\n componentType: string,\n value: unknown,\n spec: AttributeTypeSpec,\n path: string,\n): AnalyseResultWithPath {\n // Pattern validation does not enforce requiredness (it only validates types for\n // keys that exist). Treat null/undefined as \"unset\" so persisted JSON can use\n // null to clear fields (e.g. events[].navigate_to = null).\n if (value == null) return ok();\n\n if (Array.isArray(spec)) {\n return validateEnumValue(value, spec, path);\n }\n\n const arrayItemType = getArrayItemType(spec);\n if (arrayItemType) {\n if (!Array.isArray(value)) {\n return fail(`Expected array for type \"${spec}\"`, path);\n }\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const itemPath = `${path}[${i}]`;\n const res = validateAttributeValue(\n componentType,\n item,\n arrayItemType,\n itemPath,\n );\n if (!res.valid) return res;\n }\n return ok();\n }\n\n if (isPrimitiveType(spec)) {\n return validatePrimitiveValue(value, spec, path);\n }\n\n return validateCustomObjectValue(componentType, value, spec, path);\n}\n\nfunction validateAttributesByPattern(\n nodeData: NodeData<NodeDefaultAttribute>,\n pattern: PatternLike,\n path: string,\n): AnalyseResultWithPath {\n const attrs = nodeData.attributes;\n if (attrs == null) return ok();\n if (!isPlainObject(attrs)) return fail(`attributes must be an object`, path);\n\n const schema: AttributeSchema = (getAttributeSchema(pattern.pattern.type) ??\n pattern.pattern.attributes ??\n {}) as AttributeSchema;\n const styleSchema = getStyleSubSchema(schema);\n\n // Validate nested `attributes.style` as an object; validate any style keys that also exist in schema.\n const maybeStyle = (attrs as Record<string, unknown>).style;\n if (maybeStyle != null) {\n if (!isPlainObject(maybeStyle)) {\n return fail(`style must be an object`, joinPath(path, 'style'));\n }\n for (const [styleKey, styleValue] of Object.entries(\n maybeStyle as Record<string, unknown>,\n )) {\n const spec = (styleSchema?.[styleKey] ?? schema?.[styleKey]) as\n | AttributeTypeSpec\n | undefined;\n if (!spec) continue; // allow unknown style keys (free-form CSSProperties)\n const res = validateAttributeValue(\n pattern.pattern.type,\n styleValue,\n spec,\n joinPath(joinPath(path, 'style'), styleKey),\n );\n if (!res.valid) return res;\n }\n }\n\n for (const [attrName, attrValue] of Object.entries(attrs)) {\n if (attrName === 'style') continue;\n const attrSpec = schema?.[attrName] as AttributeTypeSpec | undefined;\n if (!attrSpec) {\n if (attrName === 'title' || attrName === 'description') {\n const res = validateAttributeValue(\n pattern.pattern.type,\n attrValue,\n attrName,\n joinPath(path, attrName),\n );\n if (!res.valid) return res;\n continue;\n }\n // Back-compat: allow legacy flat style keys even when the schema nests them.\n const legacyStyleSpec = styleSchema?.[attrName] as\n | AttributeTypeSpec\n | undefined;\n if (!legacyStyleSpec) {\n return fail(\n `Unknown attribute \"${attrName}\"`,\n joinPath(path, attrName),\n );\n }\n const res = validateAttributeValue(\n pattern.pattern.type,\n attrValue,\n legacyStyleSpec,\n joinPath(path, attrName),\n );\n if (!res.valid) return res;\n continue;\n }\n const res = validateAttributeValue(\n pattern.pattern.type,\n attrValue,\n attrSpec,\n joinPath(path, attrName),\n );\n if (!res.valid) return res;\n }\n\n return ok();\n}\n\nfunction validateNodeDataByPatterns(\n nodeData: NodeData<NodeDefaultAttribute>,\n path: string,\n): AnalyseResultWithPath {\n const normalizedType = normalizeTypeOrFallback(nodeData.type);\n const pattern = getPatternByType(normalizedType) as unknown as\n | PatternLike\n | undefined;\n if (!pattern) {\n return fail(\n `Unknown component type \"${nodeData.type}\"`,\n joinPath(path, 'type'),\n );\n }\n\n const attrRes = validateAttributesByPattern(\n { ...nodeData, type: normalizedType },\n pattern,\n joinPath(path, 'attributes'),\n );\n if (!attrRes.valid) return attrRes;\n\n const childrenRes = validateChildrenByPattern(\n { ...nodeData, type: normalizedType },\n pattern,\n joinPath(path, 'children'),\n );\n if (!childrenRes.valid) return childrenRes;\n\n return ok();\n}\n\nfunction validateAnyNodeByPatterns(\n node: Node<NodeDefaultAttribute>,\n path: string,\n): AnalyseResultWithPath {\n if (\n isNodeNullOrUndefined(node) ||\n isNodeString(node) ||\n isEmptyObject(node)\n ) {\n return ok();\n }\n\n if (isNodeArray(node)) {\n const arr = node as unknown as Node<NodeDefaultAttribute>[];\n for (let i = 0; i < arr.length; i++) {\n const res = validateAnyNodeByPatterns(arr[i], `${path}[${i}]`);\n if (!res.valid) return res;\n }\n return ok();\n }\n\n if (!isNodeDataLike(node)) {\n return fail(`Invalid node shape`, path);\n }\n\n const selfRes = validateNodeDataByPatterns(node, path);\n if (!selfRes.valid) return selfRes;\n\n return validateAnyNodeByPatterns(\n node.children as Node<NodeDefaultAttribute>,\n joinPath(path, 'children'),\n );\n}\n\n/**\n * Validates a Node tree against the generated component patterns:\n * - Enforces `pattern.children` including \"never\"\n * - Validates `attributes` against `pattern.attributes` (+ custom `types`)\n *\n * Notes:\n * - Null/undefined children are considered \"no children\" and are allowed even\n * when patterns expect some kind of children.\n */\nexport function analyseNodeByPatterns(\n node: Node<NodeDefaultAttribute>,\n): AnalyseResultWithPath {\n return validateAnyNodeByPatterns(node, 'root');\n}\n","import type { Node, NodeData, NodeDefaultAttribute } from '../types/Node';\nimport {\n isEmptyObject,\n isNodeArray,\n isNodeNullOrUndefined,\n isNodeString,\n} from './nodeGuards';\n\nexport type AnalyseResult = {\n valid: boolean;\n message?: string;\n};\n\n/**\n * Structural validation only:\n * - Ensures the input is a valid Node union recursively (null/string/array/object)\n * - Does NOT validate against component patterns.\n */\nexport function analyseNodeStructural(\n node: Node<NodeDefaultAttribute>,\n): AnalyseResult {\n if (isNodeNullOrUndefined(node)) {\n return { valid: true, message: 'null or undefined is valid' };\n }\n\n if (isNodeString(node)) {\n return { valid: true, message: 'string is valid' };\n }\n\n if (isNodeArray(node)) {\n const nodeArray = node as unknown as Node[];\n for (const value of nodeArray) {\n const res = analyseNodeStructural(value as Node<NodeDefaultAttribute>);\n if (!res.valid) return res;\n }\n return { valid: true, message: 'Array is valid' };\n }\n\n const recordData = node as NodeData;\n if (isEmptyObject(recordData)) {\n return { valid: true, message: 'empty object is valid' };\n }\n\n if (recordData.children) {\n const res = analyseNodeStructural(\n recordData.children as Node<NodeDefaultAttribute>,\n );\n if (!res.valid) return res;\n }\n\n return { valid: true, message: 'everything is structurally valid' };\n}\n","import type { Node, NodeData, NodeDefaultAttribute } from '../types/Node';\nimport { isNodeArray, isNodeNullOrUndefined, isNodeString } from './nodeGuards';\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction looksLikeSelectOptionObject(\n value: unknown,\n): value is { value: unknown } {\n if (!isPlainObject(value)) return false;\n // Avoid unwrapping actual node-like objects or typed objects that use `type`.\n if ('type' in value || 'children' in value || 'attributes' in value) {\n return false;\n }\n if (!('value' in value)) return false;\n const keys = Object.keys(value);\n // Typical shapes: { value }, { value, label }, { value, label, id }\n if (keys.length < 1 || keys.length > 3) return false;\n const allowed = new Set(['value', 'label', 'id']);\n for (const k of keys) if (!allowed.has(k)) return false;\n const v = (value as Record<string, unknown>).value;\n return (\n v == null ||\n typeof v === 'string' ||\n typeof v === 'number' ||\n typeof v === 'boolean'\n );\n}\n\nfunction normalizeUnknownValue(value: unknown): unknown {\n if (value == null) return value;\n\n if (Array.isArray(value)) {\n return value.map(normalizeUnknownValue);\n }\n\n if (!isPlainObject(value)) return value;\n\n if (looksLikeSelectOptionObject(value)) {\n return normalizeUnknownValue((value as { value: unknown }).value);\n }\n\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(value)) {\n out[k] = normalizeUnknownValue(v);\n }\n return out;\n}\n\n/**\n * Special-case normalization for persisted JSON before validation.\n *\n * Keep \"exceptions\" here rather than inside the core validation logic.\n */\nexport function normalizeNodeForValidation(\n node: Node<NodeDefaultAttribute>,\n): Node<NodeDefaultAttribute> {\n if (isNodeNullOrUndefined(node) || isNodeString(node)) {\n return node;\n }\n\n if (isNodeArray(node)) {\n const nodeArray = node as unknown as Node<NodeDefaultAttribute>[];\n return nodeArray.map(\n normalizeNodeForValidation,\n ) as unknown as Node<NodeDefaultAttribute>;\n }\n\n const recordData = node as NodeData<NodeDefaultAttribute>;\n\n const attributes = isPlainObject(recordData.attributes)\n ? (normalizeUnknownValue(recordData.attributes) as Record<string, unknown>)\n : recordData.attributes;\n\n const children =\n recordData.children !== undefined\n ? (normalizeNodeForValidation(\n recordData.children as Node<NodeDefaultAttribute>,\n ) as Node<NodeDefaultAttribute>)\n : recordData.children;\n\n return {\n ...recordData,\n attributes: attributes as any,\n children,\n };\n}\n","import { Node, NodeData, NodeDefaultAttribute } from '../types/Node';\nimport { generateRandomKeyForNode } from './generateRandomKeyForNode';\nimport { analyseNodeByPatterns } from './analyseNodeByPatterns';\nimport { analyseNodeStructural } from './analyseNodeStructural';\nimport { isNodeArray, isNodeNullOrUndefined, isNodeString } from './nodeGuards';\nimport { normalizeNodeForValidation } from './__special_exceptions';\n\nexport {\n isEmptyObject,\n isNodeArray,\n isNodeNullOrUndefined,\n isNodeString,\n} from './nodeGuards';\n\nfunction assignMissingKeys(\n node: Node<NodeDefaultAttribute>,\n usedKeys: Set<string>,\n): Node<NodeDefaultAttribute> {\n if (isNodeNullOrUndefined(node) || isNodeString(node)) {\n return node;\n }\n\n if (isNodeArray(node)) {\n const nodeArray = node as unknown as Node<NodeDefaultAttribute>[];\n return nodeArray.map((child) =>\n assignMissingKeys(child, usedKeys),\n ) as unknown as Node<NodeDefaultAttribute>;\n }\n\n const recordData = node as NodeData<NodeDefaultAttribute>;\n\n let key = recordData.key;\n if (key && usedKeys.has(key)) {\n // Repair duplicate keys by generating a new unique key.\n key = undefined;\n }\n\n if (!key) {\n do {\n key = generateRandomKeyForNode(recordData.type);\n } while (usedKeys.has(key));\n }\n usedKeys.add(key);\n\n const children = recordData.children\n ? (assignMissingKeys(\n recordData.children as Node<NodeDefaultAttribute>,\n usedKeys,\n ) as Node<NodeDefaultAttribute>)\n : recordData.children;\n\n return {\n ...recordData,\n key,\n children,\n };\n}\n\nexport function analyseNode(node: Node<NodeDefaultAttribute>): {\n valid: boolean;\n message?: string;\n} {\n const structural = analyseNodeStructural(node);\n if (!structural.valid) return structural;\n\n const patternRes = analyseNodeByPatterns(node);\n if (!patternRes.valid) {\n const prefix = patternRes.path ? `${patternRes.path}: ` : '';\n return { valid: false, message: `${prefix}${patternRes.message ?? ''}` };\n }\n\n return { valid: true, message: 'Node is valid (structure + patterns)' };\n}\n\nexport function analyseAndProccess(\n node: Node<NodeDefaultAttribute>,\n): Node<NodeDefaultAttribute> | null {\n if (isNodeNullOrUndefined(node)) {\n return null;\n }\n\n // Normalize persisted JSON \"select option\" objects into primitives before\n // validation (e.g. { label, value } -> value). This commonly appears in\n // attributes like events[].navigate_to.\n const normalized = normalizeNodeForValidation(node);\n\n const { valid, message } = analyseNode(normalized);\n if (!valid) {\n throw new Error(message ?? 'Node is not valid');\n }\n\n const usedKeys = new Set<string>();\n return assignMissingKeys(normalized, usedKeys);\n}\n","import metaJson from '../assets/meta.json';\n\nexport type BuilderMeta = {\n supportedProjectVersion: string;\n reactBuilderVersion: string;\n};\n\nconst meta: BuilderMeta = {\n supportedProjectVersion: metaJson.supportedProjectVersion,\n reactBuilderVersion: metaJson.reactBuilderVersion,\n};\n\nexport function getMeta(): BuilderMeta {\n return { ...meta };\n}\n","import { Node, NodeData } from '../types/Node';\nimport { Project, ProjectBase } from '../types/Project';\n//TODO: deprecated olmasına rağmen snapshot testi ekle\n/**\n * @deprecated Legacy converter for old \"nova\" onboard JSON formats.\n * The built-in samples are now shipped in the new `Project<Node>` format,\n * so this should no longer be needed in normal usage.\n */\nexport function novaToJson(nova: ProjectBase<unknown>): Node {\n const layout = (nova.data as any).data?.layout;\n if (layout === 'onboard-layout') {\n return onboardNovaToJson(nova);\n }\n return null;\n}\n//@eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction onboardNovaToJson(nova: ProjectBase<unknown>): Node {\n const attributes =\n (nova?.data as any)?.data?.attributes ||\n (nova?.data as any)?.attributes ||\n {};\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const generalComponents = (attributes?.general_components || []) as any[];\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const pages = (attributes?.data || []) as any[];\n\n const dotsNode = mapDotsFromGeneralComponents(generalComponents);\n const footerNode = mapFooterFromGeneralComponents(generalComponents);\n const { carouselNode, providerLevelButtons } = buildCarouselFromPages(pages);\n\n const providerNode: NodeData = {\n type: 'OnboardProvider',\n key: (nova?.data as any)?.data?.key,\n children: [\n carouselNode,\n // Place dots above buttons in visual order\n ...(dotsNode ? [dotsNode] : []),\n ...(providerLevelButtons.length ? providerLevelButtons : []),\n ...(footerNode ? [footerNode] : []),\n ],\n attributes: {\n theme: (nova?.data as any)?.theme,\n },\n };\n\n const mainNode: NodeData = {\n type: 'Main',\n isMain: true,\n key: (nova?.data as any)?.data?.key,\n children: [providerNode],\n attributes: {\n // default safe area view on; can be overridden in the editor\n useSafeAreaView: true,\n },\n };\n\n // Provider should have its own key if needed; avoid duplicating root key on child.\n delete (providerNode as any).key;\n\n return mainNode;\n}\n//@eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction buildCarouselFromPages(pages: any[]): {\n carouselNode: NodeData;\n providerLevelButtons: Node[];\n} {\n const simplePages = pages.filter(\n (p) => p?.layout === 'simple-onboard-layout',\n );\n const pageKeyToIndex = new Map<string, number>();\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n simplePages.forEach((p: any, idx: number) => {\n const key = p?.attributes?.key;\n if (typeof key === 'string') pageKeyToIndex.set(key, idx);\n });\n\n const providerLevelButtons: Node[] = [];\n const items: Node[] = simplePages.map((page) =>\n buildCarouselItem(page, pageKeyToIndex, providerLevelButtons),\n );\n\n const carouselNode: NodeData = {\n type: 'Onboard',\n children: items as unknown as Node,\n };\n\n return { carouselNode, providerLevelButtons };\n}\n\nfunction buildCarouselItem(\n page: any,\n pageKeyToIndex: Map<string, number>,\n providerLevelButtons: Node[],\n): NodeData {\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const components = (page?.attributes?.components || []) as any[];\n const children: Node[] = [];\n\n // Resolve page index for condition mapping\n const currentKey = page?.attributes?.key as string | undefined;\n const pageIndex =\n typeof currentKey === 'string' && pageKeyToIndex.has(currentKey)\n ? pageKeyToIndex.get(currentKey)!\n : undefined;\n\n for (const comp of components) {\n if (comp?.layout === 'title-layout') {\n const title = comp?.attributes?.title_localization_key || '';\n const color = comp?.attributes?.title_color || undefined;\n const {\n fontSize: titleFontSize,\n textAlign: titleTextAlign,\n marginTop: titleMarginTop,\n fontWeight: titleFontWeight,\n } = extractTextStyleAttributesFromComponent(comp);\n children.push({\n type: 'OnboardTitle',\n attributes:\n color ||\n titleFontSize ||\n titleTextAlign ||\n titleMarginTop ||\n titleFontWeight\n ? {\n ...(color ? { color } : {}),\n ...(typeof titleFontSize === 'number'\n ? { fontSize: titleFontSize }\n : {}),\n ...(titleTextAlign ? { textAlign: titleTextAlign } : {}),\n ...(typeof titleMarginTop === 'number'\n ? { marginTop: titleMarginTop }\n : {}),\n ...(titleFontWeight ? { fontWeight: titleFontWeight } : {}),\n }\n : undefined,\n children: title,\n });\n } else if (comp?.layout === 'subtitle-layout') {\n const subtitle = comp?.attributes?.subtitle_localization_key || '';\n const color = comp?.attributes?.subtitle_color || undefined;\n const {\n fontSize: subtitleFontSize,\n textAlign: subtitleTextAlign,\n marginTop: subtitleMarginTop,\n fontWeight: subtitleFontWeight,\n } = extractTextStyleAttributesFromComponent(comp);\n children.push({\n type: 'OnboardSubtitle',\n attributes:\n color ||\n subtitleFontSize ||\n subtitleTextAlign ||\n subtitleMarginTop ||\n subtitleFontWeight\n ? {\n ...(color ? { color } : {}),\n ...(typeof subtitleFontSize === 'number'\n ? { fontSize: subtitleFontSize }\n : {}),\n ...(subtitleTextAlign ? { textAlign: subtitleTextAlign } : {}),\n ...(typeof subtitleMarginTop === 'number'\n ? { marginTop: subtitleMarginTop }\n : {}),\n ...(subtitleFontWeight\n ? { fontWeight: subtitleFontWeight }\n : {}),\n }\n : undefined,\n children: subtitle,\n });\n } else if (comp?.layout === 'image-layout') {\n const src = comp?.attributes?.image || comp?.attributes?.src || '';\n const rawHeight =\n comp?.attributes?.height ??\n comp?.attributes?.ios_height ??\n comp?.attributes?.android_height;\n const height =\n typeof rawHeight === 'string'\n ? Number.parseInt(rawHeight, 10)\n : typeof rawHeight === 'number'\n ? rawHeight\n : undefined;\n\n // derive resizeMode from is_bg_image and try to extract borderRadius from styles\n const isBgImage = Boolean(comp?.attributes?.is_bg_image);\n const imageStyle = extractViewStyleAttributesFromComponent(comp);\n // optional rich media\n const lottie = comp?.attributes?.lottie as string | undefined;\n const videoUrl = comp?.attributes?.video_url as string | undefined;\n\n if (src) {\n children.push({\n type: 'OnboardImage',\n attributes: {\n src,\n ...(height ? { height } : {}),\n resizeMode: isBgImage ? 'cover' : 'contain',\n ...(typeof imageStyle.borderRadius === 'number'\n ? { borderRadius: imageStyle.borderRadius }\n : {}),\n ...(typeof lottie === 'string' ? { lottie } : {}),\n ...(typeof videoUrl === 'string' ? { video_url: videoUrl } : {}),\n },\n children: undefined as unknown as Node,\n } as unknown as NodeData);\n }\n } else if (comp?.layout === 'Buttons') {\n const direction = comp?.attributes?.buttons_direction;\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const buttons = (comp?.attributes?.buttons || []) as any[];\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const buttonNodes: Node[] = [];\n for (const btn of buttons) {\n const attrs = btn?.attributes || {};\n const labelKey = attrs?.button_text_localization_key || '';\n const buttonTextColor = attrs?.button_text_color;\n const buttonBackgroundColor = attrs?.button_background_color;\n const animation = attrs?.animation as\n | 'simple-animation'\n | 'line-animation'\n | 'blur'\n | 'blur-animation'\n | 'blur-line-animation'\n | undefined;\n const animationColor = attrs?.animation_color as string | undefined;\n const flex = attrs?.flex ? Number(attrs.flex) : undefined;\n\n // Normalize events and compute Navigate target indices when resolvable\n let targetIndex: number | undefined = undefined;\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const actions = (attrs?.actions || []) as any[];\n const normalizedEvents: {\n type: 'Permission' | 'Navigate';\n permission?: string;\n navigate_to?: string | null;\n targetIndex?: number;\n }[] = [];\n for (const action of actions) {\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const events = (action?.attributes?.events || []) as any[];\n for (const e of events) {\n if (e?.layout === 'Permission') {\n const permission = e?.attributes?.permission as\n | string\n | undefined;\n normalizedEvents.push({ type: 'Permission', permission });\n } else if (e?.layout === 'Navigate') {\n const nextKey = e?.attributes?.next_page_key as\n | string\n | undefined;\n // If key exists among simple-onboard-layout pages, prefer index navigation\n const hasTarget =\n typeof nextKey === 'string' && pageKeyToIndex.has(nextKey);\n const navigate_to = hasTarget\n ? null\n : typeof nextKey === 'string'\n ? nextKey\n : null;\n normalizedEvents.push({\n type: 'Navigate',\n navigate_to,\n ...(hasTarget\n ? { targetIndex: pageKeyToIndex.get(nextKey!)! }\n : {}),\n });\n if (hasTarget) {\n targetIndex = pageKeyToIndex.get(nextKey!)!;\n }\n }\n }\n }\n\n buttonNodes.push({\n type: 'OnboardButton',\n attributes: {\n labelKey,\n ...(typeof buttonTextColor === 'string'\n ? { button_text_color: buttonTextColor }\n : {}),\n ...(typeof animation === 'string' ? { animation } : {}),\n ...(typeof animationColor === 'string'\n ? { animation_color: animationColor }\n : {}),\n ...(typeof buttonBackgroundColor === 'string'\n ? { button_background_color: buttonBackgroundColor }\n : {}),\n ...(typeof flex === 'number' ? { flex } : {}),\n ...(normalizedEvents.length ? { events: normalizedEvents } : {}),\n },\n children: undefined as unknown as Node,\n } as unknown as NodeData);\n }\n\n if (buttonNodes.length > 0) {\n // Place buttons at provider level with visibility conditioned by page index\n providerLevelButtons.push({\n type: 'OnboardButtons',\n attributes: {\n ...(direction ? { buttons_direction: direction } : {}),\n ...(typeof pageIndex === 'number'\n ? { condition: 'carousel-index', conditionVariable: pageIndex }\n : {}),\n },\n children: buttonNodes as unknown as Node,\n } as unknown as NodeData);\n }\n }\n }\n\n const pageKeyAttr = page?.attributes?.key;\n const resolvedKey =\n (typeof pageKeyAttr === 'string' && pageKeyAttr) ||\n (typeof page?.key === 'string' ? page.key : undefined);\n\n return {\n type: 'OnboardItem',\n ...(resolvedKey ? { key: resolvedKey } : {}),\n children,\n };\n}\n\n//@eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction extractTextStyleAttributesFromComponent(comp: any): {\n fontSize?: number;\n textAlign?: 'left' | 'center' | 'right' | 'justify';\n marginTop?: number;\n fontWeight?:\n | 'normal'\n | 'bold'\n | '100'\n | '200'\n | '300'\n | '400'\n | '500'\n | '600'\n | '700'\n | '800'\n | '900';\n} {\n const result: {\n fontSize?: number;\n textAlign?: 'left' | 'center' | 'right' | 'justify';\n marginTop?: number;\n fontWeight?:\n | 'normal'\n | 'bold'\n | '100'\n | '200'\n | '300'\n | '400'\n | '500'\n | '600'\n | '700'\n | '800'\n | '900';\n } = {};\n\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const stylesRoot = (comp?.attributes?.styles || []) as any[];\n if (!Array.isArray(stylesRoot) || stylesRoot.length === 0) return result;\n\n const allowedAligns = new Set(['left', 'center', 'right', 'justify']);\n const allowedWeights = new Set([\n 'normal',\n 'bold',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n ]);\n\n for (const s of stylesRoot) {\n if (s?.layout !== 'style-layout') continue;\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const nested = (s?.attributes?.styles || []) as any[];\n if (!Array.isArray(nested)) continue;\n for (const st of nested) {\n if (st?.layout !== 'Styles') continue;\n const type = st?.attributes?.type;\n if (type !== 'textStyle') continue;\n const style = st?.attributes?.style || {};\n\n const rawFontSize = style?.fontSize;\n if (typeof rawFontSize === 'number' && Number.isFinite(rawFontSize)) {\n result.fontSize = rawFontSize;\n } else if (typeof rawFontSize === 'string') {\n const n = Number.parseInt(rawFontSize, 10);\n if (Number.isFinite(n)) result.fontSize = n;\n }\n\n const align = style?.textAlign;\n if (typeof align === 'string' && allowedAligns.has(align)) {\n result.textAlign = align as typeof result.textAlign;\n }\n\n const rawMarginTop = style?.marginTop;\n if (typeof rawMarginTop === 'number' && Number.isFinite(rawMarginTop)) {\n result.marginTop = rawMarginTop;\n } else if (typeof rawMarginTop === 'string') {\n const n = Number.parseInt(rawMarginTop, 10);\n if (Number.isFinite(n)) result.marginTop = n;\n }\n\n const rawWeight = style?.fontWeight;\n let normalizedWeight: string | undefined;\n if (typeof rawWeight === 'number' && Number.isFinite(rawWeight)) {\n normalizedWeight = String(rawWeight);\n } else if (typeof rawWeight === 'string') {\n normalizedWeight = rawWeight;\n }\n if (normalizedWeight && allowedWeights.has(normalizedWeight)) {\n result.fontWeight = normalizedWeight as typeof result.fontWeight;\n }\n }\n }\n\n return result;\n}\n\n//@eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction extractViewStyleAttributesFromComponent(comp: any): {\n borderRadius?: number;\n} {\n const result: { borderRadius?: number } = {};\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const stylesRoot = (comp?.attributes?.styles || []) as any[];\n if (!Array.isArray(stylesRoot) || stylesRoot.length === 0) return result;\n for (const s of stylesRoot) {\n if (s?.layout !== 'style-layout') continue;\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const nested = (s?.attributes?.styles || []) as any[];\n if (!Array.isArray(nested)) continue;\n for (const st of nested) {\n if (st?.layout !== 'Styles') continue;\n const style = st?.attributes?.style || {};\n const rawBr = style?.borderRadius;\n if (typeof rawBr === 'number' && Number.isFinite(rawBr)) {\n result.borderRadius = rawBr;\n } else if (typeof rawBr === 'string') {\n const n = Number.parseInt(rawBr, 10);\n if (Number.isFinite(n)) result.borderRadius = n;\n }\n }\n }\n return result;\n}\n\nfunction mapDotsFromGeneralComponents(generalComponents: any[]): Node | null {\n const dots = generalComponents.find((gc) => gc?.layout === 'dots-layout');\n if (!dots) return null;\n const dotArray = dots?.attributes?.dot || [];\n const firstDot = dotArray?.[0];\n const dotType = firstDot?.layout as\n | 'expanding_dot'\n | 'normal_dot'\n | 'scaling_dot'\n | 'sliding_border'\n | 'sliding_dot'\n | 'liquid_like';\n const dotAttrs = (firstDot?.attributes || {}) as Record<string, unknown>;\n\n const parseNumber = (value: unknown): number | undefined => {\n if (typeof value === 'number') return value;\n if (typeof value === 'string' && value.trim().length > 0) {\n const n = Number(value);\n return Number.isFinite(n) ? n : undefined;\n }\n return undefined;\n };\n\n const inactiveDotOpacity = parseNumber(dotAttrs?.inactive_dot_opacity);\n const expandingDotWidth = parseNumber(dotAttrs?.expanding_dot_width);\n const dot_style =\n typeof dotAttrs?.dot_style === 'string'\n ? (dotAttrs.dot_style as string)\n : undefined;\n const container_style =\n typeof dotAttrs?.container_style === 'string'\n ? (dotAttrs.container_style as string)\n : undefined;\n const active_dot_color =\n typeof dotAttrs?.active_dot_color === 'string'\n ? (dotAttrs.active_dot_color as string)\n : undefined;\n\n const attributes: Record<string, unknown> = {};\n if (dotType) attributes.dotType = dotType;\n if (inactiveDotOpacity !== undefined)\n attributes.inactive_dot_opacity = inactiveDotOpacity;\n if (expandingDotWidth !== undefined)\n attributes.expanding_dot_width = expandingDotWidth;\n if (dot_style) attributes.dot_style = dot_style;\n if (container_style) attributes.container_style = container_style;\n if (active_dot_color) attributes.active_dot_color = active_dot_color;\n return {\n type: 'OnboardDot',\n attributes: Object.keys(attributes).length ? attributes : undefined,\n children: undefined as unknown as Node,\n } as unknown as NodeData;\n}\n\nfunction mapFooterFromGeneralComponents(generalComponents: any[]): Node | null {\n const footer = generalComponents.find((gc) => gc?.layout === 'footer-layout');\n if (!footer) return null;\n const texts = (footer?.attributes?.texts || []) as any[];\n const linkedWords: { text_key?: string; color?: string; page?: string }[] =\n [];\n let baseTextKey: string | undefined;\n let baseTextColor: string | undefined;\n\n for (const t of texts) {\n if (t?.layout === 'Text') {\n const textKey = t?.attributes?.text_localization_key || '';\n const color = t?.attributes?.text_color || undefined;\n if (!baseTextKey) baseTextKey = textKey;\n if (!baseTextColor && typeof color === 'string') baseTextColor = color;\n\n // Extract linked words if present\n const lws = (t?.attributes?.linkedwords || []) as any[];\n for (const w of lws) {\n if (w?.layout === 'LinkedWords') {\n const text_key = w?.attributes?.linked_word_localization_key as\n | string\n | undefined;\n const lwColor = w?.attributes?.linked_word_color as\n | string\n | undefined;\n const page = w?.attributes?.page as string | undefined;\n linkedWords.push({ text_key, color: lwColor, page });\n }\n }\n }\n }\n\n const attributes: Record<string, unknown> = { gap: 8 };\n if (baseTextKey) attributes.textLocalizationKey = baseTextKey;\n // OnboardFooter extends Text, so the canonical text color attribute is `color`.\n if (baseTextColor) attributes.color = baseTextColor;\n const first = linkedWords[0];\n const second = linkedWords[1];\n if (first) {\n if (first.text_key)\n attributes.linkedWordFirstLocalizationKey = first.text_key;\n if (first.color) attributes.linkedWordFirstColor = first.color;\n if (first.page) attributes.linkedWordFirstPage = first.page;\n }\n if (second) {\n if (second.text_key)\n attributes.linkedWordSecondLocalizationKey = second.text_key;\n if (second.color) attributes.linkedWordSecondColor = second.color;\n if (second.page) attributes.linkedWordSecondPage = second.page;\n }\n\n return {\n type: 'OnboardFooter',\n attributes,\n children: undefined as unknown as Node,\n } as NodeData;\n}\n","import { Node, NodeData } from '../types/Node';\n\nfunction isNodeData(value: Node): value is NodeData<Record<string, unknown>> {\n if (value === null || value === undefined) return false;\n if (Array.isArray(value)) return false;\n if (typeof value === 'string') return false;\n if (typeof value !== 'object') return false;\n return (\n 'type' in (value as Record<string, unknown>) &&\n 'children' in (value as Record<string, unknown>)\n );\n}\n\nexport function querySelector(node: Node, selector: string): NodeData[] {\n if (node === null || node === undefined) return [];\n if (!selector) return [];\n\n const isKeySearch = selector.startsWith('#');\n const keyToMatch = isKeySearch ? selector.slice(1) : undefined;\n\n const matches = (n: NodeData): boolean => {\n if (isKeySearch) return n.key === keyToMatch;\n return n.type === selector;\n };\n\n const result: NodeData[] = [];\n\n const visit = (current: Node) => {\n if (current === null || current === undefined) return;\n if (Array.isArray(current)) {\n for (const child of current) visit(child);\n return;\n }\n if (typeof current === 'string') return;\n if (isNodeData(current)) {\n if (matches(current)) result.push(current);\n visit(current.children);\n }\n };\n\n visit(node);\n return result;\n}\n","export const TRIBE_ASSETS_BASE_URL =\n 'https://tribemarketing.s3.eu-central-1.amazonaws.com/tribehub-assets/';\n\nexport enum TribeAssetName {\n Android = 'android.svg',\n Apple = 'apple.svg',\n Background = 'background.jpg',\n}\n\nfunction normalizeAssetName(name: string): string {\n const trimmed = name.trim().replace(/^\\/+/, '');\n\n // Common typos / aliases\n if (trimmed === 'backgorund.jpg') return 'background.jpg';\n if (trimmed === 'ios.svg') return 'apple.svg';\n\n return trimmed;\n}\n\nfunction encodePath(path: string): string {\n // Encode each segment but keep `/` separators intact.\n return path\n .split('/')\n .filter(Boolean)\n .map((seg) => encodeURIComponent(seg))\n .join('/');\n}\n\n/**\n * Returns a full CDN URL for a given asset name/path.\n *\n * Examples:\n * - getImage(TribeAssetName.Android)\n * - getImage(TribeAssetName.Apple) // also accepts 'ios.svg' via parseTribeAssetName/resolveImageSrc\n * - getImage(TribeAssetName.Background) // also accepts 'backgorund.jpg' via parseTribeAssetName/resolveImageSrc\n */\nexport function getImage(name: TribeAssetName): string {\n const normalized = normalizeAssetName(name);\n const base = TRIBE_ASSETS_BASE_URL.endsWith('/')\n ? TRIBE_ASSETS_BASE_URL\n : `${TRIBE_ASSETS_BASE_URL}/`;\n\n return `${base}${encodePath(normalized)}`;\n}\n\nexport function parseTribeAssetName(name: string): TribeAssetName | null {\n const normalized = normalizeAssetName(name);\n switch (normalized) {\n case TribeAssetName.Android:\n return TribeAssetName.Android;\n case TribeAssetName.Apple:\n return TribeAssetName.Apple;\n case TribeAssetName.Background:\n return TribeAssetName.Background;\n default:\n return null;\n }\n}\n\nfunction isAbsoluteUrl(src: string): boolean {\n // Covers http(s), data, blob, and protocol-relative URLs.\n return /^(https?:)?\\/\\//.test(src) || /^(data|blob):/.test(src);\n}\n\n/**\n * Resolves a `src` value into a usable URL:\n * - Absolute URLs are returned unchanged\n * - Known tribe asset names (or aliases) are converted via `getImage`\n * - Unknown relative strings are returned unchanged\n */\nexport function resolveImageSrc(src?: string | null): string | undefined {\n if (!src) return undefined;\n if (isAbsoluteUrl(src)) return src;\n const parsed = parseTribeAssetName(src);\n return parsed ? getImage(parsed) : src;\n}\n","import { NodeData, NodeDefaultAttribute } from '../types/Node';\nimport { getDefaultsForType } from '../utils/patterns';\n\nexport default function useNode<\n T extends NodeDefaultAttribute = NodeDefaultAttribute,\n>(node: NodeData<T>): NodeData<T> {\n const type = node?.type;\n const defaults = getDefaultsForType(type) as Partial<T> | undefined;\n if (!defaults) return node;\n const nodeAttributes = ((node.attributes as T) ?? ({} as T)) as T & {\n style?: Record<string, unknown>;\n };\n const defaultAttributes = defaults as T as T & {\n style?: Record<string, unknown>;\n };\n const mergedAttributes: T = {\n ...(defaultAttributes as T),\n ...(nodeAttributes as T),\n // Deep merge `style` so default style values aren't lost when the node provides partial style overrides.\n style: {\n ...(defaultAttributes?.style ?? {}),\n ...(nodeAttributes?.style ?? {}),\n },\n } as T;\n if (\n mergedAttributes &&\n typeof (mergedAttributes as any).style === 'object' &&\n (mergedAttributes as any).style != null &&\n Object.keys((mergedAttributes as any).style).length === 0\n ) {\n delete (mergedAttributes as any).style;\n }\n return { ...node, attributes: mergedAttributes };\n}\n","import { Project } from '../../types/Project';\nimport simple1 from './simple-1.json';\nimport simple2 from './simple-2.json';\nimport carouselSample from './carousel-sample.json';\nimport unvalidatedBuilder1 from './unvalidated-builder1.json';\nimport unvalidatedCrash1 from './unvalidated-crash1.json';\nimport unvalidatedCrashComponent1 from './unvalidated-crashcomponent1.json';\nimport unmigratedBuilder1 from './unmigrated-builder1.json';\nimport unmigratedBuilder1_1_1 from './unmigrated-builder-1.1.1.json';\nimport paywall1 from './paywall-1.json';\nimport paywall2 from './paywall-2.json';\nimport vpnOnboard1 from './vpn-onboard-1.json';\nimport vpnOnboard2 from './vpn-onboard-2.json';\nimport vpnOnboard3 from './vpn-onboard-3.json';\nimport vpnOnboard4 from './vpn-onboard-4.json';\nimport vpnOnboard5 from './vpn-onboard-5.json';\nimport vpnOnboard6 from './vpn-onboard-6.json';\nimport { defaultAppConfig } from '../../types/PreviewConfig';\n\nfunction normalizeSample(sample: any): Project {\n return {\n ...sample,\n appConfig: { ...defaultAppConfig, ...(sample as any).appConfig },\n } as Project;\n}\n\nexport function getSamples(): Project[] {\n const onboardSamples = [\n vpnOnboard1,\n vpnOnboard2,\n vpnOnboard3,\n vpnOnboard4,\n vpnOnboard5,\n vpnOnboard6,\n ].map(normalizeSample);\n\n return [\n normalizeSample(simple1),\n normalizeSample(simple2),\n normalizeSample(carouselSample),\n normalizeSample(unvalidatedBuilder1),\n normalizeSample(unvalidatedCrash1),\n normalizeSample(unvalidatedCrashComponent1),\n normalizeSample(unmigratedBuilder1),\n normalizeSample(unmigratedBuilder1_1_1),\n normalizeSample(paywall1),\n normalizeSample(paywall2),\n ...onboardSamples,\n ];\n}\n\nexport function getBasicSamples(): Project[] {\n return [\n normalizeSample(simple1),\n normalizeSample(simple2),\n normalizeSample(carouselSample),\n normalizeSample(unvalidatedBuilder1),\n ];\n}\n\nexport function getOnboardSamples(): Project[] {\n return [\n vpnOnboard1,\n vpnOnboard2,\n vpnOnboard3,\n vpnOnboard4,\n vpnOnboard5,\n vpnOnboard6,\n ].map(normalizeSample);\n}\n\nexport function getPaywallSamples(): Project[] {\n return [normalizeSample(paywall1), normalizeSample(paywall2)];\n}\n","import metaJson from '../assets/meta.json';\nimport type { Project } from '../types/Project';\nimport type { Node } from '../types/Node';\n\ntype GetDefaultProjectArgs = Partial<Project>;\n\nexport function getDefaultProject(\n overrides: GetDefaultProjectArgs = {},\n): Project {\n const supportedVersion =\n typeof metaJson?.supportedProjectVersion === 'string' &&\n metaJson.supportedProjectVersion.trim()\n ? metaJson.supportedProjectVersion.trim()\n : '0.0.0';\n\n const version =\n typeof overrides.version === 'string' && overrides.version.trim()\n ? overrides.version.trim()\n : supportedVersion;\n\n const name =\n typeof overrides.name === 'string' && overrides.name.trim()\n ? overrides.name.trim()\n : 'project';\n\n return {\n name,\n version,\n data: (overrides.data ?? null) as Node,\n appConfig: overrides.appConfig,\n projectColors: overrides.projectColors,\n type: overrides.type,\n };\n}\n"],"names":["defaultAppConfig","theme","isRtl","screenStyle","light","backgroundColor","color","dark","localication","baseSize","width","height","usePaywallCounter","useCloseStatusPaywall","useCarouselOptionsSeperator","useCalculateLocalizedPrice","useDiscountRate","BuilderContext","createContext","undefined","BuilderProvider","params","children","value","useMemo","products","Array","isArray","benefits","onPaywallSubscribe","appConfig","projectColors","fonts","appFont","platform","previewMode","selectedKey","useEffect","console","info","productsCount","length","_jsx","Provider","useBuilderParams","useContext","ParamsContext","localizationParams","otherParams","isProvided","ParamsProvider","LocalizationParamsProvider","useParams","useLocalizationParams","useLocalize","options","builderAppConfig","defaultLanguage","useCallback","keyOrText","text","Object","entries","reduce","acc","key","val","needle","split","join","String","replaceLocalizationParams","process","env","NODE_ENV","shimModule","exports","React","require$$0","objectIs","is","x","y","useState","useLayoutEffect","useDebugValue","checkIfSnapshotChanged","inst","latestGetSnapshot","getSnapshot","nextValue","error","shim","window","document","createElement","subscribe","_useState","forceUpdate","useSyncExternalStoreShim_production","useSyncExternalStore","__REACT_DEVTOOLS_GLOBAL_HOOK__","registerInternalModuleStart","Error","didWarnOld18Alpha","didWarnUncachedGetSnapshot","startTransition","cachedValue","useSyncExternalStoreShim_development","registerInternalModuleStop","withSelectorModule","require$$1","useRef","withSelector_production","useSyncExternalStoreWithSelector","getServerSnapshot","selector","isEqual","instRef","current","hasValue","memoizedSelector","nextSnapshot","hasMemo","memoizedSnapshot","currentSelection","memoizedSelection","nextSelection","maybeGetServerSnapshot","withSelector_development","createStoreImpl","createState","state","listeners","Set","setState","partial","replace","nextState","previousState","assign","forEach","listener","getState","api","getInitialState","initialState","add","delete","useSyncExternalStoreExports","identity","arg","isIterable","obj","Symbol","iterator","hasIterableEntries","compareEntries","valueA","valueB","mapA","Map","mapB","size","has","get","getDevices","deviceList","devices","slice","sort","a","b","importance","getDefaultDevice","createJSONStorage","getStorage","storage","e","persistStorage","getItem","name","_a","parse","str2","JSON","str","Promise","then","setItem","newValue","stringify","removeItem","toThenable","fn","input","result","onFulfilled","_onRejected","this","_onFulfilled","catch","onRejected","useRenderStore","defaultEqualityFn","createStore","useBoundStoreWithEqualityFn","equalityFn","useStoreWithEqualityFn","createWithEqualityFn","config","baseOptions","set","localStorage","partialize","version","merge","persistedState","currentState","hasHydrated","hydrationListeners","finishHydrationListeners","args","warn","savedSetState","configResult","stateFromStorage","hydrate","_b","cb","_a2","postRehydrationCallback","onRehydrateStorage","call","bind","deserializedStorageValue","migrate","migration","migrationResult","migrated","migratedState","persist","setOptions","newOptions","clearStorage","getOptions","rehydrate","onHydrate","onFinishHydration","skipHydration","projectName","setProjectName","copiedNode","setCopiedNode","node","setCurrent","forceRender","incForceRender","device","setDevice","setAppConfig","setProjectColors","setPreviewMode","addProduct","productId","title","description","localizedPrice","price","currency","removeProduct","index","filter","_","idx","updateProduct","patch","prev","map","p","setProducts","clearProducts","setBenefits","clearBenefits","upsertBenefit","normalizedKey","trim","next","removeBenefit","renameBenefit","fromKey","toKey","from","to","logs","logLevel","setLogLevel","level","addLog","entry","now","Date","newEntry","id","Math","random","toString","timestamp","source","message","payload","clearLogs","setFonts","setAppFont","errors","setErrors","addError","clearErrors","loadedFonts","markFontLoaded","fontFamily","family","includes","getPrototypeOf","iteratorA","iteratorB","nextA","nextB","done","compareIterables","fallbackDevice","fallbackBaseSize","ensureNumber","fallback","Number","isFinite","getBaseDimensions","deviceWidth","deviceHeight","baseWidth","baseHeight","shortDimension","longDimension","verticalScale","s","vs","fs","parseSize","raw","lower","toLowerCase","endsWith","n","parseFloat","cut","numericPortion","numeric","STATIC_PREFIX","THEME_PREFIX","parseColor","trimmed","startsWith","token","resolved","STATIC_COLORS","resolvedTheme","themeTokens","THEME_COLORS","extractViewStyleNative","attributes","styleBag","style","direct","flexDirection","alignItems","justifyContent","setParsedSize","property","rawValue","parsed","marginHorizontal","flex","position","zIndex","FONT_WEIGHT_OPTIONS","normalizeFontWeight","asString","normalizeFamilyName","parseWeightKey","extractTextStyleNative","resolvedAppConfig","fallbackColor","fontSize","parsedFontSize","fontWeight","requestedWeight","weight","normalized","weightToNumericKey","normalizedFontFamily","def","familyName","find","f","findFontDefinition","resolvedWeightKey","k","v","reqKey","some","reqNum","best","bestDiff","abs","cand","diff","resolveClosestFontWeightKey","normalizedFontWeight","resolvedTextColor","textAlign","useExtractTextStyle","builderProjectColors","builderFonts","attrs","_style","rest","other","adjustsFontSizeToFit","showEllipsis","useExtractViewStyle","scrollable","useExtractImageStyle","styleWithResizeMode","resizeMode","nativeStyle","extractImageStyleNative","resizeModeFromStyle","generateRandomKeyForNode","type","substring","patterns","schemaVersion","pattern","gap","padding","paddingHorizontal","paddingVertical","paddingTop","paddingBottom","paddingLeft","paddingRight","margin","marginVertical","marginTop","marginBottom","marginLeft","marginRight","borderRadius","minWidth","maxWidth","minHeight","maxHeight","top","bottom","left","right","iconType","strokeWidth","meta","desiredParent","label","styles","category","specialCategory","preferredScale","specialCategories","offset","defaults","alignSelf","flexGrow","flexShrink","types","src","display","loop","dragFree","align","buttonType","skipNumber","dotType","allowUnknownAttributes","count","useSafeAreaView","forceVisible","hideAllAttributes","desiredChildren","labelKey","button_text_color","animation","animation_color","button_background_color","events","EventObject","permission","navigate_to","targetIndex","buttons_direction","forIndex","seperatorColor","condition","conditionVariable","inactive_dot_opacity","expanding_dot_width","active_dot_color","textLocalizationKey","linkedWordFirstLocalizationKey","linkedWordFirstColor","linkedWordFirstPage","linkedWordSecondLocalizationKey","linkedWordSecondColor","linkedWordSecondPage","video_url","lottie","mockableFeatures","selected","patternIndex","pascalToCamelCase","pascalToKebabCase","typeAliases","canonical","aliases","normalizeComponentType","getPatternByType","getAttributeSchema","getAttributeMeta","nestedStyles","attributesWithoutNestedStyles","fromEntries","normalizePlatform","moveToOtherAlways","moveToOtherOnWeb","moveToOtherOnNative","shouldMove","changed","out","adjustMetaForPlatform","getDefaultsForType","getTypeSchema","componentType","typeName","isPrimitiveType","getArrayItemType","isNodeNullOrUndefined","isNodeString","isNodeArray","isEmptyObject","keys","fail","path","valid","joinPath","base","isPlainObject","isNodeDataLike","normalizeTypeOrFallback","validateChildrenByPattern","nodeData","tokens","getChildrenSpecTokens","baseKinds","allowedComponentTypes","t","splitChildrenSpec","neverRes","validateChildrenNeverRule","kindRes","validateChildrenKindRule","allowed","validateChildType","child","childPath","actual","arr","i","res","validateChildrenAllowedComponentTypesRule","validateAttributeValue","spec","validateEnumValue","arrayItemType","primitiveType","validatePrimitiveValue","schema","fieldName","fieldSpec","validateCustomObjectValue","validateAttributesByPattern","styleSchema","maybe","getStyleSubSchema","maybeStyle","styleKey","styleValue","attrName","attrValue","attrSpec","legacyStyleSpec","validateAnyNodeByPatterns","selfRes","attrRes","childrenRes","validateNodeDataByPatterns","analyseNodeStructural","nodeArray","recordData","normalizeUnknownValue","looksLikeSelectOptionObject","normalizeNodeForValidation","assignMissingKeys","usedKeys","analyseNode","structural","patternRes","analyseNodeByPatterns","analyseAndProccess","supportedProjectVersion","metaJson","reactBuilderVersion","getMeta","novaToJson","nova","layout","data","generalComponents","general_components","pages","dotsNode","dots","gc","dotArray","dot","firstDot","dotAttrs","parseNumber","inactiveDotOpacity","expandingDotWidth","dot_style","container_style","mapDotsFromGeneralComponents","footerNode","footer","texts","linkedWords","baseTextKey","baseTextColor","textKey","text_localization_key","text_color","lws","linkedwords","w","text_key","linked_word_localization_key","lwColor","linked_word_color","page","push","first","second","mapFooterFromGeneralComponents","carouselNode","providerLevelButtons","simplePages","pageKeyToIndex","items","components","currentKey","pageIndex","comp","title_localization_key","title_color","titleFontSize","titleTextAlign","titleMarginTop","titleFontWeight","extractTextStyleAttributesFromComponent","subtitle","subtitle_localization_key","subtitle_color","subtitleFontSize","subtitleTextAlign","subtitleMarginTop","subtitleFontWeight","image","rawHeight","ios_height","android_height","parseInt","isBgImage","Boolean","is_bg_image","imageStyle","extractViewStyleAttributesFromComponent","videoUrl","direction","buttons","buttonNodes","btn","button_text_localization_key","buttonTextColor","buttonBackgroundColor","animationColor","actions","normalizedEvents","action","nextKey","next_page_key","hasTarget","pageKeyAttr","resolvedKey","buildCarouselItem","buildCarouselFromPages","providerNode","mainNode","isMain","onboardNovaToJson","stylesRoot","allowedAligns","allowedWeights","nested","st","rawFontSize","rawMarginTop","rawWeight","normalizedWeight","rawBr","querySelector","isKeySearch","keyToMatch","visit","TRIBE_ASSETS_BASE_URL","TribeAssetName","normalizeAssetName","getImage","seg","encodeURIComponent","parseTribeAssetName","Android","Apple","Background","resolveImageSrc","test","isAbsoluteUrl","useNode","nodeAttributes","defaultAttributes","mergedAttributes","normalizeSample","sample","getSamples","onboardSamples","vpnOnboard1","vpnOnboard2","vpnOnboard3","vpnOnboard4","vpnOnboard5","vpnOnboard6","simple1","simple2","carouselSample","unvalidatedBuilder1","unvalidatedCrash1","unvalidatedCrashComponent1","unmigratedBuilder1","unmigratedBuilder1_1_1","paywall1","paywall2","getBasicSamples","getOnboardSamples","getDefaultProject","overrides","supportedVersion"],"mappings":"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","x_google_ignoreList":[13,14,15,16,17,18,19,20,21,23]}
|