diff --git a/example/src/screens/BubbleStyled.tsx b/example/src/screens/BubbleStyled.tsx index ab6060b..2af6ef3 100644 --- a/example/src/screens/BubbleStyled.tsx +++ b/example/src/screens/BubbleStyled.tsx @@ -1,7 +1,10 @@ import React, { useMemo } from 'react'; -import { StyleProp, ViewStyle } from 'react-native'; +import { ViewStyle } from 'react-native'; import { useSafeArea } from 'react-native-safe-area-context'; -import { createBottomTabNavigator } from '@react-navigation/bottom-tabs'; +import { + createBottomTabNavigator, + BottomTabBarOptions, +} from '@react-navigation/bottom-tabs'; import AnimatedTabBar, { TabsConfig, BubbleTabBarItemConfig, @@ -84,7 +87,7 @@ const BubbleStyledScreen = () => { return 20 + bottom + 12 * 2 + 12 * 2 + 12; }, [bottom]); - const tabBarStyle = useMemo>( + const tabBarStyle = useMemo( () => ({ position: 'absolute', left: 0, @@ -108,14 +111,22 @@ const BubbleStyledScreen = () => { [bottom] ); - const tabBarOptions = useMemo( + const tabStyle = useMemo( + () => ({ + borderRadius: 8, + }), + [] + ); + + const tabBarOptions: BottomTabBarOptions = useMemo( () => ({ safeAreaInsets: { bottom: 0, }, + tabStyle, style: tabBarStyle, }), - [tabBarStyle] + [tabBarStyle, tabStyle] ); // render diff --git a/src/presets/bubble/BubbleTabBar.tsx b/src/presets/bubble/BubbleTabBar.tsx index 5a00164..9d7630d 100644 --- a/src/presets/bubble/BubbleTabBar.tsx +++ b/src/presets/bubble/BubbleTabBar.tsx @@ -22,6 +22,7 @@ import { styles } from './styles'; const BubbleTabBarComponent = ({ selectedIndex, tabs, + tabStyle, duration = DEFAULT_ITEM_ANIMATION_DURATION, easing = DEFAULT_ITEM_ANIMATION_EASING, itemInnerSpace = DEFAULT_ITEM_INNER_SPACE, @@ -84,6 +85,7 @@ const BubbleTabBarComponent = ({ itemContainerWidth={itemContainerWidth} iconSize={iconSize} isRTL={isRTL} + tabStyle={tabStyle} {...configs} /> diff --git a/src/presets/bubble/item/BubbleTabBarItem.tsx b/src/presets/bubble/item/BubbleTabBarItem.tsx index 46d2cf4..abf589f 100644 --- a/src/presets/bubble/item/BubbleTabBarItem.tsx +++ b/src/presets/bubble/item/BubbleTabBarItem.tsx @@ -23,6 +23,7 @@ const BubbleTabBarItemComponent = ({ itemOuterSpace, iconSize, isRTL, + tabStyle, }: BubbleTabBarItemProps) => { //#region extract props const { @@ -100,6 +101,7 @@ const BubbleTabBarItemComponent = ({ ]; const contentContainerStyle = [ styles.contentContainer, + tabStyle, { flexDirection: isRTL ? 'row-reverse' : 'row', paddingHorizontal: itemInnerHorizontalSpace, diff --git a/src/presets/bubble/types.ts b/src/presets/bubble/types.ts index 347234c..acc74bd 100644 --- a/src/presets/bubble/types.ts +++ b/src/presets/bubble/types.ts @@ -1,10 +1,17 @@ -import type { TextStyle } from 'react-native'; +import type { TextStyle, ViewStyle } from 'react-native'; import type Animated from 'react-native-reanimated'; import type { TabBarItemProps } from '../../types'; -export interface BubbleTabBarConfig {} +export interface BubbleTabBarConfig { + /** + * description + * @type {ViewStyle} + */ + tabStyle?: ViewStyle; +} -export interface BubbleTabBarItemConfig { +export interface BubbleTabBarItemConfig + extends Pick { /** * Tab bar item label style. * @type {TextStyle}