react-native-better-html 1.0.5 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -268,6 +268,7 @@ type ScreenHolderProps = {
268
268
  footer?: React.ReactNode;
269
269
  /** @default false */
270
270
  keepFooterOnKeyboardOpened?: boolean;
271
+ keyboardVerticalOffset?: number;
271
272
  children?: React.ReactNode;
272
273
  };
273
274
  type ScreenHolderComponentType = {
package/dist/index.d.ts CHANGED
@@ -268,6 +268,7 @@ type ScreenHolderProps = {
268
268
  footer?: React.ReactNode;
269
269
  /** @default false */
270
270
  keepFooterOnKeyboardOpened?: boolean;
271
+ keyboardVerticalOffset?: number;
271
272
  children?: React.ReactNode;
272
273
  };
273
274
  type ScreenHolderComponentType = {
package/dist/index.js CHANGED
@@ -1029,6 +1029,7 @@ var ScreenHolderComponent = ({
1029
1029
  bottomSpace = 0,
1030
1030
  footer,
1031
1031
  keepFooterOnKeyboardOpened,
1032
+ keyboardVerticalOffset,
1032
1033
  children
1033
1034
  }) => {
1034
1035
  const theme2 = (0, import_react_better_core7.useTheme)();
@@ -1064,7 +1065,7 @@ var ScreenHolderComponent = ({
1064
1065
  import_react_native6.KeyboardAvoidingView,
1065
1066
  {
1066
1067
  style: keyboardAvoidingViewStyle,
1067
- keyboardVerticalOffset: keepFooterOnKeyboardOpened ? import_react_native6.Platform.OS === "ios" ? device.safeArea.afterCalculations.bottom : theme2.styles.gap : void 0,
1068
+ keyboardVerticalOffset: keyboardVerticalOffset ?? (keepFooterOnKeyboardOpened ? import_react_native6.Platform.OS === "ios" ? device.safeArea.afterCalculations.bottom : theme2.styles.gap : void 0),
1068
1069
  behavior: import_react_native6.Platform.OS === "ios" ? "padding" : "height",
1069
1070
  children: [
1070
1071
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(View_default, { flex: 1, children: noScroll ? content : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
@@ -1191,8 +1192,11 @@ var InputFieldComponent = (0, import_react10.forwardRef)(
1191
1192
  const { colorTheme } = (0, import_react_better_core9.useBetterCoreContext)();
1192
1193
  const [internalValue, setInternalValue] = (0, import_react10.useState)(value?.toString() || defaultValue || "");
1193
1194
  const [isFocused, setIsFocused] = (0, import_react_better_core9.useBooleanState)();
1195
+ const borderWidth = 1;
1196
+ const lineHeight = 20;
1194
1197
  const paddingHorizontal = theme2.styles.space;
1195
1198
  const paddingVertical = (theme2.styles.space + theme2.styles.gap) / 2;
1199
+ const height = borderWidth + paddingVertical + lineHeight + paddingVertical + borderWidth;
1196
1200
  const onFocusElement = (0, import_react10.useCallback)((event) => {
1197
1201
  setIsFocused.setTrue();
1198
1202
  onFocus?.(event);
@@ -1212,12 +1216,12 @@ var InputFieldComponent = (0, import_react10.forwardRef)(
1212
1216
  () => ({
1213
1217
  flex: 1,
1214
1218
  fontSize: 16,
1215
- lineHeight: 20,
1219
+ lineHeight,
1216
1220
  color: theme2.colors.textPrimary,
1217
1221
  paddingHorizontal,
1218
1222
  paddingVertical
1219
1223
  }),
1220
- [theme2.colors, paddingHorizontal, paddingVertical]
1224
+ [theme2.colors, lineHeight, paddingHorizontal, paddingVertical]
1221
1225
  );
1222
1226
  (0, import_react10.useEffect)(() => {
1223
1227
  if (value === void 0) return;
@@ -1231,7 +1235,7 @@ var InputFieldComponent = (0, import_react10.forwardRef)(
1231
1235
  []
1232
1236
  );
1233
1237
  const prefixSuffixBackgroundColor = colorTheme === "light" ? (0, import_react_better_core9.darkenColor)(theme2.colors.backgroundContent, 0.03) : (0, import_react_better_core9.lightenColor)(theme2.colors.backgroundContent, 0.1);
1234
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(View_default, { isRow: true, position: "relative", alignItems: "center", children: [
1238
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(View_default, { isRow: true, position: "relative", alignItems: "center", height, children: [
1235
1239
  prefix && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1236
1240
  View_default,
1237
1241
  {
@@ -1239,7 +1243,7 @@ var InputFieldComponent = (0, import_react10.forwardRef)(
1239
1243
  height: "100%",
1240
1244
  backgroundColor: prefixSuffixBackgroundColor,
1241
1245
  alignItems: "center",
1242
- borderWidth: 1,
1246
+ borderWidth,
1243
1247
  borderRightWidth: 0,
1244
1248
  borderTopLeftRadius: theme2.styles.borderRadius,
1245
1249
  borderBottomLeftRadius: theme2.styles.borderRadius,
@@ -1257,7 +1261,7 @@ var InputFieldComponent = (0, import_react10.forwardRef)(
1257
1261
  borderBottomLeftRadius: prefix ? 0 : theme2.styles.borderRadius,
1258
1262
  borderTopRightRadius: suffix ? 0 : theme2.styles.borderRadius,
1259
1263
  borderBottomRightRadius: suffix ? 0 : theme2.styles.borderRadius,
1260
- borderWidth: 1,
1264
+ borderWidth,
1261
1265
  initialBorderColor: theme2.colors.border,
1262
1266
  animateBorderColor: isFocused ? theme2.colors.primary : theme2.colors.border,
1263
1267
  overflow: "hidden",
@@ -1293,7 +1297,7 @@ var InputFieldComponent = (0, import_react10.forwardRef)(
1293
1297
  height: "100%",
1294
1298
  backgroundColor: prefixSuffixBackgroundColor,
1295
1299
  alignItems: "center",
1296
- borderWidth: 1,
1300
+ borderWidth,
1297
1301
  borderLeftWidth: 0,
1298
1302
  borderTopRightRadius: theme2.styles.borderRadius,
1299
1303
  borderBottomRightRadius: theme2.styles.borderRadius,
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 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 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 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 ||\n (Platform.OS === \"ios\" ? !keyboard.willOpen : !keyboard.isOpened) ? (\n footer && <View>{footer}</View>\n ) : (\n <View width=\"100%\" height={device.safeArea.afterCalculations.bottom}></View>\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 children?: React.ReactNode;\n};\n\nScreenHolderComponent.footer = function Footer({\n noSideSpace,\n backgroundColor,\n insideBottomSafeArea,\n children,\n}) {\n const theme = useTheme();\n const device = useDevice();\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={insideBottomSafeArea ? device.safeArea.afterCalculations.bottom : undefined}\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 paddingHorizontal = theme.styles.space;\n const paddingVertical = (theme.styles.space + theme.styles.gap) / 2;\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: 20,\n color: theme.colors.textPrimary,\n paddingHorizontal,\n paddingVertical,\n }),\n [theme.colors, 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\">\n {prefix && (\n <View\n isRow\n height=\"100%\"\n backgroundColor={prefixSuffixBackgroundColor}\n alignItems=\"center\"\n borderWidth={1}\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={1}\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={1}\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/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 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 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 (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 ||\n (Platform.OS === \"ios\" ? !keyboard.willOpen : !keyboard.isOpened) ? (\n footer && <View>{footer}</View>\n ) : (\n <View width=\"100%\" height={device.safeArea.afterCalculations.bottom}></View>\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 children?: React.ReactNode;\n};\n\nScreenHolderComponent.footer = function Footer({\n noSideSpace,\n backgroundColor,\n insideBottomSafeArea,\n children,\n}) {\n const theme = useTheme();\n const device = useDevice();\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={insideBottomSafeArea ? device.safeArea.afterCalculations.bottom : undefined}\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"]}
package/dist/index.mjs CHANGED
@@ -991,6 +991,7 @@ var ScreenHolderComponent = ({
991
991
  bottomSpace = 0,
992
992
  footer,
993
993
  keepFooterOnKeyboardOpened,
994
+ keyboardVerticalOffset,
994
995
  children
995
996
  }) => {
996
997
  const theme2 = useTheme6();
@@ -1026,7 +1027,7 @@ var ScreenHolderComponent = ({
1026
1027
  KeyboardAvoidingView,
1027
1028
  {
1028
1029
  style: keyboardAvoidingViewStyle,
1029
- keyboardVerticalOffset: keepFooterOnKeyboardOpened ? Platform3.OS === "ios" ? device.safeArea.afterCalculations.bottom : theme2.styles.gap : void 0,
1030
+ keyboardVerticalOffset: keyboardVerticalOffset ?? (keepFooterOnKeyboardOpened ? Platform3.OS === "ios" ? device.safeArea.afterCalculations.bottom : theme2.styles.gap : void 0),
1030
1031
  behavior: Platform3.OS === "ios" ? "padding" : "height",
1031
1032
  children: [
1032
1033
  /* @__PURE__ */ jsx7(View_default, { flex: 1, children: noScroll ? content : /* @__PURE__ */ jsx7(
@@ -1161,8 +1162,11 @@ var InputFieldComponent = forwardRef(
1161
1162
  const { colorTheme } = useBetterCoreContext3();
1162
1163
  const [internalValue, setInternalValue] = useState2(value?.toString() || defaultValue || "");
1163
1164
  const [isFocused, setIsFocused] = useBooleanState4();
1165
+ const borderWidth = 1;
1166
+ const lineHeight = 20;
1164
1167
  const paddingHorizontal = theme2.styles.space;
1165
1168
  const paddingVertical = (theme2.styles.space + theme2.styles.gap) / 2;
1169
+ const height = borderWidth + paddingVertical + lineHeight + paddingVertical + borderWidth;
1166
1170
  const onFocusElement = useCallback2((event) => {
1167
1171
  setIsFocused.setTrue();
1168
1172
  onFocus?.(event);
@@ -1182,12 +1186,12 @@ var InputFieldComponent = forwardRef(
1182
1186
  () => ({
1183
1187
  flex: 1,
1184
1188
  fontSize: 16,
1185
- lineHeight: 20,
1189
+ lineHeight,
1186
1190
  color: theme2.colors.textPrimary,
1187
1191
  paddingHorizontal,
1188
1192
  paddingVertical
1189
1193
  }),
1190
- [theme2.colors, paddingHorizontal, paddingVertical]
1194
+ [theme2.colors, lineHeight, paddingHorizontal, paddingVertical]
1191
1195
  );
1192
1196
  useEffect4(() => {
1193
1197
  if (value === void 0) return;
@@ -1201,7 +1205,7 @@ var InputFieldComponent = forwardRef(
1201
1205
  []
1202
1206
  );
1203
1207
  const prefixSuffixBackgroundColor = colorTheme === "light" ? darkenColor(theme2.colors.backgroundContent, 0.03) : lightenColor(theme2.colors.backgroundContent, 0.1);
1204
- return /* @__PURE__ */ jsxs4(View_default, { isRow: true, position: "relative", alignItems: "center", children: [
1208
+ return /* @__PURE__ */ jsxs4(View_default, { isRow: true, position: "relative", alignItems: "center", height, children: [
1205
1209
  prefix && /* @__PURE__ */ jsx9(
1206
1210
  View_default,
1207
1211
  {
@@ -1209,7 +1213,7 @@ var InputFieldComponent = forwardRef(
1209
1213
  height: "100%",
1210
1214
  backgroundColor: prefixSuffixBackgroundColor,
1211
1215
  alignItems: "center",
1212
- borderWidth: 1,
1216
+ borderWidth,
1213
1217
  borderRightWidth: 0,
1214
1218
  borderTopLeftRadius: theme2.styles.borderRadius,
1215
1219
  borderBottomLeftRadius: theme2.styles.borderRadius,
@@ -1227,7 +1231,7 @@ var InputFieldComponent = forwardRef(
1227
1231
  borderBottomLeftRadius: prefix ? 0 : theme2.styles.borderRadius,
1228
1232
  borderTopRightRadius: suffix ? 0 : theme2.styles.borderRadius,
1229
1233
  borderBottomRightRadius: suffix ? 0 : theme2.styles.borderRadius,
1230
- borderWidth: 1,
1234
+ borderWidth,
1231
1235
  initialBorderColor: theme2.colors.border,
1232
1236
  animateBorderColor: isFocused ? theme2.colors.primary : theme2.colors.border,
1233
1237
  overflow: "hidden",
@@ -1263,7 +1267,7 @@ var InputFieldComponent = forwardRef(
1263
1267
  height: "100%",
1264
1268
  backgroundColor: prefixSuffixBackgroundColor,
1265
1269
  alignItems: "center",
1266
- borderWidth: 1,
1270
+ borderWidth,
1267
1271
  borderLeftWidth: 0,
1268
1272
  borderTopRightRadius: theme2.styles.borderRadius,
1269
1273
  borderBottomRightRadius: theme2.styles.borderRadius,
@@ -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 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 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 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 ||\n (Platform.OS === \"ios\" ? !keyboard.willOpen : !keyboard.isOpened) ? (\n footer && <View>{footer}</View>\n ) : (\n <View width=\"100%\" height={device.safeArea.afterCalculations.bottom}></View>\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 children?: React.ReactNode;\n};\n\nScreenHolderComponent.footer = function Footer({\n noSideSpace,\n backgroundColor,\n insideBottomSafeArea,\n children,\n}) {\n const theme = useTheme();\n const device = useDevice();\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={insideBottomSafeArea ? device.safeArea.afterCalculations.bottom : undefined}\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 paddingHorizontal = theme.styles.space;\n const paddingVertical = (theme.styles.space + theme.styles.gap) / 2;\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: 20,\n color: theme.colors.textPrimary,\n paddingHorizontal,\n paddingVertical,\n }),\n [theme.colors, 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\">\n {prefix && (\n <View\n isRow\n height=\"100%\"\n backgroundColor={prefixSuffixBackgroundColor}\n alignItems=\"center\"\n borderWidth={1}\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={1}\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={1}\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/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 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 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 (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 ||\n (Platform.OS === \"ios\" ? !keyboard.willOpen : !keyboard.isOpened) ? (\n footer && <View>{footer}</View>\n ) : (\n <View width=\"100%\" height={device.safeArea.afterCalculations.bottom}></View>\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 children?: React.ReactNode;\n};\n\nScreenHolderComponent.footer = function Footer({\n noSideSpace,\n backgroundColor,\n insideBottomSafeArea,\n children,\n}) {\n const theme = useTheme();\n const device = useDevice();\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={insideBottomSafeArea ? device.safeArea.afterCalculations.bottom : undefined}\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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-better-html",
3
- "version": "1.0.5",
3
+ "version": "1.0.7",
4
4
  "description": "A component library for react native that is as close to plane react-native as possible",
5
5
  "main": "dist/index.js",
6
6
  "files": [