@fountain-ui/core 3.0.0-alpha.13 → 3.0.0-alpha.14
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/build/commonjs/Tab/Tab.js +3 -15
- package/build/commonjs/Tab/Tab.js.map +1 -1
- package/build/commonjs/Tab/TabProps.js +1 -1
- package/build/commonjs/Tab/TabProps.js.map +1 -1
- package/build/commonjs/Tab/useVariantStyleMap.js +38 -3
- package/build/commonjs/Tab/useVariantStyleMap.js.map +1 -1
- package/build/commonjs/TabBase/TabBase.js +1 -8
- package/build/commonjs/TabBase/TabBase.js.map +1 -1
- package/build/commonjs/TabBase/TabBaseProps.js.map +1 -1
- package/build/commonjs/Tabs/useTabsStyle.js +4 -1
- package/build/commonjs/Tabs/useTabsStyle.js.map +1 -1
- package/build/module/Tab/Tab.js +4 -15
- package/build/module/Tab/Tab.js.map +1 -1
- package/build/module/Tab/TabProps.js +1 -1
- package/build/module/Tab/TabProps.js.map +1 -1
- package/build/module/Tab/useVariantStyleMap.js +38 -3
- package/build/module/Tab/useVariantStyleMap.js.map +1 -1
- package/build/module/TabBase/TabBase.js +1 -8
- package/build/module/TabBase/TabBase.js.map +1 -1
- package/build/module/TabBase/TabBaseProps.js.map +1 -1
- package/build/module/Tabs/useTabsStyle.js +4 -1
- package/build/module/Tabs/useTabsStyle.js.map +1 -1
- package/build/typescript/Tab/TabProps.d.ts +1 -1
- package/build/typescript/TabBase/TabBaseProps.d.ts +0 -5
- package/package.json +2 -2
- package/src/Tab/Tab.tsx +2 -14
- package/src/Tab/TabProps.ts +1 -1
- package/src/Tab/useVariantStyleMap.ts +41 -3
- package/src/TabBase/TabBase.tsx +1 -9
- package/src/TabBase/TabBaseProps.ts +0 -6
- package/src/Tabs/useTabsStyle.ts +4 -1
|
@@ -11,8 +11,6 @@ var _reactNative = require("react-native");
|
|
|
11
11
|
|
|
12
12
|
var _Badge = _interopRequireDefault(require("../Badge"));
|
|
13
13
|
|
|
14
|
-
var _Spacer = _interopRequireDefault(require("../Spacer"));
|
|
15
|
-
|
|
16
14
|
var _TabBase = _interopRequireDefault(require("../TabBase"));
|
|
17
15
|
|
|
18
16
|
var _styles = require("../styles");
|
|
@@ -50,8 +48,6 @@ function Tab(props) {
|
|
|
50
48
|
onTabInnerLayout,
|
|
51
49
|
...otherProps
|
|
52
50
|
} = props;
|
|
53
|
-
const theme = (0, _styles.useTheme)();
|
|
54
|
-
const vertical = variant === 'bottom-navigation';
|
|
55
51
|
const {
|
|
56
52
|
container: containerStyle,
|
|
57
53
|
inner: innerStyle,
|
|
@@ -59,21 +55,15 @@ function Tab(props) {
|
|
|
59
55
|
} = (0, _useVariantStyleMap.default)(variant, selected);
|
|
60
56
|
const tabBaseStyle = (0, _styles.css)([styles.root, containerStyle, styleProp]);
|
|
61
57
|
const tabInnerStyle = (0, _styles.css)([styles.filledInner, innerStyle]);
|
|
62
|
-
const pressEffect = selected ? 'none' : 'opacity';
|
|
63
58
|
const icon = selected ? selectedIcon || defaultIcon : defaultIcon;
|
|
64
|
-
const
|
|
65
|
-
const iconElement = (0, _utils.cloneElementSafely)(icon, {
|
|
66
|
-
fill: iconColor
|
|
67
|
-
});
|
|
59
|
+
const iconElement = (0, _utils.cloneElementSafely)(icon);
|
|
68
60
|
const tabElement = typeof children !== 'string' ? (0, _utils.cloneElementSafely)(children, {
|
|
69
61
|
selected
|
|
70
62
|
}) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, iconElement ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Badge.default, {
|
|
71
63
|
horizontalOffset: -6,
|
|
72
64
|
invisible: !badgeVisible,
|
|
73
65
|
verticalOffset: -4.5
|
|
74
|
-
}, iconElement), /*#__PURE__*/_react.default.createElement(
|
|
75
|
-
size: 1.25
|
|
76
|
-
}), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
66
|
+
}, iconElement), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
77
67
|
style: (0, _styles.css)(labelStyle)
|
|
78
68
|
}, children)) : /*#__PURE__*/_react.default.createElement(_Badge.default, {
|
|
79
69
|
horizontalOffset: -7,
|
|
@@ -83,9 +73,7 @@ function Tab(props) {
|
|
|
83
73
|
style: (0, _styles.css)(labelStyle)
|
|
84
74
|
}, children)));
|
|
85
75
|
return /*#__PURE__*/_react.default.createElement(_TabBase.default, _extends({
|
|
86
|
-
|
|
87
|
-
style: tabBaseStyle,
|
|
88
|
-
vertical: vertical
|
|
76
|
+
style: tabBaseStyle
|
|
89
77
|
}, otherProps), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
90
78
|
onLayout: onTabInnerLayout,
|
|
91
79
|
style: tabInnerStyle
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["styles","StyleSheet","create","root","Platform","OS","minWidth","filledInner","alignItems","justifyContent","Tab","props","badgeVisible","children","enableIndicator","icon","defaultIcon","selected","selectedIcon","variant","style","styleProp","onTabInnerLayout","otherProps","
|
|
1
|
+
{"version":3,"names":["styles","StyleSheet","create","root","Platform","OS","minWidth","filledInner","alignItems","justifyContent","Tab","props","badgeVisible","children","enableIndicator","icon","defaultIcon","selected","selectedIcon","variant","style","styleProp","onTabInnerLayout","otherProps","container","containerStyle","inner","innerStyle","label","labelStyle","useVariantStyleMap","tabBaseStyle","css","tabInnerStyle","iconElement","cloneElementSafely","tabElement"],"sources":["Tab.tsx"],"sourcesContent":["import React from 'react';\nimport { Platform, Text, View } from 'react-native';\nimport Badge from '../Badge';\nimport TabBase from '../TabBase';\nimport { css, StyleSheet } from '../styles';\nimport { cloneElementSafely } from '../utils';\nimport type TabProps from './TabProps';\nimport type { TabVariant } from './TabProps';\nimport useVariantStyleMap from './useVariantStyleMap';\n\nconst styles = StyleSheet.create({\n root: {\n // TODO: Remove redundant platform checking\n ...(Platform.OS === 'web' ? { minWidth: 'auto' } : {}),\n },\n filledInner: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nexport default function Tab(props: TabProps) {\n const {\n badgeVisible = false,\n children,\n enableIndicator = false,\n icon: defaultIcon,\n selected = false,\n selectedIcon,\n variant = 'default' as TabVariant,\n style: styleProp,\n onTabInnerLayout,\n ...otherProps\n } = props;\n\n const {\n container: containerStyle,\n inner: innerStyle,\n label: labelStyle,\n } = useVariantStyleMap(variant, selected);\n\n const tabBaseStyle = css([\n styles.root,\n containerStyle,\n styleProp,\n ]);\n\n const tabInnerStyle = css([\n styles.filledInner,\n innerStyle,\n ]);\n\n const icon = selected ? (selectedIcon || defaultIcon) : defaultIcon;\n const iconElement = cloneElementSafely(icon);\n\n const tabElement = typeof children !== 'string' ? (\n cloneElementSafely(children, {\n selected,\n })\n ) : (\n <React.Fragment>\n {iconElement ? (\n <React.Fragment>\n <Badge\n horizontalOffset={-6}\n invisible={!badgeVisible}\n verticalOffset={-4.5}\n >\n {iconElement}\n </Badge>\n\n <Text style={css(labelStyle)}>\n {children}\n </Text>\n </React.Fragment>\n ) : (\n <Badge\n horizontalOffset={-7}\n invisible={!badgeVisible}\n verticalOffset={3}\n >\n <Text style={css(labelStyle)}>\n {children}\n </Text>\n </Badge>\n )}\n </React.Fragment>\n );\n\n return (\n <TabBase\n style={tabBaseStyle}\n {...otherProps}\n >\n <View onLayout={onTabInnerLayout} style={tabInnerStyle}>\n {tabElement}\n </View>\n </TabBase>\n );\n};\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAGA;;;;;;AAEA,MAAMA,MAAM,GAAGC,kBAAA,CAAWC,MAAX,CAAkB;EAC7BC,IAAI,EAAE,EACF;IACA,IAAIC,qBAAA,CAASC,EAAT,KAAgB,KAAhB,GAAwB;MAAEC,QAAQ,EAAE;IAAZ,CAAxB,GAA+C,EAAnD;EAFE,CADuB;EAK7BC,WAAW,EAAE;IACTC,UAAU,EAAE,QADH;IAETC,cAAc,EAAE;EAFP;AALgB,CAAlB,CAAf;;AAWe,SAASC,GAAT,CAAaC,KAAb,EAA8B;EACzC,MAAM;IACFC,YAAY,GAAG,KADb;IAEFC,QAFE;IAGFC,eAAe,GAAG,KAHhB;IAIFC,IAAI,EAAEC,WAJJ;IAKFC,QAAQ,GAAG,KALT;IAMFC,YANE;IAOFC,OAAO,GAAG,SAPR;IAQFC,KAAK,EAAEC,SARL;IASFC,gBATE;IAUF,GAAGC;EAVD,IAWFZ,KAXJ;EAaA,MAAM;IACFa,SAAS,EAAEC,cADT;IAEFC,KAAK,EAAEC,UAFL;IAGFC,KAAK,EAAEC;EAHL,IAIF,IAAAC,2BAAA,EAAmBX,OAAnB,EAA4BF,QAA5B,CAJJ;EAMA,MAAMc,YAAY,GAAG,IAAAC,WAAA,EAAI,CACrBhC,MAAM,CAACG,IADc,EAErBsB,cAFqB,EAGrBJ,SAHqB,CAAJ,CAArB;EAMA,MAAMY,aAAa,GAAG,IAAAD,WAAA,EAAI,CACtBhC,MAAM,CAACO,WADe,EAEtBoB,UAFsB,CAAJ,CAAtB;EAKA,MAAMZ,IAAI,GAAGE,QAAQ,GAAIC,YAAY,IAAIF,WAApB,GAAmCA,WAAxD;EACA,MAAMkB,WAAW,GAAG,IAAAC,yBAAA,EAAmBpB,IAAnB,CAApB;EAEA,MAAMqB,UAAU,GAAG,OAAOvB,QAAP,KAAoB,QAApB,GACf,IAAAsB,yBAAA,EAAmBtB,QAAnB,EAA6B;IACzBI;EADyB,CAA7B,CADe,gBAKf,6BAAC,cAAD,CAAO,QAAP,QACKiB,WAAW,gBACR,6BAAC,cAAD,CAAO,QAAP,qBACI,6BAAC,cAAD;IACI,gBAAgB,EAAE,CAAC,CADvB;IAEI,SAAS,EAAE,CAACtB,YAFhB;IAGI,cAAc,EAAE,CAAC;EAHrB,GAKKsB,WALL,CADJ,eASI,6BAAC,iBAAD;IAAM,KAAK,EAAE,IAAAF,WAAA,EAAIH,UAAJ;EAAb,GACKhB,QADL,CATJ,CADQ,gBAeR,6BAAC,cAAD;IACI,gBAAgB,EAAE,CAAC,CADvB;IAEI,SAAS,EAAE,CAACD,YAFhB;IAGI,cAAc,EAAE;EAHpB,gBAKI,6BAAC,iBAAD;IAAM,KAAK,EAAE,IAAAoB,WAAA,EAAIH,UAAJ;EAAb,GACKhB,QADL,CALJ,CAhBR,CALJ;EAkCA,oBACI,6BAAC,gBAAD;IACI,KAAK,EAAEkB;EADX,GAEQR,UAFR,gBAII,6BAAC,iBAAD;IAAM,QAAQ,EAAED,gBAAhB;IAAkC,KAAK,EAAEW;EAAzC,GACKG,UADL,CAJJ,CADJ;AAUH;;AAAA"}
|
|
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.tabVariants = void 0;
|
|
7
|
-
const tabVariants = ['default', 'circular', 'bottom-navigation'];
|
|
7
|
+
const tabVariants = ['default', 'circular', 'circular-home', 'bottom-navigation'];
|
|
8
8
|
exports.tabVariants = tabVariants;
|
|
9
9
|
//# sourceMappingURL=TabProps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["tabVariants"],"sources":["TabProps.ts"],"sourcesContent":["import React from 'react';\nimport type { LayoutChangeEvent } from 'react-native';\nimport type { TabBaseProps } from '../TabBase';\nimport type { OverridableComponentProps } from '../types';\n\nexport const tabVariants = ['default', 'circular', 'bottom-navigation'] as const;\nexport type TabVariant = typeof tabVariants[number];\n\nexport default interface TabProps extends OverridableComponentProps<TabBaseProps, {\n /**\n * If `true`, the badge is visible.\n * @default false\n */\n badgeVisible?: boolean;\n\n /**\n * The label of the Tab.\n */\n children: string | React.ReactElement;\n\n /**\n * If `true`, the indicator is enabled.\n * @default false\n */\n enableIndicator?: boolean;\n\n /**\n * If `true`, the component is selected.\n * @default false\n */\n selected?: boolean;\n\n /**\n * Element placed before the children.\n */\n icon?: React.ReactElement;\n\n /**\n * If supplied, use this icon on selected state.\n */\n selectedIcon?: React.ReactElement;\n\n /**\n * The variant to use.\n * @default 'default'\n */\n variant?: TabVariant;\n\n /**\n * Function to be passed to the child component's onLayout prop.\n */\n onTabInnerLayout?: (event: LayoutChangeEvent) => void;\n}> {}\n"],"mappings":";;;;;;AAKO,MAAMA,WAAW,GAAG,CAAC,SAAD,EAAY,UAAZ,EAAwB,
|
|
1
|
+
{"version":3,"names":["tabVariants"],"sources":["TabProps.ts"],"sourcesContent":["import React from 'react';\nimport type { LayoutChangeEvent } from 'react-native';\nimport type { TabBaseProps } from '../TabBase';\nimport type { OverridableComponentProps } from '../types';\n\nexport const tabVariants = ['default', 'circular', 'circular-home', 'bottom-navigation'] as const;\nexport type TabVariant = typeof tabVariants[number];\n\nexport default interface TabProps extends OverridableComponentProps<TabBaseProps, {\n /**\n * If `true`, the badge is visible.\n * @default false\n */\n badgeVisible?: boolean;\n\n /**\n * The label of the Tab.\n */\n children: string | React.ReactElement;\n\n /**\n * If `true`, the indicator is enabled.\n * @default false\n */\n enableIndicator?: boolean;\n\n /**\n * If `true`, the component is selected.\n * @default false\n */\n selected?: boolean;\n\n /**\n * Element placed before the children.\n */\n icon?: React.ReactElement;\n\n /**\n * If supplied, use this icon on selected state.\n */\n selectedIcon?: React.ReactElement;\n\n /**\n * The variant to use.\n * @default 'default'\n */\n variant?: TabVariant;\n\n /**\n * Function to be passed to the child component's onLayout prop.\n */\n onTabInnerLayout?: (event: LayoutChangeEvent) => void;\n}> {}\n"],"mappings":";;;;;;AAKO,MAAMA,WAAW,GAAG,CAAC,SAAD,EAAY,UAAZ,EAAwB,eAAxB,EAAyC,mBAAzC,CAApB"}
|
|
@@ -24,17 +24,44 @@ function useVariantStyleMap(variant, selected) {
|
|
|
24
24
|
inner: {
|
|
25
25
|
backgroundColor: selected ? theme.palette.fill.base : theme.palette.fill.weaker,
|
|
26
26
|
borderRadius: theme.shape.radius.full,
|
|
27
|
-
|
|
27
|
+
flexDirection: 'row',
|
|
28
|
+
gap: 5,
|
|
29
|
+
paddingHorizontal: theme.spacing(3.5),
|
|
28
30
|
paddingVertical: theme.spacing(1.75)
|
|
29
31
|
},
|
|
30
32
|
label: (0, _styles2.createFontStyle)(theme, {
|
|
31
33
|
selector: _ => (0, _styles.typographyOf)({
|
|
32
34
|
fontSize: 14,
|
|
33
35
|
lineHeight: 18.2,
|
|
34
|
-
fontFamily:
|
|
36
|
+
fontFamily: 'PretendardStd-SemiBold',
|
|
35
37
|
letterSpacing: 0
|
|
36
38
|
}),
|
|
37
|
-
color: selected ? theme.palette.text.strongInverse : theme.palette.text.
|
|
39
|
+
color: selected ? theme.palette.text.strongInverse : theme.palette.text.base
|
|
40
|
+
})
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
case 'circular-home':
|
|
44
|
+
return {
|
|
45
|
+
container: {
|
|
46
|
+
paddingHorizontal: theme.spacing(0.75),
|
|
47
|
+
paddingVertical: theme.spacing(1)
|
|
48
|
+
},
|
|
49
|
+
inner: {
|
|
50
|
+
backgroundColor: selected ? theme.palette.fill.base : theme.palette.surface.base,
|
|
51
|
+
borderRadius: theme.shape.radius.full,
|
|
52
|
+
flexDirection: 'row',
|
|
53
|
+
gap: 5,
|
|
54
|
+
paddingHorizontal: 14,
|
|
55
|
+
paddingVertical: 8.5
|
|
56
|
+
},
|
|
57
|
+
label: (0, _styles2.createFontStyle)(theme, {
|
|
58
|
+
selector: _ => (0, _styles.typographyOf)({
|
|
59
|
+
fontSize: 15,
|
|
60
|
+
lineHeight: 19.5,
|
|
61
|
+
fontFamily: 'LexendDeca-Medium',
|
|
62
|
+
letterSpacing: 0
|
|
63
|
+
}),
|
|
64
|
+
color: selected ? theme.palette.text.strongInverse : theme.palette.text.base
|
|
38
65
|
})
|
|
39
66
|
};
|
|
40
67
|
|
|
@@ -47,6 +74,10 @@ function useVariantStyleMap(variant, selected) {
|
|
|
47
74
|
paddingTop: theme.spacing(2.625),
|
|
48
75
|
width: 48
|
|
49
76
|
},
|
|
77
|
+
inner: {
|
|
78
|
+
flexDirection: 'column',
|
|
79
|
+
gap: 4.75
|
|
80
|
+
},
|
|
50
81
|
label: (0, _styles2.createFontStyle)(theme, {
|
|
51
82
|
selector: _ => (0, _styles.typographyOf)({
|
|
52
83
|
fontSize: 10,
|
|
@@ -64,6 +95,10 @@ function useVariantStyleMap(variant, selected) {
|
|
|
64
95
|
container: {
|
|
65
96
|
padding: theme.spacing(2.5)
|
|
66
97
|
},
|
|
98
|
+
inner: {
|
|
99
|
+
flexDirection: 'row',
|
|
100
|
+
gap: 5
|
|
101
|
+
},
|
|
67
102
|
label: (0, _styles2.createFontStyle)(theme, {
|
|
68
103
|
selector: _ => (0, _styles.typographyOf)({
|
|
69
104
|
fontSize: 15,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useVariantStyleMap","variant","selected","theme","useTheme","useMemo","container","paddingHorizontal","spacing","paddingVertical","inner","backgroundColor","palette","fill","base","weaker","borderRadius","shape","radius","full","label","createFontStyle","selector","_","typographyOf","fontSize","lineHeight","fontFamily","letterSpacing","color","text","strongInverse","
|
|
1
|
+
{"version":3,"names":["useVariantStyleMap","variant","selected","theme","useTheme","useMemo","container","paddingHorizontal","spacing","paddingVertical","inner","backgroundColor","palette","fill","base","weaker","borderRadius","shape","radius","full","flexDirection","gap","label","createFontStyle","selector","_","typographyOf","fontSize","lineHeight","fontFamily","letterSpacing","color","text","strongInverse","surface","alignItems","height","justifyContent","paddingTop","width","strong","padding"],"sources":["useVariantStyleMap.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { TextStyle } from 'react-native';\nimport type { FountainUiStyle } from '@fountain-ui/styles';\nimport { typographyOf } from '@fountain-ui/styles';\nimport { createFontStyle, useTheme } from '../styles';\nimport type { TabVariant } from './TabProps';\n\ninterface VariantStyle {\n container: FountainUiStyle;\n inner?: FountainUiStyle;\n label: TextStyle;\n}\n\nexport default function useVariantStyleMap(variant: TabVariant, selected: boolean): VariantStyle {\n const theme = useTheme();\n\n return useMemo<VariantStyle>(() => {\n switch (variant) {\n case 'circular':\n return {\n container: {\n paddingHorizontal: theme.spacing(0.75),\n paddingVertical: theme.spacing(1),\n },\n inner: {\n backgroundColor: selected\n ? theme.palette.fill.base\n : theme.palette.fill.weaker,\n borderRadius: theme.shape.radius.full,\n flexDirection: 'row',\n gap: 5,\n paddingHorizontal: theme.spacing(3.5),\n paddingVertical: theme.spacing(1.75),\n },\n label: createFontStyle(theme, {\n selector: (_) => typographyOf({\n fontSize: 14,\n lineHeight: 18.2,\n fontFamily: 'PretendardStd-SemiBold',\n letterSpacing: 0,\n }),\n color: selected\n ? theme.palette.text.strongInverse\n : theme.palette.text.base,\n }),\n };\n case 'circular-home':\n return {\n container: {\n paddingHorizontal: theme.spacing(0.75),\n paddingVertical: theme.spacing(1),\n },\n inner: {\n backgroundColor: selected\n ? theme.palette.fill.base\n : theme.palette.surface.base,\n borderRadius: theme.shape.radius.full,\n flexDirection: 'row',\n gap: 5,\n paddingHorizontal: 14,\n paddingVertical: 8.5,\n },\n label: createFontStyle(theme, {\n selector: (_) => typographyOf({\n fontSize: 15,\n lineHeight: 19.5,\n fontFamily: 'LexendDeca-Medium',\n letterSpacing: 0,\n }),\n color: selected\n ? theme.palette.text.strongInverse\n : theme.palette.text.base,\n }),\n };\n case 'bottom-navigation':\n return {\n container: {\n alignItems: 'center',\n height: 49,\n justifyContent: 'flex-start',\n paddingTop: theme.spacing(2.625),\n width: 48,\n },\n inner: {\n flexDirection: 'column',\n gap: 4.75,\n },\n label: createFontStyle(theme, {\n selector: (_) => typographyOf({\n fontSize: 10,\n lineHeight: 10,\n fontFamily: 'PretendardStd-Medium',\n letterSpacing: -0.1,\n }),\n color: selected\n ? theme.palette.text.strong\n : theme.palette.text.base,\n }),\n };\n case 'default':\n default:\n return {\n container: {\n padding: theme.spacing(2.5),\n },\n inner: {\n flexDirection: 'row',\n gap: 5,\n },\n label: createFontStyle(theme, {\n selector: (_) => typographyOf({\n fontSize: 15,\n lineHeight: 18.75,\n fontFamily: selected ? 'PretendardStd-SemiBold' : 'PretendardStd-Medium',\n letterSpacing: 0,\n }),\n color: selected\n ? theme.palette.text.strong\n : theme.palette.text.base,\n }),\n };\n }\n }, [theme, variant, selected]);\n}\n"],"mappings":"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"}
|
|
@@ -20,12 +20,6 @@ const useStyles = function () {
|
|
|
20
20
|
root: {
|
|
21
21
|
alignItems: 'center',
|
|
22
22
|
justifyContent: 'center'
|
|
23
|
-
},
|
|
24
|
-
row: {
|
|
25
|
-
flexDirection: 'row'
|
|
26
|
-
},
|
|
27
|
-
column: {
|
|
28
|
-
flexDirection: 'column'
|
|
29
23
|
}
|
|
30
24
|
};
|
|
31
25
|
};
|
|
@@ -36,7 +30,6 @@ function TabBase(props) {
|
|
|
36
30
|
disabled = false,
|
|
37
31
|
onPress,
|
|
38
32
|
selected = false,
|
|
39
|
-
vertical = false,
|
|
40
33
|
style,
|
|
41
34
|
...otherProps
|
|
42
35
|
} = props;
|
|
@@ -44,7 +37,7 @@ function TabBase(props) {
|
|
|
44
37
|
return /*#__PURE__*/_react.default.createElement(_ButtonBase.default, _extends({
|
|
45
38
|
onPress: onPress,
|
|
46
39
|
disabled: disabled,
|
|
47
|
-
style: (0, _styles.css)([styles.root,
|
|
40
|
+
style: (0, _styles.css)([styles.root, style])
|
|
48
41
|
}, otherProps), children);
|
|
49
42
|
}
|
|
50
43
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useStyles","root","alignItems","justifyContent","
|
|
1
|
+
{"version":3,"names":["useStyles","root","alignItems","justifyContent","TabBase","props","children","disabled","onPress","selected","style","otherProps","styles","css"],"sources":["TabBase.tsx"],"sourcesContent":["import React from 'react';\nimport { css, NamedStylesStringUnion, UseStyles } from '@fountain-ui/styles';\nimport ButtonBase from '../ButtonBase';\nimport type TabBaseProps from './TabBaseProps';\n\ntype TabBaseStyles = NamedStylesStringUnion<'root'>;\n\nconst useStyles: UseStyles<TabBaseStyles> = function (): TabBaseStyles {\n return {\n root: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n };\n};\n\nexport default function TabBase(props: TabBaseProps) {\n const {\n children,\n disabled = false,\n onPress,\n selected = false,\n style,\n ...otherProps\n } = props;\n\n const styles = useStyles();\n\n return (\n <ButtonBase\n onPress={onPress}\n disabled={disabled}\n style={css([\n styles.root,\n style,\n ])}\n {...otherProps}\n >\n {children}\n </ButtonBase>\n );\n};\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;;;AAKA,MAAMA,SAAmC,GAAG,YAA2B;EACnE,OAAO;IACHC,IAAI,EAAE;MACFC,UAAU,EAAE,QADV;MAEFC,cAAc,EAAE;IAFd;EADH,CAAP;AAMH,CAPD;;AASe,SAASC,OAAT,CAAiBC,KAAjB,EAAsC;EACjD,MAAM;IACFC,QADE;IAEFC,QAAQ,GAAG,KAFT;IAGFC,OAHE;IAIFC,QAAQ,GAAG,KAJT;IAKFC,KALE;IAMF,GAAGC;EAND,IAOFN,KAPJ;EASA,MAAMO,MAAM,GAAGZ,SAAS,EAAxB;EAEA,oBACI,6BAAC,mBAAD;IACI,OAAO,EAAEQ,OADb;IAEI,QAAQ,EAAED,QAFd;IAGI,KAAK,EAAE,IAAAM,WAAA,EAAI,CACPD,MAAM,CAACX,IADA,EAEPS,KAFO,CAAJ;EAHX,GAOQC,UAPR,GASKL,QATL,CADJ;AAaH;;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["TabBaseProps.ts"],"sourcesContent":["import React from 'react';\nimport type { OverridableComponentProps } from '../types';\nimport type { ButtonBaseProps } from '../ButtonBase';\n\nexport default interface TabBaseProps extends OverridableComponentProps<ButtonBaseProps, {\n /**\n * Content of the TabBase.\n */\n children: React.ReactNode;\n\n /**\n * If `true`, the component is selected.\n * @default false\n */\n selected?: boolean;\n
|
|
1
|
+
{"version":3,"names":[],"sources":["TabBaseProps.ts"],"sourcesContent":["import React from 'react';\nimport type { OverridableComponentProps } from '../types';\nimport type { ButtonBaseProps } from '../ButtonBase';\n\nexport default interface TabBaseProps extends OverridableComponentProps<ButtonBaseProps, {\n /**\n * Content of the TabBase.\n */\n children: React.ReactNode;\n\n /**\n * If `true`, the component is selected.\n * @default false\n */\n selected?: boolean;\n}> {}\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useTabsStyle","variant","theme","useTheme","isDesktop","useBreakpointUp","useMemo","container","paddingBottom","paddingHorizontal"],"sources":["useTabsStyle.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport type { FountainUiStyle } from '@fountain-ui/styles';\nimport { useBreakpointUp } from '../hooks';\nimport { useTheme } from '../styles';\nimport type { TabVariant } from '../Tab';\n\ninterface TabsStyle {\n container: FountainUiStyle;\n}\n\nexport default function useTabsStyle(variant: TabVariant) {\n const theme = useTheme();\n\n const isDesktop = useBreakpointUp('md', true, false);\n\n return useMemo<TabsStyle>(() => {\n switch (variant) {\n case 'circular':\n return {\n container: {\n paddingBottom: 8,\n paddingHorizontal: isDesktop ? 20 : 12,\n },\n };\n case 'bottom-navigation':\n return {\n container: {},\n };\n case 'default':\n default:\n return {\n container: {\n paddingHorizontal: isDesktop ? 14 : 6,\n },\n };\n }\n }, [theme, variant, isDesktop]);\n}\n"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;AAOe,SAASA,YAAT,CAAsBC,OAAtB,EAA2C;EACtD,MAAMC,KAAK,GAAG,IAAAC,gBAAA,GAAd;EAEA,MAAMC,SAAS,GAAG,IAAAC,sBAAA,EAAgB,IAAhB,EAAsB,IAAtB,EAA4B,KAA5B,CAAlB;EAEA,OAAO,IAAAC,cAAA,EAAmB,MAAM;IAC5B,QAAQL,OAAR;MACI,KAAK,UAAL;QACI,OAAO;UACHM,SAAS,EAAE;YACPC,aAAa,EAAE,CADR;YAEPC,iBAAiB,EAAEL,SAAS,GAAG,EAAH,GAAQ;UAF7B;QADR,CAAP;;MAMJ,KAAK,mBAAL;QACI,OAAO;UACHG,SAAS,EAAE;QADR,CAAP;;
|
|
1
|
+
{"version":3,"names":["useTabsStyle","variant","theme","useTheme","isDesktop","useBreakpointUp","useMemo","container","paddingBottom","paddingHorizontal","borderTopColor","palette","border","base","borderTopWidth"],"sources":["useTabsStyle.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport type { FountainUiStyle } from '@fountain-ui/styles';\nimport { useBreakpointUp } from '../hooks';\nimport { useTheme } from '../styles';\nimport type { TabVariant } from '../Tab';\n\ninterface TabsStyle {\n container: FountainUiStyle;\n}\n\nexport default function useTabsStyle(variant: TabVariant) {\n const theme = useTheme();\n\n const isDesktop = useBreakpointUp('md', true, false);\n\n return useMemo<TabsStyle>(() => {\n switch (variant) {\n case 'circular':\n return {\n container: {\n paddingBottom: 8,\n paddingHorizontal: isDesktop ? 20 : 12,\n },\n };\n case 'bottom-navigation':\n return {\n container: {\n borderTopColor: theme.palette.border.base,\n borderTopWidth: 0.5,\n },\n };\n case 'default':\n default:\n return {\n container: {\n paddingHorizontal: isDesktop ? 14 : 6,\n },\n };\n }\n }, [theme, variant, isDesktop]);\n}\n"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;AAOe,SAASA,YAAT,CAAsBC,OAAtB,EAA2C;EACtD,MAAMC,KAAK,GAAG,IAAAC,gBAAA,GAAd;EAEA,MAAMC,SAAS,GAAG,IAAAC,sBAAA,EAAgB,IAAhB,EAAsB,IAAtB,EAA4B,KAA5B,CAAlB;EAEA,OAAO,IAAAC,cAAA,EAAmB,MAAM;IAC5B,QAAQL,OAAR;MACI,KAAK,UAAL;QACI,OAAO;UACHM,SAAS,EAAE;YACPC,aAAa,EAAE,CADR;YAEPC,iBAAiB,EAAEL,SAAS,GAAG,EAAH,GAAQ;UAF7B;QADR,CAAP;;MAMJ,KAAK,mBAAL;QACI,OAAO;UACHG,SAAS,EAAE;YACPG,cAAc,EAAER,KAAK,CAACS,OAAN,CAAcC,MAAd,CAAqBC,IAD9B;YAEPC,cAAc,EAAE;UAFT;QADR,CAAP;;MAMJ,KAAK,SAAL;MACA;QACI,OAAO;UACHP,SAAS,EAAE;YACPE,iBAAiB,EAAEL,SAAS,GAAG,EAAH,GAAQ;UAD7B;QADR,CAAP;IAjBR;EAuBH,CAxBM,EAwBJ,CAACF,KAAD,EAAQD,OAAR,EAAiBG,SAAjB,CAxBI,CAAP;AAyBH"}
|
package/build/module/Tab/Tab.js
CHANGED
|
@@ -3,9 +3,8 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
|
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { Platform, Text, View } from 'react-native';
|
|
5
5
|
import Badge from '../Badge';
|
|
6
|
-
import Spacer from '../Spacer';
|
|
7
6
|
import TabBase from '../TabBase';
|
|
8
|
-
import { css, StyleSheet
|
|
7
|
+
import { css, StyleSheet } from '../styles';
|
|
9
8
|
import { cloneElementSafely } from '../utils';
|
|
10
9
|
import useVariantStyleMap from './useVariantStyleMap';
|
|
11
10
|
const styles = StyleSheet.create({
|
|
@@ -32,8 +31,6 @@ export default function Tab(props) {
|
|
|
32
31
|
onTabInnerLayout,
|
|
33
32
|
...otherProps
|
|
34
33
|
} = props;
|
|
35
|
-
const theme = useTheme();
|
|
36
|
-
const vertical = variant === 'bottom-navigation';
|
|
37
34
|
const {
|
|
38
35
|
container: containerStyle,
|
|
39
36
|
inner: innerStyle,
|
|
@@ -41,21 +38,15 @@ export default function Tab(props) {
|
|
|
41
38
|
} = useVariantStyleMap(variant, selected);
|
|
42
39
|
const tabBaseStyle = css([styles.root, containerStyle, styleProp]);
|
|
43
40
|
const tabInnerStyle = css([styles.filledInner, innerStyle]);
|
|
44
|
-
const pressEffect = selected ? 'none' : 'opacity';
|
|
45
41
|
const icon = selected ? selectedIcon || defaultIcon : defaultIcon;
|
|
46
|
-
const
|
|
47
|
-
const iconElement = cloneElementSafely(icon, {
|
|
48
|
-
fill: iconColor
|
|
49
|
-
});
|
|
42
|
+
const iconElement = cloneElementSafely(icon);
|
|
50
43
|
const tabElement = typeof children !== 'string' ? cloneElementSafely(children, {
|
|
51
44
|
selected
|
|
52
45
|
}) : /*#__PURE__*/React.createElement(React.Fragment, null, iconElement ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Badge, {
|
|
53
46
|
horizontalOffset: -6,
|
|
54
47
|
invisible: !badgeVisible,
|
|
55
48
|
verticalOffset: -4.5
|
|
56
|
-
}, iconElement), /*#__PURE__*/React.createElement(
|
|
57
|
-
size: 1.25
|
|
58
|
-
}), /*#__PURE__*/React.createElement(Text, {
|
|
49
|
+
}, iconElement), /*#__PURE__*/React.createElement(Text, {
|
|
59
50
|
style: css(labelStyle)
|
|
60
51
|
}, children)) : /*#__PURE__*/React.createElement(Badge, {
|
|
61
52
|
horizontalOffset: -7,
|
|
@@ -65,9 +56,7 @@ export default function Tab(props) {
|
|
|
65
56
|
style: css(labelStyle)
|
|
66
57
|
}, children)));
|
|
67
58
|
return /*#__PURE__*/React.createElement(TabBase, _extends({
|
|
68
|
-
|
|
69
|
-
style: tabBaseStyle,
|
|
70
|
-
vertical: vertical
|
|
59
|
+
style: tabBaseStyle
|
|
71
60
|
}, otherProps), /*#__PURE__*/React.createElement(View, {
|
|
72
61
|
onLayout: onTabInnerLayout,
|
|
73
62
|
style: tabInnerStyle
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Platform","Text","View","Badge","
|
|
1
|
+
{"version":3,"names":["React","Platform","Text","View","Badge","TabBase","css","StyleSheet","cloneElementSafely","useVariantStyleMap","styles","create","root","OS","minWidth","filledInner","alignItems","justifyContent","Tab","props","badgeVisible","children","enableIndicator","icon","defaultIcon","selected","selectedIcon","variant","style","styleProp","onTabInnerLayout","otherProps","container","containerStyle","inner","innerStyle","label","labelStyle","tabBaseStyle","tabInnerStyle","iconElement","tabElement"],"sources":["Tab.tsx"],"sourcesContent":["import React from 'react';\nimport { Platform, Text, View } from 'react-native';\nimport Badge from '../Badge';\nimport TabBase from '../TabBase';\nimport { css, StyleSheet } from '../styles';\nimport { cloneElementSafely } from '../utils';\nimport type TabProps from './TabProps';\nimport type { TabVariant } from './TabProps';\nimport useVariantStyleMap from './useVariantStyleMap';\n\nconst styles = StyleSheet.create({\n root: {\n // TODO: Remove redundant platform checking\n ...(Platform.OS === 'web' ? { minWidth: 'auto' } : {}),\n },\n filledInner: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nexport default function Tab(props: TabProps) {\n const {\n badgeVisible = false,\n children,\n enableIndicator = false,\n icon: defaultIcon,\n selected = false,\n selectedIcon,\n variant = 'default' as TabVariant,\n style: styleProp,\n onTabInnerLayout,\n ...otherProps\n } = props;\n\n const {\n container: containerStyle,\n inner: innerStyle,\n label: labelStyle,\n } = useVariantStyleMap(variant, selected);\n\n const tabBaseStyle = css([\n styles.root,\n containerStyle,\n styleProp,\n ]);\n\n const tabInnerStyle = css([\n styles.filledInner,\n innerStyle,\n ]);\n\n const icon = selected ? (selectedIcon || defaultIcon) : defaultIcon;\n const iconElement = cloneElementSafely(icon);\n\n const tabElement = typeof children !== 'string' ? (\n cloneElementSafely(children, {\n selected,\n })\n ) : (\n <React.Fragment>\n {iconElement ? (\n <React.Fragment>\n <Badge\n horizontalOffset={-6}\n invisible={!badgeVisible}\n verticalOffset={-4.5}\n >\n {iconElement}\n </Badge>\n\n <Text style={css(labelStyle)}>\n {children}\n </Text>\n </React.Fragment>\n ) : (\n <Badge\n horizontalOffset={-7}\n invisible={!badgeVisible}\n verticalOffset={3}\n >\n <Text style={css(labelStyle)}>\n {children}\n </Text>\n </Badge>\n )}\n </React.Fragment>\n );\n\n return (\n <TabBase\n style={tabBaseStyle}\n {...otherProps}\n >\n <View onLayout={onTabInnerLayout} style={tabInnerStyle}>\n {tabElement}\n </View>\n </TabBase>\n );\n};\n"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,QAAT,EAAmBC,IAAnB,EAAyBC,IAAzB,QAAqC,cAArC;AACA,OAAOC,KAAP,MAAkB,UAAlB;AACA,OAAOC,OAAP,MAAoB,YAApB;AACA,SAASC,GAAT,EAAcC,UAAd,QAAgC,WAAhC;AACA,SAASC,kBAAT,QAAmC,UAAnC;AAGA,OAAOC,kBAAP,MAA+B,sBAA/B;AAEA,MAAMC,MAAM,GAAGH,UAAU,CAACI,MAAX,CAAkB;EAC7BC,IAAI,EAAE,EACF;IACA,IAAIX,QAAQ,CAACY,EAAT,KAAgB,KAAhB,GAAwB;MAAEC,QAAQ,EAAE;IAAZ,CAAxB,GAA+C,EAAnD;EAFE,CADuB;EAK7BC,WAAW,EAAE;IACTC,UAAU,EAAE,QADH;IAETC,cAAc,EAAE;EAFP;AALgB,CAAlB,CAAf;AAWA,eAAe,SAASC,GAAT,CAAaC,KAAb,EAA8B;EACzC,MAAM;IACFC,YAAY,GAAG,KADb;IAEFC,QAFE;IAGFC,eAAe,GAAG,KAHhB;IAIFC,IAAI,EAAEC,WAJJ;IAKFC,QAAQ,GAAG,KALT;IAMFC,YANE;IAOFC,OAAO,GAAG,SAPR;IAQFC,KAAK,EAAEC,SARL;IASFC,gBATE;IAUF,GAAGC;EAVD,IAWFZ,KAXJ;EAaA,MAAM;IACFa,SAAS,EAAEC,cADT;IAEFC,KAAK,EAAEC,UAFL;IAGFC,KAAK,EAAEC;EAHL,IAIF5B,kBAAkB,CAACkB,OAAD,EAAUF,QAAV,CAJtB;EAMA,MAAMa,YAAY,GAAGhC,GAAG,CAAC,CACrBI,MAAM,CAACE,IADc,EAErBqB,cAFqB,EAGrBJ,SAHqB,CAAD,CAAxB;EAMA,MAAMU,aAAa,GAAGjC,GAAG,CAAC,CACtBI,MAAM,CAACK,WADe,EAEtBoB,UAFsB,CAAD,CAAzB;EAKA,MAAMZ,IAAI,GAAGE,QAAQ,GAAIC,YAAY,IAAIF,WAApB,GAAmCA,WAAxD;EACA,MAAMgB,WAAW,GAAGhC,kBAAkB,CAACe,IAAD,CAAtC;EAEA,MAAMkB,UAAU,GAAG,OAAOpB,QAAP,KAAoB,QAApB,GACfb,kBAAkB,CAACa,QAAD,EAAW;IACzBI;EADyB,CAAX,CADH,gBAKf,oBAAC,KAAD,CAAO,QAAP,QACKe,WAAW,gBACR,oBAAC,KAAD,CAAO,QAAP,qBACI,oBAAC,KAAD;IACI,gBAAgB,EAAE,CAAC,CADvB;IAEI,SAAS,EAAE,CAACpB,YAFhB;IAGI,cAAc,EAAE,CAAC;EAHrB,GAKKoB,WALL,CADJ,eASI,oBAAC,IAAD;IAAM,KAAK,EAAElC,GAAG,CAAC+B,UAAD;EAAhB,GACKhB,QADL,CATJ,CADQ,gBAeR,oBAAC,KAAD;IACI,gBAAgB,EAAE,CAAC,CADvB;IAEI,SAAS,EAAE,CAACD,YAFhB;IAGI,cAAc,EAAE;EAHpB,gBAKI,oBAAC,IAAD;IAAM,KAAK,EAAEd,GAAG,CAAC+B,UAAD;EAAhB,GACKhB,QADL,CALJ,CAhBR,CALJ;EAkCA,oBACI,oBAAC,OAAD;IACI,KAAK,EAAEiB;EADX,GAEQP,UAFR,gBAII,oBAAC,IAAD;IAAM,QAAQ,EAAED,gBAAhB;IAAkC,KAAK,EAAES;EAAzC,GACKE,UADL,CAJJ,CADJ;AAUH;AAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const tabVariants = ['default', 'circular', 'bottom-navigation'];
|
|
1
|
+
export const tabVariants = ['default', 'circular', 'circular-home', 'bottom-navigation'];
|
|
2
2
|
//# sourceMappingURL=TabProps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["tabVariants"],"sources":["TabProps.ts"],"sourcesContent":["import React from 'react';\nimport type { LayoutChangeEvent } from 'react-native';\nimport type { TabBaseProps } from '../TabBase';\nimport type { OverridableComponentProps } from '../types';\n\nexport const tabVariants = ['default', 'circular', 'bottom-navigation'] as const;\nexport type TabVariant = typeof tabVariants[number];\n\nexport default interface TabProps extends OverridableComponentProps<TabBaseProps, {\n /**\n * If `true`, the badge is visible.\n * @default false\n */\n badgeVisible?: boolean;\n\n /**\n * The label of the Tab.\n */\n children: string | React.ReactElement;\n\n /**\n * If `true`, the indicator is enabled.\n * @default false\n */\n enableIndicator?: boolean;\n\n /**\n * If `true`, the component is selected.\n * @default false\n */\n selected?: boolean;\n\n /**\n * Element placed before the children.\n */\n icon?: React.ReactElement;\n\n /**\n * If supplied, use this icon on selected state.\n */\n selectedIcon?: React.ReactElement;\n\n /**\n * The variant to use.\n * @default 'default'\n */\n variant?: TabVariant;\n\n /**\n * Function to be passed to the child component's onLayout prop.\n */\n onTabInnerLayout?: (event: LayoutChangeEvent) => void;\n}> {}\n"],"mappings":"AAKA,OAAO,MAAMA,WAAW,GAAG,CAAC,SAAD,EAAY,UAAZ,EAAwB,
|
|
1
|
+
{"version":3,"names":["tabVariants"],"sources":["TabProps.ts"],"sourcesContent":["import React from 'react';\nimport type { LayoutChangeEvent } from 'react-native';\nimport type { TabBaseProps } from '../TabBase';\nimport type { OverridableComponentProps } from '../types';\n\nexport const tabVariants = ['default', 'circular', 'circular-home', 'bottom-navigation'] as const;\nexport type TabVariant = typeof tabVariants[number];\n\nexport default interface TabProps extends OverridableComponentProps<TabBaseProps, {\n /**\n * If `true`, the badge is visible.\n * @default false\n */\n badgeVisible?: boolean;\n\n /**\n * The label of the Tab.\n */\n children: string | React.ReactElement;\n\n /**\n * If `true`, the indicator is enabled.\n * @default false\n */\n enableIndicator?: boolean;\n\n /**\n * If `true`, the component is selected.\n * @default false\n */\n selected?: boolean;\n\n /**\n * Element placed before the children.\n */\n icon?: React.ReactElement;\n\n /**\n * If supplied, use this icon on selected state.\n */\n selectedIcon?: React.ReactElement;\n\n /**\n * The variant to use.\n * @default 'default'\n */\n variant?: TabVariant;\n\n /**\n * Function to be passed to the child component's onLayout prop.\n */\n onTabInnerLayout?: (event: LayoutChangeEvent) => void;\n}> {}\n"],"mappings":"AAKA,OAAO,MAAMA,WAAW,GAAG,CAAC,SAAD,EAAY,UAAZ,EAAwB,eAAxB,EAAyC,mBAAzC,CAApB"}
|
|
@@ -14,17 +14,44 @@ export default function useVariantStyleMap(variant, selected) {
|
|
|
14
14
|
inner: {
|
|
15
15
|
backgroundColor: selected ? theme.palette.fill.base : theme.palette.fill.weaker,
|
|
16
16
|
borderRadius: theme.shape.radius.full,
|
|
17
|
-
|
|
17
|
+
flexDirection: 'row',
|
|
18
|
+
gap: 5,
|
|
19
|
+
paddingHorizontal: theme.spacing(3.5),
|
|
18
20
|
paddingVertical: theme.spacing(1.75)
|
|
19
21
|
},
|
|
20
22
|
label: createFontStyle(theme, {
|
|
21
23
|
selector: _ => typographyOf({
|
|
22
24
|
fontSize: 14,
|
|
23
25
|
lineHeight: 18.2,
|
|
24
|
-
fontFamily:
|
|
26
|
+
fontFamily: 'PretendardStd-SemiBold',
|
|
25
27
|
letterSpacing: 0
|
|
26
28
|
}),
|
|
27
|
-
color: selected ? theme.palette.text.strongInverse : theme.palette.text.
|
|
29
|
+
color: selected ? theme.palette.text.strongInverse : theme.palette.text.base
|
|
30
|
+
})
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
case 'circular-home':
|
|
34
|
+
return {
|
|
35
|
+
container: {
|
|
36
|
+
paddingHorizontal: theme.spacing(0.75),
|
|
37
|
+
paddingVertical: theme.spacing(1)
|
|
38
|
+
},
|
|
39
|
+
inner: {
|
|
40
|
+
backgroundColor: selected ? theme.palette.fill.base : theme.palette.surface.base,
|
|
41
|
+
borderRadius: theme.shape.radius.full,
|
|
42
|
+
flexDirection: 'row',
|
|
43
|
+
gap: 5,
|
|
44
|
+
paddingHorizontal: 14,
|
|
45
|
+
paddingVertical: 8.5
|
|
46
|
+
},
|
|
47
|
+
label: createFontStyle(theme, {
|
|
48
|
+
selector: _ => typographyOf({
|
|
49
|
+
fontSize: 15,
|
|
50
|
+
lineHeight: 19.5,
|
|
51
|
+
fontFamily: 'LexendDeca-Medium',
|
|
52
|
+
letterSpacing: 0
|
|
53
|
+
}),
|
|
54
|
+
color: selected ? theme.palette.text.strongInverse : theme.palette.text.base
|
|
28
55
|
})
|
|
29
56
|
};
|
|
30
57
|
|
|
@@ -37,6 +64,10 @@ export default function useVariantStyleMap(variant, selected) {
|
|
|
37
64
|
paddingTop: theme.spacing(2.625),
|
|
38
65
|
width: 48
|
|
39
66
|
},
|
|
67
|
+
inner: {
|
|
68
|
+
flexDirection: 'column',
|
|
69
|
+
gap: 4.75
|
|
70
|
+
},
|
|
40
71
|
label: createFontStyle(theme, {
|
|
41
72
|
selector: _ => typographyOf({
|
|
42
73
|
fontSize: 10,
|
|
@@ -54,6 +85,10 @@ export default function useVariantStyleMap(variant, selected) {
|
|
|
54
85
|
container: {
|
|
55
86
|
padding: theme.spacing(2.5)
|
|
56
87
|
},
|
|
88
|
+
inner: {
|
|
89
|
+
flexDirection: 'row',
|
|
90
|
+
gap: 5
|
|
91
|
+
},
|
|
57
92
|
label: createFontStyle(theme, {
|
|
58
93
|
selector: _ => typographyOf({
|
|
59
94
|
fontSize: 15,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMemo","typographyOf","createFontStyle","useTheme","useVariantStyleMap","variant","selected","theme","container","paddingHorizontal","spacing","paddingVertical","inner","backgroundColor","palette","fill","base","weaker","borderRadius","shape","radius","full","label","selector","_","fontSize","lineHeight","fontFamily","letterSpacing","color","text","strongInverse","
|
|
1
|
+
{"version":3,"names":["useMemo","typographyOf","createFontStyle","useTheme","useVariantStyleMap","variant","selected","theme","container","paddingHorizontal","spacing","paddingVertical","inner","backgroundColor","palette","fill","base","weaker","borderRadius","shape","radius","full","flexDirection","gap","label","selector","_","fontSize","lineHeight","fontFamily","letterSpacing","color","text","strongInverse","surface","alignItems","height","justifyContent","paddingTop","width","strong","padding"],"sources":["useVariantStyleMap.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { TextStyle } from 'react-native';\nimport type { FountainUiStyle } from '@fountain-ui/styles';\nimport { typographyOf } from '@fountain-ui/styles';\nimport { createFontStyle, useTheme } from '../styles';\nimport type { TabVariant } from './TabProps';\n\ninterface VariantStyle {\n container: FountainUiStyle;\n inner?: FountainUiStyle;\n label: TextStyle;\n}\n\nexport default function useVariantStyleMap(variant: TabVariant, selected: boolean): VariantStyle {\n const theme = useTheme();\n\n return useMemo<VariantStyle>(() => {\n switch (variant) {\n case 'circular':\n return {\n container: {\n paddingHorizontal: theme.spacing(0.75),\n paddingVertical: theme.spacing(1),\n },\n inner: {\n backgroundColor: selected\n ? theme.palette.fill.base\n : theme.palette.fill.weaker,\n borderRadius: theme.shape.radius.full,\n flexDirection: 'row',\n gap: 5,\n paddingHorizontal: theme.spacing(3.5),\n paddingVertical: theme.spacing(1.75),\n },\n label: createFontStyle(theme, {\n selector: (_) => typographyOf({\n fontSize: 14,\n lineHeight: 18.2,\n fontFamily: 'PretendardStd-SemiBold',\n letterSpacing: 0,\n }),\n color: selected\n ? theme.palette.text.strongInverse\n : theme.palette.text.base,\n }),\n };\n case 'circular-home':\n return {\n container: {\n paddingHorizontal: theme.spacing(0.75),\n paddingVertical: theme.spacing(1),\n },\n inner: {\n backgroundColor: selected\n ? theme.palette.fill.base\n : theme.palette.surface.base,\n borderRadius: theme.shape.radius.full,\n flexDirection: 'row',\n gap: 5,\n paddingHorizontal: 14,\n paddingVertical: 8.5,\n },\n label: createFontStyle(theme, {\n selector: (_) => typographyOf({\n fontSize: 15,\n lineHeight: 19.5,\n fontFamily: 'LexendDeca-Medium',\n letterSpacing: 0,\n }),\n color: selected\n ? theme.palette.text.strongInverse\n : theme.palette.text.base,\n }),\n };\n case 'bottom-navigation':\n return {\n container: {\n alignItems: 'center',\n height: 49,\n justifyContent: 'flex-start',\n paddingTop: theme.spacing(2.625),\n width: 48,\n },\n inner: {\n flexDirection: 'column',\n gap: 4.75,\n },\n label: createFontStyle(theme, {\n selector: (_) => typographyOf({\n fontSize: 10,\n lineHeight: 10,\n fontFamily: 'PretendardStd-Medium',\n letterSpacing: -0.1,\n }),\n color: selected\n ? theme.palette.text.strong\n : theme.palette.text.base,\n }),\n };\n case 'default':\n default:\n return {\n container: {\n padding: theme.spacing(2.5),\n },\n inner: {\n flexDirection: 'row',\n gap: 5,\n },\n label: createFontStyle(theme, {\n selector: (_) => typographyOf({\n fontSize: 15,\n lineHeight: 18.75,\n fontFamily: selected ? 'PretendardStd-SemiBold' : 'PretendardStd-Medium',\n letterSpacing: 0,\n }),\n color: selected\n ? theme.palette.text.strong\n : theme.palette.text.base,\n }),\n };\n }\n }, [theme, variant, selected]);\n}\n"],"mappings":"AAAA,SAASA,OAAT,QAAwB,OAAxB;AAGA,SAASC,YAAT,QAA6B,qBAA7B;AACA,SAASC,eAAT,EAA0BC,QAA1B,QAA0C,WAA1C;AASA,eAAe,SAASC,kBAAT,CAA4BC,OAA5B,EAAiDC,QAAjD,EAAkF;EAC7F,MAAMC,KAAK,GAAGJ,QAAQ,EAAtB;EAEA,OAAOH,OAAO,CAAe,MAAM;IAC/B,QAAQK,OAAR;MACI,KAAK,UAAL;QACI,OAAO;UACHG,SAAS,EAAE;YACPC,iBAAiB,EAAEF,KAAK,CAACG,OAAN,CAAc,IAAd,CADZ;YAEPC,eAAe,EAAEJ,KAAK,CAACG,OAAN,CAAc,CAAd;UAFV,CADR;UAKHE,KAAK,EAAE;YACHC,eAAe,EAAEP,QAAQ,GACnBC,KAAK,CAACO,OAAN,CAAcC,IAAd,CAAmBC,IADA,GAEnBT,KAAK,CAACO,OAAN,CAAcC,IAAd,CAAmBE,MAHtB;YAIHC,YAAY,EAAEX,KAAK,CAACY,KAAN,CAAYC,MAAZ,CAAmBC,IAJ9B;YAKHC,aAAa,EAAE,KALZ;YAMHC,GAAG,EAAE,CANF;YAOHd,iBAAiB,EAAEF,KAAK,CAACG,OAAN,CAAc,GAAd,CAPhB;YAQHC,eAAe,EAAEJ,KAAK,CAACG,OAAN,CAAc,IAAd;UARd,CALJ;UAeHc,KAAK,EAAEtB,eAAe,CAACK,KAAD,EAAQ;YAC1BkB,QAAQ,EAAGC,CAAD,IAAOzB,YAAY,CAAC;cAC1B0B,QAAQ,EAAE,EADgB;cAE1BC,UAAU,EAAE,IAFc;cAG1BC,UAAU,EAAE,wBAHc;cAI1BC,aAAa,EAAE;YAJW,CAAD,CADH;YAO1BC,KAAK,EAAEzB,QAAQ,GACTC,KAAK,CAACO,OAAN,CAAckB,IAAd,CAAmBC,aADV,GAET1B,KAAK,CAACO,OAAN,CAAckB,IAAd,CAAmBhB;UATC,CAAR;QAfnB,CAAP;;MA2BJ,KAAK,eAAL;QACI,OAAO;UACHR,SAAS,EAAE;YACPC,iBAAiB,EAAEF,KAAK,CAACG,OAAN,CAAc,IAAd,CADZ;YAEPC,eAAe,EAAEJ,KAAK,CAACG,OAAN,CAAc,CAAd;UAFV,CADR;UAKHE,KAAK,EAAE;YACHC,eAAe,EAAEP,QAAQ,GACnBC,KAAK,CAACO,OAAN,CAAcC,IAAd,CAAmBC,IADA,GAEnBT,KAAK,CAACO,OAAN,CAAcoB,OAAd,CAAsBlB,IAHzB;YAIHE,YAAY,EAAEX,KAAK,CAACY,KAAN,CAAYC,MAAZ,CAAmBC,IAJ9B;YAKHC,aAAa,EAAE,KALZ;YAMHC,GAAG,EAAE,CANF;YAOHd,iBAAiB,EAAE,EAPhB;YAQHE,eAAe,EAAE;UARd,CALJ;UAeHa,KAAK,EAAEtB,eAAe,CAACK,KAAD,EAAQ;YAC1BkB,QAAQ,EAAGC,CAAD,IAAOzB,YAAY,CAAC;cAC1B0B,QAAQ,EAAE,EADgB;cAE1BC,UAAU,EAAE,IAFc;cAG1BC,UAAU,EAAE,mBAHc;cAI1BC,aAAa,EAAE;YAJW,CAAD,CADH;YAO1BC,KAAK,EAAEzB,QAAQ,GACTC,KAAK,CAACO,OAAN,CAAckB,IAAd,CAAmBC,aADV,GAET1B,KAAK,CAACO,OAAN,CAAckB,IAAd,CAAmBhB;UATC,CAAR;QAfnB,CAAP;;MA2BJ,KAAK,mBAAL;QACI,OAAO;UACHR,SAAS,EAAE;YACP2B,UAAU,EAAE,QADL;YAEPC,MAAM,EAAE,EAFD;YAGPC,cAAc,EAAE,YAHT;YAIPC,UAAU,EAAE/B,KAAK,CAACG,OAAN,CAAc,KAAd,CAJL;YAKP6B,KAAK,EAAE;UALA,CADR;UAQH3B,KAAK,EAAE;YACHU,aAAa,EAAE,QADZ;YAEHC,GAAG,EAAE;UAFF,CARJ;UAYHC,KAAK,EAAEtB,eAAe,CAACK,KAAD,EAAQ;YAC1BkB,QAAQ,EAAGC,CAAD,IAAOzB,YAAY,CAAC;cAC1B0B,QAAQ,EAAE,EADgB;cAE1BC,UAAU,EAAE,EAFc;cAG1BC,UAAU,EAAE,sBAHc;cAI1BC,aAAa,EAAE,CAAC;YAJU,CAAD,CADH;YAO1BC,KAAK,EAAEzB,QAAQ,GACTC,KAAK,CAACO,OAAN,CAAckB,IAAd,CAAmBQ,MADV,GAETjC,KAAK,CAACO,OAAN,CAAckB,IAAd,CAAmBhB;UATC,CAAR;QAZnB,CAAP;;MAwBJ,KAAK,SAAL;MACA;QACI,OAAO;UACHR,SAAS,EAAE;YACPiC,OAAO,EAAElC,KAAK,CAACG,OAAN,CAAc,GAAd;UADF,CADR;UAIHE,KAAK,EAAE;YACHU,aAAa,EAAE,KADZ;YAEHC,GAAG,EAAE;UAFF,CAJJ;UAQHC,KAAK,EAAEtB,eAAe,CAACK,KAAD,EAAQ;YAC1BkB,QAAQ,EAAGC,CAAD,IAAOzB,YAAY,CAAC;cAC1B0B,QAAQ,EAAE,EADgB;cAE1BC,UAAU,EAAE,KAFc;cAG1BC,UAAU,EAAEvB,QAAQ,GAAG,wBAAH,GAA8B,sBAHxB;cAI1BwB,aAAa,EAAE;YAJW,CAAD,CADH;YAO1BC,KAAK,EAAEzB,QAAQ,GACTC,KAAK,CAACO,OAAN,CAAckB,IAAd,CAAmBQ,MADV,GAETjC,KAAK,CAACO,OAAN,CAAckB,IAAd,CAAmBhB;UATC,CAAR;QARnB,CAAP;IApFR;EAyGH,CA1Ga,EA0GX,CAACT,KAAD,EAAQF,OAAR,EAAiBC,QAAjB,CA1GW,CAAd;AA2GH"}
|
|
@@ -9,12 +9,6 @@ const useStyles = function () {
|
|
|
9
9
|
root: {
|
|
10
10
|
alignItems: 'center',
|
|
11
11
|
justifyContent: 'center'
|
|
12
|
-
},
|
|
13
|
-
row: {
|
|
14
|
-
flexDirection: 'row'
|
|
15
|
-
},
|
|
16
|
-
column: {
|
|
17
|
-
flexDirection: 'column'
|
|
18
12
|
}
|
|
19
13
|
};
|
|
20
14
|
};
|
|
@@ -25,7 +19,6 @@ export default function TabBase(props) {
|
|
|
25
19
|
disabled = false,
|
|
26
20
|
onPress,
|
|
27
21
|
selected = false,
|
|
28
|
-
vertical = false,
|
|
29
22
|
style,
|
|
30
23
|
...otherProps
|
|
31
24
|
} = props;
|
|
@@ -33,7 +26,7 @@ export default function TabBase(props) {
|
|
|
33
26
|
return /*#__PURE__*/React.createElement(ButtonBase, _extends({
|
|
34
27
|
onPress: onPress,
|
|
35
28
|
disabled: disabled,
|
|
36
|
-
style: css([styles.root,
|
|
29
|
+
style: css([styles.root, style])
|
|
37
30
|
}, otherProps), children);
|
|
38
31
|
}
|
|
39
32
|
;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","css","ButtonBase","useStyles","root","alignItems","justifyContent","
|
|
1
|
+
{"version":3,"names":["React","css","ButtonBase","useStyles","root","alignItems","justifyContent","TabBase","props","children","disabled","onPress","selected","style","otherProps","styles"],"sources":["TabBase.tsx"],"sourcesContent":["import React from 'react';\nimport { css, NamedStylesStringUnion, UseStyles } from '@fountain-ui/styles';\nimport ButtonBase from '../ButtonBase';\nimport type TabBaseProps from './TabBaseProps';\n\ntype TabBaseStyles = NamedStylesStringUnion<'root'>;\n\nconst useStyles: UseStyles<TabBaseStyles> = function (): TabBaseStyles {\n return {\n root: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n };\n};\n\nexport default function TabBase(props: TabBaseProps) {\n const {\n children,\n disabled = false,\n onPress,\n selected = false,\n style,\n ...otherProps\n } = props;\n\n const styles = useStyles();\n\n return (\n <ButtonBase\n onPress={onPress}\n disabled={disabled}\n style={css([\n styles.root,\n style,\n ])}\n {...otherProps}\n >\n {children}\n </ButtonBase>\n );\n};\n"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,GAAT,QAAuD,qBAAvD;AACA,OAAOC,UAAP,MAAuB,eAAvB;;AAKA,MAAMC,SAAmC,GAAG,YAA2B;EACnE,OAAO;IACHC,IAAI,EAAE;MACFC,UAAU,EAAE,QADV;MAEFC,cAAc,EAAE;IAFd;EADH,CAAP;AAMH,CAPD;;AASA,eAAe,SAASC,OAAT,CAAiBC,KAAjB,EAAsC;EACjD,MAAM;IACFC,QADE;IAEFC,QAAQ,GAAG,KAFT;IAGFC,OAHE;IAIFC,QAAQ,GAAG,KAJT;IAKFC,KALE;IAMF,GAAGC;EAND,IAOFN,KAPJ;EASA,MAAMO,MAAM,GAAGZ,SAAS,EAAxB;EAEA,oBACI,oBAAC,UAAD;IACI,OAAO,EAAEQ,OADb;IAEI,QAAQ,EAAED,QAFd;IAGI,KAAK,EAAET,GAAG,CAAC,CACPc,MAAM,CAACX,IADA,EAEPS,KAFO,CAAD;EAHd,GAOQC,UAPR,GASKL,QATL,CADJ;AAaH;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["TabBaseProps.ts"],"sourcesContent":["import React from 'react';\nimport type { OverridableComponentProps } from '../types';\nimport type { ButtonBaseProps } from '../ButtonBase';\n\nexport default interface TabBaseProps extends OverridableComponentProps<ButtonBaseProps, {\n /**\n * Content of the TabBase.\n */\n children: React.ReactNode;\n\n /**\n * If `true`, the component is selected.\n * @default false\n */\n selected?: boolean;\n
|
|
1
|
+
{"version":3,"names":[],"sources":["TabBaseProps.ts"],"sourcesContent":["import React from 'react';\nimport type { OverridableComponentProps } from '../types';\nimport type { ButtonBaseProps } from '../ButtonBase';\n\nexport default interface TabBaseProps extends OverridableComponentProps<ButtonBaseProps, {\n /**\n * Content of the TabBase.\n */\n children: React.ReactNode;\n\n /**\n * If `true`, the component is selected.\n * @default false\n */\n selected?: boolean;\n}> {}\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMemo","useBreakpointUp","useTheme","useTabsStyle","variant","theme","isDesktop","container","paddingBottom","paddingHorizontal"],"sources":["useTabsStyle.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport type { FountainUiStyle } from '@fountain-ui/styles';\nimport { useBreakpointUp } from '../hooks';\nimport { useTheme } from '../styles';\nimport type { TabVariant } from '../Tab';\n\ninterface TabsStyle {\n container: FountainUiStyle;\n}\n\nexport default function useTabsStyle(variant: TabVariant) {\n const theme = useTheme();\n\n const isDesktop = useBreakpointUp('md', true, false);\n\n return useMemo<TabsStyle>(() => {\n switch (variant) {\n case 'circular':\n return {\n container: {\n paddingBottom: 8,\n paddingHorizontal: isDesktop ? 20 : 12,\n },\n };\n case 'bottom-navigation':\n return {\n container: {},\n };\n case 'default':\n default:\n return {\n container: {\n paddingHorizontal: isDesktop ? 14 : 6,\n },\n };\n }\n }, [theme, variant, isDesktop]);\n}\n"],"mappings":"AAAA,SAASA,OAAT,QAAwB,OAAxB;AAEA,SAASC,eAAT,QAAgC,UAAhC;AACA,SAASC,QAAT,QAAyB,WAAzB;AAOA,eAAe,SAASC,YAAT,CAAsBC,OAAtB,EAA2C;EACtD,MAAMC,KAAK,GAAGH,QAAQ,EAAtB;EAEA,MAAMI,SAAS,GAAGL,eAAe,CAAC,IAAD,EAAO,IAAP,EAAa,KAAb,CAAjC;EAEA,OAAOD,OAAO,CAAY,MAAM;IAC5B,QAAQI,OAAR;MACI,KAAK,UAAL;QACI,OAAO;UACHG,SAAS,EAAE;YACPC,aAAa,EAAE,CADR;YAEPC,iBAAiB,EAAEH,SAAS,GAAG,EAAH,GAAQ;UAF7B;QADR,CAAP;;MAMJ,KAAK,mBAAL;QACI,OAAO;UACHC,SAAS,EAAE;QADR,CAAP;;
|
|
1
|
+
{"version":3,"names":["useMemo","useBreakpointUp","useTheme","useTabsStyle","variant","theme","isDesktop","container","paddingBottom","paddingHorizontal","borderTopColor","palette","border","base","borderTopWidth"],"sources":["useTabsStyle.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport type { FountainUiStyle } from '@fountain-ui/styles';\nimport { useBreakpointUp } from '../hooks';\nimport { useTheme } from '../styles';\nimport type { TabVariant } from '../Tab';\n\ninterface TabsStyle {\n container: FountainUiStyle;\n}\n\nexport default function useTabsStyle(variant: TabVariant) {\n const theme = useTheme();\n\n const isDesktop = useBreakpointUp('md', true, false);\n\n return useMemo<TabsStyle>(() => {\n switch (variant) {\n case 'circular':\n return {\n container: {\n paddingBottom: 8,\n paddingHorizontal: isDesktop ? 20 : 12,\n },\n };\n case 'bottom-navigation':\n return {\n container: {\n borderTopColor: theme.palette.border.base,\n borderTopWidth: 0.5,\n },\n };\n case 'default':\n default:\n return {\n container: {\n paddingHorizontal: isDesktop ? 14 : 6,\n },\n };\n }\n }, [theme, variant, isDesktop]);\n}\n"],"mappings":"AAAA,SAASA,OAAT,QAAwB,OAAxB;AAEA,SAASC,eAAT,QAAgC,UAAhC;AACA,SAASC,QAAT,QAAyB,WAAzB;AAOA,eAAe,SAASC,YAAT,CAAsBC,OAAtB,EAA2C;EACtD,MAAMC,KAAK,GAAGH,QAAQ,EAAtB;EAEA,MAAMI,SAAS,GAAGL,eAAe,CAAC,IAAD,EAAO,IAAP,EAAa,KAAb,CAAjC;EAEA,OAAOD,OAAO,CAAY,MAAM;IAC5B,QAAQI,OAAR;MACI,KAAK,UAAL;QACI,OAAO;UACHG,SAAS,EAAE;YACPC,aAAa,EAAE,CADR;YAEPC,iBAAiB,EAAEH,SAAS,GAAG,EAAH,GAAQ;UAF7B;QADR,CAAP;;MAMJ,KAAK,mBAAL;QACI,OAAO;UACHC,SAAS,EAAE;YACPG,cAAc,EAAEL,KAAK,CAACM,OAAN,CAAcC,MAAd,CAAqBC,IAD9B;YAEPC,cAAc,EAAE;UAFT;QADR,CAAP;;MAMJ,KAAK,SAAL;MACA;QACI,OAAO;UACHP,SAAS,EAAE;YACPE,iBAAiB,EAAEH,SAAS,GAAG,EAAH,GAAQ;UAD7B;QADR,CAAP;IAjBR;EAuBH,CAxBa,EAwBX,CAACD,KAAD,EAAQD,OAAR,EAAiBE,SAAjB,CAxBW,CAAd;AAyBH"}
|
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import type { LayoutChangeEvent } from 'react-native';
|
|
3
3
|
import type { TabBaseProps } from '../TabBase';
|
|
4
4
|
import type { OverridableComponentProps } from '../types';
|
|
5
|
-
export declare const tabVariants: readonly ["default", "circular", "bottom-navigation"];
|
|
5
|
+
export declare const tabVariants: readonly ["default", "circular", "circular-home", "bottom-navigation"];
|
|
6
6
|
export declare type TabVariant = typeof tabVariants[number];
|
|
7
7
|
export default interface TabProps extends OverridableComponentProps<TabBaseProps, {
|
|
8
8
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fountain-ui/core",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.14",
|
|
4
4
|
"author": "Fountain-UI Team",
|
|
5
5
|
"description": "React components that implement Tappytoon's Fountain Design.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -67,5 +67,5 @@
|
|
|
67
67
|
"publishConfig": {
|
|
68
68
|
"access": "public"
|
|
69
69
|
},
|
|
70
|
-
"gitHead": "
|
|
70
|
+
"gitHead": "fde72b58979b933032829708992f15f1321ce408"
|
|
71
71
|
}
|
package/src/Tab/Tab.tsx
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Platform, Text, View } from 'react-native';
|
|
3
3
|
import Badge from '../Badge';
|
|
4
|
-
import Spacer from '../Spacer';
|
|
5
4
|
import TabBase from '../TabBase';
|
|
6
|
-
import { css, StyleSheet
|
|
5
|
+
import { css, StyleSheet } from '../styles';
|
|
7
6
|
import { cloneElementSafely } from '../utils';
|
|
8
7
|
import type TabProps from './TabProps';
|
|
9
8
|
import type { TabVariant } from './TabProps';
|
|
@@ -34,10 +33,6 @@ export default function Tab(props: TabProps) {
|
|
|
34
33
|
...otherProps
|
|
35
34
|
} = props;
|
|
36
35
|
|
|
37
|
-
const theme = useTheme();
|
|
38
|
-
|
|
39
|
-
const vertical = variant === 'bottom-navigation';
|
|
40
|
-
|
|
41
36
|
const {
|
|
42
37
|
container: containerStyle,
|
|
43
38
|
inner: innerStyle,
|
|
@@ -55,11 +50,8 @@ export default function Tab(props: TabProps) {
|
|
|
55
50
|
innerStyle,
|
|
56
51
|
]);
|
|
57
52
|
|
|
58
|
-
const pressEffect = selected ? 'none' : 'opacity';
|
|
59
|
-
|
|
60
53
|
const icon = selected ? (selectedIcon || defaultIcon) : defaultIcon;
|
|
61
|
-
const
|
|
62
|
-
const iconElement = cloneElementSafely(icon, { fill: iconColor });
|
|
54
|
+
const iconElement = cloneElementSafely(icon);
|
|
63
55
|
|
|
64
56
|
const tabElement = typeof children !== 'string' ? (
|
|
65
57
|
cloneElementSafely(children, {
|
|
@@ -77,8 +69,6 @@ export default function Tab(props: TabProps) {
|
|
|
77
69
|
{iconElement}
|
|
78
70
|
</Badge>
|
|
79
71
|
|
|
80
|
-
<Spacer size={1.25}/>
|
|
81
|
-
|
|
82
72
|
<Text style={css(labelStyle)}>
|
|
83
73
|
{children}
|
|
84
74
|
</Text>
|
|
@@ -99,9 +89,7 @@ export default function Tab(props: TabProps) {
|
|
|
99
89
|
|
|
100
90
|
return (
|
|
101
91
|
<TabBase
|
|
102
|
-
pressEffect={pressEffect}
|
|
103
92
|
style={tabBaseStyle}
|
|
104
|
-
vertical={vertical}
|
|
105
93
|
{...otherProps}
|
|
106
94
|
>
|
|
107
95
|
<View onLayout={onTabInnerLayout} style={tabInnerStyle}>
|
package/src/Tab/TabProps.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { LayoutChangeEvent } from 'react-native';
|
|
|
3
3
|
import type { TabBaseProps } from '../TabBase';
|
|
4
4
|
import type { OverridableComponentProps } from '../types';
|
|
5
5
|
|
|
6
|
-
export const tabVariants = ['default', 'circular', 'bottom-navigation'] as const;
|
|
6
|
+
export const tabVariants = ['default', 'circular', 'circular-home', 'bottom-navigation'] as const;
|
|
7
7
|
export type TabVariant = typeof tabVariants[number];
|
|
8
8
|
|
|
9
9
|
export default interface TabProps extends OverridableComponentProps<TabBaseProps, {
|
|
@@ -27,19 +27,49 @@ export default function useVariantStyleMap(variant: TabVariant, selected: boolea
|
|
|
27
27
|
? theme.palette.fill.base
|
|
28
28
|
: theme.palette.fill.weaker,
|
|
29
29
|
borderRadius: theme.shape.radius.full,
|
|
30
|
-
|
|
30
|
+
flexDirection: 'row',
|
|
31
|
+
gap: 5,
|
|
32
|
+
paddingHorizontal: theme.spacing(3.5),
|
|
31
33
|
paddingVertical: theme.spacing(1.75),
|
|
32
34
|
},
|
|
33
35
|
label: createFontStyle(theme, {
|
|
34
36
|
selector: (_) => typographyOf({
|
|
35
37
|
fontSize: 14,
|
|
36
38
|
lineHeight: 18.2,
|
|
37
|
-
fontFamily:
|
|
39
|
+
fontFamily: 'PretendardStd-SemiBold',
|
|
40
|
+
letterSpacing: 0,
|
|
41
|
+
}),
|
|
42
|
+
color: selected
|
|
43
|
+
? theme.palette.text.strongInverse
|
|
44
|
+
: theme.palette.text.base,
|
|
45
|
+
}),
|
|
46
|
+
};
|
|
47
|
+
case 'circular-home':
|
|
48
|
+
return {
|
|
49
|
+
container: {
|
|
50
|
+
paddingHorizontal: theme.spacing(0.75),
|
|
51
|
+
paddingVertical: theme.spacing(1),
|
|
52
|
+
},
|
|
53
|
+
inner: {
|
|
54
|
+
backgroundColor: selected
|
|
55
|
+
? theme.palette.fill.base
|
|
56
|
+
: theme.palette.surface.base,
|
|
57
|
+
borderRadius: theme.shape.radius.full,
|
|
58
|
+
flexDirection: 'row',
|
|
59
|
+
gap: 5,
|
|
60
|
+
paddingHorizontal: 14,
|
|
61
|
+
paddingVertical: 8.5,
|
|
62
|
+
},
|
|
63
|
+
label: createFontStyle(theme, {
|
|
64
|
+
selector: (_) => typographyOf({
|
|
65
|
+
fontSize: 15,
|
|
66
|
+
lineHeight: 19.5,
|
|
67
|
+
fontFamily: 'LexendDeca-Medium',
|
|
38
68
|
letterSpacing: 0,
|
|
39
69
|
}),
|
|
40
70
|
color: selected
|
|
41
71
|
? theme.palette.text.strongInverse
|
|
42
|
-
: theme.palette.text.
|
|
72
|
+
: theme.palette.text.base,
|
|
43
73
|
}),
|
|
44
74
|
};
|
|
45
75
|
case 'bottom-navigation':
|
|
@@ -51,6 +81,10 @@ export default function useVariantStyleMap(variant: TabVariant, selected: boolea
|
|
|
51
81
|
paddingTop: theme.spacing(2.625),
|
|
52
82
|
width: 48,
|
|
53
83
|
},
|
|
84
|
+
inner: {
|
|
85
|
+
flexDirection: 'column',
|
|
86
|
+
gap: 4.75,
|
|
87
|
+
},
|
|
54
88
|
label: createFontStyle(theme, {
|
|
55
89
|
selector: (_) => typographyOf({
|
|
56
90
|
fontSize: 10,
|
|
@@ -69,6 +103,10 @@ export default function useVariantStyleMap(variant: TabVariant, selected: boolea
|
|
|
69
103
|
container: {
|
|
70
104
|
padding: theme.spacing(2.5),
|
|
71
105
|
},
|
|
106
|
+
inner: {
|
|
107
|
+
flexDirection: 'row',
|
|
108
|
+
gap: 5,
|
|
109
|
+
},
|
|
72
110
|
label: createFontStyle(theme, {
|
|
73
111
|
selector: (_) => typographyOf({
|
|
74
112
|
fontSize: 15,
|
package/src/TabBase/TabBase.tsx
CHANGED
|
@@ -3,7 +3,7 @@ import { css, NamedStylesStringUnion, UseStyles } from '@fountain-ui/styles';
|
|
|
3
3
|
import ButtonBase from '../ButtonBase';
|
|
4
4
|
import type TabBaseProps from './TabBaseProps';
|
|
5
5
|
|
|
6
|
-
type TabBaseStyles = NamedStylesStringUnion<'root'
|
|
6
|
+
type TabBaseStyles = NamedStylesStringUnion<'root'>;
|
|
7
7
|
|
|
8
8
|
const useStyles: UseStyles<TabBaseStyles> = function (): TabBaseStyles {
|
|
9
9
|
return {
|
|
@@ -11,12 +11,6 @@ const useStyles: UseStyles<TabBaseStyles> = function (): TabBaseStyles {
|
|
|
11
11
|
alignItems: 'center',
|
|
12
12
|
justifyContent: 'center',
|
|
13
13
|
},
|
|
14
|
-
row: {
|
|
15
|
-
flexDirection: 'row',
|
|
16
|
-
},
|
|
17
|
-
column: {
|
|
18
|
-
flexDirection: 'column',
|
|
19
|
-
},
|
|
20
14
|
};
|
|
21
15
|
};
|
|
22
16
|
|
|
@@ -26,7 +20,6 @@ export default function TabBase(props: TabBaseProps) {
|
|
|
26
20
|
disabled = false,
|
|
27
21
|
onPress,
|
|
28
22
|
selected = false,
|
|
29
|
-
vertical = false,
|
|
30
23
|
style,
|
|
31
24
|
...otherProps
|
|
32
25
|
} = props;
|
|
@@ -39,7 +32,6 @@ export default function TabBase(props: TabBaseProps) {
|
|
|
39
32
|
disabled={disabled}
|
|
40
33
|
style={css([
|
|
41
34
|
styles.root,
|
|
42
|
-
vertical ? styles.column : styles.row,
|
|
43
35
|
style,
|
|
44
36
|
])}
|
|
45
37
|
{...otherProps}
|
package/src/Tabs/useTabsStyle.ts
CHANGED
|
@@ -24,7 +24,10 @@ export default function useTabsStyle(variant: TabVariant) {
|
|
|
24
24
|
};
|
|
25
25
|
case 'bottom-navigation':
|
|
26
26
|
return {
|
|
27
|
-
container: {
|
|
27
|
+
container: {
|
|
28
|
+
borderTopColor: theme.palette.border.base,
|
|
29
|
+
borderTopWidth: 0.5,
|
|
30
|
+
},
|
|
28
31
|
};
|
|
29
32
|
case 'default':
|
|
30
33
|
default:
|