├── .gitignore ├── LICENSE.md ├── README.md ├── dist ├── assets │ ├── css │ │ ├── libs.bundle.css │ │ ├── libs.bundle.css.map │ │ ├── theme.bundle.css │ │ └── theme.bundle.css.map │ ├── fonts │ │ └── remixicon.woff │ ├── images │ │ ├── favicon │ │ │ ├── android-chrome-192x192.png │ │ │ ├── android-chrome-256x256.png │ │ │ ├── apple-touch-icon.png │ │ │ ├── browserconfig.xml │ │ │ ├── favicon-16x16.png │ │ │ ├── favicon-32x32.png │ │ │ ├── favicon.ico │ │ │ ├── mstile-150x150.png │ │ │ └── site.webmanifest │ │ ├── figma.svg │ │ ├── illustrator.svg │ │ ├── indesign.svg │ │ ├── photoshop.svg │ │ ├── portfolio-1.jpg │ │ ├── portfolio-2.jpg │ │ ├── portfolio-3.jpg │ │ ├── portfolio-4.jpg │ │ ├── portfolio-5.jpg │ │ ├── portfolio-6.jpg │ │ ├── portfolio-7.jpg │ │ ├── portfolio-8.jpg │ │ ├── portfolio-9.jpg │ │ ├── portfolio-small-1.jpg │ │ ├── portfolio-small-2.jpg │ │ ├── portfolio-small-3.jpg │ │ ├── portfolio-small-4.jpg │ │ ├── portfolio-small-5.jpg │ │ ├── portfolio-small-6.jpg │ │ ├── portfolio-small-7.jpg │ │ ├── portfolio-small-8.jpg │ │ ├── portfolio-small-9.jpg │ │ ├── profile.png │ │ ├── sketch.svg │ │ ├── slideout-bg.png │ │ └── xd.svg │ └── js │ │ ├── theme.bundle.js │ │ └── vendor.bundle.js └── index.html ├── package-lock.json ├── package.json ├── postcss.config.js ├── src ├── assets │ ├── fonts │ │ └── remixicon.woff │ ├── images │ │ ├── favicon │ │ │ ├── android-chrome-192x192.png │ │ │ ├── android-chrome-256x256.png │ │ │ ├── apple-touch-icon.png │ │ │ ├── browserconfig.xml │ │ │ ├── favicon-16x16.png │ │ │ ├── favicon-32x32.png │ │ │ ├── favicon.ico │ │ │ ├── mstile-150x150.png │ │ │ └── site.webmanifest │ │ ├── figma.svg │ │ ├── illustrator.svg │ │ ├── indesign.svg │ │ ├── photoshop.svg │ │ ├── portfolio-1.jpg │ │ ├── portfolio-2.jpg │ │ ├── portfolio-3.jpg │ │ ├── portfolio-4.jpg │ │ ├── portfolio-5.jpg │ │ ├── portfolio-6.jpg │ │ ├── portfolio-7.jpg │ │ ├── portfolio-8.jpg │ │ ├── portfolio-9.jpg │ │ ├── portfolio-small-1.jpg │ │ ├── portfolio-small-2.jpg │ │ ├── portfolio-small-3.jpg │ │ ├── portfolio-small-4.jpg │ │ ├── portfolio-small-5.jpg │ │ ├── portfolio-small-6.jpg │ │ ├── portfolio-small-7.jpg │ │ ├── portfolio-small-8.jpg │ │ ├── portfolio-small-9.jpg │ │ ├── profile.png │ │ ├── sketch.svg │ │ ├── slideout-bg.png │ │ └── xd.svg │ ├── js │ │ ├── components │ │ │ ├── aos.js │ │ │ ├── modal.js │ │ │ ├── slideout.js │ │ │ └── swiper.js │ │ ├── misc.js │ │ └── theme.js │ └── scss │ │ ├── abstracts │ │ ├── _css-vars.scss │ │ ├── _mixins.scss │ │ └── _sass-variables.scss │ │ ├── base │ │ └── _base.scss │ │ ├── components │ │ ├── _buttons.scss │ │ ├── _components.scss │ │ ├── _portfolio.scss │ │ └── _slideout.scss │ │ ├── custom.scss │ │ ├── libs.scss │ │ ├── theme.scss │ │ ├── utilities │ │ ├── _bootstrap-api-utilities.scss │ │ └── _utilities.scss │ │ └── vendors │ │ ├── _vendors.scss │ │ ├── aos │ │ └── _aos.scss │ │ ├── remixicon │ │ └── _remixicon.scss │ │ └── swiper │ │ └── _swiper.scss ├── data │ ├── config.json │ ├── experience.json │ ├── skills.json │ ├── testimonials.json │ └── work.json ├── html │ └── index.html └── partials │ ├── breadcrumbs │ └── breadcrumbs.html │ ├── content │ └── subtitle.html │ ├── footer │ ├── footer.html │ └── scripts.html │ ├── header │ ├── head │ │ └── head.html │ └── navbar │ │ └── navbar.html │ ├── home │ ├── about.html │ ├── experience.html │ ├── hero.html │ ├── portfolio.html │ ├── skills.html │ └── testimonials.html │ ├── logo │ └── logo.html │ ├── modals │ ├── modal-portfolio.html │ └── modals.html │ ├── slideout │ └── slideout.html │ ├── svg │ ├── svg-arrow-one.html │ ├── svg-arrow-two.html │ ├── svg-doodle-five.html │ ├── svg-doodle-four.html │ ├── svg-doodle-one.html │ ├── svg-doodle-three.html │ └── svg-doodle-two.html │ └── swiper │ └── swiper-testimonials.html └── webpack.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled source # 2 | ################### 3 | *.com 4 | *.class 5 | *.dll 6 | *.exe 7 | *.o 8 | *.so 9 | 10 | # Packages # 11 | ############ 12 | # it's better to unpack these files and commit the raw source 13 | # git has its own built in compression methods 14 | *.7z 15 | *.dmg 16 | *.gz 17 | *.iso 18 | *.jar 19 | *.rar 20 | *.tar 21 | *.zip 22 | 23 | # Logs and databases # 24 | ###################### 25 | *.log 26 | *.sql 27 | *.sqlite 28 | 29 | # OS generated files # 30 | ###################### 31 | .DS_Store 32 | .DS_Store? 33 | ._* 34 | .Spotlight-V100 35 | .Trashes 36 | ehthumbs.db 37 | Thumbs.db 38 | 39 | # Logs 40 | logs 41 | *.log 42 | npm-debug.log* 43 | yarn-debug.log* 44 | yarn-error.log* 45 | lerna-debug.log* 46 | 47 | # Diagnostic reports (https://nodejs.org/api/report.html) 48 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 49 | 50 | # Runtime data 51 | pids 52 | *.pid 53 | *.seed 54 | *.pid.lock 55 | 56 | # Directory for instrumented libs generated by jscoverage/JSCover 57 | lib-cov 58 | 59 | # Coverage directory used by tools like istanbul 60 | coverage 61 | *.lcov 62 | 63 | # nyc test coverage 64 | .nyc_output 65 | 66 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 67 | .grunt 68 | 69 | # Bower dependency directory (https://bower.io/) 70 | bower_components 71 | 72 | # node-waf configuration 73 | .lock-wscript 74 | 75 | # Compiled binary addons (https://nodejs.org/api/addons.html) 76 | build/Release 77 | 78 | # Dependency directories 79 | node_modules/ 80 | jspm_packages/ 81 | 82 | # TypeScript v1 declaration files 83 | typings/ 84 | 85 | # TypeScript cache 86 | *.tsbuildinfo 87 | 88 | # Optional npm cache directory 89 | .npm 90 | 91 | # Optional eslint cache 92 | .eslintcache 93 | 94 | # Microbundle cache 95 | .rpt2_cache/ 96 | .rts2_cache_cjs/ 97 | .rts2_cache_es/ 98 | .rts2_cache_umd/ 99 | 100 | # Optional REPL history 101 | .node_repl_history 102 | 103 | # Output of 'npm pack' 104 | *.tgz 105 | 106 | # Yarn Integrity file 107 | .yarn-integrity 108 | 109 | # dotenv environment variables file 110 | .env 111 | .env.test 112 | 113 | # parcel-bundler cache (https://parceljs.org/) 114 | .cache 115 | 116 | # Next.js build output 117 | .next 118 | 119 | # Nuxt.js build / generate output 120 | .nuxt 121 | docs 122 | 123 | # don't ignore our src/docs 124 | !src/docs/ 125 | 126 | # Serverless directories 127 | .serverless/ 128 | 129 | # FuseBox cache 130 | .fusebox/ 131 | 132 | # DynamoDB Local files 133 | .dynamodb/ 134 | 135 | # TernJS port file 136 | .tern-port 137 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 PixelRocket 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. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Muse - Bootstrap 5 HTML Responsive One-Page Creative Portfolio Template 2 | 3 | ## Overview 4 | Muse is a one-page responsive HTML Bootstrap 5 template for graphic designers and illustrators to showcase their work. 5 | The template comes with a custom modal that pulls in the correct image and project description, a custom animated slide-out menu, client testimonials widget, skills widget and experience widget. 6 | 7 | View Demo | Download ZIP 8 | 9 | ![Bootstrap 5 Responsive HTML One-Page Portfolio Template](https://pixelrocket-public-assets.s3.eu-west-2.amazonaws.com/github-assets/muse-html/home.jpg "Muse | Responsive Bootstrap 5 One-Page Portfolio Template") 10 | 11 | ## Table of contents 12 | 13 | - [Requirements](#requirements) 14 | - [Quick Start](#quick-start) 15 | - [Template Pages](#template-pages) 16 | - [Demo Link](#demo-link) 17 | - [Template Key Features](#template-key-features) 18 | - [Template File Structure](#template-file-structure) 19 | - [Handlebars](#handlebars) 20 | - [Template JSON Data](#template-json-data) 21 | - [Customise Template Styles](#customise-template-styles) 22 | - [Create New Pages](#create-new-pages) 23 | - [Bootstrap Documentation](#bootstrap-documentation) 24 | - [Credits](#credits) 25 | - [Contact Us](#contact-us) 26 | 27 | 28 | ## Requirements 29 | If you do not intend to work with the template source code (and that means you will not be compiling it or running the Webpack dev server), you do not need to install anything. You can simply navigate to the dist folder and start editing the files. 30 | 31 | Most developers will be editing the source code and will also be running Webpack to recompile the template files. If that's the case, then ensure that you have Node.js installed. [You can download it from here](https://nodejs.org/en/download/) 32 | 33 | 34 | ## Quick Start 35 | - [Download the latest release](https://github.com/PixelRocket-Shop/muse-html-bootstrap/archive/main.zip) OR clone the repo: `git clone https://github.com/PixelRocket-Shop/muse-html-bootstrap.git` 36 | - Install Node.js if you don't already have it on your system. 37 | - Open the project root in your command line. 38 | - run `npm install` in your command line. 39 | - run `npm start` to start Webpack devserver. 40 | - if you want to recompile the template files (which output to the dist folder), run `npm run build` 41 | 42 | 43 | ## Template Pages 44 | The template consists of a single page: 45 | 46 | * Homepage 47 | 48 | To keep code repetition to a minimum, we've used Handlebars.js as the templating engine and partials to quickly add the same code to different pages. We also use a Handlebars plugin for JSON data - this allows us to use loops and output a single HTML code block instead of repeating the same HTML. 49 | 50 | 51 | ## Demo Link 52 | [Demo URL](https://muse-html-bootstrap.vercel.app/) 53 | 54 | **Please note that this is an HTML template only. It does not connect to a database, and will not automatically work in a content management system (Wordpress etc). You will need to incorporate our code into your application.** 55 | 56 | 57 | ## Template Key Features 58 | 59 | * Built with Bootstrap 5 60 | * Fully responsive 61 | * My Portfolio component with custom modal display 62 | * Animated Slideout menu component 63 | * My experience component 64 | * My skills component 65 | * Client testmonials component 66 | 67 | 68 | ## Template File structure 69 | 📁 dist - Generated version of the template. Go here if you do not want to work with the template source code. But be warned: if you customise anything in this folder directly, and then later recompile the template using webpack, unless you move the dist folder out of the template, your changes will be overridden. 70 | 71 | 📁 node_modules - Directory where NPM installs dependancies. You will not see this folder until you complete the template installation. You do not need to create this folder. 72 | 73 | 📁 src - Template source code. Go here to customise your template. 74 | 75 | 📁 src/assets - Template assets such as CSS, JS, Images etc. 76 | 77 | 📁 src/data - Template JSON Data files. We use these JSON files to make your job easier to insert content into the template. 78 | 79 | 📁 src/html - Template pages. Go here to edit existing pages or add new pages. 80 | 81 | 📁 src/partials - Handlebars partial templates. 82 | 83 | 84 | ## Handlebars 85 | Handlebars is a template engine that allows us to keep our template source code as organised and as clean as possible. It cuts down on code duplication and through the use of helper functions, allows template developers to very quickly output large amounts of data with minimal code. [You can read more about it here](https://handlebarsjs.com). 86 | 87 | 88 | ## Template JSON Data 89 | The Webpack Handlebars plugin that we use comes with a very handy utility that allows us to pass in JSON files as template data. 90 | 91 | Please navigate to: src/data. Here is where our template data JSON files reside. You can edit, remove or add your own to this folder. 92 | 93 | 94 | ## Customise Template Styles 95 | All of the template's source CSS/SASS files are kept inside the template's assets folder. Navigate to src/assets/scss. Open up theme.scss with your editor. 96 | 97 | This is the main entry point for all other SASS/CSS files. 98 | 99 | 100 | ## Create New Pages 101 | To create a new page, navigate in your code editor to: src/html. To make it easier to get the correct HTML in place, clone an existing page. Rename the newly-created file to whatever URL you require. And that's it. You are now free to open the new page with your code editor, make your changes, and then save the file. Quit Webpack devserver and restart it for the page to show up. 102 | 103 | 104 | ## Bootstrap Documentation 105 | Bootstrap already has a comprehensive documentation site that will guide you in setting up and using all default Bootstrap features. Bootstrap 5 is fully integrated to our template's source code. Please refer to Bootstrap's doc site first for any default Bootstrap features: [Visit Bootstrap's Doc Site](https://getbootstrap.com/docs/5.0/getting-started/introduction/) 106 | 107 | 108 | ## Credits 109 | [Bootstrap](https://getbootstrap.com/) 110 | 111 | [AOS.js](https://michalsnik.github.io/aos/) 112 | 113 | [Unsplash](https://unsplash.com/) 114 | 115 | [Freepik](https://www.freepik.com/) 116 | 117 | [Swiper.js](https://swiperjs.com/) 118 | 119 | ## Contact Us 120 | You can find our website [here](https://www.pixelrocket.store) or you can email us at support@pixelrocket.store -------------------------------------------------------------------------------- /dist/assets/css/libs.bundle.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack://./node_modules/swiper/swiper-bundle.css","webpack://./node_modules/aos/src/sass/_core.scss","webpack://./node_modules/aos/src/sass/_easing.scss","webpack://./node_modules/aos/src/sass/_animations.scss"],"names":[],"mappings":"AAYA,WACE,wBAA2B,CAC3B,2sEAA4sE,CAC5sE,eAAgB,CAChB,iBACF,CACA,MACE,4BACF,CACA,kBACE,gBAAiB,CACjB,iBAAkB,CAClB,iBAAkB,CAClB,eAAgB,CAChB,eAAgB,CAChB,SAAU,CAEV,SACF,CACA,2CACE,qBACF,CACA,gBACE,iBAAkB,CAClB,UAAW,CACX,WAAY,CACZ,SAAU,CACV,YAAa,CACb,6BAA8B,CAC9B,sBACF,CACA,wDAEE,uBACF,CACA,2CACE,cACF,CACA,kDACE,cAAe,CACf,qBACF,CACA,4CACE,mCAAoC,CACpC,aACF,CACA,iCACE,kBACF,CACA,2DACE,kBACF,CACA,cACE,aAAc,CACd,UAAW,CACX,WAAY,CACZ,iBAAkB,CAClB,6BACF,CACA,8BACE,iBACF,CAEA,wEAEE,WACF,CACA,6CACE,sBAAuB,CACvB,oCACF,CAEA,qBACE,kBACF,CACA,+SAOE,2BACF,CACA,8LAIE,iBAAkB,CAClB,MAAO,CACP,KAAM,CACN,UAAW,CACX,WAAY,CACZ,mBAAoB,CACpB,UACF,CACA,+CACE,mEACF,CACA,gDACE,kEACF,CACA,8CACE,iEACF,CACA,iDACE,mEACF,CAEA,2CACE,aAAc,CACd,oBAAqB,CAErB,uBAEF,CACA,8DACE,YACF,CACA,yDACE,6BACF,CACA,uEACE,4BACF,CACA,qEACE,4BACF,CACA,MACE,6BAIF,CACA,wCAEE,iBAAkB,CAClB,OAAQ,CACR,+CAAoD,CACpD,oCAAqC,CACrC,mDAAwD,CACxD,UAAW,CACX,cAAe,CACf,YAAa,CACb,kBAAmB,CACnB,sBAAuB,CACvB,8DACF,CACA,sFAEE,WAAa,CACb,WAAY,CACZ,mBACF,CACA,oDAEE,wBAAyB,CACzB,uCAAwC,CACxC,6BAA+B,CAC/B,gBAAiB,CACjB,mBAAoB,CACpB,mBAAqB,CACrB,aACF,CACA,8DAEE,SAAU,CACV,UACF,CACA,0EAEE,cACF,CACA,8DAEE,UAAW,CACX,SACF,CACA,0EAEE,cACF,CACA,gFAEE,8BACF,CACA,gFAEE,8BACF,CACA,oBACE,YACF,CAMA,mBACE,iBAAkB,CAClB,iBAAkB,CAClB,sBAAyB,CACzB,uBAA+B,CAC/B,UACF,CACA,4CACE,SACF,CAEA,8GAGE,WAAY,CACZ,MAAO,CACP,UACF,CAEA,mCACE,eAAgB,CAChB,WACF,CACA,6DACE,oBAAsB,CACtB,iBACF,CAIA,6IACE,kBACF,CACA,yEACE,oBACF,CACA,8EACE,oBACF,CACA,yEACE,oBACF,CACA,8EACE,oBACF,CACA,0BACE,SAAU,CACV,UAAW,CACX,oBAAqB,CACrB,iBAAkB,CAClB,eAAgB,CAChB,UACF,CACA,gCACE,WAAY,CACZ,QAAS,CACT,SAAU,CACV,eAAgB,CAChB,uBAAwB,CACrB,oBAAqB,CAChB,eACV,CACA,uDACE,cACF,CACA,iCACE,SAAU,CACV,mEACF,CACA,sDACE,UAAW,CACX,OAAQ,CACR,+BACF,CACA,gFACE,YAAa,CACb,aACF,CACA,wFACE,OAAQ,CACR,0BAA2B,CAC3B,SACF,CACA,kHACE,oBAAqB,CACrB,gCACF,CACA,kFACE,YACF,CACA,0FACE,QAAS,CACT,0BAA2B,CAC3B,kBACF,CACA,oHACE,iCACF,CACA,+GACE,kCACF,CAEA,+BACE,0BAA+B,CAC/B,iBACF,CACA,mEACE,mEAAqE,CACrE,iBAAkB,CAClB,MAAO,CACP,KAAM,CACN,UAAW,CACX,WAAY,CACZ,kBAAmB,CACnB,yBACF,CACA,yFACE,0BACF,CACA,6JAEE,UAAW,CACX,UAAW,CACX,MAAO,CACP,KACF,CACA,6JAEE,SAAU,CACV,WAAY,CACZ,MAAO,CACP,KACF,CACA,yBACE,8BACF,CACA,yBACE,8BACF,CACA,wBACE,YACF,CAEA,kBACE,kBAAmB,CACnB,iBAAkB,CAClB,qBAAsB,CACtB,yBACF,CACA,+CACE,iBAAkB,CAClB,OAAQ,CACR,UAAW,CACX,UAAW,CACX,UAAW,CACX,SACF,CACA,6CACE,iBAAkB,CAClB,SAAU,CACV,MAAO,CACP,UAAW,CACX,SAAU,CACV,UACF,CACA,uBACE,WAAY,CACZ,UAAW,CACX,iBAAkB,CAClB,yBAA8B,CAC9B,kBAAmB,CACnB,MAAO,CACP,KACF,CACA,8BACE,WACF,CACA,uBACE,YACF,CACA,uBACE,UAAW,CACX,WAAY,CACZ,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,iBACF,CACA,oFAGE,cAAe,CACf,eAAgB,CAChB,kBACF,CACA,qBACE,WACF,CAOA,uBACE,UAAW,CACX,WAAY,CACZ,iBAAkB,CAClB,QAAS,CACT,OAAQ,CACR,iBAAkB,CAClB,gBAAiB,CACjB,UAAW,CACX,oBAAqB,CACrB,kDAAmD,CACnD,qBAAsB,CAEtB,iBAAkB,CAClB,wEAA6B,CAA7B,gCACF,CACA,6BACE,6BACF,CACA,6BACE,6BACF,CACA,iCACE,GACE,uBACF,CACF,CAEA,uCACE,iBAAkB,CAClB,MAAO,CACP,KAAM,CACN,mBAAoB,CACpB,SAAU,CACV,aACF,CACA,gEACE,mCACF,CACA,qCACE,mBAAoB,CACpB,2BACF,CACA,mDACE,mBACF,CACA,6GAEE,mBACF,CACA,uBACE,gBACF,CACA,qCACE,mBAAoB,CACpB,kCAAmC,CAC3B,0BAA2B,CACnC,SAAU,CACV,iBAAkB,CAClB,oBAAqB,CACrB,UAAW,CACX,WACF,CACA,mDACE,mBACF,CACA,0DACE,uBACF,CACA,6GAEE,mBACF,CACA,wLAIE,mBAAoB,CACpB,kBACF,CACA,sMAIE,SAAU,CACV,kCAAmC,CAC3B,0BACV,CACA,2CACE,iBAAkB,CAClB,MAAO,CACP,QAAW,CACX,UAAW,CACX,WAAY,CACZ,UAAY,CACZ,SACF,CACA,kDACE,UAAW,CACX,eAAgB,CAChB,iBAAkB,CAClB,MAAO,CACP,KAAM,CACN,QAAS,CACT,OAAQ,CACR,yBAA0B,CAC1B,iBACF,CACA,uBACE,gBACF,CACA,qCACE,mBAAoB,CACpB,kCAAmC,CAC3B,0BAA2B,CACnC,SACF,CACA,mDACE,mBACF,CACA,6GAEE,mBACF,CACA,sMAIE,SAAU,CACV,kCAAmC,CAC3B,0BACV,CC9hBI,qFAEE,wBAAA,CAG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","file":"libs.bundle.css","sourcesContent":["/**\n * Swiper 6.4.11\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2021 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 6, 2021\n */\n\n@font-face {\n font-family: 'swiper-icons';\n src: url('data:application/font-woff;charset=utf-8;base64, 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') format('woff');\n font-weight: 400;\n font-style: normal;\n}\n:root {\n --swiper-theme-color: #007aff;\n}\n.swiper-container {\n margin-left: auto;\n margin-right: auto;\n position: relative;\n overflow: hidden;\n list-style: none;\n padding: 0;\n /* Fix of Webkit flickering */\n z-index: 1;\n}\n.swiper-container-vertical > .swiper-wrapper {\n flex-direction: column;\n}\n.swiper-wrapper {\n position: relative;\n width: 100%;\n height: 100%;\n z-index: 1;\n display: flex;\n transition-property: transform;\n box-sizing: content-box;\n}\n.swiper-container-android .swiper-slide,\n.swiper-wrapper {\n transform: translate3d(0px, 0, 0);\n}\n.swiper-container-multirow > .swiper-wrapper {\n flex-wrap: wrap;\n}\n.swiper-container-multirow-column > .swiper-wrapper {\n flex-wrap: wrap;\n flex-direction: column;\n}\n.swiper-container-free-mode > .swiper-wrapper {\n transition-timing-function: ease-out;\n margin: 0 auto;\n}\n.swiper-container-pointer-events {\n touch-action: pan-y;\n}\n.swiper-container-pointer-events.swiper-container-vertical {\n touch-action: pan-x;\n}\n.swiper-slide {\n flex-shrink: 0;\n width: 100%;\n height: 100%;\n position: relative;\n transition-property: transform;\n}\n.swiper-slide-invisible-blank {\n visibility: hidden;\n}\n/* Auto Height */\n.swiper-container-autoheight,\n.swiper-container-autoheight .swiper-slide {\n height: auto;\n}\n.swiper-container-autoheight .swiper-wrapper {\n align-items: flex-start;\n transition-property: transform, height;\n}\n/* 3D Effects */\n.swiper-container-3d {\n perspective: 1200px;\n}\n.swiper-container-3d .swiper-wrapper,\n.swiper-container-3d .swiper-slide,\n.swiper-container-3d .swiper-slide-shadow-left,\n.swiper-container-3d .swiper-slide-shadow-right,\n.swiper-container-3d .swiper-slide-shadow-top,\n.swiper-container-3d .swiper-slide-shadow-bottom,\n.swiper-container-3d .swiper-cube-shadow {\n transform-style: preserve-3d;\n}\n.swiper-container-3d .swiper-slide-shadow-left,\n.swiper-container-3d .swiper-slide-shadow-right,\n.swiper-container-3d .swiper-slide-shadow-top,\n.swiper-container-3d .swiper-slide-shadow-bottom {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 10;\n}\n.swiper-container-3d .swiper-slide-shadow-left {\n background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-container-3d .swiper-slide-shadow-right {\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-container-3d .swiper-slide-shadow-top {\n background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-container-3d .swiper-slide-shadow-bottom {\n background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n/* CSS Mode */\n.swiper-container-css-mode > .swiper-wrapper {\n overflow: auto;\n scrollbar-width: none;\n /* For Firefox */\n -ms-overflow-style: none;\n /* For Internet Explorer and Edge */\n}\n.swiper-container-css-mode > .swiper-wrapper::-webkit-scrollbar {\n display: none;\n}\n.swiper-container-css-mode > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: start start;\n}\n.swiper-container-horizontal.swiper-container-css-mode > .swiper-wrapper {\n scroll-snap-type: x mandatory;\n}\n.swiper-container-vertical.swiper-container-css-mode > .swiper-wrapper {\n scroll-snap-type: y mandatory;\n}\n:root {\n --swiper-navigation-size: 44px;\n /*\n --swiper-navigation-color: var(--swiper-theme-color);\n */\n}\n.swiper-button-prev,\n.swiper-button-next {\n position: absolute;\n top: 50%;\n width: calc(var(--swiper-navigation-size) / 44 * 27);\n height: var(--swiper-navigation-size);\n margin-top: calc(-1 * var(--swiper-navigation-size) / 2);\n z-index: 10;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--swiper-navigation-color, var(--swiper-theme-color));\n}\n.swiper-button-prev.swiper-button-disabled,\n.swiper-button-next.swiper-button-disabled {\n opacity: 0.35;\n cursor: auto;\n pointer-events: none;\n}\n.swiper-button-prev:after,\n.swiper-button-next:after {\n font-family: swiper-icons;\n font-size: var(--swiper-navigation-size);\n text-transform: none !important;\n letter-spacing: 0;\n text-transform: none;\n font-variant: initial;\n line-height: 1;\n}\n.swiper-button-prev,\n.swiper-container-rtl .swiper-button-next {\n left: 10px;\n right: auto;\n}\n.swiper-button-prev:after,\n.swiper-container-rtl .swiper-button-next:after {\n content: 'prev';\n}\n.swiper-button-next,\n.swiper-container-rtl .swiper-button-prev {\n right: 10px;\n left: auto;\n}\n.swiper-button-next:after,\n.swiper-container-rtl .swiper-button-prev:after {\n content: 'next';\n}\n.swiper-button-prev.swiper-button-white,\n.swiper-button-next.swiper-button-white {\n --swiper-navigation-color: #ffffff;\n}\n.swiper-button-prev.swiper-button-black,\n.swiper-button-next.swiper-button-black {\n --swiper-navigation-color: #000000;\n}\n.swiper-button-lock {\n display: none;\n}\n:root {\n /*\n --swiper-pagination-color: var(--swiper-theme-color);\n */\n}\n.swiper-pagination {\n position: absolute;\n text-align: center;\n transition: 300ms opacity;\n transform: translate3d(0, 0, 0);\n z-index: 10;\n}\n.swiper-pagination.swiper-pagination-hidden {\n opacity: 0;\n}\n/* Common Styles */\n.swiper-pagination-fraction,\n.swiper-pagination-custom,\n.swiper-container-horizontal > .swiper-pagination-bullets {\n bottom: 10px;\n left: 0;\n width: 100%;\n}\n/* Bullets */\n.swiper-pagination-bullets-dynamic {\n overflow: hidden;\n font-size: 0;\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n transform: scale(0.33);\n position: relative;\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active {\n transform: scale(1);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main {\n transform: scale(1);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev {\n transform: scale(0.66);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev {\n transform: scale(0.33);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next {\n transform: scale(0.66);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next {\n transform: scale(0.33);\n}\n.swiper-pagination-bullet {\n width: 8px;\n height: 8px;\n display: inline-block;\n border-radius: 50%;\n background: #000;\n opacity: 0.2;\n}\nbutton.swiper-pagination-bullet {\n border: none;\n margin: 0;\n padding: 0;\n box-shadow: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n.swiper-pagination-clickable .swiper-pagination-bullet {\n cursor: pointer;\n}\n.swiper-pagination-bullet-active {\n opacity: 1;\n background: var(--swiper-pagination-color, var(--swiper-theme-color));\n}\n.swiper-container-vertical > .swiper-pagination-bullets {\n right: 10px;\n top: 50%;\n transform: translate3d(0px, -50%, 0);\n}\n.swiper-container-vertical > .swiper-pagination-bullets .swiper-pagination-bullet {\n margin: 6px 0;\n display: block;\n}\n.swiper-container-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\n top: 50%;\n transform: translateY(-50%);\n width: 8px;\n}\n.swiper-container-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n display: inline-block;\n transition: 200ms transform, 200ms top;\n}\n.swiper-container-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet {\n margin: 0 4px;\n}\n.swiper-container-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\n left: 50%;\n transform: translateX(-50%);\n white-space: nowrap;\n}\n.swiper-container-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n transition: 200ms transform, 200ms left;\n}\n.swiper-container-horizontal.swiper-container-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n transition: 200ms transform, 200ms right;\n}\n/* Progress */\n.swiper-pagination-progressbar {\n background: rgba(0, 0, 0, 0.25);\n position: absolute;\n}\n.swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\n background: var(--swiper-pagination-color, var(--swiper-theme-color));\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n transform: scale(0);\n transform-origin: left top;\n}\n.swiper-container-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\n transform-origin: right top;\n}\n.swiper-container-horizontal > .swiper-pagination-progressbar,\n.swiper-container-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite {\n width: 100%;\n height: 4px;\n left: 0;\n top: 0;\n}\n.swiper-container-vertical > .swiper-pagination-progressbar,\n.swiper-container-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite {\n width: 4px;\n height: 100%;\n left: 0;\n top: 0;\n}\n.swiper-pagination-white {\n --swiper-pagination-color: #ffffff;\n}\n.swiper-pagination-black {\n --swiper-pagination-color: #000000;\n}\n.swiper-pagination-lock {\n display: none;\n}\n/* Scrollbar */\n.swiper-scrollbar {\n border-radius: 10px;\n position: relative;\n -ms-touch-action: none;\n background: rgba(0, 0, 0, 0.1);\n}\n.swiper-container-horizontal > .swiper-scrollbar {\n position: absolute;\n left: 1%;\n bottom: 3px;\n z-index: 50;\n height: 5px;\n width: 98%;\n}\n.swiper-container-vertical > .swiper-scrollbar {\n position: absolute;\n right: 3px;\n top: 1%;\n z-index: 50;\n width: 5px;\n height: 98%;\n}\n.swiper-scrollbar-drag {\n height: 100%;\n width: 100%;\n position: relative;\n background: rgba(0, 0, 0, 0.5);\n border-radius: 10px;\n left: 0;\n top: 0;\n}\n.swiper-scrollbar-cursor-drag {\n cursor: move;\n}\n.swiper-scrollbar-lock {\n display: none;\n}\n.swiper-zoom-container {\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n text-align: center;\n}\n.swiper-zoom-container > img,\n.swiper-zoom-container > svg,\n.swiper-zoom-container > canvas {\n max-width: 100%;\n max-height: 100%;\n object-fit: contain;\n}\n.swiper-slide-zoomed {\n cursor: move;\n}\n/* Preloader */\n:root {\n /*\n --swiper-preloader-color: var(--swiper-theme-color);\n */\n}\n.swiper-lazy-preloader {\n width: 42px;\n height: 42px;\n position: absolute;\n left: 50%;\n top: 50%;\n margin-left: -21px;\n margin-top: -21px;\n z-index: 10;\n transform-origin: 50%;\n animation: swiper-preloader-spin 1s infinite linear;\n box-sizing: border-box;\n border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));\n border-radius: 50%;\n border-top-color: transparent;\n}\n.swiper-lazy-preloader-white {\n --swiper-preloader-color: #fff;\n}\n.swiper-lazy-preloader-black {\n --swiper-preloader-color: #000;\n}\n@keyframes swiper-preloader-spin {\n 100% {\n transform: rotate(360deg);\n }\n}\n/* a11y */\n.swiper-container .swiper-notification {\n position: absolute;\n left: 0;\n top: 0;\n pointer-events: none;\n opacity: 0;\n z-index: -1000;\n}\n.swiper-container-fade.swiper-container-free-mode .swiper-slide {\n transition-timing-function: ease-out;\n}\n.swiper-container-fade .swiper-slide {\n pointer-events: none;\n transition-property: opacity;\n}\n.swiper-container-fade .swiper-slide .swiper-slide {\n pointer-events: none;\n}\n.swiper-container-fade .swiper-slide-active,\n.swiper-container-fade .swiper-slide-active .swiper-slide-active {\n pointer-events: auto;\n}\n.swiper-container-cube {\n overflow: visible;\n}\n.swiper-container-cube .swiper-slide {\n pointer-events: none;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n z-index: 1;\n visibility: hidden;\n transform-origin: 0 0;\n width: 100%;\n height: 100%;\n}\n.swiper-container-cube .swiper-slide .swiper-slide {\n pointer-events: none;\n}\n.swiper-container-cube.swiper-container-rtl .swiper-slide {\n transform-origin: 100% 0;\n}\n.swiper-container-cube .swiper-slide-active,\n.swiper-container-cube .swiper-slide-active .swiper-slide-active {\n pointer-events: auto;\n}\n.swiper-container-cube .swiper-slide-active,\n.swiper-container-cube .swiper-slide-next,\n.swiper-container-cube .swiper-slide-prev,\n.swiper-container-cube .swiper-slide-next + .swiper-slide {\n pointer-events: auto;\n visibility: visible;\n}\n.swiper-container-cube .swiper-slide-shadow-top,\n.swiper-container-cube .swiper-slide-shadow-bottom,\n.swiper-container-cube .swiper-slide-shadow-left,\n.swiper-container-cube .swiper-slide-shadow-right {\n z-index: 0;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n.swiper-container-cube .swiper-cube-shadow {\n position: absolute;\n left: 0;\n bottom: 0px;\n width: 100%;\n height: 100%;\n opacity: 0.6;\n z-index: 0;\n}\n.swiper-container-cube .swiper-cube-shadow:before {\n content: '';\n background: #000;\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n -webkit-filter: blur(50px);\n filter: blur(50px);\n}\n.swiper-container-flip {\n overflow: visible;\n}\n.swiper-container-flip .swiper-slide {\n pointer-events: none;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n z-index: 1;\n}\n.swiper-container-flip .swiper-slide .swiper-slide {\n pointer-events: none;\n}\n.swiper-container-flip .swiper-slide-active,\n.swiper-container-flip .swiper-slide-active .swiper-slide-active {\n pointer-events: auto;\n}\n.swiper-container-flip .swiper-slide-shadow-top,\n.swiper-container-flip .swiper-slide-shadow-bottom,\n.swiper-container-flip .swiper-slide-shadow-left,\n.swiper-container-flip .swiper-slide-shadow-right {\n z-index: 0;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n","// Generate Duration && Delay\n[data-aos] {\n @for $i from 1 through 60 {\n body[data-aos-duration='#{$i * 50}'] &,\n &[data-aos][data-aos-duration='#{$i * 50}'] {\n transition-duration: #{$i * 50}ms;\n }\n\n body[data-aos-delay='#{$i * 50}'] &,\n &[data-aos][data-aos-delay='#{$i * 50}'] {\n transition-delay: 0;\n\n &.aos-animate {\n transition-delay: #{$i * 50}ms;\n }\n }\n }\n}\n","$aos-easing: (\n linear: cubic-bezier(.250, .250, .750, .750),\n\n ease: cubic-bezier(.250, .100, .250, 1),\n ease-in: cubic-bezier(.420, 0, 1, 1),\n ease-out: cubic-bezier(.000, 0, .580, 1),\n ease-in-out: cubic-bezier(.420, 0, .580, 1),\n\n ease-in-back: cubic-bezier(.6, -.28, .735, .045),\n ease-out-back: cubic-bezier(.175, .885, .32, 1.275),\n ease-in-out-back: cubic-bezier(.68, -.55, .265, 1.55),\n\n ease-in-sine: cubic-bezier(.47, 0, .745, .715),\n ease-out-sine: cubic-bezier(.39, .575, .565, 1),\n ease-in-out-sine: cubic-bezier(.445, .05, .55, .95),\n\n ease-in-quad: cubic-bezier(.55, .085, .68, .53),\n ease-out-quad: cubic-bezier(.25, .46, .45, .94),\n ease-in-out-quad: cubic-bezier(.455, .03, .515, .955),\n\n ease-in-cubic: cubic-bezier(.55, .085, .68, .53),\n ease-out-cubic: cubic-bezier(.25, .46, .45, .94),\n ease-in-out-cubic: cubic-bezier(.455, .03, .515, .955),\n\n ease-in-quart: cubic-bezier(.55, .085, .68, .53),\n ease-out-quart: cubic-bezier(.25, .46, .45, .94),\n ease-in-out-quart: cubic-bezier(.455, .03, .515, .955)\n);\n\n// Easings implementations\n// Default timing function: 'ease'\n\n[data-aos] {\n @each $key, $val in $aos-easing {\n body[data-aos-easing=\"#{$key}\"] &,\n &[data-aos][data-aos-easing=\"#{$key}\"] {\n transition-timing-function: $val;\n }\n }\n}\n","// Animations variables\n$aos-distance: 100px !default;\n\n\n\n\n/**\n * Fade animations:\n * fade\n * fade-up, fade-down, fade-left, fade-right\n * fade-up-right, fade-up-left, fade-down-right, fade-down-left\n */\n\n[data-aos^='fade'][data-aos^='fade'] {\n opacity: 0;\n transition-property: opacity, transform;\n\n &.aos-animate {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n}\n\n[data-aos='fade-up'] {\n transform: translate3d(0, $aos-distance, 0);\n}\n\n[data-aos='fade-down'] {\n transform: translate3d(0, -$aos-distance, 0);\n}\n\n[data-aos='fade-right'] {\n transform: translate3d(-$aos-distance, 0, 0);\n}\n\n[data-aos='fade-left'] {\n transform: translate3d($aos-distance, 0, 0);\n}\n\n[data-aos='fade-up-right'] {\n transform: translate3d(-$aos-distance, $aos-distance, 0);\n}\n\n[data-aos='fade-up-left'] {\n transform: translate3d($aos-distance, $aos-distance, 0);\n}\n\n[data-aos='fade-down-right'] {\n transform: translate3d(-$aos-distance, -$aos-distance, 0);\n}\n\n[data-aos='fade-down-left'] {\n transform: translate3d($aos-distance, -$aos-distance, 0);\n}\n\n\n\n\n/**\n * Zoom animations:\n * zoom-in, zoom-in-up, zoom-in-down, zoom-in-left, zoom-in-right\n * zoom-out, zoom-out-up, zoom-out-down, zoom-out-left, zoom-out-right\n */\n\n[data-aos^='zoom'][data-aos^='zoom'] {\n opacity: 0;\n transition-property: opacity, transform;\n\n &.aos-animate {\n opacity: 1;\n transform: translate3d(0, 0, 0) scale(1);\n }\n}\n\n[data-aos='zoom-in'] {\n transform: scale(.6);\n}\n\n[data-aos='zoom-in-up'] {\n transform: translate3d(0, $aos-distance, 0) scale(.6);\n}\n\n[data-aos='zoom-in-down'] {\n transform: translate3d(0, -$aos-distance, 0) scale(.6);\n}\n\n[data-aos='zoom-in-right'] {\n transform: translate3d(-$aos-distance, 0, 0) scale(.6);\n}\n\n[data-aos='zoom-in-left'] {\n transform: translate3d($aos-distance, 0, 0) scale(.6);\n}\n\n[data-aos='zoom-out'] {\n transform: scale(1.2);\n}\n\n[data-aos='zoom-out-up'] {\n transform: translate3d(0, $aos-distance, 0) scale(1.2);\n}\n\n[data-aos='zoom-out-down'] {\n transform: translate3d(0, -$aos-distance, 0) scale(1.2);\n}\n\n[data-aos='zoom-out-right'] {\n transform: translate3d(-$aos-distance, 0, 0) scale(1.2);\n}\n\n[data-aos='zoom-out-left'] {\n transform: translate3d($aos-distance, 0, 0) scale(1.2);\n}\n\n\n\n\n/**\n * Slide animations\n */\n\n[data-aos^='slide'][data-aos^='slide'] {\n transition-property: transform;\n\n &.aos-animate {\n transform: translate3d(0, 0, 0);\n }\n}\n\n[data-aos='slide-up'] {\n transform: translate3d(0, 100%, 0);\n}\n\n[data-aos='slide-down'] {\n transform: translate3d(0, -100%, 0);\n}\n\n[data-aos='slide-right'] {\n transform: translate3d(-100%, 0, 0);\n}\n\n[data-aos='slide-left'] {\n transform: translate3d(100%, 0, 0);\n}\n\n\n\n\n/**\n * Flip animations:\n * flip-left, flip-right, flip-up, flip-down\n */\n\n[data-aos^='flip'][data-aos^='flip'] {\n backface-visibility: hidden;\n transition-property: transform;\n}\n\n[data-aos='flip-left'] {\n transform: perspective(2500px) rotateY(-100deg);\n &.aos-animate {transform: perspective(2500px) rotateY(0);}\n}\n\n[data-aos='flip-right'] {\n transform: perspective(2500px) rotateY(100deg);\n &.aos-animate {transform: perspective(2500px) rotateY(0);}\n}\n\n[data-aos='flip-up'] {\n transform: perspective(2500px) rotateX(-100deg);\n &.aos-animate {transform: perspective(2500px) rotateX(0);}\n}\n\n[data-aos='flip-down'] {\n transform: perspective(2500px) rotateX(100deg);\n &.aos-animate {transform: perspective(2500px) rotateX(0);}\n}\n"]} -------------------------------------------------------------------------------- /dist/assets/fonts/remixicon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/dist/assets/fonts/remixicon.woff -------------------------------------------------------------------------------- /dist/assets/images/favicon/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/dist/assets/images/favicon/android-chrome-192x192.png -------------------------------------------------------------------------------- /dist/assets/images/favicon/android-chrome-256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/dist/assets/images/favicon/android-chrome-256x256.png -------------------------------------------------------------------------------- /dist/assets/images/favicon/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/dist/assets/images/favicon/apple-touch-icon.png -------------------------------------------------------------------------------- /dist/assets/images/favicon/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #da532c 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /dist/assets/images/favicon/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/dist/assets/images/favicon/favicon-16x16.png -------------------------------------------------------------------------------- /dist/assets/images/favicon/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/dist/assets/images/favicon/favicon-32x32.png -------------------------------------------------------------------------------- /dist/assets/images/favicon/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/dist/assets/images/favicon/favicon.ico -------------------------------------------------------------------------------- /dist/assets/images/favicon/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/dist/assets/images/favicon/mstile-150x150.png -------------------------------------------------------------------------------- /dist/assets/images/favicon/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "", 3 | "short_name": "", 4 | "icons": [ 5 | { 6 | "src": "/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "/android-chrome-256x256.png", 12 | "sizes": "256x256", 13 | "type": "image/png" 14 | } 15 | ], 16 | "theme_color": "#ffffff", 17 | "background_color": "#ffffff", 18 | "display": "standalone" 19 | } 20 | -------------------------------------------------------------------------------- /dist/assets/images/figma.svg: -------------------------------------------------------------------------------- 1 | Figma.logoCreated using Figma -------------------------------------------------------------------------------- /dist/assets/images/illustrator.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Adobe Illustrator CC logo 4 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /dist/assets/images/indesign.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Adobe InDesign CC logo 4 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /dist/assets/images/photoshop.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 9 | 10 | 11 | 12 | 13 | 15 | 16 | 17 | 18 | 19 | 20 | 26 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /dist/assets/images/portfolio-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/dist/assets/images/portfolio-1.jpg -------------------------------------------------------------------------------- /dist/assets/images/portfolio-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/dist/assets/images/portfolio-2.jpg -------------------------------------------------------------------------------- /dist/assets/images/portfolio-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/dist/assets/images/portfolio-3.jpg -------------------------------------------------------------------------------- /dist/assets/images/portfolio-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/dist/assets/images/portfolio-4.jpg -------------------------------------------------------------------------------- /dist/assets/images/portfolio-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/dist/assets/images/portfolio-5.jpg -------------------------------------------------------------------------------- /dist/assets/images/portfolio-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/dist/assets/images/portfolio-6.jpg -------------------------------------------------------------------------------- /dist/assets/images/portfolio-7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/dist/assets/images/portfolio-7.jpg -------------------------------------------------------------------------------- /dist/assets/images/portfolio-8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/dist/assets/images/portfolio-8.jpg -------------------------------------------------------------------------------- /dist/assets/images/portfolio-9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/dist/assets/images/portfolio-9.jpg -------------------------------------------------------------------------------- /dist/assets/images/portfolio-small-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/dist/assets/images/portfolio-small-1.jpg -------------------------------------------------------------------------------- /dist/assets/images/portfolio-small-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/dist/assets/images/portfolio-small-2.jpg -------------------------------------------------------------------------------- /dist/assets/images/portfolio-small-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/dist/assets/images/portfolio-small-3.jpg -------------------------------------------------------------------------------- /dist/assets/images/portfolio-small-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/dist/assets/images/portfolio-small-4.jpg -------------------------------------------------------------------------------- /dist/assets/images/portfolio-small-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/dist/assets/images/portfolio-small-5.jpg -------------------------------------------------------------------------------- /dist/assets/images/portfolio-small-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/dist/assets/images/portfolio-small-6.jpg -------------------------------------------------------------------------------- /dist/assets/images/portfolio-small-7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/dist/assets/images/portfolio-small-7.jpg -------------------------------------------------------------------------------- /dist/assets/images/portfolio-small-8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/dist/assets/images/portfolio-small-8.jpg -------------------------------------------------------------------------------- /dist/assets/images/portfolio-small-9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/dist/assets/images/portfolio-small-9.jpg -------------------------------------------------------------------------------- /dist/assets/images/profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/dist/assets/images/profile.png -------------------------------------------------------------------------------- /dist/assets/images/sketch.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sketch-symbol 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /dist/assets/images/slideout-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/dist/assets/images/slideout-bg.png -------------------------------------------------------------------------------- /dist/assets/images/xd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 9 | 10 | 11 | 12 | 13 | 15 | 16 | 17 | 18 | 19 | 20 | 27 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /dist/assets/js/theme.bundle.js: -------------------------------------------------------------------------------- 1 | !function(t){function e(e){for(var n,i,u=e[0],c=e[1],l=e[2],s=0,f=[];s{t.addEventListener("click",(function(){n()}))}),e.addEventListener("click",(function(){n()})),o.forEach(t=>{t.addEventListener("click",(function(t){!function(t){t.preventDefault();const e=!!(t.target&&t.target.dataset&&t.target.dataset.target)&&t.target.dataset.target;e&&(n(),setTimeout(()=>{const t=document.querySelector(e);t&&t.scrollIntoView({behavior:"smooth",block:"start"})},2e3))}(t)}))})}()},function(t,e){window.addEventListener("load",(function(){document.body.classList.add("page-loaded")}))},function(t,e,o){},,function(t,e,o){"use strict";o.r(e);o(11);var n=o(3),r=o.n(n);document.addEventListener("DOMContentLoaded",()=>{r.a.init({duration:700,easing:"ease-out-quad",once:!0,mirror:!1,startEvent:"load",disable:"mobile"})});o(7),o(8);var a=o(27),i=o(16),u=o(17),c=o(18),l=o(19),d=o(20),s=o(21),f=o(22),p=o(23),g=o(24),v=o(25),b=o(26);a.a.use([i.a,u.a,c.a,l.a,d.a,s.a,f.a,p.a,g.a,v.a,b.a]),document.addEventListener("DOMContentLoaded",()=>{(document.querySelectorAll("[data-swiper]")||[]).forEach(t=>{let e=t.dataset&&t.dataset.options?JSON.parse(t.dataset.options):{};new a.a(t,e)})});o(9)}]); -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "muse", 3 | "version": "1.0.0", 4 | "description": "Bootstrap HTML Template created by Pixel Rocket", 5 | "scripts": { 6 | "start": "webpack-dev-server --open", 7 | "build": "del-cli dist && webpack -p", 8 | "build-docs": "del-cli docs && webpack --config ./webpack.config.docs.js -p" 9 | }, 10 | "keywords": [], 11 | "author": "PixelRocket", 12 | "license": "MIT", 13 | "devDependencies": { 14 | "@babel/core": "^7.12.10", 15 | "@babel/plugin-syntax-dynamic-import": "^7.8.3", 16 | "@babel/preset-env": "^7.12.11", 17 | "autoprefixer": "^9.0.0", 18 | "babel-loader": "^8.2.2", 19 | "babel-minify-webpack-plugin": "^0.3.1", 20 | "copy-webpack-plugin": "^6.0.3", 21 | "css-loader": "^5.0.1", 22 | "css-minimizer-webpack-plugin": "^1.2.0", 23 | "cssnano": "^4.1.10", 24 | "del-cli": "^3.0.1", 25 | "file-loader": "^6.2.0", 26 | "glob-all": "^3.2.1", 27 | "handlebars-webpack-plugin": "^2.2.1", 28 | "mini-css-extract-plugin": "^0.8.0", 29 | "optimize-css-assets-webpack-plugin": "^5.0.3", 30 | "postcss-loader": "^4.1.0", 31 | "sass": "^1.32.4", 32 | "sass-loader": "^10.1.1", 33 | "style-loader": "^2.0.0", 34 | "webpack": "^4.44.2", 35 | "webpack-cli": "^3.3.12", 36 | "webpack-dev-server": "^3.11.0", 37 | "webpack-fix-style-only-entries": "^0.5.1", 38 | "webpack-merge": "^4.2.2" 39 | }, 40 | "dependencies": { 41 | "@popperjs/core": "^2.5.4", 42 | "aos": "^2.3.4", 43 | "bootstrap": "^5.1.3", 44 | "swiper": "^6.2.0" 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | cssnano: {} 5 | } 6 | }; -------------------------------------------------------------------------------- /src/assets/fonts/remixicon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/fonts/remixicon.woff -------------------------------------------------------------------------------- /src/assets/images/favicon/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/images/favicon/android-chrome-192x192.png -------------------------------------------------------------------------------- /src/assets/images/favicon/android-chrome-256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/images/favicon/android-chrome-256x256.png -------------------------------------------------------------------------------- /src/assets/images/favicon/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/images/favicon/apple-touch-icon.png -------------------------------------------------------------------------------- /src/assets/images/favicon/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #da532c 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/images/favicon/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/images/favicon/favicon-16x16.png -------------------------------------------------------------------------------- /src/assets/images/favicon/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/images/favicon/favicon-32x32.png -------------------------------------------------------------------------------- /src/assets/images/favicon/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/images/favicon/favicon.ico -------------------------------------------------------------------------------- /src/assets/images/favicon/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/images/favicon/mstile-150x150.png -------------------------------------------------------------------------------- /src/assets/images/favicon/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "", 3 | "short_name": "", 4 | "icons": [ 5 | { 6 | "src": "/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "/android-chrome-256x256.png", 12 | "sizes": "256x256", 13 | "type": "image/png" 14 | } 15 | ], 16 | "theme_color": "#ffffff", 17 | "background_color": "#ffffff", 18 | "display": "standalone" 19 | } 20 | -------------------------------------------------------------------------------- /src/assets/images/figma.svg: -------------------------------------------------------------------------------- 1 | Figma.logoCreated using Figma -------------------------------------------------------------------------------- /src/assets/images/illustrator.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Adobe Illustrator CC logo 4 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/assets/images/indesign.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Adobe InDesign CC logo 4 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/assets/images/photoshop.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 9 | 10 | 11 | 12 | 13 | 15 | 16 | 17 | 18 | 19 | 20 | 26 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /src/assets/images/portfolio-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/images/portfolio-1.jpg -------------------------------------------------------------------------------- /src/assets/images/portfolio-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/images/portfolio-2.jpg -------------------------------------------------------------------------------- /src/assets/images/portfolio-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/images/portfolio-3.jpg -------------------------------------------------------------------------------- /src/assets/images/portfolio-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/images/portfolio-4.jpg -------------------------------------------------------------------------------- /src/assets/images/portfolio-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/images/portfolio-5.jpg -------------------------------------------------------------------------------- /src/assets/images/portfolio-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/images/portfolio-6.jpg -------------------------------------------------------------------------------- /src/assets/images/portfolio-7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/images/portfolio-7.jpg -------------------------------------------------------------------------------- /src/assets/images/portfolio-8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/images/portfolio-8.jpg -------------------------------------------------------------------------------- /src/assets/images/portfolio-9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/images/portfolio-9.jpg -------------------------------------------------------------------------------- /src/assets/images/portfolio-small-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/images/portfolio-small-1.jpg -------------------------------------------------------------------------------- /src/assets/images/portfolio-small-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/images/portfolio-small-2.jpg -------------------------------------------------------------------------------- /src/assets/images/portfolio-small-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/images/portfolio-small-3.jpg -------------------------------------------------------------------------------- /src/assets/images/portfolio-small-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/images/portfolio-small-4.jpg -------------------------------------------------------------------------------- /src/assets/images/portfolio-small-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/images/portfolio-small-5.jpg -------------------------------------------------------------------------------- /src/assets/images/portfolio-small-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/images/portfolio-small-6.jpg -------------------------------------------------------------------------------- /src/assets/images/portfolio-small-7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/images/portfolio-small-7.jpg -------------------------------------------------------------------------------- /src/assets/images/portfolio-small-8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/images/portfolio-small-8.jpg -------------------------------------------------------------------------------- /src/assets/images/portfolio-small-9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/images/portfolio-small-9.jpg -------------------------------------------------------------------------------- /src/assets/images/profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/images/profile.png -------------------------------------------------------------------------------- /src/assets/images/sketch.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sketch-symbol 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/assets/images/slideout-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/images/slideout-bg.png -------------------------------------------------------------------------------- /src/assets/images/xd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 9 | 10 | 11 | 12 | 13 | 15 | 16 | 17 | 18 | 19 | 20 | 27 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /src/assets/js/components/aos.js: -------------------------------------------------------------------------------- 1 | import AOS from 'aos'; 2 | 3 | (function () { 4 | document.addEventListener('DOMContentLoaded', () => { 5 | const options = { 6 | duration: 700, 7 | easing: 'ease-out-quad', 8 | once: true, 9 | mirror: false, 10 | startEvent: 'load', 11 | disable: 'mobile' 12 | }; 13 | 14 | AOS.init(options); 15 | }); 16 | })(); -------------------------------------------------------------------------------- /src/assets/js/components/modal.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | 3 | const modal = document.querySelector('#portfolioModal'); 4 | 5 | function setContent({ target, value }) { 6 | if (target && value) { 7 | target.textContent = value; 8 | } 9 | } 10 | 11 | if (modal) { 12 | modal.addEventListener('show.bs.modal', function(event) { 13 | const parentDiv = event.relatedTarget; 14 | const modalImg = modal.querySelector('img'); 15 | const modalImgVal = parentDiv.getAttribute('data-portfolio-img'); 16 | const modalTitle = modal.querySelector('.intro h3'); 17 | const modalTitleVal = parentDiv.getAttribute('data-portfolio-title'); 18 | const modalIntro = modal.querySelector('.intro p'); 19 | const modalIntroVal = parentDiv.getAttribute('data-portfolio-description'); 20 | const modalClient = modal.querySelector('.client p.text-muted'); 21 | const modalClientVal = parentDiv.getAttribute('data-portfolio-client'); 22 | const modalCategory = modal.querySelector('.category p.text-muted'); 23 | const modalCategoryVal = parentDiv.getAttribute('data-portfolio-category'); 24 | 25 | if (modalImg && modalImgVal) { 26 | modalImg.setAttribute('src', modalImgVal); 27 | } 28 | 29 | setContent({ target: modalTitle, value: modalTitleVal }); 30 | setContent({ target: modalIntro, value: modalIntroVal }); 31 | setContent({ target: modalClient, value: modalClientVal }); 32 | setContent({ target: modalCategory, value: modalCategoryVal }); 33 | 34 | }); 35 | } 36 | 37 | })(); -------------------------------------------------------------------------------- /src/assets/js/components/slideout.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | 3 | const CSS_SLIDEOUT_ACTIVE_CLASS = 'slideout-active'; 4 | 5 | const toggleBtns = document.querySelectorAll('.btn-toggle-slideout'); 6 | const slideoutBg = document.querySelector('.slideout-bg'); 7 | const slideoutMenuLinks = document.querySelectorAll('.slideout-navlink'); 8 | 9 | function toggleSlideOut() { 10 | document.body.classList.toggle(CSS_SLIDEOUT_ACTIVE_CLASS); 11 | } 12 | 13 | function closeMenuAndScrollToSection(event) { 14 | event.preventDefault(); 15 | 16 | const target = event.target && 17 | event.target.dataset && 18 | event.target.dataset.target ? 19 | event.target.dataset.target : false; 20 | if (target) { 21 | toggleSlideOut(); 22 | setTimeout(() => { 23 | const destination = document.querySelector(target); 24 | if (destination) { 25 | destination.scrollIntoView({ 26 | behavior: 'smooth', 27 | block: 'start' 28 | }); 29 | } 30 | }, 2000); 31 | } 32 | } 33 | 34 | 35 | toggleBtns.forEach((toggle) => { 36 | toggle.addEventListener('click', function() { 37 | toggleSlideOut(); 38 | }); 39 | }); 40 | 41 | slideoutBg.addEventListener('click', function() { 42 | toggleSlideOut(); 43 | }); 44 | 45 | slideoutMenuLinks.forEach((link) => { 46 | link.addEventListener('click', function(event) { 47 | closeMenuAndScrollToSection(event); 48 | }); 49 | }); 50 | 51 | 52 | })(); -------------------------------------------------------------------------------- /src/assets/js/components/swiper.js: -------------------------------------------------------------------------------- 1 | import Swiper, { 2 | Navigation, 3 | Pagination, 4 | Scrollbar, 5 | Autoplay, 6 | Mousewheel, 7 | Keyboard, 8 | Parallax, 9 | Lazy, 10 | EffectFade, 11 | Thumbs, 12 | Controller, 13 | } from 'swiper'; 14 | 15 | Swiper.use([Navigation, Pagination, Scrollbar, Autoplay, Mousewheel, Keyboard, Parallax, Lazy, EffectFade, Thumbs, Controller]); 16 | 17 | (function () { 18 | document.addEventListener('DOMContentLoaded', () => { 19 | const swipers = document.querySelectorAll('[data-swiper]') || []; 20 | 21 | swipers.forEach((elem) => { 22 | let options = elem.dataset && elem.dataset.options ? JSON.parse(elem.dataset.options) : {}; 23 | var swiper = new Swiper(elem, options); 24 | }); 25 | 26 | }) 27 | })(); -------------------------------------------------------------------------------- /src/assets/js/misc.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | 3 | // Add a body class once page has loaded 4 | // Used to add CSS transitions to elems 5 | // and avoids content shifting during page load 6 | window.addEventListener('load', function() { 7 | document.body.classList.add('page-loaded'); 8 | }); 9 | 10 | })(); -------------------------------------------------------------------------------- /src/assets/js/theme.js: -------------------------------------------------------------------------------- 1 | // Vendor Imports 2 | import 'bootstrap'; 3 | 4 | // Components 5 | import './components/aos'; 6 | import './components/modal'; 7 | import './components/slideout'; 8 | import './components/swiper'; 9 | 10 | // theme misc js 11 | import './misc'; -------------------------------------------------------------------------------- /src/assets/scss/abstracts/_css-vars.scss: -------------------------------------------------------------------------------- 1 | :root { 2 | /* Bootstrap vars */ 3 | --bs-font-sans-serif: 'DM Sans', sans-serif; 4 | --bs-spacer: #{$spacer}; 5 | --bs-gutter-width: #{$grid-gutter-width}; 6 | 7 | /* Theme vars */ 8 | --theme-font-serif: 'DM Serif Display', sans-serif; 9 | --theme-font-script: 'Homemade Apple', cursive; 10 | 11 | /* Icon font family */ 12 | --theme-font-icon: 'remixicon'; 13 | --theme-font-icon-style: 'normal'; 14 | 15 | /* Portfolio Modal Image Fixed Height Size */ 16 | --theme-portfolio-img-height: 600px; 17 | 18 | /* Slideout Menu */ 19 | --theme-slideout-transition-in: cubic-bezier(0.65, 0.14, 0.14, 0.91); 20 | --theme-slideout-transition-out: cubic-bezier(0.98, 0.03, 0.66, 0.9); 21 | 22 | /* theme breakpoints using Bootstrap sass map */ 23 | @each $breakpoint, $value in $grid-breakpoints { 24 | --theme-breakpoint-#{$breakpoint}: #{$value}; 25 | } 26 | 27 | /* theme max widths using sass map */ 28 | @each $breakpoint, $value in $container-max-widths { 29 | --theme-maxwidth-breakpoint-#{$breakpoint}: #{$value}; 30 | } 31 | 32 | } -------------------------------------------------------------------------------- /src/assets/scss/abstracts/_mixins.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/scss/abstracts/_mixins.scss -------------------------------------------------------------------------------- /src/assets/scss/base/_base.scss: -------------------------------------------------------------------------------- 1 | /* generic site wide styles*/ 2 | body { 3 | overflow-x: hidden; 4 | } 5 | 6 | .container { 7 | padding-left: 3rem; 8 | padding-right: 3rem; 9 | } 10 | 11 | p { 12 | font-size: 1.2rem; 13 | } 14 | 15 | .disable-child-pointer * { 16 | pointer-events: none; 17 | } 18 | 19 | .font-script { 20 | font-family: var(--theme-font-script); 21 | } 22 | 23 | h1, h2, h3, h4, h5, h6, .font-serif { 24 | font-family: var(--theme-font-serif); 25 | } -------------------------------------------------------------------------------- /src/assets/scss/components/_buttons.scss: -------------------------------------------------------------------------------- 1 | .btn-pseudo { 2 | position: relative; 3 | padding-left: 50px; 4 | padding-right: 50px; 5 | letter-spacing: 1px; 6 | } 7 | 8 | .btn-pseudo:before { 9 | content: ""; 10 | position: absolute; 11 | transition: all ease-in .2s; 12 | border: 2px solid $white; 13 | width: 30px; 14 | height: 30px; 15 | border-radius: 50px; 16 | left: 0; 17 | top: 6px; 18 | } 19 | 20 | .btn-pseudo:hover { 21 | color: $primary; 22 | } 23 | 24 | .btn-pseudo:hover:before { 25 | width: 100%; 26 | height: 52px; 27 | top: -5px; 28 | border-color: $primary; 29 | } 30 | -------------------------------------------------------------------------------- /src/assets/scss/components/_components.scss: -------------------------------------------------------------------------------- 1 | 2 | /* Buttons */ 3 | @import './buttons'; 4 | 5 | /* Portfolio */ 6 | @import './portfolio'; 7 | 8 | /* Slideout */ 9 | @import './slideout'; -------------------------------------------------------------------------------- /src/assets/scss/components/_portfolio.scss: -------------------------------------------------------------------------------- 1 | 2 | .portfolio-listing { 3 | column-count: 3; 4 | column-gap: 2rem; 5 | } 6 | 7 | .portfolio-item { 8 | display: grid; 9 | grid-template-rows: 1fr auto; 10 | break-inside: avoid; 11 | margin-bottom: 2rem; 12 | position: relative; 13 | cursor: pointer; 14 | 15 | * { 16 | pointer-events: none; 17 | } 18 | } 19 | 20 | .portfolio-item:after { 21 | content: ""; 22 | position: absolute; 23 | top: 0; 24 | bottom: 0; 25 | right: 0; 26 | left: 0; 27 | background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3E%3Cg fill='%23222124' fill-opacity='0.18'%3E%3Cpath fill-rule='evenodd' d='M0 0h4v4H0V0zm4 4h4v4H4V4z'/%3E%3C/g%3E%3C/svg%3E"); 28 | transition: opacity ease-in .3s; 29 | opacity: 0; 30 | z-index: 2; 31 | } 32 | 33 | .portfolio-item:before { 34 | content: "\EE45"; 35 | color: $white; 36 | position: absolute; 37 | top: 0; 38 | bottom: 0; 39 | right: 0; 40 | left: 0; 41 | display: flex; 42 | justify-content: center; 43 | align-items: center; 44 | font-family: var(--theme-font-icon); 45 | font-style: var(--theme-font-icon-style); 46 | font-size: 2rem; 47 | z-index: 5; 48 | transition: opacity ease-in .3s, transform ease-in .2s; 49 | opacity: 0; 50 | transform: translateY(10px); 51 | } 52 | 53 | .portfolio-item:hover:after { 54 | opacity: 1; 55 | } 56 | 57 | .portfolio-item:hover:before { 58 | opacity: 1; 59 | transform: translateY(0); 60 | } 61 | 62 | @include media-breakpoint-up(lg) { 63 | .portfolio-modal-img { 64 | height: 600px; 65 | width: 100%; 66 | object-fit: cover; 67 | } 68 | } 69 | 70 | @include media-breakpoint-down(md) { 71 | .portfolio-listing { 72 | column-count: 2; 73 | column-gap: 1rem; 74 | } 75 | .portfolio-item { 76 | margin-bottom: 1rem; 77 | } 78 | } 79 | 80 | @include media-breakpoint-down(sm) { 81 | .portfolio-listing { 82 | column-count: 1; 83 | } 84 | } -------------------------------------------------------------------------------- /src/assets/scss/components/_slideout.scss: -------------------------------------------------------------------------------- 1 | /* Slideout Background */ 2 | .slideout-bg { 3 | position: fixed; 4 | top: 0; 5 | left: 0; 6 | right: 0; 7 | bottom: 0; 8 | background-color: rgba(0,0,0,0.6); 9 | background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3E%3Cg fill='%23222124' fill-opacity='0.18'%3E%3Cpath fill-rule='evenodd' d='M0 0h4v4H0V0zm4 4h4v4H4V4z'/%3E%3C/g%3E%3C/svg%3E"); 10 | z-index: 10; 11 | opacity: 0; 12 | } 13 | 14 | /* Slideout */ 15 | .slideout { 16 | position: fixed; 17 | top: 0; 18 | right: 0; 19 | bottom: 0; 20 | z-index: 999; 21 | width: 100%; 22 | max-width: 100%; 23 | display: flex; 24 | visibility: hidden; 25 | opacity: 0; 26 | justify-content: end; 27 | } 28 | 29 | .slideout-img { 30 | width: 60%; 31 | display: flex; 32 | height: 100%; 33 | background: url(../images/slideout-bg.png) repeat top left; 34 | background-size: contain; 35 | transform: translateX(60%); 36 | opacity: 0; 37 | position: relative; 38 | z-index: 1; 39 | } 40 | 41 | .slideout-body { 42 | background: $white; 43 | display: flex; 44 | width: 40%; 45 | flex-direction: column; 46 | height: 100%; 47 | padding: 3rem; 48 | justify-content: space-between; 49 | transform: translateX(50%); 50 | opacity: 0; 51 | position: relative; 52 | z-index: 20; 53 | overflow-y: auto; 54 | } 55 | 56 | .slideout a { 57 | transition: color var(--theme-slideout-transition-in) .2s; 58 | } 59 | 60 | .slideout-nav { 61 | overflow: hidden; 62 | } 63 | 64 | .slideout-navlink { 65 | text-decoration: none; 66 | color: $gray-800; 67 | font-family: var(--theme-font-serif); 68 | font-size: 2rem; 69 | margin-bottom: .75rem; 70 | position: relative; 71 | 72 | &:hover { 73 | color: $gray-800; 74 | } 75 | } 76 | 77 | .slideout-navlink:after { 78 | content: ""; 79 | height: 4px; 80 | width: 100%; 81 | position: absolute; 82 | bottom: -4px; 83 | left: 0; 84 | right: 0; 85 | background: $primary; 86 | transition: transform var(--theme-slideout-transition-out) .2s; 87 | transform: scaleX(0); 88 | } 89 | 90 | .slideout-navlink:hover:after { 91 | transform: scaleX(1); 92 | } 93 | 94 | .btn-close-slideout { 95 | border: 0; 96 | background: transparent; 97 | position: absolute; 98 | top: 5px; 99 | right: 5px; 100 | 101 | &:hover { 102 | color: $primary; 103 | } 104 | } 105 | 106 | .btn-open-slideout { 107 | overflow: hidden; 108 | padding: 0; 109 | 110 | * { 111 | pointer-events: none; 112 | transition: transform var(--theme-slideout-transition-out) .2s; 113 | } 114 | } 115 | 116 | .btn-open-slideout:hover span:nth-of-type(1) { 117 | transform: translateX(-50%); 118 | } 119 | .btn-open-slideout:hover span:nth-of-type(2) { 120 | transform: scaleX(.5); 121 | } 122 | .btn-open-slideout:hover span:nth-of-type(3) { 123 | transform: translateX(50%); 124 | } 125 | 126 | .slideout-contact, .slideout-socials { 127 | position: relative; 128 | overflow: hidden; 129 | } 130 | 131 | .slideout-contact:after, .slideout-socials:after { 132 | content: ""; 133 | position: absolute; 134 | top: 0; 135 | left: 0; 136 | right: 0; 137 | bottom: 0; 138 | background: $white; 139 | } 140 | 141 | .page-loaded { 142 | 143 | .slideout { 144 | transition: opacity var(--theme-slideout-transition-out) .3s 1.8s, visibility linear .1s 2s; 145 | } 146 | .slideout-bg { 147 | transition: opacity var(--theme-slideout-transition-out) .2s .65s; 148 | } 149 | 150 | .slideout-img { 151 | transition: transform var(--theme-slideout-transition-out) .4s .7s, opacity var(--theme-slideout-transition-out) .3s .85s; 152 | } 153 | .slideout-body { 154 | transition: transform var(--theme-slideout-transition-out) .4s 1.2s, opacity var(--theme-slideout-transition-out) .3s 1.35s; 155 | } 156 | 157 | .slideout-navitem { 158 | transform: translateX(-100%); 159 | opacity: 0; 160 | transition: transform var(--theme-slideout-transition-out) .3s, opacity var(--theme-slideout-transition-out) .2s, color ease-in .2s; 161 | } 162 | .slideout-navitem:nth-of-type(2) { 163 | transition-delay: .35s; 164 | } 165 | .slideout-navitem:nth-of-type(3) { 166 | transition-delay: .45s; 167 | } 168 | .slideout-navitem:nth-of-type(4) { 169 | transition-delay: .55s; 170 | } 171 | .slideout-navitem:nth-of-type(5) { 172 | transition-delay: .65s; 173 | } 174 | .btn-close-slideout { 175 | transform: translateY(-100%); 176 | opacity: 0; 177 | transition: transform var(--theme-slideout-transition-out) .3s, opacity var(--theme-slideout-transition-out) .2s; 178 | } 179 | .slideout-contact:after, .slideout-socials:after { 180 | transition: transform var(--theme-slideout-transition-out) .3s; 181 | } 182 | 183 | } 184 | 185 | .slideout-active { 186 | 187 | .slideout { 188 | visibility: visible; 189 | opacity: 1; 190 | transition: opacity ease-in .3s, visibility linear .1s; 191 | } 192 | .slideout-bg { 193 | opacity: 1; 194 | transition: opacity ease-in .6s .6s; 195 | } 196 | .slideout-img { 197 | transform: translateX(0); 198 | opacity: 1; 199 | transition: transform var(--theme-slideout-transition-in) .6s .3s, opacity ease-in .5s .4s; 200 | } 201 | .slideout-body { 202 | transform: translateX(0); 203 | opacity: 1; 204 | transition: transform var(--theme-slideout-transition-in) .5s, opacity ease-in .5s; 205 | } 206 | .slideout-navitem { 207 | transform: translateX(0); 208 | opacity: 1; 209 | transition: transform var(--theme-slideout-transition-in) .7s .25s, opacity ease-in .5s .25s; 210 | } 211 | 212 | .slideout-navitem:nth-of-type(2) { 213 | transition-delay: .35s; 214 | } 215 | .slideout-navitem:nth-of-type(3) { 216 | transition-delay: .45s; 217 | } 218 | .slideout-navitem:nth-of-type(4) { 219 | transition-delay: .55s; 220 | } 221 | .slideout-navitem:nth-of-type(5) { 222 | transition-delay: .65s; 223 | } 224 | .btn-close-slideout { 225 | transform: translateY(0); 226 | opacity: 1; 227 | transition: transform var(--theme-slideout-transition-in) .7s .25s, opacity ease-in .5s .25s, color ease-in .2s; 228 | } 229 | .slideout-contact:after, .slideout-socials:after { 230 | transform: translateY(-100%); 231 | transition: transform var(--theme-slideout-transition-in) .7s .25s; 232 | } 233 | } 234 | 235 | /* Adjust sizes of inner panels for smaller screens */ 236 | @include media-breakpoint-down(md) { 237 | .slideout-img { 238 | width: 10%; 239 | } 240 | .slideout-body { 241 | width: 90%; 242 | } 243 | } 244 | 245 | @include media-breakpoint-down(sm) { 246 | .slideout-body { 247 | padding: 1.25rem; 248 | } 249 | } -------------------------------------------------------------------------------- /src/assets/scss/custom.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelRocket-Shop/muse-html-bootstrap/aa1bf4b634d38818bb3cdccb3c32f07eaf607968/src/assets/scss/custom.scss -------------------------------------------------------------------------------- /src/assets/scss/libs.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * Use this file to import vendor CSS files from your node_modules directory. 3 | */ 4 | 5 | /* AOS */ 6 | $aos-distance: 25px; /* custom AOS animation distance */ 7 | @import '~aos/src/sass/aos.scss'; 8 | 9 | 10 | /* Swiper.js */ 11 | @import '~swiper/swiper-bundle.css'; 12 | -------------------------------------------------------------------------------- /src/assets/scss/theme.scss: -------------------------------------------------------------------------------- 1 | /* Table of contents 2 | –––––––––––––––––––––––––––––––––––––––––––––––––– 3 | 4 | Note: Do not write any CSS in this file. Only use it to import other CSS files. 5 | Note: '~' in the import statement means the file is imported from the node_modules directory. Bootstrap functions is an example. 6 | 7 | - Bootstrap Functions. 8 | - Bootstrap Mixins. 9 | - Framework SASS Variables - override Bootstrap's SASS Vars in this file. 10 | - Framework Mixins 11 | - Framework Utilities 12 | - Bootstrap Core 13 | - Framework CSS Custom Properties (CSS Variables) 14 | - Framework Base 15 | - Framework Components 16 | - Framework Vendors 17 | - Custom CSS - Add your custom CSS to this file 18 | */ 19 | 20 | 21 | 22 | 23 | /* Bootstrap Functions - DO NOT CHANGE ANYTHING IN HERE 24 | –––––––––––––––––––––––––––––––––––––––––––––––––– */ 25 | @import '~bootstrap/scss/functions'; 26 | 27 | /* Bootstrap Mixins - DO NOT CHANGE ANYTHING IN HERE 28 | –––––––––––––––––––––––––––––––––––––––––––––––––– */ 29 | @import '~bootstrap/scss/mixins'; 30 | 31 | /* Framework SASS Variables - GO HERE TO OVERRIDE BOOTSTRAP VARS. 32 | –––––––––––––––––––––––––––––––––––––––––––––––––– */ 33 | @import 'abstracts/sass-variables'; 34 | 35 | /* Framework Mixins 36 | –––––––––––––––––––––––––––––––––––––––––––––––––– */ 37 | @import 'abstracts/mixins'; 38 | 39 | /* Framework Utilities - Needs to be imported before main bootstrap file. 40 | –––––––––––––––––––––––––––––––––––––––––––––––––– */ 41 | @import 'utilities/utilities'; 42 | 43 | /* Bootstrap Core - DO NOT CHANGE ANYTHING IN HERE 44 | –––––––––––––––––––––––––––––––––––––––––––––––––– */ 45 | @import '~bootstrap/scss/bootstrap'; 46 | 47 | /* Framework Custom Properties (CSS Variables) 48 | –––––––––––––––––––––––––––––––––––––––––––––––––– */ 49 | @import 'abstracts/css-vars'; 50 | 51 | /* Framework Base 52 | –––––––––––––––––––––––––––––––––––––––––––––––––– */ 53 | @import 'base/base'; 54 | 55 | /* Framework Components 56 | –––––––––––––––––––––––––––––––––––––––––––––––––– */ 57 | @import 'components/components'; 58 | 59 | /* Framework Vendor Overrides 60 | –––––––––––––––––––––––––––––––––––––––––––––––––– */ 61 | @import 'vendors/vendors'; 62 | 63 | /* Template Custom CSS - Add your own CSS to this file 64 | –––––––––––––––––––––––––––––––––––––––––––––––––– */ 65 | @import 'custom'; -------------------------------------------------------------------------------- /src/assets/scss/utilities/_bootstrap-api-utilities.scss: -------------------------------------------------------------------------------- 1 | // Import Bootstrap Utils so that we can amend them 2 | @import '~bootstrap/scss/utilities'; 3 | 4 | $utilities: map-merge( 5 | $utilities, 6 | ( 7 | /* cursor */ 8 | "cursor": ( 9 | property: cursor, 10 | values: ( 11 | default: default, 12 | pointer: pointer 13 | ) 14 | ), 15 | /* Fixed width util */ 16 | "fixed-width": ( 17 | property: width, 18 | class: f-w, 19 | responsive: true, 20 | values: map-merge($fixed-widths, (0:0)) 21 | ), 22 | /* Fixed height util - we use fixed width SASS vals to keep CSS clean */ 23 | "fixed-height": ( 24 | property: height, 25 | class: f-h, 26 | responsive: true, 27 | values: map-merge($fixed-widths, (0:0)) 28 | ), 29 | /* Max height util - we use fixed width SASS vals to keep CSS clean */ 30 | "max-height": ( 31 | property: max-height, 32 | class: m-h, 33 | responsive: true, 34 | values: map-merge($fixed-widths, (0:0)) 35 | ), 36 | /* transform - translateY*/ 37 | "translate-y": ( 38 | property: transform, 39 | class: transform-y, 40 | values: ( 41 | 0: translateY(0), 42 | 25: translateY(25%), 43 | 50: translateY(50%), 44 | 75: translateY(75%), 45 | 100: translateY(100%), 46 | -25: translateY(-25%), 47 | -50: translateY(-50%), 48 | -75: translateY(-75%), 49 | -100: translateY(-100%) 50 | ) 51 | ), 52 | /* Amend vertical align */ 53 | "align": map-merge( 54 | map-get($utilities, "align"), 55 | ( 56 | values: ( 57 | baseline: baseline, 58 | top: top, 59 | middle: middle, 60 | bottom: bottom, 61 | text-bottom: text-bottom, 62 | text-top: text-top, 63 | sub: sub 64 | ) 65 | ) 66 | ), 67 | /* Amend width util */ 68 | "width": map-merge( 69 | map-get($utilities, "width"), 70 | ( 71 | responsive: true, 72 | values: map-merge( 73 | map-get(map-get($utilities, "width"), "values"), 74 | (10: 10%, 60: 60%, 65: 65%, 80: 80%, 110: 110%), 75 | ), 76 | ), 77 | ), 78 | /* Amend height util */ 79 | "height": map-merge( 80 | map-get($utilities, "height"), 81 | ( 82 | responsive: true 83 | ), 84 | ), 85 | /* Amend font size util */ 86 | "font-size": map-merge( 87 | map-get($utilities, "font-size"), 88 | ( 89 | responsive: true 90 | ), 91 | ), 92 | /* Amend position util */ 93 | "position": map-merge( 94 | map-get($utilities, "position"), 95 | ( 96 | responsive: true 97 | ), 98 | ), 99 | /* Amend border color to include hover state*/ 100 | "border-color": map-merge( 101 | map-get($utilities, "border-color"), 102 | ( 103 | state: hover focus active, 104 | values: map-merge( 105 | map-get(map-get($utilities, "border-color"), "values"), 106 | (transparent: transparent) 107 | ) 108 | ) 109 | ), 110 | /* Amend text color to include states */ 111 | "color": map-merge( 112 | map-get($utilities, "color"), 113 | ( 114 | state: hover focus active 115 | ) 116 | ), 117 | /* Amend text color to include states */ 118 | "background-color": map-merge( 119 | map-get($utilities, "background-color"), 120 | ( 121 | state: hover, 122 | responsive: true 123 | ) 124 | ), 125 | /* Amend shadow to add states */ 126 | "shadow": map-merge( 127 | map-get($utilities, "shadow"), 128 | ( 129 | state: hover focus active 130 | ) 131 | ), 132 | /* Amend border to add states */ 133 | "border": map-merge( 134 | map-get($utilities, "border"), 135 | ( 136 | state: hover focus active, 137 | responsive: true, 138 | values: map-merge( 139 | map-get(map-get($utilities, "border"), "values"), 140 | (transparent: $border-width solid transparent) 141 | ) 142 | ) 143 | ), 144 | /* add letter spacing */ 145 | "letter-spacing": ( 146 | property: letter-spacing, 147 | class: tracking, 148 | values: $letter-spacing 149 | ), 150 | /* opacity util */ 151 | "opacity": ( 152 | property: opacity, 153 | state: hover, 154 | values: ( 155 | 0: 0, 156 | 5: 5%, 157 | 10: 10%, 158 | 25: .25, 159 | 50: .5, 160 | 75: .75, 161 | 90: .90, 162 | 100: 1, 163 | ) 164 | ), 165 | /* transition util */ 166 | "transition": ( 167 | property: transition, 168 | values: ( "all": all linear .3s) 169 | ), 170 | /* z-index util */ 171 | "z-index": ( 172 | property: z-index, 173 | values: ( 174 | "n1": -1, 175 | "0": 0, 176 | "1": 1, 177 | "10": 10, 178 | "20": 20, 179 | "30": 30, 180 | "40": 40, 181 | "50": 50 182 | ) 183 | ), 184 | /* Amend viewport height to include additional sizes*/ 185 | "viewport-height": map-merge( 186 | map-get($utilities, "viewport-height"), 187 | ( 188 | values: map-merge( 189 | map-get(map-get($utilities, "viewport-height"), "values"), 190 | (10: 10vh, 25: 25vh, 50: 50vh, 75: 75vh) 191 | ) 192 | ) 193 | ), 194 | /* Amend min viewport height to include additional sizes*/ 195 | "min-viewport-height": map-merge( 196 | map-get($utilities, "min-viewport-height"), 197 | ( 198 | values: map-merge( 199 | map-get(map-get($utilities, "min-viewport-height"), "values"), 200 | (10: 10vh, 25: 25vh, 40: 40vh, 50: 50vh, 60: 60vh, 75: 75vh) 201 | ) 202 | ) 203 | ), 204 | /* Add max viewport height*/ 205 | "max-viewport-height": ( 206 | property: max-height, 207 | class: max-vh, 208 | values: ( 209 | 10: 10vh, 210 | 25: 25vh, 211 | 50: 50vh, 212 | 60: 60vh, 213 | 75: 75vh 214 | ) 215 | ), 216 | /* Amend viewport width to include additional sizes*/ 217 | "viewport-width": map-merge( 218 | map-get($utilities, "viewport-width"), 219 | ( 220 | values: map-merge( 221 | map-get(map-get($utilities, "viewport-width"), "values"), 222 | (10: 10vw, 25: 25vw, 50: 50vw, 75: 75vw) 223 | ) 224 | ) 225 | ), 226 | /* Amend min viewport width to include additional sizes*/ 227 | "min-viewport-width": map-merge( 228 | map-get($utilities, "min-viewport-width"), 229 | ( 230 | values: map-merge( 231 | map-get(map-get($utilities, "min-viewport-width"), "values"), 232 | (10: 10vw, 25: 25vw, 50: 50vw, 75: 75vw) 233 | ) 234 | ) 235 | ), 236 | ) 237 | ) -------------------------------------------------------------------------------- /src/assets/scss/utilities/_utilities.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * - Everything in "bootstrap-api-utilities" either adds to or amends the Bootstrap utilities using their API 3 | * - Everything else is normal CSS/SCSS 4 | */ 5 | /* Bootstrap API Utilities - only put code in here that uses Bootstrap's Util API */ 6 | @import 'bootstrap-api-utilities'; 7 | 8 | 9 | /* Everything in these files DOES NOT use Bootstrap's API */ 10 | 11 | -------------------------------------------------------------------------------- /src/assets/scss/vendors/_vendors.scss: -------------------------------------------------------------------------------- 1 | /* AOS */ 2 | @import 'aos/aos'; 3 | 4 | /* Remix Icons */ 5 | @import 'remixicon/remixicon'; 6 | 7 | /* Swiper */ 8 | @import 'swiper/swiper'; 9 | -------------------------------------------------------------------------------- /src/assets/scss/vendors/aos/_aos.scss: -------------------------------------------------------------------------------- 1 | /* Reveal Animation. */ 2 | [data-aos="reveal-right"], [data-aos="reveal-left"], [data-aos="reveal-up"], [data-aos="reveal-down"] { 3 | position: relative; 4 | overflow: hidden; 5 | 6 | &:after { 7 | content: ""; 8 | transition-property: transform; 9 | transition-timing-function: var(--theme-slideout-transition-in); 10 | transition-duration: .5s; 11 | transition-delay: inherit; 12 | display: block; 13 | position: absolute; 14 | top: 0; 15 | left: 0; 16 | right: 0; 17 | bottom: 0; 18 | background: $body-bg; 19 | } 20 | } 21 | 22 | [data-aos="reveal-right"] { 23 | &.aos-animate { 24 | &:after { 25 | transform: translateX(100%); 26 | } 27 | } 28 | } 29 | 30 | [data-aos="reveal-left"] { 31 | &.aos-animate { 32 | &:after { 33 | transform: translateX(-100%); 34 | } 35 | } 36 | } 37 | 38 | [data-aos="reveal-up"] { 39 | &.aos-animate { 40 | &:after { 41 | transform: translateY(-100%); 42 | } 43 | } 44 | } 45 | 46 | [data-aos="reveal-down"] { 47 | &.aos-animate { 48 | &:after { 49 | transform: translateY(100%); 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/assets/scss/vendors/swiper/_swiper.scss: -------------------------------------------------------------------------------- 1 | .page-loaded .btn-swiper { 2 | transition: color ease-in .2s; 3 | } 4 | 5 | .btn-swiper:hover { 6 | color: $danger; 7 | } 8 | 9 | .swiper-container-horizontal > .swiper-scrollbar { 10 | background: $gray-600; 11 | left: 0; 12 | width: 100%; 13 | } 14 | 15 | .swiper-scrollbar-drag { 16 | background: $danger; 17 | } -------------------------------------------------------------------------------- /src/data/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "defaultPageTitle": "Bootstrap 5 HTML Template", 3 | "templateName": "Muse", 4 | "classes": { 5 | "body": "", 6 | "navbar": "", 7 | "content": "", 8 | "footer": "" 9 | }, 10 | "partials": { 11 | "head": "head/head", 12 | "navbar": "navbar/navbar", 13 | "footer": "footer/footer" 14 | }, 15 | "defaultImgAlt": "HTML Bootstrap Template by Pixel Rocket", 16 | "helpDocsURL": "", 17 | "demoURL": "" 18 | } 19 | -------------------------------------------------------------------------------- /src/data/experience.json: -------------------------------------------------------------------------------- 1 | { 2 | "entries": [ 3 | { 4 | "title": "Art Director", 5 | "years": "2020 - present", 6 | "description": "After two years of working in London, I joined the NWD Designs team. Our design group works with clients including Motorola and Nokia who are just some examples; Apple stands out among all others because it had such an impactful brand identity for decades until they rebranded recently." 7 | }, 8 | { 9 | "title": "Creative Director", 10 | "years": "2018 - 2020", 11 | "description": "Looking for a new challenge, I joined Pinnacle Designs. My role focused on helping our customers define their strategic branding needs and requirements to achieve an elegant end result that stands out among competitors' work." 12 | }, 13 | { 14 | "title": "Lead Designer", 15 | "years": "2016 - 2018", 16 | "description": "I have always loved the idea of being in charge of a design team, so I joined Super 8 as a lead designer where we worked on amazing campaigns including the branding and advert assets for Facebook's VR arm." 17 | }, 18 | { 19 | "title": "Graphic Designer", 20 | "years": "2014 - 2016", 21 | "description": "After finishing my degree in Graphic Design, I joined Cube agency in London in 2014 and worked on projects for companies such as Nestle, Spotify and Red Cabbage." 22 | } 23 | ] 24 | } -------------------------------------------------------------------------------- /src/data/skills.json: -------------------------------------------------------------------------------- 1 | { 2 | "entries": [ 3 | { 4 | "logo": "{{webRoot}}/assets/images/figma.svg", 5 | "skill": "Figma", 6 | "percent": "75" 7 | }, 8 | { 9 | "logo": "{{webRoot}}/assets/images/sketch.svg", 10 | "skill": "Sketch", 11 | "percent": "95" 12 | }, 13 | { 14 | "logo": "{{webRoot}}/assets/images/photoshop.svg", 15 | "skill": "Photoshop", 16 | "percent": "65" 17 | }, 18 | { 19 | "logo": "{{webRoot}}/assets/images/xd.svg", 20 | "skill": "XD", 21 | "percent": "35" 22 | }, 23 | { 24 | "logo": "{{webRoot}}/assets/images/illustrator.svg", 25 | "skill": "Illustrator", 26 | "percent": "98" 27 | }, 28 | { 29 | "logo": "{{webRoot}}/assets/images/indesign.svg", 30 | "skill": "Indesign", 31 | "percent": "45" 32 | } 33 | ] 34 | } -------------------------------------------------------------------------------- /src/data/testimonials.json: -------------------------------------------------------------------------------- 1 | { 2 | "entries": [ 3 | { 4 | "testimonial": "Ben offered creative logos without production deadlines too complicated or tight spots where others could not go. Not only does his work make us look good but also feels really nice working alongside someone you can trust both personally and professionally!", 5 | "person": "Emily Parkson", 6 | "title": "Waterpark Theatre" 7 | }, 8 | { 9 | "testimonial": "I had the best experience working with Ben. He is a creative, talented and fun person to be around! His attention-to detail made it easy for me as his client because we knew what was wanted from day one - which helped establish my company's brand identity quickly.", 10 | "person": "Patrick Smith", 11 | "title": "Cologne Limited" 12 | }, 13 | { 14 | "testimonial": "I was really pleased with the logo designs that Ben created for my organization. The logos are instantly recognizable, making it easy to find our brand in a crowded market of other education providers. I would recommend his services again without hesitation!", 15 | "person": "Harry Duckmore", 16 | "title": "SB Design Limited" 17 | }, 18 | { 19 | "testimonial": "I have been working with Ben since 2017. He is very professional and clear in all of his communications. Regularly updating the aesthetics on our website by sharing valuable suggestions that are always improving what was already there--and paying close attention if you want it better too ;)", 20 | "person": "Nelly Oliver", 21 | "title": "Super 8 Design House" 22 | } 23 | ] 24 | } -------------------------------------------------------------------------------- /src/data/work.json: -------------------------------------------------------------------------------- 1 | { 2 | "entries": [ 3 | { 4 | "img-small": "{{webRoot}}/assets/images/portfolio-small-1.jpg", 5 | "img-full": "{{webRoot}}/assets/images/portfolio-1.jpg", 6 | "title": "Night Party", 7 | "description": "Poster illustration created for a club's annual summer party. Also created stickers, logos and various website elements.", 8 | "client": "ACME Design Limited", 9 | "category": "Illustration" 10 | }, 11 | { 12 | "img-small": "{{webRoot}}/assets/images/portfolio-small-2.jpg", 13 | "img-full": "{{webRoot}}/assets/images/portfolio-2.jpg", 14 | "title": "Skull & Cat", 15 | "description": "Custom logo created for a local tatoo artist. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam consectetur magna nunc, ut egestas sem egestas non.", 16 | "client": "Super 8 Design", 17 | "category": "Logo & Branding" 18 | }, 19 | { 20 | "img-small": "{{webRoot}}/assets/images/portfolio-small-3.jpg", 21 | "img-full": "{{webRoot}}/assets/images/portfolio-3.jpg", 22 | "title": "Warrior Skull", 23 | "description": "Nulla nec elit eu neque faucibus molestie sed et nulla. Aliquam placerat felis ipsum, non pellentesque tortor ultrices eget. Suspendisse ornare bibendum orci, sit amet aliquet erat faucibus et.", 24 | "client": "Waterfall Theatre", 25 | "category": "Poster Design" 26 | }, 27 | { 28 | "img-small": "{{webRoot}}/assets/images/portfolio-small-4.jpg", 29 | "img-full": "{{webRoot}}/assets/images/portfolio-4.jpg", 30 | "title": "Halloween", 31 | "description": "Donec congue rutrum felis quis vestibulum. Vestibulum dictum libero eu sapien porttitor ultricies. Proin non dolor et nulla blandit vestibulum sed ut purus.", 32 | "client": "Tesco", 33 | "category": "Advert Design" 34 | }, 35 | { 36 | "img-small": "{{webRoot}}/assets/images/portfolio-small-5.jpg", 37 | "img-full": "{{webRoot}}/assets/images/portfolio-5.jpg", 38 | "title": "Inca Skull", 39 | "description": "Phasellus consectetur orci ut ante gravida tempor. Praesent volutpat tincidunt enim sed dictum. Curabitur neque urna, rhoncus id neque luctus, finibus ornare libero.", 40 | "client": "Super 8 Design", 41 | "category": "Illustration" 42 | }, 43 | { 44 | "img-small": "{{webRoot}}/assets/images/portfolio-small-6.jpg", 45 | "img-full": "{{webRoot}}/assets/images/portfolio-6.jpg", 46 | "title": "Snake Head", 47 | "description": "Vestibulum eget lectus odio. Curabitur semper, nisi nec gravida pellentesque, justo risus ultricies leo, sed semper eros nisi ut nisl. Ut nec mattis arcu. Donec eu lobortis leo.", 48 | "client": "Petrolhead Designs", 49 | "category": "Illustration" 50 | }, 51 | { 52 | "img-small": "{{webRoot}}/assets/images/portfolio-small-7.jpg", 53 | "img-full": "{{webRoot}}/assets/images/portfolio-7.jpg", 54 | "title": "Inca Skull", 55 | "description": "Poster illustration created for a club's annual summer party. Also created stickers, logos and various website elements.", 56 | "client": "VonHaus Designs", 57 | "category": "Illustration" 58 | }, 59 | { 60 | "img-small": "{{webRoot}}/assets/images/portfolio-small-8.jpg", 61 | "img-full": "{{webRoot}}/assets/images/portfolio-8.jpg", 62 | "title": "Happy Cactus", 63 | "description": "Sed quis mauris id quam rutrum ullamcorper. Donec faucibus eget elit nec iaculis. Vivamus laoreet consectetur felis at consequat. Sed finibus turpis in nisl molestie, eu dignissim nulla pharetra.", 64 | "client": "JD Limited", 65 | "category": "Logo & Branding" 66 | }, 67 | { 68 | "img-small": "{{webRoot}}/assets/images/portfolio-small-9.jpg", 69 | "img-full": "{{webRoot}}/assets/images/portfolio-9.jpg", 70 | "title": "Octopus Coffee", 71 | "description": "Proin in sem vitae ante efficitur tempor. Nam pellentesque, risus quis pulvinar eleifend, magna massa porttitor dui, mattis vehicula eros erat eu quam. Vivamus vel leo odio.", 72 | "client": "Sentry Limited", 73 | "category": "Logo & Branding" 74 | } 75 | ] 76 | } -------------------------------------------------------------------------------- /src/html/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{> (config config.partials.head) title=config.defaultPageTitle }} 6 | 7 | 8 | 9 | 10 | {{> (config config.partials.navbar) 11 | configClassList=config.classes.navbar 12 | classList="" }} 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | {{> home/hero }} 21 | 22 | 23 | 24 | {{> home/about }} 25 | 26 | 27 | 28 | {{> home/portfolio }} 29 | 30 | 31 | 32 | {{> home/experience }} 33 | 34 | 35 | 36 | {{> home/skills }} 37 | 38 | 39 | 40 | {{> home/testimonials }} 41 | 42 | 43 | 44 |
45 | 46 | 47 | 48 | {{> (config config.partials.footer) 49 | configClassList=config.classes.footer 50 | classList="" 51 | }} 52 | 53 | 54 | 55 | {{> footer/scripts }} 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /src/partials/breadcrumbs/breadcrumbs.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/partials/content/subtitle.html: -------------------------------------------------------------------------------- 1 |
2 |

{{ title-script }} {{ title }}

3 |
4 | {{> svg/svg-doodle-five }} 5 |
6 |
-------------------------------------------------------------------------------- /src/partials/footer/footer.html: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | {{> modals/modals }} 21 | 22 | 23 | 24 | {{> slideout/slideout }} 25 | -------------------------------------------------------------------------------- /src/partials/footer/scripts.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/partials/header/head/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 42 | 43 | 44 | {{ title }} 45 | 46 | -------------------------------------------------------------------------------- /src/partials/header/navbar/navbar.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/partials/home/about.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |

I am a multi-discipline graphic designer who enjoys challenges of all shapes and sizes.

4 |
5 |
6 |

I create logos and illustrations that stand out in today’s overstimulated world. I use my skill set to study your company culture while strategizing about what you want the audience to think when they see it again in some other capacity.

7 |

Ultimately creating graphics with an intelligent tone which bridges that gap between business and consumer interaction for both parties involved.

8 |
9 |
-------------------------------------------------------------------------------- /src/partials/home/experience.html: -------------------------------------------------------------------------------- 1 |
2 | {{> 3 | content/subtitle 4 | title-script="My" 5 | title="Experience" 6 | doodle-width="f-w-60" 7 | }} 8 | {{#if (config experience)}} 9 |
10 | {{#each experience.entries}} 11 | 12 |
13 |
14 |

{{ title }}

({{ years }}) 15 |
16 |

{{ description }}

17 |
18 | 19 | {{/each}} 20 |
21 | {{/if}} 22 |
23 | Download My CV 24 |
25 |
-------------------------------------------------------------------------------- /src/partials/home/hero.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |

👋 Hello, I’m

4 |

5 | Ben Lucia 6 |
7 | {{> svg/svg-arrow-one }} 8 |
9 |
10 | {{> svg/svg-arrow-two }} 11 |
12 |

13 |

Freelance Graphic Designer &
14 | Brand Storyteller.

15 | Download My CV 16 |
17 |
18 | 19 | {{ config.defaultImgAlt }} 20 | 21 |
22 | {{> svg/svg-doodle-one }} 23 |
24 |
25 | {{> svg/svg-doodle-two }} 26 |
27 |
28 | {{> svg/svg-doodle-three }} 29 |
30 |
31 | {{> svg/svg-doodle-four }} 32 |
33 |
34 |
-------------------------------------------------------------------------------- /src/partials/home/portfolio.html: -------------------------------------------------------------------------------- 1 |
2 | {{> 3 | content/subtitle 4 | title-script="My" 5 | title="Portfolio" 6 | doodle-width="f-w-52" 7 | }} 8 | 9 |
10 | {{#if (config work)}} 11 | {{#each work.entries}} 12 |
23 | 24 | {{ config.defaultImgAlt }} 25 | 26 |
27 | {{/each}} 28 | {{/if}} 29 |
30 |
-------------------------------------------------------------------------------- /src/partials/home/skills.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | {{> 4 | content/subtitle 5 | title-script="My" 6 | title="Skills" 7 | doodle-width="f-w-40" 8 | }} 9 | {{#if (config skills)}} 10 |
11 | {{#each skills.entries}} 12 | 13 |
14 |
15 | 16 | {{ config.defaultImgAlt }} 17 | 18 |

{{ skill }}

19 |
20 |
21 |
23 |
24 |
25 | 26 | {{/each}} 27 |
28 | {{/if}} 29 |
30 | -------------------------------------------------------------------------------- /src/partials/home/testimonials.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | {{> 4 | content/subtitle 5 | title-script="Client" 6 | title="Testimonials" 7 | doodle-width="f-w-60" 8 | }} 9 | 10 | 11 | {{> swiper/swiper-testimonials }} 12 | 13 |
14 | -------------------------------------------------------------------------------- /src/partials/logo/logo.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | -------------------------------------------------------------------------------- /src/partials/modals/modal-portfolio.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/partials/modals/modals.html: -------------------------------------------------------------------------------- 1 | 2 | {{> modals/modal-portfolio }} 3 | -------------------------------------------------------------------------------- /src/partials/slideout/slideout.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | 5 |
6 | 7 | 8 | 9 |
10 |
11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 |
20 | 21 |
22 | 66 |
67 | 68 | 69 | 70 |
71 |
    72 |
  • 73 | 74 | hello@ben.lucia 75 |
  • 76 |
  • 77 | 78 | +44 (0)208 1234 345 79 |
  • 80 |
81 |
82 | 83 |
84 | 85 |
86 | 96 |
97 | 98 |
99 | 100 | 101 |
102 | -------------------------------------------------------------------------------- /src/partials/svg/svg-arrow-one.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/partials/svg/svg-arrow-two.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/partials/svg/svg-doodle-five.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/partials/svg/svg-doodle-four.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/partials/svg/svg-doodle-one.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/partials/svg/svg-doodle-three.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/partials/svg/svg-doodle-two.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 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 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /src/partials/swiper/swiper-testimonials.html: -------------------------------------------------------------------------------- 1 | 2 |
25 |
26 | {{#if (config testimonials) }} 27 | {{#each testimonials.entries}} 28 |
29 |

"{{ testimonial }}"

30 |

{{ person }}

31 | {{ title }}

32 |
33 | {{/each}} 34 | {{/if}} 35 |
36 | 37 | 38 |
39 | 40 | 41 |
42 | 43 | 44 |
45 | 46 |
47 |
48 | 49 |
50 | 51 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | var glob = require('glob-all'); 3 | const webpack = require('webpack'); 4 | const HandlebarsPlugin = require('handlebars-webpack-plugin'); 5 | const FixStyleOnlyEntriesPlugin = require("webpack-fix-style-only-entries"); 6 | const MiniCssExtractPlugin = require('mini-css-extract-plugin'); 7 | const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); 8 | const MinifyPlugin = require('babel-minify-webpack-plugin'); 9 | const CopyPlugin = require('copy-webpack-plugin'); 10 | const TerserPlugin = require('terser-webpack-plugin'); 11 | const mergeJSON = require('handlebars-webpack-plugin/utils/mergeJSON'); 12 | const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin'); 13 | 14 | 15 | // Project config data. 16 | // Go here to change stuff for the whole demo, ie, change the navbar. 17 | // Also go here for the various data loops, ie, category products, slideshows 18 | const projectData = mergeJSON(path.join(__dirname, '/src/data/**/*.json')); 19 | 20 | 21 | //PurgeCSS Paths 22 | const purgeCSSPaths = { 23 | src: path.join(__dirname, 'src', 'html'), 24 | partials: path.join(__dirname, 'src', 'partials') 25 | } 26 | 27 | // paths used in various placed in webpack config 28 | const paths = { 29 | src: { 30 | imgs: './src/assets/images', 31 | scss: './src/assets/scss', 32 | fonts: './src/assets/fonts', 33 | js: './src/assets/js', 34 | favicon: './src/assets/favicon', 35 | }, 36 | dist: { 37 | imgs: './assets/images', 38 | css: './assets/css', 39 | fonts: './assets/fonts', 40 | js: './assets/js', 41 | favicon: './assets/favicon', 42 | } 43 | } 44 | 45 | 46 | // Main webpack config options. 47 | const wPackConfig = { 48 | entry: { 49 | 'libs': [paths.src.scss + '/libs.scss'], 50 | 'theme': [paths.src.js + '/theme.js', paths.src.scss + '/theme.scss'] 51 | }, 52 | output: { 53 | filename: paths.dist.js + '/[name].bundle.js', 54 | }, 55 | devtool: 'source-map', 56 | mode: 'development', 57 | module: { 58 | rules: [{ 59 | test: /\.(sass|scss|css)$/, 60 | include: path.resolve(__dirname, paths.src.scss.slice(2)), 61 | use: [{ 62 | loader: MiniCssExtractPlugin.loader, 63 | }, 64 | { 65 | loader: 'css-loader', 66 | options: { 67 | url: false, 68 | // sourceMap: true, 69 | }, 70 | }, 71 | { 72 | loader: 'postcss-loader' 73 | }, 74 | { 75 | loader: 'sass-loader', 76 | // options: { 77 | // sourceMap: true, 78 | // sassOptions: { 79 | // indentWidth: 4, 80 | // outputStyle: 'expanded', 81 | // sourceComments: true 82 | // } 83 | // } 84 | }, 85 | ], 86 | }, ] 87 | }, 88 | optimization: { 89 | splitChunks: { 90 | cacheGroups: { 91 | vendor: { 92 | test: /[\\/](node_modules)[\\/].+\.js$/, 93 | name: 'vendor', 94 | chunks: 'all' 95 | } 96 | } 97 | }, 98 | minimizer: [ 99 | new OptimizeCssAssetsPlugin({ 100 | cssProcessorOptions: { 101 | map: { 102 | inline: false, 103 | }, 104 | }, 105 | cssProcessorPluginOptions: { 106 | preset: [ 107 | 'default', 108 | { 109 | discardComments: { 110 | removeAll: true, 111 | }, 112 | }, 113 | ], 114 | }, 115 | }), 116 | new TerserPlugin({ 117 | extractComments: false, 118 | terserOptions: { 119 | output: { 120 | comments: false, 121 | }, 122 | }, 123 | }), 124 | ], 125 | }, 126 | plugins: [ 127 | new webpack.ProgressPlugin(), 128 | new CopyPlugin({ 129 | patterns: [{ 130 | from: paths.src.fonts, 131 | to: paths.dist.fonts, 132 | noErrorOnMissing: true 133 | }, 134 | { 135 | from: paths.src.imgs, 136 | to: paths.dist.imgs, 137 | noErrorOnMissing: true 138 | }, 139 | { 140 | from: paths.src.favicon, 141 | to: paths.dist.favicon, 142 | noErrorOnMissing: true 143 | } 144 | ], 145 | }), 146 | new HandlebarsPlugin({ 147 | entry: path.join(process.cwd(), 'src', 'html', '**', '*.html'), 148 | output: path.join(process.cwd(), 'dist', '[path]', '[name].html'), 149 | partials: [path.join(process.cwd(), 'src', 'partials', '**', '*.{html,svg}')], 150 | data: projectData, 151 | helpers: { 152 | webRoot: function() { 153 | return '{{webRoot}}'; 154 | }, 155 | config: function(data) { 156 | return data; 157 | }, 158 | ifEquals: function(arg1, arg2, options) { 159 | if (arg1 === arg2) { 160 | return options.fn(this); 161 | } 162 | return options.inverse(this); 163 | }, 164 | log: function(data) { 165 | console.log(data); 166 | }, 167 | limit: function(arr, limit) { 168 | if (!Array.isArray(arr)) { return []; } 169 | return arr.slice(0, limit); 170 | } 171 | }, 172 | onBeforeSave: function(Handlebars, res, file) { 173 | const elem = file.split('//').pop().split('/').length; 174 | return res.split('{{webRoot}}').join('.'.repeat(elem)); 175 | }, 176 | }), 177 | new FixStyleOnlyEntriesPlugin(), 178 | new MiniCssExtractPlugin({ 179 | filename: paths.dist.css + '/[name].bundle.css', 180 | }), 181 | ] 182 | }; 183 | 184 | module.exports = wPackConfig; --------------------------------------------------------------------------------