@snappmarket/config
Version:
> 🧮 babel, eslint, theme and etc
190 lines (166 loc) • 6.93 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react'), require('prop-types'), require('styled-components'), require('@snappmarket/helpers')) :
typeof define === 'function' && define.amd ? define(['exports', 'react', 'prop-types', 'styled-components', '@snappmarket/helpers'], factory) :
(global = global || self, factory(global.SnappMarketConfigs = {}, global.React, global.propTypes, global.styledComponents, global.snappmarketHelpers));
}(this, (function (exports, React, PropTypes, styledComponents, helpers) { 'use strict';
var React__default = 'default' in React ? React['default'] : React;
PropTypes = PropTypes && Object.prototype.hasOwnProperty.call(PropTypes, 'default') ? PropTypes['default'] : PropTypes;
var global$1 = (typeof global !== "undefined" ? global :
typeof self !== "undefined" ? self :
typeof window !== "undefined" ? window : {});
// from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js
var performance = global$1.performance || {};
var performanceNow =
performance.now ||
performance.mozNow ||
performance.msNow ||
performance.oNow ||
performance.webkitNow ||
function(){ return (new Date()).getTime() };
function _extends() {
_extends = Object.assign || function (target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
return _extends.apply(this, arguments);
}
var defaultTheme = {
defaultRem: '1rem',
defaultFont: 'IRANSans',
containerWidth: '1628px',
colors: {
blue: {
bright: '#f2f7ff',
'ultra-light': '#a5c8fc',
light: '#556ff7',
normal: '#2446f5',
dark: '#0a2cdc'
},
green: {
bright: '#e7feea',
'ultra-light': '#aef0b8',
light: '#10e02c',
normal: '#07bc20',
dark: '#058b18'
},
red: {
bright: '#fff6f5',
'ultra-light': '#ffbfc3',
light: '#ff6973',
normal: '#ff3643',
dark: '#ff0313'
},
orange: {
bright: '#fff8f2',
'ultra-light': '#fcd0a5',
light: '#ff9747',
normal: '#ff7a14',
dark: '#e06100'
},
yellow: {
bright: '#fffcef',
'ultra-light': '#ffeb98',
light: '#ffdc47',
normal: '#b7963a',
dark: '#af8b28'
},
gray: {
bright: '#fafafa',
'ultra-light': '#eeeeee',
light: '#bdbdbd',
normal: '#757575',
dark: '#424242'
},
white: '#ffffff',
taupe: '#292929',
black: '#000000',
transparent: 'transparent'
},
viewports: {
xs: 0,
sm: 576,
md: 768,
lg: 992,
xl: 1200
}
};
var makeTheme = function makeTheme() {
var theme = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return helpers.deepMerge(defaultTheme, theme);
};
var ToolboxContext = /*#__PURE__*/React.createContext({});
var faIR = {
currencySign: "تومان"
};
var GlobalConfig = {
options: {
publicPath: '/',
importSpriteSVG: false,
useSpriteFile: true,
SSR: false,
spriteSvgName: 'sprite.svg'
},
theme: {},
language: {}
};
var Provider = function Provider(_ref) {
var theme = _ref.theme,
language = _ref.language,
options = _ref.options,
children = _ref.children;
var unifiedOptions = _extends({}, GlobalConfig.options, options);
var unifiedTheme = makeTheme(theme);
GlobalConfig.language = language;
GlobalConfig.theme = unifiedTheme;
GlobalConfig.options = unifiedOptions;
return /*#__PURE__*/React__default.createElement(ToolboxContext.Provider, {
value: GlobalConfig
}, /*#__PURE__*/React__default.createElement(styledComponents.ThemeProvider, {
theme: unifiedTheme
}, children));
};
Provider.propTypes = {
theme: PropTypes.object,
language: PropTypes.object,
options: PropTypes.shape({
SSR: PropTypes.bool,
importSpriteSVG: PropTypes.bool,
useSpriteFile: PropTypes.bool,
publicPath: PropTypes.string,
spriteSvgName: PropTypes.string
}),
children: PropTypes.node
} ;
Provider.defaultProps = {
language: faIR,
options: {},
theme: {}
};
var useLanguage = function useLanguage() {
var _useContext = React.useContext(ToolboxContext),
language = _useContext.language;
return language;
};
var useOptions = function useOptions() {
var _useContext = React.useContext(ToolboxContext),
options = _useContext.options;
if (!options) {
return GlobalConfig.options;
}
return options;
};
exports.GlobalConfig = GlobalConfig;
exports.ToolboxProvider = Provider;
exports.makeTheme = makeTheme;
exports.theme = defaultTheme;
exports.useLanguage = useLanguage;
exports.useOptions = useOptions;
Object.defineProperty(exports, '__esModule', { value: true });
})));