diff --git a/.babelrc b/.babelrc index c4f5d09..bd656aa 100644 --- a/.babelrc +++ b/.babelrc @@ -4,6 +4,7 @@ "@babel/preset-react" ], "plugins": [ + "@babel/plugin-proposal-class-properties", "@babel/proposal-export-default", "@babel/proposal-export-default-from", "babel-plugin-styled-components" diff --git a/.gitignore b/.gitignore index 5be7482..3b7c4ab 100644 --- a/.gitignore +++ b/.gitignore @@ -61,4 +61,7 @@ typings/ .next # prod build -lib \ No newline at end of file +lib + +# cache +.cache diff --git a/addons.js b/addons.js index 31302b2..dc7e2fe 100644 --- a/addons.js +++ b/addons.js @@ -1 +1,2 @@ +import '@storybook/addon-viewport/register' import 'storybook-addon-jsx/register' diff --git a/docs/favicon.ico b/docs/favicon.ico index e1cf7f1..8c2246a 100644 Binary files a/docs/favicon.ico and b/docs/favicon.ico differ diff --git a/docs/iframe.html b/docs/iframe.html index 9ae7db8..ab19f3d 100644 --- a/docs/iframe.html +++ b/docs/iframe.html @@ -1,27 +1,60 @@ - - +Storybook

No Preview

Sorry, but you either have no stories or none are selected somehow.

+    
+  
\ No newline at end of file diff --git a/docs/index.html b/docs/index.html index b8e3932..618a503 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,44 +1,14 @@ - - - - - - - - Storybook - - - - - -
- - +Storybook
\ No newline at end of file diff --git a/docs/static/iframe.542908677a2a524990b6.bundle.js b/docs/static/iframe.542908677a2a524990b6.bundle.js new file mode 100644 index 0000000..0ce0d8f --- /dev/null +++ b/docs/static/iframe.542908677a2a524990b6.bundle.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{13:function(e,t,n){"use strict";n.d(t,"b",function(){return o}),n.d(t,"a",function(){return a});var o={title:"40px",header:"32px",header2:"28px",default:"20px",note:"16px",footer:"14px",link:"16px",nav:"20px"},a={highlight:"'Kanit', san-serif",default:"'TH Saraban', serif"}},148:function(e,t,n){"use strict";t.a={button:"80px",default:"16px"}},16:function(e,t,n){"use strict";n.d(t,"a",function(){return r});var o=n(4),a=n(3);var r=o.c.div.withConfig({displayName:"utils__Color",componentId:"czfdjg-0"})([""," width:100px;height:50px;display:flex;align-items:center;justify-content:center;"],function(e){var t=e.color,n=e.isInverse;return Object(o.b)(["background:",";color:",";"],t,n?a.a.black:a.a.white)})},171:function(e,t,n){"use strict";n.d(t,"a",function(){return c});var o=n(3),a=n(4);function r(e){return"".concat(e," ").concat(o.a.shadow)}var i={disable:0,default:r("1px 2px 4px"),hover:r("2px 4px 4px"),press:r("1px 1px 4px"),modal:r("1px 0px 4px")};t.b=i;var c=Object(a.b)(["transition:all 0.2s ease-in-out;box-shadow:",";&:hover:enabled{box-shadow:",";}&:active:enabled{box-shadow:",";}&:disabled{box-shadow:",";}"],i.default,i.hover,i.press,i.disable)},3:function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}t.a=function(e){for(var t=1;t div > *:not(:first-child){border-bottom:0.5px solid ",";}> div:not(:first-child) > *:first-child{border-bottom:0.5px solid ",";}}"],c.xs,r.a.grey50,r.a.grey50),u=n(0),f=n.n(u),p=Object(o.b)(["> *:nth-child(2){top:50%;}> *:nth-child(3){top:100%;}"]),m=Object(o.b)(["> *{top:0;}"]);var b=o.c.div.withConfig({displayName:"styled__ButtonContainer",componentId:"sc-1ht8pwp-0"})(["display:none;@media (","){display:block;width:24px;height:20px;left:32px;bottom:24px;position:absolute;cursor:pointer;> *{background:",";width:100%;height:4px;position:absolute;transition:top 0.3s ease-in-out;}",";}"],c.xs,r.a.red,function(e){return e.isOpen?m:p}),h=n(1),y=n.n(h),S=function(e){var t=e.onClick,n=e.isOpen;return f.a.createElement(b,{onClick:t,isOpen:n},f.a.createElement("div",null),f.a.createElement("div",null),f.a.createElement("div",null))};S.propTypes={onClick:y.a.func.isRequired,isOpen:y.a.bool.isRequired};var g=S;function O(e){return(O="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _(e){return(_="function"==typeof Symbol&&"symbol"===O(Symbol.iterator)?function(e){return O(e)}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":O(e)})(e)}function E(e,t){for(var n=0;n *{margin:0 16px;}@media (","){flex-direction:column-reverse;justify-content:center;width:100%;> *{width:100%;margin:0;}}"],c.xs),R=n(13);var I=Object(o.b)(["color:",";font-size:",";font-family:",";transition:color 0.2s ease-in-out;&:hover{color:",";}&:disabled{color:",";}",";"],r.a.grey,R.b.nav,R.a.highlight,r.a.red100,r.a.grey50,function(e){return e.isActive&&Object(o.b)(["font-weight:bold;"])}),w=Object(o.b)(["height:64px;display:flex;align-items:center;justify-content:center;"]),F=o.c.div.withConfig({displayName:"NavItem",componentId:"sc-1cm86jm-0"})(["",";",";"],I,w),k=function(){return f.a.createElement(B,null,f.a.createElement(A,null,f.a.createElement(F,null,"Nav Item")),f.a.createElement(A,null,f.a.createElement(F,{isActive:!0},f.a.createElement("a",null,"Active Item")),f.a.createElement(F,null,"Nav Item"),f.a.createElement(F,null,"Nav Item")))};t.default=k;k.__docgenInfo={description:"",methods:[],displayName:"Nav"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories\\Nav\\Nav.js"]={name:"Nav",docgenInfo:k.__docgenInfo,path:"stories\\Nav\\Nav.js"})},797:function(e,t,n){"use strict";n.r(t);var o=n(58),a=n(1),r=n.n(a),i=n(0),c=n.n(i),l=n(3),s={textColor:l.a.white,buttonColors:{disable:l.a.fb50,normal:l.a.fb,hover:l.a.fb100,press:l.a.fb200}};function d(){return(d=Object.assign||function(e){for(var t=1;t (\r\n\t{storyFn()}\r\n)\r\n\r\nexport default SpaceEvenlyDecorator\r\n","import { css } from 'styled-components'\r\n\r\nexport default css`\r\n\t@font-face {\r\n\t\tfont-family: 'Kanit';\r\n\t\tsrc: url(${require('core/fonts/Kanit/Kanit-Medium.ttf')});\r\n\t\tfont-weight: bold;\r\n\t}\r\n\t@font-face {\r\n\t\tfont-family: 'Kanit';\r\n\t\tsrc: url(${require('core/fonts/Kanit/Kanit-Regular.ttf')});\r\n\t\tfont-weight: normal;\r\n\t}\r\n\t@font-face {\r\n\t\tfont-family: 'Kanit';\r\n\t\tsrc: url(${require('core/fonts/Kanit/Kanit-Light.ttf')});\r\n\t\tfont-weight: lighter;\r\n\t}\r\n\r\n\t@font-face {\r\n\t\tfont-family: 'TH Saraban';\r\n\t\tsrc: url(${require('core/fonts/THSaraban/THSarabunNew.ttf')});\r\n\t\tfont-weight: normal;\r\n\t}\r\n\r\n\t@font-face {\r\n\t\tfont-family: 'TH Saraban';\r\n\t\tsrc: url(${require('core/fonts/THSaraban/THSarabunNew-Bold.ttf')});\r\n\t\tfont-weight: bold;\r\n\t}\r\n`\r\n","import { fontFamilies, fontSizes } from 'mixins/typography'\r\n\r\nimport colors from 'mixins/colors'\r\nimport { css } from 'styled-components'\r\n\r\nexport default css`\r\n\tbody {\r\n\t\tcolor: ${colors.black};\r\n\t\tfont-family: ${fontFamilies.default};\r\n\t\tfont-size: ${fontSizes.default};\r\n\t}\r\n\r\n\th1,\r\n\th2,\r\n\th3,\r\n\th4,\r\n\th5,\r\n\th6,\r\n\tbutton {\r\n\t\tfont-family: ${fontFamilies.highlight};\r\n\t}\r\n\r\n\tbutton {\r\n\t\tfont-size: ${fontSizes.link};\r\n\t}\r\n\r\n\ta {\r\n\t\ttext-decoration: none;\r\n\t\tcolor: ${colors.red};\r\n\t\ttransition: color 0.2s ease-in-out;\r\n\t\t&:hover {\r\n\t\t\ttext-decoration: none;\r\n\t\t\tcolor: ${colors.red100};\r\n\t\t}\r\n\t\t&:hover {\r\n\t\t\ttext-decoration: none;\r\n\t\t\tcolor: ${colors.red200};\r\n\t\t}\r\n\t}\r\n\r\n\th1,\r\n\th2,\r\n\th3,\r\n\th4,\r\n\th5,\r\n\th6,\r\n\tbutton,\r\n\ta,\r\n\tp {\r\n\t\tmargin: 0;\r\n\t}\r\n`\r\n","import React, { Fragment } from 'react'\r\n\r\nimport PropTypes from 'prop-types'\r\nimport { createGlobalStyle } from 'styled-components'\r\nimport fontStyles from 'core/fonts'\r\nimport typograpgy from 'core/typography'\r\n\r\nexport const BaseSheet = createGlobalStyle`\r\n\t${fontStyles}\r\n\t${typograpgy}\r\n\tbody {\r\n\t\tmargin: 0;\r\n\t}\r\n`\r\n\r\nconst CoreStyle = ({ children }) => (\r\n\t\r\n\t\t\r\n\t\t{children}\r\n\t\r\n)\r\n\r\nCoreStyle.propTypes = {\r\n\tchildren: PropTypes.node.isRequired,\r\n}\r\n\r\nexport default CoreStyle\r\n","import CoreStyle from 'core'\r\nimport React from 'react'\r\n\r\nconst CoreDecorator = storyFn => {storyFn()}\r\n\r\nexport default CoreDecorator\r\n","import { configure, setAddon } from '@storybook/react'\r\n\r\nimport JSXAddon from 'storybook-addon-jsx'\r\n\r\nfunction loadStories () {\r\n\trequire('stories')\r\n}\r\n\r\nsetAddon(JSXAddon)\r\n\r\nconfigure(loadStories, module)\r\n","require('./Typography')\r\nrequire('./Color')\r\nrequire('./Button')\r\nrequire('./Nav')\r\n","import baseStory from 'stories/utils/baseStory'\r\n\r\nbaseStory('Typography', module)\r\n\t.addWithJSX('Head', require('./Head').default)\r\n\t.addWithJSX('Link', require('./Link').default)\r\n\t.addWithJSX('Text', require('./Text').default)\r\n\t.addWithJSX('Font Sizes', require('./FontSizes').default)\r\n\t.addWithJSX('Font Families', require('./FontFamilies').default)\r\n","module.exports = __webpack_public_path__ + \"87ad7842e1bf82f18acd2bcdd4b0f006.ttf\";","module.exports = __webpack_public_path__ + \"dee71812c8870b4c5ec6fa0cdc68c25c.ttf\";","module.exports = __webpack_public_path__ + \"a0cf4b275f9a96696c7761a5a7e6dc2a.ttf\";","module.exports = __webpack_public_path__ + \"45905ce12b4739c794a5ebdaee506202.ttf\";","module.exports = __webpack_public_path__ + \"bdd8eb542ab9aa84e5809edb230f07cc.ttf\";","import React from 'react'\r\n\r\nconst Head = () => (\r\n\t<>\r\n\t\t

h1 หัว1

\r\n\t\t

h2 หัว2

\r\n\t\t

h3 หัว3

\r\n\t\t

h4 หัว4

\r\n\t\t
h5 หัว5
\r\n\t\t
h6 หัว6
\r\n\t\r\n)\r\n\r\nexport default Head\r\n","import React from 'react'\r\n\r\nconst Link = () => Link ลิ้ง\r\n\r\nexport default Link\r\n","import React from 'react'\r\n\r\nconst Text = () => (\r\n\t<>\r\n\t\t

Paragraph ย่อหน้า

\r\n\t\tSpan ข้อความ\r\n\t\t
Div ส่วน
\r\n\t\r\n)\r\n\r\nexport default Text\r\n","import styled, { css } from 'styled-components'\r\n\r\nimport React from 'react'\r\nimport { fontSizes } from 'mixins/typography'\r\n\r\nfunction applyFontSize ({ size }) {\r\n\treturn css`\r\n\t\tfont-size: ${size};\r\n\t`\r\n}\r\n\r\nconst Text = styled.p`\r\n\t${applyFontSize};\r\n`\r\n\r\nconst FontSizes = () => (\r\n\t<>\r\n\t\tTitle หลัก\r\n\t\tHeader หัวเรื่อง\r\n\t\tHeader 2 หัวเรื่อง 2\r\n\t\tDefault ทั่วไป\r\n\t\tNote หมายเหตุ\r\n\t\tFooter ปิดท้าย\r\n\t\r\n)\r\n\r\nexport default FontSizes\r\n","import styled, { css } from 'styled-components'\r\n\r\nimport React from 'react'\r\nimport { fontFamilies } from 'mixins/typography'\r\n\r\nfunction applyFontFamily ({ family }) {\r\n\treturn css`\r\n\t\tfont-family: ${family};\r\n\t`\r\n}\r\n\r\nconst Text = styled.p`\r\n\t${applyFontFamily};\r\n`\r\n\r\nconst FontFamilies = () => (\r\n\t<>\r\n\t\tHighlight เน้นข้อความ\r\n\t\tDefault ทั่วไป\r\n\t\r\n)\r\n\r\nexport default FontFamilies\r\n","import baseStory from 'stories/utils/baseStory'\r\n\r\nbaseStory('Color', module)\r\n\t.addWithJSX('Base Colors', require('./BaseColor').default)\r\n\t.addWithJSX('Grey Colors', require('./Grey').default)\r\n\t.addWithJSX('Facebook Colors', require('./Facebook').default)\r\n","import { Color } from './utils'\r\nimport React from 'react'\r\nimport colors from 'mixins/colors'\r\n\r\nconst BaseColor = () => (\r\n\t<>\r\n\t\t\r\n\t\t\twhite\r\n\t\t\r\n\t\tblack\r\n\t\tred50\r\n\t\tred\r\n\t\tred100\r\n\t\tred200\r\n\t\r\n)\r\n\r\nexport default BaseColor\r\n","import { Color } from './utils'\r\nimport React from 'react'\r\nimport colors from 'mixins/colors'\r\n\r\nconst Grey = () => (\r\n\t<>\r\n\t\tgrey50\r\n\t\tgrey\r\n\t\tgrey100\r\n\t\tgrey200\r\n\t\r\n)\r\n\r\nexport default Grey\r\n","import { Color } from './utils'\r\nimport React from 'react'\r\nimport colors from 'mixins/colors'\r\n\r\nconst Facebook = () => (\r\n\t<>\r\n\t\tfb50\r\n\t\tfb\r\n\t\tfb100\r\n\t\tfb200\r\n\t\r\n)\r\n\r\nexport default Facebook\r\n","import SpaceEvenlyDecorator from 'stories/utils/decorators/SpaceEvenlyDecorator'\r\nimport baseStory from 'stories/utils/baseStory'\r\n\r\nbaseStory('Button', module)\r\n\t.addDecorator(SpaceEvenlyDecorator)\r\n\t.addWithJSX('Default Button', require('./DefaultButton').default)\r\n\t.addWithJSX('Facebook Button', require('./Facebook').default)\r\n\t.addWithJSX('Custom Button', require('./CustomButton').default)\r\n","import Button from 'components/button/Button'\r\nimport React from 'react'\r\n\r\nconst DefaultButton = () => (\r\n\t<>\r\n\t\t\r\n\t\t\r\n\t\r\n)\r\n\r\nexport default DefaultButton\r\n","import Button from 'components/button/Button'\r\nimport React from 'react'\r\n\r\nconst customColorSet = {\r\n\ttextColor: '#000000',\r\n\tbuttonColors: {\r\n\t\tdisable: '#E6EE9C',\r\n\t\tnormal: '#D4E157',\r\n\t\thover: '#AFB42B',\r\n\t\tpress: '#827717',\r\n\t},\r\n}\r\n\r\nconst CustomButton = () => (\r\n\t<>\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\r\n)\r\n\r\nexport default CustomButton\r\n","import baseStory from 'stories/utils/baseStory'\r\n\r\nbaseStory('Navigation Bar', module).addWithJSX('Nav', require('./Nav').default)\r\n","import { clickableShadowStyle } from 'mixins/shadows'\r\nimport colors from 'mixins/colors'\r\nimport { css } from 'styled-components'\r\n\r\nexport const defaultButtonColorSet = {\r\n\ttextColor: colors.white,\r\n\tbuttonColors: {\r\n\t\tdisable: colors.red50,\r\n\t\tnormal: colors.red,\r\n\t\thover: colors.red100,\r\n\t\tpress: colors.red200,\r\n\t},\r\n}\r\n\r\nexport function buttonStyle (colorSet, border) {\r\n\tconst {\r\n\t\ttextColor,\r\n\t\tbuttonColors: { disable, normal, hover, press },\r\n\t} = colorSet\r\n\treturn css`\r\n\t\tpadding: 4px 20px;\r\n\t\tborder-radius: ${border};\r\n\t\tcolor: ${textColor};\r\n\t\tbackground-color: ${normal};\r\n\t\tborder: 1px solid ${normal};\r\n\t\tcursor: pointer;\r\n\t\toutline: 0;\r\n\t\t${clickableShadowStyle};\r\n\t\t&:disabled {\r\n\t\t\tbackground-color: ${disable};\r\n\t\t\tborder: 1px solid ${disable};\r\n\t\t\tcursor: default;\r\n\t\t}\r\n\t\t&:hover:enabled {\r\n\t\t\tbackground-color: ${hover};\r\n\t\t\tborder: 1px solid ${hover};\r\n\t\t}\r\n\t\t&:active:enabled {\r\n\t\t\tbackground-color: ${press};\r\n\t\t\tborder: 1px solid ${press};\r\n\t\t}\r\n\t`\r\n}\r\n","import { buttonStyle, defaultButtonColorSet } from 'mixins/button'\r\nimport styled, { css } from 'styled-components'\r\n\r\nimport PropTypes from 'prop-types'\r\nimport borders from 'mixins/borders'\r\n\r\nfunction applyButtonStyle ({ colorSet, border }) {\r\n\treturn css`\r\n\t\t${buttonStyle(colorSet, border)};\r\n\t`\r\n}\r\n\r\nconst Button = styled.button`\r\n\t${applyButtonStyle};\r\n`\r\n\r\nButton.defaultProps = {\r\n\tcolorSet: defaultButtonColorSet,\r\n\tborder: borders.button,\r\n}\r\n\r\nButton.propTypes = {\r\n\tborder: PropTypes.string,\r\n\tcolorSet: PropTypes.shape({\r\n\t\ttextColor: PropTypes.string,\r\n\t\tbuttonColors: PropTypes.shape({\r\n\t\t\tdisable: PropTypes.string,\r\n\t\t\tnormal: PropTypes.string,\r\n\t\t\thover: PropTypes.string,\r\n\t\t\tpress: PropTypes.string,\r\n\t\t}),\r\n\t}),\r\n\tchildren: PropTypes.node.isRequired,\r\n}\r\n\r\nexport default Button\r\n","import CoreDecorator from 'stories/utils/decorators/CoreDecorator'\r\nimport { storiesOf } from '@storybook/react'\r\n\r\nexport default function baseStory (storyname) {\r\n\tconst story = storiesOf(storyname, module).addDecorator(CoreDecorator)\r\n\treturn story\r\n}\r\n","export const screen = {\r\n\txxs: '345px',\r\n\txs: '576px',\r\n\tsm: '768px',\r\n\tmd: '992px',\r\n\tlg: '1200px',\r\n}\r\n\r\nconst media = Object.keys(screen).reduce((media, size) => {\r\n\tmedia[size] = `max-width: ${screen[size]}`\r\n\treturn media\r\n}, {})\r\n\r\nexport default media\r\n","import styled, { css } from 'styled-components'\r\n\r\nimport borders from 'mixins/borders'\r\nimport colors from 'mixins/colors'\r\nimport media from 'mixins/media'\r\nimport shadows from 'mixins/shadows'\r\nimport zIndexes from 'mixins/z-index'\r\n\r\nfunction openStyle ({ isOpen }) {\r\n\treturn (\r\n\t\tisOpen &&\r\n\t\tcss`\r\n\t\t\ttransform: translateY(0);\r\n\t\t`\r\n\t)\r\n}\r\n\r\nexport const Nav = styled.div`\r\n\tposition: fixed;\r\n\r\n\tleft: 8px;\r\n\tright: 8px;\r\n\r\n\tz-index: ${zIndexes.nav};\r\n\tbackground: ${colors.white};\r\n\tborder-radius: 0 0 ${borders.default} ${borders.default};\r\n\tbox-shadow: ${shadows.default};\r\n\r\n\t@media (${media.xs}) {\r\n\t\ttransition: transform 0.3s ease-in-out;\r\n\t\ttransform: translateY(calc(-100% + 64px));\r\n\t\t${openStyle};\r\n\t}\r\n`\r\n\r\nexport const NavBody = styled.div`\r\n\tdisplay: flex;\r\n\tjustify-content: space-between;\r\n\tpadding: 0 64px;\r\n\r\n\t@media (${media.xs}) {\r\n\t\tpadding: 0 32px;\r\n\t\tflex-direction: column-reverse;\r\n\t\talign-items: center;\r\n\t\t> div > *:not(:first-child) {\r\n\t\t\tborder-bottom: 0.5px solid ${colors.grey50};\r\n\t\t}\r\n\t\t> div:not(:first-child) > *:first-child {\r\n\t\t\tborder-bottom: 0.5px solid ${colors.grey50};\r\n\t\t}\r\n\t}\r\n`\r\n","export default {\r\n\tnav: 100,\r\n}\r\n","import styled, { css } from 'styled-components'\r\n\r\nimport colors from 'mixins/colors'\r\nimport media from 'mixins/media'\r\n\r\nconst openStyle = css`\r\n\t> *:nth-child(2) {\r\n\t\ttop: 50%;\r\n\t}\r\n\t> *:nth-child(3) {\r\n\t\ttop: 100%;\r\n\t}\r\n`\r\n\r\nconst closeStyle = css`\r\n\t> * {\r\n\t\ttop: 0;\r\n\t}\r\n`\r\n\r\nfunction applyStyle ({ isOpen }) {\r\n\treturn isOpen ? closeStyle : openStyle\r\n}\r\n\r\nexport const ButtonContainer = styled.div`\r\n\tdisplay: none;\r\n\t@media (${media.xs}) {\r\n\t\tdisplay: block;\r\n\t\twidth: 24px;\r\n\t\theight: 20px;\r\n\r\n\t\tleft: 32px;\r\n\t\tbottom: 24px;\r\n\r\n\t\tposition: absolute;\r\n\t\tcursor: pointer;\r\n\r\n\t\t> * {\r\n\t\t\tbackground: ${colors.red};\r\n\t\t\twidth: 100%;\r\n\t\t\theight: 4px;\r\n\t\t\tposition: absolute;\r\n\t\t\ttransition: top 0.3s ease-in-out;\r\n\t\t}\r\n\r\n\t\t${applyStyle};\r\n\t}\r\n`\r\n","import { ButtonContainer } from './styled'\r\nimport PropTypes from 'prop-types'\r\nimport React from 'react'\r\n\r\nconst NavToggleButton = ({ onClick, isOpen }) => (\r\n\t\r\n\t\t
\r\n\t\t
\r\n\t\t
\r\n\t\r\n)\r\n\r\nNavToggleButton.propTypes = {\r\n\tonClick: PropTypes.func.isRequired,\r\n\tisOpen: PropTypes.bool.isRequired,\r\n}\r\n\r\nexport default NavToggleButton\r\n","import { Nav, NavBody } from './styled'\r\nimport React, { PureComponent } from 'react'\r\n\r\nimport NavToggleButton from 'components/nav/NavToggleButton'\r\nimport PropTypes from 'prop-types'\r\n\r\nclass NavBar extends PureComponent {\r\n\tstate = {\r\n\t\tisOpen: false,\r\n\t}\r\n\r\n\ttoggle = () => {\r\n\t\tconst { isOpen } = this.state\r\n\t\tthis.setState({ isOpen: !isOpen })\r\n\t}\r\n\r\n\tclose = () => {\r\n\t\tthis.setState({ isOpen: false })\r\n\t}\r\n\r\n\trender () {\r\n\t\tconst { children } = this.props\r\n\t\tconst { isOpen } = this.state\r\n\t\treturn (\r\n\t\t\t\r\n\t\t)\r\n\t}\r\n}\r\n\r\nNavBar.propTypes = {\r\n\tchildren: PropTypes.node.isRequired,\r\n}\r\n\r\nexport default NavBar\r\n","import media from 'mixins/media'\r\nimport styled from 'styled-components'\r\n\r\nconst NavGroup = styled.div`\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\t> * {\r\n\t\tmargin: 0 16px;\r\n\t}\r\n\t@media (${media.xs}) {\r\n\t\tflex-direction: column-reverse;\r\n\t\tjustify-content: center;\r\n\t\twidth: 100%;\r\n\t\t> * {\r\n\t\t\twidth: 100%;\r\n\t\t\tmargin: 0;\r\n\t\t}\r\n\t}\r\n`\r\n\r\nexport default NavGroup\r\n","import { fontFamilies, fontSizes } from 'mixins/typography'\r\n\r\nimport colors from 'mixins/colors'\r\nimport { css } from 'styled-components'\r\n\r\nfunction activeStyle ({ isActive }) {\r\n\treturn (\r\n\t\tisActive &&\r\n\t\tcss`\r\n\t\t\tfont-weight: bold;\r\n\t\t`\r\n\t)\r\n}\r\n\r\nexport const navItemLinkStyle = css`\r\n\tcolor: ${colors.grey};\r\n\tfont-size: ${fontSizes.nav};\r\n\tfont-family: ${fontFamilies.highlight};\r\n\ttransition: color 0.2s ease-in-out;\r\n\t&:hover {\r\n\t\tcolor: ${colors.red100};\r\n\t}\r\n\t&:disabled {\r\n\t\tcolor: ${colors.grey50};\r\n\t}\r\n\t${activeStyle};\r\n`\r\n\r\nexport const navItemStyle = css`\r\n\theight: 64px;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n`\r\n","import { navItemLinkStyle, navItemStyle } from 'mixins/nav'\r\n\r\nimport styled from 'styled-components'\r\n\r\nconst NavItem = styled.div`\r\n\t${navItemLinkStyle};\r\n\t${navItemStyle};\r\n`\r\n\r\nexport default NavItem\r\n","import NavBar from 'components/nav/NavBar'\r\nimport NavGroup from 'components/nav/NavGroup'\r\nimport NavItem from 'components/nav/NavItem'\r\nimport React from 'react'\r\n\r\nconst Nav = () => (\r\n\t\r\n\t\t\r\n\t\t\tNav Item\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\tActive Item\r\n\t\t\t\r\n\t\t\tNav Item\r\n\t\t\tNav Item\r\n\t\t\r\n\t\r\n)\r\n\r\nexport default Nav\r\n","import colors from 'mixins/colors'\r\n\r\nexport const facebookButtonColorSet = {\r\n\ttextColor: colors.white,\r\n\tbuttonColors: {\r\n\t\tdisable: colors.fb50,\r\n\t\tnormal: colors.fb,\r\n\t\thover: colors.fb100,\r\n\t\tpress: colors.fb200,\r\n\t},\r\n}\r\n","import Button from 'components/button/Button'\r\nimport PropTypes from 'prop-types'\r\nimport React from 'react'\r\nimport { facebookButtonColorSet } from 'mixins/facebook'\r\n\r\nconst FacebookButton = props => (\r\n\t