├── src ├── resources │ ├── css │ │ ├── styles.less │ │ └── custom │ │ │ └── carousel.less │ └── img │ │ ├── favicon.ico │ │ ├── icon-72x72.png │ │ ├── icon-96x96.png │ │ ├── icon-128x128.png │ │ ├── icon-144x144.png │ │ ├── icon-152x152.png │ │ ├── icon-192x192.png │ │ ├── icon-384x384.png │ │ ├── icon-512x512.png │ │ ├── Reactpwa-Pawjs-AntDesign.png │ │ └── logo.svg ├── app │ └── components │ │ ├── home │ │ ├── images │ │ │ ├── wildernest-3-600x400.jpg │ │ │ └── 600x400-1-50-485b40e293d63f83f7562d5159819329.jpg │ │ ├── home.less │ │ └── home.js │ │ ├── about │ │ ├── about.less │ │ └── about.js │ │ └── layout │ │ └── guest-layout.js ├── webpack.js ├── server.js ├── client.js └── routes.js ├── .eslintrc ├── pawconfig.json ├── prod.pawconfig.json ├── LICENSE.md ├── package.json ├── .gitignore └── README.md /src/resources/css/styles.less: -------------------------------------------------------------------------------- 1 | @import './custom/carousel'; 2 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./node_modules/@pawjs/pawjs/.eslintrc" 3 | } 4 | -------------------------------------------------------------------------------- /src/resources/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Atyantik/example-pawjs-ant-design/HEAD/src/resources/img/favicon.ico -------------------------------------------------------------------------------- /src/resources/img/icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Atyantik/example-pawjs-ant-design/HEAD/src/resources/img/icon-72x72.png -------------------------------------------------------------------------------- /src/resources/img/icon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Atyantik/example-pawjs-ant-design/HEAD/src/resources/img/icon-96x96.png -------------------------------------------------------------------------------- /src/resources/img/icon-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Atyantik/example-pawjs-ant-design/HEAD/src/resources/img/icon-128x128.png -------------------------------------------------------------------------------- /src/resources/img/icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Atyantik/example-pawjs-ant-design/HEAD/src/resources/img/icon-144x144.png -------------------------------------------------------------------------------- /src/resources/img/icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Atyantik/example-pawjs-ant-design/HEAD/src/resources/img/icon-152x152.png -------------------------------------------------------------------------------- /src/resources/img/icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Atyantik/example-pawjs-ant-design/HEAD/src/resources/img/icon-192x192.png -------------------------------------------------------------------------------- /src/resources/img/icon-384x384.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Atyantik/example-pawjs-ant-design/HEAD/src/resources/img/icon-384x384.png -------------------------------------------------------------------------------- /src/resources/img/icon-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Atyantik/example-pawjs-ant-design/HEAD/src/resources/img/icon-512x512.png -------------------------------------------------------------------------------- /src/resources/img/Reactpwa-Pawjs-AntDesign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Atyantik/example-pawjs-ant-design/HEAD/src/resources/img/Reactpwa-Pawjs-AntDesign.png -------------------------------------------------------------------------------- /src/app/components/home/images/wildernest-3-600x400.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Atyantik/example-pawjs-ant-design/HEAD/src/app/components/home/images/wildernest-3-600x400.jpg -------------------------------------------------------------------------------- /pawconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "port": "3003", 3 | "host": "0.0.0.0", 4 | "appRootUrl": "/", 5 | "serviceWorker": false, 6 | "serverSideRender": true, 7 | "singlePageApplication": false 8 | } 9 | -------------------------------------------------------------------------------- /src/app/components/home/images/600x400-1-50-485b40e293d63f83f7562d5159819329.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Atyantik/example-pawjs-ant-design/HEAD/src/app/components/home/images/600x400-1-50-485b40e293d63f83f7562d5159819329.jpg -------------------------------------------------------------------------------- /prod.pawconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "port": "9003", 3 | "host": "0.0.0.0", 4 | "appRootUrl": "/examples/ant-design", 5 | "serviceWorker": true, 6 | "asyncCSS": false, 7 | "serverSideRender": true, 8 | "singlePageApplication": false 9 | } 10 | -------------------------------------------------------------------------------- /src/webpack.js: -------------------------------------------------------------------------------- 1 | import LessPlugin from '@pawjs/less/webpack'; 2 | 3 | export default class ProjectWebpack { 4 | constructor({ addPlugin }) { 5 | const options = { 6 | javascriptEnabled: true, 7 | }; 8 | addPlugin(new LessPlugin(options)); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/resources/css/custom/carousel.less: -------------------------------------------------------------------------------- 1 | .custom-carousel { 2 | .slick-slide { 3 | text-align: center; 4 | height: calc(50vh - 64px) !important; 5 | background: #364d79; 6 | overflow: hidden; 7 | display: flex !important; 8 | justify-content: center; 9 | align-items: center; 10 | } 11 | } 12 | 13 | .custom-carousel { 14 | .slick-slide { 15 | h1 { 16 | color: #fff; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/server.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import FavIcon from './resources/img/favicon.ico'; 3 | 4 | export default class Server { 5 | apply(serverHandler) { 6 | serverHandler.hooks.beforeHtmlRender.tap('AddGoogleAnalytics', (Application) => { 7 | Application.htmlProps.head.push( 8 | , 9 | , 10 | ); 11 | return Application; 12 | }); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/app/components/about/about.less: -------------------------------------------------------------------------------- 1 | .header-layout { 2 | display: flex; 3 | justify-content: space-between; 4 | align-items: center; 5 | } 6 | 7 | .about-section { 8 | padding-top: 5.5em; 9 | padding-bottom: 2em; 10 | max-width: 1050px; 11 | margin: 0 auto !important; 12 | align-items: center; 13 | h3 { 14 | font-size: 30px; 15 | font-weight: bold; 16 | } 17 | p { 18 | font-size: 16px; 19 | max-width: 700px; 20 | margin: 0 auto; 21 | } 22 | } 23 | .mission-section { 24 | max-width: 1050px; 25 | margin: 0 auto !important; 26 | align-items: center; 27 | img { 28 | width: 100%; 29 | } 30 | } 31 | .mission-section-text { 32 | margin-top: 2em; 33 | } 34 | 35 | .align-center { 36 | text-align: center; 37 | } 38 | .m-0 { 39 | margin: 0 !important; 40 | } 41 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Atyantik Technologies Private Limited 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. -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example-pawjs-ant-design", 3 | "version": "1.0.0", 4 | "description": "Example on using Ant Design with PawJS", 5 | "scripts": { 6 | "start": "pawjs --env=development start", 7 | "build": "pawjs --env=production --config=prod.pawconfig.json build" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/Atyantik/example-pawjs-ant-design.git" 12 | }, 13 | "author": { 14 | "name": "Atyantik Technologies", 15 | "email": "admin@atyantik.com", 16 | "url": "https://www.atyantik.com/" 17 | }, 18 | "engines": { 19 | "node": ">=10.12.0" 20 | }, 21 | "contributors": [ 22 | { 23 | "name": "Tirth Bodawala", 24 | "email": "tirthbodawala@atyantik.com", 25 | "url": "https://www.atyantik.com/" 26 | }, 27 | { 28 | "name": "Yash Thakur", 29 | "email": "thakur.yash514@gmail.com", 30 | "url": "https://www.yashthakur.in/" 31 | } 32 | ], 33 | "license": "MIT", 34 | "bugs": { 35 | "url": "https://github.com/Atyantik/example-pawjs-ant-design/issues" 36 | }, 37 | "homepage": "https://github.com/Atyantik/example-pawjs-ant-design#readme", 38 | "dependencies": { 39 | "@pawjs/less": "^2.0.0", 40 | "@pawjs/pawjs": "^2.2.6", 41 | "antd": "^3.10.2" 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/client.js: -------------------------------------------------------------------------------- 1 | import 'antd/dist/antd.less'; 2 | import './resources/css/styles.less'; 3 | 4 | export default class Client { 5 | loadAds() { 6 | setTimeout(() => { 7 | // eslint-disable-next-line 8 | if (typeof _codefund !== 'undefined' && _codefund.serve) { 9 | // eslint-disable-next-line 10 | _codefund.serve(); 11 | } 12 | (window.adsbygoogle = window.adsbygoogle || []).push({}); 13 | }, 10); 14 | } 15 | 16 | trackPageView() { 17 | const { ga } = window; 18 | if (typeof ga !== 'undefined' && ga) { 19 | ga('send', { 20 | hitType: 'pageview', 21 | page: window.location.pathname, 22 | }); 23 | } 24 | } 25 | 26 | apply(clientHandler) { 27 | clientHandler.hooks.beforeRender.tapPromise('InitAds', async () => { 28 | this.loadAds(); 29 | }); 30 | clientHandler.hooks.renderComplete.tap('InitTracking', () => { 31 | window.ga = window.ga || function () { 32 | (window.ga.q = window.ga.q || []).push(arguments); 33 | }; 34 | window.ga.l = +new Date; 35 | window.ga('create', 'UA-108804791-1', 'auto'); 36 | window.ga('send', 'pageview', window.location.pathname); 37 | }); 38 | clientHandler.hooks.locationChange.tapPromise('ReInitAds', async () => { 39 | this.loadAds(); 40 | this.trackPageView(); 41 | }); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/app/components/home/home.less: -------------------------------------------------------------------------------- 1 | .header-layout { 2 | display: flex; 3 | justify-content: space-between; 4 | align-items: center; 5 | } 6 | img { 7 | max-width: 100%; 8 | } 9 | .align-center { 10 | text-align: center; 11 | } 12 | .m-0 { 13 | margin: 0 !important; 14 | } 15 | 16 | .about-section { 17 | padding-top: 5.5em; 18 | padding-bottom: 5.5em; 19 | h3 { 20 | font-size: 30px; 21 | padding-bottom: 1em; 22 | font-weight: bold; 23 | } 24 | p { 25 | font-size: 16px; 26 | } 27 | } 28 | .content-section-text { 29 | padding: 0 2em; 30 | display: flex; 31 | flex-direction: column; 32 | justify-content: center; 33 | p{ 34 | font-size: 16px; 35 | } 36 | h3 { 37 | font-size: 24px; 38 | } 39 | } 40 | .content-section-img { 41 | img { 42 | width: 100%; 43 | } 44 | } 45 | .single-service { 46 | text-align: center; 47 | i { 48 | font-size: 60px; 49 | padding: 0.5em; 50 | } 51 | } 52 | @media (min-width: 768px) { 53 | .content-section>div:nth-child(even) { 54 | flex-direction: row-reverse; 55 | } 56 | } 57 | 58 | @media (max-width: 767px) { 59 | .content-section-img { 60 | img { 61 | width: 100%; 62 | } 63 | } 64 | .content-section-text { 65 | padding-top: 1em; 66 | padding-bottom: 1em; 67 | } 68 | .about-section { 69 | h3 { 70 | padding-bottom: 0.5em; 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | 4 | *.log 5 | npm-debug.log* 6 | yarn-debug.log* 7 | yarn-error.log* 8 | 9 | # Runtime data 10 | pids 11 | *.pid 12 | *.seed 13 | *.pid.lock 14 | 15 | # Directory for instrumented libs generated by jscoverage/JSCover 16 | lib-cov 17 | 18 | # Coverage directory used by tools like istanbul 19 | coverage 20 | 21 | # nyc test coverage 22 | .nyc_output 23 | 24 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 25 | .grunt 26 | 27 | # Bower dependency directory (https://bower.io/) 28 | bower_components 29 | 30 | # node-waf configuration 31 | .lock-wscript 32 | 33 | # Compiled binary addons (http://nodejs.org/api/addons.html) 34 | build/Release 35 | 36 | # Dependency directories 37 | node_modules/ 38 | jspm_packages/ 39 | 40 | # Typescript v1 declaration files 41 | typings/ 42 | 43 | # Optional npm cache directory 44 | .npm 45 | 46 | # Optional eslint cache 47 | .eslintcache 48 | 49 | # Optional REPL history 50 | .node_repl_history 51 | 52 | # Output of 'npm pack' 53 | *.tgz 54 | 55 | # Yarn Integrity file 56 | .yarn-integrity 57 | 58 | # dotenv environment variables file 59 | .env 60 | 61 | # WebStorm configurations 62 | .idea 63 | 64 | # Ignore the etc folders created by 65 | etc/ 66 | 67 | # Do not add dist to git 68 | dist 69 | 70 | # ignore the config assets as its generated runtime and thus should notbe included in git 71 | src/config/assets.js 72 | 73 | # Ignore sass cache 74 | .sass-cache 75 | -------------------------------------------------------------------------------- /src/app/components/layout/guest-layout.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { Link } from 'react-router-dom'; 3 | import { 4 | Affix, BackTop, Button, Drawer, Icon, Layout, 5 | } from 'antd'; 6 | import styles from '../home/home.less'; 7 | 8 | const { 9 | Header, Footer, 10 | } = Layout; 11 | 12 | export default class GuestLayout extends Component { 13 | state = { 14 | visible: false, 15 | }; 16 | 17 | showDrawer = () => { 18 | this.setState({ 19 | visible: true, 20 | }); 21 | }; 22 | 23 | onClose = () => { 24 | this.setState({ 25 | visible: false, 26 | }); 27 | }; 28 | 29 | render() { 30 | const { children } = this.props; 31 | const { visible } = this.state; 32 | return ( 33 |
Home
56 |About
57 |
5 |
6 |
30 | Lorem Ipsum is simply dummy text of the printing and typesetting industry. 31 | Lorem Ipsum has been the industry's standard dummy text ever since 32 | the 1500s, when an unknown printer took a galley of type and scrambled it 33 | to make a type specimen book. 34 |
35 | 36 |53 | Lorem Ipsum is simply dummy text of the printing and typesetting industry. 54 | Lorem Ipsum has been the industry's standard dummy text ever since 55 | the 1500s, when an unknown printer took a galley of type and scrambled 56 | it to make a type specimen book. 57 |
58 |64 | Lorem Ipsum is simply dummy text of the printing and typesetting industry. 65 | Lorem Ipsum has been the industry's standard dummy text ever since 66 | the 1500s, when an unknown printer took a galley of type and scrambled 67 | it to make a type specimen book. 68 |
69 |75 | Lorem Ipsum is simply dummy text of the printing and typesetting industry. 76 | Lorem Ipsum has been the industry's standard dummy text ever since 77 | the 1500s, when an unknown printer took a galley of type and scrambled 78 | it to make a type specimen book. 79 |
80 |49 | Lorem Ipsum is simply dummy text of the printing and typesetting industry. 50 | Lorem Ipsum has been the industry's standard dummy text ever since 51 | the 1500s, when an unknown printer took a galley of type and scrambled it 52 | to make a type specimen book. It has survived not only five centuries, 53 | but also the leap into electronic typesetting, remaining essentially unchanged. 54 | It was popularised in the 1960s with the release of Letraset sheets 55 | containing Lorem Ipsum passages, and more recently with desktop publishing 56 | software like Aldus PageMaker including versions of Lorem Ipsum. 57 |
58 | 59 |71 | Description content will go here. 72 |
73 |82 | Description content will go here. 83 |
84 |93 | Description content will go here. 94 |
95 |114 | Lorem Ipsum is simply dummy text of the printing and typesetting industry. 115 | Lorem Ipsum has been the industry's standard dummy text ever since 116 | the 1500s, when an unknown printer took a galley of type and scrambled it 117 | to make a type specimen book. It has survived not only five centuries, 118 | but also the leap into electronic typesetting, remaining essentially unchanged. 119 | It was popularised in the 1960s with the release of Letraset sheets 120 | containing Lorem Ipsum passages, and more recently with desktop publishing 121 | software like Aldus PageMaker including versions of Lorem Ipsum. 122 |
123 | 124 |134 | Lorem Ipsum is simply dummy text of the printing and typesetting industry. 135 | Lorem Ipsum has been the industry's standard dummy text ever since 136 | the 1500s, when an unknown printer took a galley of type and scrambled it 137 | to make a type specimen book. It has survived not only five centuries, 138 | but also the leap into electronic typesetting, remaining essentially unchanged. 139 | It was popularised in the 1960s with the release of Letraset sheets 140 | containing Lorem Ipsum passages, and more recently with desktop publishing 141 | software like Aldus PageMaker including versions of Lorem Ipsum. 142 |
143 | 144 |