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 +10 -2
- package/dist/index.d.ts +10 -2
- package/dist/index.js +38 -19
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +20 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
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: () =>
|
|
44
|
-
countries: () =>
|
|
45
|
-
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: () =>
|
|
48
|
-
eventPreventDefault: () =>
|
|
49
|
-
eventPreventStop: () =>
|
|
50
|
-
eventStopPropagation: () =>
|
|
51
|
-
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: () =>
|
|
54
|
-
getPluralWord: () =>
|
|
55
|
-
lightenColor: () =>
|
|
56
|
-
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: () =>
|
|
59
|
+
saturateColor: () => import_react_better_core11.saturateColor,
|
|
59
60
|
useBetterComponentsContext: () => useBetterComponentsContext,
|
|
60
|
-
useBooleanState: () =>
|
|
61
|
-
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: () =>
|
|
65
|
-
useLoaderControls: () =>
|
|
66
|
-
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
|
|
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
|
|
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
|
-
|
|
1388
|
+
useTheme10 as useTheme
|
|
1371
1389
|
};
|
|
1372
1390
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.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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,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"]}
|