├── .babelrc ├── .eslintrc ├── .firebaserc ├── .gitignore ├── LICENSE ├── README.md ├── firebase.json ├── package.json ├── public ├── 200.html ├── 404.html ├── __react-static-webpack-plugin__routes.js.gz ├── __react-static-webpack-plugin__template.js.gz ├── about.html ├── contact-us.html ├── features.html ├── images │ └── slider │ │ ├── 1.png │ │ └── 2.png ├── index.html ├── scripts │ ├── bundle.7bdad3f11d5ecb1f6333.js │ ├── bundle.7bdad3f11d5ecb1f6333.js.gz │ ├── home.a7642ed51bcb0a698d9a.chunk.js │ ├── home.a7642ed51bcb0a698d9a.chunk.js.gz │ ├── manifest.9c27080805c6cc893109.js │ ├── page-not-found.bcde864882e30d3105b1.chunk.js │ ├── page-not-found.bcde864882e30d3105b1.chunk.js.gz │ ├── vendor.f4d4804ebbbc12fb1c98.js │ └── vendor.f4d4804ebbbc12fb1c98.js.gz ├── styles.css └── styles │ └── style.scss ├── scripts ├── 200.ejs └── server.js ├── src ├── app.js ├── components │ ├── DynamicImport.js │ ├── Header.js │ ├── SEO.js │ └── UI.js ├── content │ ├── About.js │ ├── ContactUs.js │ ├── Features.js │ ├── Home.js │ └── PageNotFound.js ├── layouts │ └── Default.js ├── meta.js ├── routes.js └── static │ ├── routes.js │ └── template.js ├── webpack.config.js └── yarn.lock /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets" : [["env",{ "modules": false }], "react" ], 3 | "plugins": [ 4 | "lodash", 5 | [ "import", { 6 | "libraryName": "antd", "style": "css" 7 | } ], 8 | "syntax-dynamic-import" 9 | ] 10 | } -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "node": true, 5 | "es6": true 6 | }, 7 | "rules": { 8 | "quotes": 0, 9 | "no-trailing-spaces": 0, 10 | "eol-last": 0, 11 | "no-unused-vars": 0, 12 | "no-underscore-dangle": 0, 13 | "no-alert": 0, 14 | "no-lone-blocks": 0 15 | }, 16 | "parser": "babel-eslint", 17 | "parserOptions": { 18 | "ecmaVersion": 6, 19 | "sourceType": "module", 20 | "allowImportExportEverywhere": true, 21 | "ecmaFeatures": { 22 | "modules": true, 23 | "jsx": true, 24 | "experimentalObjectRestSpread": true 25 | } 26 | }, 27 | "globals": { 28 | "jQuery": false, 29 | "$": false 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /.firebaserc: -------------------------------------------------------------------------------- 1 | { 2 | "projects": { 3 | "default": "react-static-website" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | 11 | # Directory for instrumented libs generated by jscoverage/JSCover 12 | lib-cov 13 | 14 | # Coverage directory used by tools like istanbul 15 | coverage 16 | 17 | # nyc test coverage 18 | .nyc_output 19 | 20 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 21 | .grunt 22 | 23 | # node-waf configuration 24 | .lock-wscript 25 | 26 | # Compiled binary addons (http://nodejs.org/api/addons.html) 27 | build/Release 28 | 29 | # Dependency directories 30 | node_modules 31 | jspm_packages 32 | 33 | # Optional npm cache directory 34 | .npm 35 | 36 | # Optional REPL history 37 | .node_repl_history 38 | 39 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Dhruv Kumar Jha 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # react-static-complete-website 2 | A complete website built using React JS, With SEO, Code Splitting, Pre-rendering, gzip and more. 3 | -------------------------------------------------------------------------------- /firebase.json: -------------------------------------------------------------------------------- 1 | { 2 | "hosting": { 3 | "public": "public", 4 | "rewrites": [ 5 | { 6 | "source": "**", 7 | "destination": "/200.html" 8 | } 9 | ], 10 | "cleanUrls": true, 11 | "trailingSlash": false 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-static-complete-website", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "scripts": { 6 | "start": "node scripts/server.js", 7 | "clean": "rimraf public/scripts", 8 | "watch": "cross-env NODE_ENV=development webpack -w", 9 | "build": "npm run clean && cross-env NODE_ENV=production webpack -p", 10 | "deploy": "firebase deploy" 11 | }, 12 | "repository": "https://github.com/dhruv-kumar-jha/react-static-complete-website.git", 13 | "author": "Dhruv Kumar Jha ", 14 | "license": "MIT", 15 | "devDependencies": { 16 | "antd": "^2.9.3", 17 | "axios": "^0.16.1", 18 | "babel-core": "^6.24.1", 19 | "babel-eslint": "^7.2.3", 20 | "babel-loader": "^7.0.0", 21 | "babel-plugin-import": "^1.1.1", 22 | "babel-plugin-lodash": "^3.2.11", 23 | "babel-plugin-syntax-dynamic-import": "^6.18.0", 24 | "babel-preset-env": "^1.4.0", 25 | "babel-preset-react": "^6.24.1", 26 | "compression-webpack-plugin": "^0.4.0", 27 | "cross-env": "^4.0.0", 28 | "css-loader": "^0.28.0", 29 | "eslint": "^3.19.0", 30 | "eslint-loader": "^1.7.1", 31 | "express": "^4.15.2", 32 | "extract-text-webpack-plugin": "^2.1.0", 33 | "html-webpack-plugin": "^2.28.0", 34 | "lodash": "^4.17.4", 35 | "node-sass": "^4.5.2", 36 | "react": "^15.5.4", 37 | "react-disqus-comments": "^0.5.2", 38 | "react-dom": "^15.5.4", 39 | "react-ga": "^2.2.0", 40 | "react-helmet": "^5.0.3", 41 | "react-router": "3.0.3", 42 | "react-static-webpack-plugin": "^2.1.0", 43 | "rimraf": "^2.6.1", 44 | "sass-loader": "^6.0.3", 45 | "webpack": "^2.4.1" 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /public/200.html: -------------------------------------------------------------------------------- 1 | Productivity Application

Loading... Please wait.

-------------------------------------------------------------------------------- /public/404.html: -------------------------------------------------------------------------------- 1 | Productivity Application - Kanban Style Customizable Boards, Lists and Cards to make you more productive.
Page Not Found.
The page you're looking for doesn't exist or you dont have permission to access it.
-------------------------------------------------------------------------------- /public/__react-static-webpack-plugin__routes.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dhruv-kumar-jha/react-static-complete-website/c1cf5947803e4c67c7b90614fbc638a5d01eb377/public/__react-static-webpack-plugin__routes.js.gz -------------------------------------------------------------------------------- /public/__react-static-webpack-plugin__template.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dhruv-kumar-jha/react-static-complete-website/c1cf5947803e4c67c7b90614fbc638a5d01eb377/public/__react-static-webpack-plugin__template.js.gz -------------------------------------------------------------------------------- /public/about.html: -------------------------------------------------------------------------------- 1 | About | Productivity Application
Productivity Application - Kanban Style Customizable Boards, Lists and Cards to make you more productive.
Kanban style, Trello inspired Productivity application built using the awesome React, Ant Design, Apollo Client and other fantastic libraries.

For installation instructions and how to use this application, Please visit https://github.com/dhruv-kumar-jha/productivity-frontend

-------------------------------------------------------------------------------- /public/contact-us.html: -------------------------------------------------------------------------------- 1 | Contact Us | Productivity Application
Who doesn't love to get Feedback and Suggestions?
We would love to hear from you., Just fill the form below and we will get in touch with you soon (if required).
-------------------------------------------------------------------------------- /public/features.html: -------------------------------------------------------------------------------- 1 | Features | Productivity Application
Some of the Features of this Application.
Given below is a list of features of this application., If you have any suggestions for a feature, Just create a new issue or let me know.
Static Application
You can host the app on any Static Host/CDN instead of a server
Boards
Boards are the gateway to your lists, You can have as many boards as you want
Lists
Each list can easily be re-arranged and updated, You can add multiple cards to a list
Cards
Cards are the meat of this app, you can add as many cards as you like, re-arrange them, drag them from one list to another, etc
Todo List
Each card has Todo List tab, There you can add your todo list items, update them, mark them as completed and so on.
Card Meta
Each card has meta section where you can specify Duedate, Link, Image and the appropriate icons will appear below card in the list view., If image URL is specified, Image will appear above the card title.
Custom Background
Each board, list and card can have different Background color, Boards can have background images as well. To change the background color of board just edit the board by clicking the Edit icon below the header and there you can update board details along with background color.
Settings
You can update your details, password and preferred language in the settings page
Public Boards
Now you can make boards public, Public boards are accessible to all the users with the board URL., By default all boards are private.
Code Splitting
Split the code into different files and only load those files when necessary., Enable tree shaking so we only include the code we're actually using in the app.
Lists Spacing
Now you can add spaces between lists, You can add space before and after a list. (might be useful to some of you)
Customizations
Now you have more control over specifying background colors, you can either select it using colorpicker or enter it manually, it can be Color Names, HEX, RGB or RGBA.
Multiple Languages
Added support for multiple languages, Current translation of Chinese langugae is done using Google Translate.
Card Positioning
Now you can top and bottom margin to any card, Giving your more flexibility and control over the UI.
Loading Indicator
Since the project makes use of Webpack code splitting, Sometimes it felt like clicks were unresponsive, Now you can see loading message whenever new script(s) is being loaded.
-------------------------------------------------------------------------------- /public/images/slider/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dhruv-kumar-jha/react-static-complete-website/c1cf5947803e4c67c7b90614fbc638a5d01eb377/public/images/slider/1.png -------------------------------------------------------------------------------- /public/images/slider/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dhruv-kumar-jha/react-static-complete-website/c1cf5947803e4c67c7b90614fbc638a5d01eb377/public/images/slider/2.png -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | Productivity Application - Kanban Style Customizable Boards, Lists and Cards to make you more productive.
Hey You, Yes You!, Want to be More Productive? Have lists of things you care about? Love simple and sexy UI?
This is a screenshot of the Board view page
-------------------------------------------------------------------------------- /public/scripts/bundle.7bdad3f11d5ecb1f6333.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([3],Array(34).concat([function(e,t,n){e.exports=!n(46)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},,,,,,,,,function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t){var n=e.exports={version:"2.4.0"};"number"==typeof __e&&(__e=n)},function(e,t,n){var r,o;!function(){"use strict";function n(){for(var e=[],t=0;t0?r:n)(e)}},function(e,t){e.exports=function(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0;nc;)r(u,n=t[c++])&&(~i(s,n)||s.push(n));return s}},function(e,t,n){var r=n(78);e.exports=function(e){return Object(r(e))}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n(135),i=r(o),a=n(134),u=r(a),c=n(2),s=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(c),f=n(45),l=r(f),p=n(194),d=r(p),y=function(e){var t=e.type,n=e.className,r=void 0===n?"":n,o=e.spin,a=(0,l.default)((0,u.default)({anticon:!0,"anticon-spin":!!o||"loading"===t},"anticon-"+t,!0),r);return s.createElement("i",(0,i.default)({},(0,d.default)(e,["type","spin"]),{className:a}))};t.default=y,e.exports=t.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(){return y=y||s.default.newInstance({prefixCls:v,transitionName:"move-up",style:{top:d},getContainer:m})}function i(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p,n=arguments[2],r=arguments[3],i={info:"info-circle",success:"check-circle",error:"cross-circle",warning:"exclamation-circle",loading:"loading"}[n],a=o();return a.notice({key:h,duration:t,style:{},content:u.default.createElement("div",{className:v+"-custom-content "+v+"-"+n},u.default.createElement(l.default,{type:i}),u.default.createElement("span",null,e)),onClose:r}),function(){var e=h++;return function(){a.removeNotice(e)}}()}Object.defineProperty(t,"__esModule",{value:!0});var a=n(2),u=r(a),c=n(206),s=r(c),f=n(147),l=r(f),p=1.5,d=void 0,y=void 0,h=1,v="ant-message",m=void 0;t.default={info:function(e,t,n){return i(e,t,"info",n)},success:function(e,t,n){return i(e,t,"success",n)},error:function(e,t,n){return i(e,t,"error",n)},warn:function(e,t,n){return i(e,t,"warning",n)},warning:function(e,t,n){return i(e,t,"warning",n)},loading:function(e,t,n){return i(e,t,"loading",n)},config:function(e){void 0!==e.top&&(d=e.top,y=null),void 0!==e.duration&&(p=e.duration),void 0!==e.prefixCls&&(v=e.prefixCls),void 0!==e.getContainer&&(m=e.getContainer)},destroy:function(){y&&(y.destroy(),y=null)}},e.exports=t.default},function(e,t,n){"use strict";n(133),n(170)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2),o=n.n(r),i=n(26),a=(n.n(i),n(42)),u=n(124),c=n(125),s=(n.n(c),function(e){return o.a.createElement("div",null,e.children)});n.i(i.render)(o.a.createElement(s,null,o.a.createElement(a.Router,{history:a.browserHistory,routes:u.a})),document.getElementById("root"))},function(e,t,n){"use strict";var r=n(149),o=(n.n(r),n(148)),i=n.n(o),a=n(2),u=(n.n(a),{}),c=function(e,t,n){var r=Object.keys(u).every(function(e){return!0===u[e]});if(u[n]||(u[n]=!1),u[n]&&!0===u[n])return e.then(function(e){return t(null,e.default)});var o=(Object.keys(u).every(function(e){return!0===u[e]}),"");return r&&(o=i.a.loading("Loading content...",0)),e.then(function(e){return r&&o(),u[n]=!0,t(null,e.default)}).catch(function(e){throw new Error("Component loading failed: "+e)})};t.a=c},function(e,t,n){e.exports={default:n(155),__esModule:!0}},function(e,t,n){e.exports={default:n(156),__esModule:!0}},function(e,t,n){function r(e){if(!e||!e.nodeType)throw new Error("A DOM element reference is required");this.el=e,this.list=e.classList}try{var o=n(80)}catch(e){var o=n(80)}var i=Object.prototype.toString;e.exports=function(e){return new r(e)},r.prototype.add=function(e){if(this.list)return this.list.add(e),this;var t=this.array();return~o(t,e)||t.push(e),this.el.className=t.join(" "),this},r.prototype.remove=function(e){if("[object RegExp]"==i.call(e))return this.removeMatching(e);if(this.list)return this.list.remove(e),this;var t=this.array(),n=o(t,e);return~n&&t.splice(n,1),this.el.className=t.join(" "),this},r.prototype.removeMatching=function(e){for(var t=this.array(),n=0;nf;)if((u=c[f++])!=u)return!0}else for(;s>f;f++)if((e||f in c)&&c[f]===n)return e||f||0;return!e&&-1}}},function(e,t,n){"use strict";var r=n(129),o=n(137),i=n(130),a=n(146),u=n(81),c=Object.assign;e.exports=!c||n(46)(function(){var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach(function(e){t[e]=e}),7!=c({},e)[n]||Object.keys(c({},t)).join("")!=r})?function(e,t){for(var n=a(e),c=arguments.length,s=1,f=o.f,l=i.f;c>s;)for(var p,d=u(arguments[s++]),y=f?r(d).concat(f(d)):r(d),h=y.length,v=0;h>v;)l.call(d,p=y[v++])&&(n[p]=d[p]);return n}:c},function(e,t,n){var r=n(79),o=Math.max,i=Math.min;e.exports=function(e,t){return e=r(e),e<0?o(e+t,0):i(e,t)}},function(e,t,n){var r=n(79),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},function(e,t,n){var r=n(77);r(r.S+r.F,"Object",{assign:n(159)})},function(e,t,n){var r=n(77);r(r.S+r.F*!n(34),"Object",{defineProperty:n(75).f})},function(e,t,n){"use strict";function r(e,t,n){e.addEventListener(t,n,!1)}function o(e,t,n){e.removeEventListener(t,n,!1)}Object.defineProperty(t,"__esModule",{value:!0});var i={transitionend:{transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"mozTransitionEnd",OTransition:"oTransitionEnd",msTransition:"MSTransitionEnd"},animationend:{animation:"animationend",WebkitAnimation:"webkitAnimationEnd",MozAnimation:"mozAnimationEnd",OAnimation:"oAnimationEnd",msAnimation:"MSAnimationEnd"}},a=[];"undefined"!=typeof window&&"undefined"!=typeof document&&function(){var e=document.createElement("div"),t=e.style;"AnimationEvent"in window||delete i.animationend.animation,"TransitionEvent"in window||delete i.transitionend.transition;for(var n in i)if(i.hasOwnProperty(n)){var r=i[n];for(var o in r)if(o in t){a.push(r[o]);break}}}();var u={addEndEventListener:function(e,t){if(0===a.length)return void window.setTimeout(t,0);a.forEach(function(n){r(e,n,t)})},endEvents:a,removeEndEventListener:function(e,t){0!==a.length&&a.forEach(function(n){o(e,n,t)})}};t.default=u,e.exports=t.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){for(var n=window.getComputedStyle(e,null),r="",o=0;o children");return d.default.createElement(b.default,{key:t.key,ref:t.key,animation:e.animation,transitionName:e.transitionName,transitionEnter:e.transitionEnter,transitionAppear:e.transitionAppear,transitionLeave:e.transitionLeave},t)}));var r=e.component;if(r){var o=e;return"string"==typeof r&&(o=l({className:e.className,style:e.style},e.componentProps)),d.default.createElement(r,o,n)}return n[0]||null},t}(d.default.Component);O.propTypes={component:h.default.any,componentProps:h.default.object,animation:h.default.object,transitionName:h.default.oneOfType([h.default.string,h.default.object]),transitionEnter:h.default.bool,transitionAppear:h.default.bool,exclusive:h.default.bool,transitionLeave:h.default.bool,onEnd:h.default.func,onEnter:h.default.func,onLeave:h.default.func,onAppear:h.default.func,showProp:h.default.string},O.defaultProps={animation:{},component:"span",componentProps:{},transitionEnter:!0,transitionLeave:!0,transitionAppear:!1,onEnd:f,onEnter:f,onLeave:f,onAppear:f};var j=function(){var e=this;this.performEnter=function(t){e.refs[t]&&(e.currentlyAnimatingKeys[t]=!0,e.refs[t].componentWillEnter(e.handleDoneAdding.bind(e,t,"enter")))},this.performAppear=function(t){e.refs[t]&&(e.currentlyAnimatingKeys[t]=!0,e.refs[t].componentWillAppear(e.handleDoneAdding.bind(e,t,"appear")))},this.handleDoneAdding=function(t,n){var r=e.props;if(delete e.currentlyAnimatingKeys[t],!r.exclusive||r===e.nextProps){var o=(0,v.toArrayChildren)(s(r));e.isValidChildByKey(o,t)?"appear"===n?g.default.allowAppearCallback(r)&&(r.onAppear(t),r.onEnd(t,!0)):g.default.allowEnterCallback(r)&&(r.onEnter(t),r.onEnd(t,!0)):e.performLeave(t)}},this.performLeave=function(t){e.refs[t]&&(e.currentlyAnimatingKeys[t]=!0,e.refs[t].componentWillLeave(e.handleDoneLeaving.bind(e,t)))},this.handleDoneLeaving=function(t){var n=e.props;if(delete e.currentlyAnimatingKeys[t],!n.exclusive||n===e.nextProps){var r=(0,v.toArrayChildren)(s(n));if(e.isValidChildByKey(r,t))e.performEnter(t);else{var o=function(){g.default.allowLeaveCallback(n)&&(n.onLeave(t),n.onEnd(t,!1))};(0,v.isSameChildren)(e.state.children,r,n.showProp)?o():e.setState({children:r},o)}}}};t.default=O,e.exports=t.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r children");r=e}}),r}function a(e,t,n){var r=0;return e&&e.forEach(function(e){r||(r=e&&e.key===t&&!e.props[n])}),r}function u(e,t,n){var r=e.length===t.length;return r&&e.forEach(function(e,o){var i=t[o];e&&i&&(e&&!i||!e&&i?r=!1:e.key!==i.key?r=!1:n&&e.props[n]!==i.props[n]&&(r=!1))}),r}function c(e,t){var n=[],r={},i=[];return e.forEach(function(e){e&&o(t,e.key)?i.length&&(r[e.key]=i,i=[]):i.push(e)}),t.forEach(function(e){e&&r.hasOwnProperty(e.key)&&(n=n.concat(r[e.key])),n.push(e)}),n=n.concat(i)}Object.defineProperty(t,"__esModule",{value:!0}),t.toArrayChildren=r,t.findChildInChildrenByKey=o,t.findShownChildInChildrenByKey=i,t.findHiddenChildInChildrenByKey=a,t.isSameChildren=u,t.mergeChildren=c;var s=n(2),f=function(e){return e&&e.__esModule?e:{default:e}}(s)},function(e,t,n){"use strict";e.exports=n(200)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function i(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;rdocument.F=Object<\/script>"),t.close(),c=t.F;r--;)delete c.prototype[a[r]];return c()};t.exports=Object.create||function(t,e){var n;return null!==t?(u.prototype=r(t),n=new u,u.prototype=null,n[i]=t):n=c(),void 0===e?n:o(n,e)}},function(t,e,n){var r=n(75).f,o=n(126),a=n(310)("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,a)&&r(t,a,{configurable:!0,value:e})}},function(t,e,n){var r=n(43),o=n(44),a=n(317),i=n(321),u=n(75).f;t.exports=function(t){var e=o.Symbol||(o.Symbol=a?{}:r.Symbol||{});"_"==t.charAt(0)||t in e||u(e,t,{value:i.f(t)})}},function(t,e,n){e.f=n(310)},function(t,e,n){"use strict";var r=n(337),o=(n.n(r),n(336)),a=n.n(o),i=n(314),u=(n.n(i),n(313)),c=n.n(u),s=n(2),f=n.n(s);n.d(e,"a",function(){return l}),n.d(e,"b",function(){return p});var l=function(t){return f.a.createElement(a.a,null,f.a.createElement(c.a,{span:14,offset:5},f.a.createElement("div",{className:"heading"},t.title,t.subtitle&&f.a.createElement("div",{className:"subtitle"},t.subtitle))))},p=function(t){return f.a.createElement("a",{href:t.to,target:"_blank",rel:"nofollow"},t.title?t.title:t.to)}},function(t,e,n){"use strict";var r=n(2),o=n.n(r),a=n(349),i=function(t){return o.a.createElement("div",{className:"website--layout"},o.a.createElement(a.a,null),o.a.createElement("div",{className:"page-content"},o.a.createElement("div",{className:"container"},t.children)))};e.a=i},function(t,e,n){function r(t,e){var n=a(t,e);return o(n)?n:void 0}var o=n(423),a=n(443);t.exports=r},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0}),e.Col=e.Row=void 0;var o=n(348),a=r(o),i=n(347),u=r(i);e.Row=a.default,e.Col=u.default},function(t,e,n){"use strict";e.__esModule=!0,e.default=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var o=n(351),a=r(o),i=n(350),u=r(i),c=n(315),s=r(c);e.default=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":(0,s.default)(e)));t.prototype=(0,u.default)(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(a.default?(0,a.default)(t,e):t.__proto__=e)}},function(t,e,n){"use strict";e.__esModule=!0;var r=n(315),o=function(t){return t&&t.__esModule?t:{default:t}}(r);e.default=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":(0,o.default)(e))&&"function"!=typeof e?t:e}},function(t,e,n){"use strict";var r=n(317),o=n(77),a=n(332),i=n(127),u=n(126),c=n(316),s=n(362),f=n(319),l=n(368),p=n(310)("iterator"),d=!([].keys&&"next"in[].keys()),v=function(){return this};t.exports=function(t,e,n,y,h,b,m){s(n,e,y);var g,_,x,j=function(t){if(!d&&t in P)return P[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},w=e+" Iterator",O="values"==h,E=!1,P=t.prototype,S=P[p]||P["@@iterator"]||h&&P[h],k=S||j(h),N=h?O?j("entries"):k:void 0,A="Array"==e?P.entries||S:S;if(A&&(x=l(A.call(new t)))!==Object.prototype&&(f(x,w,!0),r||u(x,p)||i(x,p,v)),O&&S&&"values"!==S.name&&(E=!0,k=function(){return S.call(this)}),r&&!m||!d&&!E&&P[p]||i(P,p,k),c[e]=k,c[w]=v,h)if(g={values:O?k:j("values"),keys:b?k:j("keys"),entries:N},m)for(_ in g)_ in P||a(P,_,g[_]);else o(o.P+o.F*(d||E),e,g);return g}},function(t,e,n){var r=n(130),o=n(131),a=n(76),i=n(140),u=n(126),c=n(144),s=Object.getOwnPropertyDescriptor;e.f=n(34)?s:function(t,e){if(t=a(t),e=i(e,!0),c)try{return s(t,e)}catch(t){}if(u(t,e))return o(!r.f.call(t,e),t[e])}},function(t,e,n){var r=n(145),o=n(136).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},function(t,e,n){t.exports=n(127)},function(t,e){},function(t,e,n){function r(t){return null==t?void 0===t?c:u:s&&s in Object(t)?a(t):i(t)}var o=n(340),a=n(440),i=n(467),u="[object Null]",c="[object Undefined]",s=o?o.toStringTag:void 0;t.exports=r},function(t,e){function n(t){return null!=t&&"object"==typeof t}t.exports=n},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(325);e.default=r.Row,t.exports=e.default},function(t,e,n){"use strict";n(133),n(333)},function(t,e,n){"use strict";var r=n(478),o=n.n(r),a=n(2),i=n.n(a),u=n(404),c=n.n(u),s=n(111),f=(n.n(s),function(t){var e=o()(c.a,{url:t.url||"default"});return e||(e=o()(c.a,{url:"default"})),i.a.createElement(s.Helmet,null,i.a.createElement("title",null,e.title),i.a.createElement("meta",{name:"description",content:e.description}),i.a.createElement("meta",{name:"keywords",content:e.keywords}))});e.a=f},function(t,e,n){function r(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e0?(0,g.default)({},{marginLeft:c/-2,marginRight:c/-2},s):s,_=v.Children.map(f,function(t){return t?t.props&&c>0?(0,v.cloneElement)(t,{style:(0,g.default)({},{paddingLeft:c/2,paddingRight:c/2},t.props.style)}):t:null});return y.default.createElement("div",(0,a.default)({},d,{className:h,style:m}),_)},e}(y.default.Component);e.default=w,w.defaultProps={gutter:0},w.propTypes={type:x.default.string,align:x.default.string,justify:x.default.string,className:x.default.string,children:x.default.node,gutter:x.default.number,prefixCls:x.default.string},t.exports=e.default},function(t,e,n){"use strict";var r=n(2),o=n.n(r),a=n(42),i=function(t){return o.a.createElement("header",{className:"main"},o.a.createElement("div",{className:"container"},o.a.createElement("div",{className:"logo"},o.a.createElement(a.Link,{to:"/"},"Productivity Application")),o.a.createElement("nav",null,o.a.createElement(a.Link,{to:"/",activeClassName:"active"},"Home"),o.a.createElement("span",{className:"sep"}),o.a.createElement(a.Link,{to:"/features",activeClassName:"active"},"Features"),o.a.createElement("span",{className:"sep"}),o.a.createElement(a.Link,{to:"/about",activeClassName:"active"},"About"),o.a.createElement("span",{className:"sep"}),o.a.createElement(a.Link,{to:"/contact-us",activeClassName:"active"},"Contact Us"))))};e.a=i},function(t,e,n){t.exports={default:n(354),__esModule:!0}},function(t,e,n){t.exports={default:n(355),__esModule:!0}},function(t,e,n){t.exports={default:n(356),__esModule:!0}},function(t,e,n){t.exports={default:n(357),__esModule:!0}},function(t,e,n){n(372);var r=n(44).Object;t.exports=function(t,e){return r.create(t,e)}},function(t,e,n){n(373),t.exports=n(44).Object.setPrototypeOf},function(t,e,n){n(376),n(374),n(377),n(378),t.exports=n(44).Symbol},function(t,e,n){n(375),n(379),t.exports=n(321).f("iterator")},function(t,e){t.exports=function(){}},function(t,e,n){var r=n(129),o=n(137),a=n(130);t.exports=function(t){var e=r(t),n=o.f;if(n)for(var i,u=n(t),c=a.f,s=0;u.length>s;)c.call(t,i=u[s++])&&e.push(i);return e}},function(t,e,n){t.exports=n(43).document&&document.documentElement},function(t,e,n){var r=n(141);t.exports=Array.isArray||function(t){return"Array"==r(t)}},function(t,e,n){"use strict";var r=n(318),o=n(131),a=n(319),i={};n(127)(i,n(310)("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(i,{next:o(1,n)}),a(t,e+" Iterator")}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){var r=n(129),o=n(76);t.exports=function(t,e){for(var n,a=o(t),i=r(a),u=i.length,c=0;u>c;)if(a[n=i[c++]]===e)return n}},function(t,e,n){var r=n(132)("meta"),o=n(47),a=n(126),i=n(75).f,u=0,c=Object.isExtensible||function(){return!0},s=!n(46)(function(){return c(Object.preventExtensions({}))}),f=function(t){i(t,r,{value:{i:"O"+ ++u,w:{}}})},l=function(t,e){if(!o(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!a(t,r)){if(!c(t))return"F";if(!e)return"E";f(t)}return t[r].i},p=function(t,e){if(!a(t,r)){if(!c(t))return!0;if(!e)return!1;f(t)}return t[r].w},d=function(t){return s&&v.NEED&&c(t)&&!a(t,r)&&f(t),t},v=t.exports={KEY:r,NEED:!1,fastKey:l,getWeak:p,onFreeze:d}},function(t,e,n){var r=n(75),o=n(128),a=n(129);t.exports=n(34)?Object.defineProperties:function(t,e){o(t);for(var n,i=a(e),u=i.length,c=0;u>c;)r.f(t,n=i[c++],e[n]);return t}},function(t,e,n){var r=n(76),o=n(331).f,a={}.toString,i="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],u=function(t){try{return o(t)}catch(t){return i.slice()}};t.exports.f=function(t){return i&&"[object Window]"==a.call(t)?u(t):o(r(t))}},function(t,e,n){var r=n(126),o=n(146),a=n(138)("IE_PROTO"),i=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),r(t,a)?t[a]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?i:null}},function(t,e,n){var r=n(47),o=n(128),a=function(t,e){if(o(t),!r(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,r){try{r=n(142)(Function.call,n(330).f(Object.prototype,"__proto__").set,2),r(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,n){return a(t,n),e?t.__proto__=n:r(t,n),t}}({},!1):void 0),check:a}},function(t,e,n){var r=n(79),o=n(78);t.exports=function(t){return function(e,n){var a,i,u=String(o(e)),c=r(n),s=u.length;return c<0||c>=s?t?"":void 0:(a=u.charCodeAt(c),a<55296||a>56319||c+1===s||(i=u.charCodeAt(c+1))<56320||i>57343?t?u.charAt(c):a:t?u.slice(c,c+2):i-56320+(a-55296<<10)+65536)}}},function(t,e,n){"use strict";var r=n(358),o=n(363),a=n(316),i=n(76);t.exports=n(329)(Array,"Array",function(t,e){this._t=i(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):"keys"==e?o(0,n):"values"==e?o(0,t[n]):o(0,[n,t[n]])},"values"),a.Arguments=a.Array,r("keys"),r("values"),r("entries")},function(t,e,n){var r=n(77);r(r.S,"Object",{create:n(318)})},function(t,e,n){var r=n(77);r(r.S,"Object",{setPrototypeOf:n(369).set})},function(t,e){},function(t,e,n){"use strict";var r=n(370)(!0);n(329)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},function(t,e,n){"use strict";var r=n(43),o=n(126),a=n(34),i=n(77),u=n(332),c=n(365).KEY,s=n(46),f=n(139),l=n(319),p=n(132),d=n(310),v=n(321),y=n(320),h=n(364),b=n(359),m=n(361),g=n(128),_=n(76),x=n(140),j=n(131),w=n(318),O=n(367),E=n(330),P=n(75),S=n(129),k=E.f,N=P.f,A=O.f,C=r.Symbol,M=r.JSON,T=M&&M.stringify,F=d("_hidden"),z=d("toPrimitive"),L={}.propertyIsEnumerable,I=f("symbol-registry"),B=f("symbols"),R=f("op-symbols"),D=Object.prototype,$="function"==typeof C,W=r.QObject,U=!W||!W.prototype||!W.prototype.findChild,Y=a&&s(function(){return 7!=w(N({},"a",{get:function(){return N(this,"a",{value:7}).a}})).a})?function(t,e,n){var r=k(D,e);r&&delete D[e],N(t,e,n),r&&t!==D&&N(D,e,r)}:N,G=function(t){var e=B[t]=w(C.prototype);return e._k=t,e},J=$&&"symbol"==typeof C.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof C},H=function(t,e,n){return t===D&&H(R,e,n),g(t),e=x(e,!0),g(n),o(B,e)?(n.enumerable?(o(t,F)&&t[F][e]&&(t[F][e]=!1),n=w(n,{enumerable:j(0,!1)})):(o(t,F)||N(t,F,j(1,{})),t[F][e]=!0),Y(t,e,n)):N(t,e,n)},K=function(t,e){g(t);for(var n,r=b(e=_(e)),o=0,a=r.length;a>o;)H(t,n=r[o++],e[n]);return t},V=function(t,e){return void 0===e?w(t):K(w(t),e)},q=function(t){var e=L.call(this,t=x(t,!0));return!(this===D&&o(B,t)&&!o(R,t))&&(!(e||!o(this,t)||!o(B,t)||o(this,F)&&this[F][t])||e)},Q=function(t,e){if(t=_(t),e=x(e,!0),t!==D||!o(B,e)||o(R,e)){var n=k(t,e);return!n||!o(B,e)||o(t,F)&&t[F][e]||(n.enumerable=!0),n}},X=function(t){for(var e,n=A(_(t)),r=[],a=0;n.length>a;)o(B,e=n[a++])||e==F||e==c||r.push(e);return r},Z=function(t){for(var e,n=t===D,r=A(n?R:_(t)),a=[],i=0;r.length>i;)!o(B,e=r[i++])||n&&!o(D,e)||a.push(B[e]);return a};$||(C=function(){if(this instanceof C)throw TypeError("Symbol is not a constructor!");var t=p(arguments.length>0?arguments[0]:void 0),e=function(n){this===D&&e.call(R,n),o(this,F)&&o(this[F],t)&&(this[F][t]=!1),Y(this,t,j(1,n))};return a&&U&&Y(D,t,{configurable:!0,set:e}),G(t)},u(C.prototype,"toString",function(){return this._k}),E.f=Q,P.f=H,n(331).f=O.f=X,n(130).f=q,n(137).f=Z,a&&!n(317)&&u(D,"propertyIsEnumerable",q,!0),v.f=function(t){return G(d(t))}),i(i.G+i.W+i.F*!$,{Symbol:C});for(var tt="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),et=0;tt.length>et;)d(tt[et++]);for(var tt=S(d.store),et=0;tt.length>et;)y(tt[et++]);i(i.S+i.F*!$,"Symbol",{for:function(t){return o(I,t+="")?I[t]:I[t]=C(t)},keyFor:function(t){if(J(t))return h(I,t);throw TypeError(t+" is not a symbol!")},useSetter:function(){U=!0},useSimple:function(){U=!1}}),i(i.S+i.F*!$,"Object",{create:V,defineProperty:H,defineProperties:K,getOwnPropertyDescriptor:Q,getOwnPropertyNames:X,getOwnPropertySymbols:Z}),M&&i(i.S+i.F*(!$||s(function(){var t=C();return"[null]"!=T([t])||"{}"!=T({a:t})||"{}"!=T(Object(t))})),"JSON",{stringify:function(t){if(void 0!==t&&!J(t)){for(var e,n,r=[t],o=1;arguments.length>o;)r.push(arguments[o++]);return e=r[1],"function"==typeof e&&(n=e),!n&&m(e)||(e=function(t,e){if(n&&(e=n.call(this,t,e)),!J(e))return e}),r[1]=e,T.apply(M,r)}}}),C.prototype[z]||n(127)(C.prototype,z,C.prototype.valueOf),l(C,"Symbol"),l(Math,"Math",!0),l(r.JSON,"JSON",!0)},function(t,e,n){n(320)("asyncIterator")},function(t,e,n){n(320)("observable")},function(t,e,n){n(371);for(var r=n(43),o=n(127),a=n(316),i=n(310)("toStringTag"),u=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],c=0;c<5;c++){var s=u[c],f=r[s],l=f&&f.prototype;l&&!l[i]&&o(l,i,s),a[s]=a.Array}},function(t,e,n){var r=n(324),o=n(311),a=r(o,"Map");t.exports=a},function(t,e,n){function r(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=r}var r=9007199254740991;t.exports=n},function(t,e,n){function r(t){return i(t)?o(t):a(t)}var o=n(413),a=n(425),i=n(398);t.exports=r},function(t,e,n){function r(t){var e=this.__data__=new o(t);this.size=e.size}var o=n(339),a=n(472),i=n(473),u=n(474),c=n(475),s=n(476);r.prototype.clear=a,r.prototype.delete=i,r.prototype.get=u,r.prototype.has=c,r.prototype.set=s,t.exports=r},function(t,e,n){function r(t,e){e=o(e,t);for(var n=0,r=e.length;null!=t&&np))return!1;var v=f.get(t);if(v&&f.get(e))return v==e;var y=-1,h=!0,b=n&c?new o:void 0;for(f.set(t,e),f.set(e,t);++y-1&&t%1==0&&t-1?u[c?e[s]:s]:void 0}}var o=n(388),a=n(398),i=n(384);t.exports=r},function(t,e,n){function r(t,e,n,r,o,w,E){switch(n){case j:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case x:return!(t.byteLength!=e.byteLength||!w(new a(t),new a(e)));case p:case d:case h:return i(+t,+e);case v:return t.name==e.name&&t.message==e.message;case b:case g:return t==e+"";case y:var P=c;case m:var S=r&f;if(P||(P=s),t.size!=e.size&&!S)return!1;var k=E.get(t);if(k)return k==e;r|=l,E.set(t,e);var N=u(P(t),P(e),r,o,w,E);return E.delete(t),N;case _:if(O)return O.call(t)==O.call(e)}return!1}var o=n(340),a=n(410),i=n(396),u=n(390),c=n(463),s=n(471),f=1,l=2,p="[object Boolean]",d="[object Date]",v="[object Error]",y="[object Map]",h="[object Number]",b="[object RegExp]",m="[object Set]",g="[object String]",_="[object Symbol]",x="[object ArrayBuffer]",j="[object DataView]",w=o?o.prototype:void 0,O=w?w.valueOf:void 0;t.exports=r},function(t,e,n){function r(t,e,n,r,i,c){var s=n&a,f=o(t),l=f.length;if(l!=o(e).length&&!s)return!1;for(var p=l;p--;){var d=f[p];if(!(s?d in e:u.call(e,d)))return!1}var v=c.get(t);if(v&&c.get(e))return v==e;var y=!0;c.set(t,e),c.set(e,t);for(var h=s;++p-1}var o=n(341);t.exports=r},function(t,e,n){function r(t,e){var n=this.__data__,r=o(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this}var o=n(341);t.exports=r},function(t,e,n){function r(){this.size=0,this.__data__={hash:new o,map:new(i||a),string:new o}}var o=n(406),a=n(339),i=n(380);t.exports=r},function(t,e,n){function r(t){var e=o(this,t).delete(t);return this.size-=e?1:0,e}var o=n(342);t.exports=r},function(t,e,n){function r(t){return o(this,t).get(t)}var o=n(342);t.exports=r},function(t,e,n){function r(t){return o(this,t).has(t)}var o=n(342);t.exports=r},function(t,e,n){function r(t,e){var n=o(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this}var o=n(342);t.exports=r},function(t,e){function n(t){var e=-1,n=Array(t.size);return t.forEach(function(t,r){n[++e]=[r,t]}),n}t.exports=n},function(t,e,n){function r(t){var e=o(t,function(t){return n.size===a&&n.clear(),t}),n=e.cache;return e}var o=n(483),a=500;t.exports=r},function(t,e,n){var r=n(468),o=r(Object.keys,Object);t.exports=o},function(t,e,n){(function(t){var r=n(391),o="object"==typeof e&&e&&!e.nodeType&&e,a=o&&"object"==typeof t&&t&&!t.nodeType&&t,i=a&&a.exports===o,u=i&&r.process,c=function(){try{return u&&u.binding&&u.binding("util")}catch(t){}}();t.exports=c}).call(e,n(402)(t))},function(t,e){function n(t){return o.call(t)}var r=Object.prototype,o=r.toString;t.exports=n},function(t,e){function n(t,e){return function(n){return t(e(n))}}t.exports=n},function(t,e){function n(t){return this.__data__.set(t,r),this}var r="__lodash_hash_undefined__";t.exports=n},function(t,e){function n(t){return this.__data__.has(t)}t.exports=n},function(t,e){function n(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=t}),n}t.exports=n},function(t,e,n){function r(){this.__data__=new o,this.size=0}var o=n(339);t.exports=r},function(t,e){function n(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}t.exports=n},function(t,e){function n(t){return this.__data__.get(t)}t.exports=n},function(t,e){function n(t){return this.__data__.has(t)}t.exports=n},function(t,e,n){function r(t,e){var n=this.__data__;if(n instanceof o){var r=n.__data__;if(!a||r.lengthdocument.F=Object<\/script>"),t.close(),f=t.F;r--;)delete f.prototype[u[r]];return f()};t.exports=Object.create||function(t,e){var n;return null!==t?(a.prototype=r(t),n=new a,a.prototype=null,n[i]=t):n=f(),void 0===e?n:o(n,e)}},319:function(t,e,n){var r=n(75).f,o=n(126),u=n(310)("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,u)&&r(t,u,{configurable:!0,value:e})}},320:function(t,e,n){var r=n(43),o=n(44),u=n(317),i=n(321),a=n(75).f;t.exports=function(t){var e=o.Symbol||(o.Symbol=u?{}:r.Symbol||{});"_"==t.charAt(0)||t in e||a(e,t,{value:i.f(t)})}},321:function(t,e,n){e.f=n(310)},322:function(t,e,n){"use strict";var r=n(337),o=(n.n(r),n(336)),u=n.n(o),i=n(314),a=(n.n(i),n(313)),f=n.n(a),s=n(2),c=n.n(s);n.d(e,"a",function(){return l}),n.d(e,"b",function(){return p});var l=function(t){return c.a.createElement(u.a,null,c.a.createElement(f.a,{span:14,offset:5},c.a.createElement("div",{className:"heading"},t.title,t.subtitle&&c.a.createElement("div",{className:"subtitle"},t.subtitle))))},p=function(t){return c.a.createElement("a",{href:t.to,target:"_blank",rel:"nofollow"},t.title?t.title:t.to)}},323:function(t,e,n){"use strict";var r=n(2),o=n.n(r),u=n(349),i=function(t){return o.a.createElement("div",{className:"website--layout"},o.a.createElement(u.a,null),o.a.createElement("div",{className:"page-content"},o.a.createElement("div",{className:"container"},t.children)))};e.a=i},325:function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0}),e.Col=e.Row=void 0;var o=n(348),u=r(o),i=n(347),a=r(i);e.Row=u.default,e.Col=a.default},326:function(t,e,n){"use strict";e.__esModule=!0,e.default=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}},327:function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var o=n(351),u=r(o),i=n(350),a=r(i),f=n(315),s=r(f);e.default=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":(0,s.default)(e)));t.prototype=(0,a.default)(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(u.default?(0,u.default)(t,e):t.__proto__=e)}},328:function(t,e,n){"use strict";e.__esModule=!0;var r=n(315),o=function(t){return t&&t.__esModule?t:{default:t}}(r);e.default=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":(0,o.default)(e))&&"function"!=typeof e?t:e}},329:function(t,e,n){"use strict";var r=n(317),o=n(77),u=n(332),i=n(127),a=n(126),f=n(316),s=n(362),c=n(319),l=n(368),p=n(310)("iterator"),d=!([].keys&&"next"in[].keys()),y=function(){return this};t.exports=function(t,e,n,v,m,h,b){s(n,e,v);var g,_,O,x=function(t){if(!d&&t in P)return P[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},E=e+" Iterator",w="values"==m,j=!1,P=t.prototype,S=P[p]||P["@@iterator"]||m&&P[m],N=S||x(m),k=m?w?x("entries"):N:void 0,M="Array"==e?P.entries||S:S;if(M&&(O=l(M.call(new t)))!==Object.prototype&&(c(O,E,!0),r||a(O,p)||i(O,p,y)),w&&S&&"values"!==S.name&&(j=!0,N=function(){return S.call(this)}),r&&!b||!d&&!j&&P[p]||i(P,p,N),f[e]=N,f[E]=y,m)if(g={values:w?N:x("values"),keys:h?N:x("keys"),entries:k},b)for(_ in g)_ in P||u(P,_,g[_]);else o(o.P+o.F*(d||j),e,g);return g}},330:function(t,e,n){var r=n(130),o=n(131),u=n(76),i=n(140),a=n(126),f=n(144),s=Object.getOwnPropertyDescriptor;e.f=n(34)?s:function(t,e){if(t=u(t),e=i(e,!0),f)try{return s(t,e)}catch(t){}if(a(t,e))return o(!r.f.call(t,e),t[e])}},331:function(t,e,n){var r=n(145),o=n(136).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},332:function(t,e,n){t.exports=n(127)},333:function(t,e){},336:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(325);e.default=r.Row,t.exports=e.default},337:function(t,e,n){"use strict";n(133),n(333)},347:function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o=n(135),u=r(o),i=n(134),a=r(i),f=n(315),s=r(f),c=n(326),l=r(c),p=n(328),d=r(p),y=n(327),v=r(y),m=n(2),h=r(m),b=n(45),g=r(b),_=n(4),O=r(_),x=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(t);o0?(0,g.default)({},{marginLeft:f/-2,marginRight:f/-2},s):s,_=y.Children.map(c,function(t){return t?t.props&&f>0?(0,y.cloneElement)(t,{style:(0,g.default)({},{paddingLeft:f/2,paddingRight:f/2},t.props.style)}):t:null});return v.default.createElement("div",(0,u.default)({},d,{className:m,style:b}),_)},e}(v.default.Component);e.default=E,E.defaultProps={gutter:0},E.propTypes={type:O.default.string,align:O.default.string,justify:O.default.string,className:O.default.string,children:O.default.node,gutter:O.default.number,prefixCls:O.default.string},t.exports=e.default},349:function(t,e,n){"use strict";var r=n(2),o=n.n(r),u=n(42),i=function(t){return o.a.createElement("header",{className:"main"},o.a.createElement("div",{className:"container"},o.a.createElement("div",{className:"logo"},o.a.createElement(u.Link,{to:"/"},"Productivity Application")),o.a.createElement("nav",null,o.a.createElement(u.Link,{to:"/",activeClassName:"active"},"Home"),o.a.createElement("span",{className:"sep"}),o.a.createElement(u.Link,{to:"/features",activeClassName:"active"},"Features"),o.a.createElement("span",{className:"sep"}),o.a.createElement(u.Link,{to:"/about",activeClassName:"active"},"About"),o.a.createElement("span",{className:"sep"}),o.a.createElement(u.Link,{to:"/contact-us",activeClassName:"active"},"Contact Us"))))};e.a=i},350:function(t,e,n){t.exports={default:n(354),__esModule:!0}},351:function(t,e,n){t.exports={default:n(355),__esModule:!0}},352:function(t,e,n){t.exports={default:n(356),__esModule:!0}},353:function(t,e,n){t.exports={default:n(357),__esModule:!0}},354:function(t,e,n){n(372);var r=n(44).Object;t.exports=function(t,e){return r.create(t,e)}},355:function(t,e,n){n(373),t.exports=n(44).Object.setPrototypeOf},356:function(t,e,n){n(376),n(374),n(377),n(378),t.exports=n(44).Symbol},357:function(t,e,n){n(375),n(379),t.exports=n(321).f("iterator")},358:function(t,e){t.exports=function(){}},359:function(t,e,n){var r=n(129),o=n(137),u=n(130);t.exports=function(t){var e=r(t),n=o.f;if(n)for(var i,a=n(t),f=u.f,s=0;a.length>s;)f.call(t,i=a[s++])&&e.push(i);return e}},360:function(t,e,n){t.exports=n(43).document&&document.documentElement},361:function(t,e,n){var r=n(141);t.exports=Array.isArray||function(t){return"Array"==r(t)}},362:function(t,e,n){"use strict";var r=n(318),o=n(131),u=n(319),i={};n(127)(i,n(310)("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(i,{next:o(1,n)}),u(t,e+" Iterator")}},363:function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},364:function(t,e,n){var r=n(129),o=n(76);t.exports=function(t,e){for(var n,u=o(t),i=r(u),a=i.length,f=0;a>f;)if(u[n=i[f++]]===e)return n}},365:function(t,e,n){var r=n(132)("meta"),o=n(47),u=n(126),i=n(75).f,a=0,f=Object.isExtensible||function(){return!0},s=!n(46)(function(){return f(Object.preventExtensions({}))}),c=function(t){i(t,r,{value:{i:"O"+ ++a,w:{}}})},l=function(t,e){if(!o(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!u(t,r)){if(!f(t))return"F";if(!e)return"E";c(t)}return t[r].i},p=function(t,e){if(!u(t,r)){if(!f(t))return!0;if(!e)return!1;c(t)}return t[r].w},d=function(t){return s&&y.NEED&&f(t)&&!u(t,r)&&c(t),t},y=t.exports={KEY:r,NEED:!1,fastKey:l,getWeak:p,onFreeze:d}},366:function(t,e,n){var r=n(75),o=n(128),u=n(129);t.exports=n(34)?Object.defineProperties:function(t,e){o(t);for(var n,i=u(e),a=i.length,f=0;a>f;)r.f(t,n=i[f++],e[n]);return t}},367:function(t,e,n){var r=n(76),o=n(331).f,u={}.toString,i="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(t){try{return o(t)}catch(t){return i.slice()}};t.exports.f=function(t){return i&&"[object Window]"==u.call(t)?a(t):o(r(t))}},368:function(t,e,n){var r=n(126),o=n(146),u=n(138)("IE_PROTO"),i=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),r(t,u)?t[u]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?i:null}},369:function(t,e,n){var r=n(47),o=n(128),u=function(t,e){if(o(t),!r(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,r){try{r=n(142)(Function.call,n(330).f(Object.prototype,"__proto__").set,2),r(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,n){return u(t,n),e?t.__proto__=n:r(t,n),t}}({},!1):void 0),check:u}},370:function(t,e,n){var r=n(79),o=n(78);t.exports=function(t){return function(e,n){var u,i,a=String(o(e)),f=r(n),s=a.length;return f<0||f>=s?t?"":void 0:(u=a.charCodeAt(f),u<55296||u>56319||f+1===s||(i=a.charCodeAt(f+1))<56320||i>57343?t?a.charAt(f):u:t?a.slice(f,f+2):i-56320+(u-55296<<10)+65536)}}},371:function(t,e,n){"use strict";var r=n(358),o=n(363),u=n(316),i=n(76);t.exports=n(329)(Array,"Array",function(t,e){this._t=i(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):"keys"==e?o(0,n):"values"==e?o(0,t[n]):o(0,[n,t[n]])},"values"),u.Arguments=u.Array,r("keys"),r("values"),r("entries")},372:function(t,e,n){var r=n(77);r(r.S,"Object",{create:n(318)})},373:function(t,e,n){var r=n(77);r(r.S,"Object",{setPrototypeOf:n(369).set})},374:function(t,e){},375:function(t,e,n){"use strict";var r=n(370)(!0);n(329)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},376:function(t,e,n){"use strict";var r=n(43),o=n(126),u=n(34),i=n(77),a=n(332),f=n(365).KEY,s=n(46),c=n(139),l=n(319),p=n(132),d=n(310),y=n(321),v=n(320),m=n(364),h=n(359),b=n(361),g=n(128),_=n(76),O=n(140),x=n(131),E=n(318),w=n(367),j=n(330),P=n(75),S=n(129),N=j.f,k=P.f,M=w.f,T=r.Symbol,C=r.JSON,A=C&&C.stringify,F=d("_hidden"),L=d("toPrimitive"),R={}.propertyIsEnumerable,I=c("symbol-registry"),D=c("symbols"),J=c("op-symbols"),W=Object.prototype,K="function"==typeof T,Y=r.QObject,z=!Y||!Y.prototype||!Y.prototype.findChild,G=u&&s(function(){return 7!=E(k({},"a",{get:function(){return k(this,"a",{value:7}).a}})).a})?function(t,e,n){var r=N(W,e);r&&delete W[e],k(t,e,n),r&&t!==W&&k(W,e,r)}:k,H=function(t){var e=D[t]=E(T.prototype);return e._k=t,e},Q=K&&"symbol"==typeof T.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof T},U=function(t,e,n){return t===W&&U(J,e,n),g(t),e=O(e,!0),g(n),o(D,e)?(n.enumerable?(o(t,F)&&t[F][e]&&(t[F][e]=!1),n=E(n,{enumerable:x(0,!1)})):(o(t,F)||k(t,F,x(1,{})),t[F][e]=!0),G(t,e,n)):k(t,e,n)},q=function(t,e){g(t);for(var n,r=h(e=_(e)),o=0,u=r.length;u>o;)U(t,n=r[o++],e[n]);return t},B=function(t,e){return void 0===e?E(t):q(E(t),e)},V=function(t){var e=R.call(this,t=O(t,!0));return!(this===W&&o(D,t)&&!o(J,t))&&(!(e||!o(this,t)||!o(D,t)||o(this,F)&&this[F][t])||e)},X=function(t,e){if(t=_(t),e=O(e,!0),t!==W||!o(D,e)||o(J,e)){var n=N(t,e);return!n||!o(D,e)||o(t,F)&&t[F][e]||(n.enumerable=!0),n}},Z=function(t){for(var e,n=M(_(t)),r=[],u=0;n.length>u;)o(D,e=n[u++])||e==F||e==f||r.push(e);return r},$=function(t){for(var e,n=t===W,r=M(n?J:_(t)),u=[],i=0;r.length>i;)!o(D,e=r[i++])||n&&!o(W,e)||u.push(D[e]);return u};K||(T=function(){if(this instanceof T)throw TypeError("Symbol is not a constructor!");var t=p(arguments.length>0?arguments[0]:void 0),e=function(n){this===W&&e.call(J,n),o(this,F)&&o(this[F],t)&&(this[F][t]=!1),G(this,t,x(1,n))};return u&&z&&G(W,t,{configurable:!0,set:e}),H(t)},a(T.prototype,"toString",function(){return this._k}),j.f=X,P.f=U,n(331).f=w.f=Z,n(130).f=V,n(137).f=$,u&&!n(317)&&a(W,"propertyIsEnumerable",V,!0),y.f=function(t){return H(d(t))}),i(i.G+i.W+i.F*!K,{Symbol:T});for(var tt="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),et=0;tt.length>et;)d(tt[et++]);for(var tt=S(d.store),et=0;tt.length>et;)v(tt[et++]);i(i.S+i.F*!K,"Symbol",{for:function(t){return o(I,t+="")?I[t]:I[t]=T(t)},keyFor:function(t){if(Q(t))return m(I,t);throw TypeError(t+" is not a symbol!")},useSetter:function(){z=!0},useSimple:function(){z=!1}}),i(i.S+i.F*!K,"Object",{create:B,defineProperty:U,defineProperties:q,getOwnPropertyDescriptor:X,getOwnPropertyNames:Z,getOwnPropertySymbols:$}),C&&i(i.S+i.F*(!K||s(function(){var t=T();return"[null]"!=A([t])||"{}"!=A({a:t})||"{}"!=A(Object(t))})),"JSON",{stringify:function(t){if(void 0!==t&&!Q(t)){for(var e,n,r=[t],o=1;arguments.length>o;)r.push(arguments[o++]);return e=r[1],"function"==typeof e&&(n=e),!n&&b(e)||(e=function(t,e){if(n&&(e=n.call(this,t,e)),!Q(e))return e}),r[1]=e,A.apply(C,r)}}}),T.prototype[L]||n(127)(T.prototype,L,T.prototype.valueOf),l(T,"Symbol"),l(Math,"Math",!0),l(r.JSON,"JSON",!0)},377:function(t,e,n){n(320)("asyncIterator")},378:function(t,e,n){n(320)("observable")},379:function(t,e,n){n(371);for(var r=n(43),o=n(127),u=n(316),i=n(310)("toStringTag"),a=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],f=0;f<5;f++){var s=a[f],c=r[s],l=c&&c.prototype;l&&!l[i]&&o(l,i,s),u[s]=u.Array}}}); -------------------------------------------------------------------------------- /public/scripts/page-not-found.bcde864882e30d3105b1.chunk.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dhruv-kumar-jha/react-static-complete-website/c1cf5947803e4c67c7b90614fbc638a5d01eb377/public/scripts/page-not-found.bcde864882e30d3105b1.chunk.js.gz -------------------------------------------------------------------------------- /public/scripts/vendor.f4d4804ebbbc12fb1c98.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dhruv-kumar-jha/react-static-complete-website/c1cf5947803e4c67c7b90614fbc638a5d01eb377/public/scripts/vendor.f4d4804ebbbc12fb1c98.js.gz -------------------------------------------------------------------------------- /public/styles/style.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Our main stylesheet. 3 | */ 4 | 5 | 6 | @import url('https://fonts.googleapis.com/css?family=Shadows+Into+Light+Two'); 7 | 8 | $font_family_default: 'Segoe UI', 'Open Sans', Tahoma, Arial, sans-serif; 9 | $font_family_sil: 'Shadows Into Light Two', cursive; 10 | $font_family_lg: 'Lucida Grande', Tahoma; 11 | 12 | $header_height: 50px; 13 | $content_width: 1000px; 14 | $body_background: #F7F8FA; 15 | 16 | 17 | body { 18 | background: $body_background; 19 | font-family: $font_family_default; 20 | } 21 | 22 | .website--layout { 23 | min-height: 100vh; 24 | padding-top: $header_height; 25 | } 26 | 27 | 28 | // header styles: start 29 | header.main { 30 | height: $header_height; 31 | border-bottom: 1px solid #DDD; 32 | background: #FFF; 33 | position: fixed; 34 | left: 0; 35 | right: 0; 36 | top: 0; 37 | z-index: 10; 38 | // padding: 0 50px; 39 | 40 | border-bottom: 4px solid #F7F8FA; 41 | box-shadow: 0 0 0 1px #CCC; 42 | 43 | .container { 44 | display: flex; 45 | justify-content: space-between; 46 | } 47 | 48 | .logo { 49 | font-size: 18px; 50 | font-weight: 700; 51 | color: #000; 52 | line-height: $header_height; 53 | 54 | a { 55 | color: #000; 56 | } 57 | } 58 | 59 | nav { 60 | overflow: hidden; 61 | display: flex; 62 | 63 | a { 64 | font-weight: 700; 65 | font-size: 14px; 66 | color: #000; 67 | line-height: 24px; 68 | margin: 13px 0; 69 | &.active { 70 | color: #FF0000; 71 | } 72 | } 73 | 74 | span.sep { 75 | font-size: 18px; 76 | line-height: 24px; 77 | padding: 13px 0; 78 | color: #CCC; 79 | 80 | &:before { 81 | font-weight: 100; 82 | content: '|'; 83 | padding: 0 10px; 84 | } 85 | } 86 | 87 | } 88 | } 89 | // header styles: end 90 | 91 | 92 | .container { 93 | max-width: $content_width; 94 | padding: 0 50px; 95 | margin: 0 auto; 96 | } 97 | 98 | 99 | 100 | 101 | 102 | .page-content { 103 | padding-top: 70px; 104 | padding-bottom: 50px; 105 | overflow: auto; 106 | 107 | p { 108 | font-size: 18px; 109 | line-height: 22px; 110 | color: #000; 111 | margin-bottom: 10px; 112 | } 113 | 114 | 115 | .heading { 116 | font-family: $font_family_sil; 117 | color: #000; 118 | font-weight: 400; 119 | font-size: 30px; 120 | line-height: 34px; 121 | 122 | .subtitle { 123 | font-family: $font_family_lg; 124 | margin-top: 20px; 125 | margin-bottom: 20px; 126 | font-size: 16px; 127 | line-height: 20px; 128 | font-weight: 400; 129 | color: #999; 130 | } 131 | 132 | } 133 | 134 | } 135 | 136 | 137 | .component--slider { 138 | margin-top: 50px; 139 | 140 | .ant-carousel .slick-slide { 141 | text-align: center; 142 | overflow: hidden; 143 | } 144 | 145 | .image { 146 | max-height: 460px; 147 | img { 148 | max-width: 100%; 149 | border-radius: 4px; 150 | 151 | border: 2px solid rgb(234, 214, 33); 152 | padding: 5px; 153 | background: #FFEB3B; 154 | } 155 | } 156 | 157 | .title { 158 | font-family: $font_family_lg; 159 | color: #999; 160 | padding: 10px 20px; 161 | font-size: 16px; 162 | line-height: 16px; 163 | margin-top: 10px; 164 | margin-bottom: 20px; 165 | } 166 | 167 | .slick-dots { 168 | li { 169 | background: #000; 170 | } 171 | li.slick-active button { background: #FF0000; } 172 | } 173 | 174 | } 175 | 176 | 177 | 178 | .component--features { 179 | margin-top: 50px; 180 | 181 | .feature-container { 182 | margin-bottom: 12px; 183 | } 184 | 185 | .feature { 186 | padding: 20px; 187 | cursor: pointer; 188 | min-height: 100px; 189 | height: 100%; 190 | color: rgba(0, 0, 0, 0.7); 191 | border-radius: 3px; 192 | background: #d3f1ff; // #FEA; 193 | border: 2px solid #a2d6ef; // #FFE063; 194 | margin-right: 12px; 195 | } 196 | 197 | .title { 198 | display: flex; 199 | font-family: $font_family_lg; 200 | font-size: 18px; 201 | line-height: 100%; 202 | font-weight: 700; 203 | color: #000; 204 | letter-spacing: -1px; 205 | .status { 206 | margin-right: 10px; 207 | color: green; 208 | } 209 | } 210 | 211 | .description { 212 | font-size: 13px; 213 | line-height: 15px; 214 | margin-top: 15px; 215 | color: rgba(0, 0, 0, 0.59); 216 | } 217 | 218 | } 219 | 220 | 221 | 222 | .component__form { 223 | margin-top: 20px; 224 | 225 | .input { 226 | margin-bottom: 20px; 227 | &:last-child { margin-bottom: 0; } 228 | } 229 | 230 | label { 231 | display: block; 232 | font-size: 15px; 233 | line-height: 24px; 234 | font-weight: 700; 235 | margin-bottom: 2px; 236 | } 237 | 238 | input, textarea { 239 | width: 100%; 240 | background: #FFF; 241 | border: 1px solid #CCC; 242 | font-size: 14px; 243 | line-height: 16px; 244 | padding: 8px 14px; 245 | } 246 | 247 | textarea { 248 | resize: none; 249 | min-height: 200px; 250 | } 251 | 252 | button { 253 | padding: 8px 14px; 254 | background: #FF4848; 255 | 256 | border-radius: 2px; 257 | border: 1px solid; 258 | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); 259 | padding: 4px 10px; 260 | display: inline-block; 261 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); 262 | cursor: pointer; 263 | color: #FFF; 264 | font-weight: 700; 265 | } 266 | 267 | } 268 | 269 | 270 | 271 | .component__empty { 272 | max-width: 600px; 273 | padding: 40px 20px; 274 | background: #ffebe4; 275 | margin: 0 auto; 276 | border-radius: 4px; 277 | border: 1px solid #ffc5b1; 278 | 279 | .subtitle { 280 | color: #000 !important; 281 | } 282 | 283 | } 284 | 285 | 286 | 287 | -------------------------------------------------------------------------------- /scripts/200.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Productivity Application 8 | 9 | 10 | 11 | 12 | <% for (var css in htmlWebpackPlugin.files.css) { %> 13 | 14 | <% } %> 15 | 16 | 17 | 18 | 19 |
20 |
21 |
22 |
23 |
24 |
25 |

Loading... Please wait.

26 |
27 |
28 |
29 | 30 | 31 | <% for (var chunk in htmlWebpackPlugin.files.chunks) { %> 32 | 33 | <% } %> 34 | 35 | 36 | -------------------------------------------------------------------------------- /scripts/server.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const express = require('express'); 4 | const app = express(); 5 | const path = require('path'); 6 | 7 | // specify the port where you want this server to be available at 8 | app.set( 'port', process.env.PORT || 1001 ); 9 | 10 | // make the entire contents of public directory accessible 11 | app.use( express.static( 12 | path.join(__dirname, '../', 'public'), 13 | { 14 | // index: false, // don't look for index.html files in sub directories. 15 | extensions:['html'] 16 | }) 17 | ); 18 | 19 | 20 | // for every request made, if the file doesn't exist, return 200.html file. 21 | app.get( '/*', (req, res) => { 22 | res.sendFile( path.join(__dirname, '../', 'public', '200.html') ); 23 | }); 24 | 25 | app.listen( app.get('port'), function () { 26 | console.log('Server running at http://localhost:%s', app.get('port')); 27 | }); 28 | 29 | -------------------------------------------------------------------------------- /src/app.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import React from 'react'; 4 | import { render } from 'react-dom'; 5 | 6 | import { Router, browserHistory } from 'react-router'; 7 | import WebsiteRoutes from './routes'; 8 | 9 | import 'public/styles/style.scss'; 10 | 11 | 12 | const AppLayout = (props) => { 13 | return ( 14 |
15 | { props.children } 16 |
17 | ) 18 | } 19 | 20 | render( 21 | ( 22 | 23 | 24 | 25 | ), 26 | document.getElementById('root') 27 | ); 28 | 29 | -------------------------------------------------------------------------------- /src/components/DynamicImport.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import React from 'react'; 4 | import { message } from 'antd'; 5 | 6 | // empty scripts object, this keeps track of all the scripts that have been loaded dynamically. 7 | const scripts = {}; 8 | 9 | 10 | const DynamicImport = ( component, callback, script_name ) => { 11 | 12 | const allPreviousLoaded = Object.keys(scripts).every( (k) => { return scripts[k] === true }); 13 | 14 | 15 | if ( ! scripts[script_name] ) { 16 | scripts[script_name] = false; 17 | } 18 | 19 | if ( scripts[script_name] && scripts[script_name] === true ) { 20 | return component.then( response => { 21 | return callback( null, response.default ); 22 | }); 23 | } 24 | 25 | 26 | const allLoaded = Object.keys(scripts).every( (k) => { return scripts[k] === true }); 27 | let loading_message = ''; 28 | 29 | if ( allPreviousLoaded ) { loading_message = message.loading( 'Loading content...', 0); } 30 | 31 | return component.then( response => { 32 | if ( allPreviousLoaded ) { loading_message(); } 33 | scripts[script_name] = true; 34 | return callback( null, response.default ); 35 | }) 36 | .catch( error => { 37 | throw new Error(`Component loading failed: ${error}`); 38 | }); 39 | 40 | } 41 | 42 | export default DynamicImport; 43 | -------------------------------------------------------------------------------- /src/components/Header.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import React from 'react'; 4 | import { Link } from 'react-router'; 5 | 6 | 7 | const Header = (props) => { 8 | 9 | return ( 10 |
11 |
12 | 13 |
14 | Productivity Application 15 |
16 | 17 | 26 | 27 |
28 |
29 | ); 30 | 31 | } 32 | 33 | export default Header; 34 | -------------------------------------------------------------------------------- /src/components/SEO.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import React from 'react'; 4 | import Meta from 'app/meta'; 5 | import { Helmet } from "react-helmet"; 6 | import _ from 'lodash'; 7 | 8 | 9 | const SEO = (props) => { 10 | 11 | let content = _.find( Meta, { url: props.url || 'default' } ); 12 | if ( ! content ) { 13 | content = _.find( Meta, { url: 'default' } ); 14 | } 15 | 16 | return ( 17 | 18 | { content.title } 19 | 20 | 21 | 22 | ); 23 | 24 | } 25 | 26 | 27 | export default SEO; 28 | 29 | -------------------------------------------------------------------------------- /src/components/UI.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import React from 'react'; 4 | import { Row, Col } from 'antd'; 5 | 6 | 7 | const Heading = (props) => { 8 | 9 | return ( 10 | 11 | 12 |
13 | { props.title } 14 | { props.subtitle && 15 |
{ props.subtitle }
16 | } 17 |
18 | 19 |
20 | ); 21 | 22 | } 23 | 24 | 25 | const URL = (props) => { 26 | return ( 27 | { props.title ? props.title : props.to } 28 | ) 29 | } 30 | 31 | 32 | export { 33 | Heading, 34 | URL, 35 | }; 36 | 37 | -------------------------------------------------------------------------------- /src/content/About.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import React from 'react'; 4 | import DefaultLayout from 'app/layouts/Default'; 5 | import { Heading, URL } from 'app/components/UI'; 6 | import { Row, Col } from 'antd'; 7 | import SEO from 'app/components/SEO'; 8 | 9 | 10 | const About = (props) => { 11 | 12 | return ( 13 | 14 | 15 | 19 | 20 | 21 |

For installation instructions and how to use this application, Please visit

22 | 23 | 24 | 25 | 26 |
27 | ); 28 | 29 | } 30 | 31 | export default About; 32 | -------------------------------------------------------------------------------- /src/content/ContactUs.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import React from 'react'; 4 | import DefaultLayout from 'app/layouts/Default'; 5 | import { Heading } from 'app/components/UI'; 6 | import { Row, Col, message } from 'antd'; 7 | import SEO from 'app/components/SEO'; 8 | 9 | 10 | const ContactUs = (props) => { 11 | 12 | const handleSubmit = (e) => { 13 | e.preventDefault(); 14 | message.info('Message sending functionality is not yet implemented.'); 15 | } 16 | 17 | 18 | return ( 19 | 20 | 21 | 25 | 26 | 27 |
28 |
29 | 30 |
31 | 32 | 33 |
34 |
35 | 36 | 37 |
38 |
39 | 40 | 41 |
42 | 43 | 44 | 45 |
46 |
47 | 48 | 49 | 50 | 51 |
52 | ); 53 | 54 | } 55 | 56 | export default ContactUs; 57 | -------------------------------------------------------------------------------- /src/content/Features.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import React from 'react'; 4 | import DefaultLayout from 'app/layouts/Default'; 5 | import { Heading } from 'app/components/UI'; 6 | import { Row, Col, Icon } from 'antd'; 7 | import SEO from 'app/components/SEO'; 8 | 9 | 10 | const Features = (props) => { 11 | 12 | const APPLICATION_FEATURES = [ 13 | { status: true, title: 'Static Application', description: 'You can host the app on any Static Host/CDN instead of a server', }, 14 | { status: true, title: 'Boards', description: 'Boards are the gateway to your lists, You can have as many boards as you want', }, 15 | { status: true, title: 'Lists', description: 'Each list can easily be re-arranged and updated, You can add multiple cards to a list', }, 16 | { status: true, title: 'Cards', description: 'Cards are the meat of this app, you can add as many cards as you like, re-arrange them, drag them from one list to another, etc', }, 17 | { status: true, title: 'Todo List', description: 'Each card has Todo List tab, There you can add your todo list items, update them, mark them as completed and so on.', }, 18 | { status: true, title: 'Card Meta', description: 'Each card has meta section where you can specify Duedate, Link, Image and the appropriate icons will appear below card in the list view., If image URL is specified, Image will appear above the card title.', }, 19 | { status: true, title: 'Custom Background', description: 'Each board, list and card can have different Background color, Boards can have background images as well. To change the background color of board just edit the board by clicking the Edit icon below the header and there you can update board details along with background color.', }, 20 | { status: true, title: 'Settings', description: 'You can update your details, password and preferred language in the settings page', }, 21 | { status: true, title: 'Public Boards', description: 'Now you can make boards public, Public boards are accessible to all the users with the board URL., By default all boards are private.', }, 22 | { status: true, title: 'Code Splitting', description: "Split the code into different files and only load those files when necessary., Enable tree shaking so we only include the code we're actually using in the app.", }, 23 | { status: true, title: 'Lists Spacing', description: 'Now you can add spaces between lists, You can add space before and after a list. (might be useful to some of you)', }, 24 | { status: true, title: 'Customizations', description: 'Now you have more control over specifying background colors, you can either select it using colorpicker or enter it manually, it can be Color Names, HEX, RGB or RGBA.', }, 25 | { status: true, title: 'Multiple Languages', description: 'Added support for multiple languages, Current translation of Chinese langugae is done using Google Translate.', }, 26 | { status: true, title: 'Card Positioning', description: 'Now you can top and bottom margin to any card, Giving your more flexibility and control over the UI.', }, 27 | { status: true, title: 'Loading Indicator', description: 'Since the project makes use of Webpack code splitting, Sometimes it felt like clicks were unresponsive, Now you can see loading message whenever new script(s) is being loaded.', }, 28 | ]; 29 | 30 | 31 | return ( 32 | 33 | 34 | 38 | 39 | 40 | 41 | { APPLICATION_FEATURES.map( (feature,index) => { 42 | return ( 43 | 44 |
45 |
46 |
{ feature.status ? : }
47 | { feature.title } 48 |
49 |
{ feature.description }
50 |
51 | 52 | ); 53 | }) } 54 |
55 | 56 | 57 | 58 |
59 | ); 60 | 61 | } 62 | 63 | export default Features; 64 | 65 | -------------------------------------------------------------------------------- /src/content/Home.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import React from 'react'; 4 | import DefaultLayout from 'app/layouts/Default'; 5 | import { Heading } from 'app/components/UI'; 6 | import { Row, Col, Carousel } from 'antd'; 7 | import SEO from 'app/components/SEO'; 8 | 9 | 10 | const Home = (props) => { 11 | 12 | return ( 13 | 14 | 15 | 18 | 19 | 20 |
21 |
22 | 23 |
24 |
This is a screenshot of the Board view page
25 |
26 | 27 | 28 | 29 | 30 |
31 | ); 32 | 33 | } 34 | 35 | export default Home; 36 | -------------------------------------------------------------------------------- /src/content/PageNotFound.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import React from 'react'; 4 | import DefaultLayout from 'app/layouts/Default'; 5 | import { Heading } from 'app/components/UI'; 6 | 7 | 8 | const PageNotFound = (props) => { 9 | 10 | return ( 11 | 12 | 13 |
14 | 18 |
19 | 20 |
21 | ); 22 | 23 | } 24 | 25 | export default PageNotFound; 26 | -------------------------------------------------------------------------------- /src/layouts/Default.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import React from 'react'; 4 | import Header from 'app/components/Header'; 5 | 6 | 7 | const DefaultLayout = (props) => { 8 | 9 | return ( 10 |
11 | 12 |
13 | 14 |
15 |
16 | { props.children } 17 |
18 |
19 | 20 |
21 | ); 22 | 23 | } 24 | 25 | export default DefaultLayout; 26 | -------------------------------------------------------------------------------- /src/meta.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = [ 4 | 5 | // specify the default tags for all the routes here. 6 | // this will be used if the tags for given url is not specified here. 7 | { 8 | url: 'default', 9 | title: 'Productivity Application - Kanban Style Customizable Boards, Lists and Cards to make you more productive.', 10 | description: 'Kanban style, Trello inspired Productivity application built using the awesome React, Ant Design, Apollo Client and other fantastic libraries.', 11 | keywords: 'productivity application, productive, tasks, boards, cards, todo list, card sharing, boards sharing, darg drop lists', 12 | }, 13 | 14 | { 15 | url: 'about', 16 | title: 'About | Productivity Application', 17 | description: 'General information about this productivity application, How to install and use it.', 18 | keywords: 'productivity application about, about', 19 | }, 20 | 21 | { 22 | url: 'features', 23 | title: 'Features | Productivity Application', 24 | description: 'These are some of the Features of this application.', 25 | keywords: 'features, productivity app features, application features, productivity application', 26 | }, 27 | 28 | { 29 | url: 'contact-us', 30 | title: 'Contact Us | Productivity Application', 31 | description: 'Want to get in touch with us? Enter the form below.', 32 | keywords: 'productivity app, contact, get in touch', 33 | }, 34 | 35 | ]; 36 | 37 | -------------------------------------------------------------------------------- /src/routes.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import DynamicImport from 'app/components/DynamicImport'; 4 | 5 | const WebsiteRoutes = { 6 | childRoutes: [ 7 | 8 | { 9 | path: '/', 10 | indexRoute: { 11 | getComponent(location, cb) { 12 | DynamicImport( 13 | import(/* webpackChunkName: "home" */'app/content/Home'), 14 | cb, 15 | 'home' 16 | ); 17 | } 18 | }, 19 | }, 20 | { 21 | path: 'features', 22 | indexRoute: { 23 | getComponent(location, cb) { 24 | DynamicImport( 25 | import(/* webpackChunkName: "features" */'app/content/Features'), 26 | cb, 27 | 'features' 28 | ); 29 | } 30 | }, 31 | }, 32 | { 33 | path: 'about', 34 | indexRoute: { 35 | getComponent(location, cb) { 36 | DynamicImport( 37 | import(/* webpackChunkName: "about" */'app/content/About'), 38 | cb, 39 | 'about' 40 | ); 41 | } 42 | }, 43 | }, 44 | { 45 | path: 'contact-us', 46 | indexRoute: { 47 | getComponent(location, cb) { 48 | DynamicImport( 49 | import(/* webpackChunkName: "contact-us" */'app/content/ContactUs'), 50 | cb, 51 | 'contact-us' 52 | ); 53 | } 54 | }, 55 | }, 56 | { 57 | path: '*', 58 | getComponent(location, cb) { 59 | DynamicImport( 60 | import(/* webpackChunkName: "page-not-found" */'app/content/PageNotFound'), 61 | cb, 62 | 'page-not-found' 63 | ); 64 | } 65 | }, 66 | 67 | ], 68 | }; 69 | 70 | export default WebsiteRoutes; 71 | 72 | -------------------------------------------------------------------------------- /src/static/routes.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import React from 'react'; 4 | import { Route, IndexRoute } from 'react-router'; 5 | 6 | import Home from 'app/content/Home'; 7 | import Features from 'app/content/Features'; 8 | import About from 'app/content/About'; 9 | import ContactUs from 'app/content/ContactUs'; 10 | import PageNotFound from 'app/content/PageNotFound'; 11 | 12 | 13 | const routes = ( 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | ); 22 | 23 | export default routes; 24 | 25 | -------------------------------------------------------------------------------- /src/static/template.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import React from 'react'; 4 | import _ from 'lodash'; 5 | import Meta from '../meta'; 6 | 7 | 8 | const HTML = ( props ) => { 9 | 10 | 11 | const body = props.body; 12 | 13 | // lets find the file names for vendor, bundle and manifest file from the manifest object provided to us by the react-static-webpack-plugin 14 | const vendor = _.find( props.manifest, (file) => { return _.includes(file, 'vendor'); }); 15 | const bundle = _.find( props.manifest, (file) => { return _.includes(file, 'bundle'); }); 16 | const manifest = _.find( props.manifest, (file) => { return _.includes( file, 'manifest' ); }); 17 | 18 | // let's find the name of the url for which the html file is being generated 19 | // we will use that to find its meta details. 20 | let url = ''; 21 | let urls = props.reactStaticCompilation.renderProps.location.pathname; 22 | urls = urls.split('/'); 23 | 24 | if ( urls.length == 2 && urls[1] == '' ) { 25 | url = 'home'; 26 | } else { 27 | if ( urls.length == 2 ) { 28 | url = urls[1]; 29 | } else { 30 | url = urls[2]; 31 | } 32 | } 33 | 34 | 35 | let content = _.find( Meta, { url: url } ); 36 | if ( ! content ) { 37 | content = _.find( Meta, { url: 'default' } ); 38 | } 39 | 40 | 41 | return ( 42 | 43 | 44 | 45 | 46 | 47 | { content.title } 48 | 49 | 50 | 51 | 52 | 53 | 54 |
55 |
56 |
57 |