243 lines
5.3 KiB
JavaScript
243 lines
5.3 KiB
JavaScript
|
// @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;
|
||
|
};
|