application-amicale/native-base-theme/components/index.js
2020-01-28 20:07:21 +01:00

249 lines
5.4 KiB
JavaScript

/* eslint-disable no-param-reassign */
// @flow
import _ from 'lodash';
import bodyTheme from './Body';
import leftTheme from './Left';
import rightTheme from './Right';
import headerTheme from './Header';
import switchTheme from './Switch';
import thumbnailTheme from './Thumbnail';
import containerTheme from './Container';
import contentTheme from './Content';
import buttonTheme from './Button';
import titleTheme from './Title';
import subtitleTheme from './Subtitle';
import inputGroupTheme from './InputGroup';
import badgeTheme from './Badge';
import checkBoxTheme from './CheckBox';
import cardTheme from './Card';
import radioTheme from './Radio';
import h3Theme from './H3';
import h2Theme from './H2';
import h1Theme from './H1';
import footerTheme from './Footer';
import footerTabTheme from './FooterTab';
import fabTheme from './Fab';
import itemTheme from './Item';
import labelTheme from './Label';
import textAreaTheme from './Textarea';
import textTheme from './Text';
import toastTheme from './Toast';
import tabTheme from './Tab';
import tabBarTheme from './TabBar';
import tabContainerTheme from './TabContainer';
import viewTheme from './View';
import tabHeadingTheme from './TabHeading';
import iconTheme from './Icon';
import inputTheme from './Input';
import swipeRowTheme from './SwipeRow';
import segmentTheme from './Segment';
import spinnerTheme from './Spinner';
import cardItemTheme from './CardItem';
import listItemTheme from './ListItem';
import formTheme from './Form';
import separatorTheme from './Separator';
import pickerTheme from './Picker';
import variable from './../variables/platform';
export default (variables /* : * */ = variable) => {
const theme = {
variables,
'NativeBase.Left': {
...leftTheme(variables)
},
'NativeBase.Right': {
...rightTheme(variables)
},
'NativeBase.Body': {
...bodyTheme(variables)
},
'NativeBase.Header': {
...headerTheme(variables)
},
'NativeBase.Button': {
...buttonTheme(variables)
},
'NativeBase.Title': {
...titleTheme(variables)
},
'NativeBase.Subtitle': {
...subtitleTheme(variables)
},
'NativeBase.InputGroup': {
...inputGroupTheme(variables)
},
'NativeBase.Input': {
...inputTheme(variables)
},
'NativeBase.Badge': {
...badgeTheme(variables)
},
'NativeBase.CheckBox': {
...checkBoxTheme(variables)
},
'NativeBase.Radio': {
...radioTheme(variables)
},
'NativeBase.Card': {
...cardTheme(variables)
},
'NativeBase.CardItem': {
...cardItemTheme(variables)
},
'NativeBase.Toast': {
...toastTheme(variables)
},
'NativeBase.H1': {
...h1Theme(variables)
},
'NativeBase.H2': {
...h2Theme(variables)
},
'NativeBase.H3': {
...h3Theme(variables)
},
'NativeBase.Form': {
...formTheme(variables)
},
'NativeBase.Container': {
...containerTheme(variables)
},
'NativeBase.Content': {
...contentTheme(variables)
},
'NativeBase.Footer': {
...footerTheme(variables)
},
'NativeBase.Tabs': {
flex: 1
},
'NativeBase.FooterTab': {
...footerTabTheme(variables)
},
'NativeBase.ListItem': {
...listItemTheme(variables)
},
'NativeBase.ListItem1': {
...listItemTheme(variables)
},
'NativeBase.Icon': {
...iconTheme(variables)
},
'NativeBase.IconNB': {
...iconTheme(variables)
},
'NativeBase.Text': {
...textTheme(variables)
},
'NativeBase.Spinner': {
...spinnerTheme(variables)
},
'NativeBase.Fab': {
...fabTheme(variables)
},
'NativeBase.Item': {
...itemTheme(variables)
},
'NativeBase.Label': {
...labelTheme(variables)
},
'NativeBase.Textarea': {
...textAreaTheme(variables)
},
'NativeBase.PickerNB': {
...pickerTheme(variables),
'NativeBase.Button': {
'NativeBase.Text': {}
}
},
'NativeBase.Tab': {
...tabTheme(variables)
},
'NativeBase.Segment': {
...segmentTheme(variables)
},
'NativeBase.TabBar': {
...tabBarTheme(variables)
},
'NativeBase.ViewNB': {
...viewTheme(variables)
},
'NativeBase.TabHeading': {
...tabHeadingTheme(variables)
},
'NativeBase.TabContainer': {
...tabContainerTheme(variables)
},
'NativeBase.Switch': {
...switchTheme(variables)
},
'NativeBase.Separator': {
...separatorTheme(variables)
},
'NativeBase.SwipeRow': {
...swipeRowTheme(variables)
},
'NativeBase.Thumbnail': {
...thumbnailTheme(variables)
}
};
const cssifyTheme = (grandparent, parent, parentKey) => {
_.forEach(parent, (style, styleName) => {
if (
styleName.indexOf('.') === 0 &&
parentKey &&
parentKey.indexOf('.') === 0
) {
if (grandparent) {
if (!grandparent[styleName]) {
grandparent[styleName] = {};
} else {
grandparent[styleName][parentKey] = style;
}
}
}
if (
style &&
typeof style === 'object' &&
styleName !== 'fontVariant' &&
styleName !== 'transform'
) {
cssifyTheme(parent, style, styleName);
}
});
};
cssifyTheme(null, theme, null);
return theme;
};