├── .gitignore
├── LICENSE.md
├── README.md
├── dist
├── about.html
├── assets
│ ├── css
│ │ ├── libs.bundle.css
│ │ ├── libs.bundle.css.map
│ │ ├── theme.bundle.css
│ │ └── theme.bundle.css.map
│ ├── fonts
│ │ └── remixicon.woff
│ ├── images
│ │ ├── avatar-1.jpeg
│ │ ├── avatar-2.jpeg
│ │ ├── avatar-3.jpeg
│ │ ├── avatar-4.jpeg
│ │ ├── avatar-5.jpeg
│ │ ├── avatar-6.jpeg
│ │ ├── avatar-7.jpeg
│ │ ├── avatar-small.jpg
│ │ ├── avatar.jpg
│ │ ├── 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
│ │ │ ├── safari-pinned-tab.svg
│ │ │ └── site.webmanifest
│ │ ├── project-1.jpg
│ │ ├── project-2.jpg
│ │ ├── project-3.jpg
│ │ ├── project-listing-1.jpg
│ │ ├── project-listing-2.jpg
│ │ ├── project-listing-3.jpg
│ │ ├── project-listing-4.jpg
│ │ ├── project-listing-5.jpg
│ │ ├── project-listing-6.jpg
│ │ ├── project-listing-7.jpg
│ │ └── project-listing-8.jpg
│ └── js
│ │ ├── theme.bundle.js
│ │ └── vendor.bundle.js
├── contact.html
├── index.html
├── work-listing.html
└── work-single.html
├── package-lock.json
├── package.json
├── postcss.config.js
├── src
├── assets
│ ├── fonts
│ │ └── remixicon.woff
│ ├── images
│ │ ├── avatar-1.jpeg
│ │ ├── avatar-2.jpeg
│ │ ├── avatar-3.jpeg
│ │ ├── avatar-4.jpeg
│ │ ├── avatar-5.jpeg
│ │ ├── avatar-6.jpeg
│ │ ├── avatar-7.jpeg
│ │ ├── avatar-small.jpg
│ │ ├── avatar.jpg
│ │ ├── 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
│ │ │ ├── safari-pinned-tab.svg
│ │ │ └── site.webmanifest
│ │ ├── project-1.jpg
│ │ ├── project-2.jpg
│ │ ├── project-3.jpg
│ │ ├── project-listing-1.jpg
│ │ ├── project-listing-2.jpg
│ │ ├── project-listing-3.jpg
│ │ ├── project-listing-4.jpg
│ │ ├── project-listing-5.jpg
│ │ ├── project-listing-6.jpg
│ │ ├── project-listing-7.jpg
│ │ └── project-listing-8.jpg
│ ├── js
│ │ ├── components
│ │ │ ├── dark-mode.js
│ │ │ ├── locomotive-scroll.js
│ │ │ ├── swiper.js
│ │ │ └── typed.js
│ │ ├── misc.js
│ │ └── theme.js
│ └── scss
│ │ ├── abstracts
│ │ ├── _css-vars.scss
│ │ ├── _mixins.scss
│ │ └── _sass-variables.scss
│ │ ├── base
│ │ └── _base.scss
│ │ ├── components
│ │ ├── _avatar.scss
│ │ ├── _buttons.scss
│ │ ├── _components.scss
│ │ ├── _forms.scss
│ │ ├── _navbar.scss
│ │ └── _testimonials.scss
│ │ ├── custom.scss
│ │ ├── libs.scss
│ │ ├── theme.scss
│ │ ├── utilities
│ │ ├── _backgrounds.scss
│ │ ├── _bootstrap-api-utilities.scss
│ │ ├── _borders.scss
│ │ ├── _text.scss
│ │ └── _utilities.scss
│ │ └── vendors
│ │ ├── _vendors.scss
│ │ ├── aos
│ │ └── _aos.scss
│ │ ├── locomotive-scroll
│ │ └── _locomotive-scroll.scss
│ │ ├── remixicon
│ │ └── _remixicon.scss
│ │ └── swiper
│ │ └── _swiper.scss
├── data
│ ├── config.json
│ ├── experience.json
│ ├── skills.json
│ ├── testimonials-two.json
│ ├── testimonials.json
│ └── work.json
├── html
│ ├── about.html
│ ├── contact.html
│ ├── index.html
│ ├── work-listing.html
│ └── work-single.html
└── partials
│ ├── content
│ └── subtitle.html
│ ├── footer
│ ├── footer.html
│ └── scripts.html
│ ├── header
│ ├── head
│ │ └── head.html
│ └── navbar
│ │ └── navbar.html
│ ├── swiper
│ ├── swiper-latest-bottom.html
│ └── swiper-latest-top.html
│ ├── testimonials
│ └── testimonial-single.html
│ └── widgets
│ ├── experience.html
│ ├── hero.html
│ ├── latest-work.html
│ ├── skills.html
│ └── 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 | # Folio - Bootstrap 5 HTML Responsive Portfolio Template
2 |
3 | ## Overview
4 | Folio is a responsive HTML Bootstrap 5 template for web developers and designers to showcase their work.
5 | The template uses Locomotive Scroll to animate in sections on scroll, and also comes with light mode/dark mode support.
6 |
7 | View Demo | Download ZIP
8 |
9 | 
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/folio-html-bootstrap/archive/main.zip) OR clone the repo: `git clone https://github.com/PixelRocket-Shop/folio-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 | * About Me
48 | * My Work (Listing Page)
49 | * My Work (Single Page)
50 | * Contact Me
51 |
52 | 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.
53 |
54 |
55 | ## Demo Link
56 | [Demo URL](https://folio-html-bootstrap.vercel.app/)
57 |
58 | **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.**
59 |
60 |
61 | ## Template Key Features
62 |
63 | * Built with Bootstrap 5
64 | * Fully responsive
65 | * Locomotive Scroll Integration
66 | * Light/Dark Mode support
67 | * My experience component
68 | * My skills component
69 | * Client testmonials component
70 |
71 |
72 | ## Template File structure
73 | 📁 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.
74 |
75 | 📁 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.
76 |
77 | 📁 src - Template source code. Go here to customise your template.
78 |
79 | 📁 src/assets - Template assets such as CSS, JS, Images etc.
80 |
81 | 📁 src/data - Template JSON Data files. We use these JSON files to make your job easier to insert content into the template.
82 |
83 | 📁 src/html - Template pages. Go here to edit existing pages or add new pages.
84 |
85 | 📁 src/partials - Handlebars partial templates.
86 |
87 |
88 | ## Handlebars
89 | 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).
90 |
91 |
92 | ## Template JSON Data
93 | The Webpack Handlebars plugin that we use comes with a very handy utility that allows us to pass in JSON files as template data.
94 |
95 | 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.
96 |
97 |
98 | ## Customise Template Styles
99 | 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.
100 |
101 | This is the main entry point for all other SASS/CSS files.
102 |
103 |
104 | ## Create New Pages
105 | 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.
106 |
107 |
108 | ## Bootstrap Documentation
109 | 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/)
110 |
111 |
112 | ## Credits
113 | [Bootstrap](https://getbootstrap.com/)
114 |
115 | [Locomotive Scroll](https://github.com/locomotivemtl/locomotive-scroll)
116 |
117 | [Unsplash](https://unsplash.com/)
118 |
119 | [Freepik](https://www.freepik.com/)
120 |
121 | [Swiper.js](https://swiperjs.com/)
122 |
123 | ## Contact Us
124 | You can find our website [here](https://www.pixelrocket.store) or you can email us at support@pixelrocket.store
--------------------------------------------------------------------------------
/dist/about.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 |
43 |
44 |
45 |
46 | Bootstrap 5 HTML Template
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
89 |
90 |
91 |
92 |
93 |
94 |
95 | About Me
96 |
97 |
98 |
99 |
100 |
101 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
I'm Jenny Smith, a freelance web developer and designer based in London, United Kingdom.
112 |
113 |
I'm passionate about creating engaging and easy-to-navigate layouts. I love the look of clean lines, sharp contrasts in color schemes or bold graphic assets paired with sophisticated illustrations.
114 |
115 |
As an Ecommerce developer my work is focused on web design; abstract forms make up most projects these days because they're so popular among consumers who want more control over their shopping experience than ever before.
116 |
117 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
Experience
138 |
143 |
144 |
NWD Designs Ltd
145 |
(2020 - present)
146 |
147 |
148 |
Technical Lead
149 |
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.
150 |
https://www.nwd.co.uk
151 |
152 |
153 |
154 |
155 |
160 |
161 |
Pinnacle Designs
162 |
(2018 - 2020)
163 |
164 |
165 |
Lead Developer
166 |
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.
167 |
https://www.pinnacle-designs.co.uk
168 |
169 |
170 |
171 |
172 |
177 |
178 |
Super 8
179 |
(2016 - 2018)
180 |
181 |
182 |
Senior Developer
183 |
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.
184 |
https://www.supereight.co.uk
185 |
186 |
187 |
188 |
189 |
194 |
195 |
Cube Agency
196 |
(2014 - 2016)
197 |
198 |
199 |
Graphic Designer
200 |
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.
201 |
https://www.cubeagency.co.uk
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
Skills
214 |
215 |
234 |
235 |
236 |
255 |
256 |
257 |
276 |
277 |
278 |
297 |
298 |
299 |
318 |
319 |
320 |
339 |
340 |
341 |
342 |
343 |
344 |
345 |
346 |
347 |
348 |
349 |
350 |
351 |
Ready to discuss your project requirements?
352 |
Get In Touch
353 |
354 |
355 |
365 |
366 |
367 |
368 |
369 |
370 |
371 |
372 |
373 |
374 |
375 |
376 |
377 |
378 |
--------------------------------------------------------------------------------
/dist/assets/css/libs.bundle.css:
--------------------------------------------------------------------------------
1 | @font-face{font-family:swiper-icons;src:url("data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA") format("woff");font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}.swiper-container{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1}.swiper-container-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;box-sizing:content-box}.swiper-container-android .swiper-slide,.swiper-wrapper{transform:translateZ(0)}.swiper-container-multirow>.swiper-wrapper{flex-wrap:wrap}.swiper-container-multirow-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-container-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-container-pointer-events{touch-action:pan-y}.swiper-container-pointer-events.swiper-container-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform}.swiper-slide-invisible-blank{visibility:hidden}.swiper-container-autoheight,.swiper-container-autoheight .swiper-slide{height:auto}.swiper-container-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-container-3d{perspective:1200px}.swiper-container-3d .swiper-cube-shadow,.swiper-container-3d .swiper-slide,.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top,.swiper-container-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-container-3d .swiper-slide-shadow-left{background-image:linear-gradient(270deg,rgba(0,0,0,.5),transparent)}.swiper-container-3d .swiper-slide-shadow-right{background-image:linear-gradient(90deg,rgba(0,0,0,.5),transparent)}.swiper-container-3d .swiper-slide-shadow-top{background-image:linear-gradient(0deg,rgba(0,0,0,.5),transparent)}.swiper-container-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(180deg,rgba(0,0,0,.5),transparent)}.swiper-container-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-container-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-container-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-container-horizontal.swiper-container-css-mode>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-container-vertical.swiper-container-css-mode>.swiper-wrapper{scroll-snap-type:y mandatory}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:calc(var(--swiper-navigation-size)/44*27);height:var(--swiper-navigation-size);margin-top:calc(var(--swiper-navigation-size)*-1/2);z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;text-transform:none;font-variant:normal;line-height:1}.swiper-button-prev,.swiper-container-rtl .swiper-button-next{left:10px;right:auto}.swiper-button-prev:after,.swiper-container-rtl .swiper-button-next:after{content:"prev"}.swiper-button-next,.swiper-container-rtl .swiper-button-prev{right:10px;left:auto}.swiper-button-next:after,.swiper-container-rtl .swiper-button-prev:after{content:"next"}.swiper-button-next.swiper-button-white,.swiper-button-prev.swiper-button-white{--swiper-navigation-color:#fff}.swiper-button-next.swiper-button-black,.swiper-button-prev.swiper-button-black{--swiper-navigation-color:#000}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:opacity .3s;transform:translateZ(0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-container-horizontal>.swiper-pagination-bullets,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active,.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:8px;height:8px;display:inline-block;border-radius:50%;background:#000;opacity:.2}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet-active{opacity:1;background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-container-vertical>.swiper-pagination-bullets{right:10px;top:50%;transform:translate3d(0,-50%,0)}.swiper-container-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:6px 0;display:block}.swiper-container-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-container-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:transform .2s,top .2s}.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 4px}.swiper-container-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-container-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,left .2s}.swiper-container-horizontal.swiper-container-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,right .2s}.swiper-pagination-progressbar{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-container-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-container-horizontal>.swiper-pagination-progressbar,.swiper-container-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:4px;left:0;top:0}.swiper-container-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-container-vertical>.swiper-pagination-progressbar{width:4px;height:100%;left:0;top:0}.swiper-pagination-white{--swiper-pagination-color:#fff}.swiper-pagination-black{--swiper-pagination-color:#000}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-container-horizontal>.swiper-scrollbar{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-container-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;animation:swiper-preloader-spin 1s linear infinite;box-sizing:border-box;border-radius:50%;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-top:4px solid transparent}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{to{transform:rotate(1turn)}}.swiper-container .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-container-fade.swiper-container-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-container-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-container-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-fade .swiper-slide-active,.swiper-container-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube{overflow:visible}.swiper-container-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-container-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-cube.swiper-container-rtl .swiper-slide{transform-origin:100% 0}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-next,.swiper-container-cube .swiper-slide-next+.swiper-slide,.swiper-container-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-container-cube .swiper-slide-shadow-bottom,.swiper-container-cube .swiper-slide-shadow-left,.swiper-container-cube .swiper-slide-shadow-right,.swiper-container-cube .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-container-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0;width:100%;height:100%;opacity:.6;z-index:0}.swiper-container-cube .swiper-cube-shadow:before{content:"";background:#000;position:absolute;left:0;top:0;bottom:0;right:0;-webkit-filter:blur(50px);filter:blur(50px)}.swiper-container-flip{overflow:visible}.swiper-container-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-container-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-flip .swiper-slide-active,.swiper-container-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-flip .swiper-slide-shadow-bottom,.swiper-container-flip .swiper-slide-shadow-left,.swiper-container-flip .swiper-slide-shadow-right,.swiper-container-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}html.has-scroll-smooth{overflow:hidden}html.has-scroll-dragging{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.has-scroll-smooth body{overflow:hidden}.has-scroll-smooth [data-scroll-container]{min-height:100vh}[data-scroll-direction=horizontal] [data-scroll-container]{height:100vh;display:inline-block;white-space:nowrap}[data-scroll-direction=horizontal] [data-scroll-section]{display:inline-block;vertical-align:top;white-space:nowrap;height:100%}.c-scrollbar{position:absolute;right:0;top:0;width:11px;height:100%;transform-origin:center right;transition:transform .3s,opacity .3s;opacity:0}.c-scrollbar:hover{transform:scaleX(1.45)}.c-scrollbar:hover,.has-scroll-dragging .c-scrollbar,.has-scroll-scrolling .c-scrollbar{opacity:1}[data-scroll-direction=horizontal] .c-scrollbar{width:100%;height:10px;top:auto;bottom:0;transform:scaleY(1)}[data-scroll-direction=horizontal] .c-scrollbar:hover{transform:scaleY(1.3)}.c-scrollbar_thumb{position:absolute;top:0;right:0;background-color:#000;opacity:.5;width:7px;border-radius:10px;margin:2px;cursor:-webkit-grab;cursor:grab}.has-scroll-dragging .c-scrollbar_thumb{cursor:-webkit-grabbing;cursor:grabbing}[data-scroll-direction=horizontal] .c-scrollbar_thumb{right:auto;bottom:0}
--------------------------------------------------------------------------------
/dist/assets/css/libs.bundle.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["webpack://./node_modules/swiper/swiper-bundle.css","webpack://./node_modules/locomotive-scroll/dist/locomotive-scroll.css"],"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,CChiBA,uBACE,eAAkB,CAEpB,yBACE,wBAAyB,CACzB,qBAAsB,CACtB,oBAAqB,CACrB,gBAAmB,CAErB,wBACE,eAAkB,CAEpB,2CACE,gBAAmB,CAErB,2DACE,YAAa,CACb,oBAAqB,CACrB,kBAAqB,CAEvB,yDACE,oBAAqB,CACrB,kBAAmB,CACnB,kBAAmB,CACnB,WAAc,CAEhB,aACE,iBAAkB,CAClB,OAAQ,CACR,KAAM,CACN,UAAW,CACX,WAAY,CACZ,6BAA8B,CAC9B,oCAAwC,CACxC,SAAY,CACZ,mBACE,sBAAyB,CAC3B,wFACE,SAAY,CACd,gDACE,UAAW,CACX,WAAY,CACZ,QAAS,CACT,QAAS,CACT,mBAAsB,CACtB,sDACE,qBAAwB,CAE9B,mBACE,iBAAkB,CAClB,KAAM,CACN,OAAQ,CACR,qBAAuB,CACvB,UAAY,CACZ,SAAU,CACV,kBAAmB,CACnB,UAAW,CACX,mBAAoB,CACpB,WAAc,CACd,wCACE,uBAAwB,CACxB,eAAkB,CACpB,sDACE,UAAW,CACX,QAAW","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, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA') 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","/*! locomotive-scroll v4.1.2 | MIT License | https://github.com/locomotivemtl/locomotive-scroll */\nhtml.has-scroll-smooth {\n overflow: hidden; }\n\nhtml.has-scroll-dragging {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none; }\n\n.has-scroll-smooth body {\n overflow: hidden; }\n\n.has-scroll-smooth [data-scroll-container] {\n min-height: 100vh; }\n\n[data-scroll-direction=\"horizontal\"] [data-scroll-container] {\n height: 100vh;\n display: inline-block;\n white-space: nowrap; }\n\n[data-scroll-direction=\"horizontal\"] [data-scroll-section] {\n display: inline-block;\n vertical-align: top;\n white-space: nowrap;\n height: 100%; }\n\n.c-scrollbar {\n position: absolute;\n right: 0;\n top: 0;\n width: 11px;\n height: 100%;\n transform-origin: center right;\n transition: transform 0.3s, opacity 0.3s;\n opacity: 0; }\n .c-scrollbar:hover {\n transform: scaleX(1.45); }\n .c-scrollbar:hover, .has-scroll-scrolling .c-scrollbar, .has-scroll-dragging .c-scrollbar {\n opacity: 1; }\n [data-scroll-direction=\"horizontal\"] .c-scrollbar {\n width: 100%;\n height: 10px;\n top: auto;\n bottom: 0;\n transform: scaleY(1); }\n [data-scroll-direction=\"horizontal\"] .c-scrollbar:hover {\n transform: scaleY(1.3); }\n\n.c-scrollbar_thumb {\n position: absolute;\n top: 0;\n right: 0;\n background-color: black;\n opacity: 0.5;\n width: 7px;\n border-radius: 10px;\n margin: 2px;\n cursor: -webkit-grab;\n cursor: grab; }\n .has-scroll-dragging .c-scrollbar_thumb {\n cursor: -webkit-grabbing;\n cursor: grabbing; }\n [data-scroll-direction=\"horizontal\"] .c-scrollbar_thumb {\n right: auto;\n bottom: 0; }\n"]}
--------------------------------------------------------------------------------
/dist/assets/fonts/remixicon.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/dist/assets/fonts/remixicon.woff
--------------------------------------------------------------------------------
/dist/assets/images/avatar-1.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/dist/assets/images/avatar-1.jpeg
--------------------------------------------------------------------------------
/dist/assets/images/avatar-2.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/dist/assets/images/avatar-2.jpeg
--------------------------------------------------------------------------------
/dist/assets/images/avatar-3.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/dist/assets/images/avatar-3.jpeg
--------------------------------------------------------------------------------
/dist/assets/images/avatar-4.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/dist/assets/images/avatar-4.jpeg
--------------------------------------------------------------------------------
/dist/assets/images/avatar-5.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/dist/assets/images/avatar-5.jpeg
--------------------------------------------------------------------------------
/dist/assets/images/avatar-6.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/dist/assets/images/avatar-6.jpeg
--------------------------------------------------------------------------------
/dist/assets/images/avatar-7.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/dist/assets/images/avatar-7.jpeg
--------------------------------------------------------------------------------
/dist/assets/images/avatar-small.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/dist/assets/images/avatar-small.jpg
--------------------------------------------------------------------------------
/dist/assets/images/avatar.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/dist/assets/images/avatar.jpg
--------------------------------------------------------------------------------
/dist/assets/images/favicon/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/dist/assets/images/favicon/android-chrome-192x192.png
--------------------------------------------------------------------------------
/dist/assets/images/favicon/android-chrome-256x256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/dist/assets/images/favicon/android-chrome-256x256.png
--------------------------------------------------------------------------------
/dist/assets/images/favicon/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/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/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/dist/assets/images/favicon/favicon-16x16.png
--------------------------------------------------------------------------------
/dist/assets/images/favicon/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/dist/assets/images/favicon/favicon-32x32.png
--------------------------------------------------------------------------------
/dist/assets/images/favicon/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/dist/assets/images/favicon/favicon.ico
--------------------------------------------------------------------------------
/dist/assets/images/favicon/mstile-150x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/dist/assets/images/favicon/mstile-150x150.png
--------------------------------------------------------------------------------
/dist/assets/images/favicon/safari-pinned-tab.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 | Created by potrace 1.14, written by Peter Selinger 2001-2017
9 |
10 |
12 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/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/project-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/dist/assets/images/project-1.jpg
--------------------------------------------------------------------------------
/dist/assets/images/project-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/dist/assets/images/project-2.jpg
--------------------------------------------------------------------------------
/dist/assets/images/project-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/dist/assets/images/project-3.jpg
--------------------------------------------------------------------------------
/dist/assets/images/project-listing-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/dist/assets/images/project-listing-1.jpg
--------------------------------------------------------------------------------
/dist/assets/images/project-listing-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/dist/assets/images/project-listing-2.jpg
--------------------------------------------------------------------------------
/dist/assets/images/project-listing-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/dist/assets/images/project-listing-3.jpg
--------------------------------------------------------------------------------
/dist/assets/images/project-listing-4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/dist/assets/images/project-listing-4.jpg
--------------------------------------------------------------------------------
/dist/assets/images/project-listing-5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/dist/assets/images/project-listing-5.jpg
--------------------------------------------------------------------------------
/dist/assets/images/project-listing-6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/dist/assets/images/project-listing-6.jpg
--------------------------------------------------------------------------------
/dist/assets/images/project-listing-7.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/dist/assets/images/project-listing-7.jpg
--------------------------------------------------------------------------------
/dist/assets/images/project-listing-8.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/dist/assets/images/project-listing-8.jpg
--------------------------------------------------------------------------------
/dist/assets/js/theme.bundle.js:
--------------------------------------------------------------------------------
1 | !function(e){function t(t){for(var o,i,c=t[0],s=t[1],d=t[2],u=0,p=[];u{e.addEventListener("click",(function(){t("light"===n()?{type:"dark"}:{})}))}),function(){const e=n();t(e?{type:e}:{})}()}()},,,function(e,t){window.addEventListener("load",(function(){document.body.classList.add("page-loaded")}))},function(e,t,n){},,function(e,t,n){"use strict";n.r(t);n(14),n(9);var o=n(3),r=n(4),a=n.n(r);!function(){const e=document.querySelector("[data-scroll-container]"),t=new o.a({el:e,smooth:!0,offset:["17.5%"],repeat:!0,class:"animate",smartphone:{smooth:!0},tablet:{smooth:!0}});window.addEventListener("resize",()=>{t.update()}),a()(e,{background:!0},()=>{t.update()})}();var i=n(30),c=n(19),s=n(20),d=n(21),l=n(22),u=n(23),p=n(24),f=n(25),w=n(26),y=n(27),m=n(28),h=n(29);i.a.use([c.a,s.a,d.a,l.a,u.a,p.a,f.a,w.a,y.a,m.a,h.a]),document.addEventListener("DOMContentLoaded",()=>{(document.querySelectorAll("[data-swiper]")||[]).forEach(e=>{let t=e.dataset&&e.dataset.options?JSON.parse(e.dataset.options):{};new i.a(e,t)});var e=new i.a(".swiper-linked-top",{spaceBetween:23,breakpoints:{300:{slidesPerView:2},999:{slidesPerView:3},1024:{slidesPerView:4}},navigation:{nextEl:".swiper-next",prevEl:".swiper-prev"}});new i.a(".swiper-linked-bottom",{spaceBetween:0,slidesPerView:1,parallax:!0,thumbs:{swiper:e},effect:"fade",fadeEffect:{crossFade:!0}})});var b=n(5),v=n.n(b);(document.querySelectorAll("[data-typed]")||[]).forEach(e=>{const t={typeSpeed:50,backSpeed:35,backDelay:1e3,loop:!0,...e.dataset.typed?JSON.parse(e.dataset.typed):{}};new v.a(e,t)});n(12)}]);
--------------------------------------------------------------------------------
/dist/contact.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 |
43 |
44 |
45 |
46 | Bootstrap 5 HTML Template
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
100 |
101 |
Let's work together on your next project
102 |
103 |
Email me
104 |
hello@jenny.smith
105 |
106 |
107 |
Call me
108 |
+44 (0)208 334 4567
109 |
110 |
Send Me A Message
111 |
112 |
113 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
--------------------------------------------------------------------------------
/dist/work-listing.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 |
43 |
44 |
45 |
46 | Bootstrap 5 HTML Template
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
89 |
90 |
91 |
92 |
93 |
94 |
95 | My Work
96 |
97 |
99 |
100 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
Ecommerce · Shopify
112 |
Shopify Fashion Store
113 |
Design and development of a custom Shopify Ecommerce platform for a fashion retailer.
114 |
View Project
115 |
116 |
117 |
118 |
119 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
Ecommerce · Magento
131 |
Magento Furniture Store
132 |
Design and development of a custom Magento Ecommerce platform for a furniture retailer.
133 |
View Project
134 |
135 |
136 |
137 |
138 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
Ecommerce · Wordpress
150 |
Wordpress Grocery Store
151 |
Design and development of a WooCommerce Ecommerce platform for a grocery platform.
152 |
View Project
153 |
154 |
155 |
156 |
157 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
Mobile · React Native
169 |
Messaging App
170 |
Creation of a custom React Native messaging app for a messaging SAAS startup.
171 |
View Project
172 |
173 |
174 |
175 |
176 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
Ecommerce · Shopify
188 |
Shopify Online Store
189 |
Design and development of a custom Shopify Ecommerce platform for a car retailer.
190 |
View Project
191 |
192 |
193 |
194 |
195 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
Ecommerce · Magento
207 |
Magento Online Store
208 |
Design and development of a custom Magento Ecommerce platform for a pet food retailer.
209 |
View Project
210 |
211 |
212 |
213 |
214 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
Ecommerce · Wordpress
226 |
Web Application
227 |
Design and development of a custom WooCommerce Ecommerce platform for a furniture retailer.
228 |
View Project
229 |
230 |
231 |
232 |
233 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
Ecommerce · Shopify
245 |
Ecommerce Marketing
246 |
Design and development of a custom Shopify Ecommerce platform for a fashion retailer.
247 |
View Project
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 |
260 |
Ready to discuss your project requirements?
261 |
Get In Touch
262 |
263 |
264 |
274 |
275 |
276 |
277 |
278 |
279 |
280 |
281 |
282 |
283 |
284 |
285 |
286 |
287 |
--------------------------------------------------------------------------------
/dist/work-single.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 |
43 |
44 |
45 |
46 | Bootstrap 5 HTML Template
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
Shopify Online Store
98 |
Ecommerce · Mobile App
99 |
Design and build of a Ecommerce platform.
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
112 |
115 |
116 |
Heritage Furniture
117 |
Heritage Furniture is a family-owned business located in Nottingham, United Kingdom. They
118 | have 12 locations throughout the UK and have been online since 2007.
119 |
120 |
123 |
124 |
The current Heritage Ecommerce platform ran on OS Commerce. I migrated the existing sales
125 | orders and customer data to our new Shopify platform. I designed a new interface using the
126 | updating branding supplied by Heritage's in-house design team.
127 |
I also designed and built a custom React Native application that used Shopify's API to handle
128 | online sales and integrated with Heritage's new Ecommerce website to allow customers to
129 | place new orders and view previous orders through the new app.
130 |
View Website
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
What I Delivered
145 |
146 |
147 |
148 | React Native mobile application
149 | Shopify Ecommerce platform
150 | Data transfer
151 | Website hosting
152 |
153 |
154 |
157 |
158 |
159 | UX and UI Design
160 | Solution architecture
161 | Application development
162 | Marketing strategy
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
176 |
"
177 |
178 | Jenny has excellent software intuition and was able to quickly understand our business
179 | requirements. She did a fantastic job with the redesign of our website and we couldn't be
180 | happier!
181 |
182 |
John Bridges
183 |
CEO, Heritage Furniture
184 |
185 |
189 |
190 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
Ready to discuss your project requirements?
207 |
Get In Touch
208 |
209 |
210 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "folio",
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 | "bootstrap": "^5.1.3",
43 | "imagesloaded": "^4.1.4",
44 | "locomotive-scroll": "^4.1.3",
45 | "swiper": "^6.2.0",
46 | "typed.js": "^2.0.12"
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/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/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/assets/fonts/remixicon.woff
--------------------------------------------------------------------------------
/src/assets/images/avatar-1.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/assets/images/avatar-1.jpeg
--------------------------------------------------------------------------------
/src/assets/images/avatar-2.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/assets/images/avatar-2.jpeg
--------------------------------------------------------------------------------
/src/assets/images/avatar-3.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/assets/images/avatar-3.jpeg
--------------------------------------------------------------------------------
/src/assets/images/avatar-4.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/assets/images/avatar-4.jpeg
--------------------------------------------------------------------------------
/src/assets/images/avatar-5.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/assets/images/avatar-5.jpeg
--------------------------------------------------------------------------------
/src/assets/images/avatar-6.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/assets/images/avatar-6.jpeg
--------------------------------------------------------------------------------
/src/assets/images/avatar-7.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/assets/images/avatar-7.jpeg
--------------------------------------------------------------------------------
/src/assets/images/avatar-small.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/assets/images/avatar-small.jpg
--------------------------------------------------------------------------------
/src/assets/images/avatar.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/assets/images/avatar.jpg
--------------------------------------------------------------------------------
/src/assets/images/favicon/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/assets/images/favicon/android-chrome-192x192.png
--------------------------------------------------------------------------------
/src/assets/images/favicon/android-chrome-256x256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/assets/images/favicon/android-chrome-256x256.png
--------------------------------------------------------------------------------
/src/assets/images/favicon/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/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/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/assets/images/favicon/favicon-16x16.png
--------------------------------------------------------------------------------
/src/assets/images/favicon/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/assets/images/favicon/favicon-32x32.png
--------------------------------------------------------------------------------
/src/assets/images/favicon/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/assets/images/favicon/favicon.ico
--------------------------------------------------------------------------------
/src/assets/images/favicon/mstile-150x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/assets/images/favicon/mstile-150x150.png
--------------------------------------------------------------------------------
/src/assets/images/favicon/safari-pinned-tab.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 | Created by potrace 1.14, written by Peter Selinger 2001-2017
9 |
10 |
12 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/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/project-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/assets/images/project-1.jpg
--------------------------------------------------------------------------------
/src/assets/images/project-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/assets/images/project-2.jpg
--------------------------------------------------------------------------------
/src/assets/images/project-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/assets/images/project-3.jpg
--------------------------------------------------------------------------------
/src/assets/images/project-listing-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/assets/images/project-listing-1.jpg
--------------------------------------------------------------------------------
/src/assets/images/project-listing-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/assets/images/project-listing-2.jpg
--------------------------------------------------------------------------------
/src/assets/images/project-listing-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/assets/images/project-listing-3.jpg
--------------------------------------------------------------------------------
/src/assets/images/project-listing-4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/assets/images/project-listing-4.jpg
--------------------------------------------------------------------------------
/src/assets/images/project-listing-5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/assets/images/project-listing-5.jpg
--------------------------------------------------------------------------------
/src/assets/images/project-listing-6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/assets/images/project-listing-6.jpg
--------------------------------------------------------------------------------
/src/assets/images/project-listing-7.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/assets/images/project-listing-7.jpg
--------------------------------------------------------------------------------
/src/assets/images/project-listing-8.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/assets/images/project-listing-8.jpg
--------------------------------------------------------------------------------
/src/assets/js/components/dark-mode.js:
--------------------------------------------------------------------------------
1 | (function () {
2 | const modeToggleBtns = document.querySelectorAll('.btn-toggle-mode');
3 | const LIGHT_MODE = 'light';
4 | const DARK_MODE = 'dark';
5 | const MODE = 'mode';
6 |
7 | /**
8 | * On page load, check for localStorage value of mode.
9 | * If not set, set it to user preference (if dark mode) or light mode.
10 | */
11 | function init() {
12 | const mode = getMode();
13 |
14 | if (!mode) {
15 | setMode({});
16 | return;
17 | }
18 | setMode({ type: mode });
19 | }
20 |
21 | /**
22 | * Set our mode
23 | * @param {type} String
24 | */
25 | function setMode({ type = LIGHT_MODE }) {
26 | localStorage.setItem(MODE, type);
27 | setHTMLAttrMode({ type });
28 | }
29 |
30 | /**
31 | * Set HTML data attribute value for our mode
32 | * @param {type} String
33 | */
34 | function setHTMLAttrMode({ type }) {
35 | const html = document.querySelector('html');
36 | if (html) {
37 | html.setAttribute('data-mode', type);
38 | }
39 | }
40 |
41 | /**
42 | * Get localStorage value for our mode
43 | * @returns String
44 | */
45 | function getMode() {
46 | const currentMode = localStorage.getItem(MODE);
47 |
48 | if (currentMode) {
49 | return currentMode;
50 | } else if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
51 | return DARK_MODE;
52 | }
53 |
54 | return LIGHT_MODE;
55 | }
56 |
57 | /**
58 | * Toggle our mode via button in navbar
59 | */
60 | function toggleMode() {
61 | const currentMode = getMode();
62 | if (currentMode === LIGHT_MODE) {
63 | setMode({ type: DARK_MODE });
64 | } else {
65 | setMode({});
66 | }
67 | }
68 |
69 | if (modeToggleBtns) {
70 | modeToggleBtns.forEach((btn) => {
71 | btn.addEventListener('click', function() {
72 | toggleMode();
73 | });
74 | });
75 | }
76 |
77 | init();
78 | })();
--------------------------------------------------------------------------------
/src/assets/js/components/locomotive-scroll.js:
--------------------------------------------------------------------------------
1 | import LocomotiveScroll from 'locomotive-scroll';
2 | import imagesLoaded from 'imagesloaded';
3 |
4 | (function () {
5 |
6 | const scrollContainer = document.querySelector('[data-scroll-container]');
7 |
8 | const scroll = new LocomotiveScroll({
9 | el: scrollContainer,
10 | smooth: true,
11 | offset: ['17.5%'],
12 | repeat: true,
13 | class: 'animate',
14 | smartphone: {
15 | smooth: true
16 | },
17 | tablet: {
18 | smooth: true
19 | }
20 | });
21 |
22 | window.addEventListener('resize', () => {
23 | scroll.update();
24 | });
25 |
26 | imagesLoaded(scrollContainer, { background: true }, () => {
27 | scroll.update();
28 | });
29 |
30 | })();
--------------------------------------------------------------------------------
/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 |
20 | // Handle Default swipers
21 | const swipers = document.querySelectorAll('[data-swiper]') || [];
22 |
23 | swipers.forEach((elem) => {
24 | let options = elem.dataset && elem.dataset.options ? JSON.parse(elem.dataset.options) : {};
25 | var swiper = new Swiper(elem, options);
26 | });
27 |
28 | // Handle our linked swipers on homepage
29 | var swiperLinkedTop = new Swiper('.swiper-linked-top', {
30 | spaceBetween: 23,
31 | breakpoints: {
32 | 300: {
33 | slidesPerView: 2
34 | },
35 | 999: {
36 | slidesPerView: 3
37 | },
38 | 1024: {
39 | slidesPerView: 4
40 | }
41 | },
42 | navigation: {
43 | nextEl: '.swiper-next',
44 | prevEl: '.swiper-prev',
45 | }
46 | });
47 | var swiperLinkedBottom = new Swiper('.swiper-linked-bottom', {
48 | spaceBetween: 0,
49 | slidesPerView: 1,
50 | parallax: true,
51 | thumbs: {
52 | swiper: swiperLinkedTop
53 | },
54 | effect: 'fade',
55 | fadeEffect: {
56 | crossFade: true
57 | }
58 | });
59 |
60 | })
61 | })();
--------------------------------------------------------------------------------
/src/assets/js/components/typed.js:
--------------------------------------------------------------------------------
1 | import Typed from 'typed.js';
2 |
3 | (function () {
4 | const typedElems = document.querySelectorAll('[data-typed]') || [];
5 |
6 | typedElems.forEach(elem => {
7 | const elemOptions = elem.dataset.typed ? JSON.parse(elem.dataset.typed) : {};
8 |
9 | const defaultOptions = {
10 | typeSpeed: 50,
11 | backSpeed: 35,
12 | backDelay: 1000,
13 | loop: true,
14 | };
15 | const options = {
16 | ...defaultOptions,
17 | ...elemOptions
18 | };
19 | new Typed(elem, options);
20 | });
21 | })();
--------------------------------------------------------------------------------
/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/dark-mode';
6 | import './components/locomotive-scroll';
7 | import './components/swiper';
8 | import './components/typed';
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: 'Poppins', sans-serif;
4 | --bs-spacer: #{$spacer};
5 | --bs-gutter-width: #{$grid-gutter-width};
6 |
7 |
8 | /* Icon font family */
9 | --theme-font-icon: 'remixicon';
10 | --theme-font-icon-style: 'normal';
11 |
12 | /* Avatar */
13 | --theme-avatar-size: 45px;
14 |
15 | /* Portfolio Modal Image Fixed Height Size */
16 | --theme-portfolio-img-height: 600px;
17 |
18 | /* Cubic Bezier Animations */
19 | --theme-cubic-bezier: cubic-bezier(.25,.46,.45,.94);
20 |
21 | /* Locomotive Scroll Custom Animation Distance */
22 | --theme-locomotive-scroll-animation-distance: 15px;
23 |
24 | /* theme breakpoints using Bootstrap sass map */
25 | @each $breakpoint, $value in $grid-breakpoints {
26 | --theme-breakpoint-#{$breakpoint}: #{$value};
27 | }
28 |
29 | /* theme max widths using sass map */
30 | @each $breakpoint, $value in $container-max-widths {
31 | --theme-maxwidth-breakpoint-#{$breakpoint}: #{$value};
32 | }
33 |
34 | /* Dark/Light Mode */
35 | --theme-body-bg: #{$body-bg};
36 | --theme-body-color: #{$body-color};
37 | --theme-nav-link: #{$body-color};
38 | --theme-nav-link-hover: #{$body-color};
39 | --theme-btn-icon-bg: #{$gray-900};
40 | --theme-btn-icon-color: #{$white};
41 | --theme-border-color: #{$border-color};
42 | --theme-link-body-color: #{$body-color};
43 | --theme-link-body-psuedo-bg: #{$primary};
44 | --theme-card-bg: #{$white};
45 | --theme-card-box-shadow: #{$box-shadow-sm};
46 | --theme-card-color: #{$body-color};
47 | --theme-form-input-bg: #{$input-bg};
48 | --theme-form-input-color: #{$input-color};
49 | --theme-form-check-bg: #{$gray-100};
50 | --theme-form-check-checked-bg: #{$gray-900};
51 | --theme-darker-primary: #31b681;
52 | }
53 |
54 |
55 | /* dark mode */
56 | :root[data-mode=dark] {
57 | --theme-body-bg: #{$gray-900};
58 | --theme-body-color: #{$white};
59 | --theme-nav-link: #{$white};
60 | --theme-nav-link-hover: #{$white};
61 | --theme-btn-icon-bg: #{$white};
62 | --theme-btn-icon-color: #{$gray-900};
63 | --theme-border-color: rgba(255,255,255, .2);
64 | --theme-link-body-color: #{$white};
65 | --theme-link-body-psuedo-bg: var(--theme-darker-primary);
66 | --theme-card-bg: #{$gray-800};
67 | --theme-card-box-shadow: none;
68 | --theme-card-color: #{$white};
69 | --theme-form-input-bg: #{$gray-800};
70 | --theme-form-input-color: #{$white};
71 | --theme-form-check-bg: #{$gray-800};
72 | --theme-form-check-checked-bg: var(--theme-darker-primary);
73 | }
--------------------------------------------------------------------------------
/src/assets/scss/abstracts/_mixins.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/assets/scss/abstracts/_mixins.scss
--------------------------------------------------------------------------------
/src/assets/scss/base/_base.scss:
--------------------------------------------------------------------------------
1 | /* generic site wide styles*/
2 | body {
3 | overflow-x: hidden;
4 | background: var(--theme-body-bg);
5 | color: var(--theme-body-color);
6 | }
7 |
8 | .container, .container-fluid {
9 | padding-left: 2rem;
10 | padding-right: 2rem;
11 | }
12 |
13 | p {
14 | font-size: 1.2rem;
15 | }
16 |
17 | .disable-child-pointer * {
18 | pointer-events: none;
19 | }
20 |
--------------------------------------------------------------------------------
/src/assets/scss/components/_avatar.scss:
--------------------------------------------------------------------------------
1 | .avatar {
2 | width: var(--theme-avatar-size);
3 | height: var(--theme-avatar-size);
4 | display: block;
5 | }
--------------------------------------------------------------------------------
/src/assets/scss/components/_buttons.scss:
--------------------------------------------------------------------------------
1 | .btn-icon {
2 | width: var(--theme-avatar-size);
3 | height: var(--theme-avatar-size);
4 | border: 0;
5 | display: flex;
6 | align-items: center;
7 | justify-content: center;
8 | border-radius: 50%;
9 | background: var(--theme-btn-icon-bg);
10 | color: var(--theme-btn-icon-color);
11 | }
12 |
13 |
14 | .btn-dark, .navbar-light .navbar-toggler {
15 | background: var(--theme-btn-icon-bg);
16 | color: var(--theme-btn-icon-color);
17 | }
--------------------------------------------------------------------------------
/src/assets/scss/components/_components.scss:
--------------------------------------------------------------------------------
1 |
2 | /* Avatar */
3 | @import './avatar';
4 |
5 | /* Buttons */
6 | @import './buttons';
7 |
8 | /* Forms */
9 | @import './forms';
10 |
11 | /* Navbar */
12 | @import './navbar';
13 |
14 | /* Testimonials */
15 | @import './testimonials';
--------------------------------------------------------------------------------
/src/assets/scss/components/_forms.scss:
--------------------------------------------------------------------------------
1 | .form-control, .form-control:focus {
2 | background: var(--theme-form-input-bg);
3 | color: var(--theme-form-input-color);
4 | }
5 |
6 | .form-check-custom {
7 | position: relative;
8 | overflow: hidden;
9 | }
10 |
11 | .form-check-input-custom {
12 | position: absolute;
13 | left: -100px;
14 | }
15 |
16 | .form-check-custom-label {
17 | background: var(--theme-form-check-bg);
18 | border-radius: $border-radius;
19 | padding: $input-padding-y $input-padding-x;
20 | display: flex;
21 | align-items: center;
22 | font-size: $input-btn-font-size;
23 | cursor: pointer;
24 | transition: background-color ease-in .2s, color ease-in .2s;
25 | }
26 |
27 | .form-check-custom-label:before {
28 | font-family: var(--theme-font-icon);
29 | font-style: var(--theme-font-icon-style);
30 | content: "\EB7D";
31 | margin-right: .35rem;
32 | font-size: 1.25rem;
33 | }
34 |
35 | .form-check-input-custom:checked + label {
36 | background-color: var(--theme-form-check-checked-bg);
37 | color: white;
38 | }
39 |
40 | .form-check-input-custom:checked + label:before {
41 | content: "\EB80"
42 | }
--------------------------------------------------------------------------------
/src/assets/scss/components/_navbar.scss:
--------------------------------------------------------------------------------
1 | .nav-item {
2 | margin-left: 2rem;
3 | margin-right: 2rem;
4 | }
5 |
6 | .nav-link, .navbar-light .navbar-nav .nav-link, .navbar-light .navbar-brand, .navbar-brand, .navbar-light .navbar-nav .nav-link:focus {
7 | position: relative;
8 | color: var(--theme-nav-link);
9 |
10 | &:hover, &:active {
11 | color: var(--theme-nav-link-hover);
12 | }
13 | }
14 |
15 | .nav-link:after {
16 | position: absolute;
17 | content: "";
18 | left: 0;
19 | right: 0;
20 | bottom: .8rem;
21 | height: 0;
22 | background: $primary;
23 | transition: all ease-in .2s;
24 | z-index: -1;
25 | }
26 |
27 | .nav-link:hover:after {
28 | height: 9px;
29 | }
30 |
31 | /* Mobile Navigation styles */
32 | @include media-breakpoint-down(lg) {
33 | .nav-item {
34 | margin: .5rem 0;
35 | }
36 | .nav-link {
37 | display: table;
38 | }
39 | }
--------------------------------------------------------------------------------
/src/assets/scss/components/_testimonials.scss:
--------------------------------------------------------------------------------
1 | .testimonials {
2 | display: flex;
3 | flex-wrap: nowrap;
4 | }
5 |
6 | .card-testimonial {
7 | box-shadow: var(--theme-card-box-shadow);
8 | background: var(--theme-card-bg);
9 | color: var(--theme-card-color);
10 | margin-left: 1rem;
11 | margin-right: 1rem;
12 | width: 80vw;
13 | max-width: 700px;
14 | display: flex;
15 | }
--------------------------------------------------------------------------------
/src/assets/scss/custom.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/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 |
13 | /* Locomotive Scroll */
14 | @import '~locomotive-scroll/dist/locomotive-scroll.css';
15 |
--------------------------------------------------------------------------------
/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/_backgrounds.scss:
--------------------------------------------------------------------------------
1 | .bg-img-cover {
2 | height: 44rem;
3 | background-repeat: no-repeat;
4 | background-size: cover;
5 | background-position: center center;
6 | }
7 |
8 | @include media-breakpoint-down(lg) {
9 | .bg-img-cover {
10 | height: 20rem;
11 | }
12 | }
--------------------------------------------------------------------------------
/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/_borders.scss:
--------------------------------------------------------------------------------
1 | body .border-bottom, .body .border, body .border-left, body .border-right, body .border-top {
2 | border-color: var(--theme-border-color) !important;
3 | }
--------------------------------------------------------------------------------
/src/assets/scss/utilities/_text.scss:
--------------------------------------------------------------------------------
1 | .text-highlight {
2 | position: relative;
3 | }
4 |
5 | .text-highlight:after {
6 | content: "";
7 | height: 6px;
8 | position: absolute;
9 | z-index: -1;
10 | left: 0;
11 | right: 0;
12 | bottom: 5px;
13 | background: $primary;
14 | }
15 |
16 | .text-vertical {
17 | transform: rotate(90deg);
18 | transform-origin: left top;
19 | display: inline-block;
20 | position: absolute;
21 | left: 0;
22 | top: 0;
23 | }
24 |
25 | .text-vertical-link {
26 | text-decoration: none;
27 | color: var(--theme-body-color);
28 | transition: color ease-in .2s;
29 |
30 | &:hover {
31 | color: $primary;
32 | }
33 | }
34 |
35 | .subtitle-sm, .subtitle-xs {
36 | color: $text-muted;
37 | letter-spacing: .18em;
38 | text-transform: uppercase;
39 | font-size: $small-font-size;
40 | }
41 |
42 | .subtitle-xs {
43 | font-size: 13px;
44 | font-weight: 500;
45 | }
46 |
47 | .link-body {
48 | color: var(--theme-link-body-color);
49 | text-decoration: none;
50 | position: relative;
51 |
52 | &:hover, &:active {
53 | color: var(--theme-link-body-color);
54 | }
55 | }
56 |
57 | .link-body:after {
58 | content: "";
59 | height: 6px;
60 | position: absolute;
61 | z-index: -1;
62 | left: 0;
63 | right: 0;
64 | bottom: 5px;
65 | background: var(--theme-link-body-psuedo-bg);
66 | transition: all ease-in .2s;
67 | }
68 |
69 | .link-body:hover:after {
70 | height: 50%;
71 | }
72 |
73 | .link-cover:after {
74 | position: absolute;
75 | top: 0;
76 | right: 0;
77 | left: 0;
78 | bottom: 0;
79 | content: "";
80 | display: block;
81 | }
82 |
83 |
84 | @include media-breakpoint-down(lg) {
85 | .typed-elem {
86 | min-height: 10rem;
87 | }
88 | }
89 |
90 | @include media-breakpoint-down(md) {
91 | .typed-elem {
92 | min-height: 12rem;
93 | }
94 | }
--------------------------------------------------------------------------------
/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 | @import './backgrounds';
11 | @import './borders';
12 | @import './text';
13 |
--------------------------------------------------------------------------------
/src/assets/scss/vendors/_vendors.scss:
--------------------------------------------------------------------------------
1 | /* AOS */
2 | //@import 'aos/aos';
3 |
4 | /* Remix Icons */
5 | @import 'remixicon/remixicon';
6 |
7 | /* Locomotive Scroll */
8 | @import 'locomotive-scroll/locomotive-scroll';
9 |
10 | /* Swiper */
11 | @import 'swiper/swiper';
12 |
--------------------------------------------------------------------------------
/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/locomotive-scroll/_locomotive-scroll.scss:
--------------------------------------------------------------------------------
1 | /* apply transition once page loaded */
2 | .page-loaded .fade-in, .page-loaded .fade-in-up, .page-loaded .fade-in-down, .page-loaded .fade-in-left, .page-loaded .fade-in-right {
3 | transition-property: opacity, transform;
4 | transition-timing-function: var(--theme-cubic-bezier);
5 | transition-duration: .6s;
6 | }
7 |
8 | /* opacity 0 for all our custom animations */
9 | .fade-in, .fade-in-up, .fade-in-down, .fade-in-left, .fade-in-right {
10 | opacity: 0;
11 | }
12 |
13 | /* opacity 1 for all our custom animations when in view */
14 | .fade-in.animate, .fade-in-up.animate, .fade-in-down.animate, .fade-in-left.animate, .fade-in-right.animate {
15 | opacity: 1;
16 | transform: translateZ(0);
17 | }
18 |
19 | /* fade in down element when in view */
20 | .fade-in-down {
21 | transform: translate3D(0, calc(var(--theme-locomotive-scroll-animation-distance) * -1), 0);
22 | }
23 |
24 | /* fade in up element when in view */
25 | .fade-in-up {
26 | transform: translate3D(0, var(--theme-locomotive-scroll-animation-distance), 0);
27 | }
28 |
29 | /* fade in left element when in view */
30 | .fade-in-left {
31 | transform: translate3D(calc(var(--theme-locomotive-scroll-animation-distance) * -1), 0, 0);
32 | }
33 |
34 | /* fade in right element when in view */
35 | .fade-in-right {
36 | transform: translate3D(var(--theme-locomotive-scroll-animation-distance), 0, 0);
37 | }
38 |
--------------------------------------------------------------------------------
/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 | }
18 |
19 | .swiper-btn {
20 | cursor: pointer;
21 | transition: all ease-in .2s;
22 | position: absolute;
23 | top: 50%;
24 | left: -25px;
25 | z-index: 99;
26 | transform: translateY(-50%);
27 | width: 50px;
28 | height: 50px;
29 | box-shadow: $box-shadow;
30 | border-radius: 50%;
31 | background: $gray-900;
32 | color: $white;
33 | display: flex;
34 | align-items: center;
35 | justify-content: center;
36 |
37 | &.swiper-next {
38 | left: auto;
39 | right: -25px;
40 | }
41 |
42 | &:hover {
43 | opacity: .50;
44 | }
45 | }
--------------------------------------------------------------------------------
/src/data/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "defaultPageTitle": "Bootstrap 5 HTML Template",
3 | "templateName": "Folio",
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": "Technical Lead",
5 | "company": "NWD Designs Ltd",
6 | "years": "2020 - present",
7 | "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.",
8 | "url": "https://www.google.co.uk",
9 | "url-title": "https://www.nwd.co.uk"
10 | },
11 | {
12 | "title": "Lead Developer",
13 | "company": "Pinnacle Designs",
14 | "years": "2018 - 2020",
15 | "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.",
16 | "url": "https://www.google.co.uk",
17 | "url-title": "https://www.pinnacle-designs.co.uk"
18 | },
19 | {
20 | "title": "Senior Developer",
21 | "company": "Super 8",
22 | "years": "2016 - 2018",
23 | "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.",
24 | "url": "https://www.google.co.uk",
25 | "url-title": "https://www.supereight.co.uk"
26 | },
27 | {
28 | "title": "Graphic Designer",
29 | "company": "Cube Agency",
30 | "years": "2014 - 2016",
31 | "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.",
32 | "url": "https://www.google.co.uk",
33 | "url-title": "https://www.cubeagency.co.uk"
34 | }
35 | ]
36 | }
--------------------------------------------------------------------------------
/src/data/skills.json:
--------------------------------------------------------------------------------
1 | {
2 | "entries": [
3 | {
4 | "skill": "Javascript",
5 | "percent": "75"
6 | },
7 | {
8 | "skill": "PHP",
9 | "percent": "95"
10 | },
11 | {
12 | "skill": "HTML",
13 | "percent": "65"
14 | },
15 | {
16 | "skill": "CSS",
17 | "percent": "35"
18 | },
19 | {
20 | "skill": "GraphQL",
21 | "percent": "98"
22 | },
23 | {
24 | "skill": "Python",
25 | "percent": "45"
26 | }
27 | ]
28 | }
--------------------------------------------------------------------------------
/src/data/testimonials-two.json:
--------------------------------------------------------------------------------
1 | {
2 | "entries": [
3 | {
4 | "testimonial": "Working with Jenny was an absolute dream. She offered us the perfect logo without any complicated deadlines or tight spots that other designers could not navigate to save their life!",
5 | "person": "Peter Jackson",
6 | "title": "WimWam Limited",
7 | "img": "{{webRoot}}/assets/images/avatar-5.jpeg"
8 | },
9 | {
10 | "testimonial": "I had the best experience working with Jenny. She is a creative, talented and fun person to be around! Her attention-to detail made it easy for me as her client because we knew what was wanted from day one.",
11 | "person": "Patricia Nelson",
12 | "title": "Cologne Limited",
13 | "img": "{{webRoot}}/assets/images/avatar-6.jpeg"
14 | },
15 | {
16 | "testimonial": "Working with Jenny was a real pleasure. Not only does her work make us look good but also feels really nice working alongside someone you can trust both personally and professionally!",
17 | "person": "Stephen King",
18 | "title": "King Coding Ltd",
19 | "img": "{{webRoot}}/assets/images/avatar-7.jpeg"
20 | },
21 | {
22 | "testimonial": "With a creative approach to logos, she was able provide us with custom designs without ever having an unrealistic deadline. Not only does the work make our company look good but also feel really nice when we can trust someone!",
23 | "person": "Simon Smith",
24 | "title": "Brand Juice Co",
25 | "img": "{{webRoot}}/assets/images/avatar-3.jpeg"
26 | },
27 | {
28 | "testimonial": "I've never met anyone who is more professional and clear in their communications than Jenny, but it was when she started giving me advice on how to improve our website design that really made a difference for us -- she had so many good ideas!",
29 | "person": "Joe Hill",
30 | "title": "Joe Hill Software",
31 | "img": "{{webRoot}}/assets/images/avatar-1.jpeg"
32 | },
33 | {
34 | "testimonial": "I can't say enough good things about Jenny! We started as a client last year after she made some major changes for us which turned out beautifully. We'll be a client for as long as she will work with us!",
35 | "person": "Rob Waite",
36 | "title": "RW Software Services",
37 | "img": "{{webRoot}}/assets/images/avatar-2.jpeg"
38 | }
39 | ]
40 | }
--------------------------------------------------------------------------------
/src/data/testimonials.json:
--------------------------------------------------------------------------------
1 | {
2 | "entries": [
3 | {
4 | "testimonial": "Jenny offered creative logos without production deadlines too complicated or tight spots where others could not go. Not only does her work make us look good but also feels really nice working alongside someone you can trust!",
5 | "person": "Emily Parkson",
6 | "title": "Waterpark Theatre",
7 | "img": "{{webRoot}}/assets/images/avatar-1.jpeg"
8 | },
9 | {
10 | "testimonial": "I had the best experience working with Jenny. She is a creative, talented and fun person to be around! Her attention-to detail made it easy for me as her client because we knew what was wanted from day one.",
11 | "person": "Patrick Smith",
12 | "title": "Cologne Limited",
13 | "img": "{{webRoot}}/assets/images/avatar-7.jpeg"
14 | },
15 | {
16 | "testimonial": "I was really pleased with the logo designs that Jenny created for my organization. The logos are instantly recognizable, making it easy to find our brand in a crowded market of other education providers.",
17 | "person": "Harry Duckmore",
18 | "title": "SB Design Limited",
19 | "img": "{{webRoot}}/assets/images/avatar-6.jpeg"
20 | },
21 | {
22 | "testimonial": "She's always professional and clear in her communications, but it was when she started giving me advice on how to improve our website design that really made a difference for us--she had so many good ideas!",
23 | "person": "Nelly Oliver",
24 | "title": "Super 8 Design House",
25 | "img": "{{webRoot}}/assets/images/avatar-4.jpeg"
26 | },
27 | {
28 | "testimonial": "I was really pleased with the logo designs that Jenny created for my organization. The logos are instantly recognizable, making it easy to find our brand in a crowded market of other education providers.",
29 | "person": "Sarah Fell",
30 | "title": "SFell Limited",
31 | "img": "{{webRoot}}/assets/images/avatar-1.jpeg"
32 | },
33 | {
34 | "testimonial": "She's always professional and clear in her communications, but it was when she started giving me advice on how to improve our website design that really made a difference for us--she had so many good ideas!",
35 | "person": "Henry Kingsom",
36 | "title": "Henry Codes Ltd",
37 | "img": "{{webRoot}}/assets/images/avatar-2.jpeg"
38 | }
39 | ]
40 | }
--------------------------------------------------------------------------------
/src/data/work.json:
--------------------------------------------------------------------------------
1 | {
2 | "entries": [
3 | {
4 | "img": "{{webRoot}}/assets/images/project-listing-1.jpg",
5 | "title": "Shopify Fashion Store",
6 | "description": "Design and development of a custom Shopify Ecommerce platform for a fashion retailer.",
7 | "category": "Ecommerce · Shopify "
8 | },
9 | {
10 | "img": "{{webRoot}}/assets/images/project-listing-2.jpg",
11 | "title": "Magento Furniture Store",
12 | "description": "Design and development of a custom Magento Ecommerce platform for a furniture retailer.",
13 | "category": "Ecommerce · Magento "
14 | },
15 | {
16 | "img": "{{webRoot}}/assets/images/project-listing-3.jpg",
17 | "title": "Wordpress Grocery Store",
18 | "description": "Design and development of a WooCommerce Ecommerce platform for a grocery platform.",
19 | "category": "Ecommerce · Wordpress "
20 | },
21 | {
22 | "img": "{{webRoot}}/assets/images/project-listing-4.jpg",
23 | "title": "Messaging App",
24 | "description": "Creation of a custom React Native messaging app for a messaging SAAS startup.",
25 | "category": "Mobile · React Native "
26 | },
27 | {
28 | "img": "{{webRoot}}/assets/images/project-listing-5.jpg",
29 | "title": "Shopify Online Store",
30 | "description": "Design and development of a custom Shopify Ecommerce platform for a car retailer.",
31 | "category": "Ecommerce · Shopify "
32 | },
33 | {
34 | "img": "{{webRoot}}/assets/images/project-listing-6.jpg",
35 | "title": "Magento Online Store",
36 | "description": "Design and development of a custom Magento Ecommerce platform for a pet food retailer.",
37 | "category": "Ecommerce · Magento "
38 | },
39 | {
40 | "img": "{{webRoot}}/assets/images/project-listing-7.jpg",
41 | "title": "Web Application",
42 | "description": "Design and development of a custom WooCommerce Ecommerce platform for a furniture retailer.",
43 | "category": "Ecommerce · Wordpress "
44 | },
45 | {
46 | "img": "{{webRoot}}/assets/images/project-listing-8.jpg",
47 | "title": "Ecommerce Marketing",
48 | "description": "Design and development of a custom Shopify Ecommerce platform for a fashion retailer.",
49 | "category": "Ecommerce · Shopify "
50 | }
51 | ]
52 | }
--------------------------------------------------------------------------------
/src/html/about.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {{> (config config.partials.head) title=config.defaultPageTitle }}
6 |
7 |
8 |
9 |
10 |
11 |
12 | {{> (config config.partials.navbar)
13 | configClassList=config.classes.navbar
14 | classList="" }}
15 |
16 |
17 |
18 |
19 |
20 |
21 | About Me
22 |
23 |
24 |
25 |
26 |
27 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
I'm Jenny Smith, a freelance web developer and designer based in London, United Kingdom.
38 |
39 |
I'm passionate about creating engaging and easy-to-navigate layouts. I love the look of clean lines, sharp contrasts in color schemes or bold graphic assets paired with sophisticated illustrations.
40 |
41 |
As an Ecommerce developer my work is focused on web design; abstract forms make up most projects these days because they're so popular among consumers who want more control over their shopping experience than ever before.
42 |
43 |
53 |
54 |
55 |
56 |
57 |
58 |
59 | {{> widgets/experience }}
60 |
61 |
62 |
63 | {{> widgets/skills }}
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 | {{> (config config.partials.footer)
72 | configClassList=config.classes.footer
73 | classList=""
74 | show-cta="true"
75 | }}
76 |
77 |
78 |
79 |
80 |
81 | {{> footer/scripts }}
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/src/html/contact.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {{> (config config.partials.head) title=config.defaultPageTitle }}
6 |
7 |
8 |
9 |
10 |
11 |
12 | {{> (config config.partials.navbar)
13 | configClassList=config.classes.navbar
14 | classList="" }}
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
26 |
27 |
Let's work together on your next project
28 |
29 |
Email me
30 |
hello@jenny.smith
31 |
32 |
33 |
Call me
34 |
+44 (0)208 334 4567
35 |
36 |
Send Me A Message
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 | Your Name
47 |
48 |
49 |
50 |
51 |
52 |
53 | Your Email Adress
54 |
55 |
56 |
57 |
58 |
59 |
60 | Your Company
61 |
62 |
63 |
64 |
65 |
66 |
67 | Your Telephone
68 |
70 |
71 |
72 |
73 |
74 |
75 |
What Service Do You Require?
76 |
102 |
103 |
104 |
105 |
106 |
107 | Tell Me About Your Project
108 |
110 |
111 |
112 |
113 |
114 |
115 | Send Message
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 | {{> (config config.partials.footer)
133 | configClassList=config.classes.footer
134 | classList=""
135 | }}
136 |
137 |
138 |
139 |
140 |
141 | {{> footer/scripts }}
142 |
143 |
144 |
145 |
--------------------------------------------------------------------------------
/src/html/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {{> (config config.partials.head) title=config.defaultPageTitle }}
6 |
7 |
8 |
9 |
10 |
11 |
12 | {{> (config config.partials.navbar)
13 | configClassList=config.classes.navbar
14 | classList="" }}
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 | {{> widgets/hero }}
25 |
26 |
27 |
28 |
29 | {{>
30 | content/subtitle
31 | title="Selected Work"
32 | }}
33 |
34 | {{> swiper/swiper-latest-top }}
35 |
36 |
37 |
38 |
39 |
40 |
41 | {{> swiper/swiper-latest-bottom }}
42 |
43 |
44 |
45 |
46 | {{> widgets/experience }}
47 |
48 |
49 |
50 |
51 |
52 | {{> widgets/testimonials }}
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 | {{> (config config.partials.footer)
61 | configClassList=config.classes.footer
62 | classList=""
63 | show-cta="true"
64 | }}
65 |
66 |
67 |
68 |
69 |
70 |
71 | {{> footer/scripts }}
72 |
73 |
74 |
75 |
--------------------------------------------------------------------------------
/src/html/work-listing.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {{> (config config.partials.head) title=config.defaultPageTitle }}
6 |
7 |
8 |
9 |
10 |
11 |
12 | {{> (config config.partials.navbar)
13 | configClassList=config.classes.navbar
14 | classList="" }}
15 |
16 |
17 |
18 |
19 |
20 |
21 | My Work
22 |
23 | {{#if (config work)}}
24 |
26 | {{#each work.entries}}
27 |
28 |
49 |
50 | {{/each}}
51 |
52 | {{/if}}
53 |
54 |
55 |
56 |
57 |
58 |
59 | {{> (config config.partials.footer)
60 | configClassList=config.classes.footer
61 | classList=""
62 | show-cta="true"
63 | }}
64 |
65 |
66 |
67 |
68 |
69 | {{> footer/scripts }}
70 |
71 |
72 |
73 |
--------------------------------------------------------------------------------
/src/html/work-single.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {{> (config config.partials.head) title=config.defaultPageTitle }}
6 |
7 |
8 |
9 |
10 |
11 |
12 | {{> (config config.partials.navbar)
13 | configClassList=config.classes.navbar
14 | classList="" }}
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
Shopify Online Store
24 |
Ecommerce · Mobile App
25 |
Design and build of a Ecommerce platform.
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
38 |
41 |
42 |
Heritage Furniture
43 |
Heritage Furniture is a family-owned business located in Nottingham, United Kingdom. They
44 | have 12 locations throughout the UK and have been online since 2007.
45 |
46 |
49 |
50 |
The current Heritage Ecommerce platform ran on OS Commerce. I migrated the existing sales
51 | orders and customer data to our new Shopify platform. I designed a new interface using the
52 | updating branding supplied by Heritage's in-house design team.
53 |
I also designed and built a custom React Native application that used Shopify's API to handle
54 | online sales and integrated with Heritage's new Ecommerce website to allow customers to
55 | place new orders and view previous orders through the new app.
56 |
View Website
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
What I Delivered
71 |
72 |
73 |
74 | React Native mobile application
75 | Shopify Ecommerce platform
76 | Data transfer
77 | Website hosting
78 |
79 |
80 |
83 |
84 |
85 | UX and UI Design
86 | Solution architecture
87 | Application development
88 | Marketing strategy
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
102 |
"
103 |
104 | Jenny has excellent software intuition and was able to quickly understand our business
105 | requirements. She did a fantastic job with the redesign of our website and we couldn't be
106 | happier!
107 |
108 |
John Bridges
109 |
CEO, Heritage Furniture
110 |
111 |
115 |
116 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 | {{> (config config.partials.footer)
131 | configClassList=config.classes.footer
132 | classList=""
133 | show-cta="true"
134 | }}
135 |
136 |
137 |
138 |
139 |
140 | {{> footer/scripts }}
141 |
142 |
143 |
144 |
--------------------------------------------------------------------------------
/src/partials/content/subtitle.html:
--------------------------------------------------------------------------------
1 | {{ title }}
--------------------------------------------------------------------------------
/src/partials/footer/footer.html:
--------------------------------------------------------------------------------
1 |
2 | {{#if show-cta}}
3 |
4 |
Ready to discuss your project requirements?
5 |
Get In Touch
6 |
7 | {{/if}}
8 |
9 |
19 |
20 |
--------------------------------------------------------------------------------
/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 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
39 |
40 |
41 |
42 | {{ title }}
43 |
44 |
--------------------------------------------------------------------------------
/src/partials/header/navbar/navbar.html:
--------------------------------------------------------------------------------
1 |
2 |
36 |
--------------------------------------------------------------------------------
/src/partials/swiper/swiper-latest-bottom.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{#if (config work)}}
4 | {{#each work.entries}}
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
{{{ category }}}
19 |
{{ title }}
20 |
{{ description }}
21 |
24 |
25 |
26 |
27 |
28 | {{/each}}
29 | {{/if}}
30 |
31 |
--------------------------------------------------------------------------------
/src/partials/swiper/swiper-latest-top.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{#if (config work)}}
4 | {{#each work.entries}}
5 |
6 |
7 |
8 |
9 |
10 | {{/each}}
11 | {{/if}}
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/partials/testimonials/testimonial-single.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | "{{ testimonial }}"
5 |
6 |
7 |
8 |
9 |
10 |
11 |
{{ person }}
12 |
{{ title }}
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/partials/widgets/experience.html:
--------------------------------------------------------------------------------
1 |
2 | {{>
3 | content/subtitle
4 | title="Experience"
5 | }}
6 | {{#if (config experience)}}
7 | {{#each experience.entries}}
8 |
9 |
14 |
15 |
{{ company }}
16 |
({{ years }})
17 |
18 |
23 |
24 |
25 | {{/each}}
26 | {{/if}}
27 |
--------------------------------------------------------------------------------
/src/partials/widgets/hero.html:
--------------------------------------------------------------------------------
1 |
2 |
Hello there!
3 |
I am Jenny Smith
4 |
London-based freelance specializing in Magento, Wordpress & Shopify development
5 |
--------------------------------------------------------------------------------
/src/partials/widgets/latest-work.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PixelRocket-Shop/folio-html-bootstrap/01602587d6910fa88270a8e2ffab9598ac88ec04/src/partials/widgets/latest-work.html
--------------------------------------------------------------------------------
/src/partials/widgets/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 |
32 |
33 | {{/each}}
34 |
35 | {{/if}}
36 |
37 |
--------------------------------------------------------------------------------
/src/partials/widgets/testimonials.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {{#if (config testimonials) }}
6 | {{#each testimonials.entries}}
7 | {{> testimonials/testimonial-single this }}
8 | {{/each}}
9 | {{/if}}
10 |
11 |
12 |
13 |
14 | {{#if (config testimonials-two) }}
15 | {{#each testimonials-two.entries}}
16 | {{> testimonials/testimonial-single this }}
17 | {{/each}}
18 | {{/if}}
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/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 | isEven: function(val, options) {
172 | return val % 2 === 0 ? options.fn(this) : options.inverse(this);
173 | }
174 | },
175 | onBeforeSave: function(Handlebars, res, file) {
176 | const elem = file.split('//').pop().split('/').length;
177 | return res.split('{{webRoot}}').join('.'.repeat(elem));
178 | },
179 | }),
180 | new FixStyleOnlyEntriesPlugin(),
181 | new MiniCssExtractPlugin({
182 | filename: paths.dist.css + '/[name].bundle.css',
183 | }),
184 | ]
185 | };
186 |
187 | module.exports = wPackConfig;
--------------------------------------------------------------------------------