react-native-better-html 1.0.8 → 1.0.9

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/index.d.mts CHANGED
@@ -30,7 +30,7 @@ type BetterComponentsProviderProps = BetterProviderCommonProps & {
30
30
  config?: BetterComponentsProviderConfig;
31
31
  };
32
32
  declare function BetterComponentsProvider({ config, ...props }: BetterComponentsProviderProps): react_jsx_runtime.JSX.Element;
33
- declare const _default: react.MemoExoticComponent<typeof BetterComponentsProvider>;
33
+ declare const _default$1: react.MemoExoticComponent<typeof BetterComponentsProvider>;
34
34
 
35
35
  type ComponentStyle<Style extends ViewStyle = ViewStyle> = OmitProps<Style, "shadowOffset" | ComponentExcludeMarginProps | ComponentExcludePaddingProps> & {
36
36
  shadowOffsetWidth?: number;
@@ -348,8 +348,16 @@ declare const InputField: typeof InputFieldComponent & {
348
348
  password: typeof InputFieldComponent.password;
349
349
  };
350
350
 
351
+ type StatusBarProps = {
352
+ darkStatusBar?: boolean;
353
+ /** @default false */
354
+ hidden?: boolean;
355
+ };
356
+ declare function StatusBar({ darkStatusBar, hidden }: StatusBarProps): react_jsx_runtime.JSX.Element;
357
+ declare const _default: react.MemoExoticComponent<typeof StatusBar>;
358
+
351
359
  type AsyncStoragePluginOptions = {};
352
360
  declare const defaultAsyncStoragePluginOptions: Required<AsyncStoragePluginOptions>;
353
361
  declare const asyncStoragePlugin: BetterComponentsPluginConstructor<AsyncStoragePluginOptions>;
354
362
 
355
- export { Animate, type AnimateTextProps, type AnimateViewProps, type AppConfig, type AsyncStoragePluginOptions, type BetterComponentsConfig, type BetterComponentsPlugin, _default as BetterComponentsProvider, type BetterComponentsProviderConfig, Button, type ButtonProps, type ComponentMarginProps, type ComponentPaddingProps, type FooterProps, Image, type ImageProps, InputField, type InputFieldProps, Loader, type LoaderProps, type LoaderSize, type PluginName, ScreenHolder, type ScreenHolderProps, Text, type TextProps, View, type ViewProps, asyncStoragePlugin, defaultAsyncStoragePluginOptions, generateAsyncStorage, pressStrength, useBetterComponentsContext, useDevice, useKeyboard };
363
+ export { Animate, type AnimateTextProps, type AnimateViewProps, type AppConfig, type AsyncStoragePluginOptions, type BetterComponentsConfig, type BetterComponentsPlugin, _default$1 as BetterComponentsProvider, type BetterComponentsProviderConfig, Button, type ButtonProps, type ComponentMarginProps, type ComponentPaddingProps, type FooterProps, Image, type ImageProps, InputField, type InputFieldProps, Loader, type LoaderProps, type LoaderSize, type PluginName, ScreenHolder, type ScreenHolderProps, _default as StatusBar, type StatusBarProps, Text, type TextProps, View, type ViewProps, asyncStoragePlugin, defaultAsyncStoragePluginOptions, generateAsyncStorage, pressStrength, useBetterComponentsContext, useDevice, useKeyboard };
package/dist/index.d.ts CHANGED
@@ -30,7 +30,7 @@ type BetterComponentsProviderProps = BetterProviderCommonProps & {
30
30
  config?: BetterComponentsProviderConfig;
31
31
  };
32
32
  declare function BetterComponentsProvider({ config, ...props }: BetterComponentsProviderProps): react_jsx_runtime.JSX.Element;
33
- declare const _default: react.MemoExoticComponent<typeof BetterComponentsProvider>;
33
+ declare const _default$1: react.MemoExoticComponent<typeof BetterComponentsProvider>;
34
34
 
35
35
  type ComponentStyle<Style extends ViewStyle = ViewStyle> = OmitProps<Style, "shadowOffset" | ComponentExcludeMarginProps | ComponentExcludePaddingProps> & {
36
36
  shadowOffsetWidth?: number;
@@ -348,8 +348,16 @@ declare const InputField: typeof InputFieldComponent & {
348
348
  password: typeof InputFieldComponent.password;
349
349
  };
350
350
 
351
+ type StatusBarProps = {
352
+ darkStatusBar?: boolean;
353
+ /** @default false */
354
+ hidden?: boolean;
355
+ };
356
+ declare function StatusBar({ darkStatusBar, hidden }: StatusBarProps): react_jsx_runtime.JSX.Element;
357
+ declare const _default: react.MemoExoticComponent<typeof StatusBar>;
358
+
351
359
  type AsyncStoragePluginOptions = {};
352
360
  declare const defaultAsyncStoragePluginOptions: Required<AsyncStoragePluginOptions>;
353
361
  declare const asyncStoragePlugin: BetterComponentsPluginConstructor<AsyncStoragePluginOptions>;
354
362
 
355
- export { Animate, type AnimateTextProps, type AnimateViewProps, type AppConfig, type AsyncStoragePluginOptions, type BetterComponentsConfig, type BetterComponentsPlugin, _default as BetterComponentsProvider, type BetterComponentsProviderConfig, Button, type ButtonProps, type ComponentMarginProps, type ComponentPaddingProps, type FooterProps, Image, type ImageProps, InputField, type InputFieldProps, Loader, type LoaderProps, type LoaderSize, type PluginName, ScreenHolder, type ScreenHolderProps, Text, type TextProps, View, type ViewProps, asyncStoragePlugin, defaultAsyncStoragePluginOptions, generateAsyncStorage, pressStrength, useBetterComponentsContext, useDevice, useKeyboard };
363
+ export { Animate, type AnimateTextProps, type AnimateViewProps, type AppConfig, type AsyncStoragePluginOptions, type BetterComponentsConfig, type BetterComponentsPlugin, _default$1 as BetterComponentsProvider, type BetterComponentsProviderConfig, Button, type ButtonProps, type ComponentMarginProps, type ComponentPaddingProps, type FooterProps, Image, type ImageProps, InputField, type InputFieldProps, Loader, type LoaderProps, type LoaderSize, type PluginName, ScreenHolder, type ScreenHolderProps, _default as StatusBar, type StatusBarProps, Text, type TextProps, View, type ViewProps, asyncStoragePlugin, defaultAsyncStoragePluginOptions, generateAsyncStorage, pressStrength, useBetterComponentsContext, useDevice, useKeyboard };
package/dist/index.js CHANGED
@@ -37,36 +37,37 @@ __export(index_exports, {
37
37
  InputField: () => InputField_default,
38
38
  Loader: () => Loader_default,
39
39
  ScreenHolder: () => ScreenHolder_default,
40
+ StatusBar: () => StatusBar_default,
40
41
  Text: () => Text_default,
41
42
  View: () => View_default,
42
43
  asyncStoragePlugin: () => asyncStoragePlugin,
43
- colorThemeControls: () => import_react_better_core10.colorThemeControls,
44
- countries: () => import_react_better_core10.countries,
45
- darkenColor: () => import_react_better_core10.darkenColor,
44
+ colorThemeControls: () => import_react_better_core11.colorThemeControls,
45
+ countries: () => import_react_better_core11.countries,
46
+ darkenColor: () => import_react_better_core11.darkenColor,
46
47
  defaultAsyncStoragePluginOptions: () => defaultAsyncStoragePluginOptions,
47
- desaturateColor: () => import_react_better_core10.desaturateColor,
48
- eventPreventDefault: () => import_react_better_core10.eventPreventDefault,
49
- eventPreventStop: () => import_react_better_core10.eventPreventStop,
50
- eventStopPropagation: () => import_react_better_core10.eventStopPropagation,
51
- formatPhoneNumber: () => import_react_better_core10.formatPhoneNumber,
48
+ desaturateColor: () => import_react_better_core11.desaturateColor,
49
+ eventPreventDefault: () => import_react_better_core11.eventPreventDefault,
50
+ eventPreventStop: () => import_react_better_core11.eventPreventStop,
51
+ eventStopPropagation: () => import_react_better_core11.eventStopPropagation,
52
+ formatPhoneNumber: () => import_react_better_core11.formatPhoneNumber,
52
53
  generateAsyncStorage: () => generateAsyncStorage,
53
- generateRandomString: () => import_react_better_core10.generateRandomString,
54
- getPluralWord: () => import_react_better_core10.getPluralWord,
55
- lightenColor: () => import_react_better_core10.lightenColor,
56
- loaderControls: () => import_react_better_core10.loaderControls,
54
+ generateRandomString: () => import_react_better_core11.generateRandomString,
55
+ getPluralWord: () => import_react_better_core11.getPluralWord,
56
+ lightenColor: () => import_react_better_core11.lightenColor,
57
+ loaderControls: () => import_react_better_core11.loaderControls,
57
58
  pressStrength: () => pressStrength,
58
- saturateColor: () => import_react_better_core10.saturateColor,
59
+ saturateColor: () => import_react_better_core11.saturateColor,
59
60
  useBetterComponentsContext: () => useBetterComponentsContext,
60
- useBooleanState: () => import_react_better_core10.useBooleanState,
61
- useDebounceState: () => import_react_better_core10.useDebounceState,
61
+ useBooleanState: () => import_react_better_core11.useBooleanState,
62
+ useDebounceState: () => import_react_better_core11.useDebounceState,
62
63
  useDevice: () => useDevice,
63
64
  useKeyboard: () => useKeyboard,
64
- useLoader: () => import_react_better_core10.useLoader,
65
- useLoaderControls: () => import_react_better_core10.useLoaderControls,
66
- useTheme: () => import_react_better_core10.useTheme
65
+ useLoader: () => import_react_better_core11.useLoader,
66
+ useLoaderControls: () => import_react_better_core11.useLoaderControls,
67
+ useTheme: () => import_react_better_core11.useTheme
67
68
  });
68
69
  module.exports = __toCommonJS(index_exports);
69
- var import_react_better_core10 = require("react-better-core");
70
+ var import_react_better_core11 = require("react-better-core");
70
71
 
71
72
  // src/components/BetterComponentsProvider.tsx
72
73
  var import_react = require("react");
@@ -1351,6 +1352,23 @@ InputField.email = InputFieldComponent.email;
1351
1352
  InputField.password = InputFieldComponent.password;
1352
1353
  var InputField_default = InputField;
1353
1354
 
1355
+ // src/components/StatusBar.tsx
1356
+ var import_react11 = require("react");
1357
+ var import_react_better_core10 = require("react-better-core");
1358
+ var import_react_native9 = require("react-native");
1359
+ var import_jsx_runtime10 = require("react/jsx-runtime");
1360
+ function StatusBar({ darkStatusBar, hidden }) {
1361
+ const theme2 = (0, import_react_better_core10.useTheme)();
1362
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1363
+ import_react_native9.StatusBar,
1364
+ {
1365
+ backgroundColor: darkStatusBar ? theme2.colors.backgroundSecondary : void 0,
1366
+ hidden
1367
+ }
1368
+ );
1369
+ }
1370
+ var StatusBar_default = (0, import_react11.memo)(StatusBar);
1371
+
1354
1372
  // src/plugins/asyncStorage.ts
1355
1373
  var defaultAsyncStoragePluginOptions = {};
1356
1374
  var asyncStoragePlugin = (options) => ({
@@ -1372,6 +1390,7 @@ var asyncStoragePlugin = (options) => ({
1372
1390
  InputField,
1373
1391
  Loader,
1374
1392
  ScreenHolder,
1393
+ StatusBar,
1375
1394
  Text,
1376
1395
  View,
1377
1396
  asyncStoragePlugin,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/components/BetterComponentsProvider.tsx","../src/constants/app.ts","../src/constants/theme.ts","../src/constants/icons.ts","../src/constants/assets.ts","../src/utils/variableFunctions.ts","../src/utils/hooks.ts","../src/constants/css.ts","../src/utils/asyncStorage.ts","../src/components/View.tsx","../src/components/Text.tsx","../src/components/Button.tsx","../src/components/Animate.tsx","../src/components/Loader.tsx","../src/components/ScreenHolder.tsx","../src/components/Image.tsx","../src/components/InputField.tsx","../src/plugins/asyncStorage.ts"],"sourcesContent":["export {\n useTheme,\n useLoader,\n useLoaderControls,\n countries,\n type OmitProps,\n type ExcludeOptions,\n type PickValue,\n type PartialRecord,\n type DeepPartialRecord,\n type PickAllRequired,\n type AnyOtherString,\n type AssetName,\n type AssetsConfig,\n type Country,\n type IconName,\n type IconsConfig,\n type LoaderName,\n type LoaderConfig,\n type Color,\n type ColorName,\n type ColorTheme,\n type Colors,\n type Styles,\n type Theme,\n type ThemeConfig,\n lightenColor,\n darkenColor,\n saturateColor,\n desaturateColor,\n generateRandomString,\n formatPhoneNumber,\n eventPreventDefault,\n eventStopPropagation,\n eventPreventStop,\n getPluralWord,\n useBooleanState,\n useDebounceState,\n loaderControls,\n colorThemeControls,\n} from \"react-better-core\";\n\nimport BetterComponentsProvider, {\n useBetterComponentsContext,\n type BetterComponentsProviderConfig,\n} from \"./components/BetterComponentsProvider\";\n\nimport { type AppConfig, type BetterComponentsConfig } from \"./types/config\";\nimport { type ComponentMarginProps, type ComponentPaddingProps } from \"./types/components\";\nimport { type PluginName, type BetterComponentsPlugin } from \"./types/plugin\";\n\nimport { pressStrength } from \"./utils/variableFunctions\";\n\nimport { useDevice, useKeyboard } from \"./utils/hooks\";\nimport { generateAsyncStorage } from \"./utils/asyncStorage\";\n\nimport View, { type ViewProps } from \"./components/View\";\nimport Text, { type TextProps } from \"./components/Text\";\nimport Button, { type ButtonProps } from \"./components/Button\";\nimport Loader, { type LoaderProps, type LoaderSize } from \"./components/Loader\";\nimport Animate, { type AnimateViewProps, type AnimateTextProps } from \"./components/Animate\";\nimport ScreenHolder, { type ScreenHolderProps, type FooterProps } from \"./components/ScreenHolder\";\nimport Image, { type ImageProps } from \"./components/Image\";\nimport InputField, { type InputFieldProps } from \"./components/InputField\";\n\nexport * from \"./plugins\";\n\nexport {\n BetterComponentsProvider,\n useBetterComponentsContext as useBetterComponentsContext,\n BetterComponentsProviderConfig,\n\n // Constants\n\n // Types\n AppConfig,\n BetterComponentsConfig as BetterComponentsConfig,\n ComponentMarginProps,\n ComponentPaddingProps,\n PluginName,\n BetterComponentsPlugin,\n\n // Hooks\n useDevice,\n useKeyboard,\n\n // Functions\n\n // Variable Functions\n pressStrength,\n\n // AsyncStorage\n generateAsyncStorage,\n\n // Components\n View,\n ViewProps,\n Text,\n TextProps,\n Button,\n ButtonProps,\n Loader,\n LoaderProps,\n LoaderSize,\n Animate,\n AnimateViewProps,\n AnimateTextProps,\n ScreenHolder,\n ScreenHolderProps,\n FooterProps,\n Image,\n ImageProps,\n InputField,\n InputFieldProps,\n};\n","import { createContext, memo, useContext, useEffect, useMemo } from \"react\";\nimport {\n useBooleanState,\n DeepPartialRecord,\n BetterCoreProvider,\n BetterCoreProviderConfig,\n BetterCoreConfig,\n useBetterCoreContext,\n} from \"react-better-core\";\n\nimport { appConfig } from \"../constants/app\";\nimport { theme } from \"../constants/theme\";\nimport { icons } from \"../constants/icons\";\nimport { assets } from \"../constants/assets\";\n\nimport { BetterComponentsConfig } from \"../types/config\";\nimport { BetterComponentsPlugin, PluginName } from \"../types/plugin\";\n\nexport type BetterComponentsInternalConfig = BetterComponentsConfig & {\n plugins: BetterComponentsPlugin[];\n componentsState: {};\n};\n\nconst betterComponentsContext = createContext<BetterComponentsInternalConfig | undefined>(undefined);\nexport let externalBetterCoreContextValue: BetterCoreConfig | undefined;\nexport let externalBetterComponentsContextValue: BetterComponentsInternalConfig | undefined;\n\nexport const useBetterComponentsContext = (): BetterComponentsConfig & BetterCoreConfig => {\n const coreContext = useBetterCoreContext();\n const context = useContext(betterComponentsContext);\n\n if (context === undefined)\n throw new Error(\n \"`useBetterComponentsContext()` must be used within a `<BetterComponentsProvider>`. Make sure to add one at the root of your component tree.\",\n );\n\n const { plugins, componentsState, ...rest } = context;\n\n return {\n ...coreContext,\n ...rest,\n };\n};\n\nexport const useBetterComponentsContextInternal = (): BetterComponentsInternalConfig => {\n const context = useContext(betterComponentsContext);\n\n if (context === undefined)\n throw new Error(\n \"`useBetterComponentsContextInternal()` must be used within a `<BetterComponentsProvider>`. Make sure to add one at the root of your component tree.\",\n );\n\n return context;\n};\n\nexport const usePlugin = <T extends object>(\n pluginName: PluginName,\n): BetterComponentsPlugin<T> | undefined => {\n const context = useContext(betterComponentsContext);\n\n if (context === undefined) {\n throw new Error(\n \"`usePlugin()` must be used within a `<BetterComponentsProvider>`. Make sure to add one at the root of your component tree.\",\n );\n }\n\n return useMemo(\n () => context.plugins.find((plugin: BetterComponentsPlugin) => plugin.name === pluginName),\n [context.plugins, pluginName],\n ) as any;\n};\n\ntype BetterComponentsProviderInternalContentProps = {\n children?: React.ReactNode;\n};\n\nfunction BetterComponentsProviderInternalContent({ children }: BetterComponentsProviderInternalContentProps) {\n return <>{children}</>;\n}\n\ntype BetterComponentsProviderInternalConfig = DeepPartialRecord<BetterComponentsConfig>;\n\ntype BetterProviderCommonProps = {\n plugins?: BetterComponentsPlugin[];\n children?: React.ReactNode;\n};\n\ntype BetterComponentsProviderInternalProps = BetterProviderCommonProps & {\n config?: BetterComponentsProviderInternalConfig;\n};\n\nfunction BetterComponentsProviderInternal({\n config,\n plugins,\n children,\n}: BetterComponentsProviderInternalProps) {\n const betterCoreContext = useBetterCoreContext();\n\n const [sideMenuIsCollapsed, setSideMenuIsCollapsed] = useBooleanState();\n const [sideMenuIsOpenMobile, setSideMenuIsOpenMobile] = useBooleanState();\n\n const readyConfig = useMemo<BetterComponentsInternalConfig>(\n () => ({\n app: {\n ...appConfig,\n ...config?.app,\n },\n sideMenuIsCollapsed,\n setSideMenuIsCollapsed,\n sideMenuIsOpenMobile,\n setSideMenuIsOpenMobile,\n plugins: plugins ?? [],\n componentsState: {},\n }),\n [config, sideMenuIsCollapsed, sideMenuIsOpenMobile, plugins],\n );\n\n useEffect(() => {\n if (!plugins) return;\n\n plugins.forEach((plugin) => {\n plugin.initialize?.();\n });\n }, []);\n\n externalBetterCoreContextValue = betterCoreContext;\n externalBetterComponentsContextValue = readyConfig;\n\n return (\n <betterComponentsContext.Provider value={readyConfig}>\n <BetterComponentsProviderInternalContent>{children}</BetterComponentsProviderInternalContent>\n </betterComponentsContext.Provider>\n );\n}\n\nexport type BetterComponentsProviderConfig = BetterCoreProviderConfig &\n BetterComponentsProviderInternalConfig;\n\ntype BetterComponentsProviderProps = BetterProviderCommonProps & {\n config?: BetterComponentsProviderConfig;\n};\n\nfunction BetterComponentsProvider({ config, ...props }: BetterComponentsProviderProps) {\n const coreConfig = useMemo<BetterCoreProviderConfig>(\n () => ({\n theme: {\n ...theme,\n ...config?.theme,\n },\n // colorTheme: config?.colorTheme ?? (localStorage.getItem(\"theme\") === \"dark\" ? \"dark\" : \"light\"),\n colorTheme: config?.colorTheme ?? \"light\",\n icons: {\n ...icons,\n ...config?.icons,\n },\n assets: {\n ...assets,\n ...config?.assets,\n },\n loaders: config?.loaders,\n }),\n [config],\n );\n\n const componentsConfig = useMemo<BetterComponentsProviderInternalConfig>(\n () => ({\n app: config?.app,\n }),\n [config],\n );\n\n return (\n <BetterCoreProvider config={coreConfig}>\n <BetterComponentsProviderInternal config={componentsConfig} {...props} />\n </BetterCoreProvider>\n );\n}\n\nexport default memo(BetterComponentsProvider);\n","import { AppConfig } from \"../types/config\";\n\nexport const appConfig: AppConfig = {};\n","import { DeepPartialRecord, ThemeConfig } from \"react-better-core\";\n\nexport const theme: DeepPartialRecord<ThemeConfig> = {};\n","import { IconsConfig } from \"react-better-core\";\n\nexport const icons: Partial<IconsConfig> = {};\n","import { AssetsConfig } from \"react-better-core\";\n\nexport const assets: Partial<AssetsConfig> = {};\n","import { BetterCoreConfig } from \"react-better-core\";\n\nimport {\n BetterComponentsInternalConfig,\n externalBetterCoreContextValue,\n} from \"../components/BetterComponentsProvider\";\n\nexport const checkBetterCoreContextValue = (\n value: BetterCoreConfig | undefined,\n functionsName: string,\n): value is BetterCoreConfig => {\n if (value === undefined) {\n throw new Error(\n `\\`${functionsName}()\\` must be used within a \\`<BetterCoreProvider>\\`. Make sure to add one at the root of your component tree.`,\n );\n }\n\n return value !== undefined;\n};\nexport const checkBetterComponentsContextValue = (\n value: BetterComponentsInternalConfig | undefined,\n functionsName: string,\n): value is BetterComponentsInternalConfig => {\n if (value === undefined) {\n throw new Error(\n `\\`${functionsName}()\\` must be used within a \\`<BetterComponentsProvider>\\`. Make sure to add one at the root of your component tree.`,\n );\n }\n\n return value !== undefined;\n};\n\nexport const pressStrength = (): Record<\"z05\" | \"z1\" | \"z2\" | \"z3\", number> => {\n if (!checkBetterCoreContextValue(externalBetterCoreContextValue, \"pressStrength\")) return undefined as any;\n\n return {\n z05: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.85 : 0.95,\n z1: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.6 : 0.8,\n z2: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.5 : 0.7,\n z3: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.4 : 0.6,\n };\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { Dimensions, Keyboard, KeyboardEvent } from \"react-native\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { useBooleanState, useTheme } from \"react-better-core\";\n\nimport { animateProps, animateTransitionProps, cssProps } from \"../constants/css\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nexport function useDevice() {\n const theme = useTheme();\n const safeAreaInsets = useSafeAreaInsets();\n\n const screenDimensions = Dimensions.get(\"screen\");\n const windowDimensions = Dimensions.get(\"window\");\n const isSmallDevice = windowDimensions.height <= 700;\n\n return {\n safeArea: {\n ...safeAreaInsets,\n /** @description The safe area insets after calculations. Recommended to use this instead of the raw insets. */\n afterCalculations: {\n top: safeAreaInsets.top < 25 ? 32 : safeAreaInsets.top < 40 ? 40 : safeAreaInsets.top,\n bottom:\n (safeAreaInsets.bottom === 0 ? theme.styles.space : safeAreaInsets.bottom) +\n (isSmallDevice ? 0 : theme.styles.space * 2),\n left: safeAreaInsets.left,\n right: safeAreaInsets.right,\n },\n },\n /** @description The dimensions of the device screen. */\n screenDimensions,\n /** @description The dimensions of the app window. */\n windowDimensions,\n /** @description Whether the device is small. */\n isSmallDevice,\n };\n}\n\nexport function useKeyboard() {\n const [keyboardOpened, setKeyboardOpened] = useBooleanState();\n const [keyboardWillOpen, setKeyboardWillOpen] = useBooleanState();\n\n const [keyboardHeight, setKeyboardHeight] = useState<number>(0);\n\n useEffect(() => {\n const keyboardDidShow = (event: KeyboardEvent) => {\n setKeyboardOpened.setTrue();\n setKeyboardHeight(event.endCoordinates.height);\n };\n const keyboardDidHide = () => {\n setKeyboardOpened.setFalse();\n setKeyboardHeight(0);\n };\n\n const willShowSubscription = Keyboard.addListener(\"keyboardWillShow\", setKeyboardWillOpen.setTrue);\n const willHideSubscription = Keyboard.addListener(\"keyboardWillHide\", setKeyboardWillOpen.setFalse);\n const didShowSubscription = Keyboard.addListener(\"keyboardDidShow\", keyboardDidShow);\n const didHideSubscription = Keyboard.addListener(\"keyboardDidHide\", keyboardDidHide);\n\n return () => {\n willShowSubscription.remove();\n willHideSubscription.remove();\n didShowSubscription.remove();\n didHideSubscription.remove();\n };\n }, []);\n\n return {\n isOpened: keyboardOpened,\n willOpen: keyboardWillOpen,\n height: keyboardHeight,\n };\n}\n\nexport function useComponentPropsGrouper<Props extends object = {}>(\n props: ComponentStyle,\n prefix: string,\n): {\n style: ComponentStyle;\n withPrefixStyle: ComponentStyle;\n restProps: Props;\n} {\n return useMemo(() => {\n const style: ComponentStyle = {};\n const withPrefixStyle: ComponentStyle = {};\n const restProps = {} as Props;\n\n for (const key in props) {\n const keyName = key as keyof ComponentStyle;\n\n if (cssProps.has(keyName.toLowerCase())) {\n (style[keyName] as any) = props[keyName];\n } else if (\n keyName.startsWith(prefix) &&\n (cssProps.has(keyName.slice(prefix.length).toLowerCase()) ||\n animateProps.has(keyName.slice(prefix.length).toLowerCase()) ||\n animateTransitionProps.has(keyName.slice(prefix.length).toLowerCase()))\n ) {\n const realKey = `${keyName.slice(prefix.length, prefix.length + 1).toLowerCase()}${keyName.slice(\n prefix.length + 1,\n )}`;\n\n (withPrefixStyle[realKey as keyof ComponentStyle] as any) = props[keyName];\n } else {\n (restProps[keyName as keyof Props] as any) = props[keyName];\n }\n }\n\n return {\n style,\n withPrefixStyle,\n restProps,\n };\n }, [props, prefix]);\n}\n","export const cssProps: Set<string> = new Set([\n \"aligncontent\",\n \"alignitems\",\n \"alignself\",\n \"aspectratio\",\n \"borderbottomwidth\",\n \"borderendwidth\",\n \"borderleftwidth\",\n \"borderrightwidth\",\n \"borderstartwidth\",\n \"bordertopwidth\",\n \"borderwidth\",\n \"bottom\",\n \"boxsizing\",\n \"display\",\n \"end\",\n \"flex\",\n \"flexbasis\",\n \"flexdirection\",\n \"rowgap\",\n \"gap\",\n \"columngap\",\n \"flexgrow\",\n \"flexshrink\",\n \"flexwrap\",\n \"height\",\n \"justifycontent\",\n \"left\",\n \"margin\",\n \"marginbottom\",\n \"marginend\",\n \"marginhorizontal\",\n \"marginleft\",\n \"marginright\",\n \"marginstart\",\n \"margintop\",\n \"marginvertical\",\n \"maxheight\",\n \"maxwidth\",\n \"minheight\",\n \"minwidth\",\n \"overflow\",\n \"padding\",\n \"paddingbottom\",\n \"paddingend\",\n \"paddinghorizontal\",\n \"paddingleft\",\n \"paddingright\",\n \"paddingstart\",\n \"paddingtop\",\n \"paddingvertical\",\n \"position\",\n \"right\",\n \"start\",\n \"top\",\n \"width\",\n \"zindex\",\n \"direction\",\n \"inset\",\n \"insetblock\",\n \"insetblockend\",\n \"insetblockstart\",\n \"insetinline\",\n \"insetinlineend\",\n \"insetinlinestart\",\n \"marginblock\",\n \"marginblockend\",\n \"marginblockstart\",\n \"margininline\",\n \"margininlineend\",\n \"margininlinestart\",\n \"paddingblock\",\n \"paddingblockend\",\n \"paddingblockstart\",\n \"paddinginline\",\n \"paddinginlineend\",\n \"paddinginlinestart\",\n \"shadowcolor\",\n \"shadowoffset\",\n \"shadowopacity\",\n \"shadowradius\",\n \"transform\",\n \"transformorigin\",\n \"transformmatrix\",\n \"rotation\",\n \"scalex\",\n \"scaley\",\n \"translatex\",\n \"translatey\",\n \"backfacevisibility\",\n \"backgroundcolor\",\n \"borderblockcolor\",\n \"borderblockendcolor\",\n \"borderblockstartcolor\",\n \"borderbottomcolor\",\n \"borderbottomendradius\",\n \"borderbottomleftradius\",\n \"borderbottomrightradius\",\n \"borderbottomstartradius\",\n \"bordercolor\",\n \"bordercurve\",\n \"borderendcolor\",\n \"borderendendradius\",\n \"borderendstartradius\",\n \"borderleftcolor\",\n \"borderradius\",\n \"borderrightcolor\",\n \"borderstartcolor\",\n \"borderstartendradius\",\n \"borderstartstartradius\",\n \"borderstyle\",\n \"bordertopcolor\",\n \"bordertopendradius\",\n \"bordertopleftradius\",\n \"bordertoprightradius\",\n \"bordertopstartradius\",\n \"outlinecolor\",\n \"outlineoffset\",\n \"outlinestyle\",\n \"outlinewidth\",\n \"opacity\",\n \"elevation\",\n \"pointerevents\",\n \"isolation\",\n \"cursor\",\n \"boxshadow\",\n \"filter\",\n \"mixblendmode\",\n \"fontvariant\",\n \"textdecorationcolor\",\n \"textdecorationstyle\",\n \"writingdirection\",\n \"textalignvertical\",\n \"verticalalign\",\n \"includefontpadding\",\n \"color\",\n \"fontfamily\",\n \"fontsize\",\n \"fontstyle\",\n \"fontweight\",\n \"letterspacing\",\n \"lineheight\",\n \"textalign\",\n \"textdecorationline\",\n \"textdecorationstyle\",\n \"textdecorationcolor\",\n \"textshadowcolor\",\n \"textshadowoffset\",\n \"textshadowradius\",\n \"texttransform\",\n \"userselect\",\n]);\n\nexport const animateProps: Set<string> = new Set([\n \"x\",\n \"y\",\n \"scale\",\n \"scaleX\",\n \"scaleY\",\n \"skewX\",\n \"skewY\",\n \"perspective\",\n \"rotate\",\n \"rotateX\",\n \"rotateY\",\n \"rotateZ\",\n \"matrix\",\n]);\n\nexport const animateTransitionProps: Set<string> = new Set([\n \"type\",\n \"ease\",\n \"easing\",\n \"duration\",\n \"delay\",\n \"type\",\n \"friction\",\n \"tension\",\n \"speed\",\n \"bounciness\",\n \"stiffness\",\n \"damping\",\n \"mass\",\n \"overshootClamping\",\n \"restDisplacementThreshold\",\n \"restSpeedThreshold\",\n \"velocity\",\n \"loop\",\n]);\n","import NativeAsyncStorage from \"@react-native-async-storage/async-storage\";\n\nexport function generateAsyncStorage<AsyncStorage extends object>(): {\n setItem: <StorageName extends keyof AsyncStorage>(name: StorageName, value: AsyncStorage[StorageName]) => void;\n getItem: <StorageName extends keyof AsyncStorage>(\n name: StorageName,\n ) => Promise<AsyncStorage[StorageName] | undefined>;\n removeItem: (name: keyof AsyncStorage) => void;\n removeAllItems: () => void;\n} {\n return {\n setItem: async (name, value) => {\n if (value) await NativeAsyncStorage.setItem(name.toString(), JSON.stringify(value));\n else await NativeAsyncStorage.removeItem(name.toString());\n },\n getItem: async (name) => {\n const item = await NativeAsyncStorage.getItem(name.toString());\n\n if (item === null) return undefined;\n\n try {\n return JSON.parse(item);\n } catch (error) {\n return undefined;\n }\n },\n removeItem: async (name) => {\n await NativeAsyncStorage.removeItem(name.toString());\n },\n removeAllItems: () => {\n NativeAsyncStorage.clear();\n },\n };\n}\n","import { memo, useMemo } from \"react\";\nimport {\n GestureResponderEvent,\n View as NativeView,\n ViewProps as NativeViewProps,\n ViewStyle as NativeViewStyle,\n Platform,\n TouchableHighlight,\n TouchableNativeFeedback,\n TouchableOpacity,\n} from \"react-native\";\nimport { OmitProps, useTheme } from \"react-better-core\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nconst touchableHighlightStyleMoveToContent: (keyof ComponentStyle)[] = [\n \"backgroundColor\",\n \"padding\",\n \"paddingTop\",\n \"paddingBottom\",\n \"paddingLeft\",\n \"paddingRight\",\n \"paddingHorizontal\",\n \"paddingVertical\",\n \"borderWidth\",\n \"borderTopWidth\",\n \"borderBottomWidth\",\n \"borderLeftWidth\",\n \"borderRightWidth\",\n \"borderColor\",\n \"borderTopColor\",\n \"borderBottomColor\",\n \"borderLeftColor\",\n \"borderRightColor\",\n];\n\nconst touchableNativeFeedbackStyleMoveToHolder: (keyof ComponentStyle)[] = [\n \"width\",\n \"height\",\n \"margin\",\n \"marginTop\",\n \"marginBottom\",\n \"marginLeft\",\n \"marginRight\",\n \"marginHorizontal\",\n \"marginVertical\",\n];\n\nfunction alphaToHex(alpha: number): string {\n const clamped = Math.min(1, Math.max(0, alpha));\n const value = Math.round(clamped * 255);\n\n return value.toString(16).padStart(2, \"0\");\n}\n\nexport type ViewProps<Value = unknown> = {\n /** @default false */\n isRow?: boolean;\n value?: Value;\n /** @default false */\n disabled?: boolean;\n /** @default \"highlight\" */\n pressType?: \"opacity\" | \"highlight\";\n /** @default 0.8 */\n pressStrength?: number;\n onPress?: (event: GestureResponderEvent) => void;\n onPressIn?: (event: GestureResponderEvent) => void;\n onPressOut?: (event: GestureResponderEvent) => void;\n onLongPress?: (event: GestureResponderEvent) => void;\n onPressWithValue?: (value: Value) => void;\n} & OmitProps<NativeViewProps, \"style\" | \"onBlur\" | \"onFocus\"> &\n ComponentStyle;\n\ntype ViewComponentType = {\n <Value>(props: ViewProps<Value>): React.ReactElement;\n box: <Value>(\n props: ViewProps<Value> & {\n /** @default false */\n withShadow?: boolean;\n },\n ) => React.ReactElement;\n};\n\nconst ViewComponent: ViewComponentType = function View<Value>({\n isRow,\n value,\n disabled,\n pressType = \"highlight\",\n pressStrength = 0.8,\n onPress,\n onPressIn,\n onPressOut,\n onLongPress,\n onPressWithValue,\n children,\n ...props\n}: ViewProps<Value>) {\n const theme = useTheme();\n\n const style = useMemo<NativeViewStyle>(\n () => ({\n flexDirection: isRow ? \"row\" : \"column\",\n ...props,\n ...(props.shadowOffsetWidth !== undefined || props.shadowOffsetHeight !== undefined\n ? {\n shadowOffset: {\n width: props.shadowOffsetWidth ?? 0,\n height: props.shadowOffsetHeight ?? 0,\n },\n }\n : {}),\n }),\n [isRow, props],\n );\n const touchableHighlightStyle = useMemo<NativeViewStyle>(\n () => ({\n ...style,\n ...touchableHighlightStyleMoveToContent.reduce<NativeViewStyle>((previousValue, currentValue) => {\n if (currentValue === \"shadowOffsetWidth\" || currentValue === \"shadowOffsetHeight\")\n previousValue.shadowOffset = undefined;\n else previousValue[currentValue] = undefined;\n\n return previousValue;\n }, {}),\n }),\n [style],\n );\n const touchableHighlightContentProps = useMemo<ViewProps>(\n () =>\n touchableHighlightStyleMoveToContent.reduce<ViewProps>((previousValue, currentValue) => {\n (previousValue[currentValue] as any) = props[currentValue];\n\n return previousValue;\n }, {}),\n [props],\n );\n const touchableNativeFeedbackHolderStyle = useMemo<NativeViewStyle>(\n () =>\n touchableNativeFeedbackStyleMoveToHolder.reduce<ViewProps>((previousValue, currentValue) => {\n (previousValue[currentValue] as any) = props[currentValue];\n\n return previousValue;\n }, {}),\n [props],\n );\n const touchableNativeFeedbackContentStyle = useMemo<ViewProps>(\n () => ({\n ...style,\n ...touchableNativeFeedbackStyleMoveToHolder.reduce<NativeViewStyle>(\n (previousValue, currentValue) => {\n if (currentValue === \"shadowOffsetWidth\" || currentValue === \"shadowOffsetHeight\")\n previousValue.shadowOffset = undefined;\n else previousValue[currentValue] = undefined;\n\n return previousValue;\n },\n {},\n ),\n }),\n [style],\n );\n\n const pressEvents = useMemo(\n () =>\n !disabled\n ? {\n onPress: (event: GestureResponderEvent) => {\n onPress?.(event);\n\n if (value !== undefined) onPressWithValue?.(value);\n },\n onPressIn,\n onPressOut,\n onLongPress,\n }\n : {},\n [disabled, onPress, onPressIn, onPressOut, onLongPress, onPressWithValue, value],\n );\n\n const androidBoxShadow =\n Platform.OS === \"android\"\n ? props.shadowOffsetWidth !== undefined || props.shadowOffsetHeight !== undefined\n ? `${props.shadowOffsetWidth ?? 0}px ${props.shadowOffsetHeight ?? 0}px ${props.shadowRadius}px ${\n props.shadowColor?.toString() ?? \"#000000\"\n }`\n : undefined\n : undefined;\n\n const isPressable = onPress || onPressIn || onPressOut || onLongPress || onPressWithValue;\n\n return isPressable ? (\n pressType === \"opacity\" ? (\n <TouchableOpacity\n style={style}\n activeOpacity={pressStrength}\n boxShadow={androidBoxShadow}\n {...pressEvents}\n {...props}\n >\n {children}\n </TouchableOpacity>\n ) : pressType === \"highlight\" ? (\n Platform.OS === \"ios\" ? (\n <TouchableHighlight\n activeOpacity={pressStrength}\n underlayColor={theme.colors.textPrimary}\n style={touchableHighlightStyle}\n {...pressEvents}\n {...props}\n >\n <ViewComponent\n width=\"100%\"\n borderRadius={props.borderRadius}\n borderTopLeftRadius={props.borderTopLeftRadius}\n borderTopRightRadius={props.borderTopRightRadius}\n borderBottomLeftRadius={props.borderBottomLeftRadius}\n borderBottomRightRadius={props.borderBottomRightRadius}\n {...touchableHighlightContentProps}\n >\n {children}\n </ViewComponent>\n </TouchableHighlight>\n ) : Platform.OS === \"android\" ? (\n <ViewComponent\n {...touchableNativeFeedbackHolderStyle}\n borderRadius={props.borderRadius}\n borderTopLeftRadius={props.borderTopLeftRadius}\n borderTopRightRadius={props.borderTopRightRadius}\n borderBottomLeftRadius={props.borderBottomLeftRadius}\n borderBottomRightRadius={props.borderBottomRightRadius}\n boxShadow={androidBoxShadow}\n overflow=\"hidden\"\n pointerEvents=\"box-none\"\n >\n <TouchableNativeFeedback\n {...pressEvents}\n {...props}\n background={TouchableNativeFeedback.Ripple(\n `${theme.colors.textPrimary}${alphaToHex(1 - pressStrength)}`,\n false,\n )}\n useForeground\n touchSoundDisabled\n >\n <ViewComponent flex={1} {...touchableNativeFeedbackContentStyle}>\n {children}\n </ViewComponent>\n </TouchableNativeFeedback>\n </ViewComponent>\n ) : (\n <></>\n )\n ) : (\n <></>\n )\n ) : (\n <NativeView boxShadow={androidBoxShadow} style={style} {...props}>\n {children}\n </NativeView>\n );\n};\n\nViewComponent.box = function Box({ withShadow, ...props }) {\n const theme = useTheme();\n\n const shadowProps = useMemo<ViewProps>(\n () =>\n withShadow\n ? {\n shadowOpacity: 0.2,\n shadowOffsetHeight: 10,\n shadowRadius: 10,\n shadowColor: Platform.OS === \"android\" ? \"#00000020\" : undefined,\n }\n : {},\n [],\n );\n\n return (\n <ViewComponent\n width=\"100%\"\n backgroundColor={theme.colors.backgroundContent}\n borderWidth={1}\n borderColor={theme.colors.border}\n borderRadius={theme.styles.borderRadius}\n paddingHorizontal={theme.styles.space}\n paddingVertical={theme.styles.gap}\n {...(shadowProps as any)}\n {...props}\n />\n );\n} as ViewComponentType[\"box\"];\n\nconst View = memo(ViewComponent) as any as typeof ViewComponent & {\n box: typeof ViewComponent.box;\n};\n\nView.box = ViewComponent.box;\n\nexport default View;\n","import { memo, useMemo } from \"react\";\nimport { Text as NativeText, TextProps as NativeTextProps, TextStyle as NativeTextStyle } from \"react-native\";\nimport { OmitProps, useTheme } from \"react-better-core\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nexport type TextProps = {} & OmitProps<NativeTextProps, \"style\"> & ComponentStyle<NativeTextStyle>;\n\ntype TextComponentType = {\n (props: TextProps): React.ReactElement;\n title: (props: TextProps) => React.ReactElement;\n subtitle: (props: TextProps) => React.ReactElement;\n body: (props: TextProps) => React.ReactElement;\n caption: (props: TextProps) => React.ReactElement;\n unknown: (props: TextProps) => React.ReactElement;\n};\n\nconst TextComponent: TextComponentType = function Text({ selectionColor, children, ...props }) {\n const theme = useTheme();\n\n const style = useMemo<NativeTextStyle>(\n () => ({\n fontSize: 16,\n color: theme.colors.textPrimary,\n ...props,\n }),\n [theme, props],\n );\n\n return (\n <NativeText selectionColor={selectionColor ?? theme.colors.primary} style={style} {...props}>\n {children}\n </NativeText>\n );\n};\n\nTextComponent.title = function Title(props) {\n return <TextComponent fontSize={32} fontWeight={700} {...props} />;\n} as TextComponentType[`title`];\n\nTextComponent.subtitle = function Subtitle(props) {\n return <TextComponent fontSize={24} fontWeight={700} {...props} />;\n} as TextComponentType[`subtitle`];\n\nTextComponent.body = function Body(props) {\n const theme = useTheme();\n\n return <TextComponent color={theme.colors.textSecondary} {...props} />;\n} as TextComponentType[`body`];\n\nTextComponent.caption = function Caption(props) {\n const theme = useTheme();\n\n return <TextComponent fontSize={14} color={theme.colors.textSecondary} {...props} />;\n} as TextComponentType[`caption`];\n\nTextComponent.unknown = function Unknown(props) {\n const theme = useTheme();\n\n return (\n <TextComponent fontStyle=\"italic\" textAlign=\"center\" color={theme.colors.textSecondary} {...props} />\n );\n} as TextComponentType[`unknown`];\n\nconst Text = memo(TextComponent) as any as typeof TextComponent & {\n title: typeof TextComponent.title;\n subtitle: typeof TextComponent.subtitle;\n body: typeof TextComponent.body;\n caption: typeof TextComponent.caption;\n unknown: typeof TextComponent.unknown;\n};\n\nText.title = TextComponent.title;\nText.subtitle = TextComponent.subtitle;\nText.body = TextComponent.body;\nText.caption = TextComponent.caption;\nText.unknown = TextComponent.unknown;\n\nexport default Text;\n","import { memo } from \"react\";\nimport { ColorValue, Platform } from \"react-native\";\nimport { AnyOtherString, AssetName, IconName, LoaderName, useLoader, useTheme } from \"react-better-core\";\n\nimport { pressStrength } from \"../utils/variableFunctions\";\n\nimport View, { ViewProps } from \"./View\";\nimport Text, { TextProps } from \"./Text\";\nimport Animate from \"./Animate\";\nimport Loader from \"./Loader\";\n\nexport type ButtonProps<Value> = {\n text?: string;\n /** @default 16 */\n textFontSize?: TextProps[\"fontSize\"];\n /** @default 700 */\n textFontWeight?: TextProps[\"fontWeight\"];\n textDecorationLine?: TextProps[\"textDecorationLine\"];\n /** @default \"base\" */\n textColor?: ColorValue;\n\n icon?: IconName | AnyOtherString;\n /** @default \"left\" */\n iconPosition?: \"left\" | \"right\";\n /** @default Same as text color */\n iconColor?: string;\n /** @default 16 */\n iconSize?: number;\n\n image?: AssetName | AnyOtherString;\n /** @default \"left\" */\n imagePosition?: \"left\" | \"right\";\n /** @default 16 */\n imageWidth?: number;\n /** @default undefined */\n imageHeight?: number;\n\n loaderName?: LoaderName | AnyOtherString;\n /** @default false */\n isLoading?: boolean;\n\n isSmall?: true | \"left\" | \"center\" | \"right\";\n} & ViewProps<Value>;\n\ntype InternalButtonProps<Value> = ButtonProps<Value> & {\n animateOpacity?: number;\n};\n\nexport type ButtonRef = {};\n\ntype ButtonComponentType = {\n <Value>(props: ButtonProps<Value>): React.ReactElement;\n secondary: <Value>(props: ButtonProps<Value>) => React.ReactElement;\n destructive: <Value>(props: ButtonProps<Value>) => React.ReactElement;\n text: <Value>(props: ButtonProps<Value>) => React.ReactElement;\n};\n\nconst ButtonComponent = function Button<Value>({\n text,\n textFontSize = 16,\n textFontWeight = 700,\n textDecorationLine,\n textColor,\n\n icon,\n iconPosition = \"left\",\n iconColor,\n iconSize,\n\n image,\n imagePosition = \"left\",\n imageWidth,\n imageHeight,\n\n loaderName,\n isLoading,\n\n isSmall,\n\n animateOpacity,\n\n flex,\n alignSelf,\n disabled,\n ...props\n}: InternalButtonProps<Value>) {\n const theme = useTheme();\n const isLoadingLoader = useLoader(loaderName);\n\n const isLoadingElement = isLoading || isLoadingLoader;\n const isDisabled = disabled || isLoadingElement;\n\n const lineHeight = 20;\n const color = textColor ?? theme.colors.base;\n const paddingVertical = props.paddingVertical\n ? parseFloat(props.paddingVertical.toString())\n : theme.styles.space;\n const paddingHorizontal = props.paddingHorizontal\n ? parseFloat(props.paddingHorizontal.toString())\n : theme.styles.space + theme.styles.gap;\n\n const buttonHeight = paddingVertical + lineHeight + paddingVertical;\n\n return (\n <Animate.View\n position=\"relative\"\n flex={flex}\n alignSelf={\n alignSelf ??\n (isSmall === \"left\"\n ? \"flex-start\"\n : isSmall === \"right\"\n ? \"flex-end\"\n : isSmall === \"center\"\n ? \"center\"\n : isSmall\n ? \"baseline\"\n : undefined)\n }\n initialOpacity={1}\n animateOpacity={animateOpacity ?? (disabled ? 0.6 : 1)}\n >\n <View\n position=\"relative\"\n width={!isSmall ? \"100%\" : undefined}\n height={Platform.OS === \"android\" ? buttonHeight : undefined}\n alignItems=\"center\"\n justifyContent=\"center\"\n backgroundColor={theme.colors.primary}\n borderRadius={theme.styles.borderRadius}\n paddingVertical={paddingVertical}\n paddingHorizontal={paddingHorizontal}\n disabled={isDisabled}\n {...props}\n >\n <Animate.View initialOpacity={1} animateOpacity={isLoadingElement ? 0 : 1}>\n {text && (\n <Text\n fontSize={textFontSize}\n fontWeight={textFontWeight}\n textDecorationLine={textDecorationLine}\n textDecorationColor={color}\n textAlign=\"center\"\n lineHeight={lineHeight}\n color={color}\n >\n {text}\n </Text>\n )}\n </Animate.View>\n\n <Animate.View\n position=\"absolute\"\n width=\"100%\"\n height={buttonHeight}\n left={paddingHorizontal}\n alignItems=\"center\"\n justifyContent=\"center\"\n initialOpacity={0}\n animateOpacity={isLoadingElement ? 1 : 0}\n >\n <Loader color={color} />\n </Animate.View>\n </View>\n </Animate.View>\n );\n};\n\nButtonComponent.secondary = function Secondary(props) {\n const theme = useTheme();\n\n return (\n <ButtonComponent\n backgroundColor={theme.colors.backgroundContent}\n borderWidth={1}\n borderColor={theme.colors.border}\n textColor={theme.colors.textPrimary}\n pressStrength={pressStrength().z05}\n animateOpacity={props.disabled ? 0.4 : 1}\n {...props}\n />\n );\n} as ButtonComponentType[`secondary`];\n\nButtonComponent.destructive = function Destructive(props) {\n const theme = useTheme();\n\n return <ButtonComponent backgroundColor={theme.colors.error} {...props} />;\n} as ButtonComponentType[`destructive`];\n\nButtonComponent.text = function ButtonText(props) {\n const theme = useTheme();\n\n return (\n <ButtonComponent\n width=\"auto\"\n textColor={theme.colors.textPrimary}\n textDecorationLine=\"underline\"\n backgroundColor=\"transparent\"\n paddingHorizontal={theme.styles.space}\n paddingVertical={theme.styles.gap}\n isSmall\n pressType=\"opacity\"\n {...props}\n />\n );\n} as ButtonComponentType[`text`];\n\nconst Button = memo(ButtonComponent) as any as ButtonComponentType & {\n secondary: typeof ButtonComponent.secondary;\n destructive: typeof ButtonComponent.destructive;\n text: typeof ButtonComponent.text;\n};\n\nButton.secondary = ButtonComponent.secondary;\nButton.destructive = ButtonComponent.destructive;\nButton.text = ButtonComponent.text;\n\nexport default Button;\n","import { memo, useMemo } from \"react\";\nimport { TextStyle, ViewStyle } from \"react-native\";\nimport { Motion, PropsTransforms, EaseFunction, MotionTransition } from \"@legendapp/motion\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nimport { useComponentPropsGrouper } from \"../utils/hooks\";\n\nconst defaultTransitionDuration = 0.15 * 1000;\n\ntype ComponentStyleProps<Style extends ViewStyle = ViewStyle> = Omit<\n ComponentStyle<Style>,\n \"transformOrigin\"\n>;\ntype AnimationStyleProps<Style extends ViewStyle = ViewStyle> = ComponentStyle<Style> & PropsTransforms;\n\ntype InitialComponentStyle<Style extends ViewStyle = ViewStyle> = {\n [CSSProperty in keyof AnimationStyleProps<Style> as `initial${Capitalize<\n CSSProperty & string\n >}`]: AnimationStyleProps<Style>[CSSProperty];\n};\ntype animateComponentStyle<Style extends ViewStyle = ViewStyle> = {\n [CSSProperty in keyof AnimationStyleProps<Style> as `animate${Capitalize<\n CSSProperty & string\n >}`]: AnimationStyleProps<Style>[CSSProperty];\n};\ntype whileTapComponentStyle<Style extends ViewStyle = ViewStyle> = {\n [CSSProperty in keyof AnimationStyleProps<Style> as `whileTap${Capitalize<\n CSSProperty & string\n >}`]: AnimationStyleProps<Style>[CSSProperty];\n};\n\ntype TransitionProps = {\n transitionLoop?: number;\n} & (\n | {\n transitionType?: \"tween\" | \"timing\" | undefined;\n transitionEase?: EaseFunction | ((value: number) => number) | undefined;\n transitionEasing?: EaseFunction | ((value: number) => number) | undefined;\n transitionDuration?: number | undefined;\n transitionDelay?: number | undefined;\n }\n | {\n transitionType: \"spring\";\n transitionFriction?: number;\n transitionTension?: number;\n transitionSpeed?: number;\n transitionBounciness?: number;\n transitionStiffness?: number;\n transitionDamping?: number;\n transitionMass?: number;\n transitionOvershootClamping?: boolean | undefined;\n transitionRestDisplacementThreshold?: number | undefined;\n transitionRestSpeedThreshold?: number | undefined;\n transitionVelocity?:\n | number\n | {\n x: number;\n y: number;\n }\n | undefined;\n }\n);\n\ntype AnimateCommonProps = {\n transformOriginX?: number;\n transformOriginY?: number;\n children?: React.ReactNode;\n} & TransitionProps;\n\nexport type AnimateViewProps = {} & AnimateCommonProps &\n ComponentStyleProps &\n InitialComponentStyle &\n animateComponentStyle &\n whileTapComponentStyle;\n\nexport type AnimateTextProps = {} & AnimateCommonProps &\n ComponentStyleProps<TextStyle> &\n InitialComponentStyle<TextStyle> &\n animateComponentStyle<TextStyle> &\n whileTapComponentStyle<TextStyle>;\n\nconst Animate = {\n View: memo(function View({ transformOriginX, transformOriginY, children, ...props }: AnimateViewProps) {\n const initialProps = useComponentPropsGrouper(props, \"initial\");\n const animateProps = useComponentPropsGrouper(props, \"animate\");\n const whileTapProps = useComponentPropsGrouper(props, \"whileTap\");\n const transitionProps = useComponentPropsGrouper(props, \"transition\");\n\n const transition = useMemo<MotionTransition>(\n () => ({\n type: \"timing\",\n duration: defaultTransitionDuration,\n ...(transitionProps.withPrefixStyle as any),\n }),\n [transitionProps.withPrefixStyle],\n );\n const transformOrigin = useMemo(\n () =>\n transformOriginX !== undefined || transformOriginY !== undefined\n ? {\n x: transformOriginX ?? 0,\n y: transformOriginY ?? 0,\n }\n : undefined,\n [transformOriginX, transformOriginY],\n );\n\n const content = (\n <Motion.View\n style={initialProps.style}\n initial={initialProps.withPrefixStyle}\n animate={animateProps.withPrefixStyle}\n transition={transition}\n whileTap={whileTapProps.withPrefixStyle}\n transformOrigin={transformOrigin}\n >\n {children}\n </Motion.View>\n );\n\n return Object.keys(whileTapProps.withPrefixStyle).length > 0 ? (\n <Motion.Pressable>{content}</Motion.Pressable>\n ) : (\n content\n );\n }),\n Text: memo(function Text({ transformOriginX, transformOriginY, children, ...props }: AnimateTextProps) {\n const initialProps = useComponentPropsGrouper(props, \"initial\");\n const animateProps = useComponentPropsGrouper(props, \"animate\");\n const whileTapProps = useComponentPropsGrouper(props, \"whileTap\");\n const transitionProps = useComponentPropsGrouper(props, \"transition\");\n\n const transition = useMemo<MotionTransition>(\n () => ({\n type: \"timing\",\n duration: defaultTransitionDuration,\n ...(transitionProps.withPrefixStyle as any),\n }),\n [transitionProps.withPrefixStyle],\n );\n const transformOrigin = useMemo(\n () =>\n transformOriginX !== undefined || transformOriginY !== undefined\n ? {\n x: transformOriginX ?? 0,\n y: transformOriginY ?? 0,\n }\n : undefined,\n [transformOriginX, transformOriginY],\n );\n\n const content = (\n <Motion.Text\n style={initialProps.style}\n initial={initialProps.withPrefixStyle}\n animate={animateProps.withPrefixStyle}\n transition={transition}\n whileTap={whileTapProps.withPrefixStyle}\n transformOrigin={transformOrigin}\n >\n {children}\n </Motion.Text>\n );\n\n return Object.keys(whileTapProps.withPrefixStyle).length > 0 ? (\n <Motion.Pressable>{content}</Motion.Pressable>\n ) : (\n content\n );\n }),\n};\n\nexport default Animate;\n","import { memo } from \"react\";\nimport { ActivityIndicator, ColorValue } from \"react-native\";\nimport { OmitProps, useTheme } from \"react-better-core\";\n\nimport { ComponentMarginProps } from \"../types/components\";\n\nimport View from \"./View\";\nimport Text from \"./Text\";\n\nexport type LoaderSize = \"small\" | \"large\";\n\nexport type LoaderProps = {\n /** @default \"small\" */\n size?: LoaderSize;\n color?: ColorValue;\n} & ComponentMarginProps;\n\ntype LoaderComponentType = {\n (props: LoaderProps): React.ReactElement;\n box: (\n props: OmitProps<LoaderProps, \"size\"> & {\n /** @default \"Loading...\" */\n text?: string;\n /** @default \"large\" */\n size?: LoaderSize;\n },\n ) => React.ReactElement;\n text: (\n props: LoaderProps & {\n /** @default \"Loading...\" */\n text?: string;\n },\n ) => React.ReactElement;\n};\n\nconst LoaderComponent: LoaderComponentType = function Loader({ size = \"small\", color, ...props }) {\n const theme = useTheme();\n\n return (\n <View {...props}>\n <ActivityIndicator size={size} color={color ?? theme.colors.textPrimary} />\n </View>\n );\n};\n\nLoaderComponent.box = function Box({ text = \"Loading...\", size = \"large\", color, ...props }) {\n const theme = useTheme();\n\n return (\n <View\n width=\"100%\"\n alignItems=\"center\"\n gap={theme.styles.gap}\n marginVertical={theme.styles.space}\n {...props}\n >\n <Loader size={size} color={color} />\n\n {text && (\n <Text textAlign=\"center\" color={color ?? theme.colors.textSecondary}>\n {text}\n </Text>\n )}\n </View>\n );\n} as LoaderComponentType[`box`];\n\nLoaderComponent.text = function LoaderText({ text = \"Loading...\", size, color, ...props }) {\n const theme = useTheme();\n\n return (\n <View\n isRow\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={theme.styles.gap}\n marginVertical={theme.styles.space}\n {...props}\n >\n <Loader size={size} color={color} />\n\n {text && (\n <Text textAlign=\"center\" color={color ?? theme.colors.textSecondary}>\n {text}\n </Text>\n )}\n </View>\n );\n} as LoaderComponentType[\"text\"];\n\nconst Loader = memo(LoaderComponent) as any as typeof LoaderComponent & {\n box: typeof LoaderComponent.box;\n text: typeof LoaderComponent.text;\n};\n\nLoader.box = LoaderComponent.box;\nLoader.text = LoaderComponent.text;\n\nexport default Loader;\n","import { memo, useCallback, useMemo } from \"react\";\nimport { KeyboardAvoidingView, Platform, RefreshControl, ScrollView, ViewStyle } from \"react-native\";\nimport { useBooleanState, useTheme } from \"react-better-core\";\n\nimport { useDevice, useKeyboard } from \"../utils/hooks\";\n\nimport View, { ViewProps } from \"./View\";\n\nexport type ScreenHolderProps = {\n /** @default false */\n noScroll?: boolean;\n /** @default false */\n noSideSpace?: boolean;\n /** @default 1 (second) */\n refreshTimeout?: number;\n onRefresh?: () => void;\n onRefreshEnd?: () => void;\n /** @default \"backgroundBase\" */\n backgroundColor?: ViewProps[\"backgroundColor\"];\n /** @default false */\n insideTopSafeArea?: boolean;\n /** @default false */\n insideBottomSafeArea?: boolean;\n /** @default 0 */\n bottomSpace?: number;\n footer?: React.ReactNode;\n /** @default false */\n keepFooterOnKeyboardOpened?: boolean;\n keyboardVerticalOffset?: number;\n /** @default false */\n withNoHeader?: boolean;\n children?: React.ReactNode;\n};\n\ntype ScreenHolderComponentType = {\n (props: ScreenHolderProps): React.ReactElement;\n footer: (props: FooterProps) => React.ReactElement;\n};\n\nconst ScreenHolderComponent: ScreenHolderComponentType = ({\n noScroll,\n noSideSpace,\n refreshTimeout = 1,\n onRefresh,\n onRefreshEnd,\n backgroundColor,\n insideTopSafeArea,\n insideBottomSafeArea,\n bottomSpace = 0,\n footer,\n keepFooterOnKeyboardOpened,\n keyboardVerticalOffset,\n withNoHeader,\n children,\n}) => {\n const theme = useTheme();\n const device = useDevice();\n const keyboard = useKeyboard();\n\n const [isRefreshing, setIsRefreshing] = useBooleanState();\n\n const keyboardAvoidingViewStyle = useMemo<ViewStyle>(\n () => ({\n flex: 1,\n }),\n [],\n );\n\n const onRefreshElement = useCallback(() => {\n setIsRefreshing.setTrue();\n onRefresh?.();\n\n setTimeout(() => {\n setIsRefreshing.setFalse();\n onRefreshEnd?.();\n }, refreshTimeout * 1000);\n }, [onRefresh, onRefreshEnd, refreshTimeout]);\n\n const content = (\n <View\n flex={1}\n paddingHorizontal={!noSideSpace ? theme.styles.space : undefined}\n paddingTop={theme.styles.gap + (insideTopSafeArea ? device.safeArea.afterCalculations.top : 0)}\n paddingBottom={\n Platform.OS === \"ios\" && keyboard.isOpened\n ? device.safeArea.afterCalculations.top\n : bottomSpace + (insideBottomSafeArea ? device.safeArea.afterCalculations.bottom : 0)\n }\n >\n {children}\n </View>\n );\n\n const withRefresh = onRefresh || onRefreshEnd;\n\n return (\n <View flex={1} backgroundColor={backgroundColor ?? theme.colors.backgroundBase}>\n <KeyboardAvoidingView\n style={keyboardAvoidingViewStyle}\n keyboardVerticalOffset={\n keyboardVerticalOffset ??\n (withNoHeader\n ? Platform.OS === \"ios\"\n ? 0\n : theme.styles.gap\n : keepFooterOnKeyboardOpened\n ? Platform.OS === \"ios\"\n ? device.safeArea.afterCalculations.bottom\n : theme.styles.gap\n : undefined)\n }\n behavior={Platform.OS === \"ios\" ? \"padding\" : \"height\"}\n >\n <View flex={1}>\n {noScroll ? (\n content\n ) : (\n <ScrollView\n refreshControl={\n withRefresh ? (\n <RefreshControl refreshing={isRefreshing} onRefresh={onRefreshElement} />\n ) : undefined\n }\n >\n {content}\n </ScrollView>\n )}\n </View>\n\n {keepFooterOnKeyboardOpened || (Platform.OS === \"ios\" ? !keyboard.willOpen : !keyboard.isOpened)\n ? footer && <View>{footer}</View>\n : !withNoHeader && (\n <View\n width=\"100%\"\n height={\n device.safeArea.afterCalculations.bottom +\n (Platform.OS === \"android\" ? theme.styles.gap : 0)\n }\n />\n )}\n </KeyboardAvoidingView>\n </View>\n );\n};\n\nexport type FooterProps = {\n /** @default false */\n noSideSpace?: boolean;\n /** @default \"backgroundBase\" */\n backgroundColor?: ViewProps[\"backgroundColor\"];\n /** @default false */\n insideBottomSafeArea?: boolean;\n /** @default false */\n withNoHeader?: boolean;\n children?: React.ReactNode;\n};\n\nScreenHolderComponent.footer = function Footer({\n noSideSpace,\n backgroundColor,\n insideBottomSafeArea,\n withNoHeader,\n children,\n}) {\n const theme = useTheme();\n const device = useDevice();\n const keyboard = useKeyboard();\n\n return (\n <View\n backgroundColor={backgroundColor ?? theme.colors.backgroundBase}\n paddingHorizontal={!noSideSpace ? theme.styles.space : undefined}\n paddingTop={theme.styles.gap}\n paddingBottom={\n (Platform.OS === \"ios\" ? keyboard.willOpen : keyboard.isOpened) && withNoHeader\n ? theme.styles.gap\n : insideBottomSafeArea\n ? device.safeArea.afterCalculations.bottom\n : undefined\n }\n >\n {children}\n </View>\n );\n} as ScreenHolderComponentType[`footer`];\n\nconst ScreenHolder = memo(ScreenHolderComponent) as any as typeof ScreenHolderComponent & {\n footer: typeof ScreenHolderComponent.footer;\n};\n\nScreenHolder.footer = ScreenHolderComponent.footer;\n\nexport default ScreenHolder;\n","import { memo, useEffect, useMemo } from \"react\";\nimport { AnyOtherString, AssetName, OmitProps, useBetterCoreContext, useTheme } from \"react-better-core\";\nimport {\n ImageSourcePropType,\n Image as NativeImage,\n ImageProps as NativeImageProps,\n ImageStyle as NativeImageStyle,\n} from \"react-native\";\n\nimport { ComponentStyle } from \"../types/components\";\nimport View from \"./View\";\nimport Text from \"./Text\";\n\nexport type ImageProps = {\n name?: AssetName | AnyOtherString;\n source?: ImageSourcePropType;\n /** @default false */\n withDevFittingMode?: boolean;\n} & OmitProps<NativeImageProps, \"source\"> &\n ComponentStyle<NativeImageStyle>;\n\ntype ImageComponentType = {\n (props: ImageProps): React.ReactElement;\n profileImage: (\n props: OmitProps<ImageProps, \"width\" | \"height\"> & {\n /** @default 50 */\n size?: number;\n letters?: string;\n backgroundColor?: string;\n },\n ) => React.ReactElement;\n};\n\nconst ImageComponent: ImageComponentType = function Image({ name, source, withDevFittingMode, ...props }) {\n const { assets } = useBetterCoreContext();\n\n const style = useMemo<NativeImageStyle>(\n () => ({\n width: 100,\n height: 100,\n ...(withDevFittingMode\n ? {\n borderWidth: 1,\n borderColor: \"#eb39f7\",\n }\n : {}),\n ...props,\n }),\n [withDevFittingMode, props],\n );\n\n useEffect(() => {\n if (!name) return;\n\n if (!assets[name.toString()])\n console.warn(\n `The asset \\`${name}\\` you are trying to use does not exist. Make sure to add it to the \\`assets\\` object in \\`<BetterComponentsProvider>\\` config value prop.`,\n );\n }, [assets, name]);\n\n return <NativeImage source={name ? (assets[name.toString()] as any) : source} style={style} {...props} />;\n};\n\nImageComponent.profileImage = function ProfileImage({ size = 50, letters, backgroundColor, ...props }) {\n const theme = useTheme();\n\n return letters ? (\n <View\n width={size}\n height={size}\n backgroundColor={backgroundColor ?? theme.colors.backgroundSecondary}\n borderWidth={1}\n borderColor={theme.colors.border}\n borderRadius={999}\n alignItems=\"center\"\n justifyContent=\"center\"\n {...props}\n >\n <Text fontSize={size / 2.5} fontWeight={700} marginTop={1}>\n {letters.toUpperCase().slice(0, 2)}\n </Text>\n </View>\n ) : (\n <ImageComponent\n width={size}\n height={size}\n borderWidth={1}\n borderColor={theme.colors.border}\n borderRadius={999}\n objectFit=\"cover\"\n {...props}\n />\n );\n} as ImageComponentType[`profileImage`];\n\n/** @description size is set to 100x100 by default */\nconst Image = memo(ImageComponent) as any as typeof ImageComponent & {\n profileImage: typeof ImageComponent.profileImage;\n};\n\nImage.profileImage = ImageComponent.profileImage;\n\nexport default Image;\n","import { forwardRef, memo, useCallback, useEffect, useImperativeHandle, useMemo, useState } from \"react\";\nimport { FocusEvent, TextInput, TextStyle } from \"react-native\";\nimport {\n darkenColor,\n lightenColor,\n useBetterCoreContext,\n useBooleanState,\n useTheme,\n} from \"react-better-core\";\n\nimport { ComponentPropWithRef } from \"../types/components\";\n\nimport View from \"./View\";\nimport Text from \"./Text\";\nimport Animate from \"./Animate\";\n\nexport type InputFieldProps = {\n placeholder?: string;\n prefix?: string;\n suffix?: string;\n defaultValue?: string;\n value?: string | number;\n /** @default true */\n editable?: boolean;\n /** @default false */\n autoFocus?: boolean;\n autoCapitalize?: React.ComponentProps<typeof TextInput>[\"autoCapitalize\"];\n autoComplete?: React.ComponentProps<typeof TextInput>[\"autoComplete\"];\n autoCorrect?: React.ComponentProps<typeof TextInput>[\"autoCorrect\"];\n /** @default \"default\" */\n keyboardAppearance?: React.ComponentProps<typeof TextInput>[\"keyboardAppearance\"];\n keyboardType?: React.ComponentProps<typeof TextInput>[\"keyboardType\"];\n /** @default false */\n secureTextEntry?: boolean;\n onFocus?: (event: FocusEvent) => void;\n onBlur?: (event: FocusEvent) => void;\n onChange?: (text: string) => void;\n};\n\nexport type InputFieldRef = {};\n\ntype InputFieldComponentType = {\n (props: ComponentPropWithRef<InputFieldRef, InputFieldProps>): React.ReactElement;\n email: (props: ComponentPropWithRef<InputFieldRef, InputFieldProps>) => React.ReactElement;\n password: (props: ComponentPropWithRef<InputFieldRef, InputFieldProps>) => React.ReactElement;\n};\n\nconst InputFieldComponent: InputFieldComponentType = forwardRef<InputFieldRef, InputFieldProps>(\n (\n {\n placeholder,\n prefix,\n suffix,\n defaultValue,\n value,\n editable = true,\n autoFocus,\n autoCapitalize,\n autoComplete,\n autoCorrect,\n keyboardAppearance = \"default\",\n keyboardType,\n secureTextEntry,\n onFocus,\n onBlur,\n onChange,\n },\n ref,\n ) => {\n const theme = useTheme();\n const { colorTheme } = useBetterCoreContext();\n\n const [internalValue, setInternalValue] = useState(value?.toString() || defaultValue || \"\");\n const [isFocused, setIsFocused] = useBooleanState();\n\n const borderWidth = 1;\n const lineHeight = 20;\n const paddingHorizontal = theme.styles.space;\n const paddingVertical = (theme.styles.space + theme.styles.gap) / 2;\n const height = borderWidth + paddingVertical + lineHeight + paddingVertical + borderWidth;\n\n const onFocusElement = useCallback((event: FocusEvent) => {\n setIsFocused.setTrue();\n onFocus?.(event);\n }, []);\n const onBlurElement = useCallback((event: FocusEvent) => {\n setIsFocused.setFalse();\n onBlur?.(event);\n }, []);\n const onChangeText = useCallback(\n (text: string) => {\n setInternalValue(text);\n onChange?.(text);\n },\n [onChange],\n );\n\n const textInputStyle = useMemo<TextStyle>(\n () => ({\n flex: 1,\n fontSize: 16,\n lineHeight,\n color: theme.colors.textPrimary,\n paddingHorizontal,\n paddingVertical,\n }),\n [theme.colors, lineHeight, paddingHorizontal, paddingVertical],\n );\n\n useEffect(() => {\n if (value === undefined) return;\n\n setInternalValue(value.toString());\n }, [value]);\n\n useImperativeHandle(\n ref,\n (): InputFieldRef => {\n return {};\n },\n [],\n );\n\n const prefixSuffixBackgroundColor =\n colorTheme === \"light\"\n ? darkenColor(theme.colors.backgroundContent, 0.03)\n : lightenColor(theme.colors.backgroundContent, 0.1);\n\n return (\n <View isRow position=\"relative\" alignItems=\"center\" height={height}>\n {prefix && (\n <View\n isRow\n height=\"100%\"\n backgroundColor={prefixSuffixBackgroundColor}\n alignItems=\"center\"\n borderWidth={borderWidth}\n borderRightWidth={0}\n borderTopLeftRadius={theme.styles.borderRadius}\n borderBottomLeftRadius={theme.styles.borderRadius}\n borderColor={theme.colors.border}\n paddingHorizontal={paddingHorizontal}\n >\n <Text fontWeight={700}>{prefix}</Text>\n </View>\n )}\n\n <Animate.View\n flex={1}\n backgroundColor={theme.colors.backgroundContent}\n borderTopLeftRadius={prefix ? 0 : theme.styles.borderRadius}\n borderBottomLeftRadius={prefix ? 0 : theme.styles.borderRadius}\n borderTopRightRadius={suffix ? 0 : theme.styles.borderRadius}\n borderBottomRightRadius={suffix ? 0 : theme.styles.borderRadius}\n borderWidth={borderWidth}\n initialBorderColor={theme.colors.border}\n animateBorderColor={isFocused ? theme.colors.primary : theme.colors.border}\n overflow=\"hidden\"\n >\n <TextInput\n style={textInputStyle}\n value={internalValue}\n defaultValue={defaultValue}\n autoCapitalize={autoCapitalize}\n autoComplete={autoComplete}\n autoCorrect={autoCorrect}\n autoFocus={autoFocus}\n placeholder={placeholder}\n placeholderTextColor={theme.colors.textSecondary + \"80\"}\n readOnly={!editable}\n keyboardAppearance={keyboardAppearance}\n keyboardType={keyboardType}\n cursorColor={theme.colors.primary}\n selectionColor={theme.colors.primary}\n secureTextEntry={secureTextEntry}\n onFocus={onFocusElement}\n onBlur={onBlurElement}\n onChangeText={onChangeText}\n />\n </Animate.View>\n\n {suffix && (\n <View\n isRow\n height=\"100%\"\n backgroundColor={prefixSuffixBackgroundColor}\n alignItems=\"center\"\n borderWidth={borderWidth}\n borderLeftWidth={0}\n borderTopRightRadius={theme.styles.borderRadius}\n borderBottomRightRadius={theme.styles.borderRadius}\n borderColor={theme.colors.border}\n paddingHorizontal={paddingHorizontal}\n >\n <Text fontWeight={700}>{suffix}</Text>\n </View>\n )}\n </View>\n );\n },\n) as any;\n\nInputFieldComponent.email = forwardRef(function Email(props, ref) {\n return (\n <InputFieldComponent\n placeholder=\"your@email.here\"\n autoComplete=\"email\"\n keyboardType=\"email-address\"\n autoCapitalize=\"none\"\n autoCorrect={false}\n {...props}\n ref={ref}\n />\n );\n}) as InputFieldComponentType[`email`];\n\nInputFieldComponent.password = forwardRef(function Password(props, ref) {\n return (\n <InputFieldComponent\n secureTextEntry\n placeholder=\"******\"\n autoCapitalize=\"none\"\n autoComplete=\"password\"\n autoCorrect={false}\n {...props}\n ref={ref}\n />\n );\n}) as InputFieldComponentType[`password`];\n\nconst InputField = memo(InputFieldComponent) as any as typeof InputFieldComponent & {\n email: typeof InputFieldComponent.email;\n password: typeof InputFieldComponent.password;\n};\n\nInputField.email = InputFieldComponent.email;\nInputField.password = InputFieldComponent.password;\n\nexport default InputField;\n","import { BetterComponentsPluginConstructor } from \"../types/plugin\";\n\nexport type AsyncStoragePluginOptions = {};\n\nexport const defaultAsyncStoragePluginOptions: Required<AsyncStoragePluginOptions> = {};\n\nexport const asyncStoragePlugin: BetterComponentsPluginConstructor<AsyncStoragePluginOptions> = (options) => ({\n name: \"asyncStorage\",\n initialize: () => {\n console.log(\"asyncStorage plugin initialized\");\n },\n getConfig: () => ({\n ...defaultAsyncStoragePluginOptions,\n ...options,\n }),\n});\n"],"mappings":"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AA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AA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","names":["import_react_better_core","import_react","import_react_better_core","theme","NativeAsyncStorage","import_react","import_react_native","import_react_better_core","import_jsx_runtime","pressStrength","theme","NativeView","View","import_react","import_react_native","import_react_better_core","import_jsx_runtime","theme","NativeText","Text","import_react","import_react_native","import_react_better_core","import_react","import_jsx_runtime","View","animateProps","Text","import_react","import_react_native","import_react_better_core","import_jsx_runtime","theme","Box","Loader","import_jsx_runtime","theme","Button","import_react","import_react_native","import_react_better_core","import_jsx_runtime","theme","import_react","import_react_better_core","import_react_native","import_jsx_runtime","assets","NativeImage","theme","Image","import_react","import_react_native","import_react_better_core","import_jsx_runtime","theme"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/components/BetterComponentsProvider.tsx","../src/constants/app.ts","../src/constants/theme.ts","../src/constants/icons.ts","../src/constants/assets.ts","../src/utils/variableFunctions.ts","../src/utils/hooks.ts","../src/constants/css.ts","../src/utils/asyncStorage.ts","../src/components/View.tsx","../src/components/Text.tsx","../src/components/Button.tsx","../src/components/Animate.tsx","../src/components/Loader.tsx","../src/components/ScreenHolder.tsx","../src/components/Image.tsx","../src/components/InputField.tsx","../src/components/StatusBar.tsx","../src/plugins/asyncStorage.ts"],"sourcesContent":["export {\n useTheme,\n useLoader,\n useLoaderControls,\n countries,\n type OmitProps,\n type ExcludeOptions,\n type PickValue,\n type PartialRecord,\n type DeepPartialRecord,\n type PickAllRequired,\n type AnyOtherString,\n type AssetName,\n type AssetsConfig,\n type Country,\n type IconName,\n type IconsConfig,\n type LoaderName,\n type LoaderConfig,\n type Color,\n type ColorName,\n type ColorTheme,\n type Colors,\n type Styles,\n type Theme,\n type ThemeConfig,\n lightenColor,\n darkenColor,\n saturateColor,\n desaturateColor,\n generateRandomString,\n formatPhoneNumber,\n eventPreventDefault,\n eventStopPropagation,\n eventPreventStop,\n getPluralWord,\n useBooleanState,\n useDebounceState,\n loaderControls,\n colorThemeControls,\n} from \"react-better-core\";\n\nimport BetterComponentsProvider, {\n useBetterComponentsContext,\n type BetterComponentsProviderConfig,\n} from \"./components/BetterComponentsProvider\";\n\nimport { type AppConfig, type BetterComponentsConfig } from \"./types/config\";\nimport { type ComponentMarginProps, type ComponentPaddingProps } from \"./types/components\";\nimport { type PluginName, type BetterComponentsPlugin } from \"./types/plugin\";\n\nimport { pressStrength } from \"./utils/variableFunctions\";\n\nimport { useDevice, useKeyboard } from \"./utils/hooks\";\nimport { generateAsyncStorage } from \"./utils/asyncStorage\";\n\nimport View, { type ViewProps } from \"./components/View\";\nimport Text, { type TextProps } from \"./components/Text\";\nimport Button, { type ButtonProps } from \"./components/Button\";\nimport Loader, { type LoaderProps, type LoaderSize } from \"./components/Loader\";\nimport Animate, { type AnimateViewProps, type AnimateTextProps } from \"./components/Animate\";\nimport ScreenHolder, { type ScreenHolderProps, type FooterProps } from \"./components/ScreenHolder\";\nimport Image, { type ImageProps } from \"./components/Image\";\nimport InputField, { type InputFieldProps } from \"./components/InputField\";\nimport StatusBar, { type StatusBarProps } from \"./components/StatusBar\";\n\nexport * from \"./plugins\";\n\nexport {\n BetterComponentsProvider,\n useBetterComponentsContext as useBetterComponentsContext,\n BetterComponentsProviderConfig,\n\n // Constants\n\n // Types\n AppConfig,\n BetterComponentsConfig as BetterComponentsConfig,\n ComponentMarginProps,\n ComponentPaddingProps,\n PluginName,\n BetterComponentsPlugin,\n\n // Hooks\n useDevice,\n useKeyboard,\n\n // Functions\n\n // Variable Functions\n pressStrength,\n\n // AsyncStorage\n generateAsyncStorage,\n\n // Components\n View,\n ViewProps,\n Text,\n TextProps,\n Button,\n ButtonProps,\n Loader,\n LoaderProps,\n LoaderSize,\n Animate,\n AnimateViewProps,\n AnimateTextProps,\n ScreenHolder,\n ScreenHolderProps,\n FooterProps,\n Image,\n ImageProps,\n InputField,\n InputFieldProps,\n StatusBar,\n StatusBarProps,\n};\n","import { createContext, memo, useContext, useEffect, useMemo } from \"react\";\nimport {\n useBooleanState,\n DeepPartialRecord,\n BetterCoreProvider,\n BetterCoreProviderConfig,\n BetterCoreConfig,\n useBetterCoreContext,\n} from \"react-better-core\";\n\nimport { appConfig } from \"../constants/app\";\nimport { theme } from \"../constants/theme\";\nimport { icons } from \"../constants/icons\";\nimport { assets } from \"../constants/assets\";\n\nimport { BetterComponentsConfig } from \"../types/config\";\nimport { BetterComponentsPlugin, PluginName } from \"../types/plugin\";\n\nexport type BetterComponentsInternalConfig = BetterComponentsConfig & {\n plugins: BetterComponentsPlugin[];\n componentsState: {};\n};\n\nconst betterComponentsContext = createContext<BetterComponentsInternalConfig | undefined>(undefined);\nexport let externalBetterCoreContextValue: BetterCoreConfig | undefined;\nexport let externalBetterComponentsContextValue: BetterComponentsInternalConfig | undefined;\n\nexport const useBetterComponentsContext = (): BetterComponentsConfig & BetterCoreConfig => {\n const coreContext = useBetterCoreContext();\n const context = useContext(betterComponentsContext);\n\n if (context === undefined)\n throw new Error(\n \"`useBetterComponentsContext()` must be used within a `<BetterComponentsProvider>`. Make sure to add one at the root of your component tree.\",\n );\n\n const { plugins, componentsState, ...rest } = context;\n\n return {\n ...coreContext,\n ...rest,\n };\n};\n\nexport const useBetterComponentsContextInternal = (): BetterComponentsInternalConfig => {\n const context = useContext(betterComponentsContext);\n\n if (context === undefined)\n throw new Error(\n \"`useBetterComponentsContextInternal()` must be used within a `<BetterComponentsProvider>`. Make sure to add one at the root of your component tree.\",\n );\n\n return context;\n};\n\nexport const usePlugin = <T extends object>(\n pluginName: PluginName,\n): BetterComponentsPlugin<T> | undefined => {\n const context = useContext(betterComponentsContext);\n\n if (context === undefined) {\n throw new Error(\n \"`usePlugin()` must be used within a `<BetterComponentsProvider>`. Make sure to add one at the root of your component tree.\",\n );\n }\n\n return useMemo(\n () => context.plugins.find((plugin: BetterComponentsPlugin) => plugin.name === pluginName),\n [context.plugins, pluginName],\n ) as any;\n};\n\ntype BetterComponentsProviderInternalContentProps = {\n children?: React.ReactNode;\n};\n\nfunction BetterComponentsProviderInternalContent({ children }: BetterComponentsProviderInternalContentProps) {\n return <>{children}</>;\n}\n\ntype BetterComponentsProviderInternalConfig = DeepPartialRecord<BetterComponentsConfig>;\n\ntype BetterProviderCommonProps = {\n plugins?: BetterComponentsPlugin[];\n children?: React.ReactNode;\n};\n\ntype BetterComponentsProviderInternalProps = BetterProviderCommonProps & {\n config?: BetterComponentsProviderInternalConfig;\n};\n\nfunction BetterComponentsProviderInternal({\n config,\n plugins,\n children,\n}: BetterComponentsProviderInternalProps) {\n const betterCoreContext = useBetterCoreContext();\n\n const [sideMenuIsCollapsed, setSideMenuIsCollapsed] = useBooleanState();\n const [sideMenuIsOpenMobile, setSideMenuIsOpenMobile] = useBooleanState();\n\n const readyConfig = useMemo<BetterComponentsInternalConfig>(\n () => ({\n app: {\n ...appConfig,\n ...config?.app,\n },\n sideMenuIsCollapsed,\n setSideMenuIsCollapsed,\n sideMenuIsOpenMobile,\n setSideMenuIsOpenMobile,\n plugins: plugins ?? [],\n componentsState: {},\n }),\n [config, sideMenuIsCollapsed, sideMenuIsOpenMobile, plugins],\n );\n\n useEffect(() => {\n if (!plugins) return;\n\n plugins.forEach((plugin) => {\n plugin.initialize?.();\n });\n }, []);\n\n externalBetterCoreContextValue = betterCoreContext;\n externalBetterComponentsContextValue = readyConfig;\n\n return (\n <betterComponentsContext.Provider value={readyConfig}>\n <BetterComponentsProviderInternalContent>{children}</BetterComponentsProviderInternalContent>\n </betterComponentsContext.Provider>\n );\n}\n\nexport type BetterComponentsProviderConfig = BetterCoreProviderConfig &\n BetterComponentsProviderInternalConfig;\n\ntype BetterComponentsProviderProps = BetterProviderCommonProps & {\n config?: BetterComponentsProviderConfig;\n};\n\nfunction BetterComponentsProvider({ config, ...props }: BetterComponentsProviderProps) {\n const coreConfig = useMemo<BetterCoreProviderConfig>(\n () => ({\n theme: {\n ...theme,\n ...config?.theme,\n },\n // colorTheme: config?.colorTheme ?? (localStorage.getItem(\"theme\") === \"dark\" ? \"dark\" : \"light\"),\n colorTheme: config?.colorTheme ?? \"light\",\n icons: {\n ...icons,\n ...config?.icons,\n },\n assets: {\n ...assets,\n ...config?.assets,\n },\n loaders: config?.loaders,\n }),\n [config],\n );\n\n const componentsConfig = useMemo<BetterComponentsProviderInternalConfig>(\n () => ({\n app: config?.app,\n }),\n [config],\n );\n\n return (\n <BetterCoreProvider config={coreConfig}>\n <BetterComponentsProviderInternal config={componentsConfig} {...props} />\n </BetterCoreProvider>\n );\n}\n\nexport default memo(BetterComponentsProvider);\n","import { AppConfig } from \"../types/config\";\n\nexport const appConfig: AppConfig = {};\n","import { DeepPartialRecord, ThemeConfig } from \"react-better-core\";\n\nexport const theme: DeepPartialRecord<ThemeConfig> = {};\n","import { IconsConfig } from \"react-better-core\";\n\nexport const icons: Partial<IconsConfig> = {};\n","import { AssetsConfig } from \"react-better-core\";\n\nexport const assets: Partial<AssetsConfig> = {};\n","import { BetterCoreConfig } from \"react-better-core\";\n\nimport {\n BetterComponentsInternalConfig,\n externalBetterCoreContextValue,\n} from \"../components/BetterComponentsProvider\";\n\nexport const checkBetterCoreContextValue = (\n value: BetterCoreConfig | undefined,\n functionsName: string,\n): value is BetterCoreConfig => {\n if (value === undefined) {\n throw new Error(\n `\\`${functionsName}()\\` must be used within a \\`<BetterCoreProvider>\\`. Make sure to add one at the root of your component tree.`,\n );\n }\n\n return value !== undefined;\n};\nexport const checkBetterComponentsContextValue = (\n value: BetterComponentsInternalConfig | undefined,\n functionsName: string,\n): value is BetterComponentsInternalConfig => {\n if (value === undefined) {\n throw new Error(\n `\\`${functionsName}()\\` must be used within a \\`<BetterComponentsProvider>\\`. Make sure to add one at the root of your component tree.`,\n );\n }\n\n return value !== undefined;\n};\n\nexport const pressStrength = (): Record<\"z05\" | \"z1\" | \"z2\" | \"z3\", number> => {\n if (!checkBetterCoreContextValue(externalBetterCoreContextValue, \"pressStrength\")) return undefined as any;\n\n return {\n z05: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.85 : 0.95,\n z1: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.6 : 0.8,\n z2: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.5 : 0.7,\n z3: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.4 : 0.6,\n };\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { Dimensions, Keyboard, KeyboardEvent } from \"react-native\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { useBooleanState, useTheme } from \"react-better-core\";\n\nimport { animateProps, animateTransitionProps, cssProps } from \"../constants/css\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nexport function useDevice() {\n const theme = useTheme();\n const safeAreaInsets = useSafeAreaInsets();\n\n const screenDimensions = Dimensions.get(\"screen\");\n const windowDimensions = Dimensions.get(\"window\");\n const isSmallDevice = windowDimensions.height <= 700;\n\n return {\n safeArea: {\n ...safeAreaInsets,\n /** @description The safe area insets after calculations. Recommended to use this instead of the raw insets. */\n afterCalculations: {\n top: safeAreaInsets.top < 25 ? 32 : safeAreaInsets.top < 40 ? 40 : safeAreaInsets.top,\n bottom:\n (safeAreaInsets.bottom === 0 ? theme.styles.space : safeAreaInsets.bottom) +\n (isSmallDevice ? 0 : theme.styles.space * 2),\n left: safeAreaInsets.left,\n right: safeAreaInsets.right,\n },\n },\n /** @description The dimensions of the device screen. */\n screenDimensions,\n /** @description The dimensions of the app window. */\n windowDimensions,\n /** @description Whether the device is small. */\n isSmallDevice,\n };\n}\n\nexport function useKeyboard() {\n const [keyboardOpened, setKeyboardOpened] = useBooleanState();\n const [keyboardWillOpen, setKeyboardWillOpen] = useBooleanState();\n\n const [keyboardHeight, setKeyboardHeight] = useState<number>(0);\n\n useEffect(() => {\n const keyboardDidShow = (event: KeyboardEvent) => {\n setKeyboardOpened.setTrue();\n setKeyboardHeight(event.endCoordinates.height);\n };\n const keyboardDidHide = () => {\n setKeyboardOpened.setFalse();\n setKeyboardHeight(0);\n };\n\n const willShowSubscription = Keyboard.addListener(\"keyboardWillShow\", setKeyboardWillOpen.setTrue);\n const willHideSubscription = Keyboard.addListener(\"keyboardWillHide\", setKeyboardWillOpen.setFalse);\n const didShowSubscription = Keyboard.addListener(\"keyboardDidShow\", keyboardDidShow);\n const didHideSubscription = Keyboard.addListener(\"keyboardDidHide\", keyboardDidHide);\n\n return () => {\n willShowSubscription.remove();\n willHideSubscription.remove();\n didShowSubscription.remove();\n didHideSubscription.remove();\n };\n }, []);\n\n return {\n isOpened: keyboardOpened,\n willOpen: keyboardWillOpen,\n height: keyboardHeight,\n };\n}\n\nexport function useComponentPropsGrouper<Props extends object = {}>(\n props: ComponentStyle,\n prefix: string,\n): {\n style: ComponentStyle;\n withPrefixStyle: ComponentStyle;\n restProps: Props;\n} {\n return useMemo(() => {\n const style: ComponentStyle = {};\n const withPrefixStyle: ComponentStyle = {};\n const restProps = {} as Props;\n\n for (const key in props) {\n const keyName = key as keyof ComponentStyle;\n\n if (cssProps.has(keyName.toLowerCase())) {\n (style[keyName] as any) = props[keyName];\n } else if (\n keyName.startsWith(prefix) &&\n (cssProps.has(keyName.slice(prefix.length).toLowerCase()) ||\n animateProps.has(keyName.slice(prefix.length).toLowerCase()) ||\n animateTransitionProps.has(keyName.slice(prefix.length).toLowerCase()))\n ) {\n const realKey = `${keyName.slice(prefix.length, prefix.length + 1).toLowerCase()}${keyName.slice(\n prefix.length + 1,\n )}`;\n\n (withPrefixStyle[realKey as keyof ComponentStyle] as any) = props[keyName];\n } else {\n (restProps[keyName as keyof Props] as any) = props[keyName];\n }\n }\n\n return {\n style,\n withPrefixStyle,\n restProps,\n };\n }, [props, prefix]);\n}\n","export const cssProps: Set<string> = new Set([\n \"aligncontent\",\n \"alignitems\",\n \"alignself\",\n \"aspectratio\",\n \"borderbottomwidth\",\n \"borderendwidth\",\n \"borderleftwidth\",\n \"borderrightwidth\",\n \"borderstartwidth\",\n \"bordertopwidth\",\n \"borderwidth\",\n \"bottom\",\n \"boxsizing\",\n \"display\",\n \"end\",\n \"flex\",\n \"flexbasis\",\n \"flexdirection\",\n \"rowgap\",\n \"gap\",\n \"columngap\",\n \"flexgrow\",\n \"flexshrink\",\n \"flexwrap\",\n \"height\",\n \"justifycontent\",\n \"left\",\n \"margin\",\n \"marginbottom\",\n \"marginend\",\n \"marginhorizontal\",\n \"marginleft\",\n \"marginright\",\n \"marginstart\",\n \"margintop\",\n \"marginvertical\",\n \"maxheight\",\n \"maxwidth\",\n \"minheight\",\n \"minwidth\",\n \"overflow\",\n \"padding\",\n \"paddingbottom\",\n \"paddingend\",\n \"paddinghorizontal\",\n \"paddingleft\",\n \"paddingright\",\n \"paddingstart\",\n \"paddingtop\",\n \"paddingvertical\",\n \"position\",\n \"right\",\n \"start\",\n \"top\",\n \"width\",\n \"zindex\",\n \"direction\",\n \"inset\",\n \"insetblock\",\n \"insetblockend\",\n \"insetblockstart\",\n \"insetinline\",\n \"insetinlineend\",\n \"insetinlinestart\",\n \"marginblock\",\n \"marginblockend\",\n \"marginblockstart\",\n \"margininline\",\n \"margininlineend\",\n \"margininlinestart\",\n \"paddingblock\",\n \"paddingblockend\",\n \"paddingblockstart\",\n \"paddinginline\",\n \"paddinginlineend\",\n \"paddinginlinestart\",\n \"shadowcolor\",\n \"shadowoffset\",\n \"shadowopacity\",\n \"shadowradius\",\n \"transform\",\n \"transformorigin\",\n \"transformmatrix\",\n \"rotation\",\n \"scalex\",\n \"scaley\",\n \"translatex\",\n \"translatey\",\n \"backfacevisibility\",\n \"backgroundcolor\",\n \"borderblockcolor\",\n \"borderblockendcolor\",\n \"borderblockstartcolor\",\n \"borderbottomcolor\",\n \"borderbottomendradius\",\n \"borderbottomleftradius\",\n \"borderbottomrightradius\",\n \"borderbottomstartradius\",\n \"bordercolor\",\n \"bordercurve\",\n \"borderendcolor\",\n \"borderendendradius\",\n \"borderendstartradius\",\n \"borderleftcolor\",\n \"borderradius\",\n \"borderrightcolor\",\n \"borderstartcolor\",\n \"borderstartendradius\",\n \"borderstartstartradius\",\n \"borderstyle\",\n \"bordertopcolor\",\n \"bordertopendradius\",\n \"bordertopleftradius\",\n \"bordertoprightradius\",\n \"bordertopstartradius\",\n \"outlinecolor\",\n \"outlineoffset\",\n \"outlinestyle\",\n \"outlinewidth\",\n \"opacity\",\n \"elevation\",\n \"pointerevents\",\n \"isolation\",\n \"cursor\",\n \"boxshadow\",\n \"filter\",\n \"mixblendmode\",\n \"fontvariant\",\n \"textdecorationcolor\",\n \"textdecorationstyle\",\n \"writingdirection\",\n \"textalignvertical\",\n \"verticalalign\",\n \"includefontpadding\",\n \"color\",\n \"fontfamily\",\n \"fontsize\",\n \"fontstyle\",\n \"fontweight\",\n \"letterspacing\",\n \"lineheight\",\n \"textalign\",\n \"textdecorationline\",\n \"textdecorationstyle\",\n \"textdecorationcolor\",\n \"textshadowcolor\",\n \"textshadowoffset\",\n \"textshadowradius\",\n \"texttransform\",\n \"userselect\",\n]);\n\nexport const animateProps: Set<string> = new Set([\n \"x\",\n \"y\",\n \"scale\",\n \"scaleX\",\n \"scaleY\",\n \"skewX\",\n \"skewY\",\n \"perspective\",\n \"rotate\",\n \"rotateX\",\n \"rotateY\",\n \"rotateZ\",\n \"matrix\",\n]);\n\nexport const animateTransitionProps: Set<string> = new Set([\n \"type\",\n \"ease\",\n \"easing\",\n \"duration\",\n \"delay\",\n \"type\",\n \"friction\",\n \"tension\",\n \"speed\",\n \"bounciness\",\n \"stiffness\",\n \"damping\",\n \"mass\",\n \"overshootClamping\",\n \"restDisplacementThreshold\",\n \"restSpeedThreshold\",\n \"velocity\",\n \"loop\",\n]);\n","import NativeAsyncStorage from \"@react-native-async-storage/async-storage\";\n\nexport function generateAsyncStorage<AsyncStorage extends object>(): {\n setItem: <StorageName extends keyof AsyncStorage>(name: StorageName, value: AsyncStorage[StorageName]) => void;\n getItem: <StorageName extends keyof AsyncStorage>(\n name: StorageName,\n ) => Promise<AsyncStorage[StorageName] | undefined>;\n removeItem: (name: keyof AsyncStorage) => void;\n removeAllItems: () => void;\n} {\n return {\n setItem: async (name, value) => {\n if (value) await NativeAsyncStorage.setItem(name.toString(), JSON.stringify(value));\n else await NativeAsyncStorage.removeItem(name.toString());\n },\n getItem: async (name) => {\n const item = await NativeAsyncStorage.getItem(name.toString());\n\n if (item === null) return undefined;\n\n try {\n return JSON.parse(item);\n } catch (error) {\n return undefined;\n }\n },\n removeItem: async (name) => {\n await NativeAsyncStorage.removeItem(name.toString());\n },\n removeAllItems: () => {\n NativeAsyncStorage.clear();\n },\n };\n}\n","import { memo, useMemo } from \"react\";\nimport {\n GestureResponderEvent,\n View as NativeView,\n ViewProps as NativeViewProps,\n ViewStyle as NativeViewStyle,\n Platform,\n TouchableHighlight,\n TouchableNativeFeedback,\n TouchableOpacity,\n} from \"react-native\";\nimport { OmitProps, useTheme } from \"react-better-core\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nconst touchableHighlightStyleMoveToContent: (keyof ComponentStyle)[] = [\n \"backgroundColor\",\n \"padding\",\n \"paddingTop\",\n \"paddingBottom\",\n \"paddingLeft\",\n \"paddingRight\",\n \"paddingHorizontal\",\n \"paddingVertical\",\n \"borderWidth\",\n \"borderTopWidth\",\n \"borderBottomWidth\",\n \"borderLeftWidth\",\n \"borderRightWidth\",\n \"borderColor\",\n \"borderTopColor\",\n \"borderBottomColor\",\n \"borderLeftColor\",\n \"borderRightColor\",\n];\n\nconst touchableNativeFeedbackStyleMoveToHolder: (keyof ComponentStyle)[] = [\n \"width\",\n \"height\",\n \"margin\",\n \"marginTop\",\n \"marginBottom\",\n \"marginLeft\",\n \"marginRight\",\n \"marginHorizontal\",\n \"marginVertical\",\n];\n\nfunction alphaToHex(alpha: number): string {\n const clamped = Math.min(1, Math.max(0, alpha));\n const value = Math.round(clamped * 255);\n\n return value.toString(16).padStart(2, \"0\");\n}\n\nexport type ViewProps<Value = unknown> = {\n /** @default false */\n isRow?: boolean;\n value?: Value;\n /** @default false */\n disabled?: boolean;\n /** @default \"highlight\" */\n pressType?: \"opacity\" | \"highlight\";\n /** @default 0.8 */\n pressStrength?: number;\n onPress?: (event: GestureResponderEvent) => void;\n onPressIn?: (event: GestureResponderEvent) => void;\n onPressOut?: (event: GestureResponderEvent) => void;\n onLongPress?: (event: GestureResponderEvent) => void;\n onPressWithValue?: (value: Value) => void;\n} & OmitProps<NativeViewProps, \"style\" | \"onBlur\" | \"onFocus\"> &\n ComponentStyle;\n\ntype ViewComponentType = {\n <Value>(props: ViewProps<Value>): React.ReactElement;\n box: <Value>(\n props: ViewProps<Value> & {\n /** @default false */\n withShadow?: boolean;\n },\n ) => React.ReactElement;\n};\n\nconst ViewComponent: ViewComponentType = function View<Value>({\n isRow,\n value,\n disabled,\n pressType = \"highlight\",\n pressStrength = 0.8,\n onPress,\n onPressIn,\n onPressOut,\n onLongPress,\n onPressWithValue,\n children,\n ...props\n}: ViewProps<Value>) {\n const theme = useTheme();\n\n const style = useMemo<NativeViewStyle>(\n () => ({\n flexDirection: isRow ? \"row\" : \"column\",\n ...props,\n ...(props.shadowOffsetWidth !== undefined || props.shadowOffsetHeight !== undefined\n ? {\n shadowOffset: {\n width: props.shadowOffsetWidth ?? 0,\n height: props.shadowOffsetHeight ?? 0,\n },\n }\n : {}),\n }),\n [isRow, props],\n );\n const touchableHighlightStyle = useMemo<NativeViewStyle>(\n () => ({\n ...style,\n ...touchableHighlightStyleMoveToContent.reduce<NativeViewStyle>((previousValue, currentValue) => {\n if (currentValue === \"shadowOffsetWidth\" || currentValue === \"shadowOffsetHeight\")\n previousValue.shadowOffset = undefined;\n else previousValue[currentValue] = undefined;\n\n return previousValue;\n }, {}),\n }),\n [style],\n );\n const touchableHighlightContentProps = useMemo<ViewProps>(\n () =>\n touchableHighlightStyleMoveToContent.reduce<ViewProps>((previousValue, currentValue) => {\n (previousValue[currentValue] as any) = props[currentValue];\n\n return previousValue;\n }, {}),\n [props],\n );\n const touchableNativeFeedbackHolderStyle = useMemo<NativeViewStyle>(\n () =>\n touchableNativeFeedbackStyleMoveToHolder.reduce<ViewProps>((previousValue, currentValue) => {\n (previousValue[currentValue] as any) = props[currentValue];\n\n return previousValue;\n }, {}),\n [props],\n );\n const touchableNativeFeedbackContentStyle = useMemo<ViewProps>(\n () => ({\n ...style,\n ...touchableNativeFeedbackStyleMoveToHolder.reduce<NativeViewStyle>(\n (previousValue, currentValue) => {\n if (currentValue === \"shadowOffsetWidth\" || currentValue === \"shadowOffsetHeight\")\n previousValue.shadowOffset = undefined;\n else previousValue[currentValue] = undefined;\n\n return previousValue;\n },\n {},\n ),\n }),\n [style],\n );\n\n const pressEvents = useMemo(\n () =>\n !disabled\n ? {\n onPress: (event: GestureResponderEvent) => {\n onPress?.(event);\n\n if (value !== undefined) onPressWithValue?.(value);\n },\n onPressIn,\n onPressOut,\n onLongPress,\n }\n : {},\n [disabled, onPress, onPressIn, onPressOut, onLongPress, onPressWithValue, value],\n );\n\n const androidBoxShadow =\n Platform.OS === \"android\"\n ? props.shadowOffsetWidth !== undefined || props.shadowOffsetHeight !== undefined\n ? `${props.shadowOffsetWidth ?? 0}px ${props.shadowOffsetHeight ?? 0}px ${props.shadowRadius}px ${\n props.shadowColor?.toString() ?? \"#000000\"\n }`\n : undefined\n : undefined;\n\n const isPressable = onPress || onPressIn || onPressOut || onLongPress || onPressWithValue;\n\n return isPressable ? (\n pressType === \"opacity\" ? (\n <TouchableOpacity\n style={style}\n activeOpacity={pressStrength}\n boxShadow={androidBoxShadow}\n {...pressEvents}\n {...props}\n >\n {children}\n </TouchableOpacity>\n ) : pressType === \"highlight\" ? (\n Platform.OS === \"ios\" ? (\n <TouchableHighlight\n activeOpacity={pressStrength}\n underlayColor={theme.colors.textPrimary}\n style={touchableHighlightStyle}\n {...pressEvents}\n {...props}\n >\n <ViewComponent\n width=\"100%\"\n borderRadius={props.borderRadius}\n borderTopLeftRadius={props.borderTopLeftRadius}\n borderTopRightRadius={props.borderTopRightRadius}\n borderBottomLeftRadius={props.borderBottomLeftRadius}\n borderBottomRightRadius={props.borderBottomRightRadius}\n {...touchableHighlightContentProps}\n >\n {children}\n </ViewComponent>\n </TouchableHighlight>\n ) : Platform.OS === \"android\" ? (\n <ViewComponent\n {...touchableNativeFeedbackHolderStyle}\n borderRadius={props.borderRadius}\n borderTopLeftRadius={props.borderTopLeftRadius}\n borderTopRightRadius={props.borderTopRightRadius}\n borderBottomLeftRadius={props.borderBottomLeftRadius}\n borderBottomRightRadius={props.borderBottomRightRadius}\n boxShadow={androidBoxShadow}\n overflow=\"hidden\"\n pointerEvents=\"box-none\"\n >\n <TouchableNativeFeedback\n {...pressEvents}\n {...props}\n background={TouchableNativeFeedback.Ripple(\n `${theme.colors.textPrimary}${alphaToHex(1 - pressStrength)}`,\n false,\n )}\n useForeground\n touchSoundDisabled\n >\n <ViewComponent flex={1} {...touchableNativeFeedbackContentStyle}>\n {children}\n </ViewComponent>\n </TouchableNativeFeedback>\n </ViewComponent>\n ) : (\n <></>\n )\n ) : (\n <></>\n )\n ) : (\n <NativeView boxShadow={androidBoxShadow} style={style} {...props}>\n {children}\n </NativeView>\n );\n};\n\nViewComponent.box = function Box({ withShadow, ...props }) {\n const theme = useTheme();\n\n const shadowProps = useMemo<ViewProps>(\n () =>\n withShadow\n ? {\n shadowOpacity: 0.2,\n shadowOffsetHeight: 10,\n shadowRadius: 10,\n shadowColor: Platform.OS === \"android\" ? \"#00000020\" : undefined,\n }\n : {},\n [],\n );\n\n return (\n <ViewComponent\n width=\"100%\"\n backgroundColor={theme.colors.backgroundContent}\n borderWidth={1}\n borderColor={theme.colors.border}\n borderRadius={theme.styles.borderRadius}\n paddingHorizontal={theme.styles.space}\n paddingVertical={theme.styles.gap}\n {...(shadowProps as any)}\n {...props}\n />\n );\n} as ViewComponentType[\"box\"];\n\nconst View = memo(ViewComponent) as any as typeof ViewComponent & {\n box: typeof ViewComponent.box;\n};\n\nView.box = ViewComponent.box;\n\nexport default View;\n","import { memo, useMemo } from \"react\";\nimport { Text as NativeText, TextProps as NativeTextProps, TextStyle as NativeTextStyle } from \"react-native\";\nimport { OmitProps, useTheme } from \"react-better-core\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nexport type TextProps = {} & OmitProps<NativeTextProps, \"style\"> & ComponentStyle<NativeTextStyle>;\n\ntype TextComponentType = {\n (props: TextProps): React.ReactElement;\n title: (props: TextProps) => React.ReactElement;\n subtitle: (props: TextProps) => React.ReactElement;\n body: (props: TextProps) => React.ReactElement;\n caption: (props: TextProps) => React.ReactElement;\n unknown: (props: TextProps) => React.ReactElement;\n};\n\nconst TextComponent: TextComponentType = function Text({ selectionColor, children, ...props }) {\n const theme = useTheme();\n\n const style = useMemo<NativeTextStyle>(\n () => ({\n fontSize: 16,\n color: theme.colors.textPrimary,\n ...props,\n }),\n [theme, props],\n );\n\n return (\n <NativeText selectionColor={selectionColor ?? theme.colors.primary} style={style} {...props}>\n {children}\n </NativeText>\n );\n};\n\nTextComponent.title = function Title(props) {\n return <TextComponent fontSize={32} fontWeight={700} {...props} />;\n} as TextComponentType[`title`];\n\nTextComponent.subtitle = function Subtitle(props) {\n return <TextComponent fontSize={24} fontWeight={700} {...props} />;\n} as TextComponentType[`subtitle`];\n\nTextComponent.body = function Body(props) {\n const theme = useTheme();\n\n return <TextComponent color={theme.colors.textSecondary} {...props} />;\n} as TextComponentType[`body`];\n\nTextComponent.caption = function Caption(props) {\n const theme = useTheme();\n\n return <TextComponent fontSize={14} color={theme.colors.textSecondary} {...props} />;\n} as TextComponentType[`caption`];\n\nTextComponent.unknown = function Unknown(props) {\n const theme = useTheme();\n\n return (\n <TextComponent fontStyle=\"italic\" textAlign=\"center\" color={theme.colors.textSecondary} {...props} />\n );\n} as TextComponentType[`unknown`];\n\nconst Text = memo(TextComponent) as any as typeof TextComponent & {\n title: typeof TextComponent.title;\n subtitle: typeof TextComponent.subtitle;\n body: typeof TextComponent.body;\n caption: typeof TextComponent.caption;\n unknown: typeof TextComponent.unknown;\n};\n\nText.title = TextComponent.title;\nText.subtitle = TextComponent.subtitle;\nText.body = TextComponent.body;\nText.caption = TextComponent.caption;\nText.unknown = TextComponent.unknown;\n\nexport default Text;\n","import { memo } from \"react\";\nimport { ColorValue, Platform } from \"react-native\";\nimport { AnyOtherString, AssetName, IconName, LoaderName, useLoader, useTheme } from \"react-better-core\";\n\nimport { pressStrength } from \"../utils/variableFunctions\";\n\nimport View, { ViewProps } from \"./View\";\nimport Text, { TextProps } from \"./Text\";\nimport Animate from \"./Animate\";\nimport Loader from \"./Loader\";\n\nexport type ButtonProps<Value> = {\n text?: string;\n /** @default 16 */\n textFontSize?: TextProps[\"fontSize\"];\n /** @default 700 */\n textFontWeight?: TextProps[\"fontWeight\"];\n textDecorationLine?: TextProps[\"textDecorationLine\"];\n /** @default \"base\" */\n textColor?: ColorValue;\n\n icon?: IconName | AnyOtherString;\n /** @default \"left\" */\n iconPosition?: \"left\" | \"right\";\n /** @default Same as text color */\n iconColor?: string;\n /** @default 16 */\n iconSize?: number;\n\n image?: AssetName | AnyOtherString;\n /** @default \"left\" */\n imagePosition?: \"left\" | \"right\";\n /** @default 16 */\n imageWidth?: number;\n /** @default undefined */\n imageHeight?: number;\n\n loaderName?: LoaderName | AnyOtherString;\n /** @default false */\n isLoading?: boolean;\n\n isSmall?: true | \"left\" | \"center\" | \"right\";\n} & ViewProps<Value>;\n\ntype InternalButtonProps<Value> = ButtonProps<Value> & {\n animateOpacity?: number;\n};\n\nexport type ButtonRef = {};\n\ntype ButtonComponentType = {\n <Value>(props: ButtonProps<Value>): React.ReactElement;\n secondary: <Value>(props: ButtonProps<Value>) => React.ReactElement;\n destructive: <Value>(props: ButtonProps<Value>) => React.ReactElement;\n text: <Value>(props: ButtonProps<Value>) => React.ReactElement;\n};\n\nconst ButtonComponent = function Button<Value>({\n text,\n textFontSize = 16,\n textFontWeight = 700,\n textDecorationLine,\n textColor,\n\n icon,\n iconPosition = \"left\",\n iconColor,\n iconSize,\n\n image,\n imagePosition = \"left\",\n imageWidth,\n imageHeight,\n\n loaderName,\n isLoading,\n\n isSmall,\n\n animateOpacity,\n\n flex,\n alignSelf,\n disabled,\n ...props\n}: InternalButtonProps<Value>) {\n const theme = useTheme();\n const isLoadingLoader = useLoader(loaderName);\n\n const isLoadingElement = isLoading || isLoadingLoader;\n const isDisabled = disabled || isLoadingElement;\n\n const lineHeight = 20;\n const color = textColor ?? theme.colors.base;\n const paddingVertical = props.paddingVertical\n ? parseFloat(props.paddingVertical.toString())\n : theme.styles.space;\n const paddingHorizontal = props.paddingHorizontal\n ? parseFloat(props.paddingHorizontal.toString())\n : theme.styles.space + theme.styles.gap;\n\n const buttonHeight = paddingVertical + lineHeight + paddingVertical;\n\n return (\n <Animate.View\n position=\"relative\"\n flex={flex}\n alignSelf={\n alignSelf ??\n (isSmall === \"left\"\n ? \"flex-start\"\n : isSmall === \"right\"\n ? \"flex-end\"\n : isSmall === \"center\"\n ? \"center\"\n : isSmall\n ? \"baseline\"\n : undefined)\n }\n initialOpacity={1}\n animateOpacity={animateOpacity ?? (disabled ? 0.6 : 1)}\n >\n <View\n position=\"relative\"\n width={!isSmall ? \"100%\" : undefined}\n height={Platform.OS === \"android\" ? buttonHeight : undefined}\n alignItems=\"center\"\n justifyContent=\"center\"\n backgroundColor={theme.colors.primary}\n borderRadius={theme.styles.borderRadius}\n paddingVertical={paddingVertical}\n paddingHorizontal={paddingHorizontal}\n disabled={isDisabled}\n {...props}\n >\n <Animate.View initialOpacity={1} animateOpacity={isLoadingElement ? 0 : 1}>\n {text && (\n <Text\n fontSize={textFontSize}\n fontWeight={textFontWeight}\n textDecorationLine={textDecorationLine}\n textDecorationColor={color}\n textAlign=\"center\"\n lineHeight={lineHeight}\n color={color}\n >\n {text}\n </Text>\n )}\n </Animate.View>\n\n <Animate.View\n position=\"absolute\"\n width=\"100%\"\n height={buttonHeight}\n left={paddingHorizontal}\n alignItems=\"center\"\n justifyContent=\"center\"\n initialOpacity={0}\n animateOpacity={isLoadingElement ? 1 : 0}\n >\n <Loader color={color} />\n </Animate.View>\n </View>\n </Animate.View>\n );\n};\n\nButtonComponent.secondary = function Secondary(props) {\n const theme = useTheme();\n\n return (\n <ButtonComponent\n backgroundColor={theme.colors.backgroundContent}\n borderWidth={1}\n borderColor={theme.colors.border}\n textColor={theme.colors.textPrimary}\n pressStrength={pressStrength().z05}\n animateOpacity={props.disabled ? 0.4 : 1}\n {...props}\n />\n );\n} as ButtonComponentType[`secondary`];\n\nButtonComponent.destructive = function Destructive(props) {\n const theme = useTheme();\n\n return <ButtonComponent backgroundColor={theme.colors.error} {...props} />;\n} as ButtonComponentType[`destructive`];\n\nButtonComponent.text = function ButtonText(props) {\n const theme = useTheme();\n\n return (\n <ButtonComponent\n width=\"auto\"\n textColor={theme.colors.textPrimary}\n textDecorationLine=\"underline\"\n backgroundColor=\"transparent\"\n paddingHorizontal={theme.styles.space}\n paddingVertical={theme.styles.gap}\n isSmall\n pressType=\"opacity\"\n {...props}\n />\n );\n} as ButtonComponentType[`text`];\n\nconst Button = memo(ButtonComponent) as any as ButtonComponentType & {\n secondary: typeof ButtonComponent.secondary;\n destructive: typeof ButtonComponent.destructive;\n text: typeof ButtonComponent.text;\n};\n\nButton.secondary = ButtonComponent.secondary;\nButton.destructive = ButtonComponent.destructive;\nButton.text = ButtonComponent.text;\n\nexport default Button;\n","import { memo, useMemo } from \"react\";\nimport { TextStyle, ViewStyle } from \"react-native\";\nimport { Motion, PropsTransforms, EaseFunction, MotionTransition } from \"@legendapp/motion\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nimport { useComponentPropsGrouper } from \"../utils/hooks\";\n\nconst defaultTransitionDuration = 0.15 * 1000;\n\ntype ComponentStyleProps<Style extends ViewStyle = ViewStyle> = Omit<\n ComponentStyle<Style>,\n \"transformOrigin\"\n>;\ntype AnimationStyleProps<Style extends ViewStyle = ViewStyle> = ComponentStyle<Style> & PropsTransforms;\n\ntype InitialComponentStyle<Style extends ViewStyle = ViewStyle> = {\n [CSSProperty in keyof AnimationStyleProps<Style> as `initial${Capitalize<\n CSSProperty & string\n >}`]: AnimationStyleProps<Style>[CSSProperty];\n};\ntype animateComponentStyle<Style extends ViewStyle = ViewStyle> = {\n [CSSProperty in keyof AnimationStyleProps<Style> as `animate${Capitalize<\n CSSProperty & string\n >}`]: AnimationStyleProps<Style>[CSSProperty];\n};\ntype whileTapComponentStyle<Style extends ViewStyle = ViewStyle> = {\n [CSSProperty in keyof AnimationStyleProps<Style> as `whileTap${Capitalize<\n CSSProperty & string\n >}`]: AnimationStyleProps<Style>[CSSProperty];\n};\n\ntype TransitionProps = {\n transitionLoop?: number;\n} & (\n | {\n transitionType?: \"tween\" | \"timing\" | undefined;\n transitionEase?: EaseFunction | ((value: number) => number) | undefined;\n transitionEasing?: EaseFunction | ((value: number) => number) | undefined;\n transitionDuration?: number | undefined;\n transitionDelay?: number | undefined;\n }\n | {\n transitionType: \"spring\";\n transitionFriction?: number;\n transitionTension?: number;\n transitionSpeed?: number;\n transitionBounciness?: number;\n transitionStiffness?: number;\n transitionDamping?: number;\n transitionMass?: number;\n transitionOvershootClamping?: boolean | undefined;\n transitionRestDisplacementThreshold?: number | undefined;\n transitionRestSpeedThreshold?: number | undefined;\n transitionVelocity?:\n | number\n | {\n x: number;\n y: number;\n }\n | undefined;\n }\n);\n\ntype AnimateCommonProps = {\n transformOriginX?: number;\n transformOriginY?: number;\n children?: React.ReactNode;\n} & TransitionProps;\n\nexport type AnimateViewProps = {} & AnimateCommonProps &\n ComponentStyleProps &\n InitialComponentStyle &\n animateComponentStyle &\n whileTapComponentStyle;\n\nexport type AnimateTextProps = {} & AnimateCommonProps &\n ComponentStyleProps<TextStyle> &\n InitialComponentStyle<TextStyle> &\n animateComponentStyle<TextStyle> &\n whileTapComponentStyle<TextStyle>;\n\nconst Animate = {\n View: memo(function View({ transformOriginX, transformOriginY, children, ...props }: AnimateViewProps) {\n const initialProps = useComponentPropsGrouper(props, \"initial\");\n const animateProps = useComponentPropsGrouper(props, \"animate\");\n const whileTapProps = useComponentPropsGrouper(props, \"whileTap\");\n const transitionProps = useComponentPropsGrouper(props, \"transition\");\n\n const transition = useMemo<MotionTransition>(\n () => ({\n type: \"timing\",\n duration: defaultTransitionDuration,\n ...(transitionProps.withPrefixStyle as any),\n }),\n [transitionProps.withPrefixStyle],\n );\n const transformOrigin = useMemo(\n () =>\n transformOriginX !== undefined || transformOriginY !== undefined\n ? {\n x: transformOriginX ?? 0,\n y: transformOriginY ?? 0,\n }\n : undefined,\n [transformOriginX, transformOriginY],\n );\n\n const content = (\n <Motion.View\n style={initialProps.style}\n initial={initialProps.withPrefixStyle}\n animate={animateProps.withPrefixStyle}\n transition={transition}\n whileTap={whileTapProps.withPrefixStyle}\n transformOrigin={transformOrigin}\n >\n {children}\n </Motion.View>\n );\n\n return Object.keys(whileTapProps.withPrefixStyle).length > 0 ? (\n <Motion.Pressable>{content}</Motion.Pressable>\n ) : (\n content\n );\n }),\n Text: memo(function Text({ transformOriginX, transformOriginY, children, ...props }: AnimateTextProps) {\n const initialProps = useComponentPropsGrouper(props, \"initial\");\n const animateProps = useComponentPropsGrouper(props, \"animate\");\n const whileTapProps = useComponentPropsGrouper(props, \"whileTap\");\n const transitionProps = useComponentPropsGrouper(props, \"transition\");\n\n const transition = useMemo<MotionTransition>(\n () => ({\n type: \"timing\",\n duration: defaultTransitionDuration,\n ...(transitionProps.withPrefixStyle as any),\n }),\n [transitionProps.withPrefixStyle],\n );\n const transformOrigin = useMemo(\n () =>\n transformOriginX !== undefined || transformOriginY !== undefined\n ? {\n x: transformOriginX ?? 0,\n y: transformOriginY ?? 0,\n }\n : undefined,\n [transformOriginX, transformOriginY],\n );\n\n const content = (\n <Motion.Text\n style={initialProps.style}\n initial={initialProps.withPrefixStyle}\n animate={animateProps.withPrefixStyle}\n transition={transition}\n whileTap={whileTapProps.withPrefixStyle}\n transformOrigin={transformOrigin}\n >\n {children}\n </Motion.Text>\n );\n\n return Object.keys(whileTapProps.withPrefixStyle).length > 0 ? (\n <Motion.Pressable>{content}</Motion.Pressable>\n ) : (\n content\n );\n }),\n};\n\nexport default Animate;\n","import { memo } from \"react\";\nimport { ActivityIndicator, ColorValue } from \"react-native\";\nimport { OmitProps, useTheme } from \"react-better-core\";\n\nimport { ComponentMarginProps } from \"../types/components\";\n\nimport View from \"./View\";\nimport Text from \"./Text\";\n\nexport type LoaderSize = \"small\" | \"large\";\n\nexport type LoaderProps = {\n /** @default \"small\" */\n size?: LoaderSize;\n color?: ColorValue;\n} & ComponentMarginProps;\n\ntype LoaderComponentType = {\n (props: LoaderProps): React.ReactElement;\n box: (\n props: OmitProps<LoaderProps, \"size\"> & {\n /** @default \"Loading...\" */\n text?: string;\n /** @default \"large\" */\n size?: LoaderSize;\n },\n ) => React.ReactElement;\n text: (\n props: LoaderProps & {\n /** @default \"Loading...\" */\n text?: string;\n },\n ) => React.ReactElement;\n};\n\nconst LoaderComponent: LoaderComponentType = function Loader({ size = \"small\", color, ...props }) {\n const theme = useTheme();\n\n return (\n <View {...props}>\n <ActivityIndicator size={size} color={color ?? theme.colors.textPrimary} />\n </View>\n );\n};\n\nLoaderComponent.box = function Box({ text = \"Loading...\", size = \"large\", color, ...props }) {\n const theme = useTheme();\n\n return (\n <View\n width=\"100%\"\n alignItems=\"center\"\n gap={theme.styles.gap}\n marginVertical={theme.styles.space}\n {...props}\n >\n <Loader size={size} color={color} />\n\n {text && (\n <Text textAlign=\"center\" color={color ?? theme.colors.textSecondary}>\n {text}\n </Text>\n )}\n </View>\n );\n} as LoaderComponentType[`box`];\n\nLoaderComponent.text = function LoaderText({ text = \"Loading...\", size, color, ...props }) {\n const theme = useTheme();\n\n return (\n <View\n isRow\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={theme.styles.gap}\n marginVertical={theme.styles.space}\n {...props}\n >\n <Loader size={size} color={color} />\n\n {text && (\n <Text textAlign=\"center\" color={color ?? theme.colors.textSecondary}>\n {text}\n </Text>\n )}\n </View>\n );\n} as LoaderComponentType[\"text\"];\n\nconst Loader = memo(LoaderComponent) as any as typeof LoaderComponent & {\n box: typeof LoaderComponent.box;\n text: typeof LoaderComponent.text;\n};\n\nLoader.box = LoaderComponent.box;\nLoader.text = LoaderComponent.text;\n\nexport default Loader;\n","import { memo, useCallback, useMemo } from \"react\";\nimport { KeyboardAvoidingView, Platform, RefreshControl, ScrollView, ViewStyle } from \"react-native\";\nimport { useBooleanState, useTheme } from \"react-better-core\";\n\nimport { useDevice, useKeyboard } from \"../utils/hooks\";\n\nimport View, { ViewProps } from \"./View\";\n\nexport type ScreenHolderProps = {\n /** @default false */\n noScroll?: boolean;\n /** @default false */\n noSideSpace?: boolean;\n /** @default 1 (second) */\n refreshTimeout?: number;\n onRefresh?: () => void;\n onRefreshEnd?: () => void;\n /** @default \"backgroundBase\" */\n backgroundColor?: ViewProps[\"backgroundColor\"];\n /** @default false */\n insideTopSafeArea?: boolean;\n /** @default false */\n insideBottomSafeArea?: boolean;\n /** @default 0 */\n bottomSpace?: number;\n footer?: React.ReactNode;\n /** @default false */\n keepFooterOnKeyboardOpened?: boolean;\n keyboardVerticalOffset?: number;\n /** @default false */\n withNoHeader?: boolean;\n children?: React.ReactNode;\n};\n\ntype ScreenHolderComponentType = {\n (props: ScreenHolderProps): React.ReactElement;\n footer: (props: FooterProps) => React.ReactElement;\n};\n\nconst ScreenHolderComponent: ScreenHolderComponentType = ({\n noScroll,\n noSideSpace,\n refreshTimeout = 1,\n onRefresh,\n onRefreshEnd,\n backgroundColor,\n insideTopSafeArea,\n insideBottomSafeArea,\n bottomSpace = 0,\n footer,\n keepFooterOnKeyboardOpened,\n keyboardVerticalOffset,\n withNoHeader,\n children,\n}) => {\n const theme = useTheme();\n const device = useDevice();\n const keyboard = useKeyboard();\n\n const [isRefreshing, setIsRefreshing] = useBooleanState();\n\n const keyboardAvoidingViewStyle = useMemo<ViewStyle>(\n () => ({\n flex: 1,\n }),\n [],\n );\n\n const onRefreshElement = useCallback(() => {\n setIsRefreshing.setTrue();\n onRefresh?.();\n\n setTimeout(() => {\n setIsRefreshing.setFalse();\n onRefreshEnd?.();\n }, refreshTimeout * 1000);\n }, [onRefresh, onRefreshEnd, refreshTimeout]);\n\n const content = (\n <View\n flex={1}\n paddingHorizontal={!noSideSpace ? theme.styles.space : undefined}\n paddingTop={theme.styles.gap + (insideTopSafeArea ? device.safeArea.afterCalculations.top : 0)}\n paddingBottom={\n Platform.OS === \"ios\" && keyboard.isOpened\n ? device.safeArea.afterCalculations.top\n : bottomSpace + (insideBottomSafeArea ? device.safeArea.afterCalculations.bottom : 0)\n }\n >\n {children}\n </View>\n );\n\n const withRefresh = onRefresh || onRefreshEnd;\n\n return (\n <View flex={1} backgroundColor={backgroundColor ?? theme.colors.backgroundBase}>\n <KeyboardAvoidingView\n style={keyboardAvoidingViewStyle}\n keyboardVerticalOffset={\n keyboardVerticalOffset ??\n (withNoHeader\n ? Platform.OS === \"ios\"\n ? 0\n : theme.styles.gap\n : keepFooterOnKeyboardOpened\n ? Platform.OS === \"ios\"\n ? device.safeArea.afterCalculations.bottom\n : theme.styles.gap\n : undefined)\n }\n behavior={Platform.OS === \"ios\" ? \"padding\" : \"height\"}\n >\n <View flex={1}>\n {noScroll ? (\n content\n ) : (\n <ScrollView\n refreshControl={\n withRefresh ? (\n <RefreshControl refreshing={isRefreshing} onRefresh={onRefreshElement} />\n ) : undefined\n }\n >\n {content}\n </ScrollView>\n )}\n </View>\n\n {keepFooterOnKeyboardOpened || (Platform.OS === \"ios\" ? !keyboard.willOpen : !keyboard.isOpened)\n ? footer && <View>{footer}</View>\n : !withNoHeader && (\n <View\n width=\"100%\"\n height={\n device.safeArea.afterCalculations.bottom +\n (Platform.OS === \"android\" ? theme.styles.gap : 0)\n }\n />\n )}\n </KeyboardAvoidingView>\n </View>\n );\n};\n\nexport type FooterProps = {\n /** @default false */\n noSideSpace?: boolean;\n /** @default \"backgroundBase\" */\n backgroundColor?: ViewProps[\"backgroundColor\"];\n /** @default false */\n insideBottomSafeArea?: boolean;\n /** @default false */\n withNoHeader?: boolean;\n children?: React.ReactNode;\n};\n\nScreenHolderComponent.footer = function Footer({\n noSideSpace,\n backgroundColor,\n insideBottomSafeArea,\n withNoHeader,\n children,\n}) {\n const theme = useTheme();\n const device = useDevice();\n const keyboard = useKeyboard();\n\n return (\n <View\n backgroundColor={backgroundColor ?? theme.colors.backgroundBase}\n paddingHorizontal={!noSideSpace ? theme.styles.space : undefined}\n paddingTop={theme.styles.gap}\n paddingBottom={\n (Platform.OS === \"ios\" ? keyboard.willOpen : keyboard.isOpened) && withNoHeader\n ? theme.styles.gap\n : insideBottomSafeArea\n ? device.safeArea.afterCalculations.bottom\n : undefined\n }\n >\n {children}\n </View>\n );\n} as ScreenHolderComponentType[`footer`];\n\nconst ScreenHolder = memo(ScreenHolderComponent) as any as typeof ScreenHolderComponent & {\n footer: typeof ScreenHolderComponent.footer;\n};\n\nScreenHolder.footer = ScreenHolderComponent.footer;\n\nexport default ScreenHolder;\n","import { memo, useEffect, useMemo } from \"react\";\nimport { AnyOtherString, AssetName, OmitProps, useBetterCoreContext, useTheme } from \"react-better-core\";\nimport {\n ImageSourcePropType,\n Image as NativeImage,\n ImageProps as NativeImageProps,\n ImageStyle as NativeImageStyle,\n} from \"react-native\";\n\nimport { ComponentStyle } from \"../types/components\";\nimport View from \"./View\";\nimport Text from \"./Text\";\n\nexport type ImageProps = {\n name?: AssetName | AnyOtherString;\n source?: ImageSourcePropType;\n /** @default false */\n withDevFittingMode?: boolean;\n} & OmitProps<NativeImageProps, \"source\"> &\n ComponentStyle<NativeImageStyle>;\n\ntype ImageComponentType = {\n (props: ImageProps): React.ReactElement;\n profileImage: (\n props: OmitProps<ImageProps, \"width\" | \"height\"> & {\n /** @default 50 */\n size?: number;\n letters?: string;\n backgroundColor?: string;\n },\n ) => React.ReactElement;\n};\n\nconst ImageComponent: ImageComponentType = function Image({ name, source, withDevFittingMode, ...props }) {\n const { assets } = useBetterCoreContext();\n\n const style = useMemo<NativeImageStyle>(\n () => ({\n width: 100,\n height: 100,\n ...(withDevFittingMode\n ? {\n borderWidth: 1,\n borderColor: \"#eb39f7\",\n }\n : {}),\n ...props,\n }),\n [withDevFittingMode, props],\n );\n\n useEffect(() => {\n if (!name) return;\n\n if (!assets[name.toString()])\n console.warn(\n `The asset \\`${name}\\` you are trying to use does not exist. Make sure to add it to the \\`assets\\` object in \\`<BetterComponentsProvider>\\` config value prop.`,\n );\n }, [assets, name]);\n\n return <NativeImage source={name ? (assets[name.toString()] as any) : source} style={style} {...props} />;\n};\n\nImageComponent.profileImage = function ProfileImage({ size = 50, letters, backgroundColor, ...props }) {\n const theme = useTheme();\n\n return letters ? (\n <View\n width={size}\n height={size}\n backgroundColor={backgroundColor ?? theme.colors.backgroundSecondary}\n borderWidth={1}\n borderColor={theme.colors.border}\n borderRadius={999}\n alignItems=\"center\"\n justifyContent=\"center\"\n {...props}\n >\n <Text fontSize={size / 2.5} fontWeight={700} marginTop={1}>\n {letters.toUpperCase().slice(0, 2)}\n </Text>\n </View>\n ) : (\n <ImageComponent\n width={size}\n height={size}\n borderWidth={1}\n borderColor={theme.colors.border}\n borderRadius={999}\n objectFit=\"cover\"\n {...props}\n />\n );\n} as ImageComponentType[`profileImage`];\n\n/** @description size is set to 100x100 by default */\nconst Image = memo(ImageComponent) as any as typeof ImageComponent & {\n profileImage: typeof ImageComponent.profileImage;\n};\n\nImage.profileImage = ImageComponent.profileImage;\n\nexport default Image;\n","import { forwardRef, memo, useCallback, useEffect, useImperativeHandle, useMemo, useState } from \"react\";\nimport { FocusEvent, TextInput, TextStyle } from \"react-native\";\nimport {\n darkenColor,\n lightenColor,\n useBetterCoreContext,\n useBooleanState,\n useTheme,\n} from \"react-better-core\";\n\nimport { ComponentPropWithRef } from \"../types/components\";\n\nimport View from \"./View\";\nimport Text from \"./Text\";\nimport Animate from \"./Animate\";\n\nexport type InputFieldProps = {\n placeholder?: string;\n prefix?: string;\n suffix?: string;\n defaultValue?: string;\n value?: string | number;\n /** @default true */\n editable?: boolean;\n /** @default false */\n autoFocus?: boolean;\n autoCapitalize?: React.ComponentProps<typeof TextInput>[\"autoCapitalize\"];\n autoComplete?: React.ComponentProps<typeof TextInput>[\"autoComplete\"];\n autoCorrect?: React.ComponentProps<typeof TextInput>[\"autoCorrect\"];\n /** @default \"default\" */\n keyboardAppearance?: React.ComponentProps<typeof TextInput>[\"keyboardAppearance\"];\n keyboardType?: React.ComponentProps<typeof TextInput>[\"keyboardType\"];\n /** @default false */\n secureTextEntry?: boolean;\n onFocus?: (event: FocusEvent) => void;\n onBlur?: (event: FocusEvent) => void;\n onChange?: (text: string) => void;\n};\n\nexport type InputFieldRef = {};\n\ntype InputFieldComponentType = {\n (props: ComponentPropWithRef<InputFieldRef, InputFieldProps>): React.ReactElement;\n email: (props: ComponentPropWithRef<InputFieldRef, InputFieldProps>) => React.ReactElement;\n password: (props: ComponentPropWithRef<InputFieldRef, InputFieldProps>) => React.ReactElement;\n};\n\nconst InputFieldComponent: InputFieldComponentType = forwardRef<InputFieldRef, InputFieldProps>(\n (\n {\n placeholder,\n prefix,\n suffix,\n defaultValue,\n value,\n editable = true,\n autoFocus,\n autoCapitalize,\n autoComplete,\n autoCorrect,\n keyboardAppearance = \"default\",\n keyboardType,\n secureTextEntry,\n onFocus,\n onBlur,\n onChange,\n },\n ref,\n ) => {\n const theme = useTheme();\n const { colorTheme } = useBetterCoreContext();\n\n const [internalValue, setInternalValue] = useState(value?.toString() || defaultValue || \"\");\n const [isFocused, setIsFocused] = useBooleanState();\n\n const borderWidth = 1;\n const lineHeight = 20;\n const paddingHorizontal = theme.styles.space;\n const paddingVertical = (theme.styles.space + theme.styles.gap) / 2;\n const height = borderWidth + paddingVertical + lineHeight + paddingVertical + borderWidth;\n\n const onFocusElement = useCallback((event: FocusEvent) => {\n setIsFocused.setTrue();\n onFocus?.(event);\n }, []);\n const onBlurElement = useCallback((event: FocusEvent) => {\n setIsFocused.setFalse();\n onBlur?.(event);\n }, []);\n const onChangeText = useCallback(\n (text: string) => {\n setInternalValue(text);\n onChange?.(text);\n },\n [onChange],\n );\n\n const textInputStyle = useMemo<TextStyle>(\n () => ({\n flex: 1,\n fontSize: 16,\n lineHeight,\n color: theme.colors.textPrimary,\n paddingHorizontal,\n paddingVertical,\n }),\n [theme.colors, lineHeight, paddingHorizontal, paddingVertical],\n );\n\n useEffect(() => {\n if (value === undefined) return;\n\n setInternalValue(value.toString());\n }, [value]);\n\n useImperativeHandle(\n ref,\n (): InputFieldRef => {\n return {};\n },\n [],\n );\n\n const prefixSuffixBackgroundColor =\n colorTheme === \"light\"\n ? darkenColor(theme.colors.backgroundContent, 0.03)\n : lightenColor(theme.colors.backgroundContent, 0.1);\n\n return (\n <View isRow position=\"relative\" alignItems=\"center\" height={height}>\n {prefix && (\n <View\n isRow\n height=\"100%\"\n backgroundColor={prefixSuffixBackgroundColor}\n alignItems=\"center\"\n borderWidth={borderWidth}\n borderRightWidth={0}\n borderTopLeftRadius={theme.styles.borderRadius}\n borderBottomLeftRadius={theme.styles.borderRadius}\n borderColor={theme.colors.border}\n paddingHorizontal={paddingHorizontal}\n >\n <Text fontWeight={700}>{prefix}</Text>\n </View>\n )}\n\n <Animate.View\n flex={1}\n backgroundColor={theme.colors.backgroundContent}\n borderTopLeftRadius={prefix ? 0 : theme.styles.borderRadius}\n borderBottomLeftRadius={prefix ? 0 : theme.styles.borderRadius}\n borderTopRightRadius={suffix ? 0 : theme.styles.borderRadius}\n borderBottomRightRadius={suffix ? 0 : theme.styles.borderRadius}\n borderWidth={borderWidth}\n initialBorderColor={theme.colors.border}\n animateBorderColor={isFocused ? theme.colors.primary : theme.colors.border}\n overflow=\"hidden\"\n >\n <TextInput\n style={textInputStyle}\n value={internalValue}\n defaultValue={defaultValue}\n autoCapitalize={autoCapitalize}\n autoComplete={autoComplete}\n autoCorrect={autoCorrect}\n autoFocus={autoFocus}\n placeholder={placeholder}\n placeholderTextColor={theme.colors.textSecondary + \"80\"}\n readOnly={!editable}\n keyboardAppearance={keyboardAppearance}\n keyboardType={keyboardType}\n cursorColor={theme.colors.primary}\n selectionColor={theme.colors.primary}\n secureTextEntry={secureTextEntry}\n onFocus={onFocusElement}\n onBlur={onBlurElement}\n onChangeText={onChangeText}\n />\n </Animate.View>\n\n {suffix && (\n <View\n isRow\n height=\"100%\"\n backgroundColor={prefixSuffixBackgroundColor}\n alignItems=\"center\"\n borderWidth={borderWidth}\n borderLeftWidth={0}\n borderTopRightRadius={theme.styles.borderRadius}\n borderBottomRightRadius={theme.styles.borderRadius}\n borderColor={theme.colors.border}\n paddingHorizontal={paddingHorizontal}\n >\n <Text fontWeight={700}>{suffix}</Text>\n </View>\n )}\n </View>\n );\n },\n) as any;\n\nInputFieldComponent.email = forwardRef(function Email(props, ref) {\n return (\n <InputFieldComponent\n placeholder=\"your@email.here\"\n autoComplete=\"email\"\n keyboardType=\"email-address\"\n autoCapitalize=\"none\"\n autoCorrect={false}\n {...props}\n ref={ref}\n />\n );\n}) as InputFieldComponentType[`email`];\n\nInputFieldComponent.password = forwardRef(function Password(props, ref) {\n return (\n <InputFieldComponent\n secureTextEntry\n placeholder=\"******\"\n autoCapitalize=\"none\"\n autoComplete=\"password\"\n autoCorrect={false}\n {...props}\n ref={ref}\n />\n );\n}) as InputFieldComponentType[`password`];\n\nconst InputField = memo(InputFieldComponent) as any as typeof InputFieldComponent & {\n email: typeof InputFieldComponent.email;\n password: typeof InputFieldComponent.password;\n};\n\nInputField.email = InputFieldComponent.email;\nInputField.password = InputFieldComponent.password;\n\nexport default InputField;\n","import { memo } from \"react\";\nimport { useTheme } from \"react-better-core\";\nimport { StatusBar as NativeStatusBar } from \"react-native\";\n\nexport type StatusBarProps = {\n darkStatusBar?: boolean;\n /** @default false */\n hidden?: boolean;\n};\n\nfunction StatusBar({ darkStatusBar, hidden }: StatusBarProps) {\n const theme = useTheme();\n\n return (\n <NativeStatusBar\n backgroundColor={darkStatusBar ? theme.colors.backgroundSecondary : undefined}\n hidden={hidden}\n />\n );\n}\n\nexport default memo(StatusBar);\n","import { BetterComponentsPluginConstructor } from \"../types/plugin\";\n\nexport type AsyncStoragePluginOptions = {};\n\nexport const defaultAsyncStoragePluginOptions: Required<AsyncStoragePluginOptions> = {};\n\nexport const asyncStoragePlugin: BetterComponentsPluginConstructor<AsyncStoragePluginOptions> = (options) => ({\n name: \"asyncStorage\",\n initialize: () => {\n console.log(\"asyncStorage plugin initialized\");\n },\n getConfig: () => ({\n ...defaultAsyncStoragePluginOptions,\n ...options,\n }),\n});\n"],"mappings":"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CA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EA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","names":["import_react_better_core","import_react","import_react_better_core","theme","NativeAsyncStorage","import_react","import_react_native","import_react_better_core","import_jsx_runtime","pressStrength","theme","NativeView","View","import_react","import_react_native","import_react_better_core","import_jsx_runtime","theme","NativeText","Text","import_react","import_react_native","import_react_better_core","import_react","import_jsx_runtime","View","animateProps","Text","import_react","import_react_native","import_react_better_core","import_jsx_runtime","theme","Box","Loader","import_jsx_runtime","theme","Button","import_react","import_react_native","import_react_better_core","import_jsx_runtime","theme","import_react","import_react_better_core","import_react_native","import_jsx_runtime","assets","NativeImage","theme","Image","import_react","import_react_native","import_react_better_core","import_jsx_runtime","theme","import_react","import_react_better_core","import_react_native","import_jsx_runtime","theme","NativeStatusBar"]}
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  // src/index.ts
2
2
  import {
3
- useTheme as useTheme9,
3
+ useTheme as useTheme10,
4
4
  useLoader as useLoader2,
5
5
  useLoaderControls,
6
6
  countries,
@@ -1321,6 +1321,23 @@ InputField.email = InputFieldComponent.email;
1321
1321
  InputField.password = InputFieldComponent.password;
1322
1322
  var InputField_default = InputField;
1323
1323
 
1324
+ // src/components/StatusBar.tsx
1325
+ import { memo as memo10 } from "react";
1326
+ import { useTheme as useTheme9 } from "react-better-core";
1327
+ import { StatusBar as NativeStatusBar } from "react-native";
1328
+ import { jsx as jsx10 } from "react/jsx-runtime";
1329
+ function StatusBar({ darkStatusBar, hidden }) {
1330
+ const theme2 = useTheme9();
1331
+ return /* @__PURE__ */ jsx10(
1332
+ NativeStatusBar,
1333
+ {
1334
+ backgroundColor: darkStatusBar ? theme2.colors.backgroundSecondary : void 0,
1335
+ hidden
1336
+ }
1337
+ );
1338
+ }
1339
+ var StatusBar_default = memo10(StatusBar);
1340
+
1324
1341
  // src/plugins/asyncStorage.ts
1325
1342
  var defaultAsyncStoragePluginOptions = {};
1326
1343
  var asyncStoragePlugin = (options) => ({
@@ -1341,6 +1358,7 @@ export {
1341
1358
  InputField_default as InputField,
1342
1359
  Loader_default as Loader,
1343
1360
  ScreenHolder_default as ScreenHolder,
1361
+ StatusBar_default as StatusBar,
1344
1362
  Text_default as Text,
1345
1363
  View_default as View,
1346
1364
  asyncStoragePlugin,
@@ -1367,6 +1385,6 @@ export {
1367
1385
  useKeyboard,
1368
1386
  useLoader2 as useLoader,
1369
1387
  useLoaderControls,
1370
- useTheme9 as useTheme
1388
+ useTheme10 as useTheme
1371
1389
  };
1372
1390
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/components/BetterComponentsProvider.tsx","../src/constants/app.ts","../src/constants/theme.ts","../src/constants/icons.ts","../src/constants/assets.ts","../src/utils/variableFunctions.ts","../src/utils/hooks.ts","../src/constants/css.ts","../src/utils/asyncStorage.ts","../src/components/View.tsx","../src/components/Text.tsx","../src/components/Button.tsx","../src/components/Animate.tsx","../src/components/Loader.tsx","../src/components/ScreenHolder.tsx","../src/components/Image.tsx","../src/components/InputField.tsx","../src/plugins/asyncStorage.ts"],"sourcesContent":["export {\n useTheme,\n useLoader,\n useLoaderControls,\n countries,\n type OmitProps,\n type ExcludeOptions,\n type PickValue,\n type PartialRecord,\n type DeepPartialRecord,\n type PickAllRequired,\n type AnyOtherString,\n type AssetName,\n type AssetsConfig,\n type Country,\n type IconName,\n type IconsConfig,\n type LoaderName,\n type LoaderConfig,\n type Color,\n type ColorName,\n type ColorTheme,\n type Colors,\n type Styles,\n type Theme,\n type ThemeConfig,\n lightenColor,\n darkenColor,\n saturateColor,\n desaturateColor,\n generateRandomString,\n formatPhoneNumber,\n eventPreventDefault,\n eventStopPropagation,\n eventPreventStop,\n getPluralWord,\n useBooleanState,\n useDebounceState,\n loaderControls,\n colorThemeControls,\n} from \"react-better-core\";\n\nimport BetterComponentsProvider, {\n useBetterComponentsContext,\n type BetterComponentsProviderConfig,\n} from \"./components/BetterComponentsProvider\";\n\nimport { type AppConfig, type BetterComponentsConfig } from \"./types/config\";\nimport { type ComponentMarginProps, type ComponentPaddingProps } from \"./types/components\";\nimport { type PluginName, type BetterComponentsPlugin } from \"./types/plugin\";\n\nimport { pressStrength } from \"./utils/variableFunctions\";\n\nimport { useDevice, useKeyboard } from \"./utils/hooks\";\nimport { generateAsyncStorage } from \"./utils/asyncStorage\";\n\nimport View, { type ViewProps } from \"./components/View\";\nimport Text, { type TextProps } from \"./components/Text\";\nimport Button, { type ButtonProps } from \"./components/Button\";\nimport Loader, { type LoaderProps, type LoaderSize } from \"./components/Loader\";\nimport Animate, { type AnimateViewProps, type AnimateTextProps } from \"./components/Animate\";\nimport ScreenHolder, { type ScreenHolderProps, type FooterProps } from \"./components/ScreenHolder\";\nimport Image, { type ImageProps } from \"./components/Image\";\nimport InputField, { type InputFieldProps } from \"./components/InputField\";\n\nexport * from \"./plugins\";\n\nexport {\n BetterComponentsProvider,\n useBetterComponentsContext as useBetterComponentsContext,\n BetterComponentsProviderConfig,\n\n // Constants\n\n // Types\n AppConfig,\n BetterComponentsConfig as BetterComponentsConfig,\n ComponentMarginProps,\n ComponentPaddingProps,\n PluginName,\n BetterComponentsPlugin,\n\n // Hooks\n useDevice,\n useKeyboard,\n\n // Functions\n\n // Variable Functions\n pressStrength,\n\n // AsyncStorage\n generateAsyncStorage,\n\n // Components\n View,\n ViewProps,\n Text,\n TextProps,\n Button,\n ButtonProps,\n Loader,\n LoaderProps,\n LoaderSize,\n Animate,\n AnimateViewProps,\n AnimateTextProps,\n ScreenHolder,\n ScreenHolderProps,\n FooterProps,\n Image,\n ImageProps,\n InputField,\n InputFieldProps,\n};\n","import { createContext, memo, useContext, useEffect, useMemo } from \"react\";\nimport {\n useBooleanState,\n DeepPartialRecord,\n BetterCoreProvider,\n BetterCoreProviderConfig,\n BetterCoreConfig,\n useBetterCoreContext,\n} from \"react-better-core\";\n\nimport { appConfig } from \"../constants/app\";\nimport { theme } from \"../constants/theme\";\nimport { icons } from \"../constants/icons\";\nimport { assets } from \"../constants/assets\";\n\nimport { BetterComponentsConfig } from \"../types/config\";\nimport { BetterComponentsPlugin, PluginName } from \"../types/plugin\";\n\nexport type BetterComponentsInternalConfig = BetterComponentsConfig & {\n plugins: BetterComponentsPlugin[];\n componentsState: {};\n};\n\nconst betterComponentsContext = createContext<BetterComponentsInternalConfig | undefined>(undefined);\nexport let externalBetterCoreContextValue: BetterCoreConfig | undefined;\nexport let externalBetterComponentsContextValue: BetterComponentsInternalConfig | undefined;\n\nexport const useBetterComponentsContext = (): BetterComponentsConfig & BetterCoreConfig => {\n const coreContext = useBetterCoreContext();\n const context = useContext(betterComponentsContext);\n\n if (context === undefined)\n throw new Error(\n \"`useBetterComponentsContext()` must be used within a `<BetterComponentsProvider>`. Make sure to add one at the root of your component tree.\",\n );\n\n const { plugins, componentsState, ...rest } = context;\n\n return {\n ...coreContext,\n ...rest,\n };\n};\n\nexport const useBetterComponentsContextInternal = (): BetterComponentsInternalConfig => {\n const context = useContext(betterComponentsContext);\n\n if (context === undefined)\n throw new Error(\n \"`useBetterComponentsContextInternal()` must be used within a `<BetterComponentsProvider>`. Make sure to add one at the root of your component tree.\",\n );\n\n return context;\n};\n\nexport const usePlugin = <T extends object>(\n pluginName: PluginName,\n): BetterComponentsPlugin<T> | undefined => {\n const context = useContext(betterComponentsContext);\n\n if (context === undefined) {\n throw new Error(\n \"`usePlugin()` must be used within a `<BetterComponentsProvider>`. Make sure to add one at the root of your component tree.\",\n );\n }\n\n return useMemo(\n () => context.plugins.find((plugin: BetterComponentsPlugin) => plugin.name === pluginName),\n [context.plugins, pluginName],\n ) as any;\n};\n\ntype BetterComponentsProviderInternalContentProps = {\n children?: React.ReactNode;\n};\n\nfunction BetterComponentsProviderInternalContent({ children }: BetterComponentsProviderInternalContentProps) {\n return <>{children}</>;\n}\n\ntype BetterComponentsProviderInternalConfig = DeepPartialRecord<BetterComponentsConfig>;\n\ntype BetterProviderCommonProps = {\n plugins?: BetterComponentsPlugin[];\n children?: React.ReactNode;\n};\n\ntype BetterComponentsProviderInternalProps = BetterProviderCommonProps & {\n config?: BetterComponentsProviderInternalConfig;\n};\n\nfunction BetterComponentsProviderInternal({\n config,\n plugins,\n children,\n}: BetterComponentsProviderInternalProps) {\n const betterCoreContext = useBetterCoreContext();\n\n const [sideMenuIsCollapsed, setSideMenuIsCollapsed] = useBooleanState();\n const [sideMenuIsOpenMobile, setSideMenuIsOpenMobile] = useBooleanState();\n\n const readyConfig = useMemo<BetterComponentsInternalConfig>(\n () => ({\n app: {\n ...appConfig,\n ...config?.app,\n },\n sideMenuIsCollapsed,\n setSideMenuIsCollapsed,\n sideMenuIsOpenMobile,\n setSideMenuIsOpenMobile,\n plugins: plugins ?? [],\n componentsState: {},\n }),\n [config, sideMenuIsCollapsed, sideMenuIsOpenMobile, plugins],\n );\n\n useEffect(() => {\n if (!plugins) return;\n\n plugins.forEach((plugin) => {\n plugin.initialize?.();\n });\n }, []);\n\n externalBetterCoreContextValue = betterCoreContext;\n externalBetterComponentsContextValue = readyConfig;\n\n return (\n <betterComponentsContext.Provider value={readyConfig}>\n <BetterComponentsProviderInternalContent>{children}</BetterComponentsProviderInternalContent>\n </betterComponentsContext.Provider>\n );\n}\n\nexport type BetterComponentsProviderConfig = BetterCoreProviderConfig &\n BetterComponentsProviderInternalConfig;\n\ntype BetterComponentsProviderProps = BetterProviderCommonProps & {\n config?: BetterComponentsProviderConfig;\n};\n\nfunction BetterComponentsProvider({ config, ...props }: BetterComponentsProviderProps) {\n const coreConfig = useMemo<BetterCoreProviderConfig>(\n () => ({\n theme: {\n ...theme,\n ...config?.theme,\n },\n // colorTheme: config?.colorTheme ?? (localStorage.getItem(\"theme\") === \"dark\" ? \"dark\" : \"light\"),\n colorTheme: config?.colorTheme ?? \"light\",\n icons: {\n ...icons,\n ...config?.icons,\n },\n assets: {\n ...assets,\n ...config?.assets,\n },\n loaders: config?.loaders,\n }),\n [config],\n );\n\n const componentsConfig = useMemo<BetterComponentsProviderInternalConfig>(\n () => ({\n app: config?.app,\n }),\n [config],\n );\n\n return (\n <BetterCoreProvider config={coreConfig}>\n <BetterComponentsProviderInternal config={componentsConfig} {...props} />\n </BetterCoreProvider>\n );\n}\n\nexport default memo(BetterComponentsProvider);\n","import { AppConfig } from \"../types/config\";\n\nexport const appConfig: AppConfig = {};\n","import { DeepPartialRecord, ThemeConfig } from \"react-better-core\";\n\nexport const theme: DeepPartialRecord<ThemeConfig> = {};\n","import { IconsConfig } from \"react-better-core\";\n\nexport const icons: Partial<IconsConfig> = {};\n","import { AssetsConfig } from \"react-better-core\";\n\nexport const assets: Partial<AssetsConfig> = {};\n","import { BetterCoreConfig } from \"react-better-core\";\n\nimport {\n BetterComponentsInternalConfig,\n externalBetterCoreContextValue,\n} from \"../components/BetterComponentsProvider\";\n\nexport const checkBetterCoreContextValue = (\n value: BetterCoreConfig | undefined,\n functionsName: string,\n): value is BetterCoreConfig => {\n if (value === undefined) {\n throw new Error(\n `\\`${functionsName}()\\` must be used within a \\`<BetterCoreProvider>\\`. Make sure to add one at the root of your component tree.`,\n );\n }\n\n return value !== undefined;\n};\nexport const checkBetterComponentsContextValue = (\n value: BetterComponentsInternalConfig | undefined,\n functionsName: string,\n): value is BetterComponentsInternalConfig => {\n if (value === undefined) {\n throw new Error(\n `\\`${functionsName}()\\` must be used within a \\`<BetterComponentsProvider>\\`. Make sure to add one at the root of your component tree.`,\n );\n }\n\n return value !== undefined;\n};\n\nexport const pressStrength = (): Record<\"z05\" | \"z1\" | \"z2\" | \"z3\", number> => {\n if (!checkBetterCoreContextValue(externalBetterCoreContextValue, \"pressStrength\")) return undefined as any;\n\n return {\n z05: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.85 : 0.95,\n z1: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.6 : 0.8,\n z2: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.5 : 0.7,\n z3: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.4 : 0.6,\n };\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { Dimensions, Keyboard, KeyboardEvent } from \"react-native\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { useBooleanState, useTheme } from \"react-better-core\";\n\nimport { animateProps, animateTransitionProps, cssProps } from \"../constants/css\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nexport function useDevice() {\n const theme = useTheme();\n const safeAreaInsets = useSafeAreaInsets();\n\n const screenDimensions = Dimensions.get(\"screen\");\n const windowDimensions = Dimensions.get(\"window\");\n const isSmallDevice = windowDimensions.height <= 700;\n\n return {\n safeArea: {\n ...safeAreaInsets,\n /** @description The safe area insets after calculations. Recommended to use this instead of the raw insets. */\n afterCalculations: {\n top: safeAreaInsets.top < 25 ? 32 : safeAreaInsets.top < 40 ? 40 : safeAreaInsets.top,\n bottom:\n (safeAreaInsets.bottom === 0 ? theme.styles.space : safeAreaInsets.bottom) +\n (isSmallDevice ? 0 : theme.styles.space * 2),\n left: safeAreaInsets.left,\n right: safeAreaInsets.right,\n },\n },\n /** @description The dimensions of the device screen. */\n screenDimensions,\n /** @description The dimensions of the app window. */\n windowDimensions,\n /** @description Whether the device is small. */\n isSmallDevice,\n };\n}\n\nexport function useKeyboard() {\n const [keyboardOpened, setKeyboardOpened] = useBooleanState();\n const [keyboardWillOpen, setKeyboardWillOpen] = useBooleanState();\n\n const [keyboardHeight, setKeyboardHeight] = useState<number>(0);\n\n useEffect(() => {\n const keyboardDidShow = (event: KeyboardEvent) => {\n setKeyboardOpened.setTrue();\n setKeyboardHeight(event.endCoordinates.height);\n };\n const keyboardDidHide = () => {\n setKeyboardOpened.setFalse();\n setKeyboardHeight(0);\n };\n\n const willShowSubscription = Keyboard.addListener(\"keyboardWillShow\", setKeyboardWillOpen.setTrue);\n const willHideSubscription = Keyboard.addListener(\"keyboardWillHide\", setKeyboardWillOpen.setFalse);\n const didShowSubscription = Keyboard.addListener(\"keyboardDidShow\", keyboardDidShow);\n const didHideSubscription = Keyboard.addListener(\"keyboardDidHide\", keyboardDidHide);\n\n return () => {\n willShowSubscription.remove();\n willHideSubscription.remove();\n didShowSubscription.remove();\n didHideSubscription.remove();\n };\n }, []);\n\n return {\n isOpened: keyboardOpened,\n willOpen: keyboardWillOpen,\n height: keyboardHeight,\n };\n}\n\nexport function useComponentPropsGrouper<Props extends object = {}>(\n props: ComponentStyle,\n prefix: string,\n): {\n style: ComponentStyle;\n withPrefixStyle: ComponentStyle;\n restProps: Props;\n} {\n return useMemo(() => {\n const style: ComponentStyle = {};\n const withPrefixStyle: ComponentStyle = {};\n const restProps = {} as Props;\n\n for (const key in props) {\n const keyName = key as keyof ComponentStyle;\n\n if (cssProps.has(keyName.toLowerCase())) {\n (style[keyName] as any) = props[keyName];\n } else if (\n keyName.startsWith(prefix) &&\n (cssProps.has(keyName.slice(prefix.length).toLowerCase()) ||\n animateProps.has(keyName.slice(prefix.length).toLowerCase()) ||\n animateTransitionProps.has(keyName.slice(prefix.length).toLowerCase()))\n ) {\n const realKey = `${keyName.slice(prefix.length, prefix.length + 1).toLowerCase()}${keyName.slice(\n prefix.length + 1,\n )}`;\n\n (withPrefixStyle[realKey as keyof ComponentStyle] as any) = props[keyName];\n } else {\n (restProps[keyName as keyof Props] as any) = props[keyName];\n }\n }\n\n return {\n style,\n withPrefixStyle,\n restProps,\n };\n }, [props, prefix]);\n}\n","export const cssProps: Set<string> = new Set([\n \"aligncontent\",\n \"alignitems\",\n \"alignself\",\n \"aspectratio\",\n \"borderbottomwidth\",\n \"borderendwidth\",\n \"borderleftwidth\",\n \"borderrightwidth\",\n \"borderstartwidth\",\n \"bordertopwidth\",\n \"borderwidth\",\n \"bottom\",\n \"boxsizing\",\n \"display\",\n \"end\",\n \"flex\",\n \"flexbasis\",\n \"flexdirection\",\n \"rowgap\",\n \"gap\",\n \"columngap\",\n \"flexgrow\",\n \"flexshrink\",\n \"flexwrap\",\n \"height\",\n \"justifycontent\",\n \"left\",\n \"margin\",\n \"marginbottom\",\n \"marginend\",\n \"marginhorizontal\",\n \"marginleft\",\n \"marginright\",\n \"marginstart\",\n \"margintop\",\n \"marginvertical\",\n \"maxheight\",\n \"maxwidth\",\n \"minheight\",\n \"minwidth\",\n \"overflow\",\n \"padding\",\n \"paddingbottom\",\n \"paddingend\",\n \"paddinghorizontal\",\n \"paddingleft\",\n \"paddingright\",\n \"paddingstart\",\n \"paddingtop\",\n \"paddingvertical\",\n \"position\",\n \"right\",\n \"start\",\n \"top\",\n \"width\",\n \"zindex\",\n \"direction\",\n \"inset\",\n \"insetblock\",\n \"insetblockend\",\n \"insetblockstart\",\n \"insetinline\",\n \"insetinlineend\",\n \"insetinlinestart\",\n \"marginblock\",\n \"marginblockend\",\n \"marginblockstart\",\n \"margininline\",\n \"margininlineend\",\n \"margininlinestart\",\n \"paddingblock\",\n \"paddingblockend\",\n \"paddingblockstart\",\n \"paddinginline\",\n \"paddinginlineend\",\n \"paddinginlinestart\",\n \"shadowcolor\",\n \"shadowoffset\",\n \"shadowopacity\",\n \"shadowradius\",\n \"transform\",\n \"transformorigin\",\n \"transformmatrix\",\n \"rotation\",\n \"scalex\",\n \"scaley\",\n \"translatex\",\n \"translatey\",\n \"backfacevisibility\",\n \"backgroundcolor\",\n \"borderblockcolor\",\n \"borderblockendcolor\",\n \"borderblockstartcolor\",\n \"borderbottomcolor\",\n \"borderbottomendradius\",\n \"borderbottomleftradius\",\n \"borderbottomrightradius\",\n \"borderbottomstartradius\",\n \"bordercolor\",\n \"bordercurve\",\n \"borderendcolor\",\n \"borderendendradius\",\n \"borderendstartradius\",\n \"borderleftcolor\",\n \"borderradius\",\n \"borderrightcolor\",\n \"borderstartcolor\",\n \"borderstartendradius\",\n \"borderstartstartradius\",\n \"borderstyle\",\n \"bordertopcolor\",\n \"bordertopendradius\",\n \"bordertopleftradius\",\n \"bordertoprightradius\",\n \"bordertopstartradius\",\n \"outlinecolor\",\n \"outlineoffset\",\n \"outlinestyle\",\n \"outlinewidth\",\n \"opacity\",\n \"elevation\",\n \"pointerevents\",\n \"isolation\",\n \"cursor\",\n \"boxshadow\",\n \"filter\",\n \"mixblendmode\",\n \"fontvariant\",\n \"textdecorationcolor\",\n \"textdecorationstyle\",\n \"writingdirection\",\n \"textalignvertical\",\n \"verticalalign\",\n \"includefontpadding\",\n \"color\",\n \"fontfamily\",\n \"fontsize\",\n \"fontstyle\",\n \"fontweight\",\n \"letterspacing\",\n \"lineheight\",\n \"textalign\",\n \"textdecorationline\",\n \"textdecorationstyle\",\n \"textdecorationcolor\",\n \"textshadowcolor\",\n \"textshadowoffset\",\n \"textshadowradius\",\n \"texttransform\",\n \"userselect\",\n]);\n\nexport const animateProps: Set<string> = new Set([\n \"x\",\n \"y\",\n \"scale\",\n \"scaleX\",\n \"scaleY\",\n \"skewX\",\n \"skewY\",\n \"perspective\",\n \"rotate\",\n \"rotateX\",\n \"rotateY\",\n \"rotateZ\",\n \"matrix\",\n]);\n\nexport const animateTransitionProps: Set<string> = new Set([\n \"type\",\n \"ease\",\n \"easing\",\n \"duration\",\n \"delay\",\n \"type\",\n \"friction\",\n \"tension\",\n \"speed\",\n \"bounciness\",\n \"stiffness\",\n \"damping\",\n \"mass\",\n \"overshootClamping\",\n \"restDisplacementThreshold\",\n \"restSpeedThreshold\",\n \"velocity\",\n \"loop\",\n]);\n","import NativeAsyncStorage from \"@react-native-async-storage/async-storage\";\n\nexport function generateAsyncStorage<AsyncStorage extends object>(): {\n setItem: <StorageName extends keyof AsyncStorage>(name: StorageName, value: AsyncStorage[StorageName]) => void;\n getItem: <StorageName extends keyof AsyncStorage>(\n name: StorageName,\n ) => Promise<AsyncStorage[StorageName] | undefined>;\n removeItem: (name: keyof AsyncStorage) => void;\n removeAllItems: () => void;\n} {\n return {\n setItem: async (name, value) => {\n if (value) await NativeAsyncStorage.setItem(name.toString(), JSON.stringify(value));\n else await NativeAsyncStorage.removeItem(name.toString());\n },\n getItem: async (name) => {\n const item = await NativeAsyncStorage.getItem(name.toString());\n\n if (item === null) return undefined;\n\n try {\n return JSON.parse(item);\n } catch (error) {\n return undefined;\n }\n },\n removeItem: async (name) => {\n await NativeAsyncStorage.removeItem(name.toString());\n },\n removeAllItems: () => {\n NativeAsyncStorage.clear();\n },\n };\n}\n","import { memo, useMemo } from \"react\";\nimport {\n GestureResponderEvent,\n View as NativeView,\n ViewProps as NativeViewProps,\n ViewStyle as NativeViewStyle,\n Platform,\n TouchableHighlight,\n TouchableNativeFeedback,\n TouchableOpacity,\n} from \"react-native\";\nimport { OmitProps, useTheme } from \"react-better-core\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nconst touchableHighlightStyleMoveToContent: (keyof ComponentStyle)[] = [\n \"backgroundColor\",\n \"padding\",\n \"paddingTop\",\n \"paddingBottom\",\n \"paddingLeft\",\n \"paddingRight\",\n \"paddingHorizontal\",\n \"paddingVertical\",\n \"borderWidth\",\n \"borderTopWidth\",\n \"borderBottomWidth\",\n \"borderLeftWidth\",\n \"borderRightWidth\",\n \"borderColor\",\n \"borderTopColor\",\n \"borderBottomColor\",\n \"borderLeftColor\",\n \"borderRightColor\",\n];\n\nconst touchableNativeFeedbackStyleMoveToHolder: (keyof ComponentStyle)[] = [\n \"width\",\n \"height\",\n \"margin\",\n \"marginTop\",\n \"marginBottom\",\n \"marginLeft\",\n \"marginRight\",\n \"marginHorizontal\",\n \"marginVertical\",\n];\n\nfunction alphaToHex(alpha: number): string {\n const clamped = Math.min(1, Math.max(0, alpha));\n const value = Math.round(clamped * 255);\n\n return value.toString(16).padStart(2, \"0\");\n}\n\nexport type ViewProps<Value = unknown> = {\n /** @default false */\n isRow?: boolean;\n value?: Value;\n /** @default false */\n disabled?: boolean;\n /** @default \"highlight\" */\n pressType?: \"opacity\" | \"highlight\";\n /** @default 0.8 */\n pressStrength?: number;\n onPress?: (event: GestureResponderEvent) => void;\n onPressIn?: (event: GestureResponderEvent) => void;\n onPressOut?: (event: GestureResponderEvent) => void;\n onLongPress?: (event: GestureResponderEvent) => void;\n onPressWithValue?: (value: Value) => void;\n} & OmitProps<NativeViewProps, \"style\" | \"onBlur\" | \"onFocus\"> &\n ComponentStyle;\n\ntype ViewComponentType = {\n <Value>(props: ViewProps<Value>): React.ReactElement;\n box: <Value>(\n props: ViewProps<Value> & {\n /** @default false */\n withShadow?: boolean;\n },\n ) => React.ReactElement;\n};\n\nconst ViewComponent: ViewComponentType = function View<Value>({\n isRow,\n value,\n disabled,\n pressType = \"highlight\",\n pressStrength = 0.8,\n onPress,\n onPressIn,\n onPressOut,\n onLongPress,\n onPressWithValue,\n children,\n ...props\n}: ViewProps<Value>) {\n const theme = useTheme();\n\n const style = useMemo<NativeViewStyle>(\n () => ({\n flexDirection: isRow ? \"row\" : \"column\",\n ...props,\n ...(props.shadowOffsetWidth !== undefined || props.shadowOffsetHeight !== undefined\n ? {\n shadowOffset: {\n width: props.shadowOffsetWidth ?? 0,\n height: props.shadowOffsetHeight ?? 0,\n },\n }\n : {}),\n }),\n [isRow, props],\n );\n const touchableHighlightStyle = useMemo<NativeViewStyle>(\n () => ({\n ...style,\n ...touchableHighlightStyleMoveToContent.reduce<NativeViewStyle>((previousValue, currentValue) => {\n if (currentValue === \"shadowOffsetWidth\" || currentValue === \"shadowOffsetHeight\")\n previousValue.shadowOffset = undefined;\n else previousValue[currentValue] = undefined;\n\n return previousValue;\n }, {}),\n }),\n [style],\n );\n const touchableHighlightContentProps = useMemo<ViewProps>(\n () =>\n touchableHighlightStyleMoveToContent.reduce<ViewProps>((previousValue, currentValue) => {\n (previousValue[currentValue] as any) = props[currentValue];\n\n return previousValue;\n }, {}),\n [props],\n );\n const touchableNativeFeedbackHolderStyle = useMemo<NativeViewStyle>(\n () =>\n touchableNativeFeedbackStyleMoveToHolder.reduce<ViewProps>((previousValue, currentValue) => {\n (previousValue[currentValue] as any) = props[currentValue];\n\n return previousValue;\n }, {}),\n [props],\n );\n const touchableNativeFeedbackContentStyle = useMemo<ViewProps>(\n () => ({\n ...style,\n ...touchableNativeFeedbackStyleMoveToHolder.reduce<NativeViewStyle>(\n (previousValue, currentValue) => {\n if (currentValue === \"shadowOffsetWidth\" || currentValue === \"shadowOffsetHeight\")\n previousValue.shadowOffset = undefined;\n else previousValue[currentValue] = undefined;\n\n return previousValue;\n },\n {},\n ),\n }),\n [style],\n );\n\n const pressEvents = useMemo(\n () =>\n !disabled\n ? {\n onPress: (event: GestureResponderEvent) => {\n onPress?.(event);\n\n if (value !== undefined) onPressWithValue?.(value);\n },\n onPressIn,\n onPressOut,\n onLongPress,\n }\n : {},\n [disabled, onPress, onPressIn, onPressOut, onLongPress, onPressWithValue, value],\n );\n\n const androidBoxShadow =\n Platform.OS === \"android\"\n ? props.shadowOffsetWidth !== undefined || props.shadowOffsetHeight !== undefined\n ? `${props.shadowOffsetWidth ?? 0}px ${props.shadowOffsetHeight ?? 0}px ${props.shadowRadius}px ${\n props.shadowColor?.toString() ?? \"#000000\"\n }`\n : undefined\n : undefined;\n\n const isPressable = onPress || onPressIn || onPressOut || onLongPress || onPressWithValue;\n\n return isPressable ? (\n pressType === \"opacity\" ? (\n <TouchableOpacity\n style={style}\n activeOpacity={pressStrength}\n boxShadow={androidBoxShadow}\n {...pressEvents}\n {...props}\n >\n {children}\n </TouchableOpacity>\n ) : pressType === \"highlight\" ? (\n Platform.OS === \"ios\" ? (\n <TouchableHighlight\n activeOpacity={pressStrength}\n underlayColor={theme.colors.textPrimary}\n style={touchableHighlightStyle}\n {...pressEvents}\n {...props}\n >\n <ViewComponent\n width=\"100%\"\n borderRadius={props.borderRadius}\n borderTopLeftRadius={props.borderTopLeftRadius}\n borderTopRightRadius={props.borderTopRightRadius}\n borderBottomLeftRadius={props.borderBottomLeftRadius}\n borderBottomRightRadius={props.borderBottomRightRadius}\n {...touchableHighlightContentProps}\n >\n {children}\n </ViewComponent>\n </TouchableHighlight>\n ) : Platform.OS === \"android\" ? (\n <ViewComponent\n {...touchableNativeFeedbackHolderStyle}\n borderRadius={props.borderRadius}\n borderTopLeftRadius={props.borderTopLeftRadius}\n borderTopRightRadius={props.borderTopRightRadius}\n borderBottomLeftRadius={props.borderBottomLeftRadius}\n borderBottomRightRadius={props.borderBottomRightRadius}\n boxShadow={androidBoxShadow}\n overflow=\"hidden\"\n pointerEvents=\"box-none\"\n >\n <TouchableNativeFeedback\n {...pressEvents}\n {...props}\n background={TouchableNativeFeedback.Ripple(\n `${theme.colors.textPrimary}${alphaToHex(1 - pressStrength)}`,\n false,\n )}\n useForeground\n touchSoundDisabled\n >\n <ViewComponent flex={1} {...touchableNativeFeedbackContentStyle}>\n {children}\n </ViewComponent>\n </TouchableNativeFeedback>\n </ViewComponent>\n ) : (\n <></>\n )\n ) : (\n <></>\n )\n ) : (\n <NativeView boxShadow={androidBoxShadow} style={style} {...props}>\n {children}\n </NativeView>\n );\n};\n\nViewComponent.box = function Box({ withShadow, ...props }) {\n const theme = useTheme();\n\n const shadowProps = useMemo<ViewProps>(\n () =>\n withShadow\n ? {\n shadowOpacity: 0.2,\n shadowOffsetHeight: 10,\n shadowRadius: 10,\n shadowColor: Platform.OS === \"android\" ? \"#00000020\" : undefined,\n }\n : {},\n [],\n );\n\n return (\n <ViewComponent\n width=\"100%\"\n backgroundColor={theme.colors.backgroundContent}\n borderWidth={1}\n borderColor={theme.colors.border}\n borderRadius={theme.styles.borderRadius}\n paddingHorizontal={theme.styles.space}\n paddingVertical={theme.styles.gap}\n {...(shadowProps as any)}\n {...props}\n />\n );\n} as ViewComponentType[\"box\"];\n\nconst View = memo(ViewComponent) as any as typeof ViewComponent & {\n box: typeof ViewComponent.box;\n};\n\nView.box = ViewComponent.box;\n\nexport default View;\n","import { memo, useMemo } from \"react\";\nimport { Text as NativeText, TextProps as NativeTextProps, TextStyle as NativeTextStyle } from \"react-native\";\nimport { OmitProps, useTheme } from \"react-better-core\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nexport type TextProps = {} & OmitProps<NativeTextProps, \"style\"> & ComponentStyle<NativeTextStyle>;\n\ntype TextComponentType = {\n (props: TextProps): React.ReactElement;\n title: (props: TextProps) => React.ReactElement;\n subtitle: (props: TextProps) => React.ReactElement;\n body: (props: TextProps) => React.ReactElement;\n caption: (props: TextProps) => React.ReactElement;\n unknown: (props: TextProps) => React.ReactElement;\n};\n\nconst TextComponent: TextComponentType = function Text({ selectionColor, children, ...props }) {\n const theme = useTheme();\n\n const style = useMemo<NativeTextStyle>(\n () => ({\n fontSize: 16,\n color: theme.colors.textPrimary,\n ...props,\n }),\n [theme, props],\n );\n\n return (\n <NativeText selectionColor={selectionColor ?? theme.colors.primary} style={style} {...props}>\n {children}\n </NativeText>\n );\n};\n\nTextComponent.title = function Title(props) {\n return <TextComponent fontSize={32} fontWeight={700} {...props} />;\n} as TextComponentType[`title`];\n\nTextComponent.subtitle = function Subtitle(props) {\n return <TextComponent fontSize={24} fontWeight={700} {...props} />;\n} as TextComponentType[`subtitle`];\n\nTextComponent.body = function Body(props) {\n const theme = useTheme();\n\n return <TextComponent color={theme.colors.textSecondary} {...props} />;\n} as TextComponentType[`body`];\n\nTextComponent.caption = function Caption(props) {\n const theme = useTheme();\n\n return <TextComponent fontSize={14} color={theme.colors.textSecondary} {...props} />;\n} as TextComponentType[`caption`];\n\nTextComponent.unknown = function Unknown(props) {\n const theme = useTheme();\n\n return (\n <TextComponent fontStyle=\"italic\" textAlign=\"center\" color={theme.colors.textSecondary} {...props} />\n );\n} as TextComponentType[`unknown`];\n\nconst Text = memo(TextComponent) as any as typeof TextComponent & {\n title: typeof TextComponent.title;\n subtitle: typeof TextComponent.subtitle;\n body: typeof TextComponent.body;\n caption: typeof TextComponent.caption;\n unknown: typeof TextComponent.unknown;\n};\n\nText.title = TextComponent.title;\nText.subtitle = TextComponent.subtitle;\nText.body = TextComponent.body;\nText.caption = TextComponent.caption;\nText.unknown = TextComponent.unknown;\n\nexport default Text;\n","import { memo } from \"react\";\nimport { ColorValue, Platform } from \"react-native\";\nimport { AnyOtherString, AssetName, IconName, LoaderName, useLoader, useTheme } from \"react-better-core\";\n\nimport { pressStrength } from \"../utils/variableFunctions\";\n\nimport View, { ViewProps } from \"./View\";\nimport Text, { TextProps } from \"./Text\";\nimport Animate from \"./Animate\";\nimport Loader from \"./Loader\";\n\nexport type ButtonProps<Value> = {\n text?: string;\n /** @default 16 */\n textFontSize?: TextProps[\"fontSize\"];\n /** @default 700 */\n textFontWeight?: TextProps[\"fontWeight\"];\n textDecorationLine?: TextProps[\"textDecorationLine\"];\n /** @default \"base\" */\n textColor?: ColorValue;\n\n icon?: IconName | AnyOtherString;\n /** @default \"left\" */\n iconPosition?: \"left\" | \"right\";\n /** @default Same as text color */\n iconColor?: string;\n /** @default 16 */\n iconSize?: number;\n\n image?: AssetName | AnyOtherString;\n /** @default \"left\" */\n imagePosition?: \"left\" | \"right\";\n /** @default 16 */\n imageWidth?: number;\n /** @default undefined */\n imageHeight?: number;\n\n loaderName?: LoaderName | AnyOtherString;\n /** @default false */\n isLoading?: boolean;\n\n isSmall?: true | \"left\" | \"center\" | \"right\";\n} & ViewProps<Value>;\n\ntype InternalButtonProps<Value> = ButtonProps<Value> & {\n animateOpacity?: number;\n};\n\nexport type ButtonRef = {};\n\ntype ButtonComponentType = {\n <Value>(props: ButtonProps<Value>): React.ReactElement;\n secondary: <Value>(props: ButtonProps<Value>) => React.ReactElement;\n destructive: <Value>(props: ButtonProps<Value>) => React.ReactElement;\n text: <Value>(props: ButtonProps<Value>) => React.ReactElement;\n};\n\nconst ButtonComponent = function Button<Value>({\n text,\n textFontSize = 16,\n textFontWeight = 700,\n textDecorationLine,\n textColor,\n\n icon,\n iconPosition = \"left\",\n iconColor,\n iconSize,\n\n image,\n imagePosition = \"left\",\n imageWidth,\n imageHeight,\n\n loaderName,\n isLoading,\n\n isSmall,\n\n animateOpacity,\n\n flex,\n alignSelf,\n disabled,\n ...props\n}: InternalButtonProps<Value>) {\n const theme = useTheme();\n const isLoadingLoader = useLoader(loaderName);\n\n const isLoadingElement = isLoading || isLoadingLoader;\n const isDisabled = disabled || isLoadingElement;\n\n const lineHeight = 20;\n const color = textColor ?? theme.colors.base;\n const paddingVertical = props.paddingVertical\n ? parseFloat(props.paddingVertical.toString())\n : theme.styles.space;\n const paddingHorizontal = props.paddingHorizontal\n ? parseFloat(props.paddingHorizontal.toString())\n : theme.styles.space + theme.styles.gap;\n\n const buttonHeight = paddingVertical + lineHeight + paddingVertical;\n\n return (\n <Animate.View\n position=\"relative\"\n flex={flex}\n alignSelf={\n alignSelf ??\n (isSmall === \"left\"\n ? \"flex-start\"\n : isSmall === \"right\"\n ? \"flex-end\"\n : isSmall === \"center\"\n ? \"center\"\n : isSmall\n ? \"baseline\"\n : undefined)\n }\n initialOpacity={1}\n animateOpacity={animateOpacity ?? (disabled ? 0.6 : 1)}\n >\n <View\n position=\"relative\"\n width={!isSmall ? \"100%\" : undefined}\n height={Platform.OS === \"android\" ? buttonHeight : undefined}\n alignItems=\"center\"\n justifyContent=\"center\"\n backgroundColor={theme.colors.primary}\n borderRadius={theme.styles.borderRadius}\n paddingVertical={paddingVertical}\n paddingHorizontal={paddingHorizontal}\n disabled={isDisabled}\n {...props}\n >\n <Animate.View initialOpacity={1} animateOpacity={isLoadingElement ? 0 : 1}>\n {text && (\n <Text\n fontSize={textFontSize}\n fontWeight={textFontWeight}\n textDecorationLine={textDecorationLine}\n textDecorationColor={color}\n textAlign=\"center\"\n lineHeight={lineHeight}\n color={color}\n >\n {text}\n </Text>\n )}\n </Animate.View>\n\n <Animate.View\n position=\"absolute\"\n width=\"100%\"\n height={buttonHeight}\n left={paddingHorizontal}\n alignItems=\"center\"\n justifyContent=\"center\"\n initialOpacity={0}\n animateOpacity={isLoadingElement ? 1 : 0}\n >\n <Loader color={color} />\n </Animate.View>\n </View>\n </Animate.View>\n );\n};\n\nButtonComponent.secondary = function Secondary(props) {\n const theme = useTheme();\n\n return (\n <ButtonComponent\n backgroundColor={theme.colors.backgroundContent}\n borderWidth={1}\n borderColor={theme.colors.border}\n textColor={theme.colors.textPrimary}\n pressStrength={pressStrength().z05}\n animateOpacity={props.disabled ? 0.4 : 1}\n {...props}\n />\n );\n} as ButtonComponentType[`secondary`];\n\nButtonComponent.destructive = function Destructive(props) {\n const theme = useTheme();\n\n return <ButtonComponent backgroundColor={theme.colors.error} {...props} />;\n} as ButtonComponentType[`destructive`];\n\nButtonComponent.text = function ButtonText(props) {\n const theme = useTheme();\n\n return (\n <ButtonComponent\n width=\"auto\"\n textColor={theme.colors.textPrimary}\n textDecorationLine=\"underline\"\n backgroundColor=\"transparent\"\n paddingHorizontal={theme.styles.space}\n paddingVertical={theme.styles.gap}\n isSmall\n pressType=\"opacity\"\n {...props}\n />\n );\n} as ButtonComponentType[`text`];\n\nconst Button = memo(ButtonComponent) as any as ButtonComponentType & {\n secondary: typeof ButtonComponent.secondary;\n destructive: typeof ButtonComponent.destructive;\n text: typeof ButtonComponent.text;\n};\n\nButton.secondary = ButtonComponent.secondary;\nButton.destructive = ButtonComponent.destructive;\nButton.text = ButtonComponent.text;\n\nexport default Button;\n","import { memo, useMemo } from \"react\";\nimport { TextStyle, ViewStyle } from \"react-native\";\nimport { Motion, PropsTransforms, EaseFunction, MotionTransition } from \"@legendapp/motion\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nimport { useComponentPropsGrouper } from \"../utils/hooks\";\n\nconst defaultTransitionDuration = 0.15 * 1000;\n\ntype ComponentStyleProps<Style extends ViewStyle = ViewStyle> = Omit<\n ComponentStyle<Style>,\n \"transformOrigin\"\n>;\ntype AnimationStyleProps<Style extends ViewStyle = ViewStyle> = ComponentStyle<Style> & PropsTransforms;\n\ntype InitialComponentStyle<Style extends ViewStyle = ViewStyle> = {\n [CSSProperty in keyof AnimationStyleProps<Style> as `initial${Capitalize<\n CSSProperty & string\n >}`]: AnimationStyleProps<Style>[CSSProperty];\n};\ntype animateComponentStyle<Style extends ViewStyle = ViewStyle> = {\n [CSSProperty in keyof AnimationStyleProps<Style> as `animate${Capitalize<\n CSSProperty & string\n >}`]: AnimationStyleProps<Style>[CSSProperty];\n};\ntype whileTapComponentStyle<Style extends ViewStyle = ViewStyle> = {\n [CSSProperty in keyof AnimationStyleProps<Style> as `whileTap${Capitalize<\n CSSProperty & string\n >}`]: AnimationStyleProps<Style>[CSSProperty];\n};\n\ntype TransitionProps = {\n transitionLoop?: number;\n} & (\n | {\n transitionType?: \"tween\" | \"timing\" | undefined;\n transitionEase?: EaseFunction | ((value: number) => number) | undefined;\n transitionEasing?: EaseFunction | ((value: number) => number) | undefined;\n transitionDuration?: number | undefined;\n transitionDelay?: number | undefined;\n }\n | {\n transitionType: \"spring\";\n transitionFriction?: number;\n transitionTension?: number;\n transitionSpeed?: number;\n transitionBounciness?: number;\n transitionStiffness?: number;\n transitionDamping?: number;\n transitionMass?: number;\n transitionOvershootClamping?: boolean | undefined;\n transitionRestDisplacementThreshold?: number | undefined;\n transitionRestSpeedThreshold?: number | undefined;\n transitionVelocity?:\n | number\n | {\n x: number;\n y: number;\n }\n | undefined;\n }\n);\n\ntype AnimateCommonProps = {\n transformOriginX?: number;\n transformOriginY?: number;\n children?: React.ReactNode;\n} & TransitionProps;\n\nexport type AnimateViewProps = {} & AnimateCommonProps &\n ComponentStyleProps &\n InitialComponentStyle &\n animateComponentStyle &\n whileTapComponentStyle;\n\nexport type AnimateTextProps = {} & AnimateCommonProps &\n ComponentStyleProps<TextStyle> &\n InitialComponentStyle<TextStyle> &\n animateComponentStyle<TextStyle> &\n whileTapComponentStyle<TextStyle>;\n\nconst Animate = {\n View: memo(function View({ transformOriginX, transformOriginY, children, ...props }: AnimateViewProps) {\n const initialProps = useComponentPropsGrouper(props, \"initial\");\n const animateProps = useComponentPropsGrouper(props, \"animate\");\n const whileTapProps = useComponentPropsGrouper(props, \"whileTap\");\n const transitionProps = useComponentPropsGrouper(props, \"transition\");\n\n const transition = useMemo<MotionTransition>(\n () => ({\n type: \"timing\",\n duration: defaultTransitionDuration,\n ...(transitionProps.withPrefixStyle as any),\n }),\n [transitionProps.withPrefixStyle],\n );\n const transformOrigin = useMemo(\n () =>\n transformOriginX !== undefined || transformOriginY !== undefined\n ? {\n x: transformOriginX ?? 0,\n y: transformOriginY ?? 0,\n }\n : undefined,\n [transformOriginX, transformOriginY],\n );\n\n const content = (\n <Motion.View\n style={initialProps.style}\n initial={initialProps.withPrefixStyle}\n animate={animateProps.withPrefixStyle}\n transition={transition}\n whileTap={whileTapProps.withPrefixStyle}\n transformOrigin={transformOrigin}\n >\n {children}\n </Motion.View>\n );\n\n return Object.keys(whileTapProps.withPrefixStyle).length > 0 ? (\n <Motion.Pressable>{content}</Motion.Pressable>\n ) : (\n content\n );\n }),\n Text: memo(function Text({ transformOriginX, transformOriginY, children, ...props }: AnimateTextProps) {\n const initialProps = useComponentPropsGrouper(props, \"initial\");\n const animateProps = useComponentPropsGrouper(props, \"animate\");\n const whileTapProps = useComponentPropsGrouper(props, \"whileTap\");\n const transitionProps = useComponentPropsGrouper(props, \"transition\");\n\n const transition = useMemo<MotionTransition>(\n () => ({\n type: \"timing\",\n duration: defaultTransitionDuration,\n ...(transitionProps.withPrefixStyle as any),\n }),\n [transitionProps.withPrefixStyle],\n );\n const transformOrigin = useMemo(\n () =>\n transformOriginX !== undefined || transformOriginY !== undefined\n ? {\n x: transformOriginX ?? 0,\n y: transformOriginY ?? 0,\n }\n : undefined,\n [transformOriginX, transformOriginY],\n );\n\n const content = (\n <Motion.Text\n style={initialProps.style}\n initial={initialProps.withPrefixStyle}\n animate={animateProps.withPrefixStyle}\n transition={transition}\n whileTap={whileTapProps.withPrefixStyle}\n transformOrigin={transformOrigin}\n >\n {children}\n </Motion.Text>\n );\n\n return Object.keys(whileTapProps.withPrefixStyle).length > 0 ? (\n <Motion.Pressable>{content}</Motion.Pressable>\n ) : (\n content\n );\n }),\n};\n\nexport default Animate;\n","import { memo } from \"react\";\nimport { ActivityIndicator, ColorValue } from \"react-native\";\nimport { OmitProps, useTheme } from \"react-better-core\";\n\nimport { ComponentMarginProps } from \"../types/components\";\n\nimport View from \"./View\";\nimport Text from \"./Text\";\n\nexport type LoaderSize = \"small\" | \"large\";\n\nexport type LoaderProps = {\n /** @default \"small\" */\n size?: LoaderSize;\n color?: ColorValue;\n} & ComponentMarginProps;\n\ntype LoaderComponentType = {\n (props: LoaderProps): React.ReactElement;\n box: (\n props: OmitProps<LoaderProps, \"size\"> & {\n /** @default \"Loading...\" */\n text?: string;\n /** @default \"large\" */\n size?: LoaderSize;\n },\n ) => React.ReactElement;\n text: (\n props: LoaderProps & {\n /** @default \"Loading...\" */\n text?: string;\n },\n ) => React.ReactElement;\n};\n\nconst LoaderComponent: LoaderComponentType = function Loader({ size = \"small\", color, ...props }) {\n const theme = useTheme();\n\n return (\n <View {...props}>\n <ActivityIndicator size={size} color={color ?? theme.colors.textPrimary} />\n </View>\n );\n};\n\nLoaderComponent.box = function Box({ text = \"Loading...\", size = \"large\", color, ...props }) {\n const theme = useTheme();\n\n return (\n <View\n width=\"100%\"\n alignItems=\"center\"\n gap={theme.styles.gap}\n marginVertical={theme.styles.space}\n {...props}\n >\n <Loader size={size} color={color} />\n\n {text && (\n <Text textAlign=\"center\" color={color ?? theme.colors.textSecondary}>\n {text}\n </Text>\n )}\n </View>\n );\n} as LoaderComponentType[`box`];\n\nLoaderComponent.text = function LoaderText({ text = \"Loading...\", size, color, ...props }) {\n const theme = useTheme();\n\n return (\n <View\n isRow\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={theme.styles.gap}\n marginVertical={theme.styles.space}\n {...props}\n >\n <Loader size={size} color={color} />\n\n {text && (\n <Text textAlign=\"center\" color={color ?? theme.colors.textSecondary}>\n {text}\n </Text>\n )}\n </View>\n );\n} as LoaderComponentType[\"text\"];\n\nconst Loader = memo(LoaderComponent) as any as typeof LoaderComponent & {\n box: typeof LoaderComponent.box;\n text: typeof LoaderComponent.text;\n};\n\nLoader.box = LoaderComponent.box;\nLoader.text = LoaderComponent.text;\n\nexport default Loader;\n","import { memo, useCallback, useMemo } from \"react\";\nimport { KeyboardAvoidingView, Platform, RefreshControl, ScrollView, ViewStyle } from \"react-native\";\nimport { useBooleanState, useTheme } from \"react-better-core\";\n\nimport { useDevice, useKeyboard } from \"../utils/hooks\";\n\nimport View, { ViewProps } from \"./View\";\n\nexport type ScreenHolderProps = {\n /** @default false */\n noScroll?: boolean;\n /** @default false */\n noSideSpace?: boolean;\n /** @default 1 (second) */\n refreshTimeout?: number;\n onRefresh?: () => void;\n onRefreshEnd?: () => void;\n /** @default \"backgroundBase\" */\n backgroundColor?: ViewProps[\"backgroundColor\"];\n /** @default false */\n insideTopSafeArea?: boolean;\n /** @default false */\n insideBottomSafeArea?: boolean;\n /** @default 0 */\n bottomSpace?: number;\n footer?: React.ReactNode;\n /** @default false */\n keepFooterOnKeyboardOpened?: boolean;\n keyboardVerticalOffset?: number;\n /** @default false */\n withNoHeader?: boolean;\n children?: React.ReactNode;\n};\n\ntype ScreenHolderComponentType = {\n (props: ScreenHolderProps): React.ReactElement;\n footer: (props: FooterProps) => React.ReactElement;\n};\n\nconst ScreenHolderComponent: ScreenHolderComponentType = ({\n noScroll,\n noSideSpace,\n refreshTimeout = 1,\n onRefresh,\n onRefreshEnd,\n backgroundColor,\n insideTopSafeArea,\n insideBottomSafeArea,\n bottomSpace = 0,\n footer,\n keepFooterOnKeyboardOpened,\n keyboardVerticalOffset,\n withNoHeader,\n children,\n}) => {\n const theme = useTheme();\n const device = useDevice();\n const keyboard = useKeyboard();\n\n const [isRefreshing, setIsRefreshing] = useBooleanState();\n\n const keyboardAvoidingViewStyle = useMemo<ViewStyle>(\n () => ({\n flex: 1,\n }),\n [],\n );\n\n const onRefreshElement = useCallback(() => {\n setIsRefreshing.setTrue();\n onRefresh?.();\n\n setTimeout(() => {\n setIsRefreshing.setFalse();\n onRefreshEnd?.();\n }, refreshTimeout * 1000);\n }, [onRefresh, onRefreshEnd, refreshTimeout]);\n\n const content = (\n <View\n flex={1}\n paddingHorizontal={!noSideSpace ? theme.styles.space : undefined}\n paddingTop={theme.styles.gap + (insideTopSafeArea ? device.safeArea.afterCalculations.top : 0)}\n paddingBottom={\n Platform.OS === \"ios\" && keyboard.isOpened\n ? device.safeArea.afterCalculations.top\n : bottomSpace + (insideBottomSafeArea ? device.safeArea.afterCalculations.bottom : 0)\n }\n >\n {children}\n </View>\n );\n\n const withRefresh = onRefresh || onRefreshEnd;\n\n return (\n <View flex={1} backgroundColor={backgroundColor ?? theme.colors.backgroundBase}>\n <KeyboardAvoidingView\n style={keyboardAvoidingViewStyle}\n keyboardVerticalOffset={\n keyboardVerticalOffset ??\n (withNoHeader\n ? Platform.OS === \"ios\"\n ? 0\n : theme.styles.gap\n : keepFooterOnKeyboardOpened\n ? Platform.OS === \"ios\"\n ? device.safeArea.afterCalculations.bottom\n : theme.styles.gap\n : undefined)\n }\n behavior={Platform.OS === \"ios\" ? \"padding\" : \"height\"}\n >\n <View flex={1}>\n {noScroll ? (\n content\n ) : (\n <ScrollView\n refreshControl={\n withRefresh ? (\n <RefreshControl refreshing={isRefreshing} onRefresh={onRefreshElement} />\n ) : undefined\n }\n >\n {content}\n </ScrollView>\n )}\n </View>\n\n {keepFooterOnKeyboardOpened || (Platform.OS === \"ios\" ? !keyboard.willOpen : !keyboard.isOpened)\n ? footer && <View>{footer}</View>\n : !withNoHeader && (\n <View\n width=\"100%\"\n height={\n device.safeArea.afterCalculations.bottom +\n (Platform.OS === \"android\" ? theme.styles.gap : 0)\n }\n />\n )}\n </KeyboardAvoidingView>\n </View>\n );\n};\n\nexport type FooterProps = {\n /** @default false */\n noSideSpace?: boolean;\n /** @default \"backgroundBase\" */\n backgroundColor?: ViewProps[\"backgroundColor\"];\n /** @default false */\n insideBottomSafeArea?: boolean;\n /** @default false */\n withNoHeader?: boolean;\n children?: React.ReactNode;\n};\n\nScreenHolderComponent.footer = function Footer({\n noSideSpace,\n backgroundColor,\n insideBottomSafeArea,\n withNoHeader,\n children,\n}) {\n const theme = useTheme();\n const device = useDevice();\n const keyboard = useKeyboard();\n\n return (\n <View\n backgroundColor={backgroundColor ?? theme.colors.backgroundBase}\n paddingHorizontal={!noSideSpace ? theme.styles.space : undefined}\n paddingTop={theme.styles.gap}\n paddingBottom={\n (Platform.OS === \"ios\" ? keyboard.willOpen : keyboard.isOpened) && withNoHeader\n ? theme.styles.gap\n : insideBottomSafeArea\n ? device.safeArea.afterCalculations.bottom\n : undefined\n }\n >\n {children}\n </View>\n );\n} as ScreenHolderComponentType[`footer`];\n\nconst ScreenHolder = memo(ScreenHolderComponent) as any as typeof ScreenHolderComponent & {\n footer: typeof ScreenHolderComponent.footer;\n};\n\nScreenHolder.footer = ScreenHolderComponent.footer;\n\nexport default ScreenHolder;\n","import { memo, useEffect, useMemo } from \"react\";\nimport { AnyOtherString, AssetName, OmitProps, useBetterCoreContext, useTheme } from \"react-better-core\";\nimport {\n ImageSourcePropType,\n Image as NativeImage,\n ImageProps as NativeImageProps,\n ImageStyle as NativeImageStyle,\n} from \"react-native\";\n\nimport { ComponentStyle } from \"../types/components\";\nimport View from \"./View\";\nimport Text from \"./Text\";\n\nexport type ImageProps = {\n name?: AssetName | AnyOtherString;\n source?: ImageSourcePropType;\n /** @default false */\n withDevFittingMode?: boolean;\n} & OmitProps<NativeImageProps, \"source\"> &\n ComponentStyle<NativeImageStyle>;\n\ntype ImageComponentType = {\n (props: ImageProps): React.ReactElement;\n profileImage: (\n props: OmitProps<ImageProps, \"width\" | \"height\"> & {\n /** @default 50 */\n size?: number;\n letters?: string;\n backgroundColor?: string;\n },\n ) => React.ReactElement;\n};\n\nconst ImageComponent: ImageComponentType = function Image({ name, source, withDevFittingMode, ...props }) {\n const { assets } = useBetterCoreContext();\n\n const style = useMemo<NativeImageStyle>(\n () => ({\n width: 100,\n height: 100,\n ...(withDevFittingMode\n ? {\n borderWidth: 1,\n borderColor: \"#eb39f7\",\n }\n : {}),\n ...props,\n }),\n [withDevFittingMode, props],\n );\n\n useEffect(() => {\n if (!name) return;\n\n if (!assets[name.toString()])\n console.warn(\n `The asset \\`${name}\\` you are trying to use does not exist. Make sure to add it to the \\`assets\\` object in \\`<BetterComponentsProvider>\\` config value prop.`,\n );\n }, [assets, name]);\n\n return <NativeImage source={name ? (assets[name.toString()] as any) : source} style={style} {...props} />;\n};\n\nImageComponent.profileImage = function ProfileImage({ size = 50, letters, backgroundColor, ...props }) {\n const theme = useTheme();\n\n return letters ? (\n <View\n width={size}\n height={size}\n backgroundColor={backgroundColor ?? theme.colors.backgroundSecondary}\n borderWidth={1}\n borderColor={theme.colors.border}\n borderRadius={999}\n alignItems=\"center\"\n justifyContent=\"center\"\n {...props}\n >\n <Text fontSize={size / 2.5} fontWeight={700} marginTop={1}>\n {letters.toUpperCase().slice(0, 2)}\n </Text>\n </View>\n ) : (\n <ImageComponent\n width={size}\n height={size}\n borderWidth={1}\n borderColor={theme.colors.border}\n borderRadius={999}\n objectFit=\"cover\"\n {...props}\n />\n );\n} as ImageComponentType[`profileImage`];\n\n/** @description size is set to 100x100 by default */\nconst Image = memo(ImageComponent) as any as typeof ImageComponent & {\n profileImage: typeof ImageComponent.profileImage;\n};\n\nImage.profileImage = ImageComponent.profileImage;\n\nexport default Image;\n","import { forwardRef, memo, useCallback, useEffect, useImperativeHandle, useMemo, useState } from \"react\";\nimport { FocusEvent, TextInput, TextStyle } from \"react-native\";\nimport {\n darkenColor,\n lightenColor,\n useBetterCoreContext,\n useBooleanState,\n useTheme,\n} from \"react-better-core\";\n\nimport { ComponentPropWithRef } from \"../types/components\";\n\nimport View from \"./View\";\nimport Text from \"./Text\";\nimport Animate from \"./Animate\";\n\nexport type InputFieldProps = {\n placeholder?: string;\n prefix?: string;\n suffix?: string;\n defaultValue?: string;\n value?: string | number;\n /** @default true */\n editable?: boolean;\n /** @default false */\n autoFocus?: boolean;\n autoCapitalize?: React.ComponentProps<typeof TextInput>[\"autoCapitalize\"];\n autoComplete?: React.ComponentProps<typeof TextInput>[\"autoComplete\"];\n autoCorrect?: React.ComponentProps<typeof TextInput>[\"autoCorrect\"];\n /** @default \"default\" */\n keyboardAppearance?: React.ComponentProps<typeof TextInput>[\"keyboardAppearance\"];\n keyboardType?: React.ComponentProps<typeof TextInput>[\"keyboardType\"];\n /** @default false */\n secureTextEntry?: boolean;\n onFocus?: (event: FocusEvent) => void;\n onBlur?: (event: FocusEvent) => void;\n onChange?: (text: string) => void;\n};\n\nexport type InputFieldRef = {};\n\ntype InputFieldComponentType = {\n (props: ComponentPropWithRef<InputFieldRef, InputFieldProps>): React.ReactElement;\n email: (props: ComponentPropWithRef<InputFieldRef, InputFieldProps>) => React.ReactElement;\n password: (props: ComponentPropWithRef<InputFieldRef, InputFieldProps>) => React.ReactElement;\n};\n\nconst InputFieldComponent: InputFieldComponentType = forwardRef<InputFieldRef, InputFieldProps>(\n (\n {\n placeholder,\n prefix,\n suffix,\n defaultValue,\n value,\n editable = true,\n autoFocus,\n autoCapitalize,\n autoComplete,\n autoCorrect,\n keyboardAppearance = \"default\",\n keyboardType,\n secureTextEntry,\n onFocus,\n onBlur,\n onChange,\n },\n ref,\n ) => {\n const theme = useTheme();\n const { colorTheme } = useBetterCoreContext();\n\n const [internalValue, setInternalValue] = useState(value?.toString() || defaultValue || \"\");\n const [isFocused, setIsFocused] = useBooleanState();\n\n const borderWidth = 1;\n const lineHeight = 20;\n const paddingHorizontal = theme.styles.space;\n const paddingVertical = (theme.styles.space + theme.styles.gap) / 2;\n const height = borderWidth + paddingVertical + lineHeight + paddingVertical + borderWidth;\n\n const onFocusElement = useCallback((event: FocusEvent) => {\n setIsFocused.setTrue();\n onFocus?.(event);\n }, []);\n const onBlurElement = useCallback((event: FocusEvent) => {\n setIsFocused.setFalse();\n onBlur?.(event);\n }, []);\n const onChangeText = useCallback(\n (text: string) => {\n setInternalValue(text);\n onChange?.(text);\n },\n [onChange],\n );\n\n const textInputStyle = useMemo<TextStyle>(\n () => ({\n flex: 1,\n fontSize: 16,\n lineHeight,\n color: theme.colors.textPrimary,\n paddingHorizontal,\n paddingVertical,\n }),\n [theme.colors, lineHeight, paddingHorizontal, paddingVertical],\n );\n\n useEffect(() => {\n if (value === undefined) return;\n\n setInternalValue(value.toString());\n }, [value]);\n\n useImperativeHandle(\n ref,\n (): InputFieldRef => {\n return {};\n },\n [],\n );\n\n const prefixSuffixBackgroundColor =\n colorTheme === \"light\"\n ? darkenColor(theme.colors.backgroundContent, 0.03)\n : lightenColor(theme.colors.backgroundContent, 0.1);\n\n return (\n <View isRow position=\"relative\" alignItems=\"center\" height={height}>\n {prefix && (\n <View\n isRow\n height=\"100%\"\n backgroundColor={prefixSuffixBackgroundColor}\n alignItems=\"center\"\n borderWidth={borderWidth}\n borderRightWidth={0}\n borderTopLeftRadius={theme.styles.borderRadius}\n borderBottomLeftRadius={theme.styles.borderRadius}\n borderColor={theme.colors.border}\n paddingHorizontal={paddingHorizontal}\n >\n <Text fontWeight={700}>{prefix}</Text>\n </View>\n )}\n\n <Animate.View\n flex={1}\n backgroundColor={theme.colors.backgroundContent}\n borderTopLeftRadius={prefix ? 0 : theme.styles.borderRadius}\n borderBottomLeftRadius={prefix ? 0 : theme.styles.borderRadius}\n borderTopRightRadius={suffix ? 0 : theme.styles.borderRadius}\n borderBottomRightRadius={suffix ? 0 : theme.styles.borderRadius}\n borderWidth={borderWidth}\n initialBorderColor={theme.colors.border}\n animateBorderColor={isFocused ? theme.colors.primary : theme.colors.border}\n overflow=\"hidden\"\n >\n <TextInput\n style={textInputStyle}\n value={internalValue}\n defaultValue={defaultValue}\n autoCapitalize={autoCapitalize}\n autoComplete={autoComplete}\n autoCorrect={autoCorrect}\n autoFocus={autoFocus}\n placeholder={placeholder}\n placeholderTextColor={theme.colors.textSecondary + \"80\"}\n readOnly={!editable}\n keyboardAppearance={keyboardAppearance}\n keyboardType={keyboardType}\n cursorColor={theme.colors.primary}\n selectionColor={theme.colors.primary}\n secureTextEntry={secureTextEntry}\n onFocus={onFocusElement}\n onBlur={onBlurElement}\n onChangeText={onChangeText}\n />\n </Animate.View>\n\n {suffix && (\n <View\n isRow\n height=\"100%\"\n backgroundColor={prefixSuffixBackgroundColor}\n alignItems=\"center\"\n borderWidth={borderWidth}\n borderLeftWidth={0}\n borderTopRightRadius={theme.styles.borderRadius}\n borderBottomRightRadius={theme.styles.borderRadius}\n borderColor={theme.colors.border}\n paddingHorizontal={paddingHorizontal}\n >\n <Text fontWeight={700}>{suffix}</Text>\n </View>\n )}\n </View>\n );\n },\n) as any;\n\nInputFieldComponent.email = forwardRef(function Email(props, ref) {\n return (\n <InputFieldComponent\n placeholder=\"your@email.here\"\n autoComplete=\"email\"\n keyboardType=\"email-address\"\n autoCapitalize=\"none\"\n autoCorrect={false}\n {...props}\n ref={ref}\n />\n );\n}) as InputFieldComponentType[`email`];\n\nInputFieldComponent.password = forwardRef(function Password(props, ref) {\n return (\n <InputFieldComponent\n secureTextEntry\n placeholder=\"******\"\n autoCapitalize=\"none\"\n autoComplete=\"password\"\n autoCorrect={false}\n {...props}\n ref={ref}\n />\n );\n}) as InputFieldComponentType[`password`];\n\nconst InputField = memo(InputFieldComponent) as any as typeof InputFieldComponent & {\n email: typeof InputFieldComponent.email;\n password: typeof InputFieldComponent.password;\n};\n\nInputField.email = InputFieldComponent.email;\nInputField.password = InputFieldComponent.password;\n\nexport default InputField;\n","import { BetterComponentsPluginConstructor } from \"../types/plugin\";\n\nexport type AsyncStoragePluginOptions = {};\n\nexport const defaultAsyncStoragePluginOptions: Required<AsyncStoragePluginOptions> = {};\n\nexport const asyncStoragePlugin: BetterComponentsPluginConstructor<AsyncStoragePluginOptions> = (options) => ({\n name: \"asyncStorage\",\n initialize: () => {\n console.log(\"asyncStorage plugin initialized\");\n },\n getConfig: () => ({\n ...defaultAsyncStoragePluginOptions,\n ...options,\n }),\n});\n"],"mappings":"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,SAAS,mBAAAC,kBAAiB,gBAAgB;;;ACHnC,IAAM,WAAwB,oBAAI,IAAI;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AA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","names":["useTheme","useLoader","lightenColor","darkenColor","useBooleanState","useEffect","useMemo","useBooleanState","theme","useBooleanState","useEffect","useMemo","memo","useMemo","useTheme","Fragment","jsx","pressStrength","theme","View","memo","useMemo","useTheme","jsx","theme","Text","memo","Platform","useTheme","memo","useMemo","jsx","memo","View","animateProps","useMemo","Text","memo","useTheme","jsx","theme","useTheme","Box","Loader","memo","jsx","jsxs","theme","useTheme","Platform","Button","memo","memo","useMemo","Platform","useBooleanState","useTheme","jsx","jsxs","theme","useTheme","useBooleanState","useMemo","Platform","memo","memo","useEffect","useMemo","useBetterCoreContext","useTheme","jsx","assets","useBetterCoreContext","useMemo","useEffect","theme","useTheme","Image","memo","memo","useCallback","useEffect","useMemo","useState","useBetterCoreContext","useBooleanState","useTheme","jsx","jsxs","theme","useTheme","useBetterCoreContext","useState","useBooleanState","useCallback","useMemo","useEffect","memo"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/components/BetterComponentsProvider.tsx","../src/constants/app.ts","../src/constants/theme.ts","../src/constants/icons.ts","../src/constants/assets.ts","../src/utils/variableFunctions.ts","../src/utils/hooks.ts","../src/constants/css.ts","../src/utils/asyncStorage.ts","../src/components/View.tsx","../src/components/Text.tsx","../src/components/Button.tsx","../src/components/Animate.tsx","../src/components/Loader.tsx","../src/components/ScreenHolder.tsx","../src/components/Image.tsx","../src/components/InputField.tsx","../src/components/StatusBar.tsx","../src/plugins/asyncStorage.ts"],"sourcesContent":["export {\n useTheme,\n useLoader,\n useLoaderControls,\n countries,\n type OmitProps,\n type ExcludeOptions,\n type PickValue,\n type PartialRecord,\n type DeepPartialRecord,\n type PickAllRequired,\n type AnyOtherString,\n type AssetName,\n type AssetsConfig,\n type Country,\n type IconName,\n type IconsConfig,\n type LoaderName,\n type LoaderConfig,\n type Color,\n type ColorName,\n type ColorTheme,\n type Colors,\n type Styles,\n type Theme,\n type ThemeConfig,\n lightenColor,\n darkenColor,\n saturateColor,\n desaturateColor,\n generateRandomString,\n formatPhoneNumber,\n eventPreventDefault,\n eventStopPropagation,\n eventPreventStop,\n getPluralWord,\n useBooleanState,\n useDebounceState,\n loaderControls,\n colorThemeControls,\n} from \"react-better-core\";\n\nimport BetterComponentsProvider, {\n useBetterComponentsContext,\n type BetterComponentsProviderConfig,\n} from \"./components/BetterComponentsProvider\";\n\nimport { type AppConfig, type BetterComponentsConfig } from \"./types/config\";\nimport { type ComponentMarginProps, type ComponentPaddingProps } from \"./types/components\";\nimport { type PluginName, type BetterComponentsPlugin } from \"./types/plugin\";\n\nimport { pressStrength } from \"./utils/variableFunctions\";\n\nimport { useDevice, useKeyboard } from \"./utils/hooks\";\nimport { generateAsyncStorage } from \"./utils/asyncStorage\";\n\nimport View, { type ViewProps } from \"./components/View\";\nimport Text, { type TextProps } from \"./components/Text\";\nimport Button, { type ButtonProps } from \"./components/Button\";\nimport Loader, { type LoaderProps, type LoaderSize } from \"./components/Loader\";\nimport Animate, { type AnimateViewProps, type AnimateTextProps } from \"./components/Animate\";\nimport ScreenHolder, { type ScreenHolderProps, type FooterProps } from \"./components/ScreenHolder\";\nimport Image, { type ImageProps } from \"./components/Image\";\nimport InputField, { type InputFieldProps } from \"./components/InputField\";\nimport StatusBar, { type StatusBarProps } from \"./components/StatusBar\";\n\nexport * from \"./plugins\";\n\nexport {\n BetterComponentsProvider,\n useBetterComponentsContext as useBetterComponentsContext,\n BetterComponentsProviderConfig,\n\n // Constants\n\n // Types\n AppConfig,\n BetterComponentsConfig as BetterComponentsConfig,\n ComponentMarginProps,\n ComponentPaddingProps,\n PluginName,\n BetterComponentsPlugin,\n\n // Hooks\n useDevice,\n useKeyboard,\n\n // Functions\n\n // Variable Functions\n pressStrength,\n\n // AsyncStorage\n generateAsyncStorage,\n\n // Components\n View,\n ViewProps,\n Text,\n TextProps,\n Button,\n ButtonProps,\n Loader,\n LoaderProps,\n LoaderSize,\n Animate,\n AnimateViewProps,\n AnimateTextProps,\n ScreenHolder,\n ScreenHolderProps,\n FooterProps,\n Image,\n ImageProps,\n InputField,\n InputFieldProps,\n StatusBar,\n StatusBarProps,\n};\n","import { createContext, memo, useContext, useEffect, useMemo } from \"react\";\nimport {\n useBooleanState,\n DeepPartialRecord,\n BetterCoreProvider,\n BetterCoreProviderConfig,\n BetterCoreConfig,\n useBetterCoreContext,\n} from \"react-better-core\";\n\nimport { appConfig } from \"../constants/app\";\nimport { theme } from \"../constants/theme\";\nimport { icons } from \"../constants/icons\";\nimport { assets } from \"../constants/assets\";\n\nimport { BetterComponentsConfig } from \"../types/config\";\nimport { BetterComponentsPlugin, PluginName } from \"../types/plugin\";\n\nexport type BetterComponentsInternalConfig = BetterComponentsConfig & {\n plugins: BetterComponentsPlugin[];\n componentsState: {};\n};\n\nconst betterComponentsContext = createContext<BetterComponentsInternalConfig | undefined>(undefined);\nexport let externalBetterCoreContextValue: BetterCoreConfig | undefined;\nexport let externalBetterComponentsContextValue: BetterComponentsInternalConfig | undefined;\n\nexport const useBetterComponentsContext = (): BetterComponentsConfig & BetterCoreConfig => {\n const coreContext = useBetterCoreContext();\n const context = useContext(betterComponentsContext);\n\n if (context === undefined)\n throw new Error(\n \"`useBetterComponentsContext()` must be used within a `<BetterComponentsProvider>`. Make sure to add one at the root of your component tree.\",\n );\n\n const { plugins, componentsState, ...rest } = context;\n\n return {\n ...coreContext,\n ...rest,\n };\n};\n\nexport const useBetterComponentsContextInternal = (): BetterComponentsInternalConfig => {\n const context = useContext(betterComponentsContext);\n\n if (context === undefined)\n throw new Error(\n \"`useBetterComponentsContextInternal()` must be used within a `<BetterComponentsProvider>`. Make sure to add one at the root of your component tree.\",\n );\n\n return context;\n};\n\nexport const usePlugin = <T extends object>(\n pluginName: PluginName,\n): BetterComponentsPlugin<T> | undefined => {\n const context = useContext(betterComponentsContext);\n\n if (context === undefined) {\n throw new Error(\n \"`usePlugin()` must be used within a `<BetterComponentsProvider>`. Make sure to add one at the root of your component tree.\",\n );\n }\n\n return useMemo(\n () => context.plugins.find((plugin: BetterComponentsPlugin) => plugin.name === pluginName),\n [context.plugins, pluginName],\n ) as any;\n};\n\ntype BetterComponentsProviderInternalContentProps = {\n children?: React.ReactNode;\n};\n\nfunction BetterComponentsProviderInternalContent({ children }: BetterComponentsProviderInternalContentProps) {\n return <>{children}</>;\n}\n\ntype BetterComponentsProviderInternalConfig = DeepPartialRecord<BetterComponentsConfig>;\n\ntype BetterProviderCommonProps = {\n plugins?: BetterComponentsPlugin[];\n children?: React.ReactNode;\n};\n\ntype BetterComponentsProviderInternalProps = BetterProviderCommonProps & {\n config?: BetterComponentsProviderInternalConfig;\n};\n\nfunction BetterComponentsProviderInternal({\n config,\n plugins,\n children,\n}: BetterComponentsProviderInternalProps) {\n const betterCoreContext = useBetterCoreContext();\n\n const [sideMenuIsCollapsed, setSideMenuIsCollapsed] = useBooleanState();\n const [sideMenuIsOpenMobile, setSideMenuIsOpenMobile] = useBooleanState();\n\n const readyConfig = useMemo<BetterComponentsInternalConfig>(\n () => ({\n app: {\n ...appConfig,\n ...config?.app,\n },\n sideMenuIsCollapsed,\n setSideMenuIsCollapsed,\n sideMenuIsOpenMobile,\n setSideMenuIsOpenMobile,\n plugins: plugins ?? [],\n componentsState: {},\n }),\n [config, sideMenuIsCollapsed, sideMenuIsOpenMobile, plugins],\n );\n\n useEffect(() => {\n if (!plugins) return;\n\n plugins.forEach((plugin) => {\n plugin.initialize?.();\n });\n }, []);\n\n externalBetterCoreContextValue = betterCoreContext;\n externalBetterComponentsContextValue = readyConfig;\n\n return (\n <betterComponentsContext.Provider value={readyConfig}>\n <BetterComponentsProviderInternalContent>{children}</BetterComponentsProviderInternalContent>\n </betterComponentsContext.Provider>\n );\n}\n\nexport type BetterComponentsProviderConfig = BetterCoreProviderConfig &\n BetterComponentsProviderInternalConfig;\n\ntype BetterComponentsProviderProps = BetterProviderCommonProps & {\n config?: BetterComponentsProviderConfig;\n};\n\nfunction BetterComponentsProvider({ config, ...props }: BetterComponentsProviderProps) {\n const coreConfig = useMemo<BetterCoreProviderConfig>(\n () => ({\n theme: {\n ...theme,\n ...config?.theme,\n },\n // colorTheme: config?.colorTheme ?? (localStorage.getItem(\"theme\") === \"dark\" ? \"dark\" : \"light\"),\n colorTheme: config?.colorTheme ?? \"light\",\n icons: {\n ...icons,\n ...config?.icons,\n },\n assets: {\n ...assets,\n ...config?.assets,\n },\n loaders: config?.loaders,\n }),\n [config],\n );\n\n const componentsConfig = useMemo<BetterComponentsProviderInternalConfig>(\n () => ({\n app: config?.app,\n }),\n [config],\n );\n\n return (\n <BetterCoreProvider config={coreConfig}>\n <BetterComponentsProviderInternal config={componentsConfig} {...props} />\n </BetterCoreProvider>\n );\n}\n\nexport default memo(BetterComponentsProvider);\n","import { AppConfig } from \"../types/config\";\n\nexport const appConfig: AppConfig = {};\n","import { DeepPartialRecord, ThemeConfig } from \"react-better-core\";\n\nexport const theme: DeepPartialRecord<ThemeConfig> = {};\n","import { IconsConfig } from \"react-better-core\";\n\nexport const icons: Partial<IconsConfig> = {};\n","import { AssetsConfig } from \"react-better-core\";\n\nexport const assets: Partial<AssetsConfig> = {};\n","import { BetterCoreConfig } from \"react-better-core\";\n\nimport {\n BetterComponentsInternalConfig,\n externalBetterCoreContextValue,\n} from \"../components/BetterComponentsProvider\";\n\nexport const checkBetterCoreContextValue = (\n value: BetterCoreConfig | undefined,\n functionsName: string,\n): value is BetterCoreConfig => {\n if (value === undefined) {\n throw new Error(\n `\\`${functionsName}()\\` must be used within a \\`<BetterCoreProvider>\\`. Make sure to add one at the root of your component tree.`,\n );\n }\n\n return value !== undefined;\n};\nexport const checkBetterComponentsContextValue = (\n value: BetterComponentsInternalConfig | undefined,\n functionsName: string,\n): value is BetterComponentsInternalConfig => {\n if (value === undefined) {\n throw new Error(\n `\\`${functionsName}()\\` must be used within a \\`<BetterComponentsProvider>\\`. Make sure to add one at the root of your component tree.`,\n );\n }\n\n return value !== undefined;\n};\n\nexport const pressStrength = (): Record<\"z05\" | \"z1\" | \"z2\" | \"z3\", number> => {\n if (!checkBetterCoreContextValue(externalBetterCoreContextValue, \"pressStrength\")) return undefined as any;\n\n return {\n z05: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.85 : 0.95,\n z1: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.6 : 0.8,\n z2: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.5 : 0.7,\n z3: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.4 : 0.6,\n };\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { Dimensions, Keyboard, KeyboardEvent } from \"react-native\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { useBooleanState, useTheme } from \"react-better-core\";\n\nimport { animateProps, animateTransitionProps, cssProps } from \"../constants/css\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nexport function useDevice() {\n const theme = useTheme();\n const safeAreaInsets = useSafeAreaInsets();\n\n const screenDimensions = Dimensions.get(\"screen\");\n const windowDimensions = Dimensions.get(\"window\");\n const isSmallDevice = windowDimensions.height <= 700;\n\n return {\n safeArea: {\n ...safeAreaInsets,\n /** @description The safe area insets after calculations. Recommended to use this instead of the raw insets. */\n afterCalculations: {\n top: safeAreaInsets.top < 25 ? 32 : safeAreaInsets.top < 40 ? 40 : safeAreaInsets.top,\n bottom:\n (safeAreaInsets.bottom === 0 ? theme.styles.space : safeAreaInsets.bottom) +\n (isSmallDevice ? 0 : theme.styles.space * 2),\n left: safeAreaInsets.left,\n right: safeAreaInsets.right,\n },\n },\n /** @description The dimensions of the device screen. */\n screenDimensions,\n /** @description The dimensions of the app window. */\n windowDimensions,\n /** @description Whether the device is small. */\n isSmallDevice,\n };\n}\n\nexport function useKeyboard() {\n const [keyboardOpened, setKeyboardOpened] = useBooleanState();\n const [keyboardWillOpen, setKeyboardWillOpen] = useBooleanState();\n\n const [keyboardHeight, setKeyboardHeight] = useState<number>(0);\n\n useEffect(() => {\n const keyboardDidShow = (event: KeyboardEvent) => {\n setKeyboardOpened.setTrue();\n setKeyboardHeight(event.endCoordinates.height);\n };\n const keyboardDidHide = () => {\n setKeyboardOpened.setFalse();\n setKeyboardHeight(0);\n };\n\n const willShowSubscription = Keyboard.addListener(\"keyboardWillShow\", setKeyboardWillOpen.setTrue);\n const willHideSubscription = Keyboard.addListener(\"keyboardWillHide\", setKeyboardWillOpen.setFalse);\n const didShowSubscription = Keyboard.addListener(\"keyboardDidShow\", keyboardDidShow);\n const didHideSubscription = Keyboard.addListener(\"keyboardDidHide\", keyboardDidHide);\n\n return () => {\n willShowSubscription.remove();\n willHideSubscription.remove();\n didShowSubscription.remove();\n didHideSubscription.remove();\n };\n }, []);\n\n return {\n isOpened: keyboardOpened,\n willOpen: keyboardWillOpen,\n height: keyboardHeight,\n };\n}\n\nexport function useComponentPropsGrouper<Props extends object = {}>(\n props: ComponentStyle,\n prefix: string,\n): {\n style: ComponentStyle;\n withPrefixStyle: ComponentStyle;\n restProps: Props;\n} {\n return useMemo(() => {\n const style: ComponentStyle = {};\n const withPrefixStyle: ComponentStyle = {};\n const restProps = {} as Props;\n\n for (const key in props) {\n const keyName = key as keyof ComponentStyle;\n\n if (cssProps.has(keyName.toLowerCase())) {\n (style[keyName] as any) = props[keyName];\n } else if (\n keyName.startsWith(prefix) &&\n (cssProps.has(keyName.slice(prefix.length).toLowerCase()) ||\n animateProps.has(keyName.slice(prefix.length).toLowerCase()) ||\n animateTransitionProps.has(keyName.slice(prefix.length).toLowerCase()))\n ) {\n const realKey = `${keyName.slice(prefix.length, prefix.length + 1).toLowerCase()}${keyName.slice(\n prefix.length + 1,\n )}`;\n\n (withPrefixStyle[realKey as keyof ComponentStyle] as any) = props[keyName];\n } else {\n (restProps[keyName as keyof Props] as any) = props[keyName];\n }\n }\n\n return {\n style,\n withPrefixStyle,\n restProps,\n };\n }, [props, prefix]);\n}\n","export const cssProps: Set<string> = new Set([\n \"aligncontent\",\n \"alignitems\",\n \"alignself\",\n \"aspectratio\",\n \"borderbottomwidth\",\n \"borderendwidth\",\n \"borderleftwidth\",\n \"borderrightwidth\",\n \"borderstartwidth\",\n \"bordertopwidth\",\n \"borderwidth\",\n \"bottom\",\n \"boxsizing\",\n \"display\",\n \"end\",\n \"flex\",\n \"flexbasis\",\n \"flexdirection\",\n \"rowgap\",\n \"gap\",\n \"columngap\",\n \"flexgrow\",\n \"flexshrink\",\n \"flexwrap\",\n \"height\",\n \"justifycontent\",\n \"left\",\n \"margin\",\n \"marginbottom\",\n \"marginend\",\n \"marginhorizontal\",\n \"marginleft\",\n \"marginright\",\n \"marginstart\",\n \"margintop\",\n \"marginvertical\",\n \"maxheight\",\n \"maxwidth\",\n \"minheight\",\n \"minwidth\",\n \"overflow\",\n \"padding\",\n \"paddingbottom\",\n \"paddingend\",\n \"paddinghorizontal\",\n \"paddingleft\",\n \"paddingright\",\n \"paddingstart\",\n \"paddingtop\",\n \"paddingvertical\",\n \"position\",\n \"right\",\n \"start\",\n \"top\",\n \"width\",\n \"zindex\",\n \"direction\",\n \"inset\",\n \"insetblock\",\n \"insetblockend\",\n \"insetblockstart\",\n \"insetinline\",\n \"insetinlineend\",\n \"insetinlinestart\",\n \"marginblock\",\n \"marginblockend\",\n \"marginblockstart\",\n \"margininline\",\n \"margininlineend\",\n \"margininlinestart\",\n \"paddingblock\",\n \"paddingblockend\",\n \"paddingblockstart\",\n \"paddinginline\",\n \"paddinginlineend\",\n \"paddinginlinestart\",\n \"shadowcolor\",\n \"shadowoffset\",\n \"shadowopacity\",\n \"shadowradius\",\n \"transform\",\n \"transformorigin\",\n \"transformmatrix\",\n \"rotation\",\n \"scalex\",\n \"scaley\",\n \"translatex\",\n \"translatey\",\n \"backfacevisibility\",\n \"backgroundcolor\",\n \"borderblockcolor\",\n \"borderblockendcolor\",\n \"borderblockstartcolor\",\n \"borderbottomcolor\",\n \"borderbottomendradius\",\n \"borderbottomleftradius\",\n \"borderbottomrightradius\",\n \"borderbottomstartradius\",\n \"bordercolor\",\n \"bordercurve\",\n \"borderendcolor\",\n \"borderendendradius\",\n \"borderendstartradius\",\n \"borderleftcolor\",\n \"borderradius\",\n \"borderrightcolor\",\n \"borderstartcolor\",\n \"borderstartendradius\",\n \"borderstartstartradius\",\n \"borderstyle\",\n \"bordertopcolor\",\n \"bordertopendradius\",\n \"bordertopleftradius\",\n \"bordertoprightradius\",\n \"bordertopstartradius\",\n \"outlinecolor\",\n \"outlineoffset\",\n \"outlinestyle\",\n \"outlinewidth\",\n \"opacity\",\n \"elevation\",\n \"pointerevents\",\n \"isolation\",\n \"cursor\",\n \"boxshadow\",\n \"filter\",\n \"mixblendmode\",\n \"fontvariant\",\n \"textdecorationcolor\",\n \"textdecorationstyle\",\n \"writingdirection\",\n \"textalignvertical\",\n \"verticalalign\",\n \"includefontpadding\",\n \"color\",\n \"fontfamily\",\n \"fontsize\",\n \"fontstyle\",\n \"fontweight\",\n \"letterspacing\",\n \"lineheight\",\n \"textalign\",\n \"textdecorationline\",\n \"textdecorationstyle\",\n \"textdecorationcolor\",\n \"textshadowcolor\",\n \"textshadowoffset\",\n \"textshadowradius\",\n \"texttransform\",\n \"userselect\",\n]);\n\nexport const animateProps: Set<string> = new Set([\n \"x\",\n \"y\",\n \"scale\",\n \"scaleX\",\n \"scaleY\",\n \"skewX\",\n \"skewY\",\n \"perspective\",\n \"rotate\",\n \"rotateX\",\n \"rotateY\",\n \"rotateZ\",\n \"matrix\",\n]);\n\nexport const animateTransitionProps: Set<string> = new Set([\n \"type\",\n \"ease\",\n \"easing\",\n \"duration\",\n \"delay\",\n \"type\",\n \"friction\",\n \"tension\",\n \"speed\",\n \"bounciness\",\n \"stiffness\",\n \"damping\",\n \"mass\",\n \"overshootClamping\",\n \"restDisplacementThreshold\",\n \"restSpeedThreshold\",\n \"velocity\",\n \"loop\",\n]);\n","import NativeAsyncStorage from \"@react-native-async-storage/async-storage\";\n\nexport function generateAsyncStorage<AsyncStorage extends object>(): {\n setItem: <StorageName extends keyof AsyncStorage>(name: StorageName, value: AsyncStorage[StorageName]) => void;\n getItem: <StorageName extends keyof AsyncStorage>(\n name: StorageName,\n ) => Promise<AsyncStorage[StorageName] | undefined>;\n removeItem: (name: keyof AsyncStorage) => void;\n removeAllItems: () => void;\n} {\n return {\n setItem: async (name, value) => {\n if (value) await NativeAsyncStorage.setItem(name.toString(), JSON.stringify(value));\n else await NativeAsyncStorage.removeItem(name.toString());\n },\n getItem: async (name) => {\n const item = await NativeAsyncStorage.getItem(name.toString());\n\n if (item === null) return undefined;\n\n try {\n return JSON.parse(item);\n } catch (error) {\n return undefined;\n }\n },\n removeItem: async (name) => {\n await NativeAsyncStorage.removeItem(name.toString());\n },\n removeAllItems: () => {\n NativeAsyncStorage.clear();\n },\n };\n}\n","import { memo, useMemo } from \"react\";\nimport {\n GestureResponderEvent,\n View as NativeView,\n ViewProps as NativeViewProps,\n ViewStyle as NativeViewStyle,\n Platform,\n TouchableHighlight,\n TouchableNativeFeedback,\n TouchableOpacity,\n} from \"react-native\";\nimport { OmitProps, useTheme } from \"react-better-core\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nconst touchableHighlightStyleMoveToContent: (keyof ComponentStyle)[] = [\n \"backgroundColor\",\n \"padding\",\n \"paddingTop\",\n \"paddingBottom\",\n \"paddingLeft\",\n \"paddingRight\",\n \"paddingHorizontal\",\n \"paddingVertical\",\n \"borderWidth\",\n \"borderTopWidth\",\n \"borderBottomWidth\",\n \"borderLeftWidth\",\n \"borderRightWidth\",\n \"borderColor\",\n \"borderTopColor\",\n \"borderBottomColor\",\n \"borderLeftColor\",\n \"borderRightColor\",\n];\n\nconst touchableNativeFeedbackStyleMoveToHolder: (keyof ComponentStyle)[] = [\n \"width\",\n \"height\",\n \"margin\",\n \"marginTop\",\n \"marginBottom\",\n \"marginLeft\",\n \"marginRight\",\n \"marginHorizontal\",\n \"marginVertical\",\n];\n\nfunction alphaToHex(alpha: number): string {\n const clamped = Math.min(1, Math.max(0, alpha));\n const value = Math.round(clamped * 255);\n\n return value.toString(16).padStart(2, \"0\");\n}\n\nexport type ViewProps<Value = unknown> = {\n /** @default false */\n isRow?: boolean;\n value?: Value;\n /** @default false */\n disabled?: boolean;\n /** @default \"highlight\" */\n pressType?: \"opacity\" | \"highlight\";\n /** @default 0.8 */\n pressStrength?: number;\n onPress?: (event: GestureResponderEvent) => void;\n onPressIn?: (event: GestureResponderEvent) => void;\n onPressOut?: (event: GestureResponderEvent) => void;\n onLongPress?: (event: GestureResponderEvent) => void;\n onPressWithValue?: (value: Value) => void;\n} & OmitProps<NativeViewProps, \"style\" | \"onBlur\" | \"onFocus\"> &\n ComponentStyle;\n\ntype ViewComponentType = {\n <Value>(props: ViewProps<Value>): React.ReactElement;\n box: <Value>(\n props: ViewProps<Value> & {\n /** @default false */\n withShadow?: boolean;\n },\n ) => React.ReactElement;\n};\n\nconst ViewComponent: ViewComponentType = function View<Value>({\n isRow,\n value,\n disabled,\n pressType = \"highlight\",\n pressStrength = 0.8,\n onPress,\n onPressIn,\n onPressOut,\n onLongPress,\n onPressWithValue,\n children,\n ...props\n}: ViewProps<Value>) {\n const theme = useTheme();\n\n const style = useMemo<NativeViewStyle>(\n () => ({\n flexDirection: isRow ? \"row\" : \"column\",\n ...props,\n ...(props.shadowOffsetWidth !== undefined || props.shadowOffsetHeight !== undefined\n ? {\n shadowOffset: {\n width: props.shadowOffsetWidth ?? 0,\n height: props.shadowOffsetHeight ?? 0,\n },\n }\n : {}),\n }),\n [isRow, props],\n );\n const touchableHighlightStyle = useMemo<NativeViewStyle>(\n () => ({\n ...style,\n ...touchableHighlightStyleMoveToContent.reduce<NativeViewStyle>((previousValue, currentValue) => {\n if (currentValue === \"shadowOffsetWidth\" || currentValue === \"shadowOffsetHeight\")\n previousValue.shadowOffset = undefined;\n else previousValue[currentValue] = undefined;\n\n return previousValue;\n }, {}),\n }),\n [style],\n );\n const touchableHighlightContentProps = useMemo<ViewProps>(\n () =>\n touchableHighlightStyleMoveToContent.reduce<ViewProps>((previousValue, currentValue) => {\n (previousValue[currentValue] as any) = props[currentValue];\n\n return previousValue;\n }, {}),\n [props],\n );\n const touchableNativeFeedbackHolderStyle = useMemo<NativeViewStyle>(\n () =>\n touchableNativeFeedbackStyleMoveToHolder.reduce<ViewProps>((previousValue, currentValue) => {\n (previousValue[currentValue] as any) = props[currentValue];\n\n return previousValue;\n }, {}),\n [props],\n );\n const touchableNativeFeedbackContentStyle = useMemo<ViewProps>(\n () => ({\n ...style,\n ...touchableNativeFeedbackStyleMoveToHolder.reduce<NativeViewStyle>(\n (previousValue, currentValue) => {\n if (currentValue === \"shadowOffsetWidth\" || currentValue === \"shadowOffsetHeight\")\n previousValue.shadowOffset = undefined;\n else previousValue[currentValue] = undefined;\n\n return previousValue;\n },\n {},\n ),\n }),\n [style],\n );\n\n const pressEvents = useMemo(\n () =>\n !disabled\n ? {\n onPress: (event: GestureResponderEvent) => {\n onPress?.(event);\n\n if (value !== undefined) onPressWithValue?.(value);\n },\n onPressIn,\n onPressOut,\n onLongPress,\n }\n : {},\n [disabled, onPress, onPressIn, onPressOut, onLongPress, onPressWithValue, value],\n );\n\n const androidBoxShadow =\n Platform.OS === \"android\"\n ? props.shadowOffsetWidth !== undefined || props.shadowOffsetHeight !== undefined\n ? `${props.shadowOffsetWidth ?? 0}px ${props.shadowOffsetHeight ?? 0}px ${props.shadowRadius}px ${\n props.shadowColor?.toString() ?? \"#000000\"\n }`\n : undefined\n : undefined;\n\n const isPressable = onPress || onPressIn || onPressOut || onLongPress || onPressWithValue;\n\n return isPressable ? (\n pressType === \"opacity\" ? (\n <TouchableOpacity\n style={style}\n activeOpacity={pressStrength}\n boxShadow={androidBoxShadow}\n {...pressEvents}\n {...props}\n >\n {children}\n </TouchableOpacity>\n ) : pressType === \"highlight\" ? (\n Platform.OS === \"ios\" ? (\n <TouchableHighlight\n activeOpacity={pressStrength}\n underlayColor={theme.colors.textPrimary}\n style={touchableHighlightStyle}\n {...pressEvents}\n {...props}\n >\n <ViewComponent\n width=\"100%\"\n borderRadius={props.borderRadius}\n borderTopLeftRadius={props.borderTopLeftRadius}\n borderTopRightRadius={props.borderTopRightRadius}\n borderBottomLeftRadius={props.borderBottomLeftRadius}\n borderBottomRightRadius={props.borderBottomRightRadius}\n {...touchableHighlightContentProps}\n >\n {children}\n </ViewComponent>\n </TouchableHighlight>\n ) : Platform.OS === \"android\" ? (\n <ViewComponent\n {...touchableNativeFeedbackHolderStyle}\n borderRadius={props.borderRadius}\n borderTopLeftRadius={props.borderTopLeftRadius}\n borderTopRightRadius={props.borderTopRightRadius}\n borderBottomLeftRadius={props.borderBottomLeftRadius}\n borderBottomRightRadius={props.borderBottomRightRadius}\n boxShadow={androidBoxShadow}\n overflow=\"hidden\"\n pointerEvents=\"box-none\"\n >\n <TouchableNativeFeedback\n {...pressEvents}\n {...props}\n background={TouchableNativeFeedback.Ripple(\n `${theme.colors.textPrimary}${alphaToHex(1 - pressStrength)}`,\n false,\n )}\n useForeground\n touchSoundDisabled\n >\n <ViewComponent flex={1} {...touchableNativeFeedbackContentStyle}>\n {children}\n </ViewComponent>\n </TouchableNativeFeedback>\n </ViewComponent>\n ) : (\n <></>\n )\n ) : (\n <></>\n )\n ) : (\n <NativeView boxShadow={androidBoxShadow} style={style} {...props}>\n {children}\n </NativeView>\n );\n};\n\nViewComponent.box = function Box({ withShadow, ...props }) {\n const theme = useTheme();\n\n const shadowProps = useMemo<ViewProps>(\n () =>\n withShadow\n ? {\n shadowOpacity: 0.2,\n shadowOffsetHeight: 10,\n shadowRadius: 10,\n shadowColor: Platform.OS === \"android\" ? \"#00000020\" : undefined,\n }\n : {},\n [],\n );\n\n return (\n <ViewComponent\n width=\"100%\"\n backgroundColor={theme.colors.backgroundContent}\n borderWidth={1}\n borderColor={theme.colors.border}\n borderRadius={theme.styles.borderRadius}\n paddingHorizontal={theme.styles.space}\n paddingVertical={theme.styles.gap}\n {...(shadowProps as any)}\n {...props}\n />\n );\n} as ViewComponentType[\"box\"];\n\nconst View = memo(ViewComponent) as any as typeof ViewComponent & {\n box: typeof ViewComponent.box;\n};\n\nView.box = ViewComponent.box;\n\nexport default View;\n","import { memo, useMemo } from \"react\";\nimport { Text as NativeText, TextProps as NativeTextProps, TextStyle as NativeTextStyle } from \"react-native\";\nimport { OmitProps, useTheme } from \"react-better-core\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nexport type TextProps = {} & OmitProps<NativeTextProps, \"style\"> & ComponentStyle<NativeTextStyle>;\n\ntype TextComponentType = {\n (props: TextProps): React.ReactElement;\n title: (props: TextProps) => React.ReactElement;\n subtitle: (props: TextProps) => React.ReactElement;\n body: (props: TextProps) => React.ReactElement;\n caption: (props: TextProps) => React.ReactElement;\n unknown: (props: TextProps) => React.ReactElement;\n};\n\nconst TextComponent: TextComponentType = function Text({ selectionColor, children, ...props }) {\n const theme = useTheme();\n\n const style = useMemo<NativeTextStyle>(\n () => ({\n fontSize: 16,\n color: theme.colors.textPrimary,\n ...props,\n }),\n [theme, props],\n );\n\n return (\n <NativeText selectionColor={selectionColor ?? theme.colors.primary} style={style} {...props}>\n {children}\n </NativeText>\n );\n};\n\nTextComponent.title = function Title(props) {\n return <TextComponent fontSize={32} fontWeight={700} {...props} />;\n} as TextComponentType[`title`];\n\nTextComponent.subtitle = function Subtitle(props) {\n return <TextComponent fontSize={24} fontWeight={700} {...props} />;\n} as TextComponentType[`subtitle`];\n\nTextComponent.body = function Body(props) {\n const theme = useTheme();\n\n return <TextComponent color={theme.colors.textSecondary} {...props} />;\n} as TextComponentType[`body`];\n\nTextComponent.caption = function Caption(props) {\n const theme = useTheme();\n\n return <TextComponent fontSize={14} color={theme.colors.textSecondary} {...props} />;\n} as TextComponentType[`caption`];\n\nTextComponent.unknown = function Unknown(props) {\n const theme = useTheme();\n\n return (\n <TextComponent fontStyle=\"italic\" textAlign=\"center\" color={theme.colors.textSecondary} {...props} />\n );\n} as TextComponentType[`unknown`];\n\nconst Text = memo(TextComponent) as any as typeof TextComponent & {\n title: typeof TextComponent.title;\n subtitle: typeof TextComponent.subtitle;\n body: typeof TextComponent.body;\n caption: typeof TextComponent.caption;\n unknown: typeof TextComponent.unknown;\n};\n\nText.title = TextComponent.title;\nText.subtitle = TextComponent.subtitle;\nText.body = TextComponent.body;\nText.caption = TextComponent.caption;\nText.unknown = TextComponent.unknown;\n\nexport default Text;\n","import { memo } from \"react\";\nimport { ColorValue, Platform } from \"react-native\";\nimport { AnyOtherString, AssetName, IconName, LoaderName, useLoader, useTheme } from \"react-better-core\";\n\nimport { pressStrength } from \"../utils/variableFunctions\";\n\nimport View, { ViewProps } from \"./View\";\nimport Text, { TextProps } from \"./Text\";\nimport Animate from \"./Animate\";\nimport Loader from \"./Loader\";\n\nexport type ButtonProps<Value> = {\n text?: string;\n /** @default 16 */\n textFontSize?: TextProps[\"fontSize\"];\n /** @default 700 */\n textFontWeight?: TextProps[\"fontWeight\"];\n textDecorationLine?: TextProps[\"textDecorationLine\"];\n /** @default \"base\" */\n textColor?: ColorValue;\n\n icon?: IconName | AnyOtherString;\n /** @default \"left\" */\n iconPosition?: \"left\" | \"right\";\n /** @default Same as text color */\n iconColor?: string;\n /** @default 16 */\n iconSize?: number;\n\n image?: AssetName | AnyOtherString;\n /** @default \"left\" */\n imagePosition?: \"left\" | \"right\";\n /** @default 16 */\n imageWidth?: number;\n /** @default undefined */\n imageHeight?: number;\n\n loaderName?: LoaderName | AnyOtherString;\n /** @default false */\n isLoading?: boolean;\n\n isSmall?: true | \"left\" | \"center\" | \"right\";\n} & ViewProps<Value>;\n\ntype InternalButtonProps<Value> = ButtonProps<Value> & {\n animateOpacity?: number;\n};\n\nexport type ButtonRef = {};\n\ntype ButtonComponentType = {\n <Value>(props: ButtonProps<Value>): React.ReactElement;\n secondary: <Value>(props: ButtonProps<Value>) => React.ReactElement;\n destructive: <Value>(props: ButtonProps<Value>) => React.ReactElement;\n text: <Value>(props: ButtonProps<Value>) => React.ReactElement;\n};\n\nconst ButtonComponent = function Button<Value>({\n text,\n textFontSize = 16,\n textFontWeight = 700,\n textDecorationLine,\n textColor,\n\n icon,\n iconPosition = \"left\",\n iconColor,\n iconSize,\n\n image,\n imagePosition = \"left\",\n imageWidth,\n imageHeight,\n\n loaderName,\n isLoading,\n\n isSmall,\n\n animateOpacity,\n\n flex,\n alignSelf,\n disabled,\n ...props\n}: InternalButtonProps<Value>) {\n const theme = useTheme();\n const isLoadingLoader = useLoader(loaderName);\n\n const isLoadingElement = isLoading || isLoadingLoader;\n const isDisabled = disabled || isLoadingElement;\n\n const lineHeight = 20;\n const color = textColor ?? theme.colors.base;\n const paddingVertical = props.paddingVertical\n ? parseFloat(props.paddingVertical.toString())\n : theme.styles.space;\n const paddingHorizontal = props.paddingHorizontal\n ? parseFloat(props.paddingHorizontal.toString())\n : theme.styles.space + theme.styles.gap;\n\n const buttonHeight = paddingVertical + lineHeight + paddingVertical;\n\n return (\n <Animate.View\n position=\"relative\"\n flex={flex}\n alignSelf={\n alignSelf ??\n (isSmall === \"left\"\n ? \"flex-start\"\n : isSmall === \"right\"\n ? \"flex-end\"\n : isSmall === \"center\"\n ? \"center\"\n : isSmall\n ? \"baseline\"\n : undefined)\n }\n initialOpacity={1}\n animateOpacity={animateOpacity ?? (disabled ? 0.6 : 1)}\n >\n <View\n position=\"relative\"\n width={!isSmall ? \"100%\" : undefined}\n height={Platform.OS === \"android\" ? buttonHeight : undefined}\n alignItems=\"center\"\n justifyContent=\"center\"\n backgroundColor={theme.colors.primary}\n borderRadius={theme.styles.borderRadius}\n paddingVertical={paddingVertical}\n paddingHorizontal={paddingHorizontal}\n disabled={isDisabled}\n {...props}\n >\n <Animate.View initialOpacity={1} animateOpacity={isLoadingElement ? 0 : 1}>\n {text && (\n <Text\n fontSize={textFontSize}\n fontWeight={textFontWeight}\n textDecorationLine={textDecorationLine}\n textDecorationColor={color}\n textAlign=\"center\"\n lineHeight={lineHeight}\n color={color}\n >\n {text}\n </Text>\n )}\n </Animate.View>\n\n <Animate.View\n position=\"absolute\"\n width=\"100%\"\n height={buttonHeight}\n left={paddingHorizontal}\n alignItems=\"center\"\n justifyContent=\"center\"\n initialOpacity={0}\n animateOpacity={isLoadingElement ? 1 : 0}\n >\n <Loader color={color} />\n </Animate.View>\n </View>\n </Animate.View>\n );\n};\n\nButtonComponent.secondary = function Secondary(props) {\n const theme = useTheme();\n\n return (\n <ButtonComponent\n backgroundColor={theme.colors.backgroundContent}\n borderWidth={1}\n borderColor={theme.colors.border}\n textColor={theme.colors.textPrimary}\n pressStrength={pressStrength().z05}\n animateOpacity={props.disabled ? 0.4 : 1}\n {...props}\n />\n );\n} as ButtonComponentType[`secondary`];\n\nButtonComponent.destructive = function Destructive(props) {\n const theme = useTheme();\n\n return <ButtonComponent backgroundColor={theme.colors.error} {...props} />;\n} as ButtonComponentType[`destructive`];\n\nButtonComponent.text = function ButtonText(props) {\n const theme = useTheme();\n\n return (\n <ButtonComponent\n width=\"auto\"\n textColor={theme.colors.textPrimary}\n textDecorationLine=\"underline\"\n backgroundColor=\"transparent\"\n paddingHorizontal={theme.styles.space}\n paddingVertical={theme.styles.gap}\n isSmall\n pressType=\"opacity\"\n {...props}\n />\n );\n} as ButtonComponentType[`text`];\n\nconst Button = memo(ButtonComponent) as any as ButtonComponentType & {\n secondary: typeof ButtonComponent.secondary;\n destructive: typeof ButtonComponent.destructive;\n text: typeof ButtonComponent.text;\n};\n\nButton.secondary = ButtonComponent.secondary;\nButton.destructive = ButtonComponent.destructive;\nButton.text = ButtonComponent.text;\n\nexport default Button;\n","import { memo, useMemo } from \"react\";\nimport { TextStyle, ViewStyle } from \"react-native\";\nimport { Motion, PropsTransforms, EaseFunction, MotionTransition } from \"@legendapp/motion\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nimport { useComponentPropsGrouper } from \"../utils/hooks\";\n\nconst defaultTransitionDuration = 0.15 * 1000;\n\ntype ComponentStyleProps<Style extends ViewStyle = ViewStyle> = Omit<\n ComponentStyle<Style>,\n \"transformOrigin\"\n>;\ntype AnimationStyleProps<Style extends ViewStyle = ViewStyle> = ComponentStyle<Style> & PropsTransforms;\n\ntype InitialComponentStyle<Style extends ViewStyle = ViewStyle> = {\n [CSSProperty in keyof AnimationStyleProps<Style> as `initial${Capitalize<\n CSSProperty & string\n >}`]: AnimationStyleProps<Style>[CSSProperty];\n};\ntype animateComponentStyle<Style extends ViewStyle = ViewStyle> = {\n [CSSProperty in keyof AnimationStyleProps<Style> as `animate${Capitalize<\n CSSProperty & string\n >}`]: AnimationStyleProps<Style>[CSSProperty];\n};\ntype whileTapComponentStyle<Style extends ViewStyle = ViewStyle> = {\n [CSSProperty in keyof AnimationStyleProps<Style> as `whileTap${Capitalize<\n CSSProperty & string\n >}`]: AnimationStyleProps<Style>[CSSProperty];\n};\n\ntype TransitionProps = {\n transitionLoop?: number;\n} & (\n | {\n transitionType?: \"tween\" | \"timing\" | undefined;\n transitionEase?: EaseFunction | ((value: number) => number) | undefined;\n transitionEasing?: EaseFunction | ((value: number) => number) | undefined;\n transitionDuration?: number | undefined;\n transitionDelay?: number | undefined;\n }\n | {\n transitionType: \"spring\";\n transitionFriction?: number;\n transitionTension?: number;\n transitionSpeed?: number;\n transitionBounciness?: number;\n transitionStiffness?: number;\n transitionDamping?: number;\n transitionMass?: number;\n transitionOvershootClamping?: boolean | undefined;\n transitionRestDisplacementThreshold?: number | undefined;\n transitionRestSpeedThreshold?: number | undefined;\n transitionVelocity?:\n | number\n | {\n x: number;\n y: number;\n }\n | undefined;\n }\n);\n\ntype AnimateCommonProps = {\n transformOriginX?: number;\n transformOriginY?: number;\n children?: React.ReactNode;\n} & TransitionProps;\n\nexport type AnimateViewProps = {} & AnimateCommonProps &\n ComponentStyleProps &\n InitialComponentStyle &\n animateComponentStyle &\n whileTapComponentStyle;\n\nexport type AnimateTextProps = {} & AnimateCommonProps &\n ComponentStyleProps<TextStyle> &\n InitialComponentStyle<TextStyle> &\n animateComponentStyle<TextStyle> &\n whileTapComponentStyle<TextStyle>;\n\nconst Animate = {\n View: memo(function View({ transformOriginX, transformOriginY, children, ...props }: AnimateViewProps) {\n const initialProps = useComponentPropsGrouper(props, \"initial\");\n const animateProps = useComponentPropsGrouper(props, \"animate\");\n const whileTapProps = useComponentPropsGrouper(props, \"whileTap\");\n const transitionProps = useComponentPropsGrouper(props, \"transition\");\n\n const transition = useMemo<MotionTransition>(\n () => ({\n type: \"timing\",\n duration: defaultTransitionDuration,\n ...(transitionProps.withPrefixStyle as any),\n }),\n [transitionProps.withPrefixStyle],\n );\n const transformOrigin = useMemo(\n () =>\n transformOriginX !== undefined || transformOriginY !== undefined\n ? {\n x: transformOriginX ?? 0,\n y: transformOriginY ?? 0,\n }\n : undefined,\n [transformOriginX, transformOriginY],\n );\n\n const content = (\n <Motion.View\n style={initialProps.style}\n initial={initialProps.withPrefixStyle}\n animate={animateProps.withPrefixStyle}\n transition={transition}\n whileTap={whileTapProps.withPrefixStyle}\n transformOrigin={transformOrigin}\n >\n {children}\n </Motion.View>\n );\n\n return Object.keys(whileTapProps.withPrefixStyle).length > 0 ? (\n <Motion.Pressable>{content}</Motion.Pressable>\n ) : (\n content\n );\n }),\n Text: memo(function Text({ transformOriginX, transformOriginY, children, ...props }: AnimateTextProps) {\n const initialProps = useComponentPropsGrouper(props, \"initial\");\n const animateProps = useComponentPropsGrouper(props, \"animate\");\n const whileTapProps = useComponentPropsGrouper(props, \"whileTap\");\n const transitionProps = useComponentPropsGrouper(props, \"transition\");\n\n const transition = useMemo<MotionTransition>(\n () => ({\n type: \"timing\",\n duration: defaultTransitionDuration,\n ...(transitionProps.withPrefixStyle as any),\n }),\n [transitionProps.withPrefixStyle],\n );\n const transformOrigin = useMemo(\n () =>\n transformOriginX !== undefined || transformOriginY !== undefined\n ? {\n x: transformOriginX ?? 0,\n y: transformOriginY ?? 0,\n }\n : undefined,\n [transformOriginX, transformOriginY],\n );\n\n const content = (\n <Motion.Text\n style={initialProps.style}\n initial={initialProps.withPrefixStyle}\n animate={animateProps.withPrefixStyle}\n transition={transition}\n whileTap={whileTapProps.withPrefixStyle}\n transformOrigin={transformOrigin}\n >\n {children}\n </Motion.Text>\n );\n\n return Object.keys(whileTapProps.withPrefixStyle).length > 0 ? (\n <Motion.Pressable>{content}</Motion.Pressable>\n ) : (\n content\n );\n }),\n};\n\nexport default Animate;\n","import { memo } from \"react\";\nimport { ActivityIndicator, ColorValue } from \"react-native\";\nimport { OmitProps, useTheme } from \"react-better-core\";\n\nimport { ComponentMarginProps } from \"../types/components\";\n\nimport View from \"./View\";\nimport Text from \"./Text\";\n\nexport type LoaderSize = \"small\" | \"large\";\n\nexport type LoaderProps = {\n /** @default \"small\" */\n size?: LoaderSize;\n color?: ColorValue;\n} & ComponentMarginProps;\n\ntype LoaderComponentType = {\n (props: LoaderProps): React.ReactElement;\n box: (\n props: OmitProps<LoaderProps, \"size\"> & {\n /** @default \"Loading...\" */\n text?: string;\n /** @default \"large\" */\n size?: LoaderSize;\n },\n ) => React.ReactElement;\n text: (\n props: LoaderProps & {\n /** @default \"Loading...\" */\n text?: string;\n },\n ) => React.ReactElement;\n};\n\nconst LoaderComponent: LoaderComponentType = function Loader({ size = \"small\", color, ...props }) {\n const theme = useTheme();\n\n return (\n <View {...props}>\n <ActivityIndicator size={size} color={color ?? theme.colors.textPrimary} />\n </View>\n );\n};\n\nLoaderComponent.box = function Box({ text = \"Loading...\", size = \"large\", color, ...props }) {\n const theme = useTheme();\n\n return (\n <View\n width=\"100%\"\n alignItems=\"center\"\n gap={theme.styles.gap}\n marginVertical={theme.styles.space}\n {...props}\n >\n <Loader size={size} color={color} />\n\n {text && (\n <Text textAlign=\"center\" color={color ?? theme.colors.textSecondary}>\n {text}\n </Text>\n )}\n </View>\n );\n} as LoaderComponentType[`box`];\n\nLoaderComponent.text = function LoaderText({ text = \"Loading...\", size, color, ...props }) {\n const theme = useTheme();\n\n return (\n <View\n isRow\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={theme.styles.gap}\n marginVertical={theme.styles.space}\n {...props}\n >\n <Loader size={size} color={color} />\n\n {text && (\n <Text textAlign=\"center\" color={color ?? theme.colors.textSecondary}>\n {text}\n </Text>\n )}\n </View>\n );\n} as LoaderComponentType[\"text\"];\n\nconst Loader = memo(LoaderComponent) as any as typeof LoaderComponent & {\n box: typeof LoaderComponent.box;\n text: typeof LoaderComponent.text;\n};\n\nLoader.box = LoaderComponent.box;\nLoader.text = LoaderComponent.text;\n\nexport default Loader;\n","import { memo, useCallback, useMemo } from \"react\";\nimport { KeyboardAvoidingView, Platform, RefreshControl, ScrollView, ViewStyle } from \"react-native\";\nimport { useBooleanState, useTheme } from \"react-better-core\";\n\nimport { useDevice, useKeyboard } from \"../utils/hooks\";\n\nimport View, { ViewProps } from \"./View\";\n\nexport type ScreenHolderProps = {\n /** @default false */\n noScroll?: boolean;\n /** @default false */\n noSideSpace?: boolean;\n /** @default 1 (second) */\n refreshTimeout?: number;\n onRefresh?: () => void;\n onRefreshEnd?: () => void;\n /** @default \"backgroundBase\" */\n backgroundColor?: ViewProps[\"backgroundColor\"];\n /** @default false */\n insideTopSafeArea?: boolean;\n /** @default false */\n insideBottomSafeArea?: boolean;\n /** @default 0 */\n bottomSpace?: number;\n footer?: React.ReactNode;\n /** @default false */\n keepFooterOnKeyboardOpened?: boolean;\n keyboardVerticalOffset?: number;\n /** @default false */\n withNoHeader?: boolean;\n children?: React.ReactNode;\n};\n\ntype ScreenHolderComponentType = {\n (props: ScreenHolderProps): React.ReactElement;\n footer: (props: FooterProps) => React.ReactElement;\n};\n\nconst ScreenHolderComponent: ScreenHolderComponentType = ({\n noScroll,\n noSideSpace,\n refreshTimeout = 1,\n onRefresh,\n onRefreshEnd,\n backgroundColor,\n insideTopSafeArea,\n insideBottomSafeArea,\n bottomSpace = 0,\n footer,\n keepFooterOnKeyboardOpened,\n keyboardVerticalOffset,\n withNoHeader,\n children,\n}) => {\n const theme = useTheme();\n const device = useDevice();\n const keyboard = useKeyboard();\n\n const [isRefreshing, setIsRefreshing] = useBooleanState();\n\n const keyboardAvoidingViewStyle = useMemo<ViewStyle>(\n () => ({\n flex: 1,\n }),\n [],\n );\n\n const onRefreshElement = useCallback(() => {\n setIsRefreshing.setTrue();\n onRefresh?.();\n\n setTimeout(() => {\n setIsRefreshing.setFalse();\n onRefreshEnd?.();\n }, refreshTimeout * 1000);\n }, [onRefresh, onRefreshEnd, refreshTimeout]);\n\n const content = (\n <View\n flex={1}\n paddingHorizontal={!noSideSpace ? theme.styles.space : undefined}\n paddingTop={theme.styles.gap + (insideTopSafeArea ? device.safeArea.afterCalculations.top : 0)}\n paddingBottom={\n Platform.OS === \"ios\" && keyboard.isOpened\n ? device.safeArea.afterCalculations.top\n : bottomSpace + (insideBottomSafeArea ? device.safeArea.afterCalculations.bottom : 0)\n }\n >\n {children}\n </View>\n );\n\n const withRefresh = onRefresh || onRefreshEnd;\n\n return (\n <View flex={1} backgroundColor={backgroundColor ?? theme.colors.backgroundBase}>\n <KeyboardAvoidingView\n style={keyboardAvoidingViewStyle}\n keyboardVerticalOffset={\n keyboardVerticalOffset ??\n (withNoHeader\n ? Platform.OS === \"ios\"\n ? 0\n : theme.styles.gap\n : keepFooterOnKeyboardOpened\n ? Platform.OS === \"ios\"\n ? device.safeArea.afterCalculations.bottom\n : theme.styles.gap\n : undefined)\n }\n behavior={Platform.OS === \"ios\" ? \"padding\" : \"height\"}\n >\n <View flex={1}>\n {noScroll ? (\n content\n ) : (\n <ScrollView\n refreshControl={\n withRefresh ? (\n <RefreshControl refreshing={isRefreshing} onRefresh={onRefreshElement} />\n ) : undefined\n }\n >\n {content}\n </ScrollView>\n )}\n </View>\n\n {keepFooterOnKeyboardOpened || (Platform.OS === \"ios\" ? !keyboard.willOpen : !keyboard.isOpened)\n ? footer && <View>{footer}</View>\n : !withNoHeader && (\n <View\n width=\"100%\"\n height={\n device.safeArea.afterCalculations.bottom +\n (Platform.OS === \"android\" ? theme.styles.gap : 0)\n }\n />\n )}\n </KeyboardAvoidingView>\n </View>\n );\n};\n\nexport type FooterProps = {\n /** @default false */\n noSideSpace?: boolean;\n /** @default \"backgroundBase\" */\n backgroundColor?: ViewProps[\"backgroundColor\"];\n /** @default false */\n insideBottomSafeArea?: boolean;\n /** @default false */\n withNoHeader?: boolean;\n children?: React.ReactNode;\n};\n\nScreenHolderComponent.footer = function Footer({\n noSideSpace,\n backgroundColor,\n insideBottomSafeArea,\n withNoHeader,\n children,\n}) {\n const theme = useTheme();\n const device = useDevice();\n const keyboard = useKeyboard();\n\n return (\n <View\n backgroundColor={backgroundColor ?? theme.colors.backgroundBase}\n paddingHorizontal={!noSideSpace ? theme.styles.space : undefined}\n paddingTop={theme.styles.gap}\n paddingBottom={\n (Platform.OS === \"ios\" ? keyboard.willOpen : keyboard.isOpened) && withNoHeader\n ? theme.styles.gap\n : insideBottomSafeArea\n ? device.safeArea.afterCalculations.bottom\n : undefined\n }\n >\n {children}\n </View>\n );\n} as ScreenHolderComponentType[`footer`];\n\nconst ScreenHolder = memo(ScreenHolderComponent) as any as typeof ScreenHolderComponent & {\n footer: typeof ScreenHolderComponent.footer;\n};\n\nScreenHolder.footer = ScreenHolderComponent.footer;\n\nexport default ScreenHolder;\n","import { memo, useEffect, useMemo } from \"react\";\nimport { AnyOtherString, AssetName, OmitProps, useBetterCoreContext, useTheme } from \"react-better-core\";\nimport {\n ImageSourcePropType,\n Image as NativeImage,\n ImageProps as NativeImageProps,\n ImageStyle as NativeImageStyle,\n} from \"react-native\";\n\nimport { ComponentStyle } from \"../types/components\";\nimport View from \"./View\";\nimport Text from \"./Text\";\n\nexport type ImageProps = {\n name?: AssetName | AnyOtherString;\n source?: ImageSourcePropType;\n /** @default false */\n withDevFittingMode?: boolean;\n} & OmitProps<NativeImageProps, \"source\"> &\n ComponentStyle<NativeImageStyle>;\n\ntype ImageComponentType = {\n (props: ImageProps): React.ReactElement;\n profileImage: (\n props: OmitProps<ImageProps, \"width\" | \"height\"> & {\n /** @default 50 */\n size?: number;\n letters?: string;\n backgroundColor?: string;\n },\n ) => React.ReactElement;\n};\n\nconst ImageComponent: ImageComponentType = function Image({ name, source, withDevFittingMode, ...props }) {\n const { assets } = useBetterCoreContext();\n\n const style = useMemo<NativeImageStyle>(\n () => ({\n width: 100,\n height: 100,\n ...(withDevFittingMode\n ? {\n borderWidth: 1,\n borderColor: \"#eb39f7\",\n }\n : {}),\n ...props,\n }),\n [withDevFittingMode, props],\n );\n\n useEffect(() => {\n if (!name) return;\n\n if (!assets[name.toString()])\n console.warn(\n `The asset \\`${name}\\` you are trying to use does not exist. Make sure to add it to the \\`assets\\` object in \\`<BetterComponentsProvider>\\` config value prop.`,\n );\n }, [assets, name]);\n\n return <NativeImage source={name ? (assets[name.toString()] as any) : source} style={style} {...props} />;\n};\n\nImageComponent.profileImage = function ProfileImage({ size = 50, letters, backgroundColor, ...props }) {\n const theme = useTheme();\n\n return letters ? (\n <View\n width={size}\n height={size}\n backgroundColor={backgroundColor ?? theme.colors.backgroundSecondary}\n borderWidth={1}\n borderColor={theme.colors.border}\n borderRadius={999}\n alignItems=\"center\"\n justifyContent=\"center\"\n {...props}\n >\n <Text fontSize={size / 2.5} fontWeight={700} marginTop={1}>\n {letters.toUpperCase().slice(0, 2)}\n </Text>\n </View>\n ) : (\n <ImageComponent\n width={size}\n height={size}\n borderWidth={1}\n borderColor={theme.colors.border}\n borderRadius={999}\n objectFit=\"cover\"\n {...props}\n />\n );\n} as ImageComponentType[`profileImage`];\n\n/** @description size is set to 100x100 by default */\nconst Image = memo(ImageComponent) as any as typeof ImageComponent & {\n profileImage: typeof ImageComponent.profileImage;\n};\n\nImage.profileImage = ImageComponent.profileImage;\n\nexport default Image;\n","import { forwardRef, memo, useCallback, useEffect, useImperativeHandle, useMemo, useState } from \"react\";\nimport { FocusEvent, TextInput, TextStyle } from \"react-native\";\nimport {\n darkenColor,\n lightenColor,\n useBetterCoreContext,\n useBooleanState,\n useTheme,\n} from \"react-better-core\";\n\nimport { ComponentPropWithRef } from \"../types/components\";\n\nimport View from \"./View\";\nimport Text from \"./Text\";\nimport Animate from \"./Animate\";\n\nexport type InputFieldProps = {\n placeholder?: string;\n prefix?: string;\n suffix?: string;\n defaultValue?: string;\n value?: string | number;\n /** @default true */\n editable?: boolean;\n /** @default false */\n autoFocus?: boolean;\n autoCapitalize?: React.ComponentProps<typeof TextInput>[\"autoCapitalize\"];\n autoComplete?: React.ComponentProps<typeof TextInput>[\"autoComplete\"];\n autoCorrect?: React.ComponentProps<typeof TextInput>[\"autoCorrect\"];\n /** @default \"default\" */\n keyboardAppearance?: React.ComponentProps<typeof TextInput>[\"keyboardAppearance\"];\n keyboardType?: React.ComponentProps<typeof TextInput>[\"keyboardType\"];\n /** @default false */\n secureTextEntry?: boolean;\n onFocus?: (event: FocusEvent) => void;\n onBlur?: (event: FocusEvent) => void;\n onChange?: (text: string) => void;\n};\n\nexport type InputFieldRef = {};\n\ntype InputFieldComponentType = {\n (props: ComponentPropWithRef<InputFieldRef, InputFieldProps>): React.ReactElement;\n email: (props: ComponentPropWithRef<InputFieldRef, InputFieldProps>) => React.ReactElement;\n password: (props: ComponentPropWithRef<InputFieldRef, InputFieldProps>) => React.ReactElement;\n};\n\nconst InputFieldComponent: InputFieldComponentType = forwardRef<InputFieldRef, InputFieldProps>(\n (\n {\n placeholder,\n prefix,\n suffix,\n defaultValue,\n value,\n editable = true,\n autoFocus,\n autoCapitalize,\n autoComplete,\n autoCorrect,\n keyboardAppearance = \"default\",\n keyboardType,\n secureTextEntry,\n onFocus,\n onBlur,\n onChange,\n },\n ref,\n ) => {\n const theme = useTheme();\n const { colorTheme } = useBetterCoreContext();\n\n const [internalValue, setInternalValue] = useState(value?.toString() || defaultValue || \"\");\n const [isFocused, setIsFocused] = useBooleanState();\n\n const borderWidth = 1;\n const lineHeight = 20;\n const paddingHorizontal = theme.styles.space;\n const paddingVertical = (theme.styles.space + theme.styles.gap) / 2;\n const height = borderWidth + paddingVertical + lineHeight + paddingVertical + borderWidth;\n\n const onFocusElement = useCallback((event: FocusEvent) => {\n setIsFocused.setTrue();\n onFocus?.(event);\n }, []);\n const onBlurElement = useCallback((event: FocusEvent) => {\n setIsFocused.setFalse();\n onBlur?.(event);\n }, []);\n const onChangeText = useCallback(\n (text: string) => {\n setInternalValue(text);\n onChange?.(text);\n },\n [onChange],\n );\n\n const textInputStyle = useMemo<TextStyle>(\n () => ({\n flex: 1,\n fontSize: 16,\n lineHeight,\n color: theme.colors.textPrimary,\n paddingHorizontal,\n paddingVertical,\n }),\n [theme.colors, lineHeight, paddingHorizontal, paddingVertical],\n );\n\n useEffect(() => {\n if (value === undefined) return;\n\n setInternalValue(value.toString());\n }, [value]);\n\n useImperativeHandle(\n ref,\n (): InputFieldRef => {\n return {};\n },\n [],\n );\n\n const prefixSuffixBackgroundColor =\n colorTheme === \"light\"\n ? darkenColor(theme.colors.backgroundContent, 0.03)\n : lightenColor(theme.colors.backgroundContent, 0.1);\n\n return (\n <View isRow position=\"relative\" alignItems=\"center\" height={height}>\n {prefix && (\n <View\n isRow\n height=\"100%\"\n backgroundColor={prefixSuffixBackgroundColor}\n alignItems=\"center\"\n borderWidth={borderWidth}\n borderRightWidth={0}\n borderTopLeftRadius={theme.styles.borderRadius}\n borderBottomLeftRadius={theme.styles.borderRadius}\n borderColor={theme.colors.border}\n paddingHorizontal={paddingHorizontal}\n >\n <Text fontWeight={700}>{prefix}</Text>\n </View>\n )}\n\n <Animate.View\n flex={1}\n backgroundColor={theme.colors.backgroundContent}\n borderTopLeftRadius={prefix ? 0 : theme.styles.borderRadius}\n borderBottomLeftRadius={prefix ? 0 : theme.styles.borderRadius}\n borderTopRightRadius={suffix ? 0 : theme.styles.borderRadius}\n borderBottomRightRadius={suffix ? 0 : theme.styles.borderRadius}\n borderWidth={borderWidth}\n initialBorderColor={theme.colors.border}\n animateBorderColor={isFocused ? theme.colors.primary : theme.colors.border}\n overflow=\"hidden\"\n >\n <TextInput\n style={textInputStyle}\n value={internalValue}\n defaultValue={defaultValue}\n autoCapitalize={autoCapitalize}\n autoComplete={autoComplete}\n autoCorrect={autoCorrect}\n autoFocus={autoFocus}\n placeholder={placeholder}\n placeholderTextColor={theme.colors.textSecondary + \"80\"}\n readOnly={!editable}\n keyboardAppearance={keyboardAppearance}\n keyboardType={keyboardType}\n cursorColor={theme.colors.primary}\n selectionColor={theme.colors.primary}\n secureTextEntry={secureTextEntry}\n onFocus={onFocusElement}\n onBlur={onBlurElement}\n onChangeText={onChangeText}\n />\n </Animate.View>\n\n {suffix && (\n <View\n isRow\n height=\"100%\"\n backgroundColor={prefixSuffixBackgroundColor}\n alignItems=\"center\"\n borderWidth={borderWidth}\n borderLeftWidth={0}\n borderTopRightRadius={theme.styles.borderRadius}\n borderBottomRightRadius={theme.styles.borderRadius}\n borderColor={theme.colors.border}\n paddingHorizontal={paddingHorizontal}\n >\n <Text fontWeight={700}>{suffix}</Text>\n </View>\n )}\n </View>\n );\n },\n) as any;\n\nInputFieldComponent.email = forwardRef(function Email(props, ref) {\n return (\n <InputFieldComponent\n placeholder=\"your@email.here\"\n autoComplete=\"email\"\n keyboardType=\"email-address\"\n autoCapitalize=\"none\"\n autoCorrect={false}\n {...props}\n ref={ref}\n />\n );\n}) as InputFieldComponentType[`email`];\n\nInputFieldComponent.password = forwardRef(function Password(props, ref) {\n return (\n <InputFieldComponent\n secureTextEntry\n placeholder=\"******\"\n autoCapitalize=\"none\"\n autoComplete=\"password\"\n autoCorrect={false}\n {...props}\n ref={ref}\n />\n );\n}) as InputFieldComponentType[`password`];\n\nconst InputField = memo(InputFieldComponent) as any as typeof InputFieldComponent & {\n email: typeof InputFieldComponent.email;\n password: typeof InputFieldComponent.password;\n};\n\nInputField.email = InputFieldComponent.email;\nInputField.password = InputFieldComponent.password;\n\nexport default InputField;\n","import { memo } from \"react\";\nimport { useTheme } from \"react-better-core\";\nimport { StatusBar as NativeStatusBar } from \"react-native\";\n\nexport type StatusBarProps = {\n darkStatusBar?: boolean;\n /** @default false */\n hidden?: boolean;\n};\n\nfunction StatusBar({ darkStatusBar, hidden }: StatusBarProps) {\n const theme = useTheme();\n\n return (\n <NativeStatusBar\n backgroundColor={darkStatusBar ? theme.colors.backgroundSecondary : undefined}\n hidden={hidden}\n />\n );\n}\n\nexport default memo(StatusBar);\n","import { BetterComponentsPluginConstructor } from \"../types/plugin\";\n\nexport type AsyncStoragePluginOptions = {};\n\nexport const defaultAsyncStoragePluginOptions: Required<AsyncStoragePluginOptions> = {};\n\nexport const asyncStoragePlugin: BetterComponentsPluginConstructor<AsyncStoragePluginOptions> = (options) => ({\n name: \"asyncStorage\",\n initialize: () => {\n console.log(\"asyncStorage plugin initialized\");\n },\n getConfig: () => ({\n ...defaultAsyncStoragePluginOptions,\n ...options,\n }),\n});\n"],"mappings":"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,SAAS,mBAAAC,kBAAiB,gBAAgB;;;ACHnC,IAAM,WAAwB,oBAAI,IAAI;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AA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","names":["useTheme","useLoader","lightenColor","darkenColor","useBooleanState","useEffect","useMemo","useBooleanState","theme","useBooleanState","useEffect","useMemo","memo","useMemo","useTheme","Fragment","jsx","pressStrength","theme","View","memo","useMemo","useTheme","jsx","theme","Text","memo","Platform","useTheme","memo","useMemo","jsx","memo","View","animateProps","useMemo","Text","memo","useTheme","jsx","theme","useTheme","Box","Loader","memo","jsx","jsxs","theme","useTheme","Platform","Button","memo","memo","useMemo","Platform","useBooleanState","useTheme","jsx","jsxs","theme","useTheme","useBooleanState","useMemo","Platform","memo","memo","useEffect","useMemo","useBetterCoreContext","useTheme","jsx","assets","useBetterCoreContext","useMemo","useEffect","theme","useTheme","Image","memo","memo","useCallback","useEffect","useMemo","useState","useBetterCoreContext","useBooleanState","useTheme","jsx","jsxs","theme","useTheme","useBetterCoreContext","useState","useBooleanState","useCallback","useMemo","useEffect","memo","memo","useTheme","jsx","theme"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-better-html",
3
- "version": "1.0.8",
3
+ "version": "1.0.9",
4
4
  "description": "A component library for react native that is as close to plane react-native as possible",
5
5
  "main": "dist/index.js",
6
6
  "files": [